@multiplatform.one/router 6.1.0 → 6.3.0

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 (106) hide show
  1. package/README.md +51 -0
  2. package/dist/cjs/hooks/useUrlState.cjs +30 -9
  3. package/dist/cjs/hooks/useUrlState.native.js +32 -9
  4. package/dist/cjs/hooks/useUrlState.native.js.map +1 -1
  5. package/dist/cjs/seam/DomNavigationHost.cjs +122 -0
  6. package/dist/cjs/seam/DomNavigationHost.native.js +186 -0
  7. package/dist/cjs/seam/DomNavigationHost.native.js.map +1 -0
  8. package/dist/cjs/seam/index.cjs +47 -0
  9. package/dist/cjs/seam/index.native.js +50 -0
  10. package/dist/cjs/seam/index.native.js.map +1 -0
  11. package/dist/cjs/seam/navigator.cjs +309 -0
  12. package/dist/cjs/seam/navigator.native.js +479 -0
  13. package/dist/cjs/seam/navigator.native.js.map +1 -0
  14. package/dist/cjs/seam/oneAdapter.cjs +128 -0
  15. package/dist/cjs/seam/oneAdapter.native.js +141 -0
  16. package/dist/cjs/seam/oneAdapter.native.js.map +1 -0
  17. package/dist/esm/hooks/useUrlState.mjs +31 -10
  18. package/dist/esm/hooks/useUrlState.mjs.map +1 -1
  19. package/dist/esm/hooks/useUrlState.native.js +33 -10
  20. package/dist/esm/hooks/useUrlState.native.js.map +1 -1
  21. package/dist/esm/seam/DomNavigationHost.mjs +96 -0
  22. package/dist/esm/seam/DomNavigationHost.mjs.map +1 -0
  23. package/dist/esm/seam/DomNavigationHost.native.js +157 -0
  24. package/dist/esm/seam/DomNavigationHost.native.js.map +1 -0
  25. package/dist/esm/seam/index.mjs +5 -0
  26. package/dist/esm/seam/index.mjs.map +1 -0
  27. package/dist/esm/seam/index.native.js +5 -0
  28. package/dist/esm/seam/index.native.js.map +1 -0
  29. package/dist/esm/seam/navigator.mjs +279 -0
  30. package/dist/esm/seam/navigator.mjs.map +1 -0
  31. package/dist/esm/seam/navigator.native.js +446 -0
  32. package/dist/esm/seam/navigator.native.js.map +1 -0
  33. package/dist/esm/seam/oneAdapter.mjs +90 -0
  34. package/dist/esm/seam/oneAdapter.mjs.map +1 -0
  35. package/dist/esm/seam/oneAdapter.native.js +100 -0
  36. package/dist/esm/seam/oneAdapter.native.js.map +1 -0
  37. package/dist/jsx/hooks/useUrlState.mjs +31 -10
  38. package/dist/jsx/hooks/useUrlState.mjs.map +1 -1
  39. package/dist/jsx/hooks/useUrlState.native.js +32 -9
  40. package/dist/jsx/hooks/useUrlState.native.js.map +1 -1
  41. package/dist/jsx/seam/DomNavigationHost.mjs +96 -0
  42. package/dist/jsx/seam/DomNavigationHost.mjs.map +1 -0
  43. package/dist/jsx/seam/DomNavigationHost.native.js +186 -0
  44. package/dist/jsx/seam/DomNavigationHost.native.js.map +1 -0
  45. package/dist/jsx/seam/index.mjs +5 -0
  46. package/dist/jsx/seam/index.mjs.map +1 -0
  47. package/dist/jsx/seam/index.native.js +50 -0
  48. package/dist/jsx/seam/index.native.js.map +1 -0
  49. package/dist/jsx/seam/navigator.mjs +279 -0
  50. package/dist/jsx/seam/navigator.mjs.map +1 -0
  51. package/dist/jsx/seam/navigator.native.js +479 -0
  52. package/dist/jsx/seam/navigator.native.js.map +1 -0
  53. package/dist/jsx/seam/oneAdapter.mjs +90 -0
  54. package/dist/jsx/seam/oneAdapter.mjs.map +1 -0
  55. package/dist/jsx/seam/oneAdapter.native.js +141 -0
  56. package/dist/jsx/seam/oneAdapter.native.js.map +1 -0
  57. package/package.json +26 -9
  58. package/src/hooks/urlStateEdges.spec.ts +98 -0
  59. package/src/hooks/useUrlState.ts +34 -8
  60. package/src/seam/DomNavigationHost.spec.tsx +78 -0
  61. package/src/seam/DomNavigationHost.tsx +150 -0
  62. package/src/seam/index.ts +41 -0
  63. package/src/seam/navigator.spec.ts +189 -0
  64. package/src/seam/navigator.ts +405 -0
  65. package/src/seam/oneAdapter.tsx +166 -0
  66. package/types/hooks/index.d.ts +2 -0
  67. package/types/hooks/index.d.ts.map +1 -0
  68. package/types/hooks/useUrlState.d.ts +36 -0
  69. package/types/hooks/useUrlState.d.ts.map +1 -0
  70. package/types/index.d.ts +4 -0
  71. package/types/index.d.ts.map +1 -0
  72. package/types/index.storybook.d.ts +4 -0
  73. package/types/index.storybook.d.ts.map +1 -0
  74. package/types/router/EmptyRouter.d.ts +7 -0
  75. package/types/router/EmptyRouter.d.ts.map +1 -0
  76. package/types/router/ReactRouter.d.ts +6 -0
  77. package/types/router/ReactRouter.d.ts.map +1 -0
  78. package/types/router/index.d.ts +2 -0
  79. package/types/router/index.d.ts.map +1 -0
  80. package/types/router/index.storybook-expo.d.ts +2 -0
  81. package/types/router/index.storybook-expo.d.ts.map +1 -0
  82. package/types/router/index.storybook.d.ts +2 -0
  83. package/types/router/index.storybook.d.ts.map +1 -0
  84. package/types/router/index.webext.d.ts +2 -0
  85. package/types/router/index.webext.d.ts.map +1 -0
  86. package/types/seam/DomNavigationHost.d.ts +33 -0
  87. package/types/seam/DomNavigationHost.d.ts.map +1 -0
  88. package/types/seam/index.d.ts +7 -0
  89. package/types/seam/index.d.ts.map +1 -0
  90. package/types/seam/navigator.d.ts +133 -0
  91. package/types/seam/navigator.d.ts.map +1 -0
  92. package/types/seam/oneAdapter.d.ts +57 -0
  93. package/types/seam/oneAdapter.d.ts.map +1 -0
  94. package/types/types.d.ts +40 -0
  95. package/types/types.d.ts.map +1 -0
  96. package/dist/cjs/hooks/useUrlState.spec.cjs +0 -280
  97. package/dist/cjs/hooks/useUrlState.spec.native.js +0 -315
  98. package/dist/cjs/hooks/useUrlState.spec.native.js.map +0 -1
  99. package/dist/esm/hooks/useUrlState.spec.mjs +0 -257
  100. package/dist/esm/hooks/useUrlState.spec.mjs.map +0 -1
  101. package/dist/esm/hooks/useUrlState.spec.native.js +0 -289
  102. package/dist/esm/hooks/useUrlState.spec.native.js.map +0 -1
  103. package/dist/jsx/hooks/useUrlState.spec.mjs +0 -257
  104. package/dist/jsx/hooks/useUrlState.spec.mjs.map +0 -1
  105. package/dist/jsx/hooks/useUrlState.spec.native.js +0 -315
  106. package/dist/jsx/hooks/useUrlState.spec.native.js.map +0 -1
package/README.md ADDED
@@ -0,0 +1,51 @@
1
+ # @multiplatform.one/router
2
+
3
+ Cross-platform routing facade for multiplatform.one: one import that resolves
4
+ to the right router per surface ([One](https://onestack.dev) apps, React
5
+ Router, Storybook, web extensions) plus URL state hooks.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ pnpm add @multiplatform.one/router
11
+ ```
12
+
13
+ Peers: `react`, plus `one` or `react-router-dom` depending on the host app.
14
+
15
+ ## What it owns
16
+
17
+ - **Navigation primitives** — `Link`, `useRouter`, `useParams`, `usePathname`
18
+ (resolved per platform/build via file suffixes: One by default, React Router,
19
+ Storybook, webext)
20
+ - **URL state hooks** — `useSearchParams`, `useUrlState`, `useTypedSearchParams`,
21
+ `useShareableUrl`
22
+
23
+ ## What it must not do
24
+
25
+ - No screens, no data fetching — it is a thin facade so packages like
26
+ `@multiplatform.one/forms` and `@multiplatform.one/table` can sync state with
27
+ the URL without binding to one router
28
+
29
+ ## Usage
30
+
31
+ ```tsx
32
+ import { Link, useUrlState } from "@multiplatform.one/router";
33
+
34
+ export function SearchScreen() {
35
+ const [state, setState] = useUrlState({ q: "" }, { debounceMs: 300 });
36
+ return (
37
+ <>
38
+ <input value={state.q} onChange={(e) => setState({ q: e.target.value })} />
39
+ <Link href={`/results?q=${encodeURIComponent(state.q)}`}>Search</Link>
40
+ </>
41
+ );
42
+ }
43
+ ```
44
+
45
+ `useUrlState(defaultValues, options?)` returns `[state, setState]` and keeps
46
+ the state in the URL on web (shareable/bookmarkable) and in memory on native —
47
+ same API everywhere.
48
+
49
+ ## License
50
+
51
+ Apache-2.0
@@ -31,18 +31,35 @@ module.exports = __toCommonJS(useUrlState_exports);
31
31
  var import_react = require("react");
32
32
  var import_platform = require("@multiplatform.one/platform");
33
33
  var import_router = require("../router/index.cjs");
34
+ const hasRouter = typeof import_router.useRouter === "function" && typeof import_router.useParams === "function";
35
+ const emptyParams = {};
36
+ function useOptionalRouter() {
37
+ if (!hasRouter) return {};
38
+ try {
39
+ return {
40
+ router: (0, import_router.useRouter)(),
41
+ params: (0, import_router.useParams)()
42
+ };
43
+ } catch {
44
+ return {};
45
+ }
46
+ }
34
47
  function useSearchParams() {
35
- const router = (0, import_router.useRouter)();
36
- const currentParams = (0, import_router.useParams)();
48
+ const [localParams, setLocalParams] = (0, import_react.useState)({});
49
+ const {
50
+ router,
51
+ params
52
+ } = useOptionalRouter();
53
+ const currentParams = params ?? localParams;
37
54
  const debounceTimerRef = (0, import_react.useRef)(void 0);
38
55
  const searchParams = (0, import_react.useMemo)(() => {
39
- const params = {};
56
+ const params2 = {};
40
57
  Object.entries(currentParams).forEach(([key, value]) => {
41
58
  if (value !== void 0 && value !== null) {
42
- params[key] = value;
59
+ params2[key] = value;
43
60
  }
44
61
  });
45
- return params;
62
+ return params2;
46
63
  }, [currentParams]);
47
64
  const setSearchParams = (0, import_react.useCallback)((newParams, options = {}) => {
48
65
  const {
@@ -57,7 +74,11 @@ function useSearchParams() {
57
74
  cleanParams[key] = value;
58
75
  }
59
76
  });
60
- router.setParams(cleanParams);
77
+ if (router && params) {
78
+ router.setParams(cleanParams);
79
+ } else {
80
+ setLocalParams(cleanParams);
81
+ }
61
82
  };
62
83
  if (debounceMs > 0) {
63
84
  if (debounceTimerRef.current) {
@@ -67,7 +88,7 @@ function useSearchParams() {
67
88
  } else {
68
89
  updateParams();
69
90
  }
70
- }, [router, searchParams]);
91
+ }, [router, params, searchParams]);
71
92
  (0, import_react.useEffect)(() => {
72
93
  return () => {
73
94
  if (debounceTimerRef.current) {
@@ -145,7 +166,7 @@ function useUrlState(defaultValues, options = {}) {
145
166
  return [currentState, setState];
146
167
  }
147
168
  function useShareableUrl() {
148
- const params = (0, import_router.useParams)();
169
+ const params = useOptionalRouter().params ?? emptyParams;
149
170
  const shareableUrl = (0, import_react.useMemo)(() => {
150
171
  if (!import_platform.isWeb || typeof window === "undefined") {
151
172
  return "";
@@ -166,7 +187,7 @@ function useShareableUrl() {
166
187
  return shareableUrl;
167
188
  }
168
189
  function useTypedSearchParams(schema) {
169
- const params = (0, import_router.useParams)();
190
+ const params = useOptionalRouter().params ?? emptyParams;
170
191
  const typedParams = (0, import_react.useMemo)(() => {
171
192
  const result = {};
172
193
  Object.entries(schema).forEach(([key, config]) => {
@@ -38,19 +38,36 @@ function _type_of(obj) {
38
38
 
39
39
  return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
40
40
  }
41
+ var hasRouter = typeof import_router.useRouter === "function" && typeof import_router.useParams === "function";
42
+ var emptyParams = {};
43
+ function useOptionalRouter() {
44
+ if (!hasRouter) return {};
45
+ try {
46
+ return {
47
+ router: (0, import_router.useRouter)(),
48
+ params: (0, import_router.useParams)()
49
+ };
50
+ } catch (unused) {
51
+ return {};
52
+ }
53
+ }
41
54
  function useSearchParams() {
42
- var router = (0, import_router.useRouter)();
43
- var currentParams = (0, import_router.useParams)();
55
+ var [localParams, setLocalParams] = (0, import_react.useState)({});
56
+ var {
57
+ router,
58
+ params
59
+ } = useOptionalRouter();
60
+ var currentParams = params !== null && params !== void 0 ? params : localParams;
44
61
  var debounceTimerRef = (0, import_react.useRef)(void 0);
45
62
  var searchParams = (0, import_react.useMemo)(function () {
46
- var params = {};
63
+ var params2 = {};
47
64
  Object.entries(currentParams).forEach(function (param) {
48
65
  var [key, value] = param;
49
66
  if (value !== void 0 && value !== null) {
50
- params[key] = value;
67
+ params2[key] = value;
51
68
  }
52
69
  });
53
- return params;
70
+ return params2;
54
71
  }, [currentParams]);
55
72
  var setSearchParams = (0, import_react.useCallback)(function (newParams) {
56
73
  var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
@@ -67,7 +84,11 @@ function useSearchParams() {
67
84
  cleanParams[key] = value;
68
85
  }
69
86
  });
70
- router.setParams(cleanParams);
87
+ if (router && params) {
88
+ router.setParams(cleanParams);
89
+ } else {
90
+ setLocalParams(cleanParams);
91
+ }
71
92
  };
72
93
  if (debounceMs > 0) {
73
94
  if (debounceTimerRef.current) {
@@ -77,7 +98,7 @@ function useSearchParams() {
77
98
  } else {
78
99
  updateParams();
79
100
  }
80
- }, [router, searchParams]);
101
+ }, [router, params, searchParams]);
81
102
  (0, import_react.useEffect)(function () {
82
103
  return function () {
83
104
  if (debounceTimerRef.current) {
@@ -158,7 +179,8 @@ function useUrlState(defaultValues) {
158
179
  return [currentState, setState];
159
180
  }
160
181
  function useShareableUrl() {
161
- var params = (0, import_router.useParams)();
182
+ var _useOptionalRouter_params;
183
+ var params = (_useOptionalRouter_params = useOptionalRouter().params) !== null && _useOptionalRouter_params !== void 0 ? _useOptionalRouter_params : emptyParams;
162
184
  var shareableUrl = (0, import_react.useMemo)(function () {
163
185
  if (!import_platform.isWeb || typeof window === "undefined") {
164
186
  return "";
@@ -182,7 +204,8 @@ function useShareableUrl() {
182
204
  return shareableUrl;
183
205
  }
184
206
  function useTypedSearchParams(schema) {
185
- var params = (0, import_router.useParams)();
207
+ var _useOptionalRouter_params;
208
+ var params = (_useOptionalRouter_params = useOptionalRouter().params) !== null && _useOptionalRouter_params !== void 0 ? _useOptionalRouter_params : emptyParams;
186
209
  var typedParams = (0, import_react.useMemo)(function () {
187
210
  var result = {};
188
211
  Object.entries(schema).forEach(function (param) {
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","useUrlState_exports","__export","useSearchParams","useShareableUrl","useTypedSearchParams","useUrlState","module","exports","import_react","require","import_platform","import_router","_type_of","obj","Symbol","constructor","router","useRouter","currentParams","useParams","debounceTimerRef","useRef","searchParams","useMemo","params","Object","entries","forEach","param","key","setSearchParams","useCallback","newParams","options","arguments","length","replace","_replace","debounceMs","updateParams","updateParams2","updatedParams","cleanParams","setParams","current","clearTimeout","setTimeout","useEffect","defaultValues","serialize","val","Array","isArray","map","String","JSON","stringify","deserialize","result","defaultValue","Number","parse","unused","keys","currentState","setState","newState","updatedState","mergedState","serialized","shareableUrl","isWeb","window","url","URL","location","href","search"],"sources":["../../../src/hooks/useUrlState.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","useUrlState_exports","__export","useSearchParams","useShareableUrl","useTypedSearchParams","useUrlState","module","exports","import_react","require","import_platform","import_router","_type_of","obj","Symbol","constructor","hasRouter","useRouter","useParams","emptyParams","useOptionalRouter","router","params","unused","localParams","setLocalParams","useState","currentParams","debounceTimerRef","useRef","searchParams","useMemo","params2","Object","entries","forEach","param","key","setSearchParams","useCallback","newParams","options","arguments","length","replace","_replace","debounceMs","updateParams","updateParams2","updatedParams","cleanParams","setParams","current","clearTimeout","setTimeout","useEffect","defaultValues","serialize","val","Array","isArray","map","String","JSON","stringify","deserialize","result","defaultValue","Number","parse","keys","currentState","setState","newState","updatedState","mergedState","serialized","_useOptionalRouter_params","shareableUrl","isWeb","window","url","URL","location","href"],"sources":["../../../src/hooks/useUrlState.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,122 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var DomNavigationHost_exports = {};
24
+ __export(DomNavigationHost_exports, {
25
+ DomNavigationHost: () => DomNavigationHost,
26
+ DomStackAdapter: () => DomStackAdapter
27
+ });
28
+ module.exports = __toCommonJS(DomNavigationHost_exports);
29
+ var import_react = require("react");
30
+ var import_navigator = require("./navigator.cjs");
31
+ var import_jsx_runtime = require("react/jsx-runtime");
32
+ class DomStackAdapter {
33
+ stack;
34
+ onChanged;
35
+ constructor(rootTag, onChanged) {
36
+ this.stack = rootTag ? [rootTag] : [];
37
+ this.onChanged = onChanged;
38
+ }
39
+ push_by_tag(tag) {
40
+ this.stack.push(tag);
41
+ this.onChanged();
42
+ }
43
+ pop() {
44
+ if (this.stack.length <= 1) return false;
45
+ this.stack.pop();
46
+ this.onChanged();
47
+ return true;
48
+ }
49
+ pop_to_tag(tag) {
50
+ const idx = this.stack.lastIndexOf(tag);
51
+ if (idx === -1 || idx === this.stack.length - 1) return false;
52
+ this.stack = this.stack.slice(0, idx + 1);
53
+ this.onChanged();
54
+ return true;
55
+ }
56
+ replace_with_tags(tags) {
57
+ this.stack = [...tags];
58
+ this.onChanged();
59
+ }
60
+ get_navigation_stack() {
61
+ const snapshot = this.stack;
62
+ return {
63
+ get_n_items: () => snapshot.length,
64
+ get_item: index => index >= 0 && index < snapshot.length ? {
65
+ get_tag: () => snapshot[index] ?? null
66
+ } : null
67
+ };
68
+ }
69
+ }
70
+ const PAGE_STYLE = {
71
+ position: "absolute",
72
+ inset: 0,
73
+ display: "flex",
74
+ flexDirection: "column",
75
+ overflow: "auto"
76
+ };
77
+ function DomNavigationHost({
78
+ routes,
79
+ initialHref,
80
+ style
81
+ }) {
82
+ const adapterRef = (0, import_react.useRef)(null);
83
+ adapterRef.current ??= new DomStackAdapter(routes[0]?.tag ?? "", () => import_navigator.stackNavigator.syncFromHost());
84
+ const initialHrefRef = (0, import_react.useRef)(initialHref);
85
+ (0, import_react.useEffect)(() => {
86
+ const adapter = adapterRef.current;
87
+ if (!adapter) return;
88
+ import_navigator.stackNavigator.attach(adapter);
89
+ const restore = initialHrefRef.current;
90
+ if (restore) import_navigator.stackNavigator.replace(restore);
91
+ return () => import_navigator.stackNavigator.detach();
92
+ }, []);
93
+ const nav = (0, import_navigator.useNavState)();
94
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)("div", {
95
+ style: {
96
+ position: "relative",
97
+ flex: 1,
98
+ minHeight: 0,
99
+ height: "100%",
100
+ ...style
101
+ },
102
+ children: routes.map(route => {
103
+ const active = nav.tag === route.tag;
104
+ const mounted = import_navigator.stackNavigator.isVisited(route.tag);
105
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)("div", {
106
+ "data-seam-page": route.tag,
107
+ "data-seam-active": active ? "true" : "false",
108
+ style: {
109
+ ...PAGE_STYLE,
110
+ display: active ? "flex" : "none"
111
+ },
112
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_navigator.RouteTagContext.Provider, {
113
+ value: route.tag,
114
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.Suspense, {
115
+ fallback: null,
116
+ children: mounted ? route.element : null
117
+ })
118
+ })
119
+ }, route.tag);
120
+ })
121
+ });
122
+ }
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var DomNavigationHost_exports = {};
26
+ __export(DomNavigationHost_exports, {
27
+ DomNavigationHost: () => DomNavigationHost,
28
+ DomStackAdapter: () => DomStackAdapter
29
+ });
30
+ module.exports = __toCommonJS(DomNavigationHost_exports);
31
+ var import_jsx_runtime = require("react/jsx-runtime");
32
+ var import_react = require("react");
33
+ var import_navigator = require("./navigator.native.js");
34
+ function _class_call_check(instance, Constructor) {
35
+ if (!(instance instanceof Constructor)) {
36
+ throw new TypeError("Cannot call a class as a function");
37
+ }
38
+ }
39
+ function _defineProperties(target, props) {
40
+ for (var i = 0; i < props.length; i++) {
41
+ var descriptor = props[i];
42
+ descriptor.enumerable = descriptor.enumerable || false;
43
+ descriptor.configurable = true;
44
+ if ("value" in descriptor) descriptor.writable = true;
45
+ Object.defineProperty(target, descriptor.key, descriptor);
46
+ }
47
+ }
48
+ function _create_class(Constructor, protoProps, staticProps) {
49
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
50
+ if (staticProps) _defineProperties(Constructor, staticProps);
51
+ return Constructor;
52
+ }
53
+ function _define_property(obj, key, value) {
54
+ if (key in obj) {
55
+ Object.defineProperty(obj, key, {
56
+ value,
57
+ enumerable: true,
58
+ configurable: true,
59
+ writable: true
60
+ });
61
+ } else {
62
+ obj[key] = value;
63
+ }
64
+ return obj;
65
+ }
66
+ var DomStackAdapter = /* @__PURE__ */function () {
67
+ "use strict";
68
+
69
+ function DomStackAdapter2(rootTag, onChanged) {
70
+ _class_call_check(this, DomStackAdapter2);
71
+ _define_property(this, "stack", void 0);
72
+ _define_property(this, "onChanged", void 0);
73
+ this.stack = rootTag ? [rootTag] : [];
74
+ this.onChanged = onChanged;
75
+ }
76
+ _create_class(DomStackAdapter2, [{
77
+ key: "push_by_tag",
78
+ value: function push_by_tag(tag) {
79
+ this.stack.push(tag);
80
+ this.onChanged();
81
+ }
82
+ }, {
83
+ key: "pop",
84
+ value: function pop() {
85
+ if (this.stack.length <= 1) return false;
86
+ this.stack.pop();
87
+ this.onChanged();
88
+ return true;
89
+ }
90
+ }, {
91
+ key: "pop_to_tag",
92
+ value: function pop_to_tag(tag) {
93
+ var idx = this.stack.lastIndexOf(tag);
94
+ if (idx === -1 || idx === this.stack.length - 1) return false;
95
+ this.stack = this.stack.slice(0, idx + 1);
96
+ this.onChanged();
97
+ return true;
98
+ }
99
+ }, {
100
+ key: "replace_with_tags",
101
+ value: function replace_with_tags(tags) {
102
+ this.stack = [...tags];
103
+ this.onChanged();
104
+ }
105
+ }, {
106
+ key: "get_navigation_stack",
107
+ value: function get_navigation_stack() {
108
+ var snapshot = this.stack;
109
+ return {
110
+ get_n_items: function get_n_items() {
111
+ return snapshot.length;
112
+ },
113
+ get_item: function get_item(index) {
114
+ return index >= 0 && index < snapshot.length ? {
115
+ get_tag: function get_tag() {
116
+ var _snapshot_index;
117
+ return (_snapshot_index = snapshot[index]) !== null && _snapshot_index !== void 0 ? _snapshot_index : null;
118
+ }
119
+ } : null;
120
+ }
121
+ };
122
+ }
123
+ }]);
124
+ return DomStackAdapter2;
125
+ }();
126
+ var PAGE_STYLE = {
127
+ position: "absolute",
128
+ inset: 0,
129
+ display: "flex",
130
+ flexDirection: "column",
131
+ overflow: "auto"
132
+ };
133
+ function DomNavigationHost(param) {
134
+ var {
135
+ routes,
136
+ initialHref,
137
+ style
138
+ } = param;
139
+ var _adapterRef, _current, _ref;
140
+ var _routes_;
141
+ var adapterRef = (0, import_react.useRef)(null);
142
+ (_current = (_adapterRef = adapterRef).current) !== null && _current !== void 0 ? _current : _adapterRef.current = new DomStackAdapter((_ref = (_routes_ = routes[0]) === null || _routes_ === void 0 ? void 0 : _routes_.tag) !== null && _ref !== void 0 ? _ref : "", function () {
143
+ return import_navigator.stackNavigator.syncFromHost();
144
+ });
145
+ var initialHrefRef = (0, import_react.useRef)(initialHref);
146
+ (0, import_react.useEffect)(function () {
147
+ var adapter = adapterRef.current;
148
+ if (!adapter) return;
149
+ import_navigator.stackNavigator.attach(adapter);
150
+ var restore = initialHrefRef.current;
151
+ if (restore) import_navigator.stackNavigator.replace(restore);
152
+ return function () {
153
+ return import_navigator.stackNavigator.detach();
154
+ };
155
+ }, []);
156
+ var nav = (0, import_navigator.useNavState)();
157
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)("div", {
158
+ style: {
159
+ position: "relative",
160
+ flex: 1,
161
+ minHeight: 0,
162
+ height: "100%",
163
+ ...style
164
+ },
165
+ children: routes.map(function (route) {
166
+ var active = nav.tag === route.tag;
167
+ var mounted = import_navigator.stackNavigator.isVisited(route.tag);
168
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)("div", {
169
+ "data-seam-page": route.tag,
170
+ "data-seam-active": active ? "true" : "false",
171
+ style: {
172
+ ...PAGE_STYLE,
173
+ display: active ? "flex" : "none"
174
+ },
175
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_navigator.RouteTagContext.Provider, {
176
+ value: route.tag,
177
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.Suspense, {
178
+ fallback: null,
179
+ children: mounted ? route.element : null
180
+ })
181
+ })
182
+ }, route.tag);
183
+ })
184
+ });
185
+ }
186
+ //# sourceMappingURL=DomNavigationHost.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","DomNavigationHost_exports","__export","DomNavigationHost","DomStackAdapter","module","exports","import_jsx_runtime","require","import_react","import_navigator","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","_define_property","obj","DomStackAdapter2","rootTag","onChanged","stack","push_by_tag","tag","push","pop","pop_to_tag","idx","lastIndexOf","slice","replace_with_tags","tags"],"sources":["../../../src/seam/DomNavigationHost.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,47 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var seam_exports = {};
24
+ __export(seam_exports, {
25
+ DomNavigationHost: () => import_DomNavigationHost.DomNavigationHost,
26
+ DomStackAdapter: () => import_DomNavigationHost.DomStackAdapter,
27
+ Link: () => import_oneAdapter.Link,
28
+ LoadProgressBar: () => import_oneAdapter.LoadProgressBar,
29
+ RouteTagContext: () => import_navigator.RouteTagContext,
30
+ Slot: () => import_oneAdapter.Slot,
31
+ StackNavigator: () => import_navigator.StackNavigator,
32
+ hrefToString: () => import_navigator.hrefToString,
33
+ stackNavigator: () => import_navigator.stackNavigator,
34
+ useBlocker: () => import_oneAdapter.useBlocker,
35
+ useLoader: () => import_oneAdapter.useLoader,
36
+ useLocalSearchParams: () => import_oneAdapter.useLocalSearchParams,
37
+ useMatches: () => import_oneAdapter.useMatches,
38
+ useNavState: () => import_navigator.useNavState,
39
+ useParams: () => import_oneAdapter.useParams,
40
+ usePathname: () => import_oneAdapter.usePathname,
41
+ useRouteParams: () => import_navigator.useRouteParams,
42
+ useRouter: () => import_oneAdapter.useRouter
43
+ });
44
+ module.exports = __toCommonJS(seam_exports);
45
+ var import_navigator = require("./navigator.cjs");
46
+ var import_DomNavigationHost = require("./DomNavigationHost.cjs");
47
+ var import_oneAdapter = require("./oneAdapter.cjs");