@real-router/react 0.1.3 → 0.1.4
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 +14 -14
package/dist/cjs/index.js
CHANGED
|
@@ -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
|
|
1
|
+
"use strict";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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@real-router/react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"description": "React integration for Real-Router",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|
|
@@ -27,14 +27,6 @@
|
|
|
27
27
|
"bugs": {
|
|
28
28
|
"url": "https://github.com/greydragon888/real-router/issues"
|
|
29
29
|
},
|
|
30
|
-
"scripts": {
|
|
31
|
-
"build": "tsup",
|
|
32
|
-
"test": "vitest",
|
|
33
|
-
"type-check": "tsc --noEmit",
|
|
34
|
-
"lint": "eslint --cache --ext .ts,.tsx src/ tests/ --fix",
|
|
35
|
-
"lint:package": "publint",
|
|
36
|
-
"lint:types": "attw --pack ."
|
|
37
|
-
},
|
|
38
30
|
"keywords": [
|
|
39
31
|
"router",
|
|
40
32
|
"html5",
|
|
@@ -54,8 +46,8 @@
|
|
|
54
46
|
"license": "MIT",
|
|
55
47
|
"sideEffects": false,
|
|
56
48
|
"dependencies": {
|
|
57
|
-
"@real-router/core": "
|
|
58
|
-
"@real-router/helpers": "
|
|
49
|
+
"@real-router/core": "^0.2.3",
|
|
50
|
+
"@real-router/helpers": "^0.1.4"
|
|
59
51
|
},
|
|
60
52
|
"devDependencies": {
|
|
61
53
|
"@testing-library/dom": "10.4.1",
|
|
@@ -65,10 +57,18 @@
|
|
|
65
57
|
"vitest-react-profiler": "1.12.0"
|
|
66
58
|
},
|
|
67
59
|
"peerDependencies": {
|
|
68
|
-
"@real-router/browser-plugin": "workspace:^",
|
|
69
60
|
"@types/react": ">=18.0.0",
|
|
70
61
|
"@types/react-dom": ">=18.0.0",
|
|
71
62
|
"react": ">=18.0.0",
|
|
72
|
-
"react-dom": ">=18.0.0"
|
|
63
|
+
"react-dom": ">=18.0.0",
|
|
64
|
+
"@real-router/browser-plugin": "^0.1.4"
|
|
65
|
+
},
|
|
66
|
+
"scripts": {
|
|
67
|
+
"build": "tsup",
|
|
68
|
+
"test": "vitest",
|
|
69
|
+
"type-check": "tsc --noEmit",
|
|
70
|
+
"lint": "eslint --cache --ext .ts,.tsx src/ tests/ --fix",
|
|
71
|
+
"lint:package": "publint",
|
|
72
|
+
"lint:types": "attw --pack ."
|
|
73
73
|
}
|
|
74
|
-
}
|
|
74
|
+
}
|