@real-router/react 0.4.7 → 0.4.9
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.js +1 -1
- package/package.json +4 -4
package/dist/cjs/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
var e=require("react"),t=require("@real-router/helpers"),r=require("react/jsx-runtime"),u=require("@real-router/core"),o=Object.freeze({}),s=Object.freeze({});function n(t,r,u){const o=e.useRef(void 0),s=e.useRef(r),n=e.useRef(u);if(s.current=r,n.current=u,void 0===o.current){const e=t.getState(),r=!n.current||e&&n.current(e);o.current=s.current(r&&e?{route:e,previousRoute:void 0}:void 0)}const a=e.useCallback(()=>o.current,[]),i=e.useCallback(e=>t.subscribe(t=>{let r=!0;if(n.current&&(r=n.current(t.route,t.previousRoute)),!r)return;const u=s.current(t);Object.is(o.current,u)||(o.current=u,e())}),[t]);return e.useSyncExternalStore(i,a,a)}function a(t){const r=JSON.stringify(t);return e.useMemo(()=>t,[r])}var i=new WeakMap;var c=e.memo(({routeName:u,routeParams:i=o,routeOptions:c=s,className:l,activeClassName:v="active",activeStrict:m=!1,ignoreQueryParams:d=!0,onClick:p,target:R,router:f,children:g,...x})=>{const b=a(i),N=a(c),h=function(r,u,s=o,i=!1,c=!0){const l=a(s),v=e.useMemo(()=>function(e,t,r,u){return JSON.stringify({routeName:e,routeParams:t,activeStrict:r,ignoreQueryParams:u})}(u,l,i,c),[u,l,i,c]),m=e.useRef(void 0),d=e.useRef(void 0);d.current!==v&&(m.current=void 0,d.current=v);const p=e.useCallback((e,r)=>{const o=t.areRoutesRelated(u,e.name),s=r&&t.areRoutesRelated(u,r.name);return!(!o&&!s)},[u]),R=e.useCallback(e=>{const o=e?.route??r.getState();if(!o)return m.current=!1,!1;if(!t.areRoutesRelated(u,o.name))return m.current=!1,!1;const s=r.isActiveRoute(u,l,i,c);return m.current=s,s},[r,u,l,i,c]);return n(r,R,p)}(f,u,b,m,d),C=e.useMemo(()=>"function"==typeof f.buildUrl?f.buildUrl(u,b):f.buildPath(u,b),[f,u,b]),S=e.useCallback(e=>{p&&(p(e),e.defaultPrevented)||function(e){return!(0!==e.button||e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)&&"_blank"!==R&&(e.preventDefault(),f.navigate(u,b,N).catch(()=>{}))},[p,R,f,u,b,N]),y=e.useMemo(()=>h&&v?l?`${l} ${v}`.trim():v:l??void 0,[h,l,v]),{previousRoute:k,...O}=x;return r.jsx("a",{...O,href:C,className:y,onClick:S,"data-route":u,"data-active":h,children:g})},(e,t)=>e.router===t.router&&e.routeName===t.routeName&&JSON.stringify(e.routeParams)===JSON.stringify(t.routeParams)&&JSON.stringify(e.routeOptions)===JSON.stringify(t.routeOptions)&&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.children===t.children);c.displayName="BaseLink";var l=e.createContext(null),v=e.createContext(null),m=e.createContext(null),d=()=>{const t=e.use(v);if(!t)throw new Error("useRouter must be used within a RouterProvider");return t},p=()=>{const t=e.use(l);if(!t)throw new Error("useRoute must be used within a RouteProvider");return t};exports.BaseLink=c,exports.ConnectedLink=e=>{const t=d(),{route:u}=p(),{routeOptions:o,...s}=e;return r.jsx(c,{router:t,route:u,...s})},exports.Link=e=>{const t=d(),{route:u,previousRoute:o,routeOptions:s,...n}=e;return r.jsx(c,{router:t,...n})},exports.NavigatorContext=m,exports.RouteContext=l,exports.RouterContext=v,exports.RouterProvider=({router:t,children:o})=>{const s=e.useMemo(()=>u.getNavigator(t),[t]),n=e.useMemo(()=>{let e={route:t.getState(),previousRoute:void 0};return{getSnapshot:()=>e,subscribe:r=>t.subscribe(({route:t,previousRoute:u})=>{e={route:t,previousRoute:u},r()})}},[t]),a=e.useSyncExternalStore(n.subscribe,n.getSnapshot),i=e.useMemo(()=>({navigator:s,...a}),[s,a]);return r.jsx(v,{value:t,children:r.jsx(m,{value:s,children:r.jsx(l,{value:i,children:o})})})},exports.useNavigator=()=>{const t=e.use(m);if(!t)throw new Error("useNavigator must be used within a RouterProvider");return t},exports.useRoute=p,exports.useRouteNode=function(t){const r=d(),o=e.useMemo(()=>function(e,t){let r=i.get(e);r||(r=new Map,i.set(e,r));let u=r.get(t);if(!u){u=e.shouldUpdateNode(t);const o=u;u=(e,t)=>o(e,t),r.set(t,u)}return u}(r,t),[r,t]),s=e.useCallback(e=>{const u=e?.route??r.getState();return u&&""!==t&&u.name!==t&&!u.name.startsWith(`${t}.`)?{route:void 0,previousRoute:e?.previousRoute}:{route:u,previousRoute:e?.previousRoute}},[r,t]),a=n(r,s,o),c=e.useMemo(()=>u.getNavigator(r),[r]);return e.useMemo(()=>({navigator:c,route:a.route,previousRoute:a.previousRoute}),[c,a.route,a.previousRoute])},exports.useRouter=d;//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@real-router/react",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.9",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"description": "React integration for Real-Router",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
"license": "MIT",
|
|
49
49
|
"sideEffects": false,
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@real-router/core": "^0.
|
|
52
|
-
"@real-router/helpers": "^0.1.
|
|
51
|
+
"@real-router/core": "^0.27.0",
|
|
52
|
+
"@real-router/helpers": "^0.1.31"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@testing-library/dom": "10.4.1",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"@testing-library/react": "16.3.2",
|
|
58
58
|
"@testing-library/user-event": "14.6.1",
|
|
59
59
|
"vitest-react-profiler": "1.12.0",
|
|
60
|
-
"@real-router/browser-plugin": "^0.5.
|
|
60
|
+
"@real-router/browser-plugin": "^0.5.4"
|
|
61
61
|
},
|
|
62
62
|
"peerDependencies": {
|
|
63
63
|
"@types/react": ">=18.0.0",
|