reroute-js 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/README.md +144 -0
- package/cli/bin.d.ts +3 -0
- package/cli/bin.d.ts.map +1 -0
- package/cli/bin.js +812 -0
- package/cli/bin.js.map +15 -0
- package/cli/src/commands/build.d.ts +8 -0
- package/cli/src/commands/build.d.ts.map +1 -0
- package/cli/src/commands/dev.d.ts +8 -0
- package/cli/src/commands/dev.d.ts.map +1 -0
- package/cli/src/commands/gen.d.ts +3 -0
- package/cli/src/commands/gen.d.ts.map +1 -0
- package/cli/src/commands/init.d.ts +8 -0
- package/cli/src/commands/init.d.ts.map +1 -0
- package/cli/src/index.d.ts +8 -0
- package/cli/src/index.d.ts.map +1 -0
- package/cli/src/libs/tailwind.d.ts +18 -0
- package/cli/src/libs/tailwind.d.ts.map +1 -0
- package/core/index.d.ts +2 -0
- package/core/index.d.ts.map +1 -0
- package/core/index.js +1174 -0
- package/core/index.js.map +25 -0
- package/core/src/bundler/hash.d.ts +2 -0
- package/core/src/bundler/hash.d.ts.map +1 -0
- package/core/src/bundler/index.d.ts +3 -0
- package/core/src/bundler/index.d.ts.map +1 -0
- package/core/src/bundler/transpile.d.ts +4 -0
- package/core/src/bundler/transpile.d.ts.map +1 -0
- package/core/src/content/builder.d.ts +2 -0
- package/core/src/content/builder.d.ts.map +1 -0
- package/core/src/content/discovery.d.ts +5 -0
- package/core/src/content/discovery.d.ts.map +1 -0
- package/core/src/content/index.d.ts +5 -0
- package/core/src/content/index.d.ts.map +1 -0
- package/core/src/content/metadata.d.ts +9 -0
- package/core/src/content/metadata.d.ts.map +1 -0
- package/core/src/content/registry.d.ts +2 -0
- package/core/src/content/registry.d.ts.map +1 -0
- package/core/src/index.d.ts +7 -0
- package/core/src/index.d.ts.map +1 -0
- package/core/src/ssr/data.d.ts +9 -0
- package/core/src/ssr/data.d.ts.map +1 -0
- package/core/src/ssr/index.d.ts +4 -0
- package/core/src/ssr/index.d.ts.map +1 -0
- package/core/src/ssr/modules.d.ts +8 -0
- package/core/src/ssr/modules.d.ts.map +1 -0
- package/core/src/ssr/render.d.ts +20 -0
- package/core/src/ssr/render.d.ts.map +1 -0
- package/core/src/ssr/seed.d.ts +2 -0
- package/core/src/ssr/seed.d.ts.map +1 -0
- package/core/src/template/html.d.ts +4 -0
- package/core/src/template/html.d.ts.map +1 -0
- package/core/src/template/index.d.ts +2 -0
- package/core/src/template/index.d.ts.map +1 -0
- package/core/src/types.d.ts +50 -0
- package/core/src/types.d.ts.map +1 -0
- package/core/src/utils/cache.d.ts +12 -0
- package/core/src/utils/cache.d.ts.map +1 -0
- package/core/src/utils/compression.d.ts +5 -0
- package/core/src/utils/compression.d.ts.map +1 -0
- package/core/src/utils/index.d.ts +5 -0
- package/core/src/utils/index.d.ts.map +1 -0
- package/core/src/utils/mime.d.ts +3 -0
- package/core/src/utils/mime.d.ts.map +1 -0
- package/core/src/utils/path.d.ts +6 -0
- package/core/src/utils/path.d.ts.map +1 -0
- package/elysia/index.d.ts +2 -0
- package/elysia/index.d.ts.map +1 -0
- package/elysia/index.js +1829 -0
- package/elysia/index.js.map +32 -0
- package/elysia/src/index.d.ts +3 -0
- package/elysia/src/index.d.ts.map +1 -0
- package/elysia/src/plugin.d.ts +32 -0
- package/elysia/src/plugin.d.ts.map +1 -0
- package/elysia/src/routes/artifacts.d.ts +3 -0
- package/elysia/src/routes/artifacts.d.ts.map +1 -0
- package/elysia/src/routes/content.d.ts +3 -0
- package/elysia/src/routes/content.d.ts.map +1 -0
- package/elysia/src/routes/dev.d.ts +7 -0
- package/elysia/src/routes/dev.d.ts.map +1 -0
- package/elysia/src/routes/ssr.d.ts +18 -0
- package/elysia/src/routes/ssr.d.ts.map +1 -0
- package/elysia/src/routes/static.d.ts +19 -0
- package/elysia/src/routes/static.d.ts.map +1 -0
- package/elysia/src/types.d.ts +31 -0
- package/elysia/src/types.d.ts.map +1 -0
- package/elysia/src/utils/http.d.ts +5 -0
- package/elysia/src/utils/http.d.ts.map +1 -0
- package/package.json +74 -0
- package/react/index.d.ts +2 -0
- package/react/index.d.ts.map +1 -0
- package/react/index.js +1152 -0
- package/react/index.js.map +23 -0
- package/react/src/components/ContentRoute.d.ts +13 -0
- package/react/src/components/ContentRoute.d.ts.map +1 -0
- package/react/src/components/Link.d.ts +8 -0
- package/react/src/components/Link.d.ts.map +1 -0
- package/react/src/components/Outlet.d.ts +7 -0
- package/react/src/components/Outlet.d.ts.map +1 -0
- package/react/src/components/index.d.ts +4 -0
- package/react/src/components/index.d.ts.map +1 -0
- package/react/src/hooks/index.d.ts +7 -0
- package/react/src/hooks/index.d.ts.map +1 -0
- package/react/src/hooks/useContent.d.ts +26 -0
- package/react/src/hooks/useContent.d.ts.map +1 -0
- package/react/src/hooks/useData.d.ts +10 -0
- package/react/src/hooks/useData.d.ts.map +1 -0
- package/react/src/hooks/useNavigate.d.ts +6 -0
- package/react/src/hooks/useNavigate.d.ts.map +1 -0
- package/react/src/hooks/useParams.d.ts +6 -0
- package/react/src/hooks/useParams.d.ts.map +1 -0
- package/react/src/hooks/useRouter.d.ts +7 -0
- package/react/src/hooks/useRouter.d.ts.map +1 -0
- package/react/src/hooks/useSearchParams.d.ts +6 -0
- package/react/src/hooks/useSearchParams.d.ts.map +1 -0
- package/react/src/index.d.ts +6 -0
- package/react/src/index.d.ts.map +1 -0
- package/react/src/providers/ContentProvider.d.ts +35 -0
- package/react/src/providers/ContentProvider.d.ts.map +1 -0
- package/react/src/providers/RerouteProvider.d.ts +25 -0
- package/react/src/providers/RerouteProvider.d.ts.map +1 -0
- package/react/src/providers/RouterProvider.d.ts +23 -0
- package/react/src/providers/RouterProvider.d.ts.map +1 -0
- package/react/src/providers/index.d.ts +4 -0
- package/react/src/providers/index.d.ts.map +1 -0
- package/react/src/types/any.d.ts +3 -0
- package/react/src/types/any.d.ts.map +1 -0
- package/react/src/types/index.d.ts +3 -0
- package/react/src/types/index.d.ts.map +1 -0
- package/react/src/types/router.d.ts +32 -0
- package/react/src/types/router.d.ts.map +1 -0
- package/react/src/utils/content.d.ts +8 -0
- package/react/src/utils/content.d.ts.map +1 -0
- package/react/src/utils/head.d.ts +6 -0
- package/react/src/utils/head.d.ts.map +1 -0
- package/react/src/utils/index.d.ts +3 -0
- package/react/src/utils/index.d.ts.map +1 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../packages/react/src/components/ContentRoute.tsx", "../../packages/react/src/hooks/useContent.ts", "../../packages/react/src/providers/ContentProvider.tsx", "../../packages/react/src/utils/content.ts", "../../packages/react/src/hooks/useData.ts", "../../packages/react/src/hooks/useRouter.tsx", "../../packages/react/src/providers/RouterProvider.tsx", "../../packages/react/src/utils/head.ts", "../../packages/react/src/providers/RerouteProvider.tsx", "../../packages/react/src/hooks/useNavigate.tsx", "../../packages/react/src/hooks/useParams.tsx", "../../packages/react/src/hooks/useSearchParams.tsx", "../../packages/react/src/components/Link.tsx", "../../packages/react/src/components/Outlet.tsx"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import {\n\ttype ComponentType,\n\tisValidElement,\n\tuseEffect,\n\tuseMemo,\n\tuseState,\n} from 'react';\nimport { useParams, useRouter } from '../hooks';\nimport {\n\tuseContentGetEntry,\n\tuseContentIndex,\n} from '../providers/ContentProvider';\nimport type { Any } from '../types/any';\nimport { applyLang, applyPageMeta, applySsrHead } from '../utils/head';\n\ntype RerouteGetEntry = (\n\tcollection: string,\n\tname: string,\n) => { module?: string; component?: Any; meta?: Any } | undefined;\n\nfunction toComponent(x: Any): ComponentType {\n\tif (typeof x === 'function') return x as ComponentType;\n\tif (isValidElement(x)) return () => x as Any;\n\treturn () => null;\n}\n\nfunction ContentRoute({\n\tcollection,\n\tname,\n\tgetEntry,\n}: {\n\tcollection: string;\n\tname?: string;\n\tgetEntry?: RerouteGetEntry;\n}) {\n\tconst params = useParams<Record<string, string>>();\n\tconst { pathname, notFoundResolver } = useRouter() as Any;\n\tconst inferredName =\n\t\tname ||\n\t\tparams.slug ||\n\t\tparams.name ||\n\t\t(() => {\n\t\t\ttry {\n\t\t\t\tconst parts = String(pathname || '')\n\t\t\t\t\t.split('/')\n\t\t\t\t\t.filter(Boolean);\n\t\t\t\treturn parts.length >= 2 ? parts[1] : undefined;\n\t\t\t} catch {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t})();\n\tconst key = inferredName ? `${collection}:${inferredName}` : `${collection}:`;\n\tconst ctxGetEntry = useContentGetEntry();\n\tconst idx = useContentIndex();\n\tconst resolveEntry: RerouteGetEntry | undefined =\n\t\tgetEntry ||\n\t\tctxGetEntry ||\n\t\t((c, n) => {\n\t\t\ttry {\n\t\t\t\tconst list = (idx as Any)?.[c] as Any[] | undefined;\n\t\t\t\tif (!Array.isArray(list)) return undefined;\n\t\t\t\tconst found = list.find((e: Any) => e?.name === n);\n\t\t\t\tif (!found) return undefined;\n\t\t\t\treturn { module: found.module, meta: found.meta } as Any;\n\t\t\t} catch {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t});\n\tconst entry =\n\t\tinferredName && resolveEntry\n\t\t\t? resolveEntry(collection, inferredName)\n\t\t\t: undefined;\n\n\t// Do not auto-load the whole collection for a single content page.\n\t// Rely on SSR-seeded module and import-by-module when available.\n\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: That's fine\n\tconst initialComp = useMemo<ComponentType>(() => {\n\t\ttry {\n\t\t\tconst g: Any = globalThis as Any;\n\t\t\tconst C = g.__REROUTE_SSR_MODULES__?.[key];\n\t\t\tif (C) return toComponent(C);\n\t\t} catch {}\n\t\tif (typeof window !== 'undefined') {\n\t\t\tconst store = (window as Any).__REROUTE_MODULES__ || {};\n\t\t\tif (store[key]) return toComponent(store[key]);\n\t\t}\n\t\tif ((entry as Any)?.component) return toComponent((entry as Any).component);\n\t\t// Fallback to the nearest NotFound component if provided by router\n\t\ttry {\n\t\t\tconst nf =\n\t\t\t\ttypeof notFoundResolver === 'function'\n\t\t\t\t\t? notFoundResolver(pathname)\n\t\t\t\t\t: undefined;\n\t\t\tif (nf) return toComponent(nf);\n\t\t} catch {}\n\t\treturn () => null;\n\t}, [key, entry]);\n\n\tconst [Comp, setComp] = useState<ComponentType>(() => initialComp);\n\n\tuseEffect(() => {\n\t\tlet cancelled = false;\n\t\tif (entry?.module && typeof window !== 'undefined') {\n\t\t\timport(/* @vite-ignore */ entry.module)\n\t\t\t\t.then((m) => {\n\t\t\t\t\tif (cancelled) return;\n\t\t\t\t\tconst C = (m as Any).default || (m as Any);\n\t\t\t\t\tconst K = toComponent(C);\n\t\t\t\t\tsetComp(() => K);\n\t\t\t\t\tconst w = window as Any;\n\t\t\t\t\tw.__REROUTE_MODULES__ ||= {};\n\t\t\t\t\tw.__REROUTE_MODULES__[key] = C;\n\n\t\t\t\t\t// Update head from module exports if available\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst meta = (m as Any).meta || (m as Any).frontmatter;\n\t\t\t\t\t\tif (meta) applyPageMeta(meta);\n\t\t\t\t\t} catch {}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst ssr = (m as Any).ssr;\n\t\t\t\t\t\tif (ssr?.head) applySsrHead(ssr.head);\n\t\t\t\t\t\tif (ssr?.lang) applyLang(ssr.lang);\n\t\t\t\t\t} catch {}\n\t\t\t\t})\n\t\t\t\t.catch(() => {});\n\t\t}\n\t\treturn () => {\n\t\t\tcancelled = true;\n\t\t\t// Clear previously injected head items from ssr.head\n\t\t\tapplySsrHead(undefined);\n\t\t};\n\t}, [entry?.module, key]);\n\n\t// Apply title/description early based on registry meta\n\tuseEffect(() => {\n\t\ttry {\n\t\t\tif (entry && (entry as Any).meta) applyPageMeta((entry as Any).meta);\n\t\t} catch {}\n\t}, [entry]);\n\n\treturn <Comp />;\n}\n\nexport { ContentRoute };\n",
|
|
6
|
+
"import { useCallback, useEffect, useMemo, useState } from 'react';\nimport {\n\tuseContentIndex,\n\tuseContentLoadCollection,\n} from '../providers/ContentProvider';\nimport type { Any } from '../types/any';\n\ntype ContentMeta = Record<string, Any> | undefined;\n\ntype ContentListEntry = {\n\tcollection: string;\n\tname: string;\n\tslug?: string;\n\thref: string;\n\tmodule?: string;\n\tmeta?: ContentMeta;\n} & Record<string, Any>;\n\ntype UseContentCollectionParams = {\n\tcollection: string;\n\tsort?:\n\t\t| { date: 'asc' | 'desc' }\n\t\t| ((a: ContentListEntry, b: ContentListEntry) => number)\n\t\t| false;\n\t/** Optional limit for items returned and shipped by SSR */\n\tlimit?: number;\n};\n\ntype UseContentCollectionResult = {\n\titems: ContentListEntry[];\n\tprefetch: (\n\t\tentry: Pick<ContentListEntry, 'collection' | 'name' | 'module'>,\n\t) => void;\n};\n\nfunction sortByDate(\n\torder: 'asc' | 'desc',\n): (a: ContentListEntry, b: ContentListEntry) => number {\n\treturn (a: ContentListEntry, b: ContentListEntry) => {\n\t\tconst da =\n\t\t\ta?.meta && (a.meta as Any)?.date\n\t\t\t\t? Date.parse(String((a.meta as Any).date))\n\t\t\t\t: 0;\n\t\tconst db =\n\t\t\tb?.meta && (b.meta as Any)?.date\n\t\t\t\t? Date.parse(String((b.meta as Any).date))\n\t\t\t\t: 0;\n\t\treturn order === 'asc' ? da - db : db - da;\n\t};\n}\n\nexport function prefetchContent(\n\tentry: Pick<ContentListEntry, 'collection' | 'name' | 'module'>,\n): void {\n\tif (typeof window === 'undefined') return;\n\tconst modUrl = (entry as Any)?.module as string | undefined;\n\tif (!modUrl || typeof modUrl !== 'string') return;\n\ttry {\n\t\tconst key = `${entry.collection}:${entry.name}`;\n\t\tconst w = window as Any;\n\t\tif (!w.__REROUTE_MODULES__) w.__REROUTE_MODULES__ = {};\n\t\tconst store: Any = w.__REROUTE_MODULES__;\n\t\tif (store[key]) return;\n\t\timport(/* @vite-ignore */ modUrl)\n\t\t\t.then((m) => {\n\t\t\t\tconst C = (m as Any).default || (m as Any);\n\t\t\t\tstore[key] = C;\n\t\t\t})\n\t\t\t.catch(() => {});\n\t} catch {}\n}\n\nexport function useContent(\n\tparams: UseContentCollectionParams,\n): UseContentCollectionResult {\n\tconst { collection, sort = { date: 'desc' }, limit } = params;\n\t// During SSR, record that this collection was accessed so the server can\n\t// inline only the necessary lists in the HTML payload.\n\ttry {\n\t\tif (typeof window === 'undefined') {\n\t\t\tconst g = globalThis as Any;\n\t\t\tif (!g.__REROUTE_SSR_ACCESSED__) {\n\t\t\t\tg.__REROUTE_SSR_ACCESSED__ = {};\n\t\t\t}\n\t\t\tconst rec: Any = g.__REROUTE_SSR_ACCESSED__;\n\t\t\tconst existing: Any = rec[collection] || {};\n\t\t\tconst isCustomSort = typeof sort === 'function';\n\t\t\tconst sortKey = isCustomSort\n\t\t\t\t? 'custom'\n\t\t\t\t: sort === false\n\t\t\t\t\t? 'none'\n\t\t\t\t\t: typeof sort === 'string'\n\t\t\t\t\t\t? sort === 'date-asc'\n\t\t\t\t\t\t\t? 'date-asc'\n\t\t\t\t\t\t\t: 'date-desc'\n\t\t\t\t\t\t: typeof sort === 'object' && sort && (sort as Any).date === 'asc'\n\t\t\t\t\t\t\t? 'date-asc'\n\t\t\t\t\t\t\t: 'date-desc';\n\t\t\t// If mixed sorts are seen for the same collection, fall back to 'custom'\n\t\t\texisting.sort =\n\t\t\t\texisting.sort && existing.sort !== sortKey\n\t\t\t\t\t? 'custom'\n\t\t\t\t\t: existing.sort || sortKey;\n\t\t\tconst requested =\n\t\t\t\ttypeof limit === 'number' && limit > 0 ? limit : Infinity;\n\t\t\texisting.limit = Math.max(existing.limit || 0, requested);\n\t\t\trec[collection] = existing;\n\t\t}\n\t} catch {}\n\tconst index = useContentIndex();\n\tconst loadCollection = useContentLoadCollection();\n\tconst [_ready, setReady] = useState(false);\n\n\tuseEffect(() => {\n\t\tlet cancelled = false;\n\t\tasync function ensure() {\n\t\t\ttry {\n\t\t\t\tconst have = (index as Any)?.[collection] as Any[] | undefined;\n\t\t\t\t// In hydration, a subset may be inlined. If limit is undefined (caller expects full list)\n\t\t\t\t// or requested limit exceeds current subset size, try loading the full collection.\n\t\t\t\tconst w: Any | undefined =\n\t\t\t\t\ttypeof window !== 'undefined' ? (window as Any) : undefined;\n\t\t\t\tconst partial: boolean = Boolean(\n\t\t\t\t\tw?.__REROUTE_COLLECTIONS_PARTIAL__?.[collection],\n\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\t!have ||\n\t\t\t\t\t(partial &&\n\t\t\t\t\t\t(!limit || (typeof limit === 'number' && have.length < limit)))\n\t\t\t\t) {\n\t\t\t\t\tif (loadCollection) await loadCollection(collection);\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tif (!cancelled) setReady(true);\n\t\t\t}\n\t\t}\n\t\tensure();\n\t\treturn () => {\n\t\t\tcancelled = true;\n\t\t};\n\t}, [collection, index, loadCollection, limit]);\n\n\tconst items = useMemo<ContentListEntry[]>(() => {\n\t\tconst source = index || {};\n\t\tconst list = (source as Any)?.[collection] as\n\t\t\t| ContentListEntry[]\n\t\t\t| undefined;\n\t\tif (!Array.isArray(list) || list.length === 0)\n\t\t\treturn [] as ContentListEntry[];\n\t\tlet cloned = [...list];\n\t\tif (typeof sort === 'function') cloned = cloned.sort(sort);\n\t\telse if (typeof sort === 'string') {\n\t\t\tcloned = cloned.sort(sortByDate(sort === 'date-asc' ? 'asc' : 'desc'));\n\t\t} else if (sort && typeof sort === 'object' && (sort as Any).date) {\n\t\t\tcloned = cloned.sort(\n\t\t\t\tsortByDate((sort as Any).date === 'asc' ? 'asc' : 'desc'),\n\t\t\t);\n\t\t}\n\t\t// sort === false -> leave as-is\n\t\tif (typeof limit === 'number' && limit >= 0)\n\t\t\tcloned = cloned.slice(0, limit);\n\t\treturn cloned;\n\t}, [index, collection, sort, limit]);\n\n\tconst prefetch = useCallback(\n\t\t(entry: Pick<ContentListEntry, 'collection' | 'name' | 'module'>) =>\n\t\t\tprefetchContent(entry),\n\t\t[],\n\t);\n\n\treturn { items, prefetch };\n}\n\nexport type {\n\tContentListEntry,\n\tUseContentCollectionParams,\n\tUseContentCollectionResult,\n};\n",
|
|
7
|
+
"import {\n\tcreateContext,\n\ttype ReactNode,\n\tuseCallback,\n\tuseContext,\n\tuseMemo,\n\tuseState,\n} from 'react';\nimport type { Any } from '../types/any';\nimport { createResolverFromGetEntry, parseContentHref } from '../utils/content';\n\ntype ContentRef =\n\t| { collection: string; name: string; module?: string }\n\t| undefined;\n\ntype ContentResolver = (href: string) => ContentRef;\n\nconst ContentRegistryContext = createContext<ContentResolver | null>(null);\nconst ContentIndexContext = createContext<Record<string, Any[]> | null>(null);\nconst ContentGetEntryContext = createContext<\n\t((collection: string, name: string) => Any | undefined) | null\n>(null);\nconst ContentLoadCollectionContext = createContext<\n\t((collection: string) => Promise<Any[] | undefined>) | null\n>(null);\n\ntype ContentProviderProps = {\n\tchildren?: ReactNode;\n\t/**\n\t * Resolve a content link target to a content reference.\n\t * Return collection + name + module (if known) for optimal prefetching.\n\t */\n\tresolveByHref?: ContentResolver;\n\t/** Optional access to the app's content registry getter (e.g., .reroute/content#getContentEntry) */\n\tgetEntry?: (collection: string, name: string) => Any | undefined;\n\t/** Optional prebuilt byCollection index (e.g., from .reroute/content) */\n\tbyCollection?: Record<string, Any[]> | null;\n\t/** Optional lazy loader that loads a single collection at a time */\n\tloadCollection?: (collection: string) => Promise<{ items: Any[] } | Any>;\n};\n\nfunction ContentProvider({\n\tchildren,\n\tresolveByHref,\n\tgetEntry,\n\tbyCollection,\n\tloadCollection,\n}: ContentProviderProps) {\n\tconst [idx, setIdx] = useState<Record<string, Any[]>>(() => {\n\t\tconst seededClient: Record<string, Any[]> = (() => {\n\t\t\ttry {\n\t\t\t\tif (typeof window !== 'undefined') {\n\t\t\t\t\tconst w = window as Any;\n\t\t\t\t\treturn (w.__REROUTE_COLLECTIONS__ as Record<string, Any[]>) || {};\n\t\t\t\t}\n\t\t\t} catch {}\n\t\t\treturn {};\n\t\t})();\n\t\tconst seededServer: Record<string, Any[]> = (() => {\n\t\t\ttry {\n\t\t\t\tif (typeof window === 'undefined') {\n\t\t\t\t\tconst g = globalThis as Any;\n\t\t\t\t\treturn (g.__REROUTE_COLLECTIONS__ as Record<string, Any[]>) || {};\n\t\t\t\t}\n\t\t\t} catch {}\n\t\t\treturn {};\n\t\t})();\n\t\treturn {\n\t\t\t...(byCollection || {}),\n\t\t\t...seededServer,\n\t\t\t...seededClient,\n\t\t} as Record<string, Any[]>;\n\t});\n\tconst entryFn = getEntry || null;\n\n\tconst resolver = useMemo<ContentResolver | null>(() => {\n\t\tif (typeof resolveByHref === 'function') return resolveByHref;\n\t\tif (typeof getEntry === 'function')\n\t\t\treturn createResolverFromGetEntry(getEntry);\n\t\t// Fallback: resolve from in-memory index when available (no bundling)\n\t\treturn (href: string) => {\n\t\t\tconst parsed = parseContentHref(href);\n\t\t\tif (!parsed) return undefined;\n\t\t\ttry {\n\t\t\t\tconst list = (idx as Any)?.[parsed.collection] as Any[] | undefined;\n\t\t\t\tif (Array.isArray(list)) {\n\t\t\t\t\tconst found = list.find((e: Any) => e?.name === parsed.name) as\n\t\t\t\t\t\t| Any\n\t\t\t\t\t\t| undefined;\n\t\t\t\t\tif (found && typeof found.module === 'string') {\n\t\t\t\t\t\treturn { ...parsed, module: found.module };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch {}\n\t\t\treturn parsed;\n\t\t};\n\t}, [resolveByHref, getEntry, idx]);\n\n\tconst ensureCollection = useCallback(\n\t\tasync (collection: string): Promise<Any[] | undefined> => {\n\t\t\ttry {\n\t\t\t\tconst existing = (idx as Any)[collection];\n\t\t\t\tif (Array.isArray(existing) && existing.length) return existing;\n\t\t\t\tif (!loadCollection) return existing;\n\t\t\t\tconst mod = await loadCollection(collection);\n\t\t\t\tconst items = ((mod as Any).items || (mod as Any).list || []) as Any[];\n\t\t\t\tif (Array.isArray(items)) {\n\t\t\t\t\tsetIdx((prev) => ({ ...(prev || {}), [collection]: items }));\n\t\t\t\t\treturn items;\n\t\t\t\t}\n\t\t\t\treturn existing;\n\t\t\t} catch {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t},\n\t\t[idx, loadCollection],\n\t);\n\n\treturn (\n\t\t<ContentRegistryContext.Provider value={resolver}>\n\t\t\t<ContentIndexContext.Provider value={idx}>\n\t\t\t\t<ContentGetEntryContext.Provider value={entryFn}>\n\t\t\t\t\t<ContentLoadCollectionContext.Provider value={ensureCollection}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</ContentLoadCollectionContext.Provider>\n\t\t\t\t</ContentGetEntryContext.Provider>\n\t\t\t</ContentIndexContext.Provider>\n\t\t</ContentRegistryContext.Provider>\n\t);\n}\n\nfunction useContentResolver(): ContentResolver | null {\n\treturn useContext(ContentRegistryContext);\n}\n\nexport { ContentProvider, useContentResolver };\nfunction useContentIndex(): Record<string, Any[]> | null {\n\treturn useContext(ContentIndexContext);\n}\n\nexport { useContentIndex };\nexport type { ContentRef, ContentResolver };\n\nfunction useContentGetEntry():\n\t| ((collection: string, name: string) => Any | undefined)\n\t| null {\n\treturn useContext(ContentGetEntryContext);\n}\n\nexport { useContentGetEntry };\n\nfunction useContentLoadCollection():\n\t| ((collection: string) => Promise<Any[] | undefined>)\n\t| null {\n\treturn useContext(ContentLoadCollectionContext);\n}\n\nexport { useContentLoadCollection };\n",
|
|
8
|
+
"import type { ContentRef, ContentResolver } from '../providers/ContentProvider';\nimport type { Any } from '../types/any';\n\nexport function parseContentHref(\n\thref: string,\n): { collection: string; name: string } | undefined {\n\ttry {\n\t\tconst url = new URL(href, 'http://local');\n\t\tconst [collection, name] = url.pathname.split('/').filter(Boolean);\n\t\tif (!collection || !name) return undefined;\n\t\treturn { collection, name };\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nexport function createResolverFromGetEntry(\n\tgetEntry: (collection: string, name: string) => Any | undefined,\n): ContentResolver {\n\treturn (href: string): ContentRef => {\n\t\tconst parsed = parseContentHref(href);\n\t\tif (!parsed) return undefined;\n\t\ttry {\n\t\t\tconst entry = getEntry(parsed.collection, parsed.name) as Any;\n\t\t\tif (!entry) return parsed;\n\t\t\tconst moduleUrl = (entry as Any)?.module as string | undefined;\n\t\t\treturn moduleUrl ? { ...parsed, module: moduleUrl } : parsed;\n\t\t} catch {\n\t\t\treturn parsed;\n\t\t}\n\t};\n}\n",
|
|
9
|
+
"import { useEffect, useMemo, useState } from 'react';\nimport type { Any } from '../types/any';\nimport { useRouter } from './useRouter';\n\n/**\n * Read SSR-seeded route data without loaders.\n * - On server: reads from globalThis.__REROUTE_DATA__\n * - On client: reads from window.__REROUTE_DATA__\n *\n * By default uses the current pathname as the key. You may pass a custom key\n * when seeding multiple entries.\n */\nexport function useData<T = unknown>(key?: string): T | undefined {\n\tconst { pathname } = useRouter();\n\tconst k = key || pathname;\n\tconst [_tick, setTick] = useState(0);\n\n\tuseEffect(() => {\n\t\tif (typeof window === 'undefined') return;\n\t\tconst handler = (e: Event) => {\n\t\t\ttry {\n\t\t\t\tconst detail = (e as CustomEvent).detail as Any;\n\t\t\t\tif (detail?.key && detail.key !== k) return;\n\t\t\t\tsetTick((x) => x + 1);\n\t\t\t} catch {}\n\t\t};\n\t\twindow.addEventListener('__reroute_data__' as Any, handler as Any);\n\t\treturn () => {\n\t\t\ttry {\n\t\t\t\twindow.removeEventListener('__reroute_data__' as Any, handler as Any);\n\t\t\t} catch {}\n\t\t};\n\t}, [k]);\n\n\t// Client fallback: if there is no seeded data for this key after SPA navigation,\n\t// lazily fetch it from the server once. This covers static routes that still\n\t// export ssr.data (e.g., home page) without requiring link-time prefetch.\n\tuseEffect(() => {\n\t\tif (typeof window === 'undefined') return;\n\t\ttry {\n\t\t\tconst w = window as Any;\n\t\t\tw.__REROUTE_DATA__ = w.__REROUTE_DATA__ || {};\n\t\t\tif ((w.__REROUTE_DATA__ as Any)[k] !== undefined) return;\n\n\t\t\t// Deduplicate concurrent fetches for the same key\n\t\t\tw.__REROUTE_DATA_PENDING__ = w.__REROUTE_DATA_PENDING__ || ({} as Any);\n\t\t\tconst pending = w.__REROUTE_DATA_PENDING__;\n\t\t\tif (pending[k]) return;\n\t\t\tpending[k] = true;\n\n\t\t\tfetch(`/__reroute_data?path=${encodeURIComponent(k)}`, {\n\t\t\t\theaders: { Accept: 'application/json' },\n\t\t\t\tcredentials: 'same-origin',\n\t\t\t})\n\t\t\t\t.then((r) => (r.ok ? r.json() : null))\n\t\t\t\t.then((j) => {\n\t\t\t\t\tif (!j) return;\n\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[k] = j.data ?? j;\n\t\t\t\t\t// Force a local re-render even if event listeners aren't attached yet\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsetTick((x) => x + 1);\n\t\t\t\t\t} catch {}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\tdetail: { key: k },\n\t\t\t\t\t\t\t}) as Any,\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch {}\n\t\t\t\t})\n\t\t\t\t.catch(() => {})\n\t\t\t\t.finally(() => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tdelete (w.__REROUTE_DATA_PENDING__ as Any)[k];\n\t\t\t\t\t} catch {}\n\t\t\t\t});\n\t\t} catch {}\n\t}, [k]);\n\n\treturn useMemo(() => {\n\t\ttry {\n\t\t\tif (typeof window === 'undefined') {\n\t\t\t\tconst g = globalThis as Any;\n\t\t\t\treturn (g.__REROUTE_DATA__ as Record<string, T> | undefined)?.[k];\n\t\t\t}\n\t\t\tconst w = window as Any;\n\t\t\treturn (w.__REROUTE_DATA__ as Record<string, T> | undefined)?.[k];\n\t\t} catch {\n\t\t\treturn undefined;\n\t\t}\n\t}, [k]);\n}\n",
|
|
10
|
+
"import { useContext } from 'react';\nimport { RouterContext } from '../providers';\nimport type { RouterContextFactory } from '../types/router';\n\n/**\n * Hook to access the router context.\n * Must be used within a RouterProvider.\n */\nexport function useRouter(): RouterContextFactory {\n\tconst context = useContext(RouterContext);\n\tif (!context) {\n\t\tthrow new Error('useRouter must be used within a RouterProvider');\n\t}\n\treturn context;\n}\n",
|
|
11
|
+
"import type { ReactNode } from 'react';\nimport React, {\n\tcreateContext,\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseSyncExternalStore,\n} from 'react';\nimport { flushSync } from 'react-dom';\nimport type { Any } from '../types/any';\nimport type {\n\tNavigateOptions,\n\tRouteMatch,\n\tRouterContextFactory,\n} from '../types/router';\nimport { applyLang, applyPageMeta, applyRouteHead } from '../utils/head';\n\n// Check if we're in a browser environment\nconst isBrowser =\n\ttypeof window !== 'undefined' && typeof window.document !== 'undefined';\n\nconst OutletContext = createContext<ReactNode>(null);\nconst RouterContext = createContext<RouterContextFactory | null>(null);\n\n// Create a simple store for location changes\nlet listeners: Array<() => void> = [];\nlet currentLocation = isBrowser\n\t? {\n\t\t\tpathname: window.location.pathname,\n\t\t\tsearch: window.location.search,\n\t\t\thash: window.location.hash,\n\t\t}\n\t: { pathname: '/', search: '', hash: '' };\n\ninterface RouterProviderProps {\n\tchildren?: ReactNode;\n\tlayouts?: readonly Any[];\n\tmatchRoute: (pathname: string) => RouteMatch | null;\n\tnotFoundRoutes?: readonly Any[];\n\tnotFound?: React.ComponentType;\n\tpathname?: string;\n\tviewTransitions?: boolean;\n\tscrollRestoration?: boolean;\n}\n\nfunction subscribe(listener: () => void) {\n\tif (!isBrowser) return () => {};\n\tlisteners.push(listener);\n\treturn () => {\n\t\tlisteners = listeners.filter((l) => l !== listener);\n\t};\n}\n\nfunction getSnapshot() {\n\treturn currentLocation;\n}\n\nfunction emitChange() {\n\tfor (const listener of listeners) {\n\t\tlistener();\n\t}\n}\n\n// Helper to check if view transitions are supported\nconst supportsViewTransitions =\n\ttypeof document !== 'undefined' && 'startViewTransition' in document;\n\n// Global flag to track if view transitions are enabled\nlet viewTransitionsEnabled = false;\n\nfunction setViewTransitionsEnabled(enabled: boolean) {\n\tviewTransitionsEnabled = enabled && supportsViewTransitions;\n}\n\n// Global flag to track if scroll restoration is enabled\nlet scrollRestorationEnabled = true;\n\nfunction setScrollRestorationEnabled(enabled: boolean) {\n\tscrollRestorationEnabled = enabled;\n}\n\n// Store scroll positions for each path for restoration on back/forward\nconst scrollPositions = new Map<string, { x: number; y: number }>();\n\nfunction navigateInternal(to: string, options: NavigateOptions = {}) {\n\tif (!isBrowser) return;\n\n\tconst url = new URL(to, window.location.origin);\n\n\tif (url.origin !== window.location.origin) {\n\t\t// External link\n\t\twindow.location.href = to;\n\t\treturn;\n\t}\n\n\tconst newPath = url.pathname + url.search + url.hash;\n\tconst currentPath =\n\t\twindow.location.pathname + window.location.search + window.location.hash;\n\n\tif (newPath === currentPath) return;\n\n\t// Save current scroll position before navigating away\n\tif (scrollRestorationEnabled) {\n\t\tscrollPositions.set(currentPath, {\n\t\t\tx: window.scrollX,\n\t\t\ty: window.scrollY,\n\t\t});\n\t}\n\n\tif (options.replace) {\n\t\twindow.history.replaceState(options.state || null, '', to);\n\t} else {\n\t\twindow.history.pushState(options.state || null, '', to);\n\t}\n\n\tconst updateState = () => {\n\t\tcurrentLocation = {\n\t\t\tpathname: url.pathname,\n\t\t\tsearch: url.search,\n\t\t\thash: url.hash,\n\t\t};\n\t\temitChange();\n\t};\n\n\tif (viewTransitionsEnabled) {\n\t\tdocument.startViewTransition(() => {\n\t\t\tflushSync(() => {\n\t\t\t\tupdateState();\n\t\t\t});\n\t\t});\n\t} else {\n\t\tupdateState();\n\t}\n\n\t// Scroll to top or hash (forward navigation always scrolls to top)\n\tif (url.hash) {\n\t\tconst element = document.querySelector(url.hash);\n\t\tif (element) {\n\t\t\telement.scrollIntoView({ behavior: 'smooth' });\n\t\t}\n\t} else {\n\t\twindow.scrollTo({ top: 0, behavior: 'instant' });\n\t}\n}\n\n/**\n * RouterProvider component that manages client-side routing with SSR support.\n * Uses React's useSyncExternalStore for proper hydration without mismatches.\n */\nfunction RouterProvider({\n\tchildren,\n\tlayouts = [],\n\tmatchRoute,\n\tnotFoundRoutes = [],\n\tnotFound: NotFound,\n\tpathname = '/',\n\tviewTransitions = true,\n\tscrollRestoration = true,\n}: RouterProviderProps) {\n\t// Set global view transitions and scroll restoration flags\n\tuseEffect(() => {\n\t\tsetViewTransitionsEnabled(viewTransitions);\n\t\tsetScrollRestorationEnabled(scrollRestoration);\n\t}, [viewTransitions, scrollRestoration]);\n\t// Create stable server snapshot reference that never changes\n\tconst serverSnapshotRef = React.useRef<{\n\t\tpathname: string;\n\t\tsearch: string;\n\t\thash: string;\n\t} | null>(null);\n\n\tif (!serverSnapshotRef.current) {\n\t\tif (isBrowser) {\n\t\t\t// During hydration, point to the exact same object reference\n\t\t\t// that getSnapshot() returns so useSyncExternalStore doesn't\n\t\t\t// detect a mismatch and trigger a second render.\n\t\t\tserverSnapshotRef.current = currentLocation;\n\t\t} else {\n\t\t\t// During pure SSR, use the pathname from props\n\t\t\tserverSnapshotRef.current = { pathname, search: '', hash: '' };\n\t\t}\n\t}\n\n\t// Return the same cached snapshot object every time\n\tconst getServerSnapshot = useCallback(() => serverSnapshotRef.current, []);\n\n\t// Use useSyncExternalStore for proper SSR hydration\n\tconst location =\n\t\tuseSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) ||\n\t\tcurrentLocation;\n\n\t// Initialize location on mount (client-side only)\n\t// Avoid emitting a change if nothing actually changed to prevent a redundant re-render after hydration\n\tuseEffect(() => {\n\t\tif (!isBrowser) return;\n\t\tconst next = {\n\t\t\tpathname: window.location.pathname,\n\t\t\tsearch: window.location.search,\n\t\t\thash: window.location.hash,\n\t\t};\n\t\tif (\n\t\t\tcurrentLocation.pathname !== next.pathname ||\n\t\t\tcurrentLocation.search !== next.search ||\n\t\t\tcurrentLocation.hash !== next.hash\n\t\t) {\n\t\t\tcurrentLocation = next;\n\t\t\temitChange();\n\t\t}\n\t}, []);\n\n\tconst target = useMemo(\n\t\t() => matchRoute(location.pathname),\n\t\t[location.pathname, matchRoute],\n\t);\n\n\tconst params = target?.params || {};\n\tconst searchParams = useMemo(\n\t\t() => new URLSearchParams(location.search),\n\t\t[location.search],\n\t);\n\n\tconst navigate = useCallback((to: string, options: NavigateOptions = {}) => {\n\t\tnavigateInternal(to, options);\n\t}, []);\n\n\t// Handle browser back/forward\n\tuseEffect(() => {\n\t\tif (!isBrowser) return;\n\n\t\tconst handlePopState = () => {\n\t\t\tconst next = {\n\t\t\t\tpathname: window.location.pathname,\n\t\t\t\tsearch: window.location.search,\n\t\t\t\thash: window.location.hash,\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tconst w = window as Any;\n\t\t\t\tw.__REROUTE_DATA__ = w.__REROUTE_DATA__ || {};\n\t\t\t\tconst have = (w.__REROUTE_DATA__ as Any)[next.pathname];\n\t\t\t\t// Only prefetch for dynamic routes; static/content pages don't need it\n\t\t\t\tconst isDynamic = !!matchRoute?.(next.pathname)?.route?.isDynamic;\n\t\t\t\tif (isDynamic && have === undefined) {\n\t\t\t\t\tlet updated = false;\n\t\t\t\t\tconst fallback = setTimeout(() => {\n\t\t\t\t\t\tif (updated) return;\n\t\t\t\t\t\tupdated = true;\n\t\t\t\t\t\tcurrentLocation = next;\n\t\t\t\t\t\temitChange();\n\t\t\t\t\t}, 250);\n\t\t\t\t\tfetch(`/__reroute_data?path=${encodeURIComponent(next.pathname)}`, {\n\t\t\t\t\t\theaders: { Accept: 'application/json' },\n\t\t\t\t\t\tcredentials: 'same-origin',\n\t\t\t\t\t})\n\t\t\t\t\t\t.then((r) => (r.ok ? r.json() : null))\n\t\t\t\t\t\t.then((j) => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst payload = j ? (j.data ?? j) : undefined;\n\t\t\t\t\t\t\t\tif (payload !== undefined)\n\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[next.pathname] = payload;\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\t\t\tdetail: { key: next.pathname },\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {})\n\t\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\t\tif (!updated) {\n\t\t\t\t\t\t\t\tclearTimeout(fallback);\n\t\t\t\t\t\t\t\tupdated = true;\n\t\t\t\t\t\t\t\tcurrentLocation = next;\n\t\t\t\t\t\t\t\temitChange();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\treturn; // we'll update after prefetch or fallback timer\n\t\t\t\t}\n\t\t\t} catch {}\n\n\t\t\tconst updateState = () => {\n\t\t\t\tcurrentLocation = next;\n\t\t\t\temitChange();\n\t\t\t};\n\n\t\t\tif (viewTransitionsEnabled) {\n\t\t\t\t(document as Any).startViewTransition(() => {\n\t\t\t\t\tflushSync(() => {\n\t\t\t\t\t\tupdateState();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tupdateState();\n\t\t\t}\n\n\t\t\t// Restore scroll position for back/forward navigation\n\t\t\tif (scrollRestorationEnabled) {\n\t\t\t\tconst nextPath = next.pathname + next.search + next.hash;\n\t\t\t\tconst savedPosition = scrollPositions.get(nextPath);\n\n\t\t\t\t// Small delay to let the DOM settle and view transition complete\n\t\t\t\tsetTimeout(\n\t\t\t\t\t() => {\n\t\t\t\t\t\tif (next.hash) {\n\t\t\t\t\t\t\t// Handle hash navigation\n\t\t\t\t\t\t\tconst element = document.querySelector(next.hash);\n\t\t\t\t\t\t\tif (element) {\n\t\t\t\t\t\t\t\telement.scrollIntoView({ behavior: 'smooth' });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (savedPosition) {\n\t\t\t\t\t\t\t// Restore saved scroll position\n\t\t\t\t\t\t\twindow.scrollTo({\n\t\t\t\t\t\t\t\ttop: savedPosition.y,\n\t\t\t\t\t\t\t\tleft: savedPosition.x,\n\t\t\t\t\t\t\t\tbehavior: 'instant',\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// If no saved position and no hash, keep current scroll (don't reset to top)\n\t\t\t\t\t},\n\t\t\t\t\tviewTransitionsEnabled ? 50 : 0,\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener('popstate', handlePopState);\n\t\treturn () => window.removeEventListener('popstate', handlePopState);\n\t}, [matchRoute]);\n\n\t// Intercept link clicks\n\tuseEffect(() => {\n\t\tif (!isBrowser) return;\n\n\t\tconst handleClick = (e: MouseEvent) => {\n\t\t\tconst target = (e.target as HTMLElement).closest('a');\n\t\t\tif (!target) return;\n\n\t\t\tconst href = target.getAttribute('href');\n\t\t\tif (!href) return;\n\n\t\t\t// Skip if:\n\t\t\t// - External link\n\t\t\t// - Download link\n\t\t\t// - Opens in new tab\n\t\t\t// - Modified click (ctrl/cmd/shift)\n\t\t\tif (\n\t\t\t\ttarget.target === '_blank' ||\n\t\t\t\ttarget.hasAttribute('download') ||\n\t\t\t\te.ctrlKey ||\n\t\t\t\te.metaKey ||\n\t\t\t\te.shiftKey ||\n\t\t\t\te.altKey\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst url = new URL(href, window.location.origin);\n\t\t\tif (url.origin !== window.location.origin) return;\n\n\t\t\t// Check if it's a route we handle\n\t\t\tconst match = matchRoute(url.pathname);\n\t\t\tif (!match) return;\n\n\t\t\te.preventDefault();\n\t\t\tnavigate(href);\n\t\t};\n\n\t\tdocument.addEventListener('click', handleClick);\n\t\treturn () => document.removeEventListener('click', handleClick);\n\t}, [navigate, matchRoute]);\n\n\t// Apply route-level meta/ssr if exported by the route module (non-content pages)\n\tuseEffect(() => {\n\t\tconst route: Any = target?.route as Any;\n\t\tif (!route) return;\n\t\ttry {\n\t\t\tif (route.meta) applyPageMeta(route.meta);\n\t\t} catch {}\n\t\ttry {\n\t\t\tconst ssr = route.ssr;\n\t\t\tif (ssr?.head) applyRouteHead(ssr.head);\n\t\t\tif (ssr?.lang) applyLang(ssr.lang);\n\t\t} catch {}\n\t\treturn () => {\n\t\t\t// Clear previously injected route-level head items\n\t\t\tapplyRouteHead(undefined);\n\t\t};\n\t}, [target]);\n\n\tconst notFoundResolver = useCallback(\n\t\t(pathname: string) => {\n\t\t\ttry {\n\t\t\t\t// Choose the most specific notFound whose pattern is a prefix of pathname\n\t\t\t\tconst list = Array.isArray(notFoundRoutes)\n\t\t\t\t\t? (notFoundRoutes as Any[])\n\t\t\t\t\t: [];\n\t\t\t\tlet chosen: Any | undefined;\n\t\t\t\tlet bestLen = -1;\n\t\t\t\tfor (const nf of list) {\n\t\t\t\t\tconst pat = String(nf?.pattern || '/');\n\t\t\t\t\tif (!pathname.startsWith(pat)) continue;\n\t\t\t\t\tconst len = pat.split('/').filter(Boolean).length;\n\t\t\t\t\tif (len >= bestLen) {\n\t\t\t\t\t\tbestLen = len;\n\t\t\t\t\t\tchosen = nf;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn chosen?.component as Any | undefined;\n\t\t\t} catch {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t},\n\t\t[notFoundRoutes],\n\t);\n\n\tconst contextValue = useMemo<RouterContextFactory>(\n\t\t() =>\n\t\t\t({\n\t\t\t\tpathname: location.pathname,\n\t\t\t\tparams,\n\t\t\t\tsearchParams,\n\t\t\t\tnavigate,\n\t\t\t\ttarget,\n\t\t\t\tmatchRoute,\n\t\t\t\tnotFoundResolver,\n\t\t\t}) as Any,\n\t\t[\n\t\t\tlocation.pathname,\n\t\t\tparams,\n\t\t\tsearchParams,\n\t\t\tnavigate,\n\t\t\ttarget,\n\t\t\tmatchRoute,\n\t\t\tnotFoundResolver,\n\t\t],\n\t);\n\n\t// Find matching layouts for the current pathname\n\tconst matchingLayouts = useMemo(() => {\n\t\treturn layouts\n\t\t\t.filter((layout: Any) => {\n\t\t\t\t// Layout matches if the current path starts with the layout's path\n\t\t\t\tif (layout.pattern === '/') return true;\n\t\t\t\treturn location.pathname.startsWith(layout.pattern);\n\t\t\t})\n\t\t\t.sort((a: Any, b: Any) => {\n\t\t\t\t// Sort by depth (more specific paths first)\n\t\t\t\treturn b.pattern.split('/').length - a.pattern.split('/').length;\n\t\t\t});\n\t}, [layouts, location.pathname]);\n\n\tlet content: ReactNode;\n\n\tif (target) {\n\t\tconst Component = target.route.component;\n\t\tlet outletContent: ReactNode = <Component />;\n\n\t\t// Build layout hierarchy from innermost to outermost\n\t\tfor (let i = matchingLayouts.length - 1; i >= 0; i--) {\n\t\t\tconst Layout = matchingLayouts[i].component;\n\t\t\tconst currentOutlet = outletContent;\n\t\t\toutletContent = (\n\t\t\t\t<OutletContext.Provider value={currentOutlet}>\n\t\t\t\t\t<Layout />\n\t\t\t\t</OutletContext.Provider>\n\t\t\t);\n\t\t}\n\n\t\tcontent = outletContent;\n\t} else {\n\t\tconst Fallback = (notFoundResolver(location.pathname) as Any) || NotFound;\n\t\tif (Fallback) {\n\t\t\tcontent = <Fallback />;\n\t\t} else {\n\t\t\tcontent = (\n\t\t\t\t<div style={{ padding: '2rem', textAlign: 'center' }}>\n\t\t\t\t\t<h1>404 - Page Not Found</h1>\n\t\t\t\t\t<p>The page {location.pathname} could not be found.</p>\n\t\t\t\t\t<a href='/'>Go Home</a>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t}\n\n\treturn (\n\t\t<RouterContext.Provider value={contextValue}>\n\t\t\t{children || content}\n\t\t</RouterContext.Provider>\n\t);\n}\n\nexport { OutletContext, RouterContext, RouterProvider };\n",
|
|
12
|
+
"import type { Any } from '../types/any';\n\nconst HEAD_ATTR = 'data-reroute-ssr-head';\nconst HEAD_ATTR_ROUTE = 'data-reroute-route-head';\n\nfunction isBrowser(): boolean {\n\treturn typeof document !== 'undefined' && typeof window !== 'undefined';\n}\n\nexport function applyPageMeta(meta: Any | undefined): void {\n\tif (!isBrowser() || !meta || typeof meta !== 'object') return;\n\ttry {\n\t\tconst title = typeof meta.title === 'string' ? meta.title : undefined;\n\t\tconst description =\n\t\t\ttypeof (meta as Any).description === 'string'\n\t\t\t\t? (meta as Any).description\n\t\t\t\t: typeof (meta as Any).excerpt === 'string'\n\t\t\t\t\t? (meta as Any).excerpt\n\t\t\t\t\t: undefined;\n\n\t\tif (title) document.title = title;\n\n\t\tif (description) {\n\t\t\tlet tag = document.head.querySelector(\n\t\t\t\t'meta[name=\"description\"]',\n\t\t\t) as HTMLMetaElement | null;\n\t\t\tif (!tag) {\n\t\t\t\ttag = document.createElement('meta');\n\t\t\t\ttag.setAttribute('name', 'description');\n\t\t\t\tdocument.head.appendChild(tag);\n\t\t\t}\n\t\t\ttag.setAttribute('content', description);\n\t\t}\n\t} catch {}\n}\n\nexport function applyLang(lang: Any | undefined): void {\n\tif (!isBrowser()) return;\n\tif (typeof lang === 'string' && lang.trim()) {\n\t\ttry {\n\t\t\tdocument.documentElement.lang = lang.trim();\n\t\t} catch {}\n\t}\n}\n\nexport function applySsrHead(head: Any | undefined): void {\n\tif (!isBrowser()) return;\n\ttry {\n\t\t// Remove previous injected nodes\n\t\tdocument.querySelectorAll(`[${HEAD_ATTR}]`).forEach((n) => {\n\t\t\tn.parentElement?.removeChild(n);\n\t\t});\n\n\t\tif (!head) return;\n\n\t\tconst parts: string[] = Array.isArray(head)\n\t\t\t? (head as Any[]).map((x) => String(x))\n\t\t\t: [String(head)];\n\t\tconst html = parts\n\t\t\t.map((p) => (typeof p === 'string' ? p : String(p)))\n\t\t\t.join('\\n');\n\t\tif (!html.trim()) return;\n\n\t\tconst tpl = document.createElement('template');\n\t\ttpl.innerHTML = html;\n\t\tconst nodes = Array.from(tpl.content.childNodes);\n\t\tfor (const node of nodes) {\n\t\t\tif (node.nodeType === Node.ELEMENT_NODE) {\n\t\t\t\t(node as Element).setAttribute(HEAD_ATTR, '');\n\t\t\t\tdocument.head.appendChild(node);\n\t\t\t}\n\t\t}\n\t} catch {}\n}\n\nexport function applyRouteHead(head: Any | undefined): void {\n\tif (!isBrowser()) return;\n\ttry {\n\t\t// Remove previous injected nodes for route-level head\n\t\tdocument.querySelectorAll(`[${HEAD_ATTR_ROUTE}]`).forEach((n) => {\n\t\t\tn.parentElement?.removeChild(n);\n\t\t});\n\n\t\tif (!head) return;\n\n\t\tconst parts: string[] = Array.isArray(head)\n\t\t\t? (head as Any[]).map((x) => String(x))\n\t\t\t: [String(head)];\n\t\tconst html = parts\n\t\t\t.map((p) => (typeof p === 'string' ? p : String(p)))\n\t\t\t.join('\\n');\n\t\tif (!html.trim()) return;\n\n\t\tconst tpl = document.createElement('template');\n\t\ttpl.innerHTML = html;\n\t\tconst nodes = Array.from(tpl.content.childNodes);\n\t\tfor (const node of nodes) {\n\t\t\tif (node.nodeType === Node.ELEMENT_NODE) {\n\t\t\t\t(node as Element).setAttribute(HEAD_ATTR_ROUTE, '');\n\t\t\t\tdocument.head.appendChild(node);\n\t\t\t}\n\t\t}\n\t} catch {}\n}\n",
|
|
13
|
+
"import type { ReactNode } from 'react';\nimport type { Any } from '../types/any';\nimport { ContentProvider } from './ContentProvider';\nimport { RouterProvider } from './RouterProvider';\n\ntype RerouteParams = {\n\tbyCollection?: Record<string, Any[]> | null;\n\tgetContentEntry?: (collection: string, name: string) => Any | undefined;\n\tloadContent?: () => Promise<{\n\t\tbyCollection: Record<string, Any[]>;\n\t\tgetContentEntry: (collection: string, name: string) => Any | undefined;\n\t}>;\n\tcontentBaseUrl?: string;\n\tlayouts?: readonly Any[];\n\tmatchRoute: (pathname: string) => Any;\n\tnotFoundRoutes?: readonly Any[];\n\tnotFound?: React.ComponentType;\n\tpathname?: string;\n\tviewTransitions?: boolean;\n\tscrollRestoration?: boolean;\n};\n\nfunction RerouteProvider({\n\tfrom,\n\tchildren,\n}: {\n\tfrom: RerouteParams;\n\tchildren?: ReactNode;\n}) {\n\tconst {\n\t\tbyCollection,\n\t\tgetContentEntry,\n\t\tloadContent,\n\t\tcontentBaseUrl,\n\t\tlayouts = [],\n\t\tmatchRoute,\n\t\tnotFoundRoutes,\n\t\tnotFound,\n\t\tpathname,\n\t\tviewTransitions,\n\t\tscrollRestoration,\n\t} = from;\n\tconst loader =\n\t\tloadContent ||\n\t\t(contentBaseUrl\n\t\t\t? (((c?: string) =>\n\t\t\t\t\timport(/* @vite-ignore */ `${contentBaseUrl}/${c}.js`)) as Any)\n\t\t\t: undefined);\n\n\treturn (\n\t\t<ContentProvider\n\t\t\tgetEntry={getContentEntry}\n\t\t\tbyCollection={byCollection || null}\n\t\t\tloadCollection={loader as Any}\n\t\t>\n\t\t\t<RouterProvider\n\t\t\t\tlayouts={layouts as Any[]}\n\t\t\t\tmatchRoute={matchRoute as Any}\n\t\t\t\tnotFoundRoutes={notFoundRoutes as Any}\n\t\t\t\tnotFound={notFound}\n\t\t\t\tpathname={pathname}\n\t\t\t\tviewTransitions={viewTransitions}\n\t\t\t\tscrollRestoration={scrollRestoration}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</RouterProvider>\n\t\t</ContentProvider>\n\t);\n}\n\nexport { RerouteProvider };\nexport type { RerouteParams };\n",
|
|
14
|
+
"import { useRouter } from './useRouter';\n\n/**\n * Hook to access the navigate function.\n * Must be used within a RouterProvider.\n */\nexport function useNavigate() {\n\tconst { navigate } = useRouter();\n\treturn navigate;\n}\n",
|
|
15
|
+
"import { useRouter } from './useRouter';\n\n/**\n * Hook to access URL parameters.\n * Must be used within a RouterProvider.\n */\nexport function useParams<\n\tT extends Record<string, string> = Record<string, string>,\n>(): T {\n\tconst { params } = useRouter();\n\treturn params as T;\n}\n",
|
|
16
|
+
"import { useRouter } from './useRouter';\n\n/**\n * Hook to access URL search parameters.\n * Must be used within a RouterProvider.\n */\nexport function useSearchParams(): URLSearchParams {\n\tconst { searchParams } = useRouter();\n\treturn searchParams;\n}\n",
|
|
17
|
+
"import { useCallback, useMemo } from 'react';\nimport { useRouter } from '../hooks';\nimport { prefetchContent } from '../hooks/useContent';\nimport {\n\tuseContentIndex,\n\tuseContentLoadCollection,\n\tuseContentResolver,\n} from '../providers/ContentProvider';\nimport type { Any } from '../types/any';\nimport type { LinkProps } from '../types/router';\n\n/**\n * Link component for client-side navigation.\n * Automatically prevents default behavior and uses the router's navigate function.\n */\nfunction Link({\n\tto,\n\treplace,\n\tstate,\n\tprefetch = true,\n\tonClick,\n\tonMouseEnter,\n\tonFocus,\n\t...props\n}: LinkProps) {\n\tconst { navigate, matchRoute } = useRouter();\n\tconst resolver = useContentResolver();\n\tconst contentIndex = useContentIndex();\n\tconst ensureCollection = useContentLoadCollection();\n\tconst inferred = useMemo(\n\t\t() => (resolver ? resolver(String(to)) : undefined),\n\t\t[resolver, to],\n\t);\n\n\tconst handleClick = useCallback(\n\t\tasync (e: React.MouseEvent<HTMLAnchorElement>) => {\n\t\t\tif (onClick) {\n\t\t\t\tonClick(e);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\te.defaultPrevented ||\n\t\t\t\te.button !== 0 ||\n\t\t\t\te.ctrlKey ||\n\t\t\t\te.metaKey ||\n\t\t\t\te.shiftKey ||\n\t\t\t\te.altKey ||\n\t\t\t\tprops.target === '_blank'\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\te.preventDefault();\n\t\t\t// Prefetch data for dynamic routes only; static/content pages don't need it\n\t\t\tif (prefetch) {\n\t\t\t\ttry {\n\t\t\t\t\tif (typeof window !== 'undefined') {\n\t\t\t\t\t\tconst url = new URL(String(to), window.location.origin);\n\t\t\t\t\t\tif (url.origin === window.location.origin) {\n\t\t\t\t\t\t\tconst path = url.pathname;\n\t\t\t\t\t\t\tconst isDynamic = !!matchRoute?.(path)?.route?.isDynamic;\n\t\t\t\t\t\t\tconst w = window as Any;\n\t\t\t\t\t\t\tw.__REROUTE_DATA__ = w.__REROUTE_DATA__ || {};\n\t\t\t\t\t\t\t// Skip for content links (inferred) and non-dynamic routes\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tisDynamic &&\n\t\t\t\t\t\t\t\t(!inferred || !inferred.module) &&\n\t\t\t\t\t\t\t\tw.__REROUTE_DATA__[path] === undefined\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tconst ctl = new AbortController();\n\t\t\t\t\t\t\t\tconst timer = setTimeout(() => ctl.abort(), 350);\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tconst r = await fetch(\n\t\t\t\t\t\t\t\t\t\t`/__reroute_data?path=${encodeURIComponent(path)}`,\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\theaders: { Accept: 'application/json' },\n\t\t\t\t\t\t\t\t\t\t\tcredentials: 'same-origin',\n\t\t\t\t\t\t\t\t\t\t\tsignal: ctl.signal,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t).catch(() => null);\n\t\t\t\t\t\t\t\t\tif (r?.ok) {\n\t\t\t\t\t\t\t\t\t\tconst j = await r.json().catch(() => null);\n\t\t\t\t\t\t\t\t\t\tif (j) {\n\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[path] = j.data ?? j;\n\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdetail: { key: path },\n\t\t\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch {}\n\t\t\t}\n\t\t\tnavigate(to, { replace, state });\n\t\t},\n\t\t[\n\t\t\tnavigate,\n\t\t\tto,\n\t\t\treplace,\n\t\t\tstate,\n\t\t\tonClick,\n\t\t\tprops.target,\n\t\t\tprefetch,\n\t\t\tinferred,\n\t\t\tmatchRoute,\n\t\t],\n\t);\n\n\tconst handleMouseEnter = useCallback<\n\t\tNonNullable<React.AnchorHTMLAttributes<HTMLAnchorElement>['onMouseEnter']>\n\t>(\n\t\t(e) => {\n\t\t\tif (prefetch && inferred && inferred.module) prefetchContent(inferred);\n\t\t\telse if (prefetch) {\n\t\t\t\ttry {\n\t\t\t\t\tif (typeof window !== 'undefined') {\n\t\t\t\t\t\tconst url = new URL(String(to), window.location.origin);\n\t\t\t\t\t\tif (url.origin === window.location.origin) {\n\t\t\t\t\t\t\tconst path = url.pathname;\n\t\t\t\t\t\t\tconst isDynamic = !!matchRoute?.(path)?.route?.isDynamic;\n\t\t\t\t\t\t\t// Fallback for content links without module: load collection then prefetch\n\t\t\t\t\t\t\t// Only try to load collections we already know exist (avoid 404s like /products)\n\t\t\t\t\t\t\tconst known = !!(\n\t\t\t\t\t\t\t\tcontentIndex &&\n\t\t\t\t\t\t\t\tinferred &&\n\t\t\t\t\t\t\t\tinferred.collection in (contentIndex as Any)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (inferred && !inferred.module && ensureCollection && known) {\n\t\t\t\t\t\t\t\t(async () => {\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tconst items: Any[] | undefined = await ensureCollection(\n\t\t\t\t\t\t\t\t\t\t\tinferred.collection,\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\tconst found = (items || []).find(\n\t\t\t\t\t\t\t\t\t\t\t(e: Any) => e?.name === inferred.name,\n\t\t\t\t\t\t\t\t\t\t) as Any | undefined;\n\t\t\t\t\t\t\t\t\t\tconst mod = (found as Any)?.module as string | undefined;\n\t\t\t\t\t\t\t\t\t\tif (mod) prefetchContent({ ...inferred, module: mod });\n\t\t\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t\t\t})();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst w = window as Any;\n\t\t\t\t\t\t\tw.__REROUTE_DATA__ = w.__REROUTE_DATA__ || {};\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tisDynamic &&\n\t\t\t\t\t\t\t\t(!inferred || !inferred.module) &&\n\t\t\t\t\t\t\t\tw.__REROUTE_DATA__[path] === undefined\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tfetch(`/__reroute_data?path=${encodeURIComponent(path)}`, {\n\t\t\t\t\t\t\t\t\theaders: { Accept: 'application/json' },\n\t\t\t\t\t\t\t\t\tcredentials: 'same-origin',\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t.then((r) => (r.ok ? r.json() : null))\n\t\t\t\t\t\t\t\t\t.then((j) => {\n\t\t\t\t\t\t\t\t\t\tif (!j) return;\n\t\t\t\t\t\t\t\t\t\tw.__REROUTE_DATA__[path] = j.data ?? j;\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\t\t\t\t\tdetail: { key: path },\n\t\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t.catch(() => {});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch {}\n\t\t\t}\n\t\t\tif (onMouseEnter) onMouseEnter(e);\n\t\t},\n\t\t[\n\t\t\tprefetch,\n\t\t\tinferred,\n\t\t\tonMouseEnter,\n\t\t\tto,\n\t\t\tcontentIndex,\n\t\t\tensureCollection,\n\t\t\tmatchRoute,\n\t\t],\n\t);\n\n\tconst handleFocus = useCallback<\n\t\tNonNullable<React.AnchorHTMLAttributes<HTMLAnchorElement>['onFocus']>\n\t>(\n\t\t(e) => {\n\t\t\tif (prefetch && inferred && inferred.module) prefetchContent(inferred);\n\t\t\telse if (prefetch) {\n\t\t\t\ttry {\n\t\t\t\t\tif (typeof window !== 'undefined') {\n\t\t\t\t\t\tconst url = new URL(String(to), window.location.origin);\n\t\t\t\t\t\tif (url.origin === window.location.origin) {\n\t\t\t\t\t\t\tconst path = url.pathname;\n\t\t\t\t\t\t\tconst isDynamic = !!matchRoute?.(path)?.route?.isDynamic;\n\t\t\t\t\t\t\tconst known2 = !!(\n\t\t\t\t\t\t\t\tcontentIndex &&\n\t\t\t\t\t\t\t\tinferred &&\n\t\t\t\t\t\t\t\tinferred.collection in (contentIndex as Any)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (inferred && !inferred.module && ensureCollection && known2) {\n\t\t\t\t\t\t\t\t(async () => {\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tconst items: Any[] | undefined = await ensureCollection(\n\t\t\t\t\t\t\t\t\t\t\tinferred.collection,\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\tconst found = (items || []).find(\n\t\t\t\t\t\t\t\t\t\t\t(e: Any) => e?.name === inferred.name,\n\t\t\t\t\t\t\t\t\t\t) as Any | undefined;\n\t\t\t\t\t\t\t\t\t\tconst mod = (found as Any)?.module as string | undefined;\n\t\t\t\t\t\t\t\t\t\tif (mod) prefetchContent({ ...inferred, module: mod });\n\t\t\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t\t\t})();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst w = window as Any;\n\t\t\t\t\t\t\tw.__REROUTE_DATA__ = w.__REROUTE_DATA__ || {};\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tisDynamic &&\n\t\t\t\t\t\t\t\t(!inferred || !inferred.module) &&\n\t\t\t\t\t\t\t\tw.__REROUTE_DATA__[path] === undefined\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tfetch(`/__reroute_data?path=${encodeURIComponent(path)}`, {\n\t\t\t\t\t\t\t\t\theaders: { Accept: 'application/json' },\n\t\t\t\t\t\t\t\t\tcredentials: 'same-origin',\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t.then((r) => (r.ok ? r.json() : null))\n\t\t\t\t\t\t\t\t\t.then((j) => {\n\t\t\t\t\t\t\t\t\t\tif (!j) return;\n\t\t\t\t\t\t\t\t\t\tw.__REROUTE_DATA__[path] = j.data ?? j;\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\t\t\t\t\tdetail: { key: path },\n\t\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t.catch(() => {});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch {}\n\t\t\t}\n\t\t\tif (onFocus) onFocus(e);\n\t\t},\n\t\t[\n\t\t\tprefetch,\n\t\t\tinferred,\n\t\t\tonFocus,\n\t\t\tto,\n\t\t\tcontentIndex,\n\t\t\tensureCollection,\n\t\t\tmatchRoute,\n\t\t],\n\t);\n\n\treturn (\n\t\t<a\n\t\t\thref={to}\n\t\t\tonClick={handleClick}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonFocus={handleFocus}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Link };\n",
|
|
18
|
+
"import { useContext } from 'react';\nimport { OutletContext } from '../providers';\n\n/**\n * Outlet component for rendering nested routes within layouts.\n * Must be used within a layout component that's rendered by RouterProvider.\n */\nfunction Outlet() {\n\tconst outletContent = useContext(OutletContext);\n\treturn <>{outletContent}</>;\n}\n\nexport { Outlet };\n"
|
|
19
|
+
],
|
|
20
|
+
"mappings": "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",
|
|
21
|
+
"debugId": "BD66EE46EA6F55AE64756E2164756E21",
|
|
22
|
+
"names": []
|
|
23
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Any } from '../types/any';
|
|
2
|
+
type RerouteGetEntry = (collection: string, name: string) => {
|
|
3
|
+
module?: string;
|
|
4
|
+
component?: Any;
|
|
5
|
+
meta?: Any;
|
|
6
|
+
} | undefined;
|
|
7
|
+
declare function ContentRoute({ collection, name, getEntry, }: {
|
|
8
|
+
collection: string;
|
|
9
|
+
name?: string;
|
|
10
|
+
getEntry?: RerouteGetEntry;
|
|
11
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export { ContentRoute };
|
|
13
|
+
//# sourceMappingURL=ContentRoute.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentRoute.d.ts","sourceRoot":"","sources":["../../../../../../packages/react/src/components/ContentRoute.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAGxC,KAAK,eAAe,GAAG,CACtB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,KACR;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,GAAG,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,CAAA;CAAE,GAAG,SAAS,CAAC;AAQlE,iBAAS,YAAY,CAAC,EACrB,UAAU,EACV,IAAI,EACJ,QAAQ,GACR,EAAE;IACF,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC3B,2CA4GA;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { LinkProps } from '../types/router';
|
|
2
|
+
/**
|
|
3
|
+
* Link component for client-side navigation.
|
|
4
|
+
* Automatically prevents default behavior and uses the router's navigate function.
|
|
5
|
+
*/
|
|
6
|
+
declare function Link({ to, replace, state, prefetch, onClick, onMouseEnter, onFocus, ...props }: LinkProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export { Link };
|
|
8
|
+
//# sourceMappingURL=Link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../../../../../packages/react/src/components/Link.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;GAGG;AACH,iBAAS,IAAI,CAAC,EACb,EAAE,EACF,OAAO,EACP,KAAK,EACL,QAAe,EACf,OAAO,EACP,YAAY,EACZ,OAAO,EACP,GAAG,KAAK,EACR,EAAE,SAAS,2CAwPX;AAED,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Outlet component for rendering nested routes within layouts.
|
|
3
|
+
* Must be used within a layout component that's rendered by RouterProvider.
|
|
4
|
+
*/
|
|
5
|
+
declare function Outlet(): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export { Outlet };
|
|
7
|
+
//# sourceMappingURL=Outlet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Outlet.d.ts","sourceRoot":"","sources":["../../../../../../packages/react/src/components/Outlet.tsx"],"names":[],"mappings":"AAGA;;;GAGG;AACH,iBAAS,MAAM,4CAGd;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/react/src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/react/src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Any } from '../types/any';
|
|
2
|
+
type ContentMeta = Record<string, Any> | undefined;
|
|
3
|
+
type ContentListEntry = {
|
|
4
|
+
collection: string;
|
|
5
|
+
name: string;
|
|
6
|
+
slug?: string;
|
|
7
|
+
href: string;
|
|
8
|
+
module?: string;
|
|
9
|
+
meta?: ContentMeta;
|
|
10
|
+
} & Record<string, Any>;
|
|
11
|
+
type UseContentCollectionParams = {
|
|
12
|
+
collection: string;
|
|
13
|
+
sort?: {
|
|
14
|
+
date: 'asc' | 'desc';
|
|
15
|
+
} | ((a: ContentListEntry, b: ContentListEntry) => number) | false;
|
|
16
|
+
/** Optional limit for items returned and shipped by SSR */
|
|
17
|
+
limit?: number;
|
|
18
|
+
};
|
|
19
|
+
type UseContentCollectionResult = {
|
|
20
|
+
items: ContentListEntry[];
|
|
21
|
+
prefetch: (entry: Pick<ContentListEntry, 'collection' | 'name' | 'module'>) => void;
|
|
22
|
+
};
|
|
23
|
+
export declare function prefetchContent(entry: Pick<ContentListEntry, 'collection' | 'name' | 'module'>): void;
|
|
24
|
+
export declare function useContent(params: UseContentCollectionParams): UseContentCollectionResult;
|
|
25
|
+
export type { ContentListEntry, UseContentCollectionParams, UseContentCollectionResult, };
|
|
26
|
+
//# sourceMappingURL=useContent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useContent.d.ts","sourceRoot":"","sources":["../../../../../../packages/react/src/hooks/useContent.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAExC,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;AAEnD,KAAK,gBAAgB,GAAG;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,WAAW,CAAC;CACnB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAExB,KAAK,0BAA0B,GAAG;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EACF;QAAE,IAAI,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,GACxB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,KAAK,MAAM,CAAC,GACtD,KAAK,CAAC;IACT,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,0BAA0B,GAAG;IACjC,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,QAAQ,EAAE,CACT,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,YAAY,GAAG,MAAM,GAAG,QAAQ,CAAC,KAC3D,IAAI,CAAC;CACV,CAAC;AAkBF,wBAAgB,eAAe,CAC9B,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,YAAY,GAAG,MAAM,GAAG,QAAQ,CAAC,GAC7D,IAAI,CAiBN;AAED,wBAAgB,UAAU,CACzB,MAAM,EAAE,0BAA0B,GAChC,0BAA0B,CAiG5B;AAED,YAAY,EACX,gBAAgB,EAChB,0BAA0B,EAC1B,0BAA0B,GAC1B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read SSR-seeded route data without loaders.
|
|
3
|
+
* - On server: reads from globalThis.__REROUTE_DATA__
|
|
4
|
+
* - On client: reads from window.__REROUTE_DATA__
|
|
5
|
+
*
|
|
6
|
+
* By default uses the current pathname as the key. You may pass a custom key
|
|
7
|
+
* when seeding multiple entries.
|
|
8
|
+
*/
|
|
9
|
+
export declare function useData<T = unknown>(key?: string): T | undefined;
|
|
10
|
+
//# sourceMappingURL=useData.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useData.d.ts","sourceRoot":"","sources":["../../../../../../packages/react/src/hooks/useData.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CA+EhE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useNavigate.d.ts","sourceRoot":"","sources":["../../../../../../packages/react/src/hooks/useNavigate.tsx"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,WAAW,iEAG1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useParams.d.ts","sourceRoot":"","sources":["../../../../../../packages/react/src/hooks/useParams.tsx"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,SAAS,CACxB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KACrD,CAAC,CAGL"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRouter.d.ts","sourceRoot":"","sources":["../../../../../../packages/react/src/hooks/useRouter.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE5D;;;GAGG;AACH,wBAAgB,SAAS,IAAI,oBAAoB,CAMhD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSearchParams.d.ts","sourceRoot":"","sources":["../../../../../../packages/react/src/hooks/useSearchParams.tsx"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,eAAe,IAAI,eAAe,CAGjD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/react/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { Any } from '../types/any';
|
|
3
|
+
type ContentRef = {
|
|
4
|
+
collection: string;
|
|
5
|
+
name: string;
|
|
6
|
+
module?: string;
|
|
7
|
+
} | undefined;
|
|
8
|
+
type ContentResolver = (href: string) => ContentRef;
|
|
9
|
+
type ContentProviderProps = {
|
|
10
|
+
children?: ReactNode;
|
|
11
|
+
/**
|
|
12
|
+
* Resolve a content link target to a content reference.
|
|
13
|
+
* Return collection + name + module (if known) for optimal prefetching.
|
|
14
|
+
*/
|
|
15
|
+
resolveByHref?: ContentResolver;
|
|
16
|
+
/** Optional access to the app's content registry getter (e.g., .reroute/content#getContentEntry) */
|
|
17
|
+
getEntry?: (collection: string, name: string) => Any | undefined;
|
|
18
|
+
/** Optional prebuilt byCollection index (e.g., from .reroute/content) */
|
|
19
|
+
byCollection?: Record<string, Any[]> | null;
|
|
20
|
+
/** Optional lazy loader that loads a single collection at a time */
|
|
21
|
+
loadCollection?: (collection: string) => Promise<{
|
|
22
|
+
items: Any[];
|
|
23
|
+
} | Any>;
|
|
24
|
+
};
|
|
25
|
+
declare function ContentProvider({ children, resolveByHref, getEntry, byCollection, loadCollection, }: ContentProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
declare function useContentResolver(): ContentResolver | null;
|
|
27
|
+
export { ContentProvider, useContentResolver };
|
|
28
|
+
declare function useContentIndex(): Record<string, Any[]> | null;
|
|
29
|
+
export { useContentIndex };
|
|
30
|
+
export type { ContentRef, ContentResolver };
|
|
31
|
+
declare function useContentGetEntry(): ((collection: string, name: string) => Any | undefined) | null;
|
|
32
|
+
export { useContentGetEntry };
|
|
33
|
+
declare function useContentLoadCollection(): ((collection: string) => Promise<Any[] | undefined>) | null;
|
|
34
|
+
export { useContentLoadCollection };
|
|
35
|
+
//# sourceMappingURL=ContentProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentProvider.d.ts","sourceRoot":"","sources":["../../../../../../packages/react/src/providers/ContentProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,SAAS,EAKd,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAGxC,KAAK,UAAU,GACZ;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACrD,SAAS,CAAC;AAEb,KAAK,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,CAAC;AAWpD,KAAK,oBAAoB,GAAG;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,oGAAoG;IACpG,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,GAAG,GAAG,SAAS,CAAC;IACjE,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;IAC5C,oEAAoE;IACpE,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,GAAG,EAAE,CAAA;KAAE,GAAG,GAAG,CAAC,CAAC;CACzE,CAAC;AAEF,iBAAS,eAAe,CAAC,EACxB,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,cAAc,GACd,EAAE,oBAAoB,2CAkFtB;AAED,iBAAS,kBAAkB,IAAI,eAAe,GAAG,IAAI,CAEpD;AAED,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,CAAC;AAC/C,iBAAS,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAEvD;AAED,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;AAE5C,iBAAS,kBAAkB,IACxB,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,GAAG,GAAG,SAAS,CAAC,GACvD,IAAI,CAEN;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,iBAAS,wBAAwB,IAC9B,CAAC,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC,GACpD,IAAI,CAEN;AAED,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { Any } from '../types/any';
|
|
3
|
+
type RerouteParams = {
|
|
4
|
+
byCollection?: Record<string, Any[]> | null;
|
|
5
|
+
getContentEntry?: (collection: string, name: string) => Any | undefined;
|
|
6
|
+
loadContent?: () => Promise<{
|
|
7
|
+
byCollection: Record<string, Any[]>;
|
|
8
|
+
getContentEntry: (collection: string, name: string) => Any | undefined;
|
|
9
|
+
}>;
|
|
10
|
+
contentBaseUrl?: string;
|
|
11
|
+
layouts?: readonly Any[];
|
|
12
|
+
matchRoute: (pathname: string) => Any;
|
|
13
|
+
notFoundRoutes?: readonly Any[];
|
|
14
|
+
notFound?: React.ComponentType;
|
|
15
|
+
pathname?: string;
|
|
16
|
+
viewTransitions?: boolean;
|
|
17
|
+
scrollRestoration?: boolean;
|
|
18
|
+
};
|
|
19
|
+
declare function RerouteProvider({ from, children, }: {
|
|
20
|
+
from: RerouteParams;
|
|
21
|
+
children?: ReactNode;
|
|
22
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
export { RerouteProvider };
|
|
24
|
+
export type { RerouteParams };
|
|
25
|
+
//# sourceMappingURL=RerouteProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RerouteProvider.d.ts","sourceRoot":"","sources":["../../../../../../packages/react/src/providers/RerouteProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAIxC,KAAK,aAAa,GAAG;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;IAC5C,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,GAAG,GAAG,SAAS,CAAC;IACxE,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC;QAC3B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACpC,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,GAAG,GAAG,SAAS,CAAC;KACvE,CAAC,CAAC;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,GAAG,EAAE,CAAC;IACzB,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,CAAC;IACtC,cAAc,CAAC,EAAE,SAAS,GAAG,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,iBAAS,eAAe,CAAC,EACxB,IAAI,EACJ,QAAQ,GACR,EAAE;IACF,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACrB,2CAwCA;AAED,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,YAAY,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import type { Any } from '../types/any';
|
|
4
|
+
import type { RouteMatch, RouterContextFactory } from '../types/router';
|
|
5
|
+
declare const OutletContext: React.Context<ReactNode>;
|
|
6
|
+
declare const RouterContext: React.Context<RouterContextFactory | null>;
|
|
7
|
+
interface RouterProviderProps {
|
|
8
|
+
children?: ReactNode;
|
|
9
|
+
layouts?: readonly Any[];
|
|
10
|
+
matchRoute: (pathname: string) => RouteMatch | null;
|
|
11
|
+
notFoundRoutes?: readonly Any[];
|
|
12
|
+
notFound?: React.ComponentType;
|
|
13
|
+
pathname?: string;
|
|
14
|
+
viewTransitions?: boolean;
|
|
15
|
+
scrollRestoration?: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* RouterProvider component that manages client-side routing with SSR support.
|
|
19
|
+
* Uses React's useSyncExternalStore for proper hydration without mismatches.
|
|
20
|
+
*/
|
|
21
|
+
declare function RouterProvider({ children, layouts, matchRoute, notFoundRoutes, notFound: NotFound, pathname, viewTransitions, scrollRestoration, }: RouterProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export { OutletContext, RouterContext, RouterProvider };
|
|
23
|
+
//# sourceMappingURL=RouterProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouterProvider.d.ts","sourceRoot":"","sources":["../../../../../../packages/react/src/providers/RouterProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAMN,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,EAEX,UAAU,EACV,oBAAoB,EACpB,MAAM,iBAAiB,CAAC;AAOzB,QAAA,MAAM,aAAa,0BAAiC,CAAC;AACrD,QAAA,MAAM,aAAa,4CAAmD,CAAC;AAYvE,UAAU,mBAAmB;IAC5B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,GAAG,EAAE,CAAC;IACzB,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,UAAU,GAAG,IAAI,CAAC;IACpD,cAAc,CAAC,EAAE,SAAS,GAAG,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAsGD;;;GAGG;AACH,iBAAS,cAAc,CAAC,EACvB,QAAQ,EACR,OAAY,EACZ,UAAU,EACV,cAAmB,EACnB,QAAQ,EAAE,QAAQ,EAClB,QAAc,EACd,eAAsB,EACtB,iBAAwB,GACxB,EAAE,mBAAmB,2CA2UrB;AAED,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/react/src/providers/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"any.d.ts","sourceRoot":"","sources":["../../../../../../packages/react/src/types/any.ts"],"names":[],"mappings":"AACA,KAAK,GAAG,GAAG,GAAG,CAAC;AAEf,YAAY,EAAE,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/react/src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Any } from './any';
|
|
2
|
+
interface RouteMatch {
|
|
3
|
+
route: {
|
|
4
|
+
pattern: string;
|
|
5
|
+
path: string;
|
|
6
|
+
component: React.ComponentType<Any>;
|
|
7
|
+
params: string[];
|
|
8
|
+
isDynamic: boolean;
|
|
9
|
+
};
|
|
10
|
+
params: Record<string, string>;
|
|
11
|
+
}
|
|
12
|
+
interface RouterContextFactory {
|
|
13
|
+
pathname: string;
|
|
14
|
+
params: Record<string, string>;
|
|
15
|
+
searchParams: URLSearchParams;
|
|
16
|
+
navigate: (to: string, options?: NavigateOptions) => void;
|
|
17
|
+
target: RouteMatch | null;
|
|
18
|
+
matchRoute?: (pathname: string) => RouteMatch | null;
|
|
19
|
+
notFoundResolver?: (pathname: string) => React.ComponentType | undefined;
|
|
20
|
+
}
|
|
21
|
+
interface NavigateOptions {
|
|
22
|
+
replace?: boolean;
|
|
23
|
+
state?: Any;
|
|
24
|
+
}
|
|
25
|
+
interface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
26
|
+
to: string;
|
|
27
|
+
replace?: boolean;
|
|
28
|
+
state?: Any;
|
|
29
|
+
prefetch?: boolean;
|
|
30
|
+
}
|
|
31
|
+
export type { LinkProps, NavigateOptions, RouteMatch, RouterContextFactory };
|
|
32
|
+
//# sourceMappingURL=router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../../../../packages/react/src/types/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAEjC,UAAU,UAAU;IACnB,KAAK,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,UAAU,oBAAoB;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,YAAY,EAAE,eAAe,CAAC;IAC9B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;IAC1D,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,UAAU,GAAG,IAAI,CAAC;IACrD,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;CACzE;AAED,UAAU,eAAe;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,GAAG,CAAC;CACZ;AAED,UAAU,SAAU,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;IACxE,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ContentResolver } from '../providers/ContentProvider';
|
|
2
|
+
import type { Any } from '../types/any';
|
|
3
|
+
export declare function parseContentHref(href: string): {
|
|
4
|
+
collection: string;
|
|
5
|
+
name: string;
|
|
6
|
+
} | undefined;
|
|
7
|
+
export declare function createResolverFromGetEntry(getEntry: (collection: string, name: string) => Any | undefined): ContentResolver;
|
|
8
|
+
//# sourceMappingURL=content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../../../../packages/react/src/utils/content.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAExC,wBAAgB,gBAAgB,CAC/B,IAAI,EAAE,MAAM,GACV;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CASlD;AAED,wBAAgB,0BAA0B,CACzC,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,GAAG,GAAG,SAAS,GAC7D,eAAe,CAajB"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Any } from '../types/any';
|
|
2
|
+
export declare function applyPageMeta(meta: Any | undefined): void;
|
|
3
|
+
export declare function applyLang(lang: Any | undefined): void;
|
|
4
|
+
export declare function applySsrHead(head: Any | undefined): void;
|
|
5
|
+
export declare function applyRouteHead(head: Any | undefined): void;
|
|
6
|
+
//# sourceMappingURL=head.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"head.d.ts","sourceRoot":"","sources":["../../../../../../packages/react/src/utils/head.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AASxC,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,SAAS,GAAG,IAAI,CAyBzD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,GAAG,GAAG,SAAS,GAAG,IAAI,CAOrD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,SAAS,GAAG,IAAI,CA4BxD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,GAAG,SAAS,GAAG,IAAI,CA4B1D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/react/src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC"}
|