@kingsleyweb/bun-ui 0.0.0-stage → 3.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +80 -2
- package/app/docs/App.tsx +72 -0
- package/app/docs/api/client.ts +303 -0
- package/app/docs/api/contract.ts +24 -0
- package/app/docs/api/docs.ts +38 -0
- package/app/docs/api/errors.ts +144 -0
- package/app/docs/boot.tsx +58 -0
- package/app/docs/components/Badge.tsx +65 -0
- package/app/docs/components/Button.tsx +37 -0
- package/app/docs/components/Card.tsx +41 -0
- package/app/docs/components/ConfirmDialog.tsx +173 -0
- package/app/docs/components/CopyButton.tsx +68 -0
- package/app/docs/components/Dialog.tsx +230 -0
- package/app/docs/components/EmptyState.tsx +34 -0
- package/app/docs/components/ErrorView.tsx +70 -0
- package/app/docs/components/Field.tsx +93 -0
- package/app/docs/components/JsonEditor.tsx +151 -0
- package/app/docs/components/JsonView.tsx +338 -0
- package/app/docs/components/KeyValue.tsx +63 -0
- package/app/docs/components/ProblemBanner.tsx +116 -0
- package/app/docs/components/ScreenErrorBoundary.tsx +141 -0
- package/app/docs/components/Spinner.tsx +33 -0
- package/app/docs/components/Table.tsx +33 -0
- package/app/docs/components/Tabs.tsx +226 -0
- package/app/docs/components/classNames.ts +4 -0
- package/app/docs/components/components.css +691 -0
- package/app/docs/components/copy.ts +89 -0
- package/app/docs/components/fieldContext.ts +29 -0
- package/app/docs/components/inputValues.ts +142 -0
- package/app/docs/components/inputs.tsx +387 -0
- package/app/docs/components/jsonParse.ts +338 -0
- package/app/docs/components/listKeys.ts +30 -0
- package/app/docs/config.ts +86 -0
- package/app/docs/context.ts +33 -0
- package/app/docs/embed.ts +74 -0
- package/app/docs/env.d.ts +2 -0
- package/app/docs/format.ts +9 -0
- package/app/docs/hooks/useUrlTab.ts +16 -0
- package/app/docs/main.tsx +11 -0
- package/app/docs/queryClient.ts +54 -0
- package/app/docs/router.tsx +194 -0
- package/app/docs/routing.ts +194 -0
- package/app/docs/screens/docs/document.ts +27 -0
- package/app/docs/screens/docs/http/OperationView.tsx +407 -0
- package/app/docs/screens/docs/http/Sidebar.tsx +190 -0
- package/app/docs/screens/docs/http/TryItPanel.tsx +603 -0
- package/app/docs/screens/docs/http/http.css +405 -0
- package/app/docs/screens/docs/http/index.tsx +395 -0
- package/app/docs/screens/docs/http/model.ts +604 -0
- package/app/docs/screens/docs/http/tryIt.ts +455 -0
- package/app/docs/screens/docs/permissions.ts +6 -0
- package/app/docs/screens/docs/schema/Prose.tsx +43 -0
- package/app/docs/screens/docs/schema/SchemaTree.tsx +319 -0
- package/app/docs/screens/docs/schema/index.ts +30 -0
- package/app/docs/screens/docs/schema/resolve.ts +466 -0
- package/app/docs/screens/docs/schema/schema.css +137 -0
- package/app/docs/screens/docs/schema/skeleton.ts +92 -0
- package/app/docs/screens/docs/viewer.tsx +154 -0
- package/app/docs/screens/docs/ws/InlineText.tsx +25 -0
- package/app/docs/screens/docs/ws/PayloadSchema.tsx +39 -0
- package/app/docs/screens/docs/ws/format.ts +82 -0
- package/app/docs/screens/docs/ws/index.tsx +286 -0
- package/app/docs/screens/docs/ws/items.tsx +786 -0
- package/app/docs/screens/docs/ws/model.ts +1178 -0
- package/app/docs/screens/docs/ws/panels.tsx +440 -0
- package/app/docs/screens/docs/ws/ws.css +231 -0
- package/app/docs/shortcuts.ts +94 -0
- package/app/docs/styles/base.css +847 -0
- package/app/docs/styles/tokens.css +143 -0
- package/app/docs/theme.ts +56 -0
- package/app/kit/unauthorized.ts +222 -0
- package/dist/docs/assets/main-0rchxtv5.js +18 -0
- package/dist/docs/assets/main-0rchxtv5.js.map +99 -0
- package/dist/docs/assets/main-cqgyvs86.css +1 -0
- package/dist/docs/manifest.json +26 -0
- package/dist/jobs/assets/AddFlowDialog-h6xkgx9b.js +6 -0
- package/dist/jobs/assets/AddFlowDialog-h6xkgx9b.js.map +11 -0
- package/dist/jobs/assets/AddFlowDialog-n7gtc84v.css +1 -0
- package/dist/jobs/assets/added-cbwsxv3e.js +4 -0
- package/dist/jobs/assets/added-cbwsxv3e.js.map +11 -0
- package/dist/jobs/assets/bodies-yyw5hmrp.js +6 -0
- package/dist/jobs/assets/bodies-yyw5hmrp.js.map +10 -0
- package/dist/jobs/assets/channel-tgkvqm8y.js +4 -0
- package/dist/jobs/assets/channel-tgkvqm8y.js.map +10 -0
- package/dist/jobs/assets/channelChecks-s4yz4yhw.js +4 -0
- package/dist/jobs/assets/channelChecks-s4yz4yhw.js.map +10 -0
- package/dist/jobs/assets/index-02427smp.css +1 -0
- package/dist/jobs/assets/index-09z2cjft.js +4 -0
- package/dist/jobs/assets/index-09z2cjft.js.map +16 -0
- package/dist/jobs/assets/index-18bn0gvy.css +1 -0
- package/dist/jobs/assets/index-47pxmyxn.js +4 -0
- package/dist/jobs/assets/index-47pxmyxn.js.map +10 -0
- package/dist/jobs/assets/index-4e55z986.js +4 -0
- package/dist/jobs/assets/index-4e55z986.js.map +11 -0
- package/dist/jobs/assets/index-5c933424.js +4 -0
- package/dist/jobs/assets/index-5c933424.js.map +18 -0
- package/dist/jobs/assets/index-5kbyqspm.css +1 -0
- package/dist/jobs/assets/index-5ng37hk6.css +1 -0
- package/dist/jobs/assets/index-5w8w7fvc.css +1 -0
- package/dist/jobs/assets/index-71qs5qyx.css +1 -0
- package/dist/jobs/assets/index-btpg4r8b.css +1 -0
- package/dist/jobs/assets/index-d5r5n0mm.js +4 -0
- package/dist/jobs/assets/index-d5r5n0mm.js.map +23 -0
- package/dist/jobs/assets/index-e0yy2skq.css +1 -0
- package/dist/jobs/assets/index-hs60b25v.js +10 -0
- package/dist/jobs/assets/index-hs60b25v.js.map +62 -0
- package/dist/jobs/assets/index-k2smrr70.js +4 -0
- package/dist/jobs/assets/index-k2smrr70.js.map +9 -0
- package/dist/jobs/assets/index-q24jw3w9.js +4 -0
- package/dist/jobs/assets/index-q24jw3w9.js.map +32 -0
- package/dist/jobs/assets/index-qfb80xen.css +1 -0
- package/dist/jobs/assets/index-rtynx6wj.js +4 -0
- package/dist/jobs/assets/index-rtynx6wj.js.map +10 -0
- package/dist/jobs/assets/live-6k7s6358.js +4 -0
- package/dist/jobs/assets/live-6k7s6358.js.map +10 -0
- package/dist/jobs/assets/main-0jmeh6mq.js +6 -0
- package/dist/jobs/assets/main-0jmeh6mq.js.map +12 -0
- package/dist/jobs/assets/main-3yj6bv90.js +5 -0
- package/dist/jobs/assets/main-3yj6bv90.js.map +10 -0
- package/dist/jobs/assets/main-4g69fn3x.js +5 -0
- package/dist/jobs/assets/main-4g69fn3x.js.map +10 -0
- package/dist/jobs/assets/main-4gte3eqq.js +5 -0
- package/dist/jobs/assets/main-4gte3eqq.js.map +10 -0
- package/dist/jobs/assets/main-4j1fcevh.js +5 -0
- package/dist/jobs/assets/main-4j1fcevh.js.map +10 -0
- package/dist/jobs/assets/main-54qwkz28.css +1 -0
- package/dist/jobs/assets/main-5grjvsy7.js +5 -0
- package/dist/jobs/assets/main-5grjvsy7.js.map +11 -0
- package/dist/jobs/assets/main-5zbx60gq.js +5 -0
- package/dist/jobs/assets/main-5zbx60gq.js.map +11 -0
- package/dist/jobs/assets/main-9prgjhg4.js +5 -0
- package/dist/jobs/assets/main-9prgjhg4.js.map +10 -0
- package/dist/jobs/assets/main-a250ffk7.js +17 -0
- package/dist/jobs/assets/main-a250ffk7.js.map +115 -0
- package/dist/jobs/assets/main-d6ge7w08.js +5 -0
- package/dist/jobs/assets/main-d6ge7w08.js.map +10 -0
- package/dist/jobs/assets/main-gngzht43.js +5 -0
- package/dist/jobs/assets/main-gngzht43.js.map +10 -0
- package/dist/jobs/assets/main-hg0hrg8j.js +5 -0
- package/dist/jobs/assets/main-hg0hrg8j.js.map +10 -0
- package/dist/jobs/assets/main-hm1ng3yg.js +5 -0
- package/dist/jobs/assets/main-hm1ng3yg.js.map +12 -0
- package/dist/jobs/assets/main-jkvd92z9.js +5 -0
- package/dist/jobs/assets/main-jkvd92z9.js.map +10 -0
- package/dist/jobs/assets/main-jv5xqd13.js +5 -0
- package/dist/jobs/assets/main-jv5xqd13.js.map +21 -0
- package/dist/jobs/assets/main-jxre7w93.js +5 -0
- package/dist/jobs/assets/main-jxre7w93.js.map +23 -0
- package/dist/jobs/assets/main-kwmqkjfx.js +5 -0
- package/dist/jobs/assets/main-kwmqkjfx.js.map +11 -0
- package/dist/jobs/assets/main-n9cf6bxm.js +5 -0
- package/dist/jobs/assets/main-n9cf6bxm.js.map +11 -0
- package/dist/jobs/assets/main-pegp0ygb.js +5 -0
- package/dist/jobs/assets/main-pegp0ygb.js.map +10 -0
- package/dist/jobs/assets/main-qr573853.js +5 -0
- package/dist/jobs/assets/main-qr573853.js.map +12 -0
- package/dist/jobs/assets/main-rq97rdr4.js +4 -0
- package/dist/jobs/assets/main-rq97rdr4.js.map +22 -0
- package/dist/jobs/assets/main-szjdmydc.js +5 -0
- package/dist/jobs/assets/main-szjdmydc.js.map +13 -0
- package/dist/jobs/assets/main-tnbhrm9n.js +7 -0
- package/dist/jobs/assets/main-tnbhrm9n.js.map +11 -0
- package/dist/jobs/assets/main-ts19j4n0.js +5 -0
- package/dist/jobs/assets/main-ts19j4n0.js.map +25 -0
- package/dist/jobs/assets/main-w93x1dzs.js +5 -0
- package/dist/jobs/assets/main-w93x1dzs.js.map +10 -0
- package/dist/jobs/assets/sections-0ksdxs8m.css +1 -0
- package/dist/jobs/assets/sections-0y7w4fb4.js +4 -0
- package/dist/jobs/assets/sections-0y7w4fb4.js.map +10 -0
- package/dist/jobs/assets/sse-mn0t0fh7.js +5 -0
- package/dist/jobs/assets/sse-mn0t0fh7.js.map +11 -0
- package/dist/jobs/assets/sseChecks-t7tcm7ra.js +4 -0
- package/dist/jobs/assets/sseChecks-t7tcm7ra.js.map +10 -0
- package/dist/jobs/assets/validation-ysjfy072.js +4 -0
- package/dist/jobs/assets/validation-ysjfy072.js.map +9 -0
- package/dist/jobs/manifest.json +511 -0
- package/dts/docs/assets.d.ts +144 -0
- package/dts/docs/assets.d.ts.map +1 -0
- package/dts/docs/browser/config.d.ts +61 -0
- package/dts/docs/browser/config.d.ts.map +1 -0
- package/dts/docs/browser/index.d.ts +12 -0
- package/dts/docs/browser/index.d.ts.map +1 -0
- package/dts/docs/docsUi.d.ts +42 -0
- package/dts/docs/docsUi.d.ts.map +1 -0
- package/dts/docs/hosted.d.ts +22 -0
- package/dts/docs/hosted.d.ts.map +1 -0
- package/dts/docs/index.d.ts +18 -0
- package/dts/docs/index.d.ts.map +1 -0
- package/dts/docs/shell.d.ts +57 -0
- package/dts/docs/shell.d.ts.map +1 -0
- package/dts/docs/types.d.ts +137 -0
- package/dts/docs/types.d.ts.map +1 -0
- package/dts/index.d.ts +21 -0
- package/dts/index.d.ts.map +1 -0
- package/dts/jobs/assets.d.ts +157 -0
- package/dts/jobs/assets.d.ts.map +1 -0
- package/dts/jobs/browser/config.d.ts +67 -0
- package/dts/jobs/browser/config.d.ts.map +1 -0
- package/dts/jobs/browser/index.d.ts +10 -0
- package/dts/jobs/browser/index.d.ts.map +1 -0
- package/dts/jobs/browser/unauthorized.d.ts +9 -0
- package/dts/jobs/browser/unauthorized.d.ts.map +1 -0
- package/dts/jobs/index.d.ts +24 -0
- package/dts/jobs/index.d.ts.map +1 -0
- package/dts/jobs/jobsUi.d.ts +63 -0
- package/dts/jobs/jobsUi.d.ts.map +1 -0
- package/dts/jobs/shell.d.ts +77 -0
- package/dts/jobs/shell.d.ts.map +1 -0
- package/dts/jobs/types.d.ts +146 -0
- package/dts/jobs/types.d.ts.map +1 -0
- package/dts/kit/browser/shared.d.ts +10 -0
- package/dts/kit/browser/shared.d.ts.map +1 -0
- package/dts/kit/browser/unauthorized.d.ts +74 -0
- package/dts/kit/browser/unauthorized.d.ts.map +1 -0
- package/dts/kit/unauthorized.d.ts +47 -0
- package/dts/kit/unauthorized.d.ts.map +1 -0
- package/guides/docs.md +170 -0
- package/guides/jobs.md +1120 -0
- package/lib/docs/assets.ts +427 -0
- package/lib/docs/browser/config.ts +66 -0
- package/lib/docs/browser/index.ts +24 -0
- package/lib/docs/docsUi.ts +623 -0
- package/lib/docs/hosted.ts +31 -0
- package/lib/docs/index.ts +37 -0
- package/lib/docs/shell.ts +156 -0
- package/lib/docs/types.ts +149 -0
- package/lib/index.ts +27 -0
- package/lib/jobs/assets.ts +448 -0
- package/lib/jobs/browser/config.ts +65 -0
- package/lib/jobs/browser/index.ts +9 -0
- package/lib/jobs/browser/unauthorized.ts +11 -0
- package/lib/jobs/index.ts +41 -0
- package/lib/jobs/jobsUi.ts +709 -0
- package/lib/jobs/shell.ts +205 -0
- package/lib/jobs/types.ts +162 -0
- package/lib/kit/browser/shared.ts +11 -0
- package/lib/kit/browser/unauthorized.ts +114 -0
- package/lib/kit/unauthorized.ts +222 -0
- package/package.json +198 -4
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../node_modules/react/cjs/react.production.js", "../../node_modules/react-dom/client.js", "../../node_modules/scheduler/cjs/scheduler.production.js", "../../node_modules/react-dom/index.js", "../../node_modules/react-dom/cjs/react-dom.production.js", "../../node_modules/react-dom/cjs/react-dom-client.production.js", "../../node_modules/react/cjs/react-jsx-runtime.production.js", "../../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js", "../../node_modules/@tanstack/react-query/build/modern/IsRestoringProvider.js", "../../node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js", "../../node_modules/@tanstack/query-core/build/modern/timeoutManager.js", "../../node_modules/@tanstack/query-core/build/modern/utils.js", "../../node_modules/@tanstack/query-core/build/modern/environmentManager.js", "../../node_modules/@tanstack/query-core/build/modern/subscribable.js", "../../node_modules/@tanstack/query-core/build/modern/focusManager.js", "../../node_modules/@tanstack/query-core/build/modern/notifyManager.js", "../../node_modules/@tanstack/query-core/build/modern/onlineManager.js", "../../node_modules/@tanstack/query-core/build/modern/retryer.js", "../../node_modules/@tanstack/query-core/build/modern/removable.js", "../../node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js", "../../node_modules/@tanstack/query-core/build/modern/query.js", "../../node_modules/@tanstack/query-core/build/modern/queryObserver.js", "../../node_modules/@tanstack/query-core/build/modern/mutation.js", "../../node_modules/@tanstack/query-core/build/modern/mutationCache.js", "../../node_modules/@tanstack/query-core/build/modern/queryCache.js", "../../node_modules/@tanstack/query-core/build/modern/queryClient.js", "../../node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js", "../../node_modules/@tanstack/react-query/build/modern/suspense.js", "../../node_modules/@tanstack/react-query/build/modern/useBaseQuery.js", "../../node_modules/@tanstack/react-query/build/modern/useQuery.js", "app/docs/context.ts", "app/docs/api/errors.ts", "app/docs/queryClient.ts", "app/docs/components/classNames.ts", "app/docs/components/Button.tsx", "app/docs/components/ScreenErrorBoundary.tsx", "app/docs/routing.ts", "app/docs/router.tsx", "lib/kit/browser/unauthorized.ts", "app/kit/unauthorized.ts", "app/docs/api/contract.ts", "app/docs/api/client.ts", "app/docs/api/docs.ts", "app/docs/components/Card.tsx", "app/docs/components/EmptyState.tsx", "app/docs/components/ErrorView.tsx", "app/docs/components/Spinner.tsx", "app/docs/screens/docs/document.ts", "app/docs/components/Badge.tsx", "app/docs/components/copy.ts", "app/docs/components/CopyButton.tsx", "app/docs/components/Dialog.tsx", "app/docs/screens/docs/schema/Prose.tsx", "app/docs/screens/docs/schema/resolve.ts", "app/docs/screens/docs/schema/SchemaTree.tsx", "lib/docs/browser/config.ts", "app/docs/screens/docs/http/model.ts", "app/docs/components/fieldContext.ts", "app/docs/components/Field.tsx", "app/docs/components/inputs.tsx", "app/docs/components/ProblemBanner.tsx", "app/docs/components/ConfirmDialog.tsx", "app/docs/components/jsonParse.ts", "app/docs/components/JsonEditor.tsx", "app/docs/components/JsonView.tsx", "app/docs/components/Tabs.tsx", "app/docs/screens/docs/schema/skeleton.ts", "app/docs/screens/docs/http/tryIt.ts", "app/docs/screens/docs/http/TryItPanel.tsx", "app/docs/screens/docs/http/OperationView.tsx", "app/docs/components/listKeys.ts", "app/docs/shortcuts.ts", "app/docs/screens/docs/http/Sidebar.tsx", "app/docs/screens/docs/http/index.tsx", "app/docs/components/KeyValue.tsx", "app/docs/components/Table.tsx", "app/docs/screens/docs/ws/InlineText.tsx", "app/docs/screens/docs/ws/model.ts", "app/docs/format.ts", "app/docs/screens/docs/ws/format.ts", "app/docs/screens/docs/ws/panels.tsx", "app/docs/screens/docs/ws/PayloadSchema.tsx", "app/docs/screens/docs/ws/items.tsx", "app/docs/screens/docs/ws/index.tsx", "app/docs/screens/docs/viewer.tsx", "app/docs/App.tsx", "app/docs/config.ts", "app/docs/theme.ts", "app/docs/boot.tsx", "app/docs/main.tsx"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function () {},\n enqueueReplaceState: function () {},\n enqueueSetState: function () {}\n },\n assign = Object.assign,\n emptyObject = {};\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray;\nfunction noop() {}\nvar ReactSharedInternals = { H: null, A: null, T: null, S: null },\n hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, props) {\n var refProp = props.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== refProp ? refProp : null,\n props: props\n };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n return ReactElement(oldElement.type, newKey, oldElement.props);\n}\nfunction isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n}\nfunction escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n return \"object\" === typeof element && null !== element && null != element.key\n ? escape(\"\" + element.key)\n : index.toString(36);\n}\nfunction resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop, noop)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback)\n return (\n (callback = callback(children)),\n (invokeCallback =\n \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != invokeCallback &&\n (escapedPrefix =\n invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (callback = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (children && children.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n invokeCallback\n )),\n array.push(callback)),\n 1\n );\n invokeCallback = 0;\n var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n children = i.call(children), i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\nfunction lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ctor = payload._result,\n thenable = ctor();\n thenable.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 1),\n (payload._result = moduleObject),\n void 0 === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = moduleObject));\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 2),\n (payload._result = error),\n void 0 === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n );\n -1 === payload._status &&\n ((payload._status = 0), (payload._result = thenable));\n }\n if (1 === payload._status) return payload._result.default;\n throw payload._result;\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n };\nfunction startTransition(scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n currentTransition.types =\n null !== prevTransition ? prevTransition.types : null;\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n returnValue.then(noop, reportGlobalError);\n } catch (error) {\n reportGlobalError(error);\n } finally {\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction addTransitionType(type) {\n var transition = ReactSharedInternals.T;\n if (null !== transition) {\n var transitionTypes = transition.types;\n null === transitionTypes\n ? (transition.types = [type])\n : -1 === transitionTypes.indexOf(type) && transitionTypes.push(type);\n } else startTransition(addTransitionType.bind(null, type));\n}\nvar Children = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n};\nexports.Activity = REACT_ACTIVITY_TYPE;\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.ViewTransition = REACT_VIEW_TRANSITION_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n __proto__: null,\n c: function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n }\n};\nexports.addTransitionType = addTransitionType;\nexports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n};\nexports.cacheSignal = function () {\n return null;\n};\nexports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" + element + \".\"\n );\n var props = assign({}, element.props),\n key = element.key;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n for (var childArray = Array(propName), i = 0; i < propName; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n return ReactElement(element.type, key, props);\n};\nexports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n var propName,\n props = {},\n key = null;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (props[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) props.children = children;\n else if (1 < childrenLength) {\n for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === props[propName] &&\n (props[propName] = childrenLength[propName]);\n return ReactElement(type, key, props);\n};\nexports.createRef = function () {\n return { current: null };\n};\nexports.forwardRef = function (render) {\n return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _payload: { _status: -1, _result: ctor },\n _init: lazyInitializer\n };\n};\nexports.memo = function (type, compare) {\n return {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n};\nexports.startTransition = startTransition;\nexports.unstable_useCacheRefresh = function () {\n return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, deps) {\n return ReactSharedInternals.H.useEffect(create, deps);\n};\nexports.useEffectEvent = function (callback) {\n return ReactSharedInternals.H.useEffectEvent(callback);\n};\nexports.useId = function () {\n return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n) {\n return ReactSharedInternals.H.useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n};\nexports.useTransition = function () {\n return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.3.0\";\n",
|
|
6
|
+
"'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom-client.production.js');\n} else {\n module.exports = require('./cjs/react-dom-client.development.js');\n}\n",
|
|
7
|
+
"/**\n * @license React\n * scheduler.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nfunction push(heap, node) {\n var index = heap.length;\n heap.push(node);\n a: for (; 0 < index; ) {\n var parentIndex = (index - 1) >>> 1,\n parent = heap[parentIndex];\n if (0 < compare(parent, node))\n (heap[parentIndex] = node), (heap[index] = parent), (index = parentIndex);\n else break a;\n }\n}\nfunction peek(heap) {\n return 0 === heap.length ? null : heap[0];\n}\nfunction pop(heap) {\n if (0 === heap.length) return null;\n var first = heap[0],\n last = heap.pop();\n if (last !== first) {\n heap[0] = last;\n a: for (\n var index = 0, length = heap.length, halfLength = length >>> 1;\n index < halfLength;\n\n ) {\n var leftIndex = 2 * (index + 1) - 1,\n left = heap[leftIndex],\n rightIndex = leftIndex + 1,\n right = heap[rightIndex];\n if (0 > compare(left, last))\n rightIndex < length && 0 > compare(right, left)\n ? ((heap[index] = right),\n (heap[rightIndex] = last),\n (index = rightIndex))\n : ((heap[index] = left),\n (heap[leftIndex] = last),\n (index = leftIndex));\n else if (rightIndex < length && 0 > compare(right, last))\n (heap[index] = right), (heap[rightIndex] = last), (index = rightIndex);\n else break a;\n }\n }\n return first;\n}\nfunction compare(a, b) {\n var diff = a.sortIndex - b.sortIndex;\n return 0 !== diff ? diff : a.id - b.id;\n}\nexports.unstable_now = void 0;\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n var localPerformance = performance;\n exports.unstable_now = function () {\n return localPerformance.now();\n };\n} else {\n var localDate = Date,\n initialTime = localDate.now();\n exports.unstable_now = function () {\n return localDate.now() - initialTime;\n };\n}\nvar taskQueue = [],\n timerQueue = [],\n taskIdCounter = 1,\n currentTask = null,\n currentPriorityLevel = 3,\n isPerformingWork = !1,\n isHostCallbackScheduled = !1,\n isHostTimeoutScheduled = !1,\n needsPaint = !1,\n localSetTimeout = \"function\" === typeof setTimeout ? setTimeout : null,\n localClearTimeout = \"function\" === typeof clearTimeout ? clearTimeout : null,\n localSetImmediate = \"undefined\" !== typeof setImmediate ? setImmediate : null;\nfunction advanceTimers(currentTime) {\n for (var timer = peek(timerQueue); null !== timer; ) {\n if (null === timer.callback) pop(timerQueue);\n else if (timer.startTime <= currentTime)\n pop(timerQueue),\n (timer.sortIndex = timer.expirationTime),\n push(taskQueue, timer);\n else break;\n timer = peek(timerQueue);\n }\n}\nfunction handleTimeout(currentTime) {\n isHostTimeoutScheduled = !1;\n advanceTimers(currentTime);\n if (!isHostCallbackScheduled)\n if (null !== peek(taskQueue))\n (isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline());\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n}\nvar isMessageLoopRunning = !1,\n taskTimeoutID = -1,\n frameInterval = 5,\n startTime = -1;\nfunction shouldYieldToHost() {\n return needsPaint\n ? !0\n : exports.unstable_now() - startTime < frameInterval\n ? !1\n : !0;\n}\nfunction performWorkUntilDeadline() {\n needsPaint = !1;\n if (isMessageLoopRunning) {\n var currentTime = exports.unstable_now();\n startTime = currentTime;\n var hasMoreWork = !0;\n try {\n a: {\n isHostCallbackScheduled = !1;\n isHostTimeoutScheduled &&\n ((isHostTimeoutScheduled = !1),\n localClearTimeout(taskTimeoutID),\n (taskTimeoutID = -1));\n isPerformingWork = !0;\n var previousPriorityLevel = currentPriorityLevel;\n try {\n b: {\n advanceTimers(currentTime);\n for (\n currentTask = peek(taskQueue);\n null !== currentTask &&\n !(\n currentTask.expirationTime > currentTime && shouldYieldToHost()\n );\n\n ) {\n var callback = currentTask.callback;\n if (\"function\" === typeof callback) {\n currentTask.callback = null;\n currentPriorityLevel = currentTask.priorityLevel;\n var continuationCallback = callback(\n currentTask.expirationTime <= currentTime\n );\n currentTime = exports.unstable_now();\n if (\"function\" === typeof continuationCallback) {\n currentTask.callback = continuationCallback;\n advanceTimers(currentTime);\n hasMoreWork = !0;\n break b;\n }\n currentTask === peek(taskQueue) && pop(taskQueue);\n advanceTimers(currentTime);\n } else pop(taskQueue);\n currentTask = peek(taskQueue);\n }\n if (null !== currentTask) hasMoreWork = !0;\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(\n handleTimeout,\n firstTimer.startTime - currentTime\n );\n hasMoreWork = !1;\n }\n }\n break a;\n } finally {\n (currentTask = null),\n (currentPriorityLevel = previousPriorityLevel),\n (isPerformingWork = !1);\n }\n hasMoreWork = void 0;\n }\n } finally {\n hasMoreWork\n ? schedulePerformWorkUntilDeadline()\n : (isMessageLoopRunning = !1);\n }\n }\n}\nvar schedulePerformWorkUntilDeadline;\nif (\"function\" === typeof localSetImmediate)\n schedulePerformWorkUntilDeadline = function () {\n localSetImmediate(performWorkUntilDeadline);\n };\nelse if (\"undefined\" !== typeof MessageChannel) {\n var channel = new MessageChannel(),\n port = channel.port2;\n channel.port1.onmessage = performWorkUntilDeadline;\n schedulePerformWorkUntilDeadline = function () {\n port.postMessage(null);\n };\n} else\n schedulePerformWorkUntilDeadline = function () {\n localSetTimeout(performWorkUntilDeadline, 0);\n };\nfunction requestHostTimeout(callback, ms) {\n taskTimeoutID = localSetTimeout(function () {\n callback(exports.unstable_now());\n }, ms);\n}\nexports.unstable_IdlePriority = 5;\nexports.unstable_ImmediatePriority = 1;\nexports.unstable_LowPriority = 4;\nexports.unstable_NormalPriority = 3;\nexports.unstable_Profiling = null;\nexports.unstable_UserBlockingPriority = 2;\nexports.unstable_cancelCallback = function (task) {\n task.callback = null;\n};\nexports.unstable_forceFrameRate = function (fps) {\n 0 > fps || 125 < fps\n ? console.error(\n \"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"\n )\n : (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);\n};\nexports.unstable_getCurrentPriorityLevel = function () {\n return currentPriorityLevel;\n};\nexports.unstable_next = function (eventHandler) {\n switch (currentPriorityLevel) {\n case 1:\n case 2:\n case 3:\n var priorityLevel = 3;\n break;\n default:\n priorityLevel = currentPriorityLevel;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_requestPaint = function () {\n needsPaint = !0;\n};\nexports.unstable_runWithPriority = function (priorityLevel, eventHandler) {\n switch (priorityLevel) {\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n break;\n default:\n priorityLevel = 3;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_scheduleCallback = function (\n priorityLevel,\n callback,\n options\n) {\n var currentTime = exports.unstable_now();\n \"object\" === typeof options && null !== options\n ? ((options = options.delay),\n (options =\n \"number\" === typeof options && 0 < options\n ? currentTime + options\n : currentTime))\n : (options = currentTime);\n switch (priorityLevel) {\n case 1:\n var timeout = -1;\n break;\n case 2:\n timeout = 250;\n break;\n case 5:\n timeout = 1073741823;\n break;\n case 4:\n timeout = 1e4;\n break;\n default:\n timeout = 5e3;\n }\n timeout = options + timeout;\n priorityLevel = {\n id: taskIdCounter++,\n callback: callback,\n priorityLevel: priorityLevel,\n startTime: options,\n expirationTime: timeout,\n sortIndex: -1\n };\n options > currentTime\n ? ((priorityLevel.sortIndex = options),\n push(timerQueue, priorityLevel),\n null === peek(taskQueue) &&\n priorityLevel === peek(timerQueue) &&\n (isHostTimeoutScheduled\n ? (localClearTimeout(taskTimeoutID), (taskTimeoutID = -1))\n : (isHostTimeoutScheduled = !0),\n requestHostTimeout(handleTimeout, options - currentTime)))\n : ((priorityLevel.sortIndex = timeout),\n push(taskQueue, priorityLevel),\n isHostCallbackScheduled ||\n isPerformingWork ||\n ((isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline())));\n return priorityLevel;\n};\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = function (callback) {\n var parentPriorityLevel = currentPriorityLevel;\n return function () {\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = parentPriorityLevel;\n try {\n return callback.apply(this, arguments);\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n };\n};\n",
|
|
8
|
+
"'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n",
|
|
9
|
+
"/**\n * @license React\n * react-dom.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction noop() {}\nvar Internals = {\n d: {\n f: noop,\n r: function () {\n throw Error(formatProdErrorMessage(522));\n },\n D: noop,\n C: noop,\n L: noop,\n m: noop,\n X: noop,\n S: noop,\n M: noop\n },\n p: 0,\n findDOMNode: null\n },\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_RECOVERABLE_TYPE = Symbol.for(\"react.recoverable\"),\n REACT_OPTIMISTIC_KEY = Symbol.for(\"react.optimistic_key\");\nfunction createPortal$1(children, containerInfo, implementation) {\n var key =\n 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n return {\n $$typeof: REACT_PORTAL_TYPE,\n key:\n null == key\n ? null\n : key === REACT_OPTIMISTIC_KEY\n ? REACT_OPTIMISTIC_KEY\n : \"\" + key,\n children: children,\n containerInfo: containerInfo,\n implementation: implementation\n };\n}\nvar ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nfunction getCrossOriginStringAs(as, input) {\n if (\"font\" === as) return \"\";\n if (\"string\" === typeof input)\n return \"use-credentials\" === input ? input : \"\";\n}\nexports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n Internals;\nexports.browser = function (reason) {\n return { $$typeof: REACT_RECOVERABLE_TYPE, _reason: reason };\n};\nexports.createPortal = function (children, container) {\n var key =\n 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n if (\n !container ||\n (1 !== container.nodeType &&\n 9 !== container.nodeType &&\n 11 !== container.nodeType)\n )\n throw Error(formatProdErrorMessage(299));\n return createPortal$1(children, container, null, key);\n};\nexports.flushSync = function (fn) {\n var previousTransition = ReactSharedInternals.T,\n previousUpdatePriority = Internals.p;\n try {\n if (((ReactSharedInternals.T = null), (Internals.p = 2), fn)) return fn();\n } finally {\n (ReactSharedInternals.T = previousTransition),\n (Internals.p = previousUpdatePriority),\n Internals.d.f();\n }\n};\nexports.preconnect = function (href, options) {\n \"string\" === typeof href &&\n (options\n ? ((options = options.crossOrigin),\n (options =\n \"string\" === typeof options\n ? \"use-credentials\" === options\n ? options\n : \"\"\n : void 0))\n : (options = null),\n Internals.d.C(href, options));\n};\nexports.prefetchDNS = function (href) {\n \"string\" === typeof href && Internals.d.D(href);\n};\nexports.preinit = function (href, options) {\n if (\"string\" === typeof href && options && \"string\" === typeof options.as) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),\n integrity =\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n fetchPriority =\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0;\n \"style\" === as\n ? Internals.d.S(\n href,\n \"string\" === typeof options.precedence ? options.precedence : void 0,\n {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority\n }\n )\n : \"script\" === as &&\n Internals.d.X(href, {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n};\nexports.preinitModule = function (href, options) {\n if (\"string\" === typeof href)\n if (\"object\" === typeof options && null !== options) {\n if (null == options.as || \"script\" === options.as) {\n var crossOrigin = getCrossOriginStringAs(\n options.as,\n options.crossOrigin\n );\n Internals.d.M(href, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0\n });\n }\n } else null == options && Internals.d.M(href);\n};\nexports.preload = function (href, options) {\n if (\n \"string\" === typeof href &&\n \"object\" === typeof options &&\n null !== options &&\n \"string\" === typeof options.as\n ) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);\n Internals.d.L(href, as, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n type: \"string\" === typeof options.type ? options.type : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0,\n referrerPolicy:\n \"string\" === typeof options.referrerPolicy\n ? options.referrerPolicy\n : void 0,\n imageSrcSet:\n \"string\" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,\n imageSizes:\n \"string\" === typeof options.imageSizes ? options.imageSizes : void 0,\n media: \"string\" === typeof options.media ? options.media : void 0\n });\n }\n};\nexports.preloadModule = function (href, options) {\n if (\"string\" === typeof href)\n if (options) {\n var crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);\n Internals.d.m(href, {\n as:\n \"string\" === typeof options.as && \"script\" !== options.as\n ? options.as\n : void 0,\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0\n });\n } else Internals.d.m(href);\n};\nexports.requestFormReset = function (form) {\n Internals.d.r(form);\n};\nexports.unstable_batchedUpdates = function (fn, a) {\n return fn(a);\n};\nexports.useFormState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useFormState(action, initialState, permalink);\n};\nexports.useFormStatus = function () {\n return ReactSharedInternals.H.useHostTransitionStatus();\n};\nexports.version = \"19.3.0\";\n",
|
|
10
|
+
"/**\n * @license React\n * react-dom-client.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n\"use strict\";\nvar Scheduler = require(\"scheduler\"),\n React = require(\"react\"),\n ReactDOM = require(\"react-dom\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction isValidContainer(node) {\n return !(\n !node ||\n (1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType)\n );\n}\nfunction getNearestMountedFiber(fiber) {\n for (var node = fiber, nextNode = node; nextNode && !nextNode.alternate; )\n (node = nextNode),\n 0 !== (node.flags & 4098) && (fiber = node.return),\n (nextNode = node.return);\n for (; node.return; ) node = node.return;\n return 3 === node.tag ? fiber : null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n if (13 === fiber.tag) {\n var suspenseState = fiber.memoizedState;\n null === suspenseState &&\n ((fiber = fiber.alternate),\n null !== fiber && (suspenseState = fiber.memoizedState));\n if (null !== suspenseState) return suspenseState.dehydrated;\n }\n return null;\n}\nfunction getActivityInstanceFromFiber(fiber) {\n if (31 === fiber.tag) {\n var activityState = fiber.memoizedState;\n null === activityState &&\n ((fiber = fiber.alternate),\n null !== fiber && (activityState = fiber.memoizedState));\n if (null !== activityState) return activityState.dehydrated;\n }\n return null;\n}\nfunction assertIsMounted(fiber) {\n if (getNearestMountedFiber(fiber) !== fiber)\n throw Error(formatProdErrorMessage(188));\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n var alternate = fiber.alternate;\n if (!alternate) {\n alternate = getNearestMountedFiber(fiber);\n if (null === alternate) throw Error(formatProdErrorMessage(188));\n return alternate !== fiber ? null : fiber;\n }\n for (var a = fiber, b = alternate; ; ) {\n var parentA = a.return;\n if (null === parentA) break;\n var parentB = parentA.alternate;\n if (null === parentB) {\n b = parentA.return;\n if (null !== b) {\n a = b;\n continue;\n }\n break;\n }\n if (parentA.child === parentB.child) {\n for (parentB = parentA.child; parentB; ) {\n if (parentB === a) return assertIsMounted(parentA), fiber;\n if (parentB === b) return assertIsMounted(parentA), alternate;\n parentB = parentB.sibling;\n }\n throw Error(formatProdErrorMessage(188));\n }\n if (a.return !== b.return) (a = parentA), (b = parentB);\n else {\n for (var didFindChild = !1, child$0 = parentA.child; child$0; ) {\n if (child$0 === a) {\n didFindChild = !0;\n a = parentA;\n b = parentB;\n break;\n }\n if (child$0 === b) {\n didFindChild = !0;\n b = parentA;\n a = parentB;\n break;\n }\n child$0 = child$0.sibling;\n }\n if (!didFindChild) {\n for (child$0 = parentB.child; child$0; ) {\n if (child$0 === a) {\n didFindChild = !0;\n a = parentB;\n b = parentA;\n break;\n }\n if (child$0 === b) {\n didFindChild = !0;\n b = parentB;\n a = parentA;\n break;\n }\n child$0 = child$0.sibling;\n }\n if (!didFindChild) throw Error(formatProdErrorMessage(189));\n }\n }\n if (a.alternate !== b) throw Error(formatProdErrorMessage(190));\n }\n if (3 !== a.tag) throw Error(formatProdErrorMessage(188));\n return a.stateNode.current === a ? fiber : alternate;\n}\nfunction findCurrentHostFiberImpl(node) {\n var tag = node.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;\n for (node = node.child; null !== node; ) {\n tag = findCurrentHostFiberImpl(node);\n if (null !== tag) return tag;\n node = node.sibling;\n }\n return null;\n}\nfunction traverseVisibleInstancesAndTextInstances(\n child,\n searchWithinHosts,\n fn,\n a,\n b,\n c\n) {\n for (; null !== child; ) {\n if (\n ((5 === child.tag || 27 === child.tag || 6 === child.tag) &&\n fn(child, a, b, c)) ||\n ((22 !== child.tag || null === child.memoizedState) &&\n (searchWithinHosts || (5 !== child.tag && 27 !== child.tag)) &&\n traverseVisibleInstancesAndTextInstances(\n child.child,\n searchWithinHosts,\n fn,\n a,\n b,\n c\n ))\n )\n return !0;\n child = child.sibling;\n }\n return !1;\n}\nfunction getFragmentParentInstanceOrContainerFiber(fiber) {\n for (fiber = fiber.return; null !== fiber; ) {\n if (3 === fiber.tag || 5 === fiber.tag || 27 === fiber.tag) return fiber;\n fiber = fiber.return;\n }\n return null;\n}\nfunction fiberIsPortaledIntoHost(fiber) {\n var foundPortalParent = !1;\n for (fiber = fiber.return; null !== fiber; ) {\n 4 === fiber.tag && (foundPortalParent = !0);\n if (3 === fiber.tag || 5 === fiber.tag || 27 === fiber.tag) break;\n fiber = fiber.return;\n }\n return foundPortalParent;\n}\nfunction getFragmentInstanceOrTextInstanceSiblings(fiber) {\n var result = [null, null],\n parentHostFiber = getFragmentParentInstanceOrContainerFiber(fiber);\n if (null === parentHostFiber) return result;\n findFragmentInstanceOrTextInstanceSiblings(\n result,\n fiber,\n parentHostFiber.child,\n { foundSelf: !1 }\n );\n return result;\n}\nfunction findFragmentInstanceOrTextInstanceSiblings(\n result,\n self,\n child,\n state\n) {\n for (; null !== child; ) {\n if (child === self) state.foundSelf = !0;\n else if (5 === child.tag || 27 === child.tag || 6 === child.tag) {\n if (state.foundSelf) return (result[1] = child), !0;\n result[0] = child;\n } else if (\n (22 !== child.tag || null === child.memoizedState) &&\n findFragmentInstanceOrTextInstanceSiblings(\n result,\n self,\n child.child,\n state\n )\n )\n return !0;\n child = child.sibling;\n }\n return !1;\n}\nfunction getInstanceFromHostFiber(fiber) {\n switch (fiber.tag) {\n case 5:\n case 27:\n case 6:\n return fiber.stateNode;\n case 3:\n return fiber.stateNode.containerInfo;\n default:\n throw Error(formatProdErrorMessage(559));\n }\n}\nvar searchTarget = null,\n searchBoundary = null;\nfunction isFiberPrecedingCheck(child, target, boundary) {\n return child === boundary\n ? !0\n : child === target\n ? ((searchTarget = child), !0)\n : !1;\n}\nfunction isFiberFollowingCheck(child, target, boundary) {\n return child === boundary\n ? ((searchBoundary = child), !1)\n : child === target\n ? (null !== searchBoundary && (searchTarget = child), !0)\n : !1;\n}\nfunction getParentForFragmentAncestors(inst) {\n if (null === inst) return null;\n do inst = null === inst ? null : inst.return;\n while (inst && 5 !== inst.tag && 27 !== inst.tag && 3 !== inst.tag);\n return inst ? inst : null;\n}\nfunction getLowestCommonAncestor(instA, instB, getParent) {\n for (var depthA = 0, tempA = instA; tempA; tempA = getParent(tempA)) depthA++;\n tempA = 0;\n for (var tempB = instB; tempB; tempB = getParent(tempB)) tempA++;\n for (; 0 < depthA - tempA; ) (instA = getParent(instA)), depthA--;\n for (; 0 < tempA - depthA; ) (instB = getParent(instB)), tempA--;\n for (; depthA--; ) {\n if (instA === instB || (null !== instB && instA === instB.alternate))\n return instA;\n instA = getParent(instA);\n instB = getParent(instB);\n }\n return null;\n}\nvar assign = Object.assign,\n REACT_LEGACY_ELEMENT_TYPE = Symbol.for(\"react.element\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nSymbol.for(\"react.scope\");\nvar REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_LEGACY_HIDDEN_TYPE = Symbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.tracing_marker\");\nvar REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\"),\n REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n REACT_RECOVERABLE_TYPE = Symbol.for(\"react.recoverable\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n case REACT_VIEW_TRANSITION_TYPE:\n return \"ViewTransition\";\n }\n if (\"object\" === typeof type)\n switch (type.$$typeof) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n}\nvar isArrayImpl = Array.isArray,\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n ReactDOMSharedInternals =\n ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n sharedNotPendingObject = {\n pending: !1,\n data: null,\n method: null,\n action: null\n },\n valueStack = [],\n index = -1;\nfunction createCursor(defaultValue) {\n return { current: defaultValue };\n}\nfunction pop(cursor) {\n 0 > index ||\n ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);\n}\nfunction push(cursor, value) {\n index++;\n valueStack[index] = cursor.current;\n cursor.current = value;\n}\nvar contextStackCursor = createCursor(null),\n contextFiberStackCursor = createCursor(null),\n rootInstanceStackCursor = createCursor(null),\n hostTransitionProviderCursor = createCursor(null);\nfunction pushHostContainer(fiber, nextRootInstance) {\n push(rootInstanceStackCursor, nextRootInstance);\n push(contextFiberStackCursor, fiber);\n push(contextStackCursor, null);\n switch (nextRootInstance.nodeType) {\n case 9:\n case 11:\n fiber = (fiber = nextRootInstance.documentElement)\n ? (fiber = fiber.namespaceURI)\n ? getOwnHostContext(fiber)\n : 0\n : 0;\n break;\n default:\n if (\n ((fiber = nextRootInstance.tagName),\n (nextRootInstance = nextRootInstance.namespaceURI))\n )\n (nextRootInstance = getOwnHostContext(nextRootInstance)),\n (fiber = getChildHostContextProd(nextRootInstance, fiber));\n else\n switch (fiber) {\n case \"svg\":\n fiber = 1;\n break;\n case \"math\":\n fiber = 2;\n break;\n default:\n fiber = 0;\n }\n }\n pop(contextStackCursor);\n push(contextStackCursor, fiber);\n}\nfunction popHostContainer() {\n pop(contextStackCursor);\n pop(contextFiberStackCursor);\n pop(rootInstanceStackCursor);\n}\nfunction pushHostContext(fiber) {\n var stateHook = fiber.memoizedState;\n null !== stateHook &&\n ((HostTransitionContext._currentValue = stateHook.memoizedState),\n push(hostTransitionProviderCursor, fiber));\n stateHook = contextStackCursor.current;\n var JSCompiler_inline_result = getChildHostContextProd(stateHook, fiber.type);\n stateHook !== JSCompiler_inline_result &&\n (push(contextFiberStackCursor, fiber),\n push(contextStackCursor, JSCompiler_inline_result));\n}\nfunction popHostContext(fiber) {\n contextFiberStackCursor.current === fiber &&\n (pop(contextStackCursor), pop(contextFiberStackCursor));\n hostTransitionProviderCursor.current === fiber &&\n (pop(hostTransitionProviderCursor),\n (HostTransitionContext._currentValue = sharedNotPendingObject));\n}\nvar prefix, suffix;\nfunction describeBuiltInComponentFrame(name) {\n if (void 0 === prefix)\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = (match && match[1]) || \"\";\n suffix =\n -1 < x.stack.indexOf(\"\\n at\")\n ? \" (<anonymous>)\"\n : -1 < x.stack.indexOf(\"@\")\n ? \"@unknown:0:0\"\n : \"\";\n }\n return \"\\n\" + prefix + name + suffix;\n}\nvar reentry = !1;\nfunction describeNativeComponentFrame(fn, construct) {\n if (!fn || reentry) return \"\";\n reentry = !0;\n var previousPrepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n try {\n var RunInRootFrame = {\n DetermineComponentFrameRoot: function () {\n try {\n if (construct) {\n var Fake = function () {\n throw Error();\n };\n Object.defineProperty(Fake.prototype, \"props\", {\n set: function () {\n throw Error();\n }\n });\n if (\"object\" === typeof Reflect && Reflect.construct) {\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n var control = x;\n }\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x$1) {\n control = x$1;\n }\n Fake = !1;\n try {\n var prevProps = Object.getOwnPropertyDescriptor(\n fn.prototype,\n \"props\"\n );\n Object.defineProperty(fn.prototype, \"props\", {\n configurable: !0,\n set: function () {\n throw Error();\n }\n });\n Fake = !0;\n new fn();\n } finally {\n Fake &&\n (void 0 !== prevProps\n ? Object.defineProperty(fn.prototype, \"props\", prevProps)\n : delete fn.prototype.props);\n }\n }\n } else {\n try {\n throw Error();\n } catch (x$2) {\n control = x$2;\n }\n (Fake = fn()) &&\n \"function\" === typeof Fake.catch &&\n Fake.catch(function () {});\n }\n } catch (sample) {\n if (sample && control && \"string\" === typeof sample.stack)\n return [sample.stack, control.stack];\n }\n return [null, null];\n }\n };\n RunInRootFrame.DetermineComponentFrameRoot.displayName =\n \"DetermineComponentFrameRoot\";\n var namePropDescriptor = Object.getOwnPropertyDescriptor(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\"\n );\n namePropDescriptor &&\n namePropDescriptor.configurable &&\n Object.defineProperty(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\",\n { value: \"DetermineComponentFrameRoot\" }\n );\n var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(),\n sampleStack = _RunInRootFrame$Deter[0],\n controlStack = _RunInRootFrame$Deter[1];\n if (sampleStack && controlStack) {\n var sampleLines = sampleStack.split(\"\\n\"),\n controlLines = controlStack.split(\"\\n\");\n for (\n namePropDescriptor = RunInRootFrame = 0;\n RunInRootFrame < sampleLines.length &&\n !sampleLines[RunInRootFrame].includes(\"DetermineComponentFrameRoot\");\n\n )\n RunInRootFrame++;\n for (\n ;\n namePropDescriptor < controlLines.length &&\n !controlLines[namePropDescriptor].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n namePropDescriptor++;\n if (\n RunInRootFrame === sampleLines.length ||\n namePropDescriptor === controlLines.length\n )\n for (\n RunInRootFrame = sampleLines.length - 1,\n namePropDescriptor = controlLines.length - 1;\n 1 <= RunInRootFrame &&\n 0 <= namePropDescriptor &&\n sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor];\n\n )\n namePropDescriptor--;\n for (\n ;\n 1 <= RunInRootFrame && 0 <= namePropDescriptor;\n RunInRootFrame--, namePropDescriptor--\n )\n if (sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]) {\n if (1 !== RunInRootFrame || 1 !== namePropDescriptor) {\n do\n if (\n (RunInRootFrame--,\n namePropDescriptor--,\n 0 > namePropDescriptor ||\n sampleLines[RunInRootFrame] !==\n controlLines[namePropDescriptor])\n ) {\n var frame =\n \"\\n\" +\n sampleLines[RunInRootFrame].replace(\" at new \", \" at \");\n fn.displayName &&\n frame.includes(\"<anonymous>\") &&\n (frame = frame.replace(\"<anonymous>\", fn.displayName));\n return frame;\n }\n while (1 <= RunInRootFrame && 0 <= namePropDescriptor);\n }\n break;\n }\n }\n } finally {\n (reentry = !1), (Error.prepareStackTrace = previousPrepareStackTrace);\n }\n return (previousPrepareStackTrace = fn ? fn.displayName || fn.name : \"\")\n ? describeBuiltInComponentFrame(previousPrepareStackTrace)\n : \"\";\n}\nfunction describeFiber(fiber, childFiber) {\n switch (fiber.tag) {\n case 26:\n case 27:\n case 5:\n return describeBuiltInComponentFrame(fiber.type);\n case 16:\n return describeBuiltInComponentFrame(\"Lazy\");\n case 13:\n return fiber.child !== childFiber && null !== childFiber\n ? describeBuiltInComponentFrame(\"Suspense Fallback\")\n : describeBuiltInComponentFrame(\"Suspense\");\n case 19:\n return describeBuiltInComponentFrame(\"SuspenseList\");\n case 0:\n case 15:\n return describeNativeComponentFrame(fiber.type, !1);\n case 11:\n return describeNativeComponentFrame(fiber.type.render, !1);\n case 1:\n return describeNativeComponentFrame(fiber.type, !0);\n case 31:\n return describeBuiltInComponentFrame(\"Activity\");\n case 30:\n return describeBuiltInComponentFrame(\"ViewTransition\");\n default:\n return \"\";\n }\n}\nfunction getStackByFiberInDevAndProd(workInProgress) {\n try {\n var info = \"\",\n previous = null;\n do\n (info += describeFiber(workInProgress, previous)),\n (previous = workInProgress),\n (workInProgress = workInProgress.return);\n while (workInProgress);\n return info;\n } catch (x) {\n return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n }\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty,\n scheduleCallback$3 = Scheduler.unstable_scheduleCallback,\n cancelCallback$1 = Scheduler.unstable_cancelCallback,\n shouldYield = Scheduler.unstable_shouldYield,\n requestPaint = Scheduler.unstable_requestPaint,\n now = Scheduler.unstable_now,\n getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel,\n ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n NormalPriority$1 = Scheduler.unstable_NormalPriority,\n LowPriority = Scheduler.unstable_LowPriority,\n IdlePriority = Scheduler.unstable_IdlePriority,\n log$1 = Scheduler.log,\n unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue,\n rendererID = null,\n injectedHook = null;\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n \"function\" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);\n if (injectedHook && \"function\" === typeof injectedHook.setStrictMode)\n try {\n injectedHook.setStrictMode(rendererID, newIsStrictMode);\n } catch (err) {}\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n log = Math.log,\n LN2 = Math.LN2;\nfunction clz32Fallback(x) {\n x >>>= 0;\n return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n}\nvar nextTransitionUpdateLane = 256,\n nextTransitionDeferredLane = 262144,\n nextRetryLane = 4194304;\nfunction getHighestPriorityLanes(lanes) {\n var pendingSyncLanes = lanes & 42;\n if (0 !== pendingSyncLanes) return pendingSyncLanes;\n switch (lanes & -lanes) {\n case 1:\n return 1;\n case 2:\n return 2;\n case 4:\n return 4;\n case 8:\n return 8;\n case 16:\n return 16;\n case 32:\n return 32;\n case 64:\n return 64;\n case 128:\n return 128;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n return lanes & -lanes;\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return lanes & 3932160;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return lanes & 62914560;\n case 67108864:\n return 67108864;\n case 134217728:\n return 134217728;\n case 268435456:\n return 268435456;\n case 536870912:\n return 536870912;\n case 1073741824:\n return 0;\n default:\n return lanes;\n }\n}\nfunction getNextLanes(root, wipLanes, rootHasPendingCommit) {\n var pendingLanes = root.pendingLanes;\n if (0 === pendingLanes) return 0;\n var nextLanes = 0,\n suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes;\n root = root.warmLanes;\n var nonIdlePendingLanes = pendingLanes & 134217727;\n 0 !== nonIdlePendingLanes\n ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),\n 0 !== pendingLanes\n ? (nextLanes = getHighestPriorityLanes(pendingLanes))\n : ((pingedLanes &= nonIdlePendingLanes),\n 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = nonIdlePendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit)))))\n : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),\n 0 !== nonIdlePendingLanes\n ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))\n : 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = pendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))));\n return 0 === nextLanes\n ? 0\n : 0 !== wipLanes &&\n wipLanes !== nextLanes &&\n 0 === (wipLanes & suspendedLanes) &&\n ((suspendedLanes = nextLanes & -nextLanes),\n (rootHasPendingCommit = wipLanes & -wipLanes),\n suspendedLanes >= rootHasPendingCommit ||\n (32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194048)))\n ? wipLanes\n : nextLanes;\n}\nfunction checkIfRootIsPrerendering(root, renderLanes) {\n return (\n 0 ===\n (root.pendingLanes &\n ~(root.suspendedLanes & ~root.pingedLanes) &\n renderLanes)\n );\n}\nfunction getEntangledLanes(root, renderLanes) {\n 0 !== (renderLanes & 8) && (renderLanes |= renderLanes & 32);\n var allEntangledLanes = root.entangledLanes;\n if (0 !== allEntangledLanes)\n for (\n root = root.entanglements, allEntangledLanes &= renderLanes;\n 0 < allEntangledLanes;\n\n ) {\n var index$4 = 31 - clz32(allEntangledLanes),\n lane = 1 << index$4;\n renderLanes |= root[index$4];\n allEntangledLanes &= ~lane;\n }\n return renderLanes;\n}\nfunction computeExpirationTime(lane, currentTime) {\n switch (lane) {\n case 1:\n case 2:\n case 4:\n case 8:\n case 64:\n return currentTime + 250;\n case 16:\n case 32:\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return currentTime + 5e3;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return -1;\n case 67108864:\n case 134217728:\n case 268435456:\n case 536870912:\n case 1073741824:\n return -1;\n default:\n return -1;\n }\n}\nfunction claimNextRetryLane() {\n var lane = nextRetryLane;\n nextRetryLane <<= 1;\n 0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);\n return lane;\n}\nfunction createLaneMap(initial) {\n for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n return laneMap;\n}\nfunction markRootUpdated$1(root, updateLane) {\n root.pendingLanes |= updateLane;\n 268435456 !== updateLane &&\n ((root.suspendedLanes = 0), (root.pingedLanes = 0), (root.warmLanes = 0));\n}\nfunction markRootFinished(\n root,\n finishedLanes,\n remainingLanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n) {\n var previouslyPendingLanes = root.pendingLanes;\n root.pendingLanes = remainingLanes;\n root.suspendedLanes = 0;\n root.pingedLanes = 0;\n root.warmLanes = 0;\n root.expiredLanes &= remainingLanes;\n root.entangledLanes &= remainingLanes;\n root.errorRecoveryDisabledLanes &= remainingLanes;\n root.shellSuspendCounter = 0;\n var entanglements = root.entanglements,\n expirationTimes = root.expirationTimes,\n hiddenUpdates = root.hiddenUpdates;\n for (\n remainingLanes = previouslyPendingLanes & ~remainingLanes;\n 0 < remainingLanes;\n\n ) {\n var index$7 = 31 - clz32(remainingLanes),\n lane = 1 << index$7;\n entanglements[index$7] = 0;\n expirationTimes[index$7] = -1;\n var hiddenUpdatesForLane = hiddenUpdates[index$7];\n if (null !== hiddenUpdatesForLane)\n for (\n hiddenUpdates[index$7] = null, index$7 = 0;\n index$7 < hiddenUpdatesForLane.length;\n index$7++\n ) {\n var update = hiddenUpdatesForLane[index$7];\n null !== update && (update.lane &= -536870913);\n }\n remainingLanes &= ~lane;\n }\n 0 !== spawnedLane && markSpawnedDeferredLane(root, spawnedLane, 0);\n 0 !== suspendedRetryLanes &&\n 0 === updatedLanes &&\n 0 !== root.tag &&\n (root.suspendedLanes |=\n suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));\n}\nfunction markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n root.pendingLanes |= spawnedLane;\n root.suspendedLanes &= ~spawnedLane;\n var spawnedLaneIndex = 31 - clz32(spawnedLane);\n root.entangledLanes |= spawnedLane;\n root.entanglements[spawnedLaneIndex] =\n root.entanglements[spawnedLaneIndex] |\n 1073741824 |\n (entangledLanes & 261930);\n}\nfunction markRootEntangled(root, entangledLanes) {\n var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n for (root = root.entanglements; rootEntangledLanes; ) {\n var index$8 = 31 - clz32(rootEntangledLanes),\n lane = 1 << index$8;\n (lane & entangledLanes) | (root[index$8] & entangledLanes) &&\n (root[index$8] |= entangledLanes);\n rootEntangledLanes &= ~lane;\n }\n}\nfunction getBumpedLaneForHydration(root, renderLanes) {\n var renderLane = renderLanes & -renderLanes;\n renderLane =\n 0 !== (renderLane & 42) ? 1 : getBumpedLaneForHydrationByLane(renderLane);\n return 0 !== (renderLane & (root.suspendedLanes | renderLanes))\n ? 0\n : renderLane;\n}\nfunction getBumpedLaneForHydrationByLane(lane) {\n switch (lane) {\n case 2:\n lane = 1;\n break;\n case 8:\n lane = 4;\n break;\n case 32:\n lane = 16;\n break;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n lane = 128;\n break;\n case 268435456:\n lane = 134217728;\n break;\n default:\n lane = 0;\n }\n return lane;\n}\nfunction lanesToEventPriority(lanes) {\n lanes &= -lanes;\n return 2 < lanes\n ? 8 < lanes\n ? 0 !== (lanes & 134217727)\n ? 32\n : 268435456\n : 8\n : 2;\n}\nfunction resolveUpdatePriority() {\n var updatePriority = ReactDOMSharedInternals.p;\n if (0 !== updatePriority) return updatePriority;\n updatePriority = window.event;\n return void 0 === updatePriority ? 32 : getEventPriority(updatePriority.type);\n}\nfunction runWithPriority(priority, fn) {\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n return (ReactDOMSharedInternals.p = priority), fn();\n } finally {\n ReactDOMSharedInternals.p = previousPriority;\n }\n}\nvar randomKey = Math.random().toString(36).slice(2),\n internalInstanceKey = \"__reactFiber$\" + randomKey,\n internalPropsKey = \"__reactProps$\" + randomKey,\n internalContainerInstanceKey = \"__reactContainer$\" + randomKey,\n internalEventHandlersKey = \"__reactEvents$\" + randomKey,\n internalEventHandlerListenersKey = \"__reactListeners$\" + randomKey,\n internalEventHandlesSetKey = \"__reactHandles$\" + randomKey,\n internalRootNodeResourcesKey = \"__reactResources$\" + randomKey,\n internalHoistableMarker = \"__reactMarker$\" + randomKey,\n internalLoadPendingKey = \"__reactLoad$\" + randomKey;\nfunction detachDeletedInstance(node) {\n delete node[internalInstanceKey];\n delete node[internalPropsKey];\n delete node[internalEventHandlerListenersKey];\n delete node[internalEventHandlesSetKey];\n}\nfunction getClosestInstanceFromNode(targetNode) {\n var targetInst;\n if ((targetInst = targetNode[internalInstanceKey])) return targetInst;\n for (var parentNode = targetNode.parentNode; parentNode; ) {\n if (\n (targetInst =\n parentNode[internalContainerInstanceKey] ||\n parentNode[internalInstanceKey])\n ) {\n parentNode = targetInst.alternate;\n if (\n null !== targetInst.child ||\n (null !== parentNode && null !== parentNode.child)\n )\n for (\n targetNode = getParentHydrationBoundary(targetNode);\n null !== targetNode;\n\n ) {\n if ((parentNode = targetNode[internalInstanceKey])) return parentNode;\n targetNode = getParentHydrationBoundary(targetNode);\n }\n return targetInst;\n }\n targetNode = parentNode;\n parentNode = targetNode.parentNode;\n }\n return null;\n}\nfunction getInstanceFromNode(node) {\n if (\n (node = node[internalInstanceKey] || node[internalContainerInstanceKey])\n ) {\n var tag = node.tag;\n if (\n 5 === tag ||\n 6 === tag ||\n 13 === tag ||\n 31 === tag ||\n 26 === tag ||\n 27 === tag ||\n 3 === tag\n )\n return node;\n }\n return null;\n}\nfunction getNodeFromInstance(inst) {\n var tag = inst.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return inst.stateNode;\n throw Error(formatProdErrorMessage(33));\n}\nfunction getResourcesFromRoot(root) {\n var resources = root[internalRootNodeResourcesKey];\n resources ||\n (resources = root[internalRootNodeResourcesKey] =\n { hoistableStyles: new Map(), hoistableScripts: new Map() });\n return resources;\n}\nfunction markNodeAsHoistable(node) {\n node[internalHoistableMarker] = !0;\n}\nfunction clearPendingLoadOnNode(node) {\n node[internalLoadPendingKey] = void 0;\n}\nvar allNativeEvents = new Set(),\n registrationNameDependencies = {};\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n registerDirectEvent(registrationName, dependencies);\n registerDirectEvent(registrationName + \"Capture\", dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n registrationNameDependencies[registrationName] = dependencies;\n for (\n registrationName = 0;\n registrationName < dependencies.length;\n registrationName++\n )\n allNativeEvents.add(dependencies[registrationName]);\n}\nvar VALID_ATTRIBUTE_NAME_REGEX = RegExp(\n \"^[:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD][:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n ),\n illegalAttributeNameCache = {},\n validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n return !0;\n if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return !1;\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n return (validatedAttributeNameCache[attributeName] = !0);\n illegalAttributeNameCache[attributeName] = !0;\n return !1;\n}\nvar viewTransitionMutationContext = !1;\nfunction pushMutationContext() {\n var prev = viewTransitionMutationContext;\n viewTransitionMutationContext = !1;\n return prev;\n}\nfunction setValueForAttribute(node, name, value) {\n if (isAttributeNameSafe(name))\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n node.removeAttribute(name);\n return;\n case \"boolean\":\n var prefix$10 = name.toLowerCase().slice(0, 5);\n if (\"data-\" !== prefix$10 && \"aria-\" !== prefix$10) {\n node.removeAttribute(name);\n return;\n }\n }\n node.setAttribute(name, value);\n }\n}\nfunction setValueForKnownAttribute(node, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttribute(name, value);\n }\n}\nfunction setValueForNamespacedAttribute(node, namespace, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttributeNS(namespace, name, value);\n }\n}\nfunction getToStringValue(value) {\n switch (typeof value) {\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n case \"undefined\":\n return value;\n case \"object\":\n return value;\n default:\n return \"\";\n }\n}\nfunction isCheckable(elem) {\n var type = elem.type;\n return (\n (elem = elem.nodeName) &&\n \"input\" === elem.toLowerCase() &&\n (\"checkbox\" === type || \"radio\" === type)\n );\n}\nfunction trackValueOnNode(node, valueField, currentValue) {\n var descriptor = Object.getOwnPropertyDescriptor(\n node.constructor.prototype,\n valueField\n );\n if (\n !node.hasOwnProperty(valueField) &&\n \"undefined\" !== typeof descriptor &&\n \"function\" === typeof descriptor.get &&\n \"function\" === typeof descriptor.set\n ) {\n var get = descriptor.get,\n set = descriptor.set;\n Object.defineProperty(node, valueField, {\n configurable: !0,\n get: function () {\n return get.call(this);\n },\n set: function (value) {\n currentValue = \"\" + value;\n set.call(this, value);\n }\n });\n Object.defineProperty(node, valueField, {\n enumerable: descriptor.enumerable\n });\n return {\n getValue: function () {\n return currentValue;\n },\n setValue: function (value) {\n currentValue = \"\" + value;\n },\n stopTracking: function () {\n node._valueTracker = null;\n delete node[valueField];\n }\n };\n }\n}\nfunction track(node) {\n if (!node._valueTracker) {\n var valueField = isCheckable(node) ? \"checked\" : \"value\";\n node._valueTracker = trackValueOnNode(\n node,\n valueField,\n \"\" + node[valueField]\n );\n }\n}\nfunction updateValueIfChanged(node) {\n if (!node) return !1;\n var tracker = node._valueTracker;\n if (!tracker) return !0;\n var lastValue = tracker.getValue();\n var value = \"\";\n node &&\n (value = isCheckable(node)\n ? node.checked\n ? \"true\"\n : \"false\"\n : node.value);\n node = value;\n return node !== lastValue ? (tracker.setValue(node), !0) : !1;\n}\nvar escapeSelectorAttributeValueInsideDoubleQuotesRegex = /[\\n\"\\\\]/g;\nfunction escapeSelectorAttributeValueInsideDoubleQuotes(value) {\n return value.replace(\n escapeSelectorAttributeValueInsideDoubleQuotesRegex,\n function (ch) {\n return \"\\\\\" + ch.charCodeAt(0).toString(16) + \" \";\n }\n );\n}\nfunction updateInput(\n element,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n) {\n element.name = \"\";\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type\n ? (element.type = type)\n : element.removeAttribute(\"type\");\n if (null != value)\n if (\"number\" === type) {\n if ((0 === value && \"\" === element.value) || element.value != value)\n element.value = \"\" + getToStringValue(value);\n } else\n element.value !== \"\" + getToStringValue(value) &&\n (element.value = \"\" + getToStringValue(value));\n else\n (\"submit\" !== type && \"reset\" !== type) || element.removeAttribute(\"value\");\n null != value\n ? \"number\" === type && element.value == value\n ? setDefaultValue(element, getToStringValue(element.value))\n : setDefaultValue(element, getToStringValue(value))\n : null != defaultValue\n ? setDefaultValue(element, getToStringValue(defaultValue))\n : null != lastDefaultValue && element.removeAttribute(\"value\");\n null == checked &&\n null != defaultChecked &&\n (element.defaultChecked = !!defaultChecked);\n null != checked &&\n (element.checked =\n checked && \"function\" !== typeof checked && \"symbol\" !== typeof checked);\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name\n ? (element.name = \"\" + getToStringValue(name))\n : element.removeAttribute(\"name\");\n}\nfunction initInput(\n element,\n value,\n defaultValue,\n checked,\n defaultChecked,\n type,\n name,\n isHydrating\n) {\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type &&\n (element.type = type);\n if (null != value || null != defaultValue) {\n if (\n !(\n (\"submit\" !== type && \"reset\" !== type) ||\n (void 0 !== value && null !== value)\n )\n ) {\n track(element);\n return;\n }\n defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n value = null != value ? \"\" + getToStringValue(value) : defaultValue;\n isHydrating || value === element.value || (element.value = value);\n element.defaultValue = value;\n }\n checked = null != checked ? checked : defaultChecked;\n checked =\n \"function\" !== typeof checked && \"symbol\" !== typeof checked && !!checked;\n element.checked = isHydrating ? element.checked : !!checked;\n element.defaultChecked = !!checked;\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name &&\n (element.name = name);\n track(element);\n}\nfunction setDefaultValue(node, value) {\n node.defaultValue !== \"\" + value && (node.defaultValue = \"\" + value);\n}\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n node = node.options;\n if (multiple) {\n multiple = {};\n for (var i = 0; i < propValue.length; i++)\n multiple[\"$\" + propValue[i]] = !0;\n for (propValue = 0; propValue < node.length; propValue++)\n (i = multiple.hasOwnProperty(\"$\" + node[propValue].value)),\n node[propValue].selected !== i && (node[propValue].selected = i),\n i && setDefaultSelected && (node[propValue].defaultSelected = !0);\n } else {\n propValue = \"\" + getToStringValue(propValue);\n multiple = null;\n for (i = 0; i < node.length; i++) {\n if (node[i].value === propValue) {\n node[i].selected = !0;\n setDefaultSelected && (node[i].defaultSelected = !0);\n return;\n }\n null !== multiple || node[i].disabled || (multiple = node[i]);\n }\n null !== multiple && (multiple.selected = !0);\n }\n}\nfunction updateTextarea(element, value, defaultValue) {\n if (\n null != value &&\n ((value = \"\" + getToStringValue(value)),\n value !== element.value && (element.value = value),\n null == defaultValue)\n ) {\n element.defaultValue !== value && (element.defaultValue = value);\n return;\n }\n element.defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n}\nfunction initTextarea(element, value, defaultValue, children) {\n if (null == value) {\n if (null != children) {\n if (null != defaultValue) throw Error(formatProdErrorMessage(92));\n if (isArrayImpl(children)) {\n if (1 < children.length) throw Error(formatProdErrorMessage(93));\n children = children[0];\n }\n defaultValue = children;\n }\n null == defaultValue && (defaultValue = \"\");\n value = defaultValue;\n }\n defaultValue = getToStringValue(value);\n element.defaultValue = defaultValue;\n children = element.textContent;\n children === defaultValue &&\n \"\" !== children &&\n null !== children &&\n (element.value = children);\n track(element);\n}\nfunction setTextContent(node, text) {\n if (text) {\n var firstChild = node.firstChild;\n if (\n firstChild &&\n firstChild === node.lastChild &&\n 3 === firstChild.nodeType\n ) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n}\nvar unitlessNumbers = new Set(\n \"animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp\".split(\n \" \"\n )\n);\nfunction setValueForStyle(style, styleName, value) {\n var isCustomProperty = 0 === styleName.indexOf(\"--\");\n null == value || \"boolean\" === typeof value || \"\" === value\n ? isCustomProperty\n ? style.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (style.cssFloat = \"\")\n : (style[styleName] = \"\")\n : isCustomProperty\n ? style.setProperty(styleName, value)\n : \"number\" !== typeof value ||\n 0 === value ||\n unitlessNumbers.has(styleName)\n ? \"float\" === styleName\n ? (style.cssFloat = value)\n : (style[styleName] = (\"\" + value).trim())\n : (style[styleName] = value + \"px\");\n}\nfunction setValueForStyles(node, styles, prevStyles) {\n if (null != styles && \"object\" !== typeof styles)\n throw Error(formatProdErrorMessage(62));\n node = node.style;\n if (null != prevStyles) {\n for (var styleName in prevStyles)\n !prevStyles.hasOwnProperty(styleName) ||\n (null != styles && styles.hasOwnProperty(styleName)) ||\n (0 === styleName.indexOf(\"--\")\n ? node.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (node.cssFloat = \"\")\n : (node[styleName] = \"\"),\n (viewTransitionMutationContext = !0));\n for (var styleName$16 in styles)\n (styleName = styles[styleName$16]),\n styles.hasOwnProperty(styleName$16) &&\n prevStyles[styleName$16] !== styleName &&\n (setValueForStyle(node, styleName$16, styleName),\n (viewTransitionMutationContext = !0));\n } else\n for (var styleName$17 in styles)\n styles.hasOwnProperty(styleName$17) &&\n setValueForStyle(node, styleName$17, styles[styleName$17]);\n}\nfunction isCustomElement(tagName) {\n if (-1 === tagName.indexOf(\"-\")) return !1;\n switch (tagName) {\n case \"annotation-xml\":\n case \"color-profile\":\n case \"font-face\":\n case \"font-face-src\":\n case \"font-face-uri\":\n case \"font-face-format\":\n case \"font-face-name\":\n case \"missing-glyph\":\n return !1;\n default:\n return !0;\n }\n}\nvar aliases = new Map([\n [\"acceptCharset\", \"accept-charset\"],\n [\"htmlFor\", \"for\"],\n [\"httpEquiv\", \"http-equiv\"],\n [\"crossOrigin\", \"crossorigin\"],\n [\"accentHeight\", \"accent-height\"],\n [\"alignmentBaseline\", \"alignment-baseline\"],\n [\"arabicForm\", \"arabic-form\"],\n [\"baselineShift\", \"baseline-shift\"],\n [\"capHeight\", \"cap-height\"],\n [\"clipPath\", \"clip-path\"],\n [\"clipRule\", \"clip-rule\"],\n [\"colorInterpolation\", \"color-interpolation\"],\n [\"colorInterpolationFilters\", \"color-interpolation-filters\"],\n [\"colorProfile\", \"color-profile\"],\n [\"colorRendering\", \"color-rendering\"],\n [\"dominantBaseline\", \"dominant-baseline\"],\n [\"enableBackground\", \"enable-background\"],\n [\"fillOpacity\", \"fill-opacity\"],\n [\"fillRule\", \"fill-rule\"],\n [\"floodColor\", \"flood-color\"],\n [\"floodOpacity\", \"flood-opacity\"],\n [\"fontFamily\", \"font-family\"],\n [\"fontSize\", \"font-size\"],\n [\"fontSizeAdjust\", \"font-size-adjust\"],\n [\"fontStretch\", \"font-stretch\"],\n [\"fontStyle\", \"font-style\"],\n [\"fontVariant\", \"font-variant\"],\n [\"fontWeight\", \"font-weight\"],\n [\"glyphName\", \"glyph-name\"],\n [\"glyphOrientationHorizontal\", \"glyph-orientation-horizontal\"],\n [\"glyphOrientationVertical\", \"glyph-orientation-vertical\"],\n [\"horizAdvX\", \"horiz-adv-x\"],\n [\"horizOriginX\", \"horiz-origin-x\"],\n [\"imageRendering\", \"image-rendering\"],\n [\"letterSpacing\", \"letter-spacing\"],\n [\"lightingColor\", \"lighting-color\"],\n [\"markerEnd\", \"marker-end\"],\n [\"markerMid\", \"marker-mid\"],\n [\"markerStart\", \"marker-start\"],\n [\"maskType\", \"mask-type\"],\n [\"overlinePosition\", \"overline-position\"],\n [\"overlineThickness\", \"overline-thickness\"],\n [\"paintOrder\", \"paint-order\"],\n [\"panose-1\", \"panose-1\"],\n [\"pointerEvents\", \"pointer-events\"],\n [\"renderingIntent\", \"rendering-intent\"],\n [\"shapeRendering\", \"shape-rendering\"],\n [\"stopColor\", \"stop-color\"],\n [\"stopOpacity\", \"stop-opacity\"],\n [\"strikethroughPosition\", \"strikethrough-position\"],\n [\"strikethroughThickness\", \"strikethrough-thickness\"],\n [\"strokeDasharray\", \"stroke-dasharray\"],\n [\"strokeDashoffset\", \"stroke-dashoffset\"],\n [\"strokeLinecap\", \"stroke-linecap\"],\n [\"strokeLinejoin\", \"stroke-linejoin\"],\n [\"strokeMiterlimit\", \"stroke-miterlimit\"],\n [\"strokeOpacity\", \"stroke-opacity\"],\n [\"strokeWidth\", \"stroke-width\"],\n [\"textAnchor\", \"text-anchor\"],\n [\"textDecoration\", \"text-decoration\"],\n [\"textRendering\", \"text-rendering\"],\n [\"transformOrigin\", \"transform-origin\"],\n [\"underlinePosition\", \"underline-position\"],\n [\"underlineThickness\", \"underline-thickness\"],\n [\"unicodeBidi\", \"unicode-bidi\"],\n [\"unicodeRange\", \"unicode-range\"],\n [\"unitsPerEm\", \"units-per-em\"],\n [\"vAlphabetic\", \"v-alphabetic\"],\n [\"vHanging\", \"v-hanging\"],\n [\"vIdeographic\", \"v-ideographic\"],\n [\"vMathematical\", \"v-mathematical\"],\n [\"vectorEffect\", \"vector-effect\"],\n [\"vertAdvY\", \"vert-adv-y\"],\n [\"vertOriginX\", \"vert-origin-x\"],\n [\"vertOriginY\", \"vert-origin-y\"],\n [\"wordSpacing\", \"word-spacing\"],\n [\"writingMode\", \"writing-mode\"],\n [\"xmlnsXlink\", \"xmlns:xlink\"],\n [\"xHeight\", \"x-height\"]\n ]),\n isJavaScriptProtocol =\n /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i;\nfunction sanitizeURL(url) {\n return isJavaScriptProtocol.test(\"\" + url)\n ? \"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')\"\n : url;\n}\nfunction noop$1() {}\nvar currentReplayingEvent = null;\nfunction getEventTarget(nativeEvent) {\n nativeEvent = nativeEvent.target || nativeEvent.srcElement || window;\n nativeEvent.correspondingUseElement &&\n (nativeEvent = nativeEvent.correspondingUseElement);\n return 3 === nativeEvent.nodeType ? nativeEvent.parentNode : nativeEvent;\n}\nvar restoreTarget = null,\n restoreQueue = null;\nfunction restoreStateOfTarget(target) {\n var internalInstance = getInstanceFromNode(target);\n if (internalInstance && (target = internalInstance.stateNode)) {\n var props = target[internalPropsKey] || null;\n a: switch (((target = internalInstance.stateNode), internalInstance.type)) {\n case \"input\":\n updateInput(\n target,\n props.value,\n props.defaultValue,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name\n );\n internalInstance = props.name;\n if (\"radio\" === props.type && null != internalInstance) {\n for (props = target; props.parentNode; ) props = props.parentNode;\n props = props.querySelectorAll(\n 'input[name=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n \"\" + internalInstance\n ) +\n '\"][type=\"radio\"]'\n );\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n ) {\n var otherNode = props[internalInstance];\n if (otherNode !== target && otherNode.form === target.form) {\n var otherProps = otherNode[internalPropsKey] || null;\n if (!otherProps) throw Error(formatProdErrorMessage(90));\n updateInput(\n otherNode,\n otherProps.value,\n otherProps.defaultValue,\n otherProps.defaultValue,\n otherProps.checked,\n otherProps.defaultChecked,\n otherProps.type,\n otherProps.name\n );\n }\n }\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n )\n (otherNode = props[internalInstance]),\n otherNode.form === target.form && updateValueIfChanged(otherNode);\n }\n break a;\n case \"textarea\":\n updateTextarea(target, props.value, props.defaultValue);\n break a;\n case \"select\":\n (internalInstance = props.value),\n null != internalInstance &&\n updateOptions(target, !!props.multiple, internalInstance, !1);\n }\n }\n}\nvar isInsideEventHandler = !1;\nfunction batchedUpdates$1(fn, a, b) {\n if (isInsideEventHandler) return fn(a, b);\n isInsideEventHandler = !0;\n try {\n var JSCompiler_inline_result = fn(a);\n return JSCompiler_inline_result;\n } finally {\n if (\n ((isInsideEventHandler = !1),\n null !== restoreTarget || null !== restoreQueue)\n )\n if (\n (flushSyncWork$1(),\n restoreTarget &&\n ((a = restoreTarget),\n (fn = restoreQueue),\n (restoreQueue = restoreTarget = null),\n restoreStateOfTarget(a),\n fn))\n )\n for (a = 0; a < fn.length; a++) restoreStateOfTarget(fn[a]);\n }\n}\nfunction getListener(inst, registrationName) {\n var stateNode = inst.stateNode;\n if (null === stateNode) return null;\n var props = stateNode[internalPropsKey] || null;\n if (null === props) return null;\n stateNode = props[registrationName];\n a: switch (registrationName) {\n case \"onClick\":\n case \"onClickCapture\":\n case \"onDoubleClick\":\n case \"onDoubleClickCapture\":\n case \"onMouseDown\":\n case \"onMouseDownCapture\":\n case \"onMouseMove\":\n case \"onMouseMoveCapture\":\n case \"onMouseUp\":\n case \"onMouseUpCapture\":\n case \"onMouseEnter\":\n (props = !props.disabled) ||\n ((inst = inst.type),\n (props = !(\n \"button\" === inst ||\n \"input\" === inst ||\n \"select\" === inst ||\n \"textarea\" === inst\n )));\n inst = !props;\n break a;\n default:\n inst = !1;\n }\n if (inst) return null;\n if (stateNode && \"function\" !== typeof stateNode)\n throw Error(\n formatProdErrorMessage(231, registrationName, typeof stateNode)\n );\n return stateNode;\n}\nvar canUseDOM = !(\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ),\n passiveBrowserEventsSupported = !1;\nif (canUseDOM)\n try {\n var options = {};\n Object.defineProperty(options, \"passive\", {\n get: function () {\n passiveBrowserEventsSupported = !0;\n }\n });\n window.addEventListener(\"test\", options, options);\n window.removeEventListener(\"test\", options, options);\n } catch (e) {\n passiveBrowserEventsSupported = !1;\n }\nvar root = null,\n startText = null,\n fallbackText = null;\nfunction getData() {\n if (fallbackText) return fallbackText;\n var start,\n startValue = startText,\n startLength = startValue.length,\n end,\n endValue = \"value\" in root ? root.value : root.textContent,\n endLength = endValue.length;\n for (\n start = 0;\n start < startLength && startValue[start] === endValue[start];\n start++\n );\n var minEnd = startLength - start;\n for (\n end = 1;\n end <= minEnd &&\n startValue[startLength - end] === endValue[endLength - end];\n end++\n );\n return (fallbackText = endValue.slice(start, 1 < end ? 1 - end : void 0));\n}\nfunction getEventCharCode(nativeEvent) {\n var keyCode = nativeEvent.keyCode;\n \"charCode\" in nativeEvent\n ? ((nativeEvent = nativeEvent.charCode),\n 0 === nativeEvent && 13 === keyCode && (nativeEvent = 13))\n : (nativeEvent = keyCode);\n 10 === nativeEvent && (nativeEvent = 13);\n return 32 <= nativeEvent || 13 === nativeEvent ? nativeEvent : 0;\n}\nfunction functionThatReturnsTrue() {\n return !0;\n}\nfunction functionThatReturnsFalse() {\n return !1;\n}\nfunction createSyntheticEvent(Interface) {\n function SyntheticBaseEvent(\n reactName,\n reactEventType,\n targetInst,\n nativeEvent,\n nativeEventTarget\n ) {\n this._reactName = reactName;\n this._targetInst = targetInst;\n this.type = reactEventType;\n this.nativeEvent = nativeEvent;\n this.target = nativeEventTarget;\n this.currentTarget = null;\n for (var propName in Interface)\n Interface.hasOwnProperty(propName) &&\n ((reactName = Interface[propName]),\n (this[propName] = reactName\n ? reactName(nativeEvent)\n : nativeEvent[propName]));\n this.isDefaultPrevented = (\n null != nativeEvent.defaultPrevented\n ? nativeEvent.defaultPrevented\n : !1 === nativeEvent.returnValue\n )\n ? functionThatReturnsTrue\n : functionThatReturnsFalse;\n this.isPropagationStopped = functionThatReturnsFalse;\n return this;\n }\n assign(SyntheticBaseEvent.prototype, {\n preventDefault: function () {\n this.defaultPrevented = !0;\n var event = this.nativeEvent;\n event &&\n (event.preventDefault\n ? event.preventDefault()\n : \"unknown\" !== typeof event.returnValue && (event.returnValue = !1),\n (this.isDefaultPrevented = functionThatReturnsTrue));\n },\n stopPropagation: function () {\n var event = this.nativeEvent;\n event &&\n (event.stopPropagation\n ? event.stopPropagation()\n : \"unknown\" !== typeof event.cancelBubble &&\n (event.cancelBubble = !0),\n (this.isPropagationStopped = functionThatReturnsTrue));\n },\n persist: function () {},\n isPersistent: functionThatReturnsTrue\n });\n return SyntheticBaseEvent;\n}\nvar EventInterface = {\n eventPhase: 0,\n bubbles: 0,\n cancelable: 0,\n timeStamp: function (event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: 0,\n isTrusted: 0\n },\n SyntheticEvent = createSyntheticEvent(EventInterface),\n UIEventInterface = assign({}, EventInterface, { view: 0, detail: 0 }),\n SyntheticUIEvent = createSyntheticEvent(UIEventInterface),\n lastMovementX,\n lastMovementY,\n lastMouseEvent,\n MouseEventInterface = assign({}, UIEventInterface, {\n screenX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n pageX: 0,\n pageY: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n getModifierState: getEventModifierState,\n button: 0,\n buttons: 0,\n relatedTarget: function (event) {\n return void 0 === event.relatedTarget\n ? event.fromElement === event.srcElement\n ? event.toElement\n : event.fromElement\n : event.relatedTarget;\n },\n movementX: function (event) {\n if (\"movementX\" in event) return event.movementX;\n event !== lastMouseEvent &&\n (lastMouseEvent && \"mousemove\" === event.type\n ? ((lastMovementX = event.screenX - lastMouseEvent.screenX),\n (lastMovementY = event.screenY - lastMouseEvent.screenY))\n : (lastMovementY = lastMovementX = 0),\n (lastMouseEvent = event));\n return lastMovementX;\n },\n movementY: function (event) {\n return \"movementY\" in event ? event.movementY : lastMovementY;\n }\n }),\n SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface),\n DragEventInterface = assign({}, MouseEventInterface, { dataTransfer: 0 }),\n SyntheticDragEvent = createSyntheticEvent(DragEventInterface),\n FocusEventInterface = assign({}, UIEventInterface, { relatedTarget: 0 }),\n SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface),\n AnimationEventInterface = assign({}, EventInterface, {\n animationName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface),\n ClipboardEventInterface = assign({}, EventInterface, {\n clipboardData: function (event) {\n return \"clipboardData\" in event\n ? event.clipboardData\n : window.clipboardData;\n }\n }),\n SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface),\n CompositionEventInterface = assign({}, EventInterface, { data: 0 }),\n SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface),\n normalizeKey = {\n Esc: \"Escape\",\n Spacebar: \" \",\n Left: \"ArrowLeft\",\n Up: \"ArrowUp\",\n Right: \"ArrowRight\",\n Down: \"ArrowDown\",\n Del: \"Delete\",\n Win: \"OS\",\n Menu: \"ContextMenu\",\n Apps: \"ContextMenu\",\n Scroll: \"ScrollLock\",\n MozPrintableKey: \"Unidentified\"\n },\n translateToKey = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 12: \"Clear\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 45: \"Insert\",\n 46: \"Delete\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 224: \"Meta\"\n },\n modifierKeyToProp = {\n Alt: \"altKey\",\n Control: \"ctrlKey\",\n Meta: \"metaKey\",\n Shift: \"shiftKey\"\n };\nfunction modifierStateGetter(keyArg) {\n var nativeEvent = this.nativeEvent;\n return nativeEvent.getModifierState\n ? nativeEvent.getModifierState(keyArg)\n : (keyArg = modifierKeyToProp[keyArg])\n ? !!nativeEvent[keyArg]\n : !1;\n}\nfunction getEventModifierState() {\n return modifierStateGetter;\n}\nvar KeyboardEventInterface = assign({}, UIEventInterface, {\n key: function (nativeEvent) {\n if (nativeEvent.key) {\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (\"Unidentified\" !== key) return key;\n }\n return \"keypress\" === nativeEvent.type\n ? ((nativeEvent = getEventCharCode(nativeEvent)),\n 13 === nativeEvent ? \"Enter\" : String.fromCharCode(nativeEvent))\n : \"keydown\" === nativeEvent.type || \"keyup\" === nativeEvent.type\n ? translateToKey[nativeEvent.keyCode] || \"Unidentified\"\n : \"\";\n },\n code: 0,\n location: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n repeat: 0,\n locale: 0,\n getModifierState: getEventModifierState,\n charCode: function (event) {\n return \"keypress\" === event.type ? getEventCharCode(event) : 0;\n },\n keyCode: function (event) {\n return \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n },\n which: function (event) {\n return \"keypress\" === event.type\n ? getEventCharCode(event)\n : \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n }\n }),\n SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface),\n PointerEventInterface = assign({}, MouseEventInterface, {\n pointerId: 0,\n width: 0,\n height: 0,\n pressure: 0,\n tangentialPressure: 0,\n tiltX: 0,\n tiltY: 0,\n twist: 0,\n pointerType: 0,\n isPrimary: 0\n }),\n SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface),\n SubmitEventInterface = assign({}, EventInterface, { submitter: 0 }),\n SyntheticSubmitEvent = createSyntheticEvent(SubmitEventInterface),\n TouchEventInterface = assign({}, UIEventInterface, {\n touches: 0,\n targetTouches: 0,\n changedTouches: 0,\n altKey: 0,\n metaKey: 0,\n ctrlKey: 0,\n shiftKey: 0,\n getModifierState: getEventModifierState\n }),\n SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface),\n TransitionEventInterface = assign({}, EventInterface, {\n propertyName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface),\n WheelEventInterface = assign({}, MouseEventInterface, {\n deltaX: function (event) {\n return \"deltaX\" in event\n ? event.deltaX\n : \"wheelDeltaX\" in event\n ? -event.wheelDeltaX\n : 0;\n },\n deltaY: function (event) {\n return \"deltaY\" in event\n ? event.deltaY\n : \"wheelDeltaY\" in event\n ? -event.wheelDeltaY\n : \"wheelDelta\" in event\n ? -event.wheelDelta\n : 0;\n },\n deltaZ: 0,\n deltaMode: 0\n }),\n SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface),\n ToggleEventInterface = assign({}, EventInterface, {\n newState: 0,\n oldState: 0,\n source: 0\n }),\n SyntheticToggleEvent = createSyntheticEvent(ToggleEventInterface),\n END_KEYCODES = [9, 13, 27, 32],\n canUseCompositionEvent = canUseDOM && \"CompositionEvent\" in window,\n documentMode = null;\ncanUseDOM &&\n \"documentMode\" in document &&\n (documentMode = document.documentMode);\nvar canUseTextInputEvent = canUseDOM && \"TextEvent\" in window && !documentMode,\n useFallbackCompositionData =\n canUseDOM &&\n (!canUseCompositionEvent ||\n (documentMode && 8 < documentMode && 11 >= documentMode)),\n SPACEBAR_CHAR = String.fromCharCode(32),\n hasSpaceKeypress = !1;\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"keyup\":\n return -1 !== END_KEYCODES.indexOf(nativeEvent.keyCode);\n case \"keydown\":\n return 229 !== nativeEvent.keyCode;\n case \"keypress\":\n case \"mousedown\":\n case \"focusout\":\n return !0;\n default:\n return !1;\n }\n}\nfunction getDataFromCustomEvent(nativeEvent) {\n nativeEvent = nativeEvent.detail;\n return \"object\" === typeof nativeEvent && \"data\" in nativeEvent\n ? nativeEvent.data\n : null;\n}\nvar isComposing = !1;\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"compositionend\":\n return getDataFromCustomEvent(nativeEvent);\n case \"keypress\":\n if (32 !== nativeEvent.which) return null;\n hasSpaceKeypress = !0;\n return SPACEBAR_CHAR;\n case \"textInput\":\n return (\n (domEventName = nativeEvent.data),\n domEventName === SPACEBAR_CHAR && hasSpaceKeypress ? null : domEventName\n );\n default:\n return null;\n }\n}\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n if (isComposing)\n return \"compositionend\" === domEventName ||\n (!canUseCompositionEvent &&\n isFallbackCompositionEnd(domEventName, nativeEvent))\n ? ((domEventName = getData()),\n (fallbackText = startText = root = null),\n (isComposing = !1),\n domEventName)\n : null;\n switch (domEventName) {\n case \"paste\":\n return null;\n case \"keypress\":\n if (\n !(nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) ||\n (nativeEvent.ctrlKey && nativeEvent.altKey)\n ) {\n if (nativeEvent.char && 1 < nativeEvent.char.length)\n return nativeEvent.char;\n if (nativeEvent.which) return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case \"compositionend\":\n return useFallbackCompositionData && \"ko\" !== nativeEvent.locale\n ? null\n : nativeEvent.data;\n default:\n return null;\n }\n}\nvar supportedInputTypes = {\n color: !0,\n date: !0,\n datetime: !0,\n \"datetime-local\": !0,\n email: !0,\n month: !0,\n number: !0,\n password: !0,\n range: !0,\n search: !0,\n tel: !0,\n text: !0,\n time: !0,\n url: !0,\n week: !0\n};\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return \"input\" === nodeName\n ? !!supportedInputTypes[elem.type]\n : \"textarea\" === nodeName\n ? !0\n : !1;\n}\nfunction createAndAccumulateChangeEvent(\n dispatchQueue,\n inst,\n nativeEvent,\n target\n) {\n restoreTarget\n ? restoreQueue\n ? restoreQueue.push(target)\n : (restoreQueue = [target])\n : (restoreTarget = target);\n inst = accumulateTwoPhaseListeners(inst, \"onChange\");\n 0 < inst.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onChange\",\n \"change\",\n null,\n nativeEvent,\n target\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: inst }));\n}\nvar activeElement$1 = null,\n activeElementInst$1 = null;\nfunction runEventInBatch(dispatchQueue) {\n processDispatchQueue(dispatchQueue, 0);\n}\nfunction getInstIfValueChanged(targetInst) {\n var targetNode = getNodeFromInstance(targetInst);\n if (updateValueIfChanged(targetNode)) return targetInst;\n}\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n if (\"change\" === domEventName) return targetInst;\n}\nvar isInputEventSupported = !1;\nif (canUseDOM) {\n var JSCompiler_inline_result$jscomp$318;\n if (canUseDOM) {\n var isSupported$jscomp$inline_474 = \"oninput\" in document;\n if (!isSupported$jscomp$inline_474) {\n var element$jscomp$inline_475 = document.createElement(\"div\");\n element$jscomp$inline_475.setAttribute(\"oninput\", \"return;\");\n isSupported$jscomp$inline_474 =\n \"function\" === typeof element$jscomp$inline_475.oninput;\n }\n JSCompiler_inline_result$jscomp$318 = isSupported$jscomp$inline_474;\n } else JSCompiler_inline_result$jscomp$318 = !1;\n isInputEventSupported =\n JSCompiler_inline_result$jscomp$318 &&\n (!document.documentMode || 9 < document.documentMode);\n}\nfunction stopWatchingForValueChange() {\n activeElement$1 &&\n (activeElement$1.detachEvent(\"onpropertychange\", handlePropertyChange),\n (activeElementInst$1 = activeElement$1 = null));\n}\nfunction handlePropertyChange(nativeEvent) {\n if (\n \"value\" === nativeEvent.propertyName &&\n getInstIfValueChanged(activeElementInst$1)\n ) {\n var dispatchQueue = [];\n createAndAccumulateChangeEvent(\n dispatchQueue,\n activeElementInst$1,\n nativeEvent,\n getEventTarget(nativeEvent)\n );\n batchedUpdates$1(runEventInBatch, dispatchQueue);\n }\n}\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n \"focusin\" === domEventName\n ? (stopWatchingForValueChange(),\n (activeElement$1 = target),\n (activeElementInst$1 = targetInst),\n activeElement$1.attachEvent(\"onpropertychange\", handlePropertyChange))\n : \"focusout\" === domEventName && stopWatchingForValueChange();\n}\nfunction getTargetInstForInputEventPolyfill(domEventName) {\n if (\n \"selectionchange\" === domEventName ||\n \"keyup\" === domEventName ||\n \"keydown\" === domEventName\n )\n return getInstIfValueChanged(activeElementInst$1);\n}\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n if (\"click\" === domEventName) return getInstIfValueChanged(targetInst);\n}\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n if (\"input\" === domEventName || \"change\" === domEventName)\n return getInstIfValueChanged(targetInst);\n}\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is;\nfunction shallowEqual(objA, objB) {\n if (objectIs(objA, objB)) return !0;\n if (\n \"object\" !== typeof objA ||\n null === objA ||\n \"object\" !== typeof objB ||\n null === objB\n )\n return !1;\n var keysA = Object.keys(objA),\n keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return !1;\n for (keysB = 0; keysB < keysA.length; keysB++) {\n var currentKey = keysA[keysB];\n if (\n !hasOwnProperty.call(objB, currentKey) ||\n !objectIs(objA[currentKey], objB[currentKey])\n )\n return !1;\n }\n return !0;\n}\nfunction getActiveElement(doc) {\n doc = doc || (\"undefined\" !== typeof document ? document : void 0);\n if (\"undefined\" === typeof doc) return null;\n try {\n return doc.activeElement || doc.body;\n } catch (e$20) {\n return doc.body;\n }\n}\nfunction getLeafNode(node) {\n for (; node && node.firstChild; ) node = node.firstChild;\n return node;\n}\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n root = 0;\n for (var nodeEnd; node; ) {\n if (3 === node.nodeType) {\n nodeEnd = root + node.textContent.length;\n if (root <= offset && nodeEnd >= offset)\n return { node: node, offset: offset - root };\n root = nodeEnd;\n }\n a: {\n for (; node; ) {\n if (node.nextSibling) {\n node = node.nextSibling;\n break a;\n }\n node = node.parentNode;\n }\n node = void 0;\n }\n node = getLeafNode(node);\n }\n}\nfunction containsNode(outerNode, innerNode) {\n return outerNode && innerNode\n ? outerNode === innerNode\n ? !0\n : outerNode && 3 === outerNode.nodeType\n ? !1\n : innerNode && 3 === innerNode.nodeType\n ? containsNode(outerNode, innerNode.parentNode)\n : \"contains\" in outerNode\n ? outerNode.contains(innerNode)\n : outerNode.compareDocumentPosition\n ? !!(outerNode.compareDocumentPosition(innerNode) & 16)\n : !1\n : !1;\n}\nfunction getActiveElementDeep(containerInfo) {\n containerInfo =\n null != containerInfo &&\n null != containerInfo.ownerDocument &&\n null != containerInfo.ownerDocument.defaultView\n ? containerInfo.ownerDocument.defaultView\n : window;\n for (\n var element = getActiveElement(containerInfo.document);\n element instanceof containerInfo.HTMLIFrameElement;\n\n ) {\n try {\n var JSCompiler_inline_result =\n \"string\" === typeof element.contentWindow.location.href;\n } catch (err) {\n JSCompiler_inline_result = !1;\n }\n if (JSCompiler_inline_result) containerInfo = element.contentWindow;\n else break;\n element = getActiveElement(containerInfo.document);\n }\n return element;\n}\nfunction hasSelectionCapabilities(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return (\n nodeName &&\n ((\"input\" === nodeName &&\n (\"text\" === elem.type ||\n \"search\" === elem.type ||\n \"tel\" === elem.type ||\n \"url\" === elem.type ||\n \"password\" === elem.type)) ||\n \"textarea\" === nodeName ||\n \"true\" === elem.contentEditable)\n );\n}\nvar skipSelectionChangeEvent =\n canUseDOM && \"documentMode\" in document && 11 >= document.documentMode,\n activeElement = null,\n activeElementInst = null,\n lastSelection = null,\n mouseDown = !1;\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n var doc =\n nativeEventTarget.window === nativeEventTarget\n ? nativeEventTarget.document\n : 9 === nativeEventTarget.nodeType\n ? nativeEventTarget\n : nativeEventTarget.ownerDocument;\n mouseDown ||\n null == activeElement ||\n activeElement !== getActiveElement(doc) ||\n ((doc = activeElement),\n \"selectionStart\" in doc && hasSelectionCapabilities(doc)\n ? (doc = { start: doc.selectionStart, end: doc.selectionEnd })\n : ((doc = (\n (doc.ownerDocument && doc.ownerDocument.defaultView) ||\n window\n ).getSelection()),\n (doc = {\n anchorNode: doc.anchorNode,\n anchorOffset: doc.anchorOffset,\n focusNode: doc.focusNode,\n focusOffset: doc.focusOffset\n })),\n (lastSelection && shallowEqual(lastSelection, doc)) ||\n ((lastSelection = doc),\n (doc = accumulateTwoPhaseListeners(activeElementInst, \"onSelect\")),\n 0 < doc.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onSelect\",\n \"select\",\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: doc }),\n (nativeEvent.target = activeElement))));\n}\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes[\"Webkit\" + styleProp] = \"webkit\" + eventName;\n prefixes[\"Moz\" + styleProp] = \"moz\" + eventName;\n return prefixes;\n}\nvar vendorPrefixes = {\n animationend: makePrefixMap(\"Animation\", \"AnimationEnd\"),\n animationiteration: makePrefixMap(\"Animation\", \"AnimationIteration\"),\n animationstart: makePrefixMap(\"Animation\", \"AnimationStart\"),\n transitionrun: makePrefixMap(\"Transition\", \"TransitionRun\"),\n transitionstart: makePrefixMap(\"Transition\", \"TransitionStart\"),\n transitioncancel: makePrefixMap(\"Transition\", \"TransitionCancel\"),\n transitionend: makePrefixMap(\"Transition\", \"TransitionEnd\")\n },\n prefixedEventNames = {},\n style = {};\ncanUseDOM &&\n ((style = document.createElement(\"div\").style),\n \"AnimationEvent\" in window ||\n (delete vendorPrefixes.animationend.animation,\n delete vendorPrefixes.animationiteration.animation,\n delete vendorPrefixes.animationstart.animation),\n \"TransitionEvent\" in window ||\n delete vendorPrefixes.transitionend.transition);\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) return prefixedEventNames[eventName];\n if (!vendorPrefixes[eventName]) return eventName;\n var prefixMap = vendorPrefixes[eventName],\n styleProp;\n for (styleProp in prefixMap)\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style)\n return (prefixedEventNames[eventName] = prefixMap[styleProp]);\n return eventName;\n}\nvar ANIMATION_END = getVendorPrefixedEventName(\"animationend\"),\n ANIMATION_ITERATION = getVendorPrefixedEventName(\"animationiteration\"),\n ANIMATION_START = getVendorPrefixedEventName(\"animationstart\"),\n TRANSITION_RUN = getVendorPrefixedEventName(\"transitionrun\"),\n TRANSITION_START = getVendorPrefixedEventName(\"transitionstart\"),\n TRANSITION_CANCEL = getVendorPrefixedEventName(\"transitioncancel\"),\n TRANSITION_END = getVendorPrefixedEventName(\"transitionend\"),\n topLevelEventsToReactNames = new Map(),\n simpleEventPluginEvents =\n \"abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error fullscreenChange fullscreenError gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\n \" \"\n );\nsimpleEventPluginEvents.push(\"scrollEnd\");\nfunction registerSimpleEvent(domEventName, reactName) {\n topLevelEventsToReactNames.set(domEventName, reactName);\n registerTwoPhaseEvent(reactName, [domEventName]);\n}\nvar globalClientIdCounter$1 = 0;\nfunction getViewTransitionName(props, instance) {\n if (null != props.name && \"auto\" !== props.name) return props.name;\n if (null !== instance.autoName) return instance.autoName;\n props = pendingEffectsRoot.identifierPrefix;\n var globalClientId = globalClientIdCounter$1++;\n props = \"_\" + props + \"t_\" + globalClientId.toString(32) + \"_\";\n return (instance.autoName = props);\n}\nfunction getClassNameByType(classByType) {\n if (null == classByType || \"string\" === typeof classByType)\n return classByType;\n var className = null,\n activeTypes = pendingTransitionTypes;\n if (null !== activeTypes)\n for (var i = 0; i < activeTypes.length; i++) {\n var match = classByType[activeTypes[i]];\n if (null != match) {\n if (\"none\" === match) return \"none\";\n className = null == className ? match : className + (\" \" + match);\n }\n }\n return null == className ? classByType.default : className;\n}\nfunction getViewTransitionClassName(defaultClass, eventClass) {\n defaultClass = getClassNameByType(defaultClass);\n eventClass = getClassNameByType(eventClass);\n return null == eventClass\n ? \"auto\" === defaultClass\n ? null\n : defaultClass\n : \"auto\" === eventClass\n ? null\n : eventClass;\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n concurrentQueues = [],\n concurrentQueuesIndex = 0,\n concurrentlyUpdatedLanes = 0;\nfunction finishQueueingConcurrentUpdates() {\n for (\n var endIndex = concurrentQueuesIndex,\n i = (concurrentlyUpdatedLanes = concurrentQueuesIndex = 0);\n i < endIndex;\n\n ) {\n var fiber = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var queue = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var update = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var lane = concurrentQueues[i];\n concurrentQueues[i++] = null;\n if (null !== queue && null !== update) {\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n }\n 0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);\n }\n}\nfunction enqueueUpdate$1(fiber, queue, update, lane) {\n concurrentQueues[concurrentQueuesIndex++] = fiber;\n concurrentQueues[concurrentQueuesIndex++] = queue;\n concurrentQueues[concurrentQueuesIndex++] = update;\n concurrentQueues[concurrentQueuesIndex++] = lane;\n concurrentlyUpdatedLanes |= lane;\n fiber.lanes |= lane;\n fiber = fiber.alternate;\n null !== fiber && (fiber.lanes |= lane);\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n enqueueUpdate$1(fiber, queue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n enqueueUpdate$1(fiber, null, null, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {\n sourceFiber.lanes |= lane;\n var alternate = sourceFiber.alternate;\n null !== alternate && (alternate.lanes |= lane);\n for (var isHidden = !1, parent = sourceFiber.return; null !== parent; )\n (parent.childLanes |= lane),\n (alternate = parent.alternate),\n null !== alternate && (alternate.childLanes |= lane),\n 22 === parent.tag &&\n ((sourceFiber = parent.stateNode),\n null === sourceFiber || sourceFiber._visibility & 1 || (isHidden = !0)),\n (sourceFiber = parent),\n (parent = parent.return);\n return 3 === sourceFiber.tag\n ? ((parent = sourceFiber.stateNode),\n isHidden &&\n null !== update &&\n ((isHidden = 31 - clz32(lane)),\n (sourceFiber = parent.hiddenUpdates),\n (alternate = sourceFiber[isHidden]),\n null === alternate\n ? (sourceFiber[isHidden] = [update])\n : alternate.push(update),\n (update.lane = lane | 536870912)),\n parent)\n : null;\n}\nfunction getRootForUpdatedFiber(sourceFiber) {\n if (50 < nestedUpdateCount)\n throw (\n ((nestedUpdateCount = 0),\n (rootWithNestedUpdates = null),\n Error(formatProdErrorMessage(185)))\n );\n for (var parent = sourceFiber.return; null !== parent; )\n (sourceFiber = parent), (parent = sourceFiber.return);\n return 3 === sourceFiber.tag ? sourceFiber.stateNode : null;\n}\nvar emptyContextObject = {};\nfunction FiberNode(tag, pendingProps, key, mode) {\n this.tag = tag;\n this.key = key;\n this.sibling =\n this.child =\n this.return =\n this.stateNode =\n this.type =\n this.elementType =\n null;\n this.index = 0;\n this.refCleanup = this.ref = null;\n this.pendingProps = pendingProps;\n this.dependencies =\n this.memoizedState =\n this.updateQueue =\n this.memoizedProps =\n null;\n this.mode = mode;\n this.subtreeFlags = this.flags = 0;\n this.deletions = null;\n this.childLanes = this.lanes = 0;\n this.alternate = null;\n}\nfunction createFiberImplClass(tag, pendingProps, key, mode) {\n return new FiberNode(tag, pendingProps, key, mode);\n}\nfunction shouldConstruct(Component) {\n Component = Component.prototype;\n return !(!Component || !Component.isReactComponent);\n}\nfunction createWorkInProgress(current, pendingProps) {\n var workInProgress = current.alternate;\n null === workInProgress\n ? ((workInProgress = createFiberImplClass(\n current.tag,\n pendingProps,\n current.key,\n current.mode\n )),\n (workInProgress.elementType = current.elementType),\n (workInProgress.type = current.type),\n (workInProgress.stateNode = current.stateNode),\n (workInProgress.alternate = current),\n (current.alternate = workInProgress))\n : ((workInProgress.pendingProps = pendingProps),\n (workInProgress.type = current.type),\n (workInProgress.flags = 0),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null));\n workInProgress.flags = current.flags & 1206910976;\n workInProgress.childLanes = current.childLanes;\n workInProgress.lanes = current.lanes;\n workInProgress.child = current.child;\n workInProgress.memoizedProps = current.memoizedProps;\n workInProgress.memoizedState = current.memoizedState;\n workInProgress.updateQueue = current.updateQueue;\n pendingProps = current.dependencies;\n workInProgress.dependencies =\n null === pendingProps\n ? null\n : { lanes: pendingProps.lanes, firstContext: pendingProps.firstContext };\n workInProgress.sibling = current.sibling;\n workInProgress.index = current.index;\n workInProgress.ref = current.ref;\n workInProgress.refCleanup = current.refCleanup;\n return workInProgress;\n}\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n workInProgress.flags &= 1206910978;\n var current = workInProgress.alternate;\n null === current\n ? ((workInProgress.childLanes = 0),\n (workInProgress.lanes = renderLanes),\n (workInProgress.child = null),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.memoizedProps = null),\n (workInProgress.memoizedState = null),\n (workInProgress.updateQueue = null),\n (workInProgress.dependencies = null),\n (workInProgress.stateNode = null))\n : ((workInProgress.childLanes = current.childLanes),\n (workInProgress.lanes = current.lanes),\n (workInProgress.child = current.child),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null),\n (workInProgress.memoizedProps = current.memoizedProps),\n (workInProgress.memoizedState = current.memoizedState),\n (workInProgress.updateQueue = current.updateQueue),\n (workInProgress.type = current.type),\n (renderLanes = current.dependencies),\n (workInProgress.dependencies =\n null === renderLanes\n ? null\n : {\n lanes: renderLanes.lanes,\n firstContext: renderLanes.firstContext\n }));\n return workInProgress;\n}\nfunction createFiberFromTypeAndProps(\n type,\n key,\n pendingProps,\n owner,\n mode,\n lanes\n) {\n var fiberTag = 0;\n owner = type;\n if (\"function\" === typeof owner) shouldConstruct(owner) && (fiberTag = 1);\n else if (\"string\" === typeof owner)\n fiberTag = isHostHoistableType(\n type,\n pendingProps,\n contextStackCursor.current\n )\n ? 26\n : \"html\" === type || \"head\" === type || \"body\" === type\n ? 27\n : 5;\n else\n a: switch (owner) {\n case REACT_ACTIVITY_TYPE:\n return (\n (type = createFiberImplClass(31, pendingProps, key, mode)),\n (type.elementType = REACT_ACTIVITY_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_FRAGMENT_TYPE:\n return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n case REACT_STRICT_MODE_TYPE:\n fiberTag = 8;\n mode |= 24;\n break;\n case REACT_PROFILER_TYPE:\n return (\n (type = createFiberImplClass(12, pendingProps, key, mode | 2)),\n (type.elementType = REACT_PROFILER_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_TYPE:\n return (\n (type = createFiberImplClass(13, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_LIST_TYPE:\n return (\n (type = createFiberImplClass(19, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_LIST_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_LEGACY_HIDDEN_TYPE:\n case REACT_VIEW_TRANSITION_TYPE:\n return (\n (type = mode | 32),\n (type = createFiberImplClass(30, pendingProps, key, type)),\n (type.elementType = REACT_VIEW_TRANSITION_TYPE),\n (type.lanes = lanes),\n (type.stateNode = {\n autoName: null,\n paired: null,\n clones: null,\n ref: null\n }),\n type\n );\n default:\n if (\"object\" === typeof owner && null !== owner)\n switch (owner.$$typeof) {\n case REACT_CONTEXT_TYPE:\n fiberTag = 10;\n break a;\n case REACT_CONSUMER_TYPE:\n fiberTag = 9;\n break a;\n case REACT_FORWARD_REF_TYPE:\n fiberTag = 11;\n break a;\n case REACT_MEMO_TYPE:\n fiberTag = 14;\n break a;\n case REACT_LAZY_TYPE:\n fiberTag = 16;\n owner = null;\n break a;\n }\n fiberTag = 29;\n pendingProps = Error(\n formatProdErrorMessage(130, null === type ? \"null\" : typeof type, \"\")\n );\n owner = null;\n }\n key = createFiberImplClass(fiberTag, pendingProps, key, mode);\n key.elementType = type;\n key.type = owner;\n key.lanes = lanes;\n return key;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n elements = createFiberImplClass(7, elements, key, mode);\n elements.lanes = lanes;\n return elements;\n}\nfunction createFiberFromText(content, mode, lanes) {\n content = createFiberImplClass(6, content, null, mode);\n content.lanes = lanes;\n return content;\n}\nfunction createFiberFromDehydratedFragment(dehydratedNode) {\n var fiber = createFiberImplClass(18, null, null, 0);\n fiber.stateNode = dehydratedNode;\n return fiber;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n mode = createFiberImplClass(\n 4,\n null !== portal.children ? portal.children : [],\n portal.key,\n mode\n );\n mode.lanes = lanes;\n mode.stateNode = {\n containerInfo: portal.containerInfo,\n pendingChildren: null,\n implementation: portal.implementation\n };\n return mode;\n}\nvar CapturedStacks = new WeakMap();\nfunction createCapturedValueAtFiber(value, source) {\n if (\"object\" === typeof value && null !== value) {\n var existing = CapturedStacks.get(value);\n if (void 0 !== existing) return existing;\n source = {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n CapturedStacks.set(value, source);\n return source;\n }\n return {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n}\nvar forkStack = [],\n forkStackIndex = 0,\n treeForkProvider = null,\n treeForkCount = 0,\n idStack = [],\n idStackIndex = 0,\n treeContextProvider = null,\n treeContextId = 1,\n treeContextOverflow = \"\";\nfunction pushTreeFork(workInProgress, totalChildren) {\n forkStack[forkStackIndex++] = treeForkCount;\n forkStack[forkStackIndex++] = treeForkProvider;\n treeForkProvider = workInProgress;\n treeForkCount = totalChildren;\n}\nfunction pushTreeId(workInProgress, totalChildren, index) {\n idStack[idStackIndex++] = treeContextId;\n idStack[idStackIndex++] = treeContextOverflow;\n idStack[idStackIndex++] = treeContextProvider;\n treeContextProvider = workInProgress;\n var baseIdWithLeadingBit = treeContextId;\n workInProgress = treeContextOverflow;\n var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;\n baseIdWithLeadingBit &= ~(1 << baseLength);\n index += 1;\n var length = 32 - clz32(totalChildren) + baseLength;\n if (30 < length) {\n var numberOfOverflowBits = baseLength - (baseLength % 5);\n length = (\n baseIdWithLeadingBit &\n ((1 << numberOfOverflowBits) - 1)\n ).toString(32);\n baseIdWithLeadingBit >>= numberOfOverflowBits;\n baseLength -= numberOfOverflowBits;\n treeContextId =\n (1 << (32 - clz32(totalChildren) + baseLength)) |\n (index << baseLength) |\n baseIdWithLeadingBit;\n treeContextOverflow = length + workInProgress;\n } else\n (treeContextId =\n (1 << length) | (index << baseLength) | baseIdWithLeadingBit),\n (treeContextOverflow = workInProgress);\n}\nfunction pushMaterializedTreeId(workInProgress) {\n null !== workInProgress.return &&\n (pushTreeFork(workInProgress, 1), pushTreeId(workInProgress, 1, 0));\n}\nfunction popTreeContext(workInProgress) {\n for (; workInProgress === treeForkProvider; )\n (treeForkProvider = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null),\n (treeForkCount = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null);\n for (; workInProgress === treeContextProvider; )\n (treeContextProvider = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null),\n (treeContextOverflow = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null),\n (treeContextId = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null);\n}\nfunction restoreSuspendedTreeContext(workInProgress, suspendedContext) {\n idStack[idStackIndex++] = treeContextId;\n idStack[idStackIndex++] = treeContextOverflow;\n idStack[idStackIndex++] = treeContextProvider;\n treeContextId = suspendedContext.id;\n treeContextOverflow = suspendedContext.overflow;\n treeContextProvider = workInProgress;\n}\nvar hydrationParentFiber = null,\n nextHydratableInstance = null,\n isHydrating = !1,\n hydrationErrors = null,\n rootOrSingletonContext = !1,\n HydrationMismatchException = Error(formatProdErrorMessage(519));\nfunction throwOnHydrationMismatch(fiber) {\n var error = Error(\n formatProdErrorMessage(\n 418,\n 1 < arguments.length && void 0 !== arguments[1] && arguments[1]\n ? \"text\"\n : \"HTML\",\n \"\"\n )\n );\n queueHydrationError(createCapturedValueAtFiber(error, fiber));\n throw HydrationMismatchException;\n}\nfunction prepareToHydrateHostInstance(fiber) {\n var instance = fiber.stateNode,\n type = fiber.type,\n props = fiber.memoizedProps;\n instance[internalInstanceKey] = fiber;\n instance[internalPropsKey] = props;\n switch (type) {\n case \"dialog\":\n listenToNonDelegatedEvent(\"cancel\", instance);\n listenToNonDelegatedEvent(\"close\", instance);\n break;\n case \"iframe\":\n case \"object\":\n case \"embed\":\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"video\":\n case \"audio\":\n for (type = 0; type < mediaEventTypes.length; type++)\n listenToNonDelegatedEvent(mediaEventTypes[type], instance);\n break;\n case \"source\":\n listenToNonDelegatedEvent(\"error\", instance);\n break;\n case \"img\":\n case \"image\":\n case \"link\":\n listenToNonDelegatedEvent(\"error\", instance);\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"details\":\n listenToNonDelegatedEvent(\"toggle\", instance);\n break;\n case \"input\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n initInput(\n instance,\n props.value,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name,\n !0\n );\n break;\n case \"select\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n break;\n case \"textarea\":\n listenToNonDelegatedEvent(\"invalid\", instance),\n initTextarea(instance, props.value, props.defaultValue, props.children);\n }\n type = props.children;\n (\"string\" !== typeof type &&\n \"number\" !== typeof type &&\n \"bigint\" !== typeof type) ||\n instance.textContent === \"\" + type ||\n !0 === props.suppressHydrationWarning ||\n checkForUnmatchedText(instance.textContent, type)\n ? (null != props.popover &&\n (listenToNonDelegatedEvent(\"beforetoggle\", instance),\n listenToNonDelegatedEvent(\"toggle\", instance)),\n null != props.onScroll && listenToNonDelegatedEvent(\"scroll\", instance),\n null != props.onScrollEnd &&\n listenToNonDelegatedEvent(\"scrollend\", instance),\n null != props.onClick && (instance.onclick = noop$1),\n (instance = !0))\n : (instance = !1);\n instance || throwOnHydrationMismatch(fiber, !0);\n}\nfunction popToNextHostParent(fiber) {\n for (hydrationParentFiber = fiber.return; hydrationParentFiber; )\n switch (hydrationParentFiber.tag) {\n case 5:\n case 31:\n case 13:\n rootOrSingletonContext = !1;\n return;\n case 27:\n case 3:\n rootOrSingletonContext = !0;\n return;\n default:\n hydrationParentFiber = hydrationParentFiber.return;\n }\n}\nfunction popHydrationState(fiber) {\n if (fiber !== hydrationParentFiber) return !1;\n if (!isHydrating) return popToNextHostParent(fiber), (isHydrating = !0), !1;\n var tag = fiber.tag,\n JSCompiler_temp;\n if ((JSCompiler_temp = 3 !== tag && 27 !== tag)) {\n if ((JSCompiler_temp = 5 === tag))\n (JSCompiler_temp = fiber.type),\n (JSCompiler_temp =\n !(\"form\" !== JSCompiler_temp && \"button\" !== JSCompiler_temp) ||\n shouldSetTextContent(fiber.type, fiber.memoizedProps));\n JSCompiler_temp = !JSCompiler_temp;\n }\n JSCompiler_temp && nextHydratableInstance && throwOnHydrationMismatch(fiber);\n popToNextHostParent(fiber);\n if (13 === tag) {\n fiber = fiber.memoizedState;\n fiber = null !== fiber ? fiber.dehydrated : null;\n if (!fiber) throw Error(formatProdErrorMessage(317));\n nextHydratableInstance =\n getNextHydratableInstanceAfterHydrationBoundary(fiber);\n } else if (31 === tag) {\n fiber = fiber.memoizedState;\n fiber = null !== fiber ? fiber.dehydrated : null;\n if (!fiber) throw Error(formatProdErrorMessage(317));\n nextHydratableInstance =\n getNextHydratableInstanceAfterHydrationBoundary(fiber);\n } else\n 27 === tag\n ? ((tag = nextHydratableInstance),\n isSingletonScope(fiber.type)\n ? ((fiber = previousHydratableOnEnteringScopedSingleton),\n (previousHydratableOnEnteringScopedSingleton = null),\n (nextHydratableInstance = fiber))\n : (nextHydratableInstance = tag))\n : (nextHydratableInstance = hydrationParentFiber\n ? getNextHydratable(fiber.stateNode.nextSibling)\n : null);\n return !0;\n}\nfunction resetHydrationState() {\n nextHydratableInstance = hydrationParentFiber = null;\n isHydrating = !1;\n}\nfunction upgradeHydrationErrorsToRecoverable() {\n var queuedErrors = hydrationErrors;\n null !== queuedErrors &&\n (null === workInProgressRootRecoverableErrors\n ? (workInProgressRootRecoverableErrors = queuedErrors)\n : workInProgressRootRecoverableErrors.push.apply(\n workInProgressRootRecoverableErrors,\n queuedErrors\n ),\n (hydrationErrors = null));\n return queuedErrors;\n}\nfunction queueHydrationError(error) {\n null === hydrationErrors\n ? (hydrationErrors = [error])\n : hydrationErrors.push(error);\n}\nvar valueCursor = createCursor(null),\n currentlyRenderingFiber$1 = null,\n lastContextDependency = null;\nfunction pushProvider(providerFiber, context, nextValue) {\n push(valueCursor, context._currentValue);\n context._currentValue = nextValue;\n}\nfunction popProvider(context) {\n context._currentValue = valueCursor.current;\n pop(valueCursor);\n}\nfunction scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {\n for (; null !== parent; ) {\n var alternate = parent.alternate;\n (parent.childLanes & renderLanes) !== renderLanes\n ? ((parent.childLanes |= renderLanes),\n null !== alternate && (alternate.childLanes |= renderLanes))\n : null !== alternate &&\n (alternate.childLanes & renderLanes) !== renderLanes &&\n (alternate.childLanes |= renderLanes);\n if (parent === propagationRoot) break;\n parent = parent.return;\n }\n}\nfunction propagateContextChanges(\n workInProgress,\n contexts,\n renderLanes,\n forcePropagateEntireTree\n) {\n var fiber = workInProgress.child;\n null !== fiber && (fiber.return = workInProgress);\n for (; null !== fiber; ) {\n var list = fiber.dependencies;\n if (null !== list) {\n var nextFiber = fiber.child;\n list = list.firstContext;\n a: for (; null !== list; ) {\n var dependency = list;\n list = fiber;\n for (var i = 0; i < contexts.length; i++)\n if (dependency.context === contexts[i]) {\n list.lanes |= renderLanes;\n dependency = list.alternate;\n null !== dependency && (dependency.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(\n list.return,\n renderLanes,\n workInProgress\n );\n forcePropagateEntireTree || (nextFiber = null);\n break a;\n }\n list = dependency.next;\n }\n } else if (18 === fiber.tag) {\n nextFiber = fiber.return;\n if (null === nextFiber) throw Error(formatProdErrorMessage(341));\n nextFiber.lanes |= renderLanes;\n list = nextFiber.alternate;\n null !== list && (list.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(nextFiber, renderLanes, workInProgress);\n nextFiber = null;\n } else\n 13 === fiber.tag &&\n null !== fiber.memoizedState &&\n null === fiber.memoizedState.dehydrated\n ? ((fiber.lanes |= renderLanes),\n (nextFiber = fiber.alternate),\n null !== nextFiber && (nextFiber.lanes |= renderLanes),\n scheduleContextWorkOnParentPath(\n fiber.return,\n renderLanes,\n workInProgress\n ),\n (nextFiber = fiber.child),\n (nextFiber = null !== nextFiber ? nextFiber.sibling : null))\n : (nextFiber = fiber.child);\n if (null !== nextFiber) nextFiber.return = fiber;\n else\n for (nextFiber = fiber; null !== nextFiber; ) {\n if (nextFiber === workInProgress) {\n nextFiber = null;\n break;\n }\n fiber = nextFiber.sibling;\n if (null !== fiber) {\n fiber.return = nextFiber.return;\n nextFiber = fiber;\n break;\n }\n nextFiber = nextFiber.return;\n }\n fiber = nextFiber;\n }\n}\nfunction propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n forcePropagateEntireTree\n) {\n current = null;\n for (\n var parent = workInProgress, isInsidePropagationBailout = !1;\n null !== parent;\n\n ) {\n if (!isInsidePropagationBailout)\n if (0 !== (parent.flags & 524288)) isInsidePropagationBailout = !0;\n else if (0 !== (parent.flags & 262144)) break;\n if (10 === parent.tag) {\n var currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent = currentParent.memoizedProps;\n if (null !== currentParent) {\n var context = parent.type;\n objectIs(parent.pendingProps.value, currentParent.value) ||\n (null !== current ? current.push(context) : (current = [context]));\n }\n } else if (parent === hostTransitionProviderCursor.current) {\n currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent.memoizedState.memoizedState !==\n parent.memoizedState.memoizedState &&\n (null !== current\n ? current.push(HostTransitionContext)\n : (current = [HostTransitionContext]));\n }\n parent = parent.return;\n }\n null !== current &&\n propagateContextChanges(\n workInProgress,\n current,\n renderLanes,\n forcePropagateEntireTree\n );\n workInProgress.flags |= 262144;\n return null !== current;\n}\nfunction checkIfContextChanged(currentDependencies) {\n for (\n currentDependencies = currentDependencies.firstContext;\n null !== currentDependencies;\n\n ) {\n if (\n !objectIs(\n currentDependencies.context._currentValue,\n currentDependencies.memoizedValue\n )\n )\n return !0;\n currentDependencies = currentDependencies.next;\n }\n return !1;\n}\nfunction prepareToReadContext(workInProgress) {\n currentlyRenderingFiber$1 = workInProgress;\n lastContextDependency = null;\n workInProgress = workInProgress.dependencies;\n null !== workInProgress && (workInProgress.firstContext = null);\n}\nfunction readContext(context) {\n return readContextForConsumer(currentlyRenderingFiber$1, context);\n}\nfunction readContextDuringReconciliation(consumer, context) {\n null === currentlyRenderingFiber$1 && prepareToReadContext(consumer);\n return readContextForConsumer(consumer, context);\n}\nfunction readContextForConsumer(consumer, context) {\n var value = context._currentValue;\n context = { context: context, memoizedValue: value, next: null };\n if (null === lastContextDependency) {\n if (null === consumer) throw Error(formatProdErrorMessage(308));\n lastContextDependency = context;\n consumer.dependencies = { lanes: 0, firstContext: context };\n consumer.flags |= 524288;\n } else lastContextDependency = lastContextDependency.next = context;\n return value;\n}\nvar AbortControllerLocal =\n \"undefined\" !== typeof AbortController\n ? AbortController\n : function () {\n var listeners = [],\n signal = (this.signal = {\n aborted: !1,\n addEventListener: function (type, listener) {\n listeners.push(listener);\n }\n });\n this.abort = function () {\n signal.aborted = !0;\n listeners.forEach(function (listener) {\n return listener();\n });\n };\n },\n scheduleCallback$2 = Scheduler.unstable_scheduleCallback,\n NormalPriority = Scheduler.unstable_NormalPriority,\n CacheContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n Consumer: null,\n Provider: null,\n _currentValue: null,\n _currentValue2: null,\n _threadCount: 0\n };\nfunction createCache() {\n return {\n controller: new AbortControllerLocal(),\n data: new Map(),\n refCount: 0\n };\n}\nfunction releaseCache(cache) {\n cache.refCount--;\n 0 === cache.refCount &&\n scheduleCallback$2(NormalPriority, function () {\n cache.controller.abort();\n });\n}\nfunction queueTransitionTypes(root, transitionTypes) {\n if (0 !== (root.pendingLanes & 4194048)) {\n var queued = root.transitionTypes;\n null === queued && (queued = root.transitionTypes = []);\n for (root = 0; root < transitionTypes.length; root++) {\n var transitionType = transitionTypes[root];\n -1 === queued.indexOf(transitionType) && queued.push(transitionType);\n }\n }\n}\nvar entangledTransitionTypes = null;\nfunction claimQueuedTransitionTypes(root) {\n var claimed = root.transitionTypes;\n root.transitionTypes = null;\n return claimed;\n}\nvar currentEntangledListeners = null,\n currentEntangledPendingCount = 0,\n currentEntangledLane = 0,\n currentEntangledActionThenable = null;\nfunction entangleAsyncAction(transition, thenable) {\n if (null === currentEntangledListeners) {\n var entangledListeners = (currentEntangledListeners = []);\n currentEntangledPendingCount = 0;\n currentEntangledLane = requestTransitionLane();\n currentEntangledActionThenable = {\n status: \"pending\",\n value: void 0,\n then: function (resolve) {\n entangledListeners.push(resolve);\n }\n };\n }\n currentEntangledPendingCount++;\n thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);\n return thenable;\n}\nfunction pingEngtangledActionScope() {\n if (\n 0 === --currentEntangledPendingCount &&\n ((entangledTransitionTypes = null), null !== currentEntangledListeners)\n ) {\n null !== currentEntangledActionThenable &&\n (currentEntangledActionThenable.status = \"fulfilled\");\n var listeners = currentEntangledListeners;\n currentEntangledListeners = null;\n currentEntangledLane = 0;\n currentEntangledActionThenable = null;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])();\n }\n}\nfunction chainThenableValue(thenable, result) {\n var listeners = [],\n thenableWithOverride = {\n status: \"pending\",\n value: null,\n reason: null,\n then: function (resolve) {\n listeners.push(resolve);\n }\n };\n thenable.then(\n function () {\n thenableWithOverride.status = \"fulfilled\";\n thenableWithOverride.value = result;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result);\n },\n function (error) {\n thenableWithOverride.status = \"rejected\";\n thenableWithOverride.reason = error;\n for (error = 0; error < listeners.length; error++)\n (0, listeners[error])(void 0);\n }\n );\n return thenableWithOverride;\n}\nvar prevOnStartTransitionFinish = ReactSharedInternals.S;\nReactSharedInternals.S = function (transition, returnValue) {\n globalMostRecentTransitionTime = now();\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n entangleAsyncAction(transition, returnValue);\n if (null !== entangledTransitionTypes)\n for (var root$28 = firstScheduledRoot; null !== root$28; )\n queueTransitionTypes(root$28, entangledTransitionTypes),\n (root$28 = root$28.next);\n root$28 = transition.types;\n if (null !== root$28) {\n for (var root$29 = firstScheduledRoot; null !== root$29; )\n queueTransitionTypes(root$29, root$28), (root$29 = root$29.next);\n if (0 !== currentEntangledLane) {\n root$29 = entangledTransitionTypes;\n null === root$29 && (root$29 = entangledTransitionTypes = []);\n for (var i = 0; i < root$28.length; i++) {\n var transitionType = root$28[i];\n -1 === root$29.indexOf(transitionType) && root$29.push(transitionType);\n }\n }\n }\n null !== prevOnStartTransitionFinish &&\n prevOnStartTransitionFinish(transition, returnValue);\n};\nvar resumedCache = createCursor(null);\nfunction peekCacheFromPool() {\n var cacheResumedFromPreviousRender = resumedCache.current;\n return null !== cacheResumedFromPreviousRender\n ? cacheResumedFromPreviousRender\n : workInProgressRoot.pooledCache;\n}\nfunction pushTransition(offscreenWorkInProgress, prevCachePool) {\n null === prevCachePool\n ? push(resumedCache, resumedCache.current)\n : push(resumedCache, prevCachePool.pool);\n}\nfunction getSuspendedCache() {\n var cacheFromPool = peekCacheFromPool();\n return null === cacheFromPool\n ? null\n : { parent: CacheContext._currentValue, pool: cacheFromPool };\n}\nvar SuspenseException = Error(formatProdErrorMessage(460)),\n SuspenseyCommitException = Error(formatProdErrorMessage(474)),\n SuspenseActionException = Error(formatProdErrorMessage(542)),\n noopSuspenseyCommitThenable = { then: function () {} };\nfunction isThenableResolved(thenable) {\n thenable = thenable.status;\n return \"fulfilled\" === thenable || \"rejected\" === thenable;\n}\nfunction trackUsedThenable(thenableState, thenable, index) {\n index = thenableState[index];\n void 0 === index\n ? thenableState.push(thenable)\n : index !== thenable && (thenable.then(noop$1, noop$1), (thenable = index));\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n thenableState = thenable.reason;\n checkIfUseWrappedInAsyncCatch(thenableState);\n if (void 0 === thenableState && !(\"reason\" in thenable))\n throw Error(formatProdErrorMessage(600));\n throw thenableState;\n default:\n if (\"string\" === typeof thenable.status) thenable.then(noop$1, noop$1);\n else {\n thenableState = workInProgressRoot;\n if (null !== thenableState && 100 < thenableState.shellSuspendCounter)\n throw Error(formatProdErrorMessage(482));\n thenableState = thenable;\n thenableState.status = \"pending\";\n thenableState.then(\n function (fulfilledValue) {\n if (\"pending\" === thenable.status) {\n var fulfilledThenable = thenable;\n fulfilledThenable.status = \"fulfilled\";\n fulfilledThenable.value = fulfilledValue;\n }\n },\n function (error) {\n if (\"pending\" === thenable.status) {\n var rejectedThenable = thenable;\n rejectedThenable.status = \"rejected\";\n rejectedThenable.reason = error;\n }\n }\n );\n }\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw (\n ((thenableState = thenable.reason),\n checkIfUseWrappedInAsyncCatch(thenableState),\n thenableState)\n );\n }\n suspendedThenable = thenable;\n throw SuspenseException;\n }\n}\nfunction resolveLazy(lazyType) {\n try {\n var init = lazyType._init;\n return init(lazyType._payload);\n } catch (x) {\n if (null !== x && \"object\" === typeof x && \"function\" === typeof x.then)\n throw ((suspendedThenable = x), SuspenseException);\n throw x;\n }\n}\nvar suspendedThenable = null;\nfunction getSuspendedThenable() {\n if (null === suspendedThenable) throw Error(formatProdErrorMessage(459));\n var thenable = suspendedThenable;\n suspendedThenable = null;\n return thenable;\n}\nfunction checkIfUseWrappedInAsyncCatch(rejectedReason) {\n if (\n rejectedReason === SuspenseException ||\n rejectedReason === SuspenseActionException\n )\n throw Error(formatProdErrorMessage(483));\n}\nvar thenableState$1 = null,\n thenableIndexCounter$1 = 0;\nfunction unwrapThenable(thenable) {\n var index = thenableIndexCounter$1;\n thenableIndexCounter$1 += 1;\n null === thenableState$1 && (thenableState$1 = []);\n return trackUsedThenable(thenableState$1, thenable, index);\n}\nfunction coerceRef(workInProgress, element) {\n element = element.props.ref;\n workInProgress.ref = void 0 !== element ? element : null;\n}\nfunction throwOnInvalidObjectTypeImpl(returnFiber, newChild) {\n if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)\n throw Error(formatProdErrorMessage(525));\n returnFiber = Object.prototype.toString.call(newChild);\n throw Error(\n formatProdErrorMessage(\n 31,\n \"[object Object]\" === returnFiber\n ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n : returnFiber\n )\n );\n}\nfunction createChildReconciler(shouldTrackSideEffects) {\n function deleteChild(returnFiber, childToDelete) {\n if (shouldTrackSideEffects) {\n var deletions = returnFiber.deletions;\n null === deletions\n ? ((returnFiber.deletions = [childToDelete]), (returnFiber.flags |= 16))\n : deletions.push(childToDelete);\n }\n }\n function deleteRemainingChildren(returnFiber, currentFirstChild) {\n if (!shouldTrackSideEffects) return null;\n for (; null !== currentFirstChild; )\n deleteChild(returnFiber, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return null;\n }\n function mapRemainingChildren(currentFirstChild) {\n for (var existingChildren = new Map(); null !== currentFirstChild; )\n null === currentFirstChild.key\n ? existingChildren.set(currentFirstChild.index, currentFirstChild)\n : existingChildren.set(currentFirstChild.key, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return existingChildren;\n }\n function useFiber(fiber, pendingProps) {\n fiber = createWorkInProgress(fiber, pendingProps);\n fiber.index = 0;\n fiber.sibling = null;\n return fiber;\n }\n function placeChild(newFiber, lastPlacedIndex, newIndex) {\n newFiber.index = newIndex;\n if (!shouldTrackSideEffects)\n return (newFiber.flags |= 1048576), lastPlacedIndex;\n newIndex = newFiber.alternate;\n if (null !== newIndex)\n return (\n (newIndex = newIndex.index),\n newIndex < lastPlacedIndex\n ? ((newFiber.flags |= 2), lastPlacedIndex)\n : newIndex\n );\n newFiber.flags |= 134217730;\n return lastPlacedIndex;\n }\n function placeSingleChild(newFiber) {\n shouldTrackSideEffects &&\n null === newFiber.alternate &&\n (newFiber.flags |= 134217730);\n return newFiber;\n }\n function updateTextNode(returnFiber, current, textContent, lanes) {\n if (null === current || 6 !== current.tag)\n return (\n (current = createFiberFromText(textContent, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, textContent);\n current.return = returnFiber;\n return current;\n }\n function updateElement(returnFiber, current, element, lanes) {\n var elementType = element.type;\n if (elementType === REACT_FRAGMENT_TYPE)\n return (\n (returnFiber = updateFragment(\n returnFiber,\n current,\n element.props.children,\n lanes,\n element.key\n )),\n coerceRef(returnFiber, element),\n returnFiber\n );\n if (\n null !== current &&\n (current.elementType === elementType ||\n (\"object\" === typeof elementType &&\n null !== elementType &&\n elementType.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(elementType) === current.type))\n )\n return (\n (current = useFiber(current, element.props)),\n coerceRef(current, element),\n (current.return = returnFiber),\n current\n );\n current = createFiberFromTypeAndProps(\n element.type,\n element.key,\n element.props,\n null,\n returnFiber.mode,\n lanes\n );\n coerceRef(current, element);\n current.return = returnFiber;\n return current;\n }\n function updatePortal(returnFiber, current, portal, lanes) {\n if (\n null === current ||\n 4 !== current.tag ||\n current.stateNode.containerInfo !== portal.containerInfo ||\n current.stateNode.implementation !== portal.implementation\n )\n return (\n (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, portal.children || []);\n current.return = returnFiber;\n return current;\n }\n function updateFragment(returnFiber, current, fragment, lanes, key) {\n if (null === current || 7 !== current.tag)\n return (\n (current = createFiberFromFragment(\n fragment,\n returnFiber.mode,\n lanes,\n key\n )),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, fragment);\n current.return = returnFiber;\n return current;\n }\n function createChild(returnFiber, newChild, lanes) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (newChild = createFiberFromText(\n \"\" + newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n lanes\n );\n case REACT_PORTAL_TYPE:\n return (\n (newChild = createFiberFromPortal(\n newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n createChild(returnFiber, newChild, lanes)\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return (\n (newChild = createFiberFromFragment(\n newChild,\n returnFiber.mode,\n lanes,\n null\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"function\" === typeof newChild.then)\n return createChild(returnFiber, unwrapThenable(newChild), lanes);\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return createChild(\n returnFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n var key = null !== oldFiber ? oldFiber.key : null;\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return null !== key\n ? null\n : updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return newChild.key === key\n ? updateElement(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_PORTAL_TYPE:\n return newChild.key === key\n ? updatePortal(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n updateSlot(returnFiber, oldFiber, newChild, lanes)\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return null !== key\n ? null\n : updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n if (\"function\" === typeof newChild.then)\n return updateSlot(\n returnFiber,\n oldFiber,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateSlot(\n returnFiber,\n oldFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n ) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateTextNode(returnFiber, existingChildren, \"\" + newChild, lanes)\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updateElement(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_PORTAL_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updatePortal(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n )\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateFragment(returnFiber, existingChildren, newChild, lanes, null)\n );\n if (\"function\" === typeof newChild.then)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null;\n null !== oldFiber && newIdx < newChildren.length;\n newIdx++\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(\n returnFiber,\n oldFiber,\n newChildren[newIdx],\n lanes\n );\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (newIdx === newChildren.length)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; newIdx < newChildren.length; newIdx++)\n (oldFiber = createChild(returnFiber, newChildren[newIdx], lanes)),\n null !== oldFiber &&\n ((currentFirstChild = placeChild(\n oldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = oldFiber)\n : (previousNewFiber.sibling = oldFiber),\n (previousNewFiber = oldFiber));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n newIdx < newChildren.length;\n newIdx++\n )\n (nextOldFiber = updateFromMap(\n oldFiber,\n returnFiber,\n newIdx,\n newChildren[newIdx],\n lanes\n )),\n null !== nextOldFiber &&\n (shouldTrackSideEffects &&\n ((newFiber = nextOldFiber.alternate),\n null !== newFiber &&\n oldFiber.delete(null === newFiber.key ? newIdx : newFiber.key)),\n (currentFirstChild = placeChild(\n nextOldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = nextOldFiber)\n : (previousNewFiber.sibling = nextOldFiber),\n (previousNewFiber = nextOldFiber));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n if (null == newChildren) throw Error(formatProdErrorMessage(151));\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null,\n step = newChildren.next();\n null !== oldFiber && !step.done;\n newIdx++, step = newChildren.next()\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (step.done)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; !step.done; newIdx++, step = newChildren.next())\n (step = createChild(returnFiber, step.value, lanes)),\n null !== step &&\n ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n !step.done;\n newIdx++, step = newChildren.next()\n )\n (step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, lanes)),\n null !== step &&\n (shouldTrackSideEffects &&\n ((nextOldFiber = step.alternate),\n null !== nextOldFiber &&\n oldFiber.delete(\n null === nextOldFiber.key ? newIdx : nextOldFiber.key\n )),\n (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n ) {\n \"object\" === typeof newChild &&\n null !== newChild &&\n newChild.type === REACT_FRAGMENT_TYPE &&\n null === newChild.key &&\n void 0 === newChild.props.ref &&\n (newChild = newChild.props.children);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n a: {\n for (var key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key) {\n key = newChild.type;\n if (key === REACT_FRAGMENT_TYPE) {\n if (7 === currentFirstChild.tag) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(\n currentFirstChild,\n newChild.props.children\n );\n coerceRef(lanes, newChild);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n } else if (\n currentFirstChild.elementType === key ||\n (\"object\" === typeof key &&\n null !== key &&\n key.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(key) === currentFirstChild.type)\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.props);\n coerceRef(lanes, newChild);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n } else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n newChild.type === REACT_FRAGMENT_TYPE\n ? ((lanes = createFiberFromFragment(\n newChild.props.children,\n returnFiber.mode,\n lanes,\n newChild.key\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : ((lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n (returnFiber = lanes));\n }\n return placeSingleChild(returnFiber);\n case REACT_PORTAL_TYPE:\n a: {\n for (key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key)\n if (\n 4 === currentFirstChild.tag &&\n currentFirstChild.stateNode.containerInfo ===\n newChild.containerInfo &&\n currentFirstChild.stateNode.implementation ===\n newChild.implementation\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.children || []);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n } else {\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n }\n else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n lanes = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n lanes.return = returnFiber;\n returnFiber = lanes;\n }\n return placeSingleChild(returnFiber);\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n )\n );\n }\n if (isArrayImpl(newChild))\n return reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n if (getIteratorFn(newChild)) {\n key = getIteratorFn(newChild);\n if (\"function\" !== typeof key) throw Error(formatProdErrorMessage(150));\n newChild = key.call(newChild);\n return reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n }\n if (\"function\" === typeof newChild.then)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n ? ((newChild = \"\" + newChild),\n null !== currentFirstChild && 6 === currentFirstChild.tag\n ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n (lanes = useFiber(currentFirstChild, newChild)),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : (deleteRemainingChildren(returnFiber, currentFirstChild),\n (lanes = createFiberFromText(newChild, returnFiber.mode, lanes)),\n (lanes.return = returnFiber),\n (returnFiber = lanes)),\n placeSingleChild(returnFiber))\n : deleteRemainingChildren(returnFiber, currentFirstChild);\n }\n return function (returnFiber, currentFirstChild, newChild, lanes) {\n try {\n thenableIndexCounter$1 = 0;\n var firstChildFiber = reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n thenableState$1 = null;\n return firstChildFiber;\n } catch (x) {\n if (x === SuspenseException || x === SuspenseActionException) throw x;\n var fiber = createFiberImplClass(29, x, null, returnFiber.mode);\n fiber.lanes = lanes;\n fiber.return = returnFiber;\n return fiber;\n } finally {\n }\n };\n}\nvar reconcileChildFibers = createChildReconciler(!0),\n mountChildFibers = createChildReconciler(!1),\n hasForceUpdate = !1;\nfunction initializeUpdateQueue(fiber) {\n fiber.updateQueue = {\n baseState: fiber.memoizedState,\n firstBaseUpdate: null,\n lastBaseUpdate: null,\n shared: { pending: null, lanes: 0, hiddenCallbacks: null },\n callbacks: null\n };\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n current = current.updateQueue;\n workInProgress.updateQueue === current &&\n (workInProgress.updateQueue = {\n baseState: current.baseState,\n firstBaseUpdate: current.firstBaseUpdate,\n lastBaseUpdate: current.lastBaseUpdate,\n shared: current.shared,\n callbacks: null\n });\n}\nfunction createUpdate(lane) {\n return { lane: lane, tag: 0, payload: null, callback: null, next: null };\n}\nfunction enqueueUpdate(fiber, update, lane) {\n var updateQueue = fiber.updateQueue;\n if (null === updateQueue) return null;\n updateQueue = updateQueue.shared;\n if (0 !== (executionContext & 2)) {\n var pending = updateQueue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n updateQueue.pending = update;\n update = getRootForUpdatedFiber(fiber);\n markUpdateLaneFromFiberToRoot(fiber, null, lane);\n return update;\n }\n enqueueUpdate$1(fiber, updateQueue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction entangleTransitions(root, fiber, lane) {\n fiber = fiber.updateQueue;\n if (null !== fiber && ((fiber = fiber.shared), 0 !== (lane & 4194048))) {\n var queueLanes = fiber.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n fiber.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n var queue = workInProgress.updateQueue,\n current = workInProgress.alternate;\n if (\n null !== current &&\n ((current = current.updateQueue), queue === current)\n ) {\n var newFirst = null,\n newLast = null;\n queue = queue.firstBaseUpdate;\n if (null !== queue) {\n do {\n var clone = {\n lane: queue.lane,\n tag: queue.tag,\n payload: queue.payload,\n callback: null,\n next: null\n };\n null === newLast\n ? (newFirst = newLast = clone)\n : (newLast = newLast.next = clone);\n queue = queue.next;\n } while (null !== queue);\n null === newLast\n ? (newFirst = newLast = capturedUpdate)\n : (newLast = newLast.next = capturedUpdate);\n } else newFirst = newLast = capturedUpdate;\n queue = {\n baseState: current.baseState,\n firstBaseUpdate: newFirst,\n lastBaseUpdate: newLast,\n shared: current.shared,\n callbacks: current.callbacks\n };\n workInProgress.updateQueue = queue;\n return;\n }\n workInProgress = queue.lastBaseUpdate;\n null === workInProgress\n ? (queue.firstBaseUpdate = capturedUpdate)\n : (workInProgress.next = capturedUpdate);\n queue.lastBaseUpdate = capturedUpdate;\n}\nvar didReadFromEntangledAsyncAction = !1;\nfunction suspendIfUpdateReadFromEntangledAsyncAction() {\n if (didReadFromEntangledAsyncAction) {\n var entangledActionThenable = currentEntangledActionThenable;\n if (null !== entangledActionThenable) throw entangledActionThenable;\n }\n}\nfunction processUpdateQueue(\n workInProgress$jscomp$0,\n props,\n instance$jscomp$0,\n renderLanes\n) {\n didReadFromEntangledAsyncAction = !1;\n var queue = workInProgress$jscomp$0.updateQueue;\n hasForceUpdate = !1;\n var firstBaseUpdate = queue.firstBaseUpdate,\n lastBaseUpdate = queue.lastBaseUpdate,\n pendingQueue = queue.shared.pending;\n if (null !== pendingQueue) {\n queue.shared.pending = null;\n var lastPendingUpdate = pendingQueue,\n firstPendingUpdate = lastPendingUpdate.next;\n lastPendingUpdate.next = null;\n null === lastBaseUpdate\n ? (firstBaseUpdate = firstPendingUpdate)\n : (lastBaseUpdate.next = firstPendingUpdate);\n lastBaseUpdate = lastPendingUpdate;\n var current = workInProgress$jscomp$0.alternate;\n null !== current &&\n ((current = current.updateQueue),\n (pendingQueue = current.lastBaseUpdate),\n pendingQueue !== lastBaseUpdate &&\n (null === pendingQueue\n ? (current.firstBaseUpdate = firstPendingUpdate)\n : (pendingQueue.next = firstPendingUpdate),\n (current.lastBaseUpdate = lastPendingUpdate)));\n }\n if (null !== firstBaseUpdate) {\n var newState = queue.baseState;\n lastBaseUpdate = 0;\n current = firstPendingUpdate = lastPendingUpdate = null;\n pendingQueue = firstBaseUpdate;\n do {\n var updateLane = pendingQueue.lane & -536870913,\n isHiddenUpdate = updateLane !== pendingQueue.lane;\n if (\n isHiddenUpdate\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n 0 !== updateLane &&\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction = !0);\n null !== current &&\n (current = current.next =\n {\n lane: 0,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: null,\n next: null\n });\n a: {\n var workInProgress = workInProgress$jscomp$0,\n update = pendingQueue;\n updateLane = props;\n var instance = instance$jscomp$0;\n switch (update.tag) {\n case 1:\n workInProgress = update.payload;\n if (\"function\" === typeof workInProgress) {\n newState = workInProgress.call(instance, newState, updateLane);\n break a;\n }\n newState = workInProgress;\n break a;\n case 3:\n workInProgress.flags = (workInProgress.flags & -65537) | 128;\n case 0:\n workInProgress = update.payload;\n updateLane =\n \"function\" === typeof workInProgress\n ? workInProgress.call(instance, newState, updateLane)\n : workInProgress;\n if (null === updateLane || void 0 === updateLane) break a;\n newState = assign({}, newState, updateLane);\n break a;\n case 2:\n hasForceUpdate = !0;\n }\n }\n updateLane = pendingQueue.callback;\n null !== updateLane &&\n ((workInProgress$jscomp$0.flags |= 64),\n isHiddenUpdate && (workInProgress$jscomp$0.flags |= 8192),\n (isHiddenUpdate = queue.callbacks),\n null === isHiddenUpdate\n ? (queue.callbacks = [updateLane])\n : isHiddenUpdate.push(updateLane));\n } else\n (isHiddenUpdate = {\n lane: updateLane,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: pendingQueue.callback,\n next: null\n }),\n null === current\n ? ((firstPendingUpdate = current = isHiddenUpdate),\n (lastPendingUpdate = newState))\n : (current = current.next = isHiddenUpdate),\n (lastBaseUpdate |= updateLane);\n pendingQueue = pendingQueue.next;\n if (null === pendingQueue)\n if (((pendingQueue = queue.shared.pending), null === pendingQueue))\n break;\n else\n (isHiddenUpdate = pendingQueue),\n (pendingQueue = isHiddenUpdate.next),\n (isHiddenUpdate.next = null),\n (queue.lastBaseUpdate = isHiddenUpdate),\n (queue.shared.pending = null);\n } while (1);\n null === current && (lastPendingUpdate = newState);\n queue.baseState = lastPendingUpdate;\n queue.firstBaseUpdate = firstPendingUpdate;\n queue.lastBaseUpdate = current;\n null === firstBaseUpdate && (queue.shared.lanes = 0);\n workInProgressRootSkippedLanes |= lastBaseUpdate;\n workInProgress$jscomp$0.lanes = lastBaseUpdate;\n workInProgress$jscomp$0.memoizedState = newState;\n }\n}\nfunction callCallback(callback, context) {\n if (\"function\" !== typeof callback)\n throw Error(formatProdErrorMessage(191, callback));\n callback.call(context);\n}\nfunction commitCallbacks(updateQueue, context) {\n var callbacks = updateQueue.callbacks;\n if (null !== callbacks)\n for (\n updateQueue.callbacks = null, updateQueue = 0;\n updateQueue < callbacks.length;\n updateQueue++\n )\n callCallback(callbacks[updateQueue], context);\n}\nvar currentTreeHiddenStackCursor = createCursor(null),\n prevEntangledRenderLanesCursor = createCursor(0);\nfunction pushHiddenContext(fiber, context) {\n fiber = entangledRenderLanes;\n push(prevEntangledRenderLanesCursor, fiber);\n push(currentTreeHiddenStackCursor, context);\n entangledRenderLanes = fiber | context.baseLanes;\n}\nfunction reuseHiddenContextOnStack() {\n push(prevEntangledRenderLanesCursor, entangledRenderLanes);\n push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);\n}\nfunction popHiddenContext() {\n entangledRenderLanes = prevEntangledRenderLanesCursor.current;\n pop(currentTreeHiddenStackCursor);\n pop(prevEntangledRenderLanesCursor);\n}\nvar suspenseHandlerStackCursor = createCursor(null),\n shellBoundary = null;\nfunction pushPrimaryTreeSuspenseHandler(handler) {\n var current = handler.alternate;\n push(suspenseStackCursor, suspenseStackCursor.current & 1);\n push(suspenseHandlerStackCursor, handler);\n null === shellBoundary &&\n (null === current || null !== currentTreeHiddenStackCursor.current\n ? (shellBoundary = handler)\n : null !== current.memoizedState && (shellBoundary = handler));\n}\nfunction pushDehydratedActivitySuspenseHandler(fiber) {\n push(suspenseStackCursor, suspenseStackCursor.current);\n push(suspenseHandlerStackCursor, fiber);\n null === shellBoundary && (shellBoundary = fiber);\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n 22 === fiber.tag\n ? (push(suspenseStackCursor, suspenseStackCursor.current),\n push(suspenseHandlerStackCursor, fiber),\n null === shellBoundary && (shellBoundary = fiber))\n : reuseSuspenseHandlerOnStack();\n}\nfunction reuseSuspenseHandlerOnStack() {\n push(suspenseStackCursor, suspenseStackCursor.current);\n push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n}\nfunction popSuspenseHandler(fiber) {\n pop(suspenseHandlerStackCursor);\n shellBoundary === fiber && (shellBoundary = null);\n pop(suspenseStackCursor);\n}\nvar suspenseStackCursor = createCursor(0);\nfunction pushSuspenseListContext(fiber, newContext) {\n push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n push(suspenseStackCursor, newContext);\n}\nfunction popSuspenseListContext(fiber) {\n pop(suspenseStackCursor);\n pop(suspenseHandlerStackCursor);\n shellBoundary === fiber && (shellBoundary = null);\n}\nfunction findFirstSuspended(row) {\n for (var node = row; null !== node; ) {\n if (13 === node.tag) {\n var state = node.memoizedState;\n if (\n null !== state &&\n ((state = state.dehydrated),\n null === state ||\n isSuspenseInstancePending(state) ||\n isSuspenseInstanceFallback(state))\n )\n return node;\n } else if (\n 19 === node.tag &&\n \"independent\" !== node.memoizedProps.revealOrder\n ) {\n if (0 !== (node.flags & 128)) return node;\n } else if (null !== node.child) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n if (node === row) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === row) return null;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n return null;\n}\nvar renderLanes = 0,\n currentlyRenderingFiber = null,\n currentHook = null,\n workInProgressHook = null,\n didScheduleRenderPhaseUpdate = !1,\n didScheduleRenderPhaseUpdateDuringThisPass = !1,\n shouldDoubleInvokeUserFnsInHooksDEV = !1,\n localIdCounter = 0,\n thenableIndexCounter = 0,\n thenableState = null,\n globalClientIdCounter = 0;\nfunction throwInvalidHookError() {\n throw Error(formatProdErrorMessage(321));\n}\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n if (null === prevDeps) return !1;\n for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)\n if (!objectIs(nextDeps[i], prevDeps[i])) return !1;\n return !0;\n}\nfunction renderWithHooks(\n current,\n workInProgress,\n Component,\n props,\n secondArg,\n nextRenderLanes\n) {\n renderLanes = nextRenderLanes;\n currentlyRenderingFiber = workInProgress;\n workInProgress.memoizedState = null;\n workInProgress.updateQueue = null;\n workInProgress.lanes = 0;\n ReactSharedInternals.H =\n null === current || null === current.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate;\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n nextRenderLanes = Component(props, secondArg);\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n didScheduleRenderPhaseUpdateDuringThisPass &&\n (nextRenderLanes = renderWithHooksAgain(\n workInProgress,\n Component,\n props,\n secondArg\n ));\n finishRenderingHooks(current);\n return nextRenderLanes;\n}\nfunction finishRenderingHooks(current) {\n ReactSharedInternals.H = ContextOnlyDispatcher;\n var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber = null;\n didScheduleRenderPhaseUpdate = !1;\n thenableIndexCounter = 0;\n thenableState = null;\n if (didRenderTooFewHooks) throw Error(formatProdErrorMessage(300));\n null === current ||\n didReceiveUpdate ||\n ((current = current.dependencies),\n null !== current &&\n checkIfContextChanged(current) &&\n (didReceiveUpdate = !0));\n}\nfunction renderWithHooksAgain(workInProgress, Component, props, secondArg) {\n currentlyRenderingFiber = workInProgress;\n var numberOfReRenders = 0;\n do {\n didScheduleRenderPhaseUpdateDuringThisPass && (thenableState = null);\n thenableIndexCounter = 0;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n if (25 <= numberOfReRenders) throw Error(formatProdErrorMessage(301));\n numberOfReRenders += 1;\n workInProgressHook = currentHook = null;\n if (null != workInProgress.updateQueue) {\n var children = workInProgress.updateQueue;\n children.lastEffect = null;\n children.events = null;\n children.stores = null;\n null != children.memoCache && (children.memoCache.index = 0);\n }\n ReactSharedInternals.H = HooksDispatcherOnRerender;\n children = Component(props, secondArg);\n } while (didScheduleRenderPhaseUpdateDuringThisPass);\n return children;\n}\nfunction TransitionAwareHostComponent() {\n var dispatcher = ReactSharedInternals.H,\n maybeThenable = dispatcher.useState()[0];\n maybeThenable =\n \"function\" === typeof maybeThenable.then\n ? useThenable(maybeThenable)\n : maybeThenable;\n dispatcher = dispatcher.useState()[0];\n (null !== currentHook ? currentHook.memoizedState : null) !== dispatcher &&\n (currentlyRenderingFiber.flags |= 1024);\n return maybeThenable;\n}\nfunction checkDidRenderIdHook() {\n var didRenderIdHook = 0 !== localIdCounter;\n localIdCounter = 0;\n return didRenderIdHook;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n workInProgress.updateQueue = current.updateQueue;\n workInProgress.flags &= -2053;\n current.lanes &= ~lanes;\n}\nfunction resetHooksOnUnwind(workInProgress) {\n if (didScheduleRenderPhaseUpdate) {\n for (\n workInProgress = workInProgress.memoizedState;\n null !== workInProgress;\n\n ) {\n var queue = workInProgress.queue;\n null !== queue && (queue.pending = null);\n workInProgress = workInProgress.next;\n }\n didScheduleRenderPhaseUpdate = !1;\n }\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber = null;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n thenableIndexCounter = localIdCounter = 0;\n thenableState = null;\n}\nfunction mountWorkInProgressHook() {\n var hook = {\n memoizedState: null,\n baseState: null,\n baseQueue: null,\n queue: null,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber.memoizedState = workInProgressHook = hook)\n : (workInProgressHook = workInProgressHook.next = hook);\n return workInProgressHook;\n}\nfunction updateWorkInProgressHook() {\n if (null === currentHook) {\n var nextCurrentHook = currentlyRenderingFiber.alternate;\n nextCurrentHook =\n null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;\n } else nextCurrentHook = currentHook.next;\n var nextWorkInProgressHook =\n null === workInProgressHook\n ? currentlyRenderingFiber.memoizedState\n : workInProgressHook.next;\n if (null !== nextWorkInProgressHook)\n (workInProgressHook = nextWorkInProgressHook),\n (currentHook = nextCurrentHook);\n else {\n if (null === nextCurrentHook) {\n if (null === currentlyRenderingFiber.alternate)\n throw Error(formatProdErrorMessage(467));\n throw Error(formatProdErrorMessage(310));\n }\n currentHook = nextCurrentHook;\n nextCurrentHook = {\n memoizedState: currentHook.memoizedState,\n baseState: currentHook.baseState,\n baseQueue: currentHook.baseQueue,\n queue: currentHook.queue,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber.memoizedState = workInProgressHook =\n nextCurrentHook)\n : (workInProgressHook = workInProgressHook.next = nextCurrentHook);\n }\n return workInProgressHook;\n}\nfunction createFunctionComponentUpdateQueue() {\n return { lastEffect: null, events: null, stores: null, memoCache: null };\n}\nfunction useThenable(thenable) {\n var index = thenableIndexCounter;\n thenableIndexCounter += 1;\n null === thenableState && (thenableState = []);\n thenable = trackUsedThenable(thenableState, thenable, index);\n index = currentlyRenderingFiber;\n null ===\n (null === workInProgressHook\n ? index.memoizedState\n : workInProgressHook.next) &&\n ((index = index.alternate),\n (ReactSharedInternals.H =\n null === index || null === index.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate));\n return thenable;\n}\nfunction use(usable) {\n if (null !== usable && \"object\" === typeof usable) {\n if (\"function\" === typeof usable.then) return useThenable(usable);\n if (usable.$$typeof === REACT_RECOVERABLE_TYPE) return;\n if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);\n }\n throw Error(formatProdErrorMessage(438, String(usable)));\n}\nfunction useMemoCache(size) {\n var memoCache = null,\n updateQueue = currentlyRenderingFiber.updateQueue;\n null !== updateQueue && (memoCache = updateQueue.memoCache);\n if (null == memoCache) {\n var current = currentlyRenderingFiber.alternate;\n null !== current &&\n ((current = current.updateQueue),\n null !== current &&\n ((current = current.memoCache),\n null != current &&\n (memoCache = {\n data: current.data.map(function (array) {\n return array.slice();\n }),\n index: 0\n })));\n }\n null == memoCache && (memoCache = { data: [], index: 0 });\n null === updateQueue &&\n ((updateQueue = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = updateQueue));\n updateQueue.memoCache = memoCache;\n updateQueue = memoCache.data[memoCache.index];\n if (void 0 === updateQueue)\n for (\n updateQueue = memoCache.data[memoCache.index] = Array(size), current = 0;\n current < size;\n current++\n )\n updateQueue[current] = REACT_MEMO_CACHE_SENTINEL;\n memoCache.index++;\n return updateQueue;\n}\nfunction basicStateReducer(state, action) {\n return \"function\" === typeof action ? action(state) : action;\n}\nfunction updateReducer(reducer) {\n var hook = updateWorkInProgressHook();\n return updateReducerImpl(hook, currentHook, reducer);\n}\nfunction updateReducerImpl(hook, current, reducer) {\n var queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var baseQueue = hook.baseQueue,\n pendingQueue = queue.pending;\n if (null !== pendingQueue) {\n if (null !== baseQueue) {\n var baseFirst = baseQueue.next;\n baseQueue.next = pendingQueue.next;\n pendingQueue.next = baseFirst;\n }\n current.baseQueue = baseQueue = pendingQueue;\n queue.pending = null;\n }\n pendingQueue = hook.baseState;\n if (null === baseQueue) hook.memoizedState = pendingQueue;\n else {\n current = baseQueue.next;\n var newBaseQueueFirst = (baseFirst = null),\n newBaseQueueLast = null,\n update = current,\n didReadFromEntangledAsyncAction$64 = !1;\n do {\n var updateLane = update.lane & -536870913;\n if (\n updateLane !== update.lane\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n var revertLane = update.revertLane;\n if (0 === revertLane)\n null !== newBaseQueueLast &&\n (newBaseQueueLast = newBaseQueueLast.next =\n {\n lane: 0,\n revertLane: 0,\n gesture: null,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$64 = !0);\n else if ((renderLanes & revertLane) === revertLane) {\n update = update.next;\n revertLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$64 = !0);\n continue;\n } else\n (updateLane = {\n lane: 0,\n revertLane: update.revertLane,\n gesture: null,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = updateLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = updateLane),\n (currentlyRenderingFiber.lanes |= revertLane),\n (workInProgressRootSkippedLanes |= revertLane);\n updateLane = update.action;\n shouldDoubleInvokeUserFnsInHooksDEV &&\n reducer(pendingQueue, updateLane);\n pendingQueue = update.hasEagerState\n ? update.eagerState\n : reducer(pendingQueue, updateLane);\n } else\n (revertLane = {\n lane: updateLane,\n revertLane: update.revertLane,\n gesture: update.gesture,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = revertLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = revertLane),\n (currentlyRenderingFiber.lanes |= updateLane),\n (workInProgressRootSkippedLanes |= updateLane);\n update = update.next;\n } while (null !== update && update !== current);\n null === newBaseQueueLast\n ? (baseFirst = pendingQueue)\n : (newBaseQueueLast.next = newBaseQueueFirst);\n if (\n !objectIs(pendingQueue, hook.memoizedState) &&\n ((didReceiveUpdate = !0),\n didReadFromEntangledAsyncAction$64 &&\n ((reducer = currentEntangledActionThenable), null !== reducer))\n )\n throw reducer;\n hook.memoizedState = pendingQueue;\n hook.baseState = baseFirst;\n hook.baseQueue = newBaseQueueLast;\n queue.lastRenderedState = pendingQueue;\n }\n null === baseQueue && (queue.lanes = 0);\n return [hook.memoizedState, queue.dispatch];\n}\nfunction rerenderReducer(reducer) {\n var hook = updateWorkInProgressHook(),\n queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var dispatch = queue.dispatch,\n lastRenderPhaseUpdate = queue.pending,\n newState = hook.memoizedState;\n if (null !== lastRenderPhaseUpdate) {\n queue.pending = null;\n var update = (lastRenderPhaseUpdate = lastRenderPhaseUpdate.next);\n do (newState = reducer(newState, update.action)), (update = update.next);\n while (update !== lastRenderPhaseUpdate);\n objectIs(newState, hook.memoizedState) || (didReceiveUpdate = !0);\n hook.memoizedState = newState;\n null === hook.baseQueue && (hook.baseState = newState);\n queue.lastRenderedState = newState;\n }\n return [newState, dispatch];\n}\nfunction updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber,\n hook = updateWorkInProgressHook(),\n isHydrating$jscomp$0 = isHydrating;\n if (isHydrating$jscomp$0) {\n if (void 0 === getServerSnapshot) throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else getServerSnapshot = getSnapshot();\n var snapshotChanged = !objectIs(\n (currentHook || hook).memoizedState,\n getServerSnapshot\n );\n snapshotChanged &&\n ((hook.memoizedState = getServerSnapshot), (didReceiveUpdate = !0));\n hook = hook.queue;\n updateEffect(subscribeToStore.bind(null, fiber, hook, subscribe), [\n subscribe\n ]);\n subscribe =\n hook.getSnapshot !== getSnapshot ||\n snapshotChanged ||\n (null !== workInProgressHook &&\n 0 !== (workInProgressHook.memoizedState.tag & 1));\n pushSimpleEffect(\n subscribe ? 9 : 8,\n { destroy: void 0 },\n updateStoreInstance.bind(null, fiber, hook, getServerSnapshot, getSnapshot),\n null\n );\n if (subscribe) {\n fiber.flags |= 2048;\n if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));\n isHydrating$jscomp$0 ||\n 0 !== (renderLanes & 127) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n return getServerSnapshot;\n}\nfunction pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n fiber.flags |= 16384;\n fiber = { getSnapshot: getSnapshot, value: renderedSnapshot };\n getSnapshot = currentlyRenderingFiber.updateQueue;\n null === getSnapshot\n ? ((getSnapshot = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = getSnapshot),\n (getSnapshot.stores = [fiber]))\n : ((renderedSnapshot = getSnapshot.stores),\n null === renderedSnapshot\n ? (getSnapshot.stores = [fiber])\n : renderedSnapshot.push(fiber));\n}\nfunction updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n inst.value = nextSnapshot;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n}\nfunction subscribeToStore(fiber, inst, subscribe) {\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n });\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction forceStoreRerender(fiber) {\n var root = enqueueConcurrentRenderForLane(fiber, 2);\n null !== root && scheduleUpdateOnFiber(root, fiber, 2);\n}\nfunction mountStateImpl(initialState) {\n var hook = mountWorkInProgressHook();\n if (\"function\" === typeof initialState) {\n var initialStateInitializer = initialState;\n initialState = initialStateInitializer();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n initialStateInitializer();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n }\n hook.memoizedState = hook.baseState = initialState;\n hook.queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialState\n };\n return hook;\n}\nfunction updateOptimisticImpl(hook, current, passthrough, reducer) {\n hook.baseState = passthrough;\n return updateReducerImpl(\n hook,\n currentHook,\n \"function\" === typeof reducer ? reducer : basicStateReducer\n );\n}\nfunction dispatchActionState(\n fiber,\n actionQueue,\n setPendingState,\n setState,\n payload\n) {\n if (isRenderPhaseUpdate(fiber)) throw Error(formatProdErrorMessage(485));\n fiber = actionQueue.action;\n if (null !== fiber) {\n var actionNode = {\n payload: payload,\n action: fiber,\n next: null,\n isTransition: !0,\n status: \"pending\",\n value: null,\n reason: null,\n listeners: [],\n then: function (listener) {\n actionNode.listeners.push(listener);\n }\n };\n null !== ReactSharedInternals.T\n ? setPendingState(!0)\n : (actionNode.isTransition = !1);\n setState(actionNode);\n setPendingState = actionQueue.pending;\n null === setPendingState\n ? ((actionNode.next = actionQueue.pending = actionNode),\n runActionStateAction(actionQueue, actionNode))\n : ((actionNode.next = setPendingState.next),\n (actionQueue.pending = setPendingState.next = actionNode));\n }\n}\nfunction runActionStateAction(actionQueue, node) {\n var action = node.action,\n payload = node.payload,\n prevState = actionQueue.state;\n if (node.isTransition) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n currentTransition.types =\n null !== prevTransition ? prevTransition.types : null;\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = action(prevState, payload),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n handleActionReturnValue(actionQueue, node, returnValue);\n } catch (error) {\n onActionError(actionQueue, node, error);\n } finally {\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n } else\n try {\n (prevTransition = action(prevState, payload)),\n handleActionReturnValue(actionQueue, node, prevTransition);\n } catch (error$70) {\n onActionError(actionQueue, node, error$70);\n }\n}\nfunction handleActionReturnValue(actionQueue, node, returnValue) {\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ? returnValue.then(\n function (nextState) {\n onActionSuccess(actionQueue, node, nextState);\n },\n function (error) {\n return onActionError(actionQueue, node, error);\n }\n )\n : onActionSuccess(actionQueue, node, returnValue);\n}\nfunction onActionSuccess(actionQueue, actionNode, nextState) {\n actionNode.status = \"fulfilled\";\n actionNode.value = nextState;\n notifyActionListeners(actionNode);\n actionQueue.state = nextState;\n actionNode = actionQueue.pending;\n null !== actionNode &&\n ((nextState = actionNode.next),\n nextState === actionNode\n ? (actionQueue.pending = null)\n : ((nextState = nextState.next),\n (actionNode.next = nextState),\n runActionStateAction(actionQueue, nextState)));\n}\nfunction onActionError(actionQueue, actionNode, error) {\n var last = actionQueue.pending;\n actionQueue.pending = null;\n if (null !== last) {\n last = last.next;\n do\n (actionNode.status = \"rejected\"),\n (actionNode.reason = error),\n notifyActionListeners(actionNode),\n (actionNode = actionNode.next);\n while (actionNode !== last);\n }\n actionQueue.action = null;\n}\nfunction notifyActionListeners(actionNode) {\n actionNode = actionNode.listeners;\n for (var i = 0; i < actionNode.length; i++) (0, actionNode[i])();\n}\nfunction actionStateReducer(oldState, newState) {\n return newState;\n}\nfunction mountActionState(action, initialStateProp) {\n if (isHydrating) {\n var ssrFormState = workInProgressRoot.formState;\n if (null !== ssrFormState) {\n a: {\n var JSCompiler_inline_result = currentlyRenderingFiber;\n if (isHydrating) {\n if (nextHydratableInstance) {\n b: {\n var JSCompiler_inline_result$jscomp$0 = nextHydratableInstance;\n for (\n var inRootOrSingleton = rootOrSingletonContext;\n 8 !== JSCompiler_inline_result$jscomp$0.nodeType;\n\n ) {\n if (!inRootOrSingleton) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n JSCompiler_inline_result$jscomp$0 = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n if (null === JSCompiler_inline_result$jscomp$0) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n }\n inRootOrSingleton = JSCompiler_inline_result$jscomp$0.data;\n JSCompiler_inline_result$jscomp$0 =\n \"F!\" === inRootOrSingleton || \"F\" === inRootOrSingleton\n ? JSCompiler_inline_result$jscomp$0\n : null;\n }\n if (JSCompiler_inline_result$jscomp$0) {\n nextHydratableInstance = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n JSCompiler_inline_result =\n \"F!\" === JSCompiler_inline_result$jscomp$0.data;\n break a;\n }\n }\n throwOnHydrationMismatch(JSCompiler_inline_result);\n }\n JSCompiler_inline_result = !1;\n }\n JSCompiler_inline_result && (initialStateProp = ssrFormState[0]);\n }\n }\n ssrFormState = mountWorkInProgressHook();\n ssrFormState.memoizedState = ssrFormState.baseState = initialStateProp;\n JSCompiler_inline_result = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: actionStateReducer,\n lastRenderedState: initialStateProp\n };\n ssrFormState.queue = JSCompiler_inline_result;\n ssrFormState = dispatchSetState.bind(\n null,\n currentlyRenderingFiber,\n JSCompiler_inline_result\n );\n JSCompiler_inline_result.dispatch = ssrFormState;\n JSCompiler_inline_result = mountStateImpl(!1);\n inRootOrSingleton = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber,\n !1,\n JSCompiler_inline_result.queue\n );\n JSCompiler_inline_result = mountWorkInProgressHook();\n JSCompiler_inline_result$jscomp$0 = {\n state: initialStateProp,\n dispatch: null,\n action: action,\n pending: null\n };\n JSCompiler_inline_result.queue = JSCompiler_inline_result$jscomp$0;\n ssrFormState = dispatchActionState.bind(\n null,\n currentlyRenderingFiber,\n JSCompiler_inline_result$jscomp$0,\n inRootOrSingleton,\n ssrFormState\n );\n JSCompiler_inline_result$jscomp$0.dispatch = ssrFormState;\n JSCompiler_inline_result.memoizedState = action;\n return [initialStateProp, ssrFormState, !1];\n}\nfunction updateActionState(action) {\n var stateHook = updateWorkInProgressHook();\n return updateActionStateImpl(stateHook, currentHook, action);\n}\nfunction updateActionStateImpl(stateHook, currentStateHook, action) {\n currentStateHook = updateReducerImpl(\n stateHook,\n currentStateHook,\n actionStateReducer\n )[0];\n stateHook = updateReducer(basicStateReducer)[0];\n if (\n \"object\" === typeof currentStateHook &&\n null !== currentStateHook &&\n \"function\" === typeof currentStateHook.then\n )\n try {\n var state = useThenable(currentStateHook);\n } catch (x) {\n if (x === SuspenseException) throw SuspenseActionException;\n throw x;\n }\n else state = currentStateHook;\n currentStateHook = updateWorkInProgressHook();\n var actionQueue = currentStateHook.queue,\n dispatch = actionQueue.dispatch;\n action !== currentStateHook.memoizedState &&\n ((currentlyRenderingFiber.flags |= 2048),\n pushSimpleEffect(\n 9,\n { destroy: void 0 },\n actionStateActionEffect.bind(null, actionQueue, action),\n null\n ));\n return [state, dispatch, stateHook];\n}\nfunction actionStateActionEffect(actionQueue, action) {\n actionQueue.action = action;\n}\nfunction rerenderActionState(action) {\n var stateHook = updateWorkInProgressHook(),\n currentStateHook = currentHook;\n if (null !== currentStateHook)\n return updateActionStateImpl(stateHook, currentStateHook, action);\n updateWorkInProgressHook();\n stateHook = stateHook.memoizedState;\n currentStateHook = updateWorkInProgressHook();\n var dispatch = currentStateHook.queue.dispatch;\n currentStateHook.memoizedState = action;\n return [stateHook, dispatch, !1];\n}\nfunction pushSimpleEffect(tag, inst, create, deps) {\n tag = { tag: tag, create: create, deps: deps, inst: inst, next: null };\n inst = currentlyRenderingFiber.updateQueue;\n null === inst &&\n ((inst = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = inst));\n create = inst.lastEffect;\n null === create\n ? (inst.lastEffect = tag.next = tag)\n : ((deps = create.next),\n (create.next = tag),\n (tag.next = deps),\n (inst.lastEffect = tag));\n return tag;\n}\nfunction updateRef() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = mountWorkInProgressHook();\n currentlyRenderingFiber.flags |= fiberFlags;\n hook.memoizedState = pushSimpleEffect(\n 1 | hookFlags,\n { destroy: void 0 },\n create,\n void 0 === deps ? null : deps\n );\n}\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var inst = hook.memoizedState.inst;\n null !== currentHook &&\n null !== deps &&\n areHookInputsEqual(deps, currentHook.memoizedState.deps)\n ? (hook.memoizedState = pushSimpleEffect(hookFlags, inst, create, deps))\n : ((currentlyRenderingFiber.flags |= fiberFlags),\n (hook.memoizedState = pushSimpleEffect(\n 1 | hookFlags,\n inst,\n create,\n deps\n )));\n}\nfunction mountEffect(create, deps) {\n mountEffectImpl(8390656, 8, create, deps);\n}\nfunction updateEffect(create, deps) {\n updateEffectImpl(2048, 8, create, deps);\n}\nfunction useEffectEventImpl(payload) {\n currentlyRenderingFiber.flags |= 4;\n var componentUpdateQueue = currentlyRenderingFiber.updateQueue;\n if (null === componentUpdateQueue)\n (componentUpdateQueue = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = componentUpdateQueue),\n (componentUpdateQueue.events = [payload]);\n else {\n var events = componentUpdateQueue.events;\n null === events\n ? (componentUpdateQueue.events = [payload])\n : events.push(payload);\n }\n}\nfunction updateEvent(callback) {\n var ref = updateWorkInProgressHook().memoizedState;\n useEffectEventImpl({ ref: ref, nextImpl: callback });\n return function () {\n if (0 !== (executionContext & 2)) throw Error(formatProdErrorMessage(440));\n return ref.impl.apply(void 0, arguments);\n };\n}\nfunction updateInsertionEffect(create, deps) {\n return updateEffectImpl(4, 2, create, deps);\n}\nfunction updateLayoutEffect(create, deps) {\n return updateEffectImpl(4, 4, create, deps);\n}\nfunction imperativeHandleEffect(create, ref) {\n if (\"function\" === typeof ref) {\n create = create();\n var refCleanup = ref(create);\n return function () {\n \"function\" === typeof refCleanup ? refCleanup() : ref(null);\n };\n }\n if (null !== ref && void 0 !== ref)\n return (\n (create = create()),\n (ref.current = create),\n function () {\n ref.current = null;\n }\n );\n}\nfunction updateImperativeHandle(ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n updateEffectImpl(4, 4, imperativeHandleEffect.bind(null, create, ref), deps);\n}\nfunction mountDebugValue() {}\nfunction updateCallback(callback, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n hook.memoizedState = [callback, deps];\n return callback;\n}\nfunction updateMemo(nextCreate, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n prevState = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [prevState, deps];\n return prevState;\n}\nfunction mountDeferredValueImpl(hook, value, initialValue) {\n if (\n void 0 === initialValue ||\n (0 !== (renderLanes & 1073741824) &&\n 0 === (workInProgressRootRenderLanes & 261930))\n )\n return (hook.memoizedState = value);\n hook.memoizedState = initialValue;\n hook = requestDeferredLane();\n currentlyRenderingFiber.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return initialValue;\n}\nfunction updateDeferredValueImpl(hook, prevValue, value, initialValue) {\n if (objectIs(value, prevValue)) return value;\n if (null !== currentTreeHiddenStackCursor.current)\n return (\n (hook = mountDeferredValueImpl(hook, value, initialValue)),\n objectIs(hook, prevValue) || (didReceiveUpdate = !0),\n hook\n );\n if (\n 0 === (renderLanes & 106) ||\n (0 !== (renderLanes & 1073741824) &&\n 0 === (workInProgressRootRenderLanes & 261930))\n )\n return (didReceiveUpdate = !0), (hook.memoizedState = value);\n hook = requestDeferredLane();\n currentlyRenderingFiber.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return prevValue;\n}\nfunction startTransition(fiber, queue, pendingState, finishedState, callback) {\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p =\n 0 !== previousPriority && 8 > previousPriority ? previousPriority : 8;\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n currentTransition.types =\n null !== prevTransition ? prevTransition.types : null;\n ReactSharedInternals.T = currentTransition;\n dispatchOptimisticSetState(fiber, !1, queue, pendingState);\n try {\n var returnValue = callback(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n if (\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ) {\n var thenableForFinishedState = chainThenableValue(\n returnValue,\n finishedState\n );\n dispatchSetStateInternal(\n fiber,\n queue,\n thenableForFinishedState,\n requestUpdateLane(fiber)\n );\n } else\n dispatchSetStateInternal(\n fiber,\n queue,\n finishedState,\n requestUpdateLane(fiber)\n );\n } catch (error) {\n dispatchSetStateInternal(\n fiber,\n queue,\n { then: function () {}, status: \"rejected\", reason: error },\n requestUpdateLane()\n );\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction noop() {}\nfunction startHostTransition(formFiber, pendingState, action, formData) {\n if (5 !== formFiber.tag) throw Error(formatProdErrorMessage(476));\n var queue = ensureFormComponentIsStateful(formFiber).queue;\n startTransition(\n formFiber,\n queue,\n pendingState,\n sharedNotPendingObject,\n null === action\n ? noop\n : function () {\n requestFormReset$1(formFiber);\n return action(formData);\n }\n );\n}\nfunction ensureFormComponentIsStateful(formFiber) {\n var existingStateHook = formFiber.memoizedState;\n if (null !== existingStateHook) return existingStateHook;\n existingStateHook = {\n memoizedState: sharedNotPendingObject,\n baseState: sharedNotPendingObject,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: sharedNotPendingObject\n },\n next: null\n };\n var initialResetState = {};\n existingStateHook.next = {\n memoizedState: initialResetState,\n baseState: initialResetState,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialResetState\n },\n next: null\n };\n formFiber.memoizedState = existingStateHook;\n formFiber = formFiber.alternate;\n null !== formFiber && (formFiber.memoizedState = existingStateHook);\n return existingStateHook;\n}\nfunction requestFormReset$1(formFiber) {\n var stateHook = ensureFormComponentIsStateful(formFiber);\n null === stateHook.next && (stateHook = formFiber.alternate.memoizedState);\n dispatchSetStateInternal(\n formFiber,\n stateHook.next.queue,\n {},\n requestUpdateLane()\n );\n}\nfunction useHostTransitionStatus() {\n return readContext(HostTransitionContext);\n}\nfunction updateId() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction updateRefresh() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction refreshCache(fiber) {\n for (var provider = fiber.return; null !== provider; ) {\n switch (provider.tag) {\n case 24:\n case 3:\n var lane = requestUpdateLane();\n fiber = createUpdate(lane);\n var root$73 = enqueueUpdate(provider, fiber, lane);\n null !== root$73 &&\n (scheduleUpdateOnFiber(root$73, provider, lane),\n entangleTransitions(root$73, provider, lane));\n provider = { cache: createCache() };\n fiber.payload = provider;\n return;\n }\n provider = provider.return;\n }\n}\nfunction dispatchReducerAction(fiber, queue, action) {\n var lane = requestUpdateLane();\n action = {\n lane: lane,\n revertLane: 0,\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n isRenderPhaseUpdate(fiber)\n ? enqueueRenderPhaseUpdate(queue, action)\n : ((action = enqueueConcurrentHookUpdate(fiber, queue, action, lane)),\n null !== action &&\n (scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane)));\n}\nfunction dispatchSetState(fiber, queue, action) {\n var lane = requestUpdateLane();\n dispatchSetStateInternal(fiber, queue, action, lane);\n}\nfunction dispatchSetStateInternal(fiber, queue, action, lane) {\n var update = {\n lane: lane,\n revertLane: 0,\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);\n else {\n var alternate = fiber.alternate;\n if (\n 0 === fiber.lanes &&\n (null === alternate || 0 === alternate.lanes) &&\n ((alternate = queue.lastRenderedReducer), null !== alternate)\n )\n try {\n var currentState = queue.lastRenderedState,\n eagerState = alternate(currentState, action);\n update.hasEagerState = !0;\n update.eagerState = eagerState;\n if (objectIs(eagerState, currentState))\n return (\n enqueueUpdate$1(fiber, queue, update, 0),\n null === workInProgressRoot && finishQueueingConcurrentUpdates(),\n !1\n );\n } catch (error) {\n } finally {\n }\n action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n if (null !== action)\n return (\n scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane),\n !0\n );\n }\n return !1;\n}\nfunction dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {\n action = {\n lane: 2,\n revertLane: requestTransitionLane(),\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) {\n if (throwIfDuringRender) throw Error(formatProdErrorMessage(479));\n } else\n (throwIfDuringRender = enqueueConcurrentHookUpdate(\n fiber,\n queue,\n action,\n 2\n )),\n null !== throwIfDuringRender &&\n scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2);\n}\nfunction isRenderPhaseUpdate(fiber) {\n var alternate = fiber.alternate;\n return (\n fiber === currentlyRenderingFiber ||\n (null !== alternate && alternate === currentlyRenderingFiber)\n );\n}\nfunction enqueueRenderPhaseUpdate(queue, update) {\n didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate =\n !0;\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n}\nfunction entangleTransitionUpdate(root, queue, lane) {\n if (0 !== (lane & 4194048)) {\n var queueLanes = queue.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n queue.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nvar ContextOnlyDispatcher = {\n readContext: readContext,\n use: use,\n useCallback: throwInvalidHookError,\n useContext: throwInvalidHookError,\n useEffect: throwInvalidHookError,\n useImperativeHandle: throwInvalidHookError,\n useLayoutEffect: throwInvalidHookError,\n useInsertionEffect: throwInvalidHookError,\n useMemo: throwInvalidHookError,\n useReducer: throwInvalidHookError,\n useRef: throwInvalidHookError,\n useState: throwInvalidHookError,\n useDebugValue: throwInvalidHookError,\n useDeferredValue: throwInvalidHookError,\n useTransition: throwInvalidHookError,\n useSyncExternalStore: throwInvalidHookError,\n useId: throwInvalidHookError,\n useHostTransitionStatus: throwInvalidHookError,\n useFormState: throwInvalidHookError,\n useActionState: throwInvalidHookError,\n useOptimistic: throwInvalidHookError,\n useMemoCache: throwInvalidHookError,\n useCacheRefresh: throwInvalidHookError,\n useEffectEvent: throwInvalidHookError\n },\n HooksDispatcherOnMount = {\n readContext: readContext,\n use: use,\n useCallback: function (callback, deps) {\n mountWorkInProgressHook().memoizedState = [\n callback,\n void 0 === deps ? null : deps\n ];\n return callback;\n },\n useContext: readContext,\n useEffect: mountEffect,\n useImperativeHandle: function (ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n mountEffectImpl(\n 4194308,\n 4,\n imperativeHandleEffect.bind(null, create, ref),\n deps\n );\n },\n useLayoutEffect: function (create, deps) {\n return mountEffectImpl(4194308, 4, create, deps);\n },\n useInsertionEffect: function (create, deps) {\n mountEffectImpl(4, 2, create, deps);\n },\n useMemo: function (nextCreate, deps) {\n var hook = mountWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var nextValue = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [nextValue, deps];\n return nextValue;\n },\n useReducer: function (reducer, initialArg, init) {\n var hook = mountWorkInProgressHook();\n if (void 0 !== init) {\n var initialState = init(initialArg);\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n init(initialArg);\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n } else initialState = initialArg;\n hook.memoizedState = hook.baseState = initialState;\n reducer = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: reducer,\n lastRenderedState: initialState\n };\n hook.queue = reducer;\n reducer = reducer.dispatch = dispatchReducerAction.bind(\n null,\n currentlyRenderingFiber,\n reducer\n );\n return [hook.memoizedState, reducer];\n },\n useRef: function (initialValue) {\n var hook = mountWorkInProgressHook();\n initialValue = { current: initialValue };\n return (hook.memoizedState = initialValue);\n },\n useState: function (initialState) {\n initialState = mountStateImpl(initialState);\n var queue = initialState.queue,\n dispatch = dispatchSetState.bind(null, currentlyRenderingFiber, queue);\n queue.dispatch = dispatch;\n return [initialState.memoizedState, dispatch];\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = mountWorkInProgressHook();\n return mountDeferredValueImpl(hook, value, initialValue);\n },\n useTransition: function () {\n var stateHook = mountStateImpl(!1);\n stateHook = startTransition.bind(\n null,\n currentlyRenderingFiber,\n stateHook.queue,\n !0,\n !1\n );\n mountWorkInProgressHook().memoizedState = stateHook;\n return [!1, stateHook];\n },\n useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber,\n hook = mountWorkInProgressHook();\n if (isHydrating) {\n if (void 0 === getServerSnapshot)\n throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else {\n getServerSnapshot = getSnapshot();\n if (null === workInProgressRoot)\n throw Error(formatProdErrorMessage(349));\n 0 !== (workInProgressRootRenderLanes & 127) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n hook.memoizedState = getServerSnapshot;\n var inst = { value: getServerSnapshot, getSnapshot: getSnapshot };\n hook.queue = inst;\n mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [\n subscribe\n ]);\n fiber.flags |= 2048;\n pushSimpleEffect(\n 9,\n { destroy: void 0 },\n updateStoreInstance.bind(\n null,\n fiber,\n inst,\n getServerSnapshot,\n getSnapshot\n ),\n null\n );\n return getServerSnapshot;\n },\n useId: function () {\n var hook = mountWorkInProgressHook(),\n identifierPrefix = workInProgressRoot.identifierPrefix;\n if (isHydrating) {\n var JSCompiler_inline_result = treeContextOverflow;\n var idWithLeadingBit = treeContextId;\n JSCompiler_inline_result =\n (\n idWithLeadingBit & ~(1 << (32 - clz32(idWithLeadingBit) - 1))\n ).toString(32) + JSCompiler_inline_result;\n identifierPrefix =\n \"_\" + identifierPrefix + \"R_\" + JSCompiler_inline_result;\n JSCompiler_inline_result = localIdCounter++;\n 0 < JSCompiler_inline_result &&\n (identifierPrefix += \"H\" + JSCompiler_inline_result.toString(32));\n identifierPrefix += \"_\";\n } else\n (JSCompiler_inline_result = globalClientIdCounter++),\n (identifierPrefix =\n \"_\" +\n identifierPrefix +\n \"r_\" +\n JSCompiler_inline_result.toString(32) +\n \"_\");\n return (hook.memoizedState = identifierPrefix);\n },\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: mountActionState,\n useActionState: mountActionState,\n useOptimistic: function (passthrough) {\n var hook = mountWorkInProgressHook();\n hook.memoizedState = hook.baseState = passthrough;\n var queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: null,\n lastRenderedState: null\n };\n hook.queue = queue;\n hook = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber,\n !0,\n queue\n );\n queue.dispatch = hook;\n return [passthrough, hook];\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: function () {\n return (mountWorkInProgressHook().memoizedState = refreshCache.bind(\n null,\n currentlyRenderingFiber\n ));\n },\n useEffectEvent: function (callback) {\n var hook = mountWorkInProgressHook(),\n ref = { impl: callback };\n hook.memoizedState = ref;\n return function () {\n if (0 !== (executionContext & 2))\n throw Error(formatProdErrorMessage(440));\n return ref.impl.apply(void 0, arguments);\n };\n }\n },\n HooksDispatcherOnUpdate = {\n readContext: readContext,\n use: use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: updateReducer,\n useRef: updateRef,\n useState: function () {\n return updateReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = updateReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId,\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: updateActionState,\n useActionState: updateActionState,\n useOptimistic: function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: updateRefresh,\n useEffectEvent: updateEvent\n },\n HooksDispatcherOnRerender = {\n readContext: readContext,\n use: use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: rerenderReducer,\n useRef: updateRef,\n useState: function () {\n return rerenderReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return null === currentHook\n ? mountDeferredValueImpl(hook, value, initialValue)\n : updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = rerenderReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId,\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: rerenderActionState,\n useActionState: rerenderActionState,\n useOptimistic: function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n if (null !== currentHook)\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n hook.baseState = passthrough;\n return [passthrough, hook.queue.dispatch];\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: updateRefresh,\n useEffectEvent: updateEvent\n };\nfunction applyDerivedStateFromProps(\n workInProgress,\n ctor,\n getDerivedStateFromProps,\n nextProps\n) {\n ctor = workInProgress.memoizedState;\n getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n getDerivedStateFromProps =\n null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n ? ctor\n : assign({}, ctor, getDerivedStateFromProps);\n workInProgress.memoizedState = getDerivedStateFromProps;\n 0 === workInProgress.lanes &&\n (workInProgress.updateQueue.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n enqueueSetState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueReplaceState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 1;\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueForceUpdate: function (inst, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 2;\n void 0 !== callback && null !== callback && (update.callback = callback);\n callback = enqueueUpdate(inst, update, lane);\n null !== callback &&\n (scheduleUpdateOnFiber(callback, inst, lane),\n entangleTransitions(callback, inst, lane));\n }\n};\nfunction checkShouldComponentUpdate(\n workInProgress,\n ctor,\n oldProps,\n newProps,\n oldState,\n newState,\n nextContext\n) {\n workInProgress = workInProgress.stateNode;\n return \"function\" === typeof workInProgress.shouldComponentUpdate\n ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)\n : ctor.prototype && ctor.prototype.isPureReactComponent\n ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)\n : !0;\n}\nfunction callComponentWillReceiveProps(\n workInProgress,\n instance,\n newProps,\n nextContext\n) {\n workInProgress = instance.state;\n \"function\" === typeof instance.componentWillReceiveProps &&\n instance.componentWillReceiveProps(newProps, nextContext);\n \"function\" === typeof instance.UNSAFE_componentWillReceiveProps &&\n instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n instance.state !== workInProgress &&\n classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n}\nfunction resolveClassComponentProps(Component, baseProps) {\n var newProps = baseProps;\n if (\"ref\" in baseProps) {\n newProps = {};\n for (var propName in baseProps)\n \"ref\" !== propName && (newProps[propName] = baseProps[propName]);\n }\n if ((Component = Component.defaultProps)) {\n newProps === baseProps && (newProps = assign({}, newProps));\n for (var propName$77 in Component)\n void 0 === newProps[propName$77] &&\n (newProps[propName$77] = Component[propName$77]);\n }\n return newProps;\n}\nfunction defaultOnUncaughtError(error) {\n reportGlobalError(error);\n}\nfunction defaultOnCaughtError(error) {\n console.error(error);\n}\nfunction defaultOnRecoverableError(error) {\n reportGlobalError(error);\n}\nfunction logUncaughtError(root, errorInfo) {\n try {\n var onUncaughtError = root.onUncaughtError;\n onUncaughtError(errorInfo.value, { componentStack: errorInfo.stack });\n } catch (e$78) {\n setTimeout(function () {\n throw e$78;\n });\n }\n}\nfunction logCaughtError(root, boundary, errorInfo) {\n try {\n var onCaughtError = root.onCaughtError;\n onCaughtError(errorInfo.value, {\n componentStack: errorInfo.stack,\n errorBoundary: 1 === boundary.tag ? boundary.stateNode : null\n });\n } catch (e$79) {\n setTimeout(function () {\n throw e$79;\n });\n }\n}\nfunction createRootErrorUpdate(root, errorInfo, lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n lane.payload = { element: null };\n lane.callback = function () {\n logUncaughtError(root, errorInfo);\n };\n return lane;\n}\nfunction createClassErrorUpdate(lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n return lane;\n}\nfunction initializeClassErrorUpdate(update, root, fiber, errorInfo) {\n var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n if (\"function\" === typeof getDerivedStateFromError) {\n var error = errorInfo.value;\n update.payload = function () {\n return getDerivedStateFromError(error);\n };\n update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n };\n }\n var inst = fiber.stateNode;\n null !== inst &&\n \"function\" === typeof inst.componentDidCatch &&\n (update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n \"function\" !== typeof getDerivedStateFromError &&\n (null === legacyErrorBoundariesThatAlreadyFailed\n ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))\n : legacyErrorBoundariesThatAlreadyFailed.add(this));\n var stack = errorInfo.stack;\n this.componentDidCatch(errorInfo.value, {\n componentStack: null !== stack ? stack : \"\"\n });\n });\n}\nfunction throwException(\n root,\n returnFiber,\n sourceFiber,\n value,\n rootRenderLanes\n) {\n sourceFiber.flags |= 32768;\n if (\n null !== value &&\n \"object\" === typeof value &&\n \"function\" === typeof value.then\n ) {\n returnFiber = sourceFiber.alternate;\n null !== returnFiber &&\n propagateParentContextChanges(\n returnFiber,\n sourceFiber,\n rootRenderLanes,\n !0\n );\n sourceFiber = suspenseHandlerStackCursor.current;\n if (null !== sourceFiber) {\n switch (sourceFiber.tag) {\n case 31:\n case 13:\n case 19:\n return (\n null === shellBoundary\n ? renderDidSuspendDelayIfPossible()\n : null === sourceFiber.alternate &&\n 0 === workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 3),\n (sourceFiber.flags &= -257),\n (sourceFiber.flags |= 65536),\n (sourceFiber.lanes = rootRenderLanes),\n value === noopSuspenseyCommitThenable\n ? (sourceFiber.flags |= 16384)\n : ((returnFiber = sourceFiber.updateQueue),\n null === returnFiber\n ? (sourceFiber.updateQueue = new Set([value]))\n : returnFiber.add(value),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n case 22:\n return (\n (sourceFiber.flags |= 65536),\n value === noopSuspenseyCommitThenable\n ? (sourceFiber.flags |= 16384)\n : ((returnFiber = sourceFiber.updateQueue),\n null === returnFiber\n ? ((returnFiber = {\n transitions: null,\n markerInstances: null,\n retryQueue: new Set([value])\n }),\n (sourceFiber.updateQueue = returnFiber))\n : ((sourceFiber = returnFiber.retryQueue),\n null === sourceFiber\n ? (returnFiber.retryQueue = new Set([value]))\n : sourceFiber.add(value)),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n }\n throw Error(formatProdErrorMessage(435, sourceFiber.tag));\n }\n attachPingListener(root, value, rootRenderLanes);\n renderDidSuspendDelayIfPossible();\n return !1;\n }\n if (isHydrating)\n return (\n (returnFiber = suspenseHandlerStackCursor.current),\n null !== returnFiber\n ? (0 === (returnFiber.flags & 65536) && (returnFiber.flags |= 256),\n (returnFiber.flags |= 65536),\n (returnFiber.lanes = rootRenderLanes),\n value !== HydrationMismatchException &&\n ((root = Error(formatProdErrorMessage(422), { cause: value })),\n queueHydrationError(createCapturedValueAtFiber(root, sourceFiber))))\n : (value !== HydrationMismatchException &&\n ((returnFiber = Error(formatProdErrorMessage(423), {\n cause: value\n })),\n queueHydrationError(\n createCapturedValueAtFiber(returnFiber, sourceFiber)\n )),\n (root = root.current.alternate),\n (root.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (root.lanes |= rootRenderLanes),\n (value = createCapturedValueAtFiber(value, sourceFiber)),\n (rootRenderLanes = createRootErrorUpdate(\n root.stateNode,\n value,\n rootRenderLanes\n )),\n enqueueCapturedUpdate(root, rootRenderLanes),\n 4 !== workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 2)),\n !1\n );\n var wrapperError = Error(formatProdErrorMessage(520), { cause: value });\n wrapperError = createCapturedValueAtFiber(wrapperError, sourceFiber);\n null === workInProgressRootConcurrentErrors\n ? (workInProgressRootConcurrentErrors = [wrapperError])\n : workInProgressRootConcurrentErrors.push(wrapperError);\n 4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);\n if (null === returnFiber) return !0;\n value = createCapturedValueAtFiber(value, sourceFiber);\n sourceFiber = returnFiber;\n do {\n switch (sourceFiber.tag) {\n case 3:\n return (\n (sourceFiber.flags |= 65536),\n (root = rootRenderLanes & -rootRenderLanes),\n (sourceFiber.lanes |= root),\n (root = createRootErrorUpdate(sourceFiber.stateNode, value, root)),\n enqueueCapturedUpdate(sourceFiber, root),\n !1\n );\n case 1:\n returnFiber = sourceFiber.type;\n wrapperError = sourceFiber.stateNode;\n if (\n 0 === (sourceFiber.flags & 128) &&\n (\"function\" === typeof returnFiber.getDerivedStateFromError ||\n (null !== wrapperError &&\n \"function\" === typeof wrapperError.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(wrapperError))))\n )\n return (\n (sourceFiber.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (sourceFiber.lanes |= rootRenderLanes),\n (rootRenderLanes = createClassErrorUpdate(rootRenderLanes)),\n initializeClassErrorUpdate(\n rootRenderLanes,\n root,\n sourceFiber,\n value\n ),\n enqueueCapturedUpdate(sourceFiber, rootRenderLanes),\n !1\n );\n break;\n case 22:\n if (null !== sourceFiber.memoizedState)\n return (sourceFiber.flags |= 65536), !1;\n }\n sourceFiber = sourceFiber.return;\n } while (null !== sourceFiber);\n return !1;\n}\nvar SelectiveHydrationException = Error(formatProdErrorMessage(461)),\n didReceiveUpdate = !1;\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n workInProgress.child =\n null === current\n ? mountChildFibers(workInProgress, null, nextChildren, renderLanes)\n : reconcileChildFibers(\n workInProgress,\n current.child,\n nextChildren,\n renderLanes\n );\n}\nfunction updateForwardRef(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n Component = Component.render;\n var ref = workInProgress.ref;\n if (\"ref\" in nextProps) {\n var propsWithoutRef = {};\n for (var key in nextProps)\n \"ref\" !== key && (propsWithoutRef[key] = nextProps[key]);\n } else propsWithoutRef = nextProps;\n prepareToReadContext(workInProgress);\n nextProps = renderWithHooks(\n current,\n workInProgress,\n Component,\n propsWithoutRef,\n ref,\n renderLanes\n );\n key = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && key && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null === current) {\n var type = Component.type;\n if (\n \"function\" === typeof type &&\n !shouldConstruct(type) &&\n void 0 === type.defaultProps &&\n null === Component.compare\n )\n return (\n (workInProgress.tag = 15),\n (workInProgress.type = type),\n updateSimpleMemoComponent(\n current,\n workInProgress,\n type,\n nextProps,\n renderLanes\n )\n );\n current = createFiberFromTypeAndProps(\n Component.type,\n null,\n nextProps,\n workInProgress,\n workInProgress.mode,\n renderLanes\n );\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n }\n type = current.child;\n if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n var prevProps = type.memoizedProps;\n Component = Component.compare;\n Component = null !== Component ? Component : shallowEqual;\n if (Component(prevProps, nextProps) && current.ref === workInProgress.ref)\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n }\n workInProgress.flags |= 1;\n current = createWorkInProgress(type, nextProps);\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n}\nfunction updateSimpleMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null !== current) {\n var prevProps = current.memoizedProps;\n if (\n shallowEqual(prevProps, nextProps) &&\n current.ref === workInProgress.ref\n )\n if (\n ((didReceiveUpdate = !1),\n (workInProgress.pendingProps = nextProps = prevProps),\n checkScheduledUpdateOrContext(current, renderLanes))\n )\n 0 !== (current.flags & 131072) && (didReceiveUpdate = !0);\n else\n return (\n (workInProgress.lanes = current.lanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n }\n return updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n );\n}\nfunction updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n nextProps\n) {\n var nextChildren = nextProps.children,\n prevState = null !== current ? current.memoizedState : null;\n null === current &&\n null === workInProgress.stateNode &&\n (workInProgress.stateNode = {\n _visibility: 1,\n _pendingMarkers: null,\n _retryCache: null,\n _transitions: null\n });\n if (\"hidden\" === nextProps.mode) {\n if (0 !== (workInProgress.flags & 128)) {\n prevState =\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;\n if (null !== current) {\n nextProps = workInProgress.child = current.child;\n for (nextChildren = 0; null !== nextProps; )\n (nextChildren =\n nextChildren | nextProps.lanes | nextProps.childLanes),\n (nextProps = nextProps.sibling);\n nextProps = nextChildren & ~prevState;\n } else (nextProps = 0), (workInProgress.child = null);\n return deferHiddenOffscreenComponent(\n current,\n workInProgress,\n prevState,\n renderLanes,\n nextProps\n );\n }\n if (0 !== (renderLanes & 536870912))\n (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),\n null !== current &&\n pushTransition(\n workInProgress,\n null !== prevState ? prevState.cachePool : null\n ),\n null !== prevState\n ? pushHiddenContext(workInProgress, prevState)\n : reuseHiddenContextOnStack(),\n pushOffscreenSuspenseHandler(workInProgress);\n else\n return (\n (nextProps = workInProgress.lanes = 536870912),\n deferHiddenOffscreenComponent(\n current,\n workInProgress,\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,\n renderLanes,\n nextProps\n )\n );\n } else\n null !== prevState\n ? (pushTransition(workInProgress, prevState.cachePool),\n pushHiddenContext(workInProgress, prevState),\n reuseSuspenseHandlerOnStack(),\n (workInProgress.memoizedState = null))\n : (null !== current && pushTransition(workInProgress, null),\n reuseHiddenContextOnStack(),\n reuseSuspenseHandlerOnStack());\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nfunction bailoutOffscreenComponent(current, workInProgress) {\n (null !== current && 22 === current.tag) ||\n null !== workInProgress.stateNode ||\n (workInProgress.stateNode = {\n _visibility: 1,\n _pendingMarkers: null,\n _retryCache: null,\n _transitions: null\n });\n return workInProgress.sibling;\n}\nfunction deferHiddenOffscreenComponent(\n current,\n workInProgress,\n nextBaseLanes,\n renderLanes,\n remainingChildLanes\n) {\n var JSCompiler_inline_result = peekCacheFromPool();\n JSCompiler_inline_result =\n null === JSCompiler_inline_result\n ? null\n : { parent: CacheContext._currentValue, pool: JSCompiler_inline_result };\n workInProgress.memoizedState = {\n baseLanes: nextBaseLanes,\n cachePool: JSCompiler_inline_result\n };\n null !== current && pushTransition(workInProgress, null);\n reuseHiddenContextOnStack();\n pushOffscreenSuspenseHandler(workInProgress);\n null !== current &&\n propagateParentContextChanges(current, workInProgress, renderLanes, !0);\n workInProgress.childLanes = remainingChildLanes;\n return null;\n}\nfunction mountActivityChildren(workInProgress, nextProps) {\n nextProps = mountWorkInProgressOffscreenFiber(\n { mode: nextProps.mode, children: nextProps.children },\n workInProgress.mode\n );\n nextProps.ref = workInProgress.ref;\n workInProgress.child = nextProps;\n nextProps.return = workInProgress;\n return nextProps;\n}\nfunction retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n) {\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n current = mountActivityChildren(workInProgress, workInProgress.pendingProps);\n current.flags |= 2;\n popSuspenseHandler(workInProgress);\n workInProgress.memoizedState = null;\n return current;\n}\nfunction updateActivityComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n didSuspend = 0 !== (workInProgress.flags & 128);\n workInProgress.flags &= -129;\n if (null === current) {\n if (isHydrating) {\n if (\"hidden\" === nextProps.mode)\n return (\n (current = mountActivityChildren(workInProgress, nextProps)),\n (workInProgress.lanes = 536870912),\n (current.memoizedState = { baseLanes: 0, cachePool: null }),\n bailoutOffscreenComponent(null, current)\n );\n pushDehydratedActivitySuspenseHandler(workInProgress);\n (current = nextHydratableInstance)\n ? ((current = canHydrateHydrationBoundary(\n current,\n rootOrSingletonContext\n )),\n (current = null !== current && \"&\" === current.data ? current : null),\n null !== current &&\n ((workInProgress.memoizedState = {\n dehydrated: current,\n treeContext:\n null !== treeContextProvider\n ? { id: treeContextId, overflow: treeContextOverflow }\n : null,\n retryLane: 536870912,\n hydrationErrors: null\n }),\n (renderLanes = createFiberFromDehydratedFragment(current)),\n (renderLanes.return = workInProgress),\n (workInProgress.child = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null)))\n : (current = null);\n if (null === current) throw throwOnHydrationMismatch(workInProgress);\n workInProgress.lanes = 536870912;\n return null;\n }\n return mountActivityChildren(workInProgress, nextProps);\n }\n var prevState = current.memoizedState;\n if (null !== prevState) {\n var dehydrated = prevState.dehydrated;\n pushDehydratedActivitySuspenseHandler(workInProgress);\n if (didSuspend)\n if (workInProgress.flags & 256)\n (workInProgress.flags &= -257),\n (workInProgress = retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n ));\n else if (null !== workInProgress.memoizedState)\n (workInProgress.child = current.child),\n (workInProgress.flags |= 128),\n (workInProgress = null);\n else throw Error(formatProdErrorMessage(558));\n else if (\n (didReceiveUpdate ||\n propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n (didSuspend = 0 !== (renderLanes & current.childLanes)),\n didReceiveUpdate || didSuspend)\n ) {\n if (null === currentTreeHiddenStackCursor.current) {\n nextProps = workInProgressRoot;\n if (\n null !== nextProps &&\n ((dehydrated = getBumpedLaneForHydration(nextProps, renderLanes)),\n 0 !== dehydrated && dehydrated !== prevState.retryLane)\n )\n throw (\n ((prevState.retryLane = dehydrated),\n enqueueConcurrentRenderForLane(current, dehydrated),\n scheduleUpdateOnFiber(nextProps, current, dehydrated),\n SelectiveHydrationException)\n );\n renderDidSuspendDelayIfPossible();\n }\n workInProgress = retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else\n (current = prevState.treeContext),\n (nextHydratableInstance = getNextHydratable(dehydrated.nextSibling)),\n (hydrationParentFiber = workInProgress),\n (isHydrating = !0),\n (hydrationErrors = null),\n (rootOrSingletonContext = !1),\n null !== current &&\n restoreSuspendedTreeContext(workInProgress, current),\n (workInProgress = mountActivityChildren(workInProgress, nextProps)),\n (workInProgress.flags |= 134221824);\n return workInProgress;\n }\n current = createWorkInProgress(current.child, {\n mode: nextProps.mode,\n children: nextProps.children\n });\n current.ref = workInProgress.ref;\n workInProgress.child = current;\n current.return = workInProgress;\n return current;\n}\nfunction markRef(current, workInProgress) {\n var ref = workInProgress.ref;\n if (null === ref)\n null !== current &&\n null !== current.ref &&\n (workInProgress.flags |= 4194816);\n else {\n if (\"function\" !== typeof ref && \"object\" !== typeof ref)\n throw Error(formatProdErrorMessage(284));\n if (null === current || current.ref !== ref)\n workInProgress.flags |= 4194816;\n }\n}\nfunction updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n Component = renderWithHooks(\n current,\n workInProgress,\n Component,\n nextProps,\n void 0,\n renderLanes\n );\n nextProps = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && nextProps && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, Component, renderLanes);\n return workInProgress.child;\n}\nfunction replayFunctionComponent(\n current,\n workInProgress,\n nextProps,\n Component,\n secondArg,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n workInProgress.updateQueue = null;\n nextProps = renderWithHooksAgain(\n workInProgress,\n Component,\n nextProps,\n secondArg\n );\n finishRenderingHooks(current);\n Component = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && Component && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateClassComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n if (null === workInProgress.stateNode) {\n var context = emptyContextObject,\n contextType = Component.contextType;\n \"object\" === typeof contextType &&\n null !== contextType &&\n (context = readContext(contextType));\n context = new Component(nextProps, context);\n workInProgress.memoizedState =\n null !== context.state && void 0 !== context.state ? context.state : null;\n context.updater = classComponentUpdater;\n workInProgress.stateNode = context;\n context._reactInternals = workInProgress;\n context = workInProgress.stateNode;\n context.props = nextProps;\n context.state = workInProgress.memoizedState;\n context.refs = {};\n initializeUpdateQueue(workInProgress);\n contextType = Component.contextType;\n context.context =\n \"object\" === typeof contextType && null !== contextType\n ? readContext(contextType)\n : emptyContextObject;\n context.state = workInProgress.memoizedState;\n contextType = Component.getDerivedStateFromProps;\n \"function\" === typeof contextType &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n contextType,\n nextProps\n ),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof Component.getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n ((contextType = context.state),\n \"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount(),\n contextType !== context.state &&\n classComponentUpdater.enqueueReplaceState(context, context.state, null),\n processUpdateQueue(workInProgress, nextProps, context, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction(),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308);\n nextProps = !0;\n } else if (null === current) {\n context = workInProgress.stateNode;\n var unresolvedOldProps = workInProgress.memoizedProps,\n oldProps = resolveClassComponentProps(Component, unresolvedOldProps);\n context.props = oldProps;\n var oldContext = context.context,\n contextType$jscomp$0 = Component.contextType;\n contextType = emptyContextObject;\n \"object\" === typeof contextType$jscomp$0 &&\n null !== contextType$jscomp$0 &&\n (contextType = readContext(contextType$jscomp$0));\n var getDerivedStateFromProps = Component.getDerivedStateFromProps;\n contextType$jscomp$0 =\n \"function\" === typeof getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate;\n unresolvedOldProps = workInProgress.pendingProps !== unresolvedOldProps;\n contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((unresolvedOldProps || oldContext !== contextType) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n contextType\n ));\n hasForceUpdate = !1;\n var oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n oldContext = workInProgress.memoizedState;\n unresolvedOldProps || oldState !== oldContext || hasForceUpdate\n ? (\"function\" === typeof getDerivedStateFromProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n getDerivedStateFromProps,\n nextProps\n ),\n (oldContext = workInProgress.memoizedState)),\n (oldProps =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n oldProps,\n nextProps,\n oldState,\n oldContext,\n contextType\n ))\n ? (contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n (\"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount()),\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = oldContext)),\n (context.props = nextProps),\n (context.state = oldContext),\n (context.context = contextType),\n (nextProps = oldProps))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (nextProps = !1));\n } else {\n context = workInProgress.stateNode;\n cloneUpdateQueue(current, workInProgress);\n contextType = workInProgress.memoizedProps;\n contextType$jscomp$0 = resolveClassComponentProps(Component, contextType);\n context.props = contextType$jscomp$0;\n getDerivedStateFromProps = workInProgress.pendingProps;\n oldState = context.context;\n oldContext = Component.contextType;\n oldProps = emptyContextObject;\n \"object\" === typeof oldContext &&\n null !== oldContext &&\n (oldProps = readContext(oldContext));\n unresolvedOldProps = Component.getDerivedStateFromProps;\n (oldContext =\n \"function\" === typeof unresolvedOldProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate) ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((contextType !== getDerivedStateFromProps || oldState !== oldProps) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n oldProps\n ));\n hasForceUpdate = !1;\n oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n var newState = workInProgress.memoizedState;\n contextType !== getDerivedStateFromProps ||\n oldState !== newState ||\n hasForceUpdate ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies))\n ? (\"function\" === typeof unresolvedOldProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n unresolvedOldProps,\n nextProps\n ),\n (newState = workInProgress.memoizedState)),\n (contextType$jscomp$0 =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n contextType$jscomp$0,\n nextProps,\n oldState,\n newState,\n oldProps\n ) ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies)))\n ? (oldContext ||\n (\"function\" !== typeof context.UNSAFE_componentWillUpdate &&\n \"function\" !== typeof context.componentWillUpdate) ||\n (\"function\" === typeof context.componentWillUpdate &&\n context.componentWillUpdate(nextProps, newState, oldProps),\n \"function\" === typeof context.UNSAFE_componentWillUpdate &&\n context.UNSAFE_componentWillUpdate(\n nextProps,\n newState,\n oldProps\n )),\n \"function\" === typeof context.componentDidUpdate &&\n (workInProgress.flags |= 4),\n \"function\" === typeof context.getSnapshotBeforeUpdate &&\n (workInProgress.flags |= 1024))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = newState)),\n (context.props = nextProps),\n (context.state = newState),\n (context.context = oldProps),\n (nextProps = contextType$jscomp$0))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (nextProps = !1));\n }\n context = nextProps;\n markRef(current, workInProgress);\n nextProps = 0 !== (workInProgress.flags & 128);\n context || nextProps\n ? ((context = workInProgress.stateNode),\n (Component =\n nextProps && \"function\" !== typeof Component.getDerivedStateFromError\n ? null\n : context.render()),\n (workInProgress.flags |= 1),\n null !== current && nextProps\n ? ((workInProgress.child = reconcileChildFibers(\n workInProgress,\n current.child,\n null,\n renderLanes\n )),\n (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n Component,\n renderLanes\n )))\n : reconcileChildren(current, workInProgress, Component, renderLanes),\n (workInProgress.memoizedState = context.state),\n (current = workInProgress.child))\n : (current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n ));\n return current;\n}\nfunction mountHostRootWithoutHydrating(\n current,\n workInProgress,\n nextChildren,\n renderLanes\n) {\n resetHydrationState();\n workInProgress.flags |= 256;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nvar SUSPENDED_MARKER = {\n dehydrated: null,\n treeContext: null,\n retryLane: 0,\n hydrationErrors: null\n};\nfunction mountSuspenseOffscreenState(renderLanes) {\n return { baseLanes: renderLanes, cachePool: getSuspendedCache() };\n}\nfunction getRemainingWorkInPrimaryTree(\n current,\n primaryTreeDidDefer,\n renderLanes\n) {\n current = null !== current ? current.childLanes & ~renderLanes : 0;\n primaryTreeDidDefer && (current |= workInProgressDeferredLane);\n return current;\n}\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n showFallback = !1,\n didSuspend = 0 !== (workInProgress.flags & 128),\n JSCompiler_temp;\n (JSCompiler_temp = didSuspend) ||\n (JSCompiler_temp =\n null !== current && null === current.memoizedState\n ? !1\n : 0 !== (suspenseStackCursor.current & 2));\n JSCompiler_temp && ((showFallback = !0), (workInProgress.flags &= -129));\n JSCompiler_temp = 0 !== (workInProgress.flags & 32);\n workInProgress.flags &= -33;\n if (null === current) {\n if (isHydrating) {\n showFallback\n ? pushPrimaryTreeSuspenseHandler(workInProgress)\n : reuseSuspenseHandlerOnStack();\n (current = nextHydratableInstance)\n ? ((current = canHydrateHydrationBoundary(\n current,\n rootOrSingletonContext\n )),\n (current = null !== current && \"&\" !== current.data ? current : null),\n null !== current &&\n ((workInProgress.memoizedState = {\n dehydrated: current,\n treeContext:\n null !== treeContextProvider\n ? { id: treeContextId, overflow: treeContextOverflow }\n : null,\n retryLane: 536870912,\n hydrationErrors: null\n }),\n (renderLanes = createFiberFromDehydratedFragment(current)),\n (renderLanes.return = workInProgress),\n (workInProgress.child = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null)))\n : (current = null);\n if (null === current) throw throwOnHydrationMismatch(workInProgress);\n isSuspenseInstanceFallback(current)\n ? (workInProgress.lanes = 32)\n : (workInProgress.lanes = 536870912);\n return null;\n }\n didSuspend = nextProps.children;\n nextProps = nextProps.fallback;\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(),\n (showFallback = workInProgress.mode),\n (didSuspend = mountWorkInProgressOffscreenFiber(\n { mode: \"hidden\", children: didSuspend },\n showFallback\n )),\n (nextProps = createFiberFromFragment(\n nextProps,\n showFallback,\n renderLanes,\n null\n )),\n (didSuspend.return = workInProgress),\n (nextProps.return = workInProgress),\n (didSuspend.sibling = nextProps),\n (workInProgress.child = didSuspend),\n (nextProps = workInProgress.child),\n (nextProps.memoizedState = mountSuspenseOffscreenState(renderLanes)),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n bailoutOffscreenComponent(null, nextProps)\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n return mountSuspensePrimaryChildren(workInProgress, didSuspend);\n }\n var prevState = current.memoizedState;\n if (null !== prevState) {\n var dehydrated$96 = prevState.dehydrated;\n if (null !== dehydrated$96)\n return updateDehydratedSuspenseComponent(\n current,\n workInProgress,\n didSuspend,\n JSCompiler_temp,\n nextProps,\n dehydrated$96,\n prevState,\n renderLanes\n );\n }\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(),\n (showFallback = nextProps.fallback),\n (didSuspend = workInProgress.mode),\n (prevState = current.child),\n (dehydrated$96 = prevState.sibling),\n (nextProps = createWorkInProgress(prevState, {\n mode: \"hidden\",\n children: nextProps.children\n })),\n (nextProps.subtreeFlags = prevState.subtreeFlags & 1206910976),\n null !== dehydrated$96\n ? (showFallback = createWorkInProgress(dehydrated$96, showFallback))\n : ((showFallback = createFiberFromFragment(\n showFallback,\n didSuspend,\n renderLanes,\n null\n )),\n (showFallback.flags |= 2)),\n (showFallback.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextProps.sibling = showFallback),\n (workInProgress.child = nextProps),\n bailoutOffscreenComponent(null, nextProps),\n (nextProps = workInProgress.child),\n (showFallback = current.child.memoizedState),\n null === showFallback\n ? (showFallback = mountSuspenseOffscreenState(renderLanes))\n : ((didSuspend = showFallback.cachePool),\n null !== didSuspend\n ? ((prevState = CacheContext._currentValue),\n (didSuspend =\n didSuspend.parent !== prevState\n ? { parent: prevState, pool: prevState }\n : didSuspend))\n : (didSuspend = getSuspendedCache()),\n (showFallback = {\n baseLanes: showFallback.baseLanes | renderLanes,\n cachePool: didSuspend\n })),\n (nextProps.memoizedState = showFallback),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n bailoutOffscreenComponent(current.child, nextProps)\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n renderLanes = current.child;\n current = renderLanes.sibling;\n renderLanes = createWorkInProgress(renderLanes, {\n mode: \"visible\",\n children: nextProps.children\n });\n renderLanes.return = workInProgress;\n renderLanes.sibling = null;\n null !== current &&\n ((JSCompiler_temp = workInProgress.deletions),\n null === JSCompiler_temp\n ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16))\n : JSCompiler_temp.push(current));\n workInProgress.child = renderLanes;\n workInProgress.memoizedState = null;\n return renderLanes;\n}\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren) {\n primaryChildren = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: primaryChildren },\n workInProgress.mode\n );\n primaryChildren.return = workInProgress;\n return (workInProgress.child = primaryChildren);\n}\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode) {\n offscreenProps = createFiberImplClass(22, offscreenProps, null, mode);\n offscreenProps.lanes = 0;\n return offscreenProps;\n}\nfunction retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n) {\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n current = mountSuspensePrimaryChildren(\n workInProgress,\n workInProgress.pendingProps.children\n );\n current.flags |= 2;\n workInProgress.memoizedState = null;\n return current;\n}\nfunction updateDehydratedSuspenseComponent(\n current,\n workInProgress,\n didSuspend,\n didPrimaryChildrenDefer,\n nextProps,\n suspenseInstance,\n suspenseState,\n renderLanes\n) {\n if (didSuspend) {\n if (workInProgress.flags & 256)\n return (\n pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags &= -257),\n retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n )\n );\n if (null !== workInProgress.memoizedState)\n return (\n reuseSuspenseHandlerOnStack(),\n (workInProgress.child = current.child),\n (workInProgress.flags |= 128),\n null\n );\n reuseSuspenseHandlerOnStack();\n suspenseInstance = nextProps.fallback;\n suspenseState = workInProgress.mode;\n nextProps = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: nextProps.children },\n suspenseState\n );\n suspenseInstance = createFiberFromFragment(\n suspenseInstance,\n suspenseState,\n renderLanes,\n null\n );\n suspenseInstance.flags |= 2;\n nextProps.return = workInProgress;\n suspenseInstance.return = workInProgress;\n nextProps.sibling = suspenseInstance;\n workInProgress.child = nextProps;\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n nextProps = workInProgress.child;\n nextProps.memoizedState = mountSuspenseOffscreenState(renderLanes);\n nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n didPrimaryChildrenDefer,\n renderLanes\n );\n workInProgress.memoizedState = SUSPENDED_MARKER;\n return bailoutOffscreenComponent(null, nextProps);\n }\n pushPrimaryTreeSuspenseHandler(workInProgress);\n if (isSuspenseInstanceFallback(suspenseInstance)) {\n didPrimaryChildrenDefer =\n suspenseInstance.nextSibling && suspenseInstance.nextSibling.dataset;\n if (didPrimaryChildrenDefer) var digest = didPrimaryChildrenDefer.dgst;\n didPrimaryChildrenDefer = digest;\n \"\" !== didPrimaryChildrenDefer &&\n ((nextProps = Error(formatProdErrorMessage(419))),\n (nextProps.stack = \"\"),\n (nextProps.digest = didPrimaryChildrenDefer),\n queueHydrationError({ value: nextProps, source: null, stack: null }));\n return retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n }\n didReceiveUpdate ||\n propagateParentContextChanges(current, workInProgress, renderLanes, !1);\n didPrimaryChildrenDefer = 0 !== (renderLanes & current.childLanes);\n if (didReceiveUpdate || didPrimaryChildrenDefer) {\n if (null !== currentTreeHiddenStackCursor.current)\n return retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n didPrimaryChildrenDefer = workInProgressRoot;\n if (\n null !== didPrimaryChildrenDefer &&\n ((nextProps = getBumpedLaneForHydration(\n didPrimaryChildrenDefer,\n renderLanes\n )),\n 0 !== nextProps && nextProps !== suspenseState.retryLane)\n )\n throw (\n ((suspenseState.retryLane = nextProps),\n enqueueConcurrentRenderForLane(current, nextProps),\n scheduleUpdateOnFiber(didPrimaryChildrenDefer, current, nextProps),\n SelectiveHydrationException)\n );\n isSuspenseInstancePending(suspenseInstance) ||\n renderDidSuspendDelayIfPossible();\n return retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n }\n if (isSuspenseInstancePending(suspenseInstance))\n return (\n (workInProgress.flags |= 192),\n (workInProgress.child = current.child),\n null\n );\n current = suspenseState.treeContext;\n nextHydratableInstance = getNextHydratable(suspenseInstance.nextSibling);\n hydrationParentFiber = workInProgress;\n isHydrating = !0;\n hydrationErrors = null;\n rootOrSingletonContext = !1;\n null !== current && restoreSuspendedTreeContext(workInProgress, current);\n workInProgress = mountSuspensePrimaryChildren(\n workInProgress,\n nextProps.children\n );\n workInProgress.flags |= 134221824;\n return workInProgress;\n}\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n fiber.lanes |= renderLanes;\n var alternate = fiber.alternate;\n null !== alternate && (alternate.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\nfunction findLastContentRow(firstChild) {\n for (var lastContentRow = null; null !== firstChild; ) {\n var currentRow = firstChild.alternate;\n null !== currentRow &&\n null === findFirstSuspended(currentRow) &&\n (lastContentRow = firstChild);\n firstChild = firstChild.sibling;\n }\n return lastContentRow;\n}\nfunction initSuspenseListRenderState(\n workInProgress,\n isBackwards,\n tail,\n lastContentRow,\n tailMode,\n treeForkCount\n) {\n var renderState = workInProgress.memoizedState;\n null === renderState\n ? (workInProgress.memoizedState = {\n isBackwards: isBackwards,\n rendering: null,\n renderingStartTime: 0,\n last: lastContentRow,\n tail: tail,\n tailMode: tailMode,\n treeForkCount: treeForkCount\n })\n : ((renderState.isBackwards = isBackwards),\n (renderState.rendering = null),\n (renderState.renderingStartTime = 0),\n (renderState.last = lastContentRow),\n (renderState.tail = tail),\n (renderState.tailMode = tailMode),\n (renderState.treeForkCount = treeForkCount));\n}\nfunction reverseChildren(fiber) {\n var row = fiber.child;\n for (fiber.child = null; null !== row; ) {\n var nextRow = row.sibling;\n row.sibling = fiber.child;\n fiber.child = row;\n row = nextRow;\n }\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n revealOrder = nextProps.revealOrder,\n tailMode = nextProps.tail;\n nextProps = nextProps.children;\n var suspenseContext = suspenseStackCursor.current;\n if (workInProgress.flags & 128)\n return pushSuspenseListContext(workInProgress, suspenseContext), null;\n var shouldForceFallback = 0 !== (suspenseContext & 2);\n shouldForceFallback\n ? ((suspenseContext = (suspenseContext & 1) | 2),\n (workInProgress.flags |= 128))\n : (suspenseContext &= 1);\n pushSuspenseListContext(workInProgress, suspenseContext);\n \"backwards\" === revealOrder && null !== current\n ? (reverseChildren(current),\n reconcileChildren(current, workInProgress, nextProps, renderLanes),\n reverseChildren(current))\n : reconcileChildren(current, workInProgress, nextProps, renderLanes);\n nextProps = isHydrating ? treeForkCount : 0;\n if (!shouldForceFallback && null !== current && 0 !== (current.flags & 128))\n a: for (current = workInProgress.child; null !== current; ) {\n if (13 === current.tag)\n null !== current.memoizedState &&\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (19 === current.tag)\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (null !== current.child) {\n current.child.return = current;\n current = current.child;\n continue;\n }\n if (current === workInProgress) break a;\n for (; null === current.sibling; ) {\n if (null === current.return || current.return === workInProgress)\n break a;\n current = current.return;\n }\n current.sibling.return = current.return;\n current = current.sibling;\n }\n switch (revealOrder) {\n case \"backwards\":\n renderLanes = findLastContentRow(workInProgress.child);\n null === renderLanes\n ? ((revealOrder = workInProgress.child), (workInProgress.child = null))\n : ((revealOrder = renderLanes.sibling),\n (renderLanes.sibling = null),\n reverseChildren(workInProgress));\n initSuspenseListRenderState(\n workInProgress,\n !0,\n revealOrder,\n null,\n tailMode,\n nextProps\n );\n break;\n case \"unstable_legacy-backwards\":\n renderLanes = null;\n revealOrder = workInProgress.child;\n for (workInProgress.child = null; null !== revealOrder; ) {\n current = revealOrder.alternate;\n if (null !== current && null === findFirstSuspended(current)) {\n workInProgress.child = revealOrder;\n break;\n }\n current = revealOrder.sibling;\n revealOrder.sibling = renderLanes;\n renderLanes = revealOrder;\n revealOrder = current;\n }\n initSuspenseListRenderState(\n workInProgress,\n !0,\n renderLanes,\n null,\n tailMode,\n nextProps\n );\n break;\n case \"together\":\n initSuspenseListRenderState(\n workInProgress,\n !1,\n null,\n null,\n void 0,\n nextProps\n );\n break;\n case \"independent\":\n workInProgress.memoizedState = null;\n break;\n default:\n (renderLanes = findLastContentRow(workInProgress.child)),\n null === renderLanes\n ? ((revealOrder = workInProgress.child),\n (workInProgress.child = null))\n : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null)),\n initSuspenseListRenderState(\n workInProgress,\n !1,\n revealOrder,\n renderLanes,\n tailMode,\n nextProps\n );\n }\n return workInProgress.child;\n}\nfunction updateContextProvider(current, workInProgress, renderLanes) {\n var newProps = workInProgress.pendingProps;\n pushProvider(workInProgress, workInProgress.type, newProps.value);\n reconcileChildren(current, workInProgress, newProps.children, renderLanes);\n return workInProgress.child;\n}\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n null !== current && (workInProgress.dependencies = current.dependencies);\n workInProgressRootSkippedLanes |= workInProgress.lanes;\n if (0 === (renderLanes & workInProgress.childLanes))\n if (null !== current) {\n if (\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n 0 === (renderLanes & workInProgress.childLanes))\n )\n return null;\n } else return null;\n if (null !== current && workInProgress.child !== current.child)\n throw Error(formatProdErrorMessage(153));\n if (null !== workInProgress.child) {\n current = workInProgress.child;\n renderLanes = createWorkInProgress(current, current.pendingProps);\n workInProgress.child = renderLanes;\n for (renderLanes.return = workInProgress; null !== current.sibling; )\n (current = current.sibling),\n (renderLanes = renderLanes.sibling =\n createWorkInProgress(current, current.pendingProps)),\n (renderLanes.return = workInProgress);\n renderLanes.sibling = null;\n }\n return workInProgress.child;\n}\nfunction checkScheduledUpdateOrContext(current, renderLanes) {\n if (0 !== (current.lanes & renderLanes)) return !0;\n current = current.dependencies;\n return null !== current && checkIfContextChanged(current) ? !0 : !1;\n}\nfunction attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n) {\n switch (workInProgress.tag) {\n case 3:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n resetHydrationState();\n break;\n case 27:\n case 5:\n pushHostContext(workInProgress);\n break;\n case 4:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n break;\n case 10:\n pushProvider(\n workInProgress,\n workInProgress.type,\n workInProgress.memoizedProps.value\n );\n break;\n case 31:\n if (null !== workInProgress.memoizedState)\n return (\n (workInProgress.flags |= 128),\n pushDehydratedActivitySuspenseHandler(workInProgress),\n null\n );\n break;\n case 13:\n var state$108 = workInProgress.memoizedState;\n if (null !== state$108) {\n if (null !== state$108.dehydrated)\n return (\n pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags |= 128),\n null\n );\n state$108 = propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n );\n var primaryChildLanes = workInProgress.child.childLanes;\n if (state$108 || 0 !== (renderLanes & primaryChildLanes))\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n pushPrimaryTreeSuspenseHandler(workInProgress);\n current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n return null !== current ? current.sibling : null;\n }\n pushPrimaryTreeSuspenseHandler(workInProgress);\n break;\n case 19:\n if (workInProgress.flags & 128)\n return updateSuspenseListComponent(\n current,\n workInProgress,\n renderLanes\n );\n primaryChildLanes = 0 !== (current.flags & 128);\n state$108 = 0 !== (renderLanes & workInProgress.childLanes);\n state$108 ||\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n (state$108 = 0 !== (renderLanes & workInProgress.childLanes)));\n if (primaryChildLanes) {\n if (state$108)\n return updateSuspenseListComponent(\n current,\n workInProgress,\n renderLanes\n );\n workInProgress.flags |= 128;\n }\n primaryChildLanes = workInProgress.memoizedState;\n null !== primaryChildLanes &&\n ((primaryChildLanes.rendering = null),\n (primaryChildLanes.tail = null),\n (primaryChildLanes.lastEffect = null));\n pushSuspenseListContext(workInProgress, suspenseStackCursor.current);\n if (state$108) break;\n else return null;\n case 22:\n return (\n (workInProgress.lanes = 0),\n updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n workInProgress.pendingProps\n )\n );\n case 24:\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n }\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\nfunction beginWork(current, workInProgress, renderLanes) {\n if (null !== current)\n if (current.memoizedProps !== workInProgress.pendingProps)\n didReceiveUpdate = !0;\n else {\n if (\n !checkScheduledUpdateOrContext(current, renderLanes) &&\n 0 === (workInProgress.flags & 128)\n )\n return (\n (didReceiveUpdate = !1),\n attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n )\n );\n didReceiveUpdate = 0 !== (current.flags & 131072) ? !0 : !1;\n }\n else\n (didReceiveUpdate = !1),\n isHydrating &&\n 0 !== (workInProgress.flags & 1048576) &&\n pushTreeId(workInProgress, treeForkCount, workInProgress.index);\n workInProgress.lanes = 0;\n switch (workInProgress.tag) {\n case 16:\n a: {\n var props = workInProgress.pendingProps;\n current = resolveLazy(workInProgress.elementType);\n workInProgress.type = current;\n if (\"function\" === typeof current)\n shouldConstruct(current)\n ? ((props = resolveClassComponentProps(current, props)),\n (workInProgress.tag = 1),\n (workInProgress = updateClassComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n )))\n : ((workInProgress.tag = 0),\n (workInProgress = updateFunctionComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n )));\n else {\n if (void 0 !== current && null !== current) {\n var $$typeof = current.$$typeof;\n if ($$typeof === REACT_FORWARD_REF_TYPE) {\n workInProgress.tag = 11;\n workInProgress = updateForwardRef(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n );\n break a;\n } else if ($$typeof === REACT_MEMO_TYPE) {\n workInProgress.tag = 14;\n workInProgress = updateMemoComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n );\n break a;\n } else if ($$typeof === REACT_CONTEXT_TYPE) {\n workInProgress.tag = 10;\n workInProgress.type = current;\n workInProgress = updateContextProvider(\n null,\n workInProgress,\n renderLanes\n );\n break a;\n }\n }\n workInProgress = getComponentNameFromType(current) || current;\n throw Error(formatProdErrorMessage(306, workInProgress, \"\"));\n }\n }\n return workInProgress;\n case 0:\n return updateFunctionComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 1:\n return (\n (props = workInProgress.type),\n ($$typeof = resolveClassComponentProps(\n props,\n workInProgress.pendingProps\n )),\n updateClassComponent(\n current,\n workInProgress,\n props,\n $$typeof,\n renderLanes\n )\n );\n case 3:\n a: {\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n );\n if (null === current) throw Error(formatProdErrorMessage(387));\n props = workInProgress.pendingProps;\n var prevState = workInProgress.memoizedState;\n $$typeof = prevState.element;\n cloneUpdateQueue(current, workInProgress);\n processUpdateQueue(workInProgress, props, null, renderLanes);\n var nextState = workInProgress.memoizedState;\n props = nextState.cache;\n pushProvider(workInProgress, CacheContext, props);\n props !== prevState.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n );\n suspendIfUpdateReadFromEntangledAsyncAction();\n props = nextState.element;\n if (prevState.isDehydrated)\n if (\n ((prevState = {\n element: props,\n isDehydrated: !1,\n cache: nextState.cache\n }),\n (workInProgress.updateQueue.baseState = prevState),\n (workInProgress.memoizedState = prevState),\n workInProgress.flags & 256)\n ) {\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n props,\n renderLanes\n );\n break a;\n } else if (props !== $$typeof) {\n $$typeof = createCapturedValueAtFiber(\n Error(formatProdErrorMessage(424)),\n workInProgress\n );\n queueHydrationError($$typeof);\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n props,\n renderLanes\n );\n break a;\n } else {\n current = workInProgress.stateNode.containerInfo;\n switch (current.nodeType) {\n case 9:\n current = current.body;\n break;\n default:\n current =\n \"HTML\" === current.nodeName\n ? current.ownerDocument.body\n : current;\n }\n nextHydratableInstance = getNextHydratable(current.firstChild);\n hydrationParentFiber = workInProgress;\n isHydrating = !0;\n hydrationErrors = null;\n rootOrSingletonContext = !0;\n renderLanes = mountChildFibers(\n workInProgress,\n null,\n props,\n renderLanes\n );\n for (workInProgress.child = renderLanes; renderLanes; )\n (renderLanes.flags = (renderLanes.flags & -3) | 134221824),\n (renderLanes = renderLanes.sibling);\n }\n else {\n resetHydrationState();\n if (props === $$typeof) {\n workInProgress = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n break a;\n }\n reconcileChildren(current, workInProgress, props, renderLanes);\n }\n workInProgress = workInProgress.child;\n }\n return workInProgress;\n case 26:\n return (\n markRef(current, workInProgress),\n null === current\n ? (renderLanes = getResource(\n workInProgress.type,\n null,\n workInProgress.pendingProps,\n null\n ))\n ? (workInProgress.memoizedState = renderLanes)\n : isHydrating ||\n (workInProgress.stateNode = createHoistableInstance(\n workInProgress.type,\n workInProgress.pendingProps,\n rootInstanceStackCursor.current,\n workInProgress\n ))\n : (workInProgress.memoizedState = getResource(\n workInProgress.type,\n current.memoizedProps,\n workInProgress.pendingProps,\n current.memoizedState\n )),\n null\n );\n case 27:\n return (\n pushHostContext(workInProgress),\n null === current &&\n isHydrating &&\n ((props = workInProgress.stateNode =\n resolveSingletonInstance(\n workInProgress.type,\n workInProgress.pendingProps,\n rootInstanceStackCursor.current\n )),\n (hydrationParentFiber = workInProgress),\n (rootOrSingletonContext = !0),\n ($$typeof = nextHydratableInstance),\n isSingletonScope(workInProgress.type)\n ? ((previousHydratableOnEnteringScopedSingleton = $$typeof),\n (nextHydratableInstance = getNextHydratable(props.firstChild)))\n : (nextHydratableInstance = $$typeof)),\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n markRef(current, workInProgress),\n null === current && (workInProgress.flags |= 4194304),\n workInProgress.child\n );\n case 5:\n if (null === current && isHydrating) {\n if (($$typeof = props = nextHydratableInstance))\n (props = canHydrateInstance(\n props,\n workInProgress.type,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== props\n ? ((workInProgress.stateNode = props),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = getNextHydratable(props.firstChild)),\n (rootOrSingletonContext = !1),\n ($$typeof = !0))\n : ($$typeof = !1);\n $$typeof || throwOnHydrationMismatch(workInProgress);\n }\n pushHostContext(workInProgress);\n $$typeof = workInProgress.type;\n prevState = workInProgress.pendingProps;\n nextState = null !== current ? current.memoizedProps : null;\n props = prevState.children;\n shouldSetTextContent($$typeof, prevState)\n ? (props = null)\n : null !== nextState &&\n shouldSetTextContent($$typeof, nextState) &&\n (workInProgress.flags |= 32);\n null !== workInProgress.memoizedState &&\n (($$typeof = renderWithHooks(\n current,\n workInProgress,\n TransitionAwareHostComponent,\n null,\n null,\n renderLanes\n )),\n (HostTransitionContext._currentValue = $$typeof));\n markRef(current, workInProgress);\n reconcileChildren(current, workInProgress, props, renderLanes);\n return workInProgress.child;\n case 6:\n if (null === current && isHydrating) {\n if ((current = renderLanes = nextHydratableInstance))\n (renderLanes = canHydrateTextInstance(\n renderLanes,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== renderLanes\n ? ((workInProgress.stateNode = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null),\n (current = !0))\n : (current = !1);\n current || throwOnHydrationMismatch(workInProgress);\n }\n return null;\n case 13:\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n case 4:\n return (\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n ),\n (props = workInProgress.pendingProps),\n null === current\n ? (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n props,\n renderLanes\n ))\n : reconcileChildren(current, workInProgress, props, renderLanes),\n workInProgress.child\n );\n case 11:\n return updateForwardRef(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 7:\n return (\n (props = workInProgress.pendingProps),\n markRef(current, workInProgress),\n reconcileChildren(current, workInProgress, props, renderLanes),\n workInProgress.child\n );\n case 8:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 12:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 10:\n return updateContextProvider(current, workInProgress, renderLanes);\n case 9:\n return (\n ($$typeof = workInProgress.type._context),\n (props = workInProgress.pendingProps.children),\n prepareToReadContext(workInProgress),\n ($$typeof = readContext($$typeof)),\n (props = props($$typeof)),\n (workInProgress.flags |= 1),\n reconcileChildren(current, workInProgress, props, renderLanes),\n workInProgress.child\n );\n case 14:\n return updateMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 15:\n return updateSimpleMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 19:\n return updateSuspenseListComponent(current, workInProgress, renderLanes);\n case 31:\n return updateActivityComponent(current, workInProgress, renderLanes);\n case 22:\n return updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n workInProgress.pendingProps\n );\n case 24:\n return (\n prepareToReadContext(workInProgress),\n (props = readContext(CacheContext)),\n null === current\n ? (($$typeof = peekCacheFromPool()),\n null === $$typeof &&\n (($$typeof = workInProgressRoot),\n (prevState = createCache()),\n ($$typeof.pooledCache = prevState),\n prevState.refCount++,\n null !== prevState && ($$typeof.pooledCacheLanes |= renderLanes),\n ($$typeof = prevState)),\n (workInProgress.memoizedState = { parent: props, cache: $$typeof }),\n initializeUpdateQueue(workInProgress),\n pushProvider(workInProgress, CacheContext, $$typeof))\n : (0 !== (current.lanes & renderLanes) &&\n (cloneUpdateQueue(current, workInProgress),\n processUpdateQueue(workInProgress, null, null, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction()),\n ($$typeof = current.memoizedState),\n (prevState = workInProgress.memoizedState),\n $$typeof.parent !== props\n ? (($$typeof = { parent: props, cache: props }),\n (workInProgress.memoizedState = $$typeof),\n 0 === workInProgress.lanes &&\n (workInProgress.memoizedState =\n workInProgress.updateQueue.baseState =\n $$typeof),\n pushProvider(workInProgress, CacheContext, props))\n : ((props = prevState.cache),\n pushProvider(workInProgress, CacheContext, props),\n props !== $$typeof.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n ))),\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 30:\n return (\n null === workInProgress.stateNode &&\n (workInProgress.stateNode = {\n autoName: null,\n paired: null,\n clones: null,\n ref: null\n }),\n (props = workInProgress.pendingProps),\n null != props.name && \"auto\" !== props.name\n ? (workInProgress.flags |= null === current ? 18882560 : 18874368)\n : isHydrating && pushMaterializedTreeId(workInProgress),\n null !== current && current.memoizedProps.name !== props.name\n ? (workInProgress.flags |= 4194816)\n : markRef(current, workInProgress),\n reconcileChildren(current, workInProgress, props.children, renderLanes),\n workInProgress.child\n );\n case 29:\n throw workInProgress.pendingProps;\n }\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction markUpdate(workInProgress) {\n workInProgress.flags |= 4;\n}\nfunction preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n oldProps,\n newProps,\n renderLanes\n) {\n var JSCompiler_temp;\n if ((JSCompiler_temp = 0 !== (workInProgress.mode & 32)))\n JSCompiler_temp =\n null === oldProps\n ? maySuspendCommit(type, newProps)\n : maySuspendCommit(type, newProps) &&\n (newProps.src !== oldProps.src ||\n newProps.srcSet !== oldProps.srcSet);\n if (JSCompiler_temp) {\n if (\n ((workInProgress.flags |= 16777216),\n (renderLanes & 335544128) === renderLanes)\n )\n if (workInProgress.stateNode.complete) workInProgress.flags |= 8192;\n else if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n else\n throw (\n ((suspendedThenable = noopSuspenseyCommitThenable),\n SuspenseyCommitException)\n );\n } else workInProgress.flags &= -16777217;\n}\nfunction preloadResourceAndSuspendIfNeeded(workInProgress, resource) {\n if (\"stylesheet\" !== resource.type || 0 !== (resource.state.loading & 4))\n workInProgress.flags &= -16777217;\n else if (((workInProgress.flags |= 16777216), !preloadResource(resource)))\n if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n else\n throw (\n ((suspendedThenable = noopSuspenseyCommitThenable),\n SuspenseyCommitException)\n );\n}\nfunction scheduleRetryEffect(workInProgress, retryQueue) {\n null !== retryQueue && (workInProgress.flags |= 4);\n workInProgress.flags & 16384 &&\n ((retryQueue =\n 22 !== workInProgress.tag ? claimNextRetryLane() : 536870912),\n (workInProgress.lanes |= retryQueue),\n (workInProgressSuspendedRetryLanes |= retryQueue));\n}\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n if (!isHydrating)\n switch (renderState.tailMode) {\n case \"visible\":\n break;\n case \"collapsed\":\n for (\n var tailNode = renderState.tail, lastTailNode = null;\n null !== tailNode;\n\n )\n null !== tailNode.alternate && (lastTailNode = tailNode),\n (tailNode = tailNode.sibling);\n null === lastTailNode\n ? hasRenderedATailFallback || null === renderState.tail\n ? (renderState.tail = null)\n : (renderState.tail.sibling = null)\n : (lastTailNode.sibling = null);\n break;\n default:\n hasRenderedATailFallback = renderState.tail;\n for (tailNode = null; null !== hasRenderedATailFallback; )\n null !== hasRenderedATailFallback.alternate &&\n (tailNode = hasRenderedATailFallback),\n (hasRenderedATailFallback = hasRenderedATailFallback.sibling);\n null === tailNode\n ? (renderState.tail = null)\n : (tailNode.sibling = null);\n }\n}\nfunction bubbleProperties(completedWork) {\n var didBailout =\n null !== completedWork.alternate &&\n completedWork.alternate.child === completedWork.child,\n newChildLanes = 0,\n subtreeFlags = 0;\n if (didBailout)\n for (var child$113 = completedWork.child; null !== child$113; )\n (newChildLanes |= child$113.lanes | child$113.childLanes),\n (subtreeFlags |= child$113.subtreeFlags & 1206910976),\n (subtreeFlags |= child$113.flags & 1206910976),\n (child$113.return = completedWork),\n (child$113 = child$113.sibling);\n else\n for (child$113 = completedWork.child; null !== child$113; )\n (newChildLanes |= child$113.lanes | child$113.childLanes),\n (subtreeFlags |= child$113.subtreeFlags),\n (subtreeFlags |= child$113.flags),\n (child$113.return = completedWork),\n (child$113 = child$113.sibling);\n completedWork.subtreeFlags |= subtreeFlags;\n completedWork.childLanes = newChildLanes;\n return didBailout;\n}\nfunction completeWork(current, workInProgress, renderLanes) {\n var newProps = workInProgress.pendingProps;\n popTreeContext(workInProgress);\n switch (workInProgress.tag) {\n case 16:\n case 15:\n case 0:\n case 11:\n case 7:\n case 8:\n case 12:\n case 9:\n case 14:\n return bubbleProperties(workInProgress), null;\n case 1:\n return bubbleProperties(workInProgress), null;\n case 3:\n renderLanes = workInProgress.stateNode;\n newProps = null;\n null !== current && (newProps = current.memoizedState.cache);\n workInProgress.memoizedState.cache !== newProps &&\n (workInProgress.flags |= 2048);\n popProvider(CacheContext);\n popHostContainer();\n renderLanes.pendingContext &&\n ((renderLanes.context = renderLanes.pendingContext),\n (renderLanes.pendingContext = null));\n if (null === current || null === current.child)\n popHydrationState(workInProgress)\n ? markUpdate(workInProgress)\n : null === current ||\n (current.memoizedState.isDehydrated &&\n 0 === (workInProgress.flags & 256)) ||\n ((workInProgress.flags |= 1024),\n upgradeHydrationErrorsToRecoverable());\n bubbleProperties(workInProgress);\n return null;\n case 26:\n var type = workInProgress.type,\n nextResource = workInProgress.memoizedState;\n null === current\n ? (markUpdate(workInProgress),\n null !== nextResource\n ? (bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n : (bubbleProperties(workInProgress),\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n null,\n newProps,\n renderLanes\n )))\n : nextResource\n ? nextResource !== current.memoizedState\n ? (markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n : (bubbleProperties(workInProgress),\n (workInProgress.flags &= -16777217))\n : ((current = current.memoizedProps),\n current !== newProps && markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n current,\n newProps,\n renderLanes\n ));\n return null;\n case 27:\n popHostContext(workInProgress);\n renderLanes = rootInstanceStackCursor.current;\n type = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n workInProgress.subtreeFlags &= -33554433;\n return null;\n }\n current = contextStackCursor.current;\n popHydrationState(workInProgress)\n ? prepareToHydrateHostInstance(workInProgress, current)\n : ((current = resolveSingletonInstance(type, newProps, renderLanes)),\n (workInProgress.stateNode = current),\n markUpdate(workInProgress));\n }\n bubbleProperties(workInProgress);\n workInProgress.subtreeFlags &= -33554433;\n return null;\n case 5:\n popHostContext(workInProgress);\n type = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n workInProgress.subtreeFlags &= -33554433;\n return null;\n }\n nextResource = contextStackCursor.current;\n if (popHydrationState(workInProgress))\n prepareToHydrateHostInstance(workInProgress, nextResource);\n else {\n var ownerDocument = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n );\n switch (nextResource) {\n case 1:\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/2000/svg\",\n type\n );\n break;\n case 2:\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n type\n );\n break;\n default:\n switch (type) {\n case \"svg\":\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/2000/svg\",\n type\n );\n break;\n case \"math\":\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n type\n );\n break;\n case \"script\":\n nextResource = ownerDocument.createElement(\"div\");\n nextResource.innerHTML = \"<script>\\x3c/script>\";\n nextResource = nextResource.removeChild(\n nextResource.firstChild\n );\n break;\n case \"select\":\n nextResource =\n \"string\" === typeof newProps.is\n ? ownerDocument.createElement(\"select\", {\n is: newProps.is\n })\n : ownerDocument.createElement(\"select\");\n newProps.multiple\n ? (nextResource.multiple = !0)\n : newProps.size && (nextResource.size = newProps.size);\n break;\n default:\n nextResource =\n \"string\" === typeof newProps.is\n ? ownerDocument.createElement(type, { is: newProps.is })\n : ownerDocument.createElement(type);\n }\n }\n nextResource[internalInstanceKey] = workInProgress;\n nextResource[internalPropsKey] = newProps;\n a: for (\n ownerDocument = workInProgress.child;\n null !== ownerDocument;\n\n ) {\n if (5 === ownerDocument.tag || 6 === ownerDocument.tag)\n nextResource.appendChild(ownerDocument.stateNode);\n else if (\n 4 !== ownerDocument.tag &&\n 27 !== ownerDocument.tag &&\n null !== ownerDocument.child\n ) {\n ownerDocument.child.return = ownerDocument;\n ownerDocument = ownerDocument.child;\n continue;\n }\n if (ownerDocument === workInProgress) break a;\n for (; null === ownerDocument.sibling; ) {\n if (\n null === ownerDocument.return ||\n ownerDocument.return === workInProgress\n )\n break a;\n ownerDocument = ownerDocument.return;\n }\n ownerDocument.sibling.return = ownerDocument.return;\n ownerDocument = ownerDocument.sibling;\n }\n workInProgress.stateNode = nextResource;\n a: switch (\n (setInitialProperties(nextResource, type, newProps), type)\n ) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n newProps = !!newProps.autoFocus;\n break a;\n case \"img\":\n newProps = !0;\n break a;\n default:\n newProps = !1;\n }\n newProps && markUpdate(workInProgress);\n }\n }\n bubbleProperties(workInProgress);\n workInProgress.subtreeFlags &= -33554433;\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n workInProgress.type,\n null === current ? null : current.memoizedProps,\n workInProgress.pendingProps,\n renderLanes\n );\n return null;\n case 6:\n if (current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (\"string\" !== typeof newProps && null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n current = rootInstanceStackCursor.current;\n if (popHydrationState(workInProgress)) {\n current = workInProgress.stateNode;\n renderLanes = workInProgress.memoizedProps;\n newProps = null;\n type = hydrationParentFiber;\n if (null !== type)\n switch (type.tag) {\n case 27:\n case 5:\n newProps = type.memoizedProps;\n }\n current[internalInstanceKey] = workInProgress;\n current =\n current.nodeValue === renderLanes ||\n (null !== newProps && !0 === newProps.suppressHydrationWarning) ||\n checkForUnmatchedText(current.nodeValue, renderLanes)\n ? !0\n : !1;\n current || throwOnHydrationMismatch(workInProgress, !0);\n } else\n (current =\n getOwnerDocumentFromRootContainer(current).createTextNode(\n newProps\n )),\n (current[internalInstanceKey] = workInProgress),\n (workInProgress.stateNode = current);\n }\n bubbleProperties(workInProgress);\n return null;\n case 31:\n renderLanes = workInProgress.memoizedState;\n if (null === current || null !== current.memoizedState) {\n newProps = popHydrationState(workInProgress);\n if (null !== renderLanes) {\n if (null === current) {\n if (!newProps) throw Error(formatProdErrorMessage(318));\n current = workInProgress.memoizedState;\n current = null !== current ? current.dehydrated : null;\n if (!current) throw Error(formatProdErrorMessage(557));\n current[internalInstanceKey] = workInProgress;\n } else\n resetHydrationState(),\n 0 === (workInProgress.flags & 128) &&\n (workInProgress.memoizedState = null),\n (workInProgress.flags |= 4);\n bubbleProperties(workInProgress);\n current = !1;\n } else\n (renderLanes = upgradeHydrationErrorsToRecoverable()),\n null !== current &&\n null !== current.memoizedState &&\n (current.memoizedState.hydrationErrors = renderLanes),\n (current = !0);\n if (!current) {\n if (workInProgress.flags & 256)\n return popSuspenseHandler(workInProgress), workInProgress;\n popSuspenseHandler(workInProgress);\n return null;\n }\n if (0 !== (workInProgress.flags & 128))\n throw Error(formatProdErrorMessage(558));\n }\n bubbleProperties(workInProgress);\n return null;\n case 13:\n newProps = workInProgress.memoizedState;\n if (\n null === current ||\n (null !== current.memoizedState &&\n null !== current.memoizedState.dehydrated)\n ) {\n type = popHydrationState(workInProgress);\n if (null !== newProps && null !== newProps.dehydrated) {\n if (null === current) {\n if (!type) throw Error(formatProdErrorMessage(318));\n type = workInProgress.memoizedState;\n type = null !== type ? type.dehydrated : null;\n if (!type) throw Error(formatProdErrorMessage(317));\n type[internalInstanceKey] = workInProgress;\n } else\n resetHydrationState(),\n 0 === (workInProgress.flags & 128) &&\n (workInProgress.memoizedState = null),\n (workInProgress.flags |= 4);\n bubbleProperties(workInProgress);\n type = !1;\n } else\n (type = upgradeHydrationErrorsToRecoverable()),\n null !== current &&\n null !== current.memoizedState &&\n (current.memoizedState.hydrationErrors = type),\n (type = !0);\n if (!type) {\n if (workInProgress.flags & 256)\n return popSuspenseHandler(workInProgress), workInProgress;\n popSuspenseHandler(workInProgress);\n return null;\n }\n }\n popSuspenseHandler(workInProgress);\n if (0 !== (workInProgress.flags & 128))\n return (workInProgress.lanes = renderLanes), workInProgress;\n renderLanes = null !== newProps;\n current = null !== current && null !== current.memoizedState;\n renderLanes &&\n ((newProps = workInProgress.child),\n (type = null),\n null !== newProps.alternate &&\n null !== newProps.alternate.memoizedState &&\n null !== newProps.alternate.memoizedState.cachePool &&\n (type = newProps.alternate.memoizedState.cachePool.pool),\n (nextResource = null),\n null !== newProps.memoizedState &&\n null !== newProps.memoizedState.cachePool &&\n (nextResource = newProps.memoizedState.cachePool.pool),\n nextResource !== type && (newProps.flags |= 2048));\n renderLanes !== current &&\n renderLanes &&\n (workInProgress.child.flags |= 8192);\n scheduleRetryEffect(workInProgress, workInProgress.updateQueue);\n bubbleProperties(workInProgress);\n return null;\n case 4:\n return (\n popHostContainer(),\n null === current &&\n listenToAllSupportedEvents(workInProgress.stateNode.containerInfo),\n (workInProgress.flags |= 67108864),\n bubbleProperties(workInProgress),\n null\n );\n case 10:\n return (\n popProvider(workInProgress.type), bubbleProperties(workInProgress), null\n );\n case 19:\n popSuspenseListContext(workInProgress);\n newProps = workInProgress.memoizedState;\n if (null === newProps) return bubbleProperties(workInProgress), null;\n type = 0 !== (workInProgress.flags & 128);\n nextResource = newProps.rendering;\n if (null === nextResource)\n if (type) cutOffTailIfNeeded(newProps, !1);\n else {\n if (\n 0 !== workInProgressRootExitStatus ||\n (null !== current && 0 !== (current.flags & 128))\n )\n for (current = workInProgress.child; null !== current; ) {\n nextResource = findFirstSuspended(current);\n if (null !== nextResource) {\n workInProgress.flags |= 128;\n cutOffTailIfNeeded(newProps, !1);\n current = nextResource.updateQueue;\n workInProgress.updateQueue = current;\n scheduleRetryEffect(workInProgress, current);\n workInProgress.subtreeFlags = 0;\n current = renderLanes;\n for (renderLanes = workInProgress.child; null !== renderLanes; )\n resetWorkInProgress(renderLanes, current),\n (renderLanes = renderLanes.sibling);\n pushSuspenseListContext(\n workInProgress,\n (suspenseStackCursor.current & 1) | 2\n );\n isHydrating &&\n pushTreeFork(workInProgress, newProps.treeForkCount);\n return workInProgress.child;\n }\n current = current.sibling;\n }\n null !== newProps.tail &&\n now() > workInProgressRootRenderTargetTime &&\n ((workInProgress.flags |= 128),\n (type = !0),\n cutOffTailIfNeeded(newProps, !1),\n (workInProgress.lanes = 4194304));\n }\n else {\n if (!type)\n if (\n ((current = findFirstSuspended(nextResource)), null !== current)\n ) {\n if (\n ((workInProgress.flags |= 128),\n (type = !0),\n (current = current.updateQueue),\n (workInProgress.updateQueue = current),\n scheduleRetryEffect(workInProgress, current),\n cutOffTailIfNeeded(newProps, !0),\n null === newProps.tail &&\n \"collapsed\" !== newProps.tailMode &&\n \"visible\" !== newProps.tailMode &&\n !nextResource.alternate &&\n !isHydrating)\n )\n return bubbleProperties(workInProgress), null;\n } else\n 2 * now() - newProps.renderingStartTime >\n workInProgressRootRenderTargetTime &&\n 536870912 !== renderLanes &&\n ((workInProgress.flags |= 128),\n (type = !0),\n cutOffTailIfNeeded(newProps, !1),\n (workInProgress.lanes = 4194304));\n newProps.isBackwards\n ? ((nextResource.sibling = workInProgress.child),\n (workInProgress.child = nextResource))\n : ((current = newProps.last),\n null !== current\n ? (current.sibling = nextResource)\n : (workInProgress.child = nextResource),\n (newProps.last = nextResource));\n }\n if (null !== newProps.tail) {\n current = newProps.tail;\n a: {\n for (renderLanes = current; null !== renderLanes; ) {\n if (null !== renderLanes.alternate) {\n renderLanes = !1;\n break a;\n }\n renderLanes = renderLanes.sibling;\n }\n renderLanes = !0;\n }\n newProps.rendering = current;\n newProps.tail = current.sibling;\n newProps.renderingStartTime = now();\n current.sibling = null;\n nextResource = suspenseStackCursor.current;\n nextResource = type ? (nextResource & 1) | 2 : nextResource & 1;\n \"visible\" === newProps.tailMode ||\n \"collapsed\" === newProps.tailMode ||\n !renderLanes ||\n isHydrating\n ? pushSuspenseListContext(workInProgress, nextResource)\n : ((renderLanes = nextResource),\n push(suspenseHandlerStackCursor, workInProgress),\n push(suspenseStackCursor, renderLanes),\n null === shellBoundary && (shellBoundary = workInProgress));\n isHydrating && pushTreeFork(workInProgress, newProps.treeForkCount);\n return current;\n }\n bubbleProperties(workInProgress);\n return null;\n case 22:\n case 23:\n return (\n popSuspenseHandler(workInProgress),\n popHiddenContext(),\n (newProps = null !== workInProgress.memoizedState),\n null !== current\n ? (null !== current.memoizedState) !== newProps &&\n (workInProgress.flags |= 8192)\n : newProps && (workInProgress.flags |= 8192),\n newProps\n ? 0 !== (renderLanes & 536870912) &&\n 0 === (workInProgress.flags & 128) &&\n (bubbleProperties(workInProgress),\n workInProgress.subtreeFlags & 6 && (workInProgress.flags |= 8192))\n : bubbleProperties(workInProgress),\n (renderLanes = workInProgress.updateQueue),\n null !== renderLanes &&\n scheduleRetryEffect(workInProgress, renderLanes.retryQueue),\n (renderLanes = null),\n null !== current &&\n null !== current.memoizedState &&\n null !== current.memoizedState.cachePool &&\n (renderLanes = current.memoizedState.cachePool.pool),\n (newProps = null),\n null !== workInProgress.memoizedState &&\n null !== workInProgress.memoizedState.cachePool &&\n (newProps = workInProgress.memoizedState.cachePool.pool),\n newProps !== renderLanes && (workInProgress.flags |= 2048),\n null !== current && pop(resumedCache),\n null\n );\n case 24:\n return (\n (renderLanes = null),\n null !== current && (renderLanes = current.memoizedState.cache),\n workInProgress.memoizedState.cache !== renderLanes &&\n (workInProgress.flags |= 2048),\n popProvider(CacheContext),\n bubbleProperties(workInProgress),\n null\n );\n case 25:\n return null;\n case 30:\n return (\n (workInProgress.flags |= 33554432),\n bubbleProperties(workInProgress),\n null\n );\n }\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction unwindWork(current, workInProgress) {\n popTreeContext(workInProgress);\n switch (workInProgress.tag) {\n case 1:\n return (\n (current = workInProgress.flags),\n current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 3:\n return (\n popProvider(CacheContext),\n popHostContainer(),\n (current = workInProgress.flags),\n 0 !== (current & 65536) && 0 === (current & 128)\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 26:\n case 27:\n case 5:\n return popHostContext(workInProgress), null;\n case 31:\n if (null !== workInProgress.memoizedState) {\n popSuspenseHandler(workInProgress);\n if (null === workInProgress.alternate)\n throw Error(formatProdErrorMessage(340));\n resetHydrationState();\n }\n current = workInProgress.flags;\n return current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null;\n case 13:\n popSuspenseHandler(workInProgress);\n current = workInProgress.memoizedState;\n if (null !== current && null !== current.dehydrated) {\n if (null === workInProgress.alternate)\n throw Error(formatProdErrorMessage(340));\n resetHydrationState();\n }\n current = workInProgress.flags;\n return current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null;\n case 19:\n return (\n popSuspenseListContext(workInProgress),\n (current = workInProgress.flags),\n current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128),\n (current = workInProgress.memoizedState),\n null !== current &&\n ((current.rendering = null), (current.tail = null)),\n (workInProgress.flags |= 4),\n workInProgress)\n : null\n );\n case 4:\n return popHostContainer(), null;\n case 10:\n return popProvider(workInProgress.type), null;\n case 22:\n case 23:\n return (\n popSuspenseHandler(workInProgress),\n popHiddenContext(),\n null !== current && pop(resumedCache),\n (current = workInProgress.flags),\n current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 24:\n return popProvider(CacheContext), null;\n case 25:\n return null;\n default:\n return null;\n }\n}\nfunction unwindInterruptedWork(current, interruptedWork) {\n popTreeContext(interruptedWork);\n switch (interruptedWork.tag) {\n case 3:\n popProvider(CacheContext);\n popHostContainer();\n break;\n case 26:\n case 27:\n case 5:\n popHostContext(interruptedWork);\n break;\n case 4:\n popHostContainer();\n break;\n case 31:\n null !== interruptedWork.memoizedState &&\n popSuspenseHandler(interruptedWork);\n break;\n case 13:\n popSuspenseHandler(interruptedWork);\n break;\n case 19:\n popSuspenseListContext(interruptedWork);\n break;\n case 10:\n popProvider(interruptedWork.type);\n break;\n case 22:\n case 23:\n popSuspenseHandler(interruptedWork);\n popHiddenContext();\n null !== current && pop(resumedCache);\n break;\n case 24:\n popProvider(CacheContext);\n }\n}\nfunction commitHookEffectListMount(flags, finishedWork) {\n try {\n var updateQueue = finishedWork.updateQueue,\n lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n if (null !== lastEffect) {\n var firstEffect = lastEffect.next;\n updateQueue = firstEffect;\n do {\n if ((updateQueue.tag & flags) === flags) {\n lastEffect = void 0;\n var create = updateQueue.create,\n inst = updateQueue.inst;\n lastEffect = create();\n inst.destroy = lastEffect;\n }\n updateQueue = updateQueue.next;\n } while (updateQueue !== firstEffect);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitHookEffectListUnmount(\n flags,\n finishedWork,\n nearestMountedAncestor$jscomp$0\n) {\n try {\n var updateQueue = finishedWork.updateQueue,\n lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n if (null !== lastEffect) {\n var firstEffect = lastEffect.next;\n updateQueue = firstEffect;\n do {\n if ((updateQueue.tag & flags) === flags) {\n var inst = updateQueue.inst,\n destroy = inst.destroy;\n if (void 0 !== destroy) {\n inst.destroy = void 0;\n lastEffect = finishedWork;\n var nearestMountedAncestor = nearestMountedAncestor$jscomp$0,\n destroy_ = destroy;\n try {\n destroy_();\n } catch (error) {\n captureCommitPhaseError(\n lastEffect,\n nearestMountedAncestor,\n error\n );\n }\n }\n }\n updateQueue = updateQueue.next;\n } while (updateQueue !== firstEffect);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitClassCallbacks(finishedWork) {\n var updateQueue = finishedWork.updateQueue;\n if (null !== updateQueue) {\n var instance = finishedWork.stateNode;\n try {\n commitCallbacks(updateQueue, instance);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n}\nfunction safelyCallComponentWillUnmount(\n current,\n nearestMountedAncestor,\n instance\n) {\n instance.props = resolveClassComponentProps(\n current.type,\n current.memoizedProps\n );\n instance.state = current.memoizedState;\n try {\n instance.componentWillUnmount();\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\nfunction safelyAttachRef(current, nearestMountedAncestor) {\n try {\n var ref = current.ref;\n if (null !== ref) {\n switch (current.tag) {\n case 26:\n case 27:\n case 5:\n var instanceToUse = current.stateNode;\n break;\n case 30:\n var instance = current.stateNode,\n name = getViewTransitionName(current.memoizedProps, instance);\n if (null === instance.ref || instance.ref.name !== name)\n instance.ref = createViewTransitionInstance(name);\n instanceToUse = instance.ref;\n break;\n case 7:\n if (null === current.stateNode) {\n var fragmentInstance = new FragmentInstance(current);\n traverseVisibleInstancesAndTextInstances(\n current.child,\n !1,\n addFragmentHandleToFiber,\n fragmentInstance,\n void 0,\n void 0\n );\n current.stateNode = fragmentInstance;\n }\n instanceToUse = current.stateNode;\n break;\n default:\n instanceToUse = current.stateNode;\n }\n \"function\" === typeof ref\n ? (current.refCleanup = ref(instanceToUse))\n : (ref.current = instanceToUse);\n }\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\nfunction safelyDetachRef(current, nearestMountedAncestor) {\n var ref = current.ref,\n refCleanup = current.refCleanup;\n if (null !== ref)\n if (\"function\" === typeof refCleanup)\n try {\n refCleanup();\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n } finally {\n (current.refCleanup = null),\n (current = current.alternate),\n null != current && (current.refCleanup = null);\n }\n else if (\"function\" === typeof ref)\n try {\n ref(null);\n } catch (error$148) {\n captureCommitPhaseError(current, nearestMountedAncestor, error$148);\n }\n else ref.current = null;\n}\nfunction commitNewChildToFragmentInstances(fiber, parentFragmentInstances) {\n if (\n (5 === fiber.tag || 27 === fiber.tag || 6 === fiber.tag) &&\n null === fiber.alternate &&\n null !== parentFragmentInstances\n )\n for (var i = 0; i < parentFragmentInstances.length; i++)\n commitNewChildToFragmentInstance(\n fiber.stateNode,\n parentFragmentInstances[i]\n );\n}\nfunction commitFragmentInstanceInsertionEffects(fiber) {\n for (var parent = fiber.return; null !== parent; ) {\n isFragmentInstanceParent(parent) &&\n commitNewChildToFragmentInstance(fiber.stateNode, parent.stateNode);\n if (isFragmentInstanceHostBoundary(parent)) break;\n parent = parent.return;\n }\n}\nfunction commitFragmentInstanceDeletionEffects(fiber) {\n for (var parent = fiber.return; null !== parent; ) {\n isFragmentInstanceParent(parent) &&\n deleteChildFromFragmentInstance(fiber.stateNode, parent.stateNode);\n if (isFragmentInstanceHostBoundary(parent)) break;\n parent = parent.return;\n }\n}\nfunction isFragmentInstanceHostBoundary(fiber) {\n return 5 === fiber.tag || 3 === fiber.tag || 27 === fiber.tag;\n}\nfunction isFragmentInstanceParent(fiber) {\n return fiber && 7 === fiber.tag && null !== fiber.stateNode;\n}\nfunction commitHostMount(finishedWork) {\n var type = finishedWork.type,\n props = finishedWork.memoizedProps,\n instance = finishedWork.stateNode;\n try {\n a: switch (type) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n props.autoFocus && instance.focus();\n break a;\n case \"img\":\n props.src\n ? (instance.src = props.src)\n : props.srcSet && (instance.srcset = props.srcSet);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitHostUpdate(finishedWork, newProps, oldProps) {\n try {\n var domElement = finishedWork.stateNode;\n updateProperties(domElement, finishedWork.type, oldProps, newProps);\n domElement[internalPropsKey] = newProps;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction isHostParent(fiber) {\n return (\n 5 === fiber.tag ||\n 3 === fiber.tag ||\n 26 === fiber.tag ||\n (27 === fiber.tag && isSingletonScope(fiber.type)) ||\n 4 === fiber.tag\n );\n}\nfunction getHostSibling(fiber) {\n a: for (;;) {\n for (; null === fiber.sibling; ) {\n if (null === fiber.return || isHostParent(fiber.return)) return null;\n fiber = fiber.return;\n }\n fiber.sibling.return = fiber.return;\n for (\n fiber = fiber.sibling;\n 5 !== fiber.tag && 6 !== fiber.tag && 18 !== fiber.tag;\n\n ) {\n if (27 === fiber.tag && isSingletonScope(fiber.type)) continue a;\n if (fiber.flags & 2) continue a;\n if (null === fiber.child || 4 === fiber.tag) continue a;\n else (fiber.child.return = fiber), (fiber = fiber.child);\n }\n if (!(fiber.flags & 2)) return fiber.stateNode;\n }\n}\nfunction insertOrAppendPlacementNodeIntoContainer(\n node,\n before,\n parent,\n parentFragmentInstances\n) {\n var tag = node.tag;\n if (5 === tag || 6 === tag)\n (tag = node.stateNode),\n before\n ? (9 === parent.nodeType\n ? parent.body\n : \"HTML\" === parent.nodeName\n ? parent.ownerDocument.body\n : parent\n ).insertBefore(tag, before)\n : ((before =\n 9 === parent.nodeType\n ? parent.body\n : \"HTML\" === parent.nodeName\n ? parent.ownerDocument.body\n : parent),\n before.appendChild(tag),\n (parent = parent._reactRootContainer),\n (null !== parent && void 0 !== parent) ||\n null !== before.onclick ||\n (before.onclick = noop$1)),\n commitNewChildToFragmentInstances(node, parentFragmentInstances),\n (viewTransitionMutationContext = !0);\n else if (\n 4 !== tag &&\n (27 === tag &&\n (commitNewChildToFragmentInstances(node, parentFragmentInstances),\n (parentFragmentInstances = null),\n isSingletonScope(node.type) &&\n ((parent = node.stateNode), (before = null))),\n (node = node.child),\n null !== node)\n )\n for (\n insertOrAppendPlacementNodeIntoContainer(\n node,\n before,\n parent,\n parentFragmentInstances\n ),\n node = node.sibling;\n null !== node;\n\n )\n insertOrAppendPlacementNodeIntoContainer(\n node,\n before,\n parent,\n parentFragmentInstances\n ),\n (node = node.sibling);\n}\nfunction insertOrAppendPlacementNode(\n node,\n before,\n parent,\n parentFragmentInstances\n) {\n var tag = node.tag;\n if (5 === tag || 6 === tag)\n (tag = node.stateNode),\n before ? parent.insertBefore(tag, before) : parent.appendChild(tag),\n commitNewChildToFragmentInstances(node, parentFragmentInstances),\n (viewTransitionMutationContext = !0);\n else if (\n 4 !== tag &&\n (27 === tag &&\n (commitNewChildToFragmentInstances(node, parentFragmentInstances),\n (parentFragmentInstances = null),\n isSingletonScope(node.type) && (parent = node.stateNode)),\n (node = node.child),\n null !== node)\n )\n for (\n insertOrAppendPlacementNode(\n node,\n before,\n parent,\n parentFragmentInstances\n ),\n node = node.sibling;\n null !== node;\n\n )\n insertOrAppendPlacementNode(\n node,\n before,\n parent,\n parentFragmentInstances\n ),\n (node = node.sibling);\n}\nfunction commitHostSingletonAcquisition(finishedWork) {\n var singleton = finishedWork.stateNode,\n props = finishedWork.memoizedProps;\n try {\n for (\n var type = finishedWork.type, attributes = singleton.attributes;\n attributes.length;\n\n )\n singleton.removeAttributeNode(attributes[0]);\n setInitialProperties(singleton, type, props);\n singleton[internalInstanceKey] = finishedWork;\n singleton[internalPropsKey] = props;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nvar shouldStartViewTransition = !1,\n appearingViewTransitions = null;\nfunction trackEnterViewTransitions(placement) {\n if (30 === placement.tag || 0 !== (placement.subtreeFlags & 33554432))\n shouldStartViewTransition = !0;\n}\nvar viewTransitionCancelableChildren = null;\nfunction pushViewTransitionCancelableScope() {\n var prevChildren = viewTransitionCancelableChildren;\n viewTransitionCancelableChildren = null;\n return prevChildren;\n}\nvar viewTransitionHostInstanceIdx = 0;\nfunction applyViewTransitionToHostInstances(\n fiber,\n name,\n className,\n collectMeasurements,\n stopAtNestedViewTransitions\n) {\n viewTransitionHostInstanceIdx = 0;\n return applyViewTransitionToHostInstancesRecursive(\n fiber.child,\n name,\n className,\n collectMeasurements,\n stopAtNestedViewTransitions\n );\n}\nfunction applyViewTransitionToHostInstancesRecursive(\n child,\n name,\n className,\n collectMeasurements,\n stopAtNestedViewTransitions\n) {\n for (var inViewport = !1; null !== child; ) {\n if (5 === child.tag) {\n var instance = child.stateNode;\n if (null !== collectMeasurements) {\n var measurement = measureInstance(instance);\n collectMeasurements.push(measurement);\n measurement.view && (inViewport = !0);\n } else\n inViewport || (measureInstance(instance).view && (inViewport = !0));\n shouldStartViewTransition = !0;\n applyViewTransitionName(\n instance,\n 0 === viewTransitionHostInstanceIdx\n ? name\n : name + \"_\" + viewTransitionHostInstanceIdx,\n className\n );\n viewTransitionHostInstanceIdx++;\n } else if (22 !== child.tag || null === child.memoizedState)\n (30 === child.tag && stopAtNestedViewTransitions) ||\n (applyViewTransitionToHostInstancesRecursive(\n child.child,\n name,\n className,\n collectMeasurements,\n stopAtNestedViewTransitions\n ) &&\n (inViewport = !0));\n child = child.sibling;\n }\n return inViewport;\n}\nfunction restoreViewTransitionOnHostInstances(\n child,\n stopAtNestedViewTransitions\n) {\n for (; null !== child; ) {\n if (5 === child.tag)\n restoreViewTransitionName(child.stateNode, child.memoizedProps);\n else if (22 !== child.tag || null === child.memoizedState)\n (30 === child.tag && stopAtNestedViewTransitions) ||\n restoreViewTransitionOnHostInstances(\n child.child,\n stopAtNestedViewTransitions\n );\n child = child.sibling;\n }\n}\nfunction commitAppearingPairViewTransitions(placement) {\n if (0 !== (placement.subtreeFlags & 18874368))\n for (placement = placement.child; null !== placement; ) {\n if (22 !== placement.tag || null === placement.memoizedState)\n if (\n (commitAppearingPairViewTransitions(placement),\n 30 === placement.tag &&\n 0 !== (placement.flags & 18874368) &&\n placement.stateNode.paired)\n ) {\n var props = placement.memoizedProps;\n if (null == props.name || \"auto\" === props.name)\n throw Error(formatProdErrorMessage(544));\n var name = props.name;\n props = getViewTransitionClassName(props.default, props.share);\n \"none\" !== props &&\n (applyViewTransitionToHostInstances(\n placement,\n name,\n props,\n null,\n !1\n ) ||\n restoreViewTransitionOnHostInstances(placement.child, !1));\n }\n placement = placement.sibling;\n }\n}\nfunction commitEnterViewTransitions(placement, gesture) {\n if (30 === placement.tag) {\n var state = placement.stateNode,\n props = placement.memoizedProps,\n name = getViewTransitionName(props, state),\n className = getViewTransitionClassName(\n props.default,\n state.paired ? props.share : props.enter\n );\n \"none\" !== className\n ? applyViewTransitionToHostInstances(placement, name, className, null, !1)\n ? (commitAppearingPairViewTransitions(placement),\n state.paired ||\n gesture ||\n scheduleViewTransitionEvent(placement, props.onEnter))\n : restoreViewTransitionOnHostInstances(placement.child, !1)\n : commitAppearingPairViewTransitions(placement);\n } else if (0 !== (placement.subtreeFlags & 33554432))\n for (placement = placement.child; null !== placement; )\n commitEnterViewTransitions(placement, gesture),\n (placement = placement.sibling);\n else commitAppearingPairViewTransitions(placement);\n}\nfunction commitDeletedPairViewTransitions(deletion) {\n if (\n null !== appearingViewTransitions &&\n 0 !== appearingViewTransitions.size\n ) {\n var pairs = appearingViewTransitions;\n if (0 !== (deletion.subtreeFlags & 18874368))\n for (deletion = deletion.child; null !== deletion; ) {\n if (22 !== deletion.tag || null === deletion.memoizedState) {\n if (30 === deletion.tag && 0 !== (deletion.flags & 18874368)) {\n var props = deletion.memoizedProps,\n name = props.name;\n if (null != name && \"auto\" !== name) {\n var pair = pairs.get(name);\n if (void 0 !== pair) {\n var className = getViewTransitionClassName(\n props.default,\n props.share\n );\n \"none\" !== className &&\n (applyViewTransitionToHostInstances(\n deletion,\n name,\n className,\n null,\n !1\n )\n ? ((className = deletion.stateNode),\n (pair.paired = className),\n (className.paired = pair),\n scheduleViewTransitionEvent(deletion, props.onShare))\n : restoreViewTransitionOnHostInstances(deletion.child, !1));\n pairs.delete(name);\n if (0 === pairs.size) break;\n }\n }\n }\n commitDeletedPairViewTransitions(deletion);\n }\n deletion = deletion.sibling;\n }\n }\n}\nfunction commitExitViewTransitions(deletion) {\n if (30 === deletion.tag) {\n var props = deletion.memoizedProps,\n name = getViewTransitionName(props, deletion.stateNode),\n pair =\n null !== appearingViewTransitions\n ? appearingViewTransitions.get(name)\n : void 0,\n className = getViewTransitionClassName(\n props.default,\n void 0 !== pair ? props.share : props.exit\n );\n \"none\" !== className &&\n (applyViewTransitionToHostInstances(deletion, name, className, null, !1)\n ? void 0 !== pair\n ? ((className = deletion.stateNode),\n (pair.paired = className),\n (className.paired = pair),\n appearingViewTransitions.delete(name),\n scheduleViewTransitionEvent(deletion, props.onShare))\n : scheduleViewTransitionEvent(deletion, props.onExit)\n : restoreViewTransitionOnHostInstances(deletion.child, !1));\n null !== appearingViewTransitions &&\n commitDeletedPairViewTransitions(deletion);\n } else if (0 !== (deletion.subtreeFlags & 33554432))\n for (deletion = deletion.child; null !== deletion; )\n commitExitViewTransitions(deletion), (deletion = deletion.sibling);\n else\n null !== appearingViewTransitions &&\n commitDeletedPairViewTransitions(deletion);\n}\nfunction commitNestedViewTransitions(changedParent) {\n for (changedParent = changedParent.child; null !== changedParent; ) {\n if (30 === changedParent.tag) {\n var props = changedParent.memoizedProps,\n name = getViewTransitionName(props, changedParent.stateNode);\n props = getViewTransitionClassName(props.default, props.update);\n changedParent.flags &= -5;\n \"none\" !== props &&\n applyViewTransitionToHostInstances(\n changedParent,\n name,\n props,\n (changedParent.memoizedState = []),\n !1\n );\n } else\n 0 !== (changedParent.subtreeFlags & 33554432) &&\n commitNestedViewTransitions(changedParent);\n changedParent = changedParent.sibling;\n }\n}\nfunction restorePairedViewTransitions(parent) {\n if (0 !== (parent.subtreeFlags & 18874368))\n for (parent = parent.child; null !== parent; ) {\n if (22 !== parent.tag || null === parent.memoizedState) {\n if (30 === parent.tag && 0 !== (parent.flags & 18874368)) {\n var instance = parent.stateNode;\n null !== instance.paired &&\n ((instance.paired = null),\n restoreViewTransitionOnHostInstances(parent.child, !1));\n }\n restorePairedViewTransitions(parent);\n }\n parent = parent.sibling;\n }\n}\nfunction restoreEnterOrExitViewTransitions(fiber) {\n if (30 === fiber.tag)\n (fiber.stateNode.paired = null),\n restoreViewTransitionOnHostInstances(fiber.child, !1),\n restorePairedViewTransitions(fiber);\n else if (0 !== (fiber.subtreeFlags & 33554432))\n for (fiber = fiber.child; null !== fiber; )\n restoreEnterOrExitViewTransitions(fiber), (fiber = fiber.sibling);\n else restorePairedViewTransitions(fiber);\n}\nfunction restoreNestedViewTransitions(changedParent) {\n for (changedParent = changedParent.child; null !== changedParent; )\n 30 === changedParent.tag\n ? restoreViewTransitionOnHostInstances(changedParent.child, !1)\n : 0 !== (changedParent.subtreeFlags & 33554432) &&\n restoreNestedViewTransitions(changedParent),\n (changedParent = changedParent.sibling);\n}\nfunction measureViewTransitionHostInstancesRecursive(\n parentViewTransition,\n child,\n newName,\n oldName,\n className,\n previousMeasurements,\n stopAtNestedViewTransitions\n) {\n for (var inViewport = !1; null !== child; ) {\n if (5 === child.tag) {\n var instance = child.stateNode;\n if (\n null !== previousMeasurements &&\n viewTransitionHostInstanceIdx < previousMeasurements.length\n ) {\n var previousMeasurement =\n previousMeasurements[viewTransitionHostInstanceIdx],\n nextMeasurement = measureInstance(instance);\n if (previousMeasurement.view || nextMeasurement.view) inViewport = !0;\n var JSCompiler_temp;\n if ((JSCompiler_temp = 0 === (parentViewTransition.flags & 4)))\n if (nextMeasurement.clip) JSCompiler_temp = !0;\n else {\n JSCompiler_temp = previousMeasurement.rect;\n var newRect = nextMeasurement.rect;\n JSCompiler_temp =\n JSCompiler_temp.y !== newRect.y ||\n JSCompiler_temp.x !== newRect.x ||\n JSCompiler_temp.height !== newRect.height ||\n JSCompiler_temp.width !== newRect.width;\n }\n JSCompiler_temp && (parentViewTransition.flags |= 4);\n nextMeasurement.abs\n ? (nextMeasurement = !previousMeasurement.abs)\n : ((previousMeasurement = previousMeasurement.rect),\n (nextMeasurement = nextMeasurement.rect),\n (nextMeasurement =\n previousMeasurement.height !== nextMeasurement.height ||\n previousMeasurement.width !== nextMeasurement.width));\n nextMeasurement && (parentViewTransition.flags |= 32);\n } else parentViewTransition.flags |= 32;\n 0 !== (parentViewTransition.flags & 4) &&\n applyViewTransitionName(\n instance,\n 0 === viewTransitionHostInstanceIdx\n ? newName\n : newName + \"_\" + viewTransitionHostInstanceIdx,\n className\n );\n (inViewport && 0 !== (parentViewTransition.flags & 4)) ||\n (null === viewTransitionCancelableChildren &&\n (viewTransitionCancelableChildren = []),\n viewTransitionCancelableChildren.push(\n instance,\n 0 === viewTransitionHostInstanceIdx\n ? oldName\n : oldName + \"_\" + viewTransitionHostInstanceIdx,\n child.memoizedProps\n ));\n viewTransitionHostInstanceIdx++;\n } else if (22 !== child.tag || null === child.memoizedState)\n 30 === child.tag && stopAtNestedViewTransitions\n ? (parentViewTransition.flags |= child.flags & 32)\n : measureViewTransitionHostInstancesRecursive(\n parentViewTransition,\n child.child,\n newName,\n oldName,\n className,\n previousMeasurements,\n stopAtNestedViewTransitions\n ) && (inViewport = !0);\n child = child.sibling;\n }\n return inViewport;\n}\nfunction measureNestedViewTransitions(changedParent, gesture) {\n for (changedParent = changedParent.child; null !== changedParent; ) {\n if (30 === changedParent.tag) {\n var props = changedParent.memoizedProps,\n state = changedParent.stateNode,\n name = getViewTransitionName(props, state),\n className = getViewTransitionClassName(props.default, props.update);\n if (gesture) {\n state = state.clones;\n var previousMeasurements =\n null === state ? null : state.map(measureClonedInstance);\n } else\n (previousMeasurements = changedParent.memoizedState),\n (changedParent.memoizedState = null);\n state = changedParent;\n var child = changedParent.child;\n viewTransitionHostInstanceIdx = 0;\n name = measureViewTransitionHostInstancesRecursive(\n state,\n child,\n name,\n name,\n className,\n previousMeasurements,\n !1\n );\n 0 !== (changedParent.flags & 4) &&\n name &&\n (gesture || scheduleViewTransitionEvent(changedParent, props.onUpdate));\n } else\n 0 !== (changedParent.subtreeFlags & 33554432) &&\n measureNestedViewTransitions(changedParent, gesture);\n changedParent = changedParent.sibling;\n }\n}\nvar offscreenSubtreeIsHidden = !1,\n offscreenSubtreeWasHidden = !1,\n offscreenDirectParentIsHidden = !1,\n needsFormReset = !1,\n PossiblyWeakSet = \"function\" === typeof WeakSet ? WeakSet : Set,\n nextEffect = null,\n viewTransitionContextChanged = !1,\n inUpdateViewTransition = !1,\n rootViewTransitionAffected = !1,\n rootViewTransitionNameCanceled = !1;\nfunction commitBeforeMutationEffects(root, firstChild, committedLanes) {\n root = root.containerInfo;\n eventsEnabled = _enabled;\n root = getActiveElementDeep(root);\n if (hasSelectionCapabilities(root)) {\n if (\"selectionStart\" in root)\n var JSCompiler_temp = {\n start: root.selectionStart,\n end: root.selectionEnd\n };\n else\n a: {\n JSCompiler_temp =\n ((JSCompiler_temp = root.ownerDocument) &&\n JSCompiler_temp.defaultView) ||\n window;\n var selection =\n JSCompiler_temp.getSelection && JSCompiler_temp.getSelection();\n if (selection && 0 !== selection.rangeCount) {\n JSCompiler_temp = selection.anchorNode;\n var anchorOffset = selection.anchorOffset,\n focusNode = selection.focusNode;\n selection = selection.focusOffset;\n try {\n JSCompiler_temp.nodeType, focusNode.nodeType;\n } catch (e$21) {\n JSCompiler_temp = null;\n break a;\n }\n var length = 0,\n start = -1,\n end = -1,\n indexWithinAnchor = 0,\n indexWithinFocus = 0,\n node = root,\n parentNode = null;\n b: for (;;) {\n for (var next; ; ) {\n node !== JSCompiler_temp ||\n (0 !== anchorOffset && 3 !== node.nodeType) ||\n (start = length + anchorOffset);\n node !== focusNode ||\n (0 !== selection && 3 !== node.nodeType) ||\n (end = length + selection);\n 3 === node.nodeType && (length += node.nodeValue.length);\n if (null === (next = node.firstChild)) break;\n parentNode = node;\n node = next;\n }\n for (;;) {\n if (node === root) break b;\n parentNode === JSCompiler_temp &&\n ++indexWithinAnchor === anchorOffset &&\n (start = length);\n parentNode === focusNode &&\n ++indexWithinFocus === selection &&\n (end = length);\n if (null !== (next = node.nextSibling)) break;\n node = parentNode;\n parentNode = node.parentNode;\n }\n node = next;\n }\n JSCompiler_temp =\n -1 === start || -1 === end ? null : { start: start, end: end };\n } else JSCompiler_temp = null;\n }\n JSCompiler_temp = JSCompiler_temp || { start: 0, end: 0 };\n } else JSCompiler_temp = null;\n selectionInformation = { focusedElem: root, selectionRange: JSCompiler_temp };\n _enabled = !1;\n committedLanes = (committedLanes & 335544064) === committedLanes;\n nextEffect = firstChild;\n for (firstChild = committedLanes ? 9270 : 1024; null !== nextEffect; ) {\n root = nextEffect;\n if (\n committedLanes &&\n ((JSCompiler_temp = root.deletions), null !== JSCompiler_temp)\n )\n for (\n anchorOffset = 0;\n anchorOffset < JSCompiler_temp.length;\n anchorOffset++\n )\n committedLanes &&\n commitExitViewTransitions(JSCompiler_temp[anchorOffset]);\n if (null === root.alternate && 0 !== (root.flags & 2))\n committedLanes && trackEnterViewTransitions(root),\n commitBeforeMutationEffects_complete(committedLanes);\n else {\n if (22 === root.tag)\n if (((JSCompiler_temp = root.alternate), null !== root.memoizedState)) {\n null !== JSCompiler_temp &&\n null === JSCompiler_temp.memoizedState &&\n committedLanes &&\n commitExitViewTransitions(JSCompiler_temp);\n commitBeforeMutationEffects_complete(committedLanes);\n continue;\n } else if (\n null !== JSCompiler_temp &&\n null !== JSCompiler_temp.memoizedState\n ) {\n committedLanes && trackEnterViewTransitions(root);\n commitBeforeMutationEffects_complete(committedLanes);\n continue;\n }\n JSCompiler_temp = root.child;\n 0 !== (root.subtreeFlags & firstChild) && null !== JSCompiler_temp\n ? ((JSCompiler_temp.return = root), (nextEffect = JSCompiler_temp))\n : (committedLanes && commitNestedViewTransitions(root),\n commitBeforeMutationEffects_complete(committedLanes));\n }\n }\n appearingViewTransitions = null;\n}\nfunction commitBeforeMutationEffects_complete(\n isViewTransitionEligible$jscomp$0\n) {\n for (; null !== nextEffect; ) {\n var fiber = nextEffect,\n isViewTransitionEligible = isViewTransitionEligible$jscomp$0,\n current = fiber.alternate,\n flags = fiber.flags;\n switch (fiber.tag) {\n case 0:\n case 11:\n case 15:\n break;\n case 1:\n if (0 !== (flags & 1024) && null !== current) {\n isViewTransitionEligible = void 0;\n flags = current.memoizedProps;\n current = current.memoizedState;\n var instance = fiber.stateNode;\n try {\n var resolvedPrevProps = resolveClassComponentProps(\n fiber.type,\n flags\n );\n isViewTransitionEligible = instance.getSnapshotBeforeUpdate(\n resolvedPrevProps,\n current\n );\n instance.__reactInternalSnapshotBeforeUpdate =\n isViewTransitionEligible;\n } catch (error) {\n captureCommitPhaseError(fiber, fiber.return, error);\n }\n }\n break;\n case 3:\n if (0 !== (flags & 1024))\n if (\n ((current = fiber.stateNode.containerInfo),\n (isViewTransitionEligible = current.nodeType),\n 9 === isViewTransitionEligible)\n )\n clearContainerSparingly(current);\n else if (1 === isViewTransitionEligible)\n switch (current.nodeName) {\n case \"HEAD\":\n case \"HTML\":\n case \"BODY\":\n clearContainerSparingly(current);\n break;\n default:\n current.textContent = \"\";\n }\n break;\n case 5:\n case 26:\n case 27:\n case 6:\n case 4:\n case 17:\n break;\n case 30:\n isViewTransitionEligible &&\n null !== current &&\n ((isViewTransitionEligible = getViewTransitionName(\n current.memoizedProps,\n current.stateNode\n )),\n (flags = fiber.memoizedProps),\n (flags = getViewTransitionClassName(flags.default, flags.update)),\n \"none\" !== flags &&\n applyViewTransitionToHostInstances(\n current,\n isViewTransitionEligible,\n flags,\n (current.memoizedState = []),\n !0\n ));\n break;\n default:\n if (0 !== (flags & 1024)) throw Error(formatProdErrorMessage(163));\n }\n current = fiber.sibling;\n if (null !== current) {\n current.return = fiber.return;\n nextEffect = current;\n break;\n }\n nextEffect = fiber.return;\n }\n}\nfunction commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {\n var flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitHookEffectListMount(5, finishedWork);\n break;\n case 1:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n if (flags & 4)\n if (((finishedRoot = finishedWork.stateNode), null === current))\n try {\n finishedRoot.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n else {\n var prevProps = resolveClassComponentProps(\n finishedWork.type,\n current.memoizedProps\n );\n current = current.memoizedState;\n try {\n finishedRoot.componentDidUpdate(\n prevProps,\n current,\n finishedRoot.__reactInternalSnapshotBeforeUpdate\n );\n } catch (error$146) {\n captureCommitPhaseError(\n finishedWork,\n finishedWork.return,\n error$146\n );\n }\n }\n flags & 64 && commitClassCallbacks(finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 3:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n if (\n flags & 64 &&\n ((finishedRoot = finishedWork.updateQueue), null !== finishedRoot)\n ) {\n current = null;\n if (null !== finishedWork.child)\n switch (finishedWork.child.tag) {\n case 27:\n case 5:\n current = finishedWork.child.stateNode;\n break;\n case 1:\n current = finishedWork.child.stateNode;\n }\n try {\n commitCallbacks(finishedRoot, current);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n break;\n case 27:\n null === current &&\n flags & 4 &&\n commitHostSingletonAcquisition(finishedWork);\n case 26:\n case 5:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n null === current && flags & 4 && commitHostMount(finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 12:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n break;\n case 31:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitActivityHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 13:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n flags & 64 &&\n ((finishedRoot = finishedWork.memoizedState),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.dehydrated),\n null !== finishedRoot &&\n ((finishedWork = retryDehydratedSuspenseBoundary.bind(\n null,\n finishedWork\n )),\n registerSuspenseInstanceRetry(finishedRoot, finishedWork))));\n break;\n case 22:\n flags = null !== finishedWork.memoizedState || offscreenSubtreeIsHidden;\n if (!flags) {\n var newOffscreenSubtreeWasHidden =\n (null !== current && null !== current.memoizedState) ||\n offscreenSubtreeWasHidden;\n current = offscreenSubtreeIsHidden;\n prevProps = offscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = flags;\n (offscreenSubtreeWasHidden = newOffscreenSubtreeWasHidden) && !prevProps\n ? ((flags = 2),\n 0 !== (finishedWork.subtreeFlags & 8772) && (flags |= 1),\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n flags\n ))\n : recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n offscreenSubtreeIsHidden = current;\n offscreenSubtreeWasHidden = prevProps;\n }\n break;\n case 30:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 7:\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n default:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n }\n}\nfunction hideOrUnhideAllChildren(parentFiber, isHidden) {\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n hideOrUnhideAllChildrenOnFiber(parentFiber, isHidden),\n (parentFiber = parentFiber.sibling);\n}\nfunction hideOrUnhideAllChildrenOnFiber(fiber, isHidden) {\n switch (fiber.tag) {\n case 5:\n case 26:\n try {\n var instance = fiber.stateNode;\n if (isHidden) {\n var style = instance.style;\n \"function\" === typeof style.setProperty\n ? style.setProperty(\"display\", \"none\", \"important\")\n : (style.display = \"none\");\n } else {\n var instance$jscomp$0 = fiber.stateNode,\n styleProp = fiber.memoizedProps.style,\n display =\n void 0 !== styleProp &&\n null !== styleProp &&\n styleProp.hasOwnProperty(\"display\")\n ? styleProp.display\n : null;\n instance$jscomp$0.style.display =\n null == display || \"boolean\" === typeof display\n ? \"\"\n : (\"\" + display).trim();\n }\n } catch (error) {\n captureCommitPhaseError(fiber, fiber.return, error);\n }\n hideOrUnhideNearestPortals(fiber, isHidden);\n break;\n case 6:\n try {\n (fiber.stateNode.nodeValue = isHidden ? \"\" : fiber.memoizedProps),\n (viewTransitionMutationContext = !0);\n } catch (error) {\n captureCommitPhaseError(fiber, fiber.return, error);\n }\n break;\n case 18:\n try {\n var instance$jscomp$1 = fiber.stateNode;\n isHidden\n ? hideOrUnhideDehydratedBoundary(instance$jscomp$1, !0)\n : hideOrUnhideDehydratedBoundary(fiber.stateNode, !1);\n } catch (error) {\n captureCommitPhaseError(fiber, fiber.return, error);\n }\n break;\n case 22:\n case 23:\n null === fiber.memoizedState && hideOrUnhideAllChildren(fiber, isHidden);\n break;\n default:\n hideOrUnhideAllChildren(fiber, isHidden);\n }\n}\nfunction hideOrUnhideNearestPortals(parentFiber, isHidden$jscomp$0) {\n if (parentFiber.subtreeFlags & 67108864)\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n a: {\n var fiber = parentFiber,\n isHidden = isHidden$jscomp$0;\n switch (fiber.tag) {\n case 4:\n hideOrUnhideAllChildrenOnFiber(fiber, isHidden);\n break a;\n case 22:\n null === fiber.memoizedState &&\n hideOrUnhideNearestPortals(fiber, isHidden);\n break a;\n default:\n hideOrUnhideNearestPortals(fiber, isHidden);\n }\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction detachFiberAfterEffects(fiber) {\n var alternate = fiber.alternate;\n null !== alternate &&\n ((fiber.alternate = null), detachFiberAfterEffects(alternate));\n fiber.child = null;\n fiber.deletions = null;\n fiber.sibling = null;\n 5 === fiber.tag &&\n ((alternate = fiber.stateNode),\n null !== alternate && detachDeletedInstance(alternate));\n fiber.stateNode = null;\n fiber.return = null;\n fiber.dependencies = null;\n fiber.memoizedProps = null;\n fiber.memoizedState = null;\n fiber.pendingProps = null;\n fiber.stateNode = null;\n fiber.updateQueue = null;\n}\nvar hostParent = null,\n hostParentIsContainer = !1;\nfunction recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n parent\n) {\n for (parent = parent.child; null !== parent; )\n commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, parent),\n (parent = parent.sibling);\n}\nfunction commitDeletionEffectsOnFiber(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n) {\n if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberUnmount)\n try {\n injectedHook.onCommitFiberUnmount(rendererID, deletedFiber);\n } catch (err) {}\n switch (deletedFiber.tag) {\n case 26:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n deletedFiber.memoizedState\n ? deletedFiber.memoizedState.count--\n : deletedFiber.stateNode &&\n !offscreenSubtreeWasHidden &&\n ((deletedFiber = deletedFiber.stateNode),\n deletedFiber.parentNode.removeChild(deletedFiber));\n break;\n case 27:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n commitFragmentInstanceDeletionEffects(deletedFiber);\n var prevHostParent = hostParent,\n prevHostParentIsContainer = hostParentIsContainer;\n isSingletonScope(deletedFiber.type) &&\n ((hostParent = deletedFiber.stateNode), (hostParentIsContainer = !1));\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n releaseSingletonInstance(\n deletedFiber.stateNode,\n deletedFiber.type,\n deletedFiber.memoizedProps\n );\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n break;\n case 5:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor),\n commitFragmentInstanceDeletionEffects(deletedFiber);\n case 6:\n 6 === deletedFiber.tag &&\n commitFragmentInstanceDeletionEffects(deletedFiber);\n prevHostParent = hostParent;\n prevHostParentIsContainer = hostParentIsContainer;\n hostParent = null;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n if (null !== hostParent)\n if (hostParentIsContainer)\n try {\n (9 === hostParent.nodeType\n ? hostParent.body\n : \"HTML\" === hostParent.nodeName\n ? hostParent.ownerDocument.body\n : hostParent\n ).removeChild(deletedFiber.stateNode),\n (viewTransitionMutationContext = !0);\n } catch (error) {\n captureCommitPhaseError(\n deletedFiber,\n nearestMountedAncestor,\n error\n );\n }\n else\n try {\n hostParent.removeChild(deletedFiber.stateNode),\n (viewTransitionMutationContext = !0);\n } catch (error) {\n captureCommitPhaseError(\n deletedFiber,\n nearestMountedAncestor,\n error\n );\n }\n break;\n case 18:\n null !== hostParent &&\n (hostParentIsContainer\n ? ((finishedRoot = hostParent),\n clearHydrationBoundary(\n 9 === finishedRoot.nodeType\n ? finishedRoot.body\n : \"HTML\" === finishedRoot.nodeName\n ? finishedRoot.ownerDocument.body\n : finishedRoot,\n deletedFiber.stateNode\n ),\n retryIfBlockedOn(finishedRoot))\n : clearHydrationBoundary(hostParent, deletedFiber.stateNode));\n break;\n case 4:\n prevHostParent = hostParent;\n prevHostParentIsContainer = hostParentIsContainer;\n hostParent = deletedFiber.stateNode.containerInfo;\n hostParentIsContainer = !0;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n break;\n case 0:\n case 11:\n case 14:\n case 15:\n commitHookEffectListUnmount(2, deletedFiber, nearestMountedAncestor);\n offscreenSubtreeWasHidden ||\n commitHookEffectListUnmount(4, deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 1:\n offscreenSubtreeWasHidden ||\n (safelyDetachRef(deletedFiber, nearestMountedAncestor),\n (prevHostParent = deletedFiber.stateNode),\n \"function\" === typeof prevHostParent.componentWillUnmount &&\n safelyCallComponentWillUnmount(\n deletedFiber,\n nearestMountedAncestor,\n prevHostParent\n ));\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 21:\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 22:\n offscreenSubtreeWasHidden =\n (prevHostParent = offscreenSubtreeWasHidden) ||\n null !== deletedFiber.memoizedState;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n offscreenSubtreeWasHidden = prevHostParent;\n break;\n case 30:\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 7:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n default:\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n }\n}\nfunction commitActivityHydrationCallbacks(finishedRoot, finishedWork) {\n if (\n null === finishedWork.memoizedState &&\n ((finishedRoot = finishedWork.alternate),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.memoizedState), null !== finishedRoot))\n ) {\n finishedRoot = finishedRoot.dehydrated;\n try {\n retryIfBlockedOn(finishedRoot);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n}\nfunction commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n if (\n null === finishedWork.memoizedState &&\n ((finishedRoot = finishedWork.alternate),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.memoizedState),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.dehydrated), null !== finishedRoot)))\n )\n try {\n retryIfBlockedOn(finishedRoot);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction getRetryCache(finishedWork) {\n switch (finishedWork.tag) {\n case 31:\n case 13:\n case 19:\n var retryCache = finishedWork.stateNode;\n null === retryCache &&\n (retryCache = finishedWork.stateNode = new PossiblyWeakSet());\n return retryCache;\n case 22:\n return (\n (finishedWork = finishedWork.stateNode),\n (retryCache = finishedWork._retryCache),\n null === retryCache &&\n (retryCache = finishedWork._retryCache = new PossiblyWeakSet()),\n retryCache\n );\n default:\n throw Error(formatProdErrorMessage(435, finishedWork.tag));\n }\n}\nfunction attachSuspenseRetryListeners(finishedWork, wakeables) {\n var retryCache = getRetryCache(finishedWork);\n wakeables.forEach(function (wakeable) {\n if (!retryCache.has(wakeable)) {\n retryCache.add(wakeable);\n var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n wakeable.then(retry, retry);\n }\n });\n}\nfunction recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber, lanes) {\n var deletions = parentFiber.deletions;\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i],\n root = root$jscomp$0,\n returnFiber = parentFiber,\n parent = returnFiber;\n a: for (; null !== parent; ) {\n switch (parent.tag) {\n case 27:\n if (isSingletonScope(parent.type)) {\n hostParent = parent.stateNode;\n hostParentIsContainer = !1;\n break a;\n }\n break;\n case 5:\n hostParent = parent.stateNode;\n hostParentIsContainer = !1;\n break a;\n case 3:\n case 4:\n hostParent = parent.stateNode.containerInfo;\n hostParentIsContainer = !0;\n break a;\n }\n parent = parent.return;\n }\n if (null === hostParent) throw Error(formatProdErrorMessage(160));\n commitDeletionEffectsOnFiber(root, returnFiber, childToDelete);\n hostParent = null;\n hostParentIsContainer = !1;\n root = childToDelete.alternate;\n null !== root && (root.return = null);\n childToDelete.return = null;\n }\n if (parentFiber.subtreeFlags & 13886)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitMutationEffectsOnFiber(parentFiber, root$jscomp$0, lanes),\n (parentFiber = parentFiber.sibling);\n}\nvar currentHoistableRoot = null;\nfunction commitMutationEffectsOnFiber(finishedWork, root, lanes) {\n var current = finishedWork.alternate,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n if (\n flags & 4 &&\n ((current = finishedWork.updateQueue),\n (current = null !== current ? current.events : null),\n null !== current)\n )\n for (var ii = 0; ii < current.length; ii++) {\n var _eventPayloads$ii2 = current[ii];\n _eventPayloads$ii2.ref.impl = _eventPayloads$ii2.nextImpl;\n }\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n (commitHookEffectListUnmount(3, finishedWork, finishedWork.return),\n commitHookEffectListMount(3, finishedWork),\n commitHookEffectListUnmount(5, finishedWork, finishedWork.return));\n break;\n case 1:\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n flags & 64 &&\n offscreenSubtreeIsHidden &&\n ((finishedWork = finishedWork.updateQueue),\n null !== finishedWork &&\n ((root = finishedWork.callbacks),\n null !== root &&\n ((lanes = finishedWork.shared.hiddenCallbacks),\n (finishedWork.shared.hiddenCallbacks =\n null === lanes ? root : lanes.concat(root)))));\n break;\n case 26:\n ii = currentHoistableRoot;\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n if (flags & 4)\n if (\n ((flags = null !== current ? current.memoizedState : null),\n (lanes = finishedWork.memoizedState),\n null === current)\n )\n if (null === lanes)\n if (null === finishedWork.stateNode)\n if (offscreenSubtreeIsHidden)\n finishedWork.stateNode = createHoistableInstance(\n finishedWork.type,\n finishedWork.memoizedProps,\n root.containerInfo,\n finishedWork\n );\n else {\n a: {\n root = finishedWork.type;\n lanes = finishedWork.memoizedProps;\n flags = ii.ownerDocument || ii;\n b: switch (root) {\n case \"title\":\n current = flags.getElementsByTagName(\"title\")[0];\n if (\n !current ||\n current[internalHoistableMarker] ||\n current[internalInstanceKey] ||\n \"http://www.w3.org/2000/svg\" === current.namespaceURI ||\n current.hasAttribute(\"itemprop\")\n )\n (current = flags.createElement(root)),\n flags.head.insertBefore(\n current,\n flags.querySelector(\"head > title\")\n );\n setInitialProperties(current, root, lanes);\n current[internalInstanceKey] = finishedWork;\n markNodeAsHoistable(current);\n root = current;\n break a;\n case \"link\":\n if (\n (ii = getHydratableHoistableCache(\n \"link\",\n \"href\",\n flags\n ).get(root + (lanes.href || \"\")))\n )\n for (\n _eventPayloads$ii2 = 0;\n _eventPayloads$ii2 < ii.length;\n _eventPayloads$ii2++\n )\n if (\n ((current = ii[_eventPayloads$ii2]),\n current.getAttribute(\"href\") ===\n (null == lanes.href || \"\" === lanes.href\n ? null\n : lanes.href) &&\n current.getAttribute(\"rel\") ===\n (null == lanes.rel ? null : lanes.rel) &&\n current.getAttribute(\"title\") ===\n (null == lanes.title ? null : lanes.title) &&\n current.getAttribute(\"crossorigin\") ===\n (null == lanes.crossOrigin\n ? null\n : lanes.crossOrigin))\n ) {\n ii.splice(_eventPayloads$ii2, 1);\n break b;\n }\n current = flags.createElement(root);\n setInitialProperties(current, root, lanes);\n flags.head.appendChild(current);\n break;\n case \"meta\":\n if (\n (ii = getHydratableHoistableCache(\n \"meta\",\n \"content\",\n flags\n ).get(root + (lanes.content || \"\")))\n )\n for (\n _eventPayloads$ii2 = 0;\n _eventPayloads$ii2 < ii.length;\n _eventPayloads$ii2++\n )\n if (\n ((current = ii[_eventPayloads$ii2]),\n current.getAttribute(\"content\") ===\n (null == lanes.content\n ? null\n : \"\" + lanes.content) &&\n current.getAttribute(\"name\") ===\n (null == lanes.name ? null : lanes.name) &&\n current.getAttribute(\"property\") ===\n (null == lanes.property\n ? null\n : lanes.property) &&\n current.getAttribute(\"http-equiv\") ===\n (null == lanes.httpEquiv\n ? null\n : lanes.httpEquiv) &&\n current.getAttribute(\"charset\") ===\n (null == lanes.charSet ? null : lanes.charSet))\n ) {\n ii.splice(_eventPayloads$ii2, 1);\n break b;\n }\n current = flags.createElement(root);\n setInitialProperties(current, root, lanes);\n flags.head.appendChild(current);\n break;\n default:\n throw Error(formatProdErrorMessage(468, root));\n }\n current[internalInstanceKey] = finishedWork;\n markNodeAsHoistable(current);\n root = current;\n }\n finishedWork.stateNode = root;\n }\n else\n offscreenSubtreeIsHidden ||\n mountHoistable(ii, finishedWork.type, finishedWork.stateNode);\n else\n finishedWork.stateNode = acquireResource(\n ii,\n lanes,\n finishedWork.memoizedProps\n );\n else\n flags !== lanes\n ? (null === flags\n ? ((root = current.stateNode),\n null === root ||\n offscreenSubtreeWasHidden ||\n root.parentNode.removeChild(root))\n : flags.count--,\n null === lanes\n ? offscreenSubtreeIsHidden ||\n mountHoistable(ii, finishedWork.type, finishedWork.stateNode)\n : acquireResource(ii, lanes, finishedWork.memoizedProps))\n : null === lanes &&\n null !== finishedWork.stateNode &&\n commitHostUpdate(\n finishedWork,\n finishedWork.memoizedProps,\n current.memoizedProps\n );\n break;\n case 27:\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n null !== current &&\n flags & 4 &&\n commitHostUpdate(\n finishedWork,\n finishedWork.memoizedProps,\n current.memoizedProps\n );\n break;\n case 5:\n ii = offscreenDirectParentIsHidden;\n offscreenDirectParentIsHidden = !1;\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n offscreenDirectParentIsHidden = ii;\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n if (finishedWork.flags & 32) {\n root = finishedWork.stateNode;\n try {\n setTextContent(root, \"\"), (viewTransitionMutationContext = !0);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n flags & 4 &&\n null != finishedWork.stateNode &&\n ((root = finishedWork.memoizedProps),\n commitHostUpdate(\n finishedWork,\n root,\n null !== current ? current.memoizedProps : root\n ));\n flags & 1024 && (needsFormReset = !0);\n break;\n case 6:\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n commitReconciliationEffects(finishedWork);\n if (flags & 4) {\n if (null === finishedWork.stateNode)\n throw Error(formatProdErrorMessage(162));\n root = finishedWork.memoizedProps;\n lanes = finishedWork.stateNode;\n try {\n (lanes.nodeValue = root), (viewTransitionMutationContext = !0);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n break;\n case 3:\n viewTransitionMutationContext = !1;\n tagCaches = null;\n ii = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(root.containerInfo);\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n currentHoistableRoot = ii;\n commitReconciliationEffects(finishedWork);\n if (flags & 4 && null !== current && current.memoizedState.isDehydrated)\n try {\n retryIfBlockedOn(root.containerInfo);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n needsFormReset &&\n ((needsFormReset = !1), recursivelyResetForms(finishedWork));\n viewTransitionMutationContext = !1;\n break;\n case 4:\n flags = offscreenDirectParentIsHidden;\n offscreenDirectParentIsHidden = offscreenSubtreeIsHidden;\n current = pushMutationContext();\n ii = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(\n finishedWork.stateNode.containerInfo\n );\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n commitReconciliationEffects(finishedWork);\n currentHoistableRoot = ii;\n viewTransitionMutationContext &&\n inUpdateViewTransition &&\n (rootViewTransitionAffected = !0);\n viewTransitionMutationContext = current;\n offscreenDirectParentIsHidden = flags;\n break;\n case 12:\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n commitReconciliationEffects(finishedWork);\n break;\n case 31:\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n ((root = finishedWork.updateQueue),\n null !== root &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, root)));\n break;\n case 13:\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n commitReconciliationEffects(finishedWork);\n finishedWork.child.flags & 8192 &&\n (null !== finishedWork.memoizedState) !==\n (null !== current && null !== current.memoizedState) &&\n (globalMostRecentFallbackTime = now());\n flags & 4 &&\n ((root = finishedWork.updateQueue),\n null !== root &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, root)));\n break;\n case 22:\n ii = null !== finishedWork.memoizedState;\n _eventPayloads$ii2 = null !== current && null !== current.memoizedState;\n var prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden,\n prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden,\n prevOffscreenDirectParentIsHidden$166 = offscreenDirectParentIsHidden;\n offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden || ii;\n offscreenDirectParentIsHidden =\n prevOffscreenDirectParentIsHidden$166 || ii;\n offscreenSubtreeWasHidden =\n prevOffscreenSubtreeWasHidden || _eventPayloads$ii2;\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n offscreenDirectParentIsHidden = prevOffscreenDirectParentIsHidden$166;\n offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n commitReconciliationEffects(finishedWork);\n flags & 8192 &&\n ((root = finishedWork.stateNode),\n (root._visibility = ii ? root._visibility & -2 : root._visibility | 1),\n !ii ||\n null === current ||\n _eventPayloads$ii2 ||\n offscreenSubtreeIsHidden ||\n offscreenSubtreeWasHidden ||\n ((root = _eventPayloads$ii2 || offscreenSubtreeWasHidden),\n (lanes = offscreenSubtreeIsHidden),\n (current = offscreenSubtreeWasHidden),\n (offscreenSubtreeIsHidden = ii || offscreenSubtreeIsHidden),\n (offscreenSubtreeWasHidden = root),\n recursivelyTraverseDisappearLayoutEffects(finishedWork, 2),\n (offscreenSubtreeIsHidden = lanes),\n (offscreenSubtreeWasHidden = current)),\n (!ii && offscreenDirectParentIsHidden) ||\n hideOrUnhideAllChildren(finishedWork, ii));\n flags & 4 &&\n ((root = finishedWork.updateQueue),\n null !== root &&\n ((lanes = root.retryQueue),\n null !== lanes &&\n ((root.retryQueue = null),\n attachSuspenseRetryListeners(finishedWork, lanes))));\n break;\n case 19:\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n ((root = finishedWork.updateQueue),\n null !== root &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, root)));\n break;\n case 30:\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n flags = pushMutationContext();\n ii = inUpdateViewTransition;\n _eventPayloads$ii2 = (lanes & 335544064) === lanes;\n prevOffscreenSubtreeIsHidden = finishedWork.memoizedProps;\n inUpdateViewTransition =\n _eventPayloads$ii2 &&\n \"none\" !==\n getViewTransitionClassName(\n prevOffscreenSubtreeIsHidden.default,\n prevOffscreenSubtreeIsHidden.update\n );\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n commitReconciliationEffects(finishedWork);\n _eventPayloads$ii2 &&\n null !== current &&\n viewTransitionMutationContext &&\n (finishedWork.flags |= 4);\n inUpdateViewTransition = ii;\n viewTransitionMutationContext = flags;\n break;\n case 21:\n break;\n case 7:\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return)),\n current &&\n null !== current.stateNode &&\n (current.stateNode._fragmentFiber = finishedWork);\n default:\n recursivelyTraverseMutationEffects(root, finishedWork, lanes),\n commitReconciliationEffects(finishedWork);\n }\n}\nfunction commitReconciliationEffects(finishedWork) {\n var flags = finishedWork.flags;\n if (flags & 2) {\n try {\n for (\n var hostParentFiber, parentFiber = finishedWork.return;\n null !== parentFiber;\n\n ) {\n if (isHostParent(parentFiber)) {\n hostParentFiber = parentFiber;\n break;\n }\n parentFiber = parentFiber.return;\n }\n parentFiber = null;\n for (var parent = finishedWork.return; null !== parent; ) {\n if (isFragmentInstanceParent(parent)) {\n var fragmentInstance = parent.stateNode;\n null === parentFiber\n ? (parentFiber = [fragmentInstance])\n : parentFiber.push(fragmentInstance);\n }\n if (isFragmentInstanceHostBoundary(parent)) break;\n parent = parent.return;\n }\n var JSCompiler_inline_result = parentFiber;\n if (null == hostParentFiber) throw Error(formatProdErrorMessage(160));\n switch (hostParentFiber.tag) {\n case 27:\n var parent$jscomp$0 = hostParentFiber.stateNode,\n before = getHostSibling(finishedWork);\n insertOrAppendPlacementNode(\n finishedWork,\n before,\n parent$jscomp$0,\n JSCompiler_inline_result\n );\n break;\n case 5:\n var parent$149 = hostParentFiber.stateNode;\n hostParentFiber.flags & 32 &&\n (setTextContent(parent$149, \"\"), (hostParentFiber.flags &= -33));\n var before$150 = getHostSibling(finishedWork);\n insertOrAppendPlacementNode(\n finishedWork,\n before$150,\n parent$149,\n JSCompiler_inline_result\n );\n break;\n case 3:\n case 4:\n var parent$151 = hostParentFiber.stateNode.containerInfo,\n before$152 = getHostSibling(finishedWork);\n insertOrAppendPlacementNodeIntoContainer(\n finishedWork,\n before$152,\n parent$151,\n JSCompiler_inline_result\n );\n break;\n default:\n throw Error(formatProdErrorMessage(161));\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n finishedWork.flags &= -3;\n }\n flags & 4096 && (finishedWork.flags &= -4097);\n}\nfunction recursivelyResetForms(parentFiber) {\n if (parentFiber.subtreeFlags & 1024)\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var fiber = parentFiber;\n recursivelyResetForms(fiber);\n 5 === fiber.tag &&\n fiber.flags & 1024 &&\n ((fiber = fiber.stateNode),\n (_enabled = !0),\n fiber.reset(),\n (_enabled = !1));\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseAfterMutationEffects(root, parentFiber) {\n if (parentFiber.subtreeFlags & 9270)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitAfterMutationEffectsOnFiber(parentFiber, root),\n (parentFiber = parentFiber.sibling);\n else measureNestedViewTransitions(parentFiber, !1);\n}\nfunction commitAfterMutationEffectsOnFiber(finishedWork, root) {\n var current = finishedWork.alternate;\n if (null === current) commitEnterViewTransitions(finishedWork, !1);\n else\n switch (finishedWork.tag) {\n case 3:\n rootViewTransitionNameCanceled = viewTransitionContextChanged = !1;\n pushViewTransitionCancelableScope();\n recursivelyTraverseAfterMutationEffects(root, finishedWork);\n if (!viewTransitionContextChanged && !rootViewTransitionAffected) {\n finishedWork = viewTransitionCancelableChildren;\n if (null !== finishedWork)\n for (var i = 0; i < finishedWork.length; i += 3) {\n current = finishedWork[i];\n var oldName = finishedWork[i + 1];\n restoreViewTransitionName(current, finishedWork[i + 2]);\n current = current.ownerDocument.documentElement;\n null !== current &&\n current.animate(\n { opacity: [0, 0], pointerEvents: [\"none\", \"none\"] },\n {\n duration: 0,\n fill: \"forwards\",\n pseudoElement: \"::view-transition-group(\" + oldName + \")\"\n }\n );\n }\n finishedWork = root.containerInfo;\n finishedWork =\n 9 === finishedWork.nodeType\n ? finishedWork.documentElement\n : finishedWork.ownerDocument.documentElement;\n null !== finishedWork &&\n \"\" === finishedWork.style.viewTransitionName &&\n ((finishedWork.style.viewTransitionName = \"none\"),\n finishedWork.animate(\n { opacity: [0, 0], pointerEvents: [\"none\", \"none\"] },\n {\n duration: 0,\n fill: \"forwards\",\n pseudoElement: \"::view-transition-group(root)\"\n }\n ),\n finishedWork.animate(\n { width: [0, 0], height: [0, 0] },\n {\n duration: 0,\n fill: \"forwards\",\n pseudoElement: \"::view-transition\"\n }\n ));\n rootViewTransitionNameCanceled = !0;\n }\n viewTransitionCancelableChildren = null;\n break;\n case 5:\n recursivelyTraverseAfterMutationEffects(root, finishedWork);\n break;\n case 4:\n i = viewTransitionContextChanged;\n viewTransitionContextChanged = !1;\n recursivelyTraverseAfterMutationEffects(root, finishedWork);\n viewTransitionContextChanged && (rootViewTransitionAffected = !0);\n viewTransitionContextChanged = i;\n break;\n case 22:\n null === finishedWork.memoizedState &&\n (null !== current.memoizedState\n ? commitEnterViewTransitions(finishedWork, !1)\n : recursivelyTraverseAfterMutationEffects(root, finishedWork));\n break;\n case 30:\n i = viewTransitionContextChanged;\n oldName = pushViewTransitionCancelableScope();\n viewTransitionContextChanged = !1;\n recursivelyTraverseAfterMutationEffects(root, finishedWork);\n viewTransitionContextChanged && (finishedWork.flags |= 4);\n var props = finishedWork.memoizedProps,\n state = finishedWork.stateNode;\n root = getViewTransitionName(props, state);\n state = getViewTransitionName(current.memoizedProps, state);\n var className = getViewTransitionClassName(props.default, props.update);\n \"none\" === className\n ? (root = !1)\n : ((props = current.memoizedState),\n (current.memoizedState = null),\n (current = finishedWork.child),\n (viewTransitionHostInstanceIdx = 0),\n (root = measureViewTransitionHostInstancesRecursive(\n finishedWork,\n current,\n root,\n state,\n className,\n props,\n !0\n )),\n viewTransitionHostInstanceIdx !==\n (null === props ? 0 : props.length) &&\n (finishedWork.flags |= 32));\n 0 !== (finishedWork.flags & 4) && root\n ? (scheduleViewTransitionEvent(\n finishedWork,\n finishedWork.memoizedProps.onUpdate\n ),\n (viewTransitionCancelableChildren = oldName))\n : null !== oldName &&\n (oldName.push.apply(oldName, viewTransitionCancelableChildren),\n (viewTransitionCancelableChildren = oldName));\n viewTransitionContextChanged = 0 !== (finishedWork.flags & 32) ? !0 : i;\n break;\n default:\n recursivelyTraverseAfterMutationEffects(root, finishedWork);\n }\n}\nfunction recursivelyTraverseLayoutEffects(root, parentFiber) {\n if (parentFiber.subtreeFlags & 8772)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitLayoutEffectOnFiber(root, parentFiber.alternate, parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction recursivelyTraverseDisappearLayoutEffects(\n parentFiber,\n layoutEffectTraversalFlags$jscomp$0\n) {\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedWork = parentFiber,\n layoutEffectTraversalFlags = layoutEffectTraversalFlags$jscomp$0;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n commitHookEffectListUnmount(4, finishedWork, finishedWork.return);\n recursivelyTraverseDisappearLayoutEffects(\n finishedWork,\n layoutEffectTraversalFlags\n );\n break;\n case 1:\n safelyDetachRef(finishedWork, finishedWork.return);\n var instance = finishedWork.stateNode;\n \"function\" === typeof instance.componentWillUnmount &&\n safelyCallComponentWillUnmount(\n finishedWork,\n finishedWork.return,\n instance\n );\n recursivelyTraverseDisappearLayoutEffects(\n finishedWork,\n layoutEffectTraversalFlags\n );\n break;\n case 27:\n 0 !== (layoutEffectTraversalFlags & 2) &&\n releaseSingletonInstance(\n finishedWork.stateNode,\n finishedWork.type,\n finishedWork.memoizedProps\n );\n case 5:\n safelyDetachRef(finishedWork, finishedWork.return);\n (5 !== finishedWork.tag && 27 !== finishedWork.tag) ||\n commitFragmentInstanceDeletionEffects(finishedWork);\n recursivelyTraverseDisappearLayoutEffects(\n finishedWork,\n layoutEffectTraversalFlags\n );\n break;\n case 6:\n commitFragmentInstanceDeletionEffects(finishedWork);\n break;\n case 26:\n safelyDetachRef(finishedWork, finishedWork.return);\n instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState ||\n null === instance ||\n offscreenSubtreeWasHidden ||\n instance.parentNode.removeChild(instance);\n recursivelyTraverseDisappearLayoutEffects(\n finishedWork,\n layoutEffectTraversalFlags\n );\n break;\n case 22:\n null === finishedWork.memoizedState &&\n recursivelyTraverseDisappearLayoutEffects(\n finishedWork,\n layoutEffectTraversalFlags\n );\n break;\n case 30:\n safelyDetachRef(finishedWork, finishedWork.return);\n recursivelyTraverseDisappearLayoutEffects(\n finishedWork,\n layoutEffectTraversalFlags\n );\n break;\n case 7:\n safelyDetachRef(finishedWork, finishedWork.return);\n default:\n recursivelyTraverseDisappearLayoutEffects(\n finishedWork,\n layoutEffectTraversalFlags\n );\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseReappearLayoutEffects(\n finishedRoot$jscomp$0,\n parentFiber,\n layoutEffectTraversalFlags\n) {\n layoutEffectTraversalFlags =\n 0 !== (parentFiber.subtreeFlags & 8772)\n ? layoutEffectTraversalFlags\n : layoutEffectTraversalFlags & -2;\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var current = parentFiber.alternate,\n finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n flags = finishedWork.flags,\n includeWorkInProgressEffects = 0 !== (layoutEffectTraversalFlags & 1);\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n layoutEffectTraversalFlags\n );\n commitHookEffectListMount(4, finishedWork);\n break;\n case 1:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n layoutEffectTraversalFlags\n );\n current = finishedWork;\n finishedRoot = current.stateNode;\n if (\"function\" === typeof finishedRoot.componentDidMount)\n try {\n finishedRoot.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(current, current.return, error);\n }\n current = finishedWork;\n finishedRoot = current.updateQueue;\n if (null !== finishedRoot) {\n var instance = current.stateNode;\n try {\n var hiddenCallbacks = finishedRoot.shared.hiddenCallbacks;\n if (null !== hiddenCallbacks)\n for (\n finishedRoot.shared.hiddenCallbacks = null, finishedRoot = 0;\n finishedRoot < hiddenCallbacks.length;\n finishedRoot++\n )\n callCallback(hiddenCallbacks[finishedRoot], instance);\n } catch (error) {\n captureCommitPhaseError(current, current.return, error);\n }\n }\n includeWorkInProgressEffects &&\n flags & 64 &&\n commitClassCallbacks(finishedWork);\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 27:\n 0 !== (layoutEffectTraversalFlags & 2) &&\n commitHostSingletonAcquisition(finishedWork);\n case 5:\n (5 !== finishedWork.tag && 27 !== finishedWork.tag) ||\n commitFragmentInstanceInsertionEffects(finishedWork);\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n layoutEffectTraversalFlags\n );\n includeWorkInProgressEffects &&\n null === current &&\n flags & 4 &&\n commitHostMount(finishedWork);\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 6:\n commitFragmentInstanceInsertionEffects(finishedWork);\n break;\n case 26:\n instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState ||\n null === instance ||\n offscreenSubtreeIsHidden ||\n mountHoistable(\n getHoistableRoot(instance.ownerDocument),\n finishedWork.type,\n instance\n );\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n layoutEffectTraversalFlags\n );\n includeWorkInProgressEffects &&\n null === current &&\n flags & 4 &&\n commitHostMount(finishedWork);\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 12:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n layoutEffectTraversalFlags\n );\n break;\n case 31:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n layoutEffectTraversalFlags\n );\n includeWorkInProgressEffects &&\n flags & 4 &&\n commitActivityHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 13:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n layoutEffectTraversalFlags\n );\n includeWorkInProgressEffects &&\n flags & 4 &&\n commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 22:\n null === finishedWork.memoizedState &&\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n layoutEffectTraversalFlags\n );\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 30:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n layoutEffectTraversalFlags\n );\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 7:\n safelyAttachRef(finishedWork, finishedWork.return);\n default:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n layoutEffectTraversalFlags\n );\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction commitOffscreenPassiveMountEffects(current, finishedWork) {\n var previousCache = null;\n null !== current &&\n null !== current.memoizedState &&\n null !== current.memoizedState.cachePool &&\n (previousCache = current.memoizedState.cachePool.pool);\n current = null;\n null !== finishedWork.memoizedState &&\n null !== finishedWork.memoizedState.cachePool &&\n (current = finishedWork.memoizedState.cachePool.pool);\n current !== previousCache &&\n (null != current && current.refCount++,\n null != previousCache && releaseCache(previousCache));\n}\nfunction commitCachePassiveMountEffect(current, finishedWork) {\n current = null;\n null !== finishedWork.alternate &&\n (current = finishedWork.alternate.memoizedState.cache);\n finishedWork = finishedWork.memoizedState.cache;\n finishedWork !== current &&\n (finishedWork.refCount++, null != current && releaseCache(current));\n}\nfunction recursivelyTraversePassiveMountEffects(\n root,\n parentFiber,\n committedLanes,\n committedTransitions\n) {\n var isViewTransitionEligible =\n (committedLanes & 335544064) === committedLanes;\n if (parentFiber.subtreeFlags & (isViewTransitionEligible ? 10262 : 10256))\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitPassiveMountOnFiber(\n root,\n parentFiber,\n committedLanes,\n committedTransitions\n ),\n (parentFiber = parentFiber.sibling);\n else isViewTransitionEligible && restoreNestedViewTransitions(parentFiber);\n}\nfunction commitPassiveMountOnFiber(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n) {\n var isViewTransitionEligible =\n (committedLanes & 335544064) === committedLanes;\n isViewTransitionEligible &&\n null === finishedWork.alternate &&\n null !== finishedWork.return &&\n null !== finishedWork.return.alternate &&\n restoreEnterOrExitViewTransitions(finishedWork);\n var flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 && commitHookEffectListMount(9, finishedWork);\n break;\n case 1:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 3:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n isViewTransitionEligible &&\n rootViewTransitionNameCanceled &&\n ((finishedRoot = finishedRoot.containerInfo),\n (finishedRoot =\n 9 === finishedRoot.nodeType\n ? finishedRoot.body\n : \"HTML\" === finishedRoot.nodeName\n ? finishedRoot.ownerDocument.body\n : finishedRoot),\n \"root\" === finishedRoot.style.viewTransitionName &&\n (finishedRoot.style.viewTransitionName = \"\"),\n (finishedRoot = finishedRoot.ownerDocument.documentElement),\n null !== finishedRoot &&\n \"none\" === finishedRoot.style.viewTransitionName &&\n (finishedRoot.style.viewTransitionName = \"\"));\n flags & 2048 &&\n ((flags = null),\n null !== finishedWork.alternate &&\n (flags = finishedWork.alternate.memoizedState.cache),\n (finishedWork = finishedWork.memoizedState.cache),\n finishedWork !== flags &&\n (finishedWork.refCount++, null != flags && releaseCache(flags)));\n break;\n case 12:\n if (flags & 2048) {\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags = finishedWork.stateNode;\n try {\n var _finishedWork$memoize2 = finishedWork.memoizedProps,\n id = _finishedWork$memoize2.id,\n onPostCommit = _finishedWork$memoize2.onPostCommit;\n \"function\" === typeof onPostCommit &&\n onPostCommit(\n id,\n null === finishedWork.alternate ? \"mount\" : \"update\",\n flags.passiveEffectDuration,\n -0\n );\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n } else\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 31:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 13:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 23:\n break;\n case 22:\n _finishedWork$memoize2 = finishedWork.stateNode;\n id = finishedWork.alternate;\n null !== finishedWork.memoizedState\n ? (isViewTransitionEligible &&\n null !== id &&\n null === id.memoizedState &&\n restoreEnterOrExitViewTransitions(id),\n _finishedWork$memoize2._visibility & 2\n ? recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n )\n : recursivelyTraverseAtomicPassiveEffects(\n finishedRoot,\n finishedWork\n ))\n : (isViewTransitionEligible &&\n null !== id &&\n null !== id.memoizedState &&\n restoreEnterOrExitViewTransitions(finishedWork),\n _finishedWork$memoize2._visibility & 2\n ? recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n )\n : ((_finishedWork$memoize2._visibility |= 2),\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n 0 !== (finishedWork.subtreeFlags & 10256) || !1\n )));\n flags & 2048 && commitOffscreenPassiveMountEffects(id, finishedWork);\n break;\n case 24:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n case 30:\n isViewTransitionEligible &&\n ((flags = finishedWork.alternate),\n null !== flags &&\n (restoreViewTransitionOnHostInstances(flags.child, !0),\n restoreViewTransitionOnHostInstances(finishedWork.child, !0)));\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n default:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n }\n}\nfunction recursivelyTraverseReconnectPassiveEffects(\n finishedRoot$jscomp$0,\n parentFiber,\n committedLanes$jscomp$0,\n committedTransitions$jscomp$0,\n includeWorkInProgressEffects\n) {\n includeWorkInProgressEffects =\n includeWorkInProgressEffects &&\n (0 !== (parentFiber.subtreeFlags & 10256) || !1);\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n committedLanes = committedLanes$jscomp$0,\n committedTransitions = committedTransitions$jscomp$0,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n commitHookEffectListMount(8, finishedWork);\n break;\n case 23:\n break;\n case 22:\n var instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState\n ? instance._visibility & 2\n ? recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n )\n : recursivelyTraverseAtomicPassiveEffects(\n finishedRoot,\n finishedWork\n )\n : ((instance._visibility |= 2),\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n ));\n includeWorkInProgressEffects &&\n flags & 2048 &&\n commitOffscreenPassiveMountEffects(\n finishedWork.alternate,\n finishedWork\n );\n break;\n case 24:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseAtomicPassiveEffects(\n finishedRoot$jscomp$0,\n parentFiber\n) {\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 22:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n flags & 2048 &&\n commitOffscreenPassiveMountEffects(\n finishedWork.alternate,\n finishedWork\n );\n break;\n case 24:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nvar suspenseyCommitFlag = 8192;\nfunction recursivelyAccumulateSuspenseyCommit(\n parentFiber,\n committedLanes,\n suspendedState\n) {\n if (parentFiber.subtreeFlags & suspenseyCommitFlag)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n accumulateSuspenseyCommitOnFiber(\n parentFiber,\n committedLanes,\n suspendedState\n ),\n (parentFiber = parentFiber.sibling);\n}\nfunction accumulateSuspenseyCommitOnFiber(\n fiber,\n committedLanes,\n suspendedState\n) {\n switch (fiber.tag) {\n case 26:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n fiber.flags & suspenseyCommitFlag &&\n (null !== fiber.memoizedState\n ? suspendResource(\n suspendedState,\n currentHoistableRoot,\n fiber.memoizedState,\n fiber.memoizedProps\n )\n : ((fiber = fiber.stateNode),\n (committedLanes & 335544128) === committedLanes &&\n suspendInstance(suspendedState, fiber)));\n break;\n case 5:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n fiber.flags & suspenseyCommitFlag &&\n ((fiber = fiber.stateNode),\n (committedLanes & 335544128) === committedLanes &&\n suspendInstance(suspendedState, fiber));\n break;\n case 3:\n case 4:\n var previousHoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(fiber.stateNode.containerInfo);\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n currentHoistableRoot = previousHoistableRoot;\n break;\n case 22:\n null === fiber.memoizedState &&\n ((previousHoistableRoot = fiber.alternate),\n null !== previousHoistableRoot &&\n null !== previousHoistableRoot.memoizedState\n ? ((previousHoistableRoot = suspenseyCommitFlag),\n (suspenseyCommitFlag = 16777216),\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n ),\n (suspenseyCommitFlag = previousHoistableRoot))\n : recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n ));\n break;\n case 30:\n if (\n 0 !== (fiber.flags & suspenseyCommitFlag) &&\n ((previousHoistableRoot = fiber.memoizedProps.name),\n null != previousHoistableRoot && \"auto\" !== previousHoistableRoot)\n ) {\n var state = fiber.stateNode;\n state.paired = null;\n null === appearingViewTransitions &&\n (appearingViewTransitions = new Map());\n appearingViewTransitions.set(previousHoistableRoot, state);\n }\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n break;\n default:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n }\n}\nfunction detachAlternateSiblings(parentFiber) {\n var previousFiber = parentFiber.alternate;\n if (\n null !== previousFiber &&\n ((parentFiber = previousFiber.child), null !== parentFiber)\n ) {\n previousFiber.child = null;\n do\n (previousFiber = parentFiber.sibling),\n (parentFiber.sibling = null),\n (parentFiber = previousFiber);\n while (null !== parentFiber);\n }\n}\nfunction recursivelyTraversePassiveUnmountEffects(parentFiber) {\n var deletions = parentFiber.deletions;\n if (0 !== (parentFiber.flags & 16)) {\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i];\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n childToDelete,\n parentFiber\n );\n }\n detachAlternateSiblings(parentFiber);\n }\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitPassiveUnmountOnFiber(parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n finishedWork.flags & 2048 &&\n commitHookEffectListUnmount(9, finishedWork, finishedWork.return);\n break;\n case 3:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n case 12:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n case 22:\n var instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState &&\n instance._visibility & 2 &&\n (null === finishedWork.return || 13 !== finishedWork.return.tag)\n ? ((instance._visibility &= -3),\n recursivelyTraverseDisconnectPassiveEffects(finishedWork))\n : recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n default:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n }\n}\nfunction recursivelyTraverseDisconnectPassiveEffects(parentFiber) {\n var deletions = parentFiber.deletions;\n if (0 !== (parentFiber.flags & 16)) {\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i];\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n childToDelete,\n parentFiber\n );\n }\n detachAlternateSiblings(parentFiber);\n }\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n deletions = parentFiber;\n switch (deletions.tag) {\n case 0:\n case 11:\n case 15:\n commitHookEffectListUnmount(8, deletions, deletions.return);\n recursivelyTraverseDisconnectPassiveEffects(deletions);\n break;\n case 22:\n i = deletions.stateNode;\n i._visibility & 2 &&\n ((i._visibility &= -3),\n recursivelyTraverseDisconnectPassiveEffects(deletions));\n break;\n default:\n recursivelyTraverseDisconnectPassiveEffects(deletions);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n deletedSubtreeRoot,\n nearestMountedAncestor\n) {\n for (; null !== nextEffect; ) {\n var fiber = nextEffect;\n switch (fiber.tag) {\n case 0:\n case 11:\n case 15:\n commitHookEffectListUnmount(8, fiber, nearestMountedAncestor);\n break;\n case 23:\n case 22:\n if (\n null !== fiber.memoizedState &&\n null !== fiber.memoizedState.cachePool\n ) {\n var cache = fiber.memoizedState.cachePool.pool;\n null != cache && cache.refCount++;\n }\n break;\n case 24:\n releaseCache(fiber.memoizedState.cache);\n }\n cache = fiber.child;\n if (null !== cache) (cache.return = fiber), (nextEffect = cache);\n else\n a: for (fiber = deletedSubtreeRoot; null !== nextEffect; ) {\n cache = nextEffect;\n var sibling = cache.sibling,\n returnFiber = cache.return;\n detachFiberAfterEffects(cache);\n if (cache === fiber) {\n nextEffect = null;\n break a;\n }\n if (null !== sibling) {\n sibling.return = returnFiber;\n nextEffect = sibling;\n break a;\n }\n nextEffect = returnFiber;\n }\n }\n}\nvar DefaultAsyncDispatcher = {\n getCacheForType: function (resourceType) {\n var cache = readContext(CacheContext),\n cacheForType = cache.data.get(resourceType);\n void 0 === cacheForType &&\n ((cacheForType = resourceType()),\n cache.data.set(resourceType, cacheForType));\n return cacheForType;\n },\n cacheSignal: function () {\n return readContext(CacheContext).controller.signal;\n }\n },\n PossiblyWeakMap = \"function\" === typeof WeakMap ? WeakMap : Map,\n executionContext = 0,\n workInProgressRoot = null,\n workInProgress = null,\n workInProgressRootRenderLanes = 0,\n workInProgressSuspendedReason = 0,\n workInProgressThrownValue = null,\n workInProgressRootDidSkipSuspendedSiblings = !1,\n workInProgressRootIsPrerendering = !1,\n workInProgressRootDidAttachPingListener = !1,\n entangledRenderLanes = 0,\n workInProgressRootExitStatus = 0,\n workInProgressRootSkippedLanes = 0,\n workInProgressRootInterleavedUpdatedLanes = 0,\n workInProgressRootPingedLanes = 0,\n workInProgressDeferredLane = 0,\n workInProgressSuspendedRetryLanes = 0,\n workInProgressRootConcurrentErrors = null,\n workInProgressRootRecoverableErrors = null,\n workInProgressRootDidIncludeRecursiveRenderUpdate = !1,\n globalMostRecentFallbackTime = 0,\n globalMostRecentTransitionTime = 0,\n workInProgressRootRenderTargetTime = Infinity,\n workInProgressTransitions = null,\n legacyErrorBoundariesThatAlreadyFailed = null,\n pendingEffectsStatus = 0,\n pendingEffectsRoot = null,\n pendingFinishedWork = null,\n pendingEffectsLanes = 0,\n pendingEffectsRemainingLanes = 0,\n pendingPassiveTransitions = null,\n pendingRecoverableErrors = null,\n pendingViewTransition = null,\n pendingViewTransitionEvents = null,\n pendingTransitionTypes = null,\n nestedUpdateCount = 0,\n rootWithNestedUpdates = null;\nfunction requestUpdateLane() {\n return 0 !== (executionContext & 2) && 0 !== workInProgressRootRenderLanes\n ? workInProgressRootRenderLanes & -workInProgressRootRenderLanes\n : null !== ReactSharedInternals.T\n ? requestTransitionLane()\n : resolveUpdatePriority();\n}\nfunction requestDeferredLane() {\n if (0 === workInProgressDeferredLane)\n if (0 === (workInProgressRootRenderLanes & 536870912) || isHydrating) {\n var lane = nextTransitionDeferredLane;\n nextTransitionDeferredLane <<= 1;\n 0 === (nextTransitionDeferredLane & 3932160) &&\n (nextTransitionDeferredLane = 262144);\n workInProgressDeferredLane = lane;\n } else workInProgressDeferredLane = 536870912;\n lane = suspenseHandlerStackCursor.current;\n null !== lane && (lane.flags |= 32);\n return workInProgressDeferredLane;\n}\nfunction scheduleViewTransitionEvent(fiber, callback) {\n if (null != callback) {\n var state = fiber.stateNode,\n instance = state.ref;\n null === instance &&\n (instance = state.ref =\n createViewTransitionInstance(\n getViewTransitionName(fiber.memoizedProps, state)\n ));\n null === pendingViewTransitionEvents && (pendingViewTransitionEvents = []);\n pendingViewTransitionEvents.push(callback.bind(null, instance));\n }\n}\nfunction scheduleUpdateOnFiber(root, fiber, lane) {\n if (\n (root === workInProgressRoot &&\n (2 === workInProgressSuspendedReason ||\n 9 === workInProgressSuspendedReason)) ||\n null !== root.cancelPendingCommit\n )\n prepareFreshStack(root, 0),\n markRootSuspended(\n root,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n );\n markRootUpdated$1(root, lane);\n if (0 === (executionContext & 2) || root !== workInProgressRoot)\n root === workInProgressRoot &&\n (0 === (executionContext & 2) &&\n (workInProgressRootInterleavedUpdatedLanes |= lane),\n 4 === workInProgressRootExitStatus &&\n markRootSuspended(\n root,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n )),\n ensureRootIsScheduled(root);\n}\nfunction performWorkOnRoot(root$jscomp$0, lanes, forceSync) {\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n var shouldTimeSlice =\n (!forceSync &&\n 0 === (lanes & 127) &&\n 0 === (lanes & root$jscomp$0.expiredLanes)) ||\n checkIfRootIsPrerendering(root$jscomp$0, lanes),\n exitStatus = shouldTimeSlice\n ? renderRootConcurrent(root$jscomp$0, lanes)\n : renderRootSync(root$jscomp$0, lanes, !0),\n renderWasConcurrent = shouldTimeSlice;\n do {\n if (0 === exitStatus) {\n workInProgressRootIsPrerendering &&\n !shouldTimeSlice &&\n markRootSuspended(root$jscomp$0, lanes, 0, !1);\n break;\n } else {\n forceSync = root$jscomp$0.current.alternate;\n if (\n renderWasConcurrent &&\n !isRenderConsistentWithExternalStores(forceSync)\n ) {\n exitStatus = renderRootSync(root$jscomp$0, lanes, !1);\n renderWasConcurrent = !1;\n continue;\n }\n if (2 === exitStatus) {\n renderWasConcurrent = lanes;\n if (root$jscomp$0.errorRecoveryDisabledLanes & renderWasConcurrent)\n var JSCompiler_inline_result = 0;\n else\n (JSCompiler_inline_result = root$jscomp$0.pendingLanes & -536870913),\n (JSCompiler_inline_result =\n 0 !== JSCompiler_inline_result\n ? JSCompiler_inline_result\n : JSCompiler_inline_result & 536870912\n ? 536870912\n : 0);\n if (0 !== JSCompiler_inline_result) {\n lanes = JSCompiler_inline_result;\n a: {\n var root = root$jscomp$0;\n exitStatus = workInProgressRootConcurrentErrors;\n var wasRootDehydrated = root.current.memoizedState.isDehydrated;\n wasRootDehydrated &&\n (prepareFreshStack(root, JSCompiler_inline_result).flags |= 256);\n JSCompiler_inline_result = renderRootSync(\n root,\n JSCompiler_inline_result,\n !1\n );\n if (\n 2 !== JSCompiler_inline_result &&\n 6 !== JSCompiler_inline_result\n ) {\n if (\n workInProgressRootDidAttachPingListener &&\n !wasRootDehydrated\n ) {\n root.errorRecoveryDisabledLanes |= renderWasConcurrent;\n workInProgressRootInterleavedUpdatedLanes |=\n renderWasConcurrent;\n exitStatus = 4;\n break a;\n }\n renderWasConcurrent = workInProgressRootRecoverableErrors;\n workInProgressRootRecoverableErrors = exitStatus;\n null !== renderWasConcurrent &&\n (null === workInProgressRootRecoverableErrors\n ? (workInProgressRootRecoverableErrors = renderWasConcurrent)\n : workInProgressRootRecoverableErrors.push.apply(\n workInProgressRootRecoverableErrors,\n renderWasConcurrent\n ));\n }\n exitStatus = JSCompiler_inline_result;\n }\n renderWasConcurrent = !1;\n if (2 !== exitStatus) continue;\n }\n }\n if (1 === exitStatus) {\n prepareFreshStack(root$jscomp$0, 0);\n markRootSuspended(root$jscomp$0, lanes, 0, !0);\n break;\n }\n a: {\n shouldTimeSlice = root$jscomp$0;\n renderWasConcurrent = exitStatus;\n switch (renderWasConcurrent) {\n case 0:\n case 1:\n throw Error(formatProdErrorMessage(345));\n case 4:\n if ((lanes & 4194048) !== lanes && (lanes & 62914560) !== lanes)\n break;\n case 6:\n markRootSuspended(\n shouldTimeSlice,\n lanes,\n workInProgressDeferredLane,\n !workInProgressRootDidSkipSuspendedSiblings\n );\n break a;\n case 2:\n workInProgressRootRecoverableErrors = null;\n break;\n case 3:\n case 5:\n break;\n default:\n throw Error(formatProdErrorMessage(329));\n }\n if (\n (lanes & 62914560) === lanes &&\n ((exitStatus = globalMostRecentFallbackTime + 300 - now()),\n 10 < exitStatus)\n ) {\n markRootSuspended(\n shouldTimeSlice,\n lanes,\n workInProgressDeferredLane,\n !workInProgressRootDidSkipSuspendedSiblings\n );\n if (0 !== getNextLanes(shouldTimeSlice, 0, !0)) break a;\n pendingEffectsLanes = lanes;\n shouldTimeSlice.timeoutHandle = scheduleTimeout(\n completeRootWhenReady.bind(\n null,\n shouldTimeSlice,\n forceSync,\n workInProgressRootRecoverableErrors,\n workInProgressTransitions,\n workInProgressRootDidIncludeRecursiveRenderUpdate,\n lanes,\n workInProgressDeferredLane,\n workInProgressRootInterleavedUpdatedLanes,\n workInProgressSuspendedRetryLanes,\n workInProgressRootDidSkipSuspendedSiblings,\n renderWasConcurrent,\n \"Throttled\",\n -0,\n 0\n ),\n exitStatus\n );\n break a;\n }\n completeRootWhenReady(\n shouldTimeSlice,\n forceSync,\n workInProgressRootRecoverableErrors,\n workInProgressTransitions,\n workInProgressRootDidIncludeRecursiveRenderUpdate,\n lanes,\n workInProgressDeferredLane,\n workInProgressRootInterleavedUpdatedLanes,\n workInProgressSuspendedRetryLanes,\n workInProgressRootDidSkipSuspendedSiblings,\n renderWasConcurrent,\n null,\n -0,\n 0\n );\n }\n }\n break;\n } while (1);\n ensureRootIsScheduled(root$jscomp$0);\n}\nfunction completeRootWhenReady(\n root,\n finishedWork,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n lanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n didSkipSuspendedSiblings,\n exitStatus,\n suspendedCommitReason,\n completedRenderStartTime,\n completedRenderEndTime\n) {\n root.timeoutHandle = -1;\n var subtreeFlags = finishedWork.subtreeFlags,\n isViewTransitionEligible = (lanes & 335544064) === lanes;\n suspendedCommitReason = null;\n if (\n isViewTransitionEligible ||\n subtreeFlags & 8192 ||\n 16785408 === (subtreeFlags & 16785408)\n )\n if (\n ((suspendedCommitReason = {\n stylesheets: null,\n count: 0,\n imgCount: 0,\n imgBytes: 0,\n suspenseyImages: [],\n waitingForImages: !0,\n waitingForViewTransition: !1,\n unsuspend: noop$1\n }),\n (appearingViewTransitions = null),\n accumulateSuspenseyCommitOnFiber(\n finishedWork,\n lanes,\n suspendedCommitReason\n ),\n isViewTransitionEligible &&\n ((subtreeFlags = suspendedCommitReason),\n (isViewTransitionEligible = root.containerInfo),\n (isViewTransitionEligible = (\n 9 === isViewTransitionEligible.nodeType\n ? isViewTransitionEligible\n : isViewTransitionEligible.ownerDocument\n ).__reactViewTransition),\n null != isViewTransitionEligible &&\n (subtreeFlags.count++,\n (subtreeFlags.waitingForViewTransition = !0),\n (subtreeFlags = onUnsuspend.bind(subtreeFlags)),\n isViewTransitionEligible.finished.then(subtreeFlags, subtreeFlags))),\n (subtreeFlags =\n (lanes & 62914560) === lanes\n ? globalMostRecentFallbackTime - now()\n : (lanes & 4194048) === lanes\n ? globalMostRecentTransitionTime - now()\n : 0),\n (subtreeFlags = waitForCommitToBeReady(\n suspendedCommitReason,\n subtreeFlags\n )),\n null !== subtreeFlags)\n ) {\n pendingEffectsLanes = lanes;\n root.cancelPendingCommit = subtreeFlags(\n completeRoot.bind(\n null,\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n didSkipSuspendedSiblings,\n exitStatus,\n suspendedCommitReason,\n null,\n completedRenderStartTime,\n completedRenderEndTime\n )\n );\n markRootSuspended(root, lanes, spawnedLane, !didSkipSuspendedSiblings);\n return;\n }\n completeRoot(\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n didSkipSuspendedSiblings,\n exitStatus,\n suspendedCommitReason\n );\n}\nfunction isRenderConsistentWithExternalStores(finishedWork) {\n for (var node = finishedWork; ; ) {\n var tag = node.tag;\n if (\n (0 === tag || 11 === tag || 15 === tag) &&\n node.flags & 16384 &&\n ((tag = node.updateQueue),\n null !== tag && ((tag = tag.stores), null !== tag))\n )\n for (var i = 0; i < tag.length; i++) {\n var check = tag[i],\n getSnapshot = check.getSnapshot;\n check = check.value;\n try {\n if (!objectIs(getSnapshot(), check)) return !1;\n } catch (error) {\n return !1;\n }\n }\n tag = node.child;\n if (node.subtreeFlags & 16384 && null !== tag)\n (tag.return = node), (node = tag);\n else {\n if (node === finishedWork) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === finishedWork) return !0;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n }\n return !0;\n}\nfunction markRootSuspended(\n root,\n suspendedLanes,\n spawnedLane,\n didAttemptEntireTree\n) {\n suspendedLanes = getEntangledLanes(root, suspendedLanes);\n suspendedLanes &= ~workInProgressRootPingedLanes;\n suspendedLanes &= ~workInProgressRootInterleavedUpdatedLanes;\n root.suspendedLanes |= suspendedLanes;\n root.pingedLanes &= ~suspendedLanes;\n didAttemptEntireTree && (root.warmLanes |= suspendedLanes);\n didAttemptEntireTree = root.expirationTimes;\n for (var lanes = suspendedLanes; 0 < lanes; ) {\n var index$6 = 31 - clz32(lanes),\n lane = 1 << index$6;\n didAttemptEntireTree[index$6] = -1;\n lanes &= ~lane;\n }\n 0 !== spawnedLane &&\n markSpawnedDeferredLane(root, spawnedLane, suspendedLanes);\n}\nfunction flushSyncWork$1() {\n return 0 === (executionContext & 6)\n ? (flushSyncWorkAcrossRoots_impl(0, !1), !1)\n : !0;\n}\nfunction resetWorkInProgressStack() {\n if (null !== workInProgress) {\n if (0 === workInProgressSuspendedReason)\n var interruptedWork = workInProgress.return;\n else\n (interruptedWork = workInProgress),\n (lastContextDependency = currentlyRenderingFiber$1 = null),\n resetHooksOnUnwind(interruptedWork),\n (thenableState$1 = null),\n (thenableIndexCounter$1 = 0),\n (interruptedWork = workInProgress);\n for (; null !== interruptedWork; )\n unwindInterruptedWork(interruptedWork.alternate, interruptedWork),\n (interruptedWork = interruptedWork.return);\n workInProgress = null;\n }\n}\nfunction prepareFreshStack(root, lanes) {\n var timeoutHandle = root.timeoutHandle;\n -1 !== timeoutHandle &&\n ((root.timeoutHandle = -1), cancelTimeout(timeoutHandle));\n timeoutHandle = root.cancelPendingCommit;\n null !== timeoutHandle &&\n ((root.cancelPendingCommit = null), timeoutHandle());\n pendingEffectsLanes = 0;\n resetWorkInProgressStack();\n workInProgressRoot = root;\n workInProgress = timeoutHandle = createWorkInProgress(root.current, null);\n workInProgressRootRenderLanes = lanes;\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n workInProgressRootDidSkipSuspendedSiblings = !1;\n workInProgressRootIsPrerendering = checkIfRootIsPrerendering(root, lanes);\n workInProgressRootDidAttachPingListener = !1;\n workInProgressSuspendedRetryLanes =\n workInProgressDeferredLane =\n workInProgressRootPingedLanes =\n workInProgressRootInterleavedUpdatedLanes =\n workInProgressRootSkippedLanes =\n workInProgressRootExitStatus =\n 0;\n workInProgressRootRecoverableErrors = workInProgressRootConcurrentErrors =\n null;\n workInProgressRootDidIncludeRecursiveRenderUpdate = !1;\n entangledRenderLanes = getEntangledLanes(root, lanes);\n finishQueueingConcurrentUpdates();\n return timeoutHandle;\n}\nfunction handleThrow(root, thrownValue) {\n currentlyRenderingFiber = null;\n ReactSharedInternals.H = ContextOnlyDispatcher;\n thrownValue === SuspenseException || thrownValue === SuspenseActionException\n ? ((thrownValue = getSuspendedThenable()),\n (workInProgressSuspendedReason = 3))\n : thrownValue === SuspenseyCommitException\n ? ((thrownValue = getSuspendedThenable()),\n (workInProgressSuspendedReason = 4))\n : (workInProgressSuspendedReason =\n thrownValue === SelectiveHydrationException\n ? 8\n : null !== thrownValue &&\n \"object\" === typeof thrownValue &&\n \"function\" === typeof thrownValue.then\n ? 6\n : 1);\n workInProgressThrownValue = thrownValue;\n null === workInProgress &&\n ((workInProgressRootExitStatus = 1),\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n ));\n}\nfunction shouldRemainOnPreviousScreen() {\n var handler = suspenseHandlerStackCursor.current;\n return null === handler\n ? !0\n : (workInProgressRootRenderLanes & 4194048) ===\n workInProgressRootRenderLanes\n ? null === shellBoundary\n ? !0\n : !1\n : (workInProgressRootRenderLanes & 62914560) ===\n workInProgressRootRenderLanes ||\n 0 !== (workInProgressRootRenderLanes & 536870912)\n ? handler === shellBoundary\n : !1;\n}\nfunction pushDispatcher() {\n var prevDispatcher = ReactSharedInternals.H;\n ReactSharedInternals.H = ContextOnlyDispatcher;\n return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;\n}\nfunction pushAsyncDispatcher() {\n var prevAsyncDispatcher = ReactSharedInternals.A;\n ReactSharedInternals.A = DefaultAsyncDispatcher;\n return prevAsyncDispatcher;\n}\nfunction renderDidSuspendDelayIfPossible() {\n workInProgressRootExitStatus = 4;\n workInProgressRootDidSkipSuspendedSiblings ||\n ((workInProgressRootRenderLanes & 4194048) !==\n workInProgressRootRenderLanes &&\n null !== suspenseHandlerStackCursor.current) ||\n (workInProgressRootIsPrerendering = !0);\n (0 === (workInProgressRootSkippedLanes & 134217727) &&\n 0 === (workInProgressRootInterleavedUpdatedLanes & 134217727)) ||\n null === workInProgressRoot ||\n markRootSuspended(\n workInProgressRoot,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n );\n}\nfunction renderRootSync(root, lanes, shouldYieldForPrerendering) {\n var prevExecutionContext = executionContext;\n executionContext |= 2;\n var prevDispatcher = pushDispatcher(),\n prevAsyncDispatcher = pushAsyncDispatcher();\n if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes)\n (workInProgressTransitions = null), prepareFreshStack(root, lanes);\n lanes = !1;\n var exitStatus = workInProgressRootExitStatus;\n a: do\n try {\n if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n var unitOfWork = workInProgress,\n thrownValue = workInProgressThrownValue;\n switch (workInProgressSuspendedReason) {\n case 8:\n resetWorkInProgressStack();\n exitStatus = 6;\n break a;\n case 3:\n case 2:\n case 9:\n case 6:\n null === suspenseHandlerStackCursor.current && (lanes = !0);\n var reason = workInProgressSuspendedReason;\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n if (\n shouldYieldForPrerendering &&\n workInProgressRootIsPrerendering\n ) {\n exitStatus = 0;\n break a;\n }\n break;\n default:\n (reason = workInProgressSuspendedReason),\n (workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n }\n }\n workLoopSync();\n exitStatus = workInProgressRootExitStatus;\n break;\n } catch (thrownValue$184) {\n handleThrow(root, thrownValue$184);\n }\n while (1);\n lanes && root.shellSuspendCounter++;\n lastContextDependency = currentlyRenderingFiber$1 = null;\n executionContext = prevExecutionContext;\n ReactSharedInternals.H = prevDispatcher;\n ReactSharedInternals.A = prevAsyncDispatcher;\n null === workInProgress &&\n ((workInProgressRoot = null),\n (workInProgressRootRenderLanes = 0),\n finishQueueingConcurrentUpdates());\n return exitStatus;\n}\nfunction workLoopSync() {\n for (; null !== workInProgress; ) performUnitOfWork(workInProgress);\n}\nfunction renderRootConcurrent(root, lanes) {\n var prevExecutionContext = executionContext;\n executionContext |= 2;\n var prevDispatcher = pushDispatcher(),\n prevAsyncDispatcher = pushAsyncDispatcher();\n workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes\n ? ((workInProgressTransitions = null),\n (workInProgressRootRenderTargetTime = now() + 500),\n prepareFreshStack(root, lanes))\n : (workInProgressRootIsPrerendering = checkIfRootIsPrerendering(\n root,\n lanes\n ));\n a: do\n try {\n if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n lanes = workInProgress;\n var thrownValue = workInProgressThrownValue;\n b: switch (workInProgressSuspendedReason) {\n case 1:\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 1);\n break;\n case 2:\n case 9:\n if (isThenableResolved(thrownValue)) {\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n replaySuspendedUnitOfWork(lanes);\n break;\n }\n lanes = function () {\n (2 !== workInProgressSuspendedReason &&\n 9 !== workInProgressSuspendedReason) ||\n workInProgressRoot !== root ||\n (workInProgressSuspendedReason = 7);\n ensureRootIsScheduled(root);\n };\n thrownValue.then(lanes, lanes);\n break a;\n case 3:\n workInProgressSuspendedReason = 7;\n break a;\n case 4:\n workInProgressSuspendedReason = 5;\n break a;\n case 7:\n isThenableResolved(thrownValue)\n ? ((workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n replaySuspendedUnitOfWork(lanes))\n : ((workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 7));\n break;\n case 5:\n var resource = null;\n switch (workInProgress.tag) {\n case 26:\n resource = workInProgress.memoizedState;\n case 5:\n case 27:\n var hostFiber = workInProgress;\n if (\n resource\n ? preloadResource(resource)\n : hostFiber.stateNode.complete\n ) {\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n var sibling = hostFiber.sibling;\n if (null !== sibling) workInProgress = sibling;\n else {\n var returnFiber = hostFiber.return;\n null !== returnFiber\n ? ((workInProgress = returnFiber),\n completeUnitOfWork(returnFiber))\n : (workInProgress = null);\n }\n break b;\n }\n }\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 5);\n break;\n case 6:\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 6);\n break;\n case 8:\n resetWorkInProgressStack();\n workInProgressRootExitStatus = 6;\n break a;\n default:\n throw Error(formatProdErrorMessage(462));\n }\n }\n workLoopConcurrentByScheduler();\n break;\n } catch (thrownValue$186) {\n handleThrow(root, thrownValue$186);\n }\n while (1);\n lastContextDependency = currentlyRenderingFiber$1 = null;\n ReactSharedInternals.H = prevDispatcher;\n ReactSharedInternals.A = prevAsyncDispatcher;\n executionContext = prevExecutionContext;\n if (null !== workInProgress) return 0;\n workInProgressRoot = null;\n workInProgressRootRenderLanes = 0;\n finishQueueingConcurrentUpdates();\n return workInProgressRootExitStatus;\n}\nfunction workLoopConcurrentByScheduler() {\n for (; null !== workInProgress && !shouldYield(); )\n performUnitOfWork(workInProgress);\n}\nfunction performUnitOfWork(unitOfWork) {\n var next = beginWork(unitOfWork.alternate, unitOfWork, entangledRenderLanes);\n unitOfWork.memoizedProps = unitOfWork.pendingProps;\n null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction replaySuspendedUnitOfWork(unitOfWork) {\n var next = unitOfWork;\n var current = next.alternate;\n switch (next.tag) {\n case 15:\n case 0:\n next = replayFunctionComponent(\n current,\n next,\n next.pendingProps,\n next.type,\n void 0,\n workInProgressRootRenderLanes\n );\n break;\n case 11:\n next = replayFunctionComponent(\n current,\n next,\n next.pendingProps,\n next.type.render,\n next.ref,\n workInProgressRootRenderLanes\n );\n break;\n case 5:\n resetHooksOnUnwind(next);\n var fiber = next;\n fiber === hydrationParentFiber &&\n (isHydrating\n ? (popToNextHostParent(fiber),\n 5 === fiber.tag &&\n null != fiber.stateNode &&\n (nextHydratableInstance = fiber.stateNode))\n : (popToNextHostParent(fiber), (isHydrating = !0)));\n default:\n unwindInterruptedWork(current, next),\n (next = workInProgress =\n resetWorkInProgress(next, entangledRenderLanes)),\n (next = beginWork(current, next, entangledRenderLanes));\n }\n unitOfWork.memoizedProps = unitOfWork.pendingProps;\n null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction throwAndUnwindWorkLoop(\n root,\n unitOfWork,\n thrownValue,\n suspendedReason\n) {\n lastContextDependency = currentlyRenderingFiber$1 = null;\n resetHooksOnUnwind(unitOfWork);\n thenableState$1 = null;\n thenableIndexCounter$1 = 0;\n var returnFiber = unitOfWork.return;\n try {\n if (\n throwException(\n root,\n returnFiber,\n unitOfWork,\n thrownValue,\n workInProgressRootRenderLanes\n )\n ) {\n workInProgressRootExitStatus = 1;\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n );\n workInProgress = null;\n return;\n }\n } catch (error) {\n if (null !== returnFiber) throw ((workInProgress = returnFiber), error);\n workInProgressRootExitStatus = 1;\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n );\n workInProgress = null;\n return;\n }\n if (unitOfWork.flags & 32768) {\n if (isHydrating || 1 === suspendedReason) root = !0;\n else if (\n workInProgressRootIsPrerendering ||\n 0 !== (workInProgressRootRenderLanes & 536870912)\n )\n root = !1;\n else if (\n ((workInProgressRootDidSkipSuspendedSiblings = root = !0),\n 2 === suspendedReason ||\n 9 === suspendedReason ||\n 3 === suspendedReason ||\n 6 === suspendedReason)\n )\n (suspendedReason = suspenseHandlerStackCursor.current),\n null !== suspendedReason &&\n 13 === suspendedReason.tag &&\n (suspendedReason.flags |= 16384);\n unwindUnitOfWork(unitOfWork, root);\n } else completeUnitOfWork(unitOfWork);\n}\nfunction completeUnitOfWork(unitOfWork) {\n var completedWork = unitOfWork;\n do {\n if (0 !== (completedWork.flags & 32768)) {\n unwindUnitOfWork(\n completedWork,\n workInProgressRootDidSkipSuspendedSiblings\n );\n return;\n }\n unitOfWork = completedWork.return;\n var next = completeWork(\n completedWork.alternate,\n completedWork,\n entangledRenderLanes\n );\n if (null !== next) {\n workInProgress = next;\n return;\n }\n completedWork = completedWork.sibling;\n if (null !== completedWork) {\n workInProgress = completedWork;\n return;\n }\n workInProgress = completedWork = unitOfWork;\n } while (null !== completedWork);\n 0 === workInProgressRootExitStatus && (workInProgressRootExitStatus = 5);\n}\nfunction unwindUnitOfWork(unitOfWork, skipSiblings) {\n do {\n var next = unwindWork(unitOfWork.alternate, unitOfWork);\n if (null !== next) {\n next.flags &= 32767;\n workInProgress = next;\n return;\n }\n next = unitOfWork.return;\n null !== next &&\n ((next.flags |= 32768), (next.subtreeFlags = 0), (next.deletions = null));\n if (\n !skipSiblings &&\n ((unitOfWork = unitOfWork.sibling), null !== unitOfWork)\n ) {\n workInProgress = unitOfWork;\n return;\n }\n workInProgress = unitOfWork = next;\n } while (null !== unitOfWork);\n workInProgressRootExitStatus = 6;\n workInProgress = null;\n}\nfunction completeRoot(\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n didSkipSuspendedSiblings,\n exitStatus,\n suspendedState\n) {\n root.cancelPendingCommit = null;\n do flushPendingEffects();\n while (0 !== pendingEffectsStatus);\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n if (null !== finishedWork) {\n if (finishedWork === root.current) throw Error(formatProdErrorMessage(177));\n root === workInProgressRoot &&\n ((workInProgress = workInProgressRoot = null),\n (workInProgressRootRenderLanes = 0));\n pendingFinishedWork = finishedWork;\n pendingEffectsRoot = root;\n pendingEffectsLanes = lanes;\n pendingPassiveTransitions = transitions;\n pendingRecoverableErrors = recoverableErrors;\n commitRoot(\n root,\n finishedWork,\n lanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n suspendedState\n );\n }\n}\nfunction commitRoot(\n root,\n finishedWork,\n lanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n suspendedState\n) {\n var remainingLanes = finishedWork.lanes | finishedWork.childLanes;\n pendingEffectsRemainingLanes = remainingLanes;\n remainingLanes |= concurrentlyUpdatedLanes;\n markRootFinished(\n root,\n lanes,\n remainingLanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n );\n pendingViewTransitionEvents = null;\n (lanes & 335544064) === lanes\n ? ((pendingTransitionTypes = claimQueuedTransitionTypes(root)),\n (spawnedLane = 10262))\n : ((pendingTransitionTypes = null), (spawnedLane = 10256));\n 0 !== (finishedWork.subtreeFlags & spawnedLane) ||\n 0 !== (finishedWork.flags & spawnedLane)\n ? ((root.callbackNode = null),\n (root.callbackPriority = 0),\n scheduleCallback$1(NormalPriority$1, function () {\n flushPassiveEffects();\n return null;\n }))\n : ((root.callbackNode = null), (root.callbackPriority = 0));\n shouldStartViewTransition = !1;\n spawnedLane = 0 !== (finishedWork.flags & 13878);\n if (0 !== (finishedWork.subtreeFlags & 13878) || spawnedLane) {\n spawnedLane = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n updatedLanes = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n suspendedRetryLanes = executionContext;\n executionContext |= 4;\n try {\n commitBeforeMutationEffects(root, finishedWork, lanes);\n } finally {\n (executionContext = suspendedRetryLanes),\n (ReactDOMSharedInternals.p = updatedLanes),\n (ReactSharedInternals.T = spawnedLane);\n }\n }\n pendingEffectsStatus = 1;\n shouldStartViewTransition\n ? (pendingViewTransition = startViewTransition(\n suspendedState,\n root.containerInfo,\n pendingTransitionTypes,\n flushMutationEffects,\n flushLayoutEffects,\n flushAfterMutationEffects,\n flushSpawnedWork,\n flushPassiveEffects,\n reportViewTransitionError,\n null,\n null\n ))\n : (flushMutationEffects(), flushLayoutEffects(), flushSpawnedWork());\n}\nfunction reportViewTransitionError(error) {\n if (0 !== pendingEffectsStatus) {\n var onRecoverableError = pendingEffectsRoot.onRecoverableError;\n onRecoverableError(error, { componentStack: null });\n }\n}\nfunction flushAfterMutationEffects() {\n 3 === pendingEffectsStatus &&\n ((pendingEffectsStatus = 0),\n commitAfterMutationEffectsOnFiber(pendingFinishedWork, pendingEffectsRoot),\n (pendingEffectsStatus = 4));\n}\nfunction flushMutationEffects() {\n if (1 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n lanes = pendingEffectsLanes,\n rootMutationHasEffect = 0 !== (finishedWork.flags & 13878);\n if (0 !== (finishedWork.subtreeFlags & 13878) || rootMutationHasEffect) {\n rootMutationHasEffect = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n try {\n inUpdateViewTransition = rootViewTransitionAffected = !1;\n commitMutationEffectsOnFiber(finishedWork, root, lanes);\n lanes = selectionInformation;\n var curFocusedElem = getActiveElementDeep(root.containerInfo),\n priorFocusedElem = lanes.focusedElem,\n priorSelectionRange = lanes.selectionRange;\n if (\n curFocusedElem !== priorFocusedElem &&\n priorFocusedElem &&\n priorFocusedElem.ownerDocument &&\n containsNode(\n priorFocusedElem.ownerDocument.documentElement,\n priorFocusedElem\n )\n ) {\n if (\n null !== priorSelectionRange &&\n hasSelectionCapabilities(priorFocusedElem)\n ) {\n var start = priorSelectionRange.start,\n end = priorSelectionRange.end;\n void 0 === end && (end = start);\n if (\"selectionStart\" in priorFocusedElem)\n (priorFocusedElem.selectionStart = start),\n (priorFocusedElem.selectionEnd = Math.min(\n end,\n priorFocusedElem.value.length\n ));\n else {\n var doc = priorFocusedElem.ownerDocument || document,\n win = (doc && doc.defaultView) || window;\n if (win.getSelection) {\n var selection = win.getSelection(),\n length = priorFocusedElem.textContent.length,\n start$jscomp$0 = Math.min(priorSelectionRange.start, length),\n end$jscomp$0 =\n void 0 === priorSelectionRange.end\n ? start$jscomp$0\n : Math.min(priorSelectionRange.end, length);\n !selection.extend &&\n start$jscomp$0 > end$jscomp$0 &&\n ((curFocusedElem = end$jscomp$0),\n (end$jscomp$0 = start$jscomp$0),\n (start$jscomp$0 = curFocusedElem));\n var startMarker = getNodeForCharacterOffset(\n priorFocusedElem,\n start$jscomp$0\n ),\n endMarker = getNodeForCharacterOffset(\n priorFocusedElem,\n end$jscomp$0\n );\n if (\n startMarker &&\n endMarker &&\n (1 !== selection.rangeCount ||\n selection.anchorNode !== startMarker.node ||\n selection.anchorOffset !== startMarker.offset ||\n selection.focusNode !== endMarker.node ||\n selection.focusOffset !== endMarker.offset)\n ) {\n var range = doc.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n start$jscomp$0 > end$jscomp$0\n ? (selection.addRange(range),\n selection.extend(endMarker.node, endMarker.offset))\n : (range.setEnd(endMarker.node, endMarker.offset),\n selection.addRange(range));\n }\n }\n }\n }\n doc = [];\n for (\n selection = priorFocusedElem;\n (selection = selection.parentNode);\n\n )\n 1 === selection.nodeType &&\n doc.push({\n element: selection,\n left: selection.scrollLeft,\n top: selection.scrollTop\n });\n \"function\" === typeof priorFocusedElem.focus &&\n priorFocusedElem.focus();\n for (\n priorFocusedElem = 0;\n priorFocusedElem < doc.length;\n priorFocusedElem++\n ) {\n var info = doc[priorFocusedElem];\n info.element.scrollLeft = info.left;\n info.element.scrollTop = info.top;\n }\n }\n _enabled = !!eventsEnabled;\n selectionInformation = eventsEnabled = null;\n } finally {\n (executionContext = prevExecutionContext),\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = rootMutationHasEffect);\n }\n }\n root.current = finishedWork;\n pendingEffectsStatus = 2;\n }\n}\nfunction flushLayoutEffects() {\n if (2 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n rootHasLayoutEffect = 0 !== (finishedWork.flags & 8772);\n if (0 !== (finishedWork.subtreeFlags & 8772) || rootHasLayoutEffect) {\n rootHasLayoutEffect = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n try {\n commitLayoutEffectOnFiber(root, finishedWork.alternate, finishedWork);\n } finally {\n (executionContext = prevExecutionContext),\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = rootHasLayoutEffect);\n }\n }\n pendingEffectsStatus = 3;\n }\n}\nfunction flushSpawnedWork() {\n if (4 === pendingEffectsStatus || 3 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n var committedViewTransition = pendingViewTransition;\n pendingViewTransition = null;\n requestPaint();\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n lanes = pendingEffectsLanes,\n recoverableErrors = pendingRecoverableErrors,\n passiveSubtreeMask = (lanes & 335544064) === lanes ? 10262 : 10256;\n 0 !== (finishedWork.subtreeFlags & passiveSubtreeMask) ||\n 0 !== (finishedWork.flags & passiveSubtreeMask)\n ? (pendingEffectsStatus = 5)\n : ((pendingEffectsStatus = 0),\n (pendingFinishedWork = pendingEffectsRoot = null),\n releaseRootPooledCache(root, root.pendingLanes));\n passiveSubtreeMask = root.pendingLanes;\n 0 === passiveSubtreeMask && (legacyErrorBoundariesThatAlreadyFailed = null);\n lanesToEventPriority(lanes);\n finishedWork = finishedWork.stateNode;\n if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberRoot)\n try {\n injectedHook.onCommitFiberRoot(\n rendererID,\n finishedWork,\n void 0,\n 128 === (finishedWork.current.flags & 128)\n );\n } catch (err) {}\n if (null !== recoverableErrors) {\n finishedWork = ReactSharedInternals.T;\n passiveSubtreeMask = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n ReactSharedInternals.T = null;\n try {\n for (\n var onRecoverableError = root.onRecoverableError, i = 0;\n i < recoverableErrors.length;\n i++\n ) {\n var recoverableError = recoverableErrors[i];\n onRecoverableError(recoverableError.value, {\n componentStack: recoverableError.stack\n });\n }\n } finally {\n (ReactSharedInternals.T = finishedWork),\n (ReactDOMSharedInternals.p = passiveSubtreeMask);\n }\n }\n recoverableErrors = pendingViewTransitionEvents;\n onRecoverableError = pendingTransitionTypes;\n pendingTransitionTypes = null;\n if (\n null !== recoverableErrors &&\n ((pendingViewTransitionEvents = null),\n null === onRecoverableError && (onRecoverableError = []),\n null !== committedViewTransition)\n )\n for (\n recoverableError = 0;\n recoverableError < recoverableErrors.length;\n recoverableError++\n )\n (finishedWork = (0, recoverableErrors[recoverableError])(\n onRecoverableError\n )),\n void 0 !== finishedWork &&\n committedViewTransition.finished.finally(finishedWork);\n 0 !== (pendingEffectsLanes & 3) && flushPendingEffects();\n ensureRootIsScheduled(root);\n passiveSubtreeMask = root.pendingLanes;\n 0 !== (lanes & 261930) && 0 !== (passiveSubtreeMask & 42)\n ? root === rootWithNestedUpdates\n ? nestedUpdateCount++\n : ((nestedUpdateCount = 0), (rootWithNestedUpdates = root))\n : ((nestedUpdateCount = 0), (rootWithNestedUpdates = null));\n flushSyncWorkAcrossRoots_impl(0, !1);\n }\n}\nfunction releaseRootPooledCache(root, remainingLanes) {\n 0 === (root.pooledCacheLanes &= remainingLanes) &&\n ((remainingLanes = root.pooledCache),\n null != remainingLanes &&\n ((root.pooledCache = null), releaseCache(remainingLanes)));\n}\nfunction flushPendingEffects() {\n null !== pendingViewTransition &&\n (pendingViewTransition.skipTransition(), (pendingViewTransition = null));\n flushMutationEffects();\n flushLayoutEffects();\n flushSpawnedWork();\n return flushPassiveEffects();\n}\nfunction flushPassiveEffects() {\n if (5 !== pendingEffectsStatus) return !1;\n var root = pendingEffectsRoot,\n remainingLanes = pendingEffectsRemainingLanes;\n pendingEffectsRemainingLanes = 0;\n var renderPriority = lanesToEventPriority(pendingEffectsLanes),\n prevTransition = ReactSharedInternals.T,\n previousPriority = ReactDOMSharedInternals.p;\n try {\n ReactDOMSharedInternals.p = 32 > renderPriority ? 32 : renderPriority;\n ReactSharedInternals.T = null;\n renderPriority = pendingPassiveTransitions;\n pendingPassiveTransitions = null;\n var root$jscomp$0 = pendingEffectsRoot,\n lanes = pendingEffectsLanes;\n pendingEffectsStatus = 0;\n pendingFinishedWork = pendingEffectsRoot = null;\n pendingEffectsLanes = 0;\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(331));\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n commitPassiveUnmountOnFiber(root$jscomp$0.current);\n commitPassiveMountOnFiber(\n root$jscomp$0,\n root$jscomp$0.current,\n lanes,\n renderPriority\n );\n executionContext = prevExecutionContext;\n flushSyncWorkAcrossRoots_impl(0, !1);\n if (\n injectedHook &&\n \"function\" === typeof injectedHook.onPostCommitFiberRoot\n )\n try {\n injectedHook.onPostCommitFiberRoot(rendererID, root$jscomp$0);\n } catch (err) {}\n return !0;\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition),\n releaseRootPooledCache(root, remainingLanes);\n }\n}\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n sourceFiber = createRootErrorUpdate(rootFiber.stateNode, sourceFiber, 2);\n rootFiber = enqueueUpdate(rootFiber, sourceFiber, 2);\n null !== rootFiber &&\n (markRootUpdated$1(rootFiber, 2), ensureRootIsScheduled(rootFiber));\n}\nfunction captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error) {\n if (3 === sourceFiber.tag)\n captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);\n else\n for (; null !== nearestMountedAncestor; ) {\n if (3 === nearestMountedAncestor.tag) {\n captureCommitPhaseErrorOnRoot(\n nearestMountedAncestor,\n sourceFiber,\n error\n );\n break;\n } else if (1 === nearestMountedAncestor.tag) {\n var instance = nearestMountedAncestor.stateNode;\n if (\n \"function\" ===\n typeof nearestMountedAncestor.type.getDerivedStateFromError ||\n (\"function\" === typeof instance.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(instance)))\n ) {\n sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n error = createClassErrorUpdate(2);\n instance = enqueueUpdate(nearestMountedAncestor, error, 2);\n null !== instance &&\n (initializeClassErrorUpdate(\n error,\n instance,\n nearestMountedAncestor,\n sourceFiber\n ),\n markRootUpdated$1(instance, 2),\n ensureRootIsScheduled(instance));\n break;\n }\n }\n nearestMountedAncestor = nearestMountedAncestor.return;\n }\n}\nfunction attachPingListener(root, wakeable, lanes) {\n var pingCache = root.pingCache;\n if (null === pingCache) {\n pingCache = root.pingCache = new PossiblyWeakMap();\n var threadIDs = new Set();\n pingCache.set(wakeable, threadIDs);\n } else\n (threadIDs = pingCache.get(wakeable)),\n void 0 === threadIDs &&\n ((threadIDs = new Set()), pingCache.set(wakeable, threadIDs));\n threadIDs.has(lanes) ||\n ((workInProgressRootDidAttachPingListener = !0),\n threadIDs.add(lanes),\n (root = pingSuspendedRoot.bind(null, root, wakeable, lanes)),\n wakeable.then(root, root));\n}\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n var pingCache = root.pingCache;\n null !== pingCache && pingCache.delete(wakeable);\n root.pingedLanes |= root.suspendedLanes & pingedLanes;\n root.warmLanes &= ~pingedLanes;\n workInProgressRoot === root &&\n (workInProgressRootRenderLanes & pingedLanes) === pingedLanes &&\n (4 === workInProgressRootExitStatus ||\n (3 === workInProgressRootExitStatus &&\n (workInProgressRootRenderLanes & 62914560) ===\n workInProgressRootRenderLanes &&\n 300 > now() - globalMostRecentFallbackTime)\n ? 0 === (executionContext & 2)\n ? prepareFreshStack(root, 0)\n : (workInProgressRootPingedLanes |= pingedLanes)\n : (workInProgressRootPingedLanes |= pingedLanes),\n workInProgressSuspendedRetryLanes === workInProgressRootRenderLanes &&\n (workInProgressSuspendedRetryLanes = 0));\n ensureRootIsScheduled(root);\n}\nfunction retryTimedOutBoundary(boundaryFiber, retryLane) {\n 0 === retryLane && (retryLane = claimNextRetryLane());\n boundaryFiber = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n null !== boundaryFiber &&\n (markRootUpdated$1(boundaryFiber, retryLane),\n ensureRootIsScheduled(boundaryFiber));\n}\nfunction retryDehydratedSuspenseBoundary(boundaryFiber) {\n var suspenseState = boundaryFiber.memoizedState,\n retryLane = 0;\n null !== suspenseState && (retryLane = suspenseState.retryLane);\n retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n var retryLane = 0;\n switch (boundaryFiber.tag) {\n case 31:\n case 13:\n var retryCache = boundaryFiber.stateNode;\n var suspenseState = boundaryFiber.memoizedState;\n null !== suspenseState && (retryLane = suspenseState.retryLane);\n break;\n case 19:\n retryCache = boundaryFiber.stateNode;\n break;\n case 22:\n retryCache = boundaryFiber.stateNode._retryCache;\n break;\n default:\n throw Error(formatProdErrorMessage(314));\n }\n null !== retryCache && retryCache.delete(wakeable);\n retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction scheduleCallback$1(priorityLevel, callback) {\n return scheduleCallback$3(priorityLevel, callback);\n}\nvar firstScheduledRoot = null,\n lastScheduledRoot = null,\n didScheduleMicrotask = !1,\n mightHavePendingSyncWork = !1,\n isFlushingWork = !1,\n currentEventTransitionLane = 0;\nfunction ensureRootIsScheduled(root) {\n root !== lastScheduledRoot &&\n null === root.next &&\n (null === lastScheduledRoot\n ? (firstScheduledRoot = lastScheduledRoot = root)\n : (lastScheduledRoot = lastScheduledRoot.next = root));\n mightHavePendingSyncWork = !0;\n didScheduleMicrotask ||\n ((didScheduleMicrotask = !0), scheduleImmediateRootScheduleTask());\n}\nfunction flushSyncWorkAcrossRoots_impl(syncTransitionLanes, onlyLegacy) {\n if (!isFlushingWork && mightHavePendingSyncWork) {\n isFlushingWork = !0;\n do {\n var didPerformSomeWork = !1;\n for (var root$190 = firstScheduledRoot; null !== root$190; ) {\n if (!onlyLegacy)\n if (0 !== syncTransitionLanes) {\n var pendingLanes = root$190.pendingLanes;\n if (0 === pendingLanes) var JSCompiler_inline_result = 0;\n else {\n var suspendedLanes = root$190.suspendedLanes,\n pingedLanes = root$190.pingedLanes;\n JSCompiler_inline_result =\n (1 << (31 - clz32(42 | syncTransitionLanes) + 1)) - 1;\n JSCompiler_inline_result &=\n pendingLanes & ~(suspendedLanes & ~pingedLanes);\n JSCompiler_inline_result =\n JSCompiler_inline_result & 201326741\n ? (JSCompiler_inline_result & 201326741) | 1\n : JSCompiler_inline_result\n ? JSCompiler_inline_result | 2\n : 0;\n }\n 0 !== JSCompiler_inline_result &&\n ((didPerformSomeWork = !0),\n performSyncWorkOnRoot(root$190, JSCompiler_inline_result));\n } else\n (JSCompiler_inline_result = workInProgressRootRenderLanes),\n (JSCompiler_inline_result = getNextLanes(\n root$190,\n root$190 === workInProgressRoot ? JSCompiler_inline_result : 0,\n null !== root$190.cancelPendingCommit ||\n -1 !== root$190.timeoutHandle\n )),\n 0 === (JSCompiler_inline_result & 3) ||\n checkIfRootIsPrerendering(root$190, JSCompiler_inline_result) ||\n ((didPerformSomeWork = !0),\n performSyncWorkOnRoot(root$190, JSCompiler_inline_result));\n root$190 = root$190.next;\n }\n } while (didPerformSomeWork);\n isFlushingWork = !1;\n }\n}\nfunction processRootScheduleInImmediateTask() {\n processRootScheduleInMicrotask();\n}\nfunction processRootScheduleInMicrotask() {\n mightHavePendingSyncWork = didScheduleMicrotask = !1;\n var syncTransitionLanes = 0;\n 0 !== currentEventTransitionLane &&\n shouldAttemptEagerTransition() &&\n (syncTransitionLanes = currentEventTransitionLane);\n for (\n var currentTime = now(), prev = null, root = firstScheduledRoot;\n null !== root;\n\n ) {\n var next = root.next,\n nextLanes = scheduleTaskForRootDuringMicrotask(root, currentTime);\n if (0 === nextLanes)\n (root.next = null),\n null === prev ? (firstScheduledRoot = next) : (prev.next = next),\n null === next && (lastScheduledRoot = prev);\n else if (\n ((prev = root), 0 !== syncTransitionLanes || 0 !== (nextLanes & 3))\n )\n mightHavePendingSyncWork = !0;\n root = next;\n }\n (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus) ||\n flushSyncWorkAcrossRoots_impl(syncTransitionLanes, !1);\n 0 !== currentEventTransitionLane && (currentEventTransitionLane = 0);\n}\nfunction scheduleTaskForRootDuringMicrotask(root, currentTime) {\n for (\n var suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes,\n expirationTimes = root.expirationTimes,\n lanes = root.pendingLanes & -62914561;\n 0 < lanes;\n\n ) {\n var index$5 = 31 - clz32(lanes),\n lane = 1 << index$5,\n expirationTime = expirationTimes[index$5];\n if (-1 === expirationTime) {\n if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))\n expirationTimes[index$5] = computeExpirationTime(lane, currentTime);\n } else expirationTime <= currentTime && (root.expiredLanes |= lane);\n lanes &= ~lane;\n }\n currentTime = workInProgressRoot;\n suspendedLanes = workInProgressRootRenderLanes;\n suspendedLanes = getNextLanes(\n root,\n root === currentTime ? suspendedLanes : 0,\n null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n );\n pingedLanes = root.callbackNode;\n if (\n 0 === suspendedLanes ||\n (root === currentTime &&\n (2 === workInProgressSuspendedReason ||\n 9 === workInProgressSuspendedReason)) ||\n null !== root.cancelPendingCommit\n )\n return (\n null !== pingedLanes &&\n null !== pingedLanes &&\n cancelCallback$1(pingedLanes),\n (root.callbackNode = null),\n (root.callbackPriority = 0)\n );\n if (\n 0 === (suspendedLanes & 3) ||\n checkIfRootIsPrerendering(root, suspendedLanes)\n ) {\n currentTime = suspendedLanes & -suspendedLanes;\n if (currentTime === root.callbackPriority) return currentTime;\n null !== pingedLanes && cancelCallback$1(pingedLanes);\n switch (lanesToEventPriority(suspendedLanes)) {\n case 2:\n case 8:\n suspendedLanes = UserBlockingPriority;\n break;\n case 32:\n suspendedLanes = NormalPriority$1;\n break;\n case 268435456:\n suspendedLanes = IdlePriority;\n break;\n default:\n suspendedLanes = NormalPriority$1;\n }\n pingedLanes = performWorkOnRootViaSchedulerTask.bind(null, root);\n suspendedLanes = scheduleCallback$3(suspendedLanes, pingedLanes);\n root.callbackPriority = currentTime;\n root.callbackNode = suspendedLanes;\n return currentTime;\n }\n null !== pingedLanes && null !== pingedLanes && cancelCallback$1(pingedLanes);\n root.callbackPriority = 2;\n root.callbackNode = null;\n return 2;\n}\nfunction performWorkOnRootViaSchedulerTask(root, didTimeout) {\n if (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus)\n return (root.callbackNode = null), (root.callbackPriority = 0), null;\n var originalCallbackNode = root.callbackNode;\n if (flushPendingEffects() && root.callbackNode !== originalCallbackNode)\n return null;\n var workInProgressRootRenderLanes$jscomp$0 = workInProgressRootRenderLanes;\n workInProgressRootRenderLanes$jscomp$0 = getNextLanes(\n root,\n root === workInProgressRoot ? workInProgressRootRenderLanes$jscomp$0 : 0,\n null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n );\n if (0 === workInProgressRootRenderLanes$jscomp$0) return null;\n performWorkOnRoot(root, workInProgressRootRenderLanes$jscomp$0, didTimeout);\n scheduleTaskForRootDuringMicrotask(root, now());\n return null != root.callbackNode && root.callbackNode === originalCallbackNode\n ? performWorkOnRootViaSchedulerTask.bind(null, root)\n : null;\n}\nfunction performSyncWorkOnRoot(root, lanes) {\n if (flushPendingEffects()) return null;\n performWorkOnRoot(root, lanes, !0);\n}\nfunction scheduleImmediateRootScheduleTask() {\n scheduleMicrotask(function () {\n 0 !== (executionContext & 6)\n ? scheduleCallback$3(\n ImmediatePriority,\n processRootScheduleInImmediateTask\n )\n : processRootScheduleInMicrotask();\n });\n}\nfunction requestTransitionLane() {\n if (0 === currentEventTransitionLane) {\n var actionScopeLane = currentEntangledLane;\n 0 === actionScopeLane &&\n ((actionScopeLane = nextTransitionUpdateLane),\n (nextTransitionUpdateLane <<= 1),\n 0 === (nextTransitionUpdateLane & 261888) &&\n (nextTransitionUpdateLane = 256));\n currentEventTransitionLane = actionScopeLane;\n }\n return currentEventTransitionLane;\n}\nfunction coerceFormActionProp(actionProp) {\n return null == actionProp ||\n \"symbol\" === typeof actionProp ||\n \"boolean\" === typeof actionProp\n ? null\n : \"function\" === typeof actionProp\n ? actionProp\n : sanitizeURL(actionProp);\n}\nfunction extractEvents$1(\n dispatchQueue,\n domEventName,\n maybeTargetInst,\n nativeEvent,\n nativeEventTarget\n) {\n if (\n \"submit\" === domEventName &&\n maybeTargetInst &&\n maybeTargetInst.stateNode === nativeEventTarget\n ) {\n var action = coerceFormActionProp(\n (nativeEventTarget[internalPropsKey] || null).action\n ),\n submitter = nativeEvent.submitter;\n submitter &&\n ((domEventName = (domEventName = submitter[internalPropsKey] || null)\n ? coerceFormActionProp(domEventName.formAction)\n : submitter.getAttribute(\"formAction\")),\n null !== domEventName && ((action = domEventName), (submitter = null)));\n var event = new SyntheticEvent(\n \"action\",\n \"action\",\n null,\n nativeEvent,\n nativeEventTarget\n );\n dispatchQueue.push({\n event: event,\n listeners: [\n {\n instance: null,\n listener: function () {\n if (nativeEvent.defaultPrevented) {\n if (0 !== currentEventTransitionLane) {\n var formData = new FormData(nativeEventTarget, submitter);\n startHostTransition(\n maybeTargetInst,\n {\n pending: !0,\n data: formData,\n method: nativeEventTarget.method,\n action: action\n },\n null,\n formData\n );\n }\n } else\n \"function\" === typeof action &&\n (event.preventDefault(),\n (formData = new FormData(nativeEventTarget, submitter)),\n startHostTransition(\n maybeTargetInst,\n {\n pending: !0,\n data: formData,\n method: nativeEventTarget.method,\n action: action\n },\n action,\n formData\n ));\n },\n currentTarget: nativeEventTarget\n }\n ]\n });\n }\n}\nfor (\n var i$jscomp$inline_1667 = 0;\n i$jscomp$inline_1667 < simpleEventPluginEvents.length;\n i$jscomp$inline_1667++\n) {\n var eventName$jscomp$inline_1668 =\n simpleEventPluginEvents[i$jscomp$inline_1667],\n domEventName$jscomp$inline_1669 =\n eventName$jscomp$inline_1668.toLowerCase(),\n capitalizedEvent$jscomp$inline_1670 =\n eventName$jscomp$inline_1668[0].toUpperCase() +\n eventName$jscomp$inline_1668.slice(1);\n registerSimpleEvent(\n domEventName$jscomp$inline_1669,\n \"on\" + capitalizedEvent$jscomp$inline_1670\n );\n}\nregisterSimpleEvent(ANIMATION_END, \"onAnimationEnd\");\nregisterSimpleEvent(ANIMATION_ITERATION, \"onAnimationIteration\");\nregisterSimpleEvent(ANIMATION_START, \"onAnimationStart\");\nregisterSimpleEvent(\"dblclick\", \"onDoubleClick\");\nregisterSimpleEvent(\"focusin\", \"onFocus\");\nregisterSimpleEvent(\"focusout\", \"onBlur\");\nregisterSimpleEvent(TRANSITION_RUN, \"onTransitionRun\");\nregisterSimpleEvent(TRANSITION_START, \"onTransitionStart\");\nregisterSimpleEvent(TRANSITION_CANCEL, \"onTransitionCancel\");\nregisterSimpleEvent(TRANSITION_END, \"onTransitionEnd\");\nregisterDirectEvent(\"onMouseEnter\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onMouseLeave\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onPointerEnter\", [\"pointerout\", \"pointerover\"]);\nregisterDirectEvent(\"onPointerLeave\", [\"pointerout\", \"pointerover\"]);\nregisterTwoPhaseEvent(\n \"onChange\",\n \"change click focusin focusout input keydown keyup selectionchange\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onSelect\",\n \"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\n \" \"\n )\n);\nregisterTwoPhaseEvent(\"onBeforeInput\", [\n \"compositionend\",\n \"keypress\",\n \"textInput\",\n \"paste\"\n]);\nregisterTwoPhaseEvent(\n \"onCompositionEnd\",\n \"compositionend focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onCompositionStart\",\n \"compositionstart focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onCompositionUpdate\",\n \"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \")\n);\nvar mediaEventTypes =\n \"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\n \" \"\n ),\n nonDelegatedEvents = new Set(\n \"beforetoggle cancel close invalid load scroll scrollend toggle\"\n .split(\" \")\n .concat(mediaEventTypes)\n );\nfunction processDispatchQueue(dispatchQueue, eventSystemFlags) {\n eventSystemFlags = 0 !== (eventSystemFlags & 4);\n for (var i = 0; i < dispatchQueue.length; i++) {\n var _dispatchQueue$i = dispatchQueue[i],\n event = _dispatchQueue$i.event;\n _dispatchQueue$i = _dispatchQueue$i.listeners;\n a: {\n var previousInstance = void 0;\n if (eventSystemFlags)\n for (\n var i$jscomp$0 = _dispatchQueue$i.length - 1;\n 0 <= i$jscomp$0;\n i$jscomp$0--\n ) {\n var _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0],\n instance = _dispatchListeners$i.instance,\n currentTarget = _dispatchListeners$i.currentTarget;\n _dispatchListeners$i = _dispatchListeners$i.listener;\n if (instance !== previousInstance && event.isPropagationStopped())\n break a;\n previousInstance = _dispatchListeners$i;\n event.currentTarget = currentTarget;\n try {\n previousInstance(event);\n } catch (error) {\n reportGlobalError(error);\n }\n event.currentTarget = null;\n previousInstance = instance;\n }\n else\n for (\n i$jscomp$0 = 0;\n i$jscomp$0 < _dispatchQueue$i.length;\n i$jscomp$0++\n ) {\n _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0];\n instance = _dispatchListeners$i.instance;\n currentTarget = _dispatchListeners$i.currentTarget;\n _dispatchListeners$i = _dispatchListeners$i.listener;\n if (instance !== previousInstance && event.isPropagationStopped())\n break a;\n previousInstance = _dispatchListeners$i;\n event.currentTarget = currentTarget;\n try {\n previousInstance(event);\n } catch (error) {\n reportGlobalError(error);\n }\n event.currentTarget = null;\n previousInstance = instance;\n }\n }\n }\n}\nfunction listenToNonDelegatedEvent(domEventName, targetElement) {\n var JSCompiler_inline_result = targetElement[internalEventHandlersKey];\n void 0 === JSCompiler_inline_result &&\n (JSCompiler_inline_result = targetElement[internalEventHandlersKey] =\n new Set());\n var listenerSetKey = domEventName + \"__bubble\";\n JSCompiler_inline_result.has(listenerSetKey) ||\n (addTrappedEventListener(targetElement, domEventName, 2, !1),\n JSCompiler_inline_result.add(listenerSetKey));\n}\nfunction listenToNativeEvent(domEventName, isCapturePhaseListener, target) {\n var eventSystemFlags = 0;\n isCapturePhaseListener && (eventSystemFlags |= 4);\n addTrappedEventListener(\n target,\n domEventName,\n eventSystemFlags,\n isCapturePhaseListener\n );\n}\nvar listeningMarker = \"_reactListening\" + Math.random().toString(36).slice(2);\nfunction listenToAllSupportedEvents(rootContainerElement) {\n if (!rootContainerElement[listeningMarker]) {\n rootContainerElement[listeningMarker] = !0;\n allNativeEvents.forEach(function (domEventName) {\n \"selectionchange\" !== domEventName &&\n (nonDelegatedEvents.has(domEventName) ||\n listenToNativeEvent(domEventName, !1, rootContainerElement),\n listenToNativeEvent(domEventName, !0, rootContainerElement));\n });\n var ownerDocument =\n 9 === rootContainerElement.nodeType\n ? rootContainerElement\n : rootContainerElement.ownerDocument;\n null === ownerDocument ||\n ownerDocument[listeningMarker] ||\n ((ownerDocument[listeningMarker] = !0),\n listenToNativeEvent(\"selectionchange\", !1, ownerDocument));\n }\n}\nfunction addTrappedEventListener(\n targetContainer,\n domEventName,\n eventSystemFlags,\n isCapturePhaseListener\n) {\n switch (getEventPriority(domEventName)) {\n case 2:\n var listenerWrapper = dispatchDiscreteEvent;\n break;\n case 8:\n listenerWrapper = dispatchContinuousEvent;\n break;\n default:\n listenerWrapper = dispatchEvent;\n }\n eventSystemFlags = listenerWrapper.bind(\n null,\n domEventName,\n eventSystemFlags,\n targetContainer\n );\n listenerWrapper = void 0;\n !passiveBrowserEventsSupported ||\n (\"touchstart\" !== domEventName &&\n \"touchmove\" !== domEventName &&\n \"wheel\" !== domEventName) ||\n (listenerWrapper = !0);\n isCapturePhaseListener\n ? void 0 !== listenerWrapper\n ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n capture: !0,\n passive: listenerWrapper\n })\n : targetContainer.addEventListener(domEventName, eventSystemFlags, !0)\n : void 0 !== listenerWrapper\n ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n passive: listenerWrapper\n })\n : targetContainer.addEventListener(domEventName, eventSystemFlags, !1);\n}\nfunction dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n targetInst$jscomp$0,\n targetContainer\n) {\n var ancestorInst = targetInst$jscomp$0;\n if (\n 0 === (eventSystemFlags & 1) &&\n 0 === (eventSystemFlags & 2) &&\n null !== targetInst$jscomp$0\n )\n a: for (;;) {\n if (null === targetInst$jscomp$0) return;\n var nodeTag = targetInst$jscomp$0.tag;\n if (3 === nodeTag || 4 === nodeTag) {\n var container = targetInst$jscomp$0.stateNode.containerInfo;\n if (container === targetContainer) break;\n if (4 === nodeTag)\n for (nodeTag = targetInst$jscomp$0.return; null !== nodeTag; ) {\n var grandTag = nodeTag.tag;\n if (\n (3 === grandTag || 4 === grandTag) &&\n nodeTag.stateNode.containerInfo === targetContainer\n )\n return;\n nodeTag = nodeTag.return;\n }\n for (; null !== container; ) {\n nodeTag = getClosestInstanceFromNode(container);\n if (null === nodeTag) return;\n grandTag = nodeTag.tag;\n if (\n 5 === grandTag ||\n 6 === grandTag ||\n 26 === grandTag ||\n 27 === grandTag\n ) {\n targetInst$jscomp$0 = ancestorInst = nodeTag;\n continue a;\n }\n container = container.parentNode;\n }\n }\n targetInst$jscomp$0 = targetInst$jscomp$0.return;\n }\n batchedUpdates$1(function () {\n var targetInst = ancestorInst,\n nativeEventTarget = getEventTarget(nativeEvent),\n dispatchQueue = [];\n a: {\n var reactName = topLevelEventsToReactNames.get(domEventName);\n if (void 0 !== reactName) {\n var SyntheticEventCtor = SyntheticEvent,\n reactEventType = domEventName;\n switch (domEventName) {\n case \"keypress\":\n if (0 === getEventCharCode(nativeEvent)) break a;\n case \"keydown\":\n case \"keyup\":\n SyntheticEventCtor = SyntheticKeyboardEvent;\n break;\n case \"focusin\":\n reactEventType = \"focus\";\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"focusout\":\n reactEventType = \"blur\";\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"beforeblur\":\n case \"afterblur\":\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"click\":\n if (2 === nativeEvent.button) break a;\n case \"auxclick\":\n case \"dblclick\":\n case \"mousedown\":\n case \"mousemove\":\n case \"mouseup\":\n case \"mouseout\":\n case \"mouseover\":\n case \"contextmenu\":\n SyntheticEventCtor = SyntheticMouseEvent;\n break;\n case \"drag\":\n case \"dragend\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"dragstart\":\n case \"drop\":\n SyntheticEventCtor = SyntheticDragEvent;\n break;\n case \"touchcancel\":\n case \"touchend\":\n case \"touchmove\":\n case \"touchstart\":\n SyntheticEventCtor = SyntheticTouchEvent;\n break;\n case ANIMATION_END:\n case ANIMATION_ITERATION:\n case ANIMATION_START:\n SyntheticEventCtor = SyntheticAnimationEvent;\n break;\n case TRANSITION_END:\n SyntheticEventCtor = SyntheticTransitionEvent;\n break;\n case \"scroll\":\n case \"scrollend\":\n SyntheticEventCtor = SyntheticUIEvent;\n break;\n case \"wheel\":\n SyntheticEventCtor = SyntheticWheelEvent;\n break;\n case \"copy\":\n case \"cut\":\n case \"paste\":\n SyntheticEventCtor = SyntheticClipboardEvent;\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"pointerup\":\n SyntheticEventCtor = SyntheticPointerEvent;\n break;\n case \"submit\":\n SyntheticEventCtor = SyntheticSubmitEvent;\n break;\n case \"toggle\":\n case \"beforetoggle\":\n SyntheticEventCtor = SyntheticToggleEvent;\n }\n var inCapturePhase = 0 !== (eventSystemFlags & 4),\n accumulateTargetOnly =\n !inCapturePhase &&\n (\"scroll\" === domEventName || \"scrollend\" === domEventName),\n reactEventName = inCapturePhase\n ? null !== reactName\n ? reactName + \"Capture\"\n : null\n : reactName;\n inCapturePhase = [];\n for (\n var instance = targetInst, lastHostComponent;\n null !== instance;\n\n ) {\n var _instance = instance;\n lastHostComponent = _instance.stateNode;\n _instance = _instance.tag;\n (5 !== _instance && 26 !== _instance && 27 !== _instance) ||\n null === lastHostComponent ||\n null === reactEventName ||\n ((_instance = getListener(instance, reactEventName)),\n null != _instance &&\n inCapturePhase.push(\n createDispatchListener(instance, _instance, lastHostComponent)\n ));\n if (accumulateTargetOnly) break;\n instance = instance.return;\n }\n 0 < inCapturePhase.length &&\n ((reactName = new SyntheticEventCtor(\n reactName,\n reactEventType,\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: reactName, listeners: inCapturePhase }));\n }\n }\n if (0 === (eventSystemFlags & 7)) {\n a: {\n SyntheticEventCtor =\n \"mouseover\" === domEventName || \"pointerover\" === domEventName;\n reactName =\n \"mouseout\" === domEventName || \"pointerout\" === domEventName;\n if (\n SyntheticEventCtor &&\n nativeEvent !== currentReplayingEvent &&\n (reactEventType =\n nativeEvent.relatedTarget || nativeEvent.fromElement) &&\n (getClosestInstanceFromNode(reactEventType) ||\n reactEventType[internalContainerInstanceKey])\n )\n break a;\n if (reactName || SyntheticEventCtor) {\n reactEventType =\n nativeEventTarget.window === nativeEventTarget\n ? nativeEventTarget\n : (SyntheticEventCtor = nativeEventTarget.ownerDocument)\n ? SyntheticEventCtor.defaultView ||\n SyntheticEventCtor.parentWindow\n : window;\n if (reactName) {\n if (\n ((SyntheticEventCtor =\n nativeEvent.relatedTarget || nativeEvent.toElement),\n (reactName = targetInst),\n (SyntheticEventCtor = SyntheticEventCtor\n ? getClosestInstanceFromNode(SyntheticEventCtor)\n : null),\n null !== SyntheticEventCtor &&\n ((accumulateTargetOnly =\n getNearestMountedFiber(SyntheticEventCtor)),\n (inCapturePhase = SyntheticEventCtor.tag),\n SyntheticEventCtor !== accumulateTargetOnly ||\n (5 !== inCapturePhase &&\n 27 !== inCapturePhase &&\n 6 !== inCapturePhase)))\n )\n SyntheticEventCtor = null;\n } else (reactName = null), (SyntheticEventCtor = targetInst);\n if (reactName !== SyntheticEventCtor) {\n inCapturePhase = SyntheticMouseEvent;\n _instance = \"onMouseLeave\";\n reactEventName = \"onMouseEnter\";\n instance = \"mouse\";\n if (\"pointerout\" === domEventName || \"pointerover\" === domEventName)\n (inCapturePhase = SyntheticPointerEvent),\n (_instance = \"onPointerLeave\"),\n (reactEventName = \"onPointerEnter\"),\n (instance = \"pointer\");\n accumulateTargetOnly =\n null == reactName\n ? reactEventType\n : getNodeFromInstance(reactName);\n lastHostComponent =\n null == SyntheticEventCtor\n ? reactEventType\n : getNodeFromInstance(SyntheticEventCtor);\n reactEventType = new inCapturePhase(\n _instance,\n instance + \"leave\",\n reactName,\n nativeEvent,\n nativeEventTarget\n );\n reactEventType.target = accumulateTargetOnly;\n reactEventType.relatedTarget = lastHostComponent;\n _instance = null;\n getClosestInstanceFromNode(nativeEventTarget) === targetInst &&\n ((inCapturePhase = new inCapturePhase(\n reactEventName,\n instance + \"enter\",\n SyntheticEventCtor,\n nativeEvent,\n nativeEventTarget\n )),\n (inCapturePhase.target = lastHostComponent),\n (inCapturePhase.relatedTarget = accumulateTargetOnly),\n (_instance = inCapturePhase));\n accumulateTargetOnly = _instance;\n inCapturePhase =\n reactName && SyntheticEventCtor\n ? getLowestCommonAncestor(\n reactName,\n SyntheticEventCtor,\n getParent\n )\n : null;\n null !== reactName &&\n accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n reactEventType,\n reactName,\n inCapturePhase,\n !1\n );\n null !== SyntheticEventCtor &&\n null !== accumulateTargetOnly &&\n accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n accumulateTargetOnly,\n SyntheticEventCtor,\n inCapturePhase,\n !0\n );\n }\n }\n }\n a: {\n reactName = targetInst ? getNodeFromInstance(targetInst) : window;\n SyntheticEventCtor =\n reactName.nodeName && reactName.nodeName.toLowerCase();\n if (\n \"select\" === SyntheticEventCtor ||\n (\"input\" === SyntheticEventCtor && \"file\" === reactName.type)\n )\n var getTargetInstFunc = getTargetInstForChangeEvent;\n else if (isTextInputElement(reactName))\n if (isInputEventSupported)\n getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n else {\n getTargetInstFunc = getTargetInstForInputEventPolyfill;\n var handleEventFunc = handleEventsForInputEventPolyfill;\n }\n else\n (SyntheticEventCtor = reactName.nodeName),\n !SyntheticEventCtor ||\n \"input\" !== SyntheticEventCtor.toLowerCase() ||\n (\"checkbox\" !== reactName.type && \"radio\" !== reactName.type)\n ? targetInst &&\n isCustomElement(targetInst.elementType) &&\n (getTargetInstFunc = getTargetInstForChangeEvent)\n : (getTargetInstFunc = getTargetInstForClickEvent);\n if (\n getTargetInstFunc &&\n (getTargetInstFunc = getTargetInstFunc(domEventName, targetInst))\n ) {\n createAndAccumulateChangeEvent(\n dispatchQueue,\n getTargetInstFunc,\n nativeEvent,\n nativeEventTarget\n );\n break a;\n }\n handleEventFunc && handleEventFunc(domEventName, reactName, targetInst);\n }\n handleEventFunc = targetInst ? getNodeFromInstance(targetInst) : window;\n switch (domEventName) {\n case \"focusin\":\n if (\n isTextInputElement(handleEventFunc) ||\n \"true\" === handleEventFunc.contentEditable\n )\n (activeElement = handleEventFunc),\n (activeElementInst = targetInst),\n (lastSelection = null);\n break;\n case \"focusout\":\n lastSelection = activeElementInst = activeElement = null;\n break;\n case \"mousedown\":\n mouseDown = !0;\n break;\n case \"contextmenu\":\n case \"mouseup\":\n case \"dragend\":\n mouseDown = !1;\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n break;\n case \"selectionchange\":\n if (skipSelectionChangeEvent) break;\n case \"keydown\":\n case \"keyup\":\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n }\n var fallbackData;\n if (canUseCompositionEvent)\n b: {\n switch (domEventName) {\n case \"compositionstart\":\n var eventType = \"onCompositionStart\";\n break b;\n case \"compositionend\":\n eventType = \"onCompositionEnd\";\n break b;\n case \"compositionupdate\":\n eventType = \"onCompositionUpdate\";\n break b;\n }\n eventType = void 0;\n }\n else\n isComposing\n ? isFallbackCompositionEnd(domEventName, nativeEvent) &&\n (eventType = \"onCompositionEnd\")\n : \"keydown\" === domEventName &&\n 229 === nativeEvent.keyCode &&\n (eventType = \"onCompositionStart\");\n eventType &&\n (useFallbackCompositionData &&\n \"ko\" !== nativeEvent.locale &&\n (isComposing || \"onCompositionStart\" !== eventType\n ? \"onCompositionEnd\" === eventType &&\n isComposing &&\n (fallbackData = getData())\n : ((root = nativeEventTarget),\n (startText = \"value\" in root ? root.value : root.textContent),\n (isComposing = !0))),\n (handleEventFunc = accumulateTwoPhaseListeners(targetInst, eventType)),\n 0 < handleEventFunc.length &&\n ((eventType = new SyntheticCompositionEvent(\n eventType,\n domEventName,\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: eventType, listeners: handleEventFunc }),\n fallbackData\n ? (eventType.data = fallbackData)\n : ((fallbackData = getDataFromCustomEvent(nativeEvent)),\n null !== fallbackData && (eventType.data = fallbackData))));\n if (\n (fallbackData = canUseTextInputEvent\n ? getNativeBeforeInputChars(domEventName, nativeEvent)\n : getFallbackBeforeInputChars(domEventName, nativeEvent))\n )\n (eventType = accumulateTwoPhaseListeners(targetInst, \"onBeforeInput\")),\n 0 < eventType.length &&\n ((handleEventFunc = new SyntheticCompositionEvent(\n \"onBeforeInput\",\n \"beforeinput\",\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({\n event: handleEventFunc,\n listeners: eventType\n }),\n (handleEventFunc.data = fallbackData));\n extractEvents$1(\n dispatchQueue,\n domEventName,\n targetInst,\n nativeEvent,\n nativeEventTarget\n );\n }\n processDispatchQueue(dispatchQueue, eventSystemFlags);\n });\n}\nfunction createDispatchListener(instance, listener, currentTarget) {\n return {\n instance: instance,\n listener: listener,\n currentTarget: currentTarget\n };\n}\nfunction accumulateTwoPhaseListeners(targetFiber, reactName) {\n for (\n var captureName = reactName + \"Capture\", listeners = [];\n null !== targetFiber;\n\n ) {\n var _instance2 = targetFiber,\n stateNode = _instance2.stateNode;\n _instance2 = _instance2.tag;\n (5 !== _instance2 && 26 !== _instance2 && 27 !== _instance2) ||\n null === stateNode ||\n ((_instance2 = getListener(targetFiber, captureName)),\n null != _instance2 &&\n listeners.unshift(\n createDispatchListener(targetFiber, _instance2, stateNode)\n ),\n (_instance2 = getListener(targetFiber, reactName)),\n null != _instance2 &&\n listeners.push(\n createDispatchListener(targetFiber, _instance2, stateNode)\n ));\n if (3 === targetFiber.tag) return listeners;\n targetFiber = targetFiber.return;\n }\n return [];\n}\nfunction getParent(inst) {\n if (null === inst) return null;\n do inst = inst.return;\n while (inst && 5 !== inst.tag && 27 !== inst.tag);\n return inst ? inst : null;\n}\nfunction accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n event,\n target,\n common,\n inCapturePhase\n) {\n for (\n var registrationName = event._reactName, listeners = [];\n null !== target && target !== common;\n\n ) {\n var _instance3 = target,\n alternate = _instance3.alternate,\n stateNode = _instance3.stateNode;\n _instance3 = _instance3.tag;\n if (null !== alternate && alternate === common) break;\n (5 !== _instance3 && 26 !== _instance3 && 27 !== _instance3) ||\n null === stateNode ||\n ((alternate = stateNode),\n inCapturePhase\n ? ((stateNode = getListener(target, registrationName)),\n null != stateNode &&\n listeners.unshift(\n createDispatchListener(target, stateNode, alternate)\n ))\n : inCapturePhase ||\n ((stateNode = getListener(target, registrationName)),\n null != stateNode &&\n listeners.push(\n createDispatchListener(target, stateNode, alternate)\n )));\n target = target.return;\n }\n 0 !== listeners.length &&\n dispatchQueue.push({ event: event, listeners: listeners });\n}\nvar NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g,\n NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\nfunction normalizeMarkupForTextOrAttribute(markup) {\n return (\"string\" === typeof markup ? markup : \"\" + markup)\n .replace(NORMALIZE_NEWLINES_REGEX, \"\\n\")\n .replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, \"\");\n}\nfunction checkForUnmatchedText(serverText, clientText) {\n clientText = normalizeMarkupForTextOrAttribute(clientText);\n return normalizeMarkupForTextOrAttribute(serverText) === clientText ? !0 : !1;\n}\nfunction setProp(domElement, tag, key, value, props, prevValue) {\n switch (key) {\n case \"children\":\n if (\"string\" === typeof value)\n \"body\" === tag ||\n (\"textarea\" === tag && \"\" === value) ||\n setTextContent(domElement, value);\n else if (\"number\" === typeof value || \"bigint\" === typeof value)\n \"body\" !== tag && setTextContent(domElement, \"\" + value);\n else return;\n break;\n case \"className\":\n setValueForKnownAttribute(domElement, \"class\", value);\n break;\n case \"tabIndex\":\n setValueForKnownAttribute(domElement, \"tabindex\", value);\n break;\n case \"dir\":\n case \"role\":\n case \"viewBox\":\n case \"width\":\n case \"height\":\n setValueForKnownAttribute(domElement, key, value);\n break;\n case \"style\":\n setValueForStyles(domElement, value, prevValue);\n return;\n case \"data\":\n if (\"object\" !== tag) {\n setValueForKnownAttribute(domElement, \"data\", value);\n break;\n }\n case \"src\":\n case \"href\":\n if (\"\" === value && (\"a\" !== tag || \"href\" !== key)) {\n domElement.removeAttribute(key);\n break;\n }\n if (\n null == value ||\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n ) {\n domElement.removeAttribute(key);\n break;\n }\n value = sanitizeURL(value);\n domElement.setAttribute(key, value);\n break;\n case \"action\":\n case \"formAction\":\n if (\"function\" === typeof value) {\n domElement.setAttribute(\n key,\n \"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')\"\n );\n break;\n } else\n \"function\" === typeof prevValue &&\n (\"formAction\" === key\n ? (\"input\" !== tag &&\n setProp(domElement, tag, \"name\", props.name, props, null),\n setProp(\n domElement,\n tag,\n \"formEncType\",\n props.formEncType,\n props,\n null\n ),\n setProp(\n domElement,\n tag,\n \"formMethod\",\n props.formMethod,\n props,\n null\n ),\n setProp(\n domElement,\n tag,\n \"formTarget\",\n props.formTarget,\n props,\n null\n ))\n : (setProp(domElement, tag, \"encType\", props.encType, props, null),\n setProp(domElement, tag, \"method\", props.method, props, null),\n setProp(domElement, tag, \"target\", props.target, props, null)));\n if (\n null == value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n ) {\n domElement.removeAttribute(key);\n break;\n }\n value = sanitizeURL(value);\n domElement.setAttribute(key, value);\n break;\n case \"onClick\":\n null != value && (domElement.onclick = noop$1);\n return;\n case \"onScroll\":\n null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n return;\n case \"onScrollEnd\":\n null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n return;\n case \"dangerouslySetInnerHTML\":\n if (null != value) {\n if (\"object\" !== typeof value || !(\"__html\" in value))\n throw Error(formatProdErrorMessage(61));\n key = value.__html;\n if (null != key) {\n if (null != props.children) throw Error(formatProdErrorMessage(60));\n (null != prevValue ? prevValue.__html : void 0) !== key &&\n (domElement.innerHTML = key);\n }\n }\n break;\n case \"multiple\":\n domElement.multiple =\n value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n break;\n case \"muted\":\n domElement.muted =\n value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n break;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"defaultValue\":\n case \"defaultChecked\":\n case \"innerHTML\":\n case \"ref\":\n break;\n case \"autoFocus\":\n break;\n case \"xlinkHref\":\n if (\n null == value ||\n \"function\" === typeof value ||\n \"boolean\" === typeof value ||\n \"symbol\" === typeof value\n ) {\n domElement.removeAttribute(\"xlink:href\");\n break;\n }\n key = sanitizeURL(value);\n domElement.setAttributeNS(\n \"http://www.w3.org/1999/xlink\",\n \"xlink:href\",\n key\n );\n break;\n case \"contentEditable\":\n case \"spellCheck\":\n case \"draggable\":\n case \"value\":\n case \"autoReverse\":\n case \"externalResourcesRequired\":\n case \"focusable\":\n case \"preserveAlpha\":\n null != value && \"function\" !== typeof value && \"symbol\" !== typeof value\n ? domElement.setAttribute(key, value)\n : domElement.removeAttribute(key);\n break;\n case \"inert\":\n case \"allowFullScreen\":\n case \"async\":\n case \"autoPlay\":\n case \"controls\":\n case \"credentialless\":\n case \"default\":\n case \"defer\":\n case \"disabled\":\n case \"disablePictureInPicture\":\n case \"disableRemotePlayback\":\n case \"formNoValidate\":\n case \"hidden\":\n case \"loop\":\n case \"noModule\":\n case \"noValidate\":\n case \"open\":\n case \"playsInline\":\n case \"readOnly\":\n case \"required\":\n case \"reversed\":\n case \"scoped\":\n case \"seamless\":\n case \"itemScope\":\n value && \"function\" !== typeof value && \"symbol\" !== typeof value\n ? domElement.setAttribute(key, \"\")\n : domElement.removeAttribute(key);\n break;\n case \"capture\":\n case \"download\":\n !0 === value\n ? domElement.setAttribute(key, \"\")\n : !1 !== value &&\n null != value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value\n ? domElement.setAttribute(key, value)\n : domElement.removeAttribute(key);\n break;\n case \"cols\":\n case \"rows\":\n case \"size\":\n case \"span\":\n null != value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value &&\n !isNaN(value) &&\n 1 <= value\n ? domElement.setAttribute(key, value)\n : domElement.removeAttribute(key);\n break;\n case \"rowSpan\":\n case \"start\":\n null == value ||\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n isNaN(value)\n ? domElement.removeAttribute(key)\n : domElement.setAttribute(key, value);\n break;\n case \"popover\":\n listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n listenToNonDelegatedEvent(\"toggle\", domElement);\n setValueForAttribute(domElement, \"popover\", value);\n break;\n case \"xlinkActuate\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:actuate\",\n value\n );\n break;\n case \"xlinkArcrole\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:arcrole\",\n value\n );\n break;\n case \"xlinkRole\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:role\",\n value\n );\n break;\n case \"xlinkShow\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:show\",\n value\n );\n break;\n case \"xlinkTitle\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:title\",\n value\n );\n break;\n case \"xlinkType\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:type\",\n value\n );\n break;\n case \"xmlBase\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:base\",\n value\n );\n break;\n case \"xmlLang\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:lang\",\n value\n );\n break;\n case \"xmlSpace\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:space\",\n value\n );\n break;\n case \"is\":\n setValueForAttribute(domElement, \"is\", value);\n break;\n case \"innerText\":\n case \"textContent\":\n return;\n default:\n if (\n !(2 < key.length) ||\n (\"o\" !== key[0] && \"O\" !== key[0]) ||\n (\"n\" !== key[1] && \"N\" !== key[1])\n )\n (key = aliases.get(key) || key),\n setValueForAttribute(domElement, key, value);\n else return;\n }\n viewTransitionMutationContext = !0;\n}\nfunction setPropOnCustomElement(domElement, tag, key, value, props, prevValue) {\n switch (key) {\n case \"style\":\n setValueForStyles(domElement, value, prevValue);\n return;\n case \"dangerouslySetInnerHTML\":\n if (null != value) {\n if (\"object\" !== typeof value || !(\"__html\" in value))\n throw Error(formatProdErrorMessage(61));\n key = value.__html;\n if (null != key) {\n if (null != props.children) throw Error(formatProdErrorMessage(60));\n (null != prevValue ? prevValue.__html : void 0) !== key &&\n (domElement.innerHTML = key);\n }\n }\n break;\n case \"children\":\n if (\"string\" === typeof value) setTextContent(domElement, value);\n else if (\"number\" === typeof value || \"bigint\" === typeof value)\n setTextContent(domElement, \"\" + value);\n else return;\n break;\n case \"onScroll\":\n null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n return;\n case \"onScrollEnd\":\n null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n return;\n case \"onClick\":\n null != value && (domElement.onclick = noop$1);\n return;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"innerHTML\":\n case \"ref\":\n return;\n case \"innerText\":\n case \"textContent\":\n return;\n default:\n if (!registrationNameDependencies.hasOwnProperty(key))\n a: {\n if (\n \"o\" === key[0] &&\n \"n\" === key[1] &&\n ((props = key.endsWith(\"Capture\")),\n (prevValue = key.slice(2, props ? key.length - 7 : void 0)),\n (tag = domElement[internalPropsKey] || null),\n (tag = null != tag ? tag[key] : null),\n \"function\" === typeof tag &&\n domElement.removeEventListener(prevValue, tag, props),\n \"function\" === typeof value)\n ) {\n \"function\" !== typeof tag &&\n null !== tag &&\n (key in domElement\n ? (domElement[key] = null)\n : domElement.hasAttribute(key) &&\n domElement.removeAttribute(key));\n domElement.addEventListener(prevValue, value, props);\n break a;\n }\n viewTransitionMutationContext = !0;\n key in domElement\n ? (domElement[key] = value)\n : !0 === value\n ? domElement.setAttribute(key, \"\")\n : setValueForAttribute(domElement, key, value);\n }\n return;\n }\n viewTransitionMutationContext = !0;\n}\nfunction setInitialProperties(domElement, tag, props) {\n switch (tag) {\n case \"div\":\n case \"span\":\n case \"svg\":\n case \"path\":\n case \"a\":\n case \"g\":\n case \"p\":\n case \"li\":\n break;\n case \"img\":\n listenToNonDelegatedEvent(\"error\", domElement);\n listenToNonDelegatedEvent(\"load\", domElement);\n var hasSrc = !1,\n hasSrcSet = !1,\n propKey;\n for (propKey in props)\n if (props.hasOwnProperty(propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"src\":\n hasSrc = !0;\n break;\n case \"srcSet\":\n hasSrcSet = !0;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage(137, tag));\n default:\n setProp(domElement, tag, propKey, propValue, props, null);\n }\n }\n hasSrcSet &&\n setProp(domElement, tag, \"srcSet\", props.srcSet, props, null);\n hasSrc && setProp(domElement, tag, \"src\", props.src, props, null);\n return;\n case \"input\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n var defaultValue = (propKey = propValue = hasSrcSet = null),\n checked = null,\n defaultChecked = null;\n for (hasSrc in props)\n if (props.hasOwnProperty(hasSrc)) {\n var propValue$204 = props[hasSrc];\n if (null != propValue$204)\n switch (hasSrc) {\n case \"name\":\n hasSrcSet = propValue$204;\n break;\n case \"type\":\n propValue = propValue$204;\n break;\n case \"checked\":\n checked = propValue$204;\n break;\n case \"defaultChecked\":\n defaultChecked = propValue$204;\n break;\n case \"value\":\n propKey = propValue$204;\n break;\n case \"defaultValue\":\n defaultValue = propValue$204;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propValue$204)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n setProp(domElement, tag, hasSrc, propValue$204, props, null);\n }\n }\n initInput(\n domElement,\n propKey,\n defaultValue,\n checked,\n defaultChecked,\n propValue,\n hasSrcSet,\n !1\n );\n return;\n case \"select\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n hasSrc = propValue = propKey = null;\n for (hasSrcSet in props)\n if (\n props.hasOwnProperty(hasSrcSet) &&\n ((defaultValue = props[hasSrcSet]), null != defaultValue)\n )\n switch (hasSrcSet) {\n case \"value\":\n propKey = defaultValue;\n break;\n case \"defaultValue\":\n propValue = defaultValue;\n break;\n case \"multiple\":\n hasSrc = defaultValue;\n default:\n setProp(domElement, tag, hasSrcSet, defaultValue, props, null);\n }\n tag = propKey;\n props = propValue;\n domElement.multiple = !!hasSrc;\n null != tag\n ? updateOptions(domElement, !!hasSrc, tag, !1)\n : null != props && updateOptions(domElement, !!hasSrc, props, !0);\n return;\n case \"textarea\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n propKey = hasSrcSet = hasSrc = null;\n for (propValue in props)\n if (\n props.hasOwnProperty(propValue) &&\n ((defaultValue = props[propValue]), null != defaultValue)\n )\n switch (propValue) {\n case \"value\":\n hasSrc = defaultValue;\n break;\n case \"defaultValue\":\n hasSrcSet = defaultValue;\n break;\n case \"children\":\n propKey = defaultValue;\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != defaultValue) throw Error(formatProdErrorMessage(91));\n break;\n default:\n setProp(domElement, tag, propValue, defaultValue, props, null);\n }\n initTextarea(domElement, hasSrc, hasSrcSet, propKey);\n return;\n case \"option\":\n for (checked in props)\n if (\n props.hasOwnProperty(checked) &&\n ((hasSrc = props[checked]), null != hasSrc)\n )\n switch (checked) {\n case \"selected\":\n domElement.selected =\n hasSrc &&\n \"function\" !== typeof hasSrc &&\n \"symbol\" !== typeof hasSrc;\n break;\n default:\n setProp(domElement, tag, checked, hasSrc, props, null);\n }\n return;\n case \"dialog\":\n listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n listenToNonDelegatedEvent(\"toggle\", domElement);\n listenToNonDelegatedEvent(\"cancel\", domElement);\n listenToNonDelegatedEvent(\"close\", domElement);\n break;\n case \"iframe\":\n case \"object\":\n listenToNonDelegatedEvent(\"load\", domElement);\n break;\n case \"video\":\n case \"audio\":\n for (hasSrc = 0; hasSrc < mediaEventTypes.length; hasSrc++)\n listenToNonDelegatedEvent(mediaEventTypes[hasSrc], domElement);\n break;\n case \"image\":\n listenToNonDelegatedEvent(\"error\", domElement);\n listenToNonDelegatedEvent(\"load\", domElement);\n break;\n case \"details\":\n listenToNonDelegatedEvent(\"toggle\", domElement);\n break;\n case \"embed\":\n case \"source\":\n case \"link\":\n listenToNonDelegatedEvent(\"error\", domElement),\n listenToNonDelegatedEvent(\"load\", domElement);\n case \"area\":\n case \"base\":\n case \"br\":\n case \"col\":\n case \"hr\":\n case \"keygen\":\n case \"meta\":\n case \"param\":\n case \"track\":\n case \"wbr\":\n case \"menuitem\":\n for (defaultChecked in props)\n if (\n props.hasOwnProperty(defaultChecked) &&\n ((hasSrc = props[defaultChecked]), null != hasSrc)\n )\n switch (defaultChecked) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage(137, tag));\n default:\n setProp(domElement, tag, defaultChecked, hasSrc, props, null);\n }\n return;\n default:\n if (isCustomElement(tag)) {\n for (propValue$204 in props)\n props.hasOwnProperty(propValue$204) &&\n ((hasSrc = props[propValue$204]),\n void 0 !== hasSrc &&\n setPropOnCustomElement(\n domElement,\n tag,\n propValue$204,\n hasSrc,\n props,\n void 0\n ));\n return;\n }\n }\n for (defaultValue in props)\n props.hasOwnProperty(defaultValue) &&\n ((hasSrc = props[defaultValue]),\n null != hasSrc &&\n setProp(domElement, tag, defaultValue, hasSrc, props, null));\n}\nvar emptyProps = {};\nfunction updateProperties(domElement, tag, lastProps, nextProps) {\n switch (tag) {\n case \"div\":\n case \"span\":\n case \"svg\":\n case \"path\":\n case \"a\":\n case \"g\":\n case \"p\":\n case \"li\":\n break;\n case \"input\":\n var name = null,\n type = null,\n value = null,\n defaultValue = null,\n lastDefaultValue = null,\n checked = null,\n defaultChecked = null;\n for (propKey in lastProps) {\n var lastProp = lastProps[propKey];\n if (lastProps.hasOwnProperty(propKey) && null != lastProp)\n switch (propKey) {\n case \"checked\":\n break;\n case \"value\":\n break;\n case \"defaultValue\":\n lastDefaultValue = lastProp;\n default:\n nextProps.hasOwnProperty(propKey) ||\n setProp(domElement, tag, propKey, null, nextProps, lastProp);\n }\n }\n for (var propKey$221 in nextProps) {\n var propKey = nextProps[propKey$221];\n lastProp = lastProps[propKey$221];\n if (\n nextProps.hasOwnProperty(propKey$221) &&\n (null != propKey || null != lastProp)\n )\n switch (propKey$221) {\n case \"type\":\n propKey !== lastProp && (viewTransitionMutationContext = !0);\n type = propKey;\n break;\n case \"name\":\n propKey !== lastProp && (viewTransitionMutationContext = !0);\n name = propKey;\n break;\n case \"checked\":\n propKey !== lastProp && (viewTransitionMutationContext = !0);\n checked = propKey;\n break;\n case \"defaultChecked\":\n propKey !== lastProp && (viewTransitionMutationContext = !0);\n defaultChecked = propKey;\n break;\n case \"value\":\n propKey !== lastProp && (viewTransitionMutationContext = !0);\n value = propKey;\n break;\n case \"defaultValue\":\n propKey !== lastProp && (viewTransitionMutationContext = !0);\n defaultValue = propKey;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propKey)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n propKey !== lastProp &&\n setProp(\n domElement,\n tag,\n propKey$221,\n propKey,\n nextProps,\n lastProp\n );\n }\n }\n updateInput(\n domElement,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n );\n return;\n case \"select\":\n propKey = value = defaultValue = propKey$221 = null;\n for (type in lastProps)\n if (\n ((lastDefaultValue = lastProps[type]),\n lastProps.hasOwnProperty(type) && null != lastDefaultValue)\n )\n switch (type) {\n case \"value\":\n break;\n case \"multiple\":\n propKey = lastDefaultValue;\n default:\n nextProps.hasOwnProperty(type) ||\n setProp(\n domElement,\n tag,\n type,\n null,\n nextProps,\n lastDefaultValue\n );\n }\n for (name in nextProps)\n if (\n ((type = nextProps[name]),\n (lastDefaultValue = lastProps[name]),\n nextProps.hasOwnProperty(name) &&\n (null != type || null != lastDefaultValue))\n )\n switch (name) {\n case \"value\":\n type !== lastDefaultValue && (viewTransitionMutationContext = !0);\n propKey$221 = type;\n break;\n case \"defaultValue\":\n type !== lastDefaultValue && (viewTransitionMutationContext = !0);\n defaultValue = type;\n break;\n case \"multiple\":\n type !== lastDefaultValue && (viewTransitionMutationContext = !0),\n (value = type);\n default:\n type !== lastDefaultValue &&\n setProp(\n domElement,\n tag,\n name,\n type,\n nextProps,\n lastDefaultValue\n );\n }\n tag = defaultValue;\n lastProps = value;\n nextProps = propKey;\n null != propKey$221\n ? updateOptions(domElement, !!lastProps, propKey$221, !1)\n : !!nextProps !== !!lastProps &&\n (null != tag\n ? updateOptions(domElement, !!lastProps, tag, !0)\n : updateOptions(domElement, !!lastProps, lastProps ? [] : \"\", !1));\n return;\n case \"textarea\":\n propKey = propKey$221 = null;\n for (defaultValue in lastProps)\n if (\n ((name = lastProps[defaultValue]),\n lastProps.hasOwnProperty(defaultValue) &&\n null != name &&\n !nextProps.hasOwnProperty(defaultValue))\n )\n switch (defaultValue) {\n case \"value\":\n break;\n case \"children\":\n break;\n default:\n setProp(domElement, tag, defaultValue, null, nextProps, name);\n }\n for (value in nextProps)\n if (\n ((name = nextProps[value]),\n (type = lastProps[value]),\n nextProps.hasOwnProperty(value) && (null != name || null != type))\n )\n switch (value) {\n case \"value\":\n name !== type && (viewTransitionMutationContext = !0);\n propKey$221 = name;\n break;\n case \"defaultValue\":\n name !== type && (viewTransitionMutationContext = !0);\n propKey = name;\n break;\n case \"children\":\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != name) throw Error(formatProdErrorMessage(91));\n break;\n default:\n name !== type &&\n setProp(domElement, tag, value, name, nextProps, type);\n }\n updateTextarea(domElement, propKey$221, propKey);\n return;\n case \"option\":\n for (var propKey$237 in lastProps)\n if (\n ((propKey$221 = lastProps[propKey$237]),\n lastProps.hasOwnProperty(propKey$237) &&\n null != propKey$221 &&\n !nextProps.hasOwnProperty(propKey$237))\n )\n switch (propKey$237) {\n case \"selected\":\n domElement.selected = !1;\n break;\n default:\n setProp(\n domElement,\n tag,\n propKey$237,\n null,\n nextProps,\n propKey$221\n );\n }\n for (lastDefaultValue in nextProps)\n if (\n ((propKey$221 = nextProps[lastDefaultValue]),\n (propKey = lastProps[lastDefaultValue]),\n nextProps.hasOwnProperty(lastDefaultValue) &&\n propKey$221 !== propKey &&\n (null != propKey$221 || null != propKey))\n )\n switch (lastDefaultValue) {\n case \"selected\":\n propKey$221 !== propKey && (viewTransitionMutationContext = !0);\n domElement.selected =\n propKey$221 &&\n \"function\" !== typeof propKey$221 &&\n \"symbol\" !== typeof propKey$221;\n break;\n default:\n setProp(\n domElement,\n tag,\n lastDefaultValue,\n propKey$221,\n nextProps,\n propKey\n );\n }\n return;\n case \"img\":\n case \"link\":\n case \"area\":\n case \"base\":\n case \"br\":\n case \"col\":\n case \"embed\":\n case \"hr\":\n case \"keygen\":\n case \"meta\":\n case \"param\":\n case \"source\":\n case \"track\":\n case \"wbr\":\n case \"menuitem\":\n for (var propKey$242 in lastProps)\n (propKey$221 = lastProps[propKey$242]),\n lastProps.hasOwnProperty(propKey$242) &&\n null != propKey$221 &&\n !nextProps.hasOwnProperty(propKey$242) &&\n setProp(domElement, tag, propKey$242, null, nextProps, propKey$221);\n for (checked in nextProps)\n if (\n ((propKey$221 = nextProps[checked]),\n (propKey = lastProps[checked]),\n nextProps.hasOwnProperty(checked) &&\n propKey$221 !== propKey &&\n (null != propKey$221 || null != propKey))\n )\n switch (checked) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propKey$221)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n setProp(\n domElement,\n tag,\n checked,\n propKey$221,\n nextProps,\n propKey\n );\n }\n return;\n default:\n if (isCustomElement(tag)) {\n for (var propKey$247 in lastProps)\n (propKey$221 = lastProps[propKey$247]),\n lastProps.hasOwnProperty(propKey$247) &&\n void 0 !== propKey$221 &&\n !nextProps.hasOwnProperty(propKey$247) &&\n setPropOnCustomElement(\n domElement,\n tag,\n propKey$247,\n void 0,\n nextProps,\n propKey$221\n );\n for (defaultChecked in nextProps)\n (propKey$221 = nextProps[defaultChecked]),\n (propKey = lastProps[defaultChecked]),\n !nextProps.hasOwnProperty(defaultChecked) ||\n propKey$221 === propKey ||\n (void 0 === propKey$221 && void 0 === propKey) ||\n setPropOnCustomElement(\n domElement,\n tag,\n defaultChecked,\n propKey$221,\n nextProps,\n propKey\n );\n return;\n }\n }\n for (var propKey$252 in lastProps)\n (propKey$221 = lastProps[propKey$252]),\n lastProps.hasOwnProperty(propKey$252) &&\n null != propKey$221 &&\n !nextProps.hasOwnProperty(propKey$252) &&\n setProp(domElement, tag, propKey$252, null, nextProps, propKey$221);\n for (lastProp in nextProps)\n (propKey$221 = nextProps[lastProp]),\n (propKey = lastProps[lastProp]),\n !nextProps.hasOwnProperty(lastProp) ||\n propKey$221 === propKey ||\n (null == propKey$221 && null == propKey) ||\n setProp(domElement, tag, lastProp, propKey$221, nextProps, propKey);\n}\nfunction isLikelyStaticResource(initiatorType) {\n switch (initiatorType) {\n case \"css\":\n case \"script\":\n case \"font\":\n case \"img\":\n case \"image\":\n case \"input\":\n case \"link\":\n return !0;\n default:\n return !1;\n }\n}\nfunction estimateBandwidth() {\n if (\"function\" === typeof performance.getEntriesByType) {\n for (\n var count = 0,\n bits = 0,\n resourceEntries = performance.getEntriesByType(\"resource\"),\n i = 0;\n i < resourceEntries.length;\n i++\n ) {\n var entry = resourceEntries[i],\n transferSize = entry.transferSize,\n initiatorType = entry.initiatorType,\n duration = entry.duration;\n if (transferSize && duration && isLikelyStaticResource(initiatorType)) {\n initiatorType = 0;\n duration = entry.responseEnd;\n for (i += 1; i < resourceEntries.length; i++) {\n var overlapEntry = resourceEntries[i],\n overlapStartTime = overlapEntry.startTime;\n if (overlapStartTime > duration) break;\n var overlapTransferSize = overlapEntry.transferSize,\n overlapInitiatorType = overlapEntry.initiatorType;\n overlapTransferSize &&\n isLikelyStaticResource(overlapInitiatorType) &&\n ((overlapEntry = overlapEntry.responseEnd),\n (initiatorType +=\n overlapTransferSize *\n (overlapEntry < duration\n ? 1\n : (duration - overlapStartTime) /\n (overlapEntry - overlapStartTime))));\n }\n --i;\n bits += (8 * (transferSize + initiatorType)) / (entry.duration / 1e3);\n count++;\n if (10 < count) break;\n }\n }\n if (0 < count) return bits / count / 1e6;\n }\n return navigator.connection &&\n ((count = navigator.connection.downlink), \"number\" === typeof count)\n ? count\n : 5;\n}\nvar eventsEnabled = null,\n selectionInformation = null;\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n return 9 === rootContainerElement.nodeType\n ? rootContainerElement\n : rootContainerElement.ownerDocument;\n}\nfunction getOwnHostContext(namespaceURI) {\n switch (namespaceURI) {\n case \"http://www.w3.org/2000/svg\":\n return 1;\n case \"http://www.w3.org/1998/Math/MathML\":\n return 2;\n default:\n return 0;\n }\n}\nfunction getChildHostContextProd(parentNamespace, type) {\n if (0 === parentNamespace)\n switch (type) {\n case \"svg\":\n return 1;\n case \"math\":\n return 2;\n default:\n return 0;\n }\n return 1 === parentNamespace && \"foreignObject\" === type\n ? 0\n : parentNamespace;\n}\nfunction createHoistableInstance(\n type,\n props,\n rootContainerInstance,\n internalInstanceHandle\n) {\n rootContainerInstance = getOwnerDocumentFromRootContainer(\n rootContainerInstance\n ).createElement(type);\n rootContainerInstance[internalInstanceKey] = internalInstanceHandle;\n rootContainerInstance[internalPropsKey] = props;\n setInitialProperties(rootContainerInstance, type, props);\n markNodeAsHoistable(rootContainerInstance);\n return rootContainerInstance;\n}\nfunction shouldSetTextContent(type, props) {\n return (\n \"textarea\" === type ||\n \"noscript\" === type ||\n \"string\" === typeof props.children ||\n \"number\" === typeof props.children ||\n \"bigint\" === typeof props.children ||\n (\"object\" === typeof props.dangerouslySetInnerHTML &&\n null !== props.dangerouslySetInnerHTML &&\n null != props.dangerouslySetInnerHTML.__html)\n );\n}\nvar currentPopstateTransitionEvent = null;\nfunction shouldAttemptEagerTransition() {\n var event = window.event;\n if (event && \"popstate\" === event.type) {\n if (event === currentPopstateTransitionEvent) return !1;\n currentPopstateTransitionEvent = event;\n return !0;\n }\n currentPopstateTransitionEvent = null;\n return !1;\n}\nvar scheduleTimeout = \"function\" === typeof setTimeout ? setTimeout : void 0,\n cancelTimeout = \"function\" === typeof clearTimeout ? clearTimeout : void 0,\n localPromise = \"function\" === typeof Promise ? Promise : void 0,\n localRequestAnimationFrame =\n \"function\" === typeof requestAnimationFrame\n ? requestAnimationFrame\n : scheduleTimeout,\n scheduleMicrotask =\n \"function\" === typeof queueMicrotask\n ? queueMicrotask\n : \"undefined\" !== typeof localPromise\n ? function (callback) {\n return localPromise\n .resolve(null)\n .then(callback)\n .catch(handleErrorInNextTick);\n }\n : scheduleTimeout;\nfunction handleErrorInNextTick(error) {\n setTimeout(function () {\n throw error;\n });\n}\nfunction isSingletonScope(type) {\n return \"head\" === type;\n}\nfunction clearHydrationBoundary(parentInstance, hydrationInstance) {\n var node = hydrationInstance,\n depth = 0;\n do {\n var nextNode = node.nextSibling;\n parentInstance.removeChild(node);\n if (nextNode && 8 === nextNode.nodeType)\n if (((node = nextNode.data), \"/$\" === node || \"/&\" === node)) {\n if (0 === depth) {\n parentInstance.removeChild(nextNode);\n retryIfBlockedOn(hydrationInstance);\n return;\n }\n depth--;\n } else if (\n \"$\" === node ||\n \"$?\" === node ||\n \"$~\" === node ||\n \"$!\" === node ||\n \"&\" === node\n )\n depth++;\n else if (\"html\" === node)\n clearSingletonPreambleContribution(\n parentInstance.ownerDocument.documentElement\n );\n else if (\"head\" === node) {\n node = parentInstance.ownerDocument.head;\n clearSingletonPreambleContribution(node);\n for (var node$jscomp$0 = node.firstChild; node$jscomp$0; ) {\n var nextNode$jscomp$0 = node$jscomp$0.nextSibling,\n nodeName = node$jscomp$0.nodeName;\n node$jscomp$0[internalHoistableMarker] ||\n \"SCRIPT\" === nodeName ||\n \"STYLE\" === nodeName ||\n (\"LINK\" === nodeName &&\n \"stylesheet\" === node$jscomp$0.rel.toLowerCase()) ||\n node.removeChild(node$jscomp$0);\n node$jscomp$0 = nextNode$jscomp$0;\n }\n } else\n \"body\" === node &&\n clearSingletonPreambleContribution(parentInstance.ownerDocument.body);\n node = nextNode;\n } while (node);\n retryIfBlockedOn(hydrationInstance);\n}\nfunction hideOrUnhideDehydratedBoundary(suspenseInstance, isHidden) {\n var node = suspenseInstance;\n suspenseInstance = 0;\n do {\n var nextNode = node.nextSibling;\n 1 === node.nodeType\n ? isHidden\n ? ((node._stashedDisplay = node.style.display),\n (node.style.display = \"none\"))\n : ((node.style.display = node._stashedDisplay || \"\"),\n \"\" === node.getAttribute(\"style\") && node.removeAttribute(\"style\"))\n : 3 === node.nodeType &&\n (isHidden\n ? ((node._stashedText = node.nodeValue), (node.nodeValue = \"\"))\n : (node.nodeValue = node._stashedText || \"\"));\n if (nextNode && 8 === nextNode.nodeType)\n if (((node = nextNode.data), \"/$\" === node))\n if (0 === suspenseInstance) break;\n else suspenseInstance--;\n else\n (\"$\" !== node && \"$?\" !== node && \"$~\" !== node && \"$!\" !== node) ||\n suspenseInstance++;\n node = nextNode;\n } while (node);\n}\nfunction applyViewTransitionName(instance, name, className) {\n name = CSS.escape(name) !== name ? \"r-\" + btoa(name).replace(/=/g, \"\") : name;\n instance.style.viewTransitionName = name;\n null != className && (instance.style.viewTransitionClass = className);\n className = getComputedStyle(instance);\n if (\"inline\" === className.display) {\n name = instance.getClientRects();\n if (1 === name.length) var JSCompiler_inline_result = 1;\n else\n for (var i = (JSCompiler_inline_result = 0); i < name.length; i++) {\n var rect = name[i];\n 0 < rect.width && 0 < rect.height && JSCompiler_inline_result++;\n }\n 1 === JSCompiler_inline_result &&\n ((instance = instance.style),\n (instance.display = 1 === name.length ? \"inline-block\" : \"block\"),\n (instance.marginTop = \"-\" + className.paddingTop),\n (instance.marginBottom = \"-\" + className.paddingBottom));\n }\n}\nfunction restoreViewTransitionName(instance, props) {\n instance = instance.style;\n props = props.style;\n var viewTransitionName =\n null != props\n ? props.hasOwnProperty(\"viewTransitionName\")\n ? props.viewTransitionName\n : props.hasOwnProperty(\"view-transition-name\")\n ? props[\"view-transition-name\"]\n : null\n : null;\n instance.viewTransitionName =\n null == viewTransitionName || \"boolean\" === typeof viewTransitionName\n ? \"\"\n : (\"\" + viewTransitionName).trim();\n viewTransitionName =\n null != props\n ? props.hasOwnProperty(\"viewTransitionClass\")\n ? props.viewTransitionClass\n : props.hasOwnProperty(\"view-transition-class\")\n ? props[\"view-transition-class\"]\n : null\n : null;\n instance.viewTransitionClass =\n null == viewTransitionName || \"boolean\" === typeof viewTransitionName\n ? \"\"\n : (\"\" + viewTransitionName).trim();\n \"inline-block\" === instance.display &&\n (null == props\n ? (instance.display = instance.margin = \"\")\n : ((viewTransitionName = props.display),\n (instance.display =\n null == viewTransitionName || \"boolean\" === typeof viewTransitionName\n ? \"\"\n : viewTransitionName),\n (viewTransitionName = props.margin),\n null != viewTransitionName\n ? (instance.margin = viewTransitionName)\n : ((viewTransitionName = props.hasOwnProperty(\"marginTop\")\n ? props.marginTop\n : props[\"margin-top\"]),\n (instance.marginTop =\n null == viewTransitionName ||\n \"boolean\" === typeof viewTransitionName\n ? \"\"\n : viewTransitionName),\n (props = props.hasOwnProperty(\"marginBottom\")\n ? props.marginBottom\n : props[\"margin-bottom\"]),\n (instance.marginBottom =\n null == props || \"boolean\" === typeof props ? \"\" : props))));\n}\nfunction createMeasurement(rect, computedStyle, element) {\n element = element.ownerDocument.defaultView;\n return {\n rect: rect,\n abs:\n \"absolute\" === computedStyle.position ||\n \"fixed\" === computedStyle.position,\n clip:\n \"none\" !== computedStyle.clipPath ||\n \"visible\" !== computedStyle.overflow ||\n \"none\" !== computedStyle.filter ||\n \"none\" !== computedStyle.mask ||\n \"none\" !== computedStyle.mask ||\n \"0px\" !== computedStyle.borderRadius,\n view:\n 0 <= rect.bottom &&\n 0 <= rect.right &&\n rect.top <= element.innerHeight &&\n rect.left <= element.innerWidth\n };\n}\nfunction measureInstance(instance) {\n var rect = instance.getBoundingClientRect(),\n computedStyle = getComputedStyle(instance);\n return createMeasurement(rect, computedStyle, instance);\n}\nfunction measureClonedInstance(instance) {\n var measuredRect = instance.getBoundingClientRect();\n measuredRect = new DOMRect(\n measuredRect.x + 2e4,\n measuredRect.y + 2e4,\n measuredRect.width,\n measuredRect.height\n );\n var computedStyle = getComputedStyle(instance);\n return createMeasurement(measuredRect, computedStyle, instance);\n}\nfunction forceLayout(ownerDocument) {\n return ownerDocument.documentElement.clientHeight;\n}\nfunction waitForImageToLoad(resolve) {\n this.addEventListener(\"load\", resolve);\n this.addEventListener(\"error\", resolve);\n}\nfunction startViewTransition(\n suspendedState,\n rootContainer,\n transitionTypes,\n mutationCallback,\n layoutCallback,\n afterMutationCallback,\n spawnedWorkCallback,\n passiveCallback,\n errorCallback\n) {\n var ownerDocument =\n 9 === rootContainer.nodeType ? rootContainer : rootContainer.ownerDocument;\n try {\n var transition = ownerDocument.startViewTransition({\n update: function () {\n var ownerWindow = ownerDocument.defaultView,\n pendingNavigation =\n ownerWindow.navigation && ownerWindow.navigation.transition,\n previousFontLoadingStatus = ownerDocument.fonts.status;\n mutationCallback();\n var blockingPromises = [];\n \"loaded\" === previousFontLoadingStatus &&\n (forceLayout(ownerDocument),\n \"loading\" === ownerDocument.fonts.status &&\n blockingPromises.push(ownerDocument.fonts.ready));\n previousFontLoadingStatus = blockingPromises.length;\n if (null !== suspendedState)\n for (\n var suspenseyImages = suspendedState.suspenseyImages,\n imgBytes = 0,\n i = 0;\n i < suspenseyImages.length;\n i++\n ) {\n var suspenseyImage = suspenseyImages[i];\n if (!suspenseyImage.complete) {\n var rect = suspenseyImage.getBoundingClientRect();\n if (\n 0 < rect.bottom &&\n 0 < rect.right &&\n rect.top < ownerWindow.innerHeight &&\n rect.left < ownerWindow.innerWidth\n ) {\n imgBytes += estimateImageBytes(suspenseyImage);\n if (imgBytes > estimatedBytesWithinLimit) {\n blockingPromises.length = previousFontLoadingStatus;\n break;\n }\n suspenseyImage = new Promise(\n waitForImageToLoad.bind(suspenseyImage)\n );\n blockingPromises.push(suspenseyImage);\n }\n }\n }\n if (0 < blockingPromises.length)\n return (\n (ownerWindow = Promise.race([\n Promise.all(blockingPromises),\n new Promise(function (resolve) {\n return setTimeout(resolve, 500);\n })\n ]).then(layoutCallback, layoutCallback)),\n (pendingNavigation\n ? Promise.allSettled([pendingNavigation.finished, ownerWindow])\n : ownerWindow\n ).then(afterMutationCallback, afterMutationCallback)\n );\n layoutCallback();\n if (pendingNavigation)\n return pendingNavigation.finished.then(\n afterMutationCallback,\n afterMutationCallback\n );\n afterMutationCallback();\n },\n types: transitionTypes\n });\n ownerDocument.__reactViewTransition = transition;\n var viewTransitionAnimations = [];\n transition.ready.then(\n function () {\n for (\n var animations = ownerDocument.documentElement.getAnimations({\n subtree: !0\n }),\n i = 0;\n i < animations.length;\n i++\n ) {\n var animation = animations[i],\n effect = animation.effect,\n pseudoElement = effect.pseudoElement;\n if (\n null != pseudoElement &&\n pseudoElement.startsWith(\"::view-transition\")\n ) {\n viewTransitionAnimations.push(animation);\n animation = effect.getKeyframes();\n for (\n var height = (pseudoElement = void 0),\n unchangedDimensions = !0,\n j = 0;\n j < animation.length;\n j++\n ) {\n var keyframe = animation[j],\n w = keyframe.width;\n if (void 0 === pseudoElement) pseudoElement = w;\n else if (pseudoElement !== w) {\n unchangedDimensions = !1;\n break;\n }\n w = keyframe.height;\n if (void 0 === height) height = w;\n else if (height !== w) {\n unchangedDimensions = !1;\n break;\n }\n delete keyframe.width;\n delete keyframe.height;\n \"none\" === keyframe.transform && delete keyframe.transform;\n }\n unchangedDimensions &&\n void 0 !== pseudoElement &&\n void 0 !== height &&\n (effect.setKeyframes(animation),\n (unchangedDimensions = getComputedStyle(\n effect.target,\n effect.pseudoElement\n )),\n unchangedDimensions.width !== pseudoElement ||\n unchangedDimensions.height !== height) &&\n ((unchangedDimensions = animation[0]),\n (unchangedDimensions.width = pseudoElement),\n (unchangedDimensions.height = height),\n (unchangedDimensions = animation[animation.length - 1]),\n (unchangedDimensions.width = pseudoElement),\n (unchangedDimensions.height = height),\n effect.setKeyframes(animation));\n }\n }\n spawnedWorkCallback();\n },\n function (error) {\n ownerDocument.__reactViewTransition === transition &&\n (ownerDocument.__reactViewTransition = null);\n try {\n if (\"object\" === typeof error && null !== error)\n switch (error.name) {\n case \"InvalidStateError\":\n if (\n \"View transition was skipped because document visibility state is hidden.\" ===\n error.message ||\n \"Skipping view transition because document visibility state has become hidden.\" ===\n error.message ||\n \"Skipping view transition because viewport size changed.\" ===\n error.message ||\n \"Transition was aborted because of invalid state\" ===\n error.message\n )\n error = null;\n }\n null !== error && errorCallback(error);\n } finally {\n mutationCallback(), layoutCallback(), spawnedWorkCallback();\n }\n }\n );\n transition.finished.finally(function () {\n for (var i = 0; i < viewTransitionAnimations.length; i++)\n viewTransitionAnimations[i].cancel();\n ownerDocument.__reactViewTransition === transition &&\n (ownerDocument.__reactViewTransition = null);\n passiveCallback();\n });\n return transition;\n } catch (x) {\n return mutationCallback(), layoutCallback(), spawnedWorkCallback(), null;\n }\n}\nfunction ViewTransitionPseudoElement(pseudo, name) {\n this._scope = document.documentElement;\n this._selector = \"::view-transition-\" + pseudo + \"(\" + name + \")\";\n}\nViewTransitionPseudoElement.prototype.animate = function (keyframes, options) {\n options =\n \"number\" === typeof options ? { duration: options } : assign({}, options);\n options.pseudoElement = this._selector;\n return this._scope.animate(keyframes, options);\n};\nViewTransitionPseudoElement.prototype.getAnimations = function () {\n for (\n var scope = this._scope,\n selector = this._selector,\n animations = scope.getAnimations({ subtree: !0 }),\n result = [],\n i = 0;\n i < animations.length;\n i++\n ) {\n var effect = animations[i].effect;\n null !== effect &&\n effect.target === scope &&\n effect.pseudoElement === selector &&\n result.push(animations[i]);\n }\n return result;\n};\nViewTransitionPseudoElement.prototype.getComputedStyle = function () {\n return getComputedStyle(this._scope, this._selector);\n};\nfunction createViewTransitionInstance(name) {\n return {\n name: name,\n group: new ViewTransitionPseudoElement(\"group\", name),\n imagePair: new ViewTransitionPseudoElement(\"image-pair\", name),\n old: new ViewTransitionPseudoElement(\"old\", name),\n new: new ViewTransitionPseudoElement(\"new\", name)\n };\n}\nfunction FragmentInstance(fragmentFiber) {\n this._fragmentFiber = fragmentFiber;\n this._observers = this._eventListeners = null;\n}\nFragmentInstance.prototype.addEventListener = function (\n type,\n listener,\n optionsOrUseCapture\n) {\n var signal = null,\n cleanup = null;\n if (\n null != optionsOrUseCapture &&\n \"boolean\" !== typeof optionsOrUseCapture &&\n ((signal = optionsOrUseCapture.signal || null),\n null !== signal && signal.aborted)\n )\n return;\n null === this._eventListeners && (this._eventListeners = []);\n var listeners = this._eventListeners;\n if (\n -1 === indexOfEventListener(listeners, type, listener, optionsOrUseCapture)\n ) {\n var fragmentInstance = this,\n attachedListener = listener;\n null != optionsOrUseCapture &&\n \"boolean\" !== typeof optionsOrUseCapture &&\n !0 === optionsOrUseCapture.once &&\n (attachedListener = function (event) {\n fragmentInstance.removeEventListener(\n type,\n listener,\n optionsOrUseCapture\n );\n \"function\" === typeof listener\n ? listener.call(this, event)\n : listener.handleEvent(event);\n });\n null !== signal &&\n ((cleanup = fragmentInstance.removeEventListener.bind(\n fragmentInstance,\n type,\n listener,\n optionsOrUseCapture\n )),\n signal.addEventListener(\"abort\", cleanup, { once: !0 }),\n (cleanup = signal.removeEventListener.bind(signal, \"abort\", cleanup)));\n signal = getAttachOptions(optionsOrUseCapture);\n listeners.push({\n type: type,\n listener: listener,\n optionsOrUseCapture: optionsOrUseCapture,\n attachedListener: attachedListener,\n cleanup: cleanup\n });\n traverseVisibleInstancesAndTextInstances(\n this._fragmentFiber.child,\n !1,\n addEventListenerToChild,\n type,\n attachedListener,\n signal\n );\n }\n this._eventListeners = listeners;\n};\nfunction addEventListenerToChild(child, type, listener, optionsOrUseCapture) {\n getInstanceFromHostFiber(child).addEventListener(\n type,\n listener,\n optionsOrUseCapture\n );\n return !1;\n}\nFragmentInstance.prototype.removeEventListener = function (\n type,\n listener,\n optionsOrUseCapture\n) {\n var listeners = this._eventListeners;\n if (\n null !== listeners &&\n ((listener = indexOfEventListener(\n listeners,\n type,\n listener,\n optionsOrUseCapture\n )),\n -1 !== listener)\n ) {\n var _listeners$index = listeners[listener];\n optionsOrUseCapture = _listeners$index.attachedListener;\n var cleanup = _listeners$index.cleanup;\n _listeners$index = getAttachOptions(_listeners$index.optionsOrUseCapture);\n traverseVisibleInstancesAndTextInstances(\n this._fragmentFiber.child,\n !1,\n removeEventListenerFromChild,\n type,\n optionsOrUseCapture,\n _listeners$index\n );\n listeners.splice(listener, 1);\n null !== cleanup && cleanup();\n }\n};\nfunction removeEventListenerFromChild(\n child,\n type,\n listener,\n optionsOrUseCapture\n) {\n getInstanceFromHostFiber(child).removeEventListener(\n type,\n listener,\n optionsOrUseCapture\n );\n return !1;\n}\nfunction getAttachOptions(opts) {\n return null != opts &&\n \"boolean\" !== typeof opts &&\n (!0 === opts.once || opts.signal instanceof AbortSignal)\n ? { capture: opts.capture, passive: opts.passive }\n : opts;\n}\nfunction normalizeListenerOptions(opts) {\n return null == opts\n ? \"c=0\"\n : \"boolean\" === typeof opts\n ? \"c=\" + (opts ? \"1\" : \"0\")\n : \"c=\" + (opts.capture ? \"1\" : \"0\");\n}\nfunction indexOfEventListener(\n eventListeners,\n type,\n listener,\n optionsOrUseCapture\n) {\n if (0 === eventListeners.length) return -1;\n optionsOrUseCapture = normalizeListenerOptions(optionsOrUseCapture);\n for (var i = 0; i < eventListeners.length; i++) {\n var item = eventListeners[i];\n if (\n item.type === type &&\n item.listener === listener &&\n normalizeListenerOptions(item.optionsOrUseCapture) === optionsOrUseCapture\n )\n return i;\n }\n return -1;\n}\nFragmentInstance.prototype.dispatchEvent = function (event) {\n var parentHostFiber = getFragmentParentInstanceOrContainerFiber(\n this._fragmentFiber\n );\n if (null === parentHostFiber) return !0;\n parentHostFiber = getInstanceFromHostFiber(parentHostFiber);\n var eventListeners = this._eventListeners;\n if (\n (null !== eventListeners && 0 < eventListeners.length) ||\n !event.bubbles\n ) {\n var temp =\n 9 === parentHostFiber.nodeType\n ? parentHostFiber.createComment(\"\")\n : document.createTextNode(\"\");\n if (eventListeners)\n for (var i = 0; i < eventListeners.length; i++) {\n var _eventListeners$i = eventListeners[i];\n temp.addEventListener(\n _eventListeners$i.type,\n _eventListeners$i.attachedListener,\n getAttachOptions(_eventListeners$i.optionsOrUseCapture)\n );\n }\n parentHostFiber.appendChild(temp);\n event = temp.dispatchEvent(event);\n if (eventListeners)\n for (i = 0; i < eventListeners.length; i++)\n (_eventListeners$i = eventListeners[i]),\n temp.removeEventListener(\n _eventListeners$i.type,\n _eventListeners$i.attachedListener,\n getAttachOptions(_eventListeners$i.optionsOrUseCapture)\n );\n parentHostFiber.removeChild(temp);\n return event;\n }\n return parentHostFiber.dispatchEvent(event);\n};\nFragmentInstance.prototype.focus = function (focusOptions) {\n traverseVisibleInstancesAndTextInstances(\n this._fragmentFiber.child,\n !0,\n setFocusOnFiberIfFocusable,\n focusOptions,\n void 0,\n void 0\n );\n};\nfunction setFocusOnFiberIfFocusable(fiber, focusOptions) {\n if (6 === fiber.tag) return !1;\n fiber = getInstanceFromHostFiber(fiber);\n return setFocusIfFocusable(fiber, focusOptions);\n}\nFragmentInstance.prototype.focusLast = function (focusOptions) {\n var children = [];\n traverseVisibleInstancesAndTextInstances(\n this._fragmentFiber.child,\n !0,\n collectChildren,\n children,\n void 0,\n void 0\n );\n for (\n var i = children.length - 1;\n 0 <= i && !setFocusOnFiberIfFocusable(children[i], focusOptions);\n i--\n );\n};\nfunction collectChildren(child, collection) {\n collection.push(child);\n return !1;\n}\nFragmentInstance.prototype.blur = function () {\n var parentHostFiber = getFragmentParentInstanceOrContainerFiber(\n this._fragmentFiber\n );\n null !== parentHostFiber &&\n ((parentHostFiber = getInstanceFromHostFiber(parentHostFiber)),\n (parentHostFiber =\n getOwnerDocumentFromRootContainer(parentHostFiber).activeElement),\n null !== parentHostFiber &&\n traverseVisibleInstancesAndTextInstances(\n this._fragmentFiber.child,\n !1,\n blurActiveElementWithinFragment,\n parentHostFiber,\n void 0,\n void 0\n ));\n};\nfunction blurActiveElementWithinFragment(child, activeElement) {\n if (6 === child.tag) return !1;\n child = getInstanceFromHostFiber(child);\n return child === activeElement || child.contains(activeElement)\n ? (activeElement.blur(), !0)\n : !1;\n}\nFragmentInstance.prototype.observeUsing = function (observer) {\n null === this._observers && (this._observers = new Set());\n this._observers.add(observer);\n traverseVisibleInstancesAndTextInstances(\n this._fragmentFiber.child,\n !1,\n observeChild,\n observer,\n void 0,\n void 0\n );\n};\nfunction observeChild(child, observer) {\n if (6 === child.tag) return !1;\n child = getInstanceFromHostFiber(child);\n observer.observe(child);\n return !1;\n}\nFragmentInstance.prototype.unobserveUsing = function (observer) {\n var observers = this._observers;\n if (null !== observers && observers.has(observer)) {\n observers.delete(observer);\n traverseVisibleInstancesAndTextInstances(\n this._fragmentFiber.child,\n !1,\n unobserveChild,\n observer,\n void 0,\n void 0\n );\n for (\n var i = (observers = 0);\n i < pendingIntersectionUnobserves.length;\n i++\n ) {\n var pending = pendingIntersectionUnobserves[i];\n pending.fragmentInstance === this && pending.observer === observer\n ? observer.unobserve(pending.instance)\n : (pendingIntersectionUnobserves[observers++] = pending);\n }\n pendingIntersectionUnobserves.length = observers;\n }\n};\nfunction unobserveChild(child, observer) {\n if (6 === child.tag) return !1;\n child = getInstanceFromHostFiber(child);\n observer.unobserve(child);\n return !1;\n}\nvar pendingIntersectionUnobserves = [],\n intersectionUnobserveScheduled = !1;\nfunction schedulePendingIntersectionUnobserve(\n fragmentInstance,\n observer,\n instance\n) {\n pendingIntersectionUnobserves.push({\n fragmentInstance: fragmentInstance,\n observer: observer,\n instance: instance\n });\n intersectionUnobserveScheduled ||\n ((intersectionUnobserveScheduled = !0),\n requestPostPaintCallback(function () {\n intersectionUnobserveScheduled = !1;\n var pending = pendingIntersectionUnobserves;\n pendingIntersectionUnobserves = [];\n for (var i = 0; i < pending.length; i++) {\n var item = pending[i];\n item.observer.unobserve(item.instance);\n }\n }));\n}\nFragmentInstance.prototype.getClientRects = function () {\n var rects = [];\n traverseVisibleInstancesAndTextInstances(\n this._fragmentFiber.child,\n !1,\n collectClientRects,\n rects,\n void 0,\n void 0\n );\n return rects;\n};\nfunction collectClientRects(child, rects) {\n if (6 === child.tag) {\n child = child.stateNode;\n var range = child.ownerDocument.createRange();\n range.selectNodeContents(child);\n rects.push.apply(rects, range.getClientRects());\n } else\n (child = getInstanceFromHostFiber(child)),\n rects.push.apply(rects, child.getClientRects());\n return !1;\n}\nFragmentInstance.prototype.getRootNode = function (getRootNodeOptions) {\n var parentHostFiber = getFragmentParentInstanceOrContainerFiber(\n this._fragmentFiber\n );\n return null === parentHostFiber\n ? this\n : getInstanceFromHostFiber(parentHostFiber).getRootNode(getRootNodeOptions);\n};\nFragmentInstance.prototype.compareDocumentPosition = function (otherNode) {\n var parentHostFiber = getFragmentParentInstanceOrContainerFiber(\n this._fragmentFiber\n );\n if (null === parentHostFiber) return Node.DOCUMENT_POSITION_DISCONNECTED;\n var children = [];\n traverseVisibleInstancesAndTextInstances(\n this._fragmentFiber.child,\n !1,\n collectChildren,\n children,\n void 0,\n void 0\n );\n var parentHostInstance = getInstanceFromHostFiber(parentHostFiber);\n if (0 === children.length) {\n children = parentHostInstance;\n if (fiberIsPortaledIntoHost(this._fragmentFiber)) {\n a: {\n for (\n parentHostFiber = this._fragmentFiber.return;\n null !== parentHostFiber;\n\n ) {\n if (4 === parentHostFiber.tag) {\n parentHostFiber = parentHostFiber.stateNode.containerInfo;\n break a;\n }\n if (\n 3 === parentHostFiber.tag ||\n 5 === parentHostFiber.tag ||\n 27 === parentHostFiber.tag\n )\n break;\n parentHostFiber = parentHostFiber.return;\n }\n parentHostFiber = null;\n }\n null != parentHostFiber && (children = parentHostFiber);\n }\n parentHostFiber = this._fragmentFiber;\n var result = (parentHostInstance =\n children.compareDocumentPosition(otherNode));\n children === otherNode\n ? (result = Node.DOCUMENT_POSITION_CONTAINS)\n : parentHostInstance & Node.DOCUMENT_POSITION_CONTAINED_BY &&\n ((children =\n getFragmentInstanceOrTextInstanceSiblings(parentHostFiber)[1]),\n null === children\n ? (result = Node.DOCUMENT_POSITION_PRECEDING)\n : ((otherNode =\n getInstanceFromHostFiber(children).compareDocumentPosition(\n otherNode\n )),\n (result =\n 0 === otherNode || otherNode & Node.DOCUMENT_POSITION_FOLLOWING\n ? Node.DOCUMENT_POSITION_FOLLOWING\n : Node.DOCUMENT_POSITION_PRECEDING)));\n return (result |= Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC);\n }\n parentHostFiber = getInstanceFromHostFiber(children[0]);\n result = getInstanceFromHostFiber(children[children.length - 1]);\n var parentHostInstanceFromDOM = fiberIsPortaledIntoHost(this._fragmentFiber)\n ? parentHostFiber.parentElement\n : parentHostInstance;\n if (null == parentHostInstanceFromDOM)\n return Node.DOCUMENT_POSITION_DISCONNECTED;\n parentHostInstance =\n parentHostInstanceFromDOM.compareDocumentPosition(parentHostFiber) &\n Node.DOCUMENT_POSITION_CONTAINED_BY;\n parentHostInstanceFromDOM =\n parentHostInstanceFromDOM.compareDocumentPosition(result) &\n Node.DOCUMENT_POSITION_CONTAINED_BY;\n var firstResult = parentHostFiber.compareDocumentPosition(otherNode),\n lastResult = result.compareDocumentPosition(otherNode),\n otherNodeIsWithinFirstOrLastChild =\n firstResult & Node.DOCUMENT_POSITION_CONTAINED_BY ||\n lastResult & Node.DOCUMENT_POSITION_CONTAINED_BY;\n lastResult =\n parentHostInstance &&\n parentHostInstanceFromDOM &&\n firstResult & Node.DOCUMENT_POSITION_FOLLOWING &&\n lastResult & Node.DOCUMENT_POSITION_PRECEDING;\n parentHostFiber =\n (parentHostInstance && parentHostFiber === otherNode) ||\n (parentHostInstanceFromDOM && result === otherNode) ||\n otherNodeIsWithinFirstOrLastChild ||\n lastResult\n ? Node.DOCUMENT_POSITION_CONTAINED_BY\n : (!parentHostInstance && parentHostFiber === otherNode) ||\n (!parentHostInstanceFromDOM && result === otherNode)\n ? Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC\n : firstResult;\n return parentHostFiber & Node.DOCUMENT_POSITION_DISCONNECTED ||\n parentHostFiber & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC ||\n validateDocumentPositionWithFiberTree(\n parentHostFiber,\n this._fragmentFiber,\n children[0],\n children[children.length - 1],\n otherNode\n )\n ? parentHostFiber\n : Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;\n};\nfunction validateDocumentPositionWithFiberTree(\n documentPosition,\n fragmentFiber,\n precedingBoundaryFiber,\n followingBoundaryFiber,\n otherNode\n) {\n var otherFiber = getClosestInstanceFromNode(otherNode);\n if (documentPosition & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n if ((precedingBoundaryFiber = !!otherFiber))\n a: {\n for (; null !== otherFiber; ) {\n if (\n 7 === otherFiber.tag &&\n (otherFiber === fragmentFiber ||\n otherFiber.alternate === fragmentFiber)\n ) {\n precedingBoundaryFiber = !0;\n break a;\n }\n otherFiber = otherFiber.return;\n }\n precedingBoundaryFiber = !1;\n }\n return precedingBoundaryFiber;\n }\n if (documentPosition & Node.DOCUMENT_POSITION_CONTAINS) {\n if (null === otherFiber)\n return (\n (otherFiber = otherNode.ownerDocument),\n otherNode === otherFiber ||\n otherNode === otherFiber.documentElement ||\n otherNode === otherFiber.body\n );\n a: {\n otherFiber = fragmentFiber;\n for (\n fragmentFiber =\n getFragmentParentInstanceOrContainerFiber(fragmentFiber);\n null !== otherFiber;\n\n ) {\n if (\n !(\n (5 !== otherFiber.tag &&\n 3 !== otherFiber.tag &&\n 27 !== otherFiber.tag) ||\n (otherFiber !== fragmentFiber &&\n otherFiber.alternate !== fragmentFiber)\n )\n ) {\n otherFiber = !0;\n break a;\n }\n otherFiber = otherFiber.return;\n }\n otherFiber = !1;\n }\n return otherFiber;\n }\n return documentPosition & Node.DOCUMENT_POSITION_PRECEDING\n ? ((fragmentFiber = !!otherFiber) &&\n !(fragmentFiber = otherFiber === precedingBoundaryFiber) &&\n ((fragmentFiber = getLowestCommonAncestor(\n precedingBoundaryFiber,\n otherFiber,\n getParentForFragmentAncestors\n )),\n null === fragmentFiber\n ? (fragmentFiber = !1)\n : (traverseVisibleInstancesAndTextInstances(\n fragmentFiber,\n !0,\n isFiberPrecedingCheck,\n otherFiber,\n precedingBoundaryFiber\n ),\n (otherFiber = searchTarget),\n (searchTarget = null),\n (fragmentFiber = null !== otherFiber))),\n fragmentFiber)\n : documentPosition & Node.DOCUMENT_POSITION_FOLLOWING\n ? ((fragmentFiber = !!otherFiber) &&\n !(fragmentFiber = otherFiber === followingBoundaryFiber) &&\n ((fragmentFiber = getLowestCommonAncestor(\n followingBoundaryFiber,\n otherFiber,\n getParentForFragmentAncestors\n )),\n null === fragmentFiber\n ? (fragmentFiber = !1)\n : (traverseVisibleInstancesAndTextInstances(\n fragmentFiber,\n !0,\n isFiberFollowingCheck,\n otherFiber,\n followingBoundaryFiber\n ),\n (otherFiber = searchTarget),\n (searchBoundary = searchTarget = null),\n (fragmentFiber = null !== otherFiber))),\n fragmentFiber)\n : !1;\n}\nfunction scrollTextNodeIntoView(textNode, resolvedAlignToTop) {\n var range = textNode.ownerDocument.createRange();\n range.selectNodeContents(textNode);\n textNode = range.getBoundingClientRect();\n window.scrollTo(\n window.scrollX + textNode.left,\n resolvedAlignToTop\n ? window.scrollY + textNode.top\n : window.scrollY + textNode.bottom - window.innerHeight\n );\n}\nFragmentInstance.prototype.scrollIntoView = function (alignToTop) {\n if (\"object\" === typeof alignToTop) throw Error(formatProdErrorMessage(566));\n var children = [];\n traverseVisibleInstancesAndTextInstances(\n this._fragmentFiber.child,\n !1,\n collectChildren,\n children,\n void 0,\n void 0\n );\n var resolvedAlignToTop = !1 !== alignToTop;\n if (0 === children.length) {\n var hostSiblings = getFragmentInstanceOrTextInstanceSiblings(\n this._fragmentFiber\n );\n hostSiblings = resolvedAlignToTop\n ? hostSiblings[1] ||\n hostSiblings[0] ||\n getFragmentParentInstanceOrContainerFiber(this._fragmentFiber)\n : hostSiblings[0] || hostSiblings[1];\n if (null === hostSiblings) return;\n if (6 === hostSiblings.tag) {\n alignToTop = getInstanceFromHostFiber(hostSiblings);\n scrollTextNodeIntoView(alignToTop, resolvedAlignToTop);\n return;\n }\n hostSiblings = getInstanceFromHostFiber(hostSiblings);\n if (9 !== hostSiblings.nodeType) {\n if (11 === hostSiblings.nodeType) {\n resolvedAlignToTop = \"host\" in hostSiblings ? hostSiblings.host : null;\n null !== resolvedAlignToTop &&\n resolvedAlignToTop.scrollIntoView(alignToTop);\n return;\n }\n hostSiblings.scrollIntoView(alignToTop);\n }\n }\n for (\n hostSiblings = resolvedAlignToTop ? children.length - 1 : 0;\n hostSiblings !== (resolvedAlignToTop ? -1 : children.length);\n\n ) {\n var child = children[hostSiblings];\n 6 === child.tag\n ? ((child = getInstanceFromHostFiber(child)),\n scrollTextNodeIntoView(child, resolvedAlignToTop))\n : getInstanceFromHostFiber(child).scrollIntoView(alignToTop);\n hostSiblings += resolvedAlignToTop ? -1 : 1;\n }\n};\nfunction addFragmentHandleToFiber(child, fragmentInstance) {\n child = getInstanceFromHostFiber(child);\n addFragmentHandleToInstance(child, fragmentInstance);\n return !1;\n}\nfunction addFragmentHandleToInstance(instance, fragmentInstance) {\n null == instance.reactFragments && (instance.reactFragments = new Set());\n instance.reactFragments.add(fragmentInstance);\n}\nfunction commitNewChildToFragmentInstance(childInstance, fragmentInstance) {\n var eventListeners = fragmentInstance._eventListeners;\n if (null !== eventListeners)\n for (var i$jscomp$0 = 0; i$jscomp$0 < eventListeners.length; i$jscomp$0++) {\n var _eventListeners$i3 = eventListeners[i$jscomp$0];\n childInstance.addEventListener(\n _eventListeners$i3.type,\n _eventListeners$i3.attachedListener,\n getAttachOptions(_eventListeners$i3.optionsOrUseCapture)\n );\n }\n 3 !== childInstance.nodeType &&\n ((eventListeners = fragmentInstance._observers),\n null !== eventListeners &&\n eventListeners.forEach(function (observer) {\n for (\n var writeIdx = 0, i = 0;\n i < pendingIntersectionUnobserves.length;\n i++\n ) {\n var pending = pendingIntersectionUnobserves[i];\n if (\n pending.fragmentInstance !== fragmentInstance ||\n pending.observer !== observer ||\n pending.instance !== childInstance\n )\n pendingIntersectionUnobserves[writeIdx++] = pending;\n }\n pendingIntersectionUnobserves.length = writeIdx;\n observer.observe(childInstance);\n }),\n addFragmentHandleToInstance(childInstance, fragmentInstance));\n}\nfunction deleteChildFromFragmentInstance(childInstance, fragmentInstance) {\n var eventListeners = fragmentInstance._eventListeners;\n if (null !== eventListeners)\n for (var i = 0; i < eventListeners.length; i++) {\n var _eventListeners$i4 = eventListeners[i];\n childInstance.removeEventListener(\n _eventListeners$i4.type,\n _eventListeners$i4.attachedListener,\n getAttachOptions(_eventListeners$i4.optionsOrUseCapture)\n );\n }\n 3 !== childInstance.nodeType &&\n ((eventListeners = fragmentInstance._observers),\n null !== eventListeners &&\n eventListeners.forEach(function (observer) {\n \"string\" === typeof observer.rootMargin\n ? schedulePendingIntersectionUnobserve(\n fragmentInstance,\n observer,\n childInstance\n )\n : observer.unobserve(childInstance);\n }),\n null != childInstance.reactFragments &&\n childInstance.reactFragments.delete(fragmentInstance));\n}\nfunction clearContainerSparingly(container) {\n var nextNode = container.firstChild;\n nextNode && 10 === nextNode.nodeType && (nextNode = nextNode.nextSibling);\n for (; nextNode; ) {\n var node = nextNode;\n nextNode = nextNode.nextSibling;\n switch (node.nodeName) {\n case \"HTML\":\n case \"HEAD\":\n case \"BODY\":\n clearContainerSparingly(node);\n detachDeletedInstance(node);\n continue;\n case \"SCRIPT\":\n case \"STYLE\":\n continue;\n case \"LINK\":\n if (\"stylesheet\" === node.rel.toLowerCase()) continue;\n }\n container.removeChild(node);\n }\n}\nfunction canHydrateInstance(instance, type, props, inRootOrSingleton) {\n for (; 1 === instance.nodeType; ) {\n var anyProps = props;\n if (instance.nodeName.toLowerCase() !== type.toLowerCase()) {\n if (\n !inRootOrSingleton &&\n (\"INPUT\" !== instance.nodeName || \"hidden\" !== instance.type)\n )\n break;\n } else if (!inRootOrSingleton)\n if (\"input\" === type && \"hidden\" === instance.type) {\n var name = null == anyProps.name ? null : \"\" + anyProps.name;\n if (\n \"hidden\" === anyProps.type &&\n instance.getAttribute(\"name\") === name\n )\n return instance;\n } else return instance;\n else if (!instance[internalHoistableMarker])\n switch (type) {\n case \"meta\":\n if (!instance.hasAttribute(\"itemprop\")) break;\n return instance;\n case \"link\":\n name = instance.getAttribute(\"rel\");\n if (\"stylesheet\" === name && instance.hasAttribute(\"data-precedence\"))\n break;\n else if (\n name !== anyProps.rel ||\n instance.getAttribute(\"href\") !==\n (null == anyProps.href || \"\" === anyProps.href\n ? null\n : anyProps.href) ||\n instance.getAttribute(\"crossorigin\") !==\n (null == anyProps.crossOrigin ? null : anyProps.crossOrigin) ||\n instance.getAttribute(\"title\") !==\n (null == anyProps.title ? null : anyProps.title)\n )\n break;\n return instance;\n case \"style\":\n if (instance.hasAttribute(\"data-precedence\")) break;\n return instance;\n case \"script\":\n name = instance.getAttribute(\"src\");\n if (\n (name !== (null == anyProps.src ? null : anyProps.src) ||\n instance.getAttribute(\"type\") !==\n (null == anyProps.type ? null : anyProps.type) ||\n instance.getAttribute(\"crossorigin\") !==\n (null == anyProps.crossOrigin ? null : anyProps.crossOrigin)) &&\n name &&\n instance.hasAttribute(\"async\") &&\n !instance.hasAttribute(\"itemprop\")\n )\n break;\n return instance;\n default:\n return instance;\n }\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) break;\n }\n return null;\n}\nfunction canHydrateTextInstance(instance, text, inRootOrSingleton) {\n if (\"\" === text) return null;\n for (; 3 !== instance.nodeType; ) {\n if (\n (1 !== instance.nodeType ||\n \"INPUT\" !== instance.nodeName ||\n \"hidden\" !== instance.type) &&\n !inRootOrSingleton\n )\n return null;\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) return null;\n }\n return instance;\n}\nfunction canHydrateHydrationBoundary(instance, inRootOrSingleton) {\n for (; 8 !== instance.nodeType; ) {\n if (\n (1 !== instance.nodeType ||\n \"INPUT\" !== instance.nodeName ||\n \"hidden\" !== instance.type) &&\n !inRootOrSingleton\n )\n return null;\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) return null;\n }\n return instance;\n}\nfunction isSuspenseInstancePending(instance) {\n return \"$?\" === instance.data || \"$~\" === instance.data;\n}\nfunction isSuspenseInstanceFallback(instance) {\n return (\n \"$!\" === instance.data ||\n (\"$?\" === instance.data && \"loading\" !== instance.ownerDocument.readyState)\n );\n}\nfunction registerSuspenseInstanceRetry(instance, callback) {\n var ownerDocument = instance.ownerDocument;\n if (\"$~\" === instance.data) instance._reactRetry = callback;\n else if (\"$?\" !== instance.data || \"loading\" !== ownerDocument.readyState)\n callback();\n else {\n var listener = function () {\n callback();\n ownerDocument.removeEventListener(\"DOMContentLoaded\", listener);\n };\n ownerDocument.addEventListener(\"DOMContentLoaded\", listener);\n instance._reactRetry = listener;\n }\n}\nfunction getNextHydratable(node) {\n for (; null != node; node = node.nextSibling) {\n var nodeType = node.nodeType;\n if (1 === nodeType || 3 === nodeType) break;\n if (8 === nodeType) {\n nodeType = node.data;\n if (\n \"$\" === nodeType ||\n \"$!\" === nodeType ||\n \"$?\" === nodeType ||\n \"$~\" === nodeType ||\n \"&\" === nodeType ||\n \"F!\" === nodeType ||\n \"F\" === nodeType\n )\n break;\n if (\"/$\" === nodeType || \"/&\" === nodeType) return null;\n }\n }\n return node;\n}\nvar previousHydratableOnEnteringScopedSingleton = null;\nfunction getNextHydratableInstanceAfterHydrationBoundary(hydrationInstance) {\n hydrationInstance = hydrationInstance.nextSibling;\n for (var depth = 0; hydrationInstance; ) {\n if (8 === hydrationInstance.nodeType) {\n var data = hydrationInstance.data;\n if (\"/$\" === data || \"/&\" === data) {\n if (0 === depth)\n return getNextHydratable(hydrationInstance.nextSibling);\n depth--;\n } else\n (\"$\" !== data &&\n \"$!\" !== data &&\n \"$?\" !== data &&\n \"$~\" !== data &&\n \"&\" !== data) ||\n depth++;\n }\n hydrationInstance = hydrationInstance.nextSibling;\n }\n return null;\n}\nfunction getParentHydrationBoundary(targetInstance) {\n targetInstance = targetInstance.previousSibling;\n for (var depth = 0; targetInstance; ) {\n if (8 === targetInstance.nodeType) {\n var data = targetInstance.data;\n if (\n \"$\" === data ||\n \"$!\" === data ||\n \"$?\" === data ||\n \"$~\" === data ||\n \"&\" === data\n ) {\n if (0 === depth) return targetInstance;\n depth--;\n } else (\"/$\" !== data && \"/&\" !== data) || depth++;\n }\n targetInstance = targetInstance.previousSibling;\n }\n return null;\n}\nfunction setFocusIfFocusable(node, focusOptions) {\n function handleFocus() {\n didFocus = !0;\n }\n if (node.ownerDocument.activeElement === node) return !0;\n var didFocus = !1;\n try {\n node.ownerDocument.addEventListener(\"focus\", handleFocus, !0),\n (node.focus || HTMLElement.prototype.focus).call(node, focusOptions);\n } finally {\n node.ownerDocument.removeEventListener(\"focus\", handleFocus, !0);\n }\n return didFocus;\n}\nfunction requestPostPaintCallback(callback) {\n localRequestAnimationFrame(function () {\n localRequestAnimationFrame(function (time) {\n return callback(time);\n });\n });\n}\nfunction resolveSingletonInstance(type, props, rootContainerInstance) {\n props = getOwnerDocumentFromRootContainer(rootContainerInstance);\n switch (type) {\n case \"html\":\n type = props.documentElement;\n if (!type) throw Error(formatProdErrorMessage(452));\n return type;\n case \"head\":\n type = props.head;\n if (!type) throw Error(formatProdErrorMessage(453));\n return type;\n case \"body\":\n type = props.body;\n if (!type) throw Error(formatProdErrorMessage(454));\n return type;\n default:\n throw Error(formatProdErrorMessage(451));\n }\n}\nfunction releaseSingletonInstance(instance, type, props) {\n for (var propKey in props) {\n var propValue = props[propKey];\n props.hasOwnProperty(propKey) &&\n null != propValue &&\n setProp(instance, type, propKey, null, emptyProps, propValue);\n }\n null != props.dangerouslySetInnerHTML && (instance.textContent = \"\");\n instance.onclick === noop$1 && (instance.onclick = null);\n detachDeletedInstance(instance);\n}\nfunction clearSingletonPreambleContribution(instance) {\n for (var attributes = instance.attributes; attributes.length; )\n instance.removeAttributeNode(attributes[0]);\n detachDeletedInstance(instance);\n}\nvar preloadPropsMap = new Map(),\n preconnectsSet = new Set();\nfunction getHoistableRoot(container) {\n if (\"function\" === typeof container.getRootNode) {\n var rootNode = container.getRootNode();\n if (9 === rootNode.nodeType || 11 === rootNode.nodeType) return rootNode;\n }\n return 9 === container.nodeType ? container : container.ownerDocument;\n}\nvar previousDispatcher = ReactDOMSharedInternals.d;\nReactDOMSharedInternals.d = {\n f: flushSyncWork,\n r: requestFormReset,\n D: prefetchDNS,\n C: preconnect,\n L: preload,\n m: preloadModule,\n X: preinitScript,\n S: preinitStyle,\n M: preinitModuleScript\n};\nfunction flushSyncWork() {\n var previousWasRendering = previousDispatcher.f(),\n wasRendering = flushSyncWork$1();\n return previousWasRendering || wasRendering;\n}\nfunction requestFormReset(form) {\n var formInst = getInstanceFromNode(form);\n null !== formInst && 5 === formInst.tag && \"form\" === formInst.type\n ? requestFormReset$1(formInst)\n : previousDispatcher.r(form);\n}\nvar globalDocument = \"undefined\" === typeof document ? null : document;\nfunction preconnectAs(rel, href, crossOrigin) {\n var ownerDocument = globalDocument;\n if (ownerDocument && \"string\" === typeof href && href) {\n var limitedEscapedHref =\n escapeSelectorAttributeValueInsideDoubleQuotes(href);\n limitedEscapedHref =\n 'link[rel=\"' + rel + '\"][href=\"' + limitedEscapedHref + '\"]';\n \"string\" === typeof crossOrigin &&\n (limitedEscapedHref += '[crossorigin=\"' + crossOrigin + '\"]');\n preconnectsSet.has(limitedEscapedHref) ||\n (preconnectsSet.add(limitedEscapedHref),\n (rel = { rel: rel, crossOrigin: crossOrigin, href: href }),\n null === ownerDocument.querySelector(limitedEscapedHref) &&\n ((href = ownerDocument.createElement(\"link\")),\n setInitialProperties(href, \"link\", rel),\n markNodeAsHoistable(href),\n ownerDocument.head.appendChild(href)));\n }\n}\nfunction prefetchDNS(href) {\n previousDispatcher.D(href);\n preconnectAs(\"dns-prefetch\", href, null);\n}\nfunction preconnect(href, crossOrigin) {\n previousDispatcher.C(href, crossOrigin);\n preconnectAs(\"preconnect\", href, crossOrigin);\n}\nfunction preload(href, as, options) {\n previousDispatcher.L(href, as, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href && as) {\n var preloadSelector =\n 'link[rel=\"preload\"][as=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n '\"]';\n \"image\" === as\n ? options && options.imageSrcSet\n ? ((preloadSelector +=\n '[imagesrcset=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n options.imageSrcSet\n ) +\n '\"]'),\n \"string\" === typeof options.imageSizes &&\n (preloadSelector +=\n '[imagesizes=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n options.imageSizes\n ) +\n '\"]'))\n : (preloadSelector +=\n '[href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]')\n : (preloadSelector +=\n '[href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]');\n var key = preloadSelector;\n switch (as) {\n case \"style\":\n key = getStyleKey(href);\n break;\n case \"script\":\n key = getScriptKey(href);\n }\n if (\n !(\n preloadPropsMap.has(key) ||\n ((href = assign(\n {\n rel: \"preload\",\n href:\n \"image\" === as && options && options.imageSrcSet ? void 0 : href,\n as: as\n },\n options\n )),\n preloadPropsMap.set(key, href),\n null !== ownerDocument.querySelector(preloadSelector) ||\n (\"style\" === as &&\n ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) ||\n (\"script\" === as &&\n ownerDocument.querySelector(getScriptSelectorFromKey(key))))\n )\n ) {\n var instance = ownerDocument.createElement(\"link\");\n setInitialProperties(instance, \"link\", href);\n \"style\" === as &&\n ((instance[internalLoadPendingKey] = !0),\n (instance.onload = instance.onerror =\n function () {\n clearPendingLoadOnNode(instance);\n }));\n markNodeAsHoistable(instance);\n ownerDocument.head.appendChild(instance);\n }\n }\n}\nfunction preloadModule(href, options) {\n previousDispatcher.m(href, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href) {\n var as = options && \"string\" === typeof options.as ? options.as : \"script\",\n preloadSelector =\n 'link[rel=\"modulepreload\"][as=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n '\"][href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]',\n key = preloadSelector;\n switch (as) {\n case \"audioworklet\":\n case \"paintworklet\":\n case \"serviceworker\":\n case \"sharedworker\":\n case \"worker\":\n case \"script\":\n key = getScriptKey(href);\n }\n if (\n !preloadPropsMap.has(key) &&\n ((href = assign({ rel: \"modulepreload\", href: href }, options)),\n preloadPropsMap.set(key, href),\n null === ownerDocument.querySelector(preloadSelector))\n ) {\n switch (as) {\n case \"audioworklet\":\n case \"paintworklet\":\n case \"serviceworker\":\n case \"sharedworker\":\n case \"worker\":\n case \"script\":\n if (ownerDocument.querySelector(getScriptSelectorFromKey(key)))\n return;\n }\n as = ownerDocument.createElement(\"link\");\n setInitialProperties(as, \"link\", href);\n markNodeAsHoistable(as);\n ownerDocument.head.appendChild(as);\n }\n }\n}\nfunction preinitStyle(href, precedence, options) {\n previousDispatcher.S(href, precedence, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href) {\n var styles = getResourcesFromRoot(ownerDocument).hoistableStyles,\n key = getStyleKey(href);\n precedence = precedence || \"default\";\n var resource = styles.get(key);\n if (!resource) {\n var state = { loading: 0, preload: null };\n if (\n (resource = ownerDocument.querySelector(\n getStylesheetSelectorFromKey(key)\n ))\n )\n state.loading = 5;\n else {\n href = assign(\n { rel: \"stylesheet\", href: href, \"data-precedence\": precedence },\n options\n );\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForStylesheet(href, options);\n var link = (resource = ownerDocument.createElement(\"link\"));\n markNodeAsHoistable(link);\n setInitialProperties(link, \"link\", href);\n link._p = new Promise(function (resolve, reject) {\n link.onload = resolve;\n link.onerror = reject;\n });\n link.addEventListener(\"load\", function () {\n state.loading |= 1;\n });\n link.addEventListener(\"error\", function () {\n state.loading |= 2;\n });\n state.loading |= 4;\n insertStylesheet(resource, precedence, ownerDocument);\n }\n resource = {\n type: \"stylesheet\",\n instance: resource,\n count: 1,\n state: state\n };\n styles.set(key, resource);\n }\n }\n}\nfunction preinitScript(src, options) {\n previousDispatcher.X(src, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && src) {\n var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n key = getScriptKey(src),\n resource = scripts.get(key);\n resource ||\n ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n resource ||\n ((src = assign({ src: src, async: !0 }, options)),\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForScript(src, options),\n (resource = ownerDocument.createElement(\"script\")),\n markNodeAsHoistable(resource),\n setInitialProperties(resource, \"link\", src),\n ownerDocument.head.appendChild(resource)),\n (resource = {\n type: \"script\",\n instance: resource,\n count: 1,\n state: null\n }),\n scripts.set(key, resource));\n }\n}\nfunction preinitModuleScript(src, options) {\n previousDispatcher.M(src, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && src) {\n var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n key = getScriptKey(src),\n resource = scripts.get(key);\n resource ||\n ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n resource ||\n ((src = assign({ src: src, async: !0, type: \"module\" }, options)),\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForScript(src, options),\n (resource = ownerDocument.createElement(\"script\")),\n markNodeAsHoistable(resource),\n setInitialProperties(resource, \"link\", src),\n ownerDocument.head.appendChild(resource)),\n (resource = {\n type: \"script\",\n instance: resource,\n count: 1,\n state: null\n }),\n scripts.set(key, resource));\n }\n}\nfunction getResource(type, currentProps, pendingProps, currentResource) {\n var JSCompiler_inline_result = (JSCompiler_inline_result =\n rootInstanceStackCursor.current)\n ? getHoistableRoot(JSCompiler_inline_result)\n : null;\n if (!JSCompiler_inline_result) throw Error(formatProdErrorMessage(446));\n switch (type) {\n case \"meta\":\n case \"title\":\n return null;\n case \"style\":\n return \"string\" === typeof pendingProps.precedence &&\n \"string\" === typeof pendingProps.href\n ? ((pendingProps = getStyleKey(pendingProps.href)),\n (currentProps = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableStyles),\n (currentResource = currentProps.get(pendingProps)),\n currentResource ||\n ((currentResource = {\n type: \"style\",\n instance: null,\n count: 0,\n state: null\n }),\n currentProps.set(pendingProps, currentResource)),\n currentResource)\n : { type: \"void\", instance: null, count: 0, state: null };\n case \"link\":\n if (\n \"stylesheet\" === pendingProps.rel &&\n \"string\" === typeof pendingProps.href &&\n \"string\" === typeof pendingProps.precedence\n ) {\n type = getStyleKey(pendingProps.href);\n var styles$268 = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableStyles,\n resource$269 = styles$268.get(type);\n resource$269 ||\n ((JSCompiler_inline_result =\n JSCompiler_inline_result.ownerDocument || JSCompiler_inline_result),\n (resource$269 = {\n type: \"stylesheet\",\n instance: null,\n count: 0,\n state: { loading: 0, preload: null }\n }),\n styles$268.set(type, resource$269),\n (styles$268 = JSCompiler_inline_result.querySelector(\n getStylesheetSelectorFromKey(type)\n ))\n ? styles$268._p ||\n ((resource$269.instance = styles$268),\n (resource$269.state.loading = 5))\n : ((styles$268 = preloadPropsMap.get(type)),\n styles$268 ||\n ((styles$268 = {\n rel: \"preload\",\n as: \"style\",\n href: pendingProps.href,\n crossOrigin: pendingProps.crossOrigin,\n integrity: pendingProps.integrity,\n media: pendingProps.media,\n hrefLang: pendingProps.hrefLang,\n referrerPolicy: pendingProps.referrerPolicy\n }),\n preloadPropsMap.set(type, styles$268)),\n preloadStylesheet(\n JSCompiler_inline_result,\n type,\n styles$268,\n resource$269.state\n )));\n if (currentProps && null === currentResource)\n throw Error(formatProdErrorMessage(528, \"\"));\n return resource$269;\n }\n if (currentProps && null !== currentResource)\n throw Error(formatProdErrorMessage(529, \"\"));\n return null;\n case \"script\":\n return (\n (currentProps = pendingProps.async),\n (pendingProps = pendingProps.src),\n \"string\" === typeof pendingProps &&\n currentProps &&\n \"function\" !== typeof currentProps &&\n \"symbol\" !== typeof currentProps\n ? ((pendingProps = getScriptKey(pendingProps)),\n (currentProps = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableScripts),\n (currentResource = currentProps.get(pendingProps)),\n currentResource ||\n ((currentResource = {\n type: \"script\",\n instance: null,\n count: 0,\n state: null\n }),\n currentProps.set(pendingProps, currentResource)),\n currentResource)\n : { type: \"void\", instance: null, count: 0, state: null }\n );\n default:\n throw Error(formatProdErrorMessage(444, type));\n }\n}\nfunction getStyleKey(href) {\n return 'href=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '\"';\n}\nfunction getStylesheetSelectorFromKey(key) {\n return 'link[rel=\"stylesheet\"][' + key + \"]\";\n}\nfunction stylesheetPropsFromRawProps(rawProps) {\n return assign({}, rawProps, {\n \"data-precedence\": rawProps.precedence,\n precedence: null\n });\n}\nfunction preloadStylesheet(ownerDocument, key, preloadProps, state) {\n if (\n (key = ownerDocument.querySelector(\n 'link[rel=\"preload\"][as=\"style\"][' + key + \"]\"\n ))\n ) {\n if (!0 !== key[internalLoadPendingKey]) {\n state.loading = 1;\n return;\n }\n } else\n (key = ownerDocument.createElement(\"link\")),\n (key[internalLoadPendingKey] = !0),\n (key.onload = key.onerror = clearPendingLoadOnNode.bind(null, key)),\n setInitialProperties(key, \"link\", preloadProps),\n markNodeAsHoistable(key),\n ownerDocument.head.appendChild(key);\n state.preload = key;\n key.addEventListener(\"load\", function () {\n return (state.loading |= 1);\n });\n key.addEventListener(\"error\", function () {\n return (state.loading |= 2);\n });\n}\nfunction getScriptKey(src) {\n return '[src=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '\"]';\n}\nfunction getScriptSelectorFromKey(key) {\n return \"script[async]\" + key;\n}\nfunction acquireResource(hoistableRoot, resource, props) {\n resource.count++;\n if (null === resource.instance)\n switch (resource.type) {\n case \"style\":\n var instance = hoistableRoot.querySelector(\n 'style[data-href~=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(props.href) +\n '\"]'\n );\n if (instance)\n return (\n (resource.instance = instance),\n markNodeAsHoistable(instance),\n instance\n );\n var styleProps = assign({}, props, {\n \"data-href\": props.href,\n \"data-precedence\": props.precedence,\n href: null,\n precedence: null\n });\n instance = (hoistableRoot.ownerDocument || hoistableRoot).createElement(\n \"style\"\n );\n markNodeAsHoistable(instance);\n setInitialProperties(instance, \"style\", styleProps);\n insertStylesheet(instance, props.precedence, hoistableRoot);\n return (resource.instance = instance);\n case \"stylesheet\":\n styleProps = getStyleKey(props.href);\n var instance$274 = hoistableRoot.querySelector(\n getStylesheetSelectorFromKey(styleProps)\n );\n if (instance$274)\n return (\n (resource.state.loading |= 4),\n (resource.instance = instance$274),\n markNodeAsHoistable(instance$274),\n instance$274\n );\n instance = stylesheetPropsFromRawProps(props);\n (styleProps = preloadPropsMap.get(styleProps)) &&\n adoptPreloadPropsForStylesheet(instance, styleProps);\n instance$274 = (\n hoistableRoot.ownerDocument || hoistableRoot\n ).createElement(\"link\");\n markNodeAsHoistable(instance$274);\n var linkInstance = instance$274;\n linkInstance._p = new Promise(function (resolve, reject) {\n linkInstance.onload = resolve;\n linkInstance.onerror = reject;\n });\n setInitialProperties(instance$274, \"link\", instance);\n resource.state.loading |= 4;\n insertStylesheet(instance$274, props.precedence, hoistableRoot);\n return (resource.instance = instance$274);\n case \"script\":\n instance$274 = getScriptKey(props.src);\n if (\n (styleProps = hoistableRoot.querySelector(\n getScriptSelectorFromKey(instance$274)\n ))\n )\n return (\n (resource.instance = styleProps),\n markNodeAsHoistable(styleProps),\n styleProps\n );\n instance = props;\n if ((styleProps = preloadPropsMap.get(instance$274)))\n (instance = assign({}, props)),\n adoptPreloadPropsForScript(instance, styleProps);\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n styleProps = hoistableRoot.createElement(\"script\");\n markNodeAsHoistable(styleProps);\n setInitialProperties(styleProps, \"link\", instance);\n hoistableRoot.head.appendChild(styleProps);\n return (resource.instance = styleProps);\n case \"void\":\n return null;\n default:\n throw Error(formatProdErrorMessage(443, resource.type));\n }\n else\n \"stylesheet\" === resource.type &&\n 0 === (resource.state.loading & 4) &&\n ((instance = resource.instance),\n (resource.state.loading |= 4),\n insertStylesheet(instance, props.precedence, hoistableRoot));\n return resource.instance;\n}\nfunction insertStylesheet(instance, precedence, root) {\n for (\n var nodes = root.querySelectorAll(\n 'link[rel=\"stylesheet\"][data-precedence],style[data-precedence]'\n ),\n last = nodes.length ? nodes[nodes.length - 1] : null,\n prior = last,\n i = 0;\n i < nodes.length;\n i++\n ) {\n var node = nodes[i];\n if (node.dataset.precedence === precedence) prior = node;\n else if (prior !== last) break;\n }\n prior\n ? prior.parentNode.insertBefore(instance, prior.nextSibling)\n : ((precedence = 9 === root.nodeType ? root.head : root),\n precedence.insertBefore(instance, precedence.firstChild));\n}\nfunction adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps) {\n null == stylesheetProps.crossOrigin &&\n (stylesheetProps.crossOrigin = preloadProps.crossOrigin);\n null == stylesheetProps.referrerPolicy &&\n (stylesheetProps.referrerPolicy = preloadProps.referrerPolicy);\n null == stylesheetProps.title && (stylesheetProps.title = preloadProps.title);\n}\nfunction adoptPreloadPropsForScript(scriptProps, preloadProps) {\n null == scriptProps.crossOrigin &&\n (scriptProps.crossOrigin = preloadProps.crossOrigin);\n null == scriptProps.referrerPolicy &&\n (scriptProps.referrerPolicy = preloadProps.referrerPolicy);\n null == scriptProps.integrity &&\n (scriptProps.integrity = preloadProps.integrity);\n}\nvar tagCaches = null;\nfunction getHydratableHoistableCache(type, keyAttribute, ownerDocument) {\n if (null === tagCaches) {\n var cache = new Map();\n var caches = (tagCaches = new Map());\n caches.set(ownerDocument, cache);\n } else\n (caches = tagCaches),\n (cache = caches.get(ownerDocument)),\n cache || ((cache = new Map()), caches.set(ownerDocument, cache));\n if (cache.has(type)) return cache;\n cache.set(type, null);\n ownerDocument = ownerDocument.getElementsByTagName(type);\n for (caches = 0; caches < ownerDocument.length; caches++) {\n var node = ownerDocument[caches];\n if (\n !(\n node[internalHoistableMarker] ||\n node[internalInstanceKey] ||\n (\"link\" === type && \"stylesheet\" === node.getAttribute(\"rel\"))\n ) &&\n \"http://www.w3.org/2000/svg\" !== node.namespaceURI\n ) {\n var nodeKey = node.getAttribute(keyAttribute) || \"\";\n nodeKey = type + nodeKey;\n var existing = cache.get(nodeKey);\n existing ? existing.push(node) : cache.set(nodeKey, [node]);\n }\n }\n return cache;\n}\nfunction mountHoistable(hoistableRoot, type, instance) {\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n hoistableRoot.head.insertBefore(\n instance,\n \"title\" === type ? hoistableRoot.querySelector(\"head > title\") : null\n );\n}\nfunction isHostHoistableType(type, props, hostContext) {\n if (1 === hostContext || null != props.itemProp) return !1;\n switch (type) {\n case \"meta\":\n case \"title\":\n return !0;\n case \"style\":\n if (\n \"string\" !== typeof props.precedence ||\n \"string\" !== typeof props.href ||\n \"\" === props.href\n )\n break;\n return !0;\n case \"link\":\n if (\n \"string\" !== typeof props.rel ||\n \"string\" !== typeof props.href ||\n \"\" === props.href ||\n props.onLoad ||\n props.onError\n )\n break;\n switch (props.rel) {\n case \"stylesheet\":\n return (\n (type = props.disabled),\n \"string\" === typeof props.precedence && null == type\n );\n default:\n return !0;\n }\n case \"script\":\n if (\n props.async &&\n \"function\" !== typeof props.async &&\n \"symbol\" !== typeof props.async &&\n !props.onLoad &&\n !props.onError &&\n props.src &&\n \"string\" === typeof props.src\n )\n return !0;\n }\n return !1;\n}\nfunction maySuspendCommit(type, props) {\n return (\n \"img\" === type &&\n null != props.src &&\n \"\" !== props.src &&\n null == props.onLoad &&\n \"lazy\" !== props.loading\n );\n}\nfunction preloadResource(resource) {\n return \"stylesheet\" === resource.type && 0 === (resource.state.loading & 3)\n ? !1\n : !0;\n}\nfunction estimateImageBytes(instance) {\n return (\n (instance.width || 100) *\n (instance.height || 100) *\n (\"number\" === typeof devicePixelRatio ? devicePixelRatio : 1) *\n 0.25\n );\n}\nfunction suspendInstance(state, instance) {\n \"function\" === typeof instance.decode &&\n (state.imgCount++,\n instance.complete ||\n ((state.imgBytes += estimateImageBytes(instance)),\n state.suspenseyImages.push(instance)),\n (state = onUnsuspendImg.bind(state)),\n instance.decode().then(state, state));\n}\nfunction suspendResource(state, hoistableRoot, resource, props) {\n if (\n \"stylesheet\" === resource.type &&\n (\"string\" !== typeof props.media ||\n !1 !== matchMedia(props.media).matches) &&\n 0 === (resource.state.loading & 4)\n ) {\n if (null === resource.instance) {\n var key = getStyleKey(props.href),\n instance = hoistableRoot.querySelector(\n getStylesheetSelectorFromKey(key)\n );\n if (instance) {\n hoistableRoot = instance._p;\n null !== hoistableRoot &&\n \"object\" === typeof hoistableRoot &&\n \"function\" === typeof hoistableRoot.then &&\n (state.count++,\n (state = onUnsuspend.bind(state)),\n hoistableRoot.then(state, state));\n resource.state.loading |= 4;\n resource.instance = instance;\n markNodeAsHoistable(instance);\n return;\n }\n instance = hoistableRoot.ownerDocument || hoistableRoot;\n props = stylesheetPropsFromRawProps(props);\n (key = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForStylesheet(props, key);\n instance = instance.createElement(\"link\");\n markNodeAsHoistable(instance);\n var linkInstance = instance;\n linkInstance._p = new Promise(function (resolve, reject) {\n linkInstance.onload = resolve;\n linkInstance.onerror = reject;\n });\n setInitialProperties(instance, \"link\", props);\n resource.instance = instance;\n }\n null === state.stylesheets && (state.stylesheets = new Map());\n state.stylesheets.set(resource, hoistableRoot);\n (hoistableRoot = resource.state.preload) &&\n 0 === (resource.state.loading & 3) &&\n (state.count++,\n (resource = onUnsuspend.bind(state)),\n hoistableRoot.addEventListener(\"load\", resource),\n hoistableRoot.addEventListener(\"error\", resource));\n }\n}\nvar estimatedBytesWithinLimit = 0;\nfunction waitForCommitToBeReady(state, timeoutOffset) {\n state.stylesheets &&\n 0 === state.count &&\n insertSuspendedStylesheets(state, state.stylesheets);\n return 0 < state.count || 0 < state.imgCount\n ? function (commit) {\n var stylesheetTimer = setTimeout(function () {\n state.stylesheets &&\n insertSuspendedStylesheets(state, state.stylesheets);\n if (state.unsuspend) {\n var unsuspend = state.unsuspend;\n state.unsuspend = null;\n unsuspend();\n }\n }, 6e4 + timeoutOffset);\n 0 < state.imgBytes &&\n 0 === estimatedBytesWithinLimit &&\n (estimatedBytesWithinLimit = 62500 * estimateBandwidth());\n var imgTimer = setTimeout(\n function () {\n state.waitingForImages = !1;\n if (\n 0 === state.count &&\n (state.stylesheets &&\n insertSuspendedStylesheets(state, state.stylesheets),\n state.unsuspend)\n ) {\n var unsuspend = state.unsuspend;\n state.unsuspend = null;\n unsuspend();\n }\n },\n (state.imgBytes > estimatedBytesWithinLimit ? 50 : 800) +\n timeoutOffset\n );\n state.unsuspend = commit;\n return function () {\n state.unsuspend = null;\n clearTimeout(stylesheetTimer);\n clearTimeout(imgTimer);\n };\n }\n : null;\n}\nfunction checkIfFullyUnsuspended(state) {\n if (0 === state.count && (0 === state.imgCount || !state.waitingForImages))\n if (state.stylesheets) insertSuspendedStylesheets(state, state.stylesheets);\n else if (state.unsuspend) {\n var unsuspend = state.unsuspend;\n state.unsuspend = null;\n unsuspend();\n }\n}\nfunction onUnsuspend() {\n this.count--;\n checkIfFullyUnsuspended(this);\n}\nfunction onUnsuspendImg() {\n this.imgCount--;\n checkIfFullyUnsuspended(this);\n}\nvar precedencesByRoot = null;\nfunction insertSuspendedStylesheets(state, resources) {\n state.stylesheets = null;\n null !== state.unsuspend &&\n (state.count++,\n (precedencesByRoot = new Map()),\n resources.forEach(insertStylesheetIntoRoot, state),\n (precedencesByRoot = null),\n onUnsuspend.call(state));\n}\nfunction insertStylesheetIntoRoot(root, resource) {\n if (!(resource.state.loading & 4)) {\n var precedences = precedencesByRoot.get(root);\n if (precedences) var last = precedences.get(null);\n else {\n precedences = new Map();\n precedencesByRoot.set(root, precedences);\n for (\n var nodes = root.querySelectorAll(\n \"link[data-precedence],style[data-precedence]\"\n ),\n i = 0;\n i < nodes.length;\n i++\n ) {\n var node = nodes[i];\n if (\n \"LINK\" === node.nodeName ||\n \"not all\" !== node.getAttribute(\"media\")\n )\n precedences.set(node.dataset.precedence, node), (last = node);\n }\n last && precedences.set(null, last);\n }\n nodes = resource.instance;\n node = nodes.getAttribute(\"data-precedence\");\n i = precedences.get(node) || last;\n i === last && precedences.set(null, nodes);\n precedences.set(node, nodes);\n this.count++;\n last = onUnsuspend.bind(this);\n nodes.addEventListener(\"load\", last);\n nodes.addEventListener(\"error\", last);\n i\n ? i.parentNode.insertBefore(nodes, i.nextSibling)\n : ((root = 9 === root.nodeType ? root.head : root),\n root.insertBefore(nodes, root.firstChild));\n resource.state.loading |= 4;\n }\n}\nvar HostTransitionContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n Provider: null,\n Consumer: null,\n _currentValue: sharedNotPendingObject,\n _currentValue2: sharedNotPendingObject,\n _threadCount: 0\n};\nfunction FiberRootNode(\n containerInfo,\n tag,\n hydrate,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n onDefaultTransitionIndicator,\n formState\n) {\n this.tag = 1;\n this.containerInfo = containerInfo;\n this.pingCache = this.current = this.pendingChildren = null;\n this.timeoutHandle = -1;\n this.callbackNode =\n this.next =\n this.pendingContext =\n this.context =\n this.cancelPendingCommit =\n null;\n this.callbackPriority = 0;\n this.expirationTimes = createLaneMap(-1);\n this.entangledLanes =\n this.shellSuspendCounter =\n this.errorRecoveryDisabledLanes =\n this.expiredLanes =\n this.warmLanes =\n this.pingedLanes =\n this.suspendedLanes =\n this.pendingLanes =\n 0;\n this.entanglements = createLaneMap(0);\n this.hiddenUpdates = createLaneMap(null);\n this.identifierPrefix = identifierPrefix;\n this.onUncaughtError = onUncaughtError;\n this.onCaughtError = onCaughtError;\n this.onRecoverableError = onRecoverableError;\n this.pooledCache = null;\n this.pooledCacheLanes = 0;\n this.formState = formState;\n this.transitionTypes = null;\n this.incompleteTransitions = new Map();\n}\nfunction createFiberRoot(\n containerInfo,\n tag,\n hydrate,\n initialChildren,\n hydrationCallbacks,\n isStrictMode,\n identifierPrefix,\n formState,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n onDefaultTransitionIndicator\n) {\n containerInfo = new FiberRootNode(\n containerInfo,\n tag,\n hydrate,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n onDefaultTransitionIndicator,\n formState\n );\n tag = 1;\n !0 === isStrictMode && (tag |= 24);\n isStrictMode = createFiberImplClass(3, null, null, tag);\n containerInfo.current = isStrictMode;\n isStrictMode.stateNode = containerInfo;\n tag = createCache();\n tag.refCount++;\n containerInfo.pooledCache = tag;\n tag.refCount++;\n isStrictMode.memoizedState = {\n element: initialChildren,\n isDehydrated: hydrate,\n cache: tag\n };\n initializeUpdateQueue(isStrictMode);\n return containerInfo;\n}\nfunction getContextForSubtree(parentComponent) {\n if (!parentComponent) return emptyContextObject;\n parentComponent = emptyContextObject;\n return parentComponent;\n}\nfunction updateContainerImpl(\n rootFiber,\n lane,\n element,\n container,\n parentComponent,\n callback\n) {\n parentComponent = getContextForSubtree(parentComponent);\n null === container.context\n ? (container.context = parentComponent)\n : (container.pendingContext = parentComponent);\n container = createUpdate(lane);\n container.payload = { element: element };\n callback = void 0 === callback ? null : callback;\n null !== callback && (container.callback = callback);\n element = enqueueUpdate(rootFiber, container, lane);\n null !== element &&\n (scheduleUpdateOnFiber(element, rootFiber, lane),\n entangleTransitions(element, rootFiber, lane));\n}\nfunction markRetryLaneImpl(fiber, retryLane) {\n fiber = fiber.memoizedState;\n if (null !== fiber && null !== fiber.dehydrated) {\n var a = fiber.retryLane;\n fiber.retryLane = 0 !== a && a < retryLane ? a : retryLane;\n }\n}\nfunction markRetryLaneIfNotHydrated(fiber, retryLane) {\n markRetryLaneImpl(fiber, retryLane);\n (fiber = fiber.alternate) && markRetryLaneImpl(fiber, retryLane);\n}\nfunction attemptContinuousHydration(fiber) {\n if (13 === fiber.tag || 31 === fiber.tag) {\n var root = enqueueConcurrentRenderForLane(fiber, 67108864);\n null !== root && scheduleUpdateOnFiber(root, fiber, 67108864);\n markRetryLaneIfNotHydrated(fiber, 67108864);\n }\n}\nfunction attemptHydrationAtCurrentPriority(fiber) {\n if (13 === fiber.tag || 31 === fiber.tag) {\n var lane = requestUpdateLane();\n lane = getBumpedLaneForHydrationByLane(lane);\n var root = enqueueConcurrentRenderForLane(fiber, lane);\n null !== root && scheduleUpdateOnFiber(root, fiber, lane);\n markRetryLaneIfNotHydrated(fiber, lane);\n }\n}\nvar _enabled = !0;\nfunction dispatchDiscreteEvent(\n domEventName,\n eventSystemFlags,\n container,\n nativeEvent\n) {\n var prevTransition = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n (ReactDOMSharedInternals.p = 2),\n dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction dispatchContinuousEvent(\n domEventName,\n eventSystemFlags,\n container,\n nativeEvent\n) {\n var prevTransition = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n (ReactDOMSharedInternals.p = 8),\n dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction dispatchEvent(\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n if (_enabled) {\n var blockedOn = findInstanceBlockingEvent(nativeEvent);\n if (null === blockedOn)\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n return_targetInst,\n targetContainer\n ),\n clearIfContinuousEvent(domEventName, nativeEvent);\n else if (\n queueIfContinuousEvent(\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n )\n nativeEvent.stopPropagation();\n else if (\n (clearIfContinuousEvent(domEventName, nativeEvent),\n eventSystemFlags & 4 &&\n -1 < discreteReplayableEvents.indexOf(domEventName))\n ) {\n for (; null !== blockedOn; ) {\n var fiber = getInstanceFromNode(blockedOn);\n if (null !== fiber)\n switch (fiber.tag) {\n case 3:\n fiber = fiber.stateNode;\n if (fiber.current.memoizedState.isDehydrated) {\n var lanes = getHighestPriorityLanes(fiber.pendingLanes);\n if (0 !== lanes) {\n var root = fiber;\n root.pendingLanes |= 2;\n for (root.entangledLanes |= 2; lanes; ) {\n var lane = 1 << (31 - clz32(lanes));\n root.entanglements[1] |= lane;\n lanes &= ~lane;\n }\n ensureRootIsScheduled(fiber);\n 0 === (executionContext & 6) &&\n ((workInProgressRootRenderTargetTime = now() + 500),\n flushSyncWorkAcrossRoots_impl(0, !1));\n }\n }\n break;\n case 31:\n case 13:\n (root = enqueueConcurrentRenderForLane(fiber, 2)),\n null !== root && scheduleUpdateOnFiber(root, fiber, 2),\n flushSyncWork$1(),\n markRetryLaneIfNotHydrated(fiber, 2);\n }\n fiber = findInstanceBlockingEvent(nativeEvent);\n null === fiber &&\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n return_targetInst,\n targetContainer\n );\n if (fiber === blockedOn) break;\n blockedOn = fiber;\n }\n null !== blockedOn && nativeEvent.stopPropagation();\n } else\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n null,\n targetContainer\n );\n }\n}\nfunction findInstanceBlockingEvent(nativeEvent) {\n nativeEvent = getEventTarget(nativeEvent);\n return findInstanceBlockingTarget(nativeEvent);\n}\nvar return_targetInst = null;\nfunction findInstanceBlockingTarget(targetNode) {\n return_targetInst = null;\n targetNode = getClosestInstanceFromNode(targetNode);\n if (null !== targetNode) {\n var nearestMounted = getNearestMountedFiber(targetNode);\n if (null === nearestMounted) targetNode = null;\n else {\n var tag = nearestMounted.tag;\n if (13 === tag) {\n targetNode = getSuspenseInstanceFromFiber(nearestMounted);\n if (null !== targetNode) return targetNode;\n targetNode = null;\n } else if (31 === tag) {\n targetNode = getActivityInstanceFromFiber(nearestMounted);\n if (null !== targetNode) return targetNode;\n targetNode = null;\n } else if (3 === tag) {\n if (nearestMounted.stateNode.current.memoizedState.isDehydrated)\n return 3 === nearestMounted.tag\n ? nearestMounted.stateNode.containerInfo\n : null;\n targetNode = null;\n } else nearestMounted !== targetNode && (targetNode = null);\n }\n }\n return_targetInst = targetNode;\n return null;\n}\nfunction getEventPriority(domEventName) {\n switch (domEventName) {\n case \"beforetoggle\":\n case \"cancel\":\n case \"click\":\n case \"close\":\n case \"contextmenu\":\n case \"copy\":\n case \"cut\":\n case \"auxclick\":\n case \"dblclick\":\n case \"dragend\":\n case \"dragstart\":\n case \"drop\":\n case \"focusin\":\n case \"focusout\":\n case \"input\":\n case \"invalid\":\n case \"keydown\":\n case \"keypress\":\n case \"keyup\":\n case \"mousedown\":\n case \"mouseup\":\n case \"paste\":\n case \"pause\":\n case \"play\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointerup\":\n case \"ratechange\":\n case \"reset\":\n case \"seeked\":\n case \"submit\":\n case \"toggle\":\n case \"touchcancel\":\n case \"touchend\":\n case \"touchstart\":\n case \"volumechange\":\n case \"change\":\n case \"selectionchange\":\n case \"textInput\":\n case \"compositionstart\":\n case \"compositionend\":\n case \"compositionupdate\":\n case \"beforeblur\":\n case \"afterblur\":\n case \"beforeinput\":\n case \"blur\":\n case \"fullscreenchange\":\n case \"fullscreenerror\":\n case \"focus\":\n case \"hashchange\":\n case \"popstate\":\n case \"select\":\n case \"selectstart\":\n return 2;\n case \"drag\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"mousemove\":\n case \"mouseout\":\n case \"mouseover\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"resize\":\n case \"scroll\":\n case \"touchmove\":\n case \"wheel\":\n case \"mouseenter\":\n case \"mouseleave\":\n case \"pointerenter\":\n case \"pointerleave\":\n return 8;\n case \"message\":\n switch (getCurrentPriorityLevel()) {\n case ImmediatePriority:\n return 2;\n case UserBlockingPriority:\n return 8;\n case NormalPriority$1:\n case LowPriority:\n return 32;\n case IdlePriority:\n return 268435456;\n default:\n return 32;\n }\n default:\n return 32;\n }\n}\nvar hasScheduledReplayAttempt = !1,\n queuedFocus = null,\n queuedDrag = null,\n queuedMouse = null,\n queuedPointers = new Map(),\n queuedPointerCaptures = new Map(),\n queuedExplicitHydrationTargets = [],\n discreteReplayableEvents =\n \"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset\".split(\n \" \"\n );\nfunction clearIfContinuousEvent(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"focusin\":\n case \"focusout\":\n queuedFocus = null;\n break;\n case \"dragenter\":\n case \"dragleave\":\n queuedDrag = null;\n break;\n case \"mouseover\":\n case \"mouseout\":\n queuedMouse = null;\n break;\n case \"pointerover\":\n case \"pointerout\":\n queuedPointers.delete(nativeEvent.pointerId);\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n queuedPointerCaptures.delete(nativeEvent.pointerId);\n }\n}\nfunction accumulateOrCreateContinuousQueuedReplayableEvent(\n existingQueuedEvent,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n if (\n null === existingQueuedEvent ||\n existingQueuedEvent.nativeEvent !== nativeEvent\n )\n return (\n (existingQueuedEvent = {\n blockedOn: blockedOn,\n domEventName: domEventName,\n eventSystemFlags: eventSystemFlags,\n nativeEvent: nativeEvent,\n targetContainers: [targetContainer]\n }),\n null !== blockedOn &&\n ((blockedOn = getInstanceFromNode(blockedOn)),\n null !== blockedOn && attemptContinuousHydration(blockedOn)),\n existingQueuedEvent\n );\n existingQueuedEvent.eventSystemFlags |= eventSystemFlags;\n blockedOn = existingQueuedEvent.targetContainers;\n null !== targetContainer &&\n -1 === blockedOn.indexOf(targetContainer) &&\n blockedOn.push(targetContainer);\n return existingQueuedEvent;\n}\nfunction queueIfContinuousEvent(\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n switch (domEventName) {\n case \"focusin\":\n return (\n (queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedFocus,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"dragenter\":\n return (\n (queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedDrag,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"mouseover\":\n return (\n (queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedMouse,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"pointerover\":\n var pointerId = nativeEvent.pointerId;\n queuedPointers.set(\n pointerId,\n accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedPointers.get(pointerId) || null,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n );\n return !0;\n case \"gotpointercapture\":\n return (\n (pointerId = nativeEvent.pointerId),\n queuedPointerCaptures.set(\n pointerId,\n accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedPointerCaptures.get(pointerId) || null,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n ),\n !0\n );\n }\n return !1;\n}\nfunction attemptExplicitHydrationTarget(queuedTarget) {\n var targetInst = getClosestInstanceFromNode(queuedTarget.target);\n if (null !== targetInst) {\n var nearestMounted = getNearestMountedFiber(targetInst);\n if (null !== nearestMounted)\n if (((targetInst = nearestMounted.tag), 13 === targetInst)) {\n if (\n ((targetInst = getSuspenseInstanceFromFiber(nearestMounted)),\n null !== targetInst)\n ) {\n queuedTarget.blockedOn = targetInst;\n runWithPriority(queuedTarget.priority, function () {\n attemptHydrationAtCurrentPriority(nearestMounted);\n });\n return;\n }\n } else if (31 === targetInst) {\n if (\n ((targetInst = getActivityInstanceFromFiber(nearestMounted)),\n null !== targetInst)\n ) {\n queuedTarget.blockedOn = targetInst;\n runWithPriority(queuedTarget.priority, function () {\n attemptHydrationAtCurrentPriority(nearestMounted);\n });\n return;\n }\n } else if (\n 3 === targetInst &&\n nearestMounted.stateNode.current.memoizedState.isDehydrated\n ) {\n queuedTarget.blockedOn =\n 3 === nearestMounted.tag\n ? nearestMounted.stateNode.containerInfo\n : null;\n return;\n }\n }\n queuedTarget.blockedOn = null;\n}\nfunction attemptReplayContinuousQueuedEvent(queuedEvent) {\n if (null !== queuedEvent.blockedOn) return !1;\n for (\n var targetContainers = queuedEvent.targetContainers;\n 0 < targetContainers.length;\n\n ) {\n var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.nativeEvent);\n if (null === nextBlockedOn) {\n nextBlockedOn = queuedEvent.nativeEvent;\n var nativeEventClone = new nextBlockedOn.constructor(\n nextBlockedOn.type,\n nextBlockedOn\n );\n currentReplayingEvent = nativeEventClone;\n nextBlockedOn.target.dispatchEvent(nativeEventClone);\n currentReplayingEvent = null;\n } else\n return (\n (targetContainers = getInstanceFromNode(nextBlockedOn)),\n null !== targetContainers &&\n attemptContinuousHydration(targetContainers),\n (queuedEvent.blockedOn = nextBlockedOn),\n !1\n );\n targetContainers.shift();\n }\n return !0;\n}\nfunction attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {\n attemptReplayContinuousQueuedEvent(queuedEvent) && map.delete(key);\n}\nfunction replayUnblockedEvents() {\n hasScheduledReplayAttempt = !1;\n null !== queuedFocus &&\n attemptReplayContinuousQueuedEvent(queuedFocus) &&\n (queuedFocus = null);\n null !== queuedDrag &&\n attemptReplayContinuousQueuedEvent(queuedDrag) &&\n (queuedDrag = null);\n null !== queuedMouse &&\n attemptReplayContinuousQueuedEvent(queuedMouse) &&\n (queuedMouse = null);\n queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);\n queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);\n}\nfunction scheduleCallbackIfUnblocked(queuedEvent, unblocked) {\n queuedEvent.blockedOn === unblocked &&\n ((queuedEvent.blockedOn = null),\n hasScheduledReplayAttempt ||\n ((hasScheduledReplayAttempt = !0),\n Scheduler.unstable_scheduleCallback(\n Scheduler.unstable_NormalPriority,\n replayUnblockedEvents\n )));\n}\nvar lastScheduledReplayQueue = null;\nfunction scheduleReplayQueueIfNeeded(formReplayingQueue) {\n lastScheduledReplayQueue !== formReplayingQueue &&\n ((lastScheduledReplayQueue = formReplayingQueue),\n Scheduler.unstable_scheduleCallback(\n Scheduler.unstable_NormalPriority,\n function () {\n lastScheduledReplayQueue === formReplayingQueue &&\n (lastScheduledReplayQueue = null);\n for (var i = 0; i < formReplayingQueue.length; i += 3) {\n var form = formReplayingQueue[i],\n submitterOrAction = formReplayingQueue[i + 1],\n formData = formReplayingQueue[i + 2];\n if (\"function\" !== typeof submitterOrAction)\n if (null === findInstanceBlockingTarget(submitterOrAction || form))\n continue;\n else break;\n var formInst = getInstanceFromNode(form);\n null !== formInst &&\n (formReplayingQueue.splice(i, 3),\n (i -= 3),\n startHostTransition(\n formInst,\n {\n pending: !0,\n data: formData,\n method: form.method,\n action: submitterOrAction\n },\n submitterOrAction,\n formData\n ));\n }\n }\n ));\n}\nfunction retryIfBlockedOn(unblocked) {\n function unblock(queuedEvent) {\n return scheduleCallbackIfUnblocked(queuedEvent, unblocked);\n }\n null !== queuedFocus && scheduleCallbackIfUnblocked(queuedFocus, unblocked);\n null !== queuedDrag && scheduleCallbackIfUnblocked(queuedDrag, unblocked);\n null !== queuedMouse && scheduleCallbackIfUnblocked(queuedMouse, unblocked);\n queuedPointers.forEach(unblock);\n queuedPointerCaptures.forEach(unblock);\n for (var i = 0; i < queuedExplicitHydrationTargets.length; i++) {\n var queuedTarget = queuedExplicitHydrationTargets[i];\n queuedTarget.blockedOn === unblocked && (queuedTarget.blockedOn = null);\n }\n for (\n ;\n 0 < queuedExplicitHydrationTargets.length &&\n ((i = queuedExplicitHydrationTargets[0]), null === i.blockedOn);\n\n )\n attemptExplicitHydrationTarget(i),\n null === i.blockedOn && queuedExplicitHydrationTargets.shift();\n i = (unblocked.ownerDocument || unblocked).$$reactFormReplay;\n if (null != i)\n for (queuedTarget = 0; queuedTarget < i.length; queuedTarget += 3) {\n var form = i[queuedTarget],\n submitterOrAction = i[queuedTarget + 1],\n formProps = form[internalPropsKey] || null;\n if (\"function\" === typeof submitterOrAction)\n formProps || scheduleReplayQueueIfNeeded(i);\n else if (formProps) {\n var action = null;\n if (submitterOrAction && submitterOrAction.hasAttribute(\"formAction\"))\n if (\n ((form = submitterOrAction),\n (formProps = submitterOrAction[internalPropsKey] || null))\n )\n action = formProps.formAction;\n else {\n if (null !== findInstanceBlockingTarget(form)) continue;\n }\n else action = formProps.action;\n \"function\" === typeof action\n ? (i[queuedTarget + 1] = action)\n : (i.splice(queuedTarget, 3), (queuedTarget -= 3));\n scheduleReplayQueueIfNeeded(i);\n }\n }\n}\nfunction defaultOnDefaultTransitionIndicator() {\n function handleNavigate(event) {\n event.canIntercept &&\n \"react-transition\" === event.info &&\n event.intercept({\n handler: function () {\n return new Promise(function (resolve) {\n return (pendingResolve = resolve);\n });\n },\n focusReset: \"manual\",\n scroll: \"manual\"\n });\n }\n function handleNavigateComplete() {\n null !== pendingResolve && (pendingResolve(), (pendingResolve = null));\n isCancelled || setTimeout(startFakeNavigation, 20);\n }\n function startFakeNavigation() {\n if (!isCancelled && !navigation.transition) {\n var currentEntry = navigation.currentEntry;\n currentEntry &&\n null != currentEntry.url &&\n navigation.navigate(currentEntry.url, {\n state: currentEntry.getState(),\n info: \"react-transition\",\n history: \"replace\"\n });\n }\n }\n if (\"object\" === typeof navigation) {\n var isCancelled = !1,\n pendingResolve = null;\n navigation.addEventListener(\"navigate\", handleNavigate);\n navigation.addEventListener(\"navigatesuccess\", handleNavigateComplete);\n navigation.addEventListener(\"navigateerror\", handleNavigateComplete);\n setTimeout(startFakeNavigation, 100);\n return function () {\n isCancelled = !0;\n navigation.removeEventListener(\"navigate\", handleNavigate);\n navigation.removeEventListener(\"navigatesuccess\", handleNavigateComplete);\n navigation.removeEventListener(\"navigateerror\", handleNavigateComplete);\n null !== pendingResolve && (pendingResolve(), (pendingResolve = null));\n };\n }\n}\nfunction ReactDOMRoot(internalRoot) {\n this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render =\n function (children) {\n var root = this._internalRoot;\n if (null === root) throw Error(formatProdErrorMessage(409));\n var current = root.current,\n lane = requestUpdateLane();\n updateContainerImpl(current, lane, children, root, null, null);\n };\nReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount =\n function () {\n var root = this._internalRoot;\n if (null !== root) {\n this._internalRoot = null;\n var container = root.containerInfo;\n updateContainerImpl(root.current, 2, null, root, null, null);\n flushSyncWork$1();\n container[internalContainerInstanceKey] = null;\n }\n };\nfunction ReactDOMHydrationRoot(internalRoot) {\n this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {\n if (target) {\n var updatePriority = resolveUpdatePriority();\n target = { blockedOn: null, target: target, priority: updatePriority };\n for (\n var i = 0;\n i < queuedExplicitHydrationTargets.length &&\n 0 !== updatePriority &&\n updatePriority < queuedExplicitHydrationTargets[i].priority;\n i++\n );\n queuedExplicitHydrationTargets.splice(i, 0, target);\n 0 === i && attemptExplicitHydrationTarget(target);\n }\n};\nvar isomorphicReactPackageVersion$jscomp$inline_2043 = React.version;\nif (\n \"19.3.0\" !==\n isomorphicReactPackageVersion$jscomp$inline_2043\n)\n throw Error(\n formatProdErrorMessage(\n 527,\n isomorphicReactPackageVersion$jscomp$inline_2043,\n \"19.3.0\"\n )\n );\nReactDOMSharedInternals.findDOMNode = function (componentOrElement) {\n var fiber = componentOrElement._reactInternals;\n if (void 0 === fiber) {\n if (\"function\" === typeof componentOrElement.render)\n throw Error(formatProdErrorMessage(188));\n componentOrElement = Object.keys(componentOrElement).join(\",\");\n throw Error(formatProdErrorMessage(268, componentOrElement));\n }\n componentOrElement = findCurrentFiberUsingSlowPath(fiber);\n componentOrElement =\n null !== componentOrElement\n ? findCurrentHostFiberImpl(componentOrElement)\n : null;\n componentOrElement =\n null === componentOrElement ? null : componentOrElement.stateNode;\n return componentOrElement;\n};\nvar internals$jscomp$inline_2586 = {\n bundleType: 0,\n version: \"19.3.0\",\n rendererPackageName: \"react-dom\",\n currentDispatcherRef: ReactSharedInternals,\n reconcilerVersion: \"19.3.0\"\n};\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n var hook$jscomp$inline_2587 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (\n !hook$jscomp$inline_2587.isDisabled &&\n hook$jscomp$inline_2587.supportsFiber\n )\n try {\n (rendererID = hook$jscomp$inline_2587.inject(\n internals$jscomp$inline_2586\n )),\n (injectedHook = hook$jscomp$inline_2587);\n } catch (err) {}\n}\nexports.createRoot = function (container, options) {\n if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n var isStrictMode = !1,\n identifierPrefix = \"\",\n onUncaughtError = defaultOnUncaughtError,\n onCaughtError = defaultOnCaughtError,\n onRecoverableError = defaultOnRecoverableError;\n null !== options &&\n void 0 !== options &&\n (!0 === options.unstable_strictMode && (isStrictMode = !0),\n void 0 !== options.identifierPrefix &&\n (identifierPrefix = options.identifierPrefix),\n void 0 !== options.onUncaughtError &&\n (onUncaughtError = options.onUncaughtError),\n void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n void 0 !== options.onRecoverableError &&\n (onRecoverableError = options.onRecoverableError));\n options = createFiberRoot(\n container,\n 1,\n !1,\n null,\n null,\n isStrictMode,\n identifierPrefix,\n null,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n defaultOnDefaultTransitionIndicator\n );\n container[internalContainerInstanceKey] = options.current;\n listenToAllSupportedEvents(container);\n return new ReactDOMRoot(options);\n};\nexports.hydrateRoot = function (container, initialChildren, options) {\n if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n var isStrictMode = !1,\n identifierPrefix = \"\",\n onUncaughtError = defaultOnUncaughtError,\n onCaughtError = defaultOnCaughtError,\n onRecoverableError = defaultOnRecoverableError,\n formState = null;\n null !== options &&\n void 0 !== options &&\n (!0 === options.unstable_strictMode && (isStrictMode = !0),\n void 0 !== options.identifierPrefix &&\n (identifierPrefix = options.identifierPrefix),\n void 0 !== options.onUncaughtError &&\n (onUncaughtError = options.onUncaughtError),\n void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n void 0 !== options.onRecoverableError &&\n (onRecoverableError = options.onRecoverableError),\n void 0 !== options.formState && (formState = options.formState));\n initialChildren = createFiberRoot(\n container,\n 1,\n !0,\n initialChildren,\n null != options ? options : null,\n isStrictMode,\n identifierPrefix,\n formState,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n defaultOnDefaultTransitionIndicator\n );\n initialChildren.context = getContextForSubtree(null);\n options = initialChildren.current;\n isStrictMode = requestUpdateLane();\n isStrictMode = getBumpedLaneForHydrationByLane(isStrictMode);\n identifierPrefix = createUpdate(isStrictMode);\n identifierPrefix.callback = null;\n enqueueUpdate(options, identifierPrefix, isStrictMode);\n options = isStrictMode;\n initialChildren.current.lanes = options;\n markRootUpdated$1(initialChildren, options);\n ensureRootIsScheduled(initialChildren);\n container[internalContainerInstanceKey] = initialChildren.current;\n listenToAllSupportedEvents(container);\n return new ReactDOMHydrationRoot(initialChildren);\n};\nexports.version = \"19.3.0\";\n",
|
|
11
|
+
"/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n",
|
|
12
|
+
"\"use client\";\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/QueryClientProvider.tsx\n/**\n* The context that `useQueryClient` reads from. `QueryClientProvider` is the normal way to set it.\n*/\nconst QueryClientContext = React.createContext(void 0);\n/**\n* The `useQueryClient` hook returns the current `QueryClient` instance.\n*\n* @param queryClient - Use this to use a custom `QueryClient`. Otherwise, the one from the nearest context will\n* be used.\n* @returns The current `QueryClient` instance.\n* @throws If no `queryClient` argument is passed and no `QueryClientProvider` is found in the component tree.\n*/\nconst useQueryClient = (queryClient) => {\n\tconst client = React.useContext(QueryClientContext);\n\tif (queryClient) return queryClient;\n\tif (!client) throw new Error(\"No QueryClient set, use QueryClientProvider to set one\");\n\treturn client;\n};\n/**\n* Use the `QueryClientProvider` component to connect and provide a `QueryClient` to your application. Also\n* calls `client.mount()`/`client.unmount()` as this component mounts/unmounts, which subscribes the client to\n* focus/online events (resuming any paused mutations and refetching as needed when the app regains focus or\n* comes back online).\n*\n* @returns The provided `children`, wrapped so they can read the `QueryClient` via `useQueryClient`.\n*\n* @example\n* ```tsx\n* import { QueryClient, QueryClientProvider } from '@tanstack/react-query'\n*\n* const queryClient = new QueryClient()\n*\n* function App() {\n* return <QueryClientProvider client={queryClient}>...</QueryClientProvider>\n* }\n* ```\n*/\nconst QueryClientProvider = ({ client, children }) => {\n\tReact.useEffect(() => {\n\t\tclient.mount();\n\t\treturn () => {\n\t\t\tclient.unmount();\n\t\t};\n\t}, [client]);\n\treturn /* @__PURE__ */ jsx(QueryClientContext.Provider, {\n\t\tvalue: client,\n\t\tchildren\n\t});\n};\n//#endregion\nexport { QueryClientContext, QueryClientProvider, useQueryClient };\n\n//# sourceMappingURL=QueryClientProvider.js.map",
|
|
13
|
+
"\"use client\";\nimport * as React from \"react\";\n//#region src/IsRestoringProvider.ts\nconst IsRestoringContext = React.createContext(false);\n/**\n* If you are using `PersistQueryClientProvider`, you can also use the `useIsRestoring` hook alongside it to\n* check if a restore is currently in progress. `useQuery` and friends also check this internally to avoid\n* race conditions between the restore and mounting queries.\n*\n* @returns `true` while a persisted client is being restored, `false` otherwise.\n*/\nconst useIsRestoring = () => React.useContext(IsRestoringContext);\n/**\n* The Provider that `PersistQueryClientProvider` uses to signal whether a persisted client is currently\n* being restored, read by `useIsRestoring`.\n*/\nconst IsRestoringProvider = IsRestoringContext.Provider;\n//#endregion\nexport { IsRestoringProvider, useIsRestoring };\n\n//# sourceMappingURL=IsRestoringProvider.js.map",
|
|
14
|
+
"\"use client\";\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/QueryErrorResetBoundary.tsx\n/**\n* Resets any query errors within the boundary, so queries know they can try again.\n*/\nfunction createValue() {\n\tlet isReset = false;\n\treturn {\n\t\t/**\n\t\t* Clears the reset state, so queries know not to try again until the boundary is reset again.\n\t\t*/\n\t\tclearReset: () => {\n\t\t\tisReset = false;\n\t\t},\n\t\t/**\n\t\t* Resets any query errors within the boundary, so queries know they can try again.\n\t\t*/\n\t\treset: () => {\n\t\t\tisReset = true;\n\t\t},\n\t\t/**\n\t\t* Returns whether the boundary has been reset and not yet cleared.\n\t\t*/\n\t\tisReset: () => {\n\t\t\treturn isReset;\n\t\t}\n\t};\n}\nconst QueryErrorResetBoundaryContext = React.createContext(createValue());\n/**\n* This hook will reset any query errors within the closest `QueryErrorResetBoundary`. If there is no boundary\n* defined it will reset them globally.\n*\n* @returns The boundary's {@link QueryErrorResetBoundaryValue}.\n*\n* @example\n* ```tsx\n* import { ErrorBoundary } from 'react-error-boundary'\n* import { useQueryErrorResetBoundary } from '@tanstack/react-query'\n*\n* function App({ children }: { children: React.ReactNode }) {\n* const { reset } = useQueryErrorResetBoundary()\n*\n* return (\n* <ErrorBoundary\n* onReset={reset}\n* fallbackRender={({ resetErrorBoundary }) => (\n* <div>\n* There was an error!\n* <button onClick={() => resetErrorBoundary()}>Try again</button>\n* </div>\n* )}\n* >\n* {children}\n* </ErrorBoundary>\n* )\n* }\n* ```\n*/\nconst useQueryErrorResetBoundary = () => React.useContext(QueryErrorResetBoundaryContext);\n/**\n* When using `suspense` or `throwOnError` in your queries, you need a way to let queries know that you want to\n* try again when re-rendering after some error occurred. With the `QueryErrorResetBoundary` component you can\n* reset any query errors within the boundaries of the component.\n*\n* @returns The `children`, rendered as-is, or called with the boundary's {@link QueryErrorResetBoundaryValue}\n* if `children` is a function.\n*\n* @example\n* ```tsx\n* import { ErrorBoundary } from 'react-error-boundary'\n* import { QueryErrorResetBoundary } from '@tanstack/react-query'\n*\n* function App() {\n* return (\n* <QueryErrorResetBoundary>\n* {({ reset }) => (\n* <ErrorBoundary\n* onReset={reset}\n* fallbackRender={({ resetErrorBoundary }) => (\n* <div>\n* There was an error!\n* <button onClick={() => resetErrorBoundary()}>Try again</button>\n* </div>\n* )}\n* >\n* <Page />\n* </ErrorBoundary>\n* )}\n* </QueryErrorResetBoundary>\n* )\n* }\n* ```\n*/\nconst QueryErrorResetBoundary = ({ children }) => {\n\tconst [value] = React.useState(() => createValue());\n\treturn /* @__PURE__ */ jsx(QueryErrorResetBoundaryContext.Provider, {\n\t\tvalue,\n\t\tchildren: typeof children === \"function\" ? children(value) : children\n\t});\n};\n//#endregion\nexport { QueryErrorResetBoundary, useQueryErrorResetBoundary };\n\n//# sourceMappingURL=QueryErrorResetBoundary.js.map",
|
|
15
|
+
"//#region src/timeoutManager.ts\nconst defaultTimeoutProvider = {\n\tsetTimeout: (callback, delay) => setTimeout(callback, delay),\n\tclearTimeout: (timeoutId) => clearTimeout(timeoutId),\n\tsetInterval: (callback, delay) => setInterval(callback, delay),\n\tclearInterval: (intervalId) => clearInterval(intervalId)\n};\n/**\n* Allows customization of how timeouts are created.\n*\n* @tanstack/query-core makes liberal use of timeouts to implement `staleTime`\n* and `gcTime`. The default TimeoutManager provider uses the platform's global\n* `setTimeout` implementation, which is known to have scalability issues with\n* thousands of timeouts on the event loop.\n*\n* If you hit this limitation, consider providing a custom TimeoutProvider that\n* coalesces timeouts.\n*/\nvar TimeoutManager = class {\n\t#provider = defaultTimeoutProvider;\n\t#providerCalled = false;\n\t/**\n\t* `setTimeoutProvider` can be used to set a custom implementation of the\n\t* `setTimeout`, `clearTimeout`, `setInterval`, `clearInterval` functions,\n\t* called a `TimeoutProvider`.\n\t*\n\t* This may be useful if you notice event loop performance issues with\n\t* thousands of queries. A custom TimeoutProvider could also support timer\n\t* delays longer than the global `setTimeout` maximum delay value of about\n\t* 24 days.\n\t*\n\t* It is important to call `setTimeoutProvider` before creating a\n\t* QueryClient or queries, so that the same provider is used consistently\n\t* for all timers in the application, since different TimeoutProviders\n\t* cannot cancel each others' timers.\n\t*\n\t* @example\n\t* ```ts\n\t* import { timeoutManager, QueryClient } from '@tanstack/query-core'\n\t* import { CustomTimeoutProvider } from './CustomTimeoutProvider'\n\t*\n\t* timeoutManager.setTimeoutProvider(new CustomTimeoutProvider())\n\t*\n\t* export const queryClient = new QueryClient()\n\t* ```\n\t*/\n\tsetTimeoutProvider(provider) {\n\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\tif (this.#providerCalled && provider !== this.#provider) console.error(`[timeoutManager]: Switching provider after calls to previous provider might result in unexpected behavior.`, {\n\t\t\t\tprevious: this.#provider,\n\t\t\t\tprovider\n\t\t\t});\n\t\t}\n\t\tthis.#provider = provider;\n\t\tif (process.env.NODE_ENV !== \"production\") this.#providerCalled = false;\n\t}\n\t/**\n\t* `setTimeout` schedules a callback to run after approximately `delay`\n\t* milliseconds, like the global `setTimeout` function. The callback can be\n\t* canceled with `clearTimeout`.\n\t*\n\t* It returns a timer ID, which may be a number or an object that can be\n\t* coerced to a number via `Symbol.toPrimitive`.\n\t*\n\t* @example\n\t* ```ts\n\t* import { timeoutManager } from '@tanstack/query-core'\n\t*\n\t* const timeoutId = timeoutManager.setTimeout(\n\t* () => console.log('ran at:', new Date()),\n\t* 1000,\n\t* )\n\t*\n\t* const timeoutIdNumber: number = Number(timeoutId)\n\t* ```\n\t*/\n\tsetTimeout(callback, delay) {\n\t\tif (process.env.NODE_ENV !== \"production\") this.#providerCalled = true;\n\t\treturn this.#provider.setTimeout(callback, delay);\n\t}\n\t/**\n\t* `clearTimeout` cancels a timeout callback scheduled with `setTimeout`,\n\t* like the global `clearTimeout` function. It should be called with a\n\t* timer ID returned by `setTimeout`.\n\t*\n\t* @example\n\t* ```ts\n\t* import { timeoutManager } from '@tanstack/query-core'\n\t*\n\t* const timeoutId = timeoutManager.setTimeout(\n\t* () => console.log('ran at:', new Date()),\n\t* 1000,\n\t* )\n\t*\n\t* timeoutManager.clearTimeout(timeoutId)\n\t* ```\n\t*/\n\tclearTimeout(timeoutId) {\n\t\tthis.#provider.clearTimeout(timeoutId);\n\t}\n\t/**\n\t* `setInterval` schedules a callback to be called approximately every\n\t* `delay` milliseconds, like the global `setInterval` function.\n\t*\n\t* Like `setTimeout`, it returns a timer ID, which may be a number or an\n\t* object that can be coerced to a number via `Symbol.toPrimitive`.\n\t*\n\t* @example\n\t* ```ts\n\t* import { timeoutManager } from '@tanstack/query-core'\n\t*\n\t* const intervalId = timeoutManager.setInterval(\n\t* () => console.log('ran at:', new Date()),\n\t* 1000,\n\t* )\n\t* ```\n\t*/\n\tsetInterval(callback, delay) {\n\t\tif (process.env.NODE_ENV !== \"production\") this.#providerCalled = true;\n\t\treturn this.#provider.setInterval(callback, delay);\n\t}\n\t/**\n\t* `clearInterval` can be used to cancel an interval, like the global\n\t* `clearInterval` function. It should be called with an interval ID\n\t* returned by `setInterval`.\n\t*\n\t* @example\n\t* ```ts\n\t* import { timeoutManager } from '@tanstack/query-core'\n\t*\n\t* const intervalId = timeoutManager.setInterval(\n\t* () => console.log('ran at:', new Date()),\n\t* 1000,\n\t* )\n\t*\n\t* timeoutManager.clearInterval(intervalId)\n\t* ```\n\t*/\n\tclearInterval(intervalId) {\n\t\tthis.#provider.clearInterval(intervalId);\n\t}\n};\n/**\n* Singleton instance of {@link TimeoutManager}, used throughout TanStack Query to schedule and cancel timers.\n*/\nconst timeoutManager = new TimeoutManager();\n/**\n* In many cases code wants to delay to the next event loop tick; this is not\n* mediated by {@link timeoutManager}.\n*\n* This function is provided to make auditing the `tanstack/query-core` for\n* incorrect use of system `setTimeout` easier.\n*/\nfunction systemSetTimeoutZero(callback) {\n\tsetTimeout(callback, 0);\n}\n//#endregion\nexport { TimeoutManager, defaultTimeoutProvider, systemSetTimeoutZero, timeoutManager };\n\n//# sourceMappingURL=timeoutManager.js.map",
|
|
16
|
+
"import { timeoutManager } from \"./timeoutManager.js\";\n//#region src/utils.ts\n/** @deprecated\n* use `environmentManager.isServer()` instead.\n*/\nconst isServer = typeof window === \"undefined\" || \"Deno\" in globalThis;\nfunction noop() {}\nfunction functionalUpdate(updater, input) {\n\treturn typeof updater === \"function\" ? updater(input) : updater;\n}\nfunction isValidTimeout(value) {\n\treturn typeof value === \"number\" && value >= 0 && value !== Infinity;\n}\nfunction timeUntilStale(updatedAt, staleTime) {\n\treturn Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nfunction resolveQueryValue(value, query) {\n\treturn typeof value === \"function\" ? value(query) : value;\n}\n/**\n* Checks whether a query matches the given {@link QueryFilters}.\n* Every filter that is specified must match; filters that are left unspecified are ignored.\n*\n* @example\n* ```ts\n* const queryCache = queryClient.getQueryCache()\n*\n* const matchingQueries = queryCache\n* .getAll()\n* .filter((query) => matchQuery({ queryKey: ['posts'] }, query))\n* ```\n*/\nfunction matchQuery(filters, query) {\n\tconst { type = \"all\", exact, fetchStatus, predicate, queryKey, stale } = filters;\n\tif (queryKey) {\n\t\tif (exact) {\n\t\t\tif (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) return false;\n\t\t} else if (!partialMatchKey(query.queryKey, queryKey)) return false;\n\t}\n\tif (type !== \"all\") {\n\t\tconst isActive = query.isActive();\n\t\tif (type === \"active\" && !isActive) return false;\n\t\tif (type === \"inactive\" && isActive) return false;\n\t}\n\tif (typeof stale === \"boolean\" && query.isStale() !== stale) return false;\n\tif (fetchStatus && fetchStatus !== query.state.fetchStatus) return false;\n\tif (predicate && !predicate(query)) return false;\n\treturn true;\n}\n/**\n* Checks whether a mutation matches the given {@link MutationFilters}.\n* Every filter that is specified must match; filters that are left unspecified are ignored.\n* If a `mutationKey` filter is provided but the mutation has no `mutationKey` of its own, it does not match.\n*\n* @example\n* ```ts\n* const mutationCache = queryClient.getMutationCache()\n*\n* const matchingMutations = mutationCache\n* .getAll()\n* .filter((mutation) => matchMutation({ mutationKey: ['addPost'] }, mutation))\n* ```\n*/\nfunction matchMutation(filters, mutation) {\n\tconst { exact, status, predicate, mutationKey } = filters;\n\tif (mutationKey) {\n\t\tif (!mutation.options.mutationKey) return false;\n\t\tif (exact) {\n\t\t\tif (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) return false;\n\t\t} else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) return false;\n\t}\n\tif (status && mutation.state.status !== status) return false;\n\tif (predicate && !predicate(mutation)) return false;\n\treturn true;\n}\nfunction hashQueryKeyByOptions(queryKey, options) {\n\treturn (options?.queryKeyHashFn || hashKey)(queryKey);\n}\n/**\n* Default query & mutation keys hash function.\n* Hashes the value into a stable hash.\n*\n* @example\n* ```ts\n* // Object keys are sorted, so key order doesn't affect the hash:\n* hashKey(['todos', { page: 1, filter: 'done' }]) // === '[\"todos\",{\"filter\":\"done\",\"page\":1}]'\n* ```\n*/\nfunction hashKey(queryKey) {\n\treturn JSON.stringify(queryKey, (_, val) => isPlainObject(val) ? Object.keys(val).sort().reduce((result, key) => {\n\t\tresult[key] = val[key];\n\t\treturn result;\n\t}, {}) : val);\n}\nfunction partialMatchKey(a, b) {\n\tif (a === b) return true;\n\tif (typeof a !== typeof b) return false;\n\tif (a && b && typeof a === \"object\" && typeof b === \"object\") {\n\t\tif (Array.isArray(a) && Array.isArray(b)) {\n\t\t\tif (b.length > a.length) return false;\n\t\t\tfor (let i = 0; i < b.length; i++) if (!partialMatchKey(a[i], b[i])) return false;\n\t\t\treturn true;\n\t\t}\n\t\tconst bKeys = Object.keys(b);\n\t\tfor (const key of bKeys) if (!partialMatchKey(a[key], b[key])) return false;\n\t\treturn true;\n\t}\n\treturn false;\n}\nconst hasOwn = Object.prototype.hasOwnProperty;\nfunction replaceEqualDeep(a, b, depth = 0) {\n\tif (a === b) return a;\n\tif (depth > 500) return b;\n\tconst array = isPlainArray(a) && isPlainArray(b);\n\tif (!array && !(isPlainObject(a) && isPlainObject(b))) return b;\n\tconst aSize = (array ? a : Object.keys(a)).length;\n\tconst bItems = array ? b : Object.keys(b);\n\tconst bSize = bItems.length;\n\tconst copy = array ? new Array(bSize) : {};\n\tlet equalItems = 0;\n\tfor (let i = 0; i < bSize; i++) {\n\t\tconst key = array ? i : bItems[i];\n\t\tconst aItem = a[key];\n\t\tconst bItem = b[key];\n\t\tif (aItem === bItem) {\n\t\t\tcopy[key] = aItem;\n\t\t\tif (array ? i < aSize : hasOwn.call(a, key)) equalItems++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (aItem === null || bItem === null || typeof aItem !== \"object\" || typeof bItem !== \"object\") {\n\t\t\tcopy[key] = bItem;\n\t\t\tcontinue;\n\t\t}\n\t\tconst v = replaceEqualDeep(aItem, bItem, depth + 1);\n\t\tcopy[key] = v;\n\t\tif (v === aItem) equalItems++;\n\t}\n\treturn aSize === bSize && equalItems === aSize ? a : copy;\n}\n/**\n* Shallow compare objects.\n*/\nfunction shallowEqualObjects(a, b) {\n\tif (!b || Object.keys(a).length !== Object.keys(b).length) return false;\n\tfor (const key in a) if (a[key] !== b[key]) return false;\n\treturn true;\n}\nfunction isPlainArray(value) {\n\treturn Array.isArray(value) && value.length === Object.keys(value).length;\n}\nfunction isPlainObject(o) {\n\tif (!hasObjectPrototype(o)) return false;\n\tconst objectPrototype = Object.getPrototypeOf(o);\n\tconst ctor = objectPrototype?.constructor;\n\tif (ctor === void 0) return true;\n\tif (typeof ctor !== \"function\") return false;\n\tconst prot = ctor.prototype;\n\tif (!hasObjectPrototype(prot)) return false;\n\tif (!prot.hasOwnProperty(\"isPrototypeOf\")) return false;\n\tif (objectPrototype !== Object.prototype) return false;\n\treturn true;\n}\nfunction hasObjectPrototype(o) {\n\treturn Object.prototype.toString.call(o) === \"[object Object]\";\n}\nfunction sleep(timeout) {\n\treturn new Promise((resolve) => {\n\t\ttimeoutManager.setTimeout(resolve, timeout);\n\t});\n}\nfunction replaceData(prevData, data, options) {\n\tif (typeof options.structuralSharing === \"function\") return options.structuralSharing(prevData, data);\n\telse if (options.structuralSharing !== false) {\n\t\tif (process.env.NODE_ENV !== \"production\") try {\n\t\t\treturn replaceEqualDeep(prevData, data);\n\t\t} catch (error) {\n\t\t\tconsole.error(`Structural sharing requires data to be JSON serializable. To fix this, turn off structuralSharing or return JSON-serializable data from your queryFn. [${options.queryHash}]: ${error}`);\n\t\t\tthrow error;\n\t\t}\n\t\treturn replaceEqualDeep(prevData, data);\n\t}\n\treturn data;\n}\n/**\n* Intended to be passed as a query's `placeholderData` option, for example\n* `placeholderData: keepPreviousData`. Instead of resetting the query's data to `undefined` while a new\n* query key is fetching, it keeps displaying the previously fetched data until the new data arrives.\n*\n* @example\n* ```ts\n* new QueryObserver(queryClient, {\n* queryKey: ['posts', page],\n* queryFn: () => fetchPosts(page),\n* placeholderData: keepPreviousData,\n* })\n* ```\n*/\nfunction keepPreviousData(previousData) {\n\treturn previousData;\n}\nfunction addToEnd(items, item, max = 0) {\n\tconst newItems = [...items, item];\n\treturn max && newItems.length > max ? newItems.slice(1) : newItems;\n}\nfunction addToStart(items, item, max = 0) {\n\tconst newItems = [item, ...items];\n\treturn max && newItems.length > max ? newItems.slice(0, -1) : newItems;\n}\n/**\n* Sentinel value that can be passed as a query's `queryFn` to conditionally disable the query (equivalent\n* to `enabled: false`) while preserving full type inference for the query's data. Unlike `enabled: false`,\n* a query disabled via `skipToken` cannot be triggered with `refetch`.\n*\n* @example\n* ```ts\n* new QueryObserver(queryClient, {\n* queryKey: ['post', postId],\n* queryFn: postId != null ? () => fetchPost(postId) : skipToken,\n* })\n* ```\n*/\nconst skipToken = Symbol();\nfunction ensureQueryFn(options, fetchOptions) {\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tif (options.queryFn === skipToken) console.error(`Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`);\n\t}\n\tif (!options.queryFn && fetchOptions?.initialPromise) return () => fetchOptions.initialPromise;\n\tif (!options.queryFn || options.queryFn === skipToken) return () => Promise.reject(/* @__PURE__ */ new Error(`Missing queryFn: '${options.queryHash}'`));\n\treturn options.queryFn;\n}\n/**\n* Resolves a `throwOnError` option to a boolean.\n* If `throwOnError` is a function, it is called with `params` (e.g. the error and, depending on the caller,\n* additional context such as the query or mutation) and its result is returned, allowing the throwing\n* behavior to be decided per error. Otherwise, `throwOnError` itself is coerced to a boolean (`undefined`\n* resolves to `false`).\n*\n* @example\n* ```ts\n* const throwOnError =\n* query.state.error && typeof options.throwOnError === 'function'\n* ? shouldThrowError(options.throwOnError, [query.state.error, query])\n* : options.throwOnError\n* ```\n*/\nfunction shouldThrowError(throwOnError, params) {\n\tif (typeof throwOnError === \"function\") return throwOnError(...params);\n\treturn !!throwOnError;\n}\nfunction addConsumeAwareSignal(object, getSignal, onCancelled) {\n\tlet consumed = false;\n\tlet signal;\n\tObject.defineProperty(object, \"signal\", {\n\t\tenumerable: true,\n\t\tget: () => {\n\t\t\tsignal ??= getSignal();\n\t\t\tif (consumed) return signal;\n\t\t\tconsumed = true;\n\t\t\tif (signal.aborted) onCancelled();\n\t\t\telse signal.addEventListener(\"abort\", onCancelled, { once: true });\n\t\t\treturn signal;\n\t\t}\n\t});\n\treturn object;\n}\n//#endregion\nexport { addConsumeAwareSignal, addToEnd, addToStart, ensureQueryFn, functionalUpdate, hashKey, hashQueryKeyByOptions, isPlainArray, isPlainObject, isServer, isValidTimeout, keepPreviousData, matchMutation, matchQuery, noop, partialMatchKey, replaceData, replaceEqualDeep, resolveQueryValue, shallowEqualObjects, shouldThrowError, skipToken, sleep, timeUntilStale };\n\n//# sourceMappingURL=utils.js.map",
|
|
17
|
+
"import { isServer as isServer$1 } from \"./utils.js\";\n//#region src/environmentManager.ts\nlet isServerFn = () => isServer$1;\n/**\n* Returns whether the current runtime should be treated as a server environment.\n*/\nconst isServer = () => isServerFn();\n/**\n* Manages how TanStack Query detects whether the current runtime should be treated as\n* server-side, which disables scheduling refetch timers and changes the default `retry` count\n* and `gcTime`. By default, the detection treats a missing `window` (or the presence of a\n* `Deno` global) as server.\n*\n* Override this for runtimes where that default detection would give the wrong answer — for\n* example, a Service Worker, where `window` is undefined even though the environment should\n* behave like a client.\n*\n* @example\n* ```ts\n* import { environmentManager } from '@tanstack/query-core'\n*\n* environmentManager.setIsServer(() => false)\n* ```\n*/\nconst environmentManager = {\n\tisServer,\n\t/**\n\t* Overrides the server check globally.\n\t*/\n\tsetIsServer(isServerValue) {\n\t\tisServerFn = isServerValue;\n\t}\n};\n//#endregion\nexport { environmentManager, isServer };\n\n//# sourceMappingURL=environmentManager.js.map",
|
|
18
|
+
"//#region src/subscribable.ts\nvar Subscribable = class {\n\tconstructor() {\n\t\tthis.listeners = /* @__PURE__ */ new Set();\n\t\tthis.subscribe = this.subscribe.bind(this);\n\t}\n\tsubscribe(listener) {\n\t\tthis.listeners.add(listener);\n\t\tthis.onSubscribe();\n\t\treturn () => {\n\t\t\tthis.listeners.delete(listener);\n\t\t\tthis.onUnsubscribe();\n\t\t};\n\t}\n\thasListeners() {\n\t\treturn this.listeners.size > 0;\n\t}\n\tonSubscribe() {}\n\tonUnsubscribe() {}\n};\n//#endregion\nexport { Subscribable };\n\n//# sourceMappingURL=subscribable.js.map",
|
|
19
|
+
"import { Subscribable } from \"./subscribable.js\";\n//#region src/focusManager.ts\n/**\n* The `FocusManager` manages the focus state within TanStack Query.\n*\n* It can be used to change the default event listeners or to manually change the focus state.\n*/\nvar FocusManager = class extends Subscribable {\n\t#focused;\n\t#cleanup;\n\t#setup;\n\tconstructor() {\n\t\tsuper();\n\t\tthis.#setup = (onFocus) => {\n\t\t\tif (typeof window !== \"undefined\" && window.addEventListener) {\n\t\t\t\tconst listener = () => onFocus();\n\t\t\t\twindow.addEventListener(\"visibilitychange\", listener, false);\n\t\t\t\treturn () => {\n\t\t\t\t\twindow.removeEventListener(\"visibilitychange\", listener);\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t}\n\tonSubscribe() {\n\t\tif (!this.#cleanup) this.setEventListener(this.#setup);\n\t}\n\tonUnsubscribe() {\n\t\tif (!this.hasListeners()) {\n\t\t\tthis.#cleanup?.();\n\t\t\tthis.#cleanup = void 0;\n\t\t}\n\t}\n\t/**\n\t* `setEventListener` can be used to set a custom event listener that will\n\t* be used to determine the focus state. The provided `setup` function\n\t* receives a `setFocused` callback: call it with a `boolean` to manually\n\t* set the focus state, or with no arguments to re-evaluate the current\n\t* focus state and notify subscribers.\n\t*\n\t* @example\n\t* ```ts\n\t* import { focusManager } from '@tanstack/query-core'\n\t*\n\t* focusManager.setEventListener((handleFocus) => {\n\t* const listener = () => handleFocus()\n\t* // Listen to visibilitychange\n\t* if (typeof window !== 'undefined' && window.addEventListener) {\n\t* window.addEventListener('visibilitychange', listener, false)\n\t* }\n\t*\n\t* return () => {\n\t* // Be sure to unsubscribe if a new handler is set\n\t* window.removeEventListener('visibilitychange', listener)\n\t* }\n\t* })\n\t* ```\n\t*/\n\tsetEventListener(setup) {\n\t\tthis.#setup = setup;\n\t\tthis.#cleanup?.();\n\t\tthis.#cleanup = setup((focused) => {\n\t\t\tif (typeof focused === \"boolean\") this.setFocused(focused);\n\t\t\telse this.onFocus();\n\t\t});\n\t}\n\t/**\n\t* `setFocused` can be used to manually set the focus state. Set `undefined`\n\t* to fall back to the default focus check.\n\t*\n\t* @example\n\t* ```ts\n\t* import { focusManager } from '@tanstack/query-core'\n\t*\n\t* // Set focused\n\t* focusManager.setFocused(true)\n\t*\n\t* // Set unfocused\n\t* focusManager.setFocused(false)\n\t*\n\t* // Fallback to the default focus check\n\t* focusManager.setFocused(undefined)\n\t* ```\n\t*/\n\tsetFocused(focused) {\n\t\tif (this.#focused !== focused) {\n\t\t\tthis.#focused = focused;\n\t\t\tthis.onFocus();\n\t\t}\n\t}\n\t/**\n\t* `onFocus` notifies all subscribed listeners with the current focus state.\n\t*/\n\tonFocus() {\n\t\tconst isFocused = this.isFocused();\n\t\tthis.listeners.forEach((listener) => {\n\t\t\tlistener(isFocused);\n\t\t});\n\t}\n\t/**\n\t* `isFocused` can be used to get the current focus state.\n\t*/\n\tisFocused() {\n\t\tif (typeof this.#focused === \"boolean\") return this.#focused;\n\t\treturn globalThis.document?.visibilityState !== \"hidden\";\n\t}\n};\n/**\n* Singleton instance of {@link FocusManager}, used to manage and observe the focus state within TanStack Query.\n*/\nconst focusManager = new FocusManager();\n//#endregion\nexport { FocusManager, focusManager };\n\n//# sourceMappingURL=focusManager.js.map",
|
|
20
|
+
"import { systemSetTimeoutZero } from \"./timeoutManager.js\";\n//#region src/notifyManager.ts\n/**\n* Default scheduling function used by the notify manager.\n* Schedules the callback with the system's `setTimeout(callback, 0)`.\n*/\nconst defaultScheduler = systemSetTimeoutZero;\nfunction createNotifyManager() {\n\tlet queue = [];\n\tlet transactions = 0;\n\tlet notifyFn = (callback) => {\n\t\tcallback();\n\t};\n\tlet batchNotifyFn = (callback) => {\n\t\tcallback();\n\t};\n\tlet scheduleFn = defaultScheduler;\n\tconst schedule = (callback) => {\n\t\tif (transactions) queue.push(callback);\n\t\telse scheduleFn(() => {\n\t\t\tnotifyFn(callback);\n\t\t});\n\t};\n\tconst flush = () => {\n\t\tconst originalQueue = queue;\n\t\tqueue = [];\n\t\tif (originalQueue.length) scheduleFn(() => {\n\t\t\tbatchNotifyFn(() => {\n\t\t\t\toriginalQueue.forEach((callback) => {\n\t\t\t\t\tnotifyFn(callback);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t};\n\treturn {\n\t\t/**\n\t\t* Batches all updates scheduled inside the passed callback.\n\t\t* This is mainly used internally to optimize query client updating.\n\t\t* Batches can be nested; the queue is only flushed once the outermost `batch` call finishes.\n\t\t* The return value of `callback` is passed through.\n\t\t*/\n\t\tbatch: (callback) => {\n\t\t\tlet result;\n\t\t\ttransactions++;\n\t\t\ttry {\n\t\t\t\tresult = callback();\n\t\t\t} finally {\n\t\t\t\ttransactions--;\n\t\t\t\tif (!transactions) flush();\n\t\t\t}\n\t\t\treturn result;\n\t\t},\n\t\t/**\n\t\t* All calls to the wrapped function will be batched.\n\t\t*/\n\t\tbatchCalls: (callback) => {\n\t\t\treturn (...args) => {\n\t\t\t\tschedule(() => {\n\t\t\t\t\tcallback(...args);\n\t\t\t\t});\n\t\t\t};\n\t\t},\n\t\t/**\n\t\t* Schedules a function to be run on the next batch.\n\t\t* By default, the batch is run with a `setTimeout`, but this can be configured via `setScheduler`.\n\t\t*/\n\t\tschedule,\n\t\t/**\n\t\t* Use this method to set a custom notify function.\n\t\t* This can be used to for example wrap notifications with `React.act` while running tests.\n\t\t*/\n\t\tsetNotifyFunction: (fn) => {\n\t\t\tnotifyFn = fn;\n\t\t},\n\t\t/**\n\t\t* Use this method to set a custom function to batch notifications together into a single tick.\n\t\t* Framework adapters use this to plug in their own batching primitive, so that a single query\n\t\t* update only triggers one re-render instead of one per subscriber.\n\t\t*\n\t\t* @example\n\t\t* ```ts\n\t\t* import { notifyManager } from '@tanstack/query-core'\n\t\t* import { batch } from 'solid-js'\n\t\t*\n\t\t* notifyManager.setBatchNotifyFunction(batch)\n\t\t* ```\n\t\t*/\n\t\tsetBatchNotifyFunction: (fn) => {\n\t\t\tbatchNotifyFn = fn;\n\t\t},\n\t\t/**\n\t\t* Configures a custom callback that schedules when the next batch runs.\n\t\t* The default behavior is `setTimeout(callback, 0)`.\n\t\t*\n\t\t* @example\n\t\t* ```ts\n\t\t* import { notifyManager } from '@tanstack/query-core'\n\t\t*\n\t\t* // Schedule batches in the next microtask\n\t\t* notifyManager.setScheduler(queueMicrotask)\n\t\t*\n\t\t* // Schedule batches before the next frame is rendered\n\t\t* notifyManager.setScheduler(requestAnimationFrame)\n\t\t*\n\t\t* // Schedule batches some time in the future\n\t\t* notifyManager.setScheduler((cb) => setTimeout(cb, 10))\n\t\t* ```\n\t\t*/\n\t\tsetScheduler: (fn) => {\n\t\t\tscheduleFn = fn;\n\t\t}\n\t};\n}\n/**\n* Handles scheduling and batching callbacks in TanStack Query.\n*/\nconst notifyManager = createNotifyManager();\n//#endregion\nexport { createNotifyManager, defaultScheduler, notifyManager };\n\n//# sourceMappingURL=notifyManager.js.map",
|
|
21
|
+
"import { Subscribable } from \"./subscribable.js\";\n//#region src/onlineManager.ts\n/**\n* The `OnlineManager` manages the online state within TanStack Query. It can\n* be used to change the default event listeners or to manually change the\n* online state.\n*\n* By default, the `onlineManager` assumes an active network connection, and\n* listens to the `online` and `offline` events on the `window` object to\n* detect changes.\n*/\nvar OnlineManager = class extends Subscribable {\n\t#online = true;\n\t#cleanup;\n\t#setup;\n\tconstructor() {\n\t\tsuper();\n\t\tthis.#setup = (onOnline) => {\n\t\t\tif (typeof window !== \"undefined\" && window.addEventListener) {\n\t\t\t\tconst onlineListener = () => onOnline(true);\n\t\t\t\tconst offlineListener = () => onOnline(false);\n\t\t\t\twindow.addEventListener(\"online\", onlineListener, false);\n\t\t\t\twindow.addEventListener(\"offline\", offlineListener, false);\n\t\t\t\treturn () => {\n\t\t\t\t\twindow.removeEventListener(\"online\", onlineListener);\n\t\t\t\t\twindow.removeEventListener(\"offline\", offlineListener);\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t}\n\tonSubscribe() {\n\t\tif (!this.#cleanup) this.setEventListener(this.#setup);\n\t}\n\tonUnsubscribe() {\n\t\tif (!this.hasListeners()) {\n\t\t\tthis.#cleanup?.();\n\t\t\tthis.#cleanup = void 0;\n\t\t}\n\t}\n\t/**\n\t* `setEventListener` can be used to set a custom event listener that will\n\t* be used to determine the online state. The provided `setup` function\n\t* receives a `setOnline` callback that should be called with a `boolean`\n\t* whenever the online state changes.\n\t*\n\t* @example\n\t* ```ts\n\t* import NetInfo from '@react-native-community/netinfo'\n\t* import { onlineManager } from '@tanstack/query-core'\n\t*\n\t* onlineManager.setEventListener((setOnline) => {\n\t* return NetInfo.addEventListener((state) => {\n\t* setOnline(!!state.isConnected)\n\t* })\n\t* })\n\t* ```\n\t*/\n\tsetEventListener(setup) {\n\t\tthis.#setup = setup;\n\t\tthis.#cleanup?.();\n\t\tthis.#cleanup = setup(this.setOnline.bind(this));\n\t}\n\t/**\n\t* `setOnline` can be used to manually set the online state.\n\t*\n\t* @example\n\t* ```ts\n\t* import { onlineManager } from '@tanstack/query-core'\n\t*\n\t* // Set to online\n\t* onlineManager.setOnline(true)\n\t*\n\t* // Set to offline\n\t* onlineManager.setOnline(false)\n\t* ```\n\t*/\n\tsetOnline(online) {\n\t\tif (this.#online !== online) {\n\t\t\tthis.#online = online;\n\t\t\tthis.listeners.forEach((listener) => {\n\t\t\t\tlistener(online);\n\t\t\t});\n\t\t}\n\t}\n\t/**\n\t* `isOnline` can be used to get the current online state.\n\t*/\n\tisOnline() {\n\t\treturn this.#online;\n\t}\n};\n/**\n* Singleton instance of {@link OnlineManager}, used to manage and observe the online state within TanStack Query.\n*/\nconst onlineManager = new OnlineManager();\n//#endregion\nexport { OnlineManager, onlineManager };\n\n//# sourceMappingURL=onlineManager.js.map",
|
|
22
|
+
"import { noop, sleep } from \"./utils.js\";\nimport { isServer } from \"./environmentManager.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\n//#region src/retryer.ts\nfunction defaultRetryDelay(failureCount) {\n\treturn Math.min(1e3 * 2 ** failureCount, 3e4);\n}\nfunction canFetch(networkMode) {\n\treturn (networkMode ?? \"online\") === \"online\" ? onlineManager.isOnline() : true;\n}\n/**\n* The error thrown by a `Retryer` (and surfaced to `query.promise`/`mutation`) when a fetch is cancelled, e.g. via\n* `query.cancel()`. `revert`, if `true`, tells the caller to restore the state the query was in before the fetch\n* started instead of surfacing the error. `silent`, if `true`, tells the caller to suppress this error and instead\n* resolve with the promise of the fetch that triggered the cancellation.\n* @example\n* ```ts\n* query.cancel()\n*\n* try {\n* await query.promise\n* } catch (error) {\n* if (error instanceof CancelledError) {\n* // the fetch was cancelled, e.g. via `query.cancel()`\n* }\n* }\n* ```\n*/\nvar CancelledError = class extends Error {\n\tconstructor(options) {\n\t\tsuper(\"CancelledError\");\n\t\tthis.revert = options?.revert;\n\t\tthis.silent = options?.silent;\n\t}\n};\n/**\n* @deprecated Use instanceof `CancelledError` instead.\n*/\nfunction isCancelledError(value) {\n\treturn value instanceof CancelledError;\n}\nfunction createRetryer(config) {\n\tlet isRetryCancelled = false;\n\tlet failureCount = 0;\n\tlet continueFn;\n\tlet status = \"pending\";\n\tlet promiseResolve;\n\tlet promiseReject;\n\tconst promise = new Promise((resolve, reject) => {\n\t\tpromiseResolve = resolve;\n\t\tpromiseReject = reject;\n\t});\n\tpromise.catch(noop);\n\tconst isResolved = () => status !== \"pending\";\n\tconst cancel = (cancelOptions) => {\n\t\tif (!isResolved()) {\n\t\t\tconst error = new CancelledError(cancelOptions);\n\t\t\treject(error);\n\t\t\tconfig.onCancel?.(error);\n\t\t}\n\t};\n\tconst cancelRetry = () => {\n\t\tisRetryCancelled = true;\n\t};\n\tconst continueRetry = () => {\n\t\tisRetryCancelled = false;\n\t};\n\tconst canContinue = () => focusManager.isFocused() && (config.networkMode === \"always\" || onlineManager.isOnline()) && config.canRun();\n\tconst canStart = () => canFetch(config.networkMode) && config.canRun();\n\tconst resolve = (value) => {\n\t\tif (!isResolved()) {\n\t\t\tcontinueFn?.();\n\t\t\tstatus = \"resolved\";\n\t\t\tpromiseResolve(value);\n\t\t}\n\t};\n\tconst reject = (value) => {\n\t\tif (!isResolved()) {\n\t\t\tcontinueFn?.();\n\t\t\tstatus = \"rejected\";\n\t\t\tpromiseReject(value);\n\t\t}\n\t};\n\tconst pause = () => {\n\t\treturn new Promise((continueResolve) => {\n\t\t\tcontinueFn = (value) => {\n\t\t\t\tif (isResolved() || canContinue()) continueResolve(value);\n\t\t\t};\n\t\t\tconfig.onPause?.();\n\t\t}).then(() => {\n\t\t\tcontinueFn = void 0;\n\t\t\tif (!isResolved()) config.onContinue?.();\n\t\t});\n\t};\n\tconst run = () => {\n\t\tif (isResolved()) return;\n\t\tlet promiseOrValue;\n\t\tconst initialPromise = failureCount === 0 ? config.initialPromise : void 0;\n\t\ttry {\n\t\t\tpromiseOrValue = initialPromise ?? config.fn();\n\t\t} catch (error) {\n\t\t\tpromiseOrValue = Promise.reject(error);\n\t\t}\n\t\tPromise.resolve(promiseOrValue).then(resolve).catch((error) => {\n\t\t\tif (isResolved()) return;\n\t\t\tconst retry = config.retry ?? (isServer() ? 0 : 3);\n\t\t\tconst retryDelay = config.retryDelay ?? defaultRetryDelay;\n\t\t\tconst delay = typeof retryDelay === \"function\" ? retryDelay(failureCount, error) : retryDelay;\n\t\t\tconst shouldRetry = retry === true || typeof retry === \"number\" && failureCount < retry || typeof retry === \"function\" && retry(failureCount, error);\n\t\t\tif (isRetryCancelled || !shouldRetry) {\n\t\t\t\treject(error);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfailureCount++;\n\t\t\tconfig.onFail?.(failureCount, error);\n\t\t\tsleep(delay).then(() => {\n\t\t\t\treturn canContinue() ? void 0 : pause();\n\t\t\t}).then(() => {\n\t\t\t\tif (isRetryCancelled) reject(error);\n\t\t\t\telse run();\n\t\t\t});\n\t\t});\n\t};\n\treturn {\n\t\tpromise,\n\t\tstatus: () => status,\n\t\tcancel,\n\t\tcontinue: () => {\n\t\t\tcontinueFn?.();\n\t\t\treturn promise;\n\t\t},\n\t\tcancelRetry,\n\t\tcontinueRetry,\n\t\tcanStart,\n\t\tstart: () => {\n\t\t\tif (canStart()) run();\n\t\t\telse pause().then(run);\n\t\t\treturn promise;\n\t\t}\n\t};\n}\n//#endregion\nexport { CancelledError, canFetch, createRetryer, isCancelledError };\n\n//# sourceMappingURL=retryer.js.map",
|
|
23
|
+
"import { timeoutManager } from \"./timeoutManager.js\";\nimport { isValidTimeout } from \"./utils.js\";\nimport { isServer } from \"./environmentManager.js\";\n//#region src/removable.ts\nvar Removable = class {\n\t#gcTimeout;\n\tdestroy() {\n\t\tthis.clearGcTimeout();\n\t}\n\tscheduleGc() {\n\t\tthis.clearGcTimeout();\n\t\tif (isValidTimeout(this.gcTime)) this.#gcTimeout = timeoutManager.setTimeout(() => {\n\t\t\tthis.optionalRemove();\n\t\t}, this.gcTime);\n\t}\n\tupdateGcTime(newGcTime) {\n\t\tthis.gcTime = Math.max(this.gcTime || 0, newGcTime ?? (isServer() ? Infinity : 3e5));\n\t}\n\tclearGcTimeout() {\n\t\tif (this.#gcTimeout !== void 0) {\n\t\t\ttimeoutManager.clearTimeout(this.#gcTimeout);\n\t\t\tthis.#gcTimeout = void 0;\n\t\t}\n\t}\n};\n//#endregion\nexport { Removable };\n\n//# sourceMappingURL=removable.js.map",
|
|
24
|
+
"import { addConsumeAwareSignal, addToEnd, addToStart, ensureQueryFn } from \"./utils.js\";\n//#region src/infiniteQueryBehavior.ts\nfunction infiniteQueryBehavior(pages) {\n\treturn { onFetch: (context, query) => {\n\t\tconst options = context.options;\n\t\tconst direction = context.fetchOptions?.meta?.fetchMore?.direction;\n\t\tconst oldPages = context.state.data?.pages || [];\n\t\tconst oldPageParams = context.state.data?.pageParams || [];\n\t\tlet result = {\n\t\t\tpages: [],\n\t\t\tpageParams: []\n\t\t};\n\t\tlet currentPage = 0;\n\t\tconst fetchFn = async () => {\n\t\t\tlet cancelled = false;\n\t\t\tconst addSignalProperty = (object) => {\n\t\t\t\taddConsumeAwareSignal(object, () => context.signal, () => cancelled = true);\n\t\t\t};\n\t\t\tconst queryFn = ensureQueryFn(context.options, context.fetchOptions);\n\t\t\tconst fetchPage = async (data, param, previous) => {\n\t\t\t\tif (cancelled) return Promise.reject(context.signal.reason);\n\t\t\t\tif (param == null && data.pages.length) return Promise.resolve(data);\n\t\t\t\tconst createQueryFnContext = () => {\n\t\t\t\t\tconst queryFnContext = {\n\t\t\t\t\t\tclient: context.client,\n\t\t\t\t\t\tqueryKey: context.queryKey,\n\t\t\t\t\t\tpageParam: param,\n\t\t\t\t\t\tdirection: previous ? \"backward\" : \"forward\",\n\t\t\t\t\t\tmeta: context.options.meta\n\t\t\t\t\t};\n\t\t\t\t\taddSignalProperty(queryFnContext);\n\t\t\t\t\treturn queryFnContext;\n\t\t\t\t};\n\t\t\t\tconst queryFnContext = createQueryFnContext();\n\t\t\t\tconst page = await queryFn(queryFnContext);\n\t\t\t\tconst { maxPages } = context.options;\n\t\t\t\tconst addTo = previous ? addToStart : addToEnd;\n\t\t\t\treturn {\n\t\t\t\t\tpages: addTo(data.pages, page, maxPages),\n\t\t\t\t\tpageParams: addTo(data.pageParams, param, maxPages)\n\t\t\t\t};\n\t\t\t};\n\t\t\tif (direction && oldPages.length) {\n\t\t\t\tconst previous = direction === \"backward\";\n\t\t\t\tconst pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n\t\t\t\tconst oldData = {\n\t\t\t\t\tpages: oldPages,\n\t\t\t\t\tpageParams: oldPageParams\n\t\t\t\t};\n\t\t\t\tresult = await fetchPage(oldData, pageParamFn(options, oldData), previous);\n\t\t\t} else {\n\t\t\t\tconst remainingPages = pages ?? oldPages.length;\n\t\t\t\tdo {\n\t\t\t\t\tconst param = currentPage === 0 ? oldPageParams[0] ?? options.initialPageParam : getNextPageParam(options, result);\n\t\t\t\t\tif (currentPage > 0 && param == null) break;\n\t\t\t\t\tresult = await fetchPage(result, param);\n\t\t\t\t\tcurrentPage++;\n\t\t\t\t} while (currentPage < remainingPages);\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t\tif (context.options.persister) context.fetchFn = () => {\n\t\t\treturn context.options.persister?.(fetchFn, {\n\t\t\t\tclient: context.client,\n\t\t\t\tqueryKey: context.queryKey,\n\t\t\t\tmeta: context.options.meta,\n\t\t\t\tsignal: context.signal\n\t\t\t}, query);\n\t\t};\n\t\telse context.fetchFn = fetchFn;\n\t} };\n}\nfunction getNextPageParam(options, { pages, pageParams }) {\n\tconst lastIndex = pages.length - 1;\n\treturn pages.length > 0 ? options.getNextPageParam(pages[lastIndex], pages, pageParams[lastIndex], pageParams) : void 0;\n}\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n\treturn pages.length > 0 ? options.getPreviousPageParam?.(pages[0], pages, pageParams[0], pageParams) : void 0;\n}\n/**\n* Checks if there is a next page.\n*/\nfunction hasNextPage(options, data) {\n\tif (!data) return false;\n\treturn getNextPageParam(options, data) != null;\n}\n/**\n* Checks if there is a previous page.\n*/\nfunction hasPreviousPage(options, data) {\n\tif (!data || !options.getPreviousPageParam) return false;\n\treturn getPreviousPageParam(options, data) != null;\n}\n//#endregion\nexport { hasNextPage, hasPreviousPage, infiniteQueryBehavior };\n\n//# sourceMappingURL=infiniteQueryBehavior.js.map",
|
|
25
|
+
"import { ensureQueryFn, noop, replaceData, resolveQueryValue, skipToken, timeUntilStale } from \"./utils.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { CancelledError, canFetch, createRetryer } from \"./retryer.js\";\nimport { Removable } from \"./removable.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\n//#region src/query.ts\n/**\n* Represents a single cached query. A `Query` holds the query's key, options,\n* state (data/error/status), and the observers currently subscribed to it.\n*\n* Instances are created and managed internally by `QueryCache`; application\n* code typically interacts with queries indirectly through `QueryClient` or\n* a framework hook like `useQuery`. Direct access to a `Query` instance is\n* possible via `queryCache.find()`/`findAll()` for inspecting cache state.\n*\n* @example\n* ```ts\n* const queryCache = queryClient.getQueryCache()\n* const query = queryCache.find({ queryKey: ['posts'] })\n*\n* if (query) {\n* console.log(query.state.dataUpdatedAt)\n* }\n* ```\n*/\nvar Query = class extends Removable {\n\t#queryType;\n\t#initialState;\n\t#revertState;\n\t#cache;\n\t#client;\n\t#retryer;\n\t#defaultOptions;\n\t#abortSignalConsumed;\n\tconstructor(config) {\n\t\tsuper();\n\t\tthis.#abortSignalConsumed = false;\n\t\tthis.#defaultOptions = config.defaultOptions;\n\t\tthis.setOptions(config.options);\n\t\tthis.observers = [];\n\t\tthis.#client = config.client;\n\t\tthis.#cache = this.#client.getQueryCache();\n\t\tthis.queryKey = config.queryKey;\n\t\tthis.queryHash = config.queryHash;\n\t\tthis.#initialState = getDefaultState(this.options);\n\t\tthis.state = config.state ?? this.#initialState;\n\t\tthis.scheduleGc();\n\t}\n\t/**\n\t* The `meta` object passed in the query's options, if any.\n\t*/\n\tget meta() {\n\t\treturn this.options.meta;\n\t}\n\t/** @internal */\n\tget queryType() {\n\t\treturn this.#queryType;\n\t}\n\t/**\n\t* The promise for the currently in-flight fetch, if the query is fetching.\n\t* `undefined` when the query is not fetching.\n\t*/\n\tget promise() {\n\t\treturn this.#retryer?.promise;\n\t}\n\t/** @internal */\n\tsetOptions(options) {\n\t\tthis.options = {\n\t\t\t...this.#defaultOptions,\n\t\t\t...options\n\t\t};\n\t\tif (options?._type) this.#queryType = options._type;\n\t\tthis.updateGcTime(this.options.gcTime);\n\t\tif (this.state && this.state.data === void 0) {\n\t\t\tconst defaultState = getDefaultState(this.options);\n\t\t\tif (defaultState.data !== void 0) {\n\t\t\t\tthis.setState(successState(defaultState.data, defaultState.dataUpdatedAt));\n\t\t\t\tthis.#initialState = defaultState;\n\t\t\t}\n\t\t}\n\t}\n\toptionalRemove() {\n\t\tif (!this.observers.length && this.state.fetchStatus === \"idle\") this.#cache.remove(this);\n\t}\n\t/** @internal */\n\tsetData(newData, options) {\n\t\tconst data = replaceData(this.state.data, newData, this.options);\n\t\tthis.#dispatch({\n\t\t\tdata,\n\t\t\ttype: \"success\",\n\t\t\tdataUpdatedAt: options?.updatedAt,\n\t\t\tmanual: options?.manual\n\t\t});\n\t\treturn data;\n\t}\n\t/**\n\t* Merges the given partial state directly into this query's state, notifying observers. Used\n\t* by persistence and broadcast plugins to restore a state snapshot, and by devtools to let a\n\t* user manually trigger a loading/error state or edit the cached data.\n\t*/\n\tsetState(state) {\n\t\tthis.#dispatch({\n\t\t\ttype: \"setState\",\n\t\t\tstate\n\t\t});\n\t}\n\t/**\n\t* Cancels the query's currently in-flight fetch, if any.\n\t* - Returns a promise that resolves once the cancellation has settled.\n\t* - If no fetch is in progress, resolves immediately.\n\t*\n\t* @example\n\t* ```ts\n\t* await query.cancel()\n\t* ```\n\t*/\n\tcancel(options) {\n\t\tconst promise = this.#retryer?.promise;\n\t\tthis.#retryer?.cancel(options);\n\t\treturn promise ? promise.then(noop).catch(noop) : Promise.resolve();\n\t}\n\t/**\n\t* Clears the query's garbage collection timeout and silently cancels any\n\t* in-flight fetch. Called by `QueryCache` when the query is removed from\n\t* the cache.\n\t*\n\t* @see {@link Query#cancel}\n\t*/\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tthis.cancel({ silent: true });\n\t}\n\t/** @internal */\n\tget resetState() {\n\t\treturn this.#initialState;\n\t}\n\t/**\n\t* Resets the query back to its initial state (the state it had when it was\n\t* first created, e.g. any `initialData`), destroying it first to cancel any\n\t* in-flight fetch.\n\t*/\n\treset() {\n\t\tthis.destroy();\n\t\tthis.setState(this.resetState);\n\t}\n\t/**\n\t* Returns `true` if the query has at least one observer for which `enabled`\n\t* does not resolve to `false`.\n\t*/\n\tisActive() {\n\t\treturn this.observers.some((observer) => resolveQueryValue(observer.options.enabled, this) !== false);\n\t}\n\t/**\n\t* Returns `true` if the query is disabled, meaning it will not fetch\n\t* automatically.\n\t* - If the query has observers, it is disabled when none of them are active\n\t* (see `isActive`).\n\t* - If the query has no observers, it is disabled when its `queryFn` is\n\t* `skipToken` or it has never been fetched.\n\t*/\n\tisDisabled() {\n\t\tif (this.getObserversCount() > 0) return !this.isActive();\n\t\treturn this.options.queryFn === skipToken || !this.isFetched();\n\t}\n\t/**\n\t* Returns `true` if the query has been fetched, i.e. it has resolved with\n\t* either data or an error at least once.\n\t*/\n\tisFetched() {\n\t\treturn this.state.dataUpdateCount + this.state.errorUpdateCount > 0;\n\t}\n\t/**\n\t* Returns `true` if the query has at least one observer configured with\n\t* `staleTime: 'static'`, meaning it is treated as never stale.\n\t*/\n\tisStatic() {\n\t\tif (this.getObserversCount() > 0) return this.observers.some((observer) => resolveQueryValue(observer.options.staleTime, this) === \"static\");\n\t\treturn false;\n\t}\n\t/**\n\t* Returns `true` if the query is stale.\n\t* - If the query has observers, defers to whether any observer's current\n\t* result reports `isStale` (which accounts for each observer's own\n\t* `staleTime` and `enabled` state).\n\t* - If the query has no observers, it is considered stale when it has no\n\t* data or has been invalidated.\n\t*\n\t* @see {@link Query#isStaleByTime}\n\t* @example\n\t* ```ts\n\t* if (query.isStale()) {\n\t* // refetch or otherwise treat the cached data as outdated\n\t* }\n\t* ```\n\t*/\n\tisStale() {\n\t\tif (this.getObserversCount() > 0) return this.observers.some((observer) => observer.getCurrentResult().isStale);\n\t\treturn this.state.data === void 0 || this.state.isInvalidated;\n\t}\n\t/**\n\t* Returns `true` if the query's data is stale relative to the given\n\t* `staleTime` (defaults to `0`).\n\t* - A query with no data is always stale.\n\t* - `staleTime: 'static'` is never stale.\n\t* - An invalidated query is always stale.\n\t* - Otherwise, staleness is based on elapsed time since `dataUpdatedAt`.\n\t*\n\t* @see {@link Query#isStale}\n\t* @example\n\t* ```ts\n\t* const isStale = query.isStaleByTime(1000 * 60)\n\t* ```\n\t*/\n\tisStaleByTime(staleTime = 0) {\n\t\tif (this.state.data === void 0) return true;\n\t\tif (staleTime === \"static\") return false;\n\t\tif (this.state.isInvalidated) return true;\n\t\treturn !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n\t}\n\t/** @internal */\n\tonFocus() {\n\t\tthis.observers.find((x) => x.shouldFetchOnWindowFocus())?.refetch({ cancelRefetch: false });\n\t\tthis.#retryer?.continue();\n\t}\n\t/** @internal */\n\tonOnline() {\n\t\tthis.observers.find((x) => x.shouldFetchOnReconnect())?.refetch({ cancelRefetch: false });\n\t\tthis.#retryer?.continue();\n\t}\n\t/** @internal */\n\taddObserver(observer) {\n\t\tif (!this.observers.includes(observer)) {\n\t\t\tthis.observers.push(observer);\n\t\t\tthis.clearGcTimeout();\n\t\t\tthis.#cache.notify({\n\t\t\t\ttype: \"observerAdded\",\n\t\t\t\tquery: this,\n\t\t\t\tobserver\n\t\t\t});\n\t\t}\n\t}\n\t/** @internal */\n\tremoveObserver(observer) {\n\t\tconst index = this.observers.indexOf(observer);\n\t\tif (index !== -1) {\n\t\t\tthis.observers.splice(index, 1);\n\t\t\tif (!this.observers.length) {\n\t\t\t\tif (this.#retryer) {\n\t\t\t\t\tif (this.#abortSignalConsumed || this.state.fetchStatus === \"paused\" && this.state.status === \"pending\") this.#retryer.cancel({ revert: true });\n\t\t\t\t\telse this.#retryer.cancelRetry();\n\t\t\t\t}\n\t\t\t\tthis.scheduleGc();\n\t\t\t}\n\t\t\tthis.#cache.notify({\n\t\t\t\ttype: \"observerRemoved\",\n\t\t\t\tquery: this,\n\t\t\t\tobserver\n\t\t\t});\n\t\t}\n\t}\n\t/**\n\t* Returns the number of observers currently subscribed to this query.\n\t*\n\t* @example\n\t* ```ts\n\t* if (query.getObserversCount() === 0) {\n\t* // no component is currently watching this query\n\t* }\n\t* ```\n\t*/\n\tgetObserversCount() {\n\t\treturn this.observers.length;\n\t}\n\t/**\n\t* Marks the query as invalidated, unless it is already invalidated. This\n\t* updates `state.isInvalidated` and notifies observers, but does not by\n\t* itself trigger a refetch.\n\t*\n\t* @example\n\t* ```ts\n\t* query.invalidate()\n\t* ```\n\t*/\n\tinvalidate() {\n\t\tif (!this.state.isInvalidated) this.#dispatch({ type: \"invalidate\" });\n\t}\n\t/**\n\t* Fetches the query, i.e. runs its `queryFn` (through any configured\n\t* retryer/behavior) and updates the query's state with the result.\n\t* - If a fetch is already in flight, returns its promise instead of\n\t* starting a new one, unless `fetchOptions.cancelRefetch` is set and the\n\t* query already has data, in which case the current fetch is silently\n\t* cancelled first.\n\t* - If `options` is passed, it replaces the query's current options\n\t* before fetching.\n\t*/\n\tasync fetch(options, fetchOptions) {\n\t\tif (this.state.fetchStatus !== \"idle\" && this.#retryer?.status() !== \"rejected\") {\n\t\t\tif (this.state.data !== void 0 && fetchOptions?.cancelRefetch) this.cancel({ silent: true });\n\t\t\telse if (this.#retryer) {\n\t\t\t\tthis.#retryer.continueRetry();\n\t\t\t\treturn this.#retryer.promise;\n\t\t\t}\n\t\t}\n\t\tif (options) this.setOptions(options);\n\t\tif (!this.options.queryFn) {\n\t\t\tconst observer = this.observers.find((x) => x.options.queryFn);\n\t\t\tif (observer) this.setOptions(observer.options);\n\t\t}\n\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\tif (!Array.isArray(this.options.queryKey)) console.error(`As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`);\n\t\t}\n\t\tconst abortController = new AbortController();\n\t\tconst addSignalProperty = (object) => {\n\t\t\tObject.defineProperty(object, \"signal\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => {\n\t\t\t\t\tthis.#abortSignalConsumed = true;\n\t\t\t\t\treturn abortController.signal;\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t\tconst fetchFn = () => {\n\t\t\tconst queryFn = ensureQueryFn(this.options, fetchOptions);\n\t\t\tconst createQueryFnContext = () => {\n\t\t\t\tconst queryFnContext = {\n\t\t\t\t\tclient: this.#client,\n\t\t\t\t\tqueryKey: this.queryKey,\n\t\t\t\t\tmeta: this.meta\n\t\t\t\t};\n\t\t\t\taddSignalProperty(queryFnContext);\n\t\t\t\treturn queryFnContext;\n\t\t\t};\n\t\t\tconst queryFnContext = createQueryFnContext();\n\t\t\tthis.#abortSignalConsumed = false;\n\t\t\tif (this.options.persister) return this.options.persister(queryFn, queryFnContext, this);\n\t\t\treturn queryFn(queryFnContext);\n\t\t};\n\t\tconst createFetchContext = () => {\n\t\t\tconst context = {\n\t\t\t\tfetchOptions,\n\t\t\t\toptions: this.options,\n\t\t\t\tqueryKey: this.queryKey,\n\t\t\t\tclient: this.#client,\n\t\t\t\tstate: this.state,\n\t\t\t\tfetchFn\n\t\t\t};\n\t\t\taddSignalProperty(context);\n\t\t\treturn context;\n\t\t};\n\t\tconst context = createFetchContext();\n\t\t(this.#queryType === \"infinite\" ? infiniteQueryBehavior(this.options.pages) : this.options.behavior)?.onFetch(context, this);\n\t\tthis.#revertState = this.state;\n\t\tif (this.state.fetchStatus === \"idle\" || this.state.fetchMeta !== context.fetchOptions?.meta) this.#dispatch({\n\t\t\ttype: \"fetch\",\n\t\t\tmeta: context.fetchOptions?.meta\n\t\t});\n\t\tconst retryer = this.#retryer = createRetryer({\n\t\t\tinitialPromise: fetchOptions?.initialPromise,\n\t\t\tfn: context.fetchFn,\n\t\t\tonCancel: (error) => {\n\t\t\t\tif (error instanceof CancelledError && error.revert) this.setState({\n\t\t\t\t\t...this.#revertState,\n\t\t\t\t\tfetchStatus: \"idle\"\n\t\t\t\t});\n\t\t\t\tabortController.abort();\n\t\t\t},\n\t\t\tonFail: (failureCount, error) => {\n\t\t\t\tthis.#dispatch({\n\t\t\t\t\ttype: \"failed\",\n\t\t\t\t\tfailureCount,\n\t\t\t\t\terror\n\t\t\t\t});\n\t\t\t},\n\t\t\tonPause: () => {\n\t\t\t\tthis.#dispatch({ type: \"pause\" });\n\t\t\t},\n\t\t\tonContinue: () => {\n\t\t\t\tthis.#dispatch({ type: \"continue\" });\n\t\t\t},\n\t\t\tretry: context.options.retry,\n\t\t\tretryDelay: context.options.retryDelay,\n\t\t\tnetworkMode: context.options.networkMode,\n\t\t\tcanRun: () => true\n\t\t});\n\t\ttry {\n\t\t\tconst data = await retryer.start();\n\t\t\tif (data === void 0) {\n\t\t\t\tif (process.env.NODE_ENV !== \"production\") console.error(`Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`);\n\t\t\t\tthrow new Error(`${this.queryHash} data is undefined`);\n\t\t\t}\n\t\t\tthis.setData(data);\n\t\t\tthis.#cache.config.onSuccess?.(data, this);\n\t\t\tthis.#cache.config.onSettled?.(data, this.state.error, this);\n\t\t\treturn data;\n\t\t} catch (error) {\n\t\t\tif (error instanceof CancelledError) {\n\t\t\t\tif (error.silent) return this.#retryer.promise;\n\t\t\t\telse if (error.revert) {\n\t\t\t\t\tif (this.state.data === void 0) throw error;\n\t\t\t\t\treturn this.state.data;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.#dispatch({\n\t\t\t\ttype: \"error\",\n\t\t\t\terror\n\t\t\t});\n\t\t\tthis.#cache.config.onError?.(error, this);\n\t\t\tthis.#cache.config.onSettled?.(this.state.data, error, this);\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tif (this.#retryer === retryer) this.#retryer = void 0;\n\t\t\tthis.scheduleGc();\n\t\t}\n\t}\n\t#dispatch(action) {\n\t\tconst reducer = (state) => {\n\t\t\tswitch (action.type) {\n\t\t\t\tcase \"failed\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tfetchFailureCount: action.failureCount,\n\t\t\t\t\tfetchFailureReason: action.error\n\t\t\t\t};\n\t\t\t\tcase \"pause\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tfetchStatus: \"paused\"\n\t\t\t\t};\n\t\t\t\tcase \"continue\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tfetchStatus: \"fetching\"\n\t\t\t\t};\n\t\t\t\tcase \"fetch\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\t...fetchState(state.data, this.options),\n\t\t\t\t\tfetchMeta: action.meta ?? null\n\t\t\t\t};\n\t\t\t\tcase \"success\":\n\t\t\t\t\tconst newState = {\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\t...successState(action.data, action.dataUpdatedAt),\n\t\t\t\t\t\tdataUpdateCount: state.dataUpdateCount + 1,\n\t\t\t\t\t\t...!action.manual && {\n\t\t\t\t\t\t\tfetchStatus: \"idle\",\n\t\t\t\t\t\t\tfetchFailureCount: 0,\n\t\t\t\t\t\t\tfetchFailureReason: null\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tthis.#revertState = action.manual ? newState : void 0;\n\t\t\t\t\treturn newState;\n\t\t\t\tcase \"error\":\n\t\t\t\t\tconst error = action.error;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\terror,\n\t\t\t\t\t\terrorUpdateCount: state.errorUpdateCount + 1,\n\t\t\t\t\t\terrorUpdatedAt: Date.now(),\n\t\t\t\t\t\tfetchFailureCount: state.fetchFailureCount + 1,\n\t\t\t\t\t\tfetchFailureReason: error,\n\t\t\t\t\t\tfetchStatus: \"idle\",\n\t\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\t\tisInvalidated: true\n\t\t\t\t\t};\n\t\t\t\tcase \"invalidate\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tisInvalidated: true\n\t\t\t\t};\n\t\t\t\tcase \"setState\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\t...action.state\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t\tthis.state = reducer(this.state);\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.observers.slice().forEach((observer) => {\n\t\t\t\tobserver.onQueryUpdate();\n\t\t\t});\n\t\t\tthis.#cache.notify({\n\t\t\t\tquery: this,\n\t\t\t\ttype: \"updated\",\n\t\t\t\taction\n\t\t\t});\n\t\t});\n\t}\n};\nfunction fetchState(data, options) {\n\treturn {\n\t\tfetchFailureCount: 0,\n\t\tfetchFailureReason: null,\n\t\tfetchStatus: canFetch(options.networkMode) ? \"fetching\" : \"paused\",\n\t\t...data === void 0 && {\n\t\t\terror: null,\n\t\t\tstatus: \"pending\"\n\t\t}\n\t};\n}\nfunction successState(data, dataUpdatedAt) {\n\treturn {\n\t\tdata,\n\t\tdataUpdatedAt: dataUpdatedAt ?? Date.now(),\n\t\terror: null,\n\t\tisInvalidated: false,\n\t\tstatus: \"success\"\n\t};\n}\nfunction getDefaultState(options) {\n\tconst data = typeof options.initialData === \"function\" ? options.initialData() : options.initialData;\n\tconst hasData = data !== void 0;\n\tconst initialDataUpdatedAt = hasData ? typeof options.initialDataUpdatedAt === \"function\" ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n\treturn {\n\t\tdata,\n\t\tdataUpdateCount: 0,\n\t\tdataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n\t\terror: null,\n\t\terrorUpdateCount: 0,\n\t\terrorUpdatedAt: 0,\n\t\tfetchFailureCount: 0,\n\t\tfetchFailureReason: null,\n\t\tfetchMeta: null,\n\t\tisInvalidated: false,\n\t\tstatus: hasData ? \"success\" : \"pending\",\n\t\tfetchStatus: \"idle\"\n\t};\n}\n//#endregion\nexport { Query, fetchState };\n\n//# sourceMappingURL=query.js.map",
|
|
26
|
+
"import { timeoutManager } from \"./timeoutManager.js\";\nimport { isValidTimeout, noop, replaceData, resolveQueryValue, shallowEqualObjects, timeUntilStale } from \"./utils.js\";\nimport { isServer } from \"./environmentManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { fetchState } from \"./query.js\";\n//#region src/queryObserver.ts\n/**\n* A `QueryObserver` watches a single query in the `QueryCache` and computes a\n* `QueryObserverResult` from its state, recomputing and notifying subscribers\n* whenever the underlying query (or the observer's options) changes. It is\n* the primitive that framework adapters (e.g. `useQuery`) build their hooks\n* on top of, but it can also be used directly to observe and switch between\n* queries outside of any framework.\n*\n* @example\n* ```ts\n* const observer = new QueryObserver(queryClient, {\n* queryKey: ['posts'],\n* queryFn: fetchPosts,\n* })\n*\n* const unsubscribe = observer.subscribe((result) => {\n* console.log(result.data)\n* })\n* ```\n*/\nvar QueryObserver = class extends Subscribable {\n\t#client;\n\t#currentQuery = void 0;\n\t#currentQueryInitialState = void 0;\n\t#currentResult = void 0;\n\t#currentResultState;\n\t#currentResultOptions;\n\t#selectError;\n\t#selectFn;\n\t#selectResult;\n\t#lastQueryWithDefinedData;\n\t#staleTimeoutId;\n\t#refetchIntervalId;\n\t#currentRefetchInterval;\n\t#trackedProps = /* @__PURE__ */ new Set();\n\tconstructor(client, options) {\n\t\tsuper();\n\t\tthis.options = options;\n\t\tthis.#client = client;\n\t\tthis.#selectError = null;\n\t\tthis.bindMethods();\n\t\tthis.setOptions(options);\n\t}\n\tbindMethods() {\n\t\tthis.refetch = this.refetch.bind(this);\n\t}\n\tonSubscribe() {\n\t\tif (this.listeners.size === 1) {\n\t\t\tthis.#currentQuery.addObserver(this);\n\t\t\tif (shouldFetchOnMount(this.#currentQuery, this.options)) this.#executeFetch();\n\t\t\telse this.updateResult();\n\t\t\tthis.#updateTimers();\n\t\t}\n\t}\n\tonUnsubscribe() {\n\t\tif (!this.hasListeners()) this.destroy();\n\t}\n\t/**\n\t* Returns whether the observed query is currently stale and configured\n\t* (via the `refetchOnReconnect` option) to refetch when the network\n\t* reconnects.\n\t*/\n\tshouldFetchOnReconnect() {\n\t\treturn shouldFetchOn(this.#currentQuery, this.options, this.options.refetchOnReconnect);\n\t}\n\t/**\n\t* Returns whether the observed query is currently stale and configured\n\t* (via the `refetchOnWindowFocus` option) to refetch when the window\n\t* regains focus.\n\t*/\n\tshouldFetchOnWindowFocus() {\n\t\treturn shouldFetchOn(this.#currentQuery, this.options, this.options.refetchOnWindowFocus);\n\t}\n\t/**\n\t* Stops observing the current query: clears all listeners, cancels the\n\t* stale and refetch-interval timers, and removes this observer from the\n\t* query it was observing.\n\t*/\n\tdestroy() {\n\t\tthis.listeners = /* @__PURE__ */ new Set();\n\t\tthis.#clearStaleTimeout();\n\t\tthis.#clearRefetchInterval();\n\t\tthis.#currentQuery.removeObserver(this);\n\t}\n\t/**\n\t* Updates the observer's options. This will re-resolve the query being\n\t* observed (switching to a different query if the `queryKey` changed),\n\t* trigger a fetch if the new options require one and the observer has\n\t* subscribers, recompute the current result, and reschedule the stale and\n\t* refetch-interval timers as needed.\n\t*\n\t* @example\n\t* ```ts\n\t* observer.setOptions({ queryKey: ['posts', 1], queryFn: () => fetchPost(1) })\n\t* // later: switch to a different query, reusing the same observer\n\t* observer.setOptions({ queryKey: ['posts', 2], queryFn: () => fetchPost(2) })\n\t* ```\n\t*/\n\tsetOptions(options) {\n\t\tconst prevOptions = this.options;\n\t\tconst prevQuery = this.#currentQuery;\n\t\tthis.options = this.#client.defaultQueryOptions(options);\n\t\tif (this.options.enabled !== void 0 && typeof this.options.enabled !== \"boolean\" && typeof this.options.enabled !== \"function\" && typeof resolveQueryValue(this.options.enabled, this.#currentQuery) !== \"boolean\") throw new Error(\"Expected enabled to be a boolean or a callback that returns a boolean\");\n\t\tthis.#updateQuery();\n\t\tthis.#currentQuery.setOptions(this.options);\n\t\tif (prevOptions._defaulted && !shallowEqualObjects(this.options, prevOptions)) this.#client.getQueryCache().notify({\n\t\t\ttype: \"observerOptionsUpdated\",\n\t\t\tquery: this.#currentQuery,\n\t\t\tobserver: this\n\t\t});\n\t\tconst mounted = this.hasListeners();\n\t\tif (mounted && shouldFetchOptionally(this.#currentQuery, prevQuery, this.options, prevOptions)) this.#executeFetch();\n\t\tthis.updateResult();\n\t\tif (mounted && (this.#currentQuery !== prevQuery || resolveQueryValue(this.options.enabled, this.#currentQuery) !== resolveQueryValue(prevOptions.enabled, this.#currentQuery) || resolveQueryValue(this.options.staleTime, this.#currentQuery) !== resolveQueryValue(prevOptions.staleTime, this.#currentQuery))) this.#updateStaleTimeout();\n\t\tconst nextRefetchInterval = this.#computeRefetchInterval();\n\t\tif (mounted && (this.#currentQuery !== prevQuery || resolveQueryValue(this.options.enabled, this.#currentQuery) !== resolveQueryValue(prevOptions.enabled, this.#currentQuery) || nextRefetchInterval !== this.#currentRefetchInterval)) this.#updateRefetchInterval(nextRefetchInterval);\n\t}\n\t/**\n\t* Computes the result the observer would produce for the given (already-defaulted) options\n\t* right now, building the underlying `Query` if it doesn't exist yet, without waiting for a\n\t* subscription callback. Called by framework adapters on every render (e.g. `useQuery`) so the\n\t* returned value is available synchronously, ahead of `setOptions` triggering an actual fetch.\n\t*/\n\tgetOptimisticResult(options) {\n\t\tconst query = this.#client.getQueryCache().build(this.#client, options);\n\t\tconst result = this.createResult(query, options);\n\t\tif (!shallowEqualObjects(this.getCurrentResult(), result)) {\n\t\t\tthis.#currentResult = result;\n\t\t\tthis.#currentResultOptions = this.options;\n\t\t\tthis.#currentResultState = this.#currentQuery.state;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t* Returns the most recently computed `QueryObserverResult` for the\n\t* observed query. This is a point-in-time read; to be notified of updates\n\t* as they happen, subscribe to the observer instead (its inherited\n\t* `subscribe` method).\n\t*\n\t* @example\n\t* ```ts\n\t* const result = observer.getCurrentResult()\n\t* console.log(result.status, result.data)\n\t* ```\n\t*/\n\tgetCurrentResult() {\n\t\treturn this.#currentResult;\n\t}\n\t/**\n\t* Wraps a `QueryObserverResult` in a `Proxy` that records which properties are read, via\n\t* {@link QueryObserver#trackProp} (and an optional `onPropTracked` callback). Used by framework\n\t* adapters when `notifyOnChangeProps` is not set, to implement its default \"only re-render on\n\t* properties you actually read\" behavior.\n\t*/\n\ttrackResult(result, onPropTracked) {\n\t\treturn new Proxy(result, { get: (target, key) => {\n\t\t\tthis.trackProp(key);\n\t\t\tonPropTracked?.(key);\n\t\t\treturn Reflect.get(target, key);\n\t\t} });\n\t}\n\t/**\n\t* Records that the given `QueryObserverResult` property was read, so a subsequent update only\n\t* notifies this observer if a tracked property actually changed. Normally called indirectly via\n\t* {@link QueryObserver#trackResult}'s proxy; exposed directly for adapters that track property\n\t* access themselves (e.g. through their own reactivity system) instead of via the proxy.\n\t*/\n\ttrackProp(key) {\n\t\tthis.#trackedProps.add(key);\n\t}\n\t/**\n\t* Returns the `Query` instance this observer is currently observing.\n\t*/\n\tgetCurrentQuery() {\n\t\treturn this.#currentQuery;\n\t}\n\t/**\n\t* Refetches the observed query and returns a promise that resolves with\n\t* the resulting `QueryObserverResult`.\n\t*\n\t* @example\n\t* ```ts\n\t* const result = await observer.refetch({ cancelRefetch: false })\n\t* console.log(result.data)\n\t* ```\n\t*/\n\trefetch({ ...options } = {}) {\n\t\treturn this.fetch({ ...options });\n\t}\n\t/**\n\t* Fetches a query defined by the given options without affecting this\n\t* observer's own tracked query or result, and returns a promise that\n\t* resolves with the `QueryObserverResult` for that fetch. This is useful\n\t* for prefetching data that another observer (e.g. a query about to be\n\t* navigated to) will need, ahead of time.\n\t*\n\t* @example\n\t* ```ts\n\t* const result = await observer.fetchOptimistic({\n\t* queryKey: ['posts', 2],\n\t* queryFn: () => fetchPost(2),\n\t* })\n\t* console.log(result.data)\n\t* ```\n\t*/\n\tfetchOptimistic(options) {\n\t\tconst defaultedOptions = this.#client.defaultQueryOptions(options);\n\t\tconst query = this.#client.getQueryCache().build(this.#client, defaultedOptions);\n\t\tlet unsubscribe = () => {};\n\t\tlet resolveEarly;\n\t\tconst cachePromise = new Promise((resolve) => {\n\t\t\tresolveEarly = resolve;\n\t\t\tunsubscribe = this.#client.getQueryCache().subscribe((event) => {\n\t\t\t\tif (event.type === \"updated\" && event.query.queryHash === query.queryHash && query.state.data !== void 0) {\n\t\t\t\t\tunsubscribe();\n\t\t\t\t\tresolve(this.createResult(query, defaultedOptions));\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\treturn Promise.race([query.fetch().then(() => {\n\t\t\tconst result = this.createResult(query, defaultedOptions);\n\t\t\tresolveEarly?.(result);\n\t\t\treturn result;\n\t\t}).finally(() => {\n\t\t\tunsubscribe();\n\t\t}), cachePromise]);\n\t}\n\tfetch(fetchOptions) {\n\t\treturn this.#executeFetch({\n\t\t\t...fetchOptions,\n\t\t\tcancelRefetch: fetchOptions.cancelRefetch ?? true\n\t\t}).then(() => {\n\t\t\tthis.updateResult();\n\t\t\treturn this.#currentResult;\n\t\t});\n\t}\n\t#executeFetch(fetchOptions) {\n\t\tthis.#updateQuery();\n\t\tlet promise = this.#currentQuery.fetch(this.options, fetchOptions);\n\t\tif (!fetchOptions?.throwOnError) promise = promise.catch(noop);\n\t\treturn promise;\n\t}\n\t#shouldScheduleTimer(timeout) {\n\t\treturn !isServer() && resolveQueryValue(this.options.enabled, this.#currentQuery) !== false && isValidTimeout(timeout);\n\t}\n\t#updateStaleTimeout() {\n\t\tthis.#clearStaleTimeout();\n\t\tconst staleTime = resolveQueryValue(this.options.staleTime, this.#currentQuery);\n\t\tif (this.#currentResult.isStale || !this.#shouldScheduleTimer(staleTime)) return;\n\t\tconst timeout = timeUntilStale(this.#currentResult.dataUpdatedAt, staleTime) + 1;\n\t\tthis.#staleTimeoutId = timeoutManager.setTimeout(() => {\n\t\t\tif (!this.#currentResult.isStale) this.updateResult();\n\t\t}, timeout);\n\t}\n\t#computeRefetchInterval() {\n\t\treturn resolveQueryValue(this.options.refetchInterval, this.#currentQuery) ?? false;\n\t}\n\t#updateRefetchInterval(nextInterval) {\n\t\tthis.#clearRefetchInterval();\n\t\tthis.#currentRefetchInterval = nextInterval;\n\t\tif (this.#currentRefetchInterval === 0 || !this.#shouldScheduleTimer(this.#currentRefetchInterval)) return;\n\t\tthis.#refetchIntervalId = timeoutManager.setInterval(() => {\n\t\t\tif (this.options.refetchIntervalInBackground || focusManager.isFocused()) this.#executeFetch();\n\t\t}, this.#currentRefetchInterval);\n\t}\n\t#updateTimers() {\n\t\tthis.#updateStaleTimeout();\n\t\tthis.#updateRefetchInterval(this.#computeRefetchInterval());\n\t}\n\t#clearStaleTimeout() {\n\t\tif (this.#staleTimeoutId !== void 0) {\n\t\t\ttimeoutManager.clearTimeout(this.#staleTimeoutId);\n\t\t\tthis.#staleTimeoutId = void 0;\n\t\t}\n\t}\n\t#clearRefetchInterval() {\n\t\tif (this.#refetchIntervalId !== void 0) {\n\t\t\ttimeoutManager.clearInterval(this.#refetchIntervalId);\n\t\t\tthis.#refetchIntervalId = void 0;\n\t\t}\n\t}\n\tcreateResult(query, options) {\n\t\tconst prevQuery = this.#currentQuery;\n\t\tconst prevOptions = this.options;\n\t\tconst prevResult = this.#currentResult;\n\t\tconst prevResultState = this.#currentResultState;\n\t\tconst prevResultOptions = this.#currentResultOptions;\n\t\tconst queryInitialState = query !== prevQuery ? query.state : this.#currentQueryInitialState;\n\t\tconst { state } = query;\n\t\tlet newState = { ...state };\n\t\tlet isPlaceholderData = false;\n\t\tlet data;\n\t\tif (options._optimisticResults) {\n\t\t\tconst mounted = this.hasListeners();\n\t\t\tconst fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n\t\t\tconst fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n\t\t\tif (fetchOnMount || fetchOptionally) newState = {\n\t\t\t\t...newState,\n\t\t\t\t...fetchState(state.data, query.options)\n\t\t\t};\n\t\t\tif (options._optimisticResults === \"isRestoring\") newState.fetchStatus = \"idle\";\n\t\t}\n\t\tlet { error, errorUpdatedAt, status } = newState;\n\t\tdata = newState.data;\n\t\tlet skipSelect = false;\n\t\tif (options.placeholderData !== void 0 && data === void 0 && status === \"pending\") {\n\t\t\tlet placeholderData;\n\t\t\tif (prevResult?.isPlaceholderData && options.placeholderData === prevResultOptions?.placeholderData) {\n\t\t\t\tplaceholderData = prevResult.data;\n\t\t\t\tskipSelect = true;\n\t\t\t} else placeholderData = typeof options.placeholderData === \"function\" ? options.placeholderData(this.#lastQueryWithDefinedData?.state.data, this.#lastQueryWithDefinedData) : options.placeholderData;\n\t\t\tif (placeholderData !== void 0) {\n\t\t\t\tstatus = \"success\";\n\t\t\t\tdata = replaceData(prevResult?.data, placeholderData, options);\n\t\t\t\tisPlaceholderData = true;\n\t\t\t}\n\t\t}\n\t\tif (options.select && data !== void 0 && !skipSelect) {\n\t\t\tif (prevResult && data === prevResultState?.data && options.select === this.#selectFn) data = this.#selectResult;\n\t\t\telse try {\n\t\t\t\tthis.#selectFn = options.select;\n\t\t\t\tdata = options.select(data);\n\t\t\t\tdata = replaceData(prevResult?.data, data, options);\n\t\t\t\tthis.#selectResult = data;\n\t\t\t\tthis.#selectError = null;\n\t\t\t} catch (selectError) {\n\t\t\t\tthis.#selectError = selectError;\n\t\t\t}\n\t\t} else if (data === void 0) this.#selectError = null;\n\t\tif (this.#selectError) {\n\t\t\terror = this.#selectError;\n\t\t\tdata = this.#selectResult;\n\t\t\terrorUpdatedAt = Date.now();\n\t\t\tstatus = \"error\";\n\t\t\tisPlaceholderData = false;\n\t\t}\n\t\tconst isFetching = newState.fetchStatus === \"fetching\";\n\t\tconst isPending = status === \"pending\";\n\t\tconst isError = status === \"error\";\n\t\tconst isLoading = isPending && isFetching;\n\t\tconst hasData = data !== void 0;\n\t\treturn {\n\t\t\tstatus,\n\t\t\tfetchStatus: newState.fetchStatus,\n\t\t\tisPending,\n\t\t\tisSuccess: status === \"success\",\n\t\t\tisError,\n\t\t\tisInitialLoading: isLoading,\n\t\t\tisLoading,\n\t\t\tdata,\n\t\t\tdataUpdatedAt: newState.dataUpdatedAt,\n\t\t\terror,\n\t\t\terrorUpdatedAt,\n\t\t\tfailureCount: newState.fetchFailureCount,\n\t\t\tfailureReason: newState.fetchFailureReason,\n\t\t\terrorUpdateCount: newState.errorUpdateCount,\n\t\t\tisFetched: query.isFetched(),\n\t\t\tisFetchedAfterMount: newState.dataUpdateCount > queryInitialState.dataUpdateCount || newState.errorUpdateCount > queryInitialState.errorUpdateCount,\n\t\t\tisFetching,\n\t\t\tisRefetching: isFetching && !isPending,\n\t\t\tisLoadingError: isError && !hasData,\n\t\t\tisPaused: newState.fetchStatus === \"paused\",\n\t\t\tisPlaceholderData,\n\t\t\tisRefetchError: isError && hasData,\n\t\t\tisStale: isStale(query, options),\n\t\t\trefetch: this.refetch,\n\t\t\tisEnabled: resolveQueryValue(options.enabled, query) !== false\n\t\t};\n\t}\n\t/**\n\t* Recomputes and stores the current result from the current query/options, notifying listeners\n\t* if it changed. Framework adapters call this right after subscribing to make sure no query\n\t* update was missed in the gap between creating the observer and subscribing to it.\n\t*/\n\tupdateResult() {\n\t\tconst prevResult = this.#currentResult;\n\t\tconst nextResult = this.createResult(this.#currentQuery, this.options);\n\t\tthis.#currentResultState = this.#currentQuery.state;\n\t\tthis.#currentResultOptions = this.options;\n\t\tif (this.#currentResultState.data !== void 0) this.#lastQueryWithDefinedData = this.#currentQuery;\n\t\tif (shallowEqualObjects(nextResult, prevResult)) return;\n\t\tthis.#currentResult = nextResult;\n\t\tconst shouldNotifyListeners = () => {\n\t\t\tif (!prevResult) return true;\n\t\t\tconst { notifyOnChangeProps } = this.options;\n\t\t\tconst notifyOnChangePropsValue = typeof notifyOnChangeProps === \"function\" ? notifyOnChangeProps() : notifyOnChangeProps;\n\t\t\tif (notifyOnChangePropsValue === \"all\" || !notifyOnChangePropsValue && !this.#trackedProps.size) return true;\n\t\t\tconst includedProps = new Set(notifyOnChangePropsValue ?? this.#trackedProps);\n\t\t\tif (this.options.throwOnError) includedProps.add(\"error\");\n\t\t\treturn Object.keys(this.#currentResult).some((key) => {\n\t\t\t\tconst typedKey = key;\n\t\t\t\treturn this.#currentResult[typedKey] !== prevResult[typedKey] && includedProps.has(typedKey);\n\t\t\t});\n\t\t};\n\t\tconst notifyListeners = shouldNotifyListeners();\n\t\tnotifyManager.batch(() => {\n\t\t\tif (notifyListeners) this.listeners.forEach((listener) => {\n\t\t\t\tlistener(this.#currentResult);\n\t\t\t});\n\t\t\tthis.#client.getQueryCache().notify({\n\t\t\t\tquery: this.#currentQuery,\n\t\t\t\ttype: \"observerResultsUpdated\"\n\t\t\t});\n\t\t});\n\t}\n\t#updateQuery() {\n\t\tconst query = this.#client.getQueryCache().build(this.#client, this.options);\n\t\tif (query === this.#currentQuery) return;\n\t\tconst prevQuery = this.#currentQuery;\n\t\tthis.#currentQuery = query;\n\t\tthis.#currentQueryInitialState = query.state;\n\t\tif (this.hasListeners()) {\n\t\t\tprevQuery?.removeObserver(this);\n\t\t\tquery.addObserver(this);\n\t\t}\n\t}\n\t/** @internal */\n\tonQueryUpdate() {\n\t\tthis.updateResult();\n\t\tif (this.hasListeners()) this.#updateTimers();\n\t}\n};\nfunction shouldLoadOnMount(query, options) {\n\treturn resolveQueryValue(options.enabled, query) !== false && query.state.data === void 0 && !(query.state.status === \"error\" && resolveQueryValue(options.retryOnMount, query) === false);\n}\nfunction shouldFetchOnMount(query, options) {\n\treturn shouldLoadOnMount(query, options) || query.state.data !== void 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\nfunction shouldFetchOn(query, options, field) {\n\tif (resolveQueryValue(options.enabled, query) !== false && resolveQueryValue(options.staleTime, query) !== \"static\") {\n\t\tconst value = resolveQueryValue(field, query);\n\t\treturn value === \"always\" || value !== false && isStale(query, options);\n\t}\n\treturn false;\n}\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n\treturn (query !== prevQuery || resolveQueryValue(prevOptions.enabled, query) === false) && (!options.suspense || query.state.status !== \"error\") && isStale(query, options);\n}\nfunction isStale(query, options) {\n\treturn resolveQueryValue(options.enabled, query) !== false && query.isStaleByTime(resolveQueryValue(options.staleTime, query));\n}\n//#endregion\nexport { QueryObserver };\n\n//# sourceMappingURL=queryObserver.js.map",
|
|
27
|
+
"import { notifyManager } from \"./notifyManager.js\";\nimport { createRetryer } from \"./retryer.js\";\nimport { Removable } from \"./removable.js\";\n//#region src/mutation.ts\n/**\n* Represents a single mutation attempt. A `Mutation` holds the mutation's\n* options, state (data/error/status), and the `MutationObserver`s currently\n* subscribed to it.\n*\n* Instances are created and managed internally by `MutationCache`; application\n* code typically interacts with mutations indirectly through `QueryClient` or\n* a framework hook like `useMutation`. Direct access to a `Mutation` instance\n* is possible via `mutationCache.find()`/`getAll()` for inspecting cache state.\n*\n* @example\n* ```ts\n* const mutationCache = queryClient.getMutationCache()\n*\n* const mutation = mutationCache.find({ mutationKey: ['addPost'] })\n* ```\n*/\nvar Mutation = class extends Removable {\n\t#client;\n\t#observers;\n\t#mutationCache;\n\t#retryer;\n\tconstructor(config) {\n\t\tsuper();\n\t\tthis.#client = config.client;\n\t\tthis.mutationId = config.mutationId;\n\t\tthis.#mutationCache = config.mutationCache;\n\t\tthis.#observers = [];\n\t\tthis.state = config.state || getDefaultState();\n\t\tthis.setOptions(config.options);\n\t\tthis.scheduleGc();\n\t}\n\t/** @internal */\n\tsetOptions(options) {\n\t\tthis.options = options;\n\t\tthis.updateGcTime(this.options.gcTime);\n\t}\n\t/**\n\t* The `meta` object passed in the mutation's options, if any.\n\t*/\n\tget meta() {\n\t\treturn this.options.meta;\n\t}\n\t/** @internal */\n\taddObserver(observer) {\n\t\tif (!this.#observers.includes(observer)) {\n\t\t\tthis.#observers.push(observer);\n\t\t\tthis.clearGcTimeout();\n\t\t\tthis.#mutationCache.notify({\n\t\t\t\ttype: \"observerAdded\",\n\t\t\t\tmutation: this,\n\t\t\t\tobserver\n\t\t\t});\n\t\t}\n\t}\n\t/** @internal */\n\tremoveObserver(observer) {\n\t\tthis.#observers = this.#observers.filter((x) => x !== observer);\n\t\tthis.scheduleGc();\n\t\tthis.#mutationCache.notify({\n\t\t\ttype: \"observerRemoved\",\n\t\t\tmutation: this,\n\t\t\tobserver\n\t\t});\n\t}\n\toptionalRemove() {\n\t\tif (!this.#observers.length) {\n\t\t\tif (this.state.status === \"pending\") this.scheduleGc();\n\t\t\telse this.#mutationCache.remove(this);\n\t\t}\n\t}\n\t/**\n\t* Resumes a mutation that is currently paused or was restored from a\n\t* dehydrated, still-`pending` state.\n\t*\n\t* - If this mutation has an active retryer (it paused mid-attempt, e.g. due\n\t* to the network mode or scope-based queuing), its retryer is resumed.\n\t* - Otherwise, if the mutation's status is still `pending` (e.g. it was\n\t* dehydrated while an attempt was in flight and never got a retryer in\n\t* this instance), `execute` is called again with the last known variables.\n\t* - Otherwise the mutation has already settled and this resolves immediately\n\t* without running anything again.\n\t*\n\t* @example\n\t* ```ts\n\t* // typically driven by reconnect handling, e.g. queryClient.resumePausedMutations()\n\t* const mutation = mutationCache.find({ mutationKey: ['addPost'] })\n\t* await mutation?.continue()\n\t* ```\n\t*\n\t* @see {@link Mutation#execute}\n\t*/\n\tcontinue() {\n\t\treturn this.#retryer?.continue() ?? (this.state.status === \"pending\" ? this.execute(this.state.variables) : Promise.resolve());\n\t}\n\t/**\n\t* Runs the mutation function for the given variables through a retryer, and\n\t* drives the mutation's state and lifecycle callbacks through to settlement.\n\t*\n\t* If this mutation's state is already `pending` when `execute` is called\n\t* (i.e. it was restored, still in-flight, from a dehydrated state), the\n\t* `onMutate` step is skipped and a `continue` action is dispatched to\n\t* unpause it; otherwise a `pending` action is dispatched first, then the\n\t* mutation cache's `onMutate` and the mutation's own `onMutate` option are\n\t* awaited in that order, and the resulting context is stored.\n\t*\n\t* The mutation function is then run (subject to `retry`/`retryDelay`/\n\t* `networkMode`, and to the mutation cache's scope-based serialization).\n\t* On success, the cache's `onSuccess`/`onSettled` callbacks run before the\n\t* mutation's own `onSuccess`/`onSettled` options, a `success` action is\n\t* dispatched, and the resolved data is returned. On failure, the same\n\t* cache-then-option ordering is used for `onError`/`onSettled`, but each of\n\t* those four callbacks is individually caught so that a throwing callback\n\t* cannot mask the original error; an `error` action is then dispatched and\n\t* the original error is re-thrown.\n\t*\n\t* @example\n\t* ```ts\n\t* // Called internally by `MutationObserver.mutate` and `Mutation.continue` —\n\t* // applications normally trigger mutations through those, not this method.\n\t* const data = await mutation.execute(variables)\n\t* ```\n\t*\n\t* @see {@link Mutation#continue}\n\t*/\n\tasync execute(variables) {\n\t\tconst onContinue = () => {\n\t\t\tthis.#dispatch({ type: \"continue\" });\n\t\t};\n\t\tconst mutationFnContext = {\n\t\t\tclient: this.#client,\n\t\t\tmeta: this.options.meta,\n\t\t\tmutationKey: this.options.mutationKey\n\t\t};\n\t\tconst retryer = this.#retryer = createRetryer({\n\t\t\tfn: () => {\n\t\t\t\tif (!this.options.mutationFn) return Promise.reject(/* @__PURE__ */ new Error(\"No mutationFn found\"));\n\t\t\t\treturn this.options.mutationFn(variables, mutationFnContext);\n\t\t\t},\n\t\t\tonFail: (failureCount, error) => {\n\t\t\t\tthis.#dispatch({\n\t\t\t\t\ttype: \"failed\",\n\t\t\t\t\tfailureCount,\n\t\t\t\t\terror\n\t\t\t\t});\n\t\t\t},\n\t\t\tonPause: () => {\n\t\t\t\tthis.#dispatch({ type: \"pause\" });\n\t\t\t},\n\t\t\tonContinue,\n\t\t\tretry: this.options.retry ?? 0,\n\t\t\tretryDelay: this.options.retryDelay,\n\t\t\tnetworkMode: this.options.networkMode,\n\t\t\tcanRun: () => this.#mutationCache.canRun(this)\n\t\t});\n\t\tconst restored = this.state.status === \"pending\";\n\t\tconst isPaused = !retryer.canStart();\n\t\ttry {\n\t\t\tif (restored) onContinue();\n\t\t\telse {\n\t\t\t\tthis.#dispatch({\n\t\t\t\t\ttype: \"pending\",\n\t\t\t\t\tvariables,\n\t\t\t\t\tisPaused\n\t\t\t\t});\n\t\t\t\tif (this.#mutationCache.config.onMutate) await this.#mutationCache.config.onMutate(variables, this, mutationFnContext);\n\t\t\t\tconst context = await this.options.onMutate?.(variables, mutationFnContext);\n\t\t\t\tif (context !== this.state.context) this.#dispatch({\n\t\t\t\t\ttype: \"pending\",\n\t\t\t\t\tcontext,\n\t\t\t\t\tvariables,\n\t\t\t\t\tisPaused\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst data = await retryer.start();\n\t\t\tawait this.#mutationCache.config.onSuccess?.(data, variables, this.state.context, this, mutationFnContext);\n\t\t\tawait this.options.onSuccess?.(data, variables, this.state.context, mutationFnContext);\n\t\t\tawait this.#mutationCache.config.onSettled?.(data, null, this.state.variables, this.state.context, this, mutationFnContext);\n\t\t\tawait this.options.onSettled?.(data, null, variables, this.state.context, mutationFnContext);\n\t\t\tthis.#dispatch({\n\t\t\t\ttype: \"success\",\n\t\t\t\tdata\n\t\t\t});\n\t\t\treturn data;\n\t\t} catch (error) {\n\t\t\ttry {\n\t\t\t\tawait this.#mutationCache.config.onError?.(error, variables, this.state.context, this, mutationFnContext);\n\t\t\t} catch (e) {\n\t\t\t\tPromise.reject(e);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.options.onError?.(error, variables, this.state.context, mutationFnContext);\n\t\t\t} catch (e) {\n\t\t\t\tPromise.reject(e);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.#mutationCache.config.onSettled?.(void 0, error, this.state.variables, this.state.context, this, mutationFnContext);\n\t\t\t} catch (e) {\n\t\t\t\tPromise.reject(e);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.options.onSettled?.(void 0, error, variables, this.state.context, mutationFnContext);\n\t\t\t} catch (e) {\n\t\t\t\tPromise.reject(e);\n\t\t\t}\n\t\t\tthis.#dispatch({\n\t\t\t\ttype: \"error\",\n\t\t\t\terror\n\t\t\t});\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tif (this.#retryer === retryer) this.#retryer = void 0;\n\t\t\tthis.#mutationCache.runNext(this);\n\t\t}\n\t}\n\t#dispatch(action) {\n\t\tconst reducer = (state) => {\n\t\t\tswitch (action.type) {\n\t\t\t\tcase \"failed\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tfailureCount: action.failureCount,\n\t\t\t\t\tfailureReason: action.error\n\t\t\t\t};\n\t\t\t\tcase \"pause\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tisPaused: true\n\t\t\t\t};\n\t\t\t\tcase \"continue\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tisPaused: false\n\t\t\t\t};\n\t\t\t\tcase \"pending\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tcontext: action.context,\n\t\t\t\t\tdata: void 0,\n\t\t\t\t\tfailureCount: 0,\n\t\t\t\t\tfailureReason: null,\n\t\t\t\t\terror: null,\n\t\t\t\t\tisPaused: action.isPaused,\n\t\t\t\t\tstatus: \"pending\",\n\t\t\t\t\tvariables: action.variables,\n\t\t\t\t\tsubmittedAt: Date.now()\n\t\t\t\t};\n\t\t\t\tcase \"success\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tdata: action.data,\n\t\t\t\t\tfailureCount: 0,\n\t\t\t\t\tfailureReason: null,\n\t\t\t\t\terror: null,\n\t\t\t\t\tstatus: \"success\",\n\t\t\t\t\tisPaused: false\n\t\t\t\t};\n\t\t\t\tcase \"error\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tdata: void 0,\n\t\t\t\t\terror: action.error,\n\t\t\t\t\tfailureCount: state.failureCount + 1,\n\t\t\t\t\tfailureReason: action.error,\n\t\t\t\t\tisPaused: false,\n\t\t\t\t\tstatus: \"error\"\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t\tthis.state = reducer(this.state);\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.#observers.forEach((observer) => {\n\t\t\t\tobserver.onMutationUpdate(action);\n\t\t\t});\n\t\t\tthis.#mutationCache.notify({\n\t\t\t\tmutation: this,\n\t\t\t\ttype: \"updated\",\n\t\t\t\taction\n\t\t\t});\n\t\t});\n\t}\n};\nfunction getDefaultState() {\n\treturn {\n\t\tcontext: void 0,\n\t\tdata: void 0,\n\t\terror: null,\n\t\tfailureCount: 0,\n\t\tfailureReason: null,\n\t\tisPaused: false,\n\t\tstatus: \"idle\",\n\t\tvariables: void 0,\n\t\tsubmittedAt: 0\n\t};\n}\n//#endregion\nexport { Mutation, getDefaultState };\n\n//# sourceMappingURL=mutation.js.map",
|
|
28
|
+
"import { matchMutation, noop } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Mutation } from \"./mutation.js\";\n//#region src/mutationCache.ts\n/**\n* The `MutationCache` is the storage for mutations.\n*\n* Normally, you will not interact with the `MutationCache` directly and instead use a\n* `QueryClient`. You can subscribe to it (inherited from `Subscribable`) to be informed of\n* safe/known updates to the cache, such as mutations being added, removed, or updated.\n*\n* @example\n* ```ts\n* const unsubscribe = mutationCache.subscribe((event) => {\n* console.log(event.type, event.mutation)\n* })\n* ```\n*/\nvar MutationCache = class extends Subscribable {\n\t#mutations;\n\t#scopes;\n\t#mutationId;\n\tconstructor(config = {}) {\n\t\tsuper();\n\t\tthis.config = config;\n\t\tthis.#mutations = /* @__PURE__ */ new Set();\n\t\tthis.#scopes = /* @__PURE__ */ new Map();\n\t\tthis.#mutationId = 0;\n\t}\n\t/** @internal */\n\tbuild(client, options, state) {\n\t\tconst mutation = new Mutation({\n\t\t\tclient,\n\t\t\tmutationCache: this,\n\t\t\tmutationId: ++this.#mutationId,\n\t\t\toptions: client.defaultMutationOptions(options),\n\t\t\tstate\n\t\t});\n\t\tthis.add(mutation);\n\t\treturn mutation;\n\t}\n\t/** @internal */\n\tadd(mutation) {\n\t\tthis.#mutations.add(mutation);\n\t\tconst scope = scopeFor(mutation);\n\t\tif (typeof scope === \"string\") {\n\t\t\tconst scopedMutations = this.#scopes.get(scope);\n\t\t\tif (scopedMutations) scopedMutations.push(mutation);\n\t\t\telse this.#scopes.set(scope, [mutation]);\n\t\t}\n\t\tthis.notify({\n\t\t\ttype: \"added\",\n\t\t\tmutation\n\t\t});\n\t}\n\t/** @internal */\n\tremove(mutation) {\n\t\tif (this.#mutations.delete(mutation)) {\n\t\t\tconst scope = scopeFor(mutation);\n\t\t\tif (typeof scope === \"string\") {\n\t\t\t\tconst scopedMutations = this.#scopes.get(scope);\n\t\t\t\tif (scopedMutations) {\n\t\t\t\t\tif (scopedMutations.length > 1) {\n\t\t\t\t\t\tconst index = scopedMutations.indexOf(mutation);\n\t\t\t\t\t\tif (index !== -1) scopedMutations.splice(index, 1);\n\t\t\t\t\t} else if (scopedMutations[0] === mutation) this.#scopes.delete(scope);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.notify({\n\t\t\ttype: \"removed\",\n\t\t\tmutation\n\t\t});\n\t}\n\t/** @internal */\n\tcanRun(mutation) {\n\t\tconst scope = scopeFor(mutation);\n\t\tif (typeof scope === \"string\") {\n\t\t\tconst firstPendingMutation = this.#scopes.get(scope)?.find((m) => m.state.status === \"pending\");\n\t\t\treturn !firstPendingMutation || firstPendingMutation === mutation;\n\t\t} else return true;\n\t}\n\t/** @internal */\n\trunNext(mutation) {\n\t\tconst scope = scopeFor(mutation);\n\t\tif (typeof scope === \"string\") return (this.#scopes.get(scope)?.find((m) => m !== mutation && m.state.isPaused))?.continue() ?? Promise.resolve();\n\t\telse return Promise.resolve();\n\t}\n\t/**\n\t* Removes all mutations from the cache.\n\t*\n\t* @example\n\t* ```ts\n\t* const mutationCache = queryClient.getMutationCache()\n\t*\n\t* mutationCache.clear()\n\t* ```\n\t*/\n\tclear() {\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.#mutations.forEach((mutation) => {\n\t\t\t\tthis.notify({\n\t\t\t\t\ttype: \"removed\",\n\t\t\t\t\tmutation\n\t\t\t\t});\n\t\t\t});\n\t\t\tthis.#mutations.clear();\n\t\t\tthis.#scopes.clear();\n\t\t});\n\t}\n\t/**\n\t* Returns all mutations within the cache.\n\t*\n\t* This is not typically needed for most applications, but can come in handy when needing more\n\t* information about a mutation in rare scenarios.\n\t*\n\t* @example\n\t* ```ts\n\t* const mutationCache = queryClient.getMutationCache()\n\t*\n\t* const mutations = mutationCache.getAll()\n\t* ```\n\t*/\n\tgetAll() {\n\t\treturn Array.from(this.#mutations);\n\t}\n\t/**\n\t* A slightly more advanced method that can be used to get an existing mutation instance from\n\t* the cache. If the mutation does not exist, `undefined` is returned.\n\t*\n\t* This is not typically needed for most applications, but can come in handy when needing more\n\t* information about a mutation in rare scenarios.\n\t*\n\t* @see {@link MutationCache#findAll}\n\t* @example\n\t* ```ts\n\t* const mutationCache = queryClient.getMutationCache()\n\t*\n\t* const mutation = mutationCache.find({ mutationKey: ['addPost'] })\n\t* ```\n\t*/\n\tfind(filters) {\n\t\tconst defaultedFilters = {\n\t\t\texact: true,\n\t\t\t...filters\n\t\t};\n\t\treturn this.getAll().find((mutation) => matchMutation(defaultedFilters, mutation));\n\t}\n\t/**\n\t* An even more advanced method that can be used to get existing mutation instances from the\n\t* cache that match the given filters. If no mutations match, an empty array is returned.\n\t*\n\t* This is not typically needed for most applications, but can come in handy when needing more\n\t* information about mutations in rare scenarios.\n\t*\n\t* @see {@link MutationCache#find}\n\t* @example\n\t* ```ts\n\t* const mutationCache = queryClient.getMutationCache()\n\t*\n\t* const mutations = mutationCache.findAll({ mutationKey: ['addPost'] })\n\t* ```\n\t*/\n\tfindAll(filters = {}) {\n\t\treturn this.getAll().filter((mutation) => matchMutation(filters, mutation));\n\t}\n\t/** @internal */\n\tnotify(event) {\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.listeners.forEach((listener) => {\n\t\t\t\tlistener(event);\n\t\t\t});\n\t\t});\n\t}\n\t/** @internal */\n\tresumePausedMutations() {\n\t\tconst pausedMutations = this.getAll().filter((x) => x.state.isPaused);\n\t\treturn notifyManager.batch(() => Promise.all(pausedMutations.map((mutation) => mutation.continue().catch(noop))));\n\t}\n};\nfunction scopeFor(mutation) {\n\treturn mutation.options.scope?.id;\n}\n//#endregion\nexport { MutationCache };\n\n//# sourceMappingURL=mutationCache.js.map",
|
|
29
|
+
"import { hashQueryKeyByOptions, matchQuery } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Query } from \"./query.js\";\n//#region src/queryCache.ts\n/**\n* The `QueryCache` is the storage mechanism for TanStack Query. It stores all the data, meta\n* information, and state of the queries it contains.\n*\n* Normally, you will not interact with the `QueryCache` directly and instead use a `QueryClient`\n* for a specific cache. You can subscribe to it (inherited from `Subscribable`) to be informed of\n* safe/known updates to the cache, such as queries being added, removed, or updated — updates made\n* outside of the cache's own tracked mechanisms (e.g. mutating a query's state object directly) do\n* not notify subscribers.\n*\n* @example\n* ```ts\n* const unsubscribe = queryCache.subscribe((event) => {\n* console.log(event.type, event.query)\n* })\n* ```\n*/\nvar QueryCache = class extends Subscribable {\n\t#queries;\n\tconstructor(config = {}) {\n\t\tsuper();\n\t\tthis.config = config;\n\t\tthis.#queries = /* @__PURE__ */ new Map();\n\t}\n\t/**\n\t* Returns the existing `Query` instance for the given options' `queryKey`/`queryHash`, or\n\t* builds and adds a new one to the cache if none exists yet. Used by framework adapters and\n\t* plugins (e.g. broadcast/persistence) that need to get-or-create a `Query` directly, bypassing\n\t* the reactive `QueryObserver` machinery.\n\t*\n\t* @example\n\t* ```ts\n\t* const queryCache = queryClient.getQueryCache()\n\t*\n\t* const query = queryCache.build(queryClient, {\n\t* queryKey: ['posts'],\n\t* queryFn: fetchPosts,\n\t* })\n\t* ```\n\t*/\n\tbuild(client, options, state) {\n\t\tconst queryKey = options.queryKey;\n\t\tconst queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n\t\tlet query = this.get(queryHash);\n\t\tif (!query) {\n\t\t\tquery = new Query({\n\t\t\t\tclient,\n\t\t\t\tqueryKey,\n\t\t\t\tqueryHash,\n\t\t\t\toptions: client.defaultQueryOptions(options),\n\t\t\t\tstate,\n\t\t\t\tdefaultOptions: client.getQueryDefaults(queryKey)\n\t\t\t});\n\t\t\tthis.add(query);\n\t\t}\n\t\treturn query;\n\t}\n\t/** @internal */\n\tadd(query) {\n\t\tif (!this.#queries.has(query.queryHash)) {\n\t\t\tthis.#queries.set(query.queryHash, query);\n\t\t\tthis.notify({\n\t\t\t\ttype: \"added\",\n\t\t\t\tquery\n\t\t\t});\n\t\t}\n\t}\n\t/**\n\t* Destroys the given `Query` and removes it from the cache, notifying subscribers with a\n\t* `'removed'` event. A no-op if the query is no longer the one currently stored under its hash\n\t* (e.g. it was already replaced). Used by plugins (e.g. the broadcast client) that mirror\n\t* removals across `QueryCache` instances.\n\t*\n\t* @example\n\t* ```ts\n\t* const queryCache = queryClient.getQueryCache()\n\t* const query = queryCache.find({ queryKey: ['posts'] })\n\t*\n\t* if (query) {\n\t* queryCache.remove(query)\n\t* }\n\t* ```\n\t*/\n\tremove(query) {\n\t\tconst queryInMap = this.#queries.get(query.queryHash);\n\t\tif (queryInMap) {\n\t\t\tquery.destroy();\n\t\t\tif (queryInMap === query) this.#queries.delete(query.queryHash);\n\t\t\tthis.notify({\n\t\t\t\ttype: \"removed\",\n\t\t\t\tquery\n\t\t\t});\n\t\t}\n\t}\n\t/**\n\t* Removes all queries from the cache.\n\t*\n\t* @example\n\t* ```ts\n\t* const queryCache = queryClient.getQueryCache()\n\t*\n\t* queryCache.clear()\n\t* ```\n\t*/\n\tclear() {\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.getAll().forEach((query) => {\n\t\t\t\tthis.remove(query);\n\t\t\t});\n\t\t});\n\t}\n\t/**\n\t* Returns the `Query` instance stored under the given `queryHash`, or `undefined` if none\n\t* exists. Unlike {@link QueryCache#find}, this looks up by the already-computed hash rather\n\t* than by `QueryFilters`. Used by plugins (e.g. broadcast/hydration) that already have a hash\n\t* to look up directly.\n\t*\n\t* @example\n\t* ```ts\n\t* const queryCache = queryClient.getQueryCache()\n\t* const queryHash = hashKey(['posts'])\n\t*\n\t* const query = queryCache.get(queryHash)\n\t* ```\n\t*/\n\tget(queryHash) {\n\t\treturn this.#queries.get(queryHash);\n\t}\n\t/**\n\t* Returns all queries within the cache.\n\t*\n\t* @example\n\t* ```ts\n\t* const queryCache = queryClient.getQueryCache()\n\t*\n\t* const queries = queryCache.getAll()\n\t* ```\n\t*/\n\tgetAll() {\n\t\treturn [...this.#queries.values()];\n\t}\n\t/**\n\t* A slightly more advanced method that can be used to get an existing query instance from the\n\t* cache. This instance not only contains all the state for the query, but all of the instances,\n\t* and underlying guts of the query as well. If the query does not exist, `undefined` is\n\t* returned.\n\t*\n\t* This is not typically needed for most applications, but can come in handy when needing more\n\t* information about a query in rare scenarios (e.g. looking at `query.state.dataUpdatedAt` to\n\t* decide whether a query is fresh enough to be used as an initial value).\n\t*\n\t* @see {@link QueryCache#findAll}\n\t* @example\n\t* ```ts\n\t* const queryCache = queryClient.getQueryCache()\n\t*\n\t* const query = queryCache.find({ queryKey: ['posts'] })\n\t* ```\n\t*/\n\tfind(filters) {\n\t\tconst defaultedFilters = {\n\t\t\texact: true,\n\t\t\t...filters\n\t\t};\n\t\treturn this.getAll().find((query) => matchQuery(defaultedFilters, query));\n\t}\n\t/**\n\t* An even more advanced method that can be used to get existing query instances from the cache\n\t* that partially match a query key. If no queries match, an empty array is returned.\n\t*\n\t* This is not typically needed for most applications, but can come in handy when needing more\n\t* information about queries in rare scenarios.\n\t*\n\t* @see {@link QueryCache#find}\n\t* @example\n\t* ```ts\n\t* const queryCache = queryClient.getQueryCache()\n\t*\n\t* const queries = queryCache.findAll({ queryKey: ['posts'] })\n\t* ```\n\t*/\n\tfindAll(filters = {}) {\n\t\tconst queries = this.getAll();\n\t\treturn Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n\t}\n\t/** @internal */\n\tnotify(event) {\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.listeners.forEach((listener) => {\n\t\t\t\tlistener(event);\n\t\t\t});\n\t\t});\n\t}\n\t/** @internal */\n\tonFocus() {\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.getAll().forEach((query) => {\n\t\t\t\tquery.onFocus();\n\t\t\t});\n\t\t});\n\t}\n\t/** @internal */\n\tonOnline() {\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.getAll().forEach((query) => {\n\t\t\t\tquery.onOnline();\n\t\t\t});\n\t\t});\n\t}\n};\n//#endregion\nexport { QueryCache };\n\n//# sourceMappingURL=queryCache.js.map",
|
|
30
|
+
"import { functionalUpdate, hashKey, hashQueryKeyByOptions, noop, partialMatchKey, resolveQueryValue, skipToken } from \"./utils.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { MutationCache } from \"./mutationCache.js\";\nimport { QueryCache } from \"./queryCache.js\";\n//#region src/queryClient.ts\n/**\n* `QueryClient` is used to interact with a cache of queries and mutations. It owns a\n* `QueryCache` and a `MutationCache` (creating default ones if none are passed in) and holds\n* the default options that are applied to queries and mutations created through it.\n*\n* @example\n* ```ts\n* const queryClient = new QueryClient({\n* defaultOptions: {\n* queries: {\n* staleTime: Infinity,\n* },\n* },\n* })\n*\n* await queryClient.query({ queryKey: ['posts'], queryFn: fetchPosts })\n* ```\n*/\nvar QueryClient = class {\n\t#queryCache;\n\t#mutationCache;\n\t#defaultOptions;\n\t#queryDefaults;\n\t#mutationDefaults;\n\t#mountCount;\n\t#unsubscribeFocus;\n\t#unsubscribeOnline;\n\tconstructor(config = {}) {\n\t\tthis.#queryCache = config.queryCache || new QueryCache();\n\t\tthis.#mutationCache = config.mutationCache || new MutationCache();\n\t\tthis.#defaultOptions = config.defaultOptions || {};\n\t\tthis.#queryDefaults = /* @__PURE__ */ new Map();\n\t\tthis.#mutationDefaults = /* @__PURE__ */ new Map();\n\t\tthis.#mountCount = 0;\n\t}\n\t/**\n\t* Called by a framework adapter's `QueryClientProvider`-equivalent when it mounts, to start\n\t* listening for focus/online events and resume paused mutations. Ref-counted via an internal\n\t* mount count, so nested or multiple providers sharing the same `QueryClient` don't tear down\n\t* the shared listeners until the last one unmounts.\n\t*/\n\tmount() {\n\t\tthis.#mountCount++;\n\t\tif (this.#mountCount !== 1) return;\n\t\tthis.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n\t\t\tif (focused) {\n\t\t\t\tawait this.resumePausedMutations();\n\t\t\t\tthis.#queryCache.onFocus();\n\t\t\t}\n\t\t});\n\t\tthis.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n\t\t\tif (online) {\n\t\t\t\tawait this.resumePausedMutations();\n\t\t\t\tthis.#queryCache.onOnline();\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* The inverse of {@link QueryClient#mount} — called by a framework adapter's\n\t* `QueryClientProvider`-equivalent when it unmounts. Only tears down the focus/online\n\t* listeners once the mount count returns to `0`.\n\t*/\n\tunmount() {\n\t\tthis.#mountCount--;\n\t\tif (this.#mountCount !== 0) return;\n\t\tthis.#unsubscribeFocus?.();\n\t\tthis.#unsubscribeFocus = void 0;\n\t\tthis.#unsubscribeOnline?.();\n\t\tthis.#unsubscribeOnline = void 0;\n\t}\n\t/**\n\t* Returns the number of queries in the cache that are currently fetching, optionally\n\t* matching a set of filters. This includes background-fetching, loading new pages, and\n\t* loading more infinite query results.\n\t*\n\t* @example\n\t* ```ts\n\t* if (queryClient.isFetching()) {\n\t* console.log('At least one query is fetching!')\n\t* }\n\t* ```\n\t*/\n\tisFetching(filters) {\n\t\treturn this.#queryCache.findAll({\n\t\t\t...filters,\n\t\t\tfetchStatus: \"fetching\"\n\t\t}).length;\n\t}\n\t/**\n\t* Returns the number of mutations in the cache that are currently pending, optionally\n\t* matching a set of filters.\n\t*\n\t* @example\n\t* ```ts\n\t* if (queryClient.isMutating()) {\n\t* console.log('At least one mutation is pending!')\n\t* }\n\t* ```\n\t*/\n\tisMutating(filters) {\n\t\treturn this.#mutationCache.findAll({\n\t\t\t...filters,\n\t\t\tstatus: \"pending\"\n\t\t}).length;\n\t}\n\t/**\n\t* Imperative (non-reactive) way to retrieve data for a QueryKey.\n\t* Should only be used in callbacks or functions where reading the latest data is necessary, e.g. for optimistic updates.\n\t*\n\t* Hint: Do not use this function inside a component, because it won't receive updates.\n\t* Use `useQuery` to create a `QueryObserver` that subscribes to changes.\n\t*\n\t* @see {@link QueryClient#getQueriesData}\n\t*/\n\tgetQueryData(queryKey) {\n\t\tconst options = this.defaultQueryOptions({ queryKey });\n\t\treturn this.#queryCache.get(options.queryHash)?.state.data;\n\t}\n\t/**\n\t* @deprecated Use queryClient.query({ ...options, staleTime: 'static' }) instead. This method will be removed in the next major version.\n\t*/\n\tensureQueryData(options) {\n\t\tconst defaultedOptions = this.defaultQueryOptions(options);\n\t\tconst query = this.#queryCache.build(this, defaultedOptions);\n\t\tconst cachedData = query.state.data;\n\t\tif (cachedData === void 0) return this.fetchQuery(options);\n\t\tif (options.revalidateIfStale && query.isStaleByTime(resolveQueryValue(defaultedOptions.staleTime, query))) this.prefetchQuery(defaultedOptions);\n\t\treturn Promise.resolve(cachedData);\n\t}\n\t/**\n\t* Imperative (non-reactive) way to retrieve the cached data of multiple queries at once.\n\t* Only queries matching the given filters are returned; if none match, an empty array is\n\t* returned.\n\t*\n\t* Because the matched queries can hold data of different shapes (e.g. a broad filter can match\n\t* queries with unrelated data types), the `TQueryFnData` generic defaults to `unknown` rather\n\t* than being inferred. Passing a more specific type is a convenience for call sites that know\n\t* every matched query holds the same shape — it is not checked against the actual cache\n\t* contents.\n\t*\n\t* @see {@link QueryClient#getQueryData}\n\t* @example\n\t* ```ts\n\t* const data = queryClient.getQueriesData({ queryKey: ['posts'] })\n\t* ```\n\t*/\n\tgetQueriesData(filters) {\n\t\treturn this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n\t\t\treturn [queryKey, state.data];\n\t\t});\n\t}\n\t/**\n\t* Synchronous way to immediately update a query's cached data. If the updater (or the value\n\t* passed) resolves to `undefined`, the cache is left untouched and no query is created;\n\t* otherwise, if the query does not exist yet, it will be created. To update multiple queries\n\t* at once by partially matching query keys, use {@link QueryClient#setQueriesData} instead.\n\t*\n\t* Updates must be performed immutably: do not mutate `oldData`, or data previously retrieved\n\t* via {@link QueryClient#getQueryData}, in place.\n\t*\n\t* @param queryKey - The query key to set data for.\n\t* @param updater - Either the new data, or a function that receives the current data (which\n\t* may be `undefined`) and returns the new data.\n\t*\n\t* @example\n\t* ```ts\n\t* queryClient.setQueryData(['posts'], newPosts)\n\t*\n\t* // Or, using an updater function that receives the current data:\n\t* queryClient.setQueryData(['posts'], (oldPosts) => [...oldPosts, newPost])\n\t* ```\n\t*/\n\tsetQueryData(queryKey, updater, options) {\n\t\tconst defaultedOptions = this.defaultQueryOptions({ queryKey });\n\t\tconst prevData = this.#queryCache.get(defaultedOptions.queryHash)?.state.data;\n\t\tconst data = functionalUpdate(updater, prevData);\n\t\tif (data === void 0) return;\n\t\treturn this.#queryCache.build(this, defaultedOptions).setData(data, {\n\t\t\t...options,\n\t\t\tmanual: true\n\t\t});\n\t}\n\t/**\n\t* Synchronous way to immediately update the cached data of multiple queries at once, using\n\t* filters or partial query key matching. Only queries that already exist and match the given\n\t* filters are updated; no new cache entries are created. Internally this calls\n\t* {@link QueryClient#setQueryData} for each matching query.\n\t*\n\t* @example\n\t* ```ts\n\t* queryClient.setQueriesData({ queryKey: ['posts'] }, (oldPosts) =>\n\t* oldPosts ? oldPosts.filter((post) => post.id !== deletedId) : oldPosts,\n\t* )\n\t* ```\n\t*/\n\tsetQueriesData(filters, updater, options) {\n\t\treturn notifyManager.batch(() => this.#queryCache.findAll(filters).map(({ queryKey }) => [queryKey, this.setQueryData(queryKey, updater, options)]));\n\t}\n\t/**\n\t* Imperative (non-reactive) way to retrieve an existing query's state. If the query does not\n\t* exist, `undefined` is returned.\n\t*\n\t* @example\n\t* ```ts\n\t* const state = queryClient.getQueryState(['posts'])\n\t* console.log(state?.dataUpdatedAt)\n\t* ```\n\t*/\n\tgetQueryState(queryKey) {\n\t\tconst options = this.defaultQueryOptions({ queryKey });\n\t\treturn this.#queryCache.get(options.queryHash)?.state;\n\t}\n\t/**\n\t* Removes queries from the cache that match the given filters. Unlike\n\t* {@link QueryClient#invalidateQueries} or {@link QueryClient#refetchQueries}, this removes\n\t* matching queries from the cache instead of refetching them. Without filters, every query in\n\t* the cache is removed.\n\t*\n\t* @example\n\t* ```ts\n\t* queryClient.removeQueries({ queryKey: ['posts'], exact: true })\n\t* ```\n\t*/\n\tremoveQueries(filters) {\n\t\tconst queryCache = this.#queryCache;\n\t\tnotifyManager.batch(() => {\n\t\t\tqueryCache.findAll(filters).forEach((query) => {\n\t\t\t\tqueryCache.remove(query);\n\t\t\t});\n\t\t});\n\t}\n\t/**\n\t* Resets queries matching the given filters back to their initial state (e.g. any\n\t* `initialData`), notifying subscribers rather than removing them. Active queries among the\n\t* matched set are then refetched, and the returned promise resolves once that refetch settles.\n\t*\n\t* @example\n\t* ```ts\n\t* await queryClient.resetQueries({ queryKey: ['posts'], exact: true })\n\t* ```\n\t*/\n\tresetQueries(filters, options) {\n\t\tconst queryCache = this.#queryCache;\n\t\treturn notifyManager.batch(() => {\n\t\t\tconst matched = queryCache.findAll(filters);\n\t\t\tconst queriesToRefetch = new Set(matched);\n\t\t\tmatched.forEach((query) => {\n\t\t\t\tquery.reset();\n\t\t\t});\n\t\t\treturn this.refetchQueries({\n\t\t\t\ttype: \"active\",\n\t\t\t\tpredicate: (query) => queriesToRefetch.has(query)\n\t\t\t}, options);\n\t\t});\n\t}\n\t/**\n\t* Cancels outgoing fetches for queries matching the given filters. Most useful when performing\n\t* optimistic updates, since any outgoing refetch that resolves afterwards would otherwise\n\t* overwrite the optimistic update. By default (`revert: true`), a cancelled query's data is\n\t* reverted to its state before the outgoing fetch started.\n\t*\n\t* The returned promise never rejects, even if individual cancellations fail.\n\t*\n\t* @example\n\t* ```ts\n\t* await queryClient.cancelQueries({ queryKey: ['posts'], exact: true })\n\t* ```\n\t*/\n\tcancelQueries(filters, cancelOptions = {}) {\n\t\tconst defaultedCancelOptions = {\n\t\t\trevert: true,\n\t\t\t...cancelOptions\n\t\t};\n\t\tconst promises = notifyManager.batch(() => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions)));\n\t\treturn Promise.all(promises).then(noop).catch(noop);\n\t}\n\t/**\n\t* Marks queries matching the given filters as invalidated. Unlike\n\t* {@link QueryClient#removeQueries}, invalidated queries stay in the cache.\n\t*\n\t* Unless `filters.refetchType` is `'none'`, matching queries are then refetched via\n\t* {@link QueryClient#refetchQueries}, using `filters.refetchType` if set, otherwise\n\t* `filters.type`, otherwise `'active'`.\n\t*\n\t* @example\n\t* ```ts\n\t* await queryClient.invalidateQueries({ queryKey: ['posts'], refetchType: 'active' })\n\t* ```\n\t*/\n\tinvalidateQueries(filters, options = {}) {\n\t\treturn notifyManager.batch(() => {\n\t\t\tthis.#queryCache.findAll(filters).forEach((query) => {\n\t\t\t\tquery.invalidate();\n\t\t\t});\n\t\t\tif (filters?.refetchType === \"none\") return Promise.resolve();\n\t\t\treturn this.refetchQueries({\n\t\t\t\t...filters,\n\t\t\t\ttype: filters?.refetchType ?? filters?.type ?? \"active\"\n\t\t\t}, options);\n\t\t});\n\t}\n\t/**\n\t* Refetches queries matching the given filters, regardless of whether they are stale. Without\n\t* filters, every query in the cache is refetched. Queries that are disabled, or static (only\n\t* have observers with a static `staleTime`), are never refetched.\n\t*\n\t* By default (`cancelRefetch: true`), a currently running fetch is cancelled before the new\n\t* one starts. The returned promise resolves once all matching queries have settled; it does\n\t* not reject on individual query failures unless `throwOnError` is set.\n\t*\n\t* @example\n\t* ```ts\n\t* // refetch all active queries partially matching a query key:\n\t* await queryClient.refetchQueries({ queryKey: ['posts'], type: 'active' })\n\t* ```\n\t*/\n\trefetchQueries(filters, options = {}) {\n\t\tconst fetchOptions = {\n\t\t\t...options,\n\t\t\tcancelRefetch: options.cancelRefetch ?? true\n\t\t};\n\t\tconst promises = notifyManager.batch(() => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled() && !query.isStatic()).map((query) => {\n\t\t\tlet promise = query.fetch(void 0, fetchOptions);\n\t\t\tif (!fetchOptions.throwOnError) promise = promise.catch(noop);\n\t\t\treturn query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n\t\t}));\n\t\treturn Promise.all(promises).then(noop);\n\t}\n\t/**\n\t* Asynchronous method to fetch and cache a query, resolving with the data or throwing with\n\t* the error.\n\t*\n\t* If the query already exists in the cache and its data is not stale (per the given\n\t* `staleTime`), the cached data is returned without fetching. Otherwise, the query is fetched\n\t* and the promise resolves once the fetch settles. If a `select` function is provided, it is\n\t* applied to the data in both cases (cached or freshly fetched) before it is returned.\n\t*\n\t* Unlike a reactive observer, retries are disabled by default here (`retry: false`) unless\n\t* explicitly configured, since there is no component to catch a thrown error and retry through\n\t* re-render.\n\t*\n\t* The accepted options are `QueryObserverOptions` minus the fields that only make sense for a\n\t* reactive observer — `enabled`, `refetchInterval`, `refetchIntervalInBackground`,\n\t* `refetchOnWindowFocus`, `refetchOnReconnect`, `refetchOnMount`, `retryOnMount`,\n\t* `notifyOnChangeProps`, `throwOnError`, `suspense`, and `placeholderData` are not part of this\n\t* method's options.\n\t*\n\t* This method replaces the deprecated `fetchQuery`, and — combined with\n\t* `{ staleTime: 'static' }` — the deprecated `ensureQueryData`.\n\t*\n\t* @example\n\t* ```ts\n\t* try {\n\t* const data = await queryClient.query({ queryKey, queryFn, staleTime: 10000 })\n\t* } catch (error) {\n\t* console.log(error)\n\t* }\n\t* ```\n\t*/\n\tasync query(options) {\n\t\tconst defaultedOptions = this.defaultQueryOptions(options);\n\t\tif (defaultedOptions.retry === void 0) defaultedOptions.retry = false;\n\t\tconst query = this.#queryCache.build(this, defaultedOptions);\n\t\tconst queryData = query.isStaleByTime(resolveQueryValue(defaultedOptions.staleTime, query)) ? await query.fetch(defaultedOptions) : query.state.data;\n\t\tconst select = defaultedOptions.select;\n\t\tif (select) return select(queryData);\n\t\treturn queryData;\n\t}\n\t/**\n\t* @deprecated Use queryClient.query(options) instead. This method will be removed in the next major version.\n\t*/\n\tfetchQuery(options) {\n\t\tconst defaultedOptions = this.defaultQueryOptions(options);\n\t\tif (defaultedOptions.retry === void 0) defaultedOptions.retry = false;\n\t\tconst query = this.#queryCache.build(this, defaultedOptions);\n\t\treturn query.isStaleByTime(resolveQueryValue(defaultedOptions.staleTime, query)) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n\t}\n\t/**\n\t* @deprecated Use queryClient.query(options) instead. You can swallow errors with `.catch(noop)`. This method will be removed in the next major version.\n\t*/\n\tprefetchQuery(options) {\n\t\treturn this.fetchQuery(options).then(noop).catch(noop);\n\t}\n\t/**\n\t* Asynchronous method to fetch and cache an infinite query, resolving with an\n\t* {@link InfiniteData} object or throwing with the error.\n\t*\n\t* Behaves like {@link QueryClient#query}, accepting the same options (minus\n\t* `initialPageParam`), plus the required `initialPageParam`, and an optional `pages` /\n\t* `getNextPageParam` pair used to refetch a fixed number of pages from the start.\n\t*\n\t* This method replaces the deprecated `fetchInfiniteQuery`, and — combined with\n\t* `{ staleTime: 'static' }` — the deprecated `ensureInfiniteQueryData`.\n\t*\n\t* @example\n\t* ```ts\n\t* try {\n\t* const data = await queryClient.infiniteQuery({ queryKey, queryFn, initialPageParam: 0 })\n\t* console.log(data.pages)\n\t* } catch (error) {\n\t* console.log(error)\n\t* }\n\t* ```\n\t*/\n\tinfiniteQuery(options) {\n\t\toptions._type = \"infinite\";\n\t\treturn this.query(options);\n\t}\n\t/**\n\t* @deprecated Use queryClient.infiniteQuery(options) instead. This method will be removed in the next major version.\n\t*/\n\tfetchInfiniteQuery(options) {\n\t\toptions._type = \"infinite\";\n\t\treturn this.fetchQuery(options);\n\t}\n\t/**\n\t* @deprecated Use queryClient.infiniteQuery(options) instead. You can swallow errors with `.catch(noop)`. This method will be removed in the next major version.\n\t*/\n\tprefetchInfiniteQuery(options) {\n\t\treturn this.fetchInfiniteQuery(options).then(noop).catch(noop);\n\t}\n\t/**\n\t* @deprecated Use queryClient.infiniteQuery({ ...options, staleTime: 'static' }) instead. This method will be removed in the next major version.\n\t*/\n\tensureInfiniteQueryData(options) {\n\t\toptions._type = \"infinite\";\n\t\treturn this.ensureQueryData(options);\n\t}\n\t/**\n\t* Resumes mutations that were paused because there was no network connection. Does nothing\n\t* (resolving immediately) if the client is currently offline.\n\t*\n\t* @example\n\t* ```ts\n\t* import { QueryClient } from '@tanstack/query-core'\n\t*\n\t* const queryClient = new QueryClient()\n\t* await queryClient.resumePausedMutations()\n\t* ```\n\t*/\n\tresumePausedMutations() {\n\t\tif (onlineManager.isOnline()) return this.#mutationCache.resumePausedMutations();\n\t\treturn Promise.resolve();\n\t}\n\t/**\n\t* Returns the query cache this client is connected to.\n\t*\n\t* @example\n\t* ```ts\n\t* import { QueryClient } from '@tanstack/query-core'\n\t*\n\t* const queryClient = new QueryClient()\n\t* const queryCache = queryClient.getQueryCache()\n\t* const queries = queryCache.findAll({ queryKey: ['posts'] })\n\t* ```\n\t*/\n\tgetQueryCache() {\n\t\treturn this.#queryCache;\n\t}\n\t/**\n\t* Returns the mutation cache this client is connected to.\n\t*\n\t* @example\n\t* ```ts\n\t* import { QueryClient } from '@tanstack/query-core'\n\t*\n\t* const queryClient = new QueryClient()\n\t* const mutationCache = queryClient.getMutationCache()\n\t* const mutations = mutationCache.findAll({ status: 'pending' })\n\t* ```\n\t*/\n\tgetMutationCache() {\n\t\treturn this.#mutationCache;\n\t}\n\t/**\n\t* Returns the default options that were set when creating the client, or via\n\t* {@link QueryClient#setDefaultOptions}.\n\t*\n\t* @example\n\t* ```ts\n\t* import { QueryClient } from '@tanstack/query-core'\n\t*\n\t* const queryClient = new QueryClient()\n\t* const defaultOptions = queryClient.getDefaultOptions()\n\t* ```\n\t*/\n\tgetDefaultOptions() {\n\t\treturn this.#defaultOptions;\n\t}\n\t/**\n\t* Dynamically sets the default options for this client, overwriting any previously defined\n\t* default options.\n\t*\n\t* @see {@link QueryClient#getDefaultOptions}\n\t* @example\n\t* ```ts\n\t* import { QueryClient } from '@tanstack/query-core'\n\t*\n\t* const queryClient = new QueryClient()\n\t* queryClient.setDefaultOptions({\n\t* queries: {\n\t* staleTime: Infinity,\n\t* },\n\t* })\n\t* ```\n\t*/\n\tsetDefaultOptions(options) {\n\t\tthis.#defaultOptions = options;\n\t}\n\t/**\n\t* Sets default options for queries whose query key partially matches the given `queryKey`.\n\t*\n\t* If several registered query defaults match a given query key, they are merged together in\n\t* registration order by {@link QueryClient#getQueryDefaults}, so register defaults from the\n\t* most generic key to the least generic one — more specific defaults should be registered\n\t* after more generic ones so they take precedence.\n\t*\n\t* @example\n\t* ```ts\n\t* queryClient.setQueryDefaults(['posts'], { queryFn: fetchPosts })\n\t*\n\t* await queryClient.query({ queryKey: ['posts'] })\n\t* ```\n\t*/\n\tsetQueryDefaults(queryKey, options) {\n\t\tthis.#queryDefaults.set(hashKey(queryKey), {\n\t\t\tqueryKey,\n\t\t\tdefaultOptions: options\n\t\t});\n\t}\n\t/**\n\t* Returns the default options registered for queries whose query key partially matches the\n\t* given `queryKey`, via {@link QueryClient#setQueryDefaults}. If multiple registered defaults\n\t* match, they are merged together in registration order.\n\t*\n\t* @example\n\t* ```ts\n\t* const defaultOptions = queryClient.getQueryDefaults(['posts'])\n\t* ```\n\t*/\n\tgetQueryDefaults(queryKey) {\n\t\tconst defaults = [...this.#queryDefaults.values()];\n\t\tconst result = {};\n\t\tdefaults.forEach((queryDefault) => {\n\t\t\tif (partialMatchKey(queryKey, queryDefault.queryKey)) Object.assign(result, queryDefault.defaultOptions);\n\t\t});\n\t\treturn result;\n\t}\n\t/**\n\t* Sets default options for mutations whose mutation key partially matches the given\n\t* `mutationKey`. As with {@link QueryClient#setQueryDefaults}, the order of registration\n\t* matters when several registered defaults match the same mutation key.\n\t*\n\t* @see {@link QueryClient#getMutationDefaults}\n\t* @example\n\t* ```ts\n\t* queryClient.setMutationDefaults(['addPost'], { mutationFn: addPost })\n\t* ```\n\t*/\n\tsetMutationDefaults(mutationKey, options) {\n\t\tthis.#mutationDefaults.set(hashKey(mutationKey), {\n\t\t\tmutationKey,\n\t\t\tdefaultOptions: options\n\t\t});\n\t}\n\t/**\n\t* Returns the default options registered for mutations whose mutation key partially matches\n\t* the given `mutationKey`, via {@link QueryClient#setMutationDefaults}. If multiple registered\n\t* defaults match, they are merged together in registration order.\n\t*\n\t* @example\n\t* ```ts\n\t* const defaultOptions = queryClient.getMutationDefaults(['addPost'])\n\t* ```\n\t*/\n\tgetMutationDefaults(mutationKey) {\n\t\tconst defaults = [...this.#mutationDefaults.values()];\n\t\tconst result = {};\n\t\tdefaults.forEach((queryDefault) => {\n\t\t\tif (partialMatchKey(mutationKey, queryDefault.mutationKey)) Object.assign(result, queryDefault.defaultOptions);\n\t\t});\n\t\treturn result;\n\t}\n\t/**\n\t* Called by framework adapters (e.g. inside `useQuery`) to resolve the options passed by the\n\t* caller into their final, defaulted form: merging `queryClient.setQueryDefaults` for the\n\t* given `queryKey`, then the client's own `defaultOptions.queries`, then the caller's options\n\t* on top. A no-op if the options are already defaulted (`_defaulted: true`).\n\t*/\n\tdefaultQueryOptions(options) {\n\t\tif (options._defaulted) return options;\n\t\tconst defaultedOptions = {\n\t\t\t...this.#defaultOptions.queries,\n\t\t\t...this.getQueryDefaults(options.queryKey),\n\t\t\t...options,\n\t\t\t_defaulted: true\n\t\t};\n\t\tif (!defaultedOptions.queryHash) defaultedOptions.queryHash = hashQueryKeyByOptions(defaultedOptions.queryKey, defaultedOptions);\n\t\tif (defaultedOptions.refetchOnReconnect === void 0) defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n\t\tif (defaultedOptions.throwOnError === void 0) defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n\t\tif (!defaultedOptions.networkMode && defaultedOptions.persister) defaultedOptions.networkMode = \"offlineFirst\";\n\t\tif (defaultedOptions.queryFn === skipToken) defaultedOptions.enabled = false;\n\t\treturn defaultedOptions;\n\t}\n\t/**\n\t* The mutation counterpart of {@link QueryClient#defaultQueryOptions}. Called by framework\n\t* adapters (e.g. inside `useMutation`) to merge `queryClient.setMutationDefaults` for the\n\t* given `mutationKey`, then the client's `defaultOptions.mutations`, then the caller's options\n\t* on top. A no-op if the options are already defaulted (`_defaulted: true`).\n\t*/\n\tdefaultMutationOptions(options) {\n\t\tif (options?._defaulted) return options;\n\t\treturn {\n\t\t\t...this.#defaultOptions.mutations,\n\t\t\t...options?.mutationKey && this.getMutationDefaults(options.mutationKey),\n\t\t\t...options,\n\t\t\t_defaulted: true\n\t\t};\n\t}\n\t/**\n\t* Clears both the query cache and the mutation cache this client is connected to.\n\t*\n\t* @example\n\t* ```ts\n\t* import { QueryClient } from '@tanstack/query-core'\n\t*\n\t* const queryClient = new QueryClient()\n\t* queryClient.clear()\n\t* ```\n\t*/\n\tclear() {\n\t\tthis.#queryCache.clear();\n\t\tthis.#mutationCache.clear();\n\t}\n};\n//#endregion\nexport { QueryClient };\n\n//# sourceMappingURL=queryClient.js.map",
|
|
31
|
+
"\"use client\";\nimport * as React from \"react\";\nimport { shouldThrowError } from \"@tanstack/query-core\";\n//#region src/errorBoundaryUtils.ts\nconst ensurePreventErrorBoundaryRetry = (options, errorResetBoundary, query) => {\n\tconst throwOnError = query?.state.error && typeof options.throwOnError === \"function\" ? shouldThrowError(options.throwOnError, [query.state.error, query]) : options.throwOnError;\n\tif (options.suspense || throwOnError) {\n\t\tif (!errorResetBoundary.isReset()) options.retryOnMount = false;\n\t}\n};\nconst useClearResetErrorBoundary = (errorResetBoundary) => {\n\tReact.useEffect(() => {\n\t\terrorResetBoundary.clearReset();\n\t}, [errorResetBoundary]);\n};\nconst getHasError = ({ result, errorResetBoundary, throwOnError, query, suspense }) => {\n\treturn result.isError && !errorResetBoundary.isReset() && !result.isFetching && query && (suspense && result.data === void 0 || shouldThrowError(throwOnError, [result.error, query]));\n};\n//#endregion\nexport { ensurePreventErrorBoundaryRetry, getHasError, useClearResetErrorBoundary };\n\n//# sourceMappingURL=errorBoundaryUtils.js.map",
|
|
32
|
+
"//#region src/suspense.ts\nconst defaultThrowOnError = (_error, query) => query.state.data === void 0;\nconst ensureSuspenseTimers = (defaultedOptions) => {\n\tif (defaultedOptions.suspense) {\n\t\tconst MIN_SUSPENSE_TIME_MS = 1e3;\n\t\tconst clamp = (value) => value === \"static\" ? value : Math.max(value ?? MIN_SUSPENSE_TIME_MS, MIN_SUSPENSE_TIME_MS);\n\t\tconst originalStaleTime = defaultedOptions.staleTime;\n\t\tdefaultedOptions.staleTime = typeof originalStaleTime === \"function\" ? (...args) => clamp(originalStaleTime(...args)) : clamp(originalStaleTime);\n\t\tif (typeof defaultedOptions.gcTime === \"number\") defaultedOptions.gcTime = Math.max(defaultedOptions.gcTime, MIN_SUSPENSE_TIME_MS);\n\t}\n};\nconst shouldSuspend = (defaultedOptions, result) => defaultedOptions?.suspense && result.isPending;\nconst fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).catch(() => {\n\terrorResetBoundary.clearReset();\n});\n//#endregion\nexport { defaultThrowOnError, ensureSuspenseTimers, fetchOptimistic, shouldSuspend };\n\n//# sourceMappingURL=suspense.js.map",
|
|
33
|
+
"\"use client\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { useIsRestoring } from \"./IsRestoringProvider.js\";\nimport { useQueryErrorResetBoundary } from \"./QueryErrorResetBoundary.js\";\nimport { ensurePreventErrorBoundaryRetry, getHasError, useClearResetErrorBoundary } from \"./errorBoundaryUtils.js\";\nimport { ensureSuspenseTimers, fetchOptimistic, shouldSuspend } from \"./suspense.js\";\nimport * as React from \"react\";\nimport { noop, notifyManager } from \"@tanstack/query-core\";\n//#region src/useBaseQuery.ts\nfunction useBaseQuery(options, Observer, queryClient) {\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tif (typeof options !== \"object\" || Array.isArray(options)) throw new Error(\"Bad argument type. Starting with v5, only the \\\"Object\\\" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object\");\n\t}\n\tconst isRestoring = useIsRestoring();\n\tconst errorResetBoundary = useQueryErrorResetBoundary();\n\tconst client = useQueryClient(queryClient);\n\tconst defaultedOptions = client.defaultQueryOptions(options);\n\tconst query = client.getQueryCache().get(defaultedOptions.queryHash);\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tif (!defaultedOptions.queryFn) console.error(`[${defaultedOptions.queryHash}]: No queryFn was passed as an option, and no default queryFn was found. The queryFn parameter is only optional when using a default queryFn. More info here: https://tanstack.com/query/latest/docs/framework/react/guides/default-query-function`);\n\t}\n\tconst subscribed = options.subscribed !== false;\n\tdefaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : subscribed ? \"optimistic\" : void 0;\n\tensureSuspenseTimers(defaultedOptions);\n\tensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary, query);\n\tuseClearResetErrorBoundary(errorResetBoundary);\n\tconst [observer] = React.useState(() => new Observer(client, defaultedOptions));\n\tconst result = observer.getOptimisticResult(defaultedOptions);\n\tconst shouldSubscribe = !isRestoring && subscribed;\n\tReact.useSyncExternalStore(React.useCallback((onStoreChange) => {\n\t\tconst unsubscribe = shouldSubscribe ? observer.subscribe(notifyManager.batchCalls(onStoreChange)) : noop;\n\t\tobserver.updateResult();\n\t\treturn unsubscribe;\n\t}, [observer, shouldSubscribe]), () => observer.getCurrentResult(), () => observer.getCurrentResult());\n\tReact.useEffect(() => {\n\t\tobserver.setOptions(defaultedOptions);\n\t}, [defaultedOptions, observer]);\n\tif (shouldSuspend(defaultedOptions, result)) throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary);\n\tif (getHasError({\n\t\tresult,\n\t\terrorResetBoundary,\n\t\tthrowOnError: defaultedOptions.throwOnError,\n\t\tquery,\n\t\tsuspense: defaultedOptions.suspense\n\t})) throw result.error;\n\treturn !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;\n}\n//#endregion\nexport { useBaseQuery };\n\n//# sourceMappingURL=useBaseQuery.js.map",
|
|
34
|
+
"\"use client\";\nimport { useBaseQuery } from \"./useBaseQuery.js\";\nimport { QueryObserver } from \"@tanstack/query-core\";\n//#region src/useQuery.ts\nfunction useQuery(options, queryClient) {\n\treturn useBaseQuery(options, QueryObserver, queryClient);\n}\n//#endregion\nexport { useQuery };\n\n//# sourceMappingURL=useQuery.js.map",
|
|
35
|
+
"import type { DocsUiConfig } from \"../../lib/docs/browser/config.ts\";\nimport type { DocsClient, FetchLike } from \"./api/client\";\nimport { createContext, use } from \"react\";\n\n/** Carries the injected {@link DocsUiConfig}. */\nexport const DocsUiConfigContext = createContext<DocsUiConfig | null>(null);\n/** Carries the try-it panel's client (built on the document's resolved server). */\nexport const DocsClientContext = createContext<DocsClient | null>(null);\n/** Carries the `fetch` every client uses; tests inject one. Defaults to `globalThis.fetch`. */\nexport const DocsFetchContext = createContext<FetchLike | null>(null);\n\n/** The resolved {@link DocsUiConfig} the server injected. */\nexport function useDocsUiConfig(): DocsUiConfig {\n const config = use(DocsUiConfigContext);\n if (!config) {\n throw new Error(\"useDocsUiConfig must be used inside <DocsUiProviders>\");\n }\n return config;\n}\n\n/** The try-it panel's client. */\nexport function useDocsClient(): DocsClient {\n const client = use(DocsClientContext);\n if (!client) {\n throw new Error(\"useDocsClient must be used inside <DocsClientContext>\");\n }\n return client;\n}\n\n/** The `fetch` the clients use, or `undefined` for `globalThis.fetch`. */\nexport function useDocsFetch(): FetchLike | undefined {\n return use(DocsFetchContext) ?? undefined;\n}\n",
|
|
36
|
+
"/**\n * Every failed request the viewer makes, whatever went wrong. An RFC 9457\n * problem response keeps its fields verbatim; anything else is mapped onto\n * the same shape so a screen has one thing to render.\n */\n\n/** A validation issue inside a problem. */\nexport interface ProblemIssueDto {\n /** Which part of the request failed. */\n target: string;\n /** Dotted path within the target, or `\"\"` for the target itself. */\n path: string;\n /** Human-readable description. */\n message: string;\n}\n\n/** An `application/problem+json` body, as far as the viewer reads it. */\nexport interface ProblemDto {\n /** The HTTP status. */\n status: number;\n /** The machine code. */\n code: string;\n /** The short title. */\n title: string;\n /** The human detail, when there is one. */\n detail?: string;\n /** The problem's `type` URI, when there is one. */\n type?: string;\n /** Validation issues. */\n issues?: ProblemIssueDto[];\n /** Safe, whitelisted context. */\n context?: Record<string, unknown>;\n /** The request path that failed. */\n instance?: string;\n}\n\n/** Where an {@link ApiError} came from. */\nexport type ApiErrorKind =\n /** The API answered with an `application/problem+json` body. */\n | \"problem\"\n /** The API (or something in front of it) answered an error that was not problem+json. */\n | \"http\"\n /** No response arrived: offline, DNS, CORS, connection reset. */\n | \"network\"\n /** A 2xx whose body was not the JSON it should have been. */\n | \"parse\";\n\n/** Fields an {@link ApiError} is built from. */\nexport interface ApiErrorInit {\n /** Where the error came from. */\n kind: ApiErrorKind;\n /** HTTP status, or `0` for a network error. */\n status: number;\n /** Machine code: the problem's `code`, or `NETWORK_ERROR` / `HTTP_<status>` / `INVALID_RESPONSE`. */\n code: string;\n /** Short title. */\n title: string;\n /** Human detail, when there is one. */\n detail?: string;\n /** The problem's `type` URI, when it was a problem. */\n type?: string;\n /** Validation issues. */\n issues?: ProblemIssueDto[];\n /** The problem's whitelisted context. */\n context?: Record<string, unknown>;\n /** The request path that failed. */\n instance?: string;\n /** The underlying error (network/parse failures). */\n cause?: unknown;\n}\n\n/** One failed request. */\nexport class ApiError extends Error {\n /** Where the error came from. */\n readonly kind: ApiErrorKind;\n /** HTTP status, or `0` for a network error. */\n readonly status: number;\n /** Machine code, e.g. `HTTP_404`. */\n readonly code: string;\n /** Short, stable title. */\n readonly title: string;\n /** Human detail for this occurrence. */\n readonly detail: string | undefined;\n /** The problem's `type` URI, when it was a problem. */\n readonly type: string | undefined;\n /** Validation issues. */\n readonly issues: ProblemIssueDto[];\n /** Whitelisted context. */\n readonly context: Record<string, unknown>;\n /** The request path that failed. */\n readonly instance: string | undefined;\n\n constructor(init: ApiErrorInit) {\n super(init.detail ?? init.title, { cause: init.cause });\n this.name = \"ApiError\";\n this.kind = init.kind;\n this.status = init.status;\n this.code = init.code;\n this.title = init.title;\n this.detail = init.detail;\n this.type = init.type;\n this.issues = init.issues ?? [];\n this.context = init.context ?? {};\n this.instance = init.instance;\n }\n\n /** Builds one from a problem body. */\n static fromProblem(problem: ProblemDto): ApiError {\n return new ApiError({\n kind: \"problem\",\n status: problem.status,\n code: problem.code,\n title: problem.title,\n detail: problem.detail,\n type: problem.type,\n issues: problem.issues,\n context: problem.context,\n instance: problem.instance,\n });\n }\n\n /** Whether the caller is not signed in or not allowed (401/403). */\n get isAuth(): boolean {\n return this.status === 401 || this.status === 403;\n }\n}\n\n/** Whether a value is an {@link ApiError}. */\nexport function isApiError(value: unknown): value is ApiError {\n return value instanceof ApiError;\n}\n\n/** Whether a parsed body has the fields a problem must carry. */\nexport function isProblem(value: unknown): value is ProblemDto {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n const record = value as Record<string, unknown>;\n return (\n typeof record.status === \"number\" &&\n typeof record.code === \"string\" &&\n typeof record.title === \"string\"\n );\n}\n",
|
|
37
|
+
"import { QueryClient } from \"@tanstack/react-query\";\nimport { isApiError } from \"./api/errors\";\n\n/** Most retries of a failed read. */\nconst MAX_RETRIES = 2;\n\n/**\n * Retries network failures and 5xx, never a 4xx: a 401/403/404/400 will not\n * change by asking again, and retrying a 401 delays the sign-in message.\n * Nor a malformed response (kind `parse`): the host answered, and answering\n * the same again would only hold the error back for the retries' backoff.\n */\nexport function shouldRetry(failureCount: number, error: unknown): boolean {\n if (\n isApiError(error) &&\n (error.kind === \"parse\" || (error.status >= 400 && error.status < 500))\n ) {\n return false;\n }\n return failureCount < MAX_RETRIES;\n}\n\n/** Options of {@link createQueryClient}. */\nexport interface CreateQueryClientOptions {\n /** Retry failed reads (see {@link shouldRetry}). Defaults to `true`; tests pass `false`. */\n retry?: boolean;\n}\n\n/** The viewer's TanStack Query client. */\nexport function createQueryClient(\n options: CreateQueryClientOptions = {},\n): QueryClient {\n return new QueryClient({\n defaultOptions: {\n queries: {\n retry: options.retry === false ? false : shouldRetry,\n staleTime: 2_000,\n refetchOnWindowFocus: true,\n },\n mutations: { retry: false },\n },\n });\n}\n\n/**\n * Before \"Reload this screen\" (`ScreenErrorBoundary`) remounts a crashed\n * screen, drops the cached answers the screen read, so it reads them again:\n * a crash caused by the DATA would otherwise render the same cached answer\n * and crash again at once. Only inactive queries are reset; the crashed\n * screen's are inactive by then.\n */\nexport function resetScreenQueries(queryClient: QueryClient): Promise<void> {\n return queryClient.resetQueries({ type: \"inactive\" });\n}\n",
|
|
38
|
+
"/** Joins class names, skipping falsy ones. */\nexport function cx(...names: (string | false | null | undefined)[]): string {\n return names.filter(Boolean).join(\" \");\n}\n",
|
|
39
|
+
"import type { ButtonHTMLAttributes, Ref } from \"react\";\nimport { cx } from \"./classNames\";\n\n/** Visual weight of a {@link Button}. */\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"ghost\" | \"danger\";\n\n/** Props of {@link Button}. */\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Visual weight. Defaults to `\"secondary\"`. */\n variant?: ButtonVariant;\n /** Size. Defaults to `\"md\"`. */\n size?: \"sm\" | \"md\";\n /** The underlying `<button>`, e.g. for a dialog's initial focus. */\n ref?: Ref<HTMLButtonElement>;\n}\n\n/** A button; `type=\"button\"` unless told otherwise, so it never submits a form by accident. */\nexport function Button({\n variant = \"secondary\",\n size = \"md\",\n type = \"button\",\n className,\n ...rest\n}: ButtonProps) {\n return (\n <button\n {...rest}\n type={type}\n className={cx(\n \"btn\",\n `btn-${variant}`,\n size === \"sm\" && \"btn-sm\",\n className,\n )}\n />\n );\n}\n",
|
|
40
|
+
"import type { QueryClient } from \"@tanstack/react-query\";\nimport type { ErrorInfo, ReactNode } from \"react\";\nimport { QueryClientContext } from \"@tanstack/react-query\";\nimport { Component } from \"react\";\nimport { resetScreenQueries } from \"../queryClient\";\nimport { Button } from \"./Button\";\n\n/** Props of {@link ScreenErrorBoundary}. */\nexport interface ScreenErrorBoundaryProps {\n /** The screen. */\n children: ReactNode;\n /** When this changes (the location), a failed screen is tried again: navigating away from a crash recovers without a click. */\n resetKey?: string;\n /** Called with each crash, e.g. to log it. Defaults to nothing (React already reports it in development). */\n onError?: (error: unknown, info: ErrorInfo) => void;\n}\n\n/** State of {@link ScreenErrorBoundary}. */\ninterface ScreenErrorBoundaryState {\n /** What the screen threw while rendering, or `null` while it renders fine. */\n error: unknown;\n /** Whether {@link ScreenErrorBoundaryState.error} is set (an error may be any value, `null` included). */\n failed: boolean;\n /** Bumped by \"Reload this screen\", remounting the screen with fresh state. */\n attempt: number;\n /** The `resetKey` the failure happened under. */\n failedKey: string | undefined;\n}\n\n/**\n * Catches a routed screen's render crash so the app around it survives: the\n * header, nav and live status stay, and the screen's place shows what\n * failed with a \"Reload this screen\" button that mounts it afresh and\n * re-reads its data: the cached answers it read are reset first (see\n * {@link resetScreenQueries}; `/meta` and the permissions are kept), so a\n * crash caused by a bad answer recovers once the host answers well. A lazy\n * screen whose chunk failed to load is retried the same way (see\n * `screens/lazy.tsx`).\n *\n * The app's queries do not throw into it (no `throwOnError`, no suspense\n * queries: a failed read renders the screen's own error view), so there is\n * no `QueryErrorResetBoundary` to reset.\n */\nexport class ScreenErrorBoundary extends Component<\n ScreenErrorBoundaryProps,\n ScreenErrorBoundaryState\n> {\n static override contextType = QueryClientContext;\n\n /** The app's query client, when a `QueryClientProvider` is above (none in some tests). */\n declare context: QueryClient | undefined;\n\n override state: ScreenErrorBoundaryState = {\n error: null,\n failed: false,\n attempt: 0,\n failedKey: undefined,\n };\n\n static getDerivedStateFromError(\n error: unknown,\n ): Partial<ScreenErrorBoundaryState> {\n return { error, failed: true };\n }\n\n static getDerivedStateFromProps(\n props: ScreenErrorBoundaryProps,\n state: ScreenErrorBoundaryState,\n ): Partial<ScreenErrorBoundaryState> | null {\n // Remember where it failed; a new location clears the failure.\n if (state.failed && state.failedKey === undefined) {\n return { failedKey: props.resetKey ?? \"\" };\n }\n if (state.failed && state.failedKey !== (props.resetKey ?? \"\")) {\n return {\n error: null,\n failed: false,\n failedKey: undefined,\n attempt: state.attempt + 1,\n };\n }\n return null;\n }\n\n override componentDidCatch(error: unknown, info: ErrorInfo): void {\n this.props.onError?.(error, info);\n }\n\n /** Resets the screen's cached answers, then mounts it again. */\n private readonly reload = () => {\n if (this.context) {\n void resetScreenQueries(this.context);\n }\n this.setState((state) => ({\n error: null,\n failed: false,\n failedKey: undefined,\n attempt: state.attempt + 1,\n }));\n };\n\n override render(): ReactNode {\n const { error, failed, attempt } = this.state;\n if (!failed) {\n return <ScreenAttempt key={attempt}>{this.props.children}</ScreenAttempt>;\n }\n const message =\n error instanceof Error ? error.message : String(error ?? \"Unknown error\");\n return (\n <div\n className=\"screen screen-error\"\n data-testid=\"screen-error\"\n >\n <div\n className=\"error-view\"\n role=\"alert\"\n >\n <h1 className=\"error-view-title\">This screen failed to show</h1>\n <p className=\"error-view-detail\">\n Something went wrong while drawing it. The rest of the app still\n works: reload the screen, or pick another one.\n </p>\n <p className=\"error-view-meta\">\n <code>{message}</code>\n </p>\n <Button\n variant=\"primary\"\n onClick={this.reload}\n >\n Reload this screen\n </Button>\n </div>\n </div>\n );\n }\n}\n\n/** A keyed wrapper: a new key remounts the screen with fresh state. */\nfunction ScreenAttempt({ children }: { children: ReactNode }) {\n return <>{children}</>;\n}\n",
|
|
41
|
+
"import type { ReactNode } from \"react\";\nimport { createContext, use, useCallback, useMemo } from \"react\";\n\n/**\n * A small history router scoped under the mount's `basePath`.\n *\n * The app's routes are flat and few, so this replaces a router library: it\n * tracks `location.pathname`/`search` relative to `basePath`, intercepts\n * plain left-clicks on its {@link Link}s, matches `:param` and trailing `*`\n * patterns, and keeps URL-addressable state in the query string. A path\n * outside `basePath` matches nothing and renders the 404.\n */\n\n/** Where the app is, relative to `basePath`. */\nexport interface AppLocation {\n /** Path under `basePath`, always starting with `/`; `null` when the URL is outside `basePath`. */\n path: string | null;\n /** The query string, with its leading `?` (or `\"\"`). */\n search: string;\n}\n\n/** Options of a navigation. */\nexport interface NavigateOptions {\n /** Replace the current history entry instead of pushing one. Defaults to `false`. */\n replace?: boolean;\n}\n\n/** What the router provides. */\nexport interface RouterContextValue {\n /** The mount path, no trailing slash (`\"\"` when mounted at the root). */\n basePath: string;\n /** The current location. */\n location: AppLocation;\n /** Navigates to an app path (relative to `basePath`, may carry `?query`). */\n navigate: (to: string, options?: NavigateOptions) => void;\n /** The full URL path for an app path. */\n href: (to: string) => string;\n}\n\n/** Carries the router. */\nexport const RouterContext = createContext<RouterContextValue | null>(null);\n/** Carries the params the matched route bound. */\nexport const ParamsContext = createContext<Readonly<Record<string, string>>>(\n {},\n);\n\n/** Normalises a base path: leading `/`, no trailing `/`, `/` itself becomes `\"\"`. */\nexport function normalizeBasePath(basePath: string): string {\n const trimmed = basePath.replace(/\\/+$/, \"\");\n if (trimmed === \"\") {\n return \"\";\n }\n return trimmed.startsWith(\"/\") ? trimmed : `/${trimmed}`;\n}\n\n/**\n * The path under `basePath`, or `null` when `pathname` is outside it.\n * `/jobs` and `/jobs/` are both `/`; `/jobsx` is outside `/jobs`.\n */\nexport function stripBasePath(\n pathname: string,\n basePath: string,\n): string | null {\n const base = normalizeBasePath(basePath);\n if (base !== \"\" && pathname !== base && !pathname.startsWith(`${base}/`)) {\n return null;\n }\n const rest = pathname.slice(base.length);\n if (rest === \"\" || rest === \"/\") {\n return \"/\";\n }\n return rest.length > 1 && rest.endsWith(\"/\") ? rest.slice(0, -1) : rest;\n}\n\n/**\n * Matches an app path against a pattern: `/queues/:queue` binds `queue`\n * (percent-decoded), a trailing `/*` binds the rest as `*`. Returns the\n * params, or `null` when it does not match.\n */\nexport function matchPath(\n pattern: string,\n path: string,\n): Record<string, string> | null {\n const patternParts = pattern.split(\"/\").filter(Boolean);\n const pathParts = path.split(\"/\").filter(Boolean);\n const params: Record<string, string> = {};\n for (let index = 0; index < patternParts.length; index++) {\n const part = patternParts[index];\n if (part === \"*\" && index === patternParts.length - 1) {\n params[\"*\"] = pathParts.slice(index).map(safeDecode).join(\"/\");\n return params;\n }\n const actual = pathParts[index];\n if (actual === undefined) {\n return null;\n }\n if (part.startsWith(\":\")) {\n params[part.slice(1)] = safeDecode(actual);\n } else if (part !== actual) {\n return null;\n }\n }\n return pathParts.length === patternParts.length ? params : null;\n}\n\n/** `decodeURIComponent`, keeping a malformed segment as it is. */\nfunction safeDecode(value: string): string {\n try {\n return decodeURIComponent(value);\n } catch {\n return value;\n }\n}\n\n/** Reads the current location from `window.location`. */\nexport function readLocation(basePath: string): AppLocation {\n return {\n path: stripBasePath(window.location.pathname, basePath),\n search: window.location.search,\n };\n}\n\n/** The router, or a clear error outside a {@link RouterProvider}. */\nexport function useRouter(): RouterContextValue {\n const router = use(RouterContext);\n if (!router) {\n throw new Error(\"useRouter must be used inside a <RouterProvider>\");\n }\n return router;\n}\n\n/** The current location. */\nexport function useLocation(): AppLocation {\n return useRouter().location;\n}\n\n/** A function that navigates to an app path. */\nexport function useNavigate(): RouterContextValue[\"navigate\"] {\n return useRouter().navigate;\n}\n\n/** A function that turns an app path into a full URL path. */\nexport function useHref(): RouterContextValue[\"href\"] {\n return useRouter().href;\n}\n\n/** The params the matched route bound. */\nexport function useParams<\n T extends Record<string, string> = Record<string, string>,\n>(): Readonly<T> {\n return use(ParamsContext) as Readonly<T>;\n}\n\n/** The current query string, parsed. */\nexport function useSearchParams(): URLSearchParams {\n const { search } = useLocation();\n return useMemo(() => new URLSearchParams(search), [search]);\n}\n\n/**\n * One query-string value as state: `[value, setValue]`. Setting `\"\"` or\n * `null` removes the key. Updates replace the history entry, so typing in a\n * filter does not flood the back button.\n */\nexport function useQueryParam(\n key: string,\n): [string, (value: string | null) => void] {\n const { location, navigate } = useRouter();\n const value = new URLSearchParams(location.search).get(key) ?? \"\";\n const setValue = useCallback(\n (next: string | null) => {\n const params = new URLSearchParams(window.location.search);\n if (next === null || next === \"\") {\n params.delete(key);\n } else {\n params.set(key, next);\n }\n const query = params.toString();\n navigate(`${location.path ?? \"/\"}${query ? `?${query}` : \"\"}`, {\n replace: true,\n });\n },\n [key, location.path, navigate],\n );\n return [value, setValue];\n}\n\n/** One route: a pattern and what it renders. */\nexport interface RouteDef {\n /** Pattern relative to `basePath`: `/`, `/queues/:queue`, `/docs/*`. */\n path: string;\n /** What the route renders; params are available through {@link useParams}. */\n element: ReactNode;\n}\n",
|
|
42
|
+
"import type { AnchorHTMLAttributes, MouseEvent, ReactNode } from \"react\";\nimport type { NavigateOptions, RouteDef } from \"./routing\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ScreenErrorBoundary } from \"./components/ScreenErrorBoundary\";\nimport {\n matchPath,\n normalizeBasePath,\n ParamsContext,\n readLocation,\n RouterContext,\n useLocation,\n useNavigate,\n useRouter,\n} from \"./routing\";\n\n/**\n * The router's components: the provider, route matching, redirects and\n * links. The pure path functions and the hooks live in `routing.ts`.\n */\n\n/** Props of {@link RouterProvider}. */\nexport interface RouterProviderProps {\n /** The mount path (`DocsUiConfig.basePath`). */\n basePath: string;\n /** The app. */\n children: ReactNode;\n}\n\n/** Provides routing under `basePath`, following `window.history`. */\nexport function RouterProvider({ basePath, children }: RouterProviderProps) {\n const base = normalizeBasePath(basePath);\n const [location, setLocation] = useState(() => readLocation(base));\n\n useEffect(() => {\n const onPopState = () => setLocation(readLocation(base));\n window.addEventListener(\"popstate\", onPopState);\n return () => window.removeEventListener(\"popstate\", onPopState);\n }, [base]);\n\n const href = useCallback(\n (to: string) => {\n const target = to.startsWith(\"/\") ? to : `/${to}`;\n if (base === \"\") {\n return target;\n }\n // `/` is the mount itself; keep the query attached without a slash.\n return target === \"/\" || target.startsWith(\"/?\")\n ? `${base}${target.slice(1)}`\n : `${base}${target}`;\n },\n [base],\n );\n\n const navigate = useCallback(\n (to: string, options: NavigateOptions = {}) => {\n const url = href(to);\n if (options.replace) {\n window.history.replaceState(null, \"\", url);\n } else {\n window.history.pushState(null, \"\", url);\n }\n setLocation(readLocation(base));\n },\n [base, href],\n );\n\n const value = useMemo(\n () => ({ basePath: base, location, navigate, href }),\n [base, location, navigate, href],\n );\n return <RouterContext value={value}>{children}</RouterContext>;\n}\n\n/** Props of {@link Routes}. */\nexport interface RoutesProps {\n /** Routes, tried in order; the first match wins. */\n routes: readonly RouteDef[];\n /** Rendered when nothing matches (including a URL outside `basePath`). */\n notFound: ReactNode;\n}\n\n/**\n * Renders the first route matching the current location, inside a\n * {@link ScreenErrorBoundary}: a screen that crashes while rendering shows a\n * recoverable panel in its place instead of blanking the app, and moving to\n * another location tries again.\n */\nexport function Routes({ routes, notFound }: RoutesProps) {\n const { path } = useLocation();\n return (\n <ScreenErrorBoundary resetKey={path ?? \"\"}>\n <MatchedRoute\n routes={routes}\n notFound={notFound}\n path={path}\n />\n </ScreenErrorBoundary>\n );\n}\n\n/** The first route matching `path`, or `notFound`. */\nfunction MatchedRoute({\n routes,\n notFound,\n path,\n}: RoutesProps & { path: string | null }) {\n if (path !== null) {\n for (const route of routes) {\n const params = matchPath(route.path, path);\n if (params) {\n return (\n <ParamsContext\n key={route.path}\n value={params}\n >\n {route.element}\n </ParamsContext>\n );\n }\n }\n }\n return <>{notFound}</>;\n}\n\n/** Props of {@link Navigate}. */\nexport interface NavigateProps {\n /** App path to go to. */\n to: string;\n /** Replace the history entry. Defaults to `true`: a redirect should not be a back-button stop. */\n replace?: boolean;\n}\n\n/** Redirects on render. */\nexport function Navigate({ to, replace = true }: NavigateProps) {\n const navigate = useNavigate();\n useEffect(() => {\n navigate(to, { replace });\n }, [navigate, to, replace]);\n return null;\n}\n\n/** Props of {@link Link}. */\nexport interface LinkProps extends Omit<\n AnchorHTMLAttributes<HTMLAnchorElement>,\n \"href\"\n> {\n /** App path (relative to `basePath`), may carry `?query`. */\n to: string;\n /** Mark the link `aria-current=\"page\"` when the location matches: `\"exact\"`, or `\"prefix\"` for a section. Defaults to none. */\n activeMatch?: \"exact\" | \"prefix\";\n}\n\n/** Whether a click should be left to the browser (new tab, download, modified). */\nfunction isModifiedClick(event: MouseEvent<HTMLAnchorElement>): boolean {\n return (\n event.button !== 0 ||\n event.metaKey ||\n event.altKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.defaultPrevented\n );\n}\n\n/** An `<a>` that navigates in-app on a plain left-click. */\nexport function Link({ to, activeMatch, onClick, target, ...rest }: LinkProps) {\n const { navigate, href, location } = useRouter();\n const toPath = to.split(\"?\")[0] || \"/\";\n const active =\n location.path !== null &&\n (activeMatch === \"exact\"\n ? location.path === toPath\n : activeMatch === \"prefix\"\n ? toPath === \"/\"\n ? location.path === \"/\"\n : location.path === toPath || location.path.startsWith(`${toPath}/`)\n : false);\n return (\n <a\n {...rest}\n target={target}\n href={href(to)}\n aria-current={active ? \"page\" : undefined}\n onClick={(event) => {\n onClick?.(event);\n if (isModifiedClick(event) || (target && target !== \"_self\")) {\n return;\n }\n event.preventDefault();\n navigate(to);\n }}\n />\n );\n}\n",
|
|
43
|
+
"/**\n * The `unauthorized` option: where to send the browser when the caller turns\n * out not to be signed in. Shared by `docsUi()` and `jobsUi()`,\n * on both sides of each: the server (the shell's 303) and the app (an API\n * 401). Types, defaults and pure functions only, with no runtime imports: the\n * apps bundle this file for the browser.\n */\n\n/** A status that can trigger the redirect: 401 (not signed in) or 403 (not allowed). */\nexport type UiUnauthorizedStatus = 401 | 403;\n\n/**\n * The `unauthorized` option as a host writes it: where to send the browser\n * when an authorization check fails, instead of leaving it on a page that\n * reports the failure.\n */\nexport interface UnauthorizedOptions {\n /**\n * Where to go: a path on this host starting with one `/` (`\"/login\"`,\n * `\"/auth/sign-in?app=jobs\"`), or an absolute `http:`/`https:` URL (an\n * identity provider's sign-in page). Required. A path inside the UI's own\n * `basePath` is a `ConfigError`: the UI would redirect to itself.\n * `javascript:`, `data:`, `//host` and anything else are refused.\n */\n redirectTo: string;\n /**\n * Query parameter that carries the page the user was on, so the sign-in\n * page can send them back: path, query and (in the browser) fragment,\n * always a relative URL starting with one `/` (e.g.\n * `/login?returnTo=%2Fdocs%2Fhttp`). `false` adds nothing. Defaults to\n * `\"returnTo\"`. Letters, digits, `_`, `.`, `~` and `-` only. The sign-in\n * page must still check the value before redirecting to it.\n */\n returnParam?: string | false;\n /**\n * Which failures redirect. Defaults to `[401]`: only \"not signed in\". A 403\n * means signed in but not allowed, which the page explains itself; add\n * `403` to redirect on that too. Must be a non-empty array of `401` and\n * `403`.\n */\n statuses?: readonly UiUnauthorizedStatus[];\n}\n\n/** The resolved `unauthorized` option, as the browser receives it in the page's config. */\nexport interface UiUnauthorized {\n /** The target: a path (`\"/login\"`) or an absolute `http(s)` URL, validated on the server. */\n redirectTo: string;\n /** The query parameter that carries the in-app location back, or `null` for none. */\n returnParam: string | null;\n /** The statuses that redirect, ascending and without repeats (`[401]` by default). */\n statuses: readonly UiUnauthorizedStatus[];\n}\n\n/** `unauthorized.returnParam` when unset. */\nexport const DEFAULT_RETURN_PARAM = \"returnTo\";\n\n/** `unauthorized.statuses` when unset: only \"not signed in\". */\nexport const DEFAULT_UNAUTHORIZED_STATUSES: readonly UiUnauthorizedStatus[] =\n Object.freeze([401]);\n\n/**\n * Whether a value read back from a page's config has the shape of a\n * {@link UiUnauthorized}: enough that a stale or hand-edited shell fails with\n * a message instead of a broken redirect. The server validated the values.\n */\nexport function isUiUnauthorized(value: unknown): value is UiUnauthorized {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return false;\n }\n const record = value as Record<string, unknown>;\n return (\n typeof record.redirectTo === \"string\" &&\n (record.returnParam === null || typeof record.returnParam === \"string\") &&\n Array.isArray(record.statuses) &&\n record.statuses.every((status) => status === 401 || status === 403)\n );\n}\n\n/** Any origin, used to parse a path target as a URL and print it back as a path. */\nconst PATH_ORIGIN = \"http://unauthorized.invalid\";\n\n/**\n * Makes an in-app location safe to hand back as a relative URL: it starts\n * with exactly one `/` (never `//` or `/\\`, which a browser reads as another\n * host). Anything not starting with `/` becomes `/`.\n */\nexport function relativeReturnPath(location: string): string {\n if (!location.startsWith(\"/\")) {\n return \"/\";\n }\n return location.replace(/^[/\\\\]+/, \"/\");\n}\n\n/**\n * The URL to send the browser to: `redirectTo`, with `returnParam` set to\n * `returnPath` (made relative by {@link relativeReturnPath}) when both are\n * given. A path target stays a path; an absolute target stays absolute. A\n * `returnParam` already in `redirectTo`'s query is replaced, and its\n * fragment is kept.\n */\nexport function unauthorizedRedirectUrl(\n redirect: Pick<UiUnauthorized, \"redirectTo\" | \"returnParam\">,\n returnPath: string | undefined,\n): string {\n if (redirect.returnParam === null || returnPath === undefined) {\n return redirect.redirectTo;\n }\n const isPath = redirect.redirectTo.startsWith(\"/\");\n const url = isPath\n ? new URL(redirect.redirectTo, PATH_ORIGIN)\n : new URL(redirect.redirectTo);\n url.searchParams.set(redirect.returnParam, relativeReturnPath(returnPath));\n return isPath ? `${url.pathname}${url.search}${url.hash}` : url.href;\n}\n",
|
|
44
|
+
"import type { QueryClient } from \"@tanstack/react-query\";\nimport type { UiUnauthorized } from \"../../lib/kit/browser/unauthorized.ts\";\nimport { createContext, use } from \"react\";\nimport { unauthorizedRedirectUrl } from \"../../lib/kit/browser/unauthorized.ts\";\n\n/**\n * `unauthorized` in the browser: the one place an authorization failure\n * becomes a navigation, once per page load. Shared by the docs viewer and\n * the jobs UI (as `@kingsleyweb/bun-ui/docs/embed/unauthorized`).\n *\n * Sources report here: the query and mutation caches through\n * {@link watchAuthFailures} (any failed call, whichever client made it: the\n * viewer's document read; every jobs UI API call), the jobs UI's live\n * socket (`LiveClient`'s `onAuthFailure`), and the jobs UI's crashed screens\n * (through {@link UnauthorizedRedirect.probe}: a lazy screen's chunk the\n * shell's `authorize` refused fails with no status to read). No screen knows\n * about it; a failure that is not redirected shows its message as before.\n *\n * One per page: the app that owns the page creates it. The embedded docs\n * screens never do, so the jobs UI's docs section redirects through\n * the jobs UI's alone.\n */\n\n/** The parts of `window.location` the redirect reads and calls. */\nexport interface RedirectLocation {\n /** The page's URL, to resolve the target and compare origins. */\n readonly href: string;\n /** Sends the browser to a URL. */\n assign: (url: string) => void;\n}\n\n/** A mount's redirect, made by {@link createUnauthorizedRedirect}. */\nexport interface UnauthorizedRedirect {\n /** Whether `unauthorized` is configured at all. */\n readonly enabled: boolean;\n /** Whether a report has sent the browser away (later reports do nothing). */\n readonly redirected: boolean;\n /**\n * Reports a failure's status. One the mount lists sends the browser to the\n * target, once: the first such report navigates, every later one returns\n * `true` without navigating again. Returns whether the browser was (or\n * already had been) sent away.\n */\n report: (status: number) => boolean;\n /** {@link UnauthorizedRedirect.report} for an error from any client: reads its numeric `status`, if it has one. */\n reportError: (error: unknown) => boolean;\n /**\n * Asks the server whether this page may still be loaded, for a failure\n * that carries no status: a `HEAD` of the shell (`basePath`), whose status\n * is reported. A screen whose chunk failed to load is the case: the\n * shell's `authorize` guards the bundle files, and a failed dynamic import\n * never says why. Resolves what {@link UnauthorizedRedirect.report} returned, or\n * `false` when the probe itself failed.\n */\n probe: () => Promise<boolean>;\n}\n\n/** Options of {@link createUnauthorizedRedirect}; tests replace both. */\nexport interface UnauthorizedRedirectOptions {\n /** Where to read the page's URL and navigate. Defaults to `globalThis.location`, looked up per report. */\n location?: () => RedirectLocation | undefined;\n /** The `fetch` {@link UnauthorizedRedirect.probe} calls. Defaults to `globalThis.fetch`, looked up per probe. */\n fetch?: () => typeof fetch;\n}\n\n/** The status an error carries, if any: `ApiError`'s, bun-client's `HttpError`'s, anything with a numeric `status`. */\nexport function statusOf(error: unknown): number | undefined {\n if (typeof error !== \"object\" || error === null || !(\"status\" in error)) {\n return undefined;\n }\n const { status } = error;\n return typeof status === \"number\" ? status : undefined;\n}\n\n/** Whether `path` is `base` or lies under it, segment-wise. */\nfunction isWithin(path: string, base: string): boolean {\n return path === base || path.startsWith(`${base}/`);\n}\n\n/** The pathname as the router compares it: decoded where it can be, lower-cased, no trailing `/`. */\nfunction comparablePath(pathname: string): string {\n let decoded = pathname;\n try {\n decoded = decodeURIComponent(pathname);\n } catch {\n // A malformed escape: compare it as written.\n }\n return decoded.replace(/\\/+$/, \"\").toLowerCase();\n}\n\n/** A redirect that never navigates: `unauthorized` is off. */\nexport const NO_UNAUTHORIZED_REDIRECT: UnauthorizedRedirect = Object.freeze({\n enabled: false,\n redirected: false,\n report: () => false,\n reportError: () => false,\n probe: () => Promise.resolve(false),\n});\n\n/**\n * Creates the redirect for one page load. `null` gives {@link NO_UNAUTHORIZED_REDIRECT}.\n *\n * The target carries `returnParam` set to the page the user is on (path,\n * query and fragment). A target that resolves into this UI on this origin is\n * never followed (an absolute URL `jobsUi()` could not check, since it does\n * not know its own origin): it would load the UI, fail again and loop, so\n * the screens show their messages instead.\n *\n * @param redirect The UI config's `unauthorized` (`JobsUiConfig`, `DocsUiConfig`).\n * @param basePath The UI config's `basePath`.\n * @param options Where to navigate and what to fetch with; see {@link UnauthorizedRedirectOptions}.\n */\nexport function createUnauthorizedRedirect(\n redirect: UiUnauthorized | null,\n basePath: string,\n options: UnauthorizedRedirectOptions = {},\n): UnauthorizedRedirect {\n const getLocation = options.location ?? (() => globalThis.location);\n const getFetch = options.fetch ?? (() => globalThis.fetch);\n if (redirect === null) {\n return NO_UNAUTHORIZED_REDIRECT;\n }\n const statuses = new Set<number>(redirect.statuses);\n const base = basePath.toLowerCase();\n let redirected = false;\n\n const report = (status: number): boolean => {\n if (redirected) {\n return true;\n }\n if (!statuses.has(status)) {\n return false;\n }\n const location = getLocation();\n if (location === undefined) {\n return false;\n }\n const here = new URL(location.href);\n const target = unauthorizedRedirectUrl(\n redirect,\n `${here.pathname}${here.search}${here.hash}`,\n );\n const resolved = new URL(target, here);\n if (\n resolved.origin === here.origin &&\n isWithin(comparablePath(resolved.pathname), base)\n ) {\n return false;\n }\n redirected = true;\n location.assign(target);\n return true;\n };\n\n return {\n enabled: true,\n get redirected() {\n return redirected;\n },\n report,\n reportError: (error) => {\n const status = statusOf(error);\n return status === undefined ? false : report(status);\n },\n probe: async () => {\n if (redirected) {\n return true;\n }\n let status: number;\n try {\n const response = await getFetch()(basePath, {\n method: \"HEAD\",\n credentials: \"same-origin\",\n cache: \"no-store\",\n });\n status = response.status;\n } catch {\n return false;\n }\n return report(status);\n },\n };\n}\n\n/**\n * Reports every failed query and mutation of `queryClient` to `redirect`:\n * the cache-level hook, so every API call is covered whichever client made it\n * and no screen needs code of its own. Returns the unsubscribe. Subscribes to\n * nothing when the redirect is off.\n */\nexport function watchAuthFailures(\n queryClient: QueryClient,\n redirect: UnauthorizedRedirect,\n): () => void {\n if (!redirect.enabled) {\n return () => {};\n }\n const offQueries = queryClient.getQueryCache().subscribe((event) => {\n if (event.type === \"updated\" && event.action.type === \"error\") {\n redirect.reportError(event.action.error);\n }\n });\n const offMutations = queryClient.getMutationCache().subscribe((event) => {\n if (event.type === \"updated\" && event.action.type === \"error\") {\n redirect.reportError(event.action.error);\n }\n });\n return () => {\n offQueries();\n offMutations();\n };\n}\n\n/** Carries the page's {@link UnauthorizedRedirect}; {@link NO_UNAUTHORIZED_REDIRECT} outside `AppProviders`. */\nexport const UnauthorizedRedirectContext = createContext<UnauthorizedRedirect>(\n NO_UNAUTHORIZED_REDIRECT,\n);\n\n/** The page's {@link UnauthorizedRedirect}. */\nexport function useUnauthorizedRedirect(): UnauthorizedRedirect {\n return use(UnauthorizedRedirectContext);\n}\n",
|
|
45
|
+
"/**\n * Constants of the viewer's own HTTP layer: which methods mutate (a try-it\n * confirms them), and which must carry `Content-Type: application/json` even\n * when bodiless. Generic HTTP, shared with no one: the documented API's own\n * constants are its own.\n */\n\n/** HTTP methods treated as mutations: every one but `GET`/`HEAD`/`OPTIONS`. */\nexport const MUTATING_METHODS: ReadonlySet<string> = new Set([\n \"POST\",\n \"PUT\",\n \"PATCH\",\n \"DELETE\",\n]);\n\n/** Methods that carry `Content-Type: application/json` even when bodiless. */\nexport const JSON_METHODS: ReadonlySet<string> = new Set([\n \"POST\",\n \"PUT\",\n \"PATCH\",\n]);\n\n/** The last instant a `Date` holds. */\nexport const MAX_DATE_MS = 8_640_000_000_000_000;\n",
|
|
46
|
+
"import { JSON_METHODS, MUTATING_METHODS } from \"./contract\";\nimport { ApiError, isProblem } from \"./errors\";\n\n/**\n * The viewer's HTTP client: it fetches the document, and sends the try-it\n * panel's requests. Same-origin credentials, `Accept: application/json`\n * always, `Content-Type: application/json` on POST/PUT/PATCH (bodiless ones\n * included), and the configured CSRF header on every mutation.\n */\n\n/** An HTTP method the client sends. */\nexport type HttpMethod = \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n\n/** A scalar query value. */\nexport type QueryScalar = string | number | boolean;\n\n/**\n * A query-string value: arrays become repeated keys (`state=a&state=b`), an\n * empty array becomes `key=`, and `undefined`/`null` are left out.\n */\nexport type QueryValue =\n QueryScalar | readonly QueryScalar[] | null | undefined;\n\n/** The query of one request. */\nexport type QueryParams = Readonly<Record<string, QueryValue>>;\n\n/** Options of one {@link DocsClient.request}. */\nexport interface RequestOptions {\n /** Query parameters; see {@link QueryValue}. */\n query?: QueryParams;\n /** A JSON body. `undefined` sends none (the `Content-Type` still goes on POST/PUT/PATCH). */\n body?: unknown;\n /** Aborts the request (TanStack Query passes one). An abort rejects with the fetch's own `AbortError`, never an {@link ApiError}. */\n signal?: AbortSignal;\n}\n\n/** One response as {@link DocsClient.requestRaw} resolves it. */\nexport interface RawResponse {\n /** Whether the status is 2xx. */\n ok: boolean;\n /** The HTTP status received. */\n status: number;\n /** The status text received (often `\"\"` over HTTP/2). */\n statusText: string;\n /** The response headers the caller can see, lower-cased names in alphabetical order. A browser hides `Set-Cookie`, and cross-origin ones not in `Access-Control-Expose-Headers`. */\n headers: Record<string, string>;\n /** The body: parsed JSON when the `Content-Type` is JSON and it parses, the text otherwise, `undefined` when empty. */\n body: unknown;\n /** For a non-2xx status, the {@link ApiError} `request` would have thrown (a problem's fields verbatim); `undefined` on success. */\n error: ApiError | undefined;\n /** Milliseconds from sending to the body having been read. */\n durationMs: number;\n}\n\n/** The `fetch` the client calls; injectable for tests. */\nexport type FetchLike = (input: string, init: RequestInit) => Promise<Response>;\n\n/** A client for the one server the viewer talks to. */\nexport interface DocsClient {\n /** The base URL requests are prefixed with. */\n readonly base: string;\n /** Sends one request; resolves the parsed JSON (or `undefined` for a 204), rejects with an {@link ApiError}. */\n request: <T>(\n method: HttpMethod,\n path: string,\n options?: RequestOptions,\n ) => Promise<T>;\n /**\n * Sends one request like {@link DocsClient.request}, with the same headers,\n * credentials and problem+json parsing, and resolves the whole response\n * instead of only its body. An error status **resolves** (with `ok: false`\n * and the {@link ApiError} `request` would have thrown in `error`); only a\n * network failure rejects (an {@link ApiError} of kind `network`), and an\n * abort rejects with the fetch's own `AbortError`.\n */\n requestRaw: (\n method: HttpMethod,\n path: string,\n options?: RequestOptions,\n ) => Promise<RawResponse>;\n}\n\n/** The value sent in the CSRF header. An API accepts any non-empty value. */\nexport const CSRF_HEADER_VALUE = \"1\";\n\n/** Serialises a query: repeated keys for arrays, `undefined`/`null` skipped. Returns `\"\"` or `\"?…\"`. */\nexport function serializeQuery(query: QueryParams | undefined): string {\n if (!query) {\n return \"\";\n }\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(query)) {\n if (value === undefined || value === null) {\n continue;\n }\n if (Array.isArray(value)) {\n const items = value as readonly QueryScalar[];\n if (items.length === 0) {\n params.append(key, \"\");\n }\n for (const item of items) {\n params.append(key, String(item));\n }\n continue;\n }\n params.append(key, String(value));\n }\n const text = params.toString();\n return text ? `?${text}` : \"\";\n}\n\n/** Percent-encodes one path segment (`/` becomes `%2F`). */\nexport function segment(value: string): string {\n return encodeURIComponent(value);\n}\n\n/** Whether a `Content-Type` names JSON (`application/json` or any `+json`). */\nfunction isJsonType(contentType: string): boolean {\n const media = contentType.split(\";\")[0]?.trim().toLowerCase() ?? \"\";\n return media === \"application/json\" || media.endsWith(\"+json\");\n}\n\n/** Whether an error is the fetch's abort, which must propagate untouched. */\nfunction isAbort(error: unknown, signal: AbortSignal | undefined): boolean {\n return (\n signal?.aborted === true ||\n (error instanceof Error && error.name === \"AbortError\") ||\n (typeof DOMException !== \"undefined\" &&\n error instanceof DOMException &&\n error.name === \"AbortError\")\n );\n}\n\n/** Parses JSON text, or returns `undefined` when it is not JSON. */\nfunction tryParse(text: string): { value: unknown } | undefined {\n try {\n return { value: JSON.parse(text) };\n } catch {\n return undefined;\n }\n}\n\n/** Turns an error response into an {@link ApiError}. */\nfunction errorFromResponse(response: Response, text: string, path: string) {\n const parsed = isJsonType(response.headers.get(\"content-type\") ?? \"\")\n ? tryParse(text)\n : undefined;\n if (parsed && isProblem(parsed.value)) {\n return ApiError.fromProblem({ ...parsed.value, status: response.status });\n }\n const snippet = text.trim().slice(0, 300);\n return new ApiError({\n kind: \"http\",\n status: response.status,\n code: `HTTP_${response.status}`,\n title: response.statusText || `Request failed (${response.status})`,\n detail: snippet || undefined,\n instance: path,\n });\n}\n\n/** Options of {@link createDocsClient}. */\nexport interface DocsClientOptions {\n /** The base URL requests are prefixed with (the document's resolved server, or the document's own URL for the document fetch). */\n base: string;\n /** The CSRF header mutations carry, or `null`. */\n csrfHeader: string | null;\n /** The `fetch` to use. Defaults to `globalThis.fetch`, looked up per call so a test can replace it. */\n fetch?: FetchLike;\n}\n\n/**\n * Creates the client for one base URL. A relative `path` joins the base; a\n * `path` that is itself an absolute URL is sent as it is (a document URL the\n * operator configured).\n */\nexport function createDocsClient(options: DocsClientOptions): DocsClient {\n const base = options.base.replace(/\\/+$/, \"\");\n\n /** Builds the URL and `RequestInit` of one request: every header rule lives here. */\n function prepare(\n method: HttpMethod,\n path: string,\n { query, body, signal }: RequestOptions,\n ): { url: string; init: RequestInit } {\n const target = /^https?:\\/\\//.test(path) ? path : `${base}${path}`;\n const url = `${target}${serializeQuery(query)}`;\n const headers: Record<string, string> = { Accept: \"application/json\" };\n if (JSON_METHODS.has(method)) {\n headers[\"Content-Type\"] = \"application/json\";\n }\n if (options.csrfHeader && MUTATING_METHODS.has(method)) {\n headers[options.csrfHeader] = CSRF_HEADER_VALUE;\n }\n const init: RequestInit = {\n method,\n headers,\n credentials: \"same-origin\",\n };\n if (body !== undefined) {\n init.body = JSON.stringify(body);\n }\n if (signal) {\n init.signal = signal;\n }\n return { url, init };\n }\n\n /** Calls `fetch`; a failure other than an abort becomes a `network` {@link ApiError}. */\n async function send(\n url: string,\n init: RequestInit,\n path: string,\n ): Promise<Response> {\n const fetcher = options.fetch ?? globalThis.fetch;\n try {\n return await fetcher(url, init);\n } catch (error) {\n if (isAbort(error, init.signal ?? undefined)) {\n throw error;\n }\n throw new ApiError({\n kind: \"network\",\n status: 0,\n code: \"NETWORK_ERROR\",\n title: \"The server could not be reached\",\n detail: error instanceof Error ? error.message : String(error),\n instance: path,\n cause: error,\n });\n }\n }\n\n async function request<T>(\n method: HttpMethod,\n path: string,\n requestOptions: RequestOptions = {},\n ): Promise<T> {\n const { url, init } = prepare(method, path, requestOptions);\n const response = await send(url, init, path);\n\n if (response.status === 204 || response.status === 205) {\n return undefined as T;\n }\n const text = await response.text();\n if (!response.ok) {\n throw errorFromResponse(response, text, path);\n }\n if (text === \"\") {\n return undefined as T;\n }\n const parsed = isJsonType(response.headers.get(\"content-type\") ?? \"\")\n ? tryParse(text)\n : undefined;\n if (!parsed) {\n throw new ApiError({\n kind: \"parse\",\n status: response.status,\n code: \"INVALID_RESPONSE\",\n title: \"The server answered something other than JSON\",\n detail: text.trim().slice(0, 300) || undefined,\n instance: path,\n });\n }\n return parsed.value as T;\n }\n\n async function requestRaw(\n method: HttpMethod,\n path: string,\n requestOptions: RequestOptions = {},\n ): Promise<RawResponse> {\n const { url, init } = prepare(method, path, requestOptions);\n const started = performance.now();\n const response = await send(url, init, path);\n const text =\n response.status === 204 || response.status === 205\n ? \"\"\n : await response.text();\n const durationMs = performance.now() - started;\n const parsed =\n text !== \"\" && isJsonType(response.headers.get(\"content-type\") ?? \"\")\n ? tryParse(text)\n : undefined;\n const headers: Record<string, string> = {};\n for (const [name, value] of [...response.headers.entries()].sort(\n ([a, b]) => (a < b ? -1 : a > b ? 1 : 0),\n )) {\n headers[name.toLowerCase()] = value;\n }\n return {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n headers,\n body: parsed ? parsed.value : text === \"\" ? undefined : text,\n error: response.ok ? undefined : errorFromResponse(response, text, path),\n durationMs,\n };\n }\n\n return { base, request, requestRaw };\n}\n",
|
|
47
|
+
"import type { DocsClient } from \"./client\";\n\n/**\n * A spec document as JSON. The viewers narrow the parts they render with\n * their own models.\n */\nexport type SpecDocument = Record<string, unknown>;\n\n/** Query keys of the document read, under `[\"docs\"]`. */\nexport const docsKeys = {\n /** Every docs read. */\n all: [\"docs\"] as const,\n /** The one document at a URL. */\n document: (url: string) => [\"docs\", \"document\", url] as const,\n} satisfies Record<string, unknown>;\n\n/** The document's kind, read from its own marker field. */\nexport type DocumentKind = \"openapi\" | \"asyncapi\";\n\n/** What the document is: OpenAPI 3.1 when it carries `openapi`, AsyncAPI 3.0 for `asyncapi`, `null` when neither. */\nexport function documentKind(doc: SpecDocument): DocumentKind | null {\n if (typeof doc.asyncapi === \"string\") {\n return \"asyncapi\";\n }\n if (typeof doc.openapi === \"string\") {\n return \"openapi\";\n }\n return null;\n}\n\n/** `GET <documentUrl>`: the one document the viewer shows. */\nexport function getDocument(\n client: DocsClient,\n url: string,\n signal?: AbortSignal,\n): Promise<SpecDocument> {\n return client.request<SpecDocument>(\"GET\", url, { signal });\n}\n",
|
|
48
|
+
"import type { ReactNode } from \"react\";\nimport { useId } from \"react\";\nimport { cx } from \"./classNames\";\n\n/** Props of {@link Card}. */\nexport interface CardProps {\n /** Heading, rendered as an `<h2>` that labels the card's region. */\n title?: ReactNode;\n /** Controls shown beside the heading. */\n actions?: ReactNode;\n /** Extra class names. */\n className?: string;\n /** The content. */\n children: ReactNode;\n}\n\n/** A bordered surface; with a `title` it is a labelled `<section>`. */\nexport function Card({ title, actions, className, children }: CardProps) {\n const headingId = useId();\n return (\n <section\n className={cx(\"card\", className)}\n aria-labelledby={title ? headingId : undefined}\n >\n {(title || actions) && (\n <div className=\"card-header\">\n {title && (\n <h2\n id={headingId}\n className=\"card-title\"\n >\n {title}\n </h2>\n )}\n {actions && <div className=\"card-actions\">{actions}</div>}\n </div>\n )}\n <div className=\"card-body\">{children}</div>\n </section>\n );\n}\n",
|
|
49
|
+
"import type { ReactNode } from \"react\";\n\n/** Props of {@link EmptyState}. */\nexport interface EmptyStateProps {\n /** The headline, e.g. \"No queues yet\". */\n title: string;\n /** A sentence of explanation. */\n description?: ReactNode;\n /** A follow-up control. */\n action?: ReactNode;\n /**\n * Render the headline as a heading of this level instead of a paragraph.\n * Use `1` when the empty state IS the screen (a not-found or hidden screen\n * has no other `h1`). Defaults to none (a paragraph).\n */\n headingLevel?: 1 | 2 | 3;\n}\n\n/** What a list or screen shows when there is nothing to show. */\nexport function EmptyState({\n title,\n description,\n action,\n headingLevel,\n}: EmptyStateProps) {\n const Title = headingLevel ? (`h${headingLevel}` as const) : \"p\";\n return (\n <div className=\"empty-state\">\n <Title className=\"empty-state-title\">{title}</Title>\n {description && <p className=\"empty-state-description\">{description}</p>}\n {action && <div className=\"empty-state-action\">{action}</div>}\n </div>\n );\n}\n",
|
|
50
|
+
"import { isApiError } from \"../api/errors\";\nimport { Button } from \"./Button\";\n\n/** Props of {@link ErrorView}. */\nexport interface ErrorViewProps {\n /** What failed: an `ApiError` renders its problem fields, anything else a generic message. */\n error: unknown;\n /** A heading override, e.g. \"Could not load queues\". */\n title?: string;\n /** Offers a retry button when given. */\n onRetry?: () => void;\n /**\n * Render the heading as a heading of this level instead of a paragraph.\n * Use `1` when the error replaces the whole screen, so it still has its\n * `h1`. Defaults to none (a paragraph).\n */\n headingLevel?: 1 | 2 | 3;\n}\n\n/** Renders a failed request: title, detail, code/status, and validation issues. */\nexport function ErrorView({\n error,\n title,\n onRetry,\n headingLevel,\n}: ErrorViewProps) {\n const Title = headingLevel ? (`h${headingLevel}` as const) : \"p\";\n const api = isApiError(error) ? error : null;\n const heading = title ?? api?.title ?? \"Something went wrong\";\n const detail =\n api?.detail ?? (error instanceof Error ? error.message : String(error));\n return (\n <div\n className=\"error-view\"\n role=\"alert\"\n >\n <Title className=\"error-view-title\">{heading}</Title>\n {detail && detail !== heading && (\n <p className=\"error-view-detail\">{detail}</p>\n )}\n {api && (\n <p className=\"error-view-meta\">\n <code>{api.code}</code>\n {api.status > 0 && <span> · HTTP {api.status}</span>}\n </p>\n )}\n {api && api.issues.length > 0 && (\n <ul className=\"error-view-issues\">\n {api.issues.map((issue) => (\n <li key={`${issue.target}:${issue.path}:${issue.message}`}>\n <code>\n {issue.target}\n {issue.path ? `.${issue.path}` : \"\"}\n </code>{\" \"}\n {issue.message}\n </li>\n ))}\n </ul>\n )}\n {onRetry && (\n <Button\n variant=\"secondary\"\n onClick={onRetry}\n >\n Retry\n </Button>\n )}\n </div>\n );\n}\n",
|
|
51
|
+
"import { cx } from \"./classNames\";\n\n/** Props of {@link Spinner}. */\nexport interface SpinnerProps {\n /** What is loading; read by screen readers. Defaults to `\"Loading\"`. */\n label?: string;\n /** Show the label next to the spinner. Defaults to `false` (screen readers only). */\n showLabel?: boolean;\n /** Extra class names. */\n className?: string;\n}\n\n/** A loading indicator with a live `status` role. */\nexport function Spinner({\n label = \"Loading\",\n showLabel = false,\n className,\n}: SpinnerProps) {\n return (\n <span\n className={cx(\"spinner-wrap\", className)}\n role=\"status\"\n >\n <span\n className=\"spinner\"\n aria-hidden=\"true\"\n />\n <span className={showLabel ? \"spinner-label\" : \"visually-hidden\"}>\n {label}\n </span>\n </span>\n );\n}\n",
|
|
52
|
+
"/**\n * The loaded document, shared by the viewer's routes: its context and hook,\n * kept apart from `viewer.tsx` so that file exports components only (fast\n * refresh, `react/only-export-components`).\n */\nimport type { DocumentKind, SpecDocument } from \"../../api/docs\";\nimport { createContext, use } from \"react\";\n\n/** What the loaded document is. */\nexport interface LoadedDocument {\n /** The document. */\n doc: SpecDocument;\n /** Its kind. */\n kind: DocumentKind;\n}\n\n/** Carries the loaded document. */\nexport const DocumentContext = createContext<LoadedDocument | null>(null);\n\n/** The loaded document, or a clear error outside `<DocsViewer>`. */\nexport function useDocument(): LoadedDocument {\n const loaded = use(DocumentContext);\n if (!loaded) {\n throw new Error(\"useDocument must be used inside <DocsViewer>\");\n }\n return loaded;\n}\n",
|
|
53
|
+
"import type { ReactNode } from \"react\";\nimport { cx } from \"./classNames\";\n\n/** Colour of a {@link Badge}. */\nexport type BadgeTone =\n \"neutral\" | \"info\" | \"success\" | \"warning\" | \"danger\" | \"accent\";\n\n/** Props of {@link Badge}. */\nexport interface BadgeProps {\n /** Colour. Defaults to `\"neutral\"`. */\n tone?: BadgeTone;\n /** A tooltip / longer explanation. */\n title?: string;\n /** Extra class names. */\n className?: string;\n /**\n * `data-testid` for the badge, when a test or an example must find this one\n * among several — by what it is, rather than by its position.\n */\n testId?: string;\n /** The text. */\n children: ReactNode;\n}\n\n/** A small status label. */\nexport function Badge({\n tone = \"neutral\",\n title,\n className,\n testId,\n children,\n}: BadgeProps) {\n return (\n <span\n className={cx(\"badge\", `badge-${tone}`, className)}\n title={title}\n data-testid={testId}\n >\n {children}\n </span>\n );\n}\n\n/** Props of {@link Chip}. */\nexport interface ChipProps {\n /** What the value is, e.g. `\"namespace\"`. */\n label: string;\n /** The value. */\n value: ReactNode;\n /** A tooltip. */\n title?: string;\n}\n\n/** A label/value pair, e.g. `namespace orders`. */\nexport function Chip({ label, value, title }: ChipProps) {\n return (\n <span\n className=\"chip\"\n title={title}\n >\n <span className=\"chip-label\">{label}</span>\n <span className=\"chip-value\">{value}</span>\n </span>\n );\n}\n",
|
|
54
|
+
"/**\n * Clipboard and JSON-serialisation helpers shared by {@link CopyButton} and\n * {@link JsonView}.\n */\n\n/** How long a {@link CopyButton}'s \"Copied\" / \"Copy failed\" feedback shows, in ms. */\nexport const COPY_FEEDBACK_MS = 1_500;\n\n/**\n * Writes `text` to the clipboard. Resolves `false` instead of throwing when\n * the Clipboard API is missing (an insecure origin, an old browser) or the\n * write is refused (no permission, the document not focused).\n */\nexport async function copyText(text: string): Promise<boolean> {\n try {\n if (typeof navigator === \"undefined\" || !navigator.clipboard) {\n return false;\n }\n await navigator.clipboard.writeText(text);\n return true;\n } catch {\n return false;\n }\n}\n\n/** What {@link toJsonSafe} puts where a reference points back at an ancestor. */\nexport const CIRCULAR_MARKER = \"[Circular]\";\n\n/**\n * A JSON-safe copy of any value: circular references become\n * {@link CIRCULAR_MARKER} (a shared, non-circular reference is kept), a\n * `bigint` becomes its decimal string, `undefined` inside an array becomes\n * `null` (as `JSON.stringify` would), functions and symbols are dropped from\n * objects, and anything with `toJSON` (a `Date`) is serialised through it.\n *\n * The guard is a `WeakSet` of the objects on the current path: added on the\n * way down, deleted on the way back up, so it flags cycles and nothing else.\n */\nexport function toJsonSafe(value: unknown): unknown {\n const path = new WeakSet<object>();\n const walk = (current: unknown): unknown => {\n if (typeof current === \"bigint\") {\n return current.toString();\n }\n if (typeof current === \"function\" || typeof current === \"symbol\") {\n return undefined;\n }\n if (typeof current !== \"object\" || current === null) {\n return current;\n }\n if (path.has(current)) {\n return CIRCULAR_MARKER;\n }\n const withJson = current as { toJSON?: unknown };\n if (typeof withJson.toJSON === \"function\") {\n return walk((withJson.toJSON as () => unknown).call(current));\n }\n path.add(current);\n try {\n if (Array.isArray(current)) {\n return current.map((item) => {\n const safe = walk(item);\n return safe === undefined ? null : safe;\n });\n }\n const out: Record<string, unknown> = {};\n for (const [key, item] of Object.entries(current)) {\n const safe = walk(item);\n if (safe !== undefined) {\n out[key] = safe;\n }\n }\n return out;\n } finally {\n path.delete(current);\n }\n };\n return walk(value);\n}\n\n/**\n * `JSON.stringify` that never throws: circular input and bigints are handled\n * by {@link toJsonSafe}, and a bare `undefined` becomes the text `undefined`.\n */\nexport function safeStringify(value: unknown, indent = 2): string {\n const text = JSON.stringify(toJsonSafe(value), null, indent) as\n string | undefined;\n return text ?? \"undefined\";\n}\n",
|
|
55
|
+
"import { useEffect, useState } from \"react\";\nimport { Button } from \"./Button\";\nimport { cx } from \"./classNames\";\nimport { COPY_FEEDBACK_MS, copyText } from \"./copy\";\n\n/** Props of {@link CopyButton}. */\nexport interface CopyButtonProps {\n /** What to copy, or a function producing it on click (so a large payload is only serialised when asked). */\n text: string | (() => string);\n /** The button's visible text. Defaults to `\"Copy\"`. */\n label?: string;\n /** Accessible name when it differs from `label`, e.g. `\"Copy job id\"`. */\n ariaLabel?: string;\n /** Size. Defaults to `\"sm\"`. */\n size?: \"sm\" | \"md\";\n /** Extra class names. */\n className?: string;\n /** Called after each attempt with whether the clipboard write succeeded. */\n onCopied?: (ok: boolean) => void;\n}\n\n/**\n * Copies text to the clipboard and says so: the label turns into \"Copied\"\n * (or \"Copy failed\") for {@link COPY_FEEDBACK_MS}, announced politely.\n */\nexport function CopyButton({\n text,\n label = \"Copy\",\n ariaLabel,\n size = \"sm\",\n className,\n onCopied,\n}: CopyButtonProps) {\n const [status, setStatus] = useState<\"idle\" | \"copied\" | \"failed\">(\"idle\");\n\n useEffect(() => {\n if (status === \"idle\") {\n return;\n }\n const timer = setTimeout(setStatus, COPY_FEEDBACK_MS, \"idle\");\n return () => clearTimeout(timer);\n }, [status]);\n\n const onClick = async () => {\n const ok = await copyText(typeof text === \"function\" ? text() : text);\n setStatus(ok ? \"copied\" : \"failed\");\n onCopied?.(ok);\n };\n\n return (\n <Button\n variant=\"ghost\"\n size={size}\n className={cx(\"copy-button\", className)}\n aria-label={ariaLabel}\n data-status={status}\n onClick={() => void onClick()}\n >\n <span aria-live=\"polite\">\n {status === \"copied\"\n ? \"Copied\"\n : status === \"failed\"\n ? \"Copy failed\"\n : label}\n </span>\n </Button>\n );\n}\n",
|
|
56
|
+
"import type {\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n RefObject,\n SyntheticEvent,\n} from \"react\";\nimport { useEffect, useId, useRef } from \"react\";\nimport { Button } from \"./Button\";\nimport { cx } from \"./classNames\";\n\n/** What counts as focusable inside a dialog, for the trap and the initial focus. */\nconst FOCUSABLE = [\n \"a[href]\",\n \"button:not([disabled])\",\n \"input:not([disabled]):not([type='hidden'])\",\n \"select:not([disabled])\",\n \"textarea:not([disabled])\",\n \"summary\",\n \"[contenteditable]:not([contenteditable='false'])\",\n \"[tabindex]:not([tabindex='-1'])\",\n].join(\",\");\n\n/** The focusable elements inside `root`, in DOM order. */\nfunction focusableIn(root: HTMLElement): HTMLElement[] {\n return Array.from(root.querySelectorAll<HTMLElement>(FOCUSABLE)).filter(\n (element) => !element.hasAttribute(\"inert\") && !element.closest(\"[inert]\"),\n );\n}\n\n/** Props of {@link Dialog}. */\nexport interface DialogProps {\n /** Whether the dialog is showing. The content only mounts while open, so its state resets on each opening. */\n open: boolean;\n /** Asks to close: Escape, a backdrop click or the close button. The caller sets `open` to `false`. */\n onClose: () => void;\n /** The heading; it labels the dialog (`aria-labelledby`). */\n title: ReactNode;\n /** A sentence under the title; it describes the dialog (`aria-describedby`). */\n description?: ReactNode;\n /** The body. */\n children?: ReactNode;\n /** Actions along the bottom, usually {@link Button}s; the primary one last. */\n footer?: ReactNode;\n /** Close on Escape. Defaults to `true`; turn off while something is pending. */\n closeOnEscape?: boolean;\n /** Close on a click outside the panel. Defaults to `true`. */\n closeOnBackdrop?: boolean;\n /** Show the × button in the header. Defaults to `true`. */\n showCloseButton?: boolean;\n /** Width. Defaults to `\"md\"` (`sm` 400px, `md` 560px, `lg` 800px, each capped at the viewport). */\n size?: \"sm\" | \"md\" | \"lg\";\n /** What to focus on open. Defaults to the first focusable element in the body, then the footer, then the panel. */\n initialFocusRef?: RefObject<HTMLElement | null>;\n /** `\"alertdialog\"` for a confirmation that interrupts. Defaults to `\"dialog\"`. */\n role?: \"dialog\" | \"alertdialog\";\n /** Extra class names on the panel. */\n className?: string;\n}\n\n/**\n * A modal on the native `<dialog>` element (`showModal()`, so the page\n * behind is inert and it sits in the top layer; no portal needed).\n *\n * Tab and Shift+Tab cycle inside it; Escape and a backdrop click call\n * `onClose` when allowed; on close, focus returns to whatever had it when\n * the dialog opened.\n */\nexport function Dialog(props: DialogProps) {\n return props.open ? <OpenDialog {...props} /> : null;\n}\n\n/** The mounted dialog: mount is \"open\", unmount is \"close\". */\nfunction OpenDialog({\n onClose,\n title,\n description,\n children,\n footer,\n closeOnEscape = true,\n closeOnBackdrop = true,\n showCloseButton = true,\n size = \"md\",\n initialFocusRef,\n role = \"dialog\",\n className,\n}: DialogProps) {\n const ref = useRef<HTMLDialogElement>(null);\n const bodyRef = useRef<HTMLDivElement>(null);\n const titleId = useId();\n const descriptionId = useId();\n\n useEffect(() => {\n const dialog = ref.current;\n if (!dialog) {\n return;\n }\n const opener =\n document.activeElement instanceof HTMLElement\n ? document.activeElement\n : null;\n if (!dialog.open) {\n if (typeof dialog.showModal === \"function\") {\n dialog.showModal();\n } else {\n dialog.setAttribute(\"open\", \"\");\n }\n }\n const target =\n initialFocusRef?.current ??\n (bodyRef.current && focusableIn(bodyRef.current)[0]) ??\n focusableIn(dialog).find((element) => !element.dataset.dialogClose) ??\n dialog;\n target.focus();\n return () => {\n if (dialog.open && typeof dialog.close === \"function\") {\n dialog.close();\n }\n if (opener?.isConnected) {\n opener.focus();\n }\n };\n // Runs once per opening (the ref objects are stable).\n }, [initialFocusRef]);\n\n const onKeyDown = (event: KeyboardEvent<HTMLDialogElement>) => {\n if (event.key === \"Escape\") {\n // Stop the native `cancel` so the element's open state stays ours.\n event.preventDefault();\n event.stopPropagation();\n if (closeOnEscape) {\n onClose();\n }\n return;\n }\n if (event.key !== \"Tab\" || !ref.current) {\n return;\n }\n const focusable = focusableIn(ref.current);\n if (focusable.length === 0) {\n event.preventDefault();\n ref.current.focus();\n return;\n }\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const active = document.activeElement;\n const inside = active instanceof Node && ref.current.contains(active);\n if (event.shiftKey && (active === first || !inside)) {\n event.preventDefault();\n last.focus();\n } else if (!event.shiftKey && (active === last || !inside)) {\n event.preventDefault();\n first.focus();\n }\n };\n\n // Escape in a real browser can arrive as `cancel` without a keydown we saw.\n const onCancel = (event: SyntheticEvent<HTMLDialogElement>) => {\n event.preventDefault();\n if (closeOnEscape) {\n onClose();\n }\n };\n\n // The panel fills the element, so a click whose target is the element\n // itself landed on the backdrop.\n const onClick = (event: MouseEvent<HTMLDialogElement>) => {\n if (closeOnBackdrop && event.target === event.currentTarget) {\n onClose();\n }\n };\n\n return (\n // The keyboard handling lives on the dialog element (Escape and the\n // focus trap); a backdrop click is a pointer-only convenience.\n <dialog\n ref={ref}\n role={role === \"alertdialog\" ? \"alertdialog\" : undefined}\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={description ? descriptionId : undefined}\n className={cx(\"dialog\", `dialog-${size}`, className)}\n tabIndex={-1}\n onKeyDown={onKeyDown}\n onCancel={onCancel}\n onClick={onClick}\n >\n <div className=\"dialog-panel\">\n <div className=\"dialog-header\">\n <h2\n id={titleId}\n className=\"dialog-title\"\n >\n {title}\n </h2>\n {showCloseButton && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"dialog-close\"\n aria-label=\"Close\"\n data-dialog-close=\"true\"\n onClick={onClose}\n >\n <span aria-hidden=\"true\">×</span>\n </Button>\n )}\n </div>\n {description && (\n <p\n id={descriptionId}\n className=\"dialog-description\"\n >\n {description}\n </p>\n )}\n {children !== undefined && (\n <div\n ref={bodyRef}\n className=\"dialog-body\"\n >\n {children}\n </div>\n )}\n {footer && <div className=\"dialog-footer\">{footer}</div>}\n </div>\n </dialog>\n );\n}\n",
|
|
57
|
+
"import type { ReactNode } from \"react\";\n\n/** Props of {@link Prose}. */\nexport interface ProseProps {\n /** The text: a spec's `description`, which may carry `` `code` `` spans and blank-line paragraphs. */\n text: string;\n /** Extra class names on each paragraph. */\n className?: string;\n}\n\n/** Splits one paragraph into text and `<code>` spans at backticks. */\nfunction inlineCode(text: string): ReactNode[] {\n return text.split(/(`[^`]+`)/).map((part, index) =>\n part.length > 2 && part.startsWith(\"`\") && part.endsWith(\"`\") ? (\n // eslint-disable-next-line react/no-array-index-key -- the split is fixed for a given text\n <code key={index}>{part.slice(1, -1)}</code>\n ) : (\n part\n ),\n );\n}\n\n/**\n * A spec description as paragraphs, with backtick spans as code. Nothing\n * else of Markdown is interpreted, and no HTML is ever injected: a spec is\n * data from the API, rendered as text.\n */\nexport function Prose({ text, className }: ProseProps) {\n const paragraphs = text.split(/\\n\\s*\\n/).filter((part) => part.trim() !== \"\");\n return (\n <>\n {paragraphs.map((paragraph, index) => (\n <p\n // eslint-disable-next-line react/no-array-index-key -- paragraphs of a fixed text\n key={index}\n className={className}\n >\n {inlineCode(paragraph)}\n </p>\n ))}\n </>\n );\n}\n",
|
|
58
|
+
"/**\n * Pure reading of JSON Schema (the 2020-12 dialect OpenAPI 3.1 and AsyncAPI\n * 3.0 use) for the docs viewers: `$ref` resolution against the document\n * root, a one-line type label, the constraint facts, and the children a tree\n * expands into. Nothing here renders; `SchemaTree.tsx` does.\n */\n\n/**\n * Levels below which a tree never expands, whatever the schema: a guard for\n * a pathological (non-cyclic but huge) document. Cycles stop far earlier, at\n * the first `$ref` already open above.\n */\nexport const MAX_SCHEMA_LEVEL = 24;\n\n/** A schema object; `true`/`false` are schemas too (anything / nothing). */\nexport type SchemaObject = Readonly<Record<string, unknown>>;\n\n/** A spec document, the root `$ref`s resolve against. */\nexport type SchemaRoot = Readonly<Record<string, unknown>>;\n\n/** Whether a value is a (non-array) object. */\nexport function isSchemaObject(value: unknown): value is SchemaObject {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/** Decodes one JSON Pointer token (`~1` → `/`, `~0` → `~`), after URI-decoding. */\nfunction decodeToken(token: string): string {\n let text = token;\n try {\n text = decodeURIComponent(token);\n } catch {\n // Not URI-encoded; use it as it is.\n }\n return text.replace(/~1/g, \"/\").replace(/~0/g, \"~\");\n}\n\n/**\n * The value a local `$ref` (`#/components/schemas/Job`) points at inside\n * `root`, or `undefined` when it points nowhere or is not local (a remote\n * document is never fetched).\n */\nexport function resolveRef(root: SchemaRoot, ref: string): unknown {\n if (ref === \"#\") {\n return root;\n }\n if (!ref.startsWith(\"#/\")) {\n return undefined;\n }\n let node: unknown = root;\n for (const token of ref.slice(2).split(\"/\")) {\n const key = decodeToken(token);\n if (Array.isArray(node)) {\n const index = Number(key);\n node = Number.isInteger(index) ? node[index] : undefined;\n } else if (isSchemaObject(node) && Object.hasOwn(node, key)) {\n node = node[key];\n } else {\n return undefined;\n }\n }\n return node;\n}\n\n/** The name a `$ref` is shown by: its last pointer segment (`#/components/schemas/Job` → `Job`). */\nexport function refName(ref: string): string {\n const tokens = ref.split(\"/\");\n return decodeToken(tokens[tokens.length - 1] ?? ref) || ref;\n}\n\n/** A schema's `$ref`, when it has a string one. */\nexport function refOf(schema: unknown): string | undefined {\n return isSchemaObject(schema) && typeof schema.$ref === \"string\"\n ? schema.$ref\n : undefined;\n}\n\n/** What {@link deref} found. */\nexport interface Dereffed {\n /** The schema behind the refs, or `undefined` when a ref points nowhere. */\n schema: SchemaObject | boolean | undefined;\n /** The refs followed, first to last; empty when `schema` had none. */\n refs: string[];\n /** Whether a ref in the chain points back at one already followed. */\n cycle: boolean;\n}\n\n/**\n * Follows `$ref` → `$ref` → … to a schema that is not only a reference. The\n * siblings of a `$ref` (a `description`, say) are not merged: a caller shows\n * them beside the target.\n */\nexport function deref(schema: unknown, root: SchemaRoot): Dereffed {\n const refs: string[] = [];\n let node: unknown = schema;\n for (;;) {\n const ref = refOf(node);\n if (ref === undefined) {\n break;\n }\n if (refs.includes(ref)) {\n return { schema: undefined, refs, cycle: true };\n }\n refs.push(ref);\n node = resolveRef(root, ref);\n }\n if (typeof node === \"boolean\" || isSchemaObject(node)) {\n return { schema: node, refs, cycle: false };\n }\n return { schema: undefined, refs, cycle: false };\n}\n\n/** The types a schema declares (`type` as a string or an array), or `[]`. */\nexport function declaredTypes(schema: SchemaObject): string[] {\n const { type } = schema;\n if (typeof type === \"string\") {\n return [type];\n }\n return Array.isArray(type)\n ? type.filter((item): item is string => typeof item === \"string\")\n : [];\n}\n\n/** Whether `null` is allowed: `type` includes it, OpenAPI 3.0's `nullable`, or a `const`/`enum` of null. */\nexport function allowsNull(schema: SchemaObject): boolean {\n return (\n declaredTypes(schema).includes(\"null\") ||\n schema.nullable === true ||\n (Array.isArray(schema.enum) && schema.enum.includes(null))\n );\n}\n\n/** Formats a JSON value for a label (`\"a\"`, `3`, `null`, `{…}`). */\nexport function formatValue(value: unknown): string {\n if (value === undefined) {\n return \"undefined\";\n }\n const text = JSON.stringify(value);\n return text.length > 80 ? `${text.slice(0, 77)}…` : text;\n}\n\n/** The alternatives of a composition keyword, when it has any. */\nfunction alternatives(schema: SchemaObject, key: string): unknown[] {\n const value = schema[key];\n return Array.isArray(value) ? value : [];\n}\n\n/**\n * A one-line type: `string`, `integer | null`, `array<JobState>`,\n * `object`, `anyOf(2)`, `any`, `never`; an untyped `enum`/`const` shows its\n * values (`\"asc\" | \"desc\"`), a typed one leaves them to {@link schemaFacts}.\n * A `$ref` shows its name.\n */\nexport function typeLabel(\n schema: unknown,\n root: SchemaRoot,\n level = 0,\n): string {\n if (schema === true) {\n return \"any\";\n }\n if (schema === false) {\n return \"never\";\n }\n if (!isSchemaObject(schema)) {\n return \"any\";\n }\n const ref = refOf(schema);\n if (ref !== undefined) {\n return refName(ref);\n }\n const types = declaredTypes(schema);\n if (types.length > 0) {\n const labels = types.map((type) => {\n if (type === \"array\" && level < 2) {\n const { items } = schema;\n return items === undefined\n ? \"array\"\n : `array<${typeLabel(items, root, level + 1)}>`;\n }\n return type;\n });\n if (schema.nullable === true && !labels.includes(\"null\")) {\n labels.push(\"null\");\n }\n return labels.join(\" | \");\n }\n // Untyped: the values themselves say it (`\"asc\" | \"desc\"`).\n if (Object.hasOwn(schema, \"const\")) {\n return formatValue(schema.const);\n }\n if (Array.isArray(schema.enum)) {\n const values = schema.enum.slice(0, 6).map(formatValue);\n return schema.enum.length > 6\n ? `${values.join(\" | \")} | …`\n : values.join(\" | \");\n }\n for (const key of [\"oneOf\", \"anyOf\", \"allOf\"]) {\n const options = alternatives(schema, key);\n if (options.length > 0) {\n if (key !== \"allOf\" && options.length <= 3 && level < 2) {\n return options\n .map((option) => typeLabel(option, root, level + 1))\n .join(\" | \");\n }\n return `${key}(${options.length})`;\n }\n }\n if (\n isSchemaObject(schema.properties) ||\n schema.additionalProperties !== undefined\n ) {\n return \"object\";\n }\n if (schema.items !== undefined) {\n return \"array\";\n }\n if (schema.not !== undefined) {\n return \"not\";\n }\n return \"any\";\n}\n\n/** One constraint or annotation of a schema, as a label/value pair. */\nexport interface SchemaFact {\n /** A stable key (the keyword). */\n key: string;\n /** What it is, e.g. `\"min\"`. */\n label: string;\n /** Its value, as text. */\n value: string;\n}\n\n/** Keywords shown as facts, in display order, with their labels. */\nconst FACT_KEYWORDS: readonly (readonly [string, string])[] = [\n [\"format\", \"format\"],\n [\"const\", \"const\"],\n [\"enum\", \"one of\"],\n [\"default\", \"default\"],\n [\"minimum\", \"min\"],\n [\"exclusiveMinimum\", \"above\"],\n [\"maximum\", \"max\"],\n [\"exclusiveMaximum\", \"below\"],\n [\"multipleOf\", \"multiple of\"],\n [\"minLength\", \"min length\"],\n [\"maxLength\", \"max length\"],\n [\"pattern\", \"pattern\"],\n [\"minItems\", \"min items\"],\n [\"maxItems\", \"max items\"],\n [\"uniqueItems\", \"unique items\"],\n [\"minProperties\", \"min fields\"],\n [\"maxProperties\", \"max fields\"],\n [\"contentMediaType\", \"media type\"],\n [\"contentEncoding\", \"encoding\"],\n];\n\n/**\n * The facts worth showing beside a schema's type: format, bounds, lengths,\n * pattern, enum/const, default, examples, nullable, deprecated, read/write\n * only. An untyped `enum`/`const` is left out: {@link typeLabel} shows its\n * values as the type.\n */\nexport function schemaFacts(schema: unknown): SchemaFact[] {\n if (!isSchemaObject(schema)) {\n return [];\n }\n const facts: SchemaFact[] = [];\n // An untyped enum/const is the type label itself; say it once.\n const typed = declaredTypes(schema).length > 0;\n for (const [key, label] of FACT_KEYWORDS) {\n if (!Object.hasOwn(schema, key)) {\n continue;\n }\n if ((key === \"enum\" || key === \"const\") && !typed) {\n continue;\n }\n const value = schema[key];\n if (key === \"uniqueItems\" && value !== true) {\n continue;\n }\n if (key === \"enum\" && Array.isArray(value)) {\n facts.push({ key, label, value: value.map(formatValue).join(\", \") });\n continue;\n }\n facts.push({\n key,\n label,\n value:\n typeof value === \"string\" && key !== \"default\" && key !== \"const\"\n ? value\n : formatValue(value),\n });\n }\n if (Array.isArray(schema.examples) && schema.examples.length > 0) {\n facts.push({\n key: \"examples\",\n label: \"examples\",\n value: schema.examples.map(formatValue).join(\", \"),\n });\n } else if (Object.hasOwn(schema, \"example\")) {\n facts.push({\n key: \"example\",\n label: \"example\",\n value: formatValue(schema.example),\n });\n }\n if (schema.nullable === true) {\n facts.push({ key: \"nullable\", label: \"nullable\", value: \"yes\" });\n }\n if (schema.deprecated === true) {\n facts.push({ key: \"deprecated\", label: \"deprecated\", value: \"yes\" });\n }\n if (schema.readOnly === true) {\n facts.push({ key: \"readOnly\", label: \"read only\", value: \"yes\" });\n }\n if (schema.writeOnly === true) {\n facts.push({ key: \"writeOnly\", label: \"write only\", value: \"yes\" });\n }\n return facts;\n}\n\n/**\n * What an object says about fields it does not list: `\"closed\"` for\n * `additionalProperties: false` (the API answers 400 to any other field),\n * `\"any\"` for `true`/`{}`, `\"typed\"` for a schema, `null` when it says\n * nothing (or is not an object).\n */\nexport function additionalFields(\n schema: unknown,\n): \"closed\" | \"any\" | \"typed\" | null {\n if (\n !isSchemaObject(schema) ||\n !Object.hasOwn(schema, \"additionalProperties\")\n ) {\n return null;\n }\n const extra = schema.additionalProperties;\n if (extra === false) {\n return \"closed\";\n }\n if (\n extra === true ||\n (isSchemaObject(extra) && Object.keys(extra).length === 0)\n ) {\n return \"any\";\n }\n return \"typed\";\n}\n\n/** One child of a schema node, as a tree expands it. */\nexport interface SchemaChild {\n /** A key unique among its siblings. */\n key: string;\n /** What it is. */\n kind:\n | \"property\"\n | \"items\"\n | \"prefixItems\"\n | \"additional\"\n | \"patternProperty\"\n | \"oneOf\"\n | \"anyOf\"\n | \"allOf\"\n | \"not\";\n /** The name shown: a property name, `[]`, `[0]`, `Option 1`, `*`, a pattern. */\n label: string;\n /** Its schema. */\n schema: unknown;\n /** For a property: whether the object lists it in `required`. */\n required: boolean;\n}\n\n/** The children a tree expands a (dereferenced) schema into, in reading order. */\nexport function schemaChildren(schema: unknown): SchemaChild[] {\n if (!isSchemaObject(schema)) {\n return [];\n }\n const children: SchemaChild[] = [];\n const required = new Set(\n Array.isArray(schema.required)\n ? schema.required.filter(\n (name): name is string => typeof name === \"string\",\n )\n : [],\n );\n if (isSchemaObject(schema.properties)) {\n for (const [name, child] of Object.entries(schema.properties)) {\n children.push({\n key: `p:${name}`,\n kind: \"property\",\n label: name,\n schema: child,\n required: required.has(name),\n });\n }\n }\n if (isSchemaObject(schema.patternProperties)) {\n for (const [pattern, child] of Object.entries(schema.patternProperties)) {\n children.push({\n key: `pp:${pattern}`,\n kind: \"patternProperty\",\n label: `/${pattern}/`,\n schema: child,\n required: false,\n });\n }\n }\n if (additionalFields(schema) === \"typed\") {\n children.push({\n key: \"additional\",\n kind: \"additional\",\n label: \"any other field\",\n schema: schema.additionalProperties,\n required: false,\n });\n }\n if (Array.isArray(schema.prefixItems)) {\n schema.prefixItems.forEach((child, index) => {\n children.push({\n key: `pi:${index}`,\n kind: \"prefixItems\",\n label: `[${index}]`,\n schema: child,\n required: false,\n });\n });\n }\n if (schema.items !== undefined && typeof schema.items !== \"boolean\") {\n children.push({\n key: \"items\",\n kind: \"items\",\n label: \"[]\",\n schema: schema.items,\n required: false,\n });\n }\n for (const kind of [\"oneOf\", \"anyOf\", \"allOf\"] as const) {\n alternatives(schema, kind).forEach((child, index) => {\n children.push({\n key: `${kind}:${index}`,\n kind,\n label: kind === \"allOf\" ? `Part ${index + 1}` : `Option ${index + 1}`,\n schema: child,\n required: false,\n });\n });\n }\n if (schema.not !== undefined) {\n children.push({\n key: \"not\",\n kind: \"not\",\n label: \"not\",\n schema: schema.not,\n required: false,\n });\n }\n return children;\n}\n\n/** How a composition is introduced above its alternatives. */\nexport const COMPOSITION_LABELS: Readonly<\n Record<\"oneOf\" | \"anyOf\" | \"allOf\", string>\n> = {\n oneOf: \"Exactly one of\",\n anyOf: \"Any of\",\n allOf: \"All of\",\n};\n",
|
|
59
|
+
"import type {\n SchemaChild,\n SchemaFact,\n SchemaObject,\n SchemaRoot,\n} from \"./resolve\";\nimport { useState } from \"react\";\nimport { cx } from \"../../../components/classNames\";\nimport { Prose } from \"./Prose\";\nimport {\n additionalFields,\n COMPOSITION_LABELS,\n deref,\n isSchemaObject,\n MAX_SCHEMA_LEVEL,\n refName,\n refOf,\n schemaChildren,\n schemaFacts,\n typeLabel,\n} from \"./resolve\";\nimport \"./schema.css\";\n\n/** Props of {@link SchemaTree}. */\nexport interface SchemaTreeProps {\n /** The schema to render: an object, `true`/`false`, or a `{ $ref }`. */\n schema: unknown;\n /** The document the schema came from; every `$ref` resolves against it (`#/components/schemas/X`). */\n root: SchemaRoot;\n /** Levels expanded on first render; `0` starts collapsed. Defaults to `1`. */\n depth?: number;\n /**\n * Called when a `$ref`'s name is activated, e.g. to open that component in\n * a side panel. When omitted the name is plain text; the reference can\n * still be expanded in place.\n */\n onRef?: (ref: string, name: string) => void;\n /** Accessible name of the tree, e.g. \"Request body schema\". Defaults to `\"Schema\"`. */\n label?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\n/**\n * A JSON Schema (2020-12, as OpenAPI 3.1 and AsyncAPI 3.0 write it) as an\n * expandable tree: each node shows its name, a required marker, its type,\n * its `$ref` name, its constraints and its description; objects expand into\n * properties (noting `additionalProperties: false` as \"No other fields\"),\n * arrays into their items, and `oneOf`/`anyOf`/`allOf` into labelled\n * alternatives. A `$ref` already open above a node is shown as recursive\n * and not expanded again, so a cyclic schema renders finitely.\n */\nexport function SchemaTree({\n schema,\n root,\n depth = 1,\n onRef,\n label = \"Schema\",\n className,\n}: SchemaTreeProps) {\n return (\n <div\n className={cx(\"schema-tree\", className)}\n role=\"group\"\n aria-label={label}\n >\n <ul className=\"schema-list\">\n <SchemaNode\n child={null}\n schema={schema}\n root={root}\n level={0}\n depth={depth}\n refChain={[]}\n onRef={onRef}\n />\n </ul>\n </div>\n );\n}\n\n/** Props of {@link SchemaNode}. */\ninterface SchemaNodeProps {\n /** How the parent reached this node, or `null` at the root. */\n child: SchemaChild | null;\n /** The node's schema, possibly a `$ref`. */\n schema: unknown;\n /** The document. */\n root: SchemaRoot;\n /** Nesting level, root = 0. */\n level: number;\n /** Levels expanded on first render. */\n depth: number;\n /** The `$ref`s open above this node, for the cycle check. */\n refChain: readonly string[];\n /** See {@link SchemaTreeProps.onRef}. */\n onRef: SchemaTreeProps[\"onRef\"];\n}\n\n/** A `$ref`'s name: a button when the tree can open it, text otherwise. */\nfunction RefName({\n refValue,\n onRef,\n}: {\n /** The `$ref` string. */\n refValue: string;\n /** Opens it, when given. */\n onRef: SchemaTreeProps[\"onRef\"];\n}) {\n const name = refName(refValue);\n if (!onRef) {\n return (\n <code\n className=\"schema-ref\"\n title={refValue}\n >\n {name}\n </code>\n );\n }\n return (\n <button\n type=\"button\"\n className=\"schema-ref schema-ref-link\"\n title={`Open ${refValue}`}\n onClick={() => onRef(refValue, name)}\n >\n {name}\n </button>\n );\n}\n\n/** A reference's facts: its target's, overridden by its own siblings' (a `default` beside a `$ref`). */\nfunction mergeFacts(own: SchemaObject, target: unknown): SchemaFact[] {\n const siblings = schemaFacts({ ...own, $ref: undefined });\n const keys = new Set(siblings.map((fact) => fact.key));\n return [\n ...schemaFacts(target).filter((fact) => !keys.has(fact.key)),\n ...siblings,\n ];\n}\n\n/** One node: its row, description and notes, and its children once expanded. */\nfunction SchemaNode({\n child,\n schema,\n root,\n level,\n depth,\n refChain,\n onRef,\n}: SchemaNodeProps) {\n const ref = refOf(schema);\n const resolved = deref(schema, root);\n const target = resolved.schema;\n const recursive =\n resolved.cycle || resolved.refs.some((item) => refChain.includes(item));\n const unresolved = ref !== undefined && target === undefined && !recursive;\n const children =\n recursive || level >= MAX_SCHEMA_LEVEL ? [] : schemaChildren(target);\n const [expanded, setExpanded] = useState(level < depth);\n\n // A `$ref`'s siblings annotate it; they win over the target's.\n const own = isSchemaObject(schema) ? schema : {};\n const description =\n typeof own.description === \"string\"\n ? own.description\n : isSchemaObject(target) && typeof target.description === \"string\"\n ? target.description\n : undefined;\n const facts =\n ref === undefined ? schemaFacts(schema) : mergeFacts(own, target);\n // A reference shows its target's type beside its name, once it resolves.\n const type =\n ref === undefined\n ? typeLabel(schema, root)\n : recursive || unresolved\n ? null\n : typeLabel(target, root);\n const extra = additionalFields(target);\n const name = child?.label ?? null;\n const nextChain = [...refChain, ...resolved.refs];\n\n return (\n <li\n className=\"schema-node\"\n data-kind={child?.kind ?? \"root\"}\n >\n <div className=\"schema-row\">\n {children.length > 0 ? (\n <button\n type=\"button\"\n className=\"schema-toggle\"\n aria-expanded={expanded}\n aria-label={`${expanded ? \"Collapse\" : \"Expand\"} ${name ?? \"schema\"}`}\n onClick={() => setExpanded((open) => !open)}\n >\n <span aria-hidden=\"true\">{expanded ? \"▾\" : \"▸\"}</span>\n </button>\n ) : (\n <span\n className=\"schema-toggle-spacer\"\n aria-hidden=\"true\"\n />\n )}\n {name !== null && <span className=\"schema-name\">{name}</span>}\n {child?.required && (\n <span\n className=\"schema-required\"\n title=\"Required\"\n >\n required\n </span>\n )}\n {type !== null && <span className=\"schema-type\">{type}</span>}\n {ref !== undefined && (\n <RefName\n refValue={ref}\n onRef={onRef}\n />\n )}\n {recursive && (\n <span\n className=\"schema-note-inline\"\n title=\"This schema contains itself; it is expanded above.\"\n >\n recursive\n </span>\n )}\n {unresolved && (\n <span className=\"schema-note-inline schema-unresolved\">\n unresolved $ref\n </span>\n )}\n {facts.map((fact) => (\n <span\n key={fact.key}\n className=\"schema-fact\"\n data-fact={fact.key}\n >\n <span className=\"schema-fact-label\">{fact.label}</span>{\" \"}\n <code>{fact.value}</code>\n </span>\n ))}\n </div>\n {description !== undefined && (\n <div className=\"schema-description\">\n <Prose text={description} />\n </div>\n )}\n {extra === \"closed\" && (\n <p\n className=\"schema-closed\"\n data-testid=\"schema-closed\"\n >\n No other fields: any field not listed is refused.\n </p>\n )}\n {extra === \"any\" && (\n <p className=\"schema-open\">Other fields: any value.</p>\n )}\n {expanded && children.length > 0 && (\n <ul className=\"schema-list\">\n {children.map((item, index) => {\n const previous = children[index - 1];\n const composition =\n (item.kind === \"oneOf\" ||\n item.kind === \"anyOf\" ||\n item.kind === \"allOf\") &&\n previous?.kind !== item.kind;\n return (\n <SchemaChildItem\n key={item.key}\n item={item}\n heading={\n composition\n ? COMPOSITION_LABELS[\n item.kind as \"oneOf\" | \"anyOf\" | \"allOf\"\n ]\n : undefined\n }\n root={root}\n level={level + 1}\n depth={depth}\n refChain={nextChain}\n onRef={onRef}\n />\n );\n })}\n </ul>\n )}\n </li>\n );\n}\n\n/** A child node, preceded by its composition's heading when it opens one. */\nfunction SchemaChildItem({\n item,\n heading,\n ...rest\n}: Omit<SchemaNodeProps, \"child\" | \"schema\"> & {\n /** The child. */\n item: SchemaChild;\n /** \"Any of\" etc., before the first alternative of a composition. */\n heading: string | undefined;\n}) {\n return (\n <>\n {heading !== undefined && (\n <li className=\"schema-composition\">{heading}</li>\n )}\n <SchemaNode\n {...rest}\n child={item}\n schema={item.schema}\n />\n </>\n );\n}\n",
|
|
60
|
+
"/**\n * The contract between `docsUi()` (server, `lib/docs/`) and the React viewer\n * (`app/docs/`).\n *\n * The server resolves this once per mount and inlines it into the HTML shell\n * as `<script type=\"application/json\" id=\"bun-api-docs-ui-config\" nonce=\"…\">`.\n * The viewer reads it before its first request. It must stay free of runtime\n * imports: both sides import it, and the app side is bundled for the browser.\n */\n\nimport type { UiTheme } from \"../../kit/browser/shared\";\nimport type { UiUnauthorized } from \"../../kit/browser/unauthorized\";\n\nexport type { UiTheme };\n\n/** Id of the `<script type=\"application/json\">` element carrying {@link DocsUiConfig}. */\nexport const DOCS_UI_CONFIG_ELEMENT_ID = \"bun-api-docs-ui-config\";\n\n/**\n * The specification-extension prefixes the viewers read, in priority order:\n * an extension named on an operation, channel or scheme as\n * `<prefix>-<name>` is read from the first prefix that carries it (so\n * `x-bun-common-schema` wins over `x-bun-jobs-schema` when a document has\n * both). An extension under any other prefix is ignored.\n */\nexport const DEFAULT_EXTENSION_PREFIXES = [\"x-bun-common\", \"x-bun-jobs\"];\n\n/**\n * Colour scheme the viewer starts in: the package's shared {@link UiTheme}\n * (`\"system\"` follows `prefers-color-scheme`), under the docs viewer's name.\n */\nexport type DocsUiTheme = UiTheme;\n\n/** Resolved configuration handed to the browser. Never carries secrets. */\nexport interface DocsUiConfig {\n /** Shape version of this object, bumped on a breaking change. Currently `1`. */\n version: 1;\n /** Page title. Defaults to `\"API docs\"`. */\n title: string;\n /** Absolute path the viewer is mounted at, no trailing slash (e.g. `\"/docs\"`). Client routes live under it. */\n basePath: string;\n /** Path the hashed assets are served from, e.g. `\"/docs/assets\"`. */\n assetsPath: string;\n /**\n * Where the viewer fetches the one document it shows: `<basePath>/document.json`\n * when `docsUi()` was given a thunk (the router serves it there), else the\n * URL exactly as configured (a same-origin path or an `http(s)` URL).\n */\n documentUrl: string;\n /**\n * Header the try-it panel adds on every mutation (any non-empty value), or\n * `null` when none is configured. Mirrors the documented API's CSRF rule.\n */\n csrfHeader: string | null;\n /** The extension prefixes in effect (see {@link DEFAULT_EXTENSION_PREFIXES}). */\n extensions: readonly string[];\n /** Initial colour scheme. */\n theme: DocsUiTheme;\n /**\n * Where an authorization failure sends the browser (`docsUi()`'s\n * `unauthorized`), or `null` when it is off: the viewer then shows the\n * failure, as before. A host app that embeds the viewer's screens passes\n * `null` and redirects through its own option.\n */\n unauthorized: UiUnauthorized | null;\n}\n",
|
|
61
|
+
"import type { SpecDocument } from \"../../../api/docs\";\nimport { DEFAULT_EXTENSION_PREFIXES } from \"../../../../../lib/docs/browser/config.ts\";\nimport { deref, isSchemaObject, refOf, resolveRef } from \"../schema/resolve\";\n\n/**\n * The parts of an OpenAPI 3.1 document the HTTP reference renders, read out\n * of the JSON into plain records. Everything is defensive: the document is\n * data from the API, and a field of the wrong shape is skipped rather than\n * trusted.\n *\n * The extensions are vendor-neutral: each is named on its node as\n * `<prefix>-<name>` (`x-bun-jobs-action`, `x-bun-common-csrf`, …) and read\n * from the first prefix of {@link HttpModelOptions.extensions} that carries\n * it; one under any other prefix is ignored.\n */\n\n/** Options of {@link listOperations}. */\nexport interface HttpModelOptions {\n /**\n * The extension prefixes, first hit winning. Defaults to\n * `[\"x-bun-common\", \"x-bun-jobs\"]`.\n */\n extensions?: readonly string[];\n}\n\n/** Reads the `<prefix>-<name>` extension of a node from the first prefix carrying it. */\nfunction extensionOf(\n node: Record<string, unknown>,\n name: string,\n prefixes: readonly string[],\n): unknown {\n for (const prefix of prefixes) {\n const key = `${prefix}-${name}`;\n if (Object.hasOwn(node, key)) {\n return node[key];\n }\n }\n return undefined;\n}\n\n/** Path item keys that are operations, in the order OpenAPI lists them. */\nconst OPERATION_METHODS = [\n \"get\",\n \"put\",\n \"post\",\n \"delete\",\n \"options\",\n \"head\",\n \"patch\",\n \"trace\",\n] as const;\n\n/** Where a parameter goes. */\nexport type ParameterLocation = \"path\" | \"query\" | \"header\" | \"cookie\";\n\n/** One parameter of an operation. */\nexport interface DocParameter {\n /** Its name. */\n name: string;\n /** Where it goes. */\n in: ParameterLocation;\n /** Whether it must be sent (path parameters always are). */\n required: boolean;\n /** What it means. */\n description?: string;\n /** Its schema (possibly a `$ref`). */\n schema: unknown;\n /** OpenAPI `style` (`form` for the API's array query parameters). */\n style?: string;\n /** OpenAPI `explode`: `true` sends an array as repeated keys. */\n explode?: boolean;\n /** Whether it is deprecated. */\n deprecated: boolean;\n}\n\n/** One media type of a body. */\nexport interface DocMediaType {\n /** E.g. `application/json`. */\n contentType: string;\n /** Its schema, when it declares one. */\n schema: unknown;\n}\n\n/** An operation's request body. */\nexport interface DocRequestBody {\n /** Whether a body must be sent. */\n required: boolean;\n /** A note, e.g. that `Content-Type: application/json` is required even when bodiless. */\n description?: string;\n /** The media types accepted. */\n content: DocMediaType[];\n}\n\n/** One documented response. */\nexport interface DocResponse {\n /** `\"200\"`, `\"404\"`, `\"default\"`, `\"4XX\"`. */\n status: string;\n /** What it means (for a problem: the titles of its codes). */\n description: string;\n /** Its bodies. */\n content: DocMediaType[];\n /** `<prefix>-codes`: the problem codes answered with this status. */\n codes: string[];\n /** The `$ref` it came from (`#/components/responses/Problem`), if any. */\n ref?: string;\n}\n\n/** `<prefix>-csrf`: what a mutation must carry. */\nexport interface DocCsrf {\n /** The header every mutation must carry (any non-empty value), or `null` when none is required. */\n header: string | null;\n /** Whether `Content-Type: application/json` is required, even without a body. */\n requireJson: boolean;\n}\n\n/** One operation, flattened. */\nexport interface DocOperation {\n /** `operationId` (or `METHOD path` when the document gives none). */\n id: string;\n /** Upper-case method. */\n method: string;\n /** The path template, relative to the server (`/queues/{queue}`). */\n path: string;\n /** One line. */\n summary?: string;\n /** More. */\n description?: string;\n /** Its tags. */\n tags: string[];\n /** Whether it is deprecated. */\n deprecated: boolean;\n /** Path-item and operation parameters, operation ones winning. */\n parameters: DocParameter[];\n /** The body it takes. */\n requestBody?: DocRequestBody;\n /** Its responses, in document order. */\n responses: DocResponse[];\n /** `<prefix>-action`: the permission the operation needs. */\n action?: string;\n /** `<prefix>-mutation`: whether it changes state (CSRF checks, refused when read-only). */\n mutation: boolean;\n /** `<prefix>-requires`: the driver methods it needs. */\n requires: string[];\n /** `<prefix>-csrf`, on mutations when CSRF checks are on. */\n csrf?: DocCsrf;\n}\n\n/** One tag, with the operations under it. */\nexport interface DocTagGroup {\n /** The tag's name. */\n name: string;\n /** What it covers. */\n description?: string;\n /** Its operations, in document order. */\n operations: DocOperation[];\n}\n\n/** One server entry. */\nexport interface DocServer {\n /** Its URL, often relative (`/jobs-api`). */\n url: string;\n /** A note. */\n description?: string;\n}\n\n/** The document's header. */\nexport interface DocInfo {\n /** `openapi`, e.g. `3.1.0`. */\n openapi: string;\n /** The API's title. */\n title: string;\n /** Its version. */\n version: string;\n /** What it is. */\n description?: string;\n /** Where it is served. */\n servers: DocServer[];\n}\n\n/** A string field, or `undefined`. */\nfunction text(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\n\n/** A string array field, or `[]`. */\nfunction strings(value: unknown): string[] {\n return Array.isArray(value)\n ? value.filter((item): item is string => typeof item === \"string\")\n : [];\n}\n\n/** Follows a `$ref` to a component (a parameter, a response, a body), one level of indirection at a time. */\nfunction component(\n doc: SpecDocument,\n value: unknown,\n): { node: Record<string, unknown> | undefined; ref?: string } {\n const ref = refOf(value);\n if (ref === undefined) {\n return { node: isSchemaObject(value) ? value : undefined };\n }\n const target = deref(value, doc).schema;\n return { node: isSchemaObject(target) ? target : undefined, ref };\n}\n\n/** The media types of a `content` map. */\nfunction mediaTypes(value: unknown): DocMediaType[] {\n if (!isSchemaObject(value)) {\n return [];\n }\n return Object.entries(value).map(([contentType, media]) => ({\n contentType,\n schema: isSchemaObject(media) ? media.schema : undefined,\n }));\n}\n\n/** Reads one parameter. */\nfunction readParameter(\n doc: SpecDocument,\n raw: unknown,\n): DocParameter | undefined {\n const { node } = component(doc, raw);\n const name = text(node?.name);\n const location = text(node?.in);\n if (\n !node ||\n name === undefined ||\n (location !== \"path\" &&\n location !== \"query\" &&\n location !== \"header\" &&\n location !== \"cookie\")\n ) {\n return undefined;\n }\n return {\n name,\n in: location,\n required: location === \"path\" || node.required === true,\n description: text(node.description),\n schema: node.schema,\n style: text(node.style),\n explode: typeof node.explode === \"boolean\" ? node.explode : undefined,\n deprecated: node.deprecated === true,\n };\n}\n\n/** Reads the `<prefix>-csrf` extension. */\nfunction readCsrf(value: unknown): DocCsrf | undefined {\n if (!isSchemaObject(value)) {\n return undefined;\n }\n return {\n header: text(value.header) ?? null,\n requireJson: value.requireJson === true,\n };\n}\n\n/** Reads one operation of a path item. */\nfunction readOperation(\n doc: SpecDocument,\n path: string,\n method: string,\n raw: Record<string, unknown>,\n shared: unknown[],\n prefixes: readonly string[],\n): DocOperation {\n const parameters = new Map<string, DocParameter>();\n for (const item of [\n ...shared,\n ...(Array.isArray(raw.parameters) ? raw.parameters : []),\n ]) {\n const parameter = readParameter(doc, item);\n if (parameter) {\n parameters.set(`${parameter.in}:${parameter.name}`, parameter);\n }\n }\n const body = component(doc, raw.requestBody).node;\n const responses: DocResponse[] = [];\n if (isSchemaObject(raw.responses)) {\n for (const [status, value] of Object.entries(raw.responses)) {\n const { node, ref } = component(doc, value);\n responses.push({\n status,\n description: text(node?.description) ?? \"\",\n content: mediaTypes(node?.content),\n codes: strings(\n node === undefined ? undefined : extensionOf(node, \"codes\", prefixes),\n ),\n ...(ref ? { ref } : {}),\n });\n }\n }\n return {\n id: text(raw.operationId) ?? `${method.toUpperCase()} ${path}`,\n method: method.toUpperCase(),\n path,\n summary: text(raw.summary),\n description: text(raw.description),\n tags: strings(raw.tags),\n deprecated: raw.deprecated === true,\n parameters: [...parameters.values()],\n requestBody: body\n ? {\n required: body.required === true,\n description: text(body.description),\n content: mediaTypes(body.content),\n }\n : undefined,\n responses,\n action: text(extensionOf(raw, \"action\", prefixes)),\n mutation: extensionOf(raw, \"mutation\", prefixes) === true,\n requires: strings(extensionOf(raw, \"requires\", prefixes)),\n csrf: readCsrf(extensionOf(raw, \"csrf\", prefixes)),\n };\n}\n\n/** Every operation of the document, in path order and, within a path, method order. */\nexport function listOperations(\n doc: SpecDocument,\n options: HttpModelOptions = {},\n): DocOperation[] {\n const prefixes = options.extensions ?? DEFAULT_EXTENSION_PREFIXES;\n const operations: DocOperation[] = [];\n if (!isSchemaObject(doc.paths)) {\n return operations;\n }\n for (const [path, item] of Object.entries(doc.paths)) {\n const pathItem = component(doc, item).node;\n if (!pathItem) {\n continue;\n }\n const shared = Array.isArray(pathItem.parameters)\n ? pathItem.parameters\n : [];\n for (const method of OPERATION_METHODS) {\n const raw = pathItem[method];\n if (isSchemaObject(raw)) {\n operations.push(\n readOperation(doc, path, method, raw, shared, prefixes),\n );\n }\n }\n }\n return operations;\n}\n\n/** The document's header: title, version, description, servers. */\nexport function readInfo(doc: SpecDocument): DocInfo {\n const info = isSchemaObject(doc.info) ? doc.info : {};\n const servers = Array.isArray(doc.servers)\n ? doc.servers.flatMap((server): DocServer[] => {\n const url = isSchemaObject(server) ? text(server.url) : undefined;\n return url === undefined\n ? []\n : [\n {\n url,\n description: text(\n (server as Record<string, unknown>).description,\n ),\n },\n ];\n })\n : [];\n return {\n openapi: text(doc.openapi) ?? \"\",\n title: text(info.title) ?? \"API\",\n version: text(info.version) ?? \"\",\n description: text(info.description),\n servers: servers.length > 0 ? servers : [{ url: \"/\" }],\n };\n}\n\n/**\n * Operations by tag, in the document's `tags` order; tags an operation uses\n * but the list omits follow in first-use order, then `Other` for untagged\n * operations. An operation with two tags is listed under both.\n */\nexport function groupByTag(\n doc: SpecDocument,\n operations: readonly DocOperation[],\n): DocTagGroup[] {\n const groups = new Map<string, DocTagGroup>();\n if (Array.isArray(doc.tags)) {\n for (const tag of doc.tags) {\n const name = isSchemaObject(tag) ? text(tag.name) : undefined;\n if (name !== undefined && !groups.has(name)) {\n groups.set(name, {\n name,\n description: text((tag as Record<string, unknown>).description),\n operations: [],\n });\n }\n }\n }\n const other: DocOperation[] = [];\n for (const operation of operations) {\n if (operation.tags.length === 0) {\n other.push(operation);\n }\n for (const tag of operation.tags) {\n let group = groups.get(tag);\n if (!group) {\n group = { name: tag, operations: [] };\n groups.set(tag, group);\n }\n group.operations.push(operation);\n }\n }\n const result = [...groups.values()].filter(\n (group) => group.operations.length > 0,\n );\n if (other.length > 0) {\n result.push({ name: \"Other\", operations: other });\n }\n return result;\n}\n\n/** One section of the sidebar: a document's `x-tagGroups` entry, over the tags it names. */\nexport interface DocSection {\n /** The section's name. */\n name: string;\n /** Its tags with their operations, in the section's order. */\n tags: DocTagGroup[];\n}\n\n/** A section with a React key unique among its siblings, and its position. */\nexport interface KeyedSection {\n /** Its name, suffixed `#2`, `#3`… when a hand-written document repeats one. */\n key: string;\n /** Its position in the document's order (for heading ids). */\n index: number;\n /** The section. */\n section: DocSection;\n}\n\n/**\n * Keys `sections` for rendering: two sections may share a name in a\n * hand-written document, so the name alone is not a key, and a position is\n * not a stable one (`react/no-array-index-key`).\n */\nexport function keyedSections(sections: readonly DocSection[]): KeyedSection[] {\n const seen = new Map<string, number>();\n return sections.map((section, index) => {\n const count = (seen.get(section.name) ?? 0) + 1;\n seen.set(section.name, count);\n return {\n key: count === 1 ? section.name : `${section.name}#${count}`,\n index,\n section,\n };\n });\n}\n\n/** The section the tags no `x-tagGroups` entry names go in. */\nconst OTHER_SECTION = \"Other\";\n\n/**\n * The document's sections (`x-tagGroups`, Redoc's and Scalar's shape: `[{\n * name, tags }]`, the one bun-common's `generateOpenApi({ tagGroups })`\n * emits), each over its tags' groups, in the document's order; `undefined`\n * when the document declares none, so the sidebar stays one level deep. A\n * malformed entry is skipped, and a list with none well formed reads as none.\n *\n * Unlike Redoc, nothing is hidden: a group no section names (`Other`, the\n * untagged operations, among them) follows in a trailing `Other` section, or\n * in the document's section of that name when it has one. A tag in two\n * sections is listed in each; a section with no group (a search left none)\n * is dropped.\n */\nexport function groupBySection(\n doc: SpecDocument,\n groups: readonly DocTagGroup[],\n): DocSection[] | undefined {\n const raw = doc[\"x-tagGroups\"];\n if (!Array.isArray(raw)) {\n return undefined;\n }\n const declared = raw.flatMap(\n (entry: unknown): { name: string; tags: string[] }[] => {\n if (!isSchemaObject(entry)) {\n return [];\n }\n const name = text(entry.name);\n return name === undefined || !Array.isArray(entry.tags)\n ? []\n : [{ name, tags: strings(entry.tags) }];\n },\n );\n if (declared.length === 0) {\n return undefined;\n }\n const byName = new Map(groups.map((group) => [group.name, group]));\n const named = new Set<string>();\n const sections: DocSection[] = [];\n for (const { name, tags } of declared) {\n const section: DocSection = { name, tags: [] };\n for (const tag of tags) {\n const group = byName.get(tag);\n if (group && !section.tags.includes(group)) {\n section.tags.push(group);\n named.add(tag);\n }\n }\n sections.push(section);\n }\n const rest = groups.filter((group) => !named.has(group.name));\n if (rest.length > 0) {\n const other = sections.find((section) => section.name === OTHER_SECTION);\n if (other) {\n other.tags.push(...rest);\n } else {\n sections.push({ name: OTHER_SECTION, tags: rest });\n }\n }\n return sections.filter((section) => section.tags.length > 0);\n}\n\n/**\n * Whether an operation matches a search: every whitespace-separated term\n * must appear, ignoring case, in its path, id, summary, method or action.\n */\nexport function matchesSearch(operation: DocOperation, query: string): boolean {\n const terms = query.toLowerCase().split(/\\s+/).filter(Boolean);\n if (terms.length === 0) {\n return true;\n }\n const haystack = [\n operation.method,\n operation.path,\n operation.id,\n operation.summary ?? \"\",\n operation.action ?? \"\",\n ]\n .join(\" \")\n .toLowerCase();\n return terms.every((term) => haystack.includes(term));\n}\n\n/** Groups filtered by a search; groups left empty are dropped. */\nexport function filterGroups(\n groups: readonly DocTagGroup[],\n query: string,\n): DocTagGroup[] {\n return groups\n .map((group) => ({\n ...group,\n operations: group.operations.filter((operation) =>\n matchesSearch(operation, query),\n ),\n }))\n .filter((group) => group.operations.length > 0);\n}\n\n/**\n * A server URL as the reader can use it: a relative one (`/jobs-api`, the\n * API's default) is resolved against the origin the app talks to — the API\n * base's own origin when it is absolute, else the page's.\n */\nexport function resolveServerUrl(\n url: string,\n apiBase: string,\n pageOrigin: string,\n): string {\n const origin = /^https?:\\/\\//.test(apiBase)\n ? new URL(apiBase).origin\n : pageOrigin;\n try {\n return new URL(url, `${origin}/`).href.replace(/\\/$/, \"\");\n } catch {\n return url;\n }\n}\n\n/** The named component schemas, sorted as the document lists them. */\nexport function componentSchemaNames(doc: SpecDocument): string[] {\n const schemas = resolveRef(doc, \"#/components/schemas\");\n return isSchemaObject(schemas) ? Object.keys(schemas) : [];\n}\n\n/** The tone a method badge takes. */\nexport function methodTone(\n method: string,\n): \"info\" | \"success\" | \"warning\" | \"danger\" | \"neutral\" {\n switch (method) {\n case \"GET\":\n return \"info\";\n case \"POST\":\n return \"success\";\n case \"PUT\":\n case \"PATCH\":\n return \"warning\";\n case \"DELETE\":\n return \"danger\";\n default:\n return \"neutral\";\n }\n}\n\n/** The success responses (2xx): the note try-it shows when the status it received is not documented. */\nexport function successStatuses(operation: DocOperation): string[] {\n return operation.responses\n .map((response) => response.status)\n .filter((status) => /^2\\d\\d$/.test(status));\n}\n",
|
|
62
|
+
"import { createContext, use } from \"react\";\n\n/** What a {@link Field} tells the control inside it. */\nexport interface FieldControlProps {\n /** The control's `id`; the field's `<label htmlFor>` points at it. */\n id: string;\n /** Ids of the hint and error (and any extra description), space separated; `undefined` when there are none. */\n \"aria-describedby\": string | undefined;\n /** `true` while the field shows an error. */\n \"aria-invalid\": boolean | undefined;\n /** Whether the field is marked required. */\n required: boolean | undefined;\n}\n\n/** Carries the enclosing field's wiring; `null` outside a field. */\nexport const FieldContext = createContext<FieldControlProps | null>(null);\n\n/** The enclosing {@link Field}'s wiring, or `null` when the control stands alone. */\nexport function useField(): FieldControlProps | null {\n return use(FieldContext);\n}\n\n/** Joins ids for `aria-describedby`, skipping empty ones; `undefined` when none are left. */\nexport function joinIds(\n ...ids: (string | false | null | undefined)[]\n): string | undefined {\n const joined = ids.filter(Boolean).join(\" \");\n return joined === \"\" ? undefined : joined;\n}\n",
|
|
63
|
+
"import type { ReactNode } from \"react\";\nimport type { FieldControlProps } from \"./fieldContext\";\nimport { useId, useMemo } from \"react\";\nimport { cx } from \"./classNames\";\nimport { FieldContext, joinIds } from \"./fieldContext\";\n\n/** Props of {@link Field}. */\nexport interface FieldProps {\n /** The visible label, a `<label>` for the control. */\n label: ReactNode;\n /** Help under the control; it describes the control (`aria-describedby`). */\n hint?: ReactNode;\n /** An error under the control; it describes the control and sets `aria-invalid`. Falsy means valid. */\n error?: ReactNode;\n /** Show a required marker and mark the control required. Defaults to `false`. */\n required?: boolean;\n /** The control's id. Defaults to a generated one. */\n id?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n /** The control: one of this kit's inputs (they read the wiring from context), or a render function receiving it for anything else. */\n children: ReactNode | ((control: FieldControlProps) => ReactNode);\n}\n\n/**\n * A labelled form row: label, control, hint and error. The kit's inputs\n * ({@link TextInput}, {@link NumberInput}, {@link Select},\n * {@link DateTimeInput}, `JsonEditor`) pick up the id, `aria-describedby`,\n * `aria-invalid` and `required` from it; a plain element can take them from\n * the render-function form of `children`.\n */\nexport function Field({\n label,\n hint,\n error,\n required = false,\n id,\n className,\n children,\n}: FieldProps) {\n const generatedId = useId();\n const controlId = id ?? generatedId;\n const hintId = `${controlId}-hint`;\n const errorId = `${controlId}-error`;\n const hasError = Boolean(error);\n const control = useMemo<FieldControlProps>(\n () => ({\n id: controlId,\n \"aria-describedby\": joinIds(hint ? hintId : null, hasError && errorId),\n \"aria-invalid\": hasError || undefined,\n required: required || undefined,\n }),\n [controlId, hint, hintId, hasError, errorId, required],\n );\n return (\n <div className={cx(\"field\", hasError && \"field-invalid\", className)}>\n <label\n className=\"field-label\"\n htmlFor={controlId}\n >\n {label}\n {required && (\n <span\n className=\"field-required\"\n aria-hidden=\"true\"\n >\n {\" \"}\n *\n </span>\n )}\n </label>\n <FieldContext value={control}>\n {typeof children === \"function\" ? children(control) : children}\n </FieldContext>\n {hint && (\n <p\n id={hintId}\n className=\"field-hint\"\n >\n {hint}\n </p>\n )}\n {hasError && (\n <p\n id={errorId}\n className=\"field-error\"\n >\n {error}\n </p>\n )}\n </div>\n );\n}\n",
|
|
64
|
+
"import type {\n ChangeEvent,\n InputHTMLAttributes,\n ReactNode,\n Ref,\n SelectHTMLAttributes,\n} from \"react\";\nimport { useEffect, useId, useRef, useState } from \"react\";\nimport { cx } from \"./classNames\";\nimport { joinIds, useField } from \"./fieldContext\";\nimport {\n localTimeZone,\n parseNumberInput,\n readDateTimeLocal,\n toDateTimeLocal,\n} from \"./inputValues\";\n\n/**\n * The kit's form controls. Inside a {@link Field} each takes its id,\n * `aria-describedby`, `aria-invalid` and `required` from it; explicit props\n * win, and an explicit `aria-describedby` is added to the field's.\n */\n\n/** Wiring props every control accepts. */\ninterface ControlWiring {\n /** The element id. Defaults to the enclosing field's. */\n id?: string;\n /** Extra description ids, added to the field's. */\n \"aria-describedby\"?: string;\n /** Invalid state. Defaults to the enclosing field's. */\n \"aria-invalid\"?: boolean;\n /** Required. Defaults to the enclosing field's. */\n required?: boolean;\n}\n\n/** Resolves a control's wiring against the enclosing field. */\nfunction useWiring(props: ControlWiring) {\n const field = useField();\n return {\n id: props.id ?? field?.id,\n \"aria-describedby\": joinIds(\n field?.[\"aria-describedby\"],\n props[\"aria-describedby\"],\n ),\n \"aria-invalid\": props[\"aria-invalid\"] ?? field?.[\"aria-invalid\"],\n required: props.required ?? field?.required,\n };\n}\n\n/** Native input props the kit's inputs pass through (value and change are typed per control). */\ntype PassThroughInputProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n | \"value\"\n | \"defaultValue\"\n | \"onChange\"\n | \"type\"\n | \"id\"\n | \"aria-describedby\"\n | \"aria-invalid\"\n | \"required\"\n | \"min\"\n | \"max\"\n | \"step\"\n> & {\n /** The underlying `<input>`, e.g. to focus it. */\n ref?: Ref<HTMLInputElement>;\n};\n\n/** Props of {@link TextInput}. */\nexport interface TextInputProps extends PassThroughInputProps, ControlWiring {\n /** The text. */\n value: string;\n /** Called with the new text on each edit. */\n onChange: (value: string, event: ChangeEvent<HTMLInputElement>) => void;\n /** The input type. Defaults to `\"text\"`. */\n type?: \"text\" | \"search\" | \"email\" | \"url\" | \"password\" | \"tel\";\n}\n\n/** A single-line text input. */\nexport function TextInput({\n value,\n onChange,\n type = \"text\",\n className,\n ...rest\n}: TextInputProps) {\n const wiring = useWiring(rest);\n return (\n <input\n {...rest}\n {...wiring}\n type={type}\n className={cx(\"input\", className)}\n value={value}\n onChange={(event) => onChange(event.target.value, event)}\n />\n );\n}\n\n/** Props of {@link NumberInput}. */\nexport interface NumberInputProps extends PassThroughInputProps, ControlWiring {\n /** The number, or `undefined` for empty. */\n value: number | undefined;\n /** Called with the new number, or `undefined` when the input is empty (or not a number). */\n onChange: (\n value: number | undefined,\n event: ChangeEvent<HTMLInputElement>,\n ) => void;\n /** Smallest allowed value (native validation only; the value is not clamped). */\n min?: number;\n /** Largest allowed value (native validation only; the value is not clamped). */\n max?: number;\n /** Step. Defaults to `1`; pass `\"any\"` for decimals. */\n step?: number | \"any\";\n}\n\n/** A number input where empty means `undefined`, never `0`. */\nexport function NumberInput({\n value,\n onChange,\n min,\n max,\n step = 1,\n className,\n ...rest\n}: NumberInputProps) {\n const wiring = useWiring(rest);\n return (\n <input\n inputMode={step === \"any\" ? \"decimal\" : \"numeric\"}\n {...rest}\n {...wiring}\n type=\"number\"\n className={cx(\"input\", \"input-number\", className)}\n min={min}\n max={max}\n step={step}\n value={value === undefined || Number.isNaN(value) ? \"\" : value}\n onChange={(event) =>\n onChange(parseNumberInput(event.target.value), event)\n }\n />\n );\n}\n\n/** One option of a {@link Select}. */\nexport interface SelectOption<V extends string> {\n /** The value. */\n value: V;\n /** The text shown. Defaults to the value. */\n label?: string;\n /** Not selectable. */\n disabled?: boolean;\n}\n\n/** Props of {@link Select}. */\nexport interface SelectProps<V extends string>\n extends\n Omit<\n SelectHTMLAttributes<HTMLSelectElement>,\n | \"value\"\n | \"defaultValue\"\n | \"onChange\"\n | \"id\"\n | \"aria-describedby\"\n | \"aria-invalid\"\n | \"required\"\n | \"multiple\"\n >,\n ControlWiring {\n /** The choices. Include `{ value: \"\", label: \"Any\" }` (with `\"\"` in `V`) for an \"unset\" choice. */\n options: readonly SelectOption<V>[];\n /** The selected value. */\n value: V;\n /** Called with the chosen value. */\n onChange: (value: V, event: ChangeEvent<HTMLSelectElement>) => void;\n}\n\n/** A native `<select>` over a typed set of string values. */\nexport function Select<V extends string>({\n options,\n value,\n onChange,\n className,\n ...rest\n}: SelectProps<V>) {\n const wiring = useWiring(rest);\n return (\n <select\n {...rest}\n {...wiring}\n className={cx(\"input\", \"select\", className)}\n value={value}\n onChange={(event) => {\n const chosen = options.find(\n (option) => option.value === event.target.value,\n );\n if (chosen) {\n onChange(chosen.value, event);\n }\n }}\n >\n {options.map((option) => (\n <option\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n >\n {option.label ?? option.value}\n </option>\n ))}\n </select>\n );\n}\n\n/** Props of {@link Checkbox}. */\nexport interface CheckboxProps extends Omit<\n PassThroughInputProps,\n \"checked\" | \"defaultChecked\"\n> {\n /** Whether it is ticked. */\n checked: boolean;\n /** Called with the new state. */\n onChange: (checked: boolean, event: ChangeEvent<HTMLInputElement>) => void;\n /** The label beside the box; clicking it toggles. */\n label: ReactNode;\n /** Help under the label; it describes the box. */\n hint?: ReactNode;\n /** The element id. Defaults to a generated one. */\n id?: string;\n}\n\n/** A checkbox with its own label (it does not need a {@link Field}). */\nexport function Checkbox({\n checked,\n onChange,\n label,\n hint,\n id,\n className,\n ...rest\n}: CheckboxProps) {\n const generatedId = useId();\n const inputId = id ?? generatedId;\n const hintId = `${inputId}-hint`;\n return (\n <div className={cx(\"checkbox\", className)}>\n <input\n {...rest}\n id={inputId}\n type=\"checkbox\"\n checked={checked}\n aria-describedby={hint ? hintId : undefined}\n onChange={(event) => onChange(event.target.checked, event)}\n />\n <label htmlFor={inputId}>{label}</label>\n {hint && (\n <p\n id={hintId}\n className=\"field-hint checkbox-hint\"\n >\n {hint}\n </p>\n )}\n </div>\n );\n}\n\n/** Props of {@link DateTimeInput}. */\nexport interface DateTimeInputProps\n extends Omit<PassThroughInputProps, \"min\" | \"max\">, ControlWiring {\n /** The instant, epoch ms, or `undefined` for empty. */\n value: number | undefined;\n /**\n * Called with the instant (epoch ms) the user picked, or `undefined` when\n * cleared, or when the field holds something unusable (then `onProblem`\n * says what).\n */\n onChange: (\n value: number | undefined,\n event: ChangeEvent<HTMLInputElement>,\n ) => void;\n /**\n * Called with a message when the field holds something unusable — a time\n * outside what the API accepts (0 to `MAX_DATE_MS`) or one the browser\n * could not read — and with `undefined` once it holds a usable time, is\n * cleared, or unmounts. Judged on each change and again on blur, since a\n * half-typed entry into an empty field fires no change. The typed text is\n * kept on screen meanwhile. Show the message as the field's error and hold\n * the form back until it clears (`useFieldProblems`, in\n * `hooks/useFieldProblems`).\n */\n onProblem?: (problem: string | undefined) => void;\n /** Earliest allowed instant, epoch ms (native validation only). */\n min?: number;\n /** Latest allowed instant, epoch ms (native validation only). */\n max?: number;\n /** Let the user pick seconds. Defaults to `false` (minute precision). */\n withSeconds?: boolean;\n /** Show the browser's time zone beside the input. Defaults to `true`. */\n showTimeZone?: boolean;\n}\n\n/**\n * A `datetime-local` input speaking epoch ms. The wall-clock value is read\n * in the browser's time zone, which is shown beside it (and part of its\n * description), so \"09:00\" is never ambiguous.\n */\nexport function DateTimeInput({\n value,\n onChange,\n onProblem,\n min,\n max,\n withSeconds = false,\n showTimeZone = true,\n className,\n onBlur,\n ...rest\n}: DateTimeInputProps) {\n const zoneId = useId();\n const wiring = useWiring(rest);\n // What the user typed, kept on screen while it is unusable (the value is\n // then `undefined`, which would otherwise blank the field).\n const [draft, setDraft] = useState<string | null>(null);\n const onProblemRef = useRef(onProblem);\n useEffect(() => {\n onProblemRef.current = onProblem;\n });\n // A field that goes away takes its problem with it.\n useEffect(() => () => onProblemRef.current?.(undefined), []);\n return (\n <span className=\"input-group\">\n <input\n {...rest}\n {...wiring}\n aria-describedby={joinIds(\n wiring[\"aria-describedby\"],\n showTimeZone && zoneId,\n )}\n type=\"datetime-local\"\n className={cx(\"input\", \"input-datetime\", className)}\n step={withSeconds ? 1 : 60}\n min={min === undefined ? undefined : toDateTimeLocal(min, withSeconds)}\n max={max === undefined ? undefined : toDateTimeLocal(max, withSeconds)}\n value={\n value === undefined\n ? (draft ?? \"\")\n : toDateTimeLocal(value, withSeconds)\n }\n onChange={(event) => {\n const reading = readDateTimeLocal(\n event.target.value,\n event.target.validity.badInput,\n );\n if (reading.kind === \"problem\") {\n setDraft(event.target.value);\n onChange(undefined, event);\n onProblem?.(reading.problem);\n return;\n }\n setDraft(null);\n onChange(reading.kind === \"time\" ? reading.ms : undefined, event);\n onProblem?.(undefined);\n }}\n // A half-typed entry into an empty field fires no change (its value\n // stays \"\"), so it is judged again on leaving the field.\n onBlur={(event) => {\n onBlur?.(event);\n const reading = readDateTimeLocal(\n event.target.value,\n event.target.validity.badInput,\n );\n onProblem?.(reading.kind === \"problem\" ? reading.problem : undefined);\n }}\n />\n {showTimeZone && (\n <span\n id={zoneId}\n className=\"input-suffix\"\n >\n {localTimeZone()}\n </span>\n )}\n </span>\n );\n}\n",
|
|
65
|
+
"import { isApiError } from \"../api/errors\";\nimport { Button } from \"./Button\";\nimport { cx } from \"./classNames\";\n\n/** Props of {@link ProblemBanner}. */\nexport interface ProblemBannerProps {\n /** What failed: an `ApiError` shows its title, code, detail, context and issues; anything else its message. */\n error: unknown;\n /** A heading override, e.g. \"Could not save limits\". Defaults to the problem's title. */\n title?: string;\n /** Offers a Retry button when given. */\n onRetry?: () => void;\n /** Offers a Dismiss button when given. */\n onDismiss?: () => void;\n /** Extra class names. */\n className?: string;\n}\n\n/** Formats one context value for the banner: strings as-is, the rest as JSON. */\nfunction contextText(value: unknown): string {\n if (typeof value === \"string\") {\n return value;\n }\n try {\n return JSON.stringify(value) ?? String(value);\n } catch {\n return String(value);\n }\n}\n\n/**\n * A compact, inline error for a panel or a dialog: one line of title and\n * code, the detail, the problem's `context` as `key=value` chips, and any\n * validation issues. {@link ErrorView} is the full-size version for a screen.\n */\nexport function ProblemBanner({\n error,\n title,\n onRetry,\n onDismiss,\n className,\n}: ProblemBannerProps) {\n const api = isApiError(error) ? error : null;\n const heading = title ?? api?.title ?? \"Something went wrong\";\n const detail =\n api?.detail ?? (error instanceof Error ? error.message : String(error));\n const context = api ? Object.entries(api.context) : [];\n return (\n <div\n className={cx(\"problem-banner\", className)}\n role=\"alert\"\n >\n <div className=\"problem-banner-main\">\n <p className=\"problem-banner-title\">\n <strong>{heading}</strong>\n {api && (\n <code className=\"problem-banner-code\">\n {api.code}\n {api.status > 0 ? ` · ${api.status}` : \"\"}\n </code>\n )}\n </p>\n {detail && detail !== heading && (\n <p className=\"problem-banner-detail\">{detail}</p>\n )}\n {context.length > 0 && (\n <ul\n className=\"problem-banner-context\"\n aria-label=\"Context\"\n >\n {context.map(([key, value]) => (\n <li key={key}>\n <span className=\"problem-banner-key\">{key}</span>=\n <code>{contextText(value)}</code>\n </li>\n ))}\n </ul>\n )}\n {api && api.issues.length > 0 && (\n <ul className=\"problem-banner-issues\">\n {api.issues.map((issue) => (\n <li key={`${issue.target}:${issue.path}:${issue.message}`}>\n <code>\n {issue.target}\n {issue.path ? `.${issue.path}` : \"\"}\n </code>{\" \"}\n {issue.message}\n </li>\n ))}\n </ul>\n )}\n </div>\n {(onRetry || onDismiss) && (\n <div className=\"problem-banner-actions\">\n {onRetry && (\n <Button\n size=\"sm\"\n onClick={onRetry}\n >\n Retry\n </Button>\n )}\n {onDismiss && (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={onDismiss}\n >\n Dismiss\n </Button>\n )}\n </div>\n )}\n </div>\n );\n}\n",
|
|
66
|
+
"import type { FormEvent, ReactNode } from \"react\";\nimport { useRef, useState } from \"react\";\nimport { Button } from \"./Button\";\nimport { Dialog } from \"./Dialog\";\nimport { Field } from \"./Field\";\nimport { TextInput } from \"./inputs\";\nimport { ProblemBanner } from \"./ProblemBanner\";\n\n/** Props of {@link ConfirmDialog}. */\nexport interface ConfirmDialogProps {\n /** Whether it is showing. State (typed text, error) resets on each opening. */\n open: boolean;\n /** Asks to close (Cancel, Escape, backdrop, or after a successful confirm). Ignored while pending. */\n onClose: () => void;\n /** The question, e.g. \"Drain queue emails?\". */\n title: ReactNode;\n /** What will happen, in a sentence. */\n description?: ReactNode;\n /** Extra body content, e.g. options such as a \"include delayed\" checkbox. */\n children?: ReactNode;\n /**\n * The action. May be async: the dialog shows a pending state until it\n * settles, closes on success, and on a throw stays open with the error\n * shown inline (an `ApiError` as a {@link ProblemBanner}).\n */\n onConfirm: () => unknown;\n /** The confirm button's text. Defaults to `\"Confirm\"`. */\n confirmLabel?: string;\n /** The confirm button's text while pending. Defaults to `confirmLabel` + \"…\". */\n pendingLabel?: string;\n /** The cancel button's text. Defaults to `\"Cancel\"`. */\n cancelLabel?: string;\n /** `\"danger\"` for destructive actions: a red button, `alertdialog`, and Cancel focused first. Defaults to `\"default\"`. */\n variant?: \"default\" | \"danger\";\n /** When set, the user must type exactly this (e.g. the queue name) before Confirm enables. */\n confirmText?: string;\n /** The typed-confirmation label. Defaults to \"Type <confirmText> to confirm\". */\n confirmTextLabel?: ReactNode;\n /** Close after a successful `onConfirm`. Defaults to `true`. */\n closeOnSuccess?: boolean;\n /** Keeps Confirm disabled, e.g. while the body's options are invalid. */\n confirmDisabled?: boolean;\n}\n\n/**\n * A yes/no dialog for an action, built on {@link Dialog}: an optional typed\n * confirmation for destructive ones, an async `onConfirm` with a pending\n * state, and the failure shown in place so the user can retry or cancel.\n */\nexport function ConfirmDialog(props: ConfirmDialogProps) {\n return props.open ? <OpenConfirmDialog {...props} /> : null;\n}\n\n/** The mounted dialog; its state lives exactly as long as one opening. */\nfunction OpenConfirmDialog({\n onClose,\n title,\n description,\n children,\n onConfirm,\n confirmLabel = \"Confirm\",\n pendingLabel,\n cancelLabel = \"Cancel\",\n variant = \"default\",\n confirmText,\n confirmTextLabel,\n closeOnSuccess = true,\n confirmDisabled = false,\n}: ConfirmDialogProps) {\n const [typed, setTyped] = useState(\"\");\n const [pending, setPending] = useState(false);\n const [error, setError] = useState<unknown>(null);\n const cancelRef = useRef<HTMLButtonElement>(null);\n const confirmRef = useRef<HTMLButtonElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const matches = confirmText === undefined || typed === confirmText;\n const canConfirm = matches && !pending && !confirmDisabled;\n const danger = variant === \"danger\";\n\n const confirm = async () => {\n if (!canConfirm) {\n return;\n }\n setPending(true);\n setError(null);\n try {\n await onConfirm();\n setPending(false);\n if (closeOnSuccess) {\n onClose();\n }\n } catch (caught) {\n setPending(false);\n setError(caught);\n }\n };\n\n const onSubmit = (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n void confirm();\n };\n\n const close = () => {\n if (!pending) {\n onClose();\n }\n };\n\n return (\n <Dialog\n open\n onClose={close}\n title={title}\n description={description}\n role={danger ? \"alertdialog\" : \"dialog\"}\n size=\"sm\"\n closeOnEscape={!pending}\n closeOnBackdrop={!pending}\n initialFocusRef={\n confirmText !== undefined ? inputRef : danger ? cancelRef : confirmRef\n }\n footer={\n <>\n <Button\n ref={cancelRef}\n onClick={close}\n disabled={pending}\n >\n {cancelLabel}\n </Button>\n <Button\n ref={confirmRef}\n variant={danger ? \"danger\" : \"primary\"}\n disabled={!canConfirm}\n aria-busy={pending || undefined}\n onClick={() => void confirm()}\n >\n {pending ? (pendingLabel ?? `${confirmLabel}…`) : confirmLabel}\n </Button>\n </>\n }\n >\n <form\n className=\"confirm-dialog-body\"\n onSubmit={onSubmit}\n >\n {children}\n {confirmText !== undefined && (\n <Field\n label={\n confirmTextLabel ?? (\n <>\n Type <code>{confirmText}</code> to confirm\n </>\n )\n }\n >\n <TextInput\n ref={inputRef}\n value={typed}\n onChange={setTyped}\n autoComplete=\"off\"\n spellCheck={false}\n disabled={pending}\n />\n </Field>\n )}\n {error !== null && <ProblemBanner error={error} />}\n </form>\n </Dialog>\n );\n}\n",
|
|
67
|
+
"/**\n * JSON parsing that says *where* it failed. `JSON.parse` does the parsing;\n * only when it throws does a small scanner walk the text to find the\n * offending position, because engines disagree on whether (and how) their\n * messages carry one — JavaScriptCore's carry none at all.\n */\n\n/** Where and why a JSON text failed to parse. */\nexport interface JsonParseError {\n /** What is wrong, e.g. \"Expected ',' or '}'\". */\n message: string;\n /** 1-based line. */\n line: number;\n /** 1-based column (in UTF-16 code units). */\n column: number;\n /** 0-based offset into the text. */\n offset: number;\n}\n\n/** The outcome of {@link parseJsonText}. */\nexport type JsonParseResult =\n | {\n /** It parsed. */\n ok: true;\n /** The parsed value. */\n value: unknown;\n }\n | {\n /** It did not parse. */\n ok: false;\n /** Where and why. */\n error: JsonParseError;\n };\n\n/** Thrown inside the scanner with the failing offset. */\nclass ScanError extends Error {\n /** 0-based offset. */\n readonly offset: number;\n\n constructor(message: string, offset: number) {\n super(message);\n this.offset = offset;\n }\n}\n\n/** Describes the character at `index` for a message. */\nfunction describe(text: string, index: number): string {\n return index >= text.length\n ? \"end of input\"\n : `'${text[index] === \"\\n\" ? \"\\\\n\" : text[index]}'`;\n}\n\n/**\n * Walks `text` as JSON (RFC 8259) and throws a {@link ScanError} at the\n * first position that is not valid. Returns normally for valid JSON.\n */\nfunction scan(text: string): void {\n let index = 0;\n\n const skipWhitespace = () => {\n while (\n index < text.length &&\n (text[index] === \" \" ||\n text[index] === \"\\t\" ||\n text[index] === \"\\n\" ||\n text[index] === \"\\r\")\n ) {\n index++;\n }\n };\n\n const fail = (expected: string): never => {\n throw new ScanError(\n `Expected ${expected} but found ${describe(text, index)}`,\n index,\n );\n };\n\n const literal = (word: string) => {\n for (let i = 0; i < word.length; i++) {\n if (text[index] !== word[i]) {\n fail(`'${word}'`);\n }\n index++;\n }\n };\n\n const string = () => {\n index++; // opening quote\n while (index < text.length) {\n const char = text[index];\n if (char === '\"') {\n index++;\n return;\n }\n if (char === \"\\\\\") {\n const next = text[index + 1];\n if (next === \"u\") {\n if (!/^[0-9a-f]{4}$/i.test(text.slice(index + 2, index + 6))) {\n index += 2;\n fail(\"four hex digits after \\\\u\");\n }\n index += 6;\n continue;\n }\n if (next === undefined || !'\"\\\\/bfnrt'.includes(next)) {\n index++;\n fail(\"a valid escape\");\n }\n index += 2;\n continue;\n }\n if (char < \" \") {\n throw new ScanError(\n \"Control characters must be escaped in strings\",\n index,\n );\n }\n index++;\n }\n throw new ScanError(\"Unterminated string\", index);\n };\n\n const number = () => {\n const match = /^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:e[+-]?\\d+)?/i.exec(\n text.slice(index, index + 400),\n );\n if (!match) {\n fail(\"a number\");\n }\n index += match![0].length;\n };\n\n const value = (): void => {\n skipWhitespace();\n const char = text[index];\n if (char === \"{\") {\n index++;\n skipWhitespace();\n if (text[index] === \"}\") {\n index++;\n return;\n }\n for (;;) {\n skipWhitespace();\n if (text[index] !== '\"') {\n fail(\"a property name in double quotes\");\n }\n string();\n skipWhitespace();\n if (text[index] !== \":\") {\n fail(\"':'\");\n }\n index++;\n value();\n skipWhitespace();\n if (text[index] === \",\") {\n index++;\n continue;\n }\n if (text[index] === \"}\") {\n index++;\n return;\n }\n fail(\"',' or '}'\");\n }\n }\n if (char === \"[\") {\n index++;\n skipWhitespace();\n if (text[index] === \"]\") {\n index++;\n return;\n }\n for (;;) {\n value();\n skipWhitespace();\n if (text[index] === \",\") {\n index++;\n continue;\n }\n if (text[index] === \"]\") {\n index++;\n return;\n }\n fail(\"',' or ']'\");\n }\n }\n if (char === '\"') {\n string();\n return;\n }\n if (char === \"t\") {\n literal(\"true\");\n return;\n }\n if (char === \"f\") {\n literal(\"false\");\n return;\n }\n if (char === \"n\") {\n literal(\"null\");\n return;\n }\n if (char === \"-\" || (char !== undefined && char >= \"0\" && char <= \"9\")) {\n number();\n return;\n }\n fail(\"a value\");\n };\n\n value();\n skipWhitespace();\n if (index < text.length) {\n fail(\"end of input\");\n }\n}\n\n/** 1-based line and column of an offset. */\nexport function lineColumn(\n text: string,\n offset: number,\n): { line: number; column: number } {\n let line = 1;\n let lineStart = 0;\n const end = Math.min(offset, text.length);\n for (let i = 0; i < end; i++) {\n if (text.charCodeAt(i) === 10) {\n line++;\n lineStart = i + 1;\n }\n }\n return { line, column: end - lineStart + 1 };\n}\n\n/** Parses JSON; on failure, reports the message with its line and column. */\nexport function parseJsonText(text: string): JsonParseResult {\n try {\n return { ok: true, value: JSON.parse(text) as unknown };\n } catch (caught) {\n let message = caught instanceof Error ? caught.message : String(caught);\n let offset = 0;\n try {\n scan(text);\n // The scanner accepted what JSON.parse refused (should not happen);\n // keep the engine's message without a position.\n } catch (scanned) {\n if (scanned instanceof ScanError) {\n message = scanned.message;\n offset = scanned.offset;\n }\n }\n return {\n ok: false,\n error: { message, offset, ...lineColumn(text, offset) },\n };\n }\n}\n\n/** The UTF-8 size of a text, in bytes (what the API measures against its limits). */\nexport function byteLength(text: string): number {\n return new TextEncoder().encode(text).byteLength;\n}\n\n/** Formats a byte count: `512 B`, `1.5 KiB`, `2.0 MiB`. */\nexport function formatBytes(bytes: number): string {\n if (bytes < 1024) {\n return `${bytes} B`;\n }\n if (bytes < 1024 * 1024) {\n return `${(bytes / 1024).toFixed(1)} KiB`;\n }\n return `${(bytes / (1024 * 1024)).toFixed(1)} MiB`;\n}\n\n/** The editor's state, as `JsonEditor` reports it on every change. */\nexport interface JsonEditorState {\n /** The raw text. */\n text: string;\n /** The parsed value; `undefined` when the text does not parse (or is empty). */\n value: unknown;\n /** Whether the text parses (or is empty and `allowEmpty`) and fits `maxBytes`. The one flag a submit button needs. */\n valid: boolean;\n /** The parse error with its line and column, or `null`. */\n error: JsonParseError | null;\n /** The text's UTF-8 size. */\n bytes: number;\n /** Whether `bytes` exceeds `maxBytes`. */\n overLimit: boolean;\n}\n\n/** Options of {@link jsonEditorState}. */\nexport interface JsonEditorStateOptions {\n /** The size limit, bytes. */\n maxBytes?: number;\n /** Whether empty (whitespace-only) text is valid, as `undefined`. Defaults to `false`. */\n allowEmpty?: boolean;\n}\n\n/**\n * Works out a {@link JsonEditorState} from text, e.g. to seed a form's\n * validity before the first edit.\n */\nexport function jsonEditorState(\n text: string,\n { maxBytes, allowEmpty = false }: JsonEditorStateOptions = {},\n): JsonEditorState {\n const bytes = byteLength(text);\n const overLimit = maxBytes !== undefined && bytes > maxBytes;\n if (allowEmpty && text.trim() === \"\") {\n return {\n text,\n value: undefined,\n valid: !overLimit,\n error: null,\n bytes,\n overLimit,\n };\n }\n const parsed = parseJsonText(text);\n return parsed.ok\n ? {\n text,\n value: parsed.value,\n valid: !overLimit,\n error: null,\n bytes,\n overLimit,\n }\n : {\n text,\n value: undefined,\n valid: false,\n error: parsed.error,\n bytes,\n overLimit,\n };\n}\n",
|
|
68
|
+
"import type { JsonEditorState, JsonEditorStateOptions } from \"./jsonParse\";\nimport { useId, useMemo } from \"react\";\nimport { Button } from \"./Button\";\nimport { cx } from \"./classNames\";\nimport { joinIds, useField } from \"./fieldContext\";\nimport { formatBytes, jsonEditorState } from \"./jsonParse\";\n\n/** Props of {@link JsonEditor}. */\nexport interface JsonEditorProps extends JsonEditorStateOptions {\n /** The text (controlled). Seed it with `JSON.stringify(value, null, 2)`. */\n value: string;\n /** Called on every edit, format and minify with the new state. */\n onChange: (state: JsonEditorState) => void;\n /** Visible rows. Defaults to `10`. */\n rows?: number;\n /** Accessible name when not inside a `Field`. */\n \"aria-label\"?: string;\n /** The textarea's id. Defaults to the enclosing field's, or a generated one. */\n id?: string;\n /** Read-only: no editing, no format/minify. */\n readOnly?: boolean;\n /** Disabled. */\n disabled?: boolean;\n /** Placeholder text. */\n placeholder?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\n/**\n * A plain-textarea JSON editor: the parse error with line and column, a\n * UTF-8 size meter against `maxBytes` (turning red over it), and Format /\n * Minify. Inside a `Field` it takes the field's id and description.\n */\nexport function JsonEditor({\n value: text,\n onChange,\n maxBytes,\n allowEmpty = false,\n rows = 10,\n \"aria-label\": ariaLabel,\n id,\n readOnly = false,\n disabled = false,\n placeholder,\n className,\n}: JsonEditorProps) {\n const field = useField();\n const generatedId = useId();\n const inputId = id ?? field?.id ?? generatedId;\n const errorId = `${inputId}-json-error`;\n const sizeId = `${inputId}-json-size`;\n const state = useMemo(\n () => jsonEditorState(text, { maxBytes, allowEmpty }),\n [text, maxBytes, allowEmpty],\n );\n const emit = (next: string) =>\n onChange(jsonEditorState(next, { maxBytes, allowEmpty }));\n const reformat = (indent: number | undefined) => {\n if (state.error === null && state.value !== undefined) {\n emit(JSON.stringify(state.value, null, indent));\n }\n };\n const canFormat =\n !readOnly && !disabled && state.error === null && state.value !== undefined;\n\n return (\n <div\n className={cx(\n \"json-editor\",\n !state.valid && \"json-editor-invalid\",\n className,\n )}\n >\n <textarea\n id={inputId}\n className=\"input json-editor-text\"\n rows={rows}\n value={text}\n placeholder={placeholder}\n readOnly={readOnly}\n disabled={disabled}\n spellCheck={false}\n autoCapitalize=\"off\"\n autoComplete=\"off\"\n aria-label={ariaLabel}\n aria-invalid={!state.valid || field?.[\"aria-invalid\"] || undefined}\n aria-required={field?.required}\n aria-describedby={joinIds(\n field?.[\"aria-describedby\"],\n state.error && errorId,\n sizeId,\n )}\n onChange={(event) => emit(event.target.value)}\n />\n <div className=\"json-editor-bar\">\n {state.error ? (\n <p\n id={errorId}\n className=\"json-editor-error\"\n >\n Line {state.error.line}, column {state.error.column}:{\" \"}\n {state.error.message}\n </p>\n ) : (\n <p className=\"json-editor-ok muted\">Valid JSON</p>\n )}\n <span\n id={sizeId}\n className={cx(\"json-editor-size\", state.overLimit && \"is-over\")}\n >\n {maxBytes !== undefined && (\n <meter\n className=\"json-editor-meter\"\n min={0}\n max={maxBytes}\n low={maxBytes * 0.8}\n high={maxBytes}\n optimum={0}\n value={Math.min(state.bytes, maxBytes)}\n aria-hidden=\"true\"\n />\n )}\n {maxBytes === undefined\n ? formatBytes(state.bytes)\n : state.overLimit\n ? `${formatBytes(state.bytes)} of ${formatBytes(maxBytes)}: over the limit by ${formatBytes(state.bytes - maxBytes)}`\n : `${formatBytes(state.bytes)} of ${formatBytes(maxBytes)}`}\n </span>\n {!readOnly && (\n <span className=\"json-editor-actions\">\n <Button\n size=\"sm\"\n disabled={!canFormat}\n onClick={() => reformat(2)}\n >\n Format\n </Button>\n <Button\n size=\"sm\"\n disabled={!canFormat}\n onClick={() => reformat(undefined)}\n >\n Minify\n </Button>\n </span>\n )}\n </div>\n </div>\n );\n}\n",
|
|
69
|
+
"import type { ReactNode } from \"react\";\nimport { useState } from \"react\";\nimport { cx } from \"./classNames\";\nimport { safeStringify } from \"./copy\";\nimport { CopyButton } from \"./CopyButton\";\n\n/** Limits of a {@link JsonView}. */\ninterface ViewLimits {\n /** Levels expanded on first render. */\n expandDepth: number;\n /** Characters of a string shown before \"show more\". */\n maxStringLength: number;\n /** Children rendered per expand (and per \"show more\"). */\n maxChildren: number;\n}\n\n/** Props of {@link JsonView}. */\nexport interface JsonViewProps {\n /** Any value: JSON, `undefined`, a `Date`, a `bigint`, even a circular object. */\n value: unknown;\n /** Accessible name of the tree, e.g. \"Job data\". Defaults to `\"JSON\"`. */\n label?: string;\n /** Levels expanded on first render; `0` starts collapsed. Defaults to `1`. */\n expandDepth?: number;\n /** Characters of a string shown before a \"show more\" control. Defaults to `200`. */\n maxStringLength?: number;\n /** Array items / object keys rendered per expand; \"show more\" renders the next batch. Defaults to `100`. */\n maxChildren?: number;\n /** Show a Copy button for the whole value (serialised on click, circular-safe). Defaults to `true`. */\n copyable?: boolean;\n /** Extra class names. */\n className?: string;\n}\n\n/** What a value looks like to the viewer. */\ntype Kind =\n | \"object\"\n | \"array\"\n | \"string\"\n | \"number\"\n | \"boolean\"\n | \"null\"\n | \"undefined\"\n | \"other\";\n\n/** Classifies a value for rendering. */\nfunction kindOf(value: unknown): Kind {\n if (value === null) {\n return \"null\";\n }\n if (Array.isArray(value)) {\n return \"array\";\n }\n switch (typeof value) {\n case \"object\":\n return value instanceof Date ? \"other\" : \"object\";\n case \"string\":\n return \"string\";\n case \"number\":\n case \"bigint\":\n return \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"undefined\":\n return \"undefined\";\n default:\n return \"other\";\n }\n}\n\n/** A primitive's (or opaque value's) text. */\nfunction scalarText(value: unknown): string {\n if (typeof value === \"bigint\") {\n return `${value}n`;\n }\n if (value instanceof Date) {\n return Number.isNaN(value.getTime()) ? \"Invalid Date\" : value.toISOString();\n }\n if (typeof value === \"symbol\" || typeof value === \"function\") {\n return value.toString();\n }\n return String(value);\n}\n\n/** The first `limit` entries of a container, arrays keyed by index; never touches the rest. */\nfunction entriesOf(value: object, limit: number): [string, unknown][] {\n if (Array.isArray(value)) {\n return value\n .slice(0, limit)\n .map((item: unknown, index) => [String(index), item]);\n }\n const record = value as Record<string, unknown>;\n return Object.keys(record)\n .slice(0, limit)\n .map((key) => [key, record[key]]);\n}\n\n/**\n * A read-only, collapsible tree of any value. Built for job payloads of any\n * size: levels past `expandDepth` start collapsed, each expand renders at\n * most `maxChildren` children (with \"show more\"), long strings are cut at\n * `maxStringLength`, and a reference back to an ancestor renders as\n * `[Circular]` instead of recursing.\n */\nexport function JsonView({\n value,\n label = \"JSON\",\n expandDepth = 1,\n maxStringLength = 200,\n maxChildren = 100,\n copyable = true,\n className,\n}: JsonViewProps) {\n const limits: ViewLimits = { expandDepth, maxStringLength, maxChildren };\n return (\n <div className={cx(\"json-view\", className)}>\n {copyable && (\n <div className=\"json-view-toolbar\">\n <CopyButton\n text={() => safeStringify(value, 2)}\n ariaLabel={`Copy ${label}`}\n />\n </div>\n )}\n <ul\n className=\"json-tree\"\n aria-label={label}\n >\n <JsonNode\n name={null}\n value={value}\n depth={0}\n ancestors={[]}\n limits={limits}\n />\n </ul>\n </div>\n );\n}\n\n/** Props of {@link JsonNode}. */\ninterface JsonNodeProps {\n /** The key or index, or `null` at the root. */\n name: string | null;\n /** The value at this node. */\n value: unknown;\n /** Nesting level, root = 0. */\n depth: number;\n /** The containers above this node, for the circular check. */\n ancestors: readonly object[];\n /** Rendering limits. */\n limits: ViewLimits;\n}\n\n/** One key/value row, expandable when the value is a non-empty container. */\nfunction JsonNode({ name, value, depth, ancestors, limits }: JsonNodeProps) {\n const kind = kindOf(value);\n const key = name === null ? null : <span className=\"json-key\">{name}: </span>;\n\n if (kind !== \"object\" && kind !== \"array\") {\n return (\n <li className=\"json-row\">\n {key}\n <JsonScalar\n value={value}\n kind={kind}\n maxLength={limits.maxStringLength}\n />\n </li>\n );\n }\n\n const container = value as object;\n if (ancestors.includes(container)) {\n return (\n <li className=\"json-row\">\n {key}\n <span className=\"json-circular\">[Circular]</span>\n </li>\n );\n }\n return (\n <JsonContainer\n nameNode={key}\n value={container}\n isArray={kind === \"array\"}\n depth={depth}\n ancestors={ancestors}\n limits={limits}\n />\n );\n}\n\n/** Props of {@link JsonContainer}. */\ninterface JsonContainerProps {\n /** The rendered key, or `null` at the root. */\n nameNode: ReactNode;\n /** The object or array. */\n value: object;\n /** Whether it is an array. */\n isArray: boolean;\n /** Nesting level. */\n depth: number;\n /** The containers above it. */\n ancestors: readonly object[];\n /** Rendering limits. */\n limits: ViewLimits;\n}\n\n/** An object or array: a disclosure button, and its children once expanded. */\nfunction JsonContainer({\n nameNode,\n value,\n isArray,\n depth,\n ancestors,\n limits,\n}: JsonContainerProps) {\n const [expanded, setExpanded] = useState(depth < limits.expandDepth);\n const [shown, setShown] = useState(limits.maxChildren);\n // Object.keys is O(n) but cheap next to rendering; children are only\n // materialised while expanded.\n const size = isArray\n ? (value as unknown[]).length\n : Object.keys(value).length;\n const open = isArray ? \"[\" : \"{\";\n const close = isArray ? \"]\" : \"}\";\n const summary = isArray\n ? `${size} ${size === 1 ? \"item\" : \"items\"}`\n : `${size} ${size === 1 ? \"key\" : \"keys\"}`;\n\n if (size === 0) {\n return (\n <li className=\"json-row\">\n {nameNode}\n <span className=\"json-punct\">\n {open}\n {close}\n </span>\n </li>\n );\n }\n\n const children = expanded ? entriesOf(value, shown) : [];\n const nextAncestors = expanded ? [...ancestors, value] : ancestors;\n return (\n <li className=\"json-row json-container\">\n <button\n type=\"button\"\n className=\"json-toggle\"\n aria-expanded={expanded}\n onClick={() => setExpanded((current) => !current)}\n >\n <span\n className=\"json-caret\"\n aria-hidden=\"true\"\n />\n {nameNode}\n <span className=\"json-punct\">{open}</span>\n {!expanded && (\n <>\n <span className=\"json-summary\">{summary}</span>\n <span className=\"json-punct\">{close}</span>\n </>\n )}\n </button>\n {expanded && (\n <>\n <ul className=\"json-children\">\n {children.map(([key, item]) => (\n <JsonNode\n key={key}\n name={key}\n value={item}\n depth={depth + 1}\n ancestors={nextAncestors}\n limits={limits}\n />\n ))}\n {size > shown && (\n <li className=\"json-row\">\n <button\n type=\"button\"\n className=\"json-more\"\n onClick={() =>\n setShown((current) => current + limits.maxChildren)\n }\n >\n Show {Math.min(limits.maxChildren, size - shown)} more (\n {size - shown} hidden)\n </button>\n </li>\n )}\n </ul>\n <span className=\"json-punct\">{close}</span>\n </>\n )}\n </li>\n );\n}\n\n/** Props of {@link JsonScalar}. */\ninterface JsonScalarProps {\n /** The value. */\n value: unknown;\n /** Its kind. */\n kind: Kind;\n /** String length before truncation. */\n maxLength: number;\n}\n\n/** A leaf value, colour-coded; long strings truncate with \"show more\". */\nfunction JsonScalar({ value, kind, maxLength }: JsonScalarProps) {\n const [full, setFull] = useState(false);\n if (kind === \"string\") {\n const text = value as string;\n const cut = !full && text.length > maxLength;\n return (\n <>\n <span className=\"json-string\">\n "{cut ? text.slice(0, maxLength) : text}\n {cut ? \"…\" : \"\"}"\n </span>\n {text.length > maxLength && (\n <button\n type=\"button\"\n className=\"json-more\"\n aria-expanded={full}\n onClick={() => setFull((current) => !current)}\n >\n {full ? \"Show less\" : `Show more (${text.length} chars)`}\n </button>\n )}\n </>\n );\n }\n return <span className={`json-${kind}`}>{scalarText(value)}</span>;\n}\n",
|
|
70
|
+
"import type { KeyboardEvent, ReactNode } from \"react\";\nimport { useCallback, useId, useRef } from \"react\";\nimport { useUrlTab } from \"../hooks/useUrlTab\";\nimport { useRouter } from \"../routing\";\nimport { cx } from \"./classNames\";\n\n/** One tab of {@link Tabs}. */\nexport interface TabItem<V extends string> {\n /** The tab's value, e.g. a job state. */\n value: V;\n /** The text on the tab. */\n label: ReactNode;\n /** A count shown as a badge beside the label; omitted when `undefined`. */\n count?: number;\n /** Not selectable. */\n disabled?: boolean;\n /** A tooltip on the tab (its `title`), e.g. what a state's label means. Omitted when `undefined`. */\n title?: string;\n}\n\n/** Props of {@link Tabs}. */\nexport interface TabsProps<V extends string> {\n /** The tabs, in order. */\n tabs: readonly TabItem<V>[];\n /** The selected tab's value. */\n value: V;\n /** Called with the tab the user picked. */\n onChange: (value: V) => void;\n /** Accessible name of the tab list, e.g. \"Job states\". */\n label: string;\n /** The selected tab's content, rendered in the single tab panel. Omit to render only the tab list. */\n children?: ReactNode;\n /** `\"auto\"` selects on arrow-key focus; `\"manual\"` waits for Enter/Space. Defaults to `\"auto\"`. */\n activation?: \"auto\" | \"manual\";\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\n/** Formats a tab count compactly: `1234` → `1.2K`. */\nconst countFormat = new Intl.NumberFormat(undefined, { notation: \"compact\" });\n\n/**\n * Controlled tabs following the WAI-ARIA tabs pattern: `tablist`/`tab`/\n * `tabpanel`, one tab in the tab order (roving `tabIndex`), Left/Right to\n * move (wrapping), Home/End to jump. Disabled tabs are skipped.\n */\nexport function Tabs<V extends string>({\n tabs,\n value,\n onChange,\n label,\n children,\n activation = \"auto\",\n className,\n}: TabsProps<V>) {\n const baseId = useId();\n const listRef = useRef<HTMLDivElement>(null);\n const tabId = (index: number) => `${baseId}-tab-${index}`;\n const panelId = `${baseId}-panel`;\n const selectedIndex = tabs.findIndex((tab) => tab.value === value);\n\n const onKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n const enabled = tabs\n .map((tab, index) => ({ tab, index }))\n .filter(({ tab }) => !tab.disabled);\n if (enabled.length === 0) {\n return;\n }\n const current = enabled.findIndex(\n ({ index }) => tabId(index) === event.currentTarget.id,\n );\n let next: number | null = null;\n switch (event.key) {\n case \"ArrowRight\":\n next = (current + 1) % enabled.length;\n break;\n case \"ArrowLeft\":\n next = (current - 1 + enabled.length) % enabled.length;\n break;\n case \"Home\":\n next = 0;\n break;\n case \"End\":\n next = enabled.length - 1;\n break;\n default:\n return;\n }\n event.preventDefault();\n const target = enabled[next];\n listRef.current?.ownerDocument.getElementById(tabId(target.index))?.focus();\n if (activation === \"auto\") {\n onChange(target.tab.value);\n }\n };\n\n return (\n <div className={cx(\"tabs\", className)}>\n <div\n ref={listRef}\n className=\"tabs-list\"\n role=\"tablist\"\n aria-label={label}\n >\n {tabs.map((tab, index) => {\n const selected = index === selectedIndex;\n // With nothing selected, the first enabled tab takes the tab stop.\n const tabStop =\n selected ||\n (selectedIndex === -1 &&\n index === tabs.findIndex((item) => !item.disabled));\n return (\n <button\n key={tab.value}\n id={tabId(index)}\n type=\"button\"\n role=\"tab\"\n className=\"tab\"\n aria-selected={selected}\n aria-controls={children !== undefined ? panelId : undefined}\n tabIndex={tabStop ? 0 : -1}\n disabled={tab.disabled}\n title={tab.title}\n onClick={() => onChange(tab.value)}\n onKeyDown={onKeyDown}\n >\n <span className=\"tab-label\">{tab.label}</span>\n {tab.count !== undefined && (\n <span\n className=\"tab-count\"\n title={String(tab.count)}\n >\n {countFormat.format(tab.count)}\n </span>\n )}\n </button>\n );\n })}\n </div>\n {children !== undefined && (\n <div\n id={panelId}\n className=\"tabs-panel\"\n role=\"tabpanel\"\n aria-labelledby={\n selectedIndex >= 0 ? tabId(selectedIndex) : undefined\n }\n tabIndex={0}\n >\n {children}\n </div>\n )}\n </div>\n );\n}\n\n/** Props of {@link UrlTabs}. */\nexport interface UrlTabsProps<V extends string> extends Omit<\n TabsProps<V>,\n \"value\" | \"onChange\"\n> {\n /** The query parameter holding the tab, e.g. `\"state\"`. */\n param: string;\n /** The tab when the parameter is absent or not one of `tabs`; selecting it removes the parameter. */\n defaultValue: V;\n /** Query parameters to remove when the tab changes, e.g. `[\"offset\"]` so paging restarts. */\n resetParams?: readonly string[];\n /** Called after the URL changed. */\n onChange?: (value: V) => void;\n}\n\n/**\n * {@link Tabs} whose selection lives in the query string (`?state=failed`),\n * so it survives reload and can be linked. Changes replace the history entry\n * (the router's `navigate(…, { replace: true })`), keep every other\n * parameter, and drop the `resetParams`.\n */\nexport function UrlTabs<V extends string>({\n param,\n defaultValue,\n resetParams = [],\n onChange,\n tabs,\n ...rest\n}: UrlTabsProps<V>) {\n const { location, navigate } = useRouter();\n const value = useUrlTab(param, tabs, defaultValue);\n const select = useCallback(\n (next: V) => {\n const params = new URLSearchParams(location.search);\n if (next === defaultValue) {\n params.delete(param);\n } else {\n params.set(param, next);\n }\n if (next !== value) {\n for (const key of resetParams) {\n params.delete(key);\n }\n }\n const query = params.toString();\n navigate(`${location.path ?? \"/\"}${query ? `?${query}` : \"\"}`, {\n replace: true,\n });\n onChange?.(next);\n },\n [\n location.search,\n location.path,\n defaultValue,\n param,\n value,\n resetParams,\n navigate,\n onChange,\n ],\n );\n return (\n <Tabs\n {...rest}\n tabs={tabs}\n value={value}\n onChange={select}\n />\n );\n}\n",
|
|
71
|
+
"import type { SchemaRoot } from \"./resolve\";\nimport { declaredTypes, deref, isSchemaObject } from \"./resolve\";\n\n/**\n * A starting value for a schema: an editor's prefill. Objects get only their\n * REQUIRED fields (an optional one would be a guess the reader has to\n * delete), each filled the same way; `default`, `const` and the first `enum`\n * value win over a type's zero; unions take their first non-null option.\n * A `$ref` cycle, or a schema that says nothing, gives `null`.\n */\nexport function schemaSkeleton(\n schema: unknown,\n root: SchemaRoot,\n seen: readonly string[] = [],\n): unknown {\n const { schema: node, refs, cycle } = deref(schema, root);\n if (cycle || refs.some((ref) => seen.includes(ref))) {\n return null;\n }\n if (!isSchemaObject(node)) {\n return null;\n }\n const chain = [...seen, ...refs];\n if (Object.hasOwn(node, \"default\")) {\n return structuredClone(node.default);\n }\n if (Object.hasOwn(node, \"const\")) {\n return structuredClone(node.const);\n }\n if (Array.isArray(node.enum) && node.enum.length > 0) {\n return structuredClone(node.enum.find((value) => value !== null) ?? null);\n }\n if (Array.isArray(node.allOf) && node.allOf.length > 0) {\n const merged: Record<string, unknown> = {};\n for (const part of node.allOf) {\n const value = schemaSkeleton(part, root, chain);\n if (isSchemaObject(value)) {\n Object.assign(merged, value);\n }\n }\n return merged;\n }\n for (const key of [\"oneOf\", \"anyOf\"]) {\n const options = node[key];\n if (Array.isArray(options) && options.length > 0) {\n const option =\n options.find((candidate) => {\n const target = deref(candidate, root).schema;\n return !(\n isSchemaObject(target) &&\n declaredTypes(target).length === 1 &&\n declaredTypes(target)[0] === \"null\"\n );\n }) ?? options[0];\n return schemaSkeleton(option, root, chain);\n }\n }\n const types = declaredTypes(node).filter((type) => type !== \"null\");\n const type =\n types[0] ??\n (isSchemaObject(node.properties)\n ? \"object\"\n : node.items\n ? \"array\"\n : undefined);\n switch (type) {\n case \"object\": {\n const value: Record<string, unknown> = {};\n const properties = isSchemaObject(node.properties) ? node.properties : {};\n const required = Array.isArray(node.required) ? node.required : [];\n for (const name of required) {\n if (typeof name === \"string\") {\n value[name] = schemaSkeleton(properties[name], root, chain);\n }\n }\n return value;\n }\n case \"array\": {\n const min = typeof node.minItems === \"number\" ? node.minItems : 0;\n return min > 0 ? [schemaSkeleton(node.items, root, chain)] : [];\n }\n case \"string\":\n return \"\";\n case \"integer\":\n case \"number\":\n return typeof node.minimum === \"number\" ? node.minimum : 0;\n case \"boolean\":\n return false;\n default:\n return null;\n }\n}\n",
|
|
72
|
+
"import type { HttpMethod, QueryScalar, QueryValue } from \"../../../api/client\";\nimport type { SchemaRoot } from \"../schema/resolve\";\nimport type { DocOperation, DocParameter } from \"./model\";\nimport {\n CSRF_HEADER_VALUE,\n segment,\n serializeQuery,\n} from \"../../../api/client\";\nimport { JSON_METHODS, MUTATING_METHODS } from \"../../../api/contract\";\nimport { declaredTypes, deref, isSchemaObject } from \"../schema/resolve\";\nimport { schemaSkeleton } from \"../schema/skeleton\";\nimport { successStatuses } from \"./model\";\n\n/**\n * The try-it panel's logic: which input each parameter gets, the request a\n * filled form makes, whether the panel may send it at all, and the curl and\n * fetch() snippets of that exact request. The request goes through the\n * viewer's own client, so the headers here restate its rules (for the\n * snippets) rather than decide them.\n */\n\n/** Methods the viewer's client can send. */\nconst CLIENT_METHODS: ReadonlySet<string> = new Set([\n \"GET\",\n \"POST\",\n \"PUT\",\n \"PATCH\",\n \"DELETE\",\n]);\n\n/** Action verbs whose try-it needs a typed confirmation: they delete, discard or irreversibly end work. */\nconst DESTRUCTIVE_VERBS: ReadonlySet<string> = new Set([\n \"remove\",\n \"drain\",\n \"clean\",\n \"kill\",\n \"fail\",\n]);\n\n/** The input a parameter is edited with. */\nexport type InputKind =\n | { kind: \"text\" }\n | { kind: \"number\"; integer: boolean; min?: number; max?: number }\n | { kind: \"boolean\" }\n | { kind: \"enum\"; options: string[] }\n | { kind: \"list\"; item: \"text\" | \"integer\" | \"number\" }\n | { kind: \"enum-list\"; options: string[] };\n\n/** A form value: text for scalars and comma lists, the ticked options for an enum list. */\nexport type FieldValue = string | readonly string[];\n\n/** What the form holds, keyed by {@link paramKey}. */\nexport type TryItValues = Readonly<Record<string, FieldValue>>;\n\n/** A parameter's form key: `path:queue`, `query:state`. */\nexport function paramKey(parameter: Pick<DocParameter, \"in\" | \"name\">): string {\n return `${parameter.in}:${parameter.name}`;\n}\n\n/** The scalar item type of a schema (`$ref`s followed). */\nfunction scalarType(schema: unknown, root: SchemaRoot): string | undefined {\n const node = deref(schema, root).schema;\n if (!isSchemaObject(node)) {\n return undefined;\n }\n return declaredTypes(node).find((type) => type !== \"null\");\n}\n\n/** The string values of an enum schema, when it is one. */\nfunction enumOptions(schema: unknown, root: SchemaRoot): string[] | undefined {\n const node = deref(schema, root).schema;\n if (!isSchemaObject(node) || !Array.isArray(node.enum)) {\n return undefined;\n }\n return node.enum\n .filter((value) => value !== null)\n .map((value) => String(value));\n}\n\n/** How a parameter is edited, from its schema. */\nexport function inputKind(\n parameter: DocParameter,\n root: SchemaRoot,\n): InputKind {\n const node = deref(parameter.schema, root).schema;\n const schema = isSchemaObject(node) ? node : {};\n const type = scalarType(schema, root);\n if (type === \"array\") {\n const options = enumOptions(schema.items, root);\n if (options) {\n return { kind: \"enum-list\", options };\n }\n const item = scalarType(schema.items, root);\n return {\n kind: \"list\",\n item: item === \"integer\" || item === \"number\" ? item : \"text\",\n };\n }\n const options = enumOptions(schema, root);\n if (options) {\n return { kind: \"enum\", options };\n }\n if (type === \"boolean\") {\n return { kind: \"boolean\" };\n }\n if (type === \"integer\" || type === \"number\") {\n return {\n kind: \"number\",\n integer: type === \"integer\",\n min: typeof schema.minimum === \"number\" ? schema.minimum : undefined,\n max: typeof schema.maximum === \"number\" ? schema.maximum : undefined,\n };\n }\n return { kind: \"text\" };\n}\n\n/** The parameters the form edits: path and query. Header parameters are the client's to send. */\nexport function formParameters(operation: DocOperation): DocParameter[] {\n return operation.parameters.filter(\n (parameter) => parameter.in === \"path\" || parameter.in === \"query\",\n );\n}\n\n/** The schema of the JSON body, when the operation takes one worth editing. */\nexport function bodySchema(operation: DocOperation): unknown {\n const json = operation.requestBody?.content.find(\n (media) => media.contentType === \"application/json\",\n );\n const schema = json?.schema;\n // The API's bodiless POSTs declare a body only to require the media type;\n // its schema is a bare description (\"Ignored. Send no body, or `{}`.\").\n if (\n !isSchemaObject(schema) ||\n Object.keys(schema).every(\n (key) => key === \"description\" || key.startsWith(\"x-\"),\n )\n ) {\n return undefined;\n }\n return schema;\n}\n\n/** The editor's starting text: the body schema's required skeleton, or `\"\"`. */\nexport function initialBodyText(\n operation: DocOperation,\n root: SchemaRoot,\n): string {\n const schema = bodySchema(operation);\n return schema === undefined\n ? \"\"\n : JSON.stringify(schemaSkeleton(schema, root), null, 2);\n}\n\n/** A parameter's form value as the query takes it, or an error message. */\nfunction coerce(\n parameter: DocParameter,\n kind: InputKind,\n value: FieldValue | undefined,\n): { value: QueryValue } | { error: string } {\n if (kind.kind === \"enum-list\") {\n const picked = Array.isArray(value) ? value : [];\n return { value: picked.length > 0 ? [...picked] : undefined };\n }\n const raw = typeof value === \"string\" ? value.trim() : \"\";\n if (raw === \"\") {\n return parameter.required\n ? { error: `${parameter.name} is required` }\n : { value: undefined };\n }\n switch (kind.kind) {\n case \"number\": {\n const number = Number(raw);\n if (\n !Number.isFinite(number) ||\n (kind.integer && !Number.isInteger(number))\n ) {\n return {\n error: `${parameter.name} must be ${kind.integer ? \"an integer\" : \"a number\"}`,\n };\n }\n return { value: number };\n }\n case \"boolean\":\n return raw === \"true\" || raw === \"false\"\n ? { value: raw === \"true\" }\n : { error: `${parameter.name} must be true or false` };\n case \"list\": {\n const items = raw\n .split(\",\")\n .map((item) => item.trim())\n .filter(Boolean);\n const values: QueryScalar[] = [];\n for (const item of items) {\n if (kind.item === \"text\") {\n values.push(item);\n continue;\n }\n const number = Number(item);\n if (\n !Number.isFinite(number) ||\n (kind.item === \"integer\" && !Number.isInteger(number))\n ) {\n return {\n error: `${parameter.name}: \"${item}\" is not ${kind.item === \"integer\" ? \"an integer\" : \"a number\"}`,\n };\n }\n values.push(number);\n }\n return { value: values.length > 0 ? values : undefined };\n }\n default:\n return { value: raw };\n }\n}\n\n/** A request the panel sends, in the terms of `ApiClient.request`. */\nexport interface TryItRequest {\n /** The method. */\n method: HttpMethod;\n /** The path under the API base, path parameters percent-encoded. */\n path: string;\n /** The query; arrays go as repeated keys. */\n query: Record<string, QueryValue>;\n /** The JSON body, or `undefined` for none. */\n body: unknown;\n}\n\n/** The outcome of {@link buildRequest}. */\nexport type BuildResult =\n | { ok: true; request: TryItRequest }\n | { ok: false; errors: Record<string, string> };\n\n/**\n * The request a filled form makes: path parameters substituted (each\n * percent-encoded as one segment, so `a/b` is `a%2Fb`), query values typed\n * from their schemas, and the body as parsed. `body` is the editor's parsed\n * value, `undefined` for an empty editor.\n */\nexport function buildRequest(\n operation: DocOperation,\n root: SchemaRoot,\n values: TryItValues,\n body: unknown,\n): BuildResult {\n const errors: Record<string, string> = {};\n if (!CLIENT_METHODS.has(operation.method)) {\n return {\n ok: false,\n errors: { method: `${operation.method} cannot be sent from here` },\n };\n }\n let path = operation.path;\n const query: Record<string, QueryValue> = {};\n for (const parameter of formParameters(operation)) {\n const key = paramKey(parameter);\n const result = coerce(parameter, inputKind(parameter, root), values[key]);\n if (\"error\" in result) {\n errors[key] = result.error;\n continue;\n }\n if (parameter.in === \"path\") {\n path = path\n .split(`{${parameter.name}}`)\n .join(segment(String(result.value)));\n } else if (result.value !== undefined) {\n query[parameter.name] = result.value;\n }\n }\n if (\n body === undefined &&\n operation.requestBody?.required &&\n bodySchema(operation) !== undefined\n ) {\n errors.body = \"A body is required\";\n }\n if (Object.keys(errors).length > 0) {\n return { ok: false, errors };\n }\n return {\n ok: true,\n request: { method: operation.method as HttpMethod, path, query, body },\n };\n}\n\n/**\n * The headers the viewer's client sends for a method — restated from\n * `createDocsClient` for the snippets: `Accept` always, `Content-Type` on\n * POST/PUT/PATCH (body or not), and the CSRF header on every mutation when\n * the viewer is configured with one.\n */\nexport function clientHeaders(\n method: HttpMethod,\n csrfHeader: string | null,\n): Record<string, string> {\n const headers: Record<string, string> = { Accept: \"application/json\" };\n if (JSON_METHODS.has(method)) {\n headers[\"Content-Type\"] = \"application/json\";\n }\n if (csrfHeader && MUTATING_METHODS.has(method)) {\n headers[csrfHeader] = CSRF_HEADER_VALUE;\n }\n return headers;\n}\n\n/** Where the snippets point. */\nexport interface SnippetContext {\n /** The app's API base (`/jobs-api`, or an absolute URL). */\n apiBase: string;\n /** The page's origin, for an absolute curl URL. */\n origin: string;\n /** The UI's CSRF header, or `null`. */\n csrfHeader: string | null;\n}\n\n/** The URL the client requests: base + path + query. */\nexport function requestUrl(request: TryItRequest, apiBase: string): string {\n return `${apiBase.replace(/\\/+$/, \"\")}${request.path}${serializeQuery(request.query)}`;\n}\n\n/** Quotes a word for a POSIX shell. */\nfunction shellQuote(value: string): string {\n return `'${value.replace(/'/g, `'\\\\''`)}'`;\n}\n\n/** A `curl` command sending exactly what the panel sends. */\nexport function curlSnippet(\n request: TryItRequest,\n context: SnippetContext,\n): string {\n const relative = requestUrl(request, context.apiBase);\n const url = /^https?:\\/\\//.test(relative)\n ? relative\n : `${context.origin}${relative}`;\n const lines = [`curl -X ${request.method} ${shellQuote(url)}`];\n for (const [name, value] of Object.entries(\n clientHeaders(request.method, context.csrfHeader),\n )) {\n lines.push(` -H ${shellQuote(`${name}: ${value}`)}`);\n }\n if (request.body !== undefined) {\n lines.push(` --data ${shellQuote(JSON.stringify(request.body))}`);\n }\n return [\n \"# The browser also sends this site's cookies (credentials: same-origin).\",\n \"# If the API's authorize reads a session, add it: -b 'name=value'\",\n lines.join(\" \\\\\\n\"),\n ].join(\"\\n\");\n}\n\n/** A `fetch()` call sending exactly what the panel sends, from a page on this origin. */\nexport function fetchSnippet(\n request: TryItRequest,\n context: SnippetContext,\n): string {\n const headers = clientHeaders(request.method, context.csrfHeader);\n const headerLines = Object.entries(headers)\n .map(\n ([name, value]) =>\n ` ${JSON.stringify(name)}: ${JSON.stringify(value)},`,\n )\n .join(\"\\n\");\n const lines = [\n `const response = await fetch(${JSON.stringify(requestUrl(request, context.apiBase))}, {`,\n ` method: ${JSON.stringify(request.method)},`,\n \" headers: {\",\n headerLines,\n \" },\",\n ` credentials: \"same-origin\",`,\n ];\n if (request.body !== undefined) {\n lines.push(\n ` body: JSON.stringify(${JSON.stringify(request.body, null, 2).replace(/\\n/g, \"\\n \")}),`,\n );\n }\n lines.push(\"});\", \"const data = await response.json();\");\n return lines.join(\"\\n\");\n}\n\n/**\n * Whether sending an operation needs a TYPED confirmation: a DELETE, or an\n * action whose verb removes, discards or irreversibly ends work\n * (`jobs.remove`, `queues.drain`, `queues.clean`, `runners.kill`,\n * `repeatables.remove`, `jobs.fail`: a failed job is dead for good).\n */\nexport function isDestructive(operation: DocOperation): boolean {\n if (operation.method === \"DELETE\") {\n return true;\n }\n const verb = operation.action?.split(\".\").pop() ?? \"\";\n return DESTRUCTIVE_VERBS.has(verb);\n}\n\n/** Whether the panel may send, and why not. */\nexport type TryItGate = { enabled: true } | { enabled: false; reason: string };\n\n/** What {@link tryItGate} decides from. */\nexport interface GateInputs {\n /** `meta.readOnly`. */\n readOnly: boolean;\n /** Whether the caller holds the operation's action (untargeted permissions). */\n permitted: boolean;\n}\n\n/**\n * The panel is off for a mutation on a read-only API, and for an action the\n * caller does not hold. Advisory, like every permission marker here:\n * `authorize` may decide per target, and the API's answer stays final.\n */\nexport function tryItGate(\n operation: DocOperation,\n inputs: GateInputs,\n): TryItGate {\n if (!CLIENT_METHODS.has(operation.method)) {\n return {\n enabled: false,\n reason: `The viewer's client does not send ${operation.method}.`,\n };\n }\n // Kept although a read-only `createJobsApi` neither routes nor documents\n // its mutations: this reason shows only for a document that lists one\n // anyway, a stale or foreign OpenAPI document (a cached copy from before\n // the API went read-only, or another API's). The API would refuse the\n // send, so the panel says why instead of offering it.\n if (operation.mutation && inputs.readOnly) {\n return {\n enabled: false,\n reason: \"This API is read-only: it refuses every change.\",\n };\n }\n if (operation.action !== undefined && !inputs.permitted) {\n return {\n enabled: false,\n reason: `You do not have the ${operation.action} permission.`,\n };\n }\n return { enabled: true };\n}\n\n/**\n * The note try-it shows when the status received is not one the operation\n * documents, naming the documented success statuses (`2xx` when it documents\n * none); `undefined` when the status is documented.\n */\nexport function documentedNote(\n operation: DocOperation,\n status: number,\n): string | undefined {\n if (\n operation.responses.some((response) => response.status === String(status))\n ) {\n return undefined;\n }\n const success = successStatuses(operation);\n return `Not a documented status. Documented success: ${success.length > 0 ? success.join(\" / \") : \"2xx\"}.`;\n}\n",
|
|
73
|
+
"import type { RawResponse } from \"../../../api/client\";\nimport type { JsonEditorState } from \"../../../components/jsonParse\";\nimport type { PermissionProbe } from \"../permissions\";\nimport type { SchemaRoot } from \"../schema/resolve\";\nimport type { DocOperation, DocParameter } from \"./model\";\nimport type { FieldValue, InputKind, TryItRequest, TryItValues } from \"./tryIt\";\nimport { useMemo, useState } from \"react\";\nimport { isApiError } from \"../../../api/errors\";\nimport { Badge } from \"../../../components/Badge\";\nimport { Button } from \"../../../components/Button\";\nimport { ConfirmDialog } from \"../../../components/ConfirmDialog\";\nimport { CopyButton } from \"../../../components/CopyButton\";\nimport { Field } from \"../../../components/Field\";\nimport { Checkbox, Select, TextInput } from \"../../../components/inputs\";\nimport { JsonEditor } from \"../../../components/JsonEditor\";\nimport { jsonEditorState } from \"../../../components/jsonParse\";\nimport { JsonView } from \"../../../components/JsonView\";\nimport { ProblemBanner } from \"../../../components/ProblemBanner\";\nimport { Tabs } from \"../../../components/Tabs\";\nimport { useDocsClient, useDocsUiConfig } from \"../../../context\";\nimport {\n bodySchema,\n buildRequest,\n curlSnippet,\n documentedNote,\n fetchSnippet,\n formParameters,\n initialBodyText,\n inputKind,\n isDestructive,\n paramKey,\n tryItGate,\n} from \"./tryIt\";\n\n/** What one send produced. */\ntype TryItResult =\n | {\n /** A response arrived, whatever its status. */\n ok: true;\n /** The response: real status, visible headers, body and timing. */\n response: RawResponse;\n }\n | {\n /** No response: a network failure (an `ApiError` of kind `network`) or anything else thrown. */\n ok: false;\n /** What was thrown. */\n error: unknown;\n /** Milliseconds from send to failure. */\n ms: number;\n };\n\n/** Props of {@link TryItPanel}. */\nexport interface TryItPanelProps {\n /** The operation to send. */\n operation: DocOperation;\n /** The document, for `$ref`s in parameter and body schemas. */\n root: SchemaRoot;\n /** Whether the API is read-only (the panel is off for mutations). Defaults to `false`. */\n readOnly?: boolean;\n /** Answers \"does the caller hold this permission\" (the panel is off when it is lacked). Absent: every operation may be tried. */\n probe?: PermissionProbe;\n /** After a successful mutation (the host refreshes what it shows). */\n onChanged?: () => void;\n}\n\n/** Hints per input kind. */\nfunction kindHint(\n kind: InputKind,\n parameter: DocParameter,\n): string | undefined {\n switch (kind.kind) {\n case \"list\":\n return \"Comma-separated; each value is sent as a repeated key (name=a&name=b).\";\n case \"enum-list\":\n return \"Each ticked value is sent as a repeated key.\";\n case \"number\": {\n const bounds = [\n kind.min !== undefined ? `min ${kind.min}` : undefined,\n kind.max !== undefined ? `max ${kind.max}` : undefined,\n ].filter(Boolean);\n return [kind.integer ? \"An integer\" : \"A number\", ...bounds].join(\", \");\n }\n default:\n return parameter.in === \"path\"\n ? \"Percent-encoded as one path segment.\"\n : undefined;\n }\n}\n\n/** One parameter's control. */\nfunction ParameterInput({\n parameter,\n kind,\n value,\n onChange,\n disabled,\n}: {\n /** The parameter. */\n parameter: DocParameter;\n /** Its input kind. */\n kind: InputKind;\n /** Its value. */\n value: FieldValue | undefined;\n /** Sets it. */\n onChange: (value: FieldValue) => void;\n /** Whether the panel is off. */\n disabled: boolean;\n}) {\n const text = typeof value === \"string\" ? value : \"\";\n switch (kind.kind) {\n case \"boolean\":\n case \"enum\": {\n const options =\n kind.kind === \"boolean\" ? [\"true\", \"false\"] : kind.options;\n return (\n <Select<string>\n value={text}\n disabled={disabled}\n options={[\n { value: \"\", label: parameter.required ? \"Choose…\" : \"(not sent)\" },\n ...options.map((option) => ({ value: option })),\n ]}\n onChange={onChange}\n />\n );\n }\n case \"enum-list\": {\n const picked = Array.isArray(value) ? value : [];\n return (\n <div\n className=\"http-tryit-checks\"\n role=\"group\"\n aria-label={parameter.name}\n >\n {kind.options.map((option) => (\n <Checkbox\n key={option}\n label={option}\n disabled={disabled}\n checked={picked.includes(option)}\n onChange={(checked) =>\n onChange(\n checked\n ? [...picked, option]\n : picked.filter((item) => item !== option),\n )\n }\n />\n ))}\n </div>\n );\n }\n default:\n return (\n <TextInput\n value={text}\n disabled={disabled}\n inputMode={kind.kind === \"number\" ? \"decimal\" : undefined}\n placeholder={kind.kind === \"list\" ? \"a, b, c\" : undefined}\n onChange={(next) => onChange(next)}\n />\n );\n }\n}\n\n/** The response headers the browser let the page see. */\nfunction HeadersView({\n headers,\n}: {\n /** Lower-cased names to values, in order. */\n headers: Record<string, string>;\n}) {\n const entries = Object.entries(headers);\n return (\n <details\n className=\"http-tryit-headers\"\n data-testid=\"tryit-headers\"\n >\n <summary>{`Headers (${entries.length})`}</summary>\n {entries.length === 0 ? (\n <p className=\"http-muted\">No headers visible to the page.</p>\n ) : (\n <dl>\n {entries.map(([name, value]) => (\n <div\n key={name}\n data-header={name}\n >\n <dt>\n <code>{name}</code>\n </dt>\n <dd>\n <code>{value}</code>\n </dd>\n </div>\n ))}\n </dl>\n )}\n </details>\n );\n}\n\n/** A response body: a JSON tree, text, or \"No body.\" */\nfunction BodyView({\n body,\n label,\n}: {\n /** The parsed JSON, the text, or `undefined`. */\n body: unknown;\n /** The tree's accessible label. */\n label: string;\n}) {\n if (body === undefined) {\n return <p className=\"http-muted\">No body.</p>;\n }\n if (typeof body === \"string\") {\n return (\n <pre\n className=\"http-tryit-text\"\n aria-label={label}\n >\n <code>{body}</code>\n </pre>\n );\n }\n return (\n <JsonView\n value={body}\n label={label}\n expandDepth={2}\n />\n );\n}\n\n/** The real status, timing, headers and body of the last send. */\nfunction ResultView({\n result,\n operation,\n}: {\n /** The outcome. */\n result: TryItResult;\n /** The operation, for its documented statuses. */\n operation: DocOperation;\n}) {\n const response = result.ok ? result.response : undefined;\n const error = result.ok ? result.response.error : result.error;\n const problem = isApiError(error) ? error : undefined;\n const note = response\n ? documentedNote(operation, response.status)\n : undefined;\n const ms = response ? response.durationMs : result.ok ? 0 : result.ms;\n return (\n <section\n className=\"http-tryit-result\"\n aria-label=\"Response\"\n data-testid=\"tryit-result\"\n >\n <div className=\"http-tryit-status\">\n <Badge tone={response?.ok ? \"success\" : \"danger\"}>\n <span data-testid=\"tryit-status\">\n {response\n ? String(response.status)\n : problem?.status === 0\n ? \"No response\"\n : \"Error\"}\n </span>\n </Badge>\n {response?.statusText && (\n <span className=\"http-muted\">{response.statusText}</span>\n )}\n {problem && <code>{problem.code}</code>}\n <span\n className=\"http-tryit-timing\"\n data-testid=\"tryit-timing\"\n >\n {`${Math.round(ms)} ms`}\n </span>\n </div>\n {note && (\n <p\n className=\"http-muted\"\n data-testid=\"tryit-documented\"\n >\n {note}\n </p>\n )}\n {!response && <ProblemBanner error={error} />}\n {response && (\n <>\n {!response.ok && <ProblemBanner error={error} />}\n <HeadersView headers={response.headers} />\n <BodyView\n body={response.body}\n label={\n response.ok\n ? \"Response body\"\n : problem?.kind === \"problem\"\n ? \"Problem body\"\n : \"Response body\"\n }\n />\n </>\n )}\n </section>\n );\n}\n\n/** Which snippet is showing. */\ntype SnippetTab = \"curl\" | \"fetch\";\n\n/** The curl / fetch() snippets of the request the form would send. */\nfunction Snippets({\n request,\n}: {\n /** The request, when the form is complete. */ request:\n TryItRequest | undefined;\n}) {\n const api = useDocsClient();\n const config = useDocsUiConfig();\n const [tab, setTab] = useState<SnippetTab>(\"curl\");\n const context = {\n apiBase: api.base,\n origin: typeof window === \"undefined\" ? \"\" : window.location.origin,\n csrfHeader: config.csrfHeader,\n };\n const text = request\n ? tab === \"curl\"\n ? curlSnippet(request, context)\n : fetchSnippet(request, context)\n : undefined;\n return (\n <Tabs<SnippetTab>\n label=\"Snippets\"\n value={tab}\n onChange={setTab}\n tabs={[\n { value: \"curl\", label: \"curl\" },\n { value: \"fetch\", label: \"fetch()\" },\n ]}\n className=\"http-snippets\"\n >\n {text === undefined ? (\n <p className=\"http-muted\">\n Fill in the required fields to see the snippet.\n </p>\n ) : (\n <div className=\"http-snippet\">\n <CopyButton\n text={text}\n ariaLabel={`Copy the ${tab === \"curl\" ? \"curl command\" : \"fetch() call\"}`}\n />\n <pre data-testid={`snippet-${tab}`}>\n <code>{text}</code>\n </pre>\n </div>\n )}\n </Tabs>\n );\n}\n\n/**\n * The \"try it\" panel of one operation: a form built from its path and query\n * parameters, a JSON editor for its body (prefilled with the schema's\n * required fields), sent to the document's resolved server with the\n * viewer's own client, so the CSRF header and `Content-Type` rules apply\n * exactly as the snippets promise. Mutations ask first; destructive ones\n * need the operation id typed.\n */\nexport function TryItPanel({\n operation,\n root,\n readOnly = false,\n probe,\n onChanged,\n}: TryItPanelProps) {\n const api = useDocsClient();\n const config = useDocsUiConfig();\n const parameters = formParameters(operation);\n const schema = bodySchema(operation);\n const bodyOptional = operation.requestBody?.required !== true;\n\n const [values, setValues] = useState<TryItValues>({});\n const [body, setBody] = useState<JsonEditorState>(() =>\n jsonEditorState(initialBodyText(operation, root), {\n allowEmpty: bodyOptional,\n }),\n );\n const [errors, setErrors] = useState<Record<string, string>>({});\n const [confirming, setConfirming] = useState<TryItRequest | null>(null);\n const [pending, setPending] = useState(false);\n const [result, setResult] = useState<TryItResult | null>(null);\n\n // A standalone viewer knows neither the API's read-only setting nor the\n // caller's permissions (no `probe`); the API's answer stays final either way.\n const gate = tryItGate(operation, {\n readOnly,\n permitted:\n operation.action === undefined || probe === undefined\n ? true\n : probe(operation.action) === true,\n });\n const disabled = !gate.enabled || pending;\n\n const built = useMemo(\n () =>\n buildRequest(\n operation,\n root,\n values,\n schema === undefined ? undefined : body.value,\n ),\n [operation, root, values, schema, body.value],\n );\n\n async function send(request: TryItRequest): Promise<void> {\n setPending(true);\n const started = performance.now();\n try {\n const response = await api.requestRaw(request.method, request.path, {\n query: request.query,\n body: request.body,\n });\n setResult({ ok: true, response });\n if (operation.mutation && response.ok) {\n // The host shows what this changed.\n onChanged?.();\n }\n } catch (error) {\n setResult({ ok: false, error, ms: performance.now() - started });\n } finally {\n setPending(false);\n }\n }\n\n function submit() {\n if (!gate.enabled) {\n return;\n }\n if (schema !== undefined && !body.valid) {\n setErrors({\n body: body.error\n ? `Line ${body.error.line}: ${body.error.message}`\n : \"The body is not valid JSON\",\n });\n return;\n }\n if (!built.ok) {\n setErrors(built.errors);\n return;\n }\n setErrors({});\n if (operation.mutation) {\n setConfirming(built.request);\n return;\n }\n void send(built.request);\n }\n\n const destructive = isDestructive(operation);\n const csrfParameter = operation.parameters.find(\n (parameter) =>\n parameter.in === \"header\" && parameter.name === operation.csrf?.header,\n );\n\n return (\n <section\n className=\"http-tryit\"\n aria-labelledby={`tryit-${operation.id}`}\n data-testid=\"tryit\"\n >\n <h3 id={`tryit-${operation.id}`}>Try it</h3>\n {!gate.enabled && (\n <p\n className=\"http-tryit-disabled\"\n role=\"note\"\n data-testid=\"tryit-disabled\"\n >\n {gate.reason}\n </p>\n )}\n <form\n className=\"http-tryit-form\"\n noValidate\n onSubmit={(event) => {\n event.preventDefault();\n submit();\n }}\n >\n {parameters.length === 0 && schema === undefined && (\n <p className=\"http-muted\">No parameters.</p>\n )}\n {parameters.map((parameter) => {\n const key = paramKey(parameter);\n const kind = inputKind(parameter, root);\n return (\n <Field\n key={key}\n label={\n <>\n <code>{parameter.name}</code>{\" \"}\n <span className=\"http-muted\">{parameter.in}</span>\n </>\n }\n required={parameter.required}\n hint={kindHint(kind, parameter)}\n error={errors[key]}\n >\n <ParameterInput\n parameter={parameter}\n kind={kind}\n value={values[key]}\n disabled={disabled}\n onChange={(next) =>\n setValues((current) => ({ ...current, [key]: next }))\n }\n />\n </Field>\n );\n })}\n {csrfParameter && (\n <p\n className=\"http-muted\"\n data-testid=\"tryit-csrf\"\n >\n {config.csrfHeader === csrfParameter.name\n ? `The ${csrfParameter.name} header is added by the app's client.`\n : config.csrfHeader\n ? `The API asks for ${csrfParameter.name}, but this UI sends ${config.csrfHeader}: the API will refuse this with 403 CSRF_REJECTED.`\n : `The API asks for ${csrfParameter.name}, but this UI is configured with no CSRF header: the API will refuse this with 403 CSRF_REJECTED.`}\n </p>\n )}\n {schema !== undefined && (\n <Field\n label=\"Body (application/json)\"\n required={!bodyOptional}\n hint={\n bodyOptional\n ? \"Optional: leave it empty to send none.\"\n : \"Prefilled with the schema's required fields.\"\n }\n error={errors.body}\n >\n <JsonEditor\n value={body.text}\n allowEmpty={bodyOptional}\n readOnly={disabled}\n rows={8}\n onChange={setBody}\n />\n </Field>\n )}\n <div className=\"http-tryit-actions\">\n <Button\n type=\"submit\"\n variant={\n operation.mutation\n ? destructive\n ? \"danger\"\n : \"primary\"\n : \"primary\"\n }\n disabled={disabled}\n >\n {pending ? \"Sending…\" : `Send ${operation.method}`}\n </Button>\n {result && (\n <Button\n variant=\"ghost\"\n onClick={() => setResult(null)}\n >\n Clear response\n </Button>\n )}\n </div>\n </form>\n <Snippets request={built.ok ? built.request : undefined} />\n {result && (\n <ResultView\n result={result}\n operation={operation}\n />\n )}\n <ConfirmDialog\n open={confirming !== null}\n onClose={() => setConfirming(null)}\n title={`Send ${operation.method} ${confirming?.path ?? operation.path}?`}\n description={\n destructive\n ? \"This changes the real API and cannot be undone.\"\n : \"This changes the real API, as the app's own buttons would.\"\n }\n variant={destructive ? \"danger\" : \"default\"}\n confirmLabel={`Send ${operation.method}`}\n confirmText={destructive ? operation.id : undefined}\n onConfirm={async () => {\n if (confirming) {\n await send(confirming);\n }\n }}\n />\n </section>\n );\n}\n",
|
|
74
|
+
"import type { PermissionProbe } from \"../permissions\";\nimport type { SchemaRoot } from \"../schema/resolve\";\nimport type { DocOperation, DocParameter, DocResponse } from \"./model\";\nimport { Badge } from \"../../../components/Badge\";\nimport { CopyButton } from \"../../../components/CopyButton\";\nimport { useDocsUiConfig } from \"../../../context\";\nimport { Prose } from \"../schema/Prose\";\nimport { SchemaTree } from \"../schema/SchemaTree\";\nimport { methodTone } from \"./model\";\nimport { TryItPanel } from \"./TryItPanel\";\n\n/** Props of {@link OperationView}. */\nexport interface OperationViewProps {\n /** The operation shown. */\n operation: DocOperation;\n /** The document. */\n root: SchemaRoot;\n /** Opens a component schema (`#/components/schemas/X`) in the side panel. */\n onRef: (ref: string, name: string) => void;\n /** Answers \"does the caller hold this permission\" (the have/lack badge). Absent: the permission renders plainly. */\n probe?: PermissionProbe;\n /** Whether the API is read-only (a mutation's panel and marker say so). Defaults to `false`. */\n readOnly?: boolean;\n /** After a successful mutation (the host refreshes what it shows). */\n onChanged?: () => void;\n}\n\n/** A method badge. */\nexport function MethodBadge({\n method,\n}: {\n /** Upper-case method. */ method: string;\n}) {\n return (\n <Badge\n tone={methodTone(method)}\n className=\"http-method\"\n >\n {method}\n </Badge>\n );\n}\n\n/** How an array query parameter is sent, from `style`/`explode`. */\nfunction styleNote(parameter: DocParameter): string | undefined {\n if (parameter.in !== \"query\" || parameter.style === undefined) {\n return undefined;\n }\n if (parameter.style === \"form\" && parameter.explode !== false) {\n return \"Repeat the key for each value (state=a&state=b).\";\n }\n return `style: ${parameter.style}${parameter.explode === undefined ? \"\" : `, explode: ${String(parameter.explode)}`}`;\n}\n\n/** The parameters, grouped by where they go. */\nfunction Parameters({ operation, root, onRef }: OperationViewProps) {\n if (operation.parameters.length === 0) {\n return null;\n }\n return (\n <section\n className=\"http-section\"\n aria-labelledby={`params-${operation.id}`}\n >\n <h3 id={`params-${operation.id}`}>Parameters</h3>\n <ul\n className=\"http-params\"\n data-testid=\"op-parameters\"\n >\n {operation.parameters.map((parameter) => {\n const note = styleNote(parameter);\n return (\n <li\n key={`${parameter.in}:${parameter.name}`}\n className=\"http-param\"\n data-param={parameter.name}\n >\n <div className=\"http-param-head\">\n <code className=\"http-param-name\">{parameter.name}</code>\n <Badge tone=\"neutral\">{parameter.in}</Badge>\n {parameter.required ? (\n <span className=\"schema-required\">required</span>\n ) : (\n <span className=\"http-muted\">optional</span>\n )}\n {parameter.deprecated && (\n <Badge tone=\"warning\">deprecated</Badge>\n )}\n </div>\n {parameter.description && (\n <div className=\"http-param-description\">\n <Prose text={parameter.description} />\n </div>\n )}\n {note && <p className=\"http-muted http-param-style\">{note}</p>}\n <SchemaTree\n schema={parameter.schema}\n root={root}\n depth={0}\n onRef={onRef}\n label={`Schema of ${parameter.name}`}\n />\n </li>\n );\n })}\n </ul>\n </section>\n );\n}\n\n/** The request body. */\nfunction RequestBody({ operation, root, onRef }: OperationViewProps) {\n const body = operation.requestBody;\n if (!body) {\n return null;\n }\n return (\n <section\n className=\"http-section\"\n aria-labelledby={`body-${operation.id}`}\n data-testid=\"op-body\"\n >\n <h3 id={`body-${operation.id}`}>\n Request body{\" \"}\n <span className=\"http-muted\">\n {body.required ? \"(required)\" : \"(optional)\"}\n </span>\n </h3>\n {body.description && <Prose text={body.description} />}\n {body.content.map((media) => (\n <div\n key={media.contentType}\n className=\"http-media\"\n >\n <code className=\"http-media-type\">{media.contentType}</code>\n {media.schema !== undefined && (\n <SchemaTree\n schema={media.schema}\n root={root}\n depth={2}\n onRef={onRef}\n label={`Request body schema (${media.contentType})`}\n />\n )}\n </div>\n ))}\n </section>\n );\n}\n\n/** A status badge's tone. */\nfunction statusTone(\n status: string,\n): \"success\" | \"warning\" | \"danger\" | \"neutral\" {\n if (status.startsWith(\"2\")) {\n return \"success\";\n }\n if (status.startsWith(\"4\")) {\n return \"warning\";\n }\n if (status.startsWith(\"5\")) {\n return \"danger\";\n }\n return \"neutral\";\n}\n\n/** One response. */\nfunction ResponseItem({\n response,\n root,\n onRef,\n}: {\n /** The response. */\n response: DocResponse;\n /** The document. */\n root: SchemaRoot;\n /** Opens a component. */\n onRef: OperationViewProps[\"onRef\"];\n}) {\n const success = response.status.startsWith(\"2\");\n return (\n <li\n className=\"http-response\"\n data-status={response.status}\n >\n <div className=\"http-response-head\">\n <Badge tone={statusTone(response.status)}>{response.status}</Badge>\n <span>{response.description}</span>\n </div>\n {response.codes.length > 0 && (\n <ul\n className=\"http-codes\"\n aria-label={`Problem codes for ${response.status}`}\n >\n {response.codes.map((code) => (\n <li key={code}>\n <code>{code}</code>\n </li>\n ))}\n </ul>\n )}\n {response.content.map((media) => (\n <div\n key={media.contentType}\n className=\"http-media\"\n >\n <code className=\"http-media-type\">{media.contentType}</code>\n {media.schema !== undefined && (\n <SchemaTree\n schema={media.schema}\n root={root}\n depth={success ? 1 : 0}\n onRef={onRef}\n label={`Response ${response.status} schema (${media.contentType})`}\n />\n )}\n </div>\n ))}\n </li>\n );\n}\n\n/**\n * One operation: method and path, summary and description, the permission\n * it needs, whether it is a mutation, its CSRF rules and driver requirements,\n * its parameters, body and responses (schemas as trees), and its try-it panel.\n */\nexport function OperationView({\n operation,\n root,\n onRef,\n probe,\n readOnly = false,\n onChanged,\n}: OperationViewProps) {\n const config = useDocsUiConfig();\n const held =\n operation.action === undefined || probe === undefined\n ? undefined\n : probe(operation.action);\n const csrf = operation.csrf;\n return (\n <article\n className=\"http-operation\"\n aria-labelledby={`op-${operation.id}`}\n data-testid=\"http-operation\"\n >\n <header className=\"http-operation-head\">\n <div className=\"http-operation-line\">\n <MethodBadge method={operation.method} />\n <code\n className=\"http-operation-path\"\n data-testid=\"op-path\"\n >\n {operation.path}\n </code>\n {operation.deprecated && <Badge tone=\"warning\">deprecated</Badge>}\n </div>\n <h2\n id={`op-${operation.id}`}\n className=\"http-operation-title\"\n >\n {operation.summary ?? operation.id}\n </h2>\n <p className=\"http-operation-id\">\n <span className=\"http-muted\">operationId</span>{\" \"}\n <code>{operation.id}</code>\n <CopyButton\n text={operation.id}\n ariaLabel=\"Copy the operation id\"\n />\n </p>\n </header>\n\n <div\n className=\"http-markers\"\n aria-label=\"Access\"\n role=\"group\"\n >\n {operation.action !== undefined &&\n (probe === undefined ? (\n <Badge\n tone=\"neutral\"\n title=\"The permission the API's authorize hook is asked about.\"\n >\n <span data-testid=\"op-permission\">\n Needs <code>{operation.action}</code>\n </span>\n </Badge>\n ) : (\n <Badge\n tone={held ? \"success\" : \"danger\"}\n title=\"From the caller's permissions. authorize may still decide per target.\"\n >\n <span\n data-testid=\"op-permission\"\n data-allowed={String(held ?? false)}\n >\n {held ? \"You have \" : \"You lack \"}\n <code>{operation.action}</code>\n </span>\n </Badge>\n ))}\n <Badge\n tone={operation.mutation ? \"warning\" : \"neutral\"}\n title={\n operation.mutation\n ? \"Changes state: CSRF checks apply, and a read-only API refuses it.\"\n : \"Reads only.\"\n }\n >\n <span data-testid=\"op-mutation\">\n {operation.mutation ? \"Mutation\" : \"Read\"}\n </span>\n </Badge>\n {/* Only for a stale or foreign document: a read-only API documents no mutation (see tryItGate). */}\n {operation.mutation && readOnly && (\n <Badge tone=\"danger\">Refused: the API is read-only</Badge>\n )}\n {operation.requires.length > 0 && (\n <span\n className=\"http-requires\"\n data-testid=\"op-requires\"\n >\n <span className=\"http-muted\">Needs driver support:</span>{\" \"}\n {operation.requires.map((method) => (\n <code key={method}>{method}</code>\n ))}\n </span>\n )}\n </div>\n\n {csrf && (\n <div\n className=\"http-csrf\"\n role=\"note\"\n data-testid=\"op-csrf\"\n >\n {csrf.header !== null && (\n <p>\n Every mutation must carry the <code>{csrf.header}</code> header,\n with any non-empty value.{\" \"}\n {config.csrfHeader === csrf.header\n ? \"The app sends it.\"\n : \"This UI is not configured to send it.\"}\n </p>\n )}\n {csrf.requireJson && (\n <p>\n Send <code>Content-Type: application/json</code>, even with no\n body; any other media type is refused with 415.\n </p>\n )}\n {csrf.header === null && !csrf.requireJson && (\n <p>Cross-site requests are refused (Origin / Sec-Fetch-Site).</p>\n )}\n </div>\n )}\n\n {operation.description && (\n <div className=\"http-description\">\n <Prose text={operation.description} />\n </div>\n )}\n\n <Parameters\n operation={operation}\n root={root}\n onRef={onRef}\n />\n <RequestBody\n operation={operation}\n root={root}\n onRef={onRef}\n />\n\n <section\n className=\"http-section\"\n aria-labelledby={`responses-${operation.id}`}\n >\n <h3 id={`responses-${operation.id}`}>Responses</h3>\n <ul\n className=\"http-responses\"\n data-testid=\"op-responses\"\n >\n {operation.responses.map((response) => (\n <ResponseItem\n key={response.status}\n response={response}\n root={root}\n onRef={onRef}\n />\n ))}\n </ul>\n </section>\n\n <TryItPanel\n key={operation.id}\n operation={operation}\n root={root}\n readOnly={readOnly}\n probe={probe}\n onChanged={onChanged}\n />\n </article>\n );\n}\n",
|
|
75
|
+
"/**\n * Arrow-key movement through a vertical list of links (the API docs\n * sidebars): Down/Up to the next/previous item, stopping at the ends,\n * Home/End to the first/last. Each item stays a Tab stop too, so this adds\n * speed without hiding anything from Tab.\n */\n\n/** The item a key moves focus to from `active`, or `null` when the key is not a movement key (or the list is empty). */\nexport function arrowTarget<T extends Element>(\n key: string,\n items: readonly T[],\n active: Element | null,\n): T | null {\n if (items.length === 0) {\n return null;\n }\n const index = active ? items.indexOf(active as T) : -1;\n switch (key) {\n case \"ArrowDown\":\n return items[index < 0 ? 0 : Math.min(index + 1, items.length - 1)];\n case \"ArrowUp\":\n return items[index <= 0 ? 0 : index - 1];\n case \"Home\":\n return items[0];\n case \"End\":\n return items[items.length - 1];\n default:\n return null;\n }\n}\n",
|
|
76
|
+
"/**\n * The viewer's one keyboard shortcut, as pure functions over a key event, so\n * the rules (and the \"not while typing\" guard) are testable without rendering.\n */\n\n/**\n * Marks a screen's search box for the `/` shortcut:\n * `<input {...SEARCH_SHORTCUT} />`. It also sets `aria-keyshortcuts`, so a\n * screen reader announces the shortcut on the box.\n */\nexport const SEARCH_SHORTCUT = {\n \"data-shortcut\": \"search\",\n \"aria-keyshortcuts\": \"/\",\n} as const;\n\n/** Whether the event comes from somewhere the user types: a shortcut must not steal the key. */\nexport function isTypingTarget(target: EventTarget | null): boolean {\n if (!target || typeof (target as Element).tagName !== \"string\") {\n return false;\n }\n const element = target as HTMLElement;\n const tag = element.tagName;\n if (tag === \"TEXTAREA\" || tag === \"SELECT\") {\n return true;\n }\n if (tag === \"INPUT\") {\n const type = (element as HTMLInputElement).type;\n return ![\n \"checkbox\",\n \"radio\",\n \"button\",\n \"submit\",\n \"reset\",\n \"range\",\n \"color\",\n \"file\",\n ].includes(type);\n }\n return (\n element.isContentEditable ||\n element.closest?.(\"[contenteditable]:not([contenteditable='false'])\") !==\n null\n );\n}\n\n/** The parts of a key event {@link shortcutFor} reads. */\nexport interface ShortcutKeyEvent {\n /** `KeyboardEvent.key`. */\n key: string;\n /** Where it happened. */\n target: EventTarget | null;\n /** Modifier state. */\n ctrlKey: boolean;\n /** Modifier state. */\n metaKey: boolean;\n /** Modifier state. */\n altKey: boolean;\n /** Something else handled it already. */\n defaultPrevented: boolean;\n /** IME composition in progress. */\n isComposing?: boolean;\n}\n\n/**\n * The shortcut a key press means, or `null`. Nothing fires while typing in\n * a field, with Ctrl/Meta/Alt held (the browser's own shortcuts), during\n * composition, or after another handler took the key.\n */\nexport function shortcutFor(event: ShortcutKeyEvent): \"focus-search\" | null {\n if (\n event.defaultPrevented ||\n event.isComposing ||\n event.ctrlKey ||\n event.metaKey ||\n event.altKey ||\n isTypingTarget(event.target)\n ) {\n return null;\n }\n return event.key === \"/\" ? \"focus-search\" : null;\n}\n\n/** The current screen's search box (the first enabled one marked with {@link SEARCH_SHORTCUT}), if it has one. */\nexport function findSearchBox(root: ParentNode): HTMLInputElement | null {\n const candidates = root.querySelectorAll<HTMLInputElement>(\n '[data-shortcut=\"search\"]',\n );\n for (const candidate of Array.from(candidates)) {\n if (!candidate.disabled && candidate.closest(\"[inert],[hidden]\") === null) {\n return candidate;\n }\n }\n return null;\n}\n",
|
|
77
|
+
"import type { KeyboardEvent } from \"react\";\nimport type { DocSection, DocTagGroup } from \"./model\";\nimport { useRef } from \"react\";\nimport { keyedSections } from \"./model\";\nimport { TextInput } from \"../../../components/inputs\";\nimport { arrowTarget } from \"../../../components/listKeys\";\nimport { SEARCH_SHORTCUT } from \"../../../shortcuts\";\nimport { Link } from \"../../../router\";\nimport { MethodBadge } from \"./OperationView\";\n\n/** Props of {@link Sidebar}. */\nexport interface SidebarProps {\n /** The groups to list, already filtered by the search. */\n groups: readonly DocTagGroup[];\n /**\n * The document's sections over those groups (`x-tagGroups`), already\n * filtered: each heads its tags, one level deeper. Default: none, and the\n * groups are listed at the top level.\n */\n sections?: readonly DocSection[];\n /** The search text (`?q=`). */\n query: string;\n /** Sets the search text. */\n onQuery: (query: string) => void;\n /** The link to an operation, keeping the search. */\n hrefOf: (operationId: string) => string;\n}\n\n/** The links of a sidebar, in order. */\nfunction links(root: HTMLElement | null): HTMLAnchorElement[] {\n return root\n ? Array.from(root.querySelectorAll<HTMLAnchorElement>(\"a.http-op-link\"))\n : [];\n}\n\n/** One tag's heading and its operations' links. */\nfunction TagBlock({\n group,\n headingId,\n level,\n hrefOf,\n}: {\n /** The tag and its operations. */\n group: DocTagGroup;\n /** The heading's id, unique in the sidebar (a tag can be in two sections). */\n headingId: string;\n /** The heading's level: 2 at the top, 3 inside a section. */\n level: 2 | 3;\n /** The link to an operation. */\n hrefOf: (operationId: string) => string;\n}) {\n const Heading = level === 2 ? \"h2\" : \"h3\";\n return (\n <section\n className=\"http-tag\"\n aria-labelledby={headingId}\n >\n <Heading\n id={headingId}\n className=\"http-tag-name\"\n title={group.description}\n >\n {group.name}\n </Heading>\n <ul className=\"http-tag-ops\">\n {group.operations.map((operation) => (\n <li key={operation.id}>\n <Link\n to={hrefOf(operation.id)}\n className=\"http-op-link\"\n activeMatch=\"exact\"\n data-operation={operation.id}\n >\n <MethodBadge method={operation.method} />\n <span className=\"http-op-text\">\n <span className=\"http-op-path\">{operation.path}</span>\n {operation.summary && (\n <span className=\"http-op-summary\">{operation.summary}</span>\n )}\n </span>\n </Link>\n </li>\n ))}\n </ul>\n </section>\n );\n}\n\n/**\n * The operations by tag (by section, then tag, when the document declares\n * `x-tagGroups`), with method badges, and a search over path,\n * operation id and summary. Arrow keys move between operations (Home/End to\n * the ends), and ArrowDown from the search goes to the first match.\n */\nexport function Sidebar({\n groups,\n sections,\n query,\n onQuery,\n hrefOf,\n}: SidebarProps) {\n const listRef = useRef<HTMLDivElement>(null);\n const count = groups.reduce((sum, group) => sum + group.operations.length, 0);\n\n function onListKey(event: KeyboardEvent<HTMLDivElement>) {\n const target = arrowTarget(\n event.key,\n links(listRef.current),\n document.activeElement,\n );\n if (target) {\n event.preventDefault();\n target.focus();\n }\n }\n\n return (\n <nav\n className=\"http-sidebar\"\n aria-label=\"Operations\"\n >\n <TextInput\n type=\"search\"\n value={query}\n aria-label=\"Search operations\"\n placeholder=\"Search path, id, summary\"\n {...SEARCH_SHORTCUT}\n onChange={(value) => onQuery(value)}\n onKeyDown={(event) => {\n if (event.key === \"ArrowDown\") {\n const first = links(listRef.current)[0];\n if (first) {\n event.preventDefault();\n first.focus();\n }\n }\n }}\n />\n <p\n className=\"http-muted http-sidebar-count\"\n aria-live=\"polite\"\n >\n {count === 1 ? \"1 operation\" : `${count} operations`}\n </p>\n {/* Arrow keys move between the links; each link stays a tab stop too. */}\n <div\n ref={listRef}\n className=\"http-sidebar-list\"\n onKeyDown={onListKey}\n >\n {sections === undefined\n ? groups.map((group) => (\n <TagBlock\n key={group.name}\n group={group}\n headingId={`tag-${group.name}`}\n level={2}\n hrefOf={hrefOf}\n />\n ))\n : keyedSections(sections).map(({ key, index, section }) => (\n <section\n key={key}\n className=\"http-section\"\n aria-labelledby={`section-${index}`}\n >\n <h2\n id={`section-${index}`}\n className=\"http-section-name\"\n >\n {section.name}\n </h2>\n {section.tags.map((group) => (\n <TagBlock\n key={group.name}\n group={group}\n headingId={`tag-${index}-${group.name}`}\n level={3}\n hrefOf={hrefOf}\n />\n ))}\n </section>\n ))}\n {groups.length === 0 && (\n <p className=\"http-muted\">No operation matches.</p>\n )}\n </div>\n </nav>\n );\n}\n",
|
|
78
|
+
"/** The HTTP API reference (OpenAPI 3.1): `/http` and `/http/:operationId` under the mount. */\nimport type { DocsClient } from \"../../../api/client\";\nimport type { SpecDocument } from \"../../../api/docs\";\nimport type { PermissionProbe } from \"../permissions\";\nimport type { DocInfo, DocSection, DocTagGroup } from \"./model\";\nimport { useMemo, useState } from \"react\";\nimport { createDocsClient } from \"../../../api/client\";\nimport { Badge } from \"../../../components/Badge\";\nimport { Card } from \"../../../components/Card\";\nimport { CopyButton } from \"../../../components/CopyButton\";\nimport { Dialog } from \"../../../components/Dialog\";\nimport { EmptyState } from \"../../../components/EmptyState\";\nimport {\n DocsClientContext,\n useDocsFetch,\n useDocsUiConfig,\n} from \"../../../context\";\nimport { Link } from \"../../../router\";\nimport { useParams, useQueryParam } from \"../../../routing\";\nimport { Prose } from \"../schema/Prose\";\nimport { refName } from \"../schema/resolve\";\nimport { SchemaTree } from \"../schema/SchemaTree\";\nimport {\n componentSchemaNames,\n filterGroups,\n groupBySection,\n keyedSections,\n groupByTag,\n listOperations,\n readInfo,\n resolveServerUrl,\n} from \"./model\";\nimport { OperationView } from \"./OperationView\";\nimport { Sidebar } from \"./Sidebar\";\nimport \"./http.css\";\n\n/** The app path of an operation, keeping a search; `base` is the docs section's path within the host app (\"\" for a standalone viewer). */\nfunction operationHref(operationId: string, query: string, base = \"\"): string {\n const search = query ? `?q=${encodeURIComponent(query)}` : \"\";\n return `${base}/http/${encodeURIComponent(operationId)}${search}`;\n}\n\n/** The document's title, version, description and servers. */\nfunction InfoHeader({\n info,\n serverBase,\n}: {\n /** The header. */\n info: DocInfo;\n /** The resolved URL requests are sent to. */\n serverBase: string;\n}) {\n const config = useDocsUiConfig();\n const origin = typeof window === \"undefined\" ? \"\" : window.location.origin;\n return (\n <Card className=\"http-info\">\n <div className=\"http-info-line\">\n <Badge tone=\"accent\">{`OpenAPI ${info.openapi}`}</Badge>\n {info.version && <Badge tone=\"neutral\">{`v${info.version}`}</Badge>}\n </div>\n {info.description && (\n <div className=\"http-description\">\n <Prose text={info.description} />\n </div>\n )}\n <dl\n className=\"http-servers\"\n data-testid=\"http-servers\"\n >\n {info.servers.map((server) => {\n const resolved = resolveServerUrl(\n server.url,\n config.documentUrl,\n origin,\n );\n return (\n <div key={server.url}>\n <dt>\n Server <code>{server.url}</code>\n {server.description ? ` (${server.description})` : \"\"}\n </dt>\n <dd>\n <code data-testid=\"http-server-url\">{resolved}</code>\n <CopyButton\n text={resolved}\n ariaLabel=\"Copy the server URL\"\n />\n </dd>\n </div>\n );\n })}\n <div>\n <dt>Requests are sent to</dt>\n <dd>\n <code data-testid=\"http-request-base\">{serverBase}</code>\n </dd>\n </div>\n </dl>\n <p className=\"http-muted\">Paths below are relative to the server.</p>\n </Card>\n );\n}\n\n/** One tag's description and its operations' links, on the landing view. */\nfunction OverviewTag({\n group,\n query,\n pathBase,\n}: {\n /** The tag and its operations. */\n group: DocTagGroup;\n /** The search, kept on links. */\n query: string;\n /** The docs section's path within the host app. */\n pathBase: string;\n}) {\n return (\n <>\n {group.description && <p className=\"http-muted\">{group.description}</p>}\n <ul className=\"http-overview-ops\">\n {group.operations.map((operation) => (\n <li key={operation.id}>\n <Link to={operationHref(operation.id, query, pathBase)}>\n <code>{operation.method}</code> {operation.path}\n </Link>\n {operation.summary && (\n <span className=\"http-muted\">{` ${operation.summary}`}</span>\n )}\n </li>\n ))}\n </ul>\n </>\n );\n}\n\n/** The landing view: tags (in their sections, when the document has them) with their operations, and the component schemas. */\nfunction Overview({\n doc,\n groups,\n sections,\n query,\n onRef,\n pathBase,\n}: {\n /** The document. */\n doc: SpecDocument;\n /** Every tag group (unfiltered). */\n groups: readonly DocTagGroup[];\n /** The document's sections over them (`x-tagGroups`), when it declares any: one card each, its tags inside. */\n sections: readonly DocSection[] | undefined;\n /** The search, kept on links. */\n query: string;\n /** Opens a component schema. */\n onRef: (ref: string, name: string) => void;\n /** The docs section's path within the host app. */\n pathBase: string;\n}) {\n const names = componentSchemaNames(doc);\n return (\n <div className=\"http-overview\">\n {sections === undefined\n ? groups.map((group) => (\n <Card\n key={group.name}\n title={group.name}\n >\n <OverviewTag\n group={group}\n query={query}\n pathBase={pathBase}\n />\n </Card>\n ))\n : keyedSections(sections).map(({ key, section }) => (\n <Card\n key={key}\n title={section.name}\n className=\"http-overview-section\"\n >\n {section.tags.map((group) => (\n <section\n key={group.name}\n className=\"http-overview-tag\"\n aria-label={group.name}\n >\n <h3 className=\"http-overview-tag-name\">{group.name}</h3>\n <OverviewTag\n group={group}\n query={query}\n pathBase={pathBase}\n />\n </section>\n ))}\n </Card>\n ))}\n {names.length > 0 && (\n <Card title=\"Schemas\">\n <ul\n className=\"http-components\"\n data-testid=\"http-components\"\n >\n {names.map((name) => (\n <li\n key={name}\n id={`schema-${name}`}\n >\n <button\n type=\"button\"\n className=\"schema-ref schema-ref-link\"\n onClick={() => onRef(`#/components/schemas/${name}`, name)}\n >\n {name}\n </button>\n </li>\n ))}\n </ul>\n </Card>\n )}\n </div>\n );\n}\n\n/** The side panel showing one component schema; a `$ref` inside it replaces it. */\nfunction SchemaPanel({\n doc,\n refValue,\n onClose,\n onRef,\n}: {\n /** The document. */\n doc: SpecDocument;\n /** The component shown, or `null` when closed. */\n refValue: string | null;\n /** Closes it. */\n onClose: () => void;\n /** Shows another component. */\n onRef: (ref: string, name: string) => void;\n}) {\n return (\n <Dialog\n open={refValue !== null}\n onClose={onClose}\n title={refValue === null ? \"\" : refName(refValue)}\n description={refValue ?? undefined}\n size=\"lg\"\n className=\"http-schema-panel\"\n >\n {refValue !== null && (\n <SchemaTree\n key={refValue}\n schema={{ $ref: refValue }}\n root={doc}\n depth={2}\n onRef={onRef}\n label={`Schema ${refName(refValue)}`}\n />\n )}\n </Dialog>\n );\n}\n\n/** Props of {@link HttpReference}. */\nexport interface HttpReferenceProps {\n /** The OpenAPI document. */\n doc: SpecDocument;\n /** The extension prefixes to read; defaults to the configured ones. */\n extensions?: readonly string[];\n /** The client the try-it panel sends with. Default: built on the document's resolved first server. */\n client?: DocsClient;\n /** Answers \"does the caller hold this permission\" (the have/lack badge and the try-it gate). */\n probe?: PermissionProbe;\n /** Whether the API is read-only. Defaults to `false`. */\n readOnly?: boolean;\n /** After a successful mutation (the host refreshes what it shows). */\n onChanged?: () => void;\n /** The docs section's path within the host app (\"\" for a standalone viewer). */\n pathBase?: string;\n}\n\n/** The loaded reference: sidebar, info or operation, and the schema panel. */\nexport function HttpReference({\n doc,\n extensions,\n client: clientOverride,\n probe,\n readOnly = false,\n onChanged,\n pathBase = \"\",\n}: HttpReferenceProps) {\n const config = useDocsUiConfig();\n const prefixes = extensions ?? config.extensions;\n const { operationId } = useParams<{ operationId?: string }>();\n const [query, setQuery] = useQueryParam(\"q\");\n const [panel, setPanel] = useState<string | null>(null);\n const info = useMemo(() => readInfo(doc), [doc]);\n const operations = useMemo(\n () => listOperations(doc, { extensions: prefixes }),\n [doc, prefixes],\n );\n const groups = useMemo(() => groupByTag(doc, operations), [doc, operations]);\n const visible = useMemo(() => filterGroups(groups, query), [groups, query]);\n // `undefined` without `x-tagGroups`: the sidebar is then one level, as before.\n const sections = useMemo(() => groupBySection(doc, groups), [doc, groups]);\n const visibleSections = useMemo(\n () => groupBySection(doc, visible),\n [doc, visible],\n );\n const selected =\n operationId === undefined\n ? undefined\n : operations.find((operation) => operation.id === operationId);\n const openRef = (ref: string) => setPanel(ref);\n\n // The try-it panel and the snippets send to the document's first server,\n // resolved against the origin the document was fetched from.\n const origin = typeof window === \"undefined\" ? \"\" : window.location.origin;\n const serverBase = resolveServerUrl(\n info.servers[0]?.url ?? \"/\",\n config.documentUrl,\n origin,\n );\n const fetcher = useDocsFetch();\n const client = useMemo(\n () =>\n clientOverride ??\n createDocsClient({\n base: serverBase,\n csrfHeader: config.csrfHeader,\n fetch: fetcher,\n }),\n [clientOverride, serverBase, config.csrfHeader, fetcher],\n );\n\n return (\n <div\n className=\"screen http-docs\"\n data-testid=\"http-docs\"\n >\n <div className=\"http-docs-title\">\n <h1 className=\"screen-title\">{info.title}</h1>\n </div>\n <div className=\"http-docs-layout\">\n <Sidebar\n groups={visible}\n sections={visibleSections}\n query={query}\n onQuery={(next) => setQuery(next)}\n hrefOf={(id) => operationHref(id, query, pathBase)}\n />\n <div className=\"http-docs-main\">\n {operationId === undefined ? (\n <>\n <InfoHeader\n info={info}\n serverBase={serverBase}\n />\n <Overview\n doc={doc}\n groups={groups}\n sections={sections}\n query={query}\n onRef={openRef}\n pathBase={pathBase}\n />\n </>\n ) : selected ? (\n <DocsClientContext value={client}>\n <OperationView\n key={selected.id}\n operation={selected}\n root={doc}\n onRef={openRef}\n probe={probe}\n readOnly={readOnly}\n onChanged={onChanged}\n />\n </DocsClientContext>\n ) : (\n <EmptyState\n title=\"No such operation\"\n description={`This document has no operation \"${operationId}\".`}\n action={<Link to={`${pathBase}/http`}>All operations</Link>}\n />\n )}\n </div>\n </div>\n <SchemaPanel\n doc={doc}\n refValue={panel}\n onClose={() => setPanel(null)}\n onRef={openRef}\n />\n </div>\n );\n}\n",
|
|
79
|
+
"import type { ReactNode } from \"react\";\nimport { cx } from \"./classNames\";\n\n/** One row of a {@link KeyValue}. */\nexport interface KeyValueItem {\n /** The term, e.g. \"Attempts\". */\n label: ReactNode;\n /** The value: text or any node. `null`, `undefined` and `\"\"` render the `empty` placeholder. */\n value: ReactNode;\n /** A stable React key; defaults to the label when it is a string, else the index. */\n key?: string;\n /** A short note under the value, e.g. \"of 5 allowed\". */\n hint?: ReactNode;\n}\n\n/** Props of {@link KeyValue}. */\nexport interface KeyValueProps {\n /** The rows, in order. Falsy entries are skipped, so rows can be conditional inline. */\n items: readonly (KeyValueItem | false | null | undefined)[];\n /** `\"grid\"` puts label and value side by side; `\"stacked\"` puts the label above. Defaults to `\"grid\"`. */\n layout?: \"grid\" | \"stacked\";\n /** What a missing value shows. Defaults to `\"—\"`. */\n empty?: ReactNode;\n /** Extra class names on the `<dl>`. */\n className?: string;\n}\n\n/** A summary as a definition list: label/value rows (a job's timings, a queue's settings). */\nexport function KeyValue({\n items,\n layout = \"grid\",\n empty = \"—\",\n className,\n}: KeyValueProps) {\n return (\n <dl className={cx(\"kv\", `kv-${layout}`, className)}>\n {items.map((item, index) => {\n if (!item) {\n return null;\n }\n const missing =\n item.value === null || item.value === undefined || item.value === \"\";\n // The index is only the fallback for a row with neither a key nor a\n // string label.\n const rowKey =\n item.key ??\n (typeof item.label === \"string\" ? item.label : `row-${index}`);\n return (\n <div\n key={rowKey}\n className=\"kv-row\"\n >\n <dt className=\"kv-label\">{item.label}</dt>\n <dd className={cx(\"kv-value\", missing && \"muted\")}>\n {missing ? empty : item.value}\n {item.hint && <span className=\"kv-hint\">{item.hint}</span>}\n </dd>\n </div>\n );\n })}\n </dl>\n );\n}\n",
|
|
80
|
+
"import type { ReactNode } from \"react\";\nimport { cx } from \"./classNames\";\n\n/** Props of {@link Table}. */\nexport interface TableProps {\n /** Accessible name of the table (rendered as a visually hidden caption). */\n label: string;\n /** Extra class names on the `<table>`. */\n className?: string;\n /** `<thead>` / `<tbody>`. */\n children: ReactNode;\n}\n\n/**\n * A table in a scrollable, focusable region with a sticky header. Keyboard\n * users can scroll a wide table because the region is tabbable.\n */\nexport function Table({ label, className, children }: TableProps) {\n return (\n <div\n className=\"table-wrap\"\n role=\"region\"\n aria-label={label}\n // A scrollable region must be reachable by keyboard.\n tabIndex={0}\n >\n <table className={cx(\"table\", className)}>\n <caption className=\"visually-hidden\">{label}</caption>\n {children}\n </table>\n </div>\n );\n}\n",
|
|
81
|
+
"/** Props of {@link InlineText}. */\nexport interface InlineTextProps {\n /** One line of spec text, whose backtick spans are code. */\n text: string;\n}\n\n/**\n * One line of spec text with its `` `code` `` spans as `<code>`: the inline\n * half of the shared `Prose`, which does not export it. No HTML is injected.\n */\nexport function InlineText({ text }: InlineTextProps) {\n const parts = text.split(/(`[^`]+`)/);\n return (\n <>\n {parts.map((part, index) =>\n part.length > 2 && part.startsWith(\"`\") && part.endsWith(\"`\") ? (\n // eslint-disable-next-line react/no-array-index-key -- the split is fixed for a given text\n <code key={index}>{part.slice(1, -1)}</code>\n ) : (\n part\n ),\n )}\n </>\n );\n}\n",
|
|
82
|
+
"import type { SpecDocument } from \"../../../api/docs\";\nimport { DEFAULT_EXTENSION_PREFIXES } from \"../../../../../lib/docs/browser/config.ts\";\nimport { resolveRef } from \"../schema/resolve\";\n\n/**\n * The WebSocket reference's pure half: the AsyncAPI 3.0 document read into\n * what the screen shows (header, sidebar items, per-item detail, the\n * specification extensions).\n *\n * Everything is read defensively: the document is JSON from the server, and a\n * field this reader does not find is left out rather than guessed.\n *\n * The extensions are vendor-neutral: each is named on its node as\n * `<prefix>-<name>` and read from the first prefix of\n * {@link WsModelOptions.extensions} that carries it (default\n * `[\"x-bun-common\", \"x-bun-jobs\"]`), so a document written for either\n * vocabulary — or an operator's own — renders, and an extension under any\n * other prefix is ignored.\n */\n\n/** A JSON object, loosely. */\ntype Json = Record<string, unknown>;\n\n/** Whether a value is a plain JSON object. */\nfunction isObject(value: unknown): value is Json {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/** A string field, or `undefined`. */\nfunction str(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\n\n/** A number field, or `undefined`. */\nfunction num(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isFinite(value)\n ? value\n : undefined;\n}\n\n/** Options of {@link readWsDoc}. */\nexport interface WsModelOptions {\n /**\n * The extension prefixes, first hit winning. Defaults to\n * `[\"x-bun-common\", \"x-bun-jobs\"]`.\n */\n extensions?: readonly string[];\n /**\n * The subprotocol shown when the document states none, e.g. the client\n * contract's. Unset: the panel says the document does not state one.\n */\n defaultSubprotocol?: string;\n}\n\n/** One extension read: the full key it was found under, and its value. */\ninterface FoundExtension {\n /** The full key, e.g. `x-bun-jobs-limits`. */\n key: string;\n /** Its value. */\n value: unknown;\n}\n\n/** Reads the `<prefix>-<name>` extension of a node from the first prefix carrying it. */\nfunction extensionOf(\n node: Json | undefined,\n name: string,\n prefixes: readonly string[],\n): FoundExtension | undefined {\n if (node === undefined) {\n return undefined;\n }\n for (const prefix of prefixes) {\n const key = `${prefix}-${name}`;\n if (Object.hasOwn(node, key)) {\n return { key, value: node[key] };\n }\n }\n return undefined;\n}\n\n/** The last segment of a local `$ref` (`#/channels/queue` → `queue`), unescaped. */\nexport function refName(ref: unknown): string | undefined {\n const pointer = isObject(ref) ? str(ref.$ref) : undefined;\n if (pointer === undefined || !pointer.startsWith(\"#/\")) {\n return undefined;\n }\n const last = pointer.split(\"/\").at(-1);\n return last === undefined\n ? undefined\n : last.replaceAll(\"~1\", \"/\").replaceAll(\"~0\", \"~\");\n}\n\n/** The app path of an item, keeping the search; `base` is the docs section's path within the host app (\"\" for a standalone viewer). */\nexport function itemPath(slug: string, query = \"\", base = \"\"): string {\n return `${base}/ws/${encodeURIComponent(slug)}${query ? `?${new URLSearchParams({ q: query }).toString()}` : \"\"}`;\n}\n\n/** The kinds of sidebar item. */\nexport type WsItemKind =\n | \"channel\"\n | \"operation\"\n | \"message\"\n | \"limits\"\n | \"close-codes\"\n | \"upgrade-refusals\";\n\n/** The URL slug of an item: `channel-queue`, `operation-subscribe`, `message-queue.completed`, `limits`. */\nexport function itemSlug(kind: WsItemKind, key?: string): string {\n return key === undefined ? kind : `${kind}-${key}`;\n}\n\n/** A channel parameter. */\nexport interface WsParameter {\n /** Its name in the address template (`queue`, `jobId`, `runner`). */\n name: string;\n /** What it is. */\n description: string | undefined;\n /**\n * The value's JSON Schema, from the `<prefix>-schema` extension (AsyncAPI\n * 3.0's Parameter Object has no `schema` field); `undefined` when the\n * document gives none.\n */\n schema: Json | undefined;\n}\n\n/** One channel: the `connection`, or a logical family. */\nexport interface WsChannel {\n /** Its key under `channels` (`connection`, `queue`, ...). */\n key: string;\n /** The item slug. */\n slug: string;\n /** Its title, or the key. */\n title: string;\n /** The address: the socket path for `connection`, a name template otherwise. */\n address: string;\n /** Its description. */\n description: string | undefined;\n /** Address parameters, in template order. */\n parameters: WsParameter[];\n /** Message ids it carries, in document order. */\n messages: string[];\n /** The WebSocket binding's method, when declared. */\n bindingMethod: string | undefined;\n /** Whether this is the transport itself rather than a logical channel. */\n isConnection: boolean;\n}\n\n/** One operation. */\nexport interface WsOperation {\n /** Its key under `operations`. */\n key: string;\n /** The item slug. */\n slug: string;\n /** Its title, or the key. */\n title: string;\n /** Its summary. */\n summary: string | undefined;\n /** `send` (client → server) or `receive` (server → client). */\n action: \"send\" | \"receive\" | undefined;\n /** The channel key it is on. */\n channel: string | undefined;\n /** The message ids it sends or receives. */\n messages: string[];\n /** The reply, for a request/response operation. */\n reply: {\n /** The channel key the reply arrives on. */\n channel: string | undefined;\n /** The message ids the reply may be. */\n messages: string[];\n } | null;\n /** The permission it needs (the `<prefix>-action` extension). */\n permission: string | undefined;\n}\n\n/** One message. */\nexport interface WsMessage {\n /** Its key under `components.messages` (`subscribe`, `queue.completed`). */\n key: string;\n /** The item slug. */\n slug: string;\n /** Its `name`, or the key. */\n name: string;\n /** Its title. */\n title: string | undefined;\n /** Its summary. */\n summary: string | undefined;\n /** Its content type. */\n contentType: string | undefined;\n /** The payload schema as written (often a `$ref`). */\n payload: unknown;\n /** Its examples, when the document gives any. */\n examples: {\n /** The example's name. */\n name: string | undefined;\n /** Its summary. */\n summary: string | undefined;\n /** Its payload. */\n payload: unknown;\n }[];\n /**\n * For an event message — one whose key is `<kind>.<type>`\n * (`queue.completed`) — the two parts; `null` for a control message (a key\n * with no dot).\n */\n event: {\n /** The part before the first dot (`queue`). */\n kind: string;\n /** The part after it (`completed`). */\n type: string;\n } | null;\n}\n\n/** One `<prefix>-close-codes` entry. */\nexport interface WsCloseCode {\n /** The close code. */\n code: number;\n /** Its name. */\n name: string;\n /** When it is sent. */\n description: string;\n}\n\n/** One `<prefix>-upgrade-refusals` entry. */\nexport interface WsUpgradeRefusal {\n /** The HTTP status. */\n status: number;\n /** The problem's `code`. */\n code: string;\n /** When it is sent. */\n description: string;\n /** The response's content type. */\n contentType: string | undefined;\n /** Headers it carries. */\n headers: Record<string, string>;\n}\n\n/** `<prefix>-limits`, as far as it was found. */\nexport interface WsLimits {\n /** Every numeric limit, by name, in document order. */\n values: [name: string, value: number][];\n /** The replay ring: its size and age, `false` when replay is off, `undefined` when not stated. */\n replay:\n | {\n /** How many events it keeps. */\n size: number | undefined;\n /** How old an event it keeps, in ms. */\n maxAgeMs: number | undefined;\n }\n | false\n | undefined;\n}\n\n/** A security scheme, as `components.securitySchemes` declares it. */\nexport interface WsSecurityScheme {\n /** Its name. */\n name: string;\n /** Its AsyncAPI type (`http`, `httpApiKey`, `oauth2`, ...). */\n type: string | undefined;\n /** A one-line reading of it (`bearer`, `header X-Key`). */\n detail: string | undefined;\n /** Its description. */\n description: string | undefined;\n /** What a browser WebSocket cannot carry (the `<prefix>-note` extension). */\n note: string | undefined;\n}\n\n/** One requirement: every scheme in it is needed together. */\nexport type WsRequirement = {\n /** The scheme. */\n scheme: string;\n /** The scopes it needs. */\n scopes: string[];\n}[];\n\n/** The document's server. */\nexport interface WsServer {\n /** Its key under `servers`: `api`, or the first server's when there is no `api`. */\n key: string;\n /** The host, as served (the request's own when fetched over HTTP). */\n host: string;\n /** Whether the host is still the `{host}` template (the in-process document). */\n hostIsTemplate: boolean;\n /** The template's default host, when it is one. */\n hostDefault: string | undefined;\n /** The socket's path. */\n pathname: string | undefined;\n /** `ws` or `wss`. */\n protocol: string | undefined;\n /** Its description. */\n description: string | undefined;\n /** The socket URL, when host and protocol are known. */\n url: string | undefined;\n}\n\n/** The whole document, read. */\nexport interface WsDoc {\n /** `info.title`. */\n title: string;\n /** `info.version`. */\n version: string | undefined;\n /** `info.description`. */\n description: string | undefined;\n /** `servers.api` (or the first server). */\n server: WsServer | null;\n /** The subprotocol, and where it was read from. */\n subprotocol: {\n /** The subprotocol, or `undefined` when the document states none and no default was configured. */\n value: string | undefined;\n /** Whether it was read from the document rather than assumed. */\n fromDocument: boolean;\n /**\n * Where it came from: the `<prefix>-subprotocol` extension on the server\n * (`servers.api`, see {@link WsServer.key}), else on the connection\n * channel; the connection channel's description (a document that states\n * it only there); or {@link WsModelOptions.defaultSubprotocol} when the\n * document says nothing. {@link subprotocolSource} words it.\n */\n source:\n | \"server-extension\"\n | \"connection-extension\"\n | \"connection-prose\"\n | \"default\";\n };\n /** The full key the subprotocol extension was read from (e.g. `x-bun-jobs-subprotocol`), when it was one. */\n subprotocolKey?: string;\n /** The full keys the connection's extensions were found under (e.g. `x-bun-jobs-limits`), for the panels to name. */\n extensionKeys: {\n /** The key the security requirements were read from. */\n security?: string;\n /** The key the limits were read from. */\n limits?: string;\n /** The key the close codes were read from. */\n closeCodes?: string;\n /** The key the upgrade refusals were read from. */\n upgradeRefusals?: string;\n };\n /** Declared schemes that a requirement names. */\n securitySchemes: WsSecurityScheme[];\n /** Every requirement (the `<prefix>-security` extension, else the native list): any one suffices. */\n requirements: WsRequirement[];\n /** Whether some requirement could not be expressed in the native `security` list (it names several schemes). */\n conjunctive: boolean;\n /** Channels: `connection` first, then the families in document order. */\n channels: WsChannel[];\n /** Operations, in document order. */\n operations: WsOperation[];\n /** Messages: control messages, then events. */\n messages: WsMessage[];\n /** `<prefix>-limits`, or `null` when absent. */\n limits: WsLimits | null;\n /** `<prefix>-close-codes`. */\n closeCodes: WsCloseCode[];\n /** `<prefix>-upgrade-refusals`. */\n refusals: WsUpgradeRefusal[];\n}\n\n/**\n * Where the subprotocol shown was read from, in words: `from servers.api\n * (x-bun-jobs-subprotocol)`, `from the connection channel\n * (x-bun-common-subprotocol)`, `from the connection channel's description`, or\n * `not stated in the document` (plus `; the configured default` when one was).\n */\nexport function subprotocolSource(doc: WsDoc): string {\n switch (doc.subprotocol.source) {\n case \"server-extension\":\n return `from servers.${doc.server?.key ?? \"api\"} (${doc.subprotocolKey ?? \"subprotocol extension\"})`;\n case \"connection-extension\":\n return `from the connection channel (${doc.subprotocolKey ?? \"subprotocol extension\"})`;\n case \"connection-prose\":\n return \"from the connection channel's description\";\n case \"default\":\n return doc.subprotocol.value === undefined\n ? \"not stated in the document\"\n : \"not stated; the configured default\";\n }\n}\n\n/** Reads the subprotocol from the connection channel's prose (`subprotocol \\`bun-jobs.v1\\``). */\nfunction readSubprotocol(description: string | undefined): string | undefined {\n return description?.match(/subprotocol `([^`]+)`/)?.[1];\n}\n\n/** Reads a scheme's one-line detail. */\nfunction schemeDetail(scheme: Json): string | undefined {\n const type = str(scheme.type);\n switch (type) {\n case \"http\":\n return [str(scheme.scheme), str(scheme.bearerFormat)]\n .filter(Boolean)\n .join(\", \");\n case \"httpApiKey\":\n return `${str(scheme.in) ?? \"?\"} ${str(scheme.name) ?? \"?\"}`;\n case \"oauth2\": {\n const scopes = isObject(scheme.flows)\n ? Object.values(scheme.flows).flatMap((flow) =>\n isObject(flow) && isObject(flow.availableScopes)\n ? Object.keys(flow.availableScopes)\n : [],\n )\n : [];\n return scopes.length > 0\n ? `scopes: ${[...new Set(scopes)].join(\", \")}`\n : undefined;\n }\n case \"openIdConnect\":\n return str(scheme.openIdConnectUrl);\n default:\n return undefined;\n }\n}\n\n/** Reads a requirement object (`{ bearer: [], key: [\"read\"] }`). */\nfunction readRequirement(requirement: unknown): WsRequirement | null {\n if (!isObject(requirement)) {\n return null;\n }\n return Object.entries(requirement).map(([scheme, scopes]) => ({\n scheme,\n scopes: Array.isArray(scopes)\n ? scopes.filter((scope): scope is string => typeof scope === \"string\")\n : [],\n }));\n}\n\n/** Reads a native `server.security` entry: a `$ref`, or an inline scheme with `scopes`. */\nfunction readNativeRequirement(\n entry: unknown,\n schemes: Json,\n): WsRequirement | null {\n const name = refName(entry);\n if (name !== undefined) {\n return [{ scheme: name, scopes: [] }];\n }\n if (!isObject(entry)) {\n return null;\n }\n // An inline copy of a declared scheme: find it by its fields.\n const { scopes, ...rest } = entry;\n const match = Object.entries(schemes).find(\n ([, scheme]) =>\n isObject(scheme) &&\n Object.entries(rest).every(\n ([key, value]) => JSON.stringify(scheme[key]) === JSON.stringify(value),\n ),\n );\n return [\n {\n scheme: match?.[0] ?? str(rest.type) ?? \"(inline)\",\n scopes: Array.isArray(scopes)\n ? scopes.filter((scope): scope is string => typeof scope === \"string\")\n : [],\n },\n ];\n}\n\n/** The ids of a list of message `$ref`s. */\nfunction messageIds(list: unknown): string[] {\n const entries = Array.isArray(list)\n ? list\n : isObject(list)\n ? Object.values(list)\n : [];\n return entries.flatMap((entry) => {\n const name = refName(entry);\n return name === undefined ? [] : [name];\n });\n}\n\n/** Reads the event kind and type from a message key (`queue.completed`); `null` for a control message. */\nfunction eventOf(key: string): WsMessage[\"event\"] {\n const match = /^([^.]+)\\.(.+)$/.exec(key);\n return match ? { kind: match[1]!, type: match[2]! } : null;\n}\n\n/** Reads the numeric limits and the replay setting. */\nfunction readLimits(raw: unknown): WsLimits | null {\n if (!isObject(raw)) {\n return null;\n }\n const values: [string, number][] = [];\n for (const [name, value] of Object.entries(raw)) {\n const n = num(value);\n if (name !== \"replay\" && n !== undefined) {\n values.push([name, n]);\n }\n }\n const replay = raw.replay;\n return {\n values,\n replay:\n replay === false\n ? false\n : isObject(replay)\n ? { size: num(replay.size), maxAgeMs: num(replay.maxAgeMs) }\n : undefined,\n };\n}\n\n/** Reads the document into what the screen shows. */\nexport function readWsDoc(\n doc: SpecDocument,\n options: WsModelOptions = {},\n): WsDoc {\n const prefixes = options.extensions ?? DEFAULT_EXTENSION_PREFIXES;\n const info = isObject(doc.info) ? doc.info : {};\n const components = isObject(doc.components) ? doc.components : {};\n const rawSchemes = isObject(components.securitySchemes)\n ? components.securitySchemes\n : {};\n\n // The server.\n const servers = isObject(doc.servers) ? doc.servers : {};\n const serverKey = isObject(servers.api)\n ? \"api\"\n : Object.keys(servers).find((key) => isObject(servers[key]));\n const rawServer =\n serverKey === undefined ? undefined : (servers[serverKey] as Json);\n let server: WsServer | null = null;\n let requirements: WsRequirement[] = [];\n let nativeCount = 0;\n let securityKey: string | undefined;\n if (rawServer) {\n const variables = isObject(rawServer.variables) ? rawServer.variables : {};\n const hostVar = isObject(variables.host) ? variables.host : undefined;\n const rawHost = str(rawServer.host) ?? \"\";\n const hostIsTemplate = /\\{[^}]+\\}/.test(rawHost);\n const hostDefault = str(hostVar?.default);\n const pathname = str(rawServer.pathname);\n const protocol = str(rawServer.protocol);\n const host =\n hostIsTemplate && hostDefault\n ? rawHost.replace(/\\{host\\}/, hostDefault)\n : rawHost;\n server = {\n key: serverKey!,\n host: rawHost,\n hostIsTemplate,\n hostDefault,\n pathname,\n protocol,\n description: str(rawServer.description),\n url:\n host !== \"\" && protocol !== undefined\n ? `${protocol}://${host}${pathname ?? \"\"}`\n : undefined,\n };\n const native = Array.isArray(rawServer.security) ? rawServer.security : [];\n nativeCount = native.length;\n const verbatim = extensionOf(rawServer, \"security\", prefixes);\n securityKey = verbatim?.key;\n requirements = (\n verbatim !== undefined && Array.isArray(verbatim.value)\n ? verbatim.value.map(readRequirement)\n : native.map((entry) => readNativeRequirement(entry, rawSchemes))\n ).filter(\n (requirement): requirement is WsRequirement => requirement !== null,\n );\n }\n const named = new Set(\n requirements.flatMap((requirement) =>\n requirement.map((part) => part.scheme),\n ),\n );\n const securitySchemes: WsSecurityScheme[] = Object.entries(rawSchemes)\n .filter(([name]) => named.has(name) || named.size === 0)\n .flatMap(([name, scheme]) =>\n isObject(scheme)\n ? [\n {\n name,\n type: str(scheme.type),\n detail: schemeDetail(scheme) || undefined,\n description: str(scheme.description),\n note: str(extensionOf(scheme, \"note\", prefixes)?.value),\n },\n ]\n : [],\n );\n\n // Channels: connection first.\n const rawChannels = isObject(doc.channels) ? doc.channels : {};\n const channels: WsChannel[] = Object.entries(rawChannels)\n .flatMap(([key, channel]): WsChannel[] => {\n if (!isObject(channel)) {\n return [];\n }\n const address = str(channel.address) ?? key;\n const declared = isObject(channel.parameters) ? channel.parameters : {};\n const inTemplate = [...address.matchAll(/\\{([^}]+)\\}/g)].map(\n (match) => match[1],\n );\n const names = [\n ...inTemplate,\n ...Object.keys(declared).filter((name) => !inTemplate.includes(name)),\n ];\n const bindings = isObject(channel.bindings) ? channel.bindings : {};\n const ws = isObject(bindings.ws) ? bindings.ws : {};\n return [\n {\n key,\n slug: itemSlug(\"channel\", key),\n title: str(channel.title) ?? key,\n address,\n description: str(channel.description),\n parameters: names.map((name) => {\n const parameter = isObject(declared[name])\n ? declared[name]\n : undefined;\n const schema = extensionOf(parameter, \"schema\", prefixes)?.value;\n return {\n name,\n description: str(parameter?.description),\n schema: isObject(schema) ? schema : undefined,\n };\n }),\n messages: messageIds(channel.messages),\n bindingMethod: str(ws.method),\n // The transport: keyed `connection`, or (under another key) the\n // channel carrying the WebSocket binding's upgrade method, which\n // only the socket itself has.\n isConnection: key === \"connection\" || str(ws.method) !== undefined,\n },\n ];\n })\n .sort((a, b) => Number(b.isConnection) - Number(a.isConnection));\n const connection = channels.find((channel) => channel.isConnection);\n const rawConnection = connection ? (rawChannels[connection.key] as Json) : {};\n\n // Operations.\n const rawOperations = isObject(doc.operations) ? doc.operations : {};\n const operations: WsOperation[] = Object.entries(rawOperations).flatMap(\n ([key, operation]): WsOperation[] => {\n if (!isObject(operation)) {\n return [];\n }\n const action = str(operation.action);\n const reply = isObject(operation.reply) ? operation.reply : null;\n return [\n {\n key,\n slug: itemSlug(\"operation\", key),\n title: str(operation.title) ?? key,\n summary: str(operation.summary),\n action:\n action === \"send\" || action === \"receive\" ? action : undefined,\n channel: refName(operation.channel),\n messages: messageIds(operation.messages),\n reply: reply\n ? {\n channel: refName(reply.channel),\n messages: messageIds(reply.messages),\n }\n : null,\n permission: str(extensionOf(operation, \"action\", prefixes)?.value),\n },\n ];\n },\n );\n\n // Messages: control first, then events, each in document order.\n const rawMessages = isObject(components.messages) ? components.messages : {};\n const messages: WsMessage[] = Object.entries(rawMessages)\n .flatMap(([key, message]): WsMessage[] => {\n if (!isObject(message)) {\n return [];\n }\n const examples = Array.isArray(message.examples) ? message.examples : [];\n return [\n {\n key,\n slug: itemSlug(\"message\", key),\n name: str(message.name) ?? key,\n title: str(message.title),\n summary: str(message.summary),\n contentType: str(message.contentType) ?? str(doc.defaultContentType),\n payload: message.payload,\n examples: examples.filter(isObject).map((example) => ({\n name: str(example.name),\n summary: str(example.summary),\n payload: example.payload,\n })),\n event: eventOf(key),\n },\n ];\n })\n .sort((a, b) => Number(a.event !== null) - Number(b.event !== null));\n\n // The connection's extensions, on the connection channel (or wherever they\n // are): each is read from the first prefix carrying it, looking at the\n // connection channel first.\n const channelExtension = (name: string): FoundExtension | undefined => {\n for (const prefix of prefixes) {\n const key = `${prefix}-${name}`;\n if (Object.hasOwn(rawConnection, key)) {\n return { key, value: rawConnection[key] };\n }\n const carrier = Object.values(rawChannels).find(\n (channel) => isObject(channel) && Object.hasOwn(channel, key),\n );\n if (isObject(carrier)) {\n return { key, value: carrier[key] };\n }\n }\n return undefined;\n };\n const closeCodesExt = channelExtension(\"close-codes\");\n const closeCodes = (\n Array.isArray(closeCodesExt?.value) ? closeCodesExt.value : []\n ).flatMap((entry): WsCloseCode[] =>\n isObject(entry) && num(entry.code) !== undefined\n ? [\n {\n code: num(entry.code)!,\n name: str(entry.name) ?? \"\",\n description: str(entry.description) ?? \"\",\n },\n ]\n : [],\n );\n const refusalsExt = channelExtension(\"upgrade-refusals\");\n const refusals = (\n Array.isArray(refusalsExt?.value) ? refusalsExt.value : []\n ).flatMap((entry): WsUpgradeRefusal[] =>\n isObject(entry) && num(entry.status) !== undefined\n ? [\n {\n status: num(entry.status)!,\n code: str(entry.code) ?? \"\",\n description: str(entry.description) ?? \"\",\n contentType: str(entry.contentType),\n headers: isObject(entry.headers)\n ? Object.fromEntries(\n Object.entries(entry.headers).flatMap(([name, value]) =>\n typeof value === \"string\" ? [[name, value]] : [],\n ),\n )\n : {},\n },\n ]\n : [],\n );\n const limitsExt = channelExtension(\"limits\");\n\n // A non-string extension value is as good as absent (as the original\n // reader's `str(...)` at each level did): fall through to the next source.\n const subprotocolOn = (\n node: Json | undefined,\n ): FoundExtension | undefined => {\n const found = extensionOf(node, \"subprotocol\", prefixes);\n return found !== undefined && str(found.value) !== undefined\n ? found\n : undefined;\n };\n const onServer = subprotocolOn(rawServer);\n const onConnection =\n onServer === undefined ? subprotocolOn(rawConnection) : undefined;\n const prose =\n onServer === undefined && onConnection === undefined\n ? readSubprotocol(connection?.description)\n : undefined;\n const stated = str(onServer?.value) ?? str(onConnection?.value) ?? prose;\n return {\n title: str(info.title) ?? \"WebSocket API\",\n version: str(info.version),\n description: str(info.description),\n server,\n subprotocol: {\n value: stated ?? options.defaultSubprotocol,\n fromDocument: stated !== undefined,\n source:\n onServer !== undefined\n ? \"server-extension\"\n : onConnection !== undefined\n ? \"connection-extension\"\n : prose !== undefined\n ? \"connection-prose\"\n : \"default\",\n },\n subprotocolKey: onServer?.key ?? onConnection?.key,\n extensionKeys: {\n security: securityKey,\n limits: limitsExt?.key,\n closeCodes: closeCodesExt?.key,\n upgradeRefusals: refusalsExt?.key,\n },\n securitySchemes,\n requirements,\n conjunctive: requirements.length > nativeCount,\n channels,\n operations,\n messages,\n limits: readLimits(limitsExt?.value),\n closeCodes,\n refusals,\n };\n}\n\n/** One entry of the sidebar. */\nexport interface WsNavItem {\n /** The item slug. */\n slug: string;\n /** What the entry reads. */\n label: string;\n /** A second line: an address, an action, a summary. */\n hint: string | undefined;\n /** Text the search matches besides the label. */\n keywords: string;\n}\n\n/** A sidebar group. */\nexport interface WsNavGroup {\n /** The group's heading. */\n title: string;\n /** Its entries. */\n items: WsNavItem[];\n}\n\n/** The sidebar: the connection's panels, channels, operations, then messages (control, then events). */\nexport function navGroups(doc: WsDoc): WsNavGroup[] {\n const candidates: (WsNavItem | false | null)[] = [\n doc.limits && {\n slug: itemSlug(\"limits\"),\n label: \"Limits\",\n hint: doc.extensionKeys.limits,\n keywords: doc.limits.values.map(([name]) => name).join(\" \"),\n },\n doc.closeCodes.length > 0 && {\n slug: itemSlug(\"close-codes\"),\n label: \"Close codes\",\n hint: doc.extensionKeys.closeCodes,\n keywords: doc.closeCodes\n .map((entry) => `${entry.code} ${entry.name}`)\n .join(\" \"),\n },\n doc.refusals.length > 0 && {\n slug: itemSlug(\"upgrade-refusals\"),\n label: \"Upgrade refusals\",\n hint: doc.extensionKeys.upgradeRefusals,\n keywords: doc.refusals\n .map((entry) => `${entry.status} ${entry.code}`)\n .join(\" \"),\n },\n ];\n const connection = candidates.filter((item): item is WsNavItem =>\n Boolean(item),\n );\n const control = doc.messages.filter((message) => message.event === null);\n const events = doc.messages.filter((message) => message.event !== null);\n const messageItem = (message: WsMessage): WsNavItem => ({\n slug: message.slug,\n label: message.name,\n hint: message.summary,\n keywords: `${message.title ?? \"\"} ${message.summary ?? \"\"}`,\n });\n return [\n { title: \"Connection\", items: connection },\n {\n title: \"Channels\",\n items: doc.channels.map((channel) => ({\n slug: channel.slug,\n label: channel.title,\n hint: channel.address,\n keywords: `${channel.key} ${channel.address} ${channel.parameters.map((parameter) => parameter.name).join(\" \")}`,\n })),\n },\n {\n title: \"Operations\",\n items: doc.operations.map((operation) => ({\n slug: operation.slug,\n label: operation.title,\n hint: [operation.action, operation.permission]\n .filter(Boolean)\n .join(\" · \"),\n keywords: `${operation.key} ${operation.summary ?? \"\"} ${operation.permission ?? \"\"}`,\n })),\n },\n { title: \"Control messages\", items: control.map(messageItem) },\n { title: \"Event messages\", items: events.map(messageItem) },\n ].filter((group) => group.items.length > 0);\n}\n\n/** The groups keeping only entries matching `query` (case-insensitive, every word). */\nexport function filterGroups(\n groups: readonly WsNavGroup[],\n query: string,\n): WsNavGroup[] {\n const words = query.toLowerCase().split(/\\s+/).filter(Boolean);\n if (words.length === 0) {\n return [...groups];\n }\n return groups\n .map((group) => ({\n ...group,\n items: group.items.filter((item) => {\n const text =\n `${item.slug} ${item.label} ${item.hint ?? \"\"} ${item.keywords}`.toLowerCase();\n return words.every((word) => text.includes(word));\n }),\n }))\n .filter((group) => group.items.length > 0);\n}\n\n/** What a slug selects. */\nexport type WsSelection =\n | {\n /** A channel. */\n kind: \"channel\";\n /** It. */\n channel: WsChannel;\n }\n | {\n /** An operation. */\n kind: \"operation\";\n /** It. */\n operation: WsOperation;\n }\n | {\n /** A message. */\n kind: \"message\";\n /** It. */\n message: WsMessage;\n }\n | {\n /** One of the connection's extension panels. */\n kind: \"limits\" | \"close-codes\" | \"upgrade-refusals\";\n };\n\n/** The item a slug names, or `null` when the document has none by it. */\nexport function selectItem(doc: WsDoc, slug: string): WsSelection | null {\n if (slug === \"limits\" && doc.limits) {\n return { kind: \"limits\" };\n }\n if (slug === \"close-codes\" && doc.closeCodes.length > 0) {\n return { kind: \"close-codes\" };\n }\n if (slug === \"upgrade-refusals\" && doc.refusals.length > 0) {\n return { kind: \"upgrade-refusals\" };\n }\n const channel = doc.channels.find((candidate) => candidate.slug === slug);\n if (channel) {\n return { kind: \"channel\", channel };\n }\n const operation = doc.operations.find((candidate) => candidate.slug === slug);\n if (operation) {\n return { kind: \"operation\", operation };\n }\n const message = doc.messages.find((candidate) => candidate.slug === slug);\n return message ? { kind: \"message\", message } : null;\n}\n\n/** The operations on a channel. */\nexport function operationsOn(doc: WsDoc, channel: string): WsOperation[] {\n return doc.operations.filter((operation) => operation.channel === channel);\n}\n\n/** The channels carrying a message. */\nexport function channelsCarrying(doc: WsDoc, message: string): WsChannel[] {\n return doc.channels.filter((channel) => channel.messages.includes(message));\n}\n\n/** The operations sending, receiving or replying with a message. */\nexport function operationsUsing(doc: WsDoc, message: string): WsOperation[] {\n return doc.operations.filter(\n (operation) =>\n operation.messages.includes(message) ||\n (operation.reply?.messages.includes(message) ?? false),\n );\n}\n\n/** The permissions a channel's operations need, de-duplicated, in order. */\nexport function channelPermissions(doc: WsDoc, channel: string): string[] {\n return [\n ...new Set(\n operationsOn(doc, channel).flatMap((operation) =>\n operation.permission === undefined ? [] : [operation.permission],\n ),\n ),\n ];\n}\n\n/** The event types a channel carries (`completed`, ...), de-duplicated, in order. */\nexport function channelEventTypes(doc: WsDoc, channel: WsChannel): string[] {\n const types = channel.messages.flatMap((key) => {\n const message = doc.messages.find((candidate) => candidate.key === key);\n return message?.event ? [message.event.type] : [];\n });\n return [...new Set(types)];\n}\n\n/**\n * How an embedding app applies its own contract to the try-it machinery:\n * the jobs UI passes its name rule and job-id escaping; a standalone viewer\n * passes nothing (the document's own schemas decide, and values fill\n * unescaped).\n */\nexport interface WsAddressOptions {\n /**\n * Fallback validation for a parameter the document gives no\n * `<prefix>-schema`: why the value is refused, or `null` when it passes.\n * Default: anything passes.\n */\n nameRule?: (name: string, value: string) => string | null;\n /**\n * Friendlier refusal wordings for known schema patterns, by the pattern\n * string (bun-jobs words its contract's pattern). Default: `Must match\n * <pattern>.`\n */\n patternText?: Readonly<Record<string, string>>;\n /**\n * Escapes a value for a filled address (bun-jobs escapes job ids with its\n * contract's `encodeJobId`). Default: identity.\n */\n escapeValue?: (name: string, value: string) => string;\n}\n\n/** Compiles a JSON Schema `pattern` (ECMA-262, unicode), or `undefined` when it does not compile. */\nfunction compilePattern(pattern: string): RegExp | undefined {\n try {\n return new RegExp(pattern, \"u\");\n } catch {\n return undefined;\n }\n}\n\n/**\n * Why a value is refused by a parameter's `<prefix>-schema` (its `pattern`,\n * `minLength` and `maxLength`; lengths in code points, as JSON Schema counts\n * them), or `null` when it passes. A pattern that does not compile is skipped\n * rather than refusing everything.\n */\nfunction schemaProblem(\n schema: Json,\n value: string,\n options?: WsAddressOptions,\n): string | null {\n const length = [...value].length;\n const max = num(schema.maxLength);\n if (max !== undefined && length > max) {\n return `At most ${max} characters (this is ${length}).`;\n }\n const min = num(schema.minLength);\n if (min !== undefined && length < min) {\n return `At least ${min} characters.`;\n }\n const pattern = str(schema.pattern);\n const compiled = pattern === undefined ? undefined : compilePattern(pattern);\n if (compiled && !compiled.test(value)) {\n return (\n (pattern === undefined ? undefined : options?.patternText?.[pattern]) ??\n `Must match ${pattern}.`\n );\n }\n return null;\n}\n\n/**\n * Why a parameter value is refused, or `null` when it is fine (or empty).\n * The document's `<prefix>-schema` decides when it gives one; otherwise the\n * options' `nameRule` decides, when the embedding app has one.\n */\nexport function parameterProblem(\n name: string,\n value: string,\n schema?: Json,\n options?: WsAddressOptions,\n): string | null {\n if (value === \"\") {\n return null;\n }\n if (schema !== undefined) {\n return schemaProblem(schema, value, options);\n }\n return options?.nameRule?.(name, value) ?? null;\n}\n\n/** The parameters' schemas by name, for {@link fillAddress}. */\nexport function parameterSchemas(\n parameters: readonly WsParameter[],\n): Record<string, Json | undefined> {\n return Object.fromEntries(\n parameters.map((parameter) => [parameter.name, parameter.schema]),\n );\n}\n\n/**\n * An address template filled from parameter values: `queue/{queue}/job/{jobId}`\n * with each value escaped by the options' `escapeValue`. `null` while a value\n * is missing or refused by {@link parameterProblem} (under `schemas`, the\n * document's, when it gives them).\n */\nexport function fillAddress(\n address: string,\n values: Readonly<Record<string, string>>,\n schemas: Readonly<Record<string, Json | undefined>> = {},\n options?: WsAddressOptions,\n): string | null {\n let complete = true;\n const filled = address.replace(/\\{([^}]+)\\}/g, (_match, name: string) => {\n const value = values[name] ?? \"\";\n if (\n value === \"\" ||\n parameterProblem(name, value, schemas[name], options) !== null\n ) {\n complete = false;\n return \"\";\n }\n return options?.escapeValue?.(name, value) ?? value;\n });\n return complete ? filled : null;\n}\n\n/**\n * Why a channel's try-it cannot be opened yet: each empty or refused\n * parameter, in template order. Empty when it can.\n */\nexport function tryProblems(\n channel: WsChannel,\n values: Readonly<Record<string, string>>,\n options?: WsAddressOptions,\n): string[] {\n return channel.parameters.flatMap((parameter) => {\n const value = values[parameter.name] ?? \"\";\n if (value === \"\") {\n return [`${parameter.name}: fill it in.`];\n }\n const problem = parameterProblem(\n parameter.name,\n value,\n parameter.schema,\n options,\n );\n return problem === null ? [] : [`${parameter.name}: ${problem}`];\n });\n}\n\n/**\n * Whether a channel is something to subscribe to, and so has a try-it at\n * all: a logical channel name. The connection is the transport the others\n * travel over, and an address that is a socket path (`/...`) is not a\n * channel name either; neither gets a try-it, not even a disabled one.\n */\nexport function channelSubscribable(channel: WsChannel): boolean {\n return !channel.isConnection && !channel.address.startsWith(\"/\");\n}\n\n/**\n * An event message's highlighted part: the schema of `event.payload` inside\n * its envelope (resolving `$ref`s on the way), or `undefined`.\n */\nexport function eventPayloadSchema(\n payload: unknown,\n root: SpecDocument,\n): unknown {\n const deref = (value: unknown): unknown => {\n let current = value;\n for (let i = 0; i < 16 && isObject(current) && str(current.$ref); i++) {\n current = resolveRef(root, str(current.$ref)!);\n }\n return current;\n };\n const envelope = deref(payload);\n const event =\n isObject(envelope) && isObject(envelope.properties)\n ? deref(envelope.properties.event)\n : undefined;\n return isObject(event) && isObject(event.properties)\n ? event.properties.payload\n : undefined;\n}\n\n/**\n * An event example's `event.payload` (what the event says), or `undefined`\n * when the frame has none: the part of an event frame the pane shows first.\n */\nexport function exampleEventPayload(frame: unknown): unknown {\n const event = isObject(frame) ? frame.event : undefined;\n return isObject(event) ? event.payload : undefined;\n}\n",
|
|
83
|
+
"/** One shared integer formatter in the browser's locale. */\nconst integerFormat = new Intl.NumberFormat(undefined, {\n maximumFractionDigits: 0,\n});\n\n/** Formats a count, e.g. `12,345`. */\nexport function formatNumber(value: number): string {\n return integerFormat.format(value);\n}\n",
|
|
84
|
+
"import { formatNumber } from \"../../../format\";\n\n/**\n * How the limits panel reads each `<prefix>-limits` entry. A limit's unit is\n * read from its name's suffix (`…Bytes`, `…Ms`, `…PerSecond`); a viewer\n * embedding this reference can pass a {@link LimitInfo} per name for a label\n * and a meaning instead (the jobs UI does, for its own vocabulary).\n */\n\n/** A limit's unit. */\nexport type LimitUnit = \"bytes\" | \"ms\" | \"count\" | \"per-second\";\n\n/** How one limit reads. */\nexport interface LimitInfo {\n /** Its label. */\n label: string;\n /** What it means. */\n meaning: string;\n /** Its unit. */\n unit: LimitUnit;\n}\n\n/** A limit's unit from its name: `maxMessageBytes` → bytes, `heartbeatMs` → ms, `messagesPerSecond` → per-second, anything else a count. */\nexport function limitUnit(name: string): LimitUnit {\n if (/bytes$/i.test(name)) {\n return \"bytes\";\n }\n if (/ms$/i.test(name)) {\n return \"ms\";\n }\n if (/persecond$/i.test(name)) {\n return \"per-second\";\n }\n return \"count\";\n}\n\n/** `1,048,576 bytes (1 MiB)`. */\nexport function formatBytes(value: number): string {\n const units = [\"KiB\", \"MiB\", \"GiB\"];\n let scaled = value;\n let unit = \"\";\n for (const next of units) {\n if (scaled < 1024 || scaled % 1024 !== 0) {\n break;\n }\n scaled /= 1024;\n unit = next;\n }\n return unit === \"\"\n ? `${formatNumber(value)} bytes`\n : `${formatNumber(value)} bytes (${formatNumber(scaled)} ${unit})`;\n}\n\n/** `25,000 ms (25 s)`, `300,000 ms (5 min)`. */\nexport function formatMs(value: number): string {\n const plain = `${formatNumber(value)} ms`;\n if (value >= 60_000 && value % 60_000 === 0) {\n return `${plain} (${formatNumber(value / 60_000)} min)`;\n }\n if (value >= 1000 && value % 1000 === 0) {\n return `${plain} (${formatNumber(value / 1000)} s)`;\n }\n return plain;\n}\n\n/** A limit's value in its unit: `info`'s when given, else the name's suffix. */\nexport function formatLimit(\n name: string,\n value: number,\n info?: LimitInfo,\n): string {\n switch (info?.unit ?? limitUnit(name)) {\n case \"bytes\":\n return formatBytes(value);\n case \"ms\":\n return formatMs(value);\n case \"per-second\":\n return `${formatNumber(value)} / s`;\n default:\n return formatNumber(value);\n }\n}\n",
|
|
85
|
+
"/**\n * The WebSocket reference's panels read from the document's extensions and\n * header: the server and its security, `<prefix>-limits`,\n * `<prefix>-close-codes` and `<prefix>-upgrade-refusals`.\n */\nimport type { LimitInfo } from \"./format\";\nimport type { WsDoc, WsLimits } from \"./model\";\nimport { Badge } from \"../../../components/Badge\";\nimport { Card } from \"../../../components/Card\";\nimport { KeyValue } from \"../../../components/KeyValue\";\nimport { Table } from \"../../../components/Table\";\nimport { formatNumber } from \"../../../format\";\nimport { Prose } from \"../schema\";\nimport { formatLimit, formatMs } from \"./format\";\nimport { InlineText } from \"./InlineText\";\nimport { subprotocolSource } from \"./model\";\n\n/** The server: its URL, host, path, protocol and subprotocol. */\nexport function ServerPanel({ doc }: { doc: WsDoc }) {\n const { server, subprotocol } = doc;\n return (\n <Card title=\"Server\">\n {server === null ? (\n <p className=\"muted\">The document names no server.</p>\n ) : (\n <KeyValue\n items={[\n {\n label: \"URL\",\n value: server.url && (\n <code data-testid=\"ws-server-url\">{server.url}</code>\n ),\n },\n {\n label: \"Host\",\n value: <code>{server.host}</code>,\n hint: server.hostIsTemplate\n ? `A template: the document served over HTTP fills in the request's own host${server.hostDefault ? ` (default ${server.hostDefault})` : \"\"}.`\n : \"Taken from the request that fetched this document: the host you reached the API on.\",\n },\n {\n label: \"Path\",\n value: server.pathname && <code>{server.pathname}</code>,\n },\n {\n label: \"Protocol\",\n value: server.protocol && <code>{server.protocol}</code>,\n hint: \"wss when the API was reached over HTTPS.\",\n },\n {\n label: \"Subprotocol\",\n value:\n subprotocol.value === undefined ? (\n <span\n className=\"muted\"\n data-testid=\"ws-subprotocol\"\n >\n Not stated\n </span>\n ) : (\n <code data-testid=\"ws-subprotocol\">{subprotocol.value}</code>\n ),\n hint: (\n <>\n <span data-testid=\"ws-subprotocol-source\">\n {subprotocolSource(doc)}\n </span>\n {subprotocol.fromDocument\n ? \". Optional: offer it in Sec-WebSocket-Protocol, or offer none. Offering others without it may be refused.\"\n : \".\"}\n </>\n ),\n },\n server.description !== undefined && {\n label: \"About\",\n value: server.description,\n },\n ]}\n />\n )}\n </Card>\n );\n}\n\n/** Security: every requirement (any one suffices), and each scheme with what a browser cannot send. */\nexport function SecurityPanel({ doc }: { doc: WsDoc }) {\n const { requirements, securitySchemes, conjunctive } = doc;\n return (\n <Card title=\"Security\">\n <div data-testid=\"ws-security\">\n {requirements.length === 0 ? (\n <p className=\"muted\">\n No security schemes are declared. The host application decides, on\n the upgrade and on each subscription; a browser sends its cookies\n with the upgrade.\n </p>\n ) : (\n <>\n <p>\n {requirements.length === 1\n ? \"The connection must satisfy:\"\n : \"The connection must satisfy any one of:\"}\n </p>\n <ul\n className=\"ws-requirements\"\n aria-label=\"Security requirements\"\n >\n {requirements.map((requirement) => {\n const key = requirement\n .map((part) => `${part.scheme}:${part.scopes.join(\",\")}`)\n .join(\"+\");\n return (\n <li key={key}>\n {requirement.map((part, index) => (\n <span key={part.scheme}>\n {index > 0 && <strong> and </strong>}\n <code>{part.scheme}</code>\n {part.scopes.length > 0 && (\n <span className=\"muted\">\n {\" \"}\n (scopes: {part.scopes.join(\", \")})\n </span>\n )}\n </span>\n ))}\n </li>\n );\n })}\n </ul>\n {conjunctive && (\n <p\n className=\"ws-note\"\n data-testid=\"ws-security-conjunctive\"\n >\n AsyncAPI 3 can list only one scheme per requirement, so a\n requirement naming several is only in{\" \"}\n <code>\n {doc.extensionKeys.security ?? \"the security extension\"}\n </code>\n , which is what this list shows: every scheme within one\n requirement is needed together.\n </p>\n )}\n <Table label=\"Security schemes\">\n <thead>\n <tr>\n <th scope=\"col\">Scheme</th>\n <th scope=\"col\">Type</th>\n <th scope=\"col\">In a browser</th>\n </tr>\n </thead>\n <tbody>\n {securitySchemes.map((scheme) => (\n <tr\n key={scheme.name}\n data-testid={`ws-scheme-${scheme.name}`}\n >\n <td>\n <code>{scheme.name}</code>\n {scheme.description && (\n <div className=\"muted\">{scheme.description}</div>\n )}\n </td>\n <td>\n {scheme.type}\n {scheme.detail && (\n <div className=\"muted\">{scheme.detail}</div>\n )}\n </td>\n <td>\n {scheme.note ? (\n <span className=\"ws-note\">\n <InlineText text={scheme.note} />\n </span>\n ) : (\n <span className=\"muted\">Can be sent.</span>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </Table>\n </>\n )}\n </div>\n </Card>\n );\n}\n\n/** The replay setting in words. */\nfunction replayText(replay: WsLimits[\"replay\"]): string {\n if (replay === false) {\n return \"Off: a resume after a reconnect always reports a gap.\";\n }\n if (replay === undefined) {\n return \"Not stated.\";\n }\n const parts = [\n replay.size !== undefined && `the last ${formatNumber(replay.size)} events`,\n replay.maxAgeMs !== undefined && `at most ${formatMs(replay.maxAgeMs)} old`,\n ].filter(Boolean);\n return parts.length > 0 ? `Keeps ${parts.join(\", \")}.` : \"On.\";\n}\n\n/** `<prefix>-limits`: what a connection is held to. */\nexport function LimitsPanel({\n limits,\n extensionKey,\n limitsInfo,\n}: {\n /** The limits, read. */\n limits: WsLimits;\n /** The extension's full key (e.g. `x-bun-jobs-limits`), when one was read. */\n extensionKey?: string;\n /** Labels, meanings and units per limit name; the name's suffix decides the unit without one. */\n limitsInfo?: Readonly<Record<string, LimitInfo>>;\n}) {\n return (\n <Card title=\"Limits\">\n <p className=\"muted\">\n What one connection is held to\n {extensionKey === undefined ? (\n \"\"\n ) : (\n <>\n {\" \"}\n (<code>{extensionKey}</code>)\n </>\n )}\n .\n </p>\n <Table\n label=\"Limits\"\n className=\"ws-table\"\n >\n <thead>\n <tr>\n <th scope=\"col\">Limit</th>\n <th scope=\"col\">Value</th>\n <th scope=\"col\">Meaning</th>\n </tr>\n </thead>\n <tbody>\n {limits.values.map(([name, value]) => (\n <tr\n key={name}\n data-testid={`ws-limit-${name}`}\n >\n <td>\n {limitsInfo?.[name]?.label ?? name}\n <div className=\"muted\">\n <code>{name}</code>\n </div>\n </td>\n <td className=\"ws-value\">\n {formatLimit(name, value, limitsInfo?.[name])}\n </td>\n <td>{limitsInfo?.[name]?.meaning ?? \"\"}</td>\n </tr>\n ))}\n <tr data-testid=\"ws-limit-replay\">\n <td>\n Replay\n <div className=\"muted\">\n <code>replay</code>\n </div>\n </td>\n <td className=\"ws-value\">\n {limits.replay === false\n ? \"off\"\n : limits.replay === undefined\n ? \"—\"\n : [\n limits.replay.size !== undefined &&\n `size ${formatNumber(limits.replay.size)}`,\n limits.replay.maxAgeMs !== undefined &&\n `maxAgeMs ${formatMs(limits.replay.maxAgeMs)}`,\n ]\n .filter(Boolean)\n .join(\", \")}\n </td>\n <td>The events kept for a resume. {replayText(limits.replay)}</td>\n </tr>\n </tbody>\n </Table>\n </Card>\n );\n}\n\n/** `<prefix>-close-codes`: why an open connection is closed. */\nexport function CloseCodesPanel({ doc }: { doc: WsDoc }) {\n return (\n <Card title=\"Close codes\">\n <p className=\"muted\">\n How an open connection is closed\n {doc.extensionKeys.closeCodes === undefined ? (\n \"\"\n ) : (\n <>\n {\" \"}\n (<code>{doc.extensionKeys.closeCodes}</code>)\n </>\n )}\n .\n </p>\n <Table\n label=\"Close codes\"\n className=\"ws-table\"\n >\n <thead>\n <tr>\n <th scope=\"col\">Code</th>\n <th scope=\"col\">Name</th>\n <th scope=\"col\">When</th>\n </tr>\n </thead>\n <tbody>\n {doc.closeCodes.map((entry) => (\n <tr\n key={`${entry.code}-${entry.name}`}\n data-testid={`ws-close-${entry.code}`}\n >\n <td className=\"ws-value\">{entry.code}</td>\n <td>\n <code>{entry.name}</code>\n </td>\n <td>\n <InlineText text={entry.description} />\n </td>\n </tr>\n ))}\n </tbody>\n </Table>\n </Card>\n );\n}\n\n/** `<prefix>-upgrade-refusals`: how an upgrade is refused before a socket exists. */\nexport function RefusalsPanel({ doc }: { doc: WsDoc }) {\n return (\n <Card title=\"Upgrade refusals\">\n <p className=\"muted\">\n An upgrade can be refused before any socket exists, with an ordinary\n HTTP response whose body is a problem carrying <code>code</code>\n {doc.extensionKeys.upgradeRefusals === undefined ? (\n \"\"\n ) : (\n <>\n {\" \"}\n (<code>{doc.extensionKeys.upgradeRefusals}</code>)\n </>\n )}\n .\n </p>\n <p\n className=\"ws-note\"\n data-testid=\"ws-refusal-1006\"\n >\n A browser never sees these: its <code>WebSocket</code> exposes no status\n or body for a refused upgrade, only a close with code{\" \"}\n <strong>1006</strong> (abnormal closure). To tell them apart, make the\n same request over HTTP, or read the server's logs.\n </p>\n <Table\n label=\"Upgrade refusals\"\n className=\"ws-table\"\n >\n <thead>\n <tr>\n <th scope=\"col\">Status</th>\n <th scope=\"col\">Code</th>\n <th scope=\"col\">When</th>\n <th scope=\"col\">Content type</th>\n <th scope=\"col\">Headers</th>\n </tr>\n </thead>\n <tbody>\n {doc.refusals.map((entry) => (\n <tr\n key={`${entry.status}-${entry.code}`}\n data-testid={`ws-refusal-${entry.code}`}\n >\n <td className=\"ws-value\">\n <Badge tone={entry.status >= 500 ? \"danger\" : \"warning\"}>\n {entry.status}\n </Badge>\n </td>\n <td>\n <code>{entry.code}</code>\n </td>\n <td>\n <InlineText text={entry.description} />\n </td>\n <td>{entry.contentType && <code>{entry.contentType}</code>}</td>\n <td>\n {Object.keys(entry.headers).length === 0 ? (\n <span className=\"muted\">—</span>\n ) : (\n Object.entries(entry.headers).map(([name, value]) => (\n <div key={name}>\n <code>\n {name}: {value}\n </code>\n </div>\n ))\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </Table>\n </Card>\n );\n}\n\n/** The document's header: title, version and description. */\nexport function DocHeader({ doc }: { doc: WsDoc }) {\n return (\n <header className=\"ws-header\">\n <h1 className=\"screen-title\">\n {doc.title}{\" \"}\n {doc.version && (\n <Badge\n tone=\"neutral\"\n title=\"info.version\"\n >\n v{doc.version}\n </Badge>\n )}\n </h1>\n <p className=\"muted ws-kicker\">WebSocket API (AsyncAPI 3.0)</p>\n {doc.description && (\n <details className=\"ws-description\">\n <summary>About this socket</summary>\n <Prose text={doc.description} />\n </details>\n )}\n </header>\n );\n}\n",
|
|
86
|
+
"import type { SpecDocument } from \"../../../api/docs\";\nimport { SchemaTree } from \"../schema\";\n\n/** Props of {@link PayloadSchema}. */\nexport interface PayloadSchemaProps {\n /** The schema, as the document writes it (often a `$ref`). */\n schema: unknown;\n /** The whole document, for resolving `$ref`s. */\n root: SpecDocument;\n /** The tree's accessible name. */\n label: string;\n /** Levels open at first. Defaults to 2. */\n depth?: number;\n}\n\n/**\n * A message's payload schema, `$ref`s resolved, drawn by the docs' shared\n * schema tree. The one place the WebSocket reference renders a schema.\n */\nexport function PayloadSchema({\n schema,\n root,\n label,\n depth = 2,\n}: PayloadSchemaProps) {\n return (\n <div\n className=\"ws-schema\"\n data-testid=\"ws-schema\"\n >\n <SchemaTree\n schema={schema}\n root={root}\n depth={depth}\n label={label}\n />\n </div>\n );\n}\n",
|
|
87
|
+
"/**\n * The WebSocket reference's main pane for one item: a channel (with its\n * try-it when a console is given), an operation, or a message (with its\n * payload and, for an event, its try-it).\n *\n * The try-it deep-links a console the host app injects as {@link WsConsole}\n * (the jobs UI passes its Events console); a standalone viewer passes none\n * and no try-it renders.\n */\nimport type { ReactNode } from \"react\";\nimport type { SpecDocument } from \"../../../api/docs\";\nimport type { PermissionProbe } from \"../permissions\";\nimport type { LimitInfo } from \"./format\";\nimport type {\n WsAddressOptions,\n WsChannel,\n WsDoc,\n WsMessage,\n WsOperation,\n} from \"./model\";\nimport { useState } from \"react\";\nimport { Badge } from \"../../../components/Badge\";\nimport { Card } from \"../../../components/Card\";\nimport { CopyButton } from \"../../../components/CopyButton\";\nimport { Field } from \"../../../components/Field\";\nimport { TextInput } from \"../../../components/inputs\";\nimport { JsonView } from \"../../../components/JsonView\";\nimport { KeyValue } from \"../../../components/KeyValue\";\nimport { Table } from \"../../../components/Table\";\nimport { Link } from \"../../../router\";\nimport { Prose, SchemaTree } from \"../schema\";\nimport { InlineText } from \"./InlineText\";\nimport {\n channelEventTypes,\n channelPermissions,\n channelsCarrying,\n channelSubscribable,\n eventPayloadSchema,\n exampleEventPayload,\n fillAddress,\n itemPath,\n operationsOn,\n operationsUsing,\n parameterProblem,\n parameterSchemas,\n tryProblems,\n} from \"./model\";\nimport { CloseCodesPanel, LimitsPanel, RefusalsPanel } from \"./panels\";\nimport { PayloadSchema } from \"./PayloadSchema\";\n\n/**\n * A console the try-it cards deep-link (the jobs UI's Events console). The\n * link builders answer `null` when the console cannot open what was asked.\n */\nexport interface WsConsole {\n /** Whether the console can be opened at all. */\n available: boolean;\n /** Its name in the UI copy (\"Events console\"). */\n label: string;\n /** Why it cannot be opened, shown when `available` is false. Defaults to a generic sentence. */\n unavailableReason?: ReactNode;\n /** Why a filled channel still cannot open, when the link builder said no. Defaults to a generic sentence. */\n noChannelReason?: (channel: string) => ReactNode;\n /** The link subscribing the console to `channel`, filtered to `types` (`[]` would be all of them). */\n channelLink: (channel: string, types: readonly string[]) => string | null;\n /** The link opening the console on an event message's channel, filtered to its type. */\n messageLink: (message: WsMessage, doc: WsDoc) => string | null;\n}\n\n/** Options of the panes, threaded from {@link WsReference}. */\nexport interface WsPaneOptions {\n /** The console the try-it cards open, when the host has one. */\n console?: WsConsole;\n /** Answers \"does the caller hold this permission\" (the have/lack markers). */\n probe?: PermissionProbe;\n /** The host's contract for the try-it's address fields. */\n address?: WsAddressOptions;\n /** The docs section's path within the host app (\"\" for a standalone viewer). */\n pathBase?: string;\n}\n\n/** A permission with a have/lack marker when a probe is given, plain otherwise. */\nexport function PermissionMarker({\n action,\n probe,\n}: {\n action: string;\n probe?: PermissionProbe;\n}) {\n if (probe === undefined) {\n return (\n <span\n className=\"ws-permission\"\n data-testid={`ws-permission-${action}`}\n >\n <code>{action}</code> <Badge tone=\"neutral\">permission</Badge>\n </span>\n );\n }\n const held = probe(action);\n return (\n <span\n className=\"ws-permission\"\n data-testid={`ws-permission-${action}`}\n data-has={held === undefined ? \"unknown\" : String(held)}\n >\n <code>{action}</code>{\" \"}\n {held === undefined ? (\n <Badge tone=\"neutral\">Not an action this UI knows</Badge>\n ) : (\n <Badge tone={held ? \"success\" : \"danger\"}>\n {held ? \"You have this\" : \"You lack this\"}\n </Badge>\n )}\n </span>\n );\n}\n\n/** Links to items by slug. */\nfunction ItemLinks({\n items,\n pathBase = \"\",\n empty = \"None.\",\n}: {\n items: readonly {\n /** The item's slug. */\n slug: string;\n /** Its label. */\n label: string;\n }[];\n /** The docs section's path within the host app. */\n pathBase?: string;\n empty?: string;\n}) {\n if (items.length === 0) {\n return <span className=\"muted\">{empty}</span>;\n }\n return (\n <ul className=\"ws-links\">\n {items.map((item) => (\n <li key={item.slug}>\n <Link to={itemPath(item.slug, \"\", pathBase)}>\n <code>{item.label}</code>\n </Link>\n </li>\n ))}\n </ul>\n );\n}\n\n/** Why \"try it\" is not offered, when the console is not available. */\nfunction ConsoleUnavailable({ console: target }: { console: WsConsole }) {\n return (\n <p\n className=\"muted\"\n data-testid=\"ws-try-unavailable\"\n >\n {target.unavailableReason ?? (\n <>The {target.label} is not available here.</>\n )}\n </p>\n );\n}\n\n/** Props of {@link ChannelTryIt}. */\ninterface ChannelTryItProps {\n /** The document. */\n doc: WsDoc;\n /** The channel family. */\n channel: WsChannel;\n /** The console to open. */\n console: WsConsole;\n /** The host's contract for the address fields. */\n address?: WsAddressOptions;\n}\n\n/** Try a channel: fill its address, then open the console subscribed to it. */\nfunction ChannelTryIt({\n doc,\n channel,\n console: target,\n address,\n}: ChannelTryItProps) {\n const [values, setValues] = useState<Record<string, string>>({});\n if (!target.available) {\n return (\n <Card title=\"Try it\">\n <ConsoleUnavailable console={target} />\n </Card>\n );\n }\n const filled = fillAddress(\n channel.address,\n values,\n parameterSchemas(channel.parameters),\n address,\n );\n const types = channelEventTypes(doc, channel);\n const link = filled === null ? null : target.channelLink(filled, types);\n const problems = tryProblems(channel, values, address);\n return (\n <Card title=\"Try it\">\n <div\n className=\"ws-try\"\n data-testid=\"ws-try-channel\"\n >\n <p className=\"muted\">\n Opens the {target.label} subscribed to this channel\n {types.length > 0\n ? `, showing the ${types.length} event types it carries`\n : \"\"}\n .\n </p>\n {channel.parameters.length > 0 && (\n <div className=\"ws-try-fields\">\n {channel.parameters.map((parameter) => {\n const value = values[parameter.name] ?? \"\";\n const problem = parameterProblem(\n parameter.name,\n value,\n parameter.schema,\n address,\n );\n return (\n <Field\n key={parameter.name}\n label={parameter.name}\n hint={\n parameter.description && (\n <InlineText text={parameter.description} />\n )\n }\n error={problem}\n >\n <TextInput\n value={value}\n onChange={(next) =>\n setValues((current) => ({\n ...current,\n [parameter.name]: next,\n }))\n }\n autoComplete=\"off\"\n spellCheck={false}\n />\n </Field>\n );\n })}\n </div>\n )}\n <p className=\"ws-try-channel\">\n Channel:{\" \"}\n {filled === null ? (\n <span className=\"muted\">fill in every parameter</span>\n ) : (\n <code data-testid=\"ws-try-address\">{filled}</code>\n )}\n </p>\n {link === null ? (\n <>\n <span\n className=\"btn btn-primary ws-disabled\"\n aria-disabled=\"true\"\n aria-describedby={`ws-try-reason-${channel.key}`}\n data-testid=\"ws-try-disabled\"\n >\n Open in the {target.label}\n </span>\n <ul\n className=\"ws-try-reason muted\"\n id={`ws-try-reason-${channel.key}`}\n data-testid=\"ws-try-reason\"\n >\n {problems.length > 0 ? (\n problems.map((problem) => <li key={problem}>{problem}</li>)\n ) : (\n <li>\n {target.noChannelReason?.(filled ?? channel.address) ?? (\n <>\n The {target.label} cannot open{\" \"}\n <code>{filled ?? channel.address}</code>.\n </>\n )}\n </li>\n )}\n </ul>\n </>\n ) : (\n <Link\n to={link}\n className=\"btn btn-primary\"\n data-testid=\"ws-try-link\"\n >\n Open in the {target.label}\n </Link>\n )}\n </div>\n </Card>\n );\n}\n\n/** Props of {@link ChannelPane}. */\ninterface ChannelPaneProps extends WsPaneOptions {\n /** The document, read. */\n doc: WsDoc;\n /** The raw document, for `$ref`s in parameter schemas. */\n root: SpecDocument;\n /** The channel. */\n channel: WsChannel;\n /** Labels and meanings for the limits, when the embedding viewer knows them. */\n limitsInfo?: Readonly<Record<string, LimitInfo>>;\n}\n\n/** A channel: address, parameters, operations, messages, permission and try-it. */\nexport function ChannelPane({\n doc,\n root,\n channel,\n limitsInfo,\n console: target,\n probe,\n address,\n pathBase,\n}: ChannelPaneProps) {\n const operations = operationsOn(doc, channel.key);\n const permissions = channelPermissions(doc, channel.key);\n const messages = channel.messages.map((key) => {\n const message = doc.messages.find((candidate) => candidate.key === key);\n return { slug: message?.slug ?? `message-${key}`, label: key };\n });\n return (\n <div\n className=\"ws-pane\"\n data-testid={`ws-pane-${channel.slug}`}\n >\n <Card\n title={\n <>\n {channel.title} <Badge tone=\"info\">channel</Badge>\n </>\n }\n >\n <KeyValue\n items={[\n {\n label: channel.isConnection ? \"Path\" : \"Address\",\n value: (\n <code data-testid=\"ws-channel-address\">{channel.address}</code>\n ),\n hint: channel.isConnection\n ? \"The socket itself: control messages travel here.\"\n : \"A logical channel: subscribe with this name over the connection.\",\n },\n channel.bindingMethod !== undefined && {\n label: \"Upgrade\",\n value: <code>{channel.bindingMethod}</code>,\n },\n permissions.length > 0 && {\n label: permissions.length === 1 ? \"Permission\" : \"Permissions\",\n value: (\n <span className=\"ws-permissions\">\n {permissions.map((action) => (\n <PermissionMarker\n key={action}\n action={action}\n probe={probe}\n />\n ))}\n </span>\n ),\n },\n ]}\n />\n {channel.description && <Prose text={channel.description} />}\n </Card>\n {channel.parameters.length > 0 && (\n <Card title=\"Parameters\">\n <Table label=\"Parameters\">\n <thead>\n <tr>\n <th scope=\"col\">Name</th>\n <th scope=\"col\">Description</th>\n <th scope=\"col\">Value</th>\n </tr>\n </thead>\n <tbody>\n {channel.parameters.map((parameter) => (\n <tr key={parameter.name}>\n <td>\n <code>{`{${parameter.name}}`}</code>\n </td>\n <td>\n {parameter.description && (\n <InlineText text={parameter.description} />\n )}\n </td>\n <td data-testid={`ws-parameter-schema-${parameter.name}`}>\n {parameter.schema ? (\n <SchemaTree\n schema={parameter.schema}\n root={root}\n label={`Schema of {${parameter.name}}`}\n />\n ) : (\n <span className=\"muted\">Any string</span>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </Table>\n </Card>\n )}\n <Card title=\"Operations\">\n <ItemLinks\n items={operations.map((operation) => ({\n slug: operation.slug,\n label: `${operation.action ?? \"?\"} ${operation.key}`,\n }))}\n pathBase={pathBase}\n />\n </Card>\n <Card title={`Messages (${messages.length})`}>\n <ItemLinks\n items={messages}\n pathBase={pathBase}\n />\n </Card>\n {/* Only a channel there is something to subscribe to, and only with a console: the connection has no try-it. */}\n {target !== undefined && channelSubscribable(channel) && (\n <ChannelTryIt\n key={channel.key}\n doc={doc}\n channel={channel}\n console={target}\n address={address}\n />\n )}\n {channel.isConnection && doc.limits && (\n <LimitsPanel\n limits={doc.limits}\n extensionKey={doc.extensionKeys.limits}\n limitsInfo={limitsInfo}\n />\n )}\n {channel.isConnection && doc.closeCodes.length > 0 && (\n <CloseCodesPanel doc={doc} />\n )}\n {channel.isConnection && doc.refusals.length > 0 && (\n <RefusalsPanel doc={doc} />\n )}\n </div>\n );\n}\n\n/** Message links for ids, labelled by id. */\nfunction messageLinks(doc: WsDoc, ids: readonly string[]) {\n return ids.map((key) => ({\n slug:\n doc.messages.find((message) => message.key === key)?.slug ??\n `message-${key}`,\n label: key,\n }));\n}\n\n/** An operation: direction, channel, messages, reply and permission. */\nexport function OperationPane({\n doc,\n operation,\n probe,\n pathBase,\n}: WsPaneOptions & {\n doc: WsDoc;\n operation: WsOperation;\n}) {\n const channel = doc.channels.find(\n (candidate) => candidate.key === operation.channel,\n );\n const replyChannel = doc.channels.find(\n (candidate) => candidate.key === operation.reply?.channel,\n );\n return (\n <div\n className=\"ws-pane\"\n data-testid={`ws-pane-${operation.slug}`}\n >\n <Card\n title={\n <>\n {operation.title} <Badge tone=\"accent\">operation</Badge>\n </>\n }\n >\n <KeyValue\n items={[\n {\n label: \"Direction\",\n value: operation.action && (\n <span data-testid=\"ws-operation-action\">\n <Badge\n tone={operation.action === \"send\" ? \"info\" : \"success\"}\n >\n {operation.action}\n </Badge>{\" \"}\n {operation.action === \"send\"\n ? \"client → server\"\n : \"server → client\"}\n </span>\n ),\n },\n {\n label: \"Channel\",\n value: channel && (\n <Link to={itemPath(channel.slug, \"\", pathBase)}>\n <code>{channel.address}</code>\n </Link>\n ),\n },\n operation.permission !== undefined && {\n label: \"Permission\",\n value: (\n <PermissionMarker\n action={operation.permission}\n probe={probe}\n />\n ),\n },\n operation.summary !== undefined && {\n label: \"Summary\",\n value: <InlineText text={operation.summary} />,\n },\n ]}\n />\n </Card>\n <Card title={operation.action === \"send\" ? \"Sends\" : \"Receives\"}>\n <ItemLinks\n items={messageLinks(doc, operation.messages)}\n pathBase={pathBase}\n />\n </Card>\n {operation.reply && (\n <Card title=\"Reply\">\n <div data-testid=\"ws-operation-reply\">\n <p className=\"muted\">\n The server answers on{\" \"}\n {replyChannel ? (\n <Link to={itemPath(replyChannel.slug, \"\", pathBase)}>\n <code>{replyChannel.address}</code>\n </Link>\n ) : (\n <code>{operation.reply.channel ?? \"?\"}</code>\n )}{\" \"}\n with one of:\n </p>\n <ItemLinks\n items={messageLinks(doc, operation.reply.messages)}\n pathBase={pathBase}\n />\n </div>\n </Card>\n )}\n </div>\n );\n}\n\n/** Props of {@link MessagePane}. */\ninterface MessagePaneProps extends WsPaneOptions {\n /** The document, read. */\n doc: WsDoc;\n /** The raw document, for `$ref`s. */\n root: SpecDocument;\n /** The message. */\n message: WsMessage;\n}\n\n/** A message: name, summary, where it travels, its payload schema, examples and (for an event) try-it. */\nexport function MessagePane({\n doc,\n root,\n message,\n console: target,\n pathBase,\n}: MessagePaneProps) {\n const channels = channelsCarrying(doc, message.key);\n const operations = operationsUsing(doc, message.key);\n const eventPayload = message.event\n ? eventPayloadSchema(message.payload, root)\n : undefined;\n const link =\n target !== undefined && message.event !== null\n ? target.messageLink(message, doc)\n : null;\n return (\n <div\n className=\"ws-pane\"\n data-testid={`ws-pane-${message.slug}`}\n >\n <Card\n title={\n <>\n {message.title ?? message.name}{\" \"}\n <Badge tone={message.event ? \"success\" : \"neutral\"}>\n {message.event\n ? `${message.event.kind} event`\n : \"control message\"}\n </Badge>\n </>\n }\n >\n <KeyValue\n items={[\n {\n label: \"Name\",\n value: <code data-testid=\"ws-message-name\">{message.name}</code>,\n },\n message.summary !== undefined && {\n label: \"Summary\",\n value: <InlineText text={message.summary} />,\n },\n message.contentType !== undefined && {\n label: \"Content type\",\n value: <code>{message.contentType}</code>,\n },\n {\n label: \"Channels\",\n value: (\n <ItemLinks\n items={channels.map((channel) => ({\n slug: channel.slug,\n label: channel.address,\n }))}\n pathBase={pathBase}\n />\n ),\n },\n {\n label: \"Operations\",\n value: (\n <ItemLinks\n items={operations.map((operation) => ({\n slug: operation.slug,\n label: operation.key,\n }))}\n pathBase={pathBase}\n />\n ),\n },\n ]}\n />\n </Card>\n {message.event && eventPayload !== undefined && (\n <Card\n title=\"Event payload\"\n className=\"ws-highlight\"\n >\n <p className=\"muted\">\n <code>event.payload</code>: what this {message.event.kind} event\n says. It arrives inside the envelope below.\n </p>\n <div data-testid=\"ws-event-payload\">\n <PayloadSchema\n schema={eventPayload}\n root={root}\n label={`Payload of ${message.name}`}\n />\n </div>\n </Card>\n )}\n <Card title={message.event ? \"Full envelope\" : \"Payload\"}>\n <div data-testid=\"ws-message-payload\">\n <PayloadSchema\n schema={message.payload}\n root={root}\n label={`Schema of ${message.name}`}\n depth={message.event ? 1 : 2}\n />\n </div>\n </Card>\n {message.examples.length > 0 && (\n <Card title={message.examples.length === 1 ? \"Example\" : \"Examples\"}>\n {message.examples.map((example, index) => (\n <MessageExample\n // eslint-disable-next-line react/no-array-index-key -- the document's examples, in its order\n key={index}\n example={example}\n index={index}\n isEvent={message.event !== null}\n />\n ))}\n </Card>\n )}\n {message.event && target !== undefined && (\n <Card title=\"Try it\">\n {!target.available ? (\n <ConsoleUnavailable console={target} />\n ) : link === null ? (\n <p className=\"muted\">No channel in this document carries it.</p>\n ) : (\n <div className=\"ws-try\">\n <p className=\"muted\">\n Opens the {target.label} on every {message.event.kind}, showing\n only <code>{message.event.type}</code> events.\n </p>\n <Link\n to={link}\n className=\"btn btn-primary\"\n data-testid=\"ws-try-link\"\n >\n Watch {message.event.type} events\n </Link>\n </div>\n )}\n </Card>\n )}\n </div>\n );\n}\n\n/** Props of {@link MessageExample}. */\ninterface MessageExampleProps {\n /** The example, as the document gives it. */\n example: WsMessage[\"examples\"][number];\n /** Its position, naming it when it has no name. */\n index: number;\n /** Whether the message is an event frame (so its `event.payload` is shown first). */\n isEvent: boolean;\n}\n\n/**\n * One message example: its name and summary, then the frame. For an event,\n * the frame's `event.payload` (what the event says) comes first, open and\n * highlighted, and the whole frame below it; the copy button copies the\n * whole frame, exactly as it travels.\n */\nfunction MessageExample({ example, index, isEvent }: MessageExampleProps) {\n const name = example.name ?? `Example ${index + 1}`;\n const eventPayload = isEvent\n ? exampleEventPayload(example.payload)\n : undefined;\n return (\n <div\n className=\"ws-example\"\n data-testid=\"ws-example\"\n >\n <div className=\"ws-example-head\">\n <strong data-testid=\"ws-example-name\">{name}</strong>\n <CopyButton\n text={() => JSON.stringify(example.payload, null, 2)}\n label=\"Copy JSON\"\n ariaLabel={`Copy example ${name} as JSON`}\n />\n </div>\n {example.summary && (\n <p\n className=\"muted\"\n data-testid=\"ws-example-summary\"\n >\n <InlineText text={example.summary} />\n </p>\n )}\n {eventPayload !== undefined && (\n <div\n className=\"ws-example-event ws-highlight\"\n data-testid=\"ws-example-event-payload\"\n >\n <p className=\"muted\">\n <code>event.payload</code>\n </p>\n <JsonView\n value={eventPayload}\n label={`event.payload of ${name}`}\n expandDepth={4}\n />\n </div>\n )}\n <div data-testid=\"ws-example-frame\">\n {eventPayload !== undefined && <p className=\"muted\">The whole frame</p>}\n <JsonView\n value={example.payload}\n label={`Example ${name}`}\n expandDepth={eventPayload !== undefined ? 1 : 2}\n />\n </div>\n </div>\n );\n}\n",
|
|
88
|
+
"/**\n * The WebSocket API reference (AsyncAPI 3.0): `/ws` and `/ws/:item` under the\n * mount. The document is loaded by the viewer (`../viewer.tsx`); the pure\n * reading of it is in `model.ts`, the per-item panes in `items.tsx`, the\n * extension panels in `panels.tsx`.\n */\nimport type { KeyboardEvent } from \"react\";\nimport type { SpecDocument } from \"../../../api/docs\";\nimport type { PermissionProbe } from \"../permissions\";\nimport type { LimitInfo } from \"./format\";\nimport type { WsConsole, WsPaneOptions } from \"./items\";\nimport type { WsAddressOptions, WsNavGroup } from \"./model\";\nimport { useMemo, useRef } from \"react\";\nimport { EmptyState } from \"../../../components/EmptyState\";\nimport { Field } from \"../../../components/Field\";\nimport { TextInput } from \"../../../components/inputs\";\nimport { arrowTarget } from \"../../../components/listKeys\";\nimport { Link } from \"../../../router\";\nimport { useParams, useQueryParam } from \"../../../routing\";\nimport { SEARCH_SHORTCUT } from \"../../../shortcuts\";\nimport { ChannelPane, MessagePane, OperationPane } from \"./items\";\nimport {\n filterGroups,\n itemPath,\n navGroups,\n readWsDoc,\n selectItem,\n} from \"./model\";\nimport {\n CloseCodesPanel,\n DocHeader,\n LimitsPanel,\n RefusalsPanel,\n SecurityPanel,\n ServerPanel,\n} from \"./panels\";\nimport \"./ws.css\";\n\n/** Props of {@link WsSidebar}. */\ninterface WsSidebarProps {\n /** The groups, before searching. */\n groups: readonly WsNavGroup[];\n /** The selected slug. */\n selected: string;\n /** The search (`?q=`). */\n query: string;\n /** Sets the search. */\n onQuery: (query: string) => void;\n /** The docs section's path within the host app (\"\" for a standalone viewer). */\n pathBase: string;\n}\n\n/** The sidebar: a search box, then the connection's panels, channels, operations and messages. */\nfunction WsSidebar({\n groups,\n selected,\n query,\n onQuery,\n pathBase,\n}: WsSidebarProps) {\n const shown = filterGroups(groups, query);\n const navRef = useRef<HTMLElement>(null);\n const links = () =>\n Array.from(\n navRef.current?.querySelectorAll<HTMLAnchorElement>(\"a.ws-nav-link\") ??\n [],\n );\n // Arrow keys move between the links (Home/End to the ends), and ArrowDown\n // from the search goes to the first; each link stays a Tab stop too.\n const onListKey = (event: KeyboardEvent<HTMLDivElement>) => {\n const target = arrowTarget(event.key, links(), document.activeElement);\n if (target) {\n event.preventDefault();\n target.focus();\n }\n };\n return (\n <nav\n ref={navRef}\n className=\"ws-sidebar\"\n aria-label=\"WebSocket reference\"\n >\n <Field label=\"Search\">\n <TextInput\n type=\"search\"\n value={query}\n onChange={onQuery}\n onKeyDown={(event) => {\n const first = links()[0];\n if (event.key === \"ArrowDown\" && first) {\n event.preventDefault();\n first.focus();\n }\n }}\n placeholder=\"Channel, message, code…\"\n {...SEARCH_SHORTCUT}\n autoComplete=\"off\"\n spellCheck={false}\n />\n </Field>\n {shown.length === 0 && (\n <p\n className=\"muted\"\n data-testid=\"ws-search-empty\"\n >\n Nothing matches “{query}”.\n </p>\n )}\n <div\n className=\"ws-sidebar-list\"\n onKeyDown={onListKey}\n >\n {shown.map((group) => (\n <section\n key={group.title}\n className=\"ws-group\"\n data-testid={`ws-group-${group.title}`}\n >\n <h2 className=\"ws-group-title\">{group.title}</h2>\n <ul>\n {group.items.map((item) => (\n <li key={item.slug}>\n <Link\n to={itemPath(item.slug, query, pathBase)}\n className=\"ws-nav-link\"\n activeMatch=\"exact\"\n data-selected={item.slug === selected ? \"true\" : undefined}\n data-testid={`ws-nav-${item.slug}`}\n >\n <span className=\"ws-nav-label\">{item.label}</span>\n {item.hint && (\n <span className=\"ws-nav-hint\">{item.hint}</span>\n )}\n </Link>\n </li>\n ))}\n </ul>\n </section>\n ))}\n </div>\n </nav>\n );\n}\n\n/** Props of {@link WsReference}. */\nexport interface WsReferenceProps {\n /** The AsyncAPI document. */\n document: SpecDocument;\n /** The extension prefixes to read; defaults to the configured ones. */\n extensions?: readonly string[];\n /** The subprotocol shown when the document states none. */\n defaultSubprotocol?: string;\n /** Labels and meanings for the limits, when the embedding viewer knows them. */\n limitsInfo?: Readonly<Record<string, LimitInfo>>;\n /** The console the try-it cards open (the jobs UI's Events console), when the host has one. */\n console?: WsConsole;\n /** Answers \"does the caller hold this permission\" (the have/lack markers). */\n probe?: PermissionProbe;\n /** The host's contract for the try-it's address fields. */\n address?: WsAddressOptions;\n /** The docs section's path within the host app (\"\" for a standalone viewer). */\n pathBase?: string;\n}\n\n/** The reference for a loaded document. */\nexport function WsReference({\n document: spec,\n extensions,\n defaultSubprotocol,\n limitsInfo,\n console: consoleOptions,\n probe,\n address,\n pathBase = \"\",\n}: WsReferenceProps) {\n const paneOptions: WsPaneOptions = {\n console: consoleOptions,\n probe,\n address,\n pathBase,\n };\n const doc = useMemo(\n () => readWsDoc(spec, { extensions, defaultSubprotocol }),\n [spec, extensions, defaultSubprotocol],\n );\n const groups = useMemo(() => navGroups(doc), [doc]);\n const { item } = useParams<{ item?: string }>();\n const [query, setQuery] = useQueryParam(\"q\");\n\n const connection = doc.channels.find((channel) => channel.isConnection);\n const slug = item ?? connection?.slug ?? doc.channels[0]?.slug ?? \"\";\n const selection = selectItem(doc, slug);\n\n let pane;\n if (selection === null) {\n pane = (\n <EmptyState\n title=\"No such item\"\n description={\n <>\n This document has nothing called <code>{slug}</code>.{\" \"}\n <Link to={`${pathBase}/ws`}>Back to the connection</Link>.\n </>\n }\n />\n );\n } else {\n switch (selection.kind) {\n case \"channel\":\n pane = (\n <ChannelPane\n doc={doc}\n root={spec}\n channel={selection.channel}\n limitsInfo={limitsInfo}\n {...paneOptions}\n />\n );\n break;\n case \"operation\":\n pane = (\n <OperationPane\n doc={doc}\n operation={selection.operation}\n {...paneOptions}\n />\n );\n break;\n case \"message\":\n pane = (\n <MessagePane\n doc={doc}\n root={spec}\n message={selection.message}\n {...paneOptions}\n />\n );\n break;\n case \"limits\":\n pane = doc.limits && (\n <LimitsPanel\n limits={doc.limits}\n extensionKey={doc.extensionKeys.limits}\n limitsInfo={limitsInfo}\n />\n );\n break;\n case \"close-codes\":\n pane = <CloseCodesPanel doc={doc} />;\n break;\n case \"upgrade-refusals\":\n pane = <RefusalsPanel doc={doc} />;\n break;\n }\n }\n\n return (\n <div\n className=\"screen ws-docs\"\n data-testid=\"ws-docs\"\n >\n <DocHeader doc={doc} />\n <div className=\"ws-overview\">\n <ServerPanel doc={doc} />\n <SecurityPanel doc={doc} />\n </div>\n <div className=\"ws-layout\">\n <WsSidebar\n groups={groups}\n selected={selection ? slug : \"\"}\n query={query}\n onQuery={setQuery}\n pathBase={pathBase}\n />\n <section\n className=\"ws-main\"\n aria-label=\"Selected item\"\n data-testid=\"ws-main\"\n data-selected={selection ? slug : \"\"}\n >\n {pane}\n </section>\n </div>\n </div>\n );\n}\n",
|
|
89
|
+
"/**\n * The viewer: loads the one document the mount is configured with\n * (`config.documentUrl`), reads from it whether it is an OpenAPI 3.1 or an\n * AsyncAPI 3.0 document, and routes to the matching reference — `/http[…]`\n * or `/ws[…]`, with `/` redirecting to it.\n */\nimport type { ReactNode } from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { useMemo } from \"react\";\nimport { createDocsClient } from \"../../api/client\";\nimport { documentKind, docsKeys, getDocument } from \"../../api/docs\";\nimport { Card } from \"../../components/Card\";\nimport { EmptyState } from \"../../components/EmptyState\";\nimport { ErrorView } from \"../../components/ErrorView\";\nimport { Spinner } from \"../../components/Spinner\";\nimport { useDocsFetch, useDocsUiConfig } from \"../../context\";\nimport { Navigate, Link, Routes } from \"../../router\";\nimport type { RouteDef } from \"../../routing\";\nimport { DocumentContext, useDocument } from \"./document\";\nimport { HttpReference } from \"./http\";\nimport { WsReference } from \"./ws\";\n\nexport type { LoadedDocument } from \"./document\";\n\n/** `/http[…]` for an OpenAPI document; anything else is told there is none. */\nfunction HttpRoute() {\n const { doc, kind } = useDocument();\n if (kind !== \"openapi\") {\n return (\n <div className=\"screen\">\n <EmptyState\n headingLevel={1}\n title=\"No HTTP documentation\"\n description=\"This document is not an OpenAPI document.\"\n />\n </div>\n );\n }\n return <HttpReference doc={doc} />;\n}\n\n/** `/ws[…]` for an AsyncAPI document; anything else is told there is none. */\nfunction WsRoute() {\n const { doc, kind } = useDocument();\n if (kind !== \"asyncapi\") {\n return (\n <div className=\"screen\">\n <EmptyState\n headingLevel={1}\n title=\"No WebSocket documentation\"\n description=\"This document is not an AsyncAPI document.\"\n />\n </div>\n );\n }\n return <WsReference document={doc} />;\n}\n\n/** `/`: straight to the one reference this viewer has. */\nfunction Home() {\n const { kind } = useDocument();\n return <Navigate to={kind === \"asyncapi\" ? \"/ws\" : \"/http\"} />;\n}\n\n/** The route table: the reference's own pages under the mount. */\nconst ROUTES: readonly RouteDef[] = [\n { path: \"/\", element: <Home /> },\n { path: \"/http\", element: <HttpRoute /> },\n { path: \"/http/:operationId\", element: <HttpRoute /> },\n { path: \"/ws\", element: <WsRoute /> },\n { path: \"/ws/:item\", element: <WsRoute /> },\n];\n\n/** The viewer, once the document has loaded. */\nexport function DocsViewer({ children }: { children?: ReactNode }) {\n const config = useDocsUiConfig();\n const fetcher = useDocsFetch();\n // The document URL is absolute or same-origin; the client sends it as it is.\n const client = useMemo(\n () =>\n createDocsClient({\n base: \"\",\n csrfHeader: config.csrfHeader,\n fetch: fetcher,\n }),\n [config.csrfHeader, fetcher],\n );\n const spec = useQuery({\n queryKey: docsKeys.document(config.documentUrl),\n queryFn: ({ signal }) => getDocument(client, config.documentUrl, signal),\n staleTime: Infinity,\n });\n\n if (spec.isPending) {\n return (\n <div className=\"screen\">\n <Spinner\n label=\"Loading the API document\"\n showLabel\n />\n </div>\n );\n }\n if (spec.isError) {\n return (\n <div className=\"screen\">\n <ErrorView\n headingLevel={1}\n error={spec.error}\n title=\"Could not load the API document\"\n onRetry={() => void spec.refetch()}\n />\n </div>\n );\n }\n const kind = documentKind(spec.data);\n if (kind === null) {\n return (\n <div className=\"screen\">\n <EmptyState\n headingLevel={1}\n title=\"Not a document this viewer can show\"\n description=\"The document carries neither an `openapi` nor an `asyncapi` field. This viewer shows an OpenAPI 3.1 or an AsyncAPI 3.0 document.\"\n />\n </div>\n );\n }\n return (\n <DocumentContext value={{ doc: spec.data, kind }}>\n {children ?? (\n <Routes\n routes={ROUTES}\n notFound={<DocsNotFound />}\n />\n )}\n </DocumentContext>\n );\n}\n\n/** The 404 for a client route the viewer does not have. */\nexport function DocsNotFound() {\n return (\n <div className=\"screen\">\n <Card>\n <EmptyState\n headingLevel={1}\n title=\"Page not found\"\n description=\"This page is not part of the API documentation.\"\n action={<Link to=\"/\">Back to the documentation</Link>}\n />\n </Card>\n </div>\n );\n}\n",
|
|
90
|
+
"import { QueryClientProvider } from \"@tanstack/react-query\";\nimport type { QueryClient } from \"@tanstack/react-query\";\nimport type { FetchLike } from \"./api/client\";\nimport type { DocsUiConfig } from \"../../lib/docs/browser/config.ts\";\nimport { useEffect, useMemo } from \"react\";\nimport { DocsFetchContext, DocsUiConfigContext } from \"./context\";\nimport { RouterProvider } from \"./router\";\nimport {\n createUnauthorizedRedirect,\n watchAuthFailures,\n} from \"../kit/unauthorized\";\nimport { DocsViewer } from \"./screens/docs/viewer\";\nimport { findSearchBox, shortcutFor } from \"./shortcuts\";\n\n/** Props of {@link App}. */\nexport interface AppProps {\n /** The injected configuration. */\n config: DocsUiConfig;\n /** The query client (tests pass one without retries). */\n queryClient: QueryClient;\n /** The `fetch` every request goes through (tests inject one). Defaults to `globalThis.fetch`. */\n fetch?: FetchLike;\n}\n\n/** The `/` shortcut: focus the screen's search box. */\nfunction useSearchShortcut() {\n useEffect(() => {\n const onKeyDown = (event: KeyboardEvent) => {\n if (shortcutFor(event) === \"focus-search\") {\n const box = findSearchBox(document);\n if (box) {\n event.preventDefault();\n box.focus();\n }\n }\n };\n window.addEventListener(\"keydown\", onKeyDown);\n return () => window.removeEventListener(\"keydown\", onKeyDown);\n }, []);\n}\n\n/**\n * The whole viewer: providers, routing, the document. With\n * `config.unauthorized`, a failed document read whose status it lists sends\n * the browser to the sign-in target, once (`unauthorized.ts`). Only the\n * viewer's own queries reach the cache: the try-it panel's calls do not, so\n * the documented API's 401 to a tried request never redirects.\n */\nexport function App({ config, queryClient, fetch }: AppProps) {\n useSearchShortcut();\n const unauthorized = useMemo(\n () => createUnauthorizedRedirect(config.unauthorized, config.basePath),\n [config.unauthorized, config.basePath],\n );\n useEffect(\n () => watchAuthFailures(queryClient, unauthorized),\n [queryClient, unauthorized],\n );\n return (\n <DocsUiConfigContext value={config}>\n <DocsFetchContext value={fetch ?? null}>\n <QueryClientProvider client={queryClient}>\n <RouterProvider basePath={config.basePath}>\n <div className=\"docs-viewer\">\n <DocsViewer />\n </div>\n </RouterProvider>\n </QueryClientProvider>\n </DocsFetchContext>\n </DocsUiConfigContext>\n );\n}\n",
|
|
91
|
+
"import type { DocsUiConfig } from \"../../lib/docs/browser/config.ts\";\nimport { DOCS_UI_CONFIG_ELEMENT_ID } from \"../../lib/docs/browser/config.ts\";\nimport { isUiUnauthorized } from \"../../lib/kit/browser/unauthorized.ts\";\n\n/** The injected configuration was missing or malformed. */\nexport class DocsUiConfigError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"DocsUiConfigError\";\n }\n}\n\n/** Whether a value is a plain object. */\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/**\n * Checks the fields the viewer relies on before its first request. It does\n * not re-validate everything the server resolved — only enough that a stale\n * or hand-edited shell fails with a message instead of a blank page.\n */\nexport function parseDocsUiConfig(value: unknown): DocsUiConfig {\n if (!isRecord(value)) {\n throw new DocsUiConfigError(\"The UI configuration is not an object.\");\n }\n if (value.version !== 1) {\n throw new DocsUiConfigError(\n `Unsupported UI configuration version ${JSON.stringify(value.version)} (expected 1).`,\n );\n }\n for (const key of [\n \"title\",\n \"basePath\",\n \"assetsPath\",\n \"documentUrl\",\n ] as const) {\n if (typeof value[key] !== \"string\") {\n throw new DocsUiConfigError(\n `The UI configuration's \"${key}\" is not a string.`,\n );\n }\n }\n if (value.csrfHeader !== null && typeof value.csrfHeader !== \"string\") {\n throw new DocsUiConfigError(\n `The UI configuration's \"csrfHeader\" must be a string or null.`,\n );\n }\n if (\n !Array.isArray(value.extensions) ||\n !value.extensions.every((prefix) => typeof prefix === \"string\")\n ) {\n throw new DocsUiConfigError(\n `The UI configuration's \"extensions\" must be an array of strings.`,\n );\n }\n if (![\"system\", \"light\", \"dark\"].includes(String(value.theme))) {\n throw new DocsUiConfigError(`The UI configuration's \"theme\" is not valid.`);\n }\n // Missing in a shell from before the option existed, or from a host that\n // mirrors the config (bun-common's docsRouter): off.\n const unauthorized = value.unauthorized ?? null;\n if (unauthorized !== null && !isUiUnauthorized(unauthorized)) {\n throw new DocsUiConfigError(\n `The UI configuration's \"unauthorized\" must be null or { redirectTo, returnParam, statuses }.`,\n );\n }\n return { ...value, unauthorized } as unknown as DocsUiConfig;\n}\n\n/** Reads the {@link DocsUiConfig} the server inlined as `<script type=\"application/json\" id=\"bun-api-docs-ui-config\">`. */\nexport function readDocsUiConfig(doc: Document = document): DocsUiConfig {\n const element = doc.getElementById(DOCS_UI_CONFIG_ELEMENT_ID);\n if (!element) {\n throw new DocsUiConfigError(\n `The page has no #${DOCS_UI_CONFIG_ELEMENT_ID} element: it was not served by docsUi().`,\n );\n }\n let parsed: unknown;\n try {\n parsed = JSON.parse(element.textContent ?? \"\");\n } catch {\n throw new DocsUiConfigError(\"The UI configuration is not valid JSON.\");\n }\n return parseDocsUiConfig(parsed);\n}\n",
|
|
92
|
+
"import type { DocsUiTheme } from \"../../lib/docs/browser/config.ts\";\n\n/** `localStorage` key the chosen theme is remembered under. */\nexport const THEME_STORAGE_KEY = \"bun-api-docs-ui:theme\";\n\n/** Every theme, in the order the toggle cycles through them. */\nexport const THEMES: readonly DocsUiTheme[] = [\"system\", \"light\", \"dark\"];\n\n/** Whether a value is a theme. */\nexport function isTheme(value: unknown): value is DocsUiTheme {\n return THEMES.includes(value as DocsUiTheme);\n}\n\n/** The theme after `theme` in the toggle's cycle. */\nexport function nextTheme(theme: DocsUiTheme): DocsUiTheme {\n return THEMES[(THEMES.indexOf(theme) + 1) % THEMES.length];\n}\n\n/** The remembered theme, or `null`. Storage can be absent or throw (private mode, blocked site data). */\nexport function readStoredTheme(): DocsUiTheme | null {\n try {\n const value = globalThis.localStorage?.getItem(THEME_STORAGE_KEY);\n return isTheme(value) ? value : null;\n } catch {\n return null;\n }\n}\n\n/** Remembers a theme; a storage failure only means it is not remembered. */\nexport function storeTheme(theme: DocsUiTheme): void {\n try {\n globalThis.localStorage?.setItem(THEME_STORAGE_KEY, theme);\n } catch {\n // Not remembered; the page still works.\n }\n}\n\n/** The theme to start in: the remembered choice, else the mount's default. */\nexport function initialTheme(configured: DocsUiTheme): DocsUiTheme {\n return readStoredTheme() ?? configured;\n}\n\n/**\n * Applies a theme to the document: `data-theme=\"light\"|\"dark\"` forces one,\n * no attribute follows `prefers-color-scheme` (see `styles/tokens.css`).\n */\nexport function applyTheme(\n theme: DocsUiTheme,\n root: HTMLElement = document.documentElement,\n): void {\n if (theme === \"system\") {\n delete root.dataset.theme;\n } else {\n root.dataset.theme = theme;\n }\n}\n",
|
|
93
|
+
"import type { Root } from \"react-dom/client\";\nimport type { DocsUiConfig } from \"../../lib/docs/browser/config.ts\";\nimport { StrictMode } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { App } from \"./App\";\nimport { readDocsUiConfig } from \"./config\";\nimport { createQueryClient } from \"./queryClient\";\nimport { applyTheme, initialTheme } from \"./theme\";\n\n/** Options of {@link boot}. */\nexport interface BootOptions {\n /** The document to read the config from and render into. Defaults to `document`. */\n doc?: Document;\n /** Retry failed reads. Defaults to `true`; tests pass `false`. */\n retry?: boolean;\n}\n\n/** What {@link boot} started. */\nexport interface BootResult {\n /** The config it read. */\n config: DocsUiConfig;\n /** The React root; `unmount()` tears the app down. */\n root: Root;\n}\n\n/**\n * Starts the viewer: reads the injected config, applies the theme, and renders\n * into `#root`. A missing or malformed config renders a plain message\n * instead (there is no document to fetch without it) and rethrows.\n */\nexport function boot(options: BootOptions = {}): BootResult {\n const doc = options.doc ?? document;\n const container = doc.getElementById(\"root\");\n if (!container) {\n throw new Error(\"The page has no #root element.\");\n }\n let config: DocsUiConfig;\n try {\n config = readDocsUiConfig(doc);\n } catch (error) {\n container.textContent = `The API docs viewer could not start: ${error instanceof Error ? error.message : String(error)}`;\n throw error;\n }\n applyTheme(initialTheme(config.theme), doc.documentElement);\n doc.title = config.title;\n\n const queryClient = createQueryClient({ retry: options.retry });\n const root = createRoot(container);\n root.render(\n <StrictMode>\n <App\n config={config}\n queryClient={queryClient}\n />\n </StrictMode>,\n );\n return { config, root };\n}\n",
|
|
94
|
+
"import { boot } from \"./boot\";\n/**\n * The browser entry point `Bun.build` bundles: the stylesheets (emitted as\n * CSS files) and the viewer. Everything else lives in `boot.tsx`, so tests\n * can start the app without this module's import-time side effect.\n */\nimport \"./styles/tokens.css\";\nimport \"./styles/base.css\";\nimport \"./components/components.css\";\n\nboot();\n"
|
|
95
|
+
],
|
|
96
|
+
"mappings": "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nB,EAA4B,GAC9B,GAAiB,EAAa,IAAI,IAC9B,GAAa,EAAa,UAAa,GAAwB,IACnE,GACE,EACA,EACA,CACF,EACA,GACE,EAAa,UACb,EAAa,KACb,EAAa,aACf,EACA,GAAa,EACb,GAAwB,EACxB,MACF,IAAK,GACH,GACE,GAAgB,EAAc,CAAsB,EACpD,GAAsC,CAAY,EACtD,IAAK,GAaH,GAZM,EAAa,MAAnB,GACE,GAAsC,CAAY,EACpD,EAAiB,GACjB,EAA4B,GAC5B,GAAa,KACb,GACE,EACA,EACA,CACF,EACA,GAAa,EACb,GAAwB,EACX,KAAT,KACF,GAAI,GACF,GAAI,EACK,GAAW,WAAjB,EACG,GAAW,KACA,GAAW,WAAtB,OACE,GAAW,cAAc,KACzB,IACJ,YAAY,EAAa,SAAS,EACjC,EAAgC,GACnC,MAAO,EAAO,CACd,EACE,EACA,EACA,CACF,EAEJ,KACE,GAAI,CACF,GAAW,YAAY,EAAa,SAAS,EAC1C,EAAgC,GACnC,MAAO,EAAO,CACd,EACE,EACA,EACA,CACF,EAEN,MACF,IAAK,IACM,KAAT,OACG,IACK,EAAe,GACjB,GACQ,EAAa,WAAnB,EACI,EAAa,KACF,EAAa,WAAxB,OACE,EAAa,cAAc,KAC3B,EACN,EAAa,SACf,EACA,GAAiB,CAAY,GAC7B,GAAuB,GAAY,EAAa,SAAS,GAC/D,MACF,IAAK,GACH,EAAiB,GACjB,EAA4B,GAC5B,GAAa,EAAa,UAAU,cACpC,GAAwB,GACxB,GACE,EACA,EACA,CACF,EACA,GAAa,EACb,GAAwB,EACxB,MACF,IAAK,GACL,IAAK,IACL,IAAK,IACL,IAAK,IACH,GAA4B,EAAG,EAAc,CAAsB,EACnE,GACE,GAA4B,EAAG,EAAc,CAAsB,EACrE,GACE,EACA,EACA,CACF,EACA,MACF,IAAK,GACH,IACG,GAAgB,EAAc,CAAsB,EACpD,EAAiB,EAAa,UAChB,OAAO,EAAe,uBAArC,YACE,GACE,EACA,EACA,CACF,GACJ,GACE,EACA,EACA,CACF,EACA,MACF,IAAK,IACH,GACE,EACA,EACA,CACF,EACA,MACF,IAAK,IA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AAc,OAC/C,EAAe,EAAa,cAAc,MAC3C,IAAiB,IACd,EAAa,WAAoB,GAAR,MAAiB,GAAa,CAAK,IACjE,MACF,IAAK,IACH,GAAI,EAAQ,KAAM,CAChB,GACE,EACA,EACA,EACA,CACF,EACA,EAAQ,EAAa,UACrB,GAAI,CACF,IAAI,EAAyB,EAAa,cACxC,EAAK,EAAuB,GAC5B,EAAe,EAAuB,aACzB,OAAO,IAAtB,YACE,EACE,EACS,EAAa,YAAtB,KAAkC,QAAU,SAC5C,EAAM,sBACN,EACF,EACF,MAAO,EAAO,CACd,EAAwB,EAAc,EAAa,OAAQ,CAAK,GAElE,KACA,GACE,EACA,EACA,EACA,CACF,EACF,MACF,IAAK,IACH,GACE,EACA,EACA,EACA,CACF,EACA,MACF,IAAK,IACH,GACE,EACA,EACA,EACA,CACF,EACA,MACF,IAAK,IACH,MACF,IAAK,IACH,EAAyB,EAAa,UACtC,EAAK,EAAa,UACT,EAAa,gBAAtB,MACK,GACU,IAAT,MACS,EAAG,gBAAZ,MACA,GAAkC,CAAE,EACtC,EAAuB,YAAc,EACjC,GACE,EACA,EACA,EACA,CACF,EACA,GACE,EACA,CACF,IACH,GACU,IAAT,MACS,EAAG,gBAAZ,MACA,GAAkC,CAAY,EAChD,EAAuB,YAAc,EACjC,GACE,EACA,EACA,EACA,CACF,GACE,EAAuB,aAAe,EACxC,GACE,EACA,EACA,EACA,GACO,EAAa,aAAe,SAAnC,GAA6C,EAC/C,IACR,EAAQ,MAAQ,GAAmC,EAAI,CAAY,EACnE,MACF,IAAK,IACH,GACE,EACA,EACA,EACA,CACF,EACA,EAAQ,MACN,GAA8B,EAAa,UAAW,CAAY,EACpE,MACF,IAAK,IACH,IACI,EAAQ,EAAa,UACd,IAAT,OACG,GAAqC,EAAM,MAAO,EAAE,EACrD,GAAqC,EAAa,MAAO,EAAE,IAC/D,GACE,EACA,EACA,EACA,CACF,EACA,MACF,QACE,GACE,EACA,EACA,EACA,CACF,GAGN,SAAS,EAA0C,CACjD,EACA,EACA,EACA,EACA,EACA,CACA,EACE,KACQ,EAAY,aAAe,SAAlC,GAA4C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AAoB,EAAK,QAAQ,cAAc,aAQnD,GAPA,IACG,GAAkB,EAAM,CAAwB,EAAE,OAAS,KAC9D,EAA2B,GACzB,EACA,EACA,EACF,EAEQ,IAAN,GACM,IAAN,EACA,CACA,GACE,IACA,CAAC,EACD,CACA,EAAK,4BAA8B,EACnC,IACE,EACF,EAAa,EACb,QAEF,EAAsB,GACtB,GAAsC,EAC7B,IAAT,OACY,KAAT,KACI,GAAsC,EACvC,GAAoC,KAAK,MACvC,GACA,CACF,GAER,EAAa,EAGf,GADA,EAAsB,GACZ,IAAN,EAAkB,UAG1B,GAAU,IAAN,EAAkB,CACpB,GAAkB,EAAe,CAAC,EAClC,GAAkB,EAAe,EAAO,EAAG,EAAE,EAC7C,MAEF,EAAG,CAGD,OAFA,EAAkB,EAClB,EAAsB,EACd,GACN,IAAK,GACL,IAAK,GACH,MAAM,MAAM,EAAuB,GAAG,CAAC,EACzC,IAAK,GACH,IAAK,EAAQ,WAAa,IAAU,EAAQ,YAAc,EACxD,MACJ,IAAK,GACH,GACE,EACA,EACA,GACA,CAAC,EACH,EACA,QACF,IAAK,GACH,GAAsC,KACtC,MACF,IAAK,GACL,IAAK,GACH,MACF,QACE,MAAM,MAAM,EAAuB,GAAG,CAAC,EAE3C,IACG,EAAQ,YAAc,IACrB,EAAa,GAA+B,IAAM,GAAI,EACxD,GAAK,GACL,CAOA,GANA,GACE,EACA,EACA,GACA,CAAC,EACH,EACU,GAAa,EAAiB,EAAG,EAAE,IAAzC,EAA4C,QAChD,GAAsB,EACtB,EAAgB,cAAgB,GAC9B,GAAsB,KACpB,KACA,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,EACA,YACA,GACA,CACF,EACA,CACF,EACA,QAEF,GACE,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,EACA,KACA,GACA,CACF,GAGJ,YACO,GACT,GAAsB,CAAa,EAErC,SAAS,EAAqB,CAC5B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACA,EAAK,cAAgB,GACrB,IAAI,EAAe,EAAa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",
|
|
97
|
+
"debugId": "A16DD515A4A2000B64756E2164756E21",
|
|
98
|
+
"names": []
|
|
99
|
+
}
|