@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,446 @@
|
|
|
1
|
+
import { createContext, useContext, useSyncExternalStore } from "react";
|
|
2
|
+
function _class_call_check(instance, Constructor) {
|
|
3
|
+
if (!(instance instanceof Constructor)) {
|
|
4
|
+
throw new TypeError("Cannot call a class as a function");
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
function _defineProperties(target, props) {
|
|
8
|
+
for (var i = 0; i < props.length; i++) {
|
|
9
|
+
var descriptor = props[i];
|
|
10
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
11
|
+
descriptor.configurable = true;
|
|
12
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
13
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function _create_class(Constructor, protoProps, staticProps) {
|
|
17
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
18
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
19
|
+
return Constructor;
|
|
20
|
+
}
|
|
21
|
+
function _define_property(obj, key, value) {
|
|
22
|
+
if (key in obj) {
|
|
23
|
+
Object.defineProperty(obj, key, {
|
|
24
|
+
value,
|
|
25
|
+
enumerable: true,
|
|
26
|
+
configurable: true,
|
|
27
|
+
writable: true
|
|
28
|
+
});
|
|
29
|
+
} else {
|
|
30
|
+
obj[key] = value;
|
|
31
|
+
}
|
|
32
|
+
return obj;
|
|
33
|
+
}
|
|
34
|
+
function compileRoute(def) {
|
|
35
|
+
var segments = def.pattern.split("/").filter(Boolean).map(function (seg) {
|
|
36
|
+
var m = seg.match(/^\[(\.{3})?(.+)\]$/);
|
|
37
|
+
return m ? {
|
|
38
|
+
param: m[2]
|
|
39
|
+
} : {
|
|
40
|
+
literal: seg
|
|
41
|
+
};
|
|
42
|
+
});
|
|
43
|
+
return {
|
|
44
|
+
...def,
|
|
45
|
+
segments
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function parseQuery(query) {
|
|
49
|
+
var params = {};
|
|
50
|
+
if (!query) return params;
|
|
51
|
+
var _iteratorNormalCompletion = true,
|
|
52
|
+
_didIteratorError = false,
|
|
53
|
+
_iteratorError = void 0;
|
|
54
|
+
try {
|
|
55
|
+
for (var _iterator = query.split("&")[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
56
|
+
var pair = _step.value;
|
|
57
|
+
if (!pair) continue;
|
|
58
|
+
var eq = pair.indexOf("=");
|
|
59
|
+
var key = decodeURIComponent(eq === -1 ? pair : pair.slice(0, eq));
|
|
60
|
+
var value = eq === -1 ? "" : decodeURIComponent(pair.slice(eq + 1));
|
|
61
|
+
var prev = params[key];
|
|
62
|
+
if (prev === void 0) params[key] = value;else if (Array.isArray(prev)) prev.push(value);else params[key] = [prev, value];
|
|
63
|
+
}
|
|
64
|
+
} catch (err) {
|
|
65
|
+
_didIteratorError = true;
|
|
66
|
+
_iteratorError = err;
|
|
67
|
+
} finally {
|
|
68
|
+
try {
|
|
69
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
70
|
+
_iterator.return();
|
|
71
|
+
}
|
|
72
|
+
} finally {
|
|
73
|
+
if (_didIteratorError) {
|
|
74
|
+
throw _iteratorError;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return params;
|
|
79
|
+
}
|
|
80
|
+
function hrefToString(href) {
|
|
81
|
+
var _href_params;
|
|
82
|
+
if (typeof href === "string") return href;
|
|
83
|
+
var path = href.pathname;
|
|
84
|
+
var leftover = [];
|
|
85
|
+
var _iteratorNormalCompletion = true,
|
|
86
|
+
_didIteratorError = false,
|
|
87
|
+
_iteratorError = void 0;
|
|
88
|
+
try {
|
|
89
|
+
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) {
|
|
90
|
+
var [key, raw] = _step.value;
|
|
91
|
+
var value = String(raw);
|
|
92
|
+
var token = `[${key}]`;
|
|
93
|
+
if (path.includes(token)) path = path.replace(token, encodeURIComponent(value));else leftover.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);
|
|
94
|
+
}
|
|
95
|
+
} catch (err) {
|
|
96
|
+
_didIteratorError = true;
|
|
97
|
+
_iteratorError = err;
|
|
98
|
+
} finally {
|
|
99
|
+
try {
|
|
100
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
101
|
+
_iterator.return();
|
|
102
|
+
}
|
|
103
|
+
} finally {
|
|
104
|
+
if (_didIteratorError) {
|
|
105
|
+
throw _iteratorError;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return leftover.length ? `${path}?${leftover.join("&")}` : path;
|
|
110
|
+
}
|
|
111
|
+
var EMPTY_PARAMS = Object.freeze({});
|
|
112
|
+
var StackNavigator = /* @__PURE__ */function () {
|
|
113
|
+
"use strict";
|
|
114
|
+
|
|
115
|
+
function StackNavigator2() {
|
|
116
|
+
var _this = this;
|
|
117
|
+
_class_call_check(this, StackNavigator2);
|
|
118
|
+
_define_property(this, "routes", []);
|
|
119
|
+
_define_property(this, "host", null);
|
|
120
|
+
_define_property(this, "listeners", /* @__PURE__ */new Set());
|
|
121
|
+
_define_property(this, "stackTags", []);
|
|
122
|
+
_define_property(this, "paramsByTag", /* @__PURE__ */new Map());
|
|
123
|
+
_define_property(this, "pathnameByTag", /* @__PURE__ */new Map());
|
|
124
|
+
_define_property(this, "visitedTags", /* @__PURE__ */new Set());
|
|
125
|
+
_define_property(this, "loaderDataByTag", /* @__PURE__ */new Map());
|
|
126
|
+
_define_property(this, "navSeq", 0);
|
|
127
|
+
_define_property(this, "generation", 0);
|
|
128
|
+
_define_property(this, "snapshot", {
|
|
129
|
+
pathname: "/",
|
|
130
|
+
tag: "",
|
|
131
|
+
depth: 0,
|
|
132
|
+
canGoBack: false,
|
|
133
|
+
generation: 0
|
|
134
|
+
});
|
|
135
|
+
_define_property(this, "subscribe", function (fn) {
|
|
136
|
+
_this.listeners.add(fn);
|
|
137
|
+
return function () {
|
|
138
|
+
return _this.listeners.delete(fn);
|
|
139
|
+
};
|
|
140
|
+
});
|
|
141
|
+
_define_property(this, "getSnapshot", function () {
|
|
142
|
+
return _this.snapshot;
|
|
143
|
+
});
|
|
144
|
+
_define_property(this, "push", function (href) {
|
|
145
|
+
void _this.navigate(href, "push");
|
|
146
|
+
});
|
|
147
|
+
_define_property(this, "replace", function (href) {
|
|
148
|
+
void _this.navigate(href, "replace");
|
|
149
|
+
});
|
|
150
|
+
_define_property(this, "back", function () {
|
|
151
|
+
if (!_this.host) {
|
|
152
|
+
console.log("[stack nav] back \u2014 no stack host attached, ignored");
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
_this.navSeq++;
|
|
156
|
+
_this.host.pop();
|
|
157
|
+
});
|
|
158
|
+
_define_property(this, "setParams", function (params) {
|
|
159
|
+
var _this_paramsByTag_get;
|
|
160
|
+
var top = _this.stackTags[_this.stackTags.length - 1];
|
|
161
|
+
if (!top) return;
|
|
162
|
+
var prev = (_this_paramsByTag_get = _this.paramsByTag.get(top)) !== null && _this_paramsByTag_get !== void 0 ? _this_paramsByTag_get : {};
|
|
163
|
+
_this.paramsByTag.set(top, {
|
|
164
|
+
...prev,
|
|
165
|
+
...params
|
|
166
|
+
});
|
|
167
|
+
_this.rebuildSnapshot();
|
|
168
|
+
});
|
|
169
|
+
_define_property(this, "syncFromHost", function () {
|
|
170
|
+
if (!_this.host) return;
|
|
171
|
+
_this.navSeq++;
|
|
172
|
+
var model = _this.host.get_navigation_stack();
|
|
173
|
+
var tags = [];
|
|
174
|
+
var count = model.get_n_items();
|
|
175
|
+
for (var i = 0; i < count; i++) {
|
|
176
|
+
var _model_get_item;
|
|
177
|
+
var tag = (_model_get_item = model.get_item(i)) === null || _model_get_item === void 0 ? void 0 : _model_get_item.get_tag();
|
|
178
|
+
if (tag) tags.push(tag);
|
|
179
|
+
}
|
|
180
|
+
if (tags.length > 0) _this.stackTags = tags;
|
|
181
|
+
var _iteratorNormalCompletion = true,
|
|
182
|
+
_didIteratorError = false,
|
|
183
|
+
_iteratorError = void 0;
|
|
184
|
+
try {
|
|
185
|
+
for (var _iterator = _this.stackTags[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
186
|
+
var tag1 = _step.value;
|
|
187
|
+
_this.visitedTags.add(tag1);
|
|
188
|
+
}
|
|
189
|
+
} catch (err) {
|
|
190
|
+
_didIteratorError = true;
|
|
191
|
+
_iteratorError = err;
|
|
192
|
+
} finally {
|
|
193
|
+
try {
|
|
194
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
195
|
+
_iterator.return();
|
|
196
|
+
}
|
|
197
|
+
} finally {
|
|
198
|
+
if (_didIteratorError) {
|
|
199
|
+
throw _iteratorError;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
_this.rebuildSnapshot();
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
_create_class(StackNavigator2, [{
|
|
207
|
+
key: "isConfigured",
|
|
208
|
+
get: function get() {
|
|
209
|
+
return this.routes.length > 0;
|
|
210
|
+
}
|
|
211
|
+
}, {
|
|
212
|
+
/** Register the route manifest. The FIRST route is the root page. */
|
|
213
|
+
key: "configure",
|
|
214
|
+
value: function configure(defs) {
|
|
215
|
+
this.routes = defs.map(compileRoute);
|
|
216
|
+
this.visitedTags = /* @__PURE__ */new Set();
|
|
217
|
+
this.loaderDataByTag = /* @__PURE__ */new Map();
|
|
218
|
+
var root = defs[0];
|
|
219
|
+
if (root) {
|
|
220
|
+
this.stackTags = [root.tag];
|
|
221
|
+
this.visitedTags.add(root.tag);
|
|
222
|
+
this.pathnameByTag.set(root.tag, root.pattern);
|
|
223
|
+
this.rebuildSnapshot();
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}, {
|
|
227
|
+
/** Has this route's page been navigated to (⇒ its content may mount)? */
|
|
228
|
+
key: "isVisited",
|
|
229
|
+
value: function isVisited(tag) {
|
|
230
|
+
return tag !== null && this.visitedTags.has(tag);
|
|
231
|
+
}
|
|
232
|
+
}, {
|
|
233
|
+
/** The route's last loader result (stable identity until the loader runs
|
|
234
|
+
* again). undefined when the route has no loader / hasn't resolved. */
|
|
235
|
+
key: "loaderSnapshot",
|
|
236
|
+
value: function loaderSnapshot(tag) {
|
|
237
|
+
if (!tag) return void 0;
|
|
238
|
+
return this.loaderDataByTag.get(tag);
|
|
239
|
+
}
|
|
240
|
+
}, {
|
|
241
|
+
key: "preload",
|
|
242
|
+
value: (
|
|
243
|
+
/** Resolve a route's loader WITHOUT navigating. For the initial page:
|
|
244
|
+
* entries can `await stackNavigator.preload("/")` during top-level await
|
|
245
|
+
* (where GJS reliably drains promise jobs) so even the root page's first
|
|
246
|
+
* paint has loader data. */
|
|
247
|
+
async function preload(href) {
|
|
248
|
+
var hit = this.match(href);
|
|
249
|
+
if (!(hit === null || hit === void 0 ? void 0 : hit.route.loader)) return;
|
|
250
|
+
try {
|
|
251
|
+
var data = await hit.route.loader({
|
|
252
|
+
path: hit.pathname,
|
|
253
|
+
params: hit.params
|
|
254
|
+
});
|
|
255
|
+
this.loaderDataByTag.set(hit.route.tag, data);
|
|
256
|
+
this.rebuildSnapshot();
|
|
257
|
+
} catch (err) {
|
|
258
|
+
console.error(`[stack nav] preload loader for ${hit.route.tag} failed: ${String(err)}`);
|
|
259
|
+
}
|
|
260
|
+
})
|
|
261
|
+
}, {
|
|
262
|
+
/** Bind the live host stack (an Adw.NavigationView widget on GTK, a
|
|
263
|
+
* DomStackAdapter on DOM targets). */
|
|
264
|
+
key: "attach",
|
|
265
|
+
value: function attach(host) {
|
|
266
|
+
this.host = host;
|
|
267
|
+
this.syncFromHost();
|
|
268
|
+
}
|
|
269
|
+
}, {
|
|
270
|
+
key: "detach",
|
|
271
|
+
value: function detach() {
|
|
272
|
+
this.host = null;
|
|
273
|
+
}
|
|
274
|
+
}, {
|
|
275
|
+
key: "paramsSnapshot",
|
|
276
|
+
value: function paramsSnapshot(tag) {
|
|
277
|
+
var _this_paramsByTag_get;
|
|
278
|
+
if (!tag) return EMPTY_PARAMS;
|
|
279
|
+
return (_this_paramsByTag_get = this.paramsByTag.get(tag)) !== null && _this_paramsByTag_get !== void 0 ? _this_paramsByTag_get : EMPTY_PARAMS;
|
|
280
|
+
}
|
|
281
|
+
}, {
|
|
282
|
+
key: "match",
|
|
283
|
+
value: function match(href) {
|
|
284
|
+
var str = hrefToString(href);
|
|
285
|
+
var [path = "", query] = str.split("?");
|
|
286
|
+
var parts = path.split("/").filter(Boolean);
|
|
287
|
+
var _iteratorNormalCompletion = true,
|
|
288
|
+
_didIteratorError = false,
|
|
289
|
+
_iteratorError = void 0;
|
|
290
|
+
try {
|
|
291
|
+
for (var _iterator = this.routes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
292
|
+
var route = _step.value;
|
|
293
|
+
if (route.segments.length !== parts.length) continue;
|
|
294
|
+
var params = parseQuery(query);
|
|
295
|
+
var ok = true;
|
|
296
|
+
for (var i = 0; i < parts.length; i++) {
|
|
297
|
+
var seg = route.segments[i];
|
|
298
|
+
var part = decodeURIComponent(parts[i]);
|
|
299
|
+
if (seg.literal !== void 0) {
|
|
300
|
+
if (seg.literal !== part) {
|
|
301
|
+
ok = false;
|
|
302
|
+
break;
|
|
303
|
+
}
|
|
304
|
+
} else if (seg.param !== void 0) {
|
|
305
|
+
params[seg.param] = part;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
if (ok) return {
|
|
309
|
+
route,
|
|
310
|
+
pathname: path === "" ? "/" : `/${parts.join("/")}`,
|
|
311
|
+
params
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
} catch (err) {
|
|
315
|
+
_didIteratorError = true;
|
|
316
|
+
_iteratorError = err;
|
|
317
|
+
} finally {
|
|
318
|
+
try {
|
|
319
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
320
|
+
_iterator.return();
|
|
321
|
+
}
|
|
322
|
+
} finally {
|
|
323
|
+
if (_didIteratorError) {
|
|
324
|
+
throw _iteratorError;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
return null;
|
|
329
|
+
}
|
|
330
|
+
}, {
|
|
331
|
+
key: "navigate",
|
|
332
|
+
value: (
|
|
333
|
+
/** Shared push/replace flow, incl. the loader bridge. When the target
|
|
334
|
+
* route has no loader the whole body runs SYNCHRONOUSLY (an async
|
|
335
|
+
* function only yields at its first await), preserving the original
|
|
336
|
+
* timing. With a loader, the host action waits for the loader to resolve
|
|
337
|
+
* — same contract as One on web, where client navigation completes only
|
|
338
|
+
* after the route's loader data arrived — so the page's first paint has
|
|
339
|
+
* its data (and the lazily-mounted content mounts with it). */
|
|
340
|
+
async function navigate(href, mode) {
|
|
341
|
+
var hit = this.match(href);
|
|
342
|
+
if (!hit) {
|
|
343
|
+
console.log(`[stack nav] ${mode} ${hrefToString(href)} \u2014 no page in the route manifest, ignored`);
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
if (!this.host) {
|
|
347
|
+
console.log(`[stack nav] ${mode} ${hrefToString(href)} \u2014 no stack host attached, ignored`);
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
var {
|
|
351
|
+
route,
|
|
352
|
+
pathname,
|
|
353
|
+
params
|
|
354
|
+
} = hit;
|
|
355
|
+
var seq = ++this.navSeq;
|
|
356
|
+
if (route.loader) {
|
|
357
|
+
try {
|
|
358
|
+
var data = await route.loader({
|
|
359
|
+
path: pathname,
|
|
360
|
+
params
|
|
361
|
+
});
|
|
362
|
+
if (seq !== this.navSeq) return;
|
|
363
|
+
this.loaderDataByTag.set(route.tag, data);
|
|
364
|
+
} catch (err) {
|
|
365
|
+
if (seq !== this.navSeq) return;
|
|
366
|
+
console.error(`[stack nav] loader for ${route.tag} failed: ${String(err)}`);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
this.visitedTags.add(route.tag);
|
|
370
|
+
this.setRouteState(route.tag, pathname, params);
|
|
371
|
+
if (mode === "replace") {
|
|
372
|
+
var top = this.stackTags[this.stackTags.length - 1];
|
|
373
|
+
if (top === route.tag) return;
|
|
374
|
+
var tags = [...this.stackTags.slice(0, -1), route.tag];
|
|
375
|
+
this.host.replace_with_tags(tags);
|
|
376
|
+
return;
|
|
377
|
+
}
|
|
378
|
+
var idx = this.stackTags.indexOf(route.tag);
|
|
379
|
+
if (idx === -1) {
|
|
380
|
+
this.host.push_by_tag(route.tag);
|
|
381
|
+
} else if (idx < this.stackTags.length - 1) {
|
|
382
|
+
this.host.pop_to_tag(route.tag);
|
|
383
|
+
}
|
|
384
|
+
})
|
|
385
|
+
}, {
|
|
386
|
+
key: "setRouteState",
|
|
387
|
+
value: function setRouteState(tag, pathname, params) {
|
|
388
|
+
this.paramsByTag.set(tag, params);
|
|
389
|
+
this.pathnameByTag.set(tag, pathname);
|
|
390
|
+
this.rebuildSnapshot();
|
|
391
|
+
}
|
|
392
|
+
}, {
|
|
393
|
+
key: "rebuildSnapshot",
|
|
394
|
+
value: function rebuildSnapshot() {
|
|
395
|
+
var _this_stackTags_, _ref, _this_pathnameByTag_get;
|
|
396
|
+
var tag = (_this_stackTags_ = this.stackTags[this.stackTags.length - 1]) !== null && _this_stackTags_ !== void 0 ? _this_stackTags_ : "";
|
|
397
|
+
var route = this.routes.find(function (r) {
|
|
398
|
+
return r.tag === tag;
|
|
399
|
+
});
|
|
400
|
+
this.generation++;
|
|
401
|
+
this.snapshot = {
|
|
402
|
+
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 : "/",
|
|
403
|
+
tag,
|
|
404
|
+
depth: this.stackTags.length,
|
|
405
|
+
canGoBack: this.stackTags.length > 1,
|
|
406
|
+
generation: this.generation
|
|
407
|
+
};
|
|
408
|
+
var _iteratorNormalCompletion = true,
|
|
409
|
+
_didIteratorError = false,
|
|
410
|
+
_iteratorError = void 0;
|
|
411
|
+
try {
|
|
412
|
+
for (var _iterator = this.listeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
413
|
+
var fn = _step.value;
|
|
414
|
+
fn();
|
|
415
|
+
}
|
|
416
|
+
} catch (err) {
|
|
417
|
+
_didIteratorError = true;
|
|
418
|
+
_iteratorError = err;
|
|
419
|
+
} finally {
|
|
420
|
+
try {
|
|
421
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
422
|
+
_iterator.return();
|
|
423
|
+
}
|
|
424
|
+
} finally {
|
|
425
|
+
if (_didIteratorError) {
|
|
426
|
+
throw _iteratorError;
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
}]);
|
|
432
|
+
return StackNavigator2;
|
|
433
|
+
}();
|
|
434
|
+
var stackNavigator = new StackNavigator();
|
|
435
|
+
var RouteTagContext = createContext(null);
|
|
436
|
+
function useNavState() {
|
|
437
|
+
return useSyncExternalStore(stackNavigator.subscribe, stackNavigator.getSnapshot);
|
|
438
|
+
}
|
|
439
|
+
function useRouteParams() {
|
|
440
|
+
var tag = useContext(RouteTagContext);
|
|
441
|
+
return useSyncExternalStore(stackNavigator.subscribe, function () {
|
|
442
|
+
return stackNavigator.paramsSnapshot(tag);
|
|
443
|
+
});
|
|
444
|
+
}
|
|
445
|
+
export { RouteTagContext, StackNavigator, hrefToString, stackNavigator, useNavState, useRouteParams };
|
|
446
|
+
//# sourceMappingURL=navigator.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createContext","useContext","useSyncExternalStore","_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","value","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","hrefToString","href","_href_params","path","pathname","leftover","entries","raw","String","token","includes","replace","encodeURIComponent","join","EMPTY_PARAMS","freeze","StackNavigator","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","get","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","isVisited","has","loaderSnapshot","preload","hit","route","loader","data"],"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":"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","ignoreList":[]}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useContext, useSyncExternalStore } from "react";
|
|
3
|
+
import { RouteTagContext, hrefToString, stackNavigator, useNavState, useRouteParams } from "./navigator.native.js";
|
|
4
|
+
import { getUserScheme, onUserSchemeChange, setUserScheme, useUserScheme } from "@vxrn/color-scheme";
|
|
5
|
+
function useLoader(_loader) {
|
|
6
|
+
var tag = useContext(RouteTagContext);
|
|
7
|
+
var fromRoute = useSyncExternalStore(stackNavigator.subscribe, function () {
|
|
8
|
+
return stackNavigator.loaderSnapshot(tag);
|
|
9
|
+
});
|
|
10
|
+
return fromRoute;
|
|
11
|
+
}
|
|
12
|
+
var ROUTER = {
|
|
13
|
+
push: stackNavigator.push,
|
|
14
|
+
navigate: stackNavigator.push,
|
|
15
|
+
replace: stackNavigator.replace,
|
|
16
|
+
back: stackNavigator.back,
|
|
17
|
+
canGoBack: function canGoBack() {
|
|
18
|
+
return stackNavigator.getSnapshot().canGoBack;
|
|
19
|
+
},
|
|
20
|
+
dismiss: function dismiss(count) {
|
|
21
|
+
for (var i = 0; i < (count !== null && count !== void 0 ? count : 1); i++) stackNavigator.back();
|
|
22
|
+
},
|
|
23
|
+
dismissAll: function dismissAll() {
|
|
24
|
+
var depth = stackNavigator.getSnapshot().depth;
|
|
25
|
+
for (var i = 1; i < depth; i++) stackNavigator.back();
|
|
26
|
+
},
|
|
27
|
+
canDismiss: function canDismiss() {
|
|
28
|
+
return stackNavigator.getSnapshot().canGoBack;
|
|
29
|
+
},
|
|
30
|
+
setParams: stackNavigator.setParams,
|
|
31
|
+
subscribe: function subscribe(listener) {
|
|
32
|
+
listener("success");
|
|
33
|
+
return function () {};
|
|
34
|
+
},
|
|
35
|
+
onLoadState: function onLoadState(listener) {
|
|
36
|
+
listener("loaded");
|
|
37
|
+
return function () {};
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
function useRouter() {
|
|
41
|
+
return ROUTER;
|
|
42
|
+
}
|
|
43
|
+
function Link(param) {
|
|
44
|
+
var {
|
|
45
|
+
href,
|
|
46
|
+
replace,
|
|
47
|
+
children,
|
|
48
|
+
style,
|
|
49
|
+
...rest
|
|
50
|
+
} = param;
|
|
51
|
+
if (!href || !stackNavigator.isConfigured) return children !== null && children !== void 0 ? children : null;
|
|
52
|
+
var hrefString = hrefToString(href);
|
|
53
|
+
var onClick = function onClick2(event) {
|
|
54
|
+
event.preventDefault();
|
|
55
|
+
if (replace) stackNavigator.replace(href);else stackNavigator.push(href);
|
|
56
|
+
};
|
|
57
|
+
return /* @__PURE__ */_jsx("a", {
|
|
58
|
+
href: hrefString,
|
|
59
|
+
onClick,
|
|
60
|
+
// display:contents — the anchor contributes no box, so wrapping
|
|
61
|
+
// arbitrary flex/grid children never disturbs layout (clicks still
|
|
62
|
+
// bubble through it).
|
|
63
|
+
style: {
|
|
64
|
+
display: "contents",
|
|
65
|
+
color: "inherit",
|
|
66
|
+
textDecoration: "none",
|
|
67
|
+
...style
|
|
68
|
+
},
|
|
69
|
+
"data-seam-link": hrefString,
|
|
70
|
+
...rest,
|
|
71
|
+
children
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
function Slot(_props) {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
function useParams() {
|
|
78
|
+
return useRouteParams();
|
|
79
|
+
}
|
|
80
|
+
function useLocalSearchParams() {
|
|
81
|
+
return useRouteParams();
|
|
82
|
+
}
|
|
83
|
+
function usePathname() {
|
|
84
|
+
return useNavState().pathname;
|
|
85
|
+
}
|
|
86
|
+
function useBlocker(_shouldBlock) {
|
|
87
|
+
return {
|
|
88
|
+
state: "unblocked",
|
|
89
|
+
proceed: function proceed() {},
|
|
90
|
+
reset: function reset() {}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function LoadProgressBar(_props) {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
function useMatches() {
|
|
97
|
+
return [];
|
|
98
|
+
}
|
|
99
|
+
export { Link, LoadProgressBar, Slot, getUserScheme, onUserSchemeChange, setUserScheme, useBlocker, useLoader, useLocalSearchParams, useMatches, useParams, usePathname, useRouter, useUserScheme };
|
|
100
|
+
//# sourceMappingURL=oneAdapter.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","useContext","useSyncExternalStore","RouteTagContext","hrefToString","stackNavigator","useNavState","useRouteParams","getUserScheme","onUserSchemeChange","setUserScheme","useUserScheme","useLoader","_loader","tag","fromRoute","subscribe","loaderSnapshot","ROUTER","push","navigate","replace","back","canGoBack","getSnapshot","dismiss","count","i","dismissAll","depth","canDismiss","setParams","listener","onLoadState","useRouter","Link","param","href","children","style","rest","isConfigured","hrefString","onClick","onClick2","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,GAAA,IAAAC,IAAA,QAAY;AACrB,SAAAC,UAAA,EAAAC,oBAAA;AAAA,SACEC,eAAA,EAAAC,YAAA,EAAAC,cAAA,EAAAC,WAAA,EAAAC,cAAA;AAAA,SACAC,aAAA,EAAAC,kBAAA,EAAAC,aAAA,EAAAC,aAAA;AAAA,SACAC,UAAAC,OAAA;EACA,IAAAC,GAAA,GAAAb,UAAA,CAAAE,eAAA;EACA,IAAAY,SAAA,GAAAb,oBAAA,CAAAG,cAAA,CAAAW,SAAA;IAAA,OAGKX,cAAA,CAAAY,cAAA,CAAAH,GAAA;EAEP;EACE,OAAAC,SAAA;AAAA;AACA,IACAG,MAAA;EACAC,IAAA,EAAAd,cAAA,CAAAc,IAAA;EAAAC,QACK,EAAAf,cAAA,CAAAc,IAAA;EAuEHE,OAAA,EAAAhB,cAAA,CAAAgB,OAAA;EA9DGC,IAAA,EAAAjB,cAAsB,CAAAiB,IAAA;EAC3BC,SAAM,WAAMA,SAAWA,CAAA;IACvB,OAAMlB,cAAY,CAAAmB,WAAA,GAAAD,SAAA;EAAA;EAAoCE,OAAW,EAC/D,SAAAA,OAAeA,CAAAC,KAAA;IACjB,SAAAC,CAAA,MAAAA,CAAA,IAAAD,KAAA,aAAAA,KAAA,cAAAA,KAAA,OAAAC,CAAA,IAAAtB,cAAA,CAAAiB,IAAA;EACA;EACFM,UAAA,WAAAA,WAAA;IAMA,IAAMC,KAAA,GAASxB,cAAA,CAAAmB,WAAA,GAAAK,KAAA;IACb,KAAM,IAAAF,CAAA,MAAAA,CAAA,GAAeE,KAAA,EAAAF,CAAA,IAAAtB,cAAA,CAAAiB,IAAA;EACrB;EACAQ,UAAS,WAAAA,UAAeA,CAAA;IACxB,OAAMzB,cAAe,CAAAmB,WAAA,GAAAD,SAAA;EACrB;EACAQ,SAAS,EAAC1B,cAAmB,CAAA0B,SAAA;EAC3Bf,SAAA,EAAS,SAAOA,SAAKA,CAAAgB,QAAa,EAAK;IACzCA,QAAA;IACA,mBAAkB,CAChB;EACA;EACFC,WAAA,WAAAA,YAAAD,QAAA;IACAA,QAAA,SAAkB;IAClB,mBAAW,CACX;EACE;AACA;AAAa,SAACE,UAAA;EAChB,OAAAhB,MAAA;AAAA;AAEE,SAAAiB,IAASA,CAAAC,KAAA,EAAQ;EACjB;IAAAC,IAAO;IAAAhB,OAAM;IAAAiB,QAAA;IAAAC,KAAA;IAAA,GAAAC;EAAA,IAAAJ,KAAA;EAAA,IAAC,CAAAC,IAAA,KAAAhC,cAAA,CAAAoC,YAAA,SAAAH,QAAA,aAAAA,QAAA,cAAAA,QAAA;EAChB,IAAAI,UAAA,GAAAtC,YAAA,CAAAiC,IAAA;EACF,IAAAM,OAAA,YAAAC,SAAAC,KAAA;IAEOA,KAAS,CAAAC,cAA2B;IACzC,IAAAzB,OAAO,EAAAhB,cAAA,CAAAgB,OAAA,CAAAgB,IAAA,OACThC,cAAA,CAAAc,IAAA,CAAAkB,IAAA;EAcO;EACL,OAAK,eAASrC,IAAA,IAAe;IAC7BqC,IAAM,EAAAK,UAAA;IACNC,OAAM;IACJ;IACA;IAAwC;IAE1CJ,KAAA;MACAQ,OACE;MAACC,KAAA;MAAAC,cAAA;MACC,GAAAV;IAAM;IACN,gBAIS,EAAAG,UAAS;IAA+D,GACjFF,IAAA;IAAgBF;EACZ;AAEH;AAAA,SACHY,KAAAC,MAAA;EAEJ;AAMO;AACL,SAAOC,UAAA;EACT,OAAA7C,cAAA;AAEO;AACL,SAAO8C,oBAAeA,CAAA;EACxB,OAAA9C,cAAA;AAEO;AACL,SAAO+C,YAAA;EACT,OAAAhD,WAAA,GAAAiD,QAAA;AAEO;AACL,SAAOC,WAAAC,YAAc;EACvB;IAMOC,KAAS,aAAW;IAKzBC,OAAS,WAAOA,QAAA,EAAa,CAAgB,CAAG;IAAgBC,KAAA,WAAAA,MAAA,GAClE;EAIO;AACL;AACF,SAAAC,gBAAAV,MAAA;EAIO,OAAS;AACd;AACF,SAAAW,WAAA","ignoreList":[]}
|