@real-router/react 0.1.4 → 0.1.5
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/dist/cjs/index.d.ts +65 -1798
- package/dist/cjs/index.js +1 -1
- package/dist/esm/index.d.mts +65 -1798
- package/package.json +4 -4
package/dist/cjs/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
var e=require("react"),r=require("@real-router/helpers"),t=require("react/jsx-runtime"),u=Object.freeze({}),o=Object.freeze({});function s(r,t,u){const o=e.useRef(void 0),s=e.useRef(t),n=e.useRef(u);if(s.current=t,n.current=u,void 0===o.current){const e=r.getState(),t=!n.current||e&&n.current(e);o.current=s.current(t&&e?{route:e,previousRoute:void 0}:void 0)}const a=e.useCallback(()=>o.current,[]),i=e.useCallback(e=>r.subscribe(r=>{let t=!0;if(n.current&&(t=n.current(r.route,r.previousRoute)),!t)return;const u=s.current(r);Object.is(o.current,u)||(o.current=u,e())}),[r]);return e.useSyncExternalStore(i,a,a)}function n(r){const t=JSON.stringify(r);return e.useMemo(()=>r,[t])}var a=new WeakMap;var i=e.memo(({routeName:a,routeParams:i=u,routeOptions:c=o,className:l,activeClassName:v="active",activeStrict:d=!1,ignoreQueryParams:m=!0,onClick:p,successCallback:R,errorCallback:f,target:b,router:C,children:g,...x})=>{const k=n(i),N=n(c),S=function(t,o,a=u,i=!1,c=!0){const l=n(a),v=e.useMemo(()=>function(e,r,t,u){return JSON.stringify({routeName:e,routeParams:r,activeStrict:t,ignoreQueryParams:u})}(o,l,i,c),[o,l,i,c]),d=e.useRef(void 0),m=e.useRef(void 0);m.current!==v&&(d.current=void 0,m.current=v);const p=e.useCallback((e,t)=>{const u=r.areRoutesRelated(o,e.name),s=t&&r.areRoutesRelated(o,t.name);return!(!u&&!s)},[o]),R=e.useCallback(e=>{const u=e?.route??t.getState();if(!u)return d.current=!1,!1;if(!r.areRoutesRelated(o,u.name))return d.current=!1,!1;const s=t.isActiveRoute(o,l,i,c);return d.current=s,s},[t,o,l,i,c]);return s(t,R,p)}(C,a,k,d,m),h=e.useMemo(()=>"buildUrl"in C&&"function"==typeof C.buildUrl?C.buildUrl(a,k):C.buildPath(a,k),[C,a,k]),y=e.useCallback(e=>{if(p&&(p(e),e.defaultPrevented))return;if(!function(e){return!(0!==e.button||e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||"_blank"===b)return;e.preventDefault();const r=R||f?(e,r)=>{e?f?.(e):R?.(r)}:void 0;r?C.navigate(a,k,N,r):C.navigate(a,k,N)},[p,b,C,a,k,N,R,f]),P=e.useMemo(()=>S&&v?l?`${l} ${v}`.trim():v:l??void 0,[S,l,v]),{previousRoute:O,...j}=x;return t.jsx("a",{...j,href:h,className:P,onClick:y,"data-route":a,"data-active":S,children:g})},(e,r)=>e.router===r.router&&e.routeName===r.routeName&&JSON.stringify(e.routeParams)===JSON.stringify(r.routeParams)&&JSON.stringify(e.routeOptions)===JSON.stringify(r.routeOptions)&&e.className===r.className&&e.activeClassName===r.activeClassName&&e.activeStrict===r.activeStrict&&e.ignoreQueryParams===r.ignoreQueryParams&&e.onClick===r.onClick&&e.successCallback===r.successCallback&&e.errorCallback===r.errorCallback&&e.target===r.target&&e.children===r.children);i.displayName="BaseLink";var c=e.createContext(null),l=e.createContext(null),v=()=>{const r=e.useContext(c);if(!r)throw new Error("useRoute must be used within a RouteProvider");return r},d=()=>{const r=e.useContext(l);if(!r)throw new Error("useRouter must be used within a RouterProvider");return r};exports.BaseLink=i,exports.ConnectedLink=e=>{const{router:r,route:u}=v(),{routeOptions:o,...s}=e;return t.jsx(i,{router:r,route:u,...s})},exports.Link=e=>{const r=d(),{route:u,previousRoute:o,routeOptions:s,...n}=e;return t.jsx(i,{router:r,...n})},exports.RouteContext=c,exports.RouterContext=l,exports.RouterProvider=({router:r,children:u})=>{const o=e.useMemo(()=>{let e={route:r.getState(),previousRoute:void 0};return{getSnapshot:()=>e,subscribe:t=>r.subscribe(({route:r,previousRoute:u})=>{e={route:r,previousRoute:u},t()})}},[r]),s=e.useSyncExternalStore(o.subscribe,o.getSnapshot);return t.jsx(l.Provider,{value:r,children:t.jsx(c.Provider,{value:{router:r,...s},children:u})})},exports.useRoute=v,exports.useRouteNode=function(r){const t=d(),u=e.useMemo(()=>function(e,r){let t=a.get(e);t||(t=new Map,a.set(e,t));let u=t.get(r);if(!u){u=e.shouldUpdateNode(r);const o=u;u=(e,r)=>o(e,r),t.set(r,u)}return u}(t,r),[t,r]),o=e.useCallback(e=>{const u=e?.route??t.getState();return u&&""!==r&&u.name!==r&&!u.name.startsWith(`${r}.`)?{route:void 0,previousRoute:e?.previousRoute}:{route:u,previousRoute:e?.previousRoute}},[t,r]),n=s(t,o,u);return e.useMemo(()=>({router:t,route:n.route,previousRoute:n.previousRoute}),[t,n.route,n.previousRoute])},exports.useRouter=d;//# sourceMappingURL=index.js.map
|