@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.
- package/README.md +51 -0
- package/dist/cjs/hooks/useUrlState.cjs +30 -9
- package/dist/cjs/hooks/useUrlState.native.js +32 -9
- package/dist/cjs/hooks/useUrlState.native.js.map +1 -1
- package/dist/cjs/seam/DomNavigationHost.cjs +122 -0
- package/dist/cjs/seam/DomNavigationHost.native.js +186 -0
- package/dist/cjs/seam/DomNavigationHost.native.js.map +1 -0
- package/dist/cjs/seam/index.cjs +47 -0
- package/dist/cjs/seam/index.native.js +50 -0
- package/dist/cjs/seam/index.native.js.map +1 -0
- package/dist/cjs/seam/navigator.cjs +309 -0
- package/dist/cjs/seam/navigator.native.js +479 -0
- package/dist/cjs/seam/navigator.native.js.map +1 -0
- package/dist/cjs/seam/oneAdapter.cjs +128 -0
- package/dist/cjs/seam/oneAdapter.native.js +141 -0
- package/dist/cjs/seam/oneAdapter.native.js.map +1 -0
- package/dist/esm/hooks/useUrlState.mjs +31 -10
- package/dist/esm/hooks/useUrlState.mjs.map +1 -1
- package/dist/esm/hooks/useUrlState.native.js +33 -10
- package/dist/esm/hooks/useUrlState.native.js.map +1 -1
- package/dist/esm/seam/DomNavigationHost.mjs +96 -0
- package/dist/esm/seam/DomNavigationHost.mjs.map +1 -0
- package/dist/esm/seam/DomNavigationHost.native.js +157 -0
- package/dist/esm/seam/DomNavigationHost.native.js.map +1 -0
- package/dist/esm/seam/index.mjs +5 -0
- package/dist/esm/seam/index.mjs.map +1 -0
- package/dist/esm/seam/index.native.js +5 -0
- package/dist/esm/seam/index.native.js.map +1 -0
- package/dist/esm/seam/navigator.mjs +279 -0
- package/dist/esm/seam/navigator.mjs.map +1 -0
- package/dist/esm/seam/navigator.native.js +446 -0
- package/dist/esm/seam/navigator.native.js.map +1 -0
- package/dist/esm/seam/oneAdapter.mjs +90 -0
- package/dist/esm/seam/oneAdapter.mjs.map +1 -0
- package/dist/esm/seam/oneAdapter.native.js +100 -0
- package/dist/esm/seam/oneAdapter.native.js.map +1 -0
- package/dist/jsx/hooks/useUrlState.mjs +31 -10
- package/dist/jsx/hooks/useUrlState.mjs.map +1 -1
- package/dist/jsx/hooks/useUrlState.native.js +32 -9
- package/dist/jsx/hooks/useUrlState.native.js.map +1 -1
- package/dist/jsx/seam/DomNavigationHost.mjs +96 -0
- package/dist/jsx/seam/DomNavigationHost.mjs.map +1 -0
- package/dist/jsx/seam/DomNavigationHost.native.js +186 -0
- package/dist/jsx/seam/DomNavigationHost.native.js.map +1 -0
- package/dist/jsx/seam/index.mjs +5 -0
- package/dist/jsx/seam/index.mjs.map +1 -0
- package/dist/jsx/seam/index.native.js +50 -0
- package/dist/jsx/seam/index.native.js.map +1 -0
- package/dist/jsx/seam/navigator.mjs +279 -0
- package/dist/jsx/seam/navigator.mjs.map +1 -0
- package/dist/jsx/seam/navigator.native.js +479 -0
- package/dist/jsx/seam/navigator.native.js.map +1 -0
- package/dist/jsx/seam/oneAdapter.mjs +90 -0
- package/dist/jsx/seam/oneAdapter.mjs.map +1 -0
- package/dist/jsx/seam/oneAdapter.native.js +141 -0
- package/dist/jsx/seam/oneAdapter.native.js.map +1 -0
- package/package.json +26 -9
- package/src/hooks/urlStateEdges.spec.ts +98 -0
- package/src/hooks/useUrlState.ts +34 -8
- package/src/seam/DomNavigationHost.spec.tsx +78 -0
- package/src/seam/DomNavigationHost.tsx +150 -0
- package/src/seam/index.ts +41 -0
- package/src/seam/navigator.spec.ts +189 -0
- package/src/seam/navigator.ts +405 -0
- package/src/seam/oneAdapter.tsx +166 -0
- package/types/hooks/index.d.ts +2 -0
- package/types/hooks/index.d.ts.map +1 -0
- package/types/hooks/useUrlState.d.ts +36 -0
- package/types/hooks/useUrlState.d.ts.map +1 -0
- package/types/index.d.ts +4 -0
- package/types/index.d.ts.map +1 -0
- package/types/index.storybook.d.ts +4 -0
- package/types/index.storybook.d.ts.map +1 -0
- package/types/router/EmptyRouter.d.ts +7 -0
- package/types/router/EmptyRouter.d.ts.map +1 -0
- package/types/router/ReactRouter.d.ts +6 -0
- package/types/router/ReactRouter.d.ts.map +1 -0
- package/types/router/index.d.ts +2 -0
- package/types/router/index.d.ts.map +1 -0
- package/types/router/index.storybook-expo.d.ts +2 -0
- package/types/router/index.storybook-expo.d.ts.map +1 -0
- package/types/router/index.storybook.d.ts +2 -0
- package/types/router/index.storybook.d.ts.map +1 -0
- package/types/router/index.webext.d.ts +2 -0
- package/types/router/index.webext.d.ts.map +1 -0
- package/types/seam/DomNavigationHost.d.ts +33 -0
- package/types/seam/DomNavigationHost.d.ts.map +1 -0
- package/types/seam/index.d.ts +7 -0
- package/types/seam/index.d.ts.map +1 -0
- package/types/seam/navigator.d.ts +133 -0
- package/types/seam/navigator.d.ts.map +1 -0
- package/types/seam/oneAdapter.d.ts +57 -0
- package/types/seam/oneAdapter.d.ts.map +1 -0
- package/types/types.d.ts +40 -0
- package/types/types.d.ts.map +1 -0
- package/dist/cjs/hooks/useUrlState.spec.cjs +0 -280
- package/dist/cjs/hooks/useUrlState.spec.native.js +0 -315
- package/dist/cjs/hooks/useUrlState.spec.native.js.map +0 -1
- package/dist/esm/hooks/useUrlState.spec.mjs +0 -257
- package/dist/esm/hooks/useUrlState.spec.mjs.map +0 -1
- package/dist/esm/hooks/useUrlState.spec.native.js +0 -289
- package/dist/esm/hooks/useUrlState.spec.native.js.map +0 -1
- package/dist/jsx/hooks/useUrlState.spec.mjs +0 -257
- package/dist/jsx/hooks/useUrlState.spec.mjs.map +0 -1
- package/dist/jsx/hooks/useUrlState.spec.native.js +0 -315
- package/dist/jsx/hooks/useUrlState.spec.native.js.map +0 -1
|
@@ -0,0 +1,479 @@
|
|
|
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 navigator_exports = {};
|
|
26
|
+
__export(navigator_exports, {
|
|
27
|
+
RouteTagContext: () => RouteTagContext,
|
|
28
|
+
StackNavigator: () => StackNavigator,
|
|
29
|
+
hrefToString: () => hrefToString,
|
|
30
|
+
stackNavigator: () => stackNavigator,
|
|
31
|
+
useNavState: () => useNavState,
|
|
32
|
+
useRouteParams: () => useRouteParams
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(navigator_exports);
|
|
35
|
+
var import_react = require("react");
|
|
36
|
+
function _class_call_check(instance, Constructor) {
|
|
37
|
+
if (!(instance instanceof Constructor)) {
|
|
38
|
+
throw new TypeError("Cannot call a class as a function");
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function _defineProperties(target, props) {
|
|
42
|
+
for (var i = 0; i < props.length; i++) {
|
|
43
|
+
var descriptor = props[i];
|
|
44
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
45
|
+
descriptor.configurable = true;
|
|
46
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
47
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function _create_class(Constructor, protoProps, staticProps) {
|
|
51
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
52
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
53
|
+
return Constructor;
|
|
54
|
+
}
|
|
55
|
+
function _define_property(obj, key, value) {
|
|
56
|
+
if (key in obj) {
|
|
57
|
+
Object.defineProperty(obj, key, {
|
|
58
|
+
value,
|
|
59
|
+
enumerable: true,
|
|
60
|
+
configurable: true,
|
|
61
|
+
writable: true
|
|
62
|
+
});
|
|
63
|
+
} else {
|
|
64
|
+
obj[key] = value;
|
|
65
|
+
}
|
|
66
|
+
return obj;
|
|
67
|
+
}
|
|
68
|
+
function compileRoute(def) {
|
|
69
|
+
var segments = def.pattern.split("/").filter(Boolean).map(function (seg) {
|
|
70
|
+
var m = seg.match(/^\[(\.{3})?(.+)\]$/);
|
|
71
|
+
return m ? {
|
|
72
|
+
param: m[2]
|
|
73
|
+
} : {
|
|
74
|
+
literal: seg
|
|
75
|
+
};
|
|
76
|
+
});
|
|
77
|
+
return {
|
|
78
|
+
...def,
|
|
79
|
+
segments
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function parseQuery(query) {
|
|
83
|
+
var params = {};
|
|
84
|
+
if (!query) return params;
|
|
85
|
+
var _iteratorNormalCompletion = true,
|
|
86
|
+
_didIteratorError = false,
|
|
87
|
+
_iteratorError = void 0;
|
|
88
|
+
try {
|
|
89
|
+
for (var _iterator = query.split("&")[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
90
|
+
var pair = _step.value;
|
|
91
|
+
if (!pair) continue;
|
|
92
|
+
var eq = pair.indexOf("=");
|
|
93
|
+
var key = decodeURIComponent(eq === -1 ? pair : pair.slice(0, eq));
|
|
94
|
+
var value = eq === -1 ? "" : decodeURIComponent(pair.slice(eq + 1));
|
|
95
|
+
var prev = params[key];
|
|
96
|
+
if (prev === void 0) params[key] = value;else if (Array.isArray(prev)) prev.push(value);else params[key] = [prev, value];
|
|
97
|
+
}
|
|
98
|
+
} catch (err) {
|
|
99
|
+
_didIteratorError = true;
|
|
100
|
+
_iteratorError = err;
|
|
101
|
+
} finally {
|
|
102
|
+
try {
|
|
103
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
104
|
+
_iterator.return();
|
|
105
|
+
}
|
|
106
|
+
} finally {
|
|
107
|
+
if (_didIteratorError) {
|
|
108
|
+
throw _iteratorError;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return params;
|
|
113
|
+
}
|
|
114
|
+
function hrefToString(href) {
|
|
115
|
+
var _href_params;
|
|
116
|
+
if (typeof href === "string") return href;
|
|
117
|
+
var path = href.pathname;
|
|
118
|
+
var leftover = [];
|
|
119
|
+
var _iteratorNormalCompletion = true,
|
|
120
|
+
_didIteratorError = false,
|
|
121
|
+
_iteratorError = void 0;
|
|
122
|
+
try {
|
|
123
|
+
for (var _iterator = Object.entries((_href_params = href.params) !== null && _href_params !== void 0 ? _href_params : {})[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
124
|
+
var [key, raw] = _step.value;
|
|
125
|
+
var value = String(raw);
|
|
126
|
+
var token = `[${key}]`;
|
|
127
|
+
if (path.includes(token)) path = path.replace(token, encodeURIComponent(value));else leftover.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);
|
|
128
|
+
}
|
|
129
|
+
} catch (err) {
|
|
130
|
+
_didIteratorError = true;
|
|
131
|
+
_iteratorError = err;
|
|
132
|
+
} finally {
|
|
133
|
+
try {
|
|
134
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
135
|
+
_iterator.return();
|
|
136
|
+
}
|
|
137
|
+
} finally {
|
|
138
|
+
if (_didIteratorError) {
|
|
139
|
+
throw _iteratorError;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return leftover.length ? `${path}?${leftover.join("&")}` : path;
|
|
144
|
+
}
|
|
145
|
+
var EMPTY_PARAMS = Object.freeze({});
|
|
146
|
+
var StackNavigator = /* @__PURE__ */function () {
|
|
147
|
+
"use strict";
|
|
148
|
+
|
|
149
|
+
function StackNavigator2() {
|
|
150
|
+
var _this = this;
|
|
151
|
+
_class_call_check(this, StackNavigator2);
|
|
152
|
+
_define_property(this, "routes", []);
|
|
153
|
+
_define_property(this, "host", null);
|
|
154
|
+
_define_property(this, "listeners", /* @__PURE__ */new Set());
|
|
155
|
+
_define_property(this, "stackTags", []);
|
|
156
|
+
_define_property(this, "paramsByTag", /* @__PURE__ */new Map());
|
|
157
|
+
_define_property(this, "pathnameByTag", /* @__PURE__ */new Map());
|
|
158
|
+
_define_property(this, "visitedTags", /* @__PURE__ */new Set());
|
|
159
|
+
_define_property(this, "loaderDataByTag", /* @__PURE__ */new Map());
|
|
160
|
+
_define_property(this, "navSeq", 0);
|
|
161
|
+
_define_property(this, "generation", 0);
|
|
162
|
+
_define_property(this, "snapshot", {
|
|
163
|
+
pathname: "/",
|
|
164
|
+
tag: "",
|
|
165
|
+
depth: 0,
|
|
166
|
+
canGoBack: false,
|
|
167
|
+
generation: 0
|
|
168
|
+
});
|
|
169
|
+
_define_property(this, "subscribe", function (fn) {
|
|
170
|
+
_this.listeners.add(fn);
|
|
171
|
+
return function () {
|
|
172
|
+
return _this.listeners.delete(fn);
|
|
173
|
+
};
|
|
174
|
+
});
|
|
175
|
+
_define_property(this, "getSnapshot", function () {
|
|
176
|
+
return _this.snapshot;
|
|
177
|
+
});
|
|
178
|
+
_define_property(this, "push", function (href) {
|
|
179
|
+
void _this.navigate(href, "push");
|
|
180
|
+
});
|
|
181
|
+
_define_property(this, "replace", function (href) {
|
|
182
|
+
void _this.navigate(href, "replace");
|
|
183
|
+
});
|
|
184
|
+
_define_property(this, "back", function () {
|
|
185
|
+
if (!_this.host) {
|
|
186
|
+
console.log("[stack nav] back \u2014 no stack host attached, ignored");
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
_this.navSeq++;
|
|
190
|
+
_this.host.pop();
|
|
191
|
+
});
|
|
192
|
+
_define_property(this, "setParams", function (params) {
|
|
193
|
+
var _this_paramsByTag_get;
|
|
194
|
+
var top = _this.stackTags[_this.stackTags.length - 1];
|
|
195
|
+
if (!top) return;
|
|
196
|
+
var prev = (_this_paramsByTag_get = _this.paramsByTag.get(top)) !== null && _this_paramsByTag_get !== void 0 ? _this_paramsByTag_get : {};
|
|
197
|
+
_this.paramsByTag.set(top, {
|
|
198
|
+
...prev,
|
|
199
|
+
...params
|
|
200
|
+
});
|
|
201
|
+
_this.rebuildSnapshot();
|
|
202
|
+
});
|
|
203
|
+
_define_property(this, "syncFromHost", function () {
|
|
204
|
+
if (!_this.host) return;
|
|
205
|
+
_this.navSeq++;
|
|
206
|
+
var model = _this.host.get_navigation_stack();
|
|
207
|
+
var tags = [];
|
|
208
|
+
var count = model.get_n_items();
|
|
209
|
+
for (var i = 0; i < count; i++) {
|
|
210
|
+
var _model_get_item;
|
|
211
|
+
var tag = (_model_get_item = model.get_item(i)) === null || _model_get_item === void 0 ? void 0 : _model_get_item.get_tag();
|
|
212
|
+
if (tag) tags.push(tag);
|
|
213
|
+
}
|
|
214
|
+
if (tags.length > 0) _this.stackTags = tags;
|
|
215
|
+
var _iteratorNormalCompletion = true,
|
|
216
|
+
_didIteratorError = false,
|
|
217
|
+
_iteratorError = void 0;
|
|
218
|
+
try {
|
|
219
|
+
for (var _iterator = _this.stackTags[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
220
|
+
var tag1 = _step.value;
|
|
221
|
+
_this.visitedTags.add(tag1);
|
|
222
|
+
}
|
|
223
|
+
} catch (err) {
|
|
224
|
+
_didIteratorError = true;
|
|
225
|
+
_iteratorError = err;
|
|
226
|
+
} finally {
|
|
227
|
+
try {
|
|
228
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
229
|
+
_iterator.return();
|
|
230
|
+
}
|
|
231
|
+
} finally {
|
|
232
|
+
if (_didIteratorError) {
|
|
233
|
+
throw _iteratorError;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
_this.rebuildSnapshot();
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
_create_class(StackNavigator2, [{
|
|
241
|
+
key: "isConfigured",
|
|
242
|
+
get: function get() {
|
|
243
|
+
return this.routes.length > 0;
|
|
244
|
+
}
|
|
245
|
+
}, {
|
|
246
|
+
/** Register the route manifest. The FIRST route is the root page. */
|
|
247
|
+
key: "configure",
|
|
248
|
+
value: function configure(defs) {
|
|
249
|
+
this.routes = defs.map(compileRoute);
|
|
250
|
+
this.visitedTags = /* @__PURE__ */new Set();
|
|
251
|
+
this.loaderDataByTag = /* @__PURE__ */new Map();
|
|
252
|
+
var root = defs[0];
|
|
253
|
+
if (root) {
|
|
254
|
+
this.stackTags = [root.tag];
|
|
255
|
+
this.visitedTags.add(root.tag);
|
|
256
|
+
this.pathnameByTag.set(root.tag, root.pattern);
|
|
257
|
+
this.rebuildSnapshot();
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}, {
|
|
261
|
+
/** Has this route's page been navigated to (⇒ its content may mount)? */
|
|
262
|
+
key: "isVisited",
|
|
263
|
+
value: function isVisited(tag) {
|
|
264
|
+
return tag !== null && this.visitedTags.has(tag);
|
|
265
|
+
}
|
|
266
|
+
}, {
|
|
267
|
+
/** The route's last loader result (stable identity until the loader runs
|
|
268
|
+
* again). undefined when the route has no loader / hasn't resolved. */
|
|
269
|
+
key: "loaderSnapshot",
|
|
270
|
+
value: function loaderSnapshot(tag) {
|
|
271
|
+
if (!tag) return void 0;
|
|
272
|
+
return this.loaderDataByTag.get(tag);
|
|
273
|
+
}
|
|
274
|
+
}, {
|
|
275
|
+
key: "preload",
|
|
276
|
+
value: (
|
|
277
|
+
/** Resolve a route's loader WITHOUT navigating. For the initial page:
|
|
278
|
+
* entries can `await stackNavigator.preload("/")` during top-level await
|
|
279
|
+
* (where GJS reliably drains promise jobs) so even the root page's first
|
|
280
|
+
* paint has loader data. */
|
|
281
|
+
async function preload(href) {
|
|
282
|
+
var hit = this.match(href);
|
|
283
|
+
if (!(hit === null || hit === void 0 ? void 0 : hit.route.loader)) return;
|
|
284
|
+
try {
|
|
285
|
+
var data = await hit.route.loader({
|
|
286
|
+
path: hit.pathname,
|
|
287
|
+
params: hit.params
|
|
288
|
+
});
|
|
289
|
+
this.loaderDataByTag.set(hit.route.tag, data);
|
|
290
|
+
this.rebuildSnapshot();
|
|
291
|
+
} catch (err) {
|
|
292
|
+
console.error(`[stack nav] preload loader for ${hit.route.tag} failed: ${String(err)}`);
|
|
293
|
+
}
|
|
294
|
+
})
|
|
295
|
+
}, {
|
|
296
|
+
/** Bind the live host stack (an Adw.NavigationView widget on GTK, a
|
|
297
|
+
* DomStackAdapter on DOM targets). */
|
|
298
|
+
key: "attach",
|
|
299
|
+
value: function attach(host) {
|
|
300
|
+
this.host = host;
|
|
301
|
+
this.syncFromHost();
|
|
302
|
+
}
|
|
303
|
+
}, {
|
|
304
|
+
key: "detach",
|
|
305
|
+
value: function detach() {
|
|
306
|
+
this.host = null;
|
|
307
|
+
}
|
|
308
|
+
}, {
|
|
309
|
+
key: "paramsSnapshot",
|
|
310
|
+
value: function paramsSnapshot(tag) {
|
|
311
|
+
var _this_paramsByTag_get;
|
|
312
|
+
if (!tag) return EMPTY_PARAMS;
|
|
313
|
+
return (_this_paramsByTag_get = this.paramsByTag.get(tag)) !== null && _this_paramsByTag_get !== void 0 ? _this_paramsByTag_get : EMPTY_PARAMS;
|
|
314
|
+
}
|
|
315
|
+
}, {
|
|
316
|
+
key: "match",
|
|
317
|
+
value: function match(href) {
|
|
318
|
+
var str = hrefToString(href);
|
|
319
|
+
var [path = "", query] = str.split("?");
|
|
320
|
+
var parts = path.split("/").filter(Boolean);
|
|
321
|
+
var _iteratorNormalCompletion = true,
|
|
322
|
+
_didIteratorError = false,
|
|
323
|
+
_iteratorError = void 0;
|
|
324
|
+
try {
|
|
325
|
+
for (var _iterator = this.routes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
326
|
+
var route = _step.value;
|
|
327
|
+
if (route.segments.length !== parts.length) continue;
|
|
328
|
+
var params = parseQuery(query);
|
|
329
|
+
var ok = true;
|
|
330
|
+
for (var i = 0; i < parts.length; i++) {
|
|
331
|
+
var seg = route.segments[i];
|
|
332
|
+
var part = decodeURIComponent(parts[i]);
|
|
333
|
+
if (seg.literal !== void 0) {
|
|
334
|
+
if (seg.literal !== part) {
|
|
335
|
+
ok = false;
|
|
336
|
+
break;
|
|
337
|
+
}
|
|
338
|
+
} else if (seg.param !== void 0) {
|
|
339
|
+
params[seg.param] = part;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
if (ok) return {
|
|
343
|
+
route,
|
|
344
|
+
pathname: path === "" ? "/" : `/${parts.join("/")}`,
|
|
345
|
+
params
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
} catch (err) {
|
|
349
|
+
_didIteratorError = true;
|
|
350
|
+
_iteratorError = err;
|
|
351
|
+
} finally {
|
|
352
|
+
try {
|
|
353
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
354
|
+
_iterator.return();
|
|
355
|
+
}
|
|
356
|
+
} finally {
|
|
357
|
+
if (_didIteratorError) {
|
|
358
|
+
throw _iteratorError;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
return null;
|
|
363
|
+
}
|
|
364
|
+
}, {
|
|
365
|
+
key: "navigate",
|
|
366
|
+
value: (
|
|
367
|
+
/** Shared push/replace flow, incl. the loader bridge. When the target
|
|
368
|
+
* route has no loader the whole body runs SYNCHRONOUSLY (an async
|
|
369
|
+
* function only yields at its first await), preserving the original
|
|
370
|
+
* timing. With a loader, the host action waits for the loader to resolve
|
|
371
|
+
* — same contract as One on web, where client navigation completes only
|
|
372
|
+
* after the route's loader data arrived — so the page's first paint has
|
|
373
|
+
* its data (and the lazily-mounted content mounts with it). */
|
|
374
|
+
async function navigate(href, mode) {
|
|
375
|
+
var hit = this.match(href);
|
|
376
|
+
if (!hit) {
|
|
377
|
+
console.log(`[stack nav] ${mode} ${hrefToString(href)} \u2014 no page in the route manifest, ignored`);
|
|
378
|
+
return;
|
|
379
|
+
}
|
|
380
|
+
if (!this.host) {
|
|
381
|
+
console.log(`[stack nav] ${mode} ${hrefToString(href)} \u2014 no stack host attached, ignored`);
|
|
382
|
+
return;
|
|
383
|
+
}
|
|
384
|
+
var {
|
|
385
|
+
route,
|
|
386
|
+
pathname,
|
|
387
|
+
params
|
|
388
|
+
} = hit;
|
|
389
|
+
var seq = ++this.navSeq;
|
|
390
|
+
if (route.loader) {
|
|
391
|
+
try {
|
|
392
|
+
var data = await route.loader({
|
|
393
|
+
path: pathname,
|
|
394
|
+
params
|
|
395
|
+
});
|
|
396
|
+
if (seq !== this.navSeq) return;
|
|
397
|
+
this.loaderDataByTag.set(route.tag, data);
|
|
398
|
+
} catch (err) {
|
|
399
|
+
if (seq !== this.navSeq) return;
|
|
400
|
+
console.error(`[stack nav] loader for ${route.tag} failed: ${String(err)}`);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
this.visitedTags.add(route.tag);
|
|
404
|
+
this.setRouteState(route.tag, pathname, params);
|
|
405
|
+
if (mode === "replace") {
|
|
406
|
+
var top = this.stackTags[this.stackTags.length - 1];
|
|
407
|
+
if (top === route.tag) return;
|
|
408
|
+
var tags = [...this.stackTags.slice(0, -1), route.tag];
|
|
409
|
+
this.host.replace_with_tags(tags);
|
|
410
|
+
return;
|
|
411
|
+
}
|
|
412
|
+
var idx = this.stackTags.indexOf(route.tag);
|
|
413
|
+
if (idx === -1) {
|
|
414
|
+
this.host.push_by_tag(route.tag);
|
|
415
|
+
} else if (idx < this.stackTags.length - 1) {
|
|
416
|
+
this.host.pop_to_tag(route.tag);
|
|
417
|
+
}
|
|
418
|
+
})
|
|
419
|
+
}, {
|
|
420
|
+
key: "setRouteState",
|
|
421
|
+
value: function setRouteState(tag, pathname, params) {
|
|
422
|
+
this.paramsByTag.set(tag, params);
|
|
423
|
+
this.pathnameByTag.set(tag, pathname);
|
|
424
|
+
this.rebuildSnapshot();
|
|
425
|
+
}
|
|
426
|
+
}, {
|
|
427
|
+
key: "rebuildSnapshot",
|
|
428
|
+
value: function rebuildSnapshot() {
|
|
429
|
+
var _this_stackTags_, _ref, _this_pathnameByTag_get;
|
|
430
|
+
var tag = (_this_stackTags_ = this.stackTags[this.stackTags.length - 1]) !== null && _this_stackTags_ !== void 0 ? _this_stackTags_ : "";
|
|
431
|
+
var route = this.routes.find(function (r) {
|
|
432
|
+
return r.tag === tag;
|
|
433
|
+
});
|
|
434
|
+
this.generation++;
|
|
435
|
+
this.snapshot = {
|
|
436
|
+
pathname: (_ref = (_this_pathnameByTag_get = this.pathnameByTag.get(tag)) !== null && _this_pathnameByTag_get !== void 0 ? _this_pathnameByTag_get : route === null || route === void 0 ? void 0 : route.pattern) !== null && _ref !== void 0 ? _ref : "/",
|
|
437
|
+
tag,
|
|
438
|
+
depth: this.stackTags.length,
|
|
439
|
+
canGoBack: this.stackTags.length > 1,
|
|
440
|
+
generation: this.generation
|
|
441
|
+
};
|
|
442
|
+
var _iteratorNormalCompletion = true,
|
|
443
|
+
_didIteratorError = false,
|
|
444
|
+
_iteratorError = void 0;
|
|
445
|
+
try {
|
|
446
|
+
for (var _iterator = this.listeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
447
|
+
var fn = _step.value;
|
|
448
|
+
fn();
|
|
449
|
+
}
|
|
450
|
+
} catch (err) {
|
|
451
|
+
_didIteratorError = true;
|
|
452
|
+
_iteratorError = err;
|
|
453
|
+
} finally {
|
|
454
|
+
try {
|
|
455
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
456
|
+
_iterator.return();
|
|
457
|
+
}
|
|
458
|
+
} finally {
|
|
459
|
+
if (_didIteratorError) {
|
|
460
|
+
throw _iteratorError;
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
}]);
|
|
466
|
+
return StackNavigator2;
|
|
467
|
+
}();
|
|
468
|
+
var stackNavigator = new StackNavigator();
|
|
469
|
+
var RouteTagContext = (0, import_react.createContext)(null);
|
|
470
|
+
function useNavState() {
|
|
471
|
+
return (0, import_react.useSyncExternalStore)(stackNavigator.subscribe, stackNavigator.getSnapshot);
|
|
472
|
+
}
|
|
473
|
+
function useRouteParams() {
|
|
474
|
+
var tag = (0, import_react.useContext)(RouteTagContext);
|
|
475
|
+
return (0, import_react.useSyncExternalStore)(stackNavigator.subscribe, function () {
|
|
476
|
+
return stackNavigator.paramsSnapshot(tag);
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
//# sourceMappingURL=navigator.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","navigator_exports","RouteTagContext","StackNavigator","hrefToString","stackNavigator","useNavState","useRouteParams","module","exports","import_react","require","_class_call_check","instance","Constructor","TypeError","_defineProperties","props","i","length","descriptor","configurable","writable","_create_class","protoProps","staticProps","_define_property","obj","compileRoute","def","segments","pattern","split","filter","Boolean","map","seg","m","match","param","literal","parseQuery","query","params","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","pair","eq","indexOf","decodeURIComponent","slice","prev","Array","isArray","push","err","return","href","_href_params","path","pathname","leftover","entries","raw","String","token","includes","replace","encodeURIComponent","join","EMPTY_PARAMS","freeze","StackNavigator2","_this","Set","Map","tag","depth","canGoBack","generation","fn","listeners","add","delete","snapshot","navigate","host","console","log","navSeq","pop","_this_paramsByTag_get","top","stackTags","paramsByTag","set","rebuildSnapshot","model","get_navigation_stack","tags","count","get_n_items","_model_get_item","get_item","get_tag","tag1","visitedTags","routes","configure","defs","loaderDataByTag","root","pathnameByTag"],"sources":["../../../src/seam/navigator.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { useContext, useSyncExternalStore } from "react";
|
|
2
|
+
import { RouteTagContext, hrefToString, stackNavigator, useNavState, useRouteParams } from "./navigator.mjs";
|
|
3
|
+
import { getUserScheme, onUserSchemeChange, setUserScheme, useUserScheme } from "@vxrn/color-scheme";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
function useLoader(_loader) {
|
|
6
|
+
const tag = useContext(RouteTagContext);
|
|
7
|
+
const fromRoute = useSyncExternalStore(stackNavigator.subscribe, () => stackNavigator.loaderSnapshot(tag));
|
|
8
|
+
return fromRoute;
|
|
9
|
+
}
|
|
10
|
+
const ROUTER = {
|
|
11
|
+
push: stackNavigator.push,
|
|
12
|
+
navigate: stackNavigator.push,
|
|
13
|
+
replace: stackNavigator.replace,
|
|
14
|
+
back: stackNavigator.back,
|
|
15
|
+
canGoBack: () => stackNavigator.getSnapshot().canGoBack,
|
|
16
|
+
dismiss: count => {
|
|
17
|
+
for (let i = 0; i < (count ?? 1); i++) stackNavigator.back();
|
|
18
|
+
},
|
|
19
|
+
dismissAll: () => {
|
|
20
|
+
const depth = stackNavigator.getSnapshot().depth;
|
|
21
|
+
for (let i = 1; i < depth; i++) stackNavigator.back();
|
|
22
|
+
},
|
|
23
|
+
canDismiss: () => stackNavigator.getSnapshot().canGoBack,
|
|
24
|
+
setParams: stackNavigator.setParams,
|
|
25
|
+
subscribe: listener => {
|
|
26
|
+
listener("success");
|
|
27
|
+
return () => {};
|
|
28
|
+
},
|
|
29
|
+
onLoadState: listener => {
|
|
30
|
+
listener("loaded");
|
|
31
|
+
return () => {};
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
function useRouter() {
|
|
35
|
+
return ROUTER;
|
|
36
|
+
}
|
|
37
|
+
function Link({
|
|
38
|
+
href,
|
|
39
|
+
replace,
|
|
40
|
+
children,
|
|
41
|
+
style,
|
|
42
|
+
...rest
|
|
43
|
+
}) {
|
|
44
|
+
if (!href || !stackNavigator.isConfigured) return children ?? null;
|
|
45
|
+
const hrefString = hrefToString(href);
|
|
46
|
+
const onClick = event => {
|
|
47
|
+
event.preventDefault();
|
|
48
|
+
if (replace) stackNavigator.replace(href);else stackNavigator.push(href);
|
|
49
|
+
};
|
|
50
|
+
return /* @__PURE__ */jsx("a", {
|
|
51
|
+
href: hrefString,
|
|
52
|
+
onClick,
|
|
53
|
+
style: {
|
|
54
|
+
display: "contents",
|
|
55
|
+
color: "inherit",
|
|
56
|
+
textDecoration: "none",
|
|
57
|
+
...style
|
|
58
|
+
},
|
|
59
|
+
"data-seam-link": hrefString,
|
|
60
|
+
...rest,
|
|
61
|
+
children
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function Slot(_props) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
function useParams() {
|
|
68
|
+
return useRouteParams();
|
|
69
|
+
}
|
|
70
|
+
function useLocalSearchParams() {
|
|
71
|
+
return useRouteParams();
|
|
72
|
+
}
|
|
73
|
+
function usePathname() {
|
|
74
|
+
return useNavState().pathname;
|
|
75
|
+
}
|
|
76
|
+
function useBlocker(_shouldBlock) {
|
|
77
|
+
return {
|
|
78
|
+
state: "unblocked",
|
|
79
|
+
proceed: () => {},
|
|
80
|
+
reset: () => {}
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function LoadProgressBar(_props) {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
function useMatches() {
|
|
87
|
+
return [];
|
|
88
|
+
}
|
|
89
|
+
export { Link, LoadProgressBar, Slot, getUserScheme, onUserSchemeChange, setUserScheme, useBlocker, useLoader, useLocalSearchParams, useMatches, useParams, usePathname, useRouter, useUserScheme };
|
|
90
|
+
//# sourceMappingURL=oneAdapter.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useContext","useSyncExternalStore","RouteTagContext","hrefToString","stackNavigator","useNavState","useRouteParams","getUserScheme","onUserSchemeChange","setUserScheme","useUserScheme","jsx","useLoader","_loader","tag","fromRoute","subscribe","loaderSnapshot","ROUTER","push","navigate","replace","back","canGoBack","getSnapshot","dismiss","count","i","dismissAll","depth","canDismiss","setParams","listener","onLoadState","useRouter","Link","href","children","style","rest","isConfigured","hrefString","onClick","event","preventDefault","display","color","textDecoration","Slot","_props","useParams","useLocalSearchParams","usePathname","pathname","useBlocker","_shouldBlock","state","proceed","reset","LoadProgressBar","useMatches"],"sources":["../../../src/seam/oneAdapter.tsx"],"sourcesContent":[null],"mappings":"AAqBA,SAASA,UAAA,EAAYC,oBAAA,QAA4B;AACjD,SACEC,eAAA,EACAC,YAAA,EACAC,cAAA,EACAC,WAAA,EACAC,cAAA,QAGK;AAEP,SACEC,aAAA,EACAC,kBAAA,EACAC,aAAA,EACAC,aAAA,QACK;AAuEH,SAAAC,GAAA;AA9DG,SAASC,UAAaC,OAAA,EAAuD;EAClF,MAAMC,GAAA,GAAMd,UAAA,CAAWE,eAAe;EACtC,MAAMa,SAAA,GAAYd,oBAAA,CAAqBG,cAAA,CAAeY,SAAA,EAAW,MAC/DZ,cAAA,CAAea,cAAA,CAAeH,GAAG,CACnC;EACA,OAAOC,SAAA;AACT;AAMA,MAAMG,MAAA,GAAS;EACbC,IAAA,EAAMf,cAAA,CAAee,IAAA;EACrBC,QAAA,EAAUhB,cAAA,CAAee,IAAA;EACzBE,OAAA,EAASjB,cAAA,CAAeiB,OAAA;EACxBC,IAAA,EAAMlB,cAAA,CAAekB,IAAA;EACrBC,SAAA,EAAWA,CAAA,KAAMnB,cAAA,CAAeoB,WAAA,CAAY,EAAED,SAAA;EAC9CE,OAAA,EAAUC,KAAA,IAAmB;IAC3B,SAASC,CAAA,GAAI,GAAGA,CAAA,IAAKD,KAAA,IAAS,IAAIC,CAAA,IAAKvB,cAAA,CAAekB,IAAA,CAAK;EAC7D;EACAM,UAAA,EAAYA,CAAA,KAAM;IAChB,MAAMC,KAAA,GAAQzB,cAAA,CAAeoB,WAAA,CAAY,EAAEK,KAAA;IAC3C,SAASF,CAAA,GAAI,GAAGA,CAAA,GAAIE,KAAA,EAAOF,CAAA,IAAKvB,cAAA,CAAekB,IAAA,CAAK;EACtD;EACAQ,UAAA,EAAYA,CAAA,KAAM1B,cAAA,CAAeoB,WAAA,CAAY,EAAED,SAAA;EAC/CQ,SAAA,EAAW3B,cAAA,CAAe2B,SAAA;EAC1Bf,SAAA,EAAYgB,QAAA,IAAmD;IAC7DA,QAAA,CAAS,SAAS;IAClB,OAAO,MAAM,CAAC;EAChB;EACAC,WAAA,EAAcD,QAAA,IAAoD;IAChEA,QAAA,CAAS,QAAQ;IACjB,OAAO,MAAM,CAAC;EAChB;AACF;AAEO,SAASE,UAAA,EAA2B;EACzC,OAAOhB,MAAA;AACT;AAcO,SAASiB,KAAK;EAAEC,IAAA;EAAMf,OAAA;EAASgB,QAAA;EAAUC,KAAA;EAAO,GAAGC;AAAK,GAAyB;EACtF,IAAI,CAACH,IAAA,IAAQ,CAAChC,cAAA,CAAeoC,YAAA,EAAc,OAAOH,QAAA,IAAY;EAC9D,MAAMI,UAAA,GAAatC,YAAA,CAAaiC,IAAI;EACpC,MAAMM,OAAA,GAAWC,KAAA,IAAyC;IACxDA,KAAA,CAAMC,cAAA,CAAe;IACrB,IAAIvB,OAAA,EAASjB,cAAA,CAAeiB,OAAA,CAAQe,IAAI,OACnChC,cAAA,CAAee,IAAA,CAAKiB,IAAI;EAC/B;EACA,OACE,eAAAzB,GAAA,CAAC;IACCyB,IAAA,EAAMK,UAAA;IACNC,OAAA;IAIAJ,KAAA,EAAO;MAAEO,OAAA,EAAS;MAAYC,KAAA,EAAO;MAAWC,cAAA,EAAgB;MAAQ,GAAGT;IAAM;IACjF,kBAAgBG,UAAA;IACf,GAAGF,IAAA;IAEHF;EAAA,CACH;AAEJ;AAMO,SAASW,KAAKC,MAAA,EAAuC;EAC1D,OAAO;AACT;AAEO,SAASC,UAAA,EAAuB;EACrC,OAAO5C,cAAA,CAAe;AACxB;AAEO,SAAS6C,qBAAA,EAAkC;EAChD,OAAO7C,cAAA,CAAe;AACxB;AAEO,SAAS8C,YAAA,EAAsB;EACpC,OAAO/C,WAAA,CAAY,EAAEgD,QAAA;AACvB;AAMO,SAASC,WAAWC,YAAA,EAIzB;EACA,OAAO;IAAEC,KAAA,EAAO;IAAaC,OAAA,EAASA,CAAA,KAAM,CAAC;IAAGC,KAAA,EAAOA,CAAA,KAAM,CAAC;EAAE;AAClE;AAIO,SAASC,gBAAgBV,MAAA,EAAuC;EACrE,OAAO;AACT;AAIO,SAASW,WAAA,EAAwB;EACtC,OAAO,EAAC;AACV","ignoreList":[]}
|