@real-router/react 0.26.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.
- package/README.md +21 -2
- package/dist/cjs/{Await-whr-pcvo.d.ts → Await-D2oCO8nH.d.ts} +1 -1
- package/dist/cjs/{Await-whr-pcvo.d.ts.map → Await-D2oCO8nH.d.ts.map} +1 -1
- package/dist/cjs/{HttpStatusProvider-Dh6cMr95.d.ts → HttpStatusProvider-DfsVxZba.d.ts} +1 -1
- package/dist/cjs/{HttpStatusProvider-Dh6cMr95.d.ts.map → HttpStatusProvider-DfsVxZba.d.ts.map} +1 -1
- package/dist/cjs/{Link-tZAtICIG.js → Link-CyDwbrFA.js} +2 -2
- package/dist/cjs/{Link-tZAtICIG.js.map → Link-CyDwbrFA.js.map} +1 -1
- package/dist/cjs/{RouterErrorBoundary-BlJmaoyr.d.ts → RouterErrorBoundary-3UhUelqY.d.ts} +1 -1
- package/dist/cjs/{RouterErrorBoundary-BlJmaoyr.d.ts.map → RouterErrorBoundary-3UhUelqY.d.ts.map} +1 -1
- package/dist/cjs/RouterProvider-CPsCmrRw.js +2 -0
- package/dist/cjs/RouterProvider-CPsCmrRw.js.map +1 -0
- package/dist/cjs/RouterProvider-lgNarto1.d.ts +109 -0
- package/dist/cjs/RouterProvider-lgNarto1.d.ts.map +1 -0
- package/dist/cjs/{createHttpStatusSink-D_6IiR5E.js → createHttpStatusSink-ChfBL87y.js} +2 -2
- package/dist/cjs/{createHttpStatusSink-D_6IiR5E.js.map → createHttpStatusSink-ChfBL87y.js.map} +1 -1
- package/dist/cjs/index.d.ts +4 -4
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.react-server.d.ts +2 -2
- package/dist/cjs/ink.d.ts +2 -2
- package/dist/cjs/ink.js +1 -1
- package/dist/cjs/legacy.d.ts +3 -3
- package/dist/cjs/legacy.js +1 -1
- package/dist/cjs/legacy.ssr.d.ts +2 -2
- package/dist/cjs/legacy.ssr.js +1 -1
- package/dist/cjs/ssr.d.ts +3 -3
- package/dist/cjs/ssr.js +1 -1
- package/dist/cjs/ssr.react-server.d.ts +2 -2
- package/dist/cjs/{useDeferred-DE5YUsfa.d.ts → useDeferred-2fAqMTwr.d.ts} +1 -1
- package/dist/cjs/{useDeferred-DE5YUsfa.d.ts.map → useDeferred-2fAqMTwr.d.ts.map} +1 -1
- package/dist/cjs/useRoute-D2vAzKWM.js +2 -0
- package/dist/cjs/{useRoute-Dudo2K_0.js.map → useRoute-D2vAzKWM.js.map} +1 -1
- package/dist/cjs/{useRouteEnter-gfy65W0D.d.ts → useRouteEnter-CqO9sPPD.d.ts} +1 -1
- package/dist/cjs/{useRouteEnter-gfy65W0D.d.ts.map → useRouteEnter-CqO9sPPD.d.ts.map} +1 -1
- package/dist/cjs/{useRouterTransition-BfayPs0h.d.ts → useRouterTransition-D5nwRENd.d.ts} +2 -2
- package/dist/cjs/{useRouterTransition-BfayPs0h.d.ts.map → useRouterTransition-D5nwRENd.d.ts.map} +1 -1
- package/dist/esm/{Await-qSmJ-ZuN.d.mts → Await-D2oCO8nH.d.mts} +1 -1
- package/dist/esm/{Await-qSmJ-ZuN.d.mts.map → Await-D2oCO8nH.d.mts.map} +1 -1
- package/dist/esm/{HttpStatusProvider-Cy9GSANm.d.mts → HttpStatusProvider-DfsVxZba.d.mts} +1 -1
- package/dist/esm/{HttpStatusProvider-Cy9GSANm.d.mts.map → HttpStatusProvider-DfsVxZba.d.mts.map} +1 -1
- package/dist/esm/{Link-wVA25zEV.mjs → Link-uERoM4yk.mjs} +2 -2
- package/dist/esm/{Link-wVA25zEV.mjs.map → Link-uERoM4yk.mjs.map} +1 -1
- package/dist/esm/{RouterErrorBoundary-C-MH_yrP.d.mts → RouterErrorBoundary-3UhUelqY.d.mts} +1 -1
- package/dist/esm/{RouterErrorBoundary-C-MH_yrP.d.mts.map → RouterErrorBoundary-3UhUelqY.d.mts.map} +1 -1
- package/dist/esm/RouterProvider-DCchvq4n.d.mts +109 -0
- package/dist/esm/RouterProvider-DCchvq4n.d.mts.map +1 -0
- package/dist/esm/RouterProvider-DgHypQTJ.mjs +2 -0
- package/dist/esm/RouterProvider-DgHypQTJ.mjs.map +1 -0
- package/dist/esm/{createHttpStatusSink-BXWVamHE.mjs → createHttpStatusSink-CCocjF4h.mjs} +2 -2
- package/dist/esm/{createHttpStatusSink-BXWVamHE.mjs.map → createHttpStatusSink-CCocjF4h.mjs.map} +1 -1
- package/dist/esm/index.d.mts +4 -4
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/index.react-server.d.mts +2 -2
- package/dist/esm/ink.d.mts +2 -2
- package/dist/esm/ink.mjs +1 -1
- package/dist/esm/legacy.d.mts +3 -3
- package/dist/esm/legacy.mjs +1 -1
- package/dist/esm/legacy.ssr.d.mts +2 -2
- package/dist/esm/legacy.ssr.mjs +1 -1
- package/dist/esm/ssr.d.mts +3 -3
- package/dist/esm/ssr.mjs +1 -1
- package/dist/esm/ssr.react-server.d.mts +2 -2
- package/dist/esm/{useDeferred-B5Qy7ttQ.d.mts → useDeferred-2fAqMTwr.d.mts} +1 -1
- package/dist/esm/{useDeferred-B5Qy7ttQ.d.mts.map → useDeferred-2fAqMTwr.d.mts.map} +1 -1
- package/dist/esm/{useRoute-Bta1jyl2.mjs → useRoute-5MF3j-9P.mjs} +1 -1
- package/dist/esm/{useRoute-Bta1jyl2.mjs.map → useRoute-5MF3j-9P.mjs.map} +1 -1
- package/dist/esm/{useRouteEnter-CxjYofFa.d.mts → useRouteEnter-CqO9sPPD.d.mts} +1 -1
- package/dist/esm/{useRouteEnter-CxjYofFa.d.mts.map → useRouteEnter-CqO9sPPD.d.mts.map} +1 -1
- package/dist/esm/{useRouterTransition-CI1P95ZQ.d.mts → useRouterTransition-PCwA_qj1.d.mts} +2 -2
- package/dist/esm/{useRouterTransition-CI1P95ZQ.d.mts.map → useRouterTransition-PCwA_qj1.d.mts.map} +1 -1
- package/package.json +5 -5
- package/src/RouterProvider.tsx +29 -1
- package/dist/cjs/RouterProvider-DGrUfyLj.js +0 -2
- package/dist/cjs/RouterProvider-DGrUfyLj.js.map +0 -1
- package/dist/cjs/RouterProvider-DvC9mViF.d.ts +0 -48
- package/dist/cjs/RouterProvider-DvC9mViF.d.ts.map +0 -1
- package/dist/cjs/useRoute-Dudo2K_0.js +0 -2
- package/dist/esm/RouterProvider-D4B0f6wZ.mjs +0 -2
- package/dist/esm/RouterProvider-D4B0f6wZ.mjs.map +0 -1
- package/dist/esm/RouterProvider-D_ZlPVAC.d.mts +0 -48
- package/dist/esm/RouterProvider-D_ZlPVAC.d.mts.map +0 -1
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { a as RouteExitContext, c as useRouteExit, d as NotFoundProps, f as RouteViewProps, i as useRouteEnter, l as RouteView, n as RouteEnterHandler, o as RouteExitHandler, p as SelfProps, r as UseRouteEnterOptions, s as UseRouteExitOptions, t as RouteEnterContext, u as MatchProps } from "./useRouteEnter-
|
|
2
|
-
import { n as RouterErrorBoundaryProps, r as LinkProps, t as RouterErrorBoundary } from "./RouterErrorBoundary-
|
|
3
|
-
import { n as Link, t as RouterProvider } from "./RouterProvider-
|
|
4
|
-
import { a as useNavigator, i as useRouteUtils, n as useRouteNode, o as useRouter, r as useRoute, t as useRouterTransition } from "./useRouterTransition-
|
|
1
|
+
import { a as RouteExitContext, c as useRouteExit, d as NotFoundProps, f as RouteViewProps, i as useRouteEnter, l as RouteView, n as RouteEnterHandler, o as RouteExitHandler, p as SelfProps, r as UseRouteEnterOptions, s as UseRouteExitOptions, t as RouteEnterContext, u as MatchProps } from "./useRouteEnter-CqO9sPPD.js";
|
|
2
|
+
import { n as RouterErrorBoundaryProps, r as LinkProps, t as RouterErrorBoundary } from "./RouterErrorBoundary-3UhUelqY.js";
|
|
3
|
+
import { n as Link, t as RouterProvider } from "./RouterProvider-lgNarto1.js";
|
|
4
|
+
import { a as useNavigator, i as useRouteUtils, n as useRouteNode, o as useRouter, r as useRoute, t as useRouterTransition } from "./useRouterTransition-D5nwRENd.js";
|
|
5
5
|
import { Navigator } from "@real-router/core";
|
|
6
6
|
import { RouterTransitionSnapshot } from "@real-router/sources";
|
|
7
7
|
export { Link, type LinkProps, type Navigator, type RouteEnterContext, type RouteEnterHandler, type RouteExitContext, type RouteExitHandler, RouteView, type MatchProps as RouteViewMatchProps, type NotFoundProps as RouteViewNotFoundProps, type RouteViewProps, type SelfProps as RouteViewSelfProps, RouterErrorBoundary, type RouterErrorBoundaryProps, RouterProvider, type RouterTransitionSnapshot, type UseRouteEnterOptions, type UseRouteExitOptions, useNavigator, useRoute, useRouteEnter, useRouteExit, useRouteNode, useRouteUtils, useRouter, useRouterTransition };
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./useRoute-D2vAzKWM.js"),t=require("./RouterProvider-CPsCmrRw.js"),n=require("./Link-CyDwbrFA.js");let r=require("react"),i=require("@real-router/core"),a=require("@real-router/route-utils"),o=require("react/jsx-runtime");function s(e){return null}s.displayName=`RouteView.Match`;function c(e){return null}c.displayName=`RouteView.Self`;function l(e){return null}l.displayName=`RouteView.NotFound`;function u(e,t,n){return t===``?!1:n?e===t:(0,a.startsWithSegment)(e,t)}function d(e,t){r.Children.forEach(e,e=>{(0,r.isValidElement)(e)&&(e.type===s||e.type===c||e.type===l?t.push(e):d(e.props.children,t))})}function f(e,t,n,i,a){let s=a===void 0?e:(0,o.jsx)(r.Suspense,{fallback:a,children:e});return n?(0,o.jsx)(r.Activity,{mode:i,children:s},t):(0,o.jsx)(r.Fragment,{children:s},t)}function p(e,t){return e.type===l?(t.notFoundChildren=e.props.children,!0):e.type===c?(t.selfFound||=(t.selfChildren=e.props.children,t.selfFallback=e.props.fallback,!0),!0):!1}function m(e,t,n,r,i){let a=e.props,{segment:o,exact:s=!1,keepAlive:c=!1,fallback:l}=a,d=n?`${n}.${o}`:o;return!i&&u(t,d,s)?(r.add(d),{rendered:f(a.children,d,c,`visible`,l),matched:!0}):c&&r.has(d)?{rendered:f(a.children,d,c,`hidden`,l),matched:!1}:{rendered:null,matched:!1}}function h(e,t,n,a){if(a.selfFound&&t===n){e.push(f(a.selfChildren,`__route-view-self__`,!1,`visible`,a.selfFallback));return}t===i.UNKNOWN_ROUTE&&a.notFoundChildren!==null&&e.push((0,o.jsx)(r.Fragment,{children:a.notFoundChildren},`__route-view-not-found__`))}function g(e,t,n,r){let i={selfChildren:null,selfFallback:void 0,selfFound:!1,notFoundChildren:null},a=!1,o=[];for(let s of e){if(p(s,i))continue;let e=m(s,t,n,r,a);e.matched&&(a=!0),e.rendered!==null&&o.push(e.rendered)}return a||h(o,t,n,i),{rendered:o,activeMatchFound:a}}function _({nodeName:e,children:n}){let{route:i}=t.f(e),a=(0,r.useRef)(null);a.current??=new Set;let s=(0,r.useMemo)(()=>{let e=[];return d(n,e),e},[n]);if(!i)return null;let{rendered:c}=g(s,i.name,e,a.current);return c.length>0?(0,o.jsx)(o.Fragment,{children:c}):null}_.displayName=`RouteView`;const v=Object.assign(_,{Match:s,Self:c,NotFound:l});function y(e,n){let i=t.p(),a=(0,r.useRef)(e),o=n?.skipSameRoute??!0;(0,r.useLayoutEffect)(()=>{a.current=e}),(0,r.useEffect)(()=>i.subscribeLeave(({route:e,nextRoute:t,signal:n})=>{if(!(o&&e.name===t.name)&&!n.aborted)return a.current({route:e,nextRoute:t,signal:n})}),[i,o])}function b(t,n){let{route:i,previousRoute:a}=e.t(),o=(0,r.useRef)(t),s=(0,r.useRef)(null),c=n?.skipSameRoute??!0;(0,r.useLayoutEffect)(()=>{o.current=t}),(0,r.useEffect)(()=>{i.transition.from&&(c&&i.transition.from===i.name||s.current===i||!a||(s.current=i,o.current({route:i,previousRoute:a})))},[i,a,c])}exports.Link=n.t,exports.RouteView=v,exports.RouterErrorBoundary=t.a,exports.RouterProvider=t.t,exports.useNavigator=t.i,exports.useRoute=e.t,exports.useRouteEnter=b,exports.useRouteExit=y,exports.useRouteNode=t.f,exports.useRouteUtils=t.r,exports.useRouter=t.p,exports.useRouterTransition=t.n;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as RouteExitContext, d as NotFoundProps, f as RouteViewProps, n as RouteEnterHandler, o as RouteExitHandler, p as SelfProps, r as UseRouteEnterOptions, s as UseRouteExitOptions, t as RouteEnterContext, u as MatchProps } from "./useRouteEnter-
|
|
2
|
-
import { n as RouterErrorBoundaryProps, r as LinkProps } from "./RouterErrorBoundary-
|
|
1
|
+
import { a as RouteExitContext, d as NotFoundProps, f as RouteViewProps, n as RouteEnterHandler, o as RouteExitHandler, p as SelfProps, r as UseRouteEnterOptions, s as UseRouteExitOptions, t as RouteEnterContext, u as MatchProps } from "./useRouteEnter-CqO9sPPD.js";
|
|
2
|
+
import { n as RouterErrorBoundaryProps, r as LinkProps } from "./RouterErrorBoundary-3UhUelqY.js";
|
|
3
3
|
import { Navigator } from "@real-router/core";
|
|
4
4
|
import { RouterTransitionSnapshot } from "@real-router/sources";
|
|
5
5
|
export type { LinkProps, Navigator, RouteEnterContext, RouteEnterHandler, RouteExitContext, RouteExitHandler, MatchProps as RouteViewMatchProps, NotFoundProps as RouteViewNotFoundProps, RouteViewProps, SelfProps as RouteViewSelfProps, RouterErrorBoundaryProps, RouterTransitionSnapshot, UseRouteEnterOptions, UseRouteExitOptions };
|
package/dist/cjs/ink.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as RouterErrorBoundaryProps, t as RouterErrorBoundary } from "./RouterErrorBoundary-
|
|
2
|
-
import { a as useNavigator, i as useRouteUtils, n as useRouteNode, o as useRouter, r as useRoute, t as useRouterTransition } from "./useRouterTransition-
|
|
1
|
+
import { n as RouterErrorBoundaryProps, t as RouterErrorBoundary } from "./RouterErrorBoundary-3UhUelqY.js";
|
|
2
|
+
import { a as useNavigator, i as useRouteUtils, n as useRouteNode, o as useRouter, r as useRoute, t as useRouterTransition } from "./useRouterTransition-D5nwRENd.js";
|
|
3
3
|
import { FC, ReactNode } from "react";
|
|
4
4
|
import { NavigationOptions, Navigator, Params, Router } from "@real-router/core";
|
|
5
5
|
import { RouterTransitionSnapshot } from "@real-router/sources";
|
package/dist/cjs/ink.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./useRoute-D2vAzKWM.js"),t=require("./RouterProvider-CPsCmrRw.js");let n=require("react"),r=require("react/jsx-runtime"),i=require("ink");function a(e,t,n,r,i){return e?n??r??i:t?r??i:i}function o(e,n){return e.routeName===n.routeName&&e.activeStrict===n.activeStrict&&e.ignoreQueryParams===n.ignoreQueryParams&&e.color===n.color&&e.activeColor===n.activeColor&&e.focusColor===n.focusColor&&e.inverse===n.inverse&&e.activeInverse===n.activeInverse&&e.focusInverse===n.focusInverse&&e.id===n.id&&e.autoFocus===n.autoFocus&&e.onSelect===n.onSelect&&e.children===n.children&&t.u(e.routeParams,n.routeParams)&&t.u(e.routeOptions,n.routeOptions)}const s=(0,n.memo)(({routeName:n,routeParams:o=e.r,routeOptions:s=e.n,activeStrict:c=!1,ignoreQueryParams:l=!0,color:u,activeColor:d,focusColor:f,inverse:p,activeInverse:m,focusInverse:h,id:g,autoFocus:_,onSelect:v,children:y})=>{let b=t.p(),{isFocused:x}=(0,i.useFocus)({...g!==void 0&&{id:g},..._!==void 0&&{autoFocus:_}}),S=t.o(n,o,c,l);(0,i.useInput)((e,t)=>{t.return&&(v?.(),b.navigate(n,o,s).catch(()=>{}))},{isActive:x});let C=a(x,S,f,d,u),w=a(x,S,h,m,p),T={};return C!==void 0&&(T.color=C),w!==void 0&&(T.inverse=w),(0,r.jsx)(i.Text,{...T,children:y})},o);s.displayName=`InkLink`;const c=({router:e,children:n})=>(0,r.jsx)(t.t,{router:e,children:n});exports.InkLink=s,exports.InkRouterProvider=c,exports.RouterErrorBoundary=t.a,exports.useNavigator=t.i,exports.useRoute=e.t,exports.useRouteNode=t.f,exports.useRouteUtils=t.r,exports.useRouter=t.p,exports.useRouterTransition=t.n;
|
|
2
2
|
//# sourceMappingURL=ink.js.map
|
package/dist/cjs/legacy.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { n as RouterErrorBoundaryProps, r as LinkProps, t as RouterErrorBoundary } from "./RouterErrorBoundary-
|
|
2
|
-
import { n as Link, t as RouterProvider } from "./RouterProvider-
|
|
3
|
-
import { a as useNavigator, i as useRouteUtils, n as useRouteNode, o as useRouter, r as useRoute, t as useRouterTransition } from "./useRouterTransition-
|
|
1
|
+
import { n as RouterErrorBoundaryProps, r as LinkProps, t as RouterErrorBoundary } from "./RouterErrorBoundary-3UhUelqY.js";
|
|
2
|
+
import { n as Link, t as RouterProvider } from "./RouterProvider-lgNarto1.js";
|
|
3
|
+
import { a as useNavigator, i as useRouteUtils, n as useRouteNode, o as useRouter, r as useRoute, t as useRouterTransition } from "./useRouterTransition-D5nwRENd.js";
|
|
4
4
|
import { Navigator } from "@real-router/core";
|
|
5
5
|
import { RouterTransitionSnapshot } from "@real-router/sources";
|
|
6
6
|
export { Link, type LinkProps, type Navigator, RouterErrorBoundary, type RouterErrorBoundaryProps, RouterProvider, type RouterTransitionSnapshot, useNavigator, useRoute, useRouteNode, useRouteUtils, useRouter, useRouterTransition };
|
package/dist/cjs/legacy.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./useRoute-D2vAzKWM.js"),t=require("./RouterProvider-CPsCmrRw.js"),n=require("./Link-CyDwbrFA.js");exports.Link=n.t,exports.RouterErrorBoundary=t.a,exports.RouterProvider=t.t,exports.useNavigator=t.i,exports.useRoute=e.t,exports.useRouteNode=t.f,exports.useRouteUtils=t.r,exports.useRouter=t.p,exports.useRouterTransition=t.n;
|
package/dist/cjs/legacy.ssr.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { a as HttpStatusCode, c as StreamedProps, d as ClientOnly, f as ClientOnlyProps, i as createHttpStatusSink, l as ServerOnly, n as HttpStatusProviderProps, o as HttpStatusCodeProps, r as HttpStatusSink, s as Streamed, t as HttpStatusProvider, u as ServerOnlyProps } from "./HttpStatusProvider-
|
|
2
|
-
import { t as useDeferred } from "./useDeferred-
|
|
1
|
+
import { a as HttpStatusCode, c as StreamedProps, d as ClientOnly, f as ClientOnlyProps, i as createHttpStatusSink, l as ServerOnly, n as HttpStatusProviderProps, o as HttpStatusCodeProps, r as HttpStatusSink, s as Streamed, t as HttpStatusProvider, u as ServerOnlyProps } from "./HttpStatusProvider-DfsVxZba.js";
|
|
2
|
+
import { t as useDeferred } from "./useDeferred-2fAqMTwr.js";
|
|
3
3
|
export { ClientOnly, type ClientOnlyProps, HttpStatusCode, type HttpStatusCodeProps, HttpStatusProvider, type HttpStatusProviderProps, type HttpStatusSink, ServerOnly, type ServerOnlyProps, Streamed, type StreamedProps, createHttpStatusSink, useDeferred };
|
package/dist/cjs/legacy.ssr.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./createHttpStatusSink-ChfBL87y.js");exports.ClientOnly=e.s,exports.HttpStatusCode=e.n,exports.HttpStatusProvider=e.r,exports.ServerOnly=e.o,exports.Streamed=e.i,exports.createHttpStatusSink=e.t,exports.useDeferred=e.a;
|
package/dist/cjs/ssr.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as HttpStatusCode, c as StreamedProps, d as ClientOnly, f as ClientOnlyProps, i as createHttpStatusSink, l as ServerOnly, n as HttpStatusProviderProps, o as HttpStatusCodeProps, r as HttpStatusSink, s as Streamed, t as HttpStatusProvider, u as ServerOnlyProps } from "./HttpStatusProvider-
|
|
2
|
-
import { t as useDeferred } from "./useDeferred-
|
|
3
|
-
import { n as AwaitProps, t as Await } from "./Await-
|
|
1
|
+
import { a as HttpStatusCode, c as StreamedProps, d as ClientOnly, f as ClientOnlyProps, i as createHttpStatusSink, l as ServerOnly, n as HttpStatusProviderProps, o as HttpStatusCodeProps, r as HttpStatusSink, s as Streamed, t as HttpStatusProvider, u as ServerOnlyProps } from "./HttpStatusProvider-DfsVxZba.js";
|
|
2
|
+
import { t as useDeferred } from "./useDeferred-2fAqMTwr.js";
|
|
3
|
+
import { n as AwaitProps, t as Await } from "./Await-D2oCO8nH.js";
|
|
4
4
|
export { Await, type AwaitProps, ClientOnly, type ClientOnlyProps, HttpStatusCode, type HttpStatusCodeProps, HttpStatusProvider, type HttpStatusProviderProps, type HttpStatusSink, ServerOnly, type ServerOnlyProps, Streamed, type StreamedProps, createHttpStatusSink, useDeferred };
|
package/dist/cjs/ssr.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./createHttpStatusSink-ChfBL87y.js");let t=require("react");function n({name:n,children:r}){return r((0,t.use)(e.a(n)))}exports.Await=n,exports.ClientOnly=e.s,exports.HttpStatusCode=e.n,exports.HttpStatusProvider=e.r,exports.ServerOnly=e.o,exports.Streamed=e.i,exports.createHttpStatusSink=e.t,exports.useDeferred=e.a;
|
|
2
2
|
//# sourceMappingURL=ssr.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { c as StreamedProps, f as ClientOnlyProps, n as HttpStatusProviderProps, o as HttpStatusCodeProps, r as HttpStatusSink, u as ServerOnlyProps } from "./HttpStatusProvider-
|
|
2
|
-
import { n as AwaitProps } from "./Await-
|
|
1
|
+
import { c as StreamedProps, f as ClientOnlyProps, n as HttpStatusProviderProps, o as HttpStatusCodeProps, r as HttpStatusSink, u as ServerOnlyProps } from "./HttpStatusProvider-DfsVxZba.js";
|
|
2
|
+
import { n as AwaitProps } from "./Await-D2oCO8nH.js";
|
|
3
3
|
export type { AwaitProps, ClientOnlyProps, HttpStatusCodeProps, HttpStatusProviderProps, HttpStatusSink, ServerOnlyProps, StreamedProps };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDeferred-
|
|
1
|
+
{"version":3,"file":"useDeferred-2fAqMTwr.d.ts","names":[],"sources":["../../src/hooks/useDeferred.tsx"],"mappings":";;AA0BA;;;;;;;;;AAAgE;;;;;;;;;iBAAhD,WAAA,aAAA,CAAyB,GAAA,WAAc,OAAO,CAAC,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
let e=require("react");const t=(0,e.createContext)(null),n=(0,e.createContext)(null),r=(0,e.createContext)(null),i=Object.freeze({}),a=Object.freeze({}),o=new Promise(()=>{}),s=()=>{let n=(0,e.useContext)(t);if(!n)throw Error(`useRoute must be used within a RouterProvider`);if(!n.route)throw Error(`useRoute called with no active route. Did you forget to await router.start() before rendering, or is the router stopped/disposed?`);return n};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return s}});
|
|
2
|
+
//# sourceMappingURL=useRoute-D2vAzKWM.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRoute-
|
|
1
|
+
{"version":3,"file":"useRoute-D2vAzKWM.js","names":[],"sources":["../../src/context.ts","../../src/constants.ts","../../src/hooks/useRoute.tsx"],"sourcesContent":["import { createContext } from \"react\";\n\nimport type { RouteContext as RouteContextType } from \"./types\";\nimport type { Router, Navigator } from \"@real-router/core\";\n\n// All three contexts use the `<T | null>` shape with a `null` default. Hooks\n// (useRouter / useRoute / useNavigator) treat a `null` read as\n// \"RouterProvider missing\" and throw — this surfaces wiring mistakes loudly\n// instead of letting consumers chase an undefined router instance.\nexport const RouteContext = createContext<RouteContextType | null>(null);\n\nexport const RouterContext = createContext<Router | null>(null);\n\nexport const NavigatorContext = createContext<Navigator | null>(null);\n","export const EMPTY_PARAMS = Object.freeze({});\n\nexport const EMPTY_OPTIONS = Object.freeze({});\n\n// Singleton forever-pending promise — module-scope so `useDeferred(unknownKey)`\n// returns a stable reference across calls (Suspense boundary doesn't retry).\nexport const NEVER_PROMISE = new Promise<never>(() => {\n // Intentionally never resolves — surfaces a forever-pending Suspense boundary\n // when a key is requested that the loader never declared.\n});\n","import { useContext } from \"react\";\n\nimport { RouteContext } from \"../context\";\n\nimport type { RouteContext as RouteContextType } from \"../types\";\nimport type { Params, State } from \"@real-router/core\";\n\n/**\n * Return shape of `useRoute<P>()` — the context with `route` narrowed to\n * `State<P>` (non-nullable). Promoting the intersection to a named alias\n * keeps the function signature and the cast site in sync.\n */\ntype RouteHookResult<P extends Params = Params> = Omit<\n RouteContextType<P>,\n \"route\"\n> & { route: State<P> };\n\nexport const useRoute = <P extends Params = Params>(): RouteHookResult<P> => {\n const routeContext = useContext(RouteContext);\n\n if (!routeContext) {\n throw new Error(\"useRoute must be used within a RouterProvider\");\n }\n\n if (!routeContext.route) {\n throw new Error(\n \"useRoute called with no active route. Did you forget to await router.start() before rendering, or is the router stopped/disposed?\",\n );\n }\n\n return routeContext as RouteHookResult<P>;\n};\n"],"mappings":"uBASA,MAAa,GAAA,EAAA,EAAA,eAAsD,IAAI,EAE1D,GAAA,EAAA,EAAA,eAA6C,IAAI,EAEjD,GAAA,EAAA,EAAA,eAAmD,IAAI,ECbvD,EAAe,OAAO,OAAO,CAAC,CAAC,EAE/B,EAAgB,OAAO,OAAO,CAAC,CAAC,EAIhC,EAAgB,IAAI,YAAqB,CAGtD,CAAC,ECQY,MAAgE,CAC3E,IAAM,GAAA,EAAA,EAAA,YAA0B,CAAY,EAE5C,GAAI,CAAC,EACH,MAAU,MAAM,+CAA+C,EAGjE,GAAI,CAAC,EAAa,MAChB,MAAU,MACR,mIACF,EAGF,OAAO,CACT"}
|
|
@@ -276,4 +276,4 @@ interface UseRouteEnterOptions {
|
|
|
276
276
|
declare function useRouteEnter(handler: RouteEnterHandler, options?: UseRouteEnterOptions): void;
|
|
277
277
|
//#endregion
|
|
278
278
|
export { RouteExitContext as a, useRouteExit as c, NotFoundProps as d, RouteViewProps as f, useRouteEnter as i, RouteView as l, RouteEnterHandler as n, RouteExitHandler as o, SelfProps as p, UseRouteEnterOptions as r, UseRouteExitOptions as s, RouteEnterContext as t, MatchProps as u };
|
|
279
|
-
//# sourceMappingURL=useRouteEnter-
|
|
279
|
+
//# sourceMappingURL=useRouteEnter-CqO9sPPD.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRouteEnter-
|
|
1
|
+
{"version":3,"file":"useRouteEnter-CqO9sPPD.d.ts","names":[],"sources":["../../src/components/modern/RouteView/types.ts","../../src/components/modern/RouteView/components.tsx","../../src/components/modern/RouteView/RouteView.tsx","../../src/hooks/useRouteExit.tsx","../../src/hooks/useRouteEnter.tsx"],"mappings":";;;;UAEiB,cAAA;;WAEN,QAAA;EAFM;EAAA,SAIN,QAAA,EAAU,SAAS;AAAA;AAAA,UAGb,UAAA;EALN;EAAA,SAOA,OAAA;EALU;EAAA,SAOV,KAAA;EAPmB;EAAA,SASnB,SAAA;EANgB;EAAA,SAQhB,QAAA,GAAW,SAAA;EAEQ;EAAA,SAAnB,QAAA,EAAU,SAAS;AAAA;AAAA,UAGb,SAAA;EALN;;;;;AAEmB;EAFnB,SAYA,QAAA,GAAW,SAAA;EAPI;EAAA,SASf,QAAA,EAAU,SAAS;AAAA;AAAA,UAGb,aAAA;EALK;EAAA,SAOX,QAAA,EAAU,SAAS;AAAA;;;iBClCd,KAAA,CAAM,MAAkB,EAAV,UAAU;AAAA,kBAAxB,KAAA;EAAA,IAAK,WAAA;AAAA;AAAA,iBAML,IAAA,CAAK,MAAiB,EAAT,SAAS;AAAA,kBAAtB,IAAA;EAAA,IAAI,WAAA;AAAA;AAAA,iBAMJ,QAAA,CAAS,MAAqB,EAAb,aAAa;AAAA,kBAA9B,QAAA;EAAA,IAAQ,WAAA;AAAA;;;iBCLf,aAAA,CAAA;EACP,QAAA;EACA;AAAA,GACC,QAAA,CAAS,cAAA,IAAkB,YAAA;AAAA,kBAHrB,aAAA;EAAA,IAAa,WAAA;AAAA;AAAA,cAgDT,SAAA,SAAS,aAAA;;;;;;;UCnDL,gBAAA;;EAEf,KAAA,EAAO,KAAA;EHNQ;EGQf,SAAA,EAAW,KAAA;;;;;;;AHJiB;EGY5B,MAAA,EAAQ,WAAA;AAAA;AAAA,UAGO,mBAAA;EHFa;;;;;EGQ5B,aAAa;AAAA;AAAA,KAGH,gBAAA,IACV,OAAA,EAAS,gBAAA,YACC,OAAO;;AHbW;AAG9B;;;;;;;;;AAS8B;AAG9B;;;;AAE8B;;;;AClC9B;;;;AAAwC;;;;;;AAMxC;;;;AAAsC;;;;;;AAMtC;;;;AAA8C;;;;;;;;;ACPJ;;;;;;;;;;;;;;;;;;AAKA;AAAA;;;;;AA6C1C;;;;;;;;;;iBCgEgB,YAAA,CACd,OAAA,EAAS,gBAAA,EACT,OAAA,GAAU,mBAAmB;;;UCrHd,iBAAA;;EAEf,KAAA,EAAO,KAAA;EJNQ;EIQf,aAAA,EAAe,KAAK;AAAA;AAAA,KAGV,iBAAA,IAAqB,OAA0B,EAAjB,iBAAiB;AAAA,UAE1C,oBAAA;EJTN;;;AAAmB;AAG9B;EIYE,aAAa;AAAA;;;;;;;;;;AJFe;AAG9B;;;;;;;;;AAS8B;AAG9B;;;;AAE8B;;;;AClC9B;;;;AAAwC;;;;;;AAMxC;;;;AAAsC;;;;;;AAMtC;;;;AAA8C;;;;;;;;;ACPJ;;;;;;;;;;;;;;;;;;AAKA;iBE4F1B,aAAA,CACd,OAAA,EAAS,iBAAA,EACT,OAAA,GAAU,oBAAoB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as RouteContext } from "./RouterErrorBoundary-
|
|
1
|
+
import { i as RouteContext } from "./RouterErrorBoundary-3UhUelqY.js";
|
|
2
2
|
import { Navigator, Params, Router, State } from "@real-router/core";
|
|
3
3
|
import { RouteUtils } from "@real-router/route-utils";
|
|
4
4
|
import { RouterTransitionSnapshot } from "@real-router/sources";
|
|
@@ -53,4 +53,4 @@ declare function useRouteNode(nodeName: string): RouteContext;
|
|
|
53
53
|
declare function useRouterTransition(): RouterTransitionSnapshot;
|
|
54
54
|
//#endregion
|
|
55
55
|
export { useNavigator as a, useRouteUtils as i, useRouteNode as n, useRouter as o, useRoute as r, useRouterTransition as t };
|
|
56
|
-
//# sourceMappingURL=useRouterTransition-
|
|
56
|
+
//# sourceMappingURL=useRouterTransition-D5nwRENd.d.ts.map
|
package/dist/cjs/{useRouterTransition-BfayPs0h.d.ts.map → useRouterTransition-D5nwRENd.d.ts.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRouterTransition-
|
|
1
|
+
{"version":3,"file":"useRouterTransition-D5nwRENd.d.ts","names":[],"sources":["../../src/hooks/useRouter.tsx","../../src/hooks/useNavigator.tsx","../../src/hooks/useRouteUtils.tsx","../../src/hooks/useRoute.tsx","../../src/hooks/useRouteNode.tsx","../../src/hooks/useRouterTransition.tsx"],"mappings":";;;;;;cAMa,SAAA,QAAgB,MAQ5B;;;cCRY,YAAA,QAAmB,SAQ/B;;;;;;;;ADRD;;;;AAQC;;;;ACRD;;;;AAQC;;;;ACgBD;;cAAa,aAAA,QAAoB,UAIhC;;;;;;;AF5BD;KGMK,eAAA,WAA0B,MAAA,GAAS,MAAA,IAAU,IAAA,CAChD,YAAA,CAAiB,CAAA;EAEb,KAAA,EAAO,KAAA,CAAM,CAAA;AAAA;AAAA,cAEN,QAAA,aAAsB,MAAA,GAAS,MAAA,OAAW,eAAA,CAAgB,CAAA;;;iBCTvD,YAAA,CAAa,QAAA,WAAmB,YAAY;;;iBCD5C,mBAAA,CAAA,GAAuB,wBAAwB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Await-
|
|
1
|
+
{"version":3,"file":"Await-D2oCO8nH.d.mts","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-
|
|
143
|
+
//# sourceMappingURL=HttpStatusProvider-DfsVxZba.d.mts.map
|
package/dist/esm/{HttpStatusProvider-Cy9GSANm.d.mts.map → HttpStatusProvider-DfsVxZba.d.mts.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpStatusProvider-
|
|
1
|
+
{"version":3,"file":"HttpStatusProvider-DfsVxZba.d.mts","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
|
-
import{n as e,r as t}from"./useRoute-
|
|
2
|
-
//# sourceMappingURL=Link-
|
|
1
|
+
import{n as e,r as t}from"./useRoute-5MF3j-9P.mjs";import{c as n,d as r,l as i,o as a,p as o,s,u as c}from"./RouterProvider-DgHypQTJ.mjs";import{memo as l,useMemo as u}from"react";import{jsx as d}from"react/jsx-runtime";function f(e,t){return e.routeName===t.routeName&&e.className===t.className&&e.activeClassName===t.activeClassName&&e.activeStrict===t.activeStrict&&e.ignoreQueryParams===t.ignoreQueryParams&&e.onClick===t.onClick&&e.target===t.target&&e.style===t.style&&e.children===t.children&&e.hash===t.hash&&c(e.routeParams,t.routeParams)&&c(e.routeOptions,t.routeOptions)}const p=l(({routeName:c,routeParams:l=t,routeOptions:f=e,className:p,activeClassName:m=`active`,activeStrict:h=!1,ignoreQueryParams:g=!0,hash:_,onClick:v,target:y,children:b,...x})=>{let S=o(),C=a(c,l,h,g,_),w=n(S,c,l,_===void 0?void 0:{hash:_}),T=e=>{v&&(v(e),e.defaultPrevented)||!r(e.nativeEvent)||y===`_blank`||(e.preventDefault(),i(S,c,l,_,f).catch(()=>{}))},E=u(()=>s(C,m,p),[C,m,p]);return d(`a`,{...x,href:w,className:E,onClick:T,children:b})},f);p.displayName=`Link`;export{p as t};
|
|
2
|
+
//# sourceMappingURL=Link-uERoM4yk.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Link-
|
|
1
|
+
{"version":3,"file":"Link-uERoM4yk.mjs","names":[],"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":"4NAgBA,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,MACnB,EAAa,EAAK,YAAa,EAAK,WAAW,GAC/C,EAAa,EAAK,aAAc,EAAK,YAAY,CAErD,CAgFA,MAAa,EAAsB,GA9EF,CAC/B,YACA,cAAc,EACd,eAAe,EACf,YACA,kBAAkB,SAClB,eAAe,GACf,oBAAoB,GACpB,OACA,UACA,SACA,WACA,GAAG,KACC,CAMJ,IAAM,EAAS,EAAU,EAKnB,EAAW,EACf,EACA,EACA,EACA,EACA,CACF,EAQM,EAAO,EAAU,EAAQ,EAAW,EADvB,IAAS,IAAA,GAAY,IAAA,GAAY,CAAE,MAAK,CACM,EAM3D,EAAe,GAAuC,CACtD,IACF,EAAQ,CAAG,EAEP,EAAI,mBAKN,CAAC,EAAe,EAAI,WAAW,GAAK,IAAW,WAInD,EAAI,eAAe,EACnB,EAAiB,EAAQ,EAAW,EAAa,EAAM,CAAY,EAAE,UAC7D,CAAC,CACT,EACF,EAKM,EAAiB,MACf,EAAqB,EAAU,EAAiB,CAAS,EAC/D,CAAC,EAAU,EAAiB,CAAS,CACvC,EAEA,OACE,EAAC,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-
|
|
47
|
+
//# sourceMappingURL=RouterErrorBoundary-3UhUelqY.d.mts.map
|
package/dist/esm/{RouterErrorBoundary-C-MH_yrP.d.mts.map → RouterErrorBoundary-3UhUelqY.d.mts.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouterErrorBoundary-
|
|
1
|
+
{"version":3,"file":"RouterErrorBoundary-3UhUelqY.d.mts","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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { r as LinkProps } from "./RouterErrorBoundary-3UhUelqY.mjs";
|
|
2
|
+
import { FC, ReactNode } from "react";
|
|
3
|
+
import { NavigationOptions, Params, Router, State } from "@real-router/core";
|
|
4
|
+
|
|
5
|
+
//#region src/components/Link.d.ts
|
|
6
|
+
declare const Link: FC<LinkProps>;
|
|
7
|
+
//#endregion
|
|
8
|
+
//#region ../../shared/dom-utils/scroll-restore.d.ts
|
|
9
|
+
type ScrollRestorationMode = "restore" | "top" | "native";
|
|
10
|
+
interface ScrollRestorationOptions {
|
|
11
|
+
mode?: ScrollRestorationMode | undefined;
|
|
12
|
+
anchorScrolling?: boolean | undefined;
|
|
13
|
+
scrollContainer?: (() => HTMLElement | null) | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* Scroll behavior passed to `scrollTo({ behavior })` and
|
|
16
|
+
* `scrollIntoView({ behavior })`.
|
|
17
|
+
*
|
|
18
|
+
* - `"auto"` (default) — browser-defined, usually instant.
|
|
19
|
+
* - `"instant"` — explicit instant jump (no animation).
|
|
20
|
+
* - `"smooth"` — animated transition. Note: smooth restore on back/traverse
|
|
21
|
+
* can feel disorienting if the user expects to land at the saved position
|
|
22
|
+
* immediately. Recommended for `mode: "top"` or anchor scroll only.
|
|
23
|
+
*
|
|
24
|
+
* See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/ScrollToOptions/behavior).
|
|
25
|
+
*/
|
|
26
|
+
behavior?: ScrollBehavior | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* sessionStorage key used to persist saved scroll positions. Default:
|
|
29
|
+
* `"real-router:scroll"`. Override only when multiple independent
|
|
30
|
+
* `RouterProvider` instances share the same document and you need to
|
|
31
|
+
* isolate their scroll stores (e.g. micro-frontends, embedded widgets,
|
|
32
|
+
* or testing). For a single app with one provider the default is fine.
|
|
33
|
+
*/
|
|
34
|
+
storageKey?: string | undefined;
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
//#region ../../shared/dom-utils/scroll-spy.d.ts
|
|
38
|
+
/**
|
|
39
|
+
* Router-coordinated scroll spy (#575).
|
|
40
|
+
*
|
|
41
|
+
* On `IntersectionObserver` notifications the utility picks the topmost
|
|
42
|
+
* visible anchor inside the configured scroll container and emits a forced
|
|
43
|
+
* same-route transition with `{ hash, replace: true, force: true, hashChange:
|
|
44
|
+
* true }` through `router.navigate(...)`. The URL plugin
|
|
45
|
+
* (`@real-router/browser-plugin` or `@real-router/navigation-plugin`) updates
|
|
46
|
+
* `state.context.url.hash` so sibling hash-aware `<Link hash>` re-highlights
|
|
47
|
+
* via the standard `createActiveRouteSource` pipeline.
|
|
48
|
+
*
|
|
49
|
+
* **Anti-flicker gates** (RFC §5.2):
|
|
50
|
+
* 1. `getTransitionSource(router).getSnapshot().isTransitioning` — skip emits
|
|
51
|
+
* while a transition is in-flight (re-entrant lock).
|
|
52
|
+
* 2. `coolingDown` — set on a user-driven hash transition (e.g. `<Link hash>`
|
|
53
|
+
* click + smooth `scrollIntoView`). Cleared on `scrollend` or after a
|
|
54
|
+
* 500ms safety timeout. Spy's own emits are excluded via the synchronous
|
|
55
|
+
* `selfEmitting` flag — required so the spy doesn't rate-limit itself.
|
|
56
|
+
*
|
|
57
|
+
* **Self-healing** (RFC §7.3): if the initial URL contains a hash without a
|
|
58
|
+
* matching `id` (e.g. `/page#nonexistent`), the first IO event emitted right
|
|
59
|
+
* after observe()-ing picks the topmost real anchor and corrects the URL.
|
|
60
|
+
*
|
|
61
|
+
* **Hash-only transition pipeline cost** (RFC §5.3): for same-route same-
|
|
62
|
+
* params hash-only navigations, `getTransitionPath` returns empty
|
|
63
|
+
* `toDeactivate` / `toActivate` arrays, so `runGuards` is a no-op. The only
|
|
64
|
+
* work is the URL plugin's `onTransitionSuccess` write and the
|
|
65
|
+
* `getTransitionSource` flip — cheap.
|
|
66
|
+
*
|
|
67
|
+
* **Architecture**: decomposed into 4 private subsystem closure factories
|
|
68
|
+
* (`createUrlPluginDetector`, `createCooldown`, `createDebouncer`,
|
|
69
|
+
* `createObserverPair`). The main `createScrollSpy` wires them together
|
|
70
|
+
* around the shared `silenced` / `destroyed` / `selfEmitting` flags and the
|
|
71
|
+
* `flush()` emit logic. Each subsystem owns its state + cleanup; `destroy()`
|
|
72
|
+
* delegates to each. See section banners below.
|
|
73
|
+
*
|
|
74
|
+
* @returns A `ScrollSpy` handle whose `destroy()` is idempotent.
|
|
75
|
+
*/
|
|
76
|
+
interface ScrollSpyOptions {
|
|
77
|
+
/**
|
|
78
|
+
* CSS selector for anchor candidates. Empty string `""` or `undefined`
|
|
79
|
+
* disables the spy (returns a NOOP handle). Common values:
|
|
80
|
+
* `"[id]"`, `"[id]:is(h1,h2,h3)"`, `"section[id]"`.
|
|
81
|
+
*/
|
|
82
|
+
selector: string;
|
|
83
|
+
/**
|
|
84
|
+
* `IntersectionObserver` `rootMargin`. Default
|
|
85
|
+
* `"-20% 0px -60% 0px"` — an anchor is considered "active" once it crosses
|
|
86
|
+
* into the top 20 % of the viewport (or scroll container).
|
|
87
|
+
*/
|
|
88
|
+
rootMargin?: string | undefined;
|
|
89
|
+
/**
|
|
90
|
+
* Lazy getter for the scrollable container. Resolved on every event.
|
|
91
|
+
* `null` (or missing getter) falls back to the window viewport
|
|
92
|
+
* (`root: null` on the `IntersectionObserver`).
|
|
93
|
+
*/
|
|
94
|
+
scrollContainer?: (() => HTMLElement | null) | undefined;
|
|
95
|
+
}
|
|
96
|
+
//#endregion
|
|
97
|
+
//#region src/RouterProvider.d.ts
|
|
98
|
+
interface RouteProviderProps {
|
|
99
|
+
router: Router;
|
|
100
|
+
children: ReactNode;
|
|
101
|
+
announceNavigation?: boolean;
|
|
102
|
+
scrollRestoration?: ScrollRestorationOptions;
|
|
103
|
+
scrollSpy?: ScrollSpyOptions;
|
|
104
|
+
viewTransitions?: boolean;
|
|
105
|
+
}
|
|
106
|
+
declare const RouterProvider: FC<RouteProviderProps>;
|
|
107
|
+
//#endregion
|
|
108
|
+
export { Link as n, RouterProvider as t };
|
|
109
|
+
//# sourceMappingURL=RouterProvider-DCchvq4n.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouterProvider-DCchvq4n.d.mts","names":[],"sources":["../../src/components/Link.tsx","../../../../shared/dom-utils/scroll-restore.ts","../../../../shared/dom-utils/scroll-spy.ts","../../src/RouterProvider.tsx"],"mappings":";;;;;cAkHa,IAAA,EAAM,EAAE,CAAC,SAAA;;;KChGV,qBAAA;AAAA,UAEK,wBAAA;EACf,IAAA,GAAO,qBAAA;EACP,eAAA;EACA,eAAA,UAAyB,WAAA;ED2FyC;;;AAArC;;;;AChG/B;;;;AAAiC;EAkB/B,QAAA,GAAW,cAAA;EAhB4B;;;;;;;EAwBvC,UAAA;AAAA;;;;;;;ADsEF;;;;AAA+B;;;;AChG/B;;;;AAAiC;AAEjC;;;;;;;;;;;;;;;;;AAwBY;;;;UCFK,gBAAA;EAAgB;;;;;EAM/B,QAAA;EAcyB;;AAAW;;;EAPpC,UAAA;ECvCe;;;;;ED8Cf,eAAA,UAAyB,WAAW;AAAA;;;UC9CrB,kBAAA;EACf,MAAA,EAAQ,MAAA;EACR,QAAA,EAAU,SAAA;EACV,kBAAA;EACA,iBAAA,GAAoB,wBAAA;EACpB,SAAA,GAAY,gBAAA;EACZ,eAAA;AAAA;AAAA,cAGW,cAAA,EAAgB,EAAE,CAAC,kBAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as e,o as t,s as n}from"./useRoute-5MF3j-9P.mjs";import{useContext as r,useEffect as i,useLayoutEffect as a,useMemo as o,useRef as s,useSyncExternalStore as c}from"react";import{getNavigator as l}from"@real-router/core";import{getRouteUtils as u}from"@real-router/route-utils";import{Fragment as d,jsx as f,jsxs as p}from"react/jsx-runtime";import{createActiveRouteSource as m,createDismissableError as h,createRouteNodeSource as g,createRouteSource as _,getTransitionSource as v}from"@real-router/sources";import{getPluginApi as y}from"@real-router/core/api";const b=()=>{let e=r(n);if(!e)throw Error(`useRouter must be used within a RouterProvider`);return e};function x(e){let t=b(),n=o(()=>g(t,e),[t,e]),r=c(n.subscribe,n.getSnapshot,n.getSnapshot),i=l(t);return o(()=>({navigator:i,route:r.route,previousRoute:r.previousRoute}),[i,r])}const S=`data-real-router-announcer`,C=Object.freeze({destroy:()=>{}});function w(e,t){if(typeof document>`u`)return C;let n=t?.prefix??`Navigated to `,r=t?.getAnnouncementText,i=!0,a=!1,o=!1,s=``,c=null,l,u=T(),d=(e,t)=>{s=e,clearTimeout(l),u.textContent=e,l=setTimeout(()=>{u.textContent=``,s=``},7e3),O(t)},f=setTimeout(()=>{if(a=!0,c!==null&&!o){let e=c;c=null,d(e,document.querySelector(`h1`))}},100),p=e.subscribe(({route:e})=>{if(i){i=!1;return}requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(o)return;let t=document.querySelector(`h1`),i=D(e,n,r,t);if(!(!i||i===s)){if(!a){c=i;return}d(i,t)}})})});return{destroy(){o=!0,p(),clearTimeout(l),clearTimeout(f),E()}}}function T(){let e=document.querySelector(`[${S}]`);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(S,``),(document.body??document.documentElement).prepend(t),t}function E(){document.querySelector(`[${S}]`)?.remove()}function D(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 O(e){e&&(e.hasAttribute(`tabindex`)||e.setAttribute(`tabindex`,`-1`),e.focus({preventScroll:!0}))}const k=Object.freeze({destroy:()=>{}});function A(e,t){if(globalThis.window===void 0)return k;let n=t?.mode??`restore`;if(n===`native`)return k;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,g=!1,_=e=>{try{return M(e)}catch{return g||(g=!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}},v=e.subscribe(({route:e,previousRoute:t})=>{let r=e.context.navigation;if(t){let e=_(t);e!==null&&l(e,d())}requestAnimationFrame(()=>{if(!h){if(n===`top`){m(e);return}if(e.transition.reload||r?.navigationType===`reload`){let t=_(e);p(t===null?0:c()[t]??0);return}if(r?.direction===`back`||r?.navigationType===`traverse`){let t=_(e);p(t===null?0:c()[t]??0);return}e.transition.replace||r?.navigationType===`replace`||m(e)}})}),y=()=>{let t=e.getState();if(t){let e=_(t);e!==null&&l(e,d())}};return globalThis.addEventListener(`pagehide`,y),{destroy:()=>{if(!h){h=!0,v(),globalThis.removeEventListener(`pagehide`,y);try{history.scrollRestoration=u}catch{}}}}}const j=new WeakMap;function M(e){let t=j.get(e);if(t!==void 0)return t;let n=`${e.name}:${ee(e.params)}`;return j.set(e,n),n}function ee(e){return JSON.stringify(e,N)}function N(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 P=Object.freeze({destroy:()=>{}}),F=e=>e.context?.url,I=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},L=(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}}},R=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()}}},z=(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)}}},B=(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 V(e,t){if(typeof document>`u`||typeof IntersectionObserver>`u`)return P;let{selector:n}=t;if(!n)return P;let r=t.rootMargin??`-20% 0px -60% 0px`,i=t.scrollContainer,a=()=>i?.()??null,o=!1,s=!1,c=!1,l=()=>s||o,u=null,d=v(e),f=L(e,()=>{s=!0}),p=R(a),m=z(()=>{u?.()},150),h=B(n,r,a,()=>{m.schedule()},()=>{s||(s=!0,console.warn(`[real-router] scroll-spy: invalid selector "${n}". Disabling.`))},l);u=()=>{if(o||s){h.pending.clear();return}if(d.getSnapshot().isTransitioning||p.active||h.pending.size===0)return;let t=I(h.pending.values());if(h.pending.clear(),!t)return;let n=t.target.id;if(!n)return;let r=e.getState();if(!r||n===(F(r)?.hash??``))return;let i={hash:n,replace:!0,force:!0,hashChange:!0};c=!0,e.navigate(r.name,r.params,i).catch(()=>{}).finally(()=>{c=!1})};let g=e.subscribe(({route:e})=>{c||F(e)?.hashChanged&&p.start()});return{destroy(){o||(o=!0,g(),h.destroy(),m.destroy(),p.destroy(),f.destroy())}}}const H=Object.freeze({destroy:()=>{}});function U(e){if(typeof document>`u`||typeof document.startViewTransition!=`function`)return H;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 W(e){return e.button===0&&!e.metaKey&&!e.altKey&&!e.ctrlKey&&!e.shiftKey}const G=/%[\dA-Fa-f]{2}/;function K(e){if(G.test(e))try{return encodeURI(decodeURIComponent(e)).replaceAll(`#`,`%23`)}catch{}return encodeURI(e).replaceAll(`#`,`%23`)}function q(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}#${K(a)}`:s}catch{console.error(`[real-router] Route "${t}" is not defined. The element will render without an href attribute.`);return}}function J(e,t,n,r,i){let a={...i};r!==void 0&&(a.hash=r);let o=e.getState();if(o?.name===t&&$(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 Y=/\s/,X=/\S+/g;function Z(e){return e?Y.test(e)?e.match(X)??[]:[e]:[]}function Q(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 $(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 te(e,t,n=!1,r=!0,i){let a=b(),s=o(()=>m(a,e,t,{strict:n,ignoreQueryParams:r,...i!==void 0&&{hash:i}}),[a,e,t,n,r,i]);return c(s.subscribe,s.getSnapshot,s.getSnapshot)}function ne({children:e,fallback:t,onError:n}){let r=b(),l=o(()=>h(r),[r]),u=c(l.subscribe,l.getSnapshot,l.getSnapshot),f=s(n);return a(()=>{f.current=n}),i(()=>{u.error&&f.current?.(u.error,u.toRoute,u.fromRoute)},[u.version]),p(d,{children:[e,u.error?t(u.error,u.resetError):null]})}const re=()=>{let t=r(e);if(!t)throw Error(`useNavigator must be used within a RouterProvider`);return t},ie=()=>u(y(b()).getTree());function ae(){let e=v(b());return c(e.subscribe,e.getSnapshot,e.getSnapshot)}const oe=({router:r,children:a,announceNavigation:s,scrollRestoration:u,scrollSpy:d,viewTransitions:p})=>{i(()=>{if(!s)return;let e=w(r);return()=>{e.destroy()}},[s,r]);let m=u?.mode,h=u?.anchorScrolling,g=u?.behavior,v=u?.storageKey,y=u!==void 0;i(()=>{if(!y)return;let e=A(r,{mode:m,anchorScrolling:h,behavior:g,storageKey:v,scrollContainer:u.scrollContainer});return()=>{e.destroy()}},[r,y,m,h,g,v]);let b=d?.selector,x=d?.rootMargin,S=d!==void 0&&b!==void 0&&b!==``;i(()=>{if(!S)return;let e=V(r,{selector:b,rootMargin:x,scrollContainer:d.scrollContainer});return()=>{e.destroy()}},[r,S,b,x]),i(()=>{if(!p)return;let e=U(r);return()=>{e.destroy()}},[r,p]);let C=o(()=>l(r),[r]),T=o(()=>_(r),[r]),E=c(T.subscribe,T.getSnapshot,T.getSnapshot),D=o(()=>({navigator:C,route:E.route,previousRoute:E.previousRoute}),[C,E]);return f(n.Provider,{value:r,children:f(e.Provider,{value:C,children:f(t.Provider,{value:D,children:a})})})};export{ne as a,q as c,W as d,x as f,re as i,J as l,ae as n,te as o,b as p,ie as r,Q as s,oe as t,$ as u};
|
|
2
|
+
//# sourceMappingURL=RouterProvider-DgHypQTJ.mjs.map
|