vinext 0.0.0 → 0.0.1
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 +1 -0
- package/dist/build/static-export.d.ts +78 -0
- package/dist/build/static-export.d.ts.map +1 -0
- package/dist/build/static-export.js +553 -0
- package/dist/build/static-export.js.map +1 -0
- package/dist/check.d.ts +52 -0
- package/dist/check.d.ts.map +1 -0
- package/dist/check.js +483 -0
- package/dist/check.js.map +1 -0
- package/dist/cli.d.ts +15 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +565 -0
- package/dist/cli.js.map +1 -0
- package/dist/client/entry.d.ts +2 -0
- package/dist/client/entry.d.ts.map +1 -0
- package/dist/client/entry.js +85 -0
- package/dist/client/entry.js.map +1 -0
- package/dist/cloudflare/index.d.ts +8 -0
- package/dist/cloudflare/index.d.ts.map +1 -0
- package/dist/cloudflare/index.js +8 -0
- package/dist/cloudflare/index.js.map +1 -0
- package/dist/cloudflare/kv-cache-handler.d.ts +68 -0
- package/dist/cloudflare/kv-cache-handler.d.ts.map +1 -0
- package/dist/cloudflare/kv-cache-handler.js +304 -0
- package/dist/cloudflare/kv-cache-handler.js.map +1 -0
- package/dist/cloudflare/tpr.d.ts +78 -0
- package/dist/cloudflare/tpr.d.ts.map +1 -0
- package/dist/cloudflare/tpr.js +672 -0
- package/dist/cloudflare/tpr.js.map +1 -0
- package/dist/config/config-matchers.d.ts +106 -0
- package/dist/config/config-matchers.d.ts.map +1 -0
- package/dist/config/config-matchers.js +499 -0
- package/dist/config/config-matchers.js.map +1 -0
- package/dist/config/next-config.d.ts +153 -0
- package/dist/config/next-config.d.ts.map +1 -0
- package/dist/config/next-config.js +274 -0
- package/dist/config/next-config.js.map +1 -0
- package/dist/deploy.d.ts +87 -0
- package/dist/deploy.d.ts.map +1 -0
- package/dist/deploy.js +644 -0
- package/dist/deploy.js.map +1 -0
- package/dist/index.d.ts +156 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3287 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +55 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +201 -0
- package/dist/init.js.map +1 -0
- package/dist/routing/app-router.d.ts +96 -0
- package/dist/routing/app-router.d.ts.map +1 -0
- package/dist/routing/app-router.js +815 -0
- package/dist/routing/app-router.js.map +1 -0
- package/dist/routing/pages-router.d.ts +52 -0
- package/dist/routing/pages-router.d.ts.map +1 -0
- package/dist/routing/pages-router.js +239 -0
- package/dist/routing/pages-router.js.map +1 -0
- package/dist/server/api-handler.d.ts +18 -0
- package/dist/server/api-handler.d.ts.map +1 -0
- package/dist/server/api-handler.js +169 -0
- package/dist/server/api-handler.js.map +1 -0
- package/dist/server/app-dev-server.d.ts +42 -0
- package/dist/server/app-dev-server.d.ts.map +1 -0
- package/dist/server/app-dev-server.js +2718 -0
- package/dist/server/app-dev-server.js.map +1 -0
- package/dist/server/app-router-entry.d.ts +18 -0
- package/dist/server/app-router-entry.d.ts.map +1 -0
- package/dist/server/app-router-entry.js +34 -0
- package/dist/server/app-router-entry.js.map +1 -0
- package/dist/server/dev-server.d.ts +40 -0
- package/dist/server/dev-server.d.ts.map +1 -0
- package/dist/server/dev-server.js +758 -0
- package/dist/server/dev-server.js.map +1 -0
- package/dist/server/html.d.ts +22 -0
- package/dist/server/html.d.ts.map +1 -0
- package/dist/server/html.js +29 -0
- package/dist/server/html.js.map +1 -0
- package/dist/server/image-optimization.d.ts +56 -0
- package/dist/server/image-optimization.d.ts.map +1 -0
- package/dist/server/image-optimization.js +103 -0
- package/dist/server/image-optimization.js.map +1 -0
- package/dist/server/instrumentation.d.ts +68 -0
- package/dist/server/instrumentation.d.ts.map +1 -0
- package/dist/server/instrumentation.js +90 -0
- package/dist/server/instrumentation.js.map +1 -0
- package/dist/server/isr-cache.d.ts +61 -0
- package/dist/server/isr-cache.d.ts.map +1 -0
- package/dist/server/isr-cache.js +134 -0
- package/dist/server/isr-cache.js.map +1 -0
- package/dist/server/metadata-routes.d.ts +103 -0
- package/dist/server/metadata-routes.d.ts.map +1 -0
- package/dist/server/metadata-routes.js +270 -0
- package/dist/server/metadata-routes.js.map +1 -0
- package/dist/server/middleware.d.ts +77 -0
- package/dist/server/middleware.d.ts.map +1 -0
- package/dist/server/middleware.js +228 -0
- package/dist/server/middleware.js.map +1 -0
- package/dist/server/prod-server.d.ts +78 -0
- package/dist/server/prod-server.d.ts.map +1 -0
- package/dist/server/prod-server.js +712 -0
- package/dist/server/prod-server.js.map +1 -0
- package/dist/shims/amp.d.ts +17 -0
- package/dist/shims/amp.d.ts.map +1 -0
- package/dist/shims/amp.js +21 -0
- package/dist/shims/amp.js.map +1 -0
- package/dist/shims/app.d.ts +12 -0
- package/dist/shims/app.d.ts.map +1 -0
- package/dist/shims/app.js +2 -0
- package/dist/shims/app.js.map +1 -0
- package/dist/shims/cache-runtime.d.ts +68 -0
- package/dist/shims/cache-runtime.d.ts.map +1 -0
- package/dist/shims/cache-runtime.js +437 -0
- package/dist/shims/cache-runtime.js.map +1 -0
- package/dist/shims/cache.d.ts +243 -0
- package/dist/shims/cache.d.ts.map +1 -0
- package/dist/shims/cache.js +415 -0
- package/dist/shims/cache.js.map +1 -0
- package/dist/shims/client-only.d.ts +18 -0
- package/dist/shims/client-only.d.ts.map +1 -0
- package/dist/shims/client-only.js +18 -0
- package/dist/shims/client-only.js.map +1 -0
- package/dist/shims/config.d.ts +27 -0
- package/dist/shims/config.d.ts.map +1 -0
- package/dist/shims/config.js +30 -0
- package/dist/shims/config.js.map +1 -0
- package/dist/shims/constants.d.ts +13 -0
- package/dist/shims/constants.d.ts.map +1 -0
- package/dist/shims/constants.js +13 -0
- package/dist/shims/constants.js.map +1 -0
- package/dist/shims/document.d.ts +33 -0
- package/dist/shims/document.d.ts.map +1 -0
- package/dist/shims/document.js +32 -0
- package/dist/shims/document.js.map +1 -0
- package/dist/shims/dynamic.d.ts +33 -0
- package/dist/shims/dynamic.d.ts.map +1 -0
- package/dist/shims/dynamic.js +148 -0
- package/dist/shims/dynamic.js.map +1 -0
- package/dist/shims/error-boundary.d.ts +33 -0
- package/dist/shims/error-boundary.d.ts.map +1 -0
- package/dist/shims/error-boundary.js +88 -0
- package/dist/shims/error-boundary.js.map +1 -0
- package/dist/shims/error.d.ts +16 -0
- package/dist/shims/error.d.ts.map +1 -0
- package/dist/shims/error.js +45 -0
- package/dist/shims/error.js.map +1 -0
- package/dist/shims/fetch-cache.d.ts +61 -0
- package/dist/shims/fetch-cache.d.ts.map +1 -0
- package/dist/shims/fetch-cache.js +307 -0
- package/dist/shims/fetch-cache.js.map +1 -0
- package/dist/shims/font-google.d.ts +122 -0
- package/dist/shims/font-google.d.ts.map +1 -0
- package/dist/shims/font-google.js +387 -0
- package/dist/shims/font-google.js.map +1 -0
- package/dist/shims/font-local.d.ts +61 -0
- package/dist/shims/font-local.d.ts.map +1 -0
- package/dist/shims/font-local.js +303 -0
- package/dist/shims/font-local.js.map +1 -0
- package/dist/shims/form.d.ts +30 -0
- package/dist/shims/form.d.ts.map +1 -0
- package/dist/shims/form.js +78 -0
- package/dist/shims/form.js.map +1 -0
- package/dist/shims/head-state.d.ts +11 -0
- package/dist/shims/head-state.d.ts.map +1 -0
- package/dist/shims/head-state.js +47 -0
- package/dist/shims/head-state.js.map +1 -0
- package/dist/shims/head.d.ts +28 -0
- package/dist/shims/head.d.ts.map +1 -0
- package/dist/shims/head.js +148 -0
- package/dist/shims/head.js.map +1 -0
- package/dist/shims/headers.d.ts +150 -0
- package/dist/shims/headers.d.ts.map +1 -0
- package/dist/shims/headers.js +412 -0
- package/dist/shims/headers.js.map +1 -0
- package/dist/shims/image-config.d.ts +30 -0
- package/dist/shims/image-config.d.ts.map +1 -0
- package/dist/shims/image-config.js +91 -0
- package/dist/shims/image-config.js.map +1 -0
- package/dist/shims/image.d.ts +63 -0
- package/dist/shims/image.d.ts.map +1 -0
- package/dist/shims/image.js +284 -0
- package/dist/shims/image.js.map +1 -0
- package/dist/shims/internal/api-utils.d.ts +12 -0
- package/dist/shims/internal/api-utils.d.ts.map +1 -0
- package/dist/shims/internal/api-utils.js +7 -0
- package/dist/shims/internal/api-utils.js.map +1 -0
- package/dist/shims/internal/app-router-context.d.ts +21 -0
- package/dist/shims/internal/app-router-context.d.ts.map +1 -0
- package/dist/shims/internal/app-router-context.js +15 -0
- package/dist/shims/internal/app-router-context.js.map +1 -0
- package/dist/shims/internal/cookies.d.ts +9 -0
- package/dist/shims/internal/cookies.d.ts.map +1 -0
- package/dist/shims/internal/cookies.js +9 -0
- package/dist/shims/internal/cookies.js.map +1 -0
- package/dist/shims/internal/router-context.d.ts +2 -0
- package/dist/shims/internal/router-context.d.ts.map +1 -0
- package/dist/shims/internal/router-context.js +9 -0
- package/dist/shims/internal/router-context.js.map +1 -0
- package/dist/shims/internal/utils.d.ts +48 -0
- package/dist/shims/internal/utils.d.ts.map +1 -0
- package/dist/shims/internal/utils.js +35 -0
- package/dist/shims/internal/utils.js.map +1 -0
- package/dist/shims/internal/work-unit-async-storage.d.ts +12 -0
- package/dist/shims/internal/work-unit-async-storage.d.ts.map +1 -0
- package/dist/shims/internal/work-unit-async-storage.js +13 -0
- package/dist/shims/internal/work-unit-async-storage.js.map +1 -0
- package/dist/shims/layout-segment-context.d.ts +21 -0
- package/dist/shims/layout-segment-context.d.ts.map +1 -0
- package/dist/shims/layout-segment-context.js +27 -0
- package/dist/shims/layout-segment-context.js.map +1 -0
- package/dist/shims/legacy-image.d.ts +52 -0
- package/dist/shims/legacy-image.d.ts.map +1 -0
- package/dist/shims/legacy-image.js +46 -0
- package/dist/shims/legacy-image.js.map +1 -0
- package/dist/shims/link.d.ts +48 -0
- package/dist/shims/link.d.ts.map +1 -0
- package/dist/shims/link.js +395 -0
- package/dist/shims/link.js.map +1 -0
- package/dist/shims/metadata.d.ts +184 -0
- package/dist/shims/metadata.d.ts.map +1 -0
- package/dist/shims/metadata.js +472 -0
- package/dist/shims/metadata.js.map +1 -0
- package/dist/shims/navigation-state.d.ts +14 -0
- package/dist/shims/navigation-state.d.ts.map +1 -0
- package/dist/shims/navigation-state.js +77 -0
- package/dist/shims/navigation-state.js.map +1 -0
- package/dist/shims/navigation.d.ts +201 -0
- package/dist/shims/navigation.d.ts.map +1 -0
- package/dist/shims/navigation.js +672 -0
- package/dist/shims/navigation.js.map +1 -0
- package/dist/shims/og.d.ts +20 -0
- package/dist/shims/og.d.ts.map +1 -0
- package/dist/shims/og.js +19 -0
- package/dist/shims/og.js.map +1 -0
- package/dist/shims/router-state.d.ts +11 -0
- package/dist/shims/router-state.d.ts.map +1 -0
- package/dist/shims/router-state.js +56 -0
- package/dist/shims/router-state.js.map +1 -0
- package/dist/shims/router.d.ts +103 -0
- package/dist/shims/router.d.ts.map +1 -0
- package/dist/shims/router.js +536 -0
- package/dist/shims/router.js.map +1 -0
- package/dist/shims/script.d.ts +58 -0
- package/dist/shims/script.d.ts.map +1 -0
- package/dist/shims/script.js +163 -0
- package/dist/shims/script.js.map +1 -0
- package/dist/shims/server-only.d.ts +19 -0
- package/dist/shims/server-only.d.ts.map +1 -0
- package/dist/shims/server-only.js +19 -0
- package/dist/shims/server-only.js.map +1 -0
- package/dist/shims/server.d.ts +178 -0
- package/dist/shims/server.d.ts.map +1 -0
- package/dist/shims/server.js +377 -0
- package/dist/shims/server.js.map +1 -0
- package/dist/shims/web-vitals.d.ts +24 -0
- package/dist/shims/web-vitals.d.ts.map +1 -0
- package/dist/shims/web-vitals.js +17 -0
- package/dist/shims/web-vitals.js.map +1 -0
- package/dist/utils/hash.d.ts +6 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +20 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/project.d.ts +36 -0
- package/dist/utils/project.d.ts.map +1 -0
- package/dist/utils/project.js +112 -0
- package/dist/utils/project.js.map +1 -0
- package/dist/utils/query.d.ts +10 -0
- package/dist/utils/query.d.ts.map +1 -0
- package/dist/utils/query.js +27 -0
- package/dist/utils/query.js.map +1 -0
- package/package.json +65 -7
- package/index.js +0 -1
|
@@ -0,0 +1,536 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* next/router shim
|
|
3
|
+
*
|
|
4
|
+
* Provides useRouter() hook and Router singleton for Pages Router.
|
|
5
|
+
* Backed by the browser History API. Supports client-side navigation
|
|
6
|
+
* by fetching new page data and re-rendering the React root.
|
|
7
|
+
*/
|
|
8
|
+
import { useState, useEffect, useCallback, useMemo } from "react";
|
|
9
|
+
/** basePath from next.config.js, injected by the plugin at build time */
|
|
10
|
+
const __basePath = process.env.__NEXT_ROUTER_BASEPATH ?? "";
|
|
11
|
+
/** Prepend basePath to a path for browser URLs / fetches */
|
|
12
|
+
function withBasePath(p) {
|
|
13
|
+
if (!__basePath)
|
|
14
|
+
return p;
|
|
15
|
+
return __basePath + p;
|
|
16
|
+
}
|
|
17
|
+
/** Strip basePath prefix from a browser pathname */
|
|
18
|
+
function stripBasePath(p) {
|
|
19
|
+
if (!__basePath)
|
|
20
|
+
return p;
|
|
21
|
+
if (p.startsWith(__basePath))
|
|
22
|
+
return p.slice(__basePath.length) || "/";
|
|
23
|
+
return p;
|
|
24
|
+
}
|
|
25
|
+
function createRouterEvents() {
|
|
26
|
+
const listeners = new Map();
|
|
27
|
+
return {
|
|
28
|
+
on(event, handler) {
|
|
29
|
+
if (!listeners.has(event))
|
|
30
|
+
listeners.set(event, new Set());
|
|
31
|
+
listeners.get(event).add(handler);
|
|
32
|
+
},
|
|
33
|
+
off(event, handler) {
|
|
34
|
+
listeners.get(event)?.delete(handler);
|
|
35
|
+
},
|
|
36
|
+
emit(event, ...args) {
|
|
37
|
+
listeners.get(event)?.forEach((handler) => handler(...args));
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
// Singleton events instance
|
|
42
|
+
const routerEvents = createRouterEvents();
|
|
43
|
+
function resolveUrl(url) {
|
|
44
|
+
if (typeof url === "string")
|
|
45
|
+
return url;
|
|
46
|
+
let result = url.pathname ?? "/";
|
|
47
|
+
if (url.query) {
|
|
48
|
+
const params = new URLSearchParams(url.query);
|
|
49
|
+
result += `?${params.toString()}`;
|
|
50
|
+
}
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Apply locale prefix to a URL for client-side navigation.
|
|
55
|
+
* Same logic as Link's applyLocaleToHref but reads from window globals.
|
|
56
|
+
*/
|
|
57
|
+
export function applyNavigationLocale(url, locale) {
|
|
58
|
+
if (!locale || typeof window === "undefined")
|
|
59
|
+
return url;
|
|
60
|
+
const defaultLocale = window.__VINEXT_DEFAULT_LOCALE__;
|
|
61
|
+
// Default locale doesn't get a prefix
|
|
62
|
+
if (locale === defaultLocale)
|
|
63
|
+
return url;
|
|
64
|
+
// Don't double-prefix
|
|
65
|
+
if (url.startsWith(`/${locale}/`) || url === `/${locale}`)
|
|
66
|
+
return url;
|
|
67
|
+
return `/${locale}${url.startsWith("/") ? url : `/${url}`}`;
|
|
68
|
+
}
|
|
69
|
+
/** Check if a URL is external */
|
|
70
|
+
export function isExternalUrl(url) {
|
|
71
|
+
return url.startsWith("http://") || url.startsWith("https://") || url.startsWith("//");
|
|
72
|
+
}
|
|
73
|
+
/** Check if a href is only a hash change relative to the current URL */
|
|
74
|
+
export function isHashOnlyChange(href) {
|
|
75
|
+
if (href.startsWith("#"))
|
|
76
|
+
return true;
|
|
77
|
+
if (typeof window === "undefined")
|
|
78
|
+
return false;
|
|
79
|
+
try {
|
|
80
|
+
const current = new URL(window.location.href);
|
|
81
|
+
const next = new URL(href, window.location.href);
|
|
82
|
+
return current.pathname === next.pathname && current.search === next.search && next.hash !== "";
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/** Scroll to hash target element, or top if no hash */
|
|
89
|
+
function scrollToHash(hash) {
|
|
90
|
+
if (!hash || hash === "#") {
|
|
91
|
+
window.scrollTo(0, 0);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const el = document.getElementById(hash.slice(1));
|
|
95
|
+
if (el)
|
|
96
|
+
el.scrollIntoView({ behavior: "auto" });
|
|
97
|
+
}
|
|
98
|
+
/** Save current scroll position into history state for back/forward restoration */
|
|
99
|
+
function saveScrollPosition() {
|
|
100
|
+
const state = window.history.state ?? {};
|
|
101
|
+
window.history.replaceState({ ...state, __vinext_scrollX: window.scrollX, __vinext_scrollY: window.scrollY }, "");
|
|
102
|
+
}
|
|
103
|
+
/** Restore scroll position from history state */
|
|
104
|
+
function restoreScrollPosition(state) {
|
|
105
|
+
if (state && typeof state === "object" && "__vinext_scrollY" in state) {
|
|
106
|
+
const { __vinext_scrollX: x, __vinext_scrollY: y } = state;
|
|
107
|
+
requestAnimationFrame(() => window.scrollTo(x, y));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// ---------------------------------------------------------------------------
|
|
111
|
+
// Server-side SSR state uses a registration pattern so this module can be
|
|
112
|
+
// bundled for the browser. The ALS-backed implementation lives in
|
|
113
|
+
// router-state.ts (server-only) and registers itself on import.
|
|
114
|
+
// ---------------------------------------------------------------------------
|
|
115
|
+
let _ssrContext = null;
|
|
116
|
+
let _getSSRContext = () => _ssrContext;
|
|
117
|
+
let _setSSRContextImpl = (ctx) => { _ssrContext = ctx; };
|
|
118
|
+
/**
|
|
119
|
+
* Register ALS-backed state accessors. Called by router-state.ts on import.
|
|
120
|
+
* @internal
|
|
121
|
+
*/
|
|
122
|
+
export function _registerRouterStateAccessors(accessors) {
|
|
123
|
+
_getSSRContext = accessors.getSSRContext;
|
|
124
|
+
_setSSRContextImpl = accessors.setSSRContext;
|
|
125
|
+
}
|
|
126
|
+
export function setSSRContext(ctx) {
|
|
127
|
+
_setSSRContextImpl(ctx);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Extract param names from a Next.js route pattern.
|
|
131
|
+
* E.g., "/posts/[id]" → ["id"], "/docs/[...slug]" → ["slug"],
|
|
132
|
+
* "/shop/[[...path]]" → ["path"], "/blog/[year]/[month]" → ["year", "month"]
|
|
133
|
+
* Also handles internal format: "/posts/:id" → ["id"], "/docs/:slug+" → ["slug"]
|
|
134
|
+
*/
|
|
135
|
+
function extractRouteParamNames(pattern) {
|
|
136
|
+
const names = [];
|
|
137
|
+
// Match Next.js bracket format: [id], [...slug], [[...slug]]
|
|
138
|
+
const bracketMatches = pattern.matchAll(/\[{1,2}(?:\.\.\.)?([\w-]+)\]{1,2}/g);
|
|
139
|
+
for (const m of bracketMatches) {
|
|
140
|
+
names.push(m[1]);
|
|
141
|
+
}
|
|
142
|
+
if (names.length > 0)
|
|
143
|
+
return names;
|
|
144
|
+
// Fallback: match internal :param format
|
|
145
|
+
const colonMatches = pattern.matchAll(/:([\w-]+)[+*]?/g);
|
|
146
|
+
for (const m of colonMatches) {
|
|
147
|
+
names.push(m[1]);
|
|
148
|
+
}
|
|
149
|
+
return names;
|
|
150
|
+
}
|
|
151
|
+
function getPathnameAndQuery() {
|
|
152
|
+
if (typeof window === "undefined") {
|
|
153
|
+
const _ssrCtx = _getSSRContext();
|
|
154
|
+
if (_ssrCtx) {
|
|
155
|
+
const query = {};
|
|
156
|
+
for (const [key, value] of Object.entries(_ssrCtx.query)) {
|
|
157
|
+
query[key] = Array.isArray(value) ? value.join(",") : value;
|
|
158
|
+
}
|
|
159
|
+
return { pathname: _ssrCtx.pathname, query, asPath: _ssrCtx.asPath };
|
|
160
|
+
}
|
|
161
|
+
return { pathname: "/", query: {}, asPath: "/" };
|
|
162
|
+
}
|
|
163
|
+
const pathname = stripBasePath(window.location.pathname);
|
|
164
|
+
const query = {};
|
|
165
|
+
// Include dynamic route params from __NEXT_DATA__ (e.g., { id: "42" } from /posts/[id]).
|
|
166
|
+
// Only include keys that are part of the route pattern (not stale query params).
|
|
167
|
+
const nextData = window.__NEXT_DATA__;
|
|
168
|
+
if (nextData && nextData.query && nextData.page) {
|
|
169
|
+
const routeParamNames = extractRouteParamNames(nextData.page);
|
|
170
|
+
for (const key of routeParamNames) {
|
|
171
|
+
const value = nextData.query[key];
|
|
172
|
+
if (typeof value === "string") {
|
|
173
|
+
query[key] = value;
|
|
174
|
+
}
|
|
175
|
+
else if (Array.isArray(value)) {
|
|
176
|
+
query[key] = value.join(",");
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// URL search params always reflect the current URL
|
|
181
|
+
const params = new URLSearchParams(window.location.search);
|
|
182
|
+
for (const [key, value] of params) {
|
|
183
|
+
query[key] = value;
|
|
184
|
+
}
|
|
185
|
+
const asPath = pathname + window.location.search;
|
|
186
|
+
return { pathname, query, asPath };
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Perform client-side navigation: fetch the target page's HTML,
|
|
190
|
+
* extract __NEXT_DATA__, and re-render the React root.
|
|
191
|
+
*/
|
|
192
|
+
let _navInProgress = false;
|
|
193
|
+
async function navigateClient(url) {
|
|
194
|
+
if (typeof window === "undefined")
|
|
195
|
+
return;
|
|
196
|
+
const win = window;
|
|
197
|
+
const root = win.__VINEXT_ROOT__;
|
|
198
|
+
if (!root) {
|
|
199
|
+
// No React root yet — fall back to hard navigation
|
|
200
|
+
window.location.href = url;
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
// Prevent re-entrant navigation (e.g., double popstate events)
|
|
204
|
+
if (_navInProgress)
|
|
205
|
+
return;
|
|
206
|
+
_navInProgress = true;
|
|
207
|
+
try {
|
|
208
|
+
// Fetch the target page's SSR HTML
|
|
209
|
+
const res = await fetch(url, { headers: { Accept: "text/html" } });
|
|
210
|
+
if (!res.ok) {
|
|
211
|
+
window.location.href = url;
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
const html = await res.text();
|
|
215
|
+
// Extract __NEXT_DATA__ from the HTML
|
|
216
|
+
const match = html.match(/<script>window\.__NEXT_DATA__\s*=\s*(.*?)<\/script>/);
|
|
217
|
+
if (!match) {
|
|
218
|
+
window.location.href = url;
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
const nextData = JSON.parse(match[1]);
|
|
222
|
+
const { pageProps } = nextData.props;
|
|
223
|
+
win.__NEXT_DATA__ = nextData;
|
|
224
|
+
// Get the page module URL from __NEXT_DATA__.__vinext (preferred),
|
|
225
|
+
// or fall back to parsing the hydration script
|
|
226
|
+
let pageModuleUrl = nextData.__vinext?.pageModuleUrl;
|
|
227
|
+
if (!pageModuleUrl) {
|
|
228
|
+
// Legacy fallback: try to find the module URL in the inline script
|
|
229
|
+
const moduleMatch = html.match(/import\("([^"]+)"\);\s*\n\s*const PageComponent/);
|
|
230
|
+
const altMatch = html.match(/await import\("([^"]+pages\/[^"]+)"\)/);
|
|
231
|
+
pageModuleUrl = moduleMatch?.[1] ?? altMatch?.[1] ?? undefined;
|
|
232
|
+
}
|
|
233
|
+
if (!pageModuleUrl) {
|
|
234
|
+
window.location.href = url;
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
// Dynamically import the new page module
|
|
238
|
+
const pageModule = await import(/* @vite-ignore */ pageModuleUrl);
|
|
239
|
+
const PageComponent = pageModule.default;
|
|
240
|
+
if (!PageComponent) {
|
|
241
|
+
window.location.href = url;
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
// Import React for createElement
|
|
245
|
+
const React = (await import("react")).default;
|
|
246
|
+
// Re-render with the new page, loading _app if needed
|
|
247
|
+
let AppComponent = win.__VINEXT_APP__;
|
|
248
|
+
const appModuleUrl = nextData.__vinext?.appModuleUrl;
|
|
249
|
+
if (!AppComponent && appModuleUrl) {
|
|
250
|
+
try {
|
|
251
|
+
const appModule = await import(/* @vite-ignore */ appModuleUrl);
|
|
252
|
+
AppComponent = appModule.default;
|
|
253
|
+
win.__VINEXT_APP__ = AppComponent;
|
|
254
|
+
}
|
|
255
|
+
catch {
|
|
256
|
+
// _app not available — continue without it
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
let element;
|
|
260
|
+
if (AppComponent) {
|
|
261
|
+
element = React.createElement(AppComponent, {
|
|
262
|
+
Component: PageComponent,
|
|
263
|
+
pageProps,
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
element = React.createElement(PageComponent, pageProps);
|
|
268
|
+
}
|
|
269
|
+
root.render(element);
|
|
270
|
+
}
|
|
271
|
+
catch (err) {
|
|
272
|
+
console.error("[vinext] Client navigation failed:", err);
|
|
273
|
+
routerEvents.emit("routeChangeError", err, url);
|
|
274
|
+
window.location.href = url;
|
|
275
|
+
}
|
|
276
|
+
finally {
|
|
277
|
+
_navInProgress = false;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* useRouter hook - Pages Router compatible.
|
|
282
|
+
*/
|
|
283
|
+
export function useRouter() {
|
|
284
|
+
const [{ pathname, query, asPath }, setState] = useState(getPathnameAndQuery);
|
|
285
|
+
useEffect(() => {
|
|
286
|
+
const onPopState = (e) => {
|
|
287
|
+
setState(getPathnameAndQuery());
|
|
288
|
+
// Re-render with the new page on back/forward navigation
|
|
289
|
+
navigateClient(window.location.pathname + window.location.search).then(() => {
|
|
290
|
+
restoreScrollPosition(e.state);
|
|
291
|
+
});
|
|
292
|
+
};
|
|
293
|
+
window.addEventListener("popstate", onPopState);
|
|
294
|
+
return () => window.removeEventListener("popstate", onPopState);
|
|
295
|
+
}, []);
|
|
296
|
+
// Listen for custom navigation events from Link component
|
|
297
|
+
useEffect(() => {
|
|
298
|
+
const onNavigate = ((_e) => {
|
|
299
|
+
setState(getPathnameAndQuery());
|
|
300
|
+
});
|
|
301
|
+
window.addEventListener("vinext:navigate", onNavigate);
|
|
302
|
+
return () => window.removeEventListener("vinext:navigate", onNavigate);
|
|
303
|
+
}, []);
|
|
304
|
+
const push = useCallback(async (url, _as, options) => {
|
|
305
|
+
const resolved = applyNavigationLocale(resolveUrl(url), options?.locale);
|
|
306
|
+
// External URLs — delegate to browser
|
|
307
|
+
if (isExternalUrl(resolved)) {
|
|
308
|
+
window.location.assign(resolved);
|
|
309
|
+
return true;
|
|
310
|
+
}
|
|
311
|
+
// Hash-only change — no page fetch needed
|
|
312
|
+
if (isHashOnlyChange(resolved)) {
|
|
313
|
+
const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
|
|
314
|
+
window.history.pushState({}, "", resolved.startsWith("#") ? resolved : withBasePath(resolved));
|
|
315
|
+
scrollToHash(hash);
|
|
316
|
+
setState(getPathnameAndQuery());
|
|
317
|
+
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
318
|
+
return true;
|
|
319
|
+
}
|
|
320
|
+
saveScrollPosition();
|
|
321
|
+
const full = withBasePath(resolved);
|
|
322
|
+
routerEvents.emit("routeChangeStart", resolved);
|
|
323
|
+
window.history.pushState({}, "", full);
|
|
324
|
+
if (!options?.shallow) {
|
|
325
|
+
await navigateClient(full);
|
|
326
|
+
}
|
|
327
|
+
setState(getPathnameAndQuery());
|
|
328
|
+
routerEvents.emit("routeChangeComplete", resolved);
|
|
329
|
+
// Scroll: handle hash target, else scroll to top unless scroll:false
|
|
330
|
+
const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
|
|
331
|
+
if (hash) {
|
|
332
|
+
scrollToHash(hash);
|
|
333
|
+
}
|
|
334
|
+
else if (options?.scroll !== false) {
|
|
335
|
+
window.scrollTo(0, 0);
|
|
336
|
+
}
|
|
337
|
+
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
338
|
+
return true;
|
|
339
|
+
}, []);
|
|
340
|
+
const replace = useCallback(async (url, _as, options) => {
|
|
341
|
+
const resolved = applyNavigationLocale(resolveUrl(url), options?.locale);
|
|
342
|
+
// External URLs — delegate to browser
|
|
343
|
+
if (isExternalUrl(resolved)) {
|
|
344
|
+
window.location.replace(resolved);
|
|
345
|
+
return true;
|
|
346
|
+
}
|
|
347
|
+
// Hash-only change — no page fetch needed
|
|
348
|
+
if (isHashOnlyChange(resolved)) {
|
|
349
|
+
const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
|
|
350
|
+
window.history.replaceState({}, "", resolved.startsWith("#") ? resolved : withBasePath(resolved));
|
|
351
|
+
scrollToHash(hash);
|
|
352
|
+
setState(getPathnameAndQuery());
|
|
353
|
+
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
354
|
+
return true;
|
|
355
|
+
}
|
|
356
|
+
const full = withBasePath(resolved);
|
|
357
|
+
routerEvents.emit("routeChangeStart", resolved);
|
|
358
|
+
window.history.replaceState({}, "", full);
|
|
359
|
+
if (!options?.shallow) {
|
|
360
|
+
await navigateClient(full);
|
|
361
|
+
}
|
|
362
|
+
setState(getPathnameAndQuery());
|
|
363
|
+
routerEvents.emit("routeChangeComplete", resolved);
|
|
364
|
+
// Scroll: handle hash target, else scroll to top unless scroll:false
|
|
365
|
+
const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
|
|
366
|
+
if (hash) {
|
|
367
|
+
scrollToHash(hash);
|
|
368
|
+
}
|
|
369
|
+
else if (options?.scroll !== false) {
|
|
370
|
+
window.scrollTo(0, 0);
|
|
371
|
+
}
|
|
372
|
+
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
373
|
+
return true;
|
|
374
|
+
}, []);
|
|
375
|
+
const back = useCallback(() => {
|
|
376
|
+
window.history.back();
|
|
377
|
+
}, []);
|
|
378
|
+
const reload = useCallback(() => {
|
|
379
|
+
window.location.reload();
|
|
380
|
+
}, []);
|
|
381
|
+
const prefetch = useCallback(async (url) => {
|
|
382
|
+
// Inject a <link rel="prefetch"> for the target page
|
|
383
|
+
if (typeof document !== "undefined") {
|
|
384
|
+
const link = document.createElement("link");
|
|
385
|
+
link.rel = "prefetch";
|
|
386
|
+
link.href = url;
|
|
387
|
+
link.as = "document";
|
|
388
|
+
document.head.appendChild(link);
|
|
389
|
+
}
|
|
390
|
+
}, []);
|
|
391
|
+
// Get i18n info from SSR context or window
|
|
392
|
+
const _ssrState = _getSSRContext();
|
|
393
|
+
const locale = typeof window === "undefined"
|
|
394
|
+
? _ssrState?.locale
|
|
395
|
+
: window.__VINEXT_LOCALE__;
|
|
396
|
+
const locales = typeof window === "undefined"
|
|
397
|
+
? _ssrState?.locales
|
|
398
|
+
: window.__VINEXT_LOCALES__;
|
|
399
|
+
const defaultLocale = typeof window === "undefined"
|
|
400
|
+
? _ssrState?.defaultLocale
|
|
401
|
+
: window.__VINEXT_DEFAULT_LOCALE__;
|
|
402
|
+
// route is the route pattern (e.g., "/posts/[id]"), not the actual path
|
|
403
|
+
const route = typeof window !== "undefined"
|
|
404
|
+
? (window.__NEXT_DATA__?.page ?? pathname)
|
|
405
|
+
: pathname;
|
|
406
|
+
const router = useMemo(() => ({
|
|
407
|
+
pathname,
|
|
408
|
+
route,
|
|
409
|
+
query,
|
|
410
|
+
asPath,
|
|
411
|
+
basePath: __basePath,
|
|
412
|
+
locale,
|
|
413
|
+
locales,
|
|
414
|
+
defaultLocale,
|
|
415
|
+
isReady: true,
|
|
416
|
+
isPreview: false,
|
|
417
|
+
isFallback: typeof window !== "undefined" && window.__NEXT_DATA__?.isFallback === true,
|
|
418
|
+
push,
|
|
419
|
+
replace,
|
|
420
|
+
back,
|
|
421
|
+
reload,
|
|
422
|
+
prefetch,
|
|
423
|
+
beforePopState: (cb) => { _beforePopStateCb = cb; },
|
|
424
|
+
events: routerEvents,
|
|
425
|
+
}), [pathname, query, asPath, locale, locales, defaultLocale, push, replace, back, reload, prefetch, route]);
|
|
426
|
+
return router;
|
|
427
|
+
}
|
|
428
|
+
// beforePopState callback: called before handling browser back/forward.
|
|
429
|
+
// If it returns false, the navigation is cancelled.
|
|
430
|
+
let _beforePopStateCb;
|
|
431
|
+
// Module-level popstate listener: handles browser back/forward by re-rendering
|
|
432
|
+
// the React root with the page at the new URL. This runs regardless of whether
|
|
433
|
+
// any component calls useRouter().
|
|
434
|
+
if (typeof window !== "undefined") {
|
|
435
|
+
window.addEventListener("popstate", (e) => {
|
|
436
|
+
const browserUrl = window.location.pathname + window.location.search;
|
|
437
|
+
const appUrl = stripBasePath(window.location.pathname) + window.location.search;
|
|
438
|
+
// Check beforePopState callback
|
|
439
|
+
if (_beforePopStateCb !== undefined) {
|
|
440
|
+
const shouldContinue = _beforePopStateCb({ url: appUrl, as: appUrl, options: { shallow: false } });
|
|
441
|
+
if (!shouldContinue)
|
|
442
|
+
return;
|
|
443
|
+
}
|
|
444
|
+
routerEvents.emit("routeChangeStart", appUrl);
|
|
445
|
+
navigateClient(browserUrl).then(() => {
|
|
446
|
+
routerEvents.emit("routeChangeComplete", appUrl);
|
|
447
|
+
restoreScrollPosition(e.state);
|
|
448
|
+
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
449
|
+
});
|
|
450
|
+
});
|
|
451
|
+
}
|
|
452
|
+
// Also export a default Router singleton for `import Router from 'next/router'`
|
|
453
|
+
const Router = {
|
|
454
|
+
push: async (url, _as, options) => {
|
|
455
|
+
const resolved = applyNavigationLocale(resolveUrl(url), options?.locale);
|
|
456
|
+
// External URLs
|
|
457
|
+
if (isExternalUrl(resolved)) {
|
|
458
|
+
window.location.assign(resolved);
|
|
459
|
+
return true;
|
|
460
|
+
}
|
|
461
|
+
// Hash-only change
|
|
462
|
+
if (isHashOnlyChange(resolved)) {
|
|
463
|
+
const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
|
|
464
|
+
window.history.pushState({}, "", resolved.startsWith("#") ? resolved : withBasePath(resolved));
|
|
465
|
+
scrollToHash(hash);
|
|
466
|
+
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
467
|
+
return true;
|
|
468
|
+
}
|
|
469
|
+
saveScrollPosition();
|
|
470
|
+
const full = withBasePath(resolved);
|
|
471
|
+
routerEvents.emit("routeChangeStart", resolved);
|
|
472
|
+
window.history.pushState({}, "", full);
|
|
473
|
+
if (!options?.shallow) {
|
|
474
|
+
await navigateClient(full);
|
|
475
|
+
}
|
|
476
|
+
routerEvents.emit("routeChangeComplete", resolved);
|
|
477
|
+
const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
|
|
478
|
+
if (hash) {
|
|
479
|
+
scrollToHash(hash);
|
|
480
|
+
}
|
|
481
|
+
else if (options?.scroll !== false) {
|
|
482
|
+
window.scrollTo(0, 0);
|
|
483
|
+
}
|
|
484
|
+
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
485
|
+
return true;
|
|
486
|
+
},
|
|
487
|
+
replace: async (url, _as, options) => {
|
|
488
|
+
const resolved = applyNavigationLocale(resolveUrl(url), options?.locale);
|
|
489
|
+
// External URLs
|
|
490
|
+
if (isExternalUrl(resolved)) {
|
|
491
|
+
window.location.replace(resolved);
|
|
492
|
+
return true;
|
|
493
|
+
}
|
|
494
|
+
// Hash-only change
|
|
495
|
+
if (isHashOnlyChange(resolved)) {
|
|
496
|
+
const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
|
|
497
|
+
window.history.replaceState({}, "", resolved.startsWith("#") ? resolved : withBasePath(resolved));
|
|
498
|
+
scrollToHash(hash);
|
|
499
|
+
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
500
|
+
return true;
|
|
501
|
+
}
|
|
502
|
+
const full = withBasePath(resolved);
|
|
503
|
+
routerEvents.emit("routeChangeStart", resolved);
|
|
504
|
+
window.history.replaceState({}, "", full);
|
|
505
|
+
if (!options?.shallow) {
|
|
506
|
+
await navigateClient(full);
|
|
507
|
+
}
|
|
508
|
+
routerEvents.emit("routeChangeComplete", resolved);
|
|
509
|
+
const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
|
|
510
|
+
if (hash) {
|
|
511
|
+
scrollToHash(hash);
|
|
512
|
+
}
|
|
513
|
+
else if (options?.scroll !== false) {
|
|
514
|
+
window.scrollTo(0, 0);
|
|
515
|
+
}
|
|
516
|
+
window.dispatchEvent(new CustomEvent("vinext:navigate"));
|
|
517
|
+
return true;
|
|
518
|
+
},
|
|
519
|
+
back: () => window.history.back(),
|
|
520
|
+
reload: () => window.location.reload(),
|
|
521
|
+
prefetch: async (url) => {
|
|
522
|
+
if (typeof document !== "undefined") {
|
|
523
|
+
const link = document.createElement("link");
|
|
524
|
+
link.rel = "prefetch";
|
|
525
|
+
link.href = url;
|
|
526
|
+
link.as = "document";
|
|
527
|
+
document.head.appendChild(link);
|
|
528
|
+
}
|
|
529
|
+
},
|
|
530
|
+
beforePopState: (cb) => {
|
|
531
|
+
_beforePopStateCb = cb;
|
|
532
|
+
},
|
|
533
|
+
events: routerEvents,
|
|
534
|
+
};
|
|
535
|
+
export default Router;
|
|
536
|
+
//# sourceMappingURL=router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/shims/router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* next/script shim
|
|
3
|
+
*
|
|
4
|
+
* Provides the <Script> component for loading third-party scripts with
|
|
5
|
+
* configurable loading strategies.
|
|
6
|
+
*
|
|
7
|
+
* Strategies:
|
|
8
|
+
* - "beforeInteractive": rendered as a <script> tag in SSR output
|
|
9
|
+
* - "afterInteractive" (default): loaded client-side after hydration
|
|
10
|
+
* - "lazyOnload": deferred until window.load + requestIdleCallback
|
|
11
|
+
* - "worker": sets type="text/partytown" (requires Partytown setup)
|
|
12
|
+
*/
|
|
13
|
+
import React from "react";
|
|
14
|
+
export interface ScriptProps {
|
|
15
|
+
/** Script source URL */
|
|
16
|
+
src?: string;
|
|
17
|
+
/** Loading strategy. Default: "afterInteractive" */
|
|
18
|
+
strategy?: "beforeInteractive" | "afterInteractive" | "lazyOnload" | "worker";
|
|
19
|
+
/** Unique identifier for the script */
|
|
20
|
+
id?: string;
|
|
21
|
+
/** Called when the script has loaded */
|
|
22
|
+
onLoad?: (e: Event) => void;
|
|
23
|
+
/** Called when the script is ready (after load, and on every re-render if already loaded) */
|
|
24
|
+
onReady?: () => void;
|
|
25
|
+
/** Called on script load error */
|
|
26
|
+
onError?: (e: Event) => void;
|
|
27
|
+
/** Inline script content */
|
|
28
|
+
children?: React.ReactNode;
|
|
29
|
+
/** Dangerous inner HTML */
|
|
30
|
+
dangerouslySetInnerHTML?: {
|
|
31
|
+
__html: string;
|
|
32
|
+
};
|
|
33
|
+
/** Script type attribute */
|
|
34
|
+
type?: string;
|
|
35
|
+
/** Async attribute */
|
|
36
|
+
async?: boolean;
|
|
37
|
+
/** Defer attribute */
|
|
38
|
+
defer?: boolean;
|
|
39
|
+
/** Crossorigin attribute */
|
|
40
|
+
crossOrigin?: string;
|
|
41
|
+
/** Nonce for CSP */
|
|
42
|
+
nonce?: string;
|
|
43
|
+
/** Integrity hash */
|
|
44
|
+
integrity?: string;
|
|
45
|
+
/** Additional attributes */
|
|
46
|
+
[key: string]: unknown;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Load a script imperatively (outside of React).
|
|
50
|
+
*/
|
|
51
|
+
export declare function handleClientScriptLoad(props: ScriptProps): void;
|
|
52
|
+
/**
|
|
53
|
+
* Initialize multiple scripts at once (called during app bootstrap).
|
|
54
|
+
*/
|
|
55
|
+
export declare function initScriptLoader(scripts: ScriptProps[]): void;
|
|
56
|
+
declare function Script(props: ScriptProps): React.ReactElement | null;
|
|
57
|
+
export default Script;
|
|
58
|
+
//# sourceMappingURL=script.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../../src/shims/script.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,QAAQ,CAAC,EAAE,mBAAmB,GAAG,kBAAkB,GAAG,YAAY,GAAG,QAAQ,CAAC;IAC9E,uCAAuC;IACvC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IAC5B,6FAA6F;IAC7F,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,kCAAkC;IAClC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IAC7B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,2BAA2B;IAC3B,uBAAuB,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,4BAA4B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sBAAsB;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAKD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CA6B/D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAI7D;AAED,iBAAS,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAgH7D;AAED,eAAe,MAAM,CAAC"}
|