reroute-js 1.0.0-alpha.38 → 1.0.0-alpha.39

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.
Files changed (215) hide show
  1. package/cli/bin.d.ts +1 -1
  2. package/cli/bin.js +26 -20
  3. package/cli/bin.js.map +3 -3
  4. package/cli/index.d.ts +1 -1
  5. package/cli/index.js +4 -4
  6. package/cli/index.js.map +2 -2
  7. package/cli/src/cli.d.ts +1 -1
  8. package/cli/src/commands/analyze.d.ts +1 -1
  9. package/cli/src/commands/build.d.ts +1 -1
  10. package/cli/src/commands/dev.d.ts +1 -1
  11. package/cli/src/commands/gen.d.ts +1 -1
  12. package/cli/src/commands/index.d.ts +1 -1
  13. package/cli/src/commands/init.d.ts +1 -1
  14. package/cli/src/commands/lib/assets.d.ts +1 -1
  15. package/cli/src/commands/lib/bundler.d.ts +1 -1
  16. package/cli/src/commands/lib/command.d.ts +1 -1
  17. package/cli/src/commands/lib/env.d.ts +1 -1
  18. package/cli/src/commands/lib/images.d.ts +1 -1
  19. package/cli/src/commands/lib/index.d.ts +1 -1
  20. package/cli/src/commands/lib/log.d.ts +1 -1
  21. package/cli/src/commands/lib/markdown/availability.d.ts +1 -1
  22. package/cli/src/commands/lib/markdown/index.d.ts +1 -1
  23. package/cli/src/commands/lib/markdown/processor.d.ts +1 -1
  24. package/cli/src/commands/lib/prerender.d.ts +1 -1
  25. package/cli/src/commands/lib/production.d.ts +1 -1
  26. package/cli/src/commands/lib/routes.d.ts +1 -1
  27. package/cli/src/commands/lib/server.d.ts +1 -1
  28. package/cli/src/commands/lib/ssr-strip.d.ts +1 -1
  29. package/cli/src/commands/lib/static.d.ts +1 -1
  30. package/cli/src/commands/lib/streaming/analyzer.d.ts +1 -1
  31. package/cli/src/commands/lib/streaming/suspense.d.ts +1 -1
  32. package/cli/src/commands/lib/supervise.d.ts +1 -1
  33. package/cli/src/commands/lib/terminal-ui.d.ts +1 -1
  34. package/cli/src/commands/lib/theme.d.ts +1 -1
  35. package/cli/src/commands/lib/version.d.ts +1 -1
  36. package/cli/src/commands/lib/watch.d.ts +1 -1
  37. package/cli/src/commands/og.d.ts +1 -1
  38. package/cli/src/commands/start.d.ts +1 -1
  39. package/cli/src/commands/static-render.d.ts +1 -1
  40. package/cli/src/index.d.ts +1 -1
  41. package/core/index.d.ts +1 -1
  42. package/core/index.js +22 -16
  43. package/core/index.js.map +3 -3
  44. package/core/src/app-paths.d.ts +1 -1
  45. package/core/src/bundler/hash.d.ts +1 -1
  46. package/core/src/bundler/index.d.ts +1 -1
  47. package/core/src/config.d.ts +1 -1
  48. package/core/src/content/discovery.d.ts +1 -1
  49. package/core/src/content/index.d.ts +1 -1
  50. package/core/src/content/metadata.d.ts +1 -1
  51. package/core/src/i18n/catalog.d.ts +1 -1
  52. package/core/src/i18n/discover.d.ts +1 -1
  53. package/core/src/i18n/index.d.ts +1 -1
  54. package/core/src/i18n/messages.d.ts +1 -1
  55. package/core/src/i18n/negotiate.d.ts +1 -1
  56. package/core/src/i18n/pathname.d.ts +1 -1
  57. package/core/src/i18n/resolve.d.ts +1 -1
  58. package/core/src/i18n/types.d.ts +1 -1
  59. package/core/src/image.d.ts +1 -1
  60. package/core/src/index.d.ts +1 -1
  61. package/core/src/llms/discovery.d.ts +1 -1
  62. package/core/src/llms/extractor.d.ts +1 -1
  63. package/core/src/llms/formatter.d.ts +1 -1
  64. package/core/src/llms/full-generator.d.ts +1 -1
  65. package/core/src/llms/index-generator.d.ts +1 -1
  66. package/core/src/llms/index.d.ts +1 -1
  67. package/core/src/og/discovery.d.ts +1 -1
  68. package/core/src/og/index.d.ts +1 -1
  69. package/core/src/og/meta.d.ts +1 -1
  70. package/core/src/og/render.d.ts +1 -1
  71. package/core/src/og/types.d.ts +1 -1
  72. package/core/src/robots/discovery.d.ts +1 -1
  73. package/core/src/robots/generator.d.ts +1 -1
  74. package/core/src/robots/index.d.ts +1 -1
  75. package/core/src/robots/policies.d.ts +1 -1
  76. package/core/src/rss/discovery.d.ts +1 -1
  77. package/core/src/rss/generator.d.ts +1 -1
  78. package/core/src/rss/index.d.ts +1 -1
  79. package/core/src/sitemap/discovery.d.ts +1 -1
  80. package/core/src/sitemap/generator.d.ts +1 -1
  81. package/core/src/sitemap/index.d.ts +1 -1
  82. package/core/src/ssr/index.d.ts +1 -1
  83. package/core/src/ssr/lib/cache.d.ts +1 -1
  84. package/core/src/ssr/lib/cleanup.d.ts +1 -1
  85. package/core/src/ssr/lib/collections.d.ts +1 -1
  86. package/core/src/ssr/lib/compression.d.ts +1 -1
  87. package/core/src/ssr/lib/compute/content.d.ts +1 -1
  88. package/core/src/ssr/lib/compute/index.d.ts +1 -1
  89. package/core/src/ssr/lib/compute/index.d.ts.map +1 -1
  90. package/core/src/ssr/lib/compute/layouts.d.ts +1 -1
  91. package/core/src/ssr/lib/compute/routes.d.ts +1 -1
  92. package/core/src/ssr/lib/content-path.d.ts +1 -1
  93. package/core/src/ssr/lib/data.d.ts +1 -1
  94. package/core/src/ssr/lib/html.d.ts +1 -1
  95. package/core/src/ssr/lib/imports.d.ts +1 -1
  96. package/core/src/ssr/lib/index.d.ts +1 -1
  97. package/core/src/ssr/lib/layouts.d.ts +1 -1
  98. package/core/src/ssr/lib/metadata.d.ts +1 -1
  99. package/core/src/ssr/lib/mime.d.ts +1 -1
  100. package/core/src/ssr/lib/modules.d.ts +1 -1
  101. package/core/src/ssr/lib/path.d.ts +1 -1
  102. package/core/src/ssr/lib/preload.d.ts +1 -1
  103. package/core/src/ssr/lib/route-match.d.ts +1 -1
  104. package/core/src/ssr/lib/scripts/collections.d.ts +1 -1
  105. package/core/src/ssr/lib/scripts/data.d.ts +1 -1
  106. package/core/src/ssr/lib/scripts/escape.d.ts +1 -1
  107. package/core/src/ssr/lib/scripts/feeds.d.ts +1 -1
  108. package/core/src/ssr/lib/scripts/index.d.ts +1 -1
  109. package/core/src/ssr/lib/seed.d.ts +1 -1
  110. package/core/src/ssr/lib/serialize.d.ts +1 -1
  111. package/core/src/ssr/lib/setup.d.ts +1 -1
  112. package/core/src/ssr/lib/styles.d.ts +1 -1
  113. package/core/src/ssr/lib/template.d.ts +1 -1
  114. package/core/src/ssr/lib/types.d.ts +7 -1
  115. package/core/src/ssr/lib/types.d.ts.map +1 -1
  116. package/core/src/ssr/render.d.ts +1 -1
  117. package/core/src/ssr/stream.d.ts +1 -1
  118. package/elysia/index.d.ts +1 -1
  119. package/elysia/index.js +25 -18
  120. package/elysia/index.js.map +4 -4
  121. package/elysia/src/index.d.ts +1 -1
  122. package/elysia/src/libs/assets.d.ts +1 -1
  123. package/elysia/src/libs/cache.d.ts +1 -1
  124. package/elysia/src/libs/caching.d.ts +1 -1
  125. package/elysia/src/libs/devReload.d.ts +1 -1
  126. package/elysia/src/libs/http.d.ts +1 -1
  127. package/elysia/src/libs/i18n.d.ts +1 -1
  128. package/elysia/src/libs/image.d.ts +1 -1
  129. package/elysia/src/libs/index.d.ts +1 -1
  130. package/elysia/src/libs/llms.d.ts +1 -1
  131. package/elysia/src/libs/response.d.ts +1 -1
  132. package/elysia/src/libs/serving.d.ts +1 -1
  133. package/elysia/src/plugin.d.ts +1 -1
  134. package/elysia/src/routes/artifacts.d.ts +1 -1
  135. package/elysia/src/routes/content.d.ts +1 -1
  136. package/elysia/src/routes/image.d.ts +1 -1
  137. package/elysia/src/routes/index.d.ts +1 -1
  138. package/elysia/src/routes/internal.d.ts +1 -1
  139. package/elysia/src/routes/internal.d.ts.map +1 -1
  140. package/elysia/src/routes/liveReloadClient.d.ts +1 -1
  141. package/elysia/src/routes/llms.d.ts +1 -1
  142. package/elysia/src/routes/og.d.ts +1 -1
  143. package/elysia/src/routes/redirects.d.ts +1 -1
  144. package/elysia/src/routes/robots.d.ts +1 -1
  145. package/elysia/src/routes/rss.d.ts +1 -1
  146. package/elysia/src/routes/search.d.ts +1 -1
  147. package/elysia/src/routes/sitemap.d.ts +1 -1
  148. package/elysia/src/routes/ssr.d.ts +1 -1
  149. package/elysia/src/routes/static.d.ts +1 -1
  150. package/elysia/src/routes/themeCssRefresh.d.ts +1 -1
  151. package/elysia/src/types.d.ts +1 -1
  152. package/package.json +1 -1
  153. package/react/index.d.ts +1 -1
  154. package/react/index.js +17 -9
  155. package/react/index.js.map +5 -5
  156. package/react/src/components/ClientOnly.d.ts +1 -1
  157. package/react/src/components/ContentRoute.d.ts +1 -1
  158. package/react/src/components/Image.d.ts +1 -1
  159. package/react/src/components/LazyRoute.d.ts +1 -1
  160. package/react/src/components/Link.d.ts +1 -1
  161. package/react/src/components/Markdown.d.ts +1 -1
  162. package/react/src/components/Outlet.d.ts +1 -1
  163. package/react/src/components/index.d.ts +1 -1
  164. package/react/src/hooks/index.d.ts +1 -1
  165. package/react/src/hooks/useContent.d.ts +1 -1
  166. package/react/src/hooks/useData.d.ts +9 -2
  167. package/react/src/hooks/useData.d.ts.map +1 -1
  168. package/react/src/hooks/useFeed.d.ts +1 -1
  169. package/react/src/hooks/useLayoutData.d.ts +1 -1
  170. package/react/src/hooks/useLlms.d.ts +1 -1
  171. package/react/src/hooks/useNavigate.d.ts +1 -1
  172. package/react/src/hooks/useParams.d.ts +1 -1
  173. package/react/src/hooks/useRouter.d.ts +1 -1
  174. package/react/src/hooks/useSearch.d.ts +1 -1
  175. package/react/src/hooks/useSearchParams.d.ts +1 -1
  176. package/react/src/hooks/useToc.d.ts +1 -1
  177. package/react/src/i18n/LocaleProvider.d.ts +1 -1
  178. package/react/src/i18n/helpers.d.ts +1 -1
  179. package/react/src/i18n/index.d.ts +1 -1
  180. package/react/src/index.d.ts +1 -1
  181. package/react/src/lib/bundle.d.ts +1 -1
  182. package/react/src/lib/collection.d.ts +1 -1
  183. package/react/src/lib/content.d.ts +1 -1
  184. package/react/src/lib/head.d.ts +1 -1
  185. package/react/src/lib/index.d.ts +1 -1
  186. package/react/src/lib/layouts.d.ts +1 -1
  187. package/react/src/lib/lazy-route.d.ts +1 -1
  188. package/react/src/lib/route-loader.d.ts +1 -1
  189. package/react/src/lib/static-data.d.ts +1 -1
  190. package/react/src/providers/ContentProvider.d.ts +1 -1
  191. package/react/src/providers/RerouteProvider.d.ts +1 -1
  192. package/react/src/providers/RouterProvider.d.ts +1 -1
  193. package/react/src/providers/RouterProvider.d.ts.map +1 -1
  194. package/react/src/providers/index.d.ts +1 -1
  195. package/react/src/types/any.d.ts +1 -1
  196. package/react/src/types/index.d.ts +1 -1
  197. package/react/src/types/router.d.ts +1 -1
  198. package/telemetry/react.d.ts +1 -1
  199. package/telemetry/react.js +2 -2
  200. package/telemetry/react.js.map +1 -1
  201. package/telemetry/server.d.ts +1 -1
  202. package/telemetry/server.js +2 -2
  203. package/telemetry/server.js.map +2 -2
  204. package/telemetry/src/react/api.d.ts +1 -1
  205. package/telemetry/src/react/context.d.ts +1 -1
  206. package/telemetry/src/react/index.d.ts +1 -1
  207. package/telemetry/src/react/telemetry.d.ts +1 -1
  208. package/telemetry/src/server/context.d.ts +1 -1
  209. package/telemetry/src/server/headers/extractor.d.ts +1 -1
  210. package/telemetry/src/server/headers/index.d.ts +1 -1
  211. package/telemetry/src/server/headers/presets.d.ts +1 -1
  212. package/telemetry/src/server/index.d.ts +1 -1
  213. package/telemetry/src/server/instrumentation.d.ts +1 -1
  214. package/telemetry/src/server/plugin.d.ts +1 -1
  215. package/telemetry/src/server/sourcemap.d.ts +1 -1
@@ -11,13 +11,13 @@
11
11
  "import {\n\tcreateContext,\n\ttype ReactNode,\n\tuseCallback,\n\tuseContext,\n\tuseMemo,\n\tuseState,\n} from 'react';\nimport { createResolverFromGetEntry, parseContentHref } from '../lib/content';\nimport type { Any } from '../types/any';\n\ntype ContentRef =\n\t| { collection: string; name: string; module?: string }\n\t| undefined;\n\ntype ContentResolver = (href: string) => ContentRef;\n\nfunction findIndexEntry(\n\tlist: Any[],\n\tname: string,\n\tlocale?: string,\n): Any | undefined {\n\tif (locale) {\n\t\treturn (\n\t\t\tlist.find((e: Any) => e?.name === name && e?.locale === locale) ||\n\t\t\tlist.find((e: Any) => e?.name === name)\n\t\t);\n\t}\n\treturn list.find((e: Any) => e?.name === name);\n}\n\nfunction resolveFromIndex(\n\thref: string,\n\tidx: Record<string, Any[]>,\n): ContentRef {\n\tconst parsed = parseContentHref(href);\n\tif (!parsed) return undefined;\n\ttry {\n\t\tconst list = idx[parsed.collection];\n\t\tif (Array.isArray(list)) {\n\t\t\tconst found = findIndexEntry(list, parsed.name, parsed.locale);\n\t\t\tif (found && typeof found.module === 'string') {\n\t\t\t\treturn { ...parsed, module: found.module };\n\t\t\t}\n\t\t}\n\t} catch {}\n\treturn parsed;\n}\n\nconst ContentRegistryContext = createContext<ContentResolver | null>(null);\nconst ContentIndexContext = createContext<Record<string, Any[]> | null>(null);\nconst ContentGetEntryContext = createContext<\n\t| ((collection: string, name: string, locale?: string) => Any | undefined)\n\t| null\n>(null);\nconst ContentLoadCollectionContext = createContext<\n\t((collection: string) => Promise<Any[] | undefined>) | null\n>(null);\nconst MarkdownComponentsContext = createContext<Any | null>(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?: (\n\t\tcollection: string,\n\t\tname: string,\n\t\tlocale?: string,\n\t) => 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\t/** Optional markdown components for custom markdown rendering */\n\tmarkdownComponents?: Any;\n};\n\nfunction ContentProvider({\n\tchildren,\n\tresolveByHref,\n\tgetEntry,\n\tbyCollection,\n\tloadCollection,\n\tmarkdownComponents,\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\tconst result = {\n\t\t\t...(byCollection || {}),\n\t\t\t...seededServer,\n\t\t\t...seededClient,\n\t\t} as Record<string, Any[]>;\n\n\t\treturn result;\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) => resolveFromIndex(href, idx);\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\t// Check if this collection is marked as partial (field-stripped)\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 isPartial = Boolean(\n\t\t\t\t\tw?.__REROUTE_COLLECTIONS_PARTIAL__?.[collection],\n\t\t\t\t);\n\n\t\t\t\t// If we have items but they're partial, we need to load the full collection\n\t\t\t\t// Otherwise, if we have items, return them\n\t\t\t\tif (Array.isArray(existing) && existing.length && !isPartial) {\n\t\t\t\t\treturn existing;\n\t\t\t\t}\n\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\t// Clear the partial flag since we now have full data\n\t\t\t\t\tif (w?.__REROUTE_COLLECTIONS_PARTIAL__) {\n\t\t\t\t\t\tw.__REROUTE_COLLECTIONS_PARTIAL__[collection] = false;\n\t\t\t\t\t}\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<MarkdownComponentsContext.Provider\n\t\t\t\t\t\t\tvalue={markdownComponents || null}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</MarkdownComponentsContext.Provider>\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\nfunction useMarkdownComponents(): Any | null {\n\treturn useContext(MarkdownComponentsContext);\n}\n\nexport { useMarkdownComponents };\n",
12
12
  "import type { ContentRef, ContentResolver } from '../providers/ContentProvider';\nimport type { Any } from '../types/any';\n\nfunction looksLikeLocale(segment: string): boolean {\n\treturn /^[a-z]{2}(?:-[A-Za-z0-9]{2,8})*$/i.test(segment);\n}\n\nexport function parseContentHref(href: string):\n\t| {\n\t\t\tcollection: string;\n\t\t\tname: string;\n\t\t\tlocale?: string;\n\t }\n\t| undefined {\n\ttry {\n\t\tconst url = new URL(href, 'http://local');\n\t\tconst parts = url.pathname.split('/').filter(Boolean);\n\t\tif (parts.length < 2) return undefined;\n\n\t\tconst [collection, second, third] = parts;\n\n\t\t// /collection/locale/name\n\t\tif (parts.length >= 3 && third && looksLikeLocale(second)) {\n\t\t\treturn { collection, name: third, locale: second };\n\t\t}\n\n\t\treturn { collection, name: second };\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nexport function createResolverFromGetEntry(\n\tgetEntry: (\n\t\tcollection: string,\n\t\tname: string,\n\t\tlocale?: string,\n\t) => 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(\n\t\t\t\tparsed.collection,\n\t\t\t\tparsed.name,\n\t\t\t\tparsed.locale,\n\t\t\t) 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",
13
13
  "import { useCallback, useEffect, useMemo, useState } from 'react';\nimport type { SearchHeading } from '../lib/collection';\n\nexport interface SearchResultEntry {\n\tid: string;\n\tcollection: string;\n\tslug: string;\n\thref: string;\n\ttitle: string;\n\texcerpt?: string;\n\t/** Headings that matched the search query */\n\tmatchedHeadings: SearchHeading[];\n}\n\nexport interface SearchResult {\n\ttotal: number;\n\tpage: number;\n\tpageSize: number;\n\ttotalPages: number;\n\tresults: SearchResultEntry[];\n}\n\nexport interface UseSearchParams {\n\t/** Search query string */\n\tquery: string;\n\t/** Optional: filter by specific collections */\n\tcollections?: string[];\n\t/** Optional: page number (default: 1) */\n\tpage?: number;\n\t/** Optional: page size (default: configured in reroute.config or 20) */\n\tpageSize?: number;\n\t/** Optional: enable search (default: true, set to false to disable) */\n\tenabled?: boolean;\n\t/** Optional: debounce delay in ms (default: 300) */\n\tdebounce?: number;\n}\n\nexport interface UseSearchResult {\n\t/** Search results */\n\tresults: SearchResultEntry[];\n\t/** Total number of results */\n\ttotal: number;\n\t/** Current page number */\n\tpage: number;\n\t/** Number of results per page */\n\tpageSize: number;\n\t/** Total number of pages */\n\ttotalPages: number;\n\t/** Whether search is in progress */\n\tisLoading: boolean;\n\t/** Error if search failed */\n\terror: Error | null;\n\t/** Manually trigger search with a new query */\n\tsearch: (query: string, page?: number) => Promise<void>;\n}\n\n/**\n * React hook for searching content using the server-side search endpoint\n *\n * @example\n * ```tsx\n * function SearchBox() {\n * const [query, setQuery] = useState('');\n * const [page, setPage] = useState(1);\n * const { results, isLoading, error, total, totalPages } = useSearch({\n * query,\n * page,\n * pageSize: 10,\n * collections: ['blog', 'docs'],\n * });\n *\n * return (\n * <div>\n * <input\n * type=\"search\"\n * value={query}\n * onChange={(e) => setQuery(e.target.value)}\n * placeholder=\"Search...\"\n * />\n * {isLoading && <div>Searching...</div>}\n * {error && <div>Error: {error.message}</div>}\n * <ul>\n * {results.map((result) => (\n * <li key={result.id}>\n * <a href={result.href}>{result.title}</a>\n * </li>\n * ))}\n * </ul>\n * <div>\n * <button onClick={() => setPage(p => Math.max(1, p - 1))} disabled={page === 1}>\n * Previous\n * </button>\n * <span>Page {page} of {totalPages}</span>\n * <button onClick={() => setPage(p => p + 1)} disabled={page === totalPages}>\n * Next\n * </button>\n * </div>\n * </div>\n * );\n * }\n * ```\n */\nexport function useSearch(params: UseSearchParams): UseSearchResult {\n\tconst {\n\t\tquery,\n\t\tcollections,\n\t\tpage: paramPage = 1,\n\t\tpageSize: paramPageSize,\n\t\tenabled = true,\n\t\tdebounce = 300,\n\t} = params;\n\n\tconst stableCollections = useMemo(() => collections, [collections]);\n\n\tconst [results, setResults] = useState<SearchResultEntry[]>([]);\n\tconst [total, setTotal] = useState(0);\n\tconst [page, setPage] = useState(paramPage);\n\tconst [pageSize, setPageSize] = useState(paramPageSize ?? 20);\n\tconst [totalPages, setTotalPages] = useState(0);\n\tconst [isLoading, setIsLoading] = useState(false);\n\tconst [error, setError] = useState<Error | null>(null);\n\n\tconst performSearch = useCallback(\n\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Search execution with filtering and pagination\n\t\tasync (searchQuery: string, searchPage?: number) => {\n\t\t\tif (!searchQuery.trim()) {\n\t\t\t\tsetResults([]);\n\t\t\t\tsetTotal(0);\n\t\t\t\tsetPage(1);\n\t\t\t\tsetTotalPages(0);\n\t\t\t\tsetError(null);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetIsLoading(true);\n\t\t\tsetError(null);\n\n\t\t\ttry {\n\t\t\t\t// Build query params\n\t\t\t\tconst params = new URLSearchParams();\n\t\t\t\tparams.set('q', searchQuery);\n\n\t\t\t\tif (stableCollections && stableCollections.length > 0) {\n\t\t\t\t\tparams.set('collections', stableCollections.join(','));\n\t\t\t\t}\n\n\t\t\t\tconst currentPage = searchPage ?? paramPage;\n\t\t\t\tif (currentPage > 1) {\n\t\t\t\t\tparams.set('page', String(currentPage));\n\t\t\t\t}\n\n\t\t\t\tif (paramPageSize) {\n\t\t\t\t\tparams.set('pageSize', String(paramPageSize));\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tconst g = globalThis as {\n\t\t\t\t\t\t__REROUTE_I18N__?: { locale?: string; enabled?: boolean };\n\t\t\t\t\t};\n\t\t\t\t\tif (g.__REROUTE_I18N__?.enabled && g.__REROUTE_I18N__.locale) {\n\t\t\t\t\t\tparams.set('lang', g.__REROUTE_I18N__.locale);\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// ignore\n\t\t\t\t}\n\n\t\t\t\tconst response = await fetch(`/__reroute_search?${params.toString()}`);\n\n\t\t\t\tif (!response.ok) {\n\t\t\t\t\tconst errorData = await response.json().catch(() => ({}));\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\terrorData.error || `Search failed with status ${response.status}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst data = (await response.json()) as SearchResult;\n\t\t\t\tsetResults(data.results);\n\t\t\t\tsetTotal(data.total);\n\t\t\t\tsetPage(data.page);\n\t\t\t\tsetPageSize(data.pageSize);\n\t\t\t\tsetTotalPages(data.totalPages);\n\t\t\t} catch (err) {\n\t\t\t\tconst error = err instanceof Error ? err : new Error('Search failed');\n\t\t\t\tsetError(error);\n\t\t\t\tsetResults([]);\n\t\t\t\tsetTotal(0);\n\t\t\t\tsetPage(1);\n\t\t\t\tsetTotalPages(0);\n\t\t\t} finally {\n\t\t\t\tsetIsLoading(false);\n\t\t\t}\n\t\t},\n\t\t[stableCollections, paramPage, paramPageSize],\n\t);\n\n\t// Debounced search effect\n\tuseEffect(() => {\n\t\tif (!enabled) {\n\t\t\tsetResults([]);\n\t\t\tsetTotal(0);\n\t\t\tsetPage(1);\n\t\t\tsetTotalPages(0);\n\t\t\tsetError(null);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!query.trim()) {\n\t\t\tsetResults([]);\n\t\t\tsetTotal(0);\n\t\t\tsetPage(1);\n\t\t\tsetTotalPages(0);\n\t\t\tsetError(null);\n\t\t\treturn;\n\t\t}\n\n\t\tconst timeoutId = setTimeout(() => {\n\t\t\tperformSearch(query, paramPage);\n\t\t}, debounce);\n\n\t\treturn () => clearTimeout(timeoutId);\n\t}, [query, paramPage, enabled, debounce, performSearch]);\n\n\tconst search = useCallback(\n\t\tasync (newQuery: string, newPage?: number) => {\n\t\t\tawait performSearch(newQuery, newPage);\n\t\t},\n\t\t[performSearch],\n\t);\n\n\treturn {\n\t\tresults,\n\t\ttotal,\n\t\tpage,\n\t\tpageSize,\n\t\ttotalPages,\n\t\tisLoading,\n\t\terror,\n\t\tsearch,\n\t};\n}\n",
14
- "import { useEffect, useMemo, useState } from 'react';\nimport { readRouteAnswer } from '../lib/head';\nimport { routeDataUrl } from '../lib/static-data';\nimport type { Any } from '../types/any';\nimport type { LazyLoadMarker } from '../types/router';\nimport { useRouter } from './useRouter';\n\nconst isThenable = (value: unknown): value is Promise<unknown> => {\n\treturn (\n\t\ttypeof value === 'object' &&\n\t\tvalue !== null &&\n\t\ttypeof (value as { then?: unknown }).then === 'function'\n\t);\n};\n\nconst isLazyLoadMarker = (value: unknown): value is LazyLoadMarker => {\n\treturn (\n\t\ttypeof value === 'object' &&\n\t\tvalue !== null &&\n\t\t(value as LazyLoadMarker).__lazy__ === true &&\n\t\ttypeof (value as LazyLoadMarker).__fetch__ === 'string'\n\t);\n};\n\n/**\n * Check if we're in the initial hydration phase.\n * During initial hydration, we should not throw Suspense promises\n * as the SSR data should already be available.\n */\nconst isInitialHydration = (): boolean => {\n\ttry {\n\t\tconst g = globalThis as Any;\n\t\treturn !!g.__REROUTE_INITIAL_HYDRATION__;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nconst hasNestedLazyMarker = (topLevelData: unknown, key: string): boolean => {\n\tif (!topLevelData || typeof topLevelData !== 'object') {\n\t\treturn false;\n\t}\n\tconst topLevel = topLevelData as Record<string, unknown>;\n\treturn (\n\t\tkey in topLevel &&\n\t\ttopLevel[key] !== null &&\n\t\ttypeof topLevel[key] === 'object' &&\n\t\tisLazyLoadMarker(topLevel[key])\n\t);\n};\n\nconst updateNestedDataIfNeeded = (\n\tglobalData: Record<string, unknown>,\n\tkey: string,\n\tpayload: unknown,\n): void => {\n\tconst topLevelData = globalData[key];\n\tif (hasNestedLazyMarker(topLevelData, key)) {\n\t\t(topLevelData as Record<string, unknown>)[key] = payload;\n\t}\n};\n\nconst dispatchDataUpdateEvent = (key: string): void => {\n\ttry {\n\t\tif (typeof window !== 'undefined') {\n\t\t\twindow.dispatchEvent(\n\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\tdetail: { key },\n\t\t\t\t}) as Any,\n\t\t\t);\n\t\t}\n\t} catch {\n\t\t// Silently ignore errors in event dispatch\n\t}\n};\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 router = useRouter();\n\tconst [_tick, setTick] = useState(0);\n\n\t// The page's key follows the router on every render, so a page that stays\n\t// mounted across navigation (/blog/a → /blog/b) reads the new page's data.\n\t// The query string comes from the URL as typed, matching how SSR seeds it;\n\t// while the URL is ahead of the router (back/forward fetching first), the\n\t// committed page keeps its own data.\n\tconst currentUrl =\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.location.pathname === router.pathname\n\t\t\t? window.location.pathname + window.location.search\n\t\t\t: router.pathname;\n\n\t// Clear initial hydration flag after first render (backup mechanism)\n\t// This ensures the flag is cleared even if LazyRoute isn't used\n\tuseEffect(() => {\n\t\tif (typeof window !== 'undefined' && isInitialHydration()) {\n\t\t\t// Use rAF to ensure React has fully committed\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\ttry {\n\t\t\t\t\tdelete (globalThis as Any).__REROUTE_INITIAL_HYDRATION__;\n\t\t\t\t} catch {}\n\t\t\t});\n\t\t}\n\t}, []);\n\n\tconst pathname = currentUrl;\n\tconst k = key || pathname;\n\n\t// DEBUG: Log what key we're using\n\t// if (typeof window !== 'undefined' && pathname === '/forum') {\n\t// \tconsole.log('[useData] key:', key, 'pathname:', pathname, 'k:', k);\n\t// }\n\n\t// Client-side hooks\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\tconst keys: string[] = Array.isArray(detail?.keys)\n\t\t\t\t\t? detail.keys\n\t\t\t\t\t: detail?.key\n\t\t\t\t\t\t? [detail.key]\n\t\t\t\t\t\t: [];\n\t\t\t\tif (keys.length > 0 && !keys.includes(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\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Data prefetch and cache management\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\n\t\t\t// Check if the current key holds a __reroute_multiple__ object that needs unpacking\n\t\t\tconst currentValue = (w.__REROUTE_DATA__ as Any)[k];\n\n\t\t\tif (\n\t\t\t\tcurrentValue &&\n\t\t\t\ttypeof currentValue === 'object' &&\n\t\t\t\tcurrentValue.__reroute_multiple__ === true\n\t\t\t) {\n\t\t\t\t// Unpack the multiple sources into individual keys\n\t\t\t\tfor (const [key, value] of Object.entries(currentValue)) {\n\t\t\t\t\tif (key !== '__reroute_multiple__') {\n\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Delete the wrapper object - individual keys are now populated\n\t\t\t\tdelete (w.__REROUTE_DATA__ as Any)[k];\n\t\t\t\t// Trigger re-render\n\t\t\t\tsetTick((x) => x + 1);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst existingValue = (w.__REROUTE_DATA__ as Any)[k];\n\t\t\tif (existingValue !== undefined) {\n\t\t\t\t// SPECIAL CASE: If the existing value is a wrapper object containing only layout keys,\n\t\t\t\t// it means it was improperly stored - we need to unpack it\n\t\t\t\tif (typeof existingValue === 'object' && existingValue !== null) {\n\t\t\t\t\tconst keys = Object.keys(existingValue);\n\t\t\t\t\tconst hasOnlyLayoutKeys =\n\t\t\t\t\t\tkeys.length > 0 && keys.every((key) => key.startsWith('__layout:'));\n\n\t\t\t\t\tif (hasOnlyLayoutKeys) {\n\t\t\t\t\t\t// Don't return - continue to the unpacking logic below\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Strategy: If this looks like a data key (not a pathname), first try fetching\n\t\t\t// the current pathname. This handles routes that return flattened multi-key data.\n\t\t\t// If pathname fetch doesn't populate this key, fall back to fetching the key directly.\n\t\t\tconst isLikelyDataKey = !k.startsWith('/');\n\t\t\tconst pathToFetch = isLikelyDataKey ? pathname : k;\n\n\t\t\t// Deduplicate concurrent fetches for the same path\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[pathToFetch]) {\n\t\t\t\t// Another hook is already fetching this path, wait for it\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Include current query string if fetching current pathname\n\t\t\tconst fetchPath = pathToFetch === pathname ? pathname : pathToFetch;\n\n\t\t\tconst fetchPromise = fetch(routeDataUrl(fetchPath), {\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(readRouteAnswer)\n\t\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Response parsing and state updates\n\t\t\t\t.then((j) => {\n\t\t\t\t\tif (!j) return;\n\t\t\t\t\tconst payload = j.data ?? j;\n\n\t\t\t\t\t// Check if this is a multi-source response (layout + route)\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof payload === 'object' &&\n\t\t\t\t\t\tpayload !== null &&\n\t\t\t\t\t\tpayload.__reroute_multiple__ === true\n\t\t\t\t\t) {\n\t\t\t\t\t\t// Multiple data sources: populate each at its specific key\n\t\t\t\t\t\tconst keys: string[] = [];\n\t\t\t\t\t\tfor (const [key, value] of Object.entries(payload)) {\n\t\t\t\t\t\t\tif (key !== '__reroute_multiple__') {\n\t\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t\t'[useData MUTATION 1] Setting',\n\t\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\t\t'to',\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t'payload is:',\n\t\t\t\t\t\t\t\t\tpayload,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t\t\t\tkeys.push(key);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Notify all affected keys\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\tdetail: { keys },\n\t\t\t\t\t\t\t\t}) as Any,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t} else if (\n\t\t\t\t\t\ttypeof payload === 'object' &&\n\t\t\t\t\t\tpayload !== null &&\n\t\t\t\t\t\t(payload.__reroute_flattened__ === true ||\n\t\t\t\t\t\t\tpayload.__flatten__ === true)\n\t\t\t\t\t) {\n\t\t\t\t\t\t// Flatten: populate each key individually\n\t\t\t\t\t\tconst keys: string[] = [];\n\t\t\t\t\t\tfor (const [key, value] of Object.entries(payload)) {\n\t\t\t\t\t\t\tif (key !== '__reroute_flattened__' && key !== '__flatten__') {\n\t\t\t\t\t\t\t\t// console.log('[useData MUTATION 2] Setting', key, 'to', value);\n\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t\t\t\tkeys.push(key);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Also store at pathname for consistency\n\t\t\t\t\t\tif (isLikelyDataKey) {\n\t\t\t\t\t\t\t// console.log(\n\t\t\t\t\t\t\t// \t'[useData MUTATION 3] Setting pathname',\n\t\t\t\t\t\t\t// \tpathname,\n\t\t\t\t\t\t\t// \t'to payload',\n\t\t\t\t\t\t\t// );\n\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[pathname] = payload;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Notify all affected keys\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\tdetail: { keys },\n\t\t\t\t\t\t\t\t}) as Any,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Check if payload contains layout keys that need unpacking\n\t\t\t\t\t\tif (typeof payload === 'object' && payload !== null) {\n\t\t\t\t\t\t\tconst layoutKeys = Object.keys(payload).filter((key) =>\n\t\t\t\t\t\t\t\tkey.startsWith('__layout:'),\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif (layoutKeys.length > 0) {\n\t\t\t\t\t\t\t\t// We have layout keys - unpack them and also store at pathname\n\n\t\t\t\t\t\t\t\tconst keys: string[] = [];\n\t\t\t\t\t\t\t\tfor (const [key, value] of Object.entries(payload)) {\n\t\t\t\t\t\t\t\t\tif (key.startsWith('__layout:')) {\n\t\t\t\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t\t\t\t'[useData MUTATION 4] Setting layout key',\n\t\t\t\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\t\t\t\t'to',\n\t\t\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t\t\t\t\t\tkeys.push(key);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Also store at pathname if this was a pathname fetch\n\t\t\t\t\t\t\t\t// This allows useData() without key to work in layouts\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t!isLikelyDataKey &&\n\t\t\t\t\t\t\t\t\tlayoutKeys.length === Object.keys(payload).length\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t// Check if we have only one layout key\n\t\t\t\t\t\t\t\t\tif (layoutKeys.length === 1) {\n\t\t\t\t\t\t\t\t\t\t// Single layout: store its value directly at pathname (preserving lazy markers)\n\t\t\t\t\t\t\t\t\t\tconst layoutValue = (payload as Record<string, unknown>)[\n\t\t\t\t\t\t\t\t\t\t\tlayoutKeys[0]\n\t\t\t\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t\t\t\t'[useData MUTATION 5] Setting pathname',\n\t\t\t\t\t\t\t\t\t\t\tpathname,\n\t\t\t\t\t\t\t\t\t\t\t'to layoutValue',\n\t\t\t\t\t\t\t\t\t\t\tlayoutValue,\n\t\t\t\t\t\t\t\t\t\t\t'payload:',\n\t\t\t\t\t\t\t\t\t\t\tpayload,\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[pathname] = layoutValue;\n\t\t\t\t\t\t\t\t\t\tkeys.push(pathname);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// Multiple layouts: merge them (but skip lazy markers as they can't be merged)\n\t\t\t\t\t\t\t\t\t\tconst mergedLayoutData: Record<string, unknown> = {};\n\n\t\t\t\t\t\t\t\t\t\tfor (const layoutKey of layoutKeys) {\n\t\t\t\t\t\t\t\t\t\t\tconst layoutValue = (payload as Record<string, unknown>)[\n\t\t\t\t\t\t\t\t\t\t\t\tlayoutKey\n\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\ttypeof layoutValue === 'object' &&\n\t\t\t\t\t\t\t\t\t\t\t\tlayoutValue !== null &&\n\t\t\t\t\t\t\t\t\t\t\t\t!(layoutValue as Any).__lazy__\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tObject.assign(mergedLayoutData, layoutValue);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (Object.keys(mergedLayoutData).length > 0) {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t\t\t\t\t'[useData MUTATION 6] Setting pathname',\n\t\t\t\t\t\t\t\t\t\t\t\tpathname,\n\t\t\t\t\t\t\t\t\t\t\t\t'to mergedLayoutData',\n\t\t\t\t\t\t\t\t\t\t\t\tmergedLayoutData,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[pathname] = mergedLayoutData;\n\t\t\t\t\t\t\t\t\t\t\tkeys.push(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}\n\n\t\t\t\t\t\t\t\t// Notify all affected keys\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: { keys },\n\t\t\t\t\t\t\t\t\t\t}) as Any,\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\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Single key response (no layout keys)\n\t\t\t\t\t\tconst targetKey = isLikelyDataKey ? pathToFetch : k;\n\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t'[useData MUTATION 7] Setting targetKey',\n\t\t\t\t\t\t\ttargetKey,\n\t\t\t\t\t\t\t'to payload',\n\t\t\t\t\t\t\tpayload,\n\t\t\t\t\t\t\t'k:',\n\t\t\t\t\t\t\tk,\n\t\t\t\t\t\t\t'pathToFetch:',\n\t\t\t\t\t\t\tpathToFetch,\n\t\t\t\t\t\t);\n\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[targetKey] = payload;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\tdetail: { key: targetKey },\n\t\t\t\t\t\t\t\t}) as Any,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Force a local re-render\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})\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)[pathToFetch];\n\t\t\t\t\t} catch {}\n\t\t\t\t});\n\n\t\t\t// Store the promise so components can throw it for Suspense\n\t\t\tpending[pathToFetch] = fetchPromise;\n\t\t} catch {}\n\t}, [k, pathname]);\n\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Pagination state management\n\treturn useMemo(() => {\n\t\ttry {\n\t\t\t_tick;\n\t\t\tconst source =\n\t\t\t\ttypeof window === 'undefined'\n\t\t\t\t\t? ((globalThis as Any).__REROUTE_DATA__ as Record<string, unknown>)\n\t\t\t\t\t: ((window as Any).__REROUTE_DATA__ as Record<string, unknown>);\n\n\t\t\tlet value = source?.[k] as T | Promise<T> | undefined;\n\n\t\t\t// EARLY CHECK: If value is a __reroute_multiple__ wrapper, extract route data immediately\n\t\t\t// This must happen before the undefined check to prevent hydration mismatches\n\t\t\tif (\n\t\t\t\ttypeof value === 'object' &&\n\t\t\t\tvalue !== null &&\n\t\t\t\t(value as Any).__reroute_multiple__ === true\n\t\t\t) {\n\t\t\t\tconst multipleData = value as Record<string, unknown>;\n\t\t\t\t// Try to extract data for the current pathname from the wrapper\n\t\t\t\tif (k in multipleData && k !== '__reroute_multiple__') {\n\t\t\t\t\tvalue = multipleData[k] as T | Promise<T> | undefined;\n\t\t\t\t} else {\n\t\t\t\t\t// Check if there's route-specific data (non-layout keys)\n\t\t\t\t\tfor (const [key, val] of Object.entries(multipleData)) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tkey !== '__reroute_multiple__' &&\n\t\t\t\t\t\t\t!key.startsWith('__layout:')\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tvalue = val as T | Promise<T> | undefined;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If value is undefined on the client, throw a promise for Suspense\n\t\t\t// EXCEPT during initial hydration - SSR data should be available, don't show skeleton\n\t\t\tif (value === undefined && typeof window !== 'undefined') {\n\t\t\t\t// During initial hydration, return undefined instead of throwing\n\t\t\t\t// This prevents the skeleton flash when SSR data is being hydrated\n\t\t\t\tif (isInitialHydration()) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tconst w = window as Any;\n\t\t\t\tw.__REROUTE_DATA_PENDING__ = w.__REROUTE_DATA_PENDING__ || {};\n\t\t\t\tconst pending = w.__REROUTE_DATA_PENDING__;\n\n\t\t\t\t// Check if there's already a pending fetch\n\t\t\t\tconst existingPromise = pending[k] || pending[pathname];\n\t\t\t\tif (existingPromise && typeof existingPromise !== 'boolean') {\n\t\t\t\t\tthrow existingPromise;\n\t\t\t\t}\n\n\t\t\t\t// No pending fetch - create one synchronously and throw it for Suspense\n\t\t\t\tconst fetchPath = k.startsWith('/') ? k : pathname;\n\t\t\t\tconst fetchPromise = fetch(routeDataUrl(fetchPath), {\n\t\t\t\t\theaders: { Accept: 'application/json' },\n\t\t\t\t\tcredentials: 'same-origin',\n\t\t\t\t})\n\t\t\t\t\t.then(readRouteAnswer)\n\t\t\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Response parsing and state updates\n\t\t\t\t\t.then((j) => {\n\t\t\t\t\t\tif (!j) return;\n\t\t\t\t\t\tconst raw = j.data ?? j;\n\t\t\t\t\t\t// Response may be nested: {\"/path\": {...actual data...}}\n\t\t\t\t\t\t// Extract actual data if it's wrapped under the pathname key\n\t\t\t\t\t\tconst payload =\n\t\t\t\t\t\t\ttypeof raw === 'object' &&\n\t\t\t\t\t\t\traw !== null &&\n\t\t\t\t\t\t\tfetchPath in raw &&\n\t\t\t\t\t\t\ttypeof raw[fetchPath] === 'object'\n\t\t\t\t\t\t\t\t? raw[fetchPath]\n\t\t\t\t\t\t\t\t: raw;\n\t\t\t\t\t\tw.__REROUTE_DATA__ = w.__REROUTE_DATA__ || {};\n\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[fetchPath] = payload;\n\t\t\t\t\t\t// Also flatten nested keys (e.g. level_0, level_1) to top level\n\t\t\t\t\t\t// so useData('level_0') can find them\n\t\t\t\t\t\tconst keys: string[] = [fetchPath];\n\t\t\t\t\t\tif (typeof payload === 'object' && payload !== null) {\n\t\t\t\t\t\t\tfor (const [subKey, subVal] of Object.entries(payload)) {\n\t\t\t\t\t\t\t\tif (!(subKey.startsWith('/') || subKey.startsWith('__'))) {\n\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[subKey] = subVal;\n\t\t\t\t\t\t\t\t\tkeys.push(subKey);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\tdetail: { keys },\n\t\t\t\t\t\t\t\t}) as Any,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t})\n\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\tdelete pending[fetchPath];\n\t\t\t\t\t});\n\n\t\t\t\tpending[fetchPath] = fetchPromise;\n\t\t\t\tthrow fetchPromise;\n\t\t\t}\n\n\t\t\t// DEBUG: Log what we're returning\n\t\t\t// if (typeof window !== 'undefined' && k === '/forum') {\n\t\t\t// \tconsole.log('[useData return] k:', k, 'value:', value, 'source:', source);\n\t\t\t// \tconsole.log('[useData return] value === source:', value === source);\n\t\t\t// }\n\n\t\t\t// BUGFIX: If value is incorrectly set to the entire source object, extract the correct key\n\t\t\tif (typeof value === 'object' && value !== null && value === source) {\n\t\t\t\t// console.warn('[useData] BUG DETECTED: value === source, extracting correct data for key:', k);\n\t\t\t\t// The entire __REROUTE_DATA__ was incorrectly stored at this key\n\t\t\t\t// Extract just this key's data if it exists as a nested property\n\t\t\t\tif (typeof source === 'object' && source !== null && k in source) {\n\t\t\t\t\tvalue = source[k] as T | Promise<T> | undefined;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// BUGFIX: If value contains both layout keys and the current pathname, extract just the pathname's data\n\t\t\tif (\n\t\t\t\ttypeof value === 'object' &&\n\t\t\t\tvalue !== null &&\n\t\t\t\ttypeof k === 'string' &&\n\t\t\t\tk.startsWith('/') &&\n\t\t\t\ttypeof source === 'object' &&\n\t\t\t\tsource !== null\n\t\t\t) {\n\t\t\t\tconst valueKeys = Object.keys(value);\n\t\t\t\tconst hasLayoutKeys = valueKeys.some((key) =>\n\t\t\t\t\tkey.startsWith('__layout:'),\n\t\t\t\t);\n\t\t\t\tconst hasPathnameKey = k in value;\n\n\t\t\t\tif (hasLayoutKeys && hasPathnameKey) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t'[useData] BUG DETECTED: value contains both layout and pathname keys, extracting pathname data for:',\n\t\t\t\t\t\tk,\n\t\t\t\t\t);\n\t\t\t\t\t// Value incorrectly contains {__layout:/: {...}, /forum: {...}}\n\t\t\t\t\t// Extract just the pathname's data\n\t\t\t\t\tconst extractedValue = (value as Record<string, unknown>)[k];\n\t\t\t\t\tif (extractedValue !== undefined) {\n\t\t\t\t\t\tvalue = extractedValue as T | Promise<T> | undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// SPECIAL CASE: If value is a wrapper object with only layout keys, unwrap it\n\t\t\tif (\n\t\t\t\ttypeof value === 'object' &&\n\t\t\t\tvalue !== null &&\n\t\t\t\ttypeof window !== 'undefined'\n\t\t\t) {\n\t\t\t\tconst keys = Object.keys(value);\n\t\t\t\tconst layoutKeys = keys.filter((key) => key.startsWith('__layout:'));\n\n\t\t\t\tif (layoutKeys.length > 0 && layoutKeys.length === keys.length) {\n\t\t\t\t\t// Check if all layout values are lazy markers\n\t\t\t\t\tconst allLazy = layoutKeys.every((layoutKey) => {\n\t\t\t\t\t\tconst layoutValue = (value as Record<string, unknown>)[layoutKey];\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\ttypeof layoutValue === 'object' &&\n\t\t\t\t\t\t\tlayoutValue !== null &&\n\t\t\t\t\t\t\t(layoutValue as Any).__lazy__\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\n\t\t\t\t\tif (allLazy && layoutKeys.length === 1) {\n\t\t\t\t\t\t// Single lazy marker in wrapper - unwrap and continue processing\n\n\t\t\t\t\t\tconst lazyMarker = (value as Record<string, unknown>)[\n\t\t\t\t\t\t\tlayoutKeys[0]\n\t\t\t\t\t\t];\n\n\t\t\t\t\t\t// Replace value with unwrapped lazy marker and continue processing (NO MUTATIONS)\n\t\t\t\t\t\tvalue = lazyMarker as T | Promise<T> | undefined;\n\t\t\t\t\t} else if (!allLazy) {\n\t\t\t\t\t\t// Merge layout data from wrapper (NO MUTATIONS - just return merged data)\n\n\t\t\t\t\t\tconst mergedLayoutData: Record<string, unknown> = {};\n\t\t\t\t\t\tfor (const layoutKey of layoutKeys) {\n\t\t\t\t\t\t\tconst layoutValue = (value as Record<string, unknown>)[layoutKey];\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\ttypeof layoutValue === 'object' &&\n\t\t\t\t\t\t\t\tlayoutValue !== null &&\n\t\t\t\t\t\t\t\t!(layoutValue as Any).__lazy__\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tObject.assign(mergedLayoutData, layoutValue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (Object.keys(mergedLayoutData).length > 0) {\n\t\t\t\t\t\t\treturn mergedLayoutData as T | undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If we encounter a __reroute_multiple__ object, it means it wasn't unpacked yet\n\t\t\t// Extract the route data directly instead of returning undefined\n\t\t\t// This prevents hydration mismatches on first render\n\t\t\tif (\n\t\t\t\ttypeof value === 'object' &&\n\t\t\t\tvalue !== null &&\n\t\t\t\t(value as Any).__reroute_multiple__ === true\n\t\t\t) {\n\t\t\t\t// Try to extract data for the current pathname from the wrapper\n\t\t\t\tconst multipleData = value as Record<string, unknown>;\n\t\t\t\tif (k in multipleData && k !== '__reroute_multiple__') {\n\t\t\t\t\tvalue = multipleData[k] as T | Promise<T> | undefined;\n\t\t\t\t} else {\n\t\t\t\t\t// Check if there's route-specific data (non-layout keys)\n\t\t\t\t\tfor (const [key, val] of Object.entries(multipleData)) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tkey !== '__reroute_multiple__' &&\n\t\t\t\t\t\t\t!key.startsWith('__layout:')\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tvalue = val as T | Promise<T> | undefined;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If still wrapped or undefined after extraction, return undefined\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(typeof value === 'object' &&\n\t\t\t\t\t\tvalue !== null &&\n\t\t\t\t\t\t(value as Any).__reroute_multiple__ === true)\n\t\t\t\t) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Check if this is a lazy marker\n\t\t\tif (isLazyLoadMarker(value)) {\n\t\t\t\t// During initial hydration, return undefined to avoid skeleton flash\n\t\t\t\t// The data will load and trigger a re-render\n\t\t\t\tif (isInitialHydration()) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tconst fetchUrl = value.__fetch__;\n\t\t\t\tif (typeof window !== 'undefined') {\n\t\t\t\t\tconst w = window as Any;\n\t\t\t\t\t// Deduplicate fetches\n\t\t\t\t\tw.__REROUTE_LAZY_PENDING__ = w.__REROUTE_LAZY_PENDING__ || {};\n\t\t\t\t\tconst pending = w.__REROUTE_LAZY_PENDING__;\n\n\t\t\t\t\t// Use fetchUrl as dedup key to coordinate with RouterProvider\n\t\t\t\t\tif (!pending[fetchUrl]) {\n\t\t\t\t\t\t// Start fetch and throw the promise\n\t\t\t\t\t\tconst fetchPromise = fetch(fetchUrl, {\n\t\t\t\t\t\t\theaders: { Accept: 'application/json' },\n\t\t\t\t\t\t\tcredentials: 'same-origin',\n\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.then(readRouteAnswer)\n\t\t\t\t\t\t\t.then((j) => {\n\t\t\t\t\t\t\t\tif (j) {\n\t\t\t\t\t\t\t\t\tconst payload = j.data ?? j;\n\t\t\t\t\t\t\t\t\tconst globalData = w.__REROUTE_DATA__ as Any as Record<\n\t\t\t\t\t\t\t\t\t\tstring,\n\t\t\t\t\t\t\t\t\t\tunknown\n\t\t\t\t\t\t\t\t\t>;\n\n\t\t\t\t\t\t\t\t\t// Update nested structure if needed\n\t\t\t\t\t\t\t\t\tupdateNestedDataIfNeeded(globalData, k, payload);\n\n\t\t\t\t\t\t\t\t\t// Store the resolved data at the key\n\t\t\t\t\t\t\t\t\tglobalData[k] = payload;\n\n\t\t\t\t\t\t\t\t\t// Notify listeners\n\t\t\t\t\t\t\t\t\tdispatchDataUpdateEvent(k);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn j?.data;\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\t\t\tdelete pending[fetchUrl];\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\tpending[fetchUrl] = fetchPromise;\n\t\t\t\t\t\tthrow fetchPromise; // Trigger Suspense\n\t\t\t\t\t}\n\t\t\t\t\t// Re-throw the pending promise\n\t\t\t\t\tthrow pending[fetchUrl];\n\t\t\t\t}\n\t\t\t\t// Fallback: treat as undefined\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// During initial hydration, don't throw promises to avoid skeleton flash\n\t\t\tif (isThenable(value)) {\n\t\t\t\tif (isInitialHydration()) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tthrow value;\n\t\t\t}\n\n\t\t\t// DEBUG: Final return value\n\t\t\t// if (typeof window !== 'undefined' && k === '/forum') {\n\t\t\t// \tconsole.log('[useData FINAL RETURN] returning:', value);\n\t\t\t// }\n\n\t\t\treturn value as T | undefined;\n\t\t} catch (error) {\n\t\t\t// Re-throw promises for React Suspense\n\t\t\tif (isThenable(error)) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\t}, [k, _tick, pathname]);\n}\n\nexport { isLazyLoadMarker };\n",
14
+ "import { useEffect, useMemo, useState } from 'react';\nimport { readRouteAnswer } from '../lib/head';\nimport { routeDataUrl } from '../lib/static-data';\nimport type { Any } from '../types/any';\nimport type { LazyLoadMarker } from '../types/router';\nimport { useRouter } from './useRouter';\n\nconst isThenable = (value: unknown): value is Promise<unknown> => {\n\treturn (\n\t\ttypeof value === 'object' &&\n\t\tvalue !== null &&\n\t\ttypeof (value as { then?: unknown }).then === 'function'\n\t);\n};\n\nconst isLazyLoadMarker = (value: unknown): value is LazyLoadMarker => {\n\treturn (\n\t\ttypeof value === 'object' &&\n\t\tvalue !== null &&\n\t\t(value as LazyLoadMarker).__lazy__ === true &&\n\t\ttypeof (value as LazyLoadMarker).__fetch__ === 'string'\n\t);\n};\n\n/**\n * Check if we're in the initial hydration phase.\n * During initial hydration, we should not throw Suspense promises\n * as the SSR data should already be available.\n */\nconst isInitialHydration = (): boolean => {\n\ttry {\n\t\tconst g = globalThis as Any;\n\t\treturn !!g.__REROUTE_INITIAL_HYDRATION__;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nconst hasNestedLazyMarker = (topLevelData: unknown, key: string): boolean => {\n\tif (!topLevelData || typeof topLevelData !== 'object') {\n\t\treturn false;\n\t}\n\tconst topLevel = topLevelData as Record<string, unknown>;\n\treturn (\n\t\tkey in topLevel &&\n\t\ttopLevel[key] !== null &&\n\t\ttypeof topLevel[key] === 'object' &&\n\t\tisLazyLoadMarker(topLevel[key])\n\t);\n};\n\nconst updateNestedDataIfNeeded = (\n\tglobalData: Record<string, unknown>,\n\tkey: string,\n\tpayload: unknown,\n): void => {\n\tconst topLevelData = globalData[key];\n\tif (hasNestedLazyMarker(topLevelData, key)) {\n\t\t(topLevelData as Record<string, unknown>)[key] = payload;\n\t}\n};\n\nconst dispatchDataUpdateEvent = (key: string): void => {\n\ttry {\n\t\tif (typeof window !== 'undefined') {\n\t\t\twindow.dispatchEvent(\n\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\tdetail: { key },\n\t\t\t\t}) as Any,\n\t\t\t);\n\t\t}\n\t} catch {\n\t\t// Silently ignore errors in event dispatch\n\t}\n};\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 router = useRouter();\n\tconst [_tick, setTick] = useState(0);\n\n\t// The page's key follows the router on every render, so a page that stays\n\t// mounted across navigation (/blog/a → /blog/b) reads the new page's data.\n\t// The query string comes from the URL as typed, matching how SSR seeds it;\n\t// while the URL is ahead of the router (back/forward fetching first), the\n\t// committed page keeps its own data.\n\tconst currentUrl =\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.location.pathname === router.pathname\n\t\t\t? window.location.pathname + window.location.search\n\t\t\t: router.pathname;\n\n\t// Clear initial hydration flag after first render (backup mechanism)\n\t// This ensures the flag is cleared even if LazyRoute isn't used\n\tuseEffect(() => {\n\t\tif (typeof window !== 'undefined' && isInitialHydration()) {\n\t\t\t// Use rAF to ensure React has fully committed\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\ttry {\n\t\t\t\t\tdelete (globalThis as Any).__REROUTE_INITIAL_HYDRATION__;\n\t\t\t\t} catch {}\n\t\t\t});\n\t\t}\n\t}, []);\n\n\tconst pathname = currentUrl;\n\tconst k = key || pathname;\n\n\t// DEBUG: Log what key we're using\n\t// if (typeof window !== 'undefined' && pathname === '/forum') {\n\t// \tconsole.log('[useData] key:', key, 'pathname:', pathname, 'k:', k);\n\t// }\n\n\t// Client-side hooks\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\tconst keys: string[] = Array.isArray(detail?.keys)\n\t\t\t\t\t? detail.keys\n\t\t\t\t\t: detail?.key\n\t\t\t\t\t\t? [detail.key]\n\t\t\t\t\t\t: [];\n\t\t\t\tif (keys.length > 0 && !keys.includes(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\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Data prefetch and cache management\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\n\t\t\t// Check if the current key holds a __reroute_multiple__ object that needs unpacking\n\t\t\tconst currentValue = (w.__REROUTE_DATA__ as Any)[k];\n\n\t\t\tif (\n\t\t\t\tcurrentValue &&\n\t\t\t\ttypeof currentValue === 'object' &&\n\t\t\t\tcurrentValue.__reroute_multiple__ === true\n\t\t\t) {\n\t\t\t\t// Unpack the multiple sources into individual keys\n\t\t\t\tfor (const [key, value] of Object.entries(currentValue)) {\n\t\t\t\t\tif (key !== '__reroute_multiple__') {\n\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Delete the wrapper object - individual keys are now populated\n\t\t\t\tdelete (w.__REROUTE_DATA__ as Any)[k];\n\t\t\t\t// Trigger re-render\n\t\t\t\tsetTick((x) => x + 1);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst existingValue = (w.__REROUTE_DATA__ as Any)[k];\n\t\t\tif (existingValue !== undefined) {\n\t\t\t\t// SPECIAL CASE: If the existing value is a wrapper object containing only layout keys,\n\t\t\t\t// it means it was improperly stored - we need to unpack it\n\t\t\t\tif (typeof existingValue === 'object' && existingValue !== null) {\n\t\t\t\t\tconst keys = Object.keys(existingValue);\n\t\t\t\t\tconst hasOnlyLayoutKeys =\n\t\t\t\t\t\tkeys.length > 0 && keys.every((key) => key.startsWith('__layout:'));\n\n\t\t\t\t\tif (hasOnlyLayoutKeys) {\n\t\t\t\t\t\t// Don't return - continue to the unpacking logic below\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Strategy: If this looks like a data key (not a pathname), first try fetching\n\t\t\t// the current pathname. This handles routes that return flattened multi-key data.\n\t\t\t// If pathname fetch doesn't populate this key, fall back to fetching the key directly.\n\t\t\tconst isLikelyDataKey = !k.startsWith('/');\n\t\t\tconst pathToFetch = isLikelyDataKey ? pathname : k;\n\n\t\t\t// Deduplicate concurrent fetches for the same path\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[pathToFetch]) {\n\t\t\t\t// Another hook is already fetching this path, wait for it\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Include current query string if fetching current pathname\n\t\t\tconst fetchPath = pathToFetch === pathname ? pathname : pathToFetch;\n\n\t\t\tconst fetchPromise = fetch(routeDataUrl(fetchPath), {\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(readRouteAnswer)\n\t\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Response parsing and state updates\n\t\t\t\t.then((j) => {\n\t\t\t\t\tif (!j) return;\n\t\t\t\t\tconst payload = j.data ?? j;\n\n\t\t\t\t\t// Check if this is a multi-source response (layout + route)\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof payload === 'object' &&\n\t\t\t\t\t\tpayload !== null &&\n\t\t\t\t\t\tpayload.__reroute_multiple__ === true\n\t\t\t\t\t) {\n\t\t\t\t\t\t// Multiple data sources: populate each at its specific key\n\t\t\t\t\t\tconst keys: string[] = [];\n\t\t\t\t\t\tfor (const [key, value] of Object.entries(payload)) {\n\t\t\t\t\t\t\tif (key !== '__reroute_multiple__') {\n\t\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t\t'[useData MUTATION 1] Setting',\n\t\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\t\t'to',\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t'payload is:',\n\t\t\t\t\t\t\t\t\tpayload,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t\t\t\tkeys.push(key);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Notify all affected keys\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\tdetail: { keys },\n\t\t\t\t\t\t\t\t}) as Any,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t} else if (\n\t\t\t\t\t\ttypeof payload === 'object' &&\n\t\t\t\t\t\tpayload !== null &&\n\t\t\t\t\t\t(payload.__reroute_flattened__ === true ||\n\t\t\t\t\t\t\tpayload.__flatten__ === true)\n\t\t\t\t\t) {\n\t\t\t\t\t\t// Flatten: populate each key individually\n\t\t\t\t\t\tconst keys: string[] = [];\n\t\t\t\t\t\tfor (const [key, value] of Object.entries(payload)) {\n\t\t\t\t\t\t\tif (key !== '__reroute_flattened__' && key !== '__flatten__') {\n\t\t\t\t\t\t\t\t// console.log('[useData MUTATION 2] Setting', key, 'to', value);\n\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t\t\t\tkeys.push(key);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Also store at pathname for consistency\n\t\t\t\t\t\tif (isLikelyDataKey) {\n\t\t\t\t\t\t\t// console.log(\n\t\t\t\t\t\t\t// \t'[useData MUTATION 3] Setting pathname',\n\t\t\t\t\t\t\t// \tpathname,\n\t\t\t\t\t\t\t// \t'to payload',\n\t\t\t\t\t\t\t// );\n\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[pathname] = payload;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Notify all affected keys\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\tdetail: { keys },\n\t\t\t\t\t\t\t\t}) as Any,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Check if payload contains layout keys that need unpacking\n\t\t\t\t\t\tif (typeof payload === 'object' && payload !== null) {\n\t\t\t\t\t\t\tconst layoutKeys = Object.keys(payload).filter((key) =>\n\t\t\t\t\t\t\t\tkey.startsWith('__layout:'),\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif (layoutKeys.length > 0) {\n\t\t\t\t\t\t\t\t// We have layout keys - unpack them and also store at pathname\n\n\t\t\t\t\t\t\t\tconst keys: string[] = [];\n\t\t\t\t\t\t\t\tfor (const [key, value] of Object.entries(payload)) {\n\t\t\t\t\t\t\t\t\tif (key.startsWith('__layout:')) {\n\t\t\t\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t\t\t\t'[useData MUTATION 4] Setting layout key',\n\t\t\t\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\t\t\t\t'to',\n\t\t\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t\t\t\t\t\tkeys.push(key);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Also store at pathname if this was a pathname fetch\n\t\t\t\t\t\t\t\t// This allows useData() without key to work in layouts\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t!isLikelyDataKey &&\n\t\t\t\t\t\t\t\t\tlayoutKeys.length === Object.keys(payload).length\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t// Check if we have only one layout key\n\t\t\t\t\t\t\t\t\tif (layoutKeys.length === 1) {\n\t\t\t\t\t\t\t\t\t\t// Single layout: store its value directly at pathname (preserving lazy markers)\n\t\t\t\t\t\t\t\t\t\tconst layoutValue = (payload as Record<string, unknown>)[\n\t\t\t\t\t\t\t\t\t\t\tlayoutKeys[0]\n\t\t\t\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t\t\t\t'[useData MUTATION 5] Setting pathname',\n\t\t\t\t\t\t\t\t\t\t\tpathname,\n\t\t\t\t\t\t\t\t\t\t\t'to layoutValue',\n\t\t\t\t\t\t\t\t\t\t\tlayoutValue,\n\t\t\t\t\t\t\t\t\t\t\t'payload:',\n\t\t\t\t\t\t\t\t\t\t\tpayload,\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[pathname] = layoutValue;\n\t\t\t\t\t\t\t\t\t\tkeys.push(pathname);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// Multiple layouts: merge them (but skip lazy markers as they can't be merged)\n\t\t\t\t\t\t\t\t\t\tconst mergedLayoutData: Record<string, unknown> = {};\n\n\t\t\t\t\t\t\t\t\t\tfor (const layoutKey of layoutKeys) {\n\t\t\t\t\t\t\t\t\t\t\tconst layoutValue = (payload as Record<string, unknown>)[\n\t\t\t\t\t\t\t\t\t\t\t\tlayoutKey\n\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\ttypeof layoutValue === 'object' &&\n\t\t\t\t\t\t\t\t\t\t\t\tlayoutValue !== null &&\n\t\t\t\t\t\t\t\t\t\t\t\t!(layoutValue as Any).__lazy__\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tObject.assign(mergedLayoutData, layoutValue);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (Object.keys(mergedLayoutData).length > 0) {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t\t\t\t\t'[useData MUTATION 6] Setting pathname',\n\t\t\t\t\t\t\t\t\t\t\t\tpathname,\n\t\t\t\t\t\t\t\t\t\t\t\t'to mergedLayoutData',\n\t\t\t\t\t\t\t\t\t\t\t\tmergedLayoutData,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[pathname] = mergedLayoutData;\n\t\t\t\t\t\t\t\t\t\t\tkeys.push(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}\n\n\t\t\t\t\t\t\t\t// Notify all affected keys\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: { keys },\n\t\t\t\t\t\t\t\t\t\t}) as Any,\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\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Single key response (no layout keys)\n\t\t\t\t\t\tconst targetKey = isLikelyDataKey ? pathToFetch : k;\n\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t'[useData MUTATION 7] Setting targetKey',\n\t\t\t\t\t\t\ttargetKey,\n\t\t\t\t\t\t\t'to payload',\n\t\t\t\t\t\t\tpayload,\n\t\t\t\t\t\t\t'k:',\n\t\t\t\t\t\t\tk,\n\t\t\t\t\t\t\t'pathToFetch:',\n\t\t\t\t\t\t\tpathToFetch,\n\t\t\t\t\t\t);\n\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[targetKey] = payload;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\tdetail: { key: targetKey },\n\t\t\t\t\t\t\t\t}) as Any,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Force a local re-render\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})\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)[pathToFetch];\n\t\t\t\t\t} catch {}\n\t\t\t\t});\n\n\t\t\t// Store the promise so components can throw it for Suspense\n\t\t\tpending[pathToFetch] = fetchPromise;\n\t\t} catch {}\n\t}, [k, pathname]);\n\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Pagination state management\n\treturn useMemo(() => {\n\t\ttry {\n\t\t\t_tick;\n\t\t\tconst source =\n\t\t\t\ttypeof window === 'undefined'\n\t\t\t\t\t? ((globalThis as Any).__REROUTE_DATA__ as Record<string, unknown>)\n\t\t\t\t\t: ((window as Any).__REROUTE_DATA__ as Record<string, unknown>);\n\n\t\t\tlet value = source?.[k] as T | Promise<T> | undefined;\n\n\t\t\t// EARLY CHECK: If value is a __reroute_multiple__ wrapper, extract route data immediately\n\t\t\t// This must happen before the undefined check to prevent hydration mismatches\n\t\t\tif (\n\t\t\t\ttypeof value === 'object' &&\n\t\t\t\tvalue !== null &&\n\t\t\t\t(value as Any).__reroute_multiple__ === true\n\t\t\t) {\n\t\t\t\tconst multipleData = value as Record<string, unknown>;\n\t\t\t\t// Try to extract data for the current pathname from the wrapper\n\t\t\t\tif (k in multipleData && k !== '__reroute_multiple__') {\n\t\t\t\t\tvalue = multipleData[k] as T | Promise<T> | undefined;\n\t\t\t\t} else {\n\t\t\t\t\t// Check if there's route-specific data (non-layout keys)\n\t\t\t\t\tfor (const [key, val] of Object.entries(multipleData)) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tkey !== '__reroute_multiple__' &&\n\t\t\t\t\t\t\t!key.startsWith('__layout:')\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tvalue = val as T | Promise<T> | undefined;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If value is undefined on the client, throw a promise for Suspense\n\t\t\t// EXCEPT during initial hydration - SSR data should be available, don't show skeleton\n\t\t\tif (value === undefined && typeof window !== 'undefined') {\n\t\t\t\t// During initial hydration, return undefined instead of throwing\n\t\t\t\t// This prevents the skeleton flash when SSR data is being hydrated\n\t\t\t\tif (isInitialHydration()) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tconst w = window as Any;\n\t\t\t\tw.__REROUTE_DATA_PENDING__ = w.__REROUTE_DATA_PENDING__ || {};\n\t\t\t\tconst pending = w.__REROUTE_DATA_PENDING__;\n\n\t\t\t\t// Check if there's already a pending fetch\n\t\t\t\tconst existingPromise = pending[k] || pending[pathname];\n\t\t\t\tif (existingPromise && typeof existingPromise !== 'boolean') {\n\t\t\t\t\tthrow existingPromise;\n\t\t\t\t}\n\n\t\t\t\t// No pending fetch - create one synchronously and throw it for Suspense\n\t\t\t\tconst fetchPath = k.startsWith('/') ? k : pathname;\n\t\t\t\tconst fetchPromise = fetch(routeDataUrl(fetchPath), {\n\t\t\t\t\theaders: { Accept: 'application/json' },\n\t\t\t\t\tcredentials: 'same-origin',\n\t\t\t\t})\n\t\t\t\t\t.then(readRouteAnswer)\n\t\t\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Response parsing and state updates\n\t\t\t\t\t.then((j) => {\n\t\t\t\t\t\tif (!j) return;\n\t\t\t\t\t\tconst raw = j.data ?? j;\n\t\t\t\t\t\t// Response may be nested: {\"/path\": {...actual data...}}\n\t\t\t\t\t\t// Extract actual data if it's wrapped under the pathname key\n\t\t\t\t\t\tconst payload =\n\t\t\t\t\t\t\ttypeof raw === 'object' &&\n\t\t\t\t\t\t\traw !== null &&\n\t\t\t\t\t\t\tfetchPath in raw &&\n\t\t\t\t\t\t\ttypeof raw[fetchPath] === 'object'\n\t\t\t\t\t\t\t\t? raw[fetchPath]\n\t\t\t\t\t\t\t\t: raw;\n\t\t\t\t\t\tw.__REROUTE_DATA__ = w.__REROUTE_DATA__ || {};\n\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[fetchPath] = payload;\n\t\t\t\t\t\t// Also flatten nested keys (e.g. level_0, level_1) to top level\n\t\t\t\t\t\t// so useData('level_0') can find them\n\t\t\t\t\t\tconst keys: string[] = [fetchPath];\n\t\t\t\t\t\tif (typeof payload === 'object' && payload !== null) {\n\t\t\t\t\t\t\tfor (const [subKey, subVal] of Object.entries(payload)) {\n\t\t\t\t\t\t\t\tif (!(subKey.startsWith('/') || subKey.startsWith('__'))) {\n\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[subKey] = subVal;\n\t\t\t\t\t\t\t\t\tkeys.push(subKey);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\tdetail: { keys },\n\t\t\t\t\t\t\t\t}) as Any,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t})\n\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\tdelete pending[fetchPath];\n\t\t\t\t\t});\n\n\t\t\t\tpending[fetchPath] = fetchPromise;\n\t\t\t\tthrow fetchPromise;\n\t\t\t}\n\n\t\t\t// DEBUG: Log what we're returning\n\t\t\t// if (typeof window !== 'undefined' && k === '/forum') {\n\t\t\t// \tconsole.log('[useData return] k:', k, 'value:', value, 'source:', source);\n\t\t\t// \tconsole.log('[useData return] value === source:', value === source);\n\t\t\t// }\n\n\t\t\t// BUGFIX: If value is incorrectly set to the entire source object, extract the correct key\n\t\t\tif (typeof value === 'object' && value !== null && value === source) {\n\t\t\t\t// console.warn('[useData] BUG DETECTED: value === source, extracting correct data for key:', k);\n\t\t\t\t// The entire __REROUTE_DATA__ was incorrectly stored at this key\n\t\t\t\t// Extract just this key's data if it exists as a nested property\n\t\t\t\tif (typeof source === 'object' && source !== null && k in source) {\n\t\t\t\t\tvalue = source[k] as T | Promise<T> | undefined;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// BUGFIX: If value contains both layout keys and the current pathname, extract just the pathname's data\n\t\t\tif (\n\t\t\t\ttypeof value === 'object' &&\n\t\t\t\tvalue !== null &&\n\t\t\t\ttypeof k === 'string' &&\n\t\t\t\tk.startsWith('/') &&\n\t\t\t\ttypeof source === 'object' &&\n\t\t\t\tsource !== null\n\t\t\t) {\n\t\t\t\tconst valueKeys = Object.keys(value);\n\t\t\t\tconst hasLayoutKeys = valueKeys.some((key) =>\n\t\t\t\t\tkey.startsWith('__layout:'),\n\t\t\t\t);\n\t\t\t\tconst hasPathnameKey = k in value;\n\n\t\t\t\tif (hasLayoutKeys && hasPathnameKey) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t'[useData] BUG DETECTED: value contains both layout and pathname keys, extracting pathname data for:',\n\t\t\t\t\t\tk,\n\t\t\t\t\t);\n\t\t\t\t\t// Value incorrectly contains {__layout:/: {...}, /forum: {...}}\n\t\t\t\t\t// Extract just the pathname's data\n\t\t\t\t\tconst extractedValue = (value as Record<string, unknown>)[k];\n\t\t\t\t\tif (extractedValue !== undefined) {\n\t\t\t\t\t\tvalue = extractedValue as T | Promise<T> | undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// SPECIAL CASE: If value is a wrapper object with only layout keys, unwrap it\n\t\t\tif (\n\t\t\t\ttypeof value === 'object' &&\n\t\t\t\tvalue !== null &&\n\t\t\t\ttypeof window !== 'undefined'\n\t\t\t) {\n\t\t\t\tconst keys = Object.keys(value);\n\t\t\t\tconst layoutKeys = keys.filter((key) => key.startsWith('__layout:'));\n\n\t\t\t\tif (layoutKeys.length > 0 && layoutKeys.length === keys.length) {\n\t\t\t\t\t// Check if all layout values are lazy markers\n\t\t\t\t\tconst allLazy = layoutKeys.every((layoutKey) => {\n\t\t\t\t\t\tconst layoutValue = (value as Record<string, unknown>)[layoutKey];\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\ttypeof layoutValue === 'object' &&\n\t\t\t\t\t\t\tlayoutValue !== null &&\n\t\t\t\t\t\t\t(layoutValue as Any).__lazy__\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\n\t\t\t\t\tif (allLazy && layoutKeys.length === 1) {\n\t\t\t\t\t\t// Single lazy marker in wrapper - unwrap and continue processing\n\n\t\t\t\t\t\tconst lazyMarker = (value as Record<string, unknown>)[\n\t\t\t\t\t\t\tlayoutKeys[0]\n\t\t\t\t\t\t];\n\n\t\t\t\t\t\t// Replace value with unwrapped lazy marker and continue processing (NO MUTATIONS)\n\t\t\t\t\t\tvalue = lazyMarker as T | Promise<T> | undefined;\n\t\t\t\t\t} else if (!allLazy) {\n\t\t\t\t\t\t// Merge layout data from wrapper (NO MUTATIONS - just return merged data)\n\n\t\t\t\t\t\tconst mergedLayoutData: Record<string, unknown> = {};\n\t\t\t\t\t\tfor (const layoutKey of layoutKeys) {\n\t\t\t\t\t\t\tconst layoutValue = (value as Record<string, unknown>)[layoutKey];\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\ttypeof layoutValue === 'object' &&\n\t\t\t\t\t\t\t\tlayoutValue !== null &&\n\t\t\t\t\t\t\t\t!(layoutValue as Any).__lazy__\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tObject.assign(mergedLayoutData, layoutValue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (Object.keys(mergedLayoutData).length > 0) {\n\t\t\t\t\t\t\treturn mergedLayoutData as T | undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If we encounter a __reroute_multiple__ object, it means it wasn't unpacked yet\n\t\t\t// Extract the route data directly instead of returning undefined\n\t\t\t// This prevents hydration mismatches on first render\n\t\t\tif (\n\t\t\t\ttypeof value === 'object' &&\n\t\t\t\tvalue !== null &&\n\t\t\t\t(value as Any).__reroute_multiple__ === true\n\t\t\t) {\n\t\t\t\t// Try to extract data for the current pathname from the wrapper\n\t\t\t\tconst multipleData = value as Record<string, unknown>;\n\t\t\t\tif (k in multipleData && k !== '__reroute_multiple__') {\n\t\t\t\t\tvalue = multipleData[k] as T | Promise<T> | undefined;\n\t\t\t\t} else {\n\t\t\t\t\t// Check if there's route-specific data (non-layout keys)\n\t\t\t\t\tfor (const [key, val] of Object.entries(multipleData)) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tkey !== '__reroute_multiple__' &&\n\t\t\t\t\t\t\t!key.startsWith('__layout:')\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tvalue = val as T | Promise<T> | undefined;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If still wrapped or undefined after extraction, return undefined\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(typeof value === 'object' &&\n\t\t\t\t\t\tvalue !== null &&\n\t\t\t\t\t\t(value as Any).__reroute_multiple__ === true)\n\t\t\t\t) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Check if this is a lazy marker\n\t\t\tif (isLazyLoadMarker(value)) {\n\t\t\t\t// During initial hydration, return undefined to avoid skeleton flash\n\t\t\t\t// The data will load and trigger a re-render\n\t\t\t\tif (isInitialHydration()) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tconst fetchUrl = value.__fetch__;\n\t\t\t\tif (typeof window !== 'undefined') {\n\t\t\t\t\tconst w = window as Any;\n\t\t\t\t\t// Deduplicate fetches\n\t\t\t\t\tw.__REROUTE_LAZY_PENDING__ = w.__REROUTE_LAZY_PENDING__ || {};\n\t\t\t\t\tconst pending = w.__REROUTE_LAZY_PENDING__;\n\n\t\t\t\t\t// Use fetchUrl as dedup key to coordinate with RouterProvider\n\t\t\t\t\tif (!pending[fetchUrl]) {\n\t\t\t\t\t\t// Start fetch and throw the promise\n\t\t\t\t\t\tconst fetchPromise = fetch(fetchUrl, {\n\t\t\t\t\t\t\theaders: { Accept: 'application/json' },\n\t\t\t\t\t\t\tcredentials: 'same-origin',\n\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.then(readRouteAnswer)\n\t\t\t\t\t\t\t.then((j) => {\n\t\t\t\t\t\t\t\tif (j) {\n\t\t\t\t\t\t\t\t\tconst payload = j.data ?? j;\n\t\t\t\t\t\t\t\t\tconst globalData = w.__REROUTE_DATA__ as Any as Record<\n\t\t\t\t\t\t\t\t\t\tstring,\n\t\t\t\t\t\t\t\t\t\tunknown\n\t\t\t\t\t\t\t\t\t>;\n\n\t\t\t\t\t\t\t\t\t// Update nested structure if needed\n\t\t\t\t\t\t\t\t\tupdateNestedDataIfNeeded(globalData, k, payload);\n\n\t\t\t\t\t\t\t\t\t// Store the resolved data at the key\n\t\t\t\t\t\t\t\t\tglobalData[k] = payload;\n\n\t\t\t\t\t\t\t\t\t// Notify listeners\n\t\t\t\t\t\t\t\t\tdispatchDataUpdateEvent(k);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn j?.data;\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\t\t\tdelete pending[fetchUrl];\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\tpending[fetchUrl] = fetchPromise;\n\t\t\t\t\t\tthrow fetchPromise; // Trigger Suspense\n\t\t\t\t\t}\n\t\t\t\t\t// Re-throw the pending promise\n\t\t\t\t\tthrow pending[fetchUrl];\n\t\t\t\t}\n\t\t\t\t// Fallback: treat as undefined\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// During initial hydration, don't throw promises to avoid skeleton flash\n\t\t\tif (isThenable(value)) {\n\t\t\t\tif (isInitialHydration()) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tthrow value;\n\t\t\t}\n\n\t\t\t// DEBUG: Final return value\n\t\t\t// if (typeof window !== 'undefined' && k === '/forum') {\n\t\t\t// \tconsole.log('[useData FINAL RETURN] returning:', value);\n\t\t\t// }\n\n\t\t\treturn value as T | undefined;\n\t\t} catch (error) {\n\t\t\t// Re-throw promises for React Suspense\n\t\t\tif (isThenable(error)) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\t}, [k, _tick, pathname]);\n}\n\n/**\n * True when writing `next` would swap data the store already holds for a\n * lazy marker. A marker only says the server has data for the key: a hover\n * prefetching another page under the same layout must not unload the\n * layout's data on screen (its hook would fetch it again).\n */\nconst wouldUnload = (current: unknown, next: unknown): boolean =>\n\tisLazyLoadMarker(next) && current !== undefined && !isLazyLoadMarker(current);\n\nexport { isLazyLoadMarker, wouldUnload };\n",
15
15
  "import type { Any } from '../types/any';\n\n/** Directory that holds prerendered route data in a `reroute build --static` output. */\nexport const STATIC_DATA_DIR = '/__reroute_data';\n\n/**\n * Path of the prerendered JSON for a route (or one lazy `ssr.data` key) in a\n * static build: `/` → `/__reroute_data/index.json`,\n * `/blog/a` + `posts` → `/__reroute_data/blog/a/__key/posts.json`.\n */\nexport function staticDataPath(pathname: string, key?: string): string {\n\tconst route = pathname.split(/[?#]/)[0].replace(/\\/+$/, '');\n\tconst base = `${STATIC_DATA_DIR}${route}`;\n\treturn key\n\t\t? `${base}/__key/${encodeURIComponent(key)}.json`\n\t\t: `${base}/index.json`;\n}\n\n/** True when the page was served from a `reroute build --static` output. */\nexport function isStaticBuild(): boolean {\n\treturn (\n\t\ttypeof window !== 'undefined' && (window as Any).__REROUTE_STATIC__ === true\n\t);\n}\n\n/**\n * URL the client fetches route data from: the `/__reroute_data` endpoint on a\n * server, or the prerendered JSON file in a static build.\n */\nexport function routeDataUrl(pathname: string): string {\n\treturn isStaticBuild()\n\t\t? staticDataPath(pathname)\n\t\t: `/__reroute_data?path=${encodeURIComponent(pathname)}`;\n}\n\n/**\n * URL of a page's head alone (a route without `ssr`): the data endpoint's\n * head answer on a server, the prerendered JSON (data and head) in a static\n * build.\n */\nexport function navigationHeadUrl(pathname: string): string {\n\treturn isStaticBuild()\n\t\t? staticDataPath(pathname)\n\t\t: `/__reroute_data?path=${encodeURIComponent(pathname)}&head`;\n}\n",
16
16
  "import type { Any } from '../types/any';\nimport { navigationHeadUrl, routeDataUrl } from './static-data';\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\n/**\n * Get the title suffix from the global config (injected by SSR)\n */\nfunction getTitleSuffix(): string {\n\tif (!isBrowser()) return '';\n\ttry {\n\t\tconst suffix = (window as Any).__REROUTE_TITLE_SUFFIX__;\n\t\treturn typeof suffix === 'string' ? suffix : '';\n\t} catch {\n\t\treturn '';\n\t}\n}\n\n/**\n * Apply title suffix if configured and not already present\n */\nfunction applyTitleSuffix(title: string): string {\n\tconst suffix = getTitleSuffix();\n\tif (!suffix || title.endsWith(suffix)) return title;\n\treturn `${title}${suffix}`;\n}\n\nexport function applyPageMeta(meta: Any | undefined): void {\n\tif (!(isBrowser() && meta) || typeof meta !== 'object') return;\n\ttry {\n\t\tconst rawTitle = 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 (rawTitle) document.title = applyTitleSuffix(rawTitle);\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\n/**\n * Check if an equivalent meta tag already exists in the head\n */\nfunction metaTagExists(el: Element): boolean {\n\tif (el.tagName !== 'META') return false;\n\n\tconst name = el.getAttribute('name');\n\tconst property = el.getAttribute('property');\n\tconst content = el.getAttribute('content');\n\n\t// Build selector for existing tag\n\tlet selector = 'meta';\n\tif (name) selector += `[name=\"${name}\"]`;\n\tif (property) selector += `[property=\"${property}\"]`;\n\n\tconst existing = document.head.querySelector(selector);\n\tif (!existing) return false;\n\n\t// Check if content matches\n\treturn existing.getAttribute('content') === content;\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\tconst el = node as Element;\n\t\t\t\t// Skip if an equivalent meta tag already exists (from SSR)\n\t\t\t\tif (metaTagExists(el)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tel.setAttribute(HEAD_ATTR, '');\n\t\t\t\tdocument.head.appendChild(node);\n\t\t\t}\n\t\t}\n\t} catch {}\n}\n\n/**\n * Convert head content to HTML string\n */\nfunction headToHtml(head: Any): string {\n\tconst parts: string[] = Array.isArray(head)\n\t\t? (head as Any[]).map((x) => String(x))\n\t\t: [String(head)];\n\treturn parts.map((p) => (typeof p === 'string' ? p : String(p))).join('\\n');\n}\n\n/**\n * Process a title element by updating document.title\n * @returns true if element was handled, false otherwise\n */\nfunction processTitleElement(el: Element): boolean {\n\tif (el.tagName !== 'TITLE') return false;\n\n\tconst titleText = el.textContent;\n\tif (titleText) {\n\t\t// Apply suffix if needed (usually already present from SSR)\n\t\tdocument.title = applyTitleSuffix(titleText);\n\t}\n\treturn true;\n}\n\n/**\n * Process and append a head element if it doesn't already exist\n */\nfunction processHeadElement(node: Node): void {\n\tif (node.nodeType !== Node.ELEMENT_NODE) return;\n\n\tconst el = node as Element;\n\t// console.log(\n\t// \t'[applyRouteHead] Processing element:',\n\t// \tel.tagName,\n\t// \t'content:',\n\t// \tel.textContent?.substring(0, 50),\n\t// );\n\n\t// Handle title tag specially\n\tif (processTitleElement(el)) return;\n\n\t// Skip if an equivalent meta tag already exists (from SSR)\n\tif (metaTagExists(el)) return;\n\n\tel.setAttribute(HEAD_ATTR_ROUTE, '');\n\tdocument.head.appendChild(node);\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 html = headToHtml(head);\n\t\tif (!html.trim()) return;\n\n\t\t// console.log('[applyRouteHead] Processing HTML:', html.substring(0, 200));\n\n\t\tconst tpl = document.createElement('template');\n\t\ttpl.innerHTML = html;\n\t\tconst nodes = Array.from(tpl.content.childNodes);\n\t\t// console.log('[applyRouteHead] Parsed nodes:', nodes.length, 'nodes');\n\n\t\tfor (const node of nodes) {\n\t\t\tprocessHeadElement(node);\n\t\t}\n\t} catch (e) {\n\t\tconsole.error('[applyRouteHead] Error:', e);\n\t}\n}\n\n/**\n * A page's head and lang as `/__reroute_data` answers them: built on the\n * server the way a full page load builds them (the browser bundle never holds\n * a route's `ssr`). A route whose data still streams gets it with its key\n * answer.\n */\ntype NavigationHead = { path: string; html: string; lang: string };\n\n/** The comments SSR puts around a page's own head (reroute-js/core `markPageHead`). */\nconst PAGE_HEAD_START = 'reroute:head';\nconst PAGE_HEAD_END = '/reroute:head';\n\nconst navigationHeads = new Map<string, NavigationHead>();\n\nfunction currentPath(): string {\n\treturn window.location.pathname + window.location.search;\n}\n\n/** The head kept for `path`: its exact search first, then the pathname alone. */\nexport function navigationHeadFor(path: string): NavigationHead | undefined {\n\treturn navigationHeads.get(path) ?? navigationHeads.get(path.split('?')[0]);\n}\n\nfunction pageHeadRegion(): { start: Comment; end: Comment } | undefined {\n\tconst comments = Array.from(document.head.childNodes).filter(\n\t\t(node): node is Comment => node.nodeType === Node.COMMENT_NODE,\n\t);\n\tconst start = comments.find((node) => node.data === PAGE_HEAD_START);\n\tconst end = comments.find((node) => node.data === PAGE_HEAD_END);\n\treturn start && end ? { start, end } : undefined;\n}\n\nfunction regionNodes(region: { start: Comment; end: Comment }): ChildNode[] {\n\tconst nodes: ChildNode[] = [];\n\tfor (\n\t\tlet node = region.start.nextSibling;\n\t\tnode && node !== region.end;\n\t\tnode = node.nextSibling\n\t)\n\t\tnodes.push(node);\n\treturn nodes;\n}\n\n/**\n * The server-rendered page's own head, kept when the client starts (before\n * anything changes the document) for when the browser comes back to it.\n */\nfunction keepServerRenderedHead(): void {\n\tconst region = pageHeadRegion();\n\tif (!region) return;\n\tconst path = currentPath();\n\tnavigationHeads.set(path, {\n\t\tpath,\n\t\thtml: regionNodes(region)\n\t\t\t.map((node) =>\n\t\t\t\tnode.nodeType === Node.ELEMENT_NODE ? (node as Element).outerHTML : '',\n\t\t\t)\n\t\t\t.filter(Boolean)\n\t\t\t.join('\\n'),\n\t\tlang: document.documentElement.lang,\n\t});\n}\n\nif (isBrowser()) keepServerRenderedHead();\n\n/**\n * Applies a page's head: what is between SSR's markers becomes the page's\n * own head (title, description, canonical, OG, structured data), so nothing\n * of the page before stays.\n */\nexport function applyNavigationHead(head: NavigationHead): void {\n\tif (!isBrowser()) return;\n\ttry {\n\t\tconst region = pageHeadRegion();\n\t\tif (!region) {\n\t\t\tapplyRouteHead(head.html);\n\t\t\tapplyLang(head.lang);\n\t\t\treturn;\n\t\t}\n\t\tfor (const node of regionNodes(region)) node.remove();\n\t\t// Heads earlier client code added (content pages) belong to the page before\n\t\tfor (const node of document.querySelectorAll(\n\t\t\t`[${HEAD_ATTR}], [${HEAD_ATTR_ROUTE}]`,\n\t\t))\n\t\t\tnode.remove();\n\n\t\tconst template = document.createElement('template');\n\t\ttemplate.innerHTML = head.html;\n\t\tfor (const node of Array.from(template.content.childNodes)) {\n\t\t\tif (node.nodeType !== Node.ELEMENT_NODE) continue;\n\t\t\tif ((node as Element).tagName === 'TITLE')\n\t\t\t\tdocument.title = (node as Element).textContent ?? '';\n\t\t\tregion.end.before(node);\n\t\t}\n\t\tapplyLang(head.lang);\n\t} catch (e) {\n\t\tconsole.error('[applyNavigationHead] Error:', e);\n\t}\n}\n\nfunction keepNavigationHead(head: unknown): void {\n\tif (\n\t\t!head ||\n\t\ttypeof head !== 'object' ||\n\t\ttypeof (head as NavigationHead).path !== 'string' ||\n\t\ttypeof (head as NavigationHead).html !== 'string'\n\t)\n\t\treturn;\n\tconst kept = head as NavigationHead;\n\tnavigationHeads.set(kept.path, kept);\n\tif (\n\t\tisBrowser() &&\n\t\t(kept.path === currentPath() || kept.path === window.location.pathname)\n\t)\n\t\tapplyNavigationHead(kept);\n}\n\n/**\n * Reads a `/__reroute_data` answer (null when it failed). The head it carries\n * is kept for its path, and applied when that page is on screen.\n */\nexport async function readRouteAnswer(response: Response): Promise<Any | null> {\n\tif (!response.ok) return null;\n\tconst json = await response.json();\n\tkeepNavigationHead(json?.head);\n\treturn json;\n}\n\nconst headRequests = new Set<string>();\n\n/**\n * Asks the server for a page's head: alone for a route without `ssr`, with\n * its data otherwise (the head may be made from it).\n */\nexport function fetchNavigationHead(path: string, alone: boolean): void {\n\tif (headRequests.has(path)) return;\n\theadRequests.add(path);\n\tfetch(alone ? navigationHeadUrl(path) : routeDataUrl(path), {\n\t\theaders: { Accept: 'application/json' },\n\t\tcredentials: 'same-origin',\n\t})\n\t\t.then(readRouteAnswer)\n\t\t.catch(() => null)\n\t\t.finally(() => headRequests.delete(path));\n}\n\n/**\n * For a route with `ssr`: its data answer brings the head. When none came\n * shortly after the navigation (nothing asked for the data), ask for it.\n */\nexport function fetchNavigationHeadSoon(path: string, waitMs = 300): void {\n\tsetTimeout(() => {\n\t\tif (!navigationHeadFor(path) && currentPath() === path)\n\t\t\tfetchNavigationHead(path, false);\n\t}, waitMs);\n}\n\n/**\n * The page the server rendered has its head in the document until the first\n * navigation away; true while `path` (its pathname) is still that page.\n */\nlet serverRenderedPathname: string | undefined = isBrowser()\n\t? window.location.pathname\n\t: undefined;\n\nexport function onServerRenderedPage(path: string): boolean {\n\tif (serverRenderedPathname !== path.split('?')[0])\n\t\tserverRenderedPathname = undefined;\n\treturn serverRenderedPathname !== undefined;\n}\n",
17
17
  "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",
18
18
  "import { type ReactNode, useCallback, useMemo } from 'react';\nimport { parseContentPath } from '../i18n/helpers';\nimport { type I18nHydration, LocaleProvider } from '../i18n/LocaleProvider';\nimport {\n\tmissingBundleMessage,\n\treadInjectedBundle,\n\tresolveBundleField,\n} from '../lib/bundle';\nimport type { Any } from '../types/any';\nimport { ContentProvider } from './ContentProvider';\nimport { RouterProvider } from './RouterProvider';\n\ntype RerouteProps = {\n\tbyCollection?: Record<string, Any[]> | null;\n\tgetContentEntry?: (\n\t\tcollection: string,\n\t\tname: string,\n\t\tlocale?: string,\n\t) => Any | undefined;\n\tloadContent?: () => Promise<{\n\t\tbyCollection: Record<string, Any[]>;\n\t\tgetContentEntry: (\n\t\t\tcollection: string,\n\t\t\tname: string,\n\t\t\tlocale?: string,\n\t\t) => 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\tsearchParams?: URLSearchParams;\n\tviewTransitions?: boolean;\n\tscrollRestoration?: boolean;\n\tmarkdownComponents?: Any;\n\ti18n?: Partial<I18nHydration>;\n\tchildren?: ReactNode;\n};\n\nfunction readI18nHydration(): Partial<I18nHydration> | undefined {\n\ttry {\n\t\tconst raw = (globalThis as Record<string, unknown>).__REROUTE_I18N__ as\n\t\t\t| Partial<I18nHydration>\n\t\t\t| undefined;\n\t\tif (raw?.enabled) return raw;\n\t} catch {\n\t\t// ignore\n\t}\n\treturn undefined;\n}\n\nfunction RerouteProvider({\n\tbyCollection,\n\tgetContentEntry,\n\tloadContent,\n\tcontentBaseUrl,\n\tlayouts,\n\tmatchRoute,\n\tnotFoundRoutes,\n\tnotFound,\n\tpathname,\n\tsearchParams,\n\tviewTransitions,\n\tscrollRestoration,\n\tmarkdownComponents,\n\ti18n: i18nProp,\n\tchildren,\n}: RerouteProps) {\n\tconst injected = readInjectedBundle();\n\tconst resolvedMatchRoute = resolveBundleField(\n\t\tinjected,\n\t\t'matchRoute',\n\t\tmatchRoute,\n\t);\n\tconst resolvedLayouts =\n\t\tresolveBundleField(injected, 'layouts', layouts) ?? [];\n\tconst resolvedNotFoundRoutes = resolveBundleField(\n\t\tinjected,\n\t\t'notFoundRoutes',\n\t\tnotFoundRoutes,\n\t);\n\tconst resolvedContentBaseUrl = resolveBundleField(\n\t\tinjected,\n\t\t'contentBaseUrl',\n\t\tcontentBaseUrl,\n\t);\n\tconst resolvedMarkdownComponents = resolveBundleField(\n\t\tinjected,\n\t\t'markdownComponents',\n\t\tmarkdownComponents,\n\t);\n\n\tif (!resolvedMatchRoute) {\n\t\tthrow new Error(missingBundleMessage());\n\t}\n\n\tconst loader =\n\t\tloadContent ||\n\t\t(resolvedContentBaseUrl\n\t\t\t? (((c?: string) =>\n\t\t\t\t\timport(/* @vite-ignore */ `${resolvedContentBaseUrl}/${c}.js`)) as Any)\n\t\t\t: undefined);\n\n\t// Prefer explicit prop; fall back to SSR-injected __REROUTE_I18N__\n\tconst i18n = i18nProp?.enabled ? i18nProp : readI18nHydration();\n\n\tconst locales = i18n?.locales || [];\n\tconst collections = useMemo(() => {\n\t\tif (i18n?.collections?.length) return i18n.collections;\n\t\tif (byCollection) return Object.keys(byCollection);\n\t\treturn undefined;\n\t}, [i18n?.collections, byCollection]);\n\n\tconst matchRouteWithLocale = useCallback(\n\t\t(path: string) => {\n\t\t\tif (!(i18n?.enabled && locales.length)) {\n\t\t\t\treturn resolvedMatchRoute(path);\n\t\t\t}\n\t\t\tconst parsed = parseContentPath(path, locales, collections);\n\t\t\tconst routingPath = parsed?.routingPathname || path;\n\t\t\treturn resolvedMatchRoute(routingPath);\n\t\t},\n\t\t[i18n?.enabled, locales, collections, resolvedMatchRoute],\n\t);\n\n\treturn (\n\t\t<LocaleProvider value={i18n}>\n\t\t\t<ContentProvider\n\t\t\t\tgetEntry={getContentEntry}\n\t\t\t\tbyCollection={byCollection || null}\n\t\t\t\tloadCollection={loader as Any}\n\t\t\t\tmarkdownComponents={resolvedMarkdownComponents}\n\t\t\t>\n\t\t\t\t<RouterProvider\n\t\t\t\t\tlayouts={resolvedLayouts as Any[]}\n\t\t\t\t\tmatchRoute={matchRouteWithLocale as Any}\n\t\t\t\t\tnotFoundRoutes={resolvedNotFoundRoutes as Any}\n\t\t\t\t\tnotFound={notFound}\n\t\t\t\t\tpathname={pathname}\n\t\t\t\t\tsearchParams={searchParams}\n\t\t\t\t\tviewTransitions={viewTransitions}\n\t\t\t\t\tscrollRestoration={scrollRestoration}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</RouterProvider>\n\t\t\t</ContentProvider>\n\t\t</LocaleProvider>\n\t);\n}\n\nexport { RerouteProvider };\nexport type { RerouteProps };\n",
19
19
  "import type { Any } from '../types/any';\n\nexport type InjectedBundle = {\n\tmatchRoute?: (pathname: string) => Any;\n\tlayouts?: readonly Any[];\n\tnotFoundRoutes?: readonly Any[];\n\tcontentBaseUrl?: string;\n\tmarkdownComponents?: Any;\n};\n\nfunction readGlobalBundle(key: string): InjectedBundle | undefined {\n\ttry {\n\t\treturn (globalThis as Record<string, unknown>)[key] as\n\t\t\t| InjectedBundle\n\t\t\t| undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\n/** SSR bundle set by `.reroute/artifacts.server`. */\nexport function readServerBundle(): InjectedBundle | undefined {\n\tif (typeof window !== 'undefined') return undefined;\n\treturn readGlobalBundle('__REROUTE_SERVER_BUNDLE__');\n}\n\n/** Client bundle set by `.reroute/artifacts.client`. */\nexport function readClientBundle(): InjectedBundle | undefined {\n\tif (typeof window === 'undefined') return undefined;\n\treturn readGlobalBundle('__REROUTE_CLIENT_BUNDLE__');\n}\n\n/** Active bundle for the current runtime (server or browser). */\nexport function readInjectedBundle(): InjectedBundle | undefined {\n\treturn typeof window === 'undefined'\n\t\t? readServerBundle()\n\t\t: readClientBundle();\n}\n\nexport function missingBundleMessage(): string {\n\tconst side =\n\t\ttypeof window === 'undefined'\n\t\t\t? 'Run reroute gen so the server bundle loads.'\n\t\t\t: 'Run reroute gen so the client bundle is included.';\n\treturn `RerouteProvider: no route bundle found. ${side} Or pass matchRoute and layouts explicitly.`;\n}\n\n/** Server prefers injected bundle; client prefers explicit props. */\nexport function resolveBundleField<T>(\n\tinjected: InjectedBundle | undefined,\n\tkey: keyof InjectedBundle,\n\tprop: T | undefined,\n): T | undefined {\n\tconst fromInjected = injected?.[key] as T | undefined;\n\tif (typeof window === 'undefined') {\n\t\treturn fromInjected ?? prop;\n\t}\n\treturn prop ?? fromInjected;\n}\n",
20
- "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 {\n\tapplyNavigationHead,\n\tapplyPageMeta,\n\tapplyRouteHead,\n\tfetchNavigationHead,\n\tfetchNavigationHeadSoon,\n\tnavigationHeadFor,\n\tonServerRenderedPage,\n\treadRouteAnswer,\n} from '../lib/head';\nimport { layoutWraps } from '../lib/layouts';\nimport { routeDataUrl } from '../lib/static-data';\nimport type { Any } from '../types/any';\nimport type {\n\tNavigateOptions,\n\tRouteMatch,\n\tRouterContextFactory,\n} from '../types/router';\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);\n/**\n * The pattern of the layout being rendered (`/a`, `/`), so useLayoutData reads\n * that layout's own data. Pages see their innermost layout's.\n */\nconst LayoutPatternContext = createContext<string | null>(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\tsearchParams?: URLSearchParams;\n\tviewTransitions?: boolean;\n\tscrollRestoration?: boolean;\n}\n\n/**\n * True while the store holds a lazy marker for `path`: the route's data\n * streams, and its key answer brings the head.\n */\nfunction routeDataStreams(path: string): boolean {\n\tconst store = (globalThis as Any).__REROUTE_DATA__ || {};\n\tconst own = store[path] ?? store[path.split('?')[0]];\n\treturn (\n\t\town !== null && typeof own === 'object' && (own as Any).__lazy__ === true\n\t);\n}\n\n/**\n * Apply the page's head and lang. The server builds them as for a full page\n * load and sends them with the route's data (the browser bundle never holds\n * `ssr`), or alone for a route without `ssr`. The page it rendered already\n * has its head, kept when the browser first leaves it.\n */\nfunction applyRouteHeadAndLang(\n\tpath: string,\n\tmatchRoute: (pathname: string) => RouteMatch | null,\n): void {\n\ttry {\n\t\tconst landing = onServerRenderedPage(path);\n\t\tconst route: Any = matchRoute(path.split('?')[0])?.route as Any;\n\t\tif (!route) return;\n\n\t\tconst kept = navigationHeadFor(path);\n\t\tif (kept) applyNavigationHead(kept);\n\t\telse if (landing) return;\n\t\telse if (!route.hasSsr) fetchNavigationHead(path, true);\n\t\t// A route with `ssr` gets its head with its data, if anything asks for it\n\t\t// (content pages load their own way)\n\t\telse if (!routeDataStreams(path)) fetchNavigationHeadSoon(path);\n\t} catch {\n\t\t// Silently ignore errors\n\t}\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\n/**\n * A newer navigation skips the running transition, rejecting its promises\n * with an AbortError: expected, so don't let it surface as an uncaught error.\n */\nfunction settleTransition(transition: {\n\tready: Promise<unknown>;\n\tfinished: Promise<unknown>;\n\tupdateCallbackDone: Promise<unknown>;\n}) {\n\ttransition.ready.catch(() => {});\n\ttransition.finished.catch(() => {});\n\ttransition.updateCallbackDone.catch(() => {});\n}\n\n/**\n * Whether an element's `view-transition-name` asks for a transition. Browsers\n * give `<html>` `root` in their own stylesheet, so that one doesn't count:\n * otherwise every navigation became a view transition, which commits the new\n * location a frame late, after state set in the same handler has rendered\n * against the old URL.\n */\nexport function namesViewTransition(\n\tname: string | undefined,\n\tisRoot: boolean,\n): boolean {\n\tif (!name || name === 'none') return false;\n\treturn !(isRoot && name === 'root');\n}\n\n// Helper to check if page has named view transition elements\nfunction hasViewTransitionNames(): boolean {\n\tif (!isBrowser) return false;\n\ttry {\n\t\t// Check if any element has view-transition-name set (including via CSS)\n\t\tconst allElements = document.querySelectorAll('*');\n\t\tfor (const el of allElements) {\n\t\t\tconst computedStyle = window.getComputedStyle(el);\n\t\t\tif (\n\t\t\t\tnamesViewTransition(\n\t\t\t\t\tcomputedStyle.viewTransitionName,\n\t\t\t\t\tel === document.documentElement,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/**\n * The SSR script sets `__REROUTE_INITIAL_HYDRATION__` so hooks don't suspend\n * while hydrating. Only useData/LazyRoute cleared it, so an app whose first\n * page used neither kept it forever, and later navigations then read lazy\n * data as `undefined` (rendering nothing). A navigation is never hydration.\n */\nexport function endInitialHydration(): void {\n\ttry {\n\t\tdelete (globalThis as { __REROUTE_INITIAL_HYDRATION__?: boolean })\n\t\t\t.__REROUTE_INITIAL_HYDRATION__;\n\t} catch {}\n}\n\n/**\n * Whether a navigation scrolls to the top: always when asked, else only when\n * the page (pathname) changes. Rewriting the query of the page you're on\n * (a tab, a sort, a filter) keeps you where you are.\n */\nexport function shouldScrollOnNavigate(\n\tfromPathname: string,\n\ttoPathname: string,\n\tscroll?: boolean,\n): boolean {\n\treturn scroll ?? fromPathname !== toPathname;\n}\n\nfunction navigateInternal(to: string, options: NavigateOptions = {}) {\n\tif (!isBrowser) return;\n\tendInitialHydration();\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\tconst scrollToTop = shouldScrollOnNavigate(\n\t\twindow.location.pathname,\n\t\turl.pathname,\n\t\toptions.scroll,\n\t);\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\t// Only use view transitions if enabled AND page has named transition elements\n\tconst shouldUseViewTransition =\n\t\tviewTransitionsEnabled && hasViewTransitionNames();\n\n\tif (shouldUseViewTransition) {\n\t\tconst transition = document.startViewTransition(() => {\n\t\t\tflushSync(() => {\n\t\t\t\tupdateState();\n\t\t\t\t// For view transitions, adjust scroll inside the transition callback so\n\t\t\t\t// the old snapshot keeps its current scroll position while the new page\n\t\t\t\t// is captured at the desired position.\n\t\t\t\tif (url.hash) {\n\t\t\t\t\tconst immediate = document.querySelector(url.hash);\n\t\t\t\t\tif (immediate) {\n\t\t\t\t\t\timmediate.scrollIntoView({ behavior: 'smooth', block: 'start' });\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlet attempts = 0;\n\t\t\t\t\t\tconst maxAttempts = 10;\n\t\t\t\t\t\tconst tryScroll = () => {\n\t\t\t\t\t\t\tconst el = document.querySelector(url.hash);\n\t\t\t\t\t\t\tif (el) {\n\t\t\t\t\t\t\t\tel.scrollIntoView({ behavior: 'smooth', block: 'start' });\n\t\t\t\t\t\t\t} else if (attempts < maxAttempts) {\n\t\t\t\t\t\t\t\tattempts++;\n\t\t\t\t\t\t\t\trequestAnimationFrame(tryScroll);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\trequestAnimationFrame(tryScroll);\n\t\t\t\t\t}\n\t\t\t\t} else if (scrollToTop) {\n\t\t\t\t\twindow.scrollTo({ top: 0, left: 0, behavior: 'instant' });\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tsettleTransition(transition);\n\t} else {\n\t\tupdateState();\n\t\t// Handle scrolling after the DOM updates (non-view-transition only)\n\t\trequestAnimationFrame(() => {\n\t\t\tif (url.hash) {\n\t\t\t\t// Try to scroll to the fragment with retries for slow-rendering components\n\t\t\t\tlet attempts = 0;\n\t\t\t\tconst maxAttempts = 10;\n\t\t\t\tconst tryScroll = () => {\n\t\t\t\t\tconst element = document.querySelector(url.hash);\n\t\t\t\t\tif (element) {\n\t\t\t\t\t\telement.scrollIntoView({ behavior: 'smooth', block: 'start' });\n\t\t\t\t\t} else if (attempts < maxAttempts) {\n\t\t\t\t\t\tattempts++;\n\t\t\t\t\t\trequestAnimationFrame(tryScroll);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\ttryScroll();\n\t\t\t} else if (scrollToTop) {\n\t\t\t\t// Scroll to top for a new page - happens after it renders\n\t\t\t\twindow.scrollTo({ top: 0, left: 0, behavior: 'instant' });\n\t\t\t}\n\t\t});\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 */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Router state management with history API\nfunction RouterProvider({\n\tchildren,\n\tlayouts = [],\n\tmatchRoute,\n\tnotFoundRoutes = [],\n\tnotFound: NotFound,\n\tpathname = '/',\n\tsearchParams: ssrSearchParams,\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\t// Disable browser's automatic scroll restoration\n\t\tif (isBrowser && 'scrollRestoration' in window.history) {\n\t\t\twindow.history.scrollRestoration = 'manual';\n\t\t}\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 and searchParams from props\n\t\t\t// Extract hash from pathname if present (e.g., \"/path#hash\")\n\t\t\tconst hIdx = pathname.indexOf('#');\n\t\t\tlet pathOnly = pathname;\n\t\t\tlet hash = '';\n\n\t\t\tif (hIdx !== -1) {\n\t\t\t\tpathOnly = pathname.slice(0, hIdx);\n\t\t\t\thash = pathname.slice(hIdx);\n\t\t\t}\n\n\t\t\t// Use provided searchParams if available, otherwise try to parse from pathname\n\t\t\tlet search = '';\n\t\t\tif (ssrSearchParams) {\n\t\t\t\tconst searchString = ssrSearchParams.toString();\n\t\t\t\tsearch = searchString ? `?${searchString}` : '';\n\t\t\t} else {\n\t\t\t\t// Fallback: extract search from pathname if present\n\t\t\t\tconst qIdx = pathOnly.indexOf('?');\n\t\t\t\tif (qIdx !== -1) {\n\t\t\t\t\tsearch = pathOnly.slice(qIdx);\n\t\t\t\t\tpathOnly = pathOnly.slice(0, qIdx);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tserverSnapshotRef.current = { pathname: pathOnly, 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\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Navigation handling with prefetch\n\t\tconst handlePopState = () => {\n\t\t\tendInitialHydration();\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(routeDataUrl(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(readRouteAnswer)\n\t\t\t\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Data fetching with caching\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// Check if this is a multi-source response (layout + route)\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\ttypeof payload === 'object' &&\n\t\t\t\t\t\t\t\t\t\tpayload !== null &&\n\t\t\t\t\t\t\t\t\t\tpayload.__reroute_multiple__ === true\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t// Multiple data sources: populate each at its specific key\n\t\t\t\t\t\t\t\t\t\tconst keys: string[] = [];\n\t\t\t\t\t\t\t\t\t\tfor (const [key, value] of Object.entries(payload)) {\n\t\t\t\t\t\t\t\t\t\t\tif (key !== '__reroute_multiple__') {\n\t\t\t\t\t\t\t\t\t\t\t\t// Check if this value needs flattening\n\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\ttypeof value === 'object' &&\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue !== null &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t(value as Any).__flatten__\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\t\t// Flatten this nested object\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor (const [subKey, subValue] of Object.entries(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue as Record<string, unknown>,\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\t\tif (subKey !== '__flatten__') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Store all values including lazy markers\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[subKey] = subValue;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkeys.push(subKey);\n\t\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\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t\t\t\t\t\t\t\t\tkeys.push(key);\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}\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: { keys },\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} else if (\n\t\t\t\t\t\t\t\t\t\ttypeof payload === 'object' &&\n\t\t\t\t\t\t\t\t\t\tpayload !== null &&\n\t\t\t\t\t\t\t\t\t\t(payload.__reroute_flattened__ === true ||\n\t\t\t\t\t\t\t\t\t\t\tpayload.__flatten__ === true)\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t// Flatten: populate each key individually\n\t\t\t\t\t\t\t\t\t\tconst keys: string[] = [];\n\t\t\t\t\t\t\t\t\t\tfor (const [key, value] of Object.entries(payload)) {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tkey !== '__reroute_flattened__' &&\n\t\t\t\t\t\t\t\t\t\t\t\tkey !== '__flatten__'\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t// Store all values including lazy markers\n\t\t\t\t\t\t\t\t\t\t\t\t// useData will detect and fetch lazy markers on demand\n\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t\t\t\t\t\t\t\tkeys.push(key);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// Also store at pathname, unless the page's own data sits there\n\t\t\t\t\t\t\t\t\t\t// (`/` answers `{ '/': … }`; see storeAndDispatchData)\n\t\t\t\t\t\t\t\t\t\tconst ownKey = keys.includes(next.pathname);\n\t\t\t\t\t\t\t\t\t\tif (!ownKey)\n\t\t\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\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: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkeys: ownKey ? keys : [...keys, next.pathname],\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);\n\t\t\t\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// Single key response\n\t\t\t\t\t\t\t\t\t\t// Check if this single response needs flattening\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\ttypeof payload === 'object' &&\n\t\t\t\t\t\t\t\t\t\t\tpayload !== null &&\n\t\t\t\t\t\t\t\t\t\t\t(payload as Any).__flatten__ === true\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t// Flatten this data into individual keys\n\t\t\t\t\t\t\t\t\t\t\tconst keys: string[] = [];\n\t\t\t\t\t\t\t\t\t\t\tfor (const [key, value] of Object.entries(payload)) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (key !== '__flatten__') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t\t\t\t\t\t\t\t\tkeys.push(key);\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\t// Also store at pathname, unless the page's own data sits there\n\t\t\t\t\t\t\t\t\t\t\tconst ownKey = keys.includes(next.pathname);\n\t\t\t\t\t\t\t\t\t\t\tif (!ownKey)\n\t\t\t\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\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: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkeys: ownKey ? keys : [...keys, next.pathname],\n\t\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\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} else {\n\t\t\t\t\t\t\t\t\t\t\t// Regular single key response\n\t\t\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\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: next.pathname },\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}\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\t// Only use view transitions if enabled AND page has named transition elements\n\t\t\tconst shouldUseViewTransition =\n\t\t\t\tviewTransitionsEnabled && hasViewTransitionNames();\n\n\t\t\tif (shouldUseViewTransition) {\n\t\t\t\tsettleTransition(\n\t\t\t\t\t(document as Any).startViewTransition(() => {\n\t\t\t\t\t\tflushSync(() => {\n\t\t\t\t\t\t\tupdateState();\n\t\t\t\t\t\t});\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// Wait for DOM to settle and view transition to complete\n\t\t\t\tconst restoreScroll = () => {\n\t\t\t\t\tif (next.hash) {\n\t\t\t\t\t\t// Handle hash navigation\n\t\t\t\t\t\tconst element = document.querySelector(next.hash);\n\t\t\t\t\t\tif (element) {\n\t\t\t\t\t\t\telement.scrollIntoView({ behavior: 'smooth' });\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (savedPosition) {\n\t\t\t\t\t\t// Restore saved scroll position\n\t\t\t\t\t\twindow.scrollTo({\n\t\t\t\t\t\t\ttop: savedPosition.y,\n\t\t\t\t\t\t\tleft: savedPosition.x,\n\t\t\t\t\t\t\tbehavior: 'instant',\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\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};\n\n\t\t\t\tif (shouldUseViewTransition) {\n\t\t\t\t\t// Double rAF to ensure view transition has started rendering\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\trequestAnimationFrame(restoreScroll);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\trequestAnimationFrame(restoreScroll);\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// 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\n\t\t// The page on screen (the `pathname` prop is the one the server rendered)\n\t\tconst onScreen = () => window.location.pathname + window.location.search;\n\n\t\t// Apply immediately (will skip if no data available)\n\t\tapplyRouteHeadAndLang(onScreen(), matchRoute);\n\n\t\t// Listen for data updates and re-apply head when data becomes available\n\t\tconst handleDataUpdate = (e: Event) => {\n\t\t\tconst detail = (e as CustomEvent).detail as Any;\n\t\t\tconst keys: string[] = Array.isArray(detail?.keys)\n\t\t\t\t? detail.keys\n\t\t\t\t: detail?.key\n\t\t\t\t\t? [detail.key]\n\t\t\t\t\t: [];\n\t\t\tconst currentPathname = onScreen();\n\n\t\t\t// Check if any key matches the current pathname\n\t\t\tconst shouldApply =\n\t\t\t\tkeys.length === 0 ||\n\t\t\t\tkeys.includes(currentPathname) ||\n\t\t\t\tkeys.some((k) => currentPathname.startsWith(k));\n\n\t\t\t// If this event is for our current pathname, re-apply head\n\t\t\tif (shouldApply) {\n\t\t\t\tapplyRouteHeadAndLang(currentPathname, matchRoute);\n\t\t\t}\n\t\t};\n\n\t\tif (typeof window !== 'undefined') {\n\t\t\twindow.addEventListener(\n\t\t\t\t'__reroute_data__' as Any,\n\t\t\t\thandleDataUpdate as Any,\n\t\t\t);\n\t\t}\n\n\t\treturn () => {\n\t\t\t// Clear previously injected route-level head items\n\t\t\tapplyRouteHead(undefined);\n\t\t\tif (typeof window !== 'undefined') {\n\t\t\t\twindow.removeEventListener(\n\t\t\t\t\t'__reroute_data__' as Any,\n\t\t\t\t\thandleDataUpdate as Any,\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\t}, [target, matchRoute]);\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\tlayoutWraps(layout, location.pathname, target?.route.pattern),\n\t\t\t)\n\t\t\t.sort((a: Any, b: Any) => {\n\t\t\t\t// Sort by depth (shallow first) since we wrap from innermost to outermost\n\t\t\t\t// This ensures root layouts are outermost, specific layouts are innermost\n\t\t\t\treturn (\n\t\t\t\t\ta.pattern.split('/').filter(Boolean).length -\n\t\t\t\t\tb.pattern.split('/').filter(Boolean).length\n\t\t\t\t);\n\t\t\t});\n\t}, [layouts, location.pathname, target]);\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 pattern = String(matchingLayouts[i].pattern || '/');\n\t\t\tconst currentOutlet = outletContent;\n\t\t\toutletContent = (\n\t\t\t\t<LayoutPatternContext.Provider value={pattern}>\n\t\t\t\t\t<OutletContext.Provider value={currentOutlet}>\n\t\t\t\t\t\t<Layout />\n\t\t\t\t\t</OutletContext.Provider>\n\t\t\t\t</LayoutPatternContext.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 { LayoutPatternContext, OutletContext, RouterContext, RouterProvider };\n",
20
+ "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 { wouldUnload } from '../hooks/useData';\nimport {\n\tapplyNavigationHead,\n\tapplyPageMeta,\n\tapplyRouteHead,\n\tfetchNavigationHead,\n\tfetchNavigationHeadSoon,\n\tnavigationHeadFor,\n\tonServerRenderedPage,\n\treadRouteAnswer,\n} from '../lib/head';\nimport { layoutWraps } from '../lib/layouts';\nimport { routeDataUrl } from '../lib/static-data';\nimport type { Any } from '../types/any';\nimport type {\n\tNavigateOptions,\n\tRouteMatch,\n\tRouterContextFactory,\n} from '../types/router';\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);\n/**\n * The pattern of the layout being rendered (`/a`, `/`), so useLayoutData reads\n * that layout's own data. Pages see their innermost layout's.\n */\nconst LayoutPatternContext = createContext<string | null>(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\tsearchParams?: URLSearchParams;\n\tviewTransitions?: boolean;\n\tscrollRestoration?: boolean;\n}\n\n/**\n * True while the store holds a lazy marker for `path`: the route's data\n * streams, and its key answer brings the head.\n */\nfunction routeDataStreams(path: string): boolean {\n\tconst store = (globalThis as Any).__REROUTE_DATA__ || {};\n\tconst own = store[path] ?? store[path.split('?')[0]];\n\treturn (\n\t\town !== null && typeof own === 'object' && (own as Any).__lazy__ === true\n\t);\n}\n\n/**\n * Apply the page's head and lang. The server builds them as for a full page\n * load and sends them with the route's data (the browser bundle never holds\n * `ssr`), or alone for a route without `ssr`. The page it rendered already\n * has its head, kept when the browser first leaves it.\n */\nfunction applyRouteHeadAndLang(\n\tpath: string,\n\tmatchRoute: (pathname: string) => RouteMatch | null,\n): void {\n\ttry {\n\t\tconst landing = onServerRenderedPage(path);\n\t\tconst route: Any = matchRoute(path.split('?')[0])?.route as Any;\n\t\tif (!route) return;\n\n\t\tconst kept = navigationHeadFor(path);\n\t\tif (kept) applyNavigationHead(kept);\n\t\telse if (landing) return;\n\t\telse if (!route.hasSsr) fetchNavigationHead(path, true);\n\t\t// A route with `ssr` gets its head with its data, if anything asks for it\n\t\t// (content pages load their own way)\n\t\telse if (!routeDataStreams(path)) fetchNavigationHeadSoon(path);\n\t} catch {\n\t\t// Silently ignore errors\n\t}\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\n/**\n * A newer navigation skips the running transition, rejecting its promises\n * with an AbortError: expected, so don't let it surface as an uncaught error.\n */\nfunction settleTransition(transition: {\n\tready: Promise<unknown>;\n\tfinished: Promise<unknown>;\n\tupdateCallbackDone: Promise<unknown>;\n}) {\n\ttransition.ready.catch(() => {});\n\ttransition.finished.catch(() => {});\n\ttransition.updateCallbackDone.catch(() => {});\n}\n\n/**\n * Whether an element's `view-transition-name` asks for a transition. Browsers\n * give `<html>` `root` in their own stylesheet, so that one doesn't count:\n * otherwise every navigation became a view transition, which commits the new\n * location a frame late, after state set in the same handler has rendered\n * against the old URL.\n */\nexport function namesViewTransition(\n\tname: string | undefined,\n\tisRoot: boolean,\n): boolean {\n\tif (!name || name === 'none') return false;\n\treturn !(isRoot && name === 'root');\n}\n\n// Helper to check if page has named view transition elements\nfunction hasViewTransitionNames(): boolean {\n\tif (!isBrowser) return false;\n\ttry {\n\t\t// Check if any element has view-transition-name set (including via CSS)\n\t\tconst allElements = document.querySelectorAll('*');\n\t\tfor (const el of allElements) {\n\t\t\tconst computedStyle = window.getComputedStyle(el);\n\t\t\tif (\n\t\t\t\tnamesViewTransition(\n\t\t\t\t\tcomputedStyle.viewTransitionName,\n\t\t\t\t\tel === document.documentElement,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/**\n * The SSR script sets `__REROUTE_INITIAL_HYDRATION__` so hooks don't suspend\n * while hydrating. Only useData/LazyRoute cleared it, so an app whose first\n * page used neither kept it forever, and later navigations then read lazy\n * data as `undefined` (rendering nothing). A navigation is never hydration.\n */\nexport function endInitialHydration(): void {\n\ttry {\n\t\tdelete (globalThis as { __REROUTE_INITIAL_HYDRATION__?: boolean })\n\t\t\t.__REROUTE_INITIAL_HYDRATION__;\n\t} catch {}\n}\n\n/**\n * Whether a navigation scrolls to the top: always when asked, else only when\n * the page (pathname) changes. Rewriting the query of the page you're on\n * (a tab, a sort, a filter) keeps you where you are.\n */\nexport function shouldScrollOnNavigate(\n\tfromPathname: string,\n\ttoPathname: string,\n\tscroll?: boolean,\n): boolean {\n\treturn scroll ?? fromPathname !== toPathname;\n}\n\nfunction navigateInternal(to: string, options: NavigateOptions = {}) {\n\tif (!isBrowser) return;\n\tendInitialHydration();\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\tconst scrollToTop = shouldScrollOnNavigate(\n\t\twindow.location.pathname,\n\t\turl.pathname,\n\t\toptions.scroll,\n\t);\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\t// Only use view transitions if enabled AND page has named transition elements\n\tconst shouldUseViewTransition =\n\t\tviewTransitionsEnabled && hasViewTransitionNames();\n\n\tif (shouldUseViewTransition) {\n\t\tconst transition = document.startViewTransition(() => {\n\t\t\tflushSync(() => {\n\t\t\t\tupdateState();\n\t\t\t\t// For view transitions, adjust scroll inside the transition callback so\n\t\t\t\t// the old snapshot keeps its current scroll position while the new page\n\t\t\t\t// is captured at the desired position.\n\t\t\t\tif (url.hash) {\n\t\t\t\t\tconst immediate = document.querySelector(url.hash);\n\t\t\t\t\tif (immediate) {\n\t\t\t\t\t\timmediate.scrollIntoView({ behavior: 'smooth', block: 'start' });\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlet attempts = 0;\n\t\t\t\t\t\tconst maxAttempts = 10;\n\t\t\t\t\t\tconst tryScroll = () => {\n\t\t\t\t\t\t\tconst el = document.querySelector(url.hash);\n\t\t\t\t\t\t\tif (el) {\n\t\t\t\t\t\t\t\tel.scrollIntoView({ behavior: 'smooth', block: 'start' });\n\t\t\t\t\t\t\t} else if (attempts < maxAttempts) {\n\t\t\t\t\t\t\t\tattempts++;\n\t\t\t\t\t\t\t\trequestAnimationFrame(tryScroll);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\trequestAnimationFrame(tryScroll);\n\t\t\t\t\t}\n\t\t\t\t} else if (scrollToTop) {\n\t\t\t\t\twindow.scrollTo({ top: 0, left: 0, behavior: 'instant' });\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tsettleTransition(transition);\n\t} else {\n\t\tupdateState();\n\t\t// Handle scrolling after the DOM updates (non-view-transition only)\n\t\trequestAnimationFrame(() => {\n\t\t\tif (url.hash) {\n\t\t\t\t// Try to scroll to the fragment with retries for slow-rendering components\n\t\t\t\tlet attempts = 0;\n\t\t\t\tconst maxAttempts = 10;\n\t\t\t\tconst tryScroll = () => {\n\t\t\t\t\tconst element = document.querySelector(url.hash);\n\t\t\t\t\tif (element) {\n\t\t\t\t\t\telement.scrollIntoView({ behavior: 'smooth', block: 'start' });\n\t\t\t\t\t} else if (attempts < maxAttempts) {\n\t\t\t\t\t\tattempts++;\n\t\t\t\t\t\trequestAnimationFrame(tryScroll);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\ttryScroll();\n\t\t\t} else if (scrollToTop) {\n\t\t\t\t// Scroll to top for a new page - happens after it renders\n\t\t\t\twindow.scrollTo({ top: 0, left: 0, behavior: 'instant' });\n\t\t\t}\n\t\t});\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 */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Router state management with history API\nfunction RouterProvider({\n\tchildren,\n\tlayouts = [],\n\tmatchRoute,\n\tnotFoundRoutes = [],\n\tnotFound: NotFound,\n\tpathname = '/',\n\tsearchParams: ssrSearchParams,\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\t// Disable browser's automatic scroll restoration\n\t\tif (isBrowser && 'scrollRestoration' in window.history) {\n\t\t\twindow.history.scrollRestoration = 'manual';\n\t\t}\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 and searchParams from props\n\t\t\t// Extract hash from pathname if present (e.g., \"/path#hash\")\n\t\t\tconst hIdx = pathname.indexOf('#');\n\t\t\tlet pathOnly = pathname;\n\t\t\tlet hash = '';\n\n\t\t\tif (hIdx !== -1) {\n\t\t\t\tpathOnly = pathname.slice(0, hIdx);\n\t\t\t\thash = pathname.slice(hIdx);\n\t\t\t}\n\n\t\t\t// Use provided searchParams if available, otherwise try to parse from pathname\n\t\t\tlet search = '';\n\t\t\tif (ssrSearchParams) {\n\t\t\t\tconst searchString = ssrSearchParams.toString();\n\t\t\t\tsearch = searchString ? `?${searchString}` : '';\n\t\t\t} else {\n\t\t\t\t// Fallback: extract search from pathname if present\n\t\t\t\tconst qIdx = pathOnly.indexOf('?');\n\t\t\t\tif (qIdx !== -1) {\n\t\t\t\t\tsearch = pathOnly.slice(qIdx);\n\t\t\t\t\tpathOnly = pathOnly.slice(0, qIdx);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tserverSnapshotRef.current = { pathname: pathOnly, 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\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Navigation handling with prefetch\n\t\tconst handlePopState = () => {\n\t\t\tendInitialHydration();\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(routeDataUrl(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(readRouteAnswer)\n\t\t\t\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Data fetching with caching\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// Check if this is a multi-source response (layout + route)\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\ttypeof payload === 'object' &&\n\t\t\t\t\t\t\t\t\t\tpayload !== null &&\n\t\t\t\t\t\t\t\t\t\tpayload.__reroute_multiple__ === true\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t// Multiple data sources: populate each at its specific key\n\t\t\t\t\t\t\t\t\t\tconst keys: string[] = [];\n\t\t\t\t\t\t\t\t\t\tfor (const [key, value] of Object.entries(payload)) {\n\t\t\t\t\t\t\t\t\t\t\tif (key !== '__reroute_multiple__') {\n\t\t\t\t\t\t\t\t\t\t\t\t// Check if this value needs flattening\n\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\ttypeof value === 'object' &&\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue !== null &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t(value as Any).__flatten__\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\t\t// Flatten this nested object\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor (const [subKey, subValue] of Object.entries(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue as Record<string, unknown>,\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\t\tif (subKey !== '__flatten__') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Store all values including lazy markers,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// never over data already loaded\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!wouldUnload(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[subKey],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsubValue,\n\t\t\t\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\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[subKey] = subValue;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkeys.push(subKey);\n\t\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\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t!wouldUnload(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue,\n\t\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\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t\t\t\t\t\t\t\t\tkeys.push(key);\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}\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: { keys },\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} else if (\n\t\t\t\t\t\t\t\t\t\ttypeof payload === 'object' &&\n\t\t\t\t\t\t\t\t\t\tpayload !== null &&\n\t\t\t\t\t\t\t\t\t\t(payload.__reroute_flattened__ === true ||\n\t\t\t\t\t\t\t\t\t\t\tpayload.__flatten__ === true)\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t// Flatten: populate each key individually\n\t\t\t\t\t\t\t\t\t\tconst keys: string[] = [];\n\t\t\t\t\t\t\t\t\t\tfor (const [key, value] of Object.entries(payload)) {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tkey !== '__reroute_flattened__' &&\n\t\t\t\t\t\t\t\t\t\t\t\tkey !== '__flatten__'\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t// Store all values including lazy markers (never over\n\t\t\t\t\t\t\t\t\t\t\t\t// loaded data); useData fetches lazy markers on demand\n\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t!wouldUnload((w.__REROUTE_DATA__ as Any)[key], value)\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\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t\t\t\t\t\t\t\tkeys.push(key);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// Also store at pathname, unless the page's own data sits there\n\t\t\t\t\t\t\t\t\t\t// (`/` answers `{ '/': … }`; see storeAndDispatchData)\n\t\t\t\t\t\t\t\t\t\tconst ownKey = keys.includes(next.pathname);\n\t\t\t\t\t\t\t\t\t\tif (!ownKey)\n\t\t\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\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: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkeys: ownKey ? keys : [...keys, next.pathname],\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);\n\t\t\t\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// Single key response\n\t\t\t\t\t\t\t\t\t\t// Check if this single response needs flattening\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\ttypeof payload === 'object' &&\n\t\t\t\t\t\t\t\t\t\t\tpayload !== null &&\n\t\t\t\t\t\t\t\t\t\t\t(payload as Any).__flatten__ === true\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t// Flatten this data into individual keys\n\t\t\t\t\t\t\t\t\t\t\tconst keys: string[] = [];\n\t\t\t\t\t\t\t\t\t\t\tfor (const [key, value] of Object.entries(payload)) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (key !== '__flatten__') {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t!wouldUnload(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue,\n\t\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\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t\t\t\t\t\t\t\t\tkeys.push(key);\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\t// Also store at pathname, unless the page's own data sits there\n\t\t\t\t\t\t\t\t\t\t\tconst ownKey = keys.includes(next.pathname);\n\t\t\t\t\t\t\t\t\t\t\tif (!ownKey)\n\t\t\t\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\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: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkeys: ownKey ? keys : [...keys, next.pathname],\n\t\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\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} else {\n\t\t\t\t\t\t\t\t\t\t\t// Regular single key response\n\t\t\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\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: next.pathname },\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}\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\t// Only use view transitions if enabled AND page has named transition elements\n\t\t\tconst shouldUseViewTransition =\n\t\t\t\tviewTransitionsEnabled && hasViewTransitionNames();\n\n\t\t\tif (shouldUseViewTransition) {\n\t\t\t\tsettleTransition(\n\t\t\t\t\t(document as Any).startViewTransition(() => {\n\t\t\t\t\t\tflushSync(() => {\n\t\t\t\t\t\t\tupdateState();\n\t\t\t\t\t\t});\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// Wait for DOM to settle and view transition to complete\n\t\t\t\tconst restoreScroll = () => {\n\t\t\t\t\tif (next.hash) {\n\t\t\t\t\t\t// Handle hash navigation\n\t\t\t\t\t\tconst element = document.querySelector(next.hash);\n\t\t\t\t\t\tif (element) {\n\t\t\t\t\t\t\telement.scrollIntoView({ behavior: 'smooth' });\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (savedPosition) {\n\t\t\t\t\t\t// Restore saved scroll position\n\t\t\t\t\t\twindow.scrollTo({\n\t\t\t\t\t\t\ttop: savedPosition.y,\n\t\t\t\t\t\t\tleft: savedPosition.x,\n\t\t\t\t\t\t\tbehavior: 'instant',\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\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};\n\n\t\t\t\tif (shouldUseViewTransition) {\n\t\t\t\t\t// Double rAF to ensure view transition has started rendering\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\trequestAnimationFrame(restoreScroll);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\trequestAnimationFrame(restoreScroll);\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// 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\n\t\t// The page on screen (the `pathname` prop is the one the server rendered)\n\t\tconst onScreen = () => window.location.pathname + window.location.search;\n\n\t\t// Apply immediately (will skip if no data available)\n\t\tapplyRouteHeadAndLang(onScreen(), matchRoute);\n\n\t\t// Listen for data updates and re-apply head when data becomes available\n\t\tconst handleDataUpdate = (e: Event) => {\n\t\t\tconst detail = (e as CustomEvent).detail as Any;\n\t\t\tconst keys: string[] = Array.isArray(detail?.keys)\n\t\t\t\t? detail.keys\n\t\t\t\t: detail?.key\n\t\t\t\t\t? [detail.key]\n\t\t\t\t\t: [];\n\t\t\tconst currentPathname = onScreen();\n\n\t\t\t// Check if any key matches the current pathname\n\t\t\tconst shouldApply =\n\t\t\t\tkeys.length === 0 ||\n\t\t\t\tkeys.includes(currentPathname) ||\n\t\t\t\tkeys.some((k) => currentPathname.startsWith(k));\n\n\t\t\t// If this event is for our current pathname, re-apply head\n\t\t\tif (shouldApply) {\n\t\t\t\tapplyRouteHeadAndLang(currentPathname, matchRoute);\n\t\t\t}\n\t\t};\n\n\t\tif (typeof window !== 'undefined') {\n\t\t\twindow.addEventListener(\n\t\t\t\t'__reroute_data__' as Any,\n\t\t\t\thandleDataUpdate as Any,\n\t\t\t);\n\t\t}\n\n\t\treturn () => {\n\t\t\t// Clear previously injected route-level head items\n\t\t\tapplyRouteHead(undefined);\n\t\t\tif (typeof window !== 'undefined') {\n\t\t\t\twindow.removeEventListener(\n\t\t\t\t\t'__reroute_data__' as Any,\n\t\t\t\t\thandleDataUpdate as Any,\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\t}, [target, matchRoute]);\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\tlayoutWraps(layout, location.pathname, target?.route.pattern),\n\t\t\t)\n\t\t\t.sort((a: Any, b: Any) => {\n\t\t\t\t// Sort by depth (shallow first) since we wrap from innermost to outermost\n\t\t\t\t// This ensures root layouts are outermost, specific layouts are innermost\n\t\t\t\treturn (\n\t\t\t\t\ta.pattern.split('/').filter(Boolean).length -\n\t\t\t\t\tb.pattern.split('/').filter(Boolean).length\n\t\t\t\t);\n\t\t\t});\n\t}, [layouts, location.pathname, target]);\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 pattern = String(matchingLayouts[i].pattern || '/');\n\t\t\tconst currentOutlet = outletContent;\n\t\t\toutletContent = (\n\t\t\t\t<LayoutPatternContext.Provider value={pattern}>\n\t\t\t\t\t<OutletContext.Provider value={currentOutlet}>\n\t\t\t\t\t\t<Layout />\n\t\t\t\t\t</OutletContext.Provider>\n\t\t\t\t</LayoutPatternContext.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 { LayoutPatternContext, OutletContext, RouterContext, RouterProvider };\n",
21
21
  "/**\n * Whether a layout at `pattern` wraps `pathname`: the path is the pattern or\n * below it, segment by segment (`/a` wraps `/a/x`, never `/auth`). The\n * server's `layoutCovers` in reroute-js/core is the same rule.\n */\nexport function layoutCovers(pattern: string, pathname: string): boolean {\n\tconst base = pattern.replace(/\\/+$/, '');\n\tif (base === '') return true;\n\treturn pathname === base || pathname.startsWith(`${base}/`);\n}\n\n/**\n * Whether `layout` wraps the page at `pathname`, whose route is\n * `routePattern`. A layout inside a route group lists its `routes` and wraps\n * only those; any other layout wraps everything under its URL. The server's\n * `layoutWraps` in reroute-js/core is the same rule.\n */\nexport function layoutWraps(\n\tlayout: { pattern?: unknown; routes?: readonly string[] },\n\tpathname: string,\n\troutePattern: string | undefined,\n): boolean {\n\tif (Array.isArray(layout.routes)) {\n\t\treturn routePattern !== undefined && layout.routes.includes(routePattern);\n\t}\n\treturn layoutCovers(String(layout.pattern || '/'), pathname);\n}\n",
22
22
  "import { useMemo } from 'react';\nimport { useRouter } from './useRouter';\n\nexport interface FeedInfo {\n\t/** URL of the specific feed for current route/collection (null if none) */\n\tfeedUrl: string | null;\n\t/** Main feed URL (always available) */\n\tmainFeedUrl: string;\n\t/** Collection name if current route is in a collection */\n\tcollection: string | null;\n\t/** Whether current route has a specific feed */\n\thasFeed: boolean;\n}\n\n/**\n * Get RSS feed information for the current route\n *\n * @example\n * ```tsx\n * import { useFeed } from 'reroute-js/react';\n *\n * function Header() {\n * const feed = useFeed();\n *\n * return (\n * <header>\n * {feed.feedUrl && (\n * <a href={feed.feedUrl} target=\"_blank\">\n * Subscribe to feed\n * </a>\n * )}\n * <a href={feed.mainFeedUrl}>Main RSS Feed</a>\n * </header>\n * );\n * }\n * ```\n *\n * @remarks\n * This hook intelligently detects which RSS feeds actually exist on your site.\n * It returns the route-specific feed URL if available (e.g., `/blog/feed.xml`),\n * or falls back to the main feed (`/feed.xml`) if the current route doesn't have one.\n */\nexport function useFeed(): FeedInfo {\n\tconst { pathname } = useRouter();\n\n\treturn useMemo(() => {\n\t\t// Get available feeds from SSR-injected global (works in both SSR and client)\n\t\tconst availableFeeds: string[] =\n\t\t\ttypeof globalThis !== 'undefined'\n\t\t\t\t? (\n\t\t\t\t\t\tglobalThis as {\n\t\t\t\t\t\t\t__REROUTE_AVAILABLE_FEEDS__?: string[];\n\t\t\t\t\t\t\t__REROUTE_FEEDS__?: string[];\n\t\t\t\t\t\t}\n\t\t\t\t\t).__REROUTE_AVAILABLE_FEEDS__ ||\n\t\t\t\t\t(globalThis as { __REROUTE_FEEDS__?: string[] }).__REROUTE_FEEDS__ ||\n\t\t\t\t\t[]\n\t\t\t\t: [];\n\n\t\t// Parse pathname to determine collection or route\n\t\tconst parts = pathname.split('/').filter(Boolean);\n\n\t\t// Default values\n\t\tconst mainFeedUrl = '/feed.xml';\n\t\tlet feedUrl: string | null = null;\n\t\tlet collection: string | null = null;\n\n\t\tif (parts.length > 0) {\n\t\t\t// First segment might be a collection or route with a feed\n\t\t\tconst segment = parts[0];\n\t\t\tconst potentialFeedUrl = `/${segment}/feed.xml`;\n\n\t\t\t// Only return this feed URL if it actually exists\n\t\t\t// If availableFeeds is empty (SSR before feeds registered), default to main feed for safety\n\t\t\tif (\n\t\t\t\tavailableFeeds.length > 0 &&\n\t\t\t\tavailableFeeds.includes(potentialFeedUrl)\n\t\t\t) {\n\t\t\t\tcollection = segment;\n\t\t\t\tfeedUrl = potentialFeedUrl;\n\t\t\t} else {\n\t\t\t\t// Fall back to main feed\n\t\t\t\tfeedUrl = mainFeedUrl;\n\t\t\t}\n\t\t} else {\n\t\t\t// Home page - feedUrl is the main feed\n\t\t\tfeedUrl = mainFeedUrl;\n\t\t}\n\n\t\tconst hasFeed = feedUrl !== null;\n\n\t\treturn {\n\t\t\tfeedUrl,\n\t\t\tmainFeedUrl,\n\t\t\tcollection,\n\t\t\thasFeed,\n\t\t};\n\t}, [pathname]);\n}\n",
23
23
  "import { useContext, useEffect, useMemo, useState } from 'react';\nimport { readRouteAnswer } from '../lib/head';\nimport { routeDataUrl } from '../lib/static-data';\nimport { LayoutPatternContext } from '../providers/RouterProvider';\nimport type { Any } from '../types/any';\nimport { useRouter } from './useRouter';\n\nconst isThenable = (value: unknown): value is Promise<unknown> => {\n\treturn (\n\t\ttypeof value === 'object' &&\n\t\tvalue !== null &&\n\t\ttypeof (value as { then?: unknown }).then === 'function'\n\t);\n};\n\n/**\n * Check if we're in the initial hydration phase.\n * During initial hydration, we should not throw Suspense promises\n * as the SSR data should already be available.\n */\nconst isInitialHydration = (): boolean => {\n\ttry {\n\t\t// biome-ignore lint/suspicious/noExplicitAny: dynamic global access\n\t\tconst g = globalThis as any;\n\t\treturn !!g.__REROUTE_INITIAL_HYDRATION__;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\n/**\n * Where a layout's data lives. Inside a layout (the router says which) it is\n * exactly `__layout:<pattern>`: while that loads the data is undefined, never\n * another layout's. Outside one, the first path segment's layout, falling\n * back to the root's.\n */\nexport function layoutDataKey(\n\tpattern: string | null,\n\tpathname: string,\n): { key: string; exact: boolean } {\n\tif (pattern !== null) return { key: `__layout:${pattern}`, exact: true };\n\tconst first = pathname.split('/').filter(Boolean)[0];\n\treturn { key: first ? `__layout:/${first}` : '__layout:/', exact: false };\n}\n\n/**\n * Read SSR-seeded layout data.\n * - On server: reads from globalThis.__REROUTE_DATA__['__layout:pattern']\n * - On client: reads from window.__REROUTE_DATA__['__layout:pattern']\n *\n * Automatically determines the layout key based on current pathname.\n */\nexport function useLayoutData<T = unknown>(): T | undefined {\n\tconst { pathname } = useRouter();\n\tconst pattern = useContext(LayoutPatternContext);\n\tconst [_tick, setTick] = useState(0);\n\tconst { key: layoutKey, exact } = useMemo(\n\t\t() => layoutDataKey(pattern, pathname),\n\t\t[pattern, pathname],\n\t);\n\n\t// Client-side hooks\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\tconst keys: string[] = Array.isArray(detail?.keys)\n\t\t\t\t\t? detail.keys\n\t\t\t\t\t: detail?.key\n\t\t\t\t\t\t? [detail.key]\n\t\t\t\t\t\t: [];\n\t\t\t\tif (keys.length > 0 && !keys.includes(layoutKey)) 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}, [layoutKey]);\n\n\t// Client fallback: if there is no layout data for this key after SPA navigation,\n\t// lazily fetch it from the server once by fetching the pathname\n\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Layout data fetching with caching\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\n\t\t\t// Check if pathname holds a __reroute_multiple__ object that needs unpacking\n\t\t\tconst pathnameValue = (w.__REROUTE_DATA__ as Any)[pathname];\n\t\t\tif (\n\t\t\t\tpathnameValue &&\n\t\t\t\ttypeof pathnameValue === 'object' &&\n\t\t\t\tpathnameValue.__reroute_multiple__ === true\n\t\t\t) {\n\t\t\t\t// Unpack the multiple sources into individual keys\n\t\t\t\tfor (const [key, value] of Object.entries(pathnameValue)) {\n\t\t\t\t\tif (key !== '__reroute_multiple__') {\n\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Remove the packed version\n\t\t\t\tdelete (w.__REROUTE_DATA__ as Any)[pathname];\n\t\t\t\t// Trigger re-render\n\t\t\t\tsetTick((x) => x + 1);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If layout key already exists, no need to fetch\n\t\t\tif ((w.__REROUTE_DATA__ as Any)[layoutKey] !== undefined) return;\n\n\t\t\t// Fetch the current pathname to get all data including layout\n\t\t\tconst pathToFetch = pathname;\n\n\t\t\t// Deduplicate concurrent fetches for the same path\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[pathToFetch]) {\n\t\t\t\t// Another hook is already fetching this path, wait for it\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpending[pathToFetch] = true;\n\n\t\t\tfetch(routeDataUrl(pathToFetch), {\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(readRouteAnswer)\n\t\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Response parsing and state updates\n\t\t\t\t.then((j) => {\n\t\t\t\t\tif (!j) return;\n\t\t\t\t\tconst payload = j.data ?? j;\n\n\t\t\t\t\t// Check if this is a multi-source response (layout + route)\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof payload === 'object' &&\n\t\t\t\t\t\tpayload !== null &&\n\t\t\t\t\t\tpayload.__reroute_multiple__ === true\n\t\t\t\t\t) {\n\t\t\t\t\t\t// Multiple data sources: populate each at its specific key\n\t\t\t\t\t\tconst keys: string[] = [];\n\t\t\t\t\t\tfor (const [key, value] of Object.entries(payload)) {\n\t\t\t\t\t\t\tif (key !== '__reroute_multiple__') {\n\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[key] = value;\n\t\t\t\t\t\t\t\tkeys.push(key);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Notify all affected keys\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\tdetail: { keys },\n\t\t\t\t\t\t\t\t}) as Any,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Single key response - store at pathname\n\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[pathToFetch] = payload;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tw.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent('__reroute_data__', {\n\t\t\t\t\t\t\t\t\tdetail: { key: pathToFetch },\n\t\t\t\t\t\t\t\t}) as Any,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Force a local re-render\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})\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)[pathToFetch];\n\t\t\t\t\t} catch {}\n\t\t\t\t});\n\t\t} catch {}\n\t}, [layoutKey, pathname]);\n\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Pagination state management\n\treturn useMemo(() => {\n\t\ttry {\n\t\t\t_tick;\n\t\t\tconst source =\n\t\t\t\ttypeof window === 'undefined'\n\t\t\t\t\t? ((globalThis as Any).__REROUTE_DATA__ as Record<string, unknown>)\n\t\t\t\t\t: ((window as Any).__REROUTE_DATA__ as Record<string, unknown>);\n\n\t\t\t// This layout's own data (or, outside a layout, the path's)\n\t\t\tlet value = source?.[layoutKey] as T | Promise<T> | undefined;\n\n\t\t\t// Outside a layout, a path without its own layout data uses the root's\n\t\t\tif (value === undefined && !exact && layoutKey !== '__layout:/') {\n\t\t\t\tvalue = source?.['__layout:/'] as T | Promise<T> | undefined;\n\t\t\t}\n\n\t\t\t// Check if this is a lazy marker\n\t\t\tif (\n\t\t\t\ttypeof value === 'object' &&\n\t\t\t\tvalue !== null &&\n\t\t\t\t(value as Any).__lazy__ === true\n\t\t\t) {\n\t\t\t\t// During initial hydration, return undefined to avoid skeleton flash\n\t\t\t\tif (isInitialHydration()) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tconst fetchUrl = (value as Any).__fetch__;\n\t\t\t\tif (typeof fetchUrl === 'string' && typeof window !== 'undefined') {\n\t\t\t\t\tconst w = window as Any;\n\t\t\t\t\t// Deduplicate fetches\n\t\t\t\t\tw.__REROUTE_LAZY_PENDING__ = w.__REROUTE_LAZY_PENDING__ || {};\n\t\t\t\t\tconst pending = w.__REROUTE_LAZY_PENDING__;\n\n\t\t\t\t\tif (!pending[layoutKey]) {\n\t\t\t\t\t\t// Start fetch and throw the promise\n\t\t\t\t\t\tconst fetchPromise = fetch(fetchUrl, {\n\t\t\t\t\t\t\theaders: { Accept: 'application/json' },\n\t\t\t\t\t\t\tcredentials: 'same-origin',\n\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.then(readRouteAnswer)\n\t\t\t\t\t\t\t.then((j) => {\n\t\t\t\t\t\t\t\tif (j) {\n\t\t\t\t\t\t\t\t\tconst payload = j.data ?? j;\n\t\t\t\t\t\t\t\t\t// Store the resolved data\n\t\t\t\t\t\t\t\t\t(w.__REROUTE_DATA__ as Any)[layoutKey] = payload;\n\t\t\t\t\t\t\t\t\t// Notify\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tw.dispatchEvent(\n\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\tdetail: { key: layoutKey },\n\t\t\t\t\t\t\t\t\t\t\t}) as Any,\n\t\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\t}\n\t\t\t\t\t\t\t\treturn j?.data;\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\t\t\tdelete pending[layoutKey];\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\tpending[layoutKey] = fetchPromise;\n\t\t\t\t\t\tthrow fetchPromise; // Trigger Suspense\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Re-throw the pending promise\n\t\t\t\t\t\tthrow pending[layoutKey];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Fallback: treat as undefined\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// During initial hydration, don't throw promises to avoid skeleton flash\n\t\t\tif (isThenable(value)) {\n\t\t\t\tif (isInitialHydration()) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tthrow value;\n\t\t\t}\n\t\t\treturn value as T | undefined;\n\t\t} catch (error) {\n\t\t\t// Re-throw promises for React Suspense\n\t\t\tif (isThenable(error)) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\t}, [layoutKey, exact, _tick]);\n}\n",
@@ -27,13 +27,13 @@
27
27
  "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",
28
28
  "import { useEffect, useState } from 'react';\nimport type { Any } from '../types/any';\nimport { useParams } from './useParams';\nimport { useRouter } from './useRouter';\n\nexport interface TocEntry {\n\tlevel: number;\n\ttext: string;\n\tslug: string;\n}\n\nexport interface UseTocResult {\n\t/** Table of contents entries */\n\ttoc: TocEntry[];\n\t/** Whether TOC is loading */\n\tisLoading: boolean;\n}\n\n/**\n * Hook to get Table of Contents for the current content item\n * Automatically detects collection and slug from the current route.\n * Extracts TOC from markdown headings during build.\n */\nexport function useToc(): UseTocResult {\n\tconst routeParams = useParams();\n\tconst router = useRouter();\n\n\t// Auto-detect collection from pathname (e.g., /blog/post -> 'blog')\n\tconst pathname = router.pathname || '';\n\tconst pathParts = pathname.split('/').filter(Boolean);\n\tconst collection = pathParts[0] || '';\n\n\t// Auto-detect name from route params\n\tconst name = routeParams.slug || routeParams.name || pathParts[1] || '';\n\tconst key = collection && name ? `${collection}:${name}` : '';\n\n\t// Initialize state with SSR or client cached data\n\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: TOC state initialization from multiple sources\n\tconst [toc, setToc] = useState<TocEntry[]>(() => {\n\t\t// During SSR\n\t\tif (typeof window === 'undefined') {\n\t\t\ttry {\n\t\t\t\tconst g = globalThis as Any;\n\t\t\t\tconst ssrModules = g.__REROUTE_SSR_MODULES__ || {};\n\t\t\t\tif (key && ssrModules[key]?.toc && Array.isArray(ssrModules[key].toc)) {\n\t\t\t\t\treturn ssrModules[key].toc;\n\t\t\t\t}\n\t\t\t} catch {}\n\t\t\treturn [];\n\t\t}\n\n\t\t// During client hydration - check SSR exports first (serialized from server)\n\t\ttry {\n\t\t\tconst w = window as Any;\n\t\t\tconst ssrExports = w.__REROUTE_SSR_EXPORTS__ || {};\n\t\t\tif (key && ssrExports[key]?.toc && Array.isArray(ssrExports[key].toc)) {\n\t\t\t\treturn ssrExports[key].toc;\n\t\t\t}\n\t\t} catch {}\n\n\t\t// Check if module is already cached\n\t\ttry {\n\t\t\tconst w = window as Any;\n\t\t\tconst modules = w.__REROUTE_MODULES__ || {};\n\t\t\tif (key && modules[key]?.toc && Array.isArray(modules[key].toc)) {\n\t\t\t\treturn modules[key].toc;\n\t\t\t}\n\t\t} catch {}\n\n\t\treturn [];\n\t});\n\n\t// Client-side: listen for module to be loaded\n\tuseEffect(() => {\n\t\tif (!key) return;\n\t\tif (typeof window === 'undefined') return;\n\n\t\tconst checkModule = () => {\n\t\t\ttry {\n\t\t\t\tconst w = window as Any;\n\t\t\t\tconst modules = w.__REROUTE_MODULES__ || {};\n\n\t\t\t\tif (modules[key]) {\n\t\t\t\t\tconst mod = modules[key];\n\t\t\t\t\tif (mod.toc && Array.isArray(mod.toc)) {\n\t\t\t\t\t\tsetToc(mod.toc);\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t};\n\n\t\t// Check immediately (might already be loaded)\n\t\tif (checkModule()) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Listen for content loaded event\n\t\tconst handler = (e: Event) => {\n\t\t\tconst detail = (e as CustomEvent).detail;\n\t\t\tif (detail?.key === key) {\n\t\t\t\tcheckModule();\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener('__reroute_content_loaded__' as Any, handler);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('__reroute_content_loaded__' as Any, handler);\n\t\t};\n\t}, [key]);\n\n\treturn { toc, isLoading: false };\n}\n",
29
29
  "import {\n\ttype CSSProperties,\n\ttype ImgHTMLAttributes,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from 'react';\n\nexport interface ImageProps\n\textends Omit<\n\t\tImgHTMLAttributes<HTMLImageElement>,\n\t\t'src' | 'srcSet' | 'width' | 'height' | 'onLoad' | 'onError'\n\t> {\n\t/** Source path of the image */\n\tsrc: string;\n\t/** Width in pixels */\n\twidth?: string | number | undefined;\n\t/** Height in pixels */\n\theight?: string | number | undefined;\n\t/** Image quality (1-100, default: 75) */\n\tquality?: string | number | undefined;\n\t/** Output format (default: auto-detect based on browser support) */\n\tformat?: 'auto' | 'webp' | 'avif' | 'jpeg' | 'png';\n\t/** Sizes attribute for responsive images */\n\tsizes?: string;\n\t/** Priority loading (disables lazy loading) */\n\tpriority?: boolean;\n\t/** Blur placeholder data URL */\n\tplaceholder?: 'blur' | 'empty';\n\t/** Blur data URL (when placeholder='blur') */\n\tblurDataURL?: string;\n\t/** Show loading spinner (default: true) */\n\tshowSpinner?: boolean;\n\t/** Custom spinner component to show while image loads */\n\tspinner?: React.ReactNode;\n\t/** Spinner size in pixels (default: 40) */\n\tspinnerSize?: number;\n\t/** Spinner color (default: 'rgba(0, 0, 0, 0.4)') */\n\tspinnerColor?: string;\n\t/** Spinner background color (default: 'rgba(0, 0, 0, 0.03)') */\n\tspinnerBackground?: string;\n\t/** Custom loader function */\n\tloader?: (params: {\n\t\tsrc: string;\n\t\twidth: number;\n\t\tquality?: number;\n\t\tformat?: string;\n\t}) => string;\n\t/** Disable automatic aspect-ratio calculation (default: false) */\n\tdisableAspectRatio?: boolean;\n\t/** Disable automatic blur/transition effects (default: false) */\n\tdisableTransitions?: boolean;\n\t/** Disable caption below image (default: false - caption shows if alt text exists) */\n\tdisableCaption?: boolean;\n\t/** Callback when image loads */\n\tonLoad?: (img: HTMLImageElement | null) => void;\n\t/** Callback when image errors */\n\tonError?: () => void;\n}\n\n// Default device sizes for responsive images (based on common breakpoints)\nconst DEFAULT_DEVICE_SIZES = [640, 750, 828, 1080, 1200, 1920, 2048, 3840];\nconst DEFAULT_IMAGE_QUALITY = 75;\n\ntype RerouteImageRuntime = {\n\tsizes: number[];\n\tquality: number;\n};\n\nfunction readImageRuntime(): RerouteImageRuntime | undefined {\n\tconst value = (globalThis as Record<string, unknown>).__REROUTE_IMAGE__;\n\tif (!value || typeof value !== 'object') {\n\t\treturn undefined;\n\t}\n\tconst record = value as { sizes?: unknown; quality?: unknown };\n\tif (\n\t\t!Array.isArray(record.sizes) ||\n\t\trecord.sizes.some((size) => typeof size !== 'number')\n\t) {\n\t\treturn undefined;\n\t}\n\treturn {\n\t\tsizes: record.sizes as number[],\n\t\tquality:\n\t\t\ttypeof record.quality === 'number'\n\t\t\t\t? record.quality\n\t\t\t\t: DEFAULT_IMAGE_QUALITY,\n\t};\n}\n\n/** Srcset widths. When `image.preprocess` is on, these are the baked sizes. */\nexport function getImageDeviceSizes(): number[] {\n\treturn readImageRuntime()?.sizes ?? [...DEFAULT_DEVICE_SIZES];\n}\n\n/** Default Image quality. Matches `image.preprocess.quality` when set. */\nexport function getImageQuality(): number {\n\treturn readImageRuntime()?.quality ?? DEFAULT_IMAGE_QUALITY;\n}\n\n// Generate srcset from device sizes\nfunction generateSrcSet(\n\tsrc: string,\n\twidth: number | undefined,\n\tquality: number,\n\tformat: string,\n\tloader: ImageProps['loader'],\n): string {\n\tconst deviceSizes = getImageDeviceSizes();\n\tconst sizes = width\n\t\t? deviceSizes.filter((size) => size <= width * 2)\n\t\t: deviceSizes;\n\n\tif (sizes.length === 0 || !width) {\n\t\treturn '';\n\t}\n\n\treturn sizes\n\t\t.map((size) => {\n\t\t\tconst url = loader\n\t\t\t\t? loader({ src, width: size, quality, format })\n\t\t\t\t: defaultLoader({ src, width: size, quality, format });\n\t\t\treturn `${url} ${size}w`;\n\t\t})\n\t\t.join(', ');\n}\n\n// Default loader that generates reroute image optimization URLs\nfunction defaultLoader({\n\tsrc,\n\twidth,\n\tquality = 75,\n\tformat,\n}: {\n\tsrc: string;\n\twidth: number;\n\tquality?: number;\n\tformat?: string;\n}): string {\n\tconst params = new URLSearchParams();\n\tparams.set('url', src);\n\tparams.set('w', width.toString());\n\tparams.set('q', quality.toString());\n\tif (format && format !== 'auto') {\n\t\tparams.set('f', format);\n\t}\n\treturn `/__reroute_image?${params.toString()}`;\n}\n\n// Check if native lazy loading is supported\nfunction supportsNativeLazyLoading(): boolean {\n\tif (typeof HTMLImageElement === 'undefined') {\n\t\treturn true; // Assume support during SSR (99% of modern browsers support it)\n\t}\n\treturn 'loading' in HTMLImageElement.prototype;\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Image component handles many scenarios - responsive images, formats, loading states\nexport function Image({\n\tsrc,\n\twidth,\n\theight,\n\tquality,\n\tformat = 'auto',\n\tsizes,\n\tpriority = false,\n\tplaceholder = 'empty',\n\tblurDataURL,\n\tshowSpinner = true,\n\tspinner,\n\tspinnerSize = 40,\n\tspinnerColor = 'rgba(0, 0, 0, 0.4)',\n\tspinnerBackground = 'rgba(0, 0, 0, 0.03)',\n\tloader,\n\tdisableAspectRatio = false,\n\tdisableTransitions = false,\n\tdisableCaption = false,\n\talt,\n\tonLoad: onLoadProp,\n\tonError: onErrorProp,\n\tstyle,\n\tclassName,\n\tdraggable = false,\n\t...props\n}: ImageProps) {\n\tconst [isLoaded, setIsLoaded] = useState(false);\n\tconst [hasError, setHasError] = useState(false);\n\tconst imgRef = useRef<HTMLImageElement>(null);\n\n\t// Convert string values to numbers if needed\n\tconst numWidth = typeof width === 'string' ? parseInt(width, 10) : width;\n\tconst numHeight = typeof height === 'string' ? parseInt(height, 10) : height;\n\tconst numQuality =\n\t\ttypeof quality === 'string'\n\t\t\t? parseInt(quality, 10)\n\t\t\t: (quality ?? getImageQuality());\n\n\t// Generate image URL\n\t// Don't pass resolved format to defaultLoader - let server negotiate via Accept header\n\tconst imageUrl = loader\n\t\t? loader({ src, width: numWidth || 0, quality: numQuality, format })\n\t\t: numWidth\n\t\t\t? defaultLoader({ src, width: numWidth, quality: numQuality, format })\n\t\t\t: src;\n\n\t// Check if image is already loaded (e.g., from browser cache)\n\tuseEffect(() => {\n\t\tconst img = imgRef.current;\n\t\tif (img?.complete && img.naturalWidth > 0) {\n\t\t\tsetIsLoaded(true);\n\t\t}\n\t}, []);\n\n\t// Generate srcset for responsive images\n\tconst srcSet = numWidth\n\t\t? generateSrcSet(src, numWidth, numQuality, format, loader)\n\t\t: undefined;\n\n\t// Handle image load\n\tconst handleLoad = () => {\n\t\tsetIsLoaded(true);\n\t\tif (imgRef.current) {\n\t\t\tonLoadProp?.(imgRef.current);\n\t\t}\n\t};\n\n\t// Handle image error\n\tconst handleError = () => {\n\t\tsetHasError(true);\n\t\tonErrorProp?.();\n\t};\n\n\t// Intersection observer for lazy loading\n\tuseEffect(() => {\n\t\tif (priority || typeof window === 'undefined') {\n\t\t\treturn;\n\t\t}\n\n\t\tconst img = imgRef.current;\n\t\tif (!img) return;\n\n\t\t// Use native lazy loading if available\n\t\tif (supportsNativeLazyLoading()) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to intersection observer\n\t\tconst observer = new IntersectionObserver(\n\t\t\t(entries) => {\n\t\t\t\tentries.forEach((entry) => {\n\t\t\t\t\tif (entry.isIntersecting) {\n\t\t\t\t\t\tconst lazyImg = entry.target as HTMLImageElement;\n\t\t\t\t\t\tconst dataSrc = lazyImg.getAttribute('data-src');\n\t\t\t\t\t\tconst dataSrcSet = lazyImg.getAttribute('data-srcset');\n\n\t\t\t\t\t\tif (dataSrc) {\n\t\t\t\t\t\t\tlazyImg.src = dataSrc;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (dataSrcSet) {\n\t\t\t\t\t\t\tlazyImg.srcset = dataSrcSet;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tobserver.unobserve(lazyImg);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t{\n\t\t\t\trootMargin: '50px',\n\t\t\t},\n\t\t);\n\n\t\tobserver.observe(img);\n\n\t\treturn () => {\n\t\t\tif (img) {\n\t\t\t\tobserver.unobserve(img);\n\t\t\t}\n\t\t};\n\t}, [priority]);\n\n\t// Compute styles\n\tconst imgStyle: CSSProperties = {\n\t\t// Responsive defaults - images should never overflow their container\n\t\tmaxWidth: '100%',\n\t\theight: 'auto',\n\t\t...style,\n\t\t...(!disableAspectRatio && numWidth && numHeight\n\t\t\t? { aspectRatio: `${numWidth} / ${numHeight}` }\n\t\t\t: {}),\n\t\t...(!disableTransitions && placeholder === 'blur' && !isLoaded && !hasError\n\t\t\t? {\n\t\t\t\t\tfilter: 'blur(20px)',\n\t\t\t\t\ttransform: 'scale(1.1)',\n\t\t\t\t\ttransition: 'filter 0.3s ease, transform 0.3s ease',\n\t\t\t\t}\n\t\t\t: !disableTransitions && isLoaded\n\t\t\t\t? {\n\t\t\t\t\t\tfilter: 'none',\n\t\t\t\t\t\ttransform: 'scale(1)',\n\t\t\t\t\t\ttransition: 'filter 0.3s ease, transform 0.3s ease',\n\t\t\t\t\t}\n\t\t\t\t: {}),\n\t};\n\n\t// Determine loading strategy\n\tconst loadingAttr = priority ? 'eager' : 'lazy';\n\n\t// Use blur placeholder if provided\n\tconst placeholderSrc =\n\t\tplaceholder === 'blur' && blurDataURL ? blurDataURL : undefined;\n\n\t// Show caption if alt text exists and not disabled\n\tconst showCaption = !disableCaption && alt && alt.trim() !== '';\n\n\treturn (\n\t\t<span\n\t\t\tstyle={{\n\t\t\t\tposition: 'relative',\n\t\t\t\tdisplay: showCaption ? 'block' : 'flex',\n\t\t\t\talignItems: showCaption ? undefined : 'center',\n\t\t\t\tjustifyContent: showCaption ? undefined : 'center',\n\t\t\t\twidth: '100%',\n\t\t\t\theight: '100%',\n\t\t\t}}\n\t\t>\n\t\t\t<span\n\t\t\t\tstyle={{\n\t\t\t\t\tposition: 'relative',\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\talignItems: 'center',\n\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\twidth: '100%',\n\t\t\t\t\theight: '100%',\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{/* Loading spinner - uses span to be HTML-valid inside p tags that markdown creates */}\n\t\t\t\t{showSpinner && !isLoaded && !hasError && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\tinset: 0,\n\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t\tbackgroundColor: spinnerBackground,\n\t\t\t\t\t\t\tzIndex: 1,\n\t\t\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{spinner || (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tdisplay: 'block',\n\t\t\t\t\t\t\t\t\twidth: `${spinnerSize}px`,\n\t\t\t\t\t\t\t\t\theight: `${spinnerSize}px`,\n\t\t\t\t\t\t\t\t\tborder: `${Math.max(2, spinnerSize / 13)}px solid transparent`,\n\t\t\t\t\t\t\t\t\tborderTopColor: spinnerColor,\n\t\t\t\t\t\t\t\t\tborderRadius: '50%',\n\t\t\t\t\t\t\t\t\tanimation: 'reroute-spin 0.8s linear infinite',\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\n\t\t\t\t{placeholder === 'blur' && placeholderSrc && !isLoaded && !hasError && (\n\t\t\t\t\t<img\n\t\t\t\t\t\tsrc={placeholderSrc}\n\t\t\t\t\t\tdraggable={draggable}\n\t\t\t\t\t\talt=''\n\t\t\t\t\t\taria-hidden='true'\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\tinset: 0,\n\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t\t\tobjectFit: style?.objectFit || 'cover',\n\t\t\t\t\t\t\tfilter: 'blur(20px)',\n\t\t\t\t\t\t\ttransform: 'scale(1.1)',\n\t\t\t\t\t\t\tzIndex: -1,\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<img\n\t\t\t\t\tref={imgRef}\n\t\t\t\t\tdraggable={draggable}\n\t\t\t\t\tsrc={priority || supportsNativeLazyLoading() ? imageUrl : undefined}\n\t\t\t\t\tdata-src={\n\t\t\t\t\t\t!(priority || supportsNativeLazyLoading()) ? imageUrl : undefined\n\t\t\t\t\t}\n\t\t\t\t\tsrcSet={priority || supportsNativeLazyLoading() ? srcSet : undefined}\n\t\t\t\t\tdata-srcset={\n\t\t\t\t\t\t!(priority || supportsNativeLazyLoading()) ? srcSet : undefined\n\t\t\t\t\t}\n\t\t\t\t\tsizes={sizes}\n\t\t\t\t\twidth={width}\n\t\t\t\t\theight={height}\n\t\t\t\t\talt={alt || ''}\n\t\t\t\t\tloading={loadingAttr}\n\t\t\t\t\tfetchPriority={priority ? 'high' : undefined}\n\t\t\t\t\tonLoad={handleLoad}\n\t\t\t\t\tonError={handleError}\n\t\t\t\t\tstyle={imgStyle}\n\t\t\t\t\tclassName={className}\n\t\t\t\t\t{...props}\n\t\t\t\t/>\n\n\t\t\t\t{/* Keyframes for spinner animation */}\n\t\t\t\t{showSpinner && !isLoaded && (\n\t\t\t\t\t<style>\n\t\t\t\t\t\t{`\n\t\t\t\t\t\t@keyframes reroute-spin {\n\t\t\t\t\t\t\t0% { transform: rotate(0deg); }\n\t\t\t\t\t\t\t100% { transform: rotate(360deg); }\n\t\t\t\t\t\t}\n\t\t\t\t\t`}\n\t\t\t\t\t</style>\n\t\t\t\t)}\n\t\t\t</span>\n\n\t\t\t{/* Image caption */}\n\t\t\t{showCaption && (\n\t\t\t\t<em\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tdisplay: 'block',\n\t\t\t\t\t\tfontSize: '75%',\n\t\t\t\t\t\ttextAlign: 'center',\n\t\t\t\t\t\tfontStyle: 'italic',\n\t\t\t\t\t\topacity: 0.7,\n\t\t\t\t\t\tmarginTop: '-0.8rem',\n\t\t\t\t\t\tmarginBottom: '2rem',\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{alt}\n\t\t\t\t</em>\n\t\t\t)}\n\t\t</span>\n\t);\n}\n",
30
- "import { useCallback, useContext, useMemo } from 'react';\nimport { useRouter } from '../hooks';\nimport { prefetchContent } from '../hooks/useContent';\nimport { isLazyLoadMarker } from '../hooks/useData';\nimport { useLocaleContext } from '../i18n/LocaleProvider';\nimport { readRouteAnswer } from '../lib/head';\nimport { preloadRouteComponent } from '../lib/lazy-route';\nimport { routeDataUrl } from '../lib/static-data';\nimport {\n\tuseContentIndex,\n\tuseContentLoadCollection,\n\tuseContentResolver,\n} from '../providers/ContentProvider';\nimport { RouterContext } from '../providers/RouterProvider';\nimport type { Any } from '../types/any';\nimport type { LinkProps } from '../types/router';\n\ninterface LocalUrl {\n\tpath: string;\n\thash: string;\n\tfullPath: string;\n}\n\ninterface InferredContent {\n\tmodule?: string;\n\tcollection: string;\n\tname: string;\n}\n\ntype MatchRouteFn = (\n\tpath: string,\n) => { route?: { isDynamic?: boolean } } | null;\ntype EnsureCollectionFn = (collection: string) => Promise<Any[] | undefined>;\n\n/**\n * Parse a URL and return local path info if same-origin, null otherwise.\n */\nexport function parseLocalUrl(to: string): LocalUrl | null {\n\tif (typeof window === 'undefined') return null;\n\ttry {\n\t\tconst url = new URL(String(to), window.location.origin);\n\t\tif (url.origin !== window.location.origin) return null;\n\t\treturn {\n\t\t\tpath: url.pathname,\n\t\t\thash: url.hash.slice(1),\n\t\t\tfullPath: url.pathname + url.search,\n\t\t};\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/**\n * Check if a link should skip client-side interception (RSS, sitemap,\n * robots and llms text files): the server answers them, never a route.\n */\nexport function shouldSkipInterception(href: string): boolean {\n\treturn /\\.(xml|rss|atom|txt|md)$/.test(href);\n}\n\n/**\n * Check if the click event should be handled by the browser (modifier keys, etc.)\n */\nexport function isModifiedClick(e: React.MouseEvent, target?: string): boolean {\n\treturn (\n\t\te.defaultPrevented ||\n\t\te.button !== 0 ||\n\t\te.ctrlKey ||\n\t\te.metaKey ||\n\t\te.shiftKey ||\n\t\te.altKey ||\n\t\ttarget === '_blank'\n\t);\n}\n\n/**\n * Get or initialize the global reroute data store.\n */\nexport function getRerouteDataStore(): Record<string, Any> {\n\tif (typeof window === 'undefined') return {};\n\tconst w = window as Any;\n\tw.__REROUTE_DATA__ = w.__REROUTE_DATA__ || {};\n\treturn w.__REROUTE_DATA__;\n}\n\n/**\n * Dispatch a reroute data event to notify listeners of new data.\n */\nexport function dispatchDataEvent(detail: {\n\tkey?: string;\n\tkeys?: string[];\n}): void {\n\tif (typeof window === 'undefined') return;\n\ttry {\n\t\twindow.dispatchEvent(new CustomEvent('__reroute_data__', { detail }));\n\t} catch {}\n}\n\n/**\n * Store prefetched data and dispatch appropriate events.\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: thats fine\nexport function storeAndDispatchData(\n\tpath: string,\n\tpayload: Any,\n\tsilent = false,\n): void {\n\tif (!payload || typeof payload !== 'object') return;\n\n\tconst store = getRerouteDataStore();\n\n\tif (payload.__reroute_multiple__ === true) {\n\t\t// Multiple data sources: store each at its specific key\n\t\tconst keys = Object.keys(payload).filter(\n\t\t\t(k) => k !== '__reroute_multiple__',\n\t\t);\n\t\tfor (const key of keys) {\n\t\t\tstore[key] = payload[key];\n\t\t}\n\t\tif (!silent) dispatchDataEvent({ keys });\n\t} else if (\n\t\tpayload.__flatten__ === true ||\n\t\tpayload.__reroute_flattened__ === true\n\t) {\n\t\t// Flattened response: store each key individually\n\t\tconst keys = Object.keys(payload).filter(\n\t\t\t(k) => k !== '__flatten__' && k !== '__reroute_flattened__',\n\t\t);\n\t\tfor (const key of keys) {\n\t\t\tstore[key] = payload[key];\n\t\t}\n\t\t// A page's own data can sit at its path (`/` answers `{ '/': … }`): the\n\t\t// wrapper must not replace it, or a lazy marker there is never fetched.\n\t\tif (!keys.includes(path)) store[path] = payload;\n\t\tif (!silent)\n\t\t\tdispatchDataEvent({\n\t\t\t\tkeys: keys.includes(path) ? keys : [...keys, path],\n\t\t\t});\n\t} else {\n\t\t// Single data source\n\t\tstore[path] = payload;\n\t\tif (!silent) dispatchDataEvent({ key: path });\n\t}\n}\n\n/**\n * Check if a route needs data prefetching: dynamic routes and routes whose\n * server computes data (ssr.data), unless the data is already in the store.\n * With the data in hand, navigation renders at once instead of suspending\n * (React holds a revealed Suspense fallback for ~300ms, which reads as a\n * flicker). A slow route still shows its skeleton: the click waits only\n * briefly before navigating (prefetchRouteDataWithTimeout).\n */\nexport function needsDataPrefetch(\n\tpath: string,\n\tinferred: InferredContent | undefined,\n\tmatchRoute?: MatchRouteFn,\n): boolean {\n\t// Content pages have their own loading mechanism. An inferred entry\n\t// without a module is likely a false positive from the resolver.\n\tif (inferred?.module !== undefined) return false;\n\n\tif (getRerouteDataStore()[path] !== undefined) return false;\n\n\tconst route = matchRoute?.(path)?.route as Any;\n\treturn !!route?.hasSsr || !!route?.isDynamic;\n}\n\n/**\n * The server answers `{ [path]: data }` for a route's own data; the store\n * keeps the data itself at `path` (as useData does). Layout and flattened\n * responses carry their own markers and pass through.\n */\nexport function unwrapRouteData(path: string, data: Any): Any {\n\tif (!data || typeof data !== 'object') return data;\n\tconst keys = Object.keys(data);\n\treturn keys.length === 1 && keys[0] === path ? data[path] : data;\n}\n\n/**\n * Fetch route data from the server.\n */\nexport async function fetchRouteData(\n\tpath: string,\n\tsignal?: AbortSignal,\n): Promise<Any | null> {\n\ttry {\n\t\tconst json = await readRouteAnswer(\n\t\t\tawait fetch(routeDataUrl(path), {\n\t\t\t\theaders: { Accept: 'application/json' },\n\t\t\t\tcredentials: 'same-origin',\n\t\t\t\tsignal,\n\t\t\t}),\n\t\t);\n\t\tif (!json) return null;\n\t\tconst data = json?.data ?? json;\n\n\t\t// Handle lazy loading marker for streaming routes\n\t\tif (data?.__lazy__ === true && data?.__fetch__) {\n\t\t\tconst secondJson = await readRouteAnswer(\n\t\t\t\tawait fetch(data.__fetch__, {\n\t\t\t\t\theaders: { Accept: 'application/json' },\n\t\t\t\t\tcredentials: 'same-origin',\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t);\n\t\t\tif (!secondJson) return null;\n\t\t\treturn unwrapRouteData(path, secondJson?.data ?? secondJson);\n\t\t}\n\n\t\treturn unwrapRouteData(path, data);\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/**\n * A route with async `ssr.data` answers with a lazy marker at its path:\n * fetch what it points at now, so a prefetch stores the page's data and not\n * the marker. The request sits where useData looks for it, so a render that\n * finds the marker first waits on it instead of sending its own.\n */\nfunction resolvePageMarker(path: string, silent: boolean): Promise<void> {\n\tconst store = getRerouteDataStore();\n\tconst marker = store[path];\n\tif (!isLazyLoadMarker(marker)) return Promise.resolve();\n\tconst w = window as Any;\n\tw.__REROUTE_LAZY_PENDING__ = w.__REROUTE_LAZY_PENDING__ || {};\n\tconst pending = w.__REROUTE_LAZY_PENDING__;\n\tconst url = marker.__fetch__;\n\tif (!pending[url]) {\n\t\tpending[url] = fetch(url, {\n\t\t\theaders: { Accept: 'application/json' },\n\t\t\tcredentials: 'same-origin',\n\t\t})\n\t\t\t.then(readRouteAnswer)\n\t\t\t.then((json) => {\n\t\t\t\t// A failed answer keeps the marker: useData fetches it on render.\n\t\t\t\tif (!json || store[path] !== marker) return json?.data;\n\t\t\t\tstore[path] = json.data ?? json;\n\t\t\t\tif (!silent) dispatchDataEvent({ key: path });\n\t\t\t\treturn json.data;\n\t\t\t})\n\t\t\t.catch(() => undefined)\n\t\t\t.finally(() => {\n\t\t\t\tdelete pending[url];\n\t\t\t});\n\t}\n\treturn pending[url].then(() => undefined);\n}\n\nconst inflight = new Map<string, Promise<void>>();\n\n/**\n * Fetch and store a route's data once: a hover and the click after it share\n * the same request.\n */\nfunction loadRouteData(path: string, silent: boolean): Promise<void> {\n\tlet pending = inflight.get(path);\n\tif (!pending) {\n\t\tpending = fetchRouteData(path)\n\t\t\t.then((payload) => {\n\t\t\t\tif (!payload) return;\n\t\t\t\tstoreAndDispatchData(path, payload, silent);\n\t\t\t\treturn resolvePageMarker(path, silent);\n\t\t\t})\n\t\t\t.finally(() => inflight.delete(path));\n\t\tinflight.set(path, pending);\n\t}\n\treturn pending;\n}\n\n/**\n * Prefetch route data and store it (fire-and-forget).\n */\nexport function prefetchRouteData(path: string, silent = false): void {\n\tvoid loadRouteData(path, silent);\n}\n\n/**\n * Wait for route data on click, at most `timeoutMs`; a slower route\n * navigates and shows its loading state while the request finishes.\n */\nexport async function prefetchRouteDataWithTimeout(\n\tpath: string,\n\ttimeoutMs = 350,\n): Promise<void> {\n\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\tawait Promise.race([\n\t\tloadRouteData(path, false),\n\t\tnew Promise<void>((resolve) => {\n\t\t\ttimer = setTimeout(resolve, timeoutMs);\n\t\t}),\n\t]);\n\tclearTimeout(timer);\n}\n\n/**\n * Prefetch content module by loading the collection and finding the item.\n */\nexport async function prefetchContentModule(\n\tinferred: InferredContent,\n\tcontentIndex: Any,\n\tensureCollection: EnsureCollectionFn,\n): Promise<void> {\n\t// Only try to load collections we already know exist\n\tconst isKnownCollection =\n\t\tcontentIndex && inferred.collection in (contentIndex as Any);\n\tif (!isKnownCollection) return;\n\n\ttry {\n\t\tconst items = await ensureCollection(inferred.collection);\n\t\tconst found = (items || []).find(\n\t\t\t(item: Any) => item?.name === inferred.name,\n\t\t);\n\t\tconst mod = (found as Any)?.module as string | undefined;\n\t\tif (mod) {\n\t\t\tprefetchContent({ ...inferred, module: mod });\n\t\t}\n\t} catch {}\n}\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\tscroll,\n\tprefetch = true,\n\tfragment,\n\tonClick,\n\tonMouseEnter,\n\tonFocus,\n\tdraggable = false,\n\t...props\n}: LinkProps) {\n\tconst routerContext = useContext(RouterContext);\n\tconst router = useRouter();\n\tconst resolver = useContentResolver();\n\tconst contentIndex = useContentIndex();\n\tconst ensureCollection = useContentLoadCollection();\n\tconst { localizePath, enabled: i18nEnabled } = useLocaleContext();\n\n\tconst hasRouter = !!routerContext;\n\n\tconst { navigate, matchRoute } = router || {\n\t\tnavigate: () => {},\n\t\tmatchRoute: () => null,\n\t};\n\n\t// Auto-insert locale segment on content links when i18n is active\n\tconst resolvedTo = useMemo(\n\t\t() => (i18nEnabled ? localizePath(String(to)) : String(to)),\n\t\t[i18nEnabled, localizePath, to],\n\t);\n\n\tconst inferred = useMemo(\n\t\t() => (resolver ? resolver(resolvedTo) : undefined),\n\t\t[resolver, resolvedTo],\n\t);\n\n\t// Handle same-route navigation (scroll to hash or top)\n\tconst handleSameRouteNavigation = useCallback(\n\t\t(localUrl: LocalUrl): boolean => {\n\t\t\tconst currentPath = window.location.pathname + window.location.search;\n\t\t\tif (localUrl.fullPath !== currentPath) return false;\n\n\t\t\tconst hashToScroll = fragment || localUrl.hash;\n\t\t\tif (hashToScroll) {\n\t\t\t\twindow.history.pushState(\n\t\t\t\t\t{},\n\t\t\t\t\t'',\n\t\t\t\t\t`${localUrl.fullPath}#${hashToScroll}`,\n\t\t\t\t);\n\t\t\t\tconst element = document.getElementById(hashToScroll);\n\t\t\t\tif (element) {\n\t\t\t\t\telement.scrollIntoView({ behavior: 'smooth' });\n\t\t\t\t} else {\n\t\t\t\t\tnavigate(fragment ? `${resolvedTo}#${fragment}` : resolvedTo, {\n\t\t\t\t\t\treplace,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tscroll,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twindow.scrollTo({ top: 0, behavior: 'smooth' });\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\t[fragment, navigate, replace, state, scroll, resolvedTo],\n\t);\n\n\t// Trigger content or data prefetch based on link type\n\tconst triggerPrefetch = useCallback(\n\t\t(\n\t\t\tlocalUrl: LocalUrl,\n\t\t\toptions?: { withTimeout?: boolean; silent?: boolean },\n\t\t): Promise<void> | undefined => {\n\t\t\t// The route's code, so it renders on its first frame\n\t\t\tpreloadRouteComponent(matchRoute?.(localUrl.path)?.route?.component);\n\t\t\t// Check for dynamic routes with ssr.data() FIRST\n\t\t\t// This prevents incorrectly treating them as content pages\n\t\t\tif (needsDataPrefetch(localUrl.path, inferred, matchRoute)) {\n\t\t\t\t// A click waits (briefly) for the data so the route doesn't suspend\n\t\t\t\tif (options?.withTimeout) {\n\t\t\t\t\treturn prefetchRouteDataWithTimeout(localUrl.path);\n\t\t\t\t}\n\t\t\t\tprefetchRouteData(localUrl.path, options?.silent);\n\t\t\t} else if (inferred?.module) {\n\t\t\t\tprefetchContent(inferred);\n\t\t\t} else if (\n\t\t\t\tinferred &&\n\t\t\t\t!inferred.module &&\n\t\t\t\tensureCollection &&\n\t\t\t\tcontentIndex\n\t\t\t) {\n\t\t\t\tprefetchContentModule(inferred, contentIndex, ensureCollection);\n\t\t\t}\n\t\t},\n\t\t[inferred, ensureCollection, contentIndex, matchRoute],\n\t);\n\n\tconst handleClick = useCallback(\n\t\tasync (e: React.MouseEvent<HTMLAnchorElement>) => {\n\t\t\tonClick?.(e);\n\n\t\t\tif (!hasRouter) return;\n\t\t\tif (isModifiedClick(e, props.target)) return;\n\t\t\tif (shouldSkipInterception(resolvedTo)) return;\n\n\t\t\te.preventDefault();\n\n\t\t\tconst localUrl = parseLocalUrl(resolvedTo);\n\t\t\tif (localUrl && handleSameRouteNavigation(localUrl)) return;\n\n\t\t\tif (prefetch && localUrl) {\n\t\t\t\tawait triggerPrefetch(localUrl, { withTimeout: true });\n\t\t\t}\n\n\t\t\tnavigate(fragment ? `${resolvedTo}#${fragment}` : resolvedTo, {\n\t\t\t\treplace,\n\t\t\t\tstate,\n\t\t\t\tscroll,\n\t\t\t});\n\t\t},\n\t\t[\n\t\t\tonClick,\n\t\t\thasRouter,\n\t\t\tprops.target,\n\t\t\tresolvedTo,\n\t\t\thandleSameRouteNavigation,\n\t\t\tprefetch,\n\t\t\ttriggerPrefetch,\n\t\t\tnavigate,\n\t\t\tfragment,\n\t\t\treplace,\n\t\t\tstate,\n\t\t\tscroll,\n\t\t],\n\t);\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLAnchorElement>) => {\n\t\t\tif (prefetch) {\n\t\t\t\tconst localUrl = parseLocalUrl(resolvedTo);\n\t\t\t\t// Prefetch silently to prevent scroll-to-top on hover\n\t\t\t\t// Data is stored but components don't update until navigation\n\t\t\t\tif (localUrl) triggerPrefetch(localUrl, { silent: true });\n\t\t\t}\n\t\t\tonMouseEnter?.(e);\n\t\t},\n\t\t[prefetch, resolvedTo, triggerPrefetch, onMouseEnter],\n\t);\n\n\tconst handleFocus = useCallback(\n\t\t(e: React.FocusEvent<HTMLAnchorElement>) => {\n\t\t\tif (prefetch) {\n\t\t\t\tconst localUrl = parseLocalUrl(resolvedTo);\n\t\t\t\t// Silent prefetch on focus to avoid scroll during keyboard navigation\n\t\t\t\tif (localUrl) triggerPrefetch(localUrl, { silent: true });\n\t\t\t}\n\t\t\tonFocus?.(e);\n\t\t},\n\t\t[prefetch, resolvedTo, triggerPrefetch, onFocus],\n\t);\n\n\tconst href = fragment ? `${resolvedTo}#${fragment}` : resolvedTo;\n\n\treturn (\n\t\t<a\n\t\t\thref={href}\n\t\t\tonClick={handleClick}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonFocus={handleFocus}\n\t\t\tdraggable={draggable}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Link };\n",
30
+ "import { useCallback, useContext, useMemo } from 'react';\nimport { useRouter } from '../hooks';\nimport { prefetchContent } from '../hooks/useContent';\nimport { isLazyLoadMarker, wouldUnload } from '../hooks/useData';\nimport { useLocaleContext } from '../i18n/LocaleProvider';\nimport { readRouteAnswer } from '../lib/head';\nimport { preloadRouteComponent } from '../lib/lazy-route';\nimport { routeDataUrl } from '../lib/static-data';\nimport {\n\tuseContentIndex,\n\tuseContentLoadCollection,\n\tuseContentResolver,\n} from '../providers/ContentProvider';\nimport { RouterContext } from '../providers/RouterProvider';\nimport type { Any } from '../types/any';\nimport type { LinkProps } from '../types/router';\n\ninterface LocalUrl {\n\tpath: string;\n\thash: string;\n\tfullPath: string;\n}\n\ninterface InferredContent {\n\tmodule?: string;\n\tcollection: string;\n\tname: string;\n}\n\ntype MatchRouteFn = (\n\tpath: string,\n) => { route?: { isDynamic?: boolean } } | null;\ntype EnsureCollectionFn = (collection: string) => Promise<Any[] | undefined>;\n\n/**\n * Parse a URL and return local path info if same-origin, null otherwise.\n */\nexport function parseLocalUrl(to: string): LocalUrl | null {\n\tif (typeof window === 'undefined') return null;\n\ttry {\n\t\tconst url = new URL(String(to), window.location.origin);\n\t\tif (url.origin !== window.location.origin) return null;\n\t\treturn {\n\t\t\tpath: url.pathname,\n\t\t\thash: url.hash.slice(1),\n\t\t\tfullPath: url.pathname + url.search,\n\t\t};\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/**\n * Check if a link should skip client-side interception (RSS, sitemap,\n * robots and llms text files): the server answers them, never a route.\n */\nexport function shouldSkipInterception(href: string): boolean {\n\treturn /\\.(xml|rss|atom|txt|md)$/.test(href);\n}\n\n/**\n * Check if the click event should be handled by the browser (modifier keys, etc.)\n */\nexport function isModifiedClick(e: React.MouseEvent, target?: string): boolean {\n\treturn (\n\t\te.defaultPrevented ||\n\t\te.button !== 0 ||\n\t\te.ctrlKey ||\n\t\te.metaKey ||\n\t\te.shiftKey ||\n\t\te.altKey ||\n\t\ttarget === '_blank'\n\t);\n}\n\n/**\n * Get or initialize the global reroute data store.\n */\nexport function getRerouteDataStore(): Record<string, Any> {\n\tif (typeof window === 'undefined') return {};\n\tconst w = window as Any;\n\tw.__REROUTE_DATA__ = w.__REROUTE_DATA__ || {};\n\treturn w.__REROUTE_DATA__;\n}\n\n/**\n * Dispatch a reroute data event to notify listeners of new data.\n */\nexport function dispatchDataEvent(detail: {\n\tkey?: string;\n\tkeys?: string[];\n}): void {\n\tif (typeof window === 'undefined') return;\n\ttry {\n\t\twindow.dispatchEvent(new CustomEvent('__reroute_data__', { detail }));\n\t} catch {}\n}\n\n/**\n * Store prefetched data and dispatch appropriate events.\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: thats fine\nexport function storeAndDispatchData(\n\tpath: string,\n\tpayload: Any,\n\tsilent = false,\n): void {\n\tif (!payload || typeof payload !== 'object') return;\n\n\tconst store = getRerouteDataStore();\n\n\tif (payload.__reroute_multiple__ === true) {\n\t\t// Multiple data sources: store each at its specific key\n\t\tconst keys = Object.keys(payload).filter(\n\t\t\t(k) => k !== '__reroute_multiple__',\n\t\t);\n\t\tfor (const key of keys) {\n\t\t\tif (!wouldUnload(store[key], payload[key])) store[key] = payload[key];\n\t\t}\n\t\tif (!silent) dispatchDataEvent({ keys });\n\t} else if (\n\t\tpayload.__flatten__ === true ||\n\t\tpayload.__reroute_flattened__ === true\n\t) {\n\t\t// Flattened response: store each key individually\n\t\tconst keys = Object.keys(payload).filter(\n\t\t\t(k) => k !== '__flatten__' && k !== '__reroute_flattened__',\n\t\t);\n\t\tfor (const key of keys) {\n\t\t\tif (!wouldUnload(store[key], payload[key])) store[key] = payload[key];\n\t\t}\n\t\t// A page's own data can sit at its path (`/` answers `{ '/': … }`): the\n\t\t// wrapper must not replace it, or a lazy marker there is never fetched.\n\t\tif (!keys.includes(path)) store[path] = payload;\n\t\tif (!silent)\n\t\t\tdispatchDataEvent({\n\t\t\t\tkeys: keys.includes(path) ? keys : [...keys, path],\n\t\t\t});\n\t} else {\n\t\t// Single data source\n\t\tstore[path] = payload;\n\t\tif (!silent) dispatchDataEvent({ key: path });\n\t}\n}\n\n/**\n * Check if a route needs data prefetching: dynamic routes and routes whose\n * server computes data (ssr.data), unless the data is already in the store.\n * With the data in hand, navigation renders at once instead of suspending\n * (React holds a revealed Suspense fallback for ~300ms, which reads as a\n * flicker). A slow route still shows its skeleton: the click waits only\n * briefly before navigating (prefetchRouteDataWithTimeout).\n */\nexport function needsDataPrefetch(\n\tpath: string,\n\tinferred: InferredContent | undefined,\n\tmatchRoute?: MatchRouteFn,\n): boolean {\n\t// Content pages have their own loading mechanism. An inferred entry\n\t// without a module is likely a false positive from the resolver.\n\tif (inferred?.module !== undefined) return false;\n\n\tif (getRerouteDataStore()[path] !== undefined) return false;\n\n\tconst route = matchRoute?.(path)?.route as Any;\n\treturn !!route?.hasSsr || !!route?.isDynamic;\n}\n\n/**\n * The server answers `{ [path]: data }` for a route's own data; the store\n * keeps the data itself at `path` (as useData does). Layout and flattened\n * responses carry their own markers and pass through.\n */\nexport function unwrapRouteData(path: string, data: Any): Any {\n\tif (!data || typeof data !== 'object') return data;\n\tconst keys = Object.keys(data);\n\treturn keys.length === 1 && keys[0] === path ? data[path] : data;\n}\n\n/**\n * Fetch route data from the server.\n */\nexport async function fetchRouteData(\n\tpath: string,\n\tsignal?: AbortSignal,\n): Promise<Any | null> {\n\ttry {\n\t\tconst json = await readRouteAnswer(\n\t\t\tawait fetch(routeDataUrl(path), {\n\t\t\t\theaders: { Accept: 'application/json' },\n\t\t\t\tcredentials: 'same-origin',\n\t\t\t\tsignal,\n\t\t\t}),\n\t\t);\n\t\tif (!json) return null;\n\t\tconst data = json?.data ?? json;\n\n\t\t// Handle lazy loading marker for streaming routes\n\t\tif (data?.__lazy__ === true && data?.__fetch__) {\n\t\t\tconst secondJson = await readRouteAnswer(\n\t\t\t\tawait fetch(data.__fetch__, {\n\t\t\t\t\theaders: { Accept: 'application/json' },\n\t\t\t\t\tcredentials: 'same-origin',\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t);\n\t\t\tif (!secondJson) return null;\n\t\t\treturn unwrapRouteData(path, secondJson?.data ?? secondJson);\n\t\t}\n\n\t\treturn unwrapRouteData(path, data);\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/**\n * A route with async `ssr.data` answers with a lazy marker at its path:\n * fetch what it points at now, so a prefetch stores the page's data and not\n * the marker. The request sits where useData looks for it, so a render that\n * finds the marker first waits on it instead of sending its own.\n */\nfunction resolvePageMarker(path: string, silent: boolean): Promise<void> {\n\tconst store = getRerouteDataStore();\n\tconst marker = store[path];\n\tif (!isLazyLoadMarker(marker)) return Promise.resolve();\n\tconst w = window as Any;\n\tw.__REROUTE_LAZY_PENDING__ = w.__REROUTE_LAZY_PENDING__ || {};\n\tconst pending = w.__REROUTE_LAZY_PENDING__;\n\tconst url = marker.__fetch__;\n\tif (!pending[url]) {\n\t\tpending[url] = fetch(url, {\n\t\t\theaders: { Accept: 'application/json' },\n\t\t\tcredentials: 'same-origin',\n\t\t})\n\t\t\t.then(readRouteAnswer)\n\t\t\t.then((json) => {\n\t\t\t\t// A failed answer keeps the marker: useData fetches it on render.\n\t\t\t\tif (!json || store[path] !== marker) return json?.data;\n\t\t\t\tstore[path] = json.data ?? json;\n\t\t\t\tif (!silent) dispatchDataEvent({ key: path });\n\t\t\t\treturn json.data;\n\t\t\t})\n\t\t\t.catch(() => undefined)\n\t\t\t.finally(() => {\n\t\t\t\tdelete pending[url];\n\t\t\t});\n\t}\n\treturn pending[url].then(() => undefined);\n}\n\nconst inflight = new Map<string, Promise<void>>();\n\n/**\n * Fetch and store a route's data once: a hover and the click after it share\n * the same request.\n */\nfunction loadRouteData(path: string, silent: boolean): Promise<void> {\n\tlet pending = inflight.get(path);\n\tif (!pending) {\n\t\tpending = fetchRouteData(path)\n\t\t\t.then((payload) => {\n\t\t\t\tif (!payload) return;\n\t\t\t\tstoreAndDispatchData(path, payload, silent);\n\t\t\t\treturn resolvePageMarker(path, silent);\n\t\t\t})\n\t\t\t.finally(() => inflight.delete(path));\n\t\tinflight.set(path, pending);\n\t}\n\treturn pending;\n}\n\n/**\n * Prefetch route data and store it (fire-and-forget).\n */\nexport function prefetchRouteData(path: string, silent = false): void {\n\tvoid loadRouteData(path, silent);\n}\n\n/**\n * Wait for route data on click, at most `timeoutMs`; a slower route\n * navigates and shows its loading state while the request finishes.\n */\nexport async function prefetchRouteDataWithTimeout(\n\tpath: string,\n\ttimeoutMs = 350,\n): Promise<void> {\n\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\tawait Promise.race([\n\t\tloadRouteData(path, false),\n\t\tnew Promise<void>((resolve) => {\n\t\t\ttimer = setTimeout(resolve, timeoutMs);\n\t\t}),\n\t]);\n\tclearTimeout(timer);\n}\n\n/**\n * Prefetch content module by loading the collection and finding the item.\n */\nexport async function prefetchContentModule(\n\tinferred: InferredContent,\n\tcontentIndex: Any,\n\tensureCollection: EnsureCollectionFn,\n): Promise<void> {\n\t// Only try to load collections we already know exist\n\tconst isKnownCollection =\n\t\tcontentIndex && inferred.collection in (contentIndex as Any);\n\tif (!isKnownCollection) return;\n\n\ttry {\n\t\tconst items = await ensureCollection(inferred.collection);\n\t\tconst found = (items || []).find(\n\t\t\t(item: Any) => item?.name === inferred.name,\n\t\t);\n\t\tconst mod = (found as Any)?.module as string | undefined;\n\t\tif (mod) {\n\t\t\tprefetchContent({ ...inferred, module: mod });\n\t\t}\n\t} catch {}\n}\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\tscroll,\n\tprefetch = true,\n\tfragment,\n\tonClick,\n\tonMouseEnter,\n\tonFocus,\n\tdraggable = false,\n\t...props\n}: LinkProps) {\n\tconst routerContext = useContext(RouterContext);\n\tconst router = useRouter();\n\tconst resolver = useContentResolver();\n\tconst contentIndex = useContentIndex();\n\tconst ensureCollection = useContentLoadCollection();\n\tconst { localizePath, enabled: i18nEnabled } = useLocaleContext();\n\n\tconst hasRouter = !!routerContext;\n\n\tconst { navigate, matchRoute } = router || {\n\t\tnavigate: () => {},\n\t\tmatchRoute: () => null,\n\t};\n\n\t// Auto-insert locale segment on content links when i18n is active\n\tconst resolvedTo = useMemo(\n\t\t() => (i18nEnabled ? localizePath(String(to)) : String(to)),\n\t\t[i18nEnabled, localizePath, to],\n\t);\n\n\tconst inferred = useMemo(\n\t\t() => (resolver ? resolver(resolvedTo) : undefined),\n\t\t[resolver, resolvedTo],\n\t);\n\n\t// Handle same-route navigation (scroll to hash or top)\n\tconst handleSameRouteNavigation = useCallback(\n\t\t(localUrl: LocalUrl): boolean => {\n\t\t\tconst currentPath = window.location.pathname + window.location.search;\n\t\t\tif (localUrl.fullPath !== currentPath) return false;\n\n\t\t\tconst hashToScroll = fragment || localUrl.hash;\n\t\t\tif (hashToScroll) {\n\t\t\t\twindow.history.pushState(\n\t\t\t\t\t{},\n\t\t\t\t\t'',\n\t\t\t\t\t`${localUrl.fullPath}#${hashToScroll}`,\n\t\t\t\t);\n\t\t\t\tconst element = document.getElementById(hashToScroll);\n\t\t\t\tif (element) {\n\t\t\t\t\telement.scrollIntoView({ behavior: 'smooth' });\n\t\t\t\t} else {\n\t\t\t\t\tnavigate(fragment ? `${resolvedTo}#${fragment}` : resolvedTo, {\n\t\t\t\t\t\treplace,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tscroll,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twindow.scrollTo({ top: 0, behavior: 'smooth' });\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\t[fragment, navigate, replace, state, scroll, resolvedTo],\n\t);\n\n\t// Trigger content or data prefetch based on link type\n\tconst triggerPrefetch = useCallback(\n\t\t(\n\t\t\tlocalUrl: LocalUrl,\n\t\t\toptions?: { withTimeout?: boolean; silent?: boolean },\n\t\t): Promise<void> | undefined => {\n\t\t\t// The route's code, so it renders on its first frame\n\t\t\tpreloadRouteComponent(matchRoute?.(localUrl.path)?.route?.component);\n\t\t\t// Check for dynamic routes with ssr.data() FIRST\n\t\t\t// This prevents incorrectly treating them as content pages\n\t\t\tif (needsDataPrefetch(localUrl.path, inferred, matchRoute)) {\n\t\t\t\t// A click waits (briefly) for the data so the route doesn't suspend\n\t\t\t\tif (options?.withTimeout) {\n\t\t\t\t\treturn prefetchRouteDataWithTimeout(localUrl.path);\n\t\t\t\t}\n\t\t\t\tprefetchRouteData(localUrl.path, options?.silent);\n\t\t\t} else if (inferred?.module) {\n\t\t\t\tprefetchContent(inferred);\n\t\t\t} else if (\n\t\t\t\tinferred &&\n\t\t\t\t!inferred.module &&\n\t\t\t\tensureCollection &&\n\t\t\t\tcontentIndex\n\t\t\t) {\n\t\t\t\tprefetchContentModule(inferred, contentIndex, ensureCollection);\n\t\t\t}\n\t\t},\n\t\t[inferred, ensureCollection, contentIndex, matchRoute],\n\t);\n\n\tconst handleClick = useCallback(\n\t\tasync (e: React.MouseEvent<HTMLAnchorElement>) => {\n\t\t\tonClick?.(e);\n\n\t\t\tif (!hasRouter) return;\n\t\t\tif (isModifiedClick(e, props.target)) return;\n\t\t\tif (shouldSkipInterception(resolvedTo)) return;\n\n\t\t\te.preventDefault();\n\n\t\t\tconst localUrl = parseLocalUrl(resolvedTo);\n\t\t\tif (localUrl && handleSameRouteNavigation(localUrl)) return;\n\n\t\t\tif (prefetch && localUrl) {\n\t\t\t\tawait triggerPrefetch(localUrl, { withTimeout: true });\n\t\t\t}\n\n\t\t\tnavigate(fragment ? `${resolvedTo}#${fragment}` : resolvedTo, {\n\t\t\t\treplace,\n\t\t\t\tstate,\n\t\t\t\tscroll,\n\t\t\t});\n\t\t},\n\t\t[\n\t\t\tonClick,\n\t\t\thasRouter,\n\t\t\tprops.target,\n\t\t\tresolvedTo,\n\t\t\thandleSameRouteNavigation,\n\t\t\tprefetch,\n\t\t\ttriggerPrefetch,\n\t\t\tnavigate,\n\t\t\tfragment,\n\t\t\treplace,\n\t\t\tstate,\n\t\t\tscroll,\n\t\t],\n\t);\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLAnchorElement>) => {\n\t\t\tif (prefetch) {\n\t\t\t\tconst localUrl = parseLocalUrl(resolvedTo);\n\t\t\t\t// Prefetch silently to prevent scroll-to-top on hover\n\t\t\t\t// Data is stored but components don't update until navigation\n\t\t\t\tif (localUrl) triggerPrefetch(localUrl, { silent: true });\n\t\t\t}\n\t\t\tonMouseEnter?.(e);\n\t\t},\n\t\t[prefetch, resolvedTo, triggerPrefetch, onMouseEnter],\n\t);\n\n\tconst handleFocus = useCallback(\n\t\t(e: React.FocusEvent<HTMLAnchorElement>) => {\n\t\t\tif (prefetch) {\n\t\t\t\tconst localUrl = parseLocalUrl(resolvedTo);\n\t\t\t\t// Silent prefetch on focus to avoid scroll during keyboard navigation\n\t\t\t\tif (localUrl) triggerPrefetch(localUrl, { silent: true });\n\t\t\t}\n\t\t\tonFocus?.(e);\n\t\t},\n\t\t[prefetch, resolvedTo, triggerPrefetch, onFocus],\n\t);\n\n\tconst href = fragment ? `${resolvedTo}#${fragment}` : resolvedTo;\n\n\treturn (\n\t\t<a\n\t\t\thref={href}\n\t\t\tonClick={handleClick}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonFocus={handleFocus}\n\t\t\tdraggable={draggable}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Link };\n",
31
31
  "import {\n\ttype ComponentType,\n\tcreateElement,\n\ttype ReactNode,\n\tSuspense,\n\tuse,\n\tuseEffect,\n\tuseState,\n\tuseSyncExternalStore,\n} from 'react';\nimport type { Any } from '../types/any';\n\nconst isBrowser = typeof window !== 'undefined';\n\nconst routeWrapperProps = {\n\t'data-reroute-route': 'ssr',\n\tstyle: { display: 'contents' },\n} as const;\n\nconst subscribeNever = () => () => {};\n\n/** True only while React hydrates server HTML (it reads the server snapshot then). */\nfunction useIsHydrating(): boolean {\n\treturn useSyncExternalStore(\n\t\tsubscribeNever,\n\t\t() => false,\n\t\t() => true,\n\t);\n}\n\n/**\n * The same shell on server and client: a wrapper plus a Suspense boundary.\n * The server HTML then carries the boundary, so on first load React keeps that\n * HTML on screen while the route chunk downloads and hydrates it in place;\n * nothing is torn down and rebuilt. A chunk download never suspends on a\n * client navigation: the route shows its fallback itself, so content lands the\n * moment its chunk does (React holds a revealed Suspense fallback for ~300ms).\n * What suspends there is a loaded page waiting for its data (`useData`), and\n * the boundary shows the same fallback for it rather than an empty screen.\n */\nfunction routeShell(content: ReactNode, fallback: ReactNode): ReactNode {\n\treturn createElement(\n\t\t'div',\n\t\trouteWrapperProps,\n\t\tcreateElement(Suspense, { fallback }, content),\n\t);\n}\n\n/**\n * Creates a route component that:\n * - Renders `component` right away when the bundle already has it (the server\n * always passes it; the generated route tables pass it on the client too,\n * since they import every route module for its ssr and meta)\n * - Otherwise lazy-loads on the client and hydrates the server HTML in place\n * once its chunk arrives\n */\nexport function createLazyRoute(\n\tlazyImport: () => Promise<{ default: ComponentType<Any> }>,\n\troutePattern: string,\n\tcomponent?: ComponentType<Any>,\n\tFallback?: ComponentType<Any>,\n): ComponentType<Any> {\n\tif (!isBrowser) {\n\t\tif (!component) {\n\t\t\t// Client-only lazy routes may be imported during SSR module init; fail on render.\n\t\t\treturn function MissingServerRoute() {\n\t\t\t\tthrow new Error(`Missing SSR component for route ${routePattern}`);\n\t\t\t};\n\t\t}\n\t\tconst Component = component;\n\t\tfunction ServerRoute(props: Any) {\n\t\t\treturn routeShell(createElement(Component, props), null);\n\t\t}\n\t\tServerRoute.displayName = `LazyRoute(${routePattern})`;\n\t\treturn ServerRoute;\n\t}\n\n\t// Once loaded (or handed in up front), the route renders on its first frame\n\t// wherever it mounts; only a download in flight suspends. A route that never\n\t// suspends can't be pushed to its fallback over server HTML while it hydrates.\n\tlet loaded: ComponentType<Any> | null = component ?? null;\n\tlet pending: Promise<ComponentType<Any>> | null = null;\n\n\tfunction load(): Promise<ComponentType<Any>> {\n\t\tpending ??= lazyImport().then(\n\t\t\t(mod) => {\n\t\t\t\tloaded = mod.default;\n\t\t\t\treturn mod.default;\n\t\t\t},\n\t\t\t(error: unknown) => {\n\t\t\t\tpending = null;\n\t\t\t\tthrow error;\n\t\t\t},\n\t\t);\n\t\treturn pending;\n\t}\n\n\tfunction RouteContent(props: Any) {\n\t\tconst hydrating = useIsHydrating();\n\t\tconst [Component, setComponent] = useState(() => loaded);\n\n\t\tuseEffect(() => {\n\t\t\tif (Component) return;\n\t\t\tlet alive = true;\n\t\t\tload().then(\n\t\t\t\t(next) => {\n\t\t\t\t\tif (alive) setComponent(() => next);\n\t\t\t\t},\n\t\t\t\t(error: unknown) => {\n\t\t\t\t\tconsole.error('[reroute] Failed to load route:', error);\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn () => {\n\t\t\t\talive = false;\n\t\t\t};\n\t\t}, [Component]);\n\n\t\tif (Component) return createElement(Component, props);\n\t\tif (hydrating) return createElement(use(load()), props);\n\t\treturn Fallback ? createElement(Fallback) : null;\n\t}\n\n\tfunction ClientRoute(props: Any) {\n\t\treturn routeShell(\n\t\t\tcreateElement(RouteContent, props),\n\t\t\tFallback ? createElement(Fallback) : null,\n\t\t);\n\t}\n\n\tClientRoute.displayName = `LazyRoute(${routePattern})`;\n\t// Links call this on hover so the route renders on its first frame.\n\tClientRoute.preload = () =>\n\t\tload().then(\n\t\t\t() => undefined,\n\t\t\t() => undefined,\n\t\t);\n\treturn ClientRoute;\n}\n\n/**\n * Start downloading a lazy route's chunk ahead of navigation. Components\n * that aren't lazy routes (no `preload`) are ignored.\n */\nexport function preloadRouteComponent(component: unknown): void {\n\tconst preload = (component as { preload?: () => Promise<void> } | undefined)\n\t\t?.preload;\n\tif (typeof preload === 'function') void preload();\n}\n\n/**\n * Preload a route component before navigation\n */\nexport async function preloadRoute(\n\tlazyImport: () => Promise<{ default: ComponentType<Any> }>,\n): Promise<void> {\n\ttry {\n\t\tawait lazyImport();\n\t} catch {\n\t\t// Ignore preload errors\n\t}\n}\n",
32
32
  "/**\n * Markdown component with Streamdown\n *\n * Uses Streamdown - a drop-in replacement for react-markdown designed for AI-powered streaming.\n * Built-in features: GFM, code highlighting, math, mermaid, CJK support, and streaming handling.\n */\n\nimport type { ReactNode } from 'react';\nimport type { StreamdownProps } from 'streamdown';\n// Note: Avoid hooks so this component remains safe to use from\n// content chunks that are bundled separately without duplicating React.\nimport {\n\tdefaultRehypePlugins,\n\tdefaultRemarkPlugins,\n\tStreamdown,\n} from 'streamdown';\n\nexport interface MarkdownProps {\n\t/**\n\t * Markdown content to render\n\t */\n\tchildren: string;\n\n\t/**\n\t * Additional CSS class name\n\t */\n\tclassName?: string;\n\n\t/**\n\t * Custom components to override default HTML elements\n\t */\n\tcomponents?: StreamdownProps['components'];\n\n\t/**\n\t * Additional remark plugins (passed through to Streamdown)\n\t */\n\t// biome-ignore lint/suspicious/noExplicitAny: flexible plugin types\n\tremarkPlugins?: any[];\n\n\t/**\n\t * Additional rehype plugins (passed through to Streamdown)\n\t */\n\t// biome-ignore lint/suspicious/noExplicitAny: flexible plugin types\n\trehypePlugins?: any[];\n\n\t/**\n\t * @deprecated GFM is enabled by default in Streamdown\n\t */\n\tgfm?: boolean;\n\n\t/**\n\t * @deprecated Syntax highlighting is enabled by default in Streamdown\n\t */\n\thighlight?: boolean;\n\n\t/**\n\t * @deprecated Theme is handled by Streamdown\n\t */\n\ttheme?: string;\n\n\t/**\n\t * @deprecated Use Streamdown's built-in security features\n\t */\n\tskipHtml?: boolean;\n}\n\n/**\n * Markdown component for rendering markdown content with Streamdown\n *\n * Streamdown includes built-in support for:\n * - GitHub Flavored Markdown (tables, task lists, strikethrough)\n * - Syntax highlighting with Shiki (interactive code blocks with copy/download)\n * - Mathematical expressions (KaTeX)\n * - Mermaid diagrams\n * - CJK language support\n * - Streaming/incomplete Markdown handling\n *\n * @example\n * ```tsx\n * import { Markdown } from 'reroute-js/react';\n *\n * <Markdown>\n * # Hello World\n * This is **bold** and this is *italic*.\n * </Markdown>\n * ```\n *\n * @example With code blocks (highlighting enabled by default)\n * ```tsx\n * <Markdown>\n * {`\n * # Code Example\n * \\`\\`\\`typescript\n * const greeting = \"Hello, World!\";\n * console.log(greeting);\n * \\`\\`\\`\n * `}\n * </Markdown>\n * ```\n */\nexport function Markdown({\n\tchildren,\n\tclassName,\n\tcomponents,\n\tremarkPlugins = [],\n\trehypePlugins = [],\n}: MarkdownProps): ReactNode {\n\t// Streamdown's defaults carry GFM (tables, task lists, strikethrough) and its\n\t// rehype pipeline; passing a bare array would replace them, so extra plugins\n\t// are added after the defaults instead.\n\tconst finalRemarkPlugins = [\n\t\t...Object.values(defaultRemarkPlugins),\n\t\t...remarkPlugins,\n\t];\n\tconst finalRehypePlugins = [\n\t\t...Object.values(defaultRehypePlugins),\n\t\t...rehypePlugins,\n\t];\n\n\treturn (\n\t\t<div className={className}>\n\t\t\t<Streamdown\n\t\t\t\tremarkPlugins={finalRemarkPlugins}\n\t\t\t\trehypePlugins={finalRehypePlugins}\n\t\t\t\tcomponents={components}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</Streamdown>\n\t\t</div>\n\t);\n}\n",
33
33
  "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",
34
34
  "import type { Any } from '../types/any';\n\nexport interface SearchHeading {\n\tlevel: number;\n\ttext: string;\n\tslug: string;\n}\n\nexport interface CollectionSearchResult {\n\ttotal: number;\n\tpage: number;\n\tpageSize: number;\n\ttotalPages: number;\n\tresults: Array<{\n\t\tid: string;\n\t\tcollection: string;\n\t\tslug: string;\n\t\thref: string;\n\t\ttitle: string;\n\t\texcerpt?: string;\n\t\t/** Headings that matched the search query */\n\t\tmatchedHeadings?: SearchHeading[];\n\t}>;\n}\n\n/**\n * Search content collections during SSR\n *\n * Loads the search index and performs search during SSR.\n * Returns null if no query or no results.\n *\n * @example\n * ```tsx\n * import { collectionSearch } from 'reroute-js/react';\n *\n * const ssr = {\n * async data({ searchParams }) {\n * return await collectionSearch({ searchParams });\n * }\n * };\n * ```\n */\nexport async function collectionSearch(options: {\n\tsearchParams?: URLSearchParams;\n\tpage?: number;\n\tpageSize?: number;\n}): Promise<CollectionSearchResult | null> {\n\tconst { searchParams, page = 1, pageSize = 20 } = options;\n\tconst query = searchParams?.get('q');\n\n\tif (!query) return null;\n\n\ttry {\n\t\t// Load search index directly during SSR\n\t\tconst { join } = await import('node:path');\n\t\tconst cwd =\n\t\t\ttypeof process !== 'undefined' && typeof process.cwd === 'function'\n\t\t\t\t? process.cwd()\n\t\t\t\t: '/';\n\t\tconst indexPath = join(cwd, '.reroute', 'search.json');\n\n\t\tconst file = Bun.file(indexPath);\n\t\tif (!(await file.exists())) return null;\n\n\t\tconst indexData = JSON.parse(await file.text());\n\t\tconst entries = indexData.entries || [];\n\n\t\t// Parse search terms\n\t\tconst terms = query\n\t\t\t.toLowerCase()\n\t\t\t.split(/\\s+/)\n\t\t\t.filter((t: string) => t.length > 1);\n\t\tif (terms.length === 0) return null;\n\n\t\t// Parse collection filter\n\t\tconst collectionsFilter = searchParams\n\t\t\t?.get('collections')\n\t\t\t?.split(',')\n\t\t\t.filter(Boolean);\n\n\t\t// Score and rank entries\n\t\tconst scored = entries\n\t\t\t.filter((entry: Any) => {\n\t\t\t\tif (collectionsFilter && collectionsFilter.length > 0) {\n\t\t\t\t\treturn collectionsFilter.includes(entry.collection);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t})\n\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Collection management with caching and filtering\n\t\t\t.map((entry: Any) => {\n\t\t\t\tlet score = 0;\n\t\t\t\tconst matchedHeadings: SearchHeading[] = [];\n\n\t\t\t\tfor (const term of terms) {\n\t\t\t\t\t// Title match (highest weight)\n\t\t\t\t\tif (entry.title.toLowerCase().includes(term)) {\n\t\t\t\t\t\tscore += 10;\n\t\t\t\t\t\tif (entry.title.toLowerCase() === term) score += 20;\n\t\t\t\t\t}\n\t\t\t\t\t// Heading matches - also collect matched headings\n\t\t\t\t\tfor (const heading of entry.headings || []) {\n\t\t\t\t\t\tif (heading.text.toLowerCase().includes(term)) {\n\t\t\t\t\t\t\tscore += 5;\n\t\t\t\t\t\t\t// Only add each heading once\n\t\t\t\t\t\t\tif (!matchedHeadings.some((h) => h.slug === heading.slug)) {\n\t\t\t\t\t\t\t\tmatchedHeadings.push({\n\t\t\t\t\t\t\t\t\tlevel: heading.level,\n\t\t\t\t\t\t\t\t\ttext: heading.text,\n\t\t\t\t\t\t\t\t\tslug: heading.slug,\n\t\t\t\t\t\t\t\t});\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\t// Meta field matches\n\t\t\t\t\tfor (const value of Object.values(entry.meta || {})) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttypeof value === 'string' &&\n\t\t\t\t\t\t\tvalue.toLowerCase().includes(term)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tscore += 3;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// Content match (if indexed)\n\t\t\t\t\tif (entry.content?.toLowerCase().includes(term)) {\n\t\t\t\t\t\tscore += 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn { entry, score, matchedHeadings };\n\t\t\t})\n\t\t\t.filter((item: Any) => item.score > 0)\n\t\t\t.sort((a: Any, b: Any) => b.score - a.score);\n\n\t\t// Calculate pagination\n\t\tconst total = scored.length;\n\t\tconst startIndex = (page - 1) * pageSize;\n\t\tconst endIndex = startIndex + pageSize;\n\t\tconst paginatedScored = scored.slice(startIndex, endIndex);\n\t\tconst totalPages = Math.ceil(total / pageSize);\n\n\t\t// Map to concise result format\n\t\tconst results = paginatedScored.map((item: Any) => ({\n\t\t\tid: item.entry.id,\n\t\t\tcollection: item.entry.collection,\n\t\t\tslug: item.entry.slug,\n\t\t\thref: item.entry.href,\n\t\t\ttitle: item.entry.title,\n\t\t\texcerpt:\n\t\t\t\titem.entry.excerpt ||\n\t\t\t\tString(\n\t\t\t\t\titem.entry.meta.excerpt || item.entry.meta.description || '',\n\t\t\t\t).slice(0, 160),\n\t\t\tmatchedHeadings: item.matchedHeadings,\n\t\t}));\n\n\t\treturn {\n\t\t\ttotal,\n\t\t\tpage,\n\t\t\tpageSize,\n\t\t\ttotalPages,\n\t\t\tresults,\n\t\t};\n\t} catch (error) {\n\t\tconsole.error('[serverSearch] Error:', error);\n\t\treturn null;\n\t}\n}\n"
35
35
  ],
36
- "mappings": "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",
37
- "debugId": "182FCD9BCCAD48C264756E2164756E21",
36
+ "mappings": "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",
37
+ "debugId": "2FAC573C962AFF9864756E2164756E21",
38
38
  "names": []
39
39
  }