@jasonshimmy/custom-elements-runtime 3.2.0 → 3.2.1

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 +585 -603
  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 x } from "./logger-L25axmB-.js";
2
+ import { J as nt, R as T, V as et, _ as bt, h as st, i as wt, m as it, y as St } from "./hooks-_3xP4G2N.js";
3
+ import { n as ct, t as U } from "./template-compiler-Cs5axmn4.js";
4
+ import { match as Rt } from "./custom-elements-runtime.directives.es.js";
5
+ import { createStore as lt } from "./custom-elements-runtime.store.es.js";
6
+ var ut = {
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
+ }, ft = (t) => t ? /^\s*javascript\s*:/i.test(t) : !1, Z = (t) => /^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(t) || t.startsWith("//"), Et = (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 E(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 Ct = (t) => {
30
30
  if (!t) return "";
31
- const r = x(t);
31
+ const r = E(t);
32
32
  return r === "/" ? "" : r;
33
- }, dt = /* @__PURE__ */ new WeakMap();
34
- function Pt(t) {
33
+ }, ht = /* @__PURE__ */ new WeakMap();
34
+ function xt(t) {
35
35
  return t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
36
36
  }
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__");
37
+ function At(t) {
38
+ const r = E(t.path || "/"), f = r === "/" ? [] : r.split("/").filter(Boolean), a = [], i = [];
39
+ for (let m = 0; m < f.length; m++) {
40
+ const g = f[m];
41
+ if (g === "*") {
42
+ if (m !== f.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], S = !!v[2];
51
+ if (S && m !== f.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(S ? "__SPLAT__" : "([^/]+)");
58
54
  continue;
59
55
  }
60
- a.push(Pt(l));
56
+ i.push(xt(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 f = E(r);
75
+ for (const a of t) {
76
+ let i = ht.get(a);
77
+ if (i || (i = At(a), ht.set(a, i)), i.invalid) continue;
78
+ const { regex: o, paramNames: m } = i, g = o.exec(f);
79
+ if (g) {
80
+ const v = {};
81
+ for (let c = 0; c < m.length; c++) {
82
+ const S = g[c + 1] || "";
83
+ v[m[c]] = S ? Et(S) : "";
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 f of t) if (Q([f], r).route !== null) return f;
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 f = r.split("?")[0].split("#")[0];
102
+ return Q(t, f);
101
103
  }
102
- const yt = 50;
103
- let X = {}, H = {};
104
- function _t() {
105
- X = {}, H = {};
104
+ var pt = 50, J = {}, B = {};
105
+ function kt() {
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 Pt() {
109
+ const t = Object.entries(J);
110
+ if (t.length <= pt) return;
111
+ const r = t.sort(([, f], [, a]) => f.lastAccessed - a.lastAccessed).slice(0, t.length - pt);
112
+ for (const [f] of r) delete J[f];
118
113
  }
119
- async function Tt(t) {
114
+ async function _t(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 f = 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
+ Pt();
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 f && x(`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 dt() {
148
+ return d;
162
149
  }
163
- const V = /* @__PURE__ */ new Set();
164
- let L = null;
165
- function bt() {
166
- if (L) {
150
+ var K = /* @__PURE__ */ new Set(), O = null;
151
+ function vt() {
152
+ if (O) {
167
153
  try {
168
- L();
154
+ O();
169
155
  } catch {
170
156
  }
171
- L = null;
157
+ O = 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
+ O = d.subscribe((r) => {
162
+ t = !0;
163
+ for (const f of K) try {
164
+ f(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
+ A.base = d.base;
170
+ } catch {
171
+ }
172
+ if (t) {
173
+ const r = d.getCurrent();
174
+ for (const f of K) try {
175
+ f(r);
176
+ } catch {
202
177
  }
203
- try {
204
- typeof window < "u" && nt();
178
+ } else {
179
+ const r = d.getCurrent();
180
+ for (const f of K) try {
181
+ f(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
+ O = null;
191
+ }
210
192
  }
211
- function It() {
212
- bt();
193
+ function Tt() {
194
+ vt();
213
195
  }
214
- const _ = {
196
+ var A = {
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 (K.add(t), d) if (!O) vt();
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 (K.delete(t), K.size === 0 && O) {
261
249
  try {
262
- L();
250
+ O();
263
251
  } catch (r) {
264
- m("activeRouterProxy inner unsubscribe failed", r);
252
+ y("activeRouterProxy inner unsubscribe failed", r);
265
253
  }
266
- L = null;
254
+ O = 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: f = "", initialUrl: a, scrollToFragment: i = !0 } = t, o = Ct(f), m = typeof i == "boolean" ? {
297
+ ...ut,
298
+ enabled: i
299
+ } : {
300
+ ...ut,
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, S, I, z, V, X = () => {
304
+ };
305
+ const _ = /* @__PURE__ */ new Set(), W = 10;
306
+ let k = 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
- const f = `${s.path}->${n}`;
313
- return T.has(f) || q >= B ? (k(`Redirect loop detected: ${f}`), !1) : n;
313
+ const u = `${s.path}->${n}`;
314
+ return _.has(u) || k >= W ? (x(`Redirect loop detected: ${u}`), !1) : n;
314
315
  }
315
316
  return n !== !1;
316
317
  } catch (n) {
317
- k("beforeEnter error", n);
318
+ x("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
- const f = `${s.path}->${n}`;
331
- return T.has(f) || q >= B ? (k(`Redirect loop detected: ${f}`), !1) : n;
331
+ const u = `${s.path}->${n}`;
332
+ return _.has(u) || k >= W ? (x(`Redirect loop detected: ${u}`), !1) : n;
332
333
  }
333
334
  return n !== !1;
334
335
  } catch (n) {
335
- k("onEnter error", n);
336
+ x("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
- n instanceof Promise && n.catch((f) => {
348
- k("afterEnter async error", f);
347
+ const n = e.afterEnter(s, l);
348
+ n instanceof Promise && n.catch((u) => {
349
+ x("afterEnter async error", u);
349
350
  });
350
351
  } catch (n) {
351
- k("afterEnter error", n);
352
+ x("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
+ }, C = /* @__PURE__ */ new Map(), j = 100, M = (s) => {
355
+ if (C.has(s)) return C.get(s);
356
+ const l = Q(r, s);
357
+ if (C.size >= j) {
358
+ const e = Math.floor(j * 0.25), n = Array.from(C.keys());
359
+ for (let u = 0; u < e && u < n.length; u++) C.delete(n[u]);
361
360
  }
362
- return A.set(s, i), i;
361
+ return C.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(), u = Math.max(0, window.scrollY + n.top - l);
370
+ typeof window.scrollTo == "function" && window.scrollTo({
371
+ top: u,
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 $(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 () => {
406
- if (!f)
401
+ let u = !1, R = null, w = null;
402
+ const P = Date.now(), b = (L) => {
403
+ u || (u = !0, R && clearTimeout(R), w !== null && cancelAnimationFrame(w), n(L));
404
+ }, F = async () => {
405
+ if (!u)
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 L = async () => {
409
+ if (!u) {
410
+ if (Date.now() - P >= e) return b(!1);
411
+ try {
412
+ if (await p(s, l)) return b(!0);
413
+ w = requestAnimationFrame(L);
414
+ } catch (gt) {
415
+ y("Scroll retry attempt failed:", gt), w = requestAnimationFrame(L);
416
+ }
420
417
  }
421
418
  };
422
- w = requestAnimationFrame(z);
423
- } catch (z) {
424
- m("Initial scroll attempt failed:", z), R(!1);
419
+ w = requestAnimationFrame(L);
420
+ } catch (L) {
421
+ y("Initial scroll attempt failed:", L), 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
+ R = setTimeout(() => {
425
+ b(!1);
426
+ }, e), F().catch((L) => {
427
+ y("Scroll attempt failed:", L), 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 h = !1;
432
+ const q = async (s, l = !1) => {
433
+ if (h) {
434
+ y(`Navigation to ${s} blocked - navigation already in progress`);
438
435
  return;
439
436
  }
440
- u = !0, q = 0, T.clear();
437
+ h = !0, k = 0, _.clear();
441
438
  try {
442
- await F(s, i);
439
+ await D(s, l);
443
440
  } finally {
444
- u = !1, q = 0, T.clear();
441
+ h = !1, k = 0, _.clear();
445
442
  }
446
443
  }, 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;
444
+ const l = s.indexOf("#"), e = l >= 0 ? s.slice(l + 1) : "", n = l >= 0 ? s.slice(0, l) : s, u = n.indexOf("?"), R = u >= 0 ? n.slice(0, u) : n, w = u >= 0 ? ot(n.slice(u)) : {};
448
445
  return {
449
- path: x($ || "/"),
446
+ path: E((R.startsWith(o) ? R.slice(o.length) : R) || "/"),
450
447
  query: w,
451
448
  fragment: e
452
449
  };
453
- }, F = async (s, i = !1) => {
450
+ }, D = async (s, l = !1) => {
454
451
  try {
455
- const e = N(s), n = O(e.path);
452
+ const e = N(s), n = M(e.path);
456
453
  if (!n.route) throw new Error(`No route found for ${e.path}`);
457
- const f = d.getState(), b = {
454
+ const u = c.getState(), R = {
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);
459
+ }, w = await G(R, u);
463
460
  if (w === !1) return;
464
461
  if (typeof w == "string") {
465
- q++;
466
- const R = `${b.path}->${w}`;
467
- T.add(R), await F(w, !0);
462
+ k++;
463
+ const b = `${R.path}->${w}`;
464
+ _.add(b), await D(w, !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 P = await at(R, u);
468
+ if (P === !1) return;
469
+ if (typeof P == "string") {
470
+ k++;
471
+ const b = `${R.path}->${P}`;
472
+ _.add(b), await D(P, !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(R), Y(R, u), typeof window < "u" && typeof document < "u") try {
480
+ const b = R.fragment;
481
+ m.enabled && b && $(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 (x("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((u) => u.path === "/");
490
+ if (n || (n = r.find((u) => !u.path.includes(":") && !u.path.includes("*"))), !n && r.length > 0 && (n = r[0]), n) {
491
+ const u = Q(r, n.path);
492
+ c.setState({
493
+ path: n.path,
494
+ params: u.params,
507
495
  query: {}
508
496
  });
509
- } else
510
- k("No fallback route available for error recovery");
497
+ } else x("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
- return k("Router configuration error: No routes provided"), !1;
523
- const i = /* @__PURE__ */ new Set();
506
+ return x("Router configuration error: No routes provided"), !1;
507
+ const l = /* @__PURE__ */ new Set();
524
508
  for (const e of s) {
525
509
  if (!e.path)
526
- 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`);
510
+ return x("Router configuration error: Route missing path", e), !1;
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) M(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: E((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 = M(v.path);
536
+ c = lt({
537
+ path: v.path,
547
538
  params: s.params,
548
- query: l.query,
549
- fragment: l.fragment
539
+ query: v.query,
540
+ fragment: v.fragment
550
541
  }), S = async (e = !1) => {
551
- const n = v();
552
- await P(n.path, e);
542
+ await q(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) => {
557
- k("Initial navigation error:", e);
544
+ const l = () => S(!0);
545
+ window.addEventListener("popstate", l), X = () => window.removeEventListener("popstate", l), I = (e) => q(e, !1), z = (e) => q(e, !0), V = () => window.history.back(), queueMicrotask(() => {
546
+ q(v.path, !0).catch((e) => {
547
+ x("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: E((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 = M(v.path);
568
+ c = lt({
569
+ path: v.path,
575
570
  params: s.params,
576
- query: l.query,
577
- fragment: l.fragment
571
+ query: v.query,
572
+ fragment: v.fragment
578
573
  }), S = async () => {
579
- const e = v();
580
- await i(e.path);
574
+ await l(g().path);
581
575
  };
582
- const i = async (e) => {
583
- if (q++, q > B) {
584
- k(`SSR redirect depth exceeded for path: ${e}`);
576
+ const l = async (e) => {
577
+ if (k++, k > W) {
578
+ x(`SSR redirect depth exceeded for path: ${e}`);
585
579
  return;
586
580
  }
587
581
  try {
588
- const n = N(e), f = O(n.path);
589
- if (!f.route) throw new Error(`No route found for ${n.path}`);
590
- const b = d.getState(), w = {
582
+ const n = N(e), u = M(n.path);
583
+ if (!u.route) throw new Error(`No route found for ${n.path}`);
584
+ const R = c.getState(), w = {
591
585
  path: n.path,
592
- params: f.params,
586
+ params: u.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
+ }, P = rt(r, w.path);
590
+ if (P?.beforeEnter) {
591
+ const b = await P.beforeEnter(w, R);
592
+ if (typeof b == "string") {
593
+ const F = `${w.path}->${b}`;
594
+ _.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 (P?.onEnter) {
600
+ const b = await P.onEnter(w, R);
601
+ if (typeof b == "string") {
602
+ const F = `${w.path}->${b}`;
603
+ _.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(w), P?.afterEnter && P.afterEnter(w, R);
615
609
  } catch (n) {
616
- throw k("SSR navigation error:", n), n;
610
+ throw x("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
+ I = async (e) => (k = 0, _.clear(), l(e)), z = async (e) => (k = 0, _.clear(), l(e)), V = () => {
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: I,
621
+ replace: z,
622
+ back: V,
623
+ subscribe: c.subscribe,
624
+ matchRoute: (s) => M(s),
625
+ getCurrent: () => c.getState(),
626
+ resolveRouteComponent: _t,
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) : $(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
+ kt();
636
+ const r = It(t), f = dt();
637
+ if (f) {
650
638
  try {
651
- p.destroy();
639
+ f.destroy();
652
640
  } catch {
653
641
  }
654
642
  try {
655
- p._cleanupScrollState?.();
643
+ f._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 ct("router-view", async () => {
666
+ const a = wt()?._router, i = a ?? A;
667
+ if (!dt() && !a) return U`<div>Router not initialized.</div>`;
668
+ const o = et(i.getCurrent()), m = typeof window > "u";
669
+ let g;
670
+ m || (it(() => {
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 (S) {
680
+ y("router-view subscription update failed", S);
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 S = c();
715
+ return (S instanceof Promise ? S : Promise.resolve(S)).then((I) => typeof I == "string" ? {
716
+ tag: I,
717
+ props: {},
718
+ children: []
719
+ } : I);
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
+ }), ct("router-link", () => {
726
+ const a = bt({
726
727
  to: "",
727
728
  tag: "a",
728
729
  replace: !1,
@@ -732,65 +733,64 @@ 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(A.getCurrent()), m = o.value?.path || "/", g = String(a.to || ""), v = i ? {
739
+ isExactActive: yt(m, g, A.base),
740
+ isActive: mt(m, g, A.base),
741
+ isExternal: Z(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
+ St(() => "a,button{display:inline-block;}");
745
+ const S = et(a.class || ""), I = et(a.style || "");
746
+ if (!i) {
747
+ let p = null;
748
+ it(($) => {
757
749
  try {
758
- if (typeof _.subscribe == "function") {
759
- d = _.subscribe((u) => {
750
+ if (typeof A.subscribe == "function") {
751
+ c = A.subscribe((h) => {
760
752
  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);
753
+ h && typeof h == "object" && typeof h.path == "string" ? o.value = h : (y("router-link received invalid state", h), o.value = {
754
+ path: "/",
755
+ params: {},
756
+ query: {}
757
+ });
758
+ } catch (q) {
759
+ y("router-link subscription update failed", q);
764
760
  try {
765
- a.value = { path: "/", params: {}, query: {} };
761
+ o.value = {
762
+ path: "/",
763
+ params: {},
764
+ query: {}
765
+ };
766
766
  } catch {
767
767
  }
768
768
  }
769
769
  });
770
770
  try {
771
- const u = _.getCurrent();
772
- u && typeof u.path == "string" && (a.value = u);
773
- } catch (u) {
774
- m("router-link initial state sync failed", u);
771
+ const h = A.getCurrent();
772
+ h && typeof h.path == "string" && (o.value = h);
773
+ } catch (h) {
774
+ y("router-link initial state sync failed", h);
775
775
  }
776
- h = setInterval(() => {
776
+ p = setInterval(() => {
777
777
  try {
778
- const u = _.getCurrent();
779
- u && typeof u.path == "string" && JSON.stringify(a.value) !== JSON.stringify(u) && (a.value = u);
778
+ const h = A.getCurrent();
779
+ h && typeof h.path == "string" && JSON.stringify(o.value) !== JSON.stringify(h) && (o.value = h);
780
780
  } catch {
781
781
  }
782
782
  }, 100);
783
783
  }
784
- } catch (u) {
785
- m("router-link subscribe failed", u);
784
+ } catch (h) {
785
+ y("router-link subscribe failed", h);
786
786
  }
787
787
  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");
788
+ const h = $?._host;
789
+ if (typeof HTMLElement < "u" && h instanceof HTMLElement) {
790
+ const q = h.getAttribute("class"), N = h.getAttribute("style");
791
+ q && (S.value = q), N && (I.value = N), q !== null && h.removeAttribute("class"), N !== null && h.removeAttribute("style");
792
792
  try {
793
- E?._requestRender?.();
793
+ $?._requestRender?.();
794
794
  try {
795
795
  nt();
796
796
  } catch {
@@ -798,121 +798,103 @@ function Wt(t) {
798
798
  } catch {
799
799
  }
800
800
  }
801
- } catch (u) {
802
- m("router-link host migration failed", u);
801
+ } catch (h) {
802
+ y("router-link host migration failed", h);
803
+ }
804
+ }), st(() => {
805
+ if (typeof c == "function") try {
806
+ c();
807
+ } catch ($) {
808
+ y("router-link unsubscribe failed", $);
809
+ } finally {
810
+ c = void 0;
811
+ }
812
+ if (p) try {
813
+ clearInterval(p);
814
+ } catch ($) {
815
+ y("router-link sync interval cleanup failed", $);
816
+ } finally {
817
+ p = null;
803
818
  }
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
819
  });
822
820
  }
823
- const I = M(() => {
824
- if (c && l)
825
- return l.isExactActive;
821
+ const z = T(() => {
822
+ if (i && v) return v.isExactActive;
826
823
  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;
824
+ const p = A.base ?? "", $ = a.to || "";
825
+ return !o.value || typeof o.value.path != "string" ? !1 : yt(o.value.path, $, p);
826
+ } catch (p) {
827
+ return y("isExactActive computation error", p), !1;
831
828
  }
832
- }), W = M(() => {
833
- if (c && l)
834
- return l.isActive;
829
+ }), V = T(() => {
830
+ if (i && v) return v.isActive;
835
831
  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;
832
+ const p = A.base ?? "", $ = a.to || "";
833
+ return !o.value || typeof o.value.path != "string" ? !1 : a.exact ? z.value : mt(o.value.path, $, p);
834
+ } catch (p) {
835
+ return y("isActive computation error", p), !1;
840
836
  }
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;
837
+ }), X = T(() => {
838
+ const p = String(a.to || "");
839
+ if (ft(p)) return null;
840
+ if (Z(p)) return p;
841
+ const [$, h] = p.split("#"), [q, N] = ($ || "").split("?"), D = A.base ?? "";
842
+ let H = q || "/";
843
+ if (D && D !== "/") {
844
+ const s = E(D), l = E(H);
845
+ l.startsWith(s) ? H = l.slice(s.length) || "/" : H = l;
850
846
  }
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(() => ({
858
- ...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 {
847
+ return D + E(H || "/") + (N ? "?" + N : "") + (h ? "#" + h : "");
848
+ }), _ = T(() => {
849
+ const p = (S && S.value || a.class || "").split(/\s+/).filter(Boolean), $ = {};
850
+ for (const h of p) $[h] = !0;
851
+ return $;
852
+ }), W = T(() => ({
853
+ ..._.value,
854
+ [a.activeClass || "active"]: V.value,
855
+ [a.exactActiveClass || "exact-active"]: z.value
856
+ })), k = T(() => Object.keys(W.value).filter((p) => W.value[p]).join(" ")), G = T(() => a.tag || "a"), at = T(() => G.value === "button"), Y = T(() => z.value ? a.ariaCurrentValue : null), C = T(() => !!a.disabled), j = T(() => (Z(String(a.to || "")) || !!a.external) && G.value === "a"), M = T(() => I && I.value || a.style || ""), tt = (p) => {
857
+ if (!(p.defaultPrevented || p.button !== 0 || p.metaKey || p.altKey || p.ctrlKey || p.shiftKey)) {
858
+ if (C.value) {
859
+ p.preventDefault();
860
+ return;
882
861
  }
883
- m("Blocked unsafe javascript: URI in router-link.to");
884
- return;
862
+ if (ft(String(a.to || ""))) {
863
+ try {
864
+ p.preventDefault();
865
+ } catch {
866
+ }
867
+ y("Blocked unsafe javascript: URI in router-link.to");
868
+ return;
869
+ }
870
+ j.value || (p.preventDefault(), a.replace ? A.replace(a.to) : A.push(a.to));
885
871
  }
886
- K.value || (h.preventDefault(), o.replace ? _.replace(o.to) : _.push(o.to));
887
872
  };
888
- return j`
889
- ${$t().when(
890
- at.value,
891
- j`
873
+ return U`
874
+ ${Rt().when(at.value, U`
892
875
  <button
893
876
  part="button"
894
- class="${q.value}"
895
- style="${O.value || null}"
877
+ class="${k.value}"
878
+ style="${M.value || null}"
896
879
  aria-current="${Y.value}"
897
- disabled="${A.value ? "" : null}"
898
- aria-disabled="${A.value ? "true" : null}"
899
- tabindex="${A.value ? "-1" : null}"
880
+ disabled="${C.value ? "" : null}"
881
+ aria-disabled="${C.value ? "true" : null}"
882
+ tabindex="${C.value ? "-1" : null}"
900
883
  @click="${tt}"
901
884
  >
902
885
  <slot></slot>
903
886
  </button>
904
- `
905
- ).otherwise(j`
887
+ `).otherwise(U`
906
888
  <a
907
889
  part="link"
908
- href="${A.value ? null : D.value}"
909
- class="${q.value}"
910
- style="${O.value || null}"
890
+ href="${C.value ? null : X.value}"
891
+ class="${k.value}"
892
+ style="${M.value || null}"
911
893
  aria-current="${Y.value}"
912
- aria-disabled="${A.value ? "true" : null}"
913
- tabindex="${A.value ? "-1" : null}"
914
- target="${K.value ? "_blank" : null}"
915
- rel="${K.value ? "noopener noreferrer" : null}"
894
+ aria-disabled="${C.value ? "true" : null}"
895
+ tabindex="${C.value ? "-1" : null}"
896
+ target="${j.value ? "_blank" : null}"
897
+ rel="${j.value ? "noopener noreferrer" : null}"
916
898
  @click="${tt}"
917
899
  ><slot></slot
918
900
  ></a>
@@ -920,42 +902,42 @@ function Wt(t) {
920
902
  `;
921
903
  }), r;
922
904
  }
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;
905
+ function yt(t, r, f) {
906
+ if (Z(r)) return !1;
907
+ let a = (r.split("#")[0] || "/").split("?")[0];
908
+ if (f && f !== "/") {
909
+ const i = E(f), o = E(a);
910
+ o.startsWith(i) ? a = o.slice(i.length) || "/" : a = o;
929
911
  }
930
- const a = x(t), g = x(c);
931
- return a === g;
912
+ return E(t) === E(a);
932
913
  }
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;
914
+ function mt(t, r, f) {
915
+ if (Z(r)) return !1;
916
+ let a = (r.split("#")[0] || "/").split("?")[0];
917
+ if (f && f !== "/") {
918
+ const m = E(f), g = E(a);
919
+ g.startsWith(m) ? a = g.slice(m.length) || "/" : a = g;
939
920
  }
940
- const a = x(t), g = x(c);
941
- return g === "/" ? a === "/" : a === g ? !0 : a.startsWith(g.endsWith("/") ? g : g + "/");
921
+ const i = E(t), o = E(a);
922
+ return o === "/" ? i === "/" : i === o ? !0 : i.startsWith(o.endsWith("/") ? o : o + "/");
942
923
  }
943
924
  export {
944
- ht as DEFAULT_SCROLL_CONFIG,
945
- _ as activeRouterProxy,
946
- At as canonicalizeBase,
947
- _t as clearComponentCache,
925
+ ut as DEFAULT_SCROLL_CONFIG,
926
+ A as activeRouterProxy,
927
+ Ct as canonicalizeBase,
928
+ kt as clearComponentCache,
948
929
  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
930
+ zt as initRouter,
931
+ Z as isAbsoluteUrl,
932
+ ft as isDangerousScheme,
933
+ Q as matchRoute,
934
+ Ft as matchRouteSSR,
935
+ E as normalizePathForRoute,
936
+ ot as parseQuery,
937
+ _t as resolveRouteComponent,
938
+ Et as safeDecode,
939
+ $t as serializeQuery,
940
+ It as useRouter
960
941
  };
961
- //# sourceMappingURL=custom-elements-runtime.router.es.js.map
942
+
943
+ //# sourceMappingURL=custom-elements-runtime.router.es.js.map