@real-router/react 0.27.0 → 0.27.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/cjs/{Await-whr-pcvo.d.ts → Await-D2oCO8nH.d.ts} +1 -1
  2. package/dist/cjs/{Await-whr-pcvo.d.ts.map → Await-D2oCO8nH.d.ts.map} +1 -1
  3. package/dist/cjs/{HttpStatusProvider-Dh6cMr95.d.ts → HttpStatusProvider-DfsVxZba.d.ts} +1 -1
  4. package/dist/cjs/{HttpStatusProvider-Dh6cMr95.d.ts.map → HttpStatusProvider-DfsVxZba.d.ts.map} +1 -1
  5. package/dist/cjs/{Link-BbOfYYdl.js → Link-CyDwbrFA.js} +2 -2
  6. package/dist/cjs/{Link-BbOfYYdl.js.map → Link-CyDwbrFA.js.map} +1 -1
  7. package/dist/cjs/{RouterErrorBoundary-BlJmaoyr.d.ts → RouterErrorBoundary-3UhUelqY.d.ts} +1 -1
  8. package/dist/cjs/{RouterErrorBoundary-BlJmaoyr.d.ts.map → RouterErrorBoundary-3UhUelqY.d.ts.map} +1 -1
  9. package/dist/cjs/{RouterProvider-mVFghB3a.js → RouterProvider-CPsCmrRw.js} +2 -2
  10. package/dist/cjs/{RouterProvider-mVFghB3a.js.map → RouterProvider-CPsCmrRw.js.map} +1 -1
  11. package/dist/cjs/{RouterProvider-cLYBGwc5.d.ts → RouterProvider-lgNarto1.d.ts} +2 -2
  12. package/dist/cjs/{RouterProvider-cLYBGwc5.d.ts.map → RouterProvider-lgNarto1.d.ts.map} +1 -1
  13. package/dist/cjs/{createHttpStatusSink-D_6IiR5E.js → createHttpStatusSink-ChfBL87y.js} +2 -2
  14. package/dist/cjs/{createHttpStatusSink-D_6IiR5E.js.map → createHttpStatusSink-ChfBL87y.js.map} +1 -1
  15. package/dist/cjs/index.d.ts +4 -4
  16. package/dist/cjs/index.js +1 -1
  17. package/dist/cjs/index.react-server.d.ts +2 -2
  18. package/dist/cjs/ink.d.ts +2 -2
  19. package/dist/cjs/ink.js +1 -1
  20. package/dist/cjs/legacy.d.ts +3 -3
  21. package/dist/cjs/legacy.js +1 -1
  22. package/dist/cjs/legacy.ssr.d.ts +2 -2
  23. package/dist/cjs/legacy.ssr.js +1 -1
  24. package/dist/cjs/ssr.d.ts +3 -3
  25. package/dist/cjs/ssr.js +1 -1
  26. package/dist/cjs/ssr.react-server.d.ts +2 -2
  27. package/dist/cjs/{useDeferred-DE5YUsfa.d.ts → useDeferred-2fAqMTwr.d.ts} +1 -1
  28. package/dist/cjs/{useDeferred-DE5YUsfa.d.ts.map → useDeferred-2fAqMTwr.d.ts.map} +1 -1
  29. package/dist/cjs/useRoute-D2vAzKWM.js +2 -0
  30. package/dist/cjs/{useRoute-Dudo2K_0.js.map → useRoute-D2vAzKWM.js.map} +1 -1
  31. package/dist/cjs/{useRouteEnter-gfy65W0D.d.ts → useRouteEnter-CqO9sPPD.d.ts} +1 -1
  32. package/dist/cjs/{useRouteEnter-gfy65W0D.d.ts.map → useRouteEnter-CqO9sPPD.d.ts.map} +1 -1
  33. package/dist/cjs/{useRouterTransition-BfayPs0h.d.ts → useRouterTransition-D5nwRENd.d.ts} +2 -2
  34. package/dist/cjs/{useRouterTransition-BfayPs0h.d.ts.map → useRouterTransition-D5nwRENd.d.ts.map} +1 -1
  35. package/dist/esm/{Await-qSmJ-ZuN.d.mts → Await-D2oCO8nH.d.mts} +1 -1
  36. package/dist/esm/{Await-qSmJ-ZuN.d.mts.map → Await-D2oCO8nH.d.mts.map} +1 -1
  37. package/dist/esm/{HttpStatusProvider-Cy9GSANm.d.mts → HttpStatusProvider-DfsVxZba.d.mts} +1 -1
  38. package/dist/esm/{HttpStatusProvider-Cy9GSANm.d.mts.map → HttpStatusProvider-DfsVxZba.d.mts.map} +1 -1
  39. package/dist/esm/{Link-CQr9OFJ7.mjs → Link-uERoM4yk.mjs} +2 -2
  40. package/dist/esm/{Link-CQr9OFJ7.mjs.map → Link-uERoM4yk.mjs.map} +1 -1
  41. package/dist/esm/{RouterErrorBoundary-C-MH_yrP.d.mts → RouterErrorBoundary-3UhUelqY.d.mts} +1 -1
  42. package/dist/esm/{RouterErrorBoundary-C-MH_yrP.d.mts.map → RouterErrorBoundary-3UhUelqY.d.mts.map} +1 -1
  43. package/dist/esm/{RouterProvider-Dm7104-y.d.mts → RouterProvider-DCchvq4n.d.mts} +2 -2
  44. package/dist/esm/{RouterProvider-Dm7104-y.d.mts.map → RouterProvider-DCchvq4n.d.mts.map} +1 -1
  45. package/dist/esm/{RouterProvider-DTZrTBp6.mjs → RouterProvider-DgHypQTJ.mjs} +2 -2
  46. package/dist/esm/{RouterProvider-DTZrTBp6.mjs.map → RouterProvider-DgHypQTJ.mjs.map} +1 -1
  47. package/dist/esm/{createHttpStatusSink-BXWVamHE.mjs → createHttpStatusSink-CCocjF4h.mjs} +2 -2
  48. package/dist/esm/{createHttpStatusSink-BXWVamHE.mjs.map → createHttpStatusSink-CCocjF4h.mjs.map} +1 -1
  49. package/dist/esm/index.d.mts +4 -4
  50. package/dist/esm/index.mjs +1 -1
  51. package/dist/esm/index.react-server.d.mts +2 -2
  52. package/dist/esm/ink.d.mts +2 -2
  53. package/dist/esm/ink.mjs +1 -1
  54. package/dist/esm/legacy.d.mts +3 -3
  55. package/dist/esm/legacy.mjs +1 -1
  56. package/dist/esm/legacy.ssr.d.mts +2 -2
  57. package/dist/esm/legacy.ssr.mjs +1 -1
  58. package/dist/esm/ssr.d.mts +3 -3
  59. package/dist/esm/ssr.mjs +1 -1
  60. package/dist/esm/ssr.react-server.d.mts +2 -2
  61. package/dist/esm/{useDeferred-B5Qy7ttQ.d.mts → useDeferred-2fAqMTwr.d.mts} +1 -1
  62. package/dist/esm/{useDeferred-B5Qy7ttQ.d.mts.map → useDeferred-2fAqMTwr.d.mts.map} +1 -1
  63. package/dist/esm/{useRoute-Bta1jyl2.mjs → useRoute-5MF3j-9P.mjs} +1 -1
  64. package/dist/esm/{useRoute-Bta1jyl2.mjs.map → useRoute-5MF3j-9P.mjs.map} +1 -1
  65. package/dist/esm/{useRouteEnter-CxjYofFa.d.mts → useRouteEnter-CqO9sPPD.d.mts} +1 -1
  66. package/dist/esm/{useRouteEnter-CxjYofFa.d.mts.map → useRouteEnter-CqO9sPPD.d.mts.map} +1 -1
  67. package/dist/esm/{useRouterTransition-CI1P95ZQ.d.mts → useRouterTransition-PCwA_qj1.d.mts} +2 -2
  68. package/dist/esm/{useRouterTransition-CI1P95ZQ.d.mts.map → useRouterTransition-PCwA_qj1.d.mts.map} +1 -1
  69. package/package.json +5 -5
  70. package/dist/cjs/useRoute-Dudo2K_0.js +0 -2
@@ -38,4 +38,4 @@ declare function Await<T = unknown>({
38
38
  }: AwaitProps<T>): ReactNode;
39
39
  //#endregion
40
40
  export { AwaitProps as n, Await as t };
41
- //# sourceMappingURL=Await-whr-pcvo.d.ts.map
41
+ //# sourceMappingURL=Await-D2oCO8nH.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Await-whr-pcvo.d.ts","names":[],"sources":["../../src/components/Await.tsx"],"mappings":";;;UAMiB,UAAA;;WAEN,IAAA;EAFgB;;EAAA,SAKhB,QAAA,GAAW,KAAA,EAAO,CAAA,KAAM,SAAS;AAAA;;;;;;;AAAA;AA2B5C;;;;;;;;;;;;;;;;;iBAAgB,KAAA,aAAA,CAAA;EACd,IAAA;EACA;AAAA,GACC,UAAA,CAAW,CAAA,IAAK,SAAA"}
1
+ {"version":3,"file":"Await-D2oCO8nH.d.ts","names":[],"sources":["../../src/components/Await.tsx"],"mappings":";;;UAMiB,UAAA;;WAEN,IAAA;EAFgB;;EAAA,SAKhB,QAAA,GAAW,KAAA,EAAO,CAAA,KAAM,SAAS;AAAA;;;;;;;AAAA;AA2B5C;;;;;;;;;;;;;;;;;iBAAgB,KAAA,aAAA,CAAA;EACd,IAAA;EACA;AAAA,GACC,UAAA,CAAW,CAAA,IAAK,SAAA"}
@@ -140,4 +140,4 @@ declare function HttpStatusProvider({
140
140
  }: HttpStatusProviderProps): ReactNode;
141
141
  //#endregion
142
142
  export { HttpStatusCode as a, StreamedProps as c, ClientOnly as d, ClientOnlyProps as f, createHttpStatusSink as i, ServerOnly as l, HttpStatusProviderProps as n, HttpStatusCodeProps as o, HttpStatusSink as r, Streamed as s, HttpStatusProvider as t, ServerOnlyProps as u };
143
- //# sourceMappingURL=HttpStatusProvider-Dh6cMr95.d.ts.map
143
+ //# sourceMappingURL=HttpStatusProvider-DfsVxZba.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HttpStatusProvider-Dh6cMr95.d.ts","names":[],"sources":["../../src/components/ClientOnly.tsx","../../src/components/ServerOnly.tsx","../../src/components/Streamed.tsx","../../src/components/HttpStatusCode.tsx","../../src/utils/createHttpStatusSink.ts","../../src/components/HttpStatusProvider.tsx"],"mappings":";;;UAIiB,eAAA;EAAA,SACN,QAAA,EAAU,SAAA;EAAA,SACV,QAAA,GAAW,SAAS;AAAA;AAAA,iBAGf,UAAA,CAAA;EACd,QAAA;EACA;AAAA,GACC,eAAA,GAAkB,SAAA;;;UCRJ,eAAA;EAAA,SACN,QAAA,EAAU,SAAA;EAAA,SACV,QAAA,GAAW,SAAS;AAAA;AAAA,iBAGf,UAAA,CAAA;EACd,QAAA;EACA;AAAA,GACC,eAAA,GAAkB,SAAA;;;UCRJ,aAAA;;WAEN,QAAA,EAAU,SAAA;EAAA,SACV,QAAA,EAAU,SAAS;AAAA;;;;;;;AFDC;AAG/B;;;;;;;;;;iBEkBgB,QAAA,CAAA;EAAW,QAAA;EAAU;AAAA,GAAY,aAAA,GAAgB,SAAA;;;UCrBhD,mBAAA;;WAEN,IAAI;AAAA;;;;;;;;AHFgB;AAG/B;;;;;;;;;;;;;;;;AAG8B;;;;ACR9B;;;;;;;;;AAE+B;AAG/B;;;;;;;;iBEgDgB,cAAA,CAAA;EAAiB;AAAA,GAAQ,mBAAA,GAAsB,SAAA;;;;;;AHrD/D;;;;;;;;;AAE+B;AAG/B;;;;;;;UIWiB,cAAA;EACf,IAAI;AAAA;AAAA,iBAGU,oBAAA,CAAA,GAAwB,cAAc;;;UCjBrC,uBAAA;EAAA,SACN,IAAA,EAAM,cAAA;EAAA,SACN,QAAA,EAAU,SAAS;AAAA;AAAA,iBAGd,kBAAA,CAAA;EACd,IAAA;EACA;AAAA,GACC,uBAAA,GAA0B,SAAA"}
1
+ {"version":3,"file":"HttpStatusProvider-DfsVxZba.d.ts","names":[],"sources":["../../src/components/ClientOnly.tsx","../../src/components/ServerOnly.tsx","../../src/components/Streamed.tsx","../../src/components/HttpStatusCode.tsx","../../src/utils/createHttpStatusSink.ts","../../src/components/HttpStatusProvider.tsx"],"mappings":";;;UAIiB,eAAA;EAAA,SACN,QAAA,EAAU,SAAA;EAAA,SACV,QAAA,GAAW,SAAS;AAAA;AAAA,iBAGf,UAAA,CAAA;EACd,QAAA;EACA;AAAA,GACC,eAAA,GAAkB,SAAA;;;UCRJ,eAAA;EAAA,SACN,QAAA,EAAU,SAAA;EAAA,SACV,QAAA,GAAW,SAAS;AAAA;AAAA,iBAGf,UAAA,CAAA;EACd,QAAA;EACA;AAAA,GACC,eAAA,GAAkB,SAAA;;;UCRJ,aAAA;;WAEN,QAAA,EAAU,SAAA;EAAA,SACV,QAAA,EAAU,SAAS;AAAA;;;;;;;AFDC;AAG/B;;;;;;;;;;iBEkBgB,QAAA,CAAA;EAAW,QAAA;EAAU;AAAA,GAAY,aAAA,GAAgB,SAAA;;;UCrBhD,mBAAA;;WAEN,IAAI;AAAA;;;;;;;;AHFgB;AAG/B;;;;;;;;;;;;;;;;AAG8B;;;;ACR9B;;;;;;;;;AAE+B;AAG/B;;;;;;;;iBEgDgB,cAAA,CAAA;EAAiB;AAAA,GAAQ,mBAAA,GAAsB,SAAA;;;;;;AHrD/D;;;;;;;;;AAE+B;AAG/B;;;;;;;UIWiB,cAAA;EACf,IAAI;AAAA;AAAA,iBAGU,oBAAA,CAAA,GAAwB,cAAc;;;UCjBrC,uBAAA;EAAA,SACN,IAAA,EAAM,cAAA;EAAA,SACN,QAAA,EAAU,SAAS;AAAA;AAAA,iBAGd,kBAAA,CAAA;EACd,IAAA;EACA;AAAA,GACC,uBAAA,GAA0B,SAAA"}
@@ -1,2 +1,2 @@
1
- const e=require(`./useRoute-Dudo2K_0.js`),t=require(`./RouterProvider-mVFghB3a.js`);let n=require(`react`),r=require(`react/jsx-runtime`);function i(e,n){return e.routeName===n.routeName&&e.className===n.className&&e.activeClassName===n.activeClassName&&e.activeStrict===n.activeStrict&&e.ignoreQueryParams===n.ignoreQueryParams&&e.onClick===n.onClick&&e.target===n.target&&e.style===n.style&&e.children===n.children&&e.hash===n.hash&&t.u(e.routeParams,n.routeParams)&&t.u(e.routeOptions,n.routeOptions)}const a=(0,n.memo)(({routeName:i,routeParams:a=e.r,routeOptions:o=e.n,className:s,activeClassName:c=`active`,activeStrict:l=!1,ignoreQueryParams:u=!0,hash:d,onClick:f,target:p,children:m,...h})=>{let g=t.p(),_=t.o(i,a,l,u,d),v=t.c(g,i,a,d===void 0?void 0:{hash:d}),y=e=>{f&&(f(e),e.defaultPrevented)||!t.d(e.nativeEvent)||p===`_blank`||(e.preventDefault(),t.l(g,i,a,d,o).catch(()=>{}))},b=(0,n.useMemo)(()=>t.s(_,c,s),[_,c,s]);return(0,r.jsx)(`a`,{...h,href:v,className:b,onClick:y,children:m})},i);a.displayName=`Link`,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
2
- //# sourceMappingURL=Link-BbOfYYdl.js.map
1
+ const e=require("./useRoute-D2vAzKWM.js"),t=require("./RouterProvider-CPsCmrRw.js");let n=require("react"),r=require("react/jsx-runtime");function i(e,n){return e.routeName===n.routeName&&e.className===n.className&&e.activeClassName===n.activeClassName&&e.activeStrict===n.activeStrict&&e.ignoreQueryParams===n.ignoreQueryParams&&e.onClick===n.onClick&&e.target===n.target&&e.style===n.style&&e.children===n.children&&e.hash===n.hash&&t.u(e.routeParams,n.routeParams)&&t.u(e.routeOptions,n.routeOptions)}const a=(0,n.memo)(({routeName:i,routeParams:a=e.r,routeOptions:o=e.n,className:s,activeClassName:c=`active`,activeStrict:l=!1,ignoreQueryParams:u=!0,hash:d,onClick:f,target:p,children:m,...h})=>{let g=t.p(),_=t.o(i,a,l,u,d),v=t.c(g,i,a,d===void 0?void 0:{hash:d}),y=e=>{f&&(f(e),e.defaultPrevented)||!t.d(e.nativeEvent)||p===`_blank`||(e.preventDefault(),t.l(g,i,a,d,o).catch(()=>{}))},b=(0,n.useMemo)(()=>t.s(_,c,s),[_,c,s]);return(0,r.jsx)(`a`,{...h,href:v,className:b,onClick:y,children:m})},i);a.displayName=`Link`,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return a}});
2
+ //# sourceMappingURL=Link-CyDwbrFA.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Link-BbOfYYdl.js","names":["shallowEqual","EMPTY_PARAMS","EMPTY_OPTIONS","useRouter","useIsActiveRoute","buildHref","shouldNavigate","buildActiveClassName"],"sources":["../../src/components/Link.tsx"],"sourcesContent":["import { memo, useMemo } from \"react\";\n\nimport { EMPTY_PARAMS, EMPTY_OPTIONS } from \"../constants\";\nimport {\n shouldNavigate,\n buildHref,\n buildActiveClassName,\n navigateWithHash,\n shallowEqual,\n} from \"../dom-utils\";\nimport { useIsActiveRoute } from \"../hooks/useIsActiveRoute\";\nimport { useRouter } from \"../hooks/useRouter\";\n\nimport type { LinkProps } from \"../types\";\nimport type { FC, MouseEvent } from \"react\";\n\nfunction areLinkPropsEqual(\n prev: Readonly<LinkProps>,\n next: Readonly<LinkProps>,\n): boolean {\n return (\n prev.routeName === next.routeName &&\n prev.className === next.className &&\n prev.activeClassName === next.activeClassName &&\n prev.activeStrict === next.activeStrict &&\n prev.ignoreQueryParams === next.ignoreQueryParams &&\n prev.onClick === next.onClick &&\n prev.target === next.target &&\n prev.style === next.style &&\n prev.children === next.children &&\n prev.hash === next.hash &&\n shallowEqual(prev.routeParams, next.routeParams) &&\n shallowEqual(prev.routeOptions, next.routeOptions)\n );\n}\n\nconst LinkImpl: FC<LinkProps> = ({\n routeName,\n routeParams = EMPTY_PARAMS,\n routeOptions = EMPTY_OPTIONS,\n className,\n activeClassName = \"active\",\n activeStrict = false,\n ignoreQueryParams = true,\n hash,\n onClick,\n target,\n children,\n ...props\n}) => {\n // memo + areLinkPropsEqual guarantees that on bail-out the component does\n // not render; on render, routeParams/routeOptions either changed reference\n // (true change) or comparator failed (e.g., BigInt fallback to identity),\n // so they're safe to use directly in hook deps.\n\n const router = useRouter();\n\n // When `hash` prop is set, active state requires both route AND hash to\n // match (#532). Without this, three tab links sharing routeName=\"settings\"\n // would all be marked active by route-name alone, defeating tab semantics.\n const isActive = useIsActiveRoute(\n routeName,\n routeParams,\n activeStrict,\n ignoreQueryParams,\n hash,\n );\n\n // No useMemo: outer memo()+shallowEqual prevents Link re-render unless a\n // prop actually changed. When this body runs, either `hash` differs from\n // last render or another prop changed — in both cases the `{ hash }` alloc\n // is unavoidable. The useMemo wrapper added one closure + deps slot per\n // render without saving an allocation.\n const hashOption = hash === undefined ? undefined : { hash };\n const href = buildHref(router, routeName, routeParams, hashOption);\n\n // useCallback was wasteful: 7 deps recreated the closure on every meaningful\n // render anyway, and `<a onClick>` does not benefit from a stable function\n // identity (no child-memo-bail-out chain past it). Inline arrow function is\n // what React Compiler emits automatically for this shape.\n const handleClick = (evt: MouseEvent<HTMLAnchorElement>) => {\n if (onClick) {\n onClick(evt);\n\n if (evt.defaultPrevented) {\n return;\n }\n }\n\n if (!shouldNavigate(evt.nativeEvent) || target === \"_blank\") {\n return;\n }\n\n evt.preventDefault();\n navigateWithHash(router, routeName, routeParams, hash, routeOptions).catch(\n () => {},\n );\n };\n\n // Memoize the joined class string. parseTokens + Set + join on every render\n // adds up on pages with N Links navigating frequently; deps cover every\n // input the function reads so cache invalidation is exact.\n const finalClassName = useMemo(\n () => buildActiveClassName(isActive, activeClassName, className),\n [isActive, activeClassName, className],\n );\n\n return (\n <a {...props} href={href} className={finalClassName} onClick={handleClick}>\n {children}\n </a>\n );\n};\n\nexport const Link: FC<LinkProps> = memo(LinkImpl, areLinkPropsEqual);\n\nLink.displayName = \"Link\";\n"],"mappings":"0IAgBA,SAAS,EACP,EACA,EACS,CACT,OACE,EAAK,YAAc,EAAK,WACxB,EAAK,YAAc,EAAK,WACxB,EAAK,kBAAoB,EAAK,iBAC9B,EAAK,eAAiB,EAAK,cAC3B,EAAK,oBAAsB,EAAK,mBAChC,EAAK,UAAY,EAAK,SACtB,EAAK,SAAW,EAAK,QACrB,EAAK,QAAU,EAAK,OACpB,EAAK,WAAa,EAAK,UACvB,EAAK,OAAS,EAAK,MACnBA,EAAAA,EAAa,EAAK,YAAa,EAAK,WAAW,GAC/CA,EAAAA,EAAa,EAAK,aAAc,EAAK,YAAY,CAErD,CAgFA,MAAa,GAAA,EAAA,EAAA,OA9EoB,CAC/B,YACA,cAAcC,EAAAA,EACd,eAAeC,EAAAA,EACf,YACA,kBAAkB,SAClB,eAAe,GACf,oBAAoB,GACpB,OACA,UACA,SACA,WACA,GAAG,KACC,CAMJ,IAAM,EAASC,EAAAA,EAAU,EAKnB,EAAWC,EAAAA,EACf,EACA,EACA,EACA,EACA,CACF,EAQM,EAAOC,EAAAA,EAAU,EAAQ,EAAW,EADvB,IAAS,IAAA,GAAY,IAAA,GAAY,CAAE,MAAK,CACM,EAM3D,EAAe,GAAuC,CACtD,IACF,EAAQ,CAAG,EAEP,EAAI,mBAKN,CAACC,EAAAA,EAAe,EAAI,WAAW,GAAK,IAAW,WAInD,EAAI,eAAe,EACnB,EAAA,EAAiB,EAAQ,EAAW,EAAa,EAAM,CAAY,EAAE,UAC7D,CAAC,CACT,EACF,EAKM,GAAA,EAAA,EAAA,aACEC,EAAAA,EAAqB,EAAU,EAAiB,CAAS,EAC/D,CAAC,EAAU,EAAiB,CAAS,CACvC,EAEA,OACE,EAAA,EAAA,KAAC,IAAD,CAAG,GAAI,EAAa,OAAM,UAAW,EAAgB,QAAS,EAC3D,UACA,CAAA,CAEP,EAEkD,CAAiB,EAEnE,EAAK,YAAc"}
1
+ {"version":3,"file":"Link-CyDwbrFA.js","names":["shallowEqual","EMPTY_PARAMS","EMPTY_OPTIONS","useRouter","useIsActiveRoute","buildHref","shouldNavigate","buildActiveClassName"],"sources":["../../src/components/Link.tsx"],"sourcesContent":["import { memo, useMemo } from \"react\";\n\nimport { EMPTY_PARAMS, EMPTY_OPTIONS } from \"../constants\";\nimport {\n shouldNavigate,\n buildHref,\n buildActiveClassName,\n navigateWithHash,\n shallowEqual,\n} from \"../dom-utils\";\nimport { useIsActiveRoute } from \"../hooks/useIsActiveRoute\";\nimport { useRouter } from \"../hooks/useRouter\";\n\nimport type { LinkProps } from \"../types\";\nimport type { FC, MouseEvent } from \"react\";\n\nfunction areLinkPropsEqual(\n prev: Readonly<LinkProps>,\n next: Readonly<LinkProps>,\n): boolean {\n return (\n prev.routeName === next.routeName &&\n prev.className === next.className &&\n prev.activeClassName === next.activeClassName &&\n prev.activeStrict === next.activeStrict &&\n prev.ignoreQueryParams === next.ignoreQueryParams &&\n prev.onClick === next.onClick &&\n prev.target === next.target &&\n prev.style === next.style &&\n prev.children === next.children &&\n prev.hash === next.hash &&\n shallowEqual(prev.routeParams, next.routeParams) &&\n shallowEqual(prev.routeOptions, next.routeOptions)\n );\n}\n\nconst LinkImpl: FC<LinkProps> = ({\n routeName,\n routeParams = EMPTY_PARAMS,\n routeOptions = EMPTY_OPTIONS,\n className,\n activeClassName = \"active\",\n activeStrict = false,\n ignoreQueryParams = true,\n hash,\n onClick,\n target,\n children,\n ...props\n}) => {\n // memo + areLinkPropsEqual guarantees that on bail-out the component does\n // not render; on render, routeParams/routeOptions either changed reference\n // (true change) or comparator failed (e.g., BigInt fallback to identity),\n // so they're safe to use directly in hook deps.\n\n const router = useRouter();\n\n // When `hash` prop is set, active state requires both route AND hash to\n // match (#532). Without this, three tab links sharing routeName=\"settings\"\n // would all be marked active by route-name alone, defeating tab semantics.\n const isActive = useIsActiveRoute(\n routeName,\n routeParams,\n activeStrict,\n ignoreQueryParams,\n hash,\n );\n\n // No useMemo: outer memo()+shallowEqual prevents Link re-render unless a\n // prop actually changed. When this body runs, either `hash` differs from\n // last render or another prop changed — in both cases the `{ hash }` alloc\n // is unavoidable. The useMemo wrapper added one closure + deps slot per\n // render without saving an allocation.\n const hashOption = hash === undefined ? undefined : { hash };\n const href = buildHref(router, routeName, routeParams, hashOption);\n\n // useCallback was wasteful: 7 deps recreated the closure on every meaningful\n // render anyway, and `<a onClick>` does not benefit from a stable function\n // identity (no child-memo-bail-out chain past it). Inline arrow function is\n // what React Compiler emits automatically for this shape.\n const handleClick = (evt: MouseEvent<HTMLAnchorElement>) => {\n if (onClick) {\n onClick(evt);\n\n if (evt.defaultPrevented) {\n return;\n }\n }\n\n if (!shouldNavigate(evt.nativeEvent) || target === \"_blank\") {\n return;\n }\n\n evt.preventDefault();\n navigateWithHash(router, routeName, routeParams, hash, routeOptions).catch(\n () => {},\n );\n };\n\n // Memoize the joined class string. parseTokens + Set + join on every render\n // adds up on pages with N Links navigating frequently; deps cover every\n // input the function reads so cache invalidation is exact.\n const finalClassName = useMemo(\n () => buildActiveClassName(isActive, activeClassName, className),\n [isActive, activeClassName, className],\n );\n\n return (\n <a {...props} href={href} className={finalClassName} onClick={handleClick}>\n {children}\n </a>\n );\n};\n\nexport const Link: FC<LinkProps> = memo(LinkImpl, areLinkPropsEqual);\n\nLink.displayName = \"Link\";\n"],"mappings":"0IAgBA,SAAS,EACP,EACA,EACS,CACT,OACE,EAAK,YAAc,EAAK,WACxB,EAAK,YAAc,EAAK,WACxB,EAAK,kBAAoB,EAAK,iBAC9B,EAAK,eAAiB,EAAK,cAC3B,EAAK,oBAAsB,EAAK,mBAChC,EAAK,UAAY,EAAK,SACtB,EAAK,SAAW,EAAK,QACrB,EAAK,QAAU,EAAK,OACpB,EAAK,WAAa,EAAK,UACvB,EAAK,OAAS,EAAK,MACnBA,EAAAA,EAAa,EAAK,YAAa,EAAK,WAAW,GAC/CA,EAAAA,EAAa,EAAK,aAAc,EAAK,YAAY,CAErD,CAgFA,MAAa,GAAA,EAAA,EAAA,OA9EoB,CAC/B,YACA,cAAcC,EAAAA,EACd,eAAeC,EAAAA,EACf,YACA,kBAAkB,SAClB,eAAe,GACf,oBAAoB,GACpB,OACA,UACA,SACA,WACA,GAAG,KACC,CAMJ,IAAM,EAASC,EAAAA,EAAU,EAKnB,EAAWC,EAAAA,EACf,EACA,EACA,EACA,EACA,CACF,EAQM,EAAOC,EAAAA,EAAU,EAAQ,EAAW,EADvB,IAAS,IAAA,GAAY,IAAA,GAAY,CAAE,MAAK,CACM,EAM3D,EAAe,GAAuC,CACtD,IACF,EAAQ,CAAG,EAEP,EAAI,mBAKN,CAACC,EAAAA,EAAe,EAAI,WAAW,GAAK,IAAW,WAInD,EAAI,eAAe,EACnB,EAAA,EAAiB,EAAQ,EAAW,EAAa,EAAM,CAAY,EAAE,UAC7D,CAAC,CACT,EACF,EAKM,GAAA,EAAA,EAAA,aACEC,EAAAA,EAAqB,EAAU,EAAiB,CAAS,EAC/D,CAAC,EAAU,EAAiB,CAAS,CACvC,EAEA,OACE,EAAA,EAAA,KAAC,IAAD,CAAG,GAAI,EAAa,OAAM,UAAW,EAAgB,QAAS,EAC3D,UACA,CAAA,CAEP,EAEkD,CAAiB,EAEnE,EAAK,YAAc"}
@@ -44,4 +44,4 @@ declare function RouterErrorBoundary({
44
44
  }: RouterErrorBoundaryProps): ReactElement;
45
45
  //#endregion
46
46
  export { RouteContext as i, RouterErrorBoundaryProps as n, LinkProps as r, RouterErrorBoundary as t };
47
- //# sourceMappingURL=RouterErrorBoundary-BlJmaoyr.d.ts.map
47
+ //# sourceMappingURL=RouterErrorBoundary-3UhUelqY.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RouterErrorBoundary-BlJmaoyr.d.ts","names":[],"sources":["../../src/types.ts","../../src/components/RouterErrorBoundary.tsx"],"mappings":";;;;UAQiB,UAAA,WAAqB,MAAA,GAAS,MAAA;EAC7C,KAAA,EAAO,KAAA,CAAM,CAAA;EACb,aAAA,GAAgB,KAAA;AAAA;AAAA,KAGN,YAAA,WAAuB,MAAA,GAAS,MAAA;EAC1C,SAAA,EAAW,SAAA;AAAA,IACT,UAAA,CAAW,CAAA;AAAA,UAEE,SAAA,WACL,MAAA,GAAS,MAAA,UACX,cAAA,CAAe,iBAAA;EACvB,SAAA;EACA,WAAA,GAAc,CAAA;EACd,YAAA,GAAe,iBAAA;EACf,eAAA;EACA,YAAA;EACA,iBAAA;EAjB6C;;;;;;;AAExB;AAGvB;EAsBE,IAAA;EACA,MAAA;EACA,OAAA,GAAU,iBAAA,CAAkB,iBAAA;EAC5B,WAAA,GAAc,iBAAA,CAAkB,iBAAA;AAAA;;;UCxBjB,wBAAA;EAAA,SACN,QAAA,EAAU,SAAA;EAAA,SACV,QAAA,GAAW,KAAA,EAAO,WAAA,EAAa,UAAA,iBAA2B,SAAA;EAAA,SAC1D,OAAA,IACP,KAAA,EAAO,WAAA,EACP,OAAA,EAAS,KAAA,SACT,SAAA,EAAW,KAAA;AAAA;AAAA,iBAIC,mBAAA,CAAA;EACd,QAAA;EACA,QAAA;EACA;AAAA,GACC,wBAAA,GAA2B,YAAA"}
1
+ {"version":3,"file":"RouterErrorBoundary-3UhUelqY.d.ts","names":[],"sources":["../../src/types.ts","../../src/components/RouterErrorBoundary.tsx"],"mappings":";;;;UAQiB,UAAA,WAAqB,MAAA,GAAS,MAAA;EAC7C,KAAA,EAAO,KAAA,CAAM,CAAA;EACb,aAAA,GAAgB,KAAA;AAAA;AAAA,KAGN,YAAA,WAAuB,MAAA,GAAS,MAAA;EAC1C,SAAA,EAAW,SAAA;AAAA,IACT,UAAA,CAAW,CAAA;AAAA,UAEE,SAAA,WACL,MAAA,GAAS,MAAA,UACX,cAAA,CAAe,iBAAA;EACvB,SAAA;EACA,WAAA,GAAc,CAAA;EACd,YAAA,GAAe,iBAAA;EACf,eAAA;EACA,YAAA;EACA,iBAAA;EAjB6C;;;;;;;AAExB;AAGvB;EAsBE,IAAA;EACA,MAAA;EACA,OAAA,GAAU,iBAAA,CAAkB,iBAAA;EAC5B,WAAA,GAAc,iBAAA,CAAkB,iBAAA;AAAA;;;UCxBjB,wBAAA;EAAA,SACN,QAAA,EAAU,SAAA;EAAA,SACV,QAAA,GAAW,KAAA,EAAO,WAAA,EAAa,UAAA,iBAA2B,SAAA;EAAA,SAC1D,OAAA,IACP,KAAA,EAAO,WAAA,EACP,OAAA,EAAS,KAAA,SACT,SAAA,EAAW,KAAA;AAAA;AAAA,iBAIC,mBAAA,CAAA;EACd,QAAA;EACA,QAAA;EACA;AAAA,GACC,wBAAA,GAA2B,YAAA"}
@@ -1,2 +1,2 @@
1
- const e=require(`./useRoute-Dudo2K_0.js`);let t=require(`react`),n=require(`@real-router/core`),r=require(`@real-router/route-utils`),i=require(`react/jsx-runtime`),a=require(`@real-router/sources`),o=require(`@real-router/core/api`);const s=()=>{let n=(0,t.useContext)(e.s);if(!n)throw Error(`useRouter must be used within a RouterProvider`);return n};function c(e){let r=s(),i=(0,t.useMemo)(()=>(0,a.createRouteNodeSource)(r,e),[r,e]),o=(0,t.useSyncExternalStore)(i.subscribe,i.getSnapshot,i.getSnapshot),c=(0,n.getNavigator)(r);return(0,t.useMemo)(()=>({navigator:c,route:o.route,previousRoute:o.previousRoute}),[c,o])}const l=`data-real-router-announcer`,u=Object.freeze({destroy:()=>{}});function d(e,t){if(typeof document>`u`)return u;let n=t?.prefix??`Navigated to `,r=t?.getAnnouncementText,i=!0,a=!1,o=!1,s=``,c=null,l,d=f(),g=(e,t)=>{s=e,clearTimeout(l),d.textContent=e,l=setTimeout(()=>{d.textContent=``,s=``},7e3),h(t)},_=setTimeout(()=>{if(a=!0,c!==null&&!o){let e=c;c=null,g(e,document.querySelector(`h1`))}},100),v=e.subscribe(({route:e})=>{if(i){i=!1;return}requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(o)return;let t=document.querySelector(`h1`),i=m(e,n,r,t);if(!(!i||i===s)){if(!a){c=i;return}g(i,t)}})})});return{destroy(){o=!0,v(),clearTimeout(l),clearTimeout(_),p()}}}function f(){let e=document.querySelector(`[${l}]`);if(e)return e;let t=document.createElement(`div`);return t.setAttribute(`style`,`position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0`),t.setAttribute(`aria-live`,`assertive`),t.setAttribute(`aria-atomic`,`true`),t.setAttribute(l,``),(document.body??document.documentElement).prepend(t),t}function p(){document.querySelector(`[${l}]`)?.remove()}function m(e,t,n,r){if(n)try{let t=n(e);if(t)return t}catch(e){console.error(`[real-router] getAnnouncementText threw; falling back to default resolution.`,e)}let i=(r?.textContent??``).trim(),a=e.name.startsWith(`@@`)?``:e.name;return`${t}${i||document.title||a||globalThis.location.pathname}`}function h(e){e&&(e.hasAttribute(`tabindex`)||e.setAttribute(`tabindex`,`-1`),e.focus({preventScroll:!0}))}const g=Object.freeze({destroy:()=>{}});function _(e,t){if(globalThis.window===void 0)return g;let n=t?.mode??`restore`;if(n===`native`)return g;let r=t?.anchorScrolling??!0,i=t?.scrollContainer,a=t?.behavior??`auto`,o=t?.storageKey??`real-router:scroll`,s,c=()=>{if(s!==void 0)return s;try{let e=sessionStorage.getItem(o);s=e?JSON.parse(e):{}}catch{s={}}return s},l=(e,t)=>{try{let n=c();if(n[e]===t)return;n[e]=t,sessionStorage.setItem(o,JSON.stringify(n))}catch{}},u=history.scrollRestoration;try{history.scrollRestoration=`manual`}catch{}let d=()=>{let e=i?.();return e?e.scrollTop:globalThis.scrollY},f=e=>{let t=i?.();t?t.scrollTo({top:e,left:0,behavior:a}):globalThis.scrollTo({top:e,left:0,behavior:a})},p=e=>{if(!i){globalThis.scrollTo({top:e,left:0,behavior:a});return}let t=0,n=()=>{if(h)return;let r=i();if(r){if(r.scrollTo({top:e,left:0,behavior:a}),a!==`smooth`&&Math.abs(r.scrollTop-e)<=1)return}else globalThis.scrollTo({top:e,left:0,behavior:a});t>=10||(t+=1,requestAnimationFrame(n))};n()},m=e=>{let t=e.context?.url?.hash;if(t!==void 0){if(r&&t.length>0){let e=document.getElementById(t);if(e){e.scrollIntoView({behavior:a});return}}f(0);return}let n=globalThis.location.hash;if(r&&n.length>1){let e;try{e=decodeURIComponent(n.slice(1))}catch{e=n.slice(1)}let t=document.getElementById(e);if(t){t.scrollIntoView({behavior:a});return}}f(0)},h=!1,_=!1,v=e=>{try{return y(e)}catch{return _||(_=!0,console.error(`[real-router] scroll-restore: route "${e.name}" has params that cannot be canonicalized (e.g. BigInt or cyclic structure). Scroll position will not be captured or restored for this route.`)),null}},b=e.subscribe(({route:e,previousRoute:t})=>{let r=e.context.navigation;if(t){let e=v(t);e!==null&&l(e,d())}requestAnimationFrame(()=>{if(!h){if(n===`top`){m(e);return}if(e.transition.reload||r?.navigationType===`reload`){let t=v(e);p(t===null?0:c()[t]??0);return}if(r?.direction===`back`||r?.navigationType===`traverse`){let t=v(e);p(t===null?0:c()[t]??0);return}e.transition.replace||r?.navigationType===`replace`||m(e)}})}),x=()=>{let t=e.getState();if(t){let e=v(t);e!==null&&l(e,d())}};return globalThis.addEventListener(`pagehide`,x),{destroy:()=>{if(!h){h=!0,b(),globalThis.removeEventListener(`pagehide`,x);try{history.scrollRestoration=u}catch{}}}}}const v=new WeakMap;function y(e){let t=v.get(e);if(t!==void 0)return t;let n=`${e.name}:${b(e.params)}`;return v.set(e,n),n}function b(e){return JSON.stringify(e,x)}function x(e,t){if(typeof t==`function`)return`<fn>`;if(typeof t==`symbol`)return`<sym>`;if(typeof t==`object`&&t&&!Array.isArray(t)){let e=Object.create(null),n=Object.keys(t).sort((e,t)=>e.localeCompare(t));for(let r of n)e[r]=t[r];return e}return t}const S=Object.freeze({destroy:()=>{}}),C=e=>e.context?.url,w=e=>{let t=null,n=1/0,r=null,i=-1/0;for(let a of e){if(!a.isIntersecting)continue;let e=a.rootBounds?.top??0,o=a.boundingClientRect.top-e;o>=0?o<n&&(t=a,n=o):o>i&&(r=a,i=o)}return t??r},T=(e,t)=>{let n=null,r=e=>{let n=e.context;n&&n.url===void 0&&(console.warn(`[real-router] scroll-spy: state.context.url is not claimed. Spy requires browser-plugin or navigation-plugin. Disabling.`),t())},i=e.getState();if(i)r(i);else{let t=!1;n=e.subscribe(({route:e})=>{t||(t=!0,r(e),n?.(),n=null)})}return{destroy(){n?.(),n=null}}},E=e=>{let t=!1,n=null,r=null,i=null,a=()=>{n!==null&&(clearTimeout(n),n=null),i&&(r??globalThis).removeEventListener(`scrollend`,i),i=null,r=null,t=!1};return{get active(){return t},start(){a(),t=!0;let o=()=>{a()};i=o,r=e(),(r??globalThis).addEventListener(`scrollend`,o,{once:!0}),n=setTimeout(o,500)},destroy(){a()}}},D=(e,t)=>{let n=null,r=null;return{schedule(){n===null&&(n=requestAnimationFrame(()=>{n=null,r!==null&&clearTimeout(r),r=setTimeout(()=>{r=null,e()},t)}))},destroy(){n!==null&&(cancelAnimationFrame(n),n=null),r!==null&&(clearTimeout(r),r=null)}}},O=(e,t,n,r,i,a)=>{let o=new Set,s=new Map,c=!1,l=null,u=new IntersectionObserver(e=>{if(!a()){for(let t of e)s.set(t.target,t);r()}},{root:n(),rootMargin:t,threshold:0}),d=()=>{let t=n()??document,r;try{r=t.querySelectorAll(e)}catch{i();return}let a=new Set;for(let e of r){let t=e.id;t&&!c&&(a.has(t)&&(c=!0,console.warn(`[real-router] scroll-spy: duplicate id "${t}" observed. Selection picks the topmost visible match deterministically.`)),a.add(t)),!o.has(e)&&(u.observe(e),o.add(e))}},f=()=>{for(let e of o)e.isConnected||(u.unobserve(e),o.delete(e),s.delete(e));d()};d();let p=n()??document.body,m=new MutationObserver(()=>{l!==null&&clearTimeout(l),l=setTimeout(()=>{l=null,f()},250)});return m.observe(p,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`id`]}),{pending:s,destroy(){u.disconnect(),m.disconnect(),l!==null&&(clearTimeout(l),l=null),o.clear(),s.clear()}}};function k(e,t){if(typeof document>`u`||typeof IntersectionObserver>`u`)return S;let{selector:n}=t;if(!n)return S;let r=t.rootMargin??`-20% 0px -60% 0px`,i=t.scrollContainer,o=()=>i?.()??null,s=!1,c=!1,l=!1,u=()=>c||s,d=null,f=(0,a.getTransitionSource)(e),p=T(e,()=>{c=!0}),m=E(o),h=D(()=>{d?.()},150),g=O(n,r,o,()=>{h.schedule()},()=>{c||(c=!0,console.warn(`[real-router] scroll-spy: invalid selector "${n}". Disabling.`))},u);d=()=>{if(s||c){g.pending.clear();return}if(f.getSnapshot().isTransitioning||m.active||g.pending.size===0)return;let t=w(g.pending.values());if(g.pending.clear(),!t)return;let n=t.target.id;if(!n)return;let r=e.getState();if(!r||n===(C(r)?.hash??``))return;let i={hash:n,replace:!0,force:!0,hashChange:!0};l=!0,e.navigate(r.name,r.params,i).catch(()=>{}).finally(()=>{l=!1})};let _=e.subscribe(({route:e})=>{l||C(e)?.hashChanged&&m.start()});return{destroy(){s||(s=!0,_(),g.destroy(),h.destroy(),m.destroy(),p.destroy())}}}const A=Object.freeze({destroy:()=>{}});function j(e){if(typeof document>`u`||typeof document.startViewTransition!=`function`)return A;let t=null,n=null,r=!1,i=()=>{t?.(),t=null},a=e.subscribeLeave(({signal:e})=>{if(!e.aborted)return r=!1,i(),new Promise(a=>{let o=new Promise(e=>{t=e});e.addEventListener(`abort`,()=>{r||(i(),n?.skipTransition?.(),a())},{once:!0});try{n=document.startViewTransition(()=>(a(),o))}catch{i(),a()}})}),o=e.subscribe(()=>{let e=t;r=!0,t=null,e===null?n=null:setTimeout(()=>{e(),n=null},0)});return{destroy:()=>{a(),o(),n?.skipTransition?.(),n=null,i()}}}function M(e){return e.button===0&&!e.metaKey&&!e.altKey&&!e.ctrlKey&&!e.shiftKey}const N=/%[\dA-Fa-f]{2}/;function P(e){if(N.test(e))try{return encodeURI(decodeURIComponent(e)).replaceAll(`#`,`%23`)}catch{}return encodeURI(e).replaceAll(`#`,`%23`)}function F(e,t,n,r){try{let i=r?.hash,a;i!==void 0&&(a=i.startsWith(`#`)?i.slice(1):i);let o=e.buildUrl;if(o){let e=o(t,n,a===void 0?void 0:{hash:a});if(typeof e==`string`&&e.length>0)return e}let s=e.buildPath(t,n);if(typeof s!=`string`||s.length===0){console.error(`[real-router] Route "${t}" yielded an empty path. The element will render without an href attribute.`);return}return a?`${s}#${P(a)}`:s}catch{console.error(`[real-router] Route "${t}" is not defined. The element will render without an href attribute.`);return}}function I(e,t,n,r,i){let a={...i};r!==void 0&&(a.hash=r);let o=e.getState();if(o?.name===t&&V(o.params,n)){let e=o.context?.url?.hash??``;e!==(r??e)&&(a.force=!0,a.hashChange=!0)}return e.navigate(t,n,a)}const L=/\s/,R=/\S+/g;function z(e){return e?L.test(e)?e.match(R)??[]:[e]:[]}function B(e,t,n){if(e&&t){let e=z(t);if(e.length===0)return n??void 0;if(!n)return e.join(` `);let r=z(n),i=new Set(r);for(let t of e)i.has(t)||(i.add(t),r.push(t));return r.join(` `)}return n??void 0}function V(e,t){if(Object.is(e,t))return!0;if(!e||!t)return!1;let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;let r=e,i=t;for(let e of n)if(!Object.prototype.hasOwnProperty.call(t,e)||!Object.is(r[e],i[e]))return!1;return!0}function H(e,n,r=!1,i=!0,o){let c=s(),l=(0,t.useMemo)(()=>(0,a.createActiveRouteSource)(c,e,n,{strict:r,ignoreQueryParams:i,...o!==void 0&&{hash:o}}),[c,e,n,r,i,o]);return(0,t.useSyncExternalStore)(l.subscribe,l.getSnapshot,l.getSnapshot)}function U({children:e,fallback:n,onError:r}){let o=s(),c=(0,t.useMemo)(()=>(0,a.createDismissableError)(o),[o]),l=(0,t.useSyncExternalStore)(c.subscribe,c.getSnapshot,c.getSnapshot),u=(0,t.useRef)(r);return(0,t.useLayoutEffect)(()=>{u.current=r}),(0,t.useEffect)(()=>{l.error&&u.current?.(l.error,l.toRoute,l.fromRoute)},[l.version]),(0,i.jsxs)(i.Fragment,{children:[e,l.error?n(l.error,l.resetError):null]})}const W=()=>{let n=(0,t.useContext)(e.a);if(!n)throw Error(`useNavigator must be used within a RouterProvider`);return n},G=()=>(0,r.getRouteUtils)((0,o.getPluginApi)(s()).getTree());function K(){let e=(0,a.getTransitionSource)(s());return(0,t.useSyncExternalStore)(e.subscribe,e.getSnapshot,e.getSnapshot)}const q=({router:r,children:o,announceNavigation:s,scrollRestoration:c,scrollSpy:l,viewTransitions:u})=>{(0,t.useEffect)(()=>{if(!s)return;let e=d(r);return()=>{e.destroy()}},[s,r]);let f=c?.mode,p=c?.anchorScrolling,m=c?.behavior,h=c?.storageKey,g=c!==void 0;(0,t.useEffect)(()=>{if(!g)return;let e=_(r,{mode:f,anchorScrolling:p,behavior:m,storageKey:h,scrollContainer:c.scrollContainer});return()=>{e.destroy()}},[r,g,f,p,m,h]);let v=l?.selector,y=l?.rootMargin,b=l!==void 0&&v!==void 0&&v!==``;(0,t.useEffect)(()=>{if(!b)return;let e=k(r,{selector:v,rootMargin:y,scrollContainer:l.scrollContainer});return()=>{e.destroy()}},[r,b,v,y]),(0,t.useEffect)(()=>{if(!u)return;let e=j(r);return()=>{e.destroy()}},[r,u]);let x=(0,t.useMemo)(()=>(0,n.getNavigator)(r),[r]),S=(0,t.useMemo)(()=>(0,a.createRouteSource)(r),[r]),C=(0,t.useSyncExternalStore)(S.subscribe,S.getSnapshot,S.getSnapshot),w=(0,t.useMemo)(()=>({navigator:x,route:C.route,previousRoute:C.previousRoute}),[x,C]);return(0,i.jsx)(e.s.Provider,{value:r,children:(0,i.jsx)(e.a.Provider,{value:x,children:(0,i.jsx)(e.o.Provider,{value:w,children:o})})})};Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return V}});
2
- //# sourceMappingURL=RouterProvider-mVFghB3a.js.map
1
+ const e=require("./useRoute-D2vAzKWM.js");let t=require("react"),n=require("@real-router/core"),r=require("@real-router/route-utils"),i=require("react/jsx-runtime"),a=require("@real-router/sources"),o=require("@real-router/core/api");const s=()=>{let n=(0,t.useContext)(e.s);if(!n)throw Error(`useRouter must be used within a RouterProvider`);return n};function c(e){let r=s(),i=(0,t.useMemo)(()=>(0,a.createRouteNodeSource)(r,e),[r,e]),o=(0,t.useSyncExternalStore)(i.subscribe,i.getSnapshot,i.getSnapshot),c=(0,n.getNavigator)(r);return(0,t.useMemo)(()=>({navigator:c,route:o.route,previousRoute:o.previousRoute}),[c,o])}const l=`data-real-router-announcer`,u=Object.freeze({destroy:()=>{}});function d(e,t){if(typeof document>`u`)return u;let n=t?.prefix??`Navigated to `,r=t?.getAnnouncementText,i=!0,a=!1,o=!1,s=``,c=null,l,d=f(),g=(e,t)=>{s=e,clearTimeout(l),d.textContent=e,l=setTimeout(()=>{d.textContent=``,s=``},7e3),h(t)},_=setTimeout(()=>{if(a=!0,c!==null&&!o){let e=c;c=null,g(e,document.querySelector(`h1`))}},100),v=e.subscribe(({route:e})=>{if(i){i=!1;return}requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(o)return;let t=document.querySelector(`h1`),i=m(e,n,r,t);if(!(!i||i===s)){if(!a){c=i;return}g(i,t)}})})});return{destroy(){o=!0,v(),clearTimeout(l),clearTimeout(_),p()}}}function f(){let e=document.querySelector(`[${l}]`);if(e)return e;let t=document.createElement(`div`);return t.setAttribute(`style`,`position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0`),t.setAttribute(`aria-live`,`assertive`),t.setAttribute(`aria-atomic`,`true`),t.setAttribute(l,``),(document.body??document.documentElement).prepend(t),t}function p(){document.querySelector(`[${l}]`)?.remove()}function m(e,t,n,r){if(n)try{let t=n(e);if(t)return t}catch(e){console.error(`[real-router] getAnnouncementText threw; falling back to default resolution.`,e)}let i=(r?.textContent??``).trim(),a=e.name.startsWith(`@@`)?``:e.name;return`${t}${i||document.title||a||globalThis.location.pathname}`}function h(e){e&&(e.hasAttribute(`tabindex`)||e.setAttribute(`tabindex`,`-1`),e.focus({preventScroll:!0}))}const g=Object.freeze({destroy:()=>{}});function _(e,t){if(globalThis.window===void 0)return g;let n=t?.mode??`restore`;if(n===`native`)return g;let r=t?.anchorScrolling??!0,i=t?.scrollContainer,a=t?.behavior??`auto`,o=t?.storageKey??`real-router:scroll`,s,c=()=>{if(s!==void 0)return s;try{let e=sessionStorage.getItem(o);s=e?JSON.parse(e):{}}catch{s={}}return s},l=(e,t)=>{try{let n=c();if(n[e]===t)return;n[e]=t,sessionStorage.setItem(o,JSON.stringify(n))}catch{}},u=history.scrollRestoration;try{history.scrollRestoration=`manual`}catch{}let d=()=>{let e=i?.();return e?e.scrollTop:globalThis.scrollY},f=e=>{let t=i?.();t?t.scrollTo({top:e,left:0,behavior:a}):globalThis.scrollTo({top:e,left:0,behavior:a})},p=e=>{if(!i){globalThis.scrollTo({top:e,left:0,behavior:a});return}let t=0,n=()=>{if(h)return;let r=i();if(r){if(r.scrollTo({top:e,left:0,behavior:a}),a!==`smooth`&&Math.abs(r.scrollTop-e)<=1)return}else globalThis.scrollTo({top:e,left:0,behavior:a});t>=10||(t+=1,requestAnimationFrame(n))};n()},m=e=>{let t=e.context?.url?.hash;if(t!==void 0){if(r&&t.length>0){let e=document.getElementById(t);if(e){e.scrollIntoView({behavior:a});return}}f(0);return}let n=globalThis.location.hash;if(r&&n.length>1){let e;try{e=decodeURIComponent(n.slice(1))}catch{e=n.slice(1)}let t=document.getElementById(e);if(t){t.scrollIntoView({behavior:a});return}}f(0)},h=!1,_=!1,v=e=>{try{return y(e)}catch{return _||(_=!0,console.error(`[real-router] scroll-restore: route "${e.name}" has params that cannot be canonicalized (e.g. BigInt or cyclic structure). Scroll position will not be captured or restored for this route.`)),null}},b=e.subscribe(({route:e,previousRoute:t})=>{let r=e.context.navigation;if(t){let e=v(t);e!==null&&l(e,d())}requestAnimationFrame(()=>{if(!h){if(n===`top`){m(e);return}if(e.transition.reload||r?.navigationType===`reload`){let t=v(e);p(t===null?0:c()[t]??0);return}if(r?.direction===`back`||r?.navigationType===`traverse`){let t=v(e);p(t===null?0:c()[t]??0);return}e.transition.replace||r?.navigationType===`replace`||m(e)}})}),x=()=>{let t=e.getState();if(t){let e=v(t);e!==null&&l(e,d())}};return globalThis.addEventListener(`pagehide`,x),{destroy:()=>{if(!h){h=!0,b(),globalThis.removeEventListener(`pagehide`,x);try{history.scrollRestoration=u}catch{}}}}}const v=new WeakMap;function y(e){let t=v.get(e);if(t!==void 0)return t;let n=`${e.name}:${b(e.params)}`;return v.set(e,n),n}function b(e){return JSON.stringify(e,x)}function x(e,t){if(typeof t==`function`)return`<fn>`;if(typeof t==`symbol`)return`<sym>`;if(typeof t==`object`&&t&&!Array.isArray(t)){let e=Object.create(null),n=Object.keys(t).sort((e,t)=>e.localeCompare(t));for(let r of n)e[r]=t[r];return e}return t}const S=Object.freeze({destroy:()=>{}}),C=e=>e.context?.url,w=e=>{let t=null,n=1/0,r=null,i=-1/0;for(let a of e){if(!a.isIntersecting)continue;let e=a.rootBounds?.top??0,o=a.boundingClientRect.top-e;o>=0?o<n&&(t=a,n=o):o>i&&(r=a,i=o)}return t??r},T=(e,t)=>{let n=null,r=e=>{let n=e.context;n&&n.url===void 0&&(console.warn(`[real-router] scroll-spy: state.context.url is not claimed. Spy requires browser-plugin or navigation-plugin. Disabling.`),t())},i=e.getState();if(i)r(i);else{let t=!1;n=e.subscribe(({route:e})=>{t||(t=!0,r(e),n?.(),n=null)})}return{destroy(){n?.(),n=null}}},E=e=>{let t=!1,n=null,r=null,i=null,a=()=>{n!==null&&(clearTimeout(n),n=null),i&&(r??globalThis).removeEventListener(`scrollend`,i),i=null,r=null,t=!1};return{get active(){return t},start(){a(),t=!0;let o=()=>{a()};i=o,r=e(),(r??globalThis).addEventListener(`scrollend`,o,{once:!0}),n=setTimeout(o,500)},destroy(){a()}}},D=(e,t)=>{let n=null,r=null;return{schedule(){n===null&&(n=requestAnimationFrame(()=>{n=null,r!==null&&clearTimeout(r),r=setTimeout(()=>{r=null,e()},t)}))},destroy(){n!==null&&(cancelAnimationFrame(n),n=null),r!==null&&(clearTimeout(r),r=null)}}},O=(e,t,n,r,i,a)=>{let o=new Set,s=new Map,c=!1,l=null,u=new IntersectionObserver(e=>{if(!a()){for(let t of e)s.set(t.target,t);r()}},{root:n(),rootMargin:t,threshold:0}),d=()=>{let t=n()??document,r;try{r=t.querySelectorAll(e)}catch{i();return}let a=new Set;for(let e of r){let t=e.id;t&&!c&&(a.has(t)&&(c=!0,console.warn(`[real-router] scroll-spy: duplicate id "${t}" observed. Selection picks the topmost visible match deterministically.`)),a.add(t)),!o.has(e)&&(u.observe(e),o.add(e))}},f=()=>{for(let e of o)e.isConnected||(u.unobserve(e),o.delete(e),s.delete(e));d()};d();let p=n()??document.body,m=new MutationObserver(()=>{l!==null&&clearTimeout(l),l=setTimeout(()=>{l=null,f()},250)});return m.observe(p,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`id`]}),{pending:s,destroy(){u.disconnect(),m.disconnect(),l!==null&&(clearTimeout(l),l=null),o.clear(),s.clear()}}};function k(e,t){if(typeof document>`u`||typeof IntersectionObserver>`u`)return S;let{selector:n}=t;if(!n)return S;let r=t.rootMargin??`-20% 0px -60% 0px`,i=t.scrollContainer,o=()=>i?.()??null,s=!1,c=!1,l=!1,u=()=>c||s,d=null,f=(0,a.getTransitionSource)(e),p=T(e,()=>{c=!0}),m=E(o),h=D(()=>{d?.()},150),g=O(n,r,o,()=>{h.schedule()},()=>{c||(c=!0,console.warn(`[real-router] scroll-spy: invalid selector "${n}". Disabling.`))},u);d=()=>{if(s||c){g.pending.clear();return}if(f.getSnapshot().isTransitioning||m.active||g.pending.size===0)return;let t=w(g.pending.values());if(g.pending.clear(),!t)return;let n=t.target.id;if(!n)return;let r=e.getState();if(!r||n===(C(r)?.hash??``))return;let i={hash:n,replace:!0,force:!0,hashChange:!0};l=!0,e.navigate(r.name,r.params,i).catch(()=>{}).finally(()=>{l=!1})};let _=e.subscribe(({route:e})=>{l||C(e)?.hashChanged&&m.start()});return{destroy(){s||(s=!0,_(),g.destroy(),h.destroy(),m.destroy(),p.destroy())}}}const A=Object.freeze({destroy:()=>{}});function j(e){if(typeof document>`u`||typeof document.startViewTransition!=`function`)return A;let t=null,n=null,r=!1,i=()=>{t?.(),t=null},a=e.subscribeLeave(({signal:e})=>{if(!e.aborted)return r=!1,i(),new Promise(a=>{let o=new Promise(e=>{t=e});e.addEventListener(`abort`,()=>{r||(i(),n?.skipTransition?.(),a())},{once:!0});try{n=document.startViewTransition(()=>(a(),o))}catch{i(),a()}})}),o=e.subscribe(()=>{let e=t;r=!0,t=null,e===null?n=null:setTimeout(()=>{e(),n=null},0)});return{destroy:()=>{a(),o(),n?.skipTransition?.(),n=null,i()}}}function M(e){return e.button===0&&!e.metaKey&&!e.altKey&&!e.ctrlKey&&!e.shiftKey}const N=/%[\dA-Fa-f]{2}/;function P(e){if(N.test(e))try{return encodeURI(decodeURIComponent(e)).replaceAll(`#`,`%23`)}catch{}return encodeURI(e).replaceAll(`#`,`%23`)}function F(e,t,n,r){try{let i=r?.hash,a;i!==void 0&&(a=i.startsWith(`#`)?i.slice(1):i);let o=e.buildUrl;if(o){let e=o(t,n,a===void 0?void 0:{hash:a});if(typeof e==`string`&&e.length>0)return e}let s=e.buildPath(t,n);if(typeof s!=`string`||s.length===0){console.error(`[real-router] Route "${t}" yielded an empty path. The element will render without an href attribute.`);return}return a?`${s}#${P(a)}`:s}catch{console.error(`[real-router] Route "${t}" is not defined. The element will render without an href attribute.`);return}}function I(e,t,n,r,i){let a={...i};r!==void 0&&(a.hash=r);let o=e.getState();if(o?.name===t&&V(o.params,n)){let e=o.context?.url?.hash??``;e!==(r??e)&&(a.force=!0,a.hashChange=!0)}return e.navigate(t,n,a)}const L=/\s/,R=/\S+/g;function z(e){return e?L.test(e)?e.match(R)??[]:[e]:[]}function B(e,t,n){if(e&&t){let e=z(t);if(e.length===0)return n??void 0;if(!n)return e.join(` `);let r=z(n),i=new Set(r);for(let t of e)i.has(t)||(i.add(t),r.push(t));return r.join(` `)}return n??void 0}function V(e,t){if(Object.is(e,t))return!0;if(!e||!t)return!1;let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;let r=e,i=t;for(let e of n)if(!Object.prototype.hasOwnProperty.call(t,e)||!Object.is(r[e],i[e]))return!1;return!0}function H(e,n,r=!1,i=!0,o){let c=s(),l=(0,t.useMemo)(()=>(0,a.createActiveRouteSource)(c,e,n,{strict:r,ignoreQueryParams:i,...o!==void 0&&{hash:o}}),[c,e,n,r,i,o]);return(0,t.useSyncExternalStore)(l.subscribe,l.getSnapshot,l.getSnapshot)}function U({children:e,fallback:n,onError:r}){let o=s(),c=(0,t.useMemo)(()=>(0,a.createDismissableError)(o),[o]),l=(0,t.useSyncExternalStore)(c.subscribe,c.getSnapshot,c.getSnapshot),u=(0,t.useRef)(r);return(0,t.useLayoutEffect)(()=>{u.current=r}),(0,t.useEffect)(()=>{l.error&&u.current?.(l.error,l.toRoute,l.fromRoute)},[l.version]),(0,i.jsxs)(i.Fragment,{children:[e,l.error?n(l.error,l.resetError):null]})}const W=()=>{let n=(0,t.useContext)(e.a);if(!n)throw Error(`useNavigator must be used within a RouterProvider`);return n},G=()=>(0,r.getRouteUtils)((0,o.getPluginApi)(s()).getTree());function K(){let e=(0,a.getTransitionSource)(s());return(0,t.useSyncExternalStore)(e.subscribe,e.getSnapshot,e.getSnapshot)}const q=({router:r,children:o,announceNavigation:s,scrollRestoration:c,scrollSpy:l,viewTransitions:u})=>{(0,t.useEffect)(()=>{if(!s)return;let e=d(r);return()=>{e.destroy()}},[s,r]);let f=c?.mode,p=c?.anchorScrolling,m=c?.behavior,h=c?.storageKey,g=c!==void 0;(0,t.useEffect)(()=>{if(!g)return;let e=_(r,{mode:f,anchorScrolling:p,behavior:m,storageKey:h,scrollContainer:c.scrollContainer});return()=>{e.destroy()}},[r,g,f,p,m,h]);let v=l?.selector,y=l?.rootMargin,b=l!==void 0&&v!==void 0&&v!==``;(0,t.useEffect)(()=>{if(!b)return;let e=k(r,{selector:v,rootMargin:y,scrollContainer:l.scrollContainer});return()=>{e.destroy()}},[r,b,v,y]),(0,t.useEffect)(()=>{if(!u)return;let e=j(r);return()=>{e.destroy()}},[r,u]);let x=(0,t.useMemo)(()=>(0,n.getNavigator)(r),[r]),S=(0,t.useMemo)(()=>(0,a.createRouteSource)(r),[r]),C=(0,t.useSyncExternalStore)(S.subscribe,S.getSnapshot,S.getSnapshot),w=(0,t.useMemo)(()=>({navigator:x,route:C.route,previousRoute:C.previousRoute}),[x,C]);return(0,i.jsx)(e.s.Provider,{value:r,children:(0,i.jsx)(e.a.Provider,{value:x,children:(0,i.jsx)(e.o.Provider,{value:w,children:o})})})};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return V}});
2
+ //# sourceMappingURL=RouterProvider-CPsCmrRw.js.map