@tanstack/vue-router 1.167.1 → 1.167.3
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/dist/esm/Asset.js +107 -151
- package/dist/esm/Asset.js.map +1 -1
- package/dist/esm/Body.js +15 -24
- package/dist/esm/Body.js.map +1 -1
- package/dist/esm/CatchBoundary.js +112 -130
- package/dist/esm/CatchBoundary.js.map +1 -1
- package/dist/esm/ClientOnly.js +59 -29
- package/dist/esm/ClientOnly.js.map +1 -1
- package/dist/esm/HeadContent.dev.js +29 -23
- package/dist/esm/HeadContent.dev.js.map +1 -1
- package/dist/esm/HeadContent.js +21 -16
- package/dist/esm/HeadContent.js.map +1 -1
- package/dist/esm/Html.js +42 -61
- package/dist/esm/Html.js.map +1 -1
- package/dist/esm/Match.js +238 -319
- package/dist/esm/Match.js.map +1 -1
- package/dist/esm/Matches.js +127 -170
- package/dist/esm/Matches.js.map +1 -1
- package/dist/esm/RouterProvider.js +50 -65
- package/dist/esm/RouterProvider.js.map +1 -1
- package/dist/esm/ScriptOnce.js +31 -36
- package/dist/esm/ScriptOnce.js.map +1 -1
- package/dist/esm/Scripts.js +79 -101
- package/dist/esm/Scripts.js.map +1 -1
- package/dist/esm/ScrollRestoration.js +25 -29
- package/dist/esm/ScrollRestoration.js.map +1 -1
- package/dist/esm/Transitioner.js +146 -164
- package/dist/esm/Transitioner.js.map +1 -1
- package/dist/esm/awaited.js +27 -34
- package/dist/esm/awaited.js.map +1 -1
- package/dist/esm/fileRoute.js +90 -92
- package/dist/esm/fileRoute.js.map +1 -1
- package/dist/esm/headContentUtils.js +92 -123
- package/dist/esm/headContentUtils.js.map +1 -1
- package/dist/esm/index.dev.js +16 -118
- package/dist/esm/index.js +18 -119
- package/dist/esm/lazyRouteComponent.js +69 -82
- package/dist/esm/lazyRouteComponent.js.map +1 -1
- package/dist/esm/link.js +364 -385
- package/dist/esm/link.js.map +1 -1
- package/dist/esm/matchContext.js +16 -11
- package/dist/esm/matchContext.js.map +1 -1
- package/dist/esm/not-found.js +30 -40
- package/dist/esm/not-found.js.map +1 -1
- package/dist/esm/renderRouteNotFound.js +20 -15
- package/dist/esm/renderRouteNotFound.js.map +1 -1
- package/dist/esm/route.js +196 -174
- package/dist/esm/route.js.map +1 -1
- package/dist/esm/router.js +11 -11
- package/dist/esm/router.js.map +1 -1
- package/dist/esm/routerContext.js +10 -7
- package/dist/esm/routerContext.js.map +1 -1
- package/dist/esm/scroll-restoration.js +39 -50
- package/dist/esm/scroll-restoration.js.map +1 -1
- package/dist/esm/ssr/RouterClient.js +29 -43
- package/dist/esm/ssr/RouterClient.js.map +1 -1
- package/dist/esm/ssr/RouterServer.js +29 -32
- package/dist/esm/ssr/RouterServer.js.map +1 -1
- package/dist/esm/ssr/client.js +1 -4
- package/dist/esm/ssr/defaultRenderHandler.js +11 -13
- package/dist/esm/ssr/defaultRenderHandler.js.map +1 -1
- package/dist/esm/ssr/defaultStreamHandler.js +12 -15
- package/dist/esm/ssr/defaultStreamHandler.js.map +1 -1
- package/dist/esm/ssr/renderRouterToStream.js +47 -65
- package/dist/esm/ssr/renderRouterToStream.js.map +1 -1
- package/dist/esm/ssr/renderRouterToString.js +24 -32
- package/dist/esm/ssr/renderRouterToString.js.map +1 -1
- package/dist/esm/ssr/server.js +3 -10
- package/dist/esm/useBlocker.js +243 -287
- package/dist/esm/useBlocker.js.map +1 -1
- package/dist/esm/useCanGoBack.js +6 -5
- package/dist/esm/useCanGoBack.js.map +1 -1
- package/dist/esm/useLoaderData.js +12 -11
- package/dist/esm/useLoaderData.js.map +1 -1
- package/dist/esm/useLoaderDeps.js +12 -14
- package/dist/esm/useLoaderDeps.js.map +1 -1
- package/dist/esm/useLocation.js +6 -7
- package/dist/esm/useLocation.js.map +1 -1
- package/dist/esm/useMatch.js +27 -35
- package/dist/esm/useMatch.js.map +1 -1
- package/dist/esm/useNavigate.js +18 -24
- package/dist/esm/useNavigate.js.map +1 -1
- package/dist/esm/useParams.js +13 -12
- package/dist/esm/useParams.js.map +1 -1
- package/dist/esm/useRouteContext.js +9 -8
- package/dist/esm/useRouteContext.js.map +1 -1
- package/dist/esm/useRouter.js +9 -8
- package/dist/esm/useRouter.js.map +1 -1
- package/dist/esm/useRouterState.js +18 -22
- package/dist/esm/useRouterState.js.map +1 -1
- package/dist/esm/useSearch.js +13 -12
- package/dist/esm/useSearch.js.map +1 -1
- package/dist/esm/utils.js +59 -38
- package/dist/esm/utils.js.map +1 -1
- package/package.json +3 -3
- package/dist/esm/index.dev.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/ssr/client.js.map +0 -1
- package/dist/esm/ssr/server.js.map +0 -1
|
@@ -1,87 +1,74 @@
|
|
|
1
|
-
import * as Vue from "vue";
|
|
2
|
-
import { Outlet } from "./Match.js";
|
|
3
1
|
import { ClientOnly } from "./ClientOnly.js";
|
|
2
|
+
import { Outlet } from "./Match.js";
|
|
3
|
+
import * as Vue from "vue";
|
|
4
|
+
//#region src/lazyRouteComponent.tsx
|
|
4
5
|
function isModuleNotFoundError(error) {
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
if (typeof error?.message !== "string") return false;
|
|
7
|
+
return error.message.startsWith("Failed to fetch dynamically imported module") || error.message.startsWith("error loading dynamically imported module") || error.message.startsWith("Importing a module script failed");
|
|
7
8
|
}
|
|
8
9
|
function lazyRouteComponent(importer, exportName, ssr) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
if (ssr?.() === false) {
|
|
71
|
-
return Vue.h(ClientOnly, {
|
|
72
|
-
fallback: Vue.h(Outlet)
|
|
73
|
-
}, {
|
|
74
|
-
default: () => Vue.h(component.value, props)
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
return Vue.h(component.value, props);
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
lazyComp.preload = load;
|
|
82
|
-
return lazyComp;
|
|
10
|
+
let loadPromise;
|
|
11
|
+
let comp = null;
|
|
12
|
+
let error = null;
|
|
13
|
+
let attemptedReload = false;
|
|
14
|
+
const load = () => {
|
|
15
|
+
if (typeof document === "undefined" && ssr?.() === false) {
|
|
16
|
+
comp = () => null;
|
|
17
|
+
return Promise.resolve(comp);
|
|
18
|
+
}
|
|
19
|
+
if (!loadPromise) loadPromise = importer().then((res) => {
|
|
20
|
+
loadPromise = void 0;
|
|
21
|
+
comp = res[exportName ?? "default"];
|
|
22
|
+
return comp;
|
|
23
|
+
}).catch((err) => {
|
|
24
|
+
error = err;
|
|
25
|
+
loadPromise = void 0;
|
|
26
|
+
if (isModuleNotFoundError(error)) return null;
|
|
27
|
+
throw err;
|
|
28
|
+
});
|
|
29
|
+
return loadPromise;
|
|
30
|
+
};
|
|
31
|
+
const lazyComp = Vue.defineComponent({
|
|
32
|
+
name: "LazyRouteComponent",
|
|
33
|
+
setup(props) {
|
|
34
|
+
const component = Vue.shallowRef(comp ? Vue.markRaw(comp) : comp);
|
|
35
|
+
const errorState = Vue.ref(error);
|
|
36
|
+
const loading = Vue.ref(!component.value && !errorState.value);
|
|
37
|
+
Vue.onMounted(() => {
|
|
38
|
+
if (!component.value && !errorState.value) {
|
|
39
|
+
loading.value = true;
|
|
40
|
+
load().then((result) => {
|
|
41
|
+
component.value = result ? Vue.markRaw(result) : result;
|
|
42
|
+
loading.value = false;
|
|
43
|
+
}).catch((err) => {
|
|
44
|
+
errorState.value = err;
|
|
45
|
+
loading.value = false;
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
if (errorState.value && isModuleNotFoundError(errorState.value) && !attemptedReload) {
|
|
50
|
+
if (typeof window !== "undefined" && typeof sessionStorage !== "undefined") {
|
|
51
|
+
const storageKey = `tanstack_router_reload:${errorState.value.message}`;
|
|
52
|
+
if (!sessionStorage.getItem(storageKey)) {
|
|
53
|
+
sessionStorage.setItem(storageKey, "1");
|
|
54
|
+
attemptedReload = true;
|
|
55
|
+
window.location.reload();
|
|
56
|
+
return () => null;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (errorState.value && !isModuleNotFoundError(errorState.value)) throw errorState.value;
|
|
61
|
+
return () => {
|
|
62
|
+
if (loading.value || !component.value) return Vue.h("div", null);
|
|
63
|
+
if (ssr?.() === false) return Vue.h(ClientOnly, { fallback: Vue.h(Outlet) }, { default: () => Vue.h(component.value, props) });
|
|
64
|
+
return Vue.h(component.value, props);
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
lazyComp.preload = load;
|
|
69
|
+
return lazyComp;
|
|
83
70
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
//# sourceMappingURL=lazyRouteComponent.js.map
|
|
71
|
+
//#endregion
|
|
72
|
+
export { lazyRouteComponent };
|
|
73
|
+
|
|
74
|
+
//# sourceMappingURL=lazyRouteComponent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazyRouteComponent.js","sources":["../../src/lazyRouteComponent.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport { Outlet } from './Match'\nimport { ClientOnly } from './ClientOnly'\nimport type { AsyncRouteComponent } from './route'\n\n// If the load fails due to module not found, it may mean a new version of\n// the build was deployed and the user's browser is still using an old version.\n// If this happens, the old version in the user's browser would have an outdated\n// URL to the lazy module.\n// In that case, we want to attempt one window refresh to get the latest.\nfunction isModuleNotFoundError(error: any): boolean {\n // chrome: \"Failed to fetch dynamically imported module: http://localhost:5173/src/routes/posts.index.tsx?tsr-split\"\n // firefox: \"error loading dynamically imported module: http://localhost:5173/src/routes/posts.index.tsx?tsr-split\"\n // safari: \"Importing a module script failed.\"\n if (typeof error?.message !== 'string') return false\n return (\n error.message.startsWith('Failed to fetch dynamically imported module') ||\n error.message.startsWith('error loading dynamically imported module') ||\n error.message.startsWith('Importing a module script failed')\n )\n}\n\nexport function lazyRouteComponent<\n T extends Record<string, any>,\n TKey extends keyof T = 'default',\n>(\n importer: () => Promise<T>,\n exportName?: TKey,\n ssr?: () => boolean,\n): T[TKey] extends (props: infer TProps) => any\n ? AsyncRouteComponent<TProps>\n : never {\n let loadPromise: Promise<any> | undefined\n let comp: T[TKey] | T['default'] | null = null\n let error: any = null\n let attemptedReload = false\n\n const load = () => {\n // If we're on the server and SSR is disabled for this component\n if (typeof document === 'undefined' && ssr?.() === false) {\n comp = (() => null) as any\n return Promise.resolve(comp)\n }\n\n // Use existing promise or create new one\n if (!loadPromise) {\n loadPromise = importer()\n .then((res) => {\n loadPromise = undefined\n comp = res[exportName ?? 'default']\n return comp\n })\n .catch((err) => {\n error = err\n loadPromise = undefined\n\n // If it's a module not found error, we'll try to handle it in the component\n if (isModuleNotFoundError(error)) {\n return null\n }\n\n throw err\n })\n }\n\n return loadPromise\n }\n\n // Create a lazy component wrapper using defineComponent so it works in Vue SFC templates\n const lazyComp = Vue.defineComponent({\n name: 'LazyRouteComponent',\n setup(props: any) {\n // Create refs to track component state\n // Use shallowRef for component to avoid making it reactive (Vue warning)\n const component = Vue.shallowRef<any>(comp ? Vue.markRaw(comp) : comp)\n const errorState = Vue.ref<any>(error)\n const loading = Vue.ref(!component.value && !errorState.value)\n\n // Setup effect to load the component when this component is used\n Vue.onMounted(() => {\n if (!component.value && !errorState.value) {\n loading.value = true\n\n load()\n .then((result) => {\n // Use markRaw to prevent Vue from making the component reactive\n component.value = result ? Vue.markRaw(result) : result\n loading.value = false\n })\n .catch((err) => {\n errorState.value = err\n loading.value = false\n })\n }\n })\n\n // Handle module not found error with reload attempt\n if (\n errorState.value &&\n isModuleNotFoundError(errorState.value) &&\n !attemptedReload\n ) {\n if (\n typeof window !== 'undefined' &&\n typeof sessionStorage !== 'undefined'\n ) {\n // Try to reload once on module not found error\n const storageKey = `tanstack_router_reload:${errorState.value.message}`\n if (!sessionStorage.getItem(storageKey)) {\n sessionStorage.setItem(storageKey, '1')\n attemptedReload = true\n window.location.reload()\n return () => null // Return empty while reloading\n }\n }\n }\n\n // If we have a non-module-not-found error, throw it\n if (errorState.value && !isModuleNotFoundError(errorState.value)) {\n throw errorState.value\n }\n\n // Return a render function\n return () => {\n // If we're still loading or don't have a component yet, use a suspense pattern\n if (loading.value || !component.value) {\n return Vue.h('div', null) // Empty div while loading\n }\n\n // If SSR is disabled for this component\n if (ssr?.() === false) {\n return Vue.h(\n ClientOnly,\n {\n fallback: Vue.h(Outlet),\n },\n {\n default: () => Vue.h(component.value, props),\n },\n )\n }\n\n // Regular render with the loaded component\n return Vue.h(component.value, props)\n }\n },\n })\n\n // Add preload method\n ;(lazyComp as any).preload = load\n\n return lazyComp as any\n}\n"],"
|
|
1
|
+
{"version":3,"file":"lazyRouteComponent.js","names":["Vue","Outlet","ClientOnly","isModuleNotFoundError","error","message","startsWith","lazyRouteComponent","importer","exportName","ssr","loadPromise","comp","attemptedReload","load","document","Promise","resolve","then","res","undefined","catch","err","lazyComp","defineComponent","name","setup","props","component","shallowRef","markRaw","errorState","ref","loading","value","onMounted","result","window","sessionStorage","storageKey","getItem","setItem","location","reload","h","fallback","default","preload"],"sources":["../../src/lazyRouteComponent.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport { Outlet } from './Match'\nimport { ClientOnly } from './ClientOnly'\nimport type { AsyncRouteComponent } from './route'\n\n// If the load fails due to module not found, it may mean a new version of\n// the build was deployed and the user's browser is still using an old version.\n// If this happens, the old version in the user's browser would have an outdated\n// URL to the lazy module.\n// In that case, we want to attempt one window refresh to get the latest.\nfunction isModuleNotFoundError(error: any): boolean {\n // chrome: \"Failed to fetch dynamically imported module: http://localhost:5173/src/routes/posts.index.tsx?tsr-split\"\n // firefox: \"error loading dynamically imported module: http://localhost:5173/src/routes/posts.index.tsx?tsr-split\"\n // safari: \"Importing a module script failed.\"\n if (typeof error?.message !== 'string') return false\n return (\n error.message.startsWith('Failed to fetch dynamically imported module') ||\n error.message.startsWith('error loading dynamically imported module') ||\n error.message.startsWith('Importing a module script failed')\n )\n}\n\nexport function lazyRouteComponent<\n T extends Record<string, any>,\n TKey extends keyof T = 'default',\n>(\n importer: () => Promise<T>,\n exportName?: TKey,\n ssr?: () => boolean,\n): T[TKey] extends (props: infer TProps) => any\n ? AsyncRouteComponent<TProps>\n : never {\n let loadPromise: Promise<any> | undefined\n let comp: T[TKey] | T['default'] | null = null\n let error: any = null\n let attemptedReload = false\n\n const load = () => {\n // If we're on the server and SSR is disabled for this component\n if (typeof document === 'undefined' && ssr?.() === false) {\n comp = (() => null) as any\n return Promise.resolve(comp)\n }\n\n // Use existing promise or create new one\n if (!loadPromise) {\n loadPromise = importer()\n .then((res) => {\n loadPromise = undefined\n comp = res[exportName ?? 'default']\n return comp\n })\n .catch((err) => {\n error = err\n loadPromise = undefined\n\n // If it's a module not found error, we'll try to handle it in the component\n if (isModuleNotFoundError(error)) {\n return null\n }\n\n throw err\n })\n }\n\n return loadPromise\n }\n\n // Create a lazy component wrapper using defineComponent so it works in Vue SFC templates\n const lazyComp = Vue.defineComponent({\n name: 'LazyRouteComponent',\n setup(props: any) {\n // Create refs to track component state\n // Use shallowRef for component to avoid making it reactive (Vue warning)\n const component = Vue.shallowRef<any>(comp ? Vue.markRaw(comp) : comp)\n const errorState = Vue.ref<any>(error)\n const loading = Vue.ref(!component.value && !errorState.value)\n\n // Setup effect to load the component when this component is used\n Vue.onMounted(() => {\n if (!component.value && !errorState.value) {\n loading.value = true\n\n load()\n .then((result) => {\n // Use markRaw to prevent Vue from making the component reactive\n component.value = result ? Vue.markRaw(result) : result\n loading.value = false\n })\n .catch((err) => {\n errorState.value = err\n loading.value = false\n })\n }\n })\n\n // Handle module not found error with reload attempt\n if (\n errorState.value &&\n isModuleNotFoundError(errorState.value) &&\n !attemptedReload\n ) {\n if (\n typeof window !== 'undefined' &&\n typeof sessionStorage !== 'undefined'\n ) {\n // Try to reload once on module not found error\n const storageKey = `tanstack_router_reload:${errorState.value.message}`\n if (!sessionStorage.getItem(storageKey)) {\n sessionStorage.setItem(storageKey, '1')\n attemptedReload = true\n window.location.reload()\n return () => null // Return empty while reloading\n }\n }\n }\n\n // If we have a non-module-not-found error, throw it\n if (errorState.value && !isModuleNotFoundError(errorState.value)) {\n throw errorState.value\n }\n\n // Return a render function\n return () => {\n // If we're still loading or don't have a component yet, use a suspense pattern\n if (loading.value || !component.value) {\n return Vue.h('div', null) // Empty div while loading\n }\n\n // If SSR is disabled for this component\n if (ssr?.() === false) {\n return Vue.h(\n ClientOnly,\n {\n fallback: Vue.h(Outlet),\n },\n {\n default: () => Vue.h(component.value, props),\n },\n )\n }\n\n // Regular render with the loaded component\n return Vue.h(component.value, props)\n }\n },\n })\n\n // Add preload method\n ;(lazyComp as any).preload = load\n\n return lazyComp as any\n}\n"],"mappings":";;;;AAUA,SAASG,sBAAsBC,OAAqB;AAIlD,KAAI,OAAOA,OAAOC,YAAY,SAAU,QAAO;AAC/C,QACED,MAAMC,QAAQC,WAAW,8CAA8C,IACvEF,MAAMC,QAAQC,WAAW,4CAA4C,IACrEF,MAAMC,QAAQC,WAAW,mCAAmC;;AAIhE,SAAgBC,mBAIdC,UACAC,YACAC,KAGQ;CACR,IAAIC;CACJ,IAAIC,OAAsC;CAC1C,IAAIR,QAAa;CACjB,IAAIS,kBAAkB;CAEtB,MAAMC,aAAa;AAEjB,MAAI,OAAOC,aAAa,eAAeL,OAAO,KAAK,OAAO;AACxDE,gBAAc;AACd,UAAOI,QAAQC,QAAQL,KAAK;;AAI9B,MAAI,CAACD,YACHA,eAAcH,UAAU,CACrBU,MAAMC,QAAQ;AACbR,iBAAcS,KAAAA;AACdR,UAAOO,IAAIV,cAAc;AACzB,UAAOG;IACP,CACDS,OAAOC,QAAQ;AACdlB,WAAQkB;AACRX,iBAAcS,KAAAA;AAGd,OAAIjB,sBAAsBC,MAAM,CAC9B,QAAO;AAGT,SAAMkB;IACN;AAGN,SAAOX;;CAIT,MAAMY,WAAWvB,IAAIwB,gBAAgB;EACnCC,MAAM;EACNC,MAAMC,OAAY;GAGhB,MAAMC,YAAY5B,IAAI6B,WAAgBjB,OAAOZ,IAAI8B,QAAQlB,KAAK,GAAGA,KAAK;GACtE,MAAMmB,aAAa/B,IAAIgC,IAAS5B,MAAM;GACtC,MAAM6B,UAAUjC,IAAIgC,IAAI,CAACJ,UAAUM,SAAS,CAACH,WAAWG,MAAM;AAG9DlC,OAAImC,gBAAgB;AAClB,QAAI,CAACP,UAAUM,SAAS,CAACH,WAAWG,OAAO;AACzCD,aAAQC,QAAQ;AAEhBpB,WAAM,CACHI,MAAMkB,WAAW;AAEhBR,gBAAUM,QAAQE,SAASpC,IAAI8B,QAAQM,OAAO,GAAGA;AACjDH,cAAQC,QAAQ;OAChB,CACDb,OAAOC,QAAQ;AACdS,iBAAWG,QAAQZ;AACnBW,cAAQC,QAAQ;OAChB;;KAEN;AAGF,OACEH,WAAWG,SACX/B,sBAAsB4B,WAAWG,MAAM,IACvC,CAACrB;QAGC,OAAOwB,WAAW,eAClB,OAAOC,mBAAmB,aAC1B;KAEA,MAAMC,aAAa,0BAA0BR,WAAWG,MAAM7B;AAC9D,SAAI,CAACiC,eAAeE,QAAQD,WAAW,EAAE;AACvCD,qBAAeG,QAAQF,YAAY,IAAI;AACvC1B,wBAAkB;AAClBwB,aAAOK,SAASC,QAAQ;AACxB,mBAAa;;;;AAMnB,OAAIZ,WAAWG,SAAS,CAAC/B,sBAAsB4B,WAAWG,MAAM,CAC9D,OAAMH,WAAWG;AAInB,gBAAa;AAEX,QAAID,QAAQC,SAAS,CAACN,UAAUM,MAC9B,QAAOlC,IAAI4C,EAAE,OAAO,KAAK;AAI3B,QAAIlC,OAAO,KAAK,MACd,QAAOV,IAAI4C,EACT1C,YACA,EACE2C,UAAU7C,IAAI4C,EAAE3C,OAAM,EACvB,EACD,EACE6C,eAAe9C,IAAI4C,EAAEhB,UAAUM,OAAOP,MAAK,EAE/C,CAAC;AAIH,WAAO3B,IAAI4C,EAAEhB,UAAUM,OAAOP,MAAM;;;EAGzC,CAAA;AAGCJ,UAAiBwB,UAAUjC;AAE7B,QAAOS"}
|