@jasonshimmy/custom-elements-runtime 3.2.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/dist/{css-utils-Cg4o1MqY.js → css-utils-CC43BbEy.js} +20 -21
  2. package/dist/css-utils-CC43BbEy.js.map +1 -0
  3. package/dist/{css-utils-RqkyBWft.cjs → css-utils-mgjmH8qX.cjs} +5 -4
  4. package/dist/css-utils-mgjmH8qX.cjs.map +1 -0
  5. package/dist/custom-elements-runtime.cjs.js +4 -3
  6. package/dist/custom-elements-runtime.cjs.js.map +1 -1
  7. package/dist/custom-elements-runtime.colors.cjs.js +3 -2
  8. package/dist/custom-elements-runtime.colors.cjs.js.map +1 -1
  9. package/dist/custom-elements-runtime.colors.es.js +3 -2
  10. package/dist/custom-elements-runtime.colors.es.js.map +1 -1
  11. package/dist/custom-elements-runtime.directive-enhancements.cjs.js +3 -2
  12. package/dist/custom-elements-runtime.directive-enhancements.cjs.js.map +1 -1
  13. package/dist/custom-elements-runtime.directive-enhancements.es.js +86 -100
  14. package/dist/custom-elements-runtime.directive-enhancements.es.js.map +1 -1
  15. package/dist/custom-elements-runtime.directives.cjs.js +3 -2
  16. package/dist/custom-elements-runtime.directives.cjs.js.map +1 -1
  17. package/dist/custom-elements-runtime.directives.es.js +40 -43
  18. package/dist/custom-elements-runtime.directives.es.js.map +1 -1
  19. package/dist/custom-elements-runtime.dom-jit-css.cjs.js +7 -6
  20. package/dist/custom-elements-runtime.dom-jit-css.cjs.js.map +1 -1
  21. package/dist/custom-elements-runtime.dom-jit-css.es.js +58 -76
  22. package/dist/custom-elements-runtime.dom-jit-css.es.js.map +1 -1
  23. package/dist/custom-elements-runtime.es.js +162 -186
  24. package/dist/custom-elements-runtime.es.js.map +1 -1
  25. package/dist/custom-elements-runtime.event-bus.cjs.js +3 -2
  26. package/dist/custom-elements-runtime.event-bus.cjs.js.map +1 -1
  27. package/dist/custom-elements-runtime.event-bus.es.js +48 -103
  28. package/dist/custom-elements-runtime.event-bus.es.js.map +1 -1
  29. package/dist/custom-elements-runtime.jit-css.cjs.js +3 -2
  30. package/dist/custom-elements-runtime.jit-css.cjs.js.map +1 -1
  31. package/dist/custom-elements-runtime.jit-css.es.js +29 -30
  32. package/dist/custom-elements-runtime.jit-css.es.js.map +1 -1
  33. package/dist/custom-elements-runtime.router.cjs.js +20 -19
  34. package/dist/custom-elements-runtime.router.cjs.js.map +1 -1
  35. package/dist/custom-elements-runtime.router.es.js +579 -582
  36. package/dist/custom-elements-runtime.router.es.js.map +1 -1
  37. package/dist/custom-elements-runtime.ssr-middleware.cjs.js +5 -4
  38. package/dist/custom-elements-runtime.ssr-middleware.cjs.js.map +1 -1
  39. package/dist/custom-elements-runtime.ssr-middleware.es.js +44 -37
  40. package/dist/custom-elements-runtime.ssr-middleware.es.js.map +1 -1
  41. package/dist/custom-elements-runtime.ssr.cjs.js +1 -4
  42. package/dist/custom-elements-runtime.ssr.es.js +11 -176
  43. package/dist/custom-elements-runtime.store.cjs.js +3 -2
  44. package/dist/custom-elements-runtime.store.cjs.js.map +1 -1
  45. package/dist/custom-elements-runtime.store.es.js +17 -11
  46. package/dist/custom-elements-runtime.store.es.js.map +1 -1
  47. package/dist/custom-elements-runtime.transitions.cjs.js +3 -2
  48. package/dist/custom-elements-runtime.transitions.cjs.js.map +1 -1
  49. package/dist/custom-elements-runtime.transitions.es.js +55 -120
  50. package/dist/custom-elements-runtime.transitions.es.js.map +1 -1
  51. package/dist/custom-elements-runtime.vite-plugin.cjs.js +3 -2
  52. package/dist/custom-elements-runtime.vite-plugin.cjs.js.map +1 -1
  53. package/dist/custom-elements-runtime.vite-plugin.es.js +54 -75
  54. package/dist/custom-elements-runtime.vite-plugin.es.js.map +1 -1
  55. package/dist/hooks-_3xP4G2N.js +1189 -0
  56. package/dist/hooks-_3xP4G2N.js.map +1 -0
  57. package/dist/hooks-fYQgZk2g.cjs +7 -0
  58. package/dist/hooks-fYQgZk2g.cjs.map +1 -0
  59. package/dist/logger-BYIN7ysT.cjs +3 -0
  60. package/dist/logger-BYIN7ysT.cjs.map +1 -0
  61. package/dist/logger-L25axmB-.js +41 -0
  62. package/dist/logger-L25axmB-.js.map +1 -0
  63. package/dist/namespace-helpers-Bf7rm9JV.cjs +3 -0
  64. package/dist/namespace-helpers-Bf7rm9JV.cjs.map +1 -0
  65. package/dist/namespace-helpers-BucDdgz_.js +61 -0
  66. package/dist/namespace-helpers-BucDdgz_.js.map +1 -0
  67. package/dist/reset.css +1 -1
  68. package/dist/ssr-B3lxl1vr.js +165 -0
  69. package/dist/ssr-B3lxl1vr.js.map +1 -0
  70. package/dist/ssr-DtD9e5iA.cjs +5 -0
  71. package/dist/ssr-DtD9e5iA.cjs.map +1 -0
  72. package/dist/style-Bjn8zDiZ.cjs +56 -0
  73. package/dist/style-Bjn8zDiZ.cjs.map +1 -0
  74. package/dist/{style-BmyOIMcU.js → style-DuDoj_xK.js} +724 -876
  75. package/dist/style-DuDoj_xK.js.map +1 -0
  76. package/dist/style.css +1 -1
  77. package/dist/template-compiler-BB4JJdqk.cjs +23 -0
  78. package/dist/template-compiler-BB4JJdqk.cjs.map +1 -0
  79. package/dist/template-compiler-Cs5axmn4.js +3236 -0
  80. package/dist/template-compiler-Cs5axmn4.js.map +1 -0
  81. package/dist/variables.css +1 -1
  82. package/package.json +7 -7
  83. package/dist/css-utils-Cg4o1MqY.js.map +0 -1
  84. package/dist/css-utils-RqkyBWft.cjs.map +0 -1
  85. package/dist/custom-elements-runtime.ssr.cjs.js.map +0 -1
  86. package/dist/custom-elements-runtime.ssr.es.js.map +0 -1
  87. package/dist/hooks-BH-CpUun.js +0 -1474
  88. package/dist/hooks-BH-CpUun.js.map +0 -1
  89. package/dist/hooks-NOFG9QRQ.cjs +0 -6
  90. package/dist/hooks-NOFG9QRQ.cjs.map +0 -1
  91. package/dist/logger-BvkEbVM4.js +0 -48
  92. package/dist/logger-BvkEbVM4.js.map +0 -1
  93. package/dist/logger-CSALKaYm.cjs +0 -2
  94. package/dist/logger-CSALKaYm.cjs.map +0 -1
  95. package/dist/namespace-helpers-D4wC2-qA.js +0 -61
  96. package/dist/namespace-helpers-D4wC2-qA.js.map +0 -1
  97. package/dist/namespace-helpers-ckeEOxpR.cjs +0 -2
  98. package/dist/namespace-helpers-ckeEOxpR.cjs.map +0 -1
  99. package/dist/style-BmyOIMcU.js.map +0 -1
  100. package/dist/style-D40DsIqJ.cjs +0 -55
  101. package/dist/style-D40DsIqJ.cjs.map +0 -1
  102. package/dist/template-compiler-CDvhsHia.cjs +0 -22
  103. package/dist/template-compiler-CDvhsHia.cjs.map +0 -1
  104. package/dist/template-compiler-DiE69FLO.js +0 -3724
  105. package/dist/template-compiler-DiE69FLO.js.map +0 -1
@@ -1,664 +1,652 @@
1
- import { a as m, d as k } from "./logger-BvkEbVM4.js";
2
- import { j as nt, g as St, r as et, w as it, x as lt, b as Rt, z as Et, d as M } from "./hooks-BH-CpUun.js";
3
- import { c as ut, h as j } from "./template-compiler-DiE69FLO.js";
4
- import { createStore as ft } from "./custom-elements-runtime.store.es.js";
5
- import { match as $t } from "./custom-elements-runtime.directives.es.js";
6
- const ht = {
1
+ import { r as y, t as k } from "./logger-L25axmB-.js";
2
+ import { J as nt, R as L, V as et, _ as St, h as st, i as it, m as ct, y as Rt } from "./hooks-_3xP4G2N.js";
3
+ import { n as lt, t as U } from "./template-compiler-Cs5axmn4.js";
4
+ import { match as Et } from "./custom-elements-runtime.directives.es.js";
5
+ import { createStore as ut } from "./custom-elements-runtime.store.es.js";
6
+ var ft = {
7
7
  enabled: !0,
8
8
  offset: 0,
9
9
  timeoutMs: 2e3
10
- }, st = (t) => t ? typeof URLSearchParams > "u" ? {} : Object.fromEntries(new URLSearchParams(t)) : {}, Ct = (t) => {
10
+ }, ot = (t) => t ? typeof URLSearchParams > "u" ? {} : Object.fromEntries(new URLSearchParams(t)) : {}, $t = (t) => {
11
11
  if (!t || Object.keys(t).length === 0) return "";
12
12
  try {
13
13
  return "?" + new URLSearchParams(t).toString();
14
14
  } catch {
15
15
  return "";
16
16
  }
17
- }, pt = (t) => t ? /^\s*javascript\s*:/i.test(t) : !1, Q = (t) => /^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(t) || t.startsWith("//"), xt = (t) => {
17
+ }, ht = (t) => t ? /^\s*javascript\s*:/i.test(t) : !1, K = (t) => /^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(t) || t.startsWith("//"), Ct = (t) => {
18
18
  try {
19
19
  return decodeURIComponent(t);
20
20
  } catch {
21
21
  return t;
22
22
  }
23
23
  };
24
- function x(t) {
24
+ function C(t) {
25
25
  if (!t) return "/";
26
26
  let r = t.replace(/\/+/g, "/");
27
27
  return r.startsWith("/") || (r = "/" + r), r.length > 1 && r.endsWith("/") && (r = r.slice(0, -1)), r;
28
28
  }
29
- const At = (t) => {
29
+ var xt = (t) => {
30
30
  if (!t) return "";
31
- const r = x(t);
31
+ const r = C(t);
32
32
  return r === "/" ? "" : r;
33
- }, dt = /* @__PURE__ */ new WeakMap();
34
- function Pt(t) {
33
+ }, pt = /* @__PURE__ */ new WeakMap();
34
+ function At(t) {
35
35
  return t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
36
36
  }
37
37
  function kt(t) {
38
- const r = t.path || "/", p = x(r), o = p === "/" ? [] : p.split("/").filter(Boolean), c = [], a = [];
39
- for (let v = 0; v < o.length; v++) {
40
- const l = o[v];
41
- if (l === "*") {
42
- if (v !== o.length - 1)
43
- return m(
44
- `Route '${t.path}' contains a '*' splat in a non-terminal position; splats must be the last segment. This route will be ignored.`
45
- ), { invalid: !0 };
46
- const S = `splat${c.length}`;
47
- c.push(S), a.push("__SPLAT__");
38
+ const r = C(t.path || "/"), h = r === "/" ? [] : r.split("/").filter(Boolean), a = [], i = [];
39
+ for (let m = 0; m < h.length; m++) {
40
+ const g = h[m];
41
+ if (g === "*") {
42
+ if (m !== h.length - 1)
43
+ return y(`Route '${t.path}' contains a '*' splat in a non-terminal position; splats must be the last segment. This route will be ignored.`), { invalid: !0 };
44
+ const c = `splat${a.length}`;
45
+ a.push(c), i.push("__SPLAT__");
48
46
  continue;
49
47
  }
50
- const d = l.match(/^:([A-Za-z0-9_-]+)(\*)?$/);
51
- if (d) {
52
- const S = d[1], C = !!d[2];
53
- if (C && v !== o.length - 1)
54
- return m(
55
- `Route '${t.path}' contains a splat param ':${S}*' in a non-terminal position; splats must be the last segment. This route will be ignored.`
56
- ), { invalid: !0 };
57
- c.push(S), a.push(C ? "__SPLAT__" : "([^/]+)");
48
+ const v = g.match(/^:([A-Za-z0-9_-]+)(\*)?$/);
49
+ if (v) {
50
+ const c = v[1], R = !!v[2];
51
+ if (R && m !== h.length - 1)
52
+ return y(`Route '${t.path}' contains a splat param ':${c}*' in a non-terminal position; splats must be the last segment. This route will be ignored.`), { invalid: !0 };
53
+ a.push(c), i.push(R ? "__SPLAT__" : "([^/]+)");
58
54
  continue;
59
55
  }
60
- a.push(Pt(l));
56
+ i.push(At(g));
61
57
  }
62
- let g;
63
- if (a.length === 0)
64
- g = "^/$";
65
- else if (a[a.length - 1] === "__SPLAT__") {
66
- const l = a.slice(0, -1).join("/");
67
- l ? g = `^/${l}(?:/(.*))?(?:/)?$` : g = "^(?:/(.*))?(?:/)?$";
68
- } else
69
- g = `^/${a.join("/")}(?:/)?$`;
58
+ let o;
59
+ if (i.length === 0) o = "^/$";
60
+ else if (i[i.length - 1] === "__SPLAT__") {
61
+ const m = i.slice(0, -1).join("/");
62
+ m ? o = `^/${m}(?:/(.*))?(?:/)?$` : o = "^(?:/(.*))?(?:/)?$";
63
+ } else o = `^/${i.join("/")}(?:/)?$`;
70
64
  try {
71
- return { regex: new RegExp(g), paramNames: c };
72
- } catch (v) {
73
- return m(`Failed to compile route regex for '${t.path}': ${String(v)}`), { invalid: !0 };
65
+ return {
66
+ regex: new RegExp(o),
67
+ paramNames: a
68
+ };
69
+ } catch (m) {
70
+ return y(`Failed to compile route regex for '${t.path}': ${String(m)}`), { invalid: !0 };
74
71
  }
75
72
  }
76
- const J = (t, r) => {
77
- const p = x(r);
78
- for (const o of t) {
79
- let c = dt.get(o);
80
- if (c || (c = kt(o), dt.set(o, c)), c.invalid) continue;
81
- const { regex: a, paramNames: g } = c, v = a.exec(p);
82
- if (v) {
83
- const l = {};
84
- for (let d = 0; d < g.length; d++) {
85
- const S = v[d + 1] || "";
86
- l[g[d]] = S ? xt(S) : "";
73
+ var Q = (t, r) => {
74
+ const h = C(r);
75
+ for (const a of t) {
76
+ let i = pt.get(a);
77
+ if (i || (i = kt(a), pt.set(a, i)), i.invalid) continue;
78
+ const { regex: o, paramNames: m } = i, g = o.exec(h);
79
+ if (g) {
80
+ const v = {};
81
+ for (let c = 0; c < m.length; c++) {
82
+ const R = g[c + 1] || "";
83
+ v[m[c]] = R ? Ct(R) : "";
87
84
  }
88
- return { route: o, params: l };
85
+ return {
86
+ route: a,
87
+ params: v
88
+ };
89
89
  }
90
90
  }
91
- return { route: null, params: {} };
91
+ return {
92
+ route: null,
93
+ params: {}
94
+ };
92
95
  };
93
96
  function rt(t, r) {
94
- for (const p of t)
95
- if (J([p], r).route !== null) return p;
97
+ for (const h of t) if (Q([h], r).route !== null) return h;
96
98
  return null;
97
99
  }
98
- function jt(t, r) {
99
- const p = r.split("?")[0].split("#")[0];
100
- return J(t, p);
100
+ function Ft(t, r) {
101
+ const h = r.split("?")[0].split("#")[0];
102
+ return Q(t, h);
101
103
  }
102
- const yt = 50;
103
- let X = {}, H = {};
104
- function _t() {
105
- X = {}, H = {};
104
+ var dt = 50, J = {}, B = {};
105
+ function Pt() {
106
+ J = {}, B = {};
106
107
  }
107
- function qt() {
108
- const t = Object.entries(X);
109
- if (t.length <= yt) return;
110
- const p = t.sort(
111
- ([, o], [, c]) => o.lastAccessed - c.lastAccessed
112
- ).slice(
113
- 0,
114
- t.length - yt
115
- );
116
- for (const [o] of p)
117
- delete X[o];
108
+ function _t() {
109
+ const t = Object.entries(J);
110
+ if (t.length <= dt) return;
111
+ const r = t.sort(([, h], [, a]) => h.lastAccessed - a.lastAccessed).slice(0, t.length - dt);
112
+ for (const [h] of r) delete J[h];
118
113
  }
119
- async function Tt(t) {
114
+ async function gt(t) {
120
115
  if (t.component) return t.component;
121
116
  if (t.load) {
122
- const r = X[t.path];
117
+ const r = J[t.path];
123
118
  if (r)
124
119
  return r.lastAccessed = Date.now(), r.component;
125
- if (H[t.path] !== void 0)
126
- return H[t.path];
127
- const p = typeof window > "u";
120
+ if (B[t.path] !== void 0) return B[t.path];
121
+ const h = typeof window > "u";
128
122
  try {
129
- const o = t.load().then((c) => {
130
- qt();
131
- const a = c.default;
132
- return X[t.path] = {
133
- component: a,
123
+ const a = t.load().then((i) => {
124
+ _t();
125
+ const o = i.default;
126
+ return J[t.path] = {
127
+ component: o,
134
128
  lastAccessed: Date.now()
135
- }, delete H[t.path], a;
136
- }).catch((c) => {
137
- delete H[t.path];
138
- const a = c instanceof Error ? c.message : String(c);
139
- throw p && k(
140
- `SSR component load failed for route: ${t.path}. ${a}`
141
- ), new Error(
142
- `Failed to load component for route: ${t.path}. ${a}`
143
- );
129
+ }, delete B[t.path], o;
130
+ }).catch((i) => {
131
+ delete B[t.path];
132
+ const o = i instanceof Error ? i.message : String(i);
133
+ throw h && k(`SSR component load failed for route: ${t.path}. ${o}`), new Error(`Failed to load component for route: ${t.path}. ${o}`);
144
134
  });
145
- return H[t.path] = o, await o;
146
- } catch (o) {
147
- const c = o instanceof Error ? o.message : String(o);
148
- throw new Error(
149
- `Failed to load component for route: ${t.path}. ${c}`,
150
- { cause: o }
151
- );
135
+ return B[t.path] = a, await a;
136
+ } catch (a) {
137
+ const i = a instanceof Error ? a.message : String(a);
138
+ throw new Error(`Failed to load component for route: ${t.path}. ${i}`, { cause: a });
152
139
  }
153
140
  }
154
141
  throw new Error(`No component or loader defined for route: ${t.path}`);
155
142
  }
156
- let y = null;
157
- function Mt(t) {
158
- y = t;
143
+ var d = null;
144
+ function qt(t) {
145
+ d = t;
159
146
  }
160
- function mt() {
161
- return y;
147
+ function yt() {
148
+ return d;
162
149
  }
163
- const V = /* @__PURE__ */ new Set();
164
- let L = null;
150
+ var V = /* @__PURE__ */ new Set(), D = null;
165
151
  function bt() {
166
- if (L) {
152
+ if (D) {
167
153
  try {
168
- L();
154
+ D();
169
155
  } catch {
170
156
  }
171
- L = null;
157
+ D = null;
172
158
  }
173
- if (y)
174
- try {
175
- let t = !1;
176
- L = y.subscribe((r) => {
177
- t = !0;
178
- for (const p of V)
179
- try {
180
- p(r);
181
- } catch {
182
- }
183
- });
184
- try {
185
- _.base = y.base;
159
+ if (d) try {
160
+ let t = !1;
161
+ D = d.subscribe((r) => {
162
+ t = !0;
163
+ for (const h of V) try {
164
+ h(r);
186
165
  } catch {
187
166
  }
188
- if (t) {
189
- const r = y.getCurrent();
190
- for (const p of V)
191
- try {
192
- p(r);
193
- } catch {
194
- }
195
- } else {
196
- const r = y.getCurrent();
197
- for (const p of V)
198
- try {
199
- p(r);
200
- } catch {
201
- }
167
+ });
168
+ try {
169
+ x.base = d.base;
170
+ } catch {
171
+ }
172
+ if (t) {
173
+ const r = d.getCurrent();
174
+ for (const h of V) try {
175
+ h(r);
176
+ } catch {
202
177
  }
203
- try {
204
- typeof window < "u" && nt();
178
+ } else {
179
+ const r = d.getCurrent();
180
+ for (const h of V) try {
181
+ h(r);
205
182
  } catch {
206
183
  }
184
+ }
185
+ try {
186
+ typeof window < "u" && nt();
207
187
  } catch {
208
- L = null;
209
188
  }
189
+ } catch {
190
+ D = null;
191
+ }
210
192
  }
211
- function It() {
193
+ function Tt() {
212
194
  bt();
213
195
  }
214
- const _ = {
196
+ var x = {
215
197
  store: {
216
198
  subscribe(t) {
217
- if (y) return y.store.subscribe(t);
199
+ if (d) return d.store.subscribe(t);
218
200
  try {
219
- t({ path: "/", params: {}, query: {} });
201
+ t({
202
+ path: "/",
203
+ params: {},
204
+ query: {}
205
+ });
220
206
  } catch {
221
207
  }
222
208
  return () => {
223
209
  };
224
210
  },
225
211
  getState() {
226
- return y ? y.getCurrent() : { path: "/", params: {}, query: {} };
212
+ return d ? d.getCurrent() : {
213
+ path: "/",
214
+ params: {},
215
+ query: {}
216
+ };
227
217
  },
228
218
  setState(t) {
229
- if (y)
219
+ if (d)
230
220
  try {
231
- y.store.setState(
232
- t
233
- );
221
+ d.store.setState(t);
234
222
  } catch {
235
223
  }
236
224
  }
237
225
  },
238
226
  subscribe(t) {
239
227
  if (typeof t != "function")
240
- return m("activeRouterProxy.subscribe: listener must be a function"), () => {
228
+ return y("activeRouterProxy.subscribe: listener must be a function"), () => {
241
229
  };
242
- if (V.add(t), y)
243
- if (!L)
244
- bt();
245
- else
246
- try {
247
- const r = y.getCurrent();
248
- r && t(r);
249
- } catch (r) {
250
- m("activeRouterProxy subscription failed", r);
251
- }
252
- else
253
- try {
254
- t({ path: "/", params: {}, query: {} });
255
- } catch (r) {
256
- m("activeRouterProxy fallback state delivery failed", r);
257
- }
230
+ if (V.add(t), d) if (!D) bt();
231
+ else try {
232
+ const r = d.getCurrent();
233
+ r && t(r);
234
+ } catch (r) {
235
+ y("activeRouterProxy subscription failed", r);
236
+ }
237
+ else try {
238
+ t({
239
+ path: "/",
240
+ params: {},
241
+ query: {}
242
+ });
243
+ } catch (r) {
244
+ y("activeRouterProxy fallback state delivery failed", r);
245
+ }
258
246
  return () => {
259
247
  try {
260
- if (V.delete(t), V.size === 0 && L) {
248
+ if (V.delete(t), V.size === 0 && D) {
261
249
  try {
262
- L();
250
+ D();
263
251
  } catch (r) {
264
- m("activeRouterProxy inner unsubscribe failed", r);
252
+ y("activeRouterProxy inner unsubscribe failed", r);
265
253
  }
266
- L = null;
254
+ D = null;
267
255
  }
268
256
  } catch (r) {
269
- m("activeRouterProxy unsubscribe failed", r);
257
+ y("activeRouterProxy unsubscribe failed", r);
270
258
  }
271
259
  };
272
260
  },
273
261
  getCurrent() {
274
- return y ? y.getCurrent() : { path: "/", params: {}, query: {} };
262
+ return d ? d.getCurrent() : {
263
+ path: "/",
264
+ params: {},
265
+ query: {}
266
+ };
275
267
  },
276
268
  async push(t) {
277
- return y ? y.push(t) : Promise.resolve();
269
+ return d ? d.push(t) : Promise.resolve();
278
270
  },
279
271
  async replace(t) {
280
- return y ? y.replace(t) : Promise.resolve();
272
+ return d ? d.replace(t) : Promise.resolve();
281
273
  },
282
274
  back() {
283
- if (y)
284
- return y.back();
275
+ if (d)
276
+ return d.back();
285
277
  },
286
278
  matchRoute(t) {
287
- return y ? y.matchRoute(t) : { route: null, params: {} };
279
+ return d ? d.matchRoute(t) : {
280
+ route: null,
281
+ params: {}
282
+ };
288
283
  },
289
284
  resolveRouteComponent(t) {
290
- return y ? y.resolveRouteComponent(t) : Promise.reject(new Error("No active router"));
285
+ return d ? d.resolveRouteComponent(t) : Promise.reject(/* @__PURE__ */ new Error("No active router"));
291
286
  },
292
287
  base: "",
293
288
  scrollToFragment(t) {
294
- return y ? y.scrollToFragment(t) : Promise.resolve(!1);
289
+ return d ? d.scrollToFragment(t) : Promise.resolve(!1);
295
290
  },
296
291
  destroy() {
297
- y && y.destroy();
292
+ d && d.destroy();
298
293
  }
299
294
  };
300
- function Ot(t) {
301
- const { routes: r, base: p = "", initialUrl: o, scrollToFragment: c = !0 } = t, a = At(p), g = typeof c == "boolean" ? { ...ht, enabled: c } : { ...ht, ...c };
302
- let v, l, d, S, C, I, W, D = () => {
295
+ function It(t) {
296
+ const { routes: r, base: h = "", initialUrl: a, scrollToFragment: i = !0 } = t, o = xt(h), m = typeof i == "boolean" ? {
297
+ ...ft,
298
+ enabled: i
299
+ } : {
300
+ ...ft,
301
+ ...i
303
302
  };
304
- const T = /* @__PURE__ */ new Set(), B = 10;
305
- let q = 0;
306
- const G = async (s, i) => {
303
+ let g, v, c, R, M, z, H, X = () => {
304
+ };
305
+ const T = /* @__PURE__ */ new Set(), W = 10;
306
+ let P = 0;
307
+ const G = async (s, l) => {
307
308
  const e = rt(r, s.path);
308
309
  if (!e || !e.beforeEnter) return !0;
309
310
  try {
310
- const n = await e.beforeEnter(s, i);
311
+ const n = await e.beforeEnter(s, l);
311
312
  if (typeof n == "string") {
312
313
  const f = `${s.path}->${n}`;
313
- return T.has(f) || q >= B ? (k(`Redirect loop detected: ${f}`), !1) : n;
314
+ return T.has(f) || P >= W ? (k(`Redirect loop detected: ${f}`), !1) : n;
314
315
  }
315
316
  return n !== !1;
316
317
  } catch (n) {
317
318
  k("beforeEnter error", n);
318
319
  try {
319
- d.setState(i);
320
+ c.setState(l);
320
321
  } catch {
321
322
  }
322
323
  throw n;
323
324
  }
324
- }, at = async (s, i) => {
325
+ }, at = async (s, l) => {
325
326
  const e = rt(r, s.path);
326
327
  if (!e || !e.onEnter) return !0;
327
328
  try {
328
- const n = await e.onEnter(s, i);
329
+ const n = await e.onEnter(s, l);
329
330
  if (typeof n == "string") {
330
331
  const f = `${s.path}->${n}`;
331
- return T.has(f) || q >= B ? (k(`Redirect loop detected: ${f}`), !1) : n;
332
+ return T.has(f) || P >= W ? (k(`Redirect loop detected: ${f}`), !1) : n;
332
333
  }
333
334
  return n !== !1;
334
335
  } catch (n) {
335
336
  k("onEnter error", n);
336
337
  try {
337
- d.setState(i);
338
+ c.setState(l);
338
339
  } catch {
339
340
  }
340
341
  throw n;
341
342
  }
342
- }, Y = (s, i) => {
343
+ }, Y = (s, l) => {
343
344
  const e = rt(r, s.path);
344
345
  if (!(!e || !e.afterEnter))
345
346
  try {
346
- const n = e.afterEnter(s, i);
347
+ const n = e.afterEnter(s, l);
347
348
  n instanceof Promise && n.catch((f) => {
348
349
  k("afterEnter async error", f);
349
350
  });
350
351
  } catch (n) {
351
352
  k("afterEnter error", n);
352
353
  }
353
- }, A = /* @__PURE__ */ new Map(), K = 100, O = (s) => {
354
- if (A.has(s))
355
- return A.get(s);
356
- const i = J(r, s);
357
- if (A.size >= K) {
358
- const e = Math.floor(K * 0.25), n = Array.from(A.keys());
359
- for (let f = 0; f < e && f < n.length; f++)
360
- A.delete(n[f]);
354
+ }, A = /* @__PURE__ */ new Map(), j = 100, N = (s) => {
355
+ if (A.has(s)) return A.get(s);
356
+ const l = Q(r, s);
357
+ if (A.size >= j) {
358
+ const e = Math.floor(j * 0.25), n = Array.from(A.keys());
359
+ for (let f = 0; f < e && f < n.length; f++) A.delete(n[f]);
361
360
  }
362
- return A.set(s, i), i;
361
+ return A.set(s, l), l;
363
362
  }, tt = () => {
364
363
  };
365
- async function h(s, i = 0) {
364
+ async function p(s, l = 0) {
366
365
  try {
367
366
  const e = document.getElementById(s);
368
- if (!e)
369
- return !1;
370
- if (i > 0)
367
+ if (!e) return !1;
368
+ if (l > 0) try {
369
+ const n = e.getBoundingClientRect(), f = Math.max(0, window.scrollY + n.top - l);
370
+ typeof window.scrollTo == "function" && window.scrollTo({
371
+ top: f,
372
+ behavior: "auto"
373
+ });
374
+ } catch {
371
375
  try {
372
- const n = e.getBoundingClientRect(), f = Math.max(0, window.scrollY + n.top - i);
373
- typeof window.scrollTo == "function" && window.scrollTo({ top: f, behavior: "auto" });
376
+ e.scrollIntoView();
374
377
  } catch {
375
- try {
376
- e.scrollIntoView();
377
- } catch {
378
- return !1;
379
- }
378
+ return !1;
380
379
  }
381
- else if (typeof e.scrollIntoView == "function")
380
+ }
381
+ else if (typeof e.scrollIntoView == "function") try {
382
+ e.scrollIntoView({
383
+ behavior: "auto",
384
+ block: "start",
385
+ inline: "nearest"
386
+ });
387
+ } catch {
382
388
  try {
383
- e.scrollIntoView({
384
- behavior: "auto",
385
- block: "start",
386
- inline: "nearest"
387
- });
389
+ e.scrollIntoView();
388
390
  } catch {
389
- try {
390
- e.scrollIntoView();
391
- } catch {
392
- return !1;
393
- }
391
+ return !1;
394
392
  }
393
+ }
395
394
  return !0;
396
395
  } catch {
397
396
  return !1;
398
397
  }
399
398
  }
400
- function E(s, i = 0, e = 2e3) {
399
+ function w(s, l = 0, e = 2e3) {
401
400
  return new Promise((n) => {
402
- let f = !1, b = null, w = null;
403
- const $ = Date.now(), R = (z) => {
404
- f || (f = !0, b && clearTimeout(b), w !== null && cancelAnimationFrame(w), n(z));
405
- }, U = async () => {
401
+ let f = !1, E = null, S = null;
402
+ const q = Date.now(), b = (O) => {
403
+ f || (f = !0, E && clearTimeout(E), S !== null && cancelAnimationFrame(S), n(O));
404
+ }, F = async () => {
406
405
  if (!f)
407
406
  try {
408
- if (await h(s, i))
409
- return R(!0);
410
- const z = async () => {
411
- if (f) return;
412
- if (Date.now() - $ >= e)
413
- return R(!1);
414
- try {
415
- if (await h(s, i))
416
- return R(!0);
417
- w = requestAnimationFrame(z);
418
- } catch (wt) {
419
- m("Scroll retry attempt failed:", wt), w = requestAnimationFrame(z);
407
+ if (await p(s, l)) return b(!0);
408
+ const O = async () => {
409
+ if (!f) {
410
+ if (Date.now() - q >= e) return b(!1);
411
+ try {
412
+ if (await p(s, l)) return b(!0);
413
+ S = requestAnimationFrame(O);
414
+ } catch (wt) {
415
+ y("Scroll retry attempt failed:", wt), S = requestAnimationFrame(O);
416
+ }
420
417
  }
421
418
  };
422
- w = requestAnimationFrame(z);
423
- } catch (z) {
424
- m("Initial scroll attempt failed:", z), R(!1);
419
+ S = requestAnimationFrame(O);
420
+ } catch (O) {
421
+ y("Initial scroll attempt failed:", O), b(!1);
425
422
  }
426
423
  };
427
- b = setTimeout(() => {
428
- R(!1);
429
- }, e), U().catch((z) => {
430
- m("Scroll attempt failed:", z), R(!1);
424
+ E = setTimeout(() => {
425
+ b(!1);
426
+ }, e), F().catch((O) => {
427
+ y("Scroll attempt failed:", O), b(!1);
431
428
  });
432
429
  });
433
430
  }
434
- let u = !1;
435
- const P = async (s, i = !1) => {
436
- if (u) {
437
- m(`Navigation to ${s} blocked - navigation already in progress`);
431
+ let _ = !1;
432
+ const I = async (s, l = !1) => {
433
+ if (_) {
434
+ y(`Navigation to ${s} blocked - navigation already in progress`);
438
435
  return;
439
436
  }
440
- u = !0, q = 0, T.clear();
437
+ _ = !0, P = 0, T.clear();
441
438
  try {
442
- await F(s, i);
439
+ await $(s, l);
443
440
  } finally {
444
- u = !1, q = 0, T.clear();
441
+ _ = !1, P = 0, T.clear();
445
442
  }
446
- }, N = (s) => {
447
- const i = s.indexOf("#"), e = i >= 0 ? s.slice(i + 1) : "", n = i >= 0 ? s.slice(0, i) : s, f = n.indexOf("?"), b = f >= 0 ? n.slice(0, f) : n, w = f >= 0 ? st(n.slice(f)) : {}, $ = b.startsWith(a) ? b.slice(a.length) : b;
443
+ }, u = (s) => {
444
+ const l = s.indexOf("#"), e = l >= 0 ? s.slice(l + 1) : "", n = l >= 0 ? s.slice(0, l) : s, f = n.indexOf("?"), E = f >= 0 ? n.slice(0, f) : n, S = f >= 0 ? ot(n.slice(f)) : {};
448
445
  return {
449
- path: x($ || "/"),
450
- query: w,
446
+ path: C((E.startsWith(o) ? E.slice(o.length) : E) || "/"),
447
+ query: S,
451
448
  fragment: e
452
449
  };
453
- }, F = async (s, i = !1) => {
450
+ }, $ = async (s, l = !1) => {
454
451
  try {
455
- const e = N(s), n = O(e.path);
452
+ const e = u(s), n = N(e.path);
456
453
  if (!n.route) throw new Error(`No route found for ${e.path}`);
457
- const f = d.getState(), b = {
454
+ const f = c.getState(), E = {
458
455
  path: e.path,
459
456
  params: n.params,
460
457
  query: e.query,
461
458
  fragment: e.fragment
462
- }, w = await G(b, f);
463
- if (w === !1) return;
464
- if (typeof w == "string") {
465
- q++;
466
- const R = `${b.path}->${w}`;
467
- T.add(R), await F(w, !0);
459
+ }, S = await G(E, f);
460
+ if (S === !1) return;
461
+ if (typeof S == "string") {
462
+ P++;
463
+ const b = `${E.path}->${S}`;
464
+ T.add(b), await $(S, !0);
468
465
  return;
469
466
  }
470
- const $ = await at(b, f);
471
- if ($ === !1) return;
472
- if (typeof $ == "string") {
473
- q++;
474
- const R = `${b.path}->${$}`;
475
- T.add(R), await F($, !0);
467
+ const q = await at(E, f);
468
+ if (q === !1) return;
469
+ if (typeof q == "string") {
470
+ P++;
471
+ const b = `${E.path}->${q}`;
472
+ T.add(b), await $(q, !0);
476
473
  return;
477
474
  }
478
475
  if (typeof window < "u" && typeof document < "u") {
479
- const R = Ct(e.query), U = a + e.path + (R || "") + (e.fragment ? "#" + e.fragment : "");
480
- i ? window.history.replaceState({}, "", U) : window.history.pushState({}, "", U);
476
+ const b = $t(e.query), F = o + e.path + (b || "") + (e.fragment ? "#" + e.fragment : "");
477
+ l ? window.history.replaceState({}, "", F) : window.history.pushState({}, "", F);
478
+ }
479
+ if (c.setState(E), Y(E, f), typeof window < "u" && typeof document < "u") try {
480
+ const b = E.fragment;
481
+ m.enabled && b && w(String(b), m.offset, m.timeoutMs).catch(() => {
482
+ });
483
+ } catch {
481
484
  }
482
- if (d.setState(b), Y(b, f), typeof window < "u" && typeof document < "u")
483
- try {
484
- const R = b.fragment;
485
- g.enabled && R && E(
486
- String(R),
487
- g.offset,
488
- g.timeoutMs
489
- ).catch(() => {
490
- });
491
- } catch {
492
- }
493
485
  } catch (e) {
494
- if (k("Navigation error:", e), e instanceof Error && (e.stack?.includes("runBeforeEnter") || e.stack?.includes("runOnEnter")))
495
- throw e;
486
+ if (k("Navigation error:", e), e instanceof Error && (e.stack?.includes("runBeforeEnter") || e.stack?.includes("runOnEnter"))) throw e;
496
487
  try {
497
- const n = d.getState();
498
- if (!J(r, n.path).route) {
499
- let b = r.find((w) => w.path === "/");
500
- if (b || (b = r.find(
501
- (w) => !w.path.includes(":") && !w.path.includes("*")
502
- )), !b && r.length > 0 && (b = r[0]), b) {
503
- const w = J(r, b.path);
504
- d.setState({
505
- path: b.path,
506
- params: w.params,
488
+ if (!Q(r, c.getState().path).route) {
489
+ let n = r.find((f) => f.path === "/");
490
+ if (n || (n = r.find((f) => !f.path.includes(":") && !f.path.includes("*"))), !n && r.length > 0 && (n = r[0]), n) {
491
+ const f = Q(r, n.path);
492
+ c.setState({
493
+ path: n.path,
494
+ params: f.params,
507
495
  query: {}
508
496
  });
509
- } else
510
- k("No fallback route available for error recovery");
497
+ } else k("No fallback route available for error recovery");
511
498
  }
512
499
  } catch (n) {
513
- m(
514
- "State recovery failed during navigation error:",
515
- n
516
- );
500
+ y("State recovery failed during navigation error:", n);
517
501
  }
518
502
  }
519
503
  };
520
504
  if (((s) => {
521
505
  if (!s || s.length === 0)
522
506
  return k("Router configuration error: No routes provided"), !1;
523
- const i = /* @__PURE__ */ new Set();
507
+ const l = /* @__PURE__ */ new Set();
524
508
  for (const e of s) {
525
509
  if (!e.path)
526
510
  return k("Router configuration error: Route missing path", e), !1;
527
- i.has(e.path) && m(`Duplicate route path detected: ${e.path}`), i.add(e.path), !e.component && !e.load && m(`Route '${e.path}' has no component or load function`);
511
+ l.has(e.path) && y(`Duplicate route path detected: ${e.path}`), l.add(e.path), !e.component && !e.load && y(`Route '${e.path}' has no component or load function`);
528
512
  }
529
513
  return !0;
530
- })(r), typeof window > "u" || typeof o < "u") {
531
- for (const s of r)
532
- O(s.path);
533
- m(`Pre-compiled ${r.length} routes for SSR`);
514
+ })(r), typeof window > "u" || typeof a < "u") {
515
+ for (const s of r) N(s.path);
516
+ y(`Pre-compiled ${r.length} routes for SSR`);
534
517
  }
535
- if (typeof window < "u" && typeof document < "u" && typeof o > "u") {
536
- v = () => {
518
+ if (typeof window < "u" && typeof document < "u" && typeof a > "u") {
519
+ g = () => {
537
520
  try {
538
- const e = new URL(window.location.href), n = e.pathname, f = n.startsWith(a) ? n.slice(a.length) : n, b = x(f || "/"), w = st(e.search), $ = e.hash && e.hash.length ? e.hash.slice(1) : "";
539
- return { path: b, query: w, fragment: $ };
521
+ const e = new URL(window.location.href), n = e.pathname;
522
+ return {
523
+ path: C((n.startsWith(o) ? n.slice(o.length) : n) || "/"),
524
+ query: ot(e.search),
525
+ fragment: e.hash && e.hash.length ? e.hash.slice(1) : ""
526
+ };
540
527
  } catch (e) {
541
- return m("Invalid URL detected, falling back to safe defaults", e), { path: "/", query: {}, fragment: "" };
528
+ return y("Invalid URL detected, falling back to safe defaults", e), {
529
+ path: "/",
530
+ query: {},
531
+ fragment: ""
532
+ };
542
533
  }
543
- }, l = v();
544
- const s = O(l.path);
545
- d = ft({
546
- path: l.path,
534
+ }, v = g();
535
+ const s = N(v.path);
536
+ c = ut({
537
+ path: v.path,
547
538
  params: s.params,
548
- query: l.query,
549
- fragment: l.fragment
550
- }), S = async (e = !1) => {
551
- const n = v();
552
- await P(n.path, e);
539
+ query: v.query,
540
+ fragment: v.fragment
541
+ }), R = async (e = !1) => {
542
+ await I(g().path, e);
553
543
  };
554
- const i = () => S(!0);
555
- window.addEventListener("popstate", i), D = () => window.removeEventListener("popstate", i), C = (e) => P(e, !1), I = (e) => P(e, !0), W = () => window.history.back(), queueMicrotask(() => {
556
- P(l.path, !0).catch((e) => {
544
+ const l = () => R(!0);
545
+ window.addEventListener("popstate", l), X = () => window.removeEventListener("popstate", l), M = (e) => I(e, !1), z = (e) => I(e, !0), H = () => window.history.back(), queueMicrotask(() => {
546
+ I(v.path, !0).catch((e) => {
557
547
  k("Initial navigation error:", e);
558
548
  });
559
549
  });
560
550
  } else {
561
- v = () => {
551
+ g = () => {
562
552
  try {
563
- const e = new URL(o || "/", "http://localhost"), n = e.pathname, f = n.startsWith(a) ? n.slice(a.length) : n, b = x(f || "/"), w = st(e.search), $ = e.hash && e.hash.length ? e.hash.slice(1) : "";
564
- return { path: b, query: w, fragment: $ };
553
+ const e = new URL(a || "/", "http://localhost"), n = e.pathname;
554
+ return {
555
+ path: C((n.startsWith(o) ? n.slice(o.length) : n) || "/"),
556
+ query: ot(e.search),
557
+ fragment: e.hash && e.hash.length ? e.hash.slice(1) : ""
558
+ };
565
559
  } catch (e) {
566
- return m(
567
- "Invalid SSR URL detected, falling back to safe defaults",
568
- e
569
- ), { path: "/", query: {}, fragment: "" };
560
+ return y("Invalid SSR URL detected, falling back to safe defaults", e), {
561
+ path: "/",
562
+ query: {},
563
+ fragment: ""
564
+ };
570
565
  }
571
- }, l = v();
572
- const s = O(l.path);
573
- d = ft({
574
- path: l.path,
566
+ }, v = g();
567
+ const s = N(v.path);
568
+ c = ut({
569
+ path: v.path,
575
570
  params: s.params,
576
- query: l.query,
577
- fragment: l.fragment
578
- }), S = async () => {
579
- const e = v();
580
- await i(e.path);
571
+ query: v.query,
572
+ fragment: v.fragment
573
+ }), R = async () => {
574
+ await l(g().path);
581
575
  };
582
- const i = async (e) => {
583
- if (q++, q > B) {
576
+ const l = async (e) => {
577
+ if (P++, P > W) {
584
578
  k(`SSR redirect depth exceeded for path: ${e}`);
585
579
  return;
586
580
  }
587
581
  try {
588
- const n = N(e), f = O(n.path);
582
+ const n = u(e), f = N(n.path);
589
583
  if (!f.route) throw new Error(`No route found for ${n.path}`);
590
- const b = d.getState(), w = {
584
+ const E = c.getState(), S = {
591
585
  path: n.path,
592
586
  params: f.params,
593
587
  query: n.query,
594
588
  fragment: n.fragment
595
- }, $ = rt(r, w.path);
596
- if ($?.beforeEnter) {
597
- const R = await $.beforeEnter(w, b);
598
- if (typeof R == "string") {
599
- const U = `${w.path}->${R}`;
600
- T.add(U), await i(R);
589
+ }, q = rt(r, S.path);
590
+ if (q?.beforeEnter) {
591
+ const b = await q.beforeEnter(S, E);
592
+ if (typeof b == "string") {
593
+ const F = `${S.path}->${b}`;
594
+ T.add(F), await l(b);
601
595
  return;
602
596
  }
603
- if (R === !1) return;
597
+ if (b === !1) return;
604
598
  }
605
- if ($?.onEnter) {
606
- const R = await $.onEnter(w, b);
607
- if (typeof R == "string") {
608
- const U = `${w.path}->${R}`;
609
- T.add(U), await i(R);
599
+ if (q?.onEnter) {
600
+ const b = await q.onEnter(S, E);
601
+ if (typeof b == "string") {
602
+ const F = `${S.path}->${b}`;
603
+ T.add(F), await l(b);
610
604
  return;
611
605
  }
612
- if (R === !1) return;
606
+ if (b === !1) return;
613
607
  }
614
- d.setState(w), $?.afterEnter && $.afterEnter(w, b);
608
+ c.setState(S), q?.afterEnter && q.afterEnter(S, E);
615
609
  } catch (n) {
616
610
  throw k("SSR navigation error:", n), n;
617
611
  }
618
612
  };
619
- C = async (e) => (q = 0, T.clear(), i(e)), I = async (e) => (q = 0, T.clear(), i(e)), W = () => {
613
+ M = async (e) => (P = 0, T.clear(), l(e)), z = async (e) => (P = 0, T.clear(), l(e)), H = () => {
620
614
  };
621
615
  }
622
616
  return {
623
617
  _cleanupScrollState: tt,
624
- destroy: D,
625
- store: d,
626
- push: C,
627
- replace: I,
628
- back: W,
629
- subscribe: d.subscribe,
630
- matchRoute: (s) => O(s),
631
- getCurrent: () => d.getState(),
632
- resolveRouteComponent: Tt,
633
- base: a,
634
- // Public API: allow components or tests to explicitly request scrolling to
635
- // a fragment when they know their DOM is ready. Returns true if scrolled.
618
+ destroy: X,
619
+ store: c,
620
+ push: M,
621
+ replace: z,
622
+ back: H,
623
+ subscribe: c.subscribe,
624
+ matchRoute: (s) => N(s),
625
+ getCurrent: () => c.getState(),
626
+ resolveRouteComponent: gt,
627
+ base: o,
636
628
  scrollToFragment: (s) => {
637
- const i = s || d.getState().fragment;
638
- return !i || typeof window > "u" || typeof document > "u" ? Promise.resolve(!1) : E(
639
- i,
640
- g.offset,
641
- g.timeoutMs
642
- );
629
+ const l = s || c.getState().fragment;
630
+ return !l || typeof window > "u" || typeof document > "u" ? Promise.resolve(!1) : w(l, m.offset, m.timeoutMs);
643
631
  }
644
632
  };
645
633
  }
646
- function Wt(t) {
647
- _t();
648
- const r = Ot(t), p = mt();
649
- if (p) {
634
+ function zt(t) {
635
+ Pt();
636
+ const r = It(t), h = yt();
637
+ if (h) {
650
638
  try {
651
- p.destroy();
639
+ h.destroy();
652
640
  } catch {
653
641
  }
654
642
  try {
655
- p._cleanupScrollState?.();
643
+ h._cleanupScrollState?.();
656
644
  } catch {
657
645
  }
658
646
  }
659
- Mt(r);
647
+ qt(r);
660
648
  try {
661
- It();
649
+ Tt();
662
650
  try {
663
651
  typeof window < "u" && nt();
664
652
  } catch {
@@ -674,55 +662,68 @@ function Wt(t) {
674
662
  }
675
663
  } catch {
676
664
  }
677
- return ut("router-view", async () => {
678
- const c = St()?._router, a = c ?? _;
679
- if (!mt() && !c) return j`<div>Router not initialized.</div>`;
680
- const g = et(a.getCurrent()), v = typeof window > "u";
681
- let l;
682
- v || (it(() => {
665
+ return lt("router-view", async () => {
666
+ const a = it()?._router, i = a ?? x;
667
+ if (!yt() && !a) return U`<div>Router not initialized.</div>`;
668
+ const o = et(i.getCurrent()), m = typeof window > "u";
669
+ let g;
670
+ m || (ct(() => {
683
671
  try {
684
- typeof a.subscribe == "function" && (l = a.subscribe((S) => {
672
+ typeof i.subscribe == "function" && (g = i.subscribe((c) => {
685
673
  try {
686
- S && typeof S == "object" && typeof S.path == "string" ? g.value = S : (m("router-view received invalid state", S), g.value = { path: "/", params: {}, query: {} });
687
- } catch (C) {
688
- m("router-view subscription update failed", C);
674
+ c && typeof c == "object" && typeof c.path == "string" ? o.value = c : (y("router-view received invalid state", c), o.value = {
675
+ path: "/",
676
+ params: {},
677
+ query: {}
678
+ });
679
+ } catch (R) {
680
+ y("router-view subscription update failed", R);
689
681
  try {
690
- g.value = { path: "/", params: {}, query: {} };
682
+ o.value = {
683
+ path: "/",
684
+ params: {},
685
+ query: {}
686
+ };
691
687
  } catch {
692
688
  }
693
689
  }
694
690
  }));
695
- } catch (S) {
696
- m("router-view subscribe failed", S);
691
+ } catch (c) {
692
+ y("router-view subscribe failed", c);
697
693
  }
698
- }), lt(() => {
699
- if (typeof l == "function") {
694
+ }), st(() => {
695
+ if (typeof g == "function") {
700
696
  try {
701
- l();
702
- } catch (S) {
703
- m("router-view unsubscribe failed", S);
697
+ g();
698
+ } catch (c) {
699
+ y("router-view unsubscribe failed", c);
704
700
  }
705
- l = void 0;
701
+ g = void 0;
706
702
  }
707
703
  }));
708
- const d = a.matchRoute(g.value.path);
709
- if (!d || !d.route) return j`<div>Not found</div>`;
704
+ const v = i.matchRoute(o.value.path);
705
+ if (!v || !v.route) return U`<div>Not found</div>`;
710
706
  try {
711
- const C = await a.resolveRouteComponent(
712
- d.route
713
- );
714
- if (typeof C == "string")
715
- return { tag: C, props: { attrs: { ...g.value.params } }, children: [] };
716
- if (typeof C == "function") {
717
- const I = C();
718
- return (I instanceof Promise ? I : Promise.resolve(I)).then((D) => typeof D == "string" ? { tag: D, props: {}, children: [] } : D);
707
+ const c = await i.resolveRouteComponent(v.route);
708
+ if (typeof c == "string") return {
709
+ tag: c,
710
+ props: { attrs: { ...o.value.params } },
711
+ children: []
712
+ };
713
+ if (typeof c == "function") {
714
+ const R = c();
715
+ return (R instanceof Promise ? R : Promise.resolve(R)).then((M) => typeof M == "string" ? {
716
+ tag: M,
717
+ props: {},
718
+ children: []
719
+ } : M);
719
720
  }
720
- return j`<div>Invalid route component</div>`;
721
+ return U`<div>Invalid route component</div>`;
721
722
  } catch {
722
- return j`<div>Invalid route component</div>`;
723
+ return U`<div>Invalid route component</div>`;
723
724
  }
724
- }), ut("router-link", () => {
725
- const o = Rt({
725
+ }), lt("router-link", () => {
726
+ const a = St({
726
727
  to: "",
727
728
  tag: "a",
728
729
  replace: !1,
@@ -732,65 +733,73 @@ function Wt(t) {
732
733
  ariaCurrentValue: "page",
733
734
  disabled: !1,
734
735
  external: !1,
735
- // allow host `class` and `style` attributes to be read via useProps
736
736
  class: "",
737
737
  style: ""
738
- }), c = typeof window > "u", a = et(_.getCurrent()), g = a.value?.path || "/", v = String(o.to || ""), l = c ? {
739
- isExactActive: gt(
740
- g,
741
- v,
742
- _.base
743
- ),
744
- isActive: vt(
745
- g,
746
- v,
747
- _.base
748
- ),
749
- isExternal: Q(v) || !!o.external
738
+ }), i = typeof window > "u", o = et(x.getCurrent()), m = o.value?.path || "/", g = String(a.to || ""), v = i ? {
739
+ isExactActive: mt(m, g, x.base),
740
+ isActive: vt(m, g, x.base),
741
+ isExternal: K(g) || !!a.external
750
742
  } : null;
751
- let d;
752
- Et(() => "a,button{display:inline-block;}");
753
- const S = et(o.class || ""), C = et(o.style || "");
754
- if (!c) {
755
- let h = null;
756
- it((E) => {
743
+ let c;
744
+ Rt(() => "a,button{display:inline-block;}");
745
+ const R = et(a.class || ""), M = et(a.style || "");
746
+ if (!i) {
747
+ const p = it(), w = p?._host ?? null;
748
+ let _ = null, I = null;
749
+ ct(() => {
750
+ w instanceof HTMLElement && (I = () => {
751
+ const u = String(a.to || "");
752
+ if (u && !K(u)) try {
753
+ const { route: $ } = x.matchRoute(u);
754
+ $?.load && gt($).catch(() => {
755
+ });
756
+ } catch {
757
+ }
758
+ }, w.addEventListener("mouseenter", I, { once: !0 }));
757
759
  try {
758
- if (typeof _.subscribe == "function") {
759
- d = _.subscribe((u) => {
760
+ if (typeof x.subscribe == "function") {
761
+ c = x.subscribe((u) => {
760
762
  try {
761
- u && typeof u == "object" && typeof u.path == "string" ? a.value = u : (m("router-link received invalid state", u), a.value = { path: "/", params: {}, query: {} });
762
- } catch (P) {
763
- m("router-link subscription update failed", P);
763
+ u && typeof u == "object" && typeof u.path == "string" ? o.value = u : (y("router-link received invalid state", u), o.value = {
764
+ path: "/",
765
+ params: {},
766
+ query: {}
767
+ });
768
+ } catch ($) {
769
+ y("router-link subscription update failed", $);
764
770
  try {
765
- a.value = { path: "/", params: {}, query: {} };
771
+ o.value = {
772
+ path: "/",
773
+ params: {},
774
+ query: {}
775
+ };
766
776
  } catch {
767
777
  }
768
778
  }
769
779
  });
770
780
  try {
771
- const u = _.getCurrent();
772
- u && typeof u.path == "string" && (a.value = u);
781
+ const u = x.getCurrent();
782
+ u && typeof u.path == "string" && (o.value = u);
773
783
  } catch (u) {
774
- m("router-link initial state sync failed", u);
784
+ y("router-link initial state sync failed", u);
775
785
  }
776
- h = setInterval(() => {
786
+ _ = setInterval(() => {
777
787
  try {
778
- const u = _.getCurrent();
779
- u && typeof u.path == "string" && JSON.stringify(a.value) !== JSON.stringify(u) && (a.value = u);
788
+ const u = x.getCurrent();
789
+ u && typeof u.path == "string" && JSON.stringify(o.value) !== JSON.stringify(u) && (o.value = u);
780
790
  } catch {
781
791
  }
782
792
  }, 100);
783
793
  }
784
794
  } catch (u) {
785
- m("router-link subscribe failed", u);
795
+ y("router-link subscribe failed", u);
786
796
  }
787
797
  try {
788
- const u = E?._host;
789
- if (typeof HTMLElement < "u" && u instanceof HTMLElement) {
790
- const P = u.getAttribute("class"), N = u.getAttribute("style");
791
- P && (S.value = P), N && (C.value = N), P !== null && u.removeAttribute("class"), N !== null && u.removeAttribute("style");
798
+ if (w instanceof HTMLElement) {
799
+ const u = w.getAttribute("class"), $ = w.getAttribute("style");
800
+ u && (R.value = u), $ && (M.value = $), u !== null && w.removeAttribute("class"), $ !== null && w.removeAttribute("style");
792
801
  try {
793
- E?._requestRender?.();
802
+ p?._requestRender?.();
794
803
  try {
795
804
  nt();
796
805
  } catch {
@@ -799,100 +808,89 @@ function Wt(t) {
799
808
  }
800
809
  }
801
810
  } catch (u) {
802
- m("router-link host migration failed", u);
811
+ y("router-link host migration failed", u);
812
+ }
813
+ }), st(() => {
814
+ if (I && w instanceof HTMLElement) try {
815
+ w.removeEventListener("mouseenter", I);
816
+ } catch {
817
+ } finally {
818
+ I = null;
819
+ }
820
+ if (typeof c == "function") try {
821
+ c();
822
+ } catch (u) {
823
+ y("router-link unsubscribe failed", u);
824
+ } finally {
825
+ c = void 0;
826
+ }
827
+ if (_) try {
828
+ clearInterval(_);
829
+ } catch (u) {
830
+ y("router-link sync interval cleanup failed", u);
831
+ } finally {
832
+ _ = null;
803
833
  }
804
- }), lt(() => {
805
- if (typeof d == "function")
806
- try {
807
- d();
808
- } catch (E) {
809
- m("router-link unsubscribe failed", E);
810
- } finally {
811
- d = void 0;
812
- }
813
- if (h)
814
- try {
815
- clearInterval(h);
816
- } catch (E) {
817
- m("router-link sync interval cleanup failed", E);
818
- } finally {
819
- h = null;
820
- }
821
834
  });
822
835
  }
823
- const I = M(() => {
824
- if (c && l)
825
- return l.isExactActive;
836
+ const z = L(() => {
837
+ if (i && v) return v.isExactActive;
826
838
  try {
827
- const h = _.base ?? "", E = o.to || "";
828
- return !a.value || typeof a.value.path != "string" ? !1 : gt(a.value.path, E, h);
829
- } catch (h) {
830
- return m("isExactActive computation error", h), !1;
839
+ const p = x.base ?? "", w = a.to || "";
840
+ return !o.value || typeof o.value.path != "string" ? !1 : mt(o.value.path, w, p);
841
+ } catch (p) {
842
+ return y("isExactActive computation error", p), !1;
831
843
  }
832
- }), W = M(() => {
833
- if (c && l)
834
- return l.isActive;
844
+ }), H = L(() => {
845
+ if (i && v) return v.isActive;
835
846
  try {
836
- const h = _.base ?? "", E = o.to || "";
837
- return !a.value || typeof a.value.path != "string" ? !1 : o.exact ? I.value : vt(a.value.path, E, h);
838
- } catch (h) {
839
- return m("isActive computation error", h), !1;
847
+ const p = x.base ?? "", w = a.to || "";
848
+ return !o.value || typeof o.value.path != "string" ? !1 : a.exact ? z.value : vt(o.value.path, w, p);
849
+ } catch (p) {
850
+ return y("isActive computation error", p), !1;
840
851
  }
841
- }), D = M(() => {
842
- const h = String(o.to || "");
843
- if (pt(h)) return null;
844
- if (Q(h)) return h;
845
- const [E, u] = h.split("#"), [P, N] = (E || "").split("?"), F = _.base ?? "";
846
- let Z = P || "/";
847
- if (F && F !== "/") {
848
- const ot = x(F), s = x(Z);
849
- s.startsWith(ot) ? Z = s.slice(ot.length) || "/" : Z = s;
852
+ }), X = L(() => {
853
+ const p = String(a.to || "");
854
+ if (ht(p)) return null;
855
+ if (K(p)) return p;
856
+ const [w, _] = p.split("#"), [I, u] = (w || "").split("?"), $ = x.base ?? "";
857
+ let Z = I || "/";
858
+ if ($ && $ !== "/") {
859
+ const s = C($), l = C(Z);
860
+ l.startsWith(s) ? Z = l.slice(s.length) || "/" : Z = l;
850
861
  }
851
- const ct = x(Z || "/");
852
- return F + ct + (N ? "?" + N : "") + (u ? "#" + u : "");
853
- }), T = M(() => {
854
- const E = (S && S.value || o.class || "").split(/\s+/).filter(Boolean), u = {};
855
- for (const P of E) u[P] = !0;
856
- return u;
857
- }), B = M(() => ({
862
+ return $ + C(Z || "/") + (u ? "?" + u : "") + (_ ? "#" + _ : "");
863
+ }), T = L(() => {
864
+ const p = (R && R.value || a.class || "").split(/\s+/).filter(Boolean), w = {};
865
+ for (const _ of p) w[_] = !0;
866
+ return w;
867
+ }), W = L(() => ({
858
868
  ...T.value,
859
- [o.activeClass || "active"]: W.value,
860
- [o.exactActiveClass || "exact-active"]: I.value
861
- })), q = M(
862
- () => Object.keys(B.value).filter((h) => B.value[h]).join(" ")
863
- ), G = M(() => o.tag || "a"), at = M(() => G.value === "button"), Y = M(
864
- () => I.value ? o.ariaCurrentValue : null
865
- ), A = M(() => !!o.disabled), K = M(() => {
866
- const h = String(o.to || "");
867
- return (Q(h) || !!o.external) && G.value === "a";
868
- }), O = M(
869
- () => C && C.value || o.style || ""
870
- ), tt = (h) => {
871
- if (h.defaultPrevented || h.button !== 0 || h.metaKey || h.altKey || h.ctrlKey || h.shiftKey)
872
- return;
873
- if (A.value) {
874
- h.preventDefault();
875
- return;
876
- }
877
- const E = String(o.to || "");
878
- if (pt(E)) {
879
- try {
880
- h.preventDefault();
881
- } catch {
869
+ [a.activeClass || "active"]: H.value,
870
+ [a.exactActiveClass || "exact-active"]: z.value
871
+ })), P = L(() => Object.keys(W.value).filter((p) => W.value[p]).join(" ")), G = L(() => a.tag || "a"), at = L(() => G.value === "button"), Y = L(() => z.value ? a.ariaCurrentValue : null), A = L(() => !!a.disabled), j = L(() => (K(String(a.to || "")) || !!a.external) && G.value === "a"), N = L(() => M && M.value || a.style || ""), tt = (p) => {
872
+ if (!(p.defaultPrevented || p.button !== 0 || p.metaKey || p.altKey || p.ctrlKey || p.shiftKey)) {
873
+ if (A.value) {
874
+ p.preventDefault();
875
+ return;
882
876
  }
883
- m("Blocked unsafe javascript: URI in router-link.to");
884
- return;
877
+ if (ht(String(a.to || ""))) {
878
+ try {
879
+ p.preventDefault();
880
+ } catch {
881
+ }
882
+ y("Blocked unsafe javascript: URI in router-link.to");
883
+ return;
884
+ }
885
+ j.value || (p.preventDefault(), a.replace ? x.replace(a.to) : x.push(a.to));
885
886
  }
886
- K.value || (h.preventDefault(), o.replace ? _.replace(o.to) : _.push(o.to));
887
887
  };
888
- return j`
889
- ${$t().when(
890
- at.value,
891
- j`
888
+ return U`
889
+ ${Et().when(at.value, U`
892
890
  <button
893
891
  part="button"
894
- class="${q.value}"
895
- style="${O.value || null}"
892
+ class="${P.value}"
893
+ style="${N.value || null}"
896
894
  aria-current="${Y.value}"
897
895
  disabled="${A.value ? "" : null}"
898
896
  aria-disabled="${A.value ? "true" : null}"
@@ -901,18 +899,17 @@ function Wt(t) {
901
899
  >
902
900
  <slot></slot>
903
901
  </button>
904
- `
905
- ).otherwise(j`
902
+ `).otherwise(U`
906
903
  <a
907
904
  part="link"
908
- href="${A.value ? null : D.value}"
909
- class="${q.value}"
910
- style="${O.value || null}"
905
+ href="${A.value ? null : X.value}"
906
+ class="${P.value}"
907
+ style="${N.value || null}"
911
908
  aria-current="${Y.value}"
912
909
  aria-disabled="${A.value ? "true" : null}"
913
910
  tabindex="${A.value ? "-1" : null}"
914
- target="${K.value ? "_blank" : null}"
915
- rel="${K.value ? "noopener noreferrer" : null}"
911
+ target="${j.value ? "_blank" : null}"
912
+ rel="${j.value ? "noopener noreferrer" : null}"
916
913
  @click="${tt}"
917
914
  ><slot></slot
918
915
  ></a>
@@ -920,42 +917,42 @@ function Wt(t) {
920
917
  `;
921
918
  }), r;
922
919
  }
923
- function gt(t, r, p) {
924
- if (Q(r)) return !1;
925
- let c = (r.split("#")[0] || "/").split("?")[0];
926
- if (p && p !== "/") {
927
- const v = x(p), l = x(c);
928
- l.startsWith(v) ? c = l.slice(v.length) || "/" : c = l;
920
+ function mt(t, r, h) {
921
+ if (K(r)) return !1;
922
+ let a = (r.split("#")[0] || "/").split("?")[0];
923
+ if (h && h !== "/") {
924
+ const i = C(h), o = C(a);
925
+ o.startsWith(i) ? a = o.slice(i.length) || "/" : a = o;
929
926
  }
930
- const a = x(t), g = x(c);
931
- return a === g;
927
+ return C(t) === C(a);
932
928
  }
933
- function vt(t, r, p) {
934
- if (Q(r)) return !1;
935
- let c = (r.split("#")[0] || "/").split("?")[0];
936
- if (p && p !== "/") {
937
- const v = x(p), l = x(c);
938
- l.startsWith(v) ? c = l.slice(v.length) || "/" : c = l;
929
+ function vt(t, r, h) {
930
+ if (K(r)) return !1;
931
+ let a = (r.split("#")[0] || "/").split("?")[0];
932
+ if (h && h !== "/") {
933
+ const m = C(h), g = C(a);
934
+ g.startsWith(m) ? a = g.slice(m.length) || "/" : a = g;
939
935
  }
940
- const a = x(t), g = x(c);
941
- return g === "/" ? a === "/" : a === g ? !0 : a.startsWith(g.endsWith("/") ? g : g + "/");
936
+ const i = C(t), o = C(a);
937
+ return o === "/" ? i === "/" : i === o ? !0 : i.startsWith(o.endsWith("/") ? o : o + "/");
942
938
  }
943
939
  export {
944
- ht as DEFAULT_SCROLL_CONFIG,
945
- _ as activeRouterProxy,
946
- At as canonicalizeBase,
947
- _t as clearComponentCache,
940
+ ft as DEFAULT_SCROLL_CONFIG,
941
+ x as activeRouterProxy,
942
+ xt as canonicalizeBase,
943
+ Pt as clearComponentCache,
948
944
  rt as findMatchedRoute,
949
- Wt as initRouter,
950
- Q as isAbsoluteUrl,
951
- pt as isDangerousScheme,
952
- J as matchRoute,
953
- jt as matchRouteSSR,
954
- x as normalizePathForRoute,
955
- st as parseQuery,
956
- Tt as resolveRouteComponent,
957
- xt as safeDecode,
958
- Ct as serializeQuery,
959
- Ot as useRouter
945
+ zt as initRouter,
946
+ K as isAbsoluteUrl,
947
+ ht as isDangerousScheme,
948
+ Q as matchRoute,
949
+ Ft as matchRouteSSR,
950
+ C as normalizePathForRoute,
951
+ ot as parseQuery,
952
+ gt as resolveRouteComponent,
953
+ Ct as safeDecode,
954
+ $t as serializeQuery,
955
+ It as useRouter
960
956
  };
961
- //# sourceMappingURL=custom-elements-runtime.router.es.js.map
957
+
958
+ //# sourceMappingURL=custom-elements-runtime.router.es.js.map