@wavelengthusaf/client-router 0.0.6 → 0.0.8

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.
@@ -1 +1 @@
1
- {"version":3,"file":"RouteElement.js","sourceRoot":"","sources":["../../src/elements/RouteElement.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,YAAa,SAAQ,WAAW;IACpC,MAAM,CAAU,GAAG,GAAG,kBAAkB,CAAC;IAEhD,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;IAC1C,CAAC;IAED,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC;IAEM,YAAY,CAAC,MAAuB,EAAE;QAC3C,MAAM,GAAG,GAAW,IAAI,CAAC,YAAY,CAAC;QACtC,MAAM,GAAG,GAAyB,GAAG,CAAC,QAAQ,CAAC;QAE/C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,CAAC,IAAI,CACR,kDAAkD,IAAI,CAAC,IAAI,GAAG,CACjE,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,cAAc,EAAE;oBACd,KAAK,KAAI,CAAC;oBACV,OAAO,KAAI,CAAC;iBACb;aACF,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAmB;YACrC,KAAK,EAAE,CAAC,SAAsB,EAAE,YAA0B,EAAE,EAAE;gBAC5D,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,CAEpC,CAAC;gBAEF,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;gBAEpC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,EAAE,GAAG,EAAE;gBACZ,gCAAgC;YAClC,CAAC;SACF,CAAC;QAEF,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,cAAc;SACf,CAAC;IACJ,CAAC;;AAGH,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;IAC1C,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"RouteElement.js","sourceRoot":"","sources":["../../src/elements/RouteElement.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,YAAa,SAAQ,WAAW;IACpC,MAAM,CAAU,GAAG,GAAG,kBAAkB,CAAC;IAEhD,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;IAC1C,CAAC;IAED,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC;IAEM,YAAY,CAAC,MAAuB,EAAE;QAC3C,MAAM,GAAG,GAAW,IAAI,CAAC,YAAY,CAAC;QACtC,MAAM,GAAG,GAAyB,GAAG,CAAC,QAAQ,CAAC;QAE/C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,CAAC,IAAI,CACV,kDAAkD,IAAI,CAAC,IAAI,GAAG,CAC/D,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,cAAc,EAAE;oBACd,KAAK,KAAI,CAAC;oBACV,OAAO,KAAI,CAAC;iBACb;aACF,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAmB;YACrC,KAAK,EAAE,CAAC,SAAsB,EAAE,YAA0B,EAAE,EAAE;gBAC5D,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,CAEpC,CAAC;gBAEF,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;gBAEpC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,EAAE,GAAG,EAAE;gBACZ,gCAAgC;YAClC,CAAC;SACF,CAAC;QAEF,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,cAAc;SACf,CAAC;IACJ,CAAC;;AAGH,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;IAC1C,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;AACxD,CAAC"}
@@ -1,3 +1,5 @@
1
+ import type { RouteDefinition } from '../models/index.js';
2
+ import type { RoutePreloadStatus, RoutePreloader } from '../router/Router.js';
1
3
  export declare class RouterElement extends HTMLElement {
2
4
  #private;
3
5
  static readonly tag = "wavelength-router";
@@ -8,5 +10,11 @@ export declare class RouterElement extends HTMLElement {
8
10
  navigate(path: string): void;
9
11
  replace(path: string): void;
10
12
  back(): void;
13
+ get preloader(): RoutePreloader | undefined;
14
+ set preloader(preloader: RoutePreloader | undefined);
15
+ preload(path: string): void;
16
+ getPreloadStatus(path: string): RoutePreloadStatus;
17
+ refresh(): void;
18
+ registerRoutes(routeDefinitions: RouteDefinition[]): () => void;
11
19
  }
12
20
  //# sourceMappingURL=RouterElement.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RouterElement.d.ts","sourceRoot":"","sources":["../../src/elements/RouterElement.ts"],"names":[],"mappings":"AAIA,qBAAa,aAAc,SAAQ,WAAW;;IAC5C,gBAAuB,GAAG,uBAAuB;IAUjD,WAAkB,kBAAkB,IAAI,MAAM,EAAE,CAE/C;IAEM,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;IAK5B,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAK9F,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI5B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,IAAI,IAAI,IAAI;CAqHpB"}
1
+ {"version":3,"file":"RouterElement.d.ts","sourceRoot":"","sources":["../../src/elements/RouterElement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAc,MAAM,oBAAoB,CAAC;AAEtE,OAAO,KAAK,EAEV,kBAAkB,EAClB,cAAc,EACf,MAAM,qBAAqB,CAAC;AAG7B,qBAAa,aAAc,SAAQ,WAAW;;IAC5C,gBAAuB,GAAG,uBAAuB;IAcjD,WAAkB,kBAAkB,IAAI,MAAM,EAAE,CAE/C;IAEM,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;IAK5B,wBAAwB,CAC7B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,IAAI;IAKA,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI5B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,IAAI,IAAI,IAAI;IAInB,IAAW,SAAS,IAAI,cAAc,GAAG,SAAS,CAEjD;IAED,IAAW,SAAS,CAAC,SAAS,EAAE,cAAc,GAAG,SAAS,EAKzD;IAEM,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB;IAIlD,OAAO,IAAI,IAAI;IAKf,cAAc,CAAC,gBAAgB,EAAE,eAAe,EAAE,GAAG,MAAM,IAAI;CA4SvE"}
@@ -6,8 +6,10 @@ export class RouterElement extends HTMLElement {
6
6
  #outlet;
7
7
  #routeObserver;
8
8
  #waitingForRouteUpgrade = false;
9
+ #registeredRoutes = new Set();
10
+ #preloader;
9
11
  static get observedAttributes() {
10
- return ['hash-mode', 'guard'];
12
+ return ['focus-strategy', 'hash-mode', 'guard'];
11
13
  }
12
14
  connectedCallback() {
13
15
  this.#observeRoutes();
@@ -31,28 +33,71 @@ export class RouterElement extends HTMLElement {
31
33
  back() {
32
34
  this.#router?.back();
33
35
  }
36
+ get preloader() {
37
+ return this.#preloader;
38
+ }
39
+ set preloader(preloader) {
40
+ if (this.#preloader === preloader)
41
+ return;
42
+ this.#preloader = preloader;
43
+ if (this.isConnected)
44
+ this.#bootstrap();
45
+ }
46
+ preload(path) {
47
+ this.#router?.preload(path);
48
+ }
49
+ getPreloadStatus(path) {
50
+ return this.#router?.getPreloadStatus(path) ?? 'idle';
51
+ }
52
+ refresh() {
53
+ if (!this.isConnected)
54
+ return;
55
+ this.#bootstrap();
56
+ }
57
+ registerRoutes(routeDefinitions) {
58
+ const registeredRoutes = routeDefinitions.map((routeDefinition) => ({ ...routeDefinition }));
59
+ Object.freeze(registeredRoutes);
60
+ this.#registeredRoutes.add(registeredRoutes);
61
+ if (this.isConnected)
62
+ this.#bootstrap();
63
+ return () => {
64
+ if (!this.#registeredRoutes.delete(registeredRoutes))
65
+ return;
66
+ if (this.isConnected)
67
+ this.#bootstrap();
68
+ };
69
+ }
34
70
  #bootstrap() {
35
71
  const outlet = this.#ensureOutlet();
36
- const routeCandidates = Array.from(this.querySelectorAll(RouteElement.tag)).filter((routeElement) => !outlet.contains(routeElement));
37
- const routeElements = routeCandidates.filter((routeElement) => routeElement instanceof RouteElement);
72
+ this.#refreshRouteObservation();
73
+ const routeCandidates = this.#routeCandidates(outlet);
74
+ const routeElements = routeCandidates.filter((routeElement) => this.#isRouteElement(routeElement));
38
75
  if (routeElements.length !== routeCandidates.length) {
39
76
  this.#waitForRouteUpgrade();
40
77
  return;
41
78
  }
42
79
  this.#teardown();
43
- const routes = this.#collectRoutes(routeElements);
80
+ const routes = this.#orderedRoutes(routeElements);
44
81
  if (routes.length === 0) {
82
+ outlet.replaceChildren();
45
83
  console.warn('[wavelength-router] No <wavelength-route> children found.');
46
84
  return;
47
85
  }
48
86
  const guard = this.#resolveGuard();
87
+ const ownerWindow = this.ownerDocument.defaultView;
88
+ if (!ownerWindow)
89
+ return;
49
90
  this.#router = new Router(routes, {
50
91
  outlet,
51
92
  hashMode: this.hasAttribute('hash-mode'),
93
+ eventTarget: this,
94
+ navigationRoot: this,
95
+ focusStrategy: this.#focusStrategy(),
52
96
  ...(guard ? { beforeEach: guard } : {}),
97
+ ...(this.#preloader ? { preload: this.#preloader } : {}),
53
98
  }, {
54
- window: window,
55
- document: document,
99
+ window: ownerWindow,
100
+ document: this.ownerDocument,
56
101
  });
57
102
  this.#router.start();
58
103
  }
@@ -62,48 +107,161 @@ export class RouterElement extends HTMLElement {
62
107
  }
63
108
  #collectRoutes(routeElements) {
64
109
  return routeElements
65
- .map((routeElement) => routeElement.toDefinition({ document }))
110
+ .map((routeElement) => routeElement.toDefinition({ document: this.ownerDocument }))
66
111
  .filter((routeDefinition) => routeDefinition !== null);
67
112
  }
113
+ #orderedRoutes(routeElements) {
114
+ const declarativeRoutes = this.#collectRoutes(routeElements);
115
+ const registeredRoutes = Array.from(this.#registeredRoutes).flat();
116
+ const wildcardIndex = declarativeRoutes.findIndex((route) => route.path === '*');
117
+ if (wildcardIndex === -1) {
118
+ return [...declarativeRoutes, ...registeredRoutes];
119
+ }
120
+ return [
121
+ ...declarativeRoutes.slice(0, wildcardIndex),
122
+ ...registeredRoutes,
123
+ ...declarativeRoutes.slice(wildcardIndex),
124
+ ];
125
+ }
68
126
  #observeRoutes() {
69
- this.#routeObserver = new MutationObserver((records) => {
70
- const hasRouteChange = records.some((record) => !this.#isInOutlet(record.target) &&
71
- [...record.addedNodes, ...record.removedNodes].some((node) => this.#containsRouteElement(node)));
127
+ const MutationObserverConstructor = this.ownerDocument.defaultView?.MutationObserver;
128
+ if (!MutationObserverConstructor)
129
+ return;
130
+ this.#routeObserver = new MutationObserverConstructor((records) => {
131
+ const hasRouteChange = records.some((record) => this.#isRouteMutation(record) || this.#isOutletRemoval(record));
72
132
  if (hasRouteChange)
73
133
  this.#bootstrap();
74
134
  });
75
- this.#routeObserver.observe(this, { childList: true, subtree: true });
135
+ }
136
+ #refreshRouteObservation() {
137
+ this.#routeObserver?.disconnect();
138
+ this.#routeObserver?.observe(this, this.#routeObserverOptions());
139
+ for (const shadowRoot of this.#shadowRoots()) {
140
+ this.#routeObserver?.observe(shadowRoot, this.#routeObserverOptions());
141
+ }
142
+ }
143
+ #routeObserverOptions() {
144
+ return {
145
+ attributes: true,
146
+ attributeFilter: ['path', 'component'],
147
+ childList: true,
148
+ subtree: true,
149
+ };
150
+ }
151
+ #isRouteMutation(record) {
152
+ if (this.#isInOutlet(record.target))
153
+ return false;
154
+ if (record.type === 'attributes') {
155
+ return (this.#isElement(record.target) && this.#isRouteElement(record.target));
156
+ }
157
+ return [...record.addedNodes, ...record.removedNodes].some((node) => this.#containsRouteElement(node));
158
+ }
159
+ #isOutletRemoval(record) {
160
+ return (record.type === 'childList' &&
161
+ record.target === this &&
162
+ [...record.removedNodes].includes(this.#outlet));
76
163
  }
77
164
  #containsRouteElement(node) {
78
- return (node instanceof Element &&
79
- (node.localName === RouteElement.tag ||
80
- node.querySelector(RouteElement.tag) !== null));
165
+ if (!this.#isElement(node) || node.localName === RouterElement.tag) {
166
+ return false;
167
+ }
168
+ if (node.localName === RouteElement.tag)
169
+ return true;
170
+ return (this.#containsRouteElementIn(node) ||
171
+ (node.shadowRoot !== null &&
172
+ this.#containsRouteElementIn(node.shadowRoot)));
173
+ }
174
+ #containsRouteElementIn(root) {
175
+ return Array.from(root.children).some((element) => this.#containsRouteElement(element));
176
+ }
177
+ #isElement(node) {
178
+ return node.nodeType === 1;
179
+ }
180
+ #isRouteElement(element) {
181
+ const routeElement = element;
182
+ const HTMLElementConstructor = element.ownerDocument.defaultView?.HTMLElement;
183
+ return (element.localName === RouteElement.tag &&
184
+ typeof routeElement.toDefinition === 'function' &&
185
+ Object.getPrototypeOf(element) !== HTMLElementConstructor?.prototype);
81
186
  }
82
187
  #isInOutlet(node) {
83
- return node === this.#outlet || this.#outlet?.contains(node) === true;
188
+ return this.#outlet.isSameNode(node) || this.#outlet.contains(node);
84
189
  }
85
190
  #ensureOutlet() {
86
191
  if (this.#outlet?.parentElement === this)
87
192
  return this.#outlet;
88
- this.#outlet = document.createElement('div');
193
+ this.#outlet = this.ownerDocument.createElement('div');
89
194
  this.appendChild(this.#outlet);
90
195
  return this.#outlet;
91
196
  }
197
+ #routeCandidates(outlet) {
198
+ const candidates = [];
199
+ this.#collectRouteCandidates(this, outlet, candidates);
200
+ if (this.shadowRoot) {
201
+ this.#collectRouteCandidates(this.shadowRoot, outlet, candidates);
202
+ }
203
+ return candidates;
204
+ }
205
+ #collectRouteCandidates(root, outlet, candidates) {
206
+ for (const element of Array.from(root.children)) {
207
+ if (outlet.contains(element) || element.localName === RouterElement.tag) {
208
+ continue;
209
+ }
210
+ if (element.localName === RouteElement.tag)
211
+ candidates.push(element);
212
+ this.#collectRouteCandidates(element, outlet, candidates);
213
+ if (element.shadowRoot) {
214
+ this.#collectRouteCandidates(element.shadowRoot, outlet, candidates);
215
+ }
216
+ }
217
+ }
218
+ #shadowRoots() {
219
+ const shadowRoots = [];
220
+ this.#collectShadowRoots(this, shadowRoots);
221
+ if (this.shadowRoot)
222
+ shadowRoots.push(this.shadowRoot);
223
+ return shadowRoots;
224
+ }
225
+ #collectShadowRoots(root, shadowRoots) {
226
+ for (const element of Array.from(root.children)) {
227
+ if (this.#isInOutlet(element) ||
228
+ element.localName === RouterElement.tag) {
229
+ continue;
230
+ }
231
+ if (element.shadowRoot) {
232
+ shadowRoots.push(element.shadowRoot);
233
+ this.#collectShadowRoots(element.shadowRoot, shadowRoots);
234
+ }
235
+ this.#collectShadowRoots(element, shadowRoots);
236
+ }
237
+ }
92
238
  #waitForRouteUpgrade() {
93
239
  if (this.#waitingForRouteUpgrade)
94
240
  return;
241
+ const registry = this.ownerDocument.defaultView?.customElements;
242
+ if (!registry)
243
+ return;
95
244
  this.#waitingForRouteUpgrade = true;
96
- void customElements.whenDefined(RouteElement.tag).then(() => {
245
+ void registry.whenDefined(RouteElement.tag).then(() => {
97
246
  this.#waitingForRouteUpgrade = false;
98
247
  if (this.isConnected)
99
248
  this.#bootstrap();
100
249
  });
101
250
  }
251
+ #focusStrategy() {
252
+ const value = this.getAttribute('focus-strategy');
253
+ if (value === 'heading' || value === 'outlet')
254
+ return value;
255
+ return 'none';
256
+ }
102
257
  #resolveGuard() {
103
258
  const guardName = this.getAttribute('guard');
104
259
  if (!guardName)
105
260
  return undefined;
106
- const fn = window[guardName];
261
+ const ownerWindow = this.ownerDocument.defaultView;
262
+ if (!ownerWindow)
263
+ return undefined;
264
+ const fn = ownerWindow[guardName];
107
265
  if (typeof fn !== 'function') {
108
266
  console.warn(`[wavelength-router] Guard "${guardName}" not found on window.`);
109
267
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"RouterElement.js","sourceRoot":"","sources":["../../src/elements/RouterElement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RouterElement.js","sourceRoot":"","sources":["../../src/elements/RouterElement.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { Router } from './router/Router.js';
2
+ export type { FocusStrategy, RouteErrorDetail, RouteErrorHandler, RouteErrorPhase, RouteLifecycleEventDetail, RoutePreloader, RoutePreloadStatus, } from './router/Router.js';
2
3
  export { RouterElement } from './elements/RouterElement.js';
3
4
  export { RouteElement } from './elements/RouteElement.js';
4
5
  export type { RouteComponent, RouteContext, RouteDefinition, RouteGuard, RouteParams, CompiledRoute, MatchedRoute, } from './models/index.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,YAAY,EACV,cAAc,EACd,YAAY,EACZ,eAAe,EACf,UAAU,EACV,WAAW,EACX,aAAa,EACb,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,yBAAyB,EACzB,cAAc,EACd,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,YAAY,EACV,cAAc,EACd,YAAY,EACZ,eAAe,EACf,UAAU,EACV,WAAW,EACX,aAAa,EACb,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAY1D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAU5C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAY1D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Machine } from './machineTypes.js';
2
+ export declare function createMachine<S, E>(reducer: (state: S, event: E) => S, initialState: S): Machine<S, E>;
3
+ //# sourceMappingURL=createMachine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createMachine.d.ts","sourceRoot":"","sources":["../../src/machine/createMachine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAc,MAAM,mBAAmB,CAAC;AAE7D,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAChC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAClC,YAAY,EAAE,CAAC,GACd,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CA2Df"}
@@ -0,0 +1,52 @@
1
+ export function createMachine(reducer, initialState) {
2
+ let isDispatching = false;
3
+ let state = initialState;
4
+ const listeners = new Set();
5
+ const notify = (listener) => {
6
+ try {
7
+ listener(state);
8
+ }
9
+ catch (error) {
10
+ queueMicrotask(() => {
11
+ throw error;
12
+ });
13
+ }
14
+ };
15
+ return {
16
+ getState: () => state,
17
+ dispatch(event) {
18
+ if (isDispatching) {
19
+ throw new Error('Cannot dispatch while reducing');
20
+ }
21
+ try {
22
+ isDispatching = true;
23
+ const nextState = reducer(state, event);
24
+ if (Object.is(nextState, state)) {
25
+ return;
26
+ }
27
+ state = nextState;
28
+ }
29
+ finally {
30
+ isDispatching = false;
31
+ }
32
+ for (const listener of Array.from(listeners)) {
33
+ notify(listener);
34
+ }
35
+ },
36
+ subscribe(listener) {
37
+ listeners.add(listener);
38
+ notify(listener);
39
+ let isSubscribed = true;
40
+ return () => {
41
+ if (!isSubscribed)
42
+ return;
43
+ isSubscribed = false;
44
+ listeners.delete(listener);
45
+ };
46
+ },
47
+ destroy() {
48
+ listeners.clear();
49
+ },
50
+ };
51
+ }
52
+ //# sourceMappingURL=createMachine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createMachine.js","sourceRoot":"","sources":["../../src/machine/createMachine.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAC3B,OAAkC,EAClC,YAAe;IAEf,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,KAAK,GAAG,YAAY,CAAC;IACzB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAiB,CAAC;IAE3C,MAAM,MAAM,GAAG,CAAC,QAAuB,EAAQ,EAAE;QAC/C,IAAI,CAAC;YACH,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,GAAG,EAAE;gBAClB,MAAM,KAAK,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,GAAM,EAAE,CAAC,KAAK;QAExB,QAAQ,CAAC,KAAQ;YACf,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACpD,CAAC;YAED,IAAI,CAAC;gBACH,aAAa,GAAG,IAAI,CAAC;gBACrB,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAExC,IAAI,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;oBAChC,OAAO;gBACT,CAAC;gBAED,KAAK,GAAG,SAAS,CAAC;YACpB,CAAC;oBAAS,CAAC;gBACT,aAAa,GAAG,KAAK,CAAC;YACxB,CAAC;YAED,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7C,MAAM,CAAC,QAAQ,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAED,SAAS,CAAC,QAAuB;YAC/B,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,MAAM,CAAC,QAAQ,CAAC,CAAC;YAEjB,IAAI,YAAY,GAAG,IAAI,CAAC;YAExB,OAAO,GAAS,EAAE;gBAChB,IAAI,CAAC,YAAY;oBAAE,OAAO;gBAE1B,YAAY,GAAG,KAAK,CAAC;gBACrB,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC7B,CAAC,CAAC;QACJ,CAAC;QAED,OAAO;YACL,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { createMachine } from './createMachine.js';
2
+ export type { Machine, Subscriber } from './machineTypes.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/machine/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createMachine } from './createMachine.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/machine/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export type Subscriber<S> = (state: S) => void;
2
+ export interface Machine<S, E> {
3
+ getState(): S;
4
+ dispatch(event: E): void;
5
+ subscribe(listener: Subscriber<S>): () => void;
6
+ destroy(): void;
7
+ }
8
+ //# sourceMappingURL=machineTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machineTypes.d.ts","sourceRoot":"","sources":["../../src/machine/machineTypes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAE/C,MAAM,WAAW,OAAO,CAAC,CAAC,EAAE,CAAC;IAC3B,QAAQ,IAAI,CAAC,CAAC;IACd,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC;IAC/C,OAAO,IAAI,IAAI,CAAC;CACjB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=machineTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machineTypes.js","sourceRoot":"","sources":["../../src/machine/machineTypes.ts"],"names":[],"mappings":""}
@@ -1,6 +1,6 @@
1
1
  import type { RouteContext } from './RouteContext.js';
2
2
  export interface RouteComponent {
3
- mount(container: HTMLElement, context: RouteContext): void;
3
+ mount: ((container: HTMLElement, context: RouteContext) => void) | ((container: HTMLElement, context: RouteContext) => Promise<void>);
4
4
  unmount?(): void;
5
5
  }
6
6
  //# sourceMappingURL=RouteComponent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RouteComponent.d.ts","sourceRoot":"","sources":["../../src/models/RouteComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3D,OAAO,CAAC,IAAI,IAAI,CAAC;CAClB"}
1
+ {"version":3,"file":"RouteComponent.d.ts","sourceRoot":"","sources":["../../src/models/RouteComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,KAAK,EACD,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC,GACzD,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,IAAI,IAAI,CAAC;CAClB"}
@@ -1,12 +1,33 @@
1
- import type { RouteDefinition, RouteGuard } from '../models/index.js';
1
+ import type { RouteContext, RouteDefinition, RouteGuard } from '../models/index.js';
2
2
  export interface RouterEnv {
3
3
  window?: Window;
4
4
  document?: Document;
5
5
  }
6
+ export type FocusStrategy = 'none' | 'outlet' | 'heading' | ((outlet: HTMLElement, context: RouteContext) => HTMLElement | null | undefined);
7
+ export type RouteErrorPhase = 'match' | 'guard' | 'mount' | 'unmount';
8
+ export interface RouteErrorDetail {
9
+ error: unknown;
10
+ phase: RouteErrorPhase;
11
+ context?: RouteContext;
12
+ }
13
+ export type RouteErrorHandler = (detail: RouteErrorDetail) => void;
14
+ export type RoutePreloadStatus = 'idle' | 'preloading' | 'ready' | 'failed';
15
+ export type RoutePreloader = (context: RouteContext) => void | Promise<void>;
6
16
  export interface RouterOptions {
7
17
  outlet?: HTMLElement;
8
18
  hashMode?: boolean;
9
19
  beforeEach?: RouteGuard;
20
+ eventTarget?: EventTarget;
21
+ navigationRoot?: HTMLElement;
22
+ focusStrategy?: FocusStrategy;
23
+ onError?: RouteErrorHandler;
24
+ preload?: RoutePreloader;
25
+ }
26
+ export interface RouteLifecycleEventDetail {
27
+ path: string;
28
+ context?: RouteContext;
29
+ error?: unknown;
30
+ phase?: RouteErrorPhase;
10
31
  }
11
32
  export declare class Router {
12
33
  #private;
@@ -16,5 +37,7 @@ export declare class Router {
16
37
  navigate(path: string): void;
17
38
  replace(path: string): void;
18
39
  back(): void;
40
+ preload(path: string): void;
41
+ getPreloadStatus(path: string): RoutePreloadStatus;
19
42
  }
20
43
  //# sourceMappingURL=Router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../src/router/Router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,eAAe,EACf,UAAU,EACX,MAAM,oBAAoB,CAAC;AAG5B,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,qBAAa,MAAM;;gBAYf,gBAAgB,EAAE,eAAe,EAAE,EACnC,aAAa,GAAE,aAAkB,EACjC,GAAG,GAAE,SAAc;IAoBd,KAAK,IAAI,IAAI;IAab,OAAO,IAAI,IAAI;IAUf,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAY5B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAY3B,IAAI,IAAI,IAAI;CA0HpB"}
1
+ {"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../src/router/Router.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAIV,YAAY,EACZ,eAAe,EACf,UAAU,EACX,MAAM,oBAAoB,CAAC;AAG5B,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,QAAQ,GACR,SAAS,GACT,CAAC,CACC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,YAAY,KAClB,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAEzC,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAEtE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAEnE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE5E,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAwB7E,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AAED,qBAAa,MAAM;;gBAgCf,gBAAgB,EAAE,eAAe,EAAE,EACnC,aAAa,GAAE,aAAkB,EACjC,GAAG,GAAE,SAAc;IAyCd,KAAK,IAAI,IAAI;IAsBb,OAAO,IAAI,IAAI;IAqCf,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAe5B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAe3B,IAAI,IAAI,IAAI;IAMZ,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAS3B,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB;CA0sB1D"}