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