@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.
Files changed (2) hide show
  1. package/dist/cjs/index.js +1 -1
  2. 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",
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": "workspace:^",
58
- "@real-router/helpers": "workspace:^"
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
+ }