@manyducks.co/dolla 2.0.0-alpha.0 → 2.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,29 +1,73 @@
1
- var yt = Object.defineProperty;
2
- var et = (r) => {
3
- throw TypeError(r);
1
+ var pt = Object.defineProperty;
2
+ var Ze = (n) => {
3
+ throw TypeError(n);
4
4
  };
5
- var wt = (r, e, t) => e in r ? yt(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t;
6
- var k = (r, e, t) => wt(r, typeof e != "symbol" ? e + "" : e, t), Ie = (r, e, t) => e.has(r) || et("Cannot " + t);
7
- var s = (r, e, t) => (Ie(r, e, "read from private field"), t ? t.call(r) : e.get(r)), f = (r, e, t) => e.has(r) ? et("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(r) : e.set(r, t), w = (r, e, t, n) => (Ie(r, e, "write to private field"), n ? n.call(r, t) : e.set(r, t), t), P = (r, e, t) => (Ie(r, e, "access private method"), t);
8
- var tt = (r, e, t, n) => ({
9
- set _(i) {
10
- w(r, e, i, t);
5
+ var mt = (n, e, t) => e in n ? pt(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t;
6
+ var k = (n, e, t) => mt(n, typeof e != "symbol" ? e + "" : e, t), Fe = (n, e, t) => e.has(n) || Ze("Cannot " + t);
7
+ var a = (n, e, t) => (Fe(n, e, "read from private field"), t ? t.call(n) : e.get(n)), u = (n, e, t) => e.has(n) ? Ze("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(n) : e.set(n, t), m = (n, e, t, r) => (Fe(n, e, "write to private field"), r ? r.call(n, t) : e.set(n, t), t), P = (n, e, t) => (Fe(n, e, "access private method"), t);
8
+ var et = (n, e, t, r) => ({
9
+ set _(s) {
10
+ m(n, e, s, t);
11
11
  },
12
12
  get _() {
13
- return s(r, e, n);
13
+ return a(n, e, r);
14
14
  }
15
15
  });
16
- import { i as ze, s as Ge, a as bt, d as Be, b as vt, c as Ze, e as H, f as Q, g as ct, h as $t, w as lt, j as Qe, r as Et, k as Lt, l as nt, m as kt, t as St, n as Pt, o as Rt, p as xt, q as rt, u as at, v as Mt, x as Ne, y as Te } from "./fragment-s33qZBzz.js";
17
- import { F as dn, A as gn, z as pn, C as mn, B as yn } from "./fragment-s33qZBzz.js";
18
- function ht(r, e) {
19
- return e.outlet();
16
+ import { h as tt, c as yt, i as Ie, s as Ge, a as wt, d as Be, b as bt, e as Xe, f as D, g as K, j as lt, k as vt, w as ht, P as ut, l as rt, m as $t, t as Et, n as kt, o as Lt, p as Pt, q as nt, r as at, u as St, v as Oe, x as Te, y as Rt, z as xt, A as Mt } from "./passthrough-DrtCifRF.js";
17
+ import { B as rr, C as nr, D as ar } from "./passthrough-DrtCifRF.js";
18
+ function Nt(n) {
19
+ return tt`
20
+ <div
21
+ style=${{
22
+ backgroundColor: "#880000",
23
+ color: "#fff",
24
+ padding: "2rem",
25
+ position: "fixed",
26
+ inset: 0,
27
+ fontSize: "20px"
28
+ }}
29
+ >
30
+ <h1 style=${{ marginBottom: "0.5rem" }}>The app has crashed</h1>
31
+ <p style=${{ marginBottom: "0.25rem" }}>
32
+ <span style=${{ fontFamily: "monospace" }}>${n.loggerName}</span>
33
+ ${yt(n.uid, tt`<span style=${{ fontFamily: "monospace", opacity: 0.5 }}> [uid: ${n.uid}]</span>`)}
34
+ ${" "}says:
35
+ </p>
36
+ <blockquote
37
+ style=${{
38
+ backgroundColor: "#991111",
39
+ padding: "0.25em",
40
+ borderRadius: "6px",
41
+ fontFamily: "monospace",
42
+ marginBottom: "1rem"
43
+ }}
44
+ >
45
+ <span
46
+ style=${{
47
+ display: "inline-block",
48
+ backgroundColor: "red",
49
+ padding: "0.1em 0.4em",
50
+ marginRight: "0.5em",
51
+ borderRadius: "4px",
52
+ fontSize: "0.9em",
53
+ fontWeight: "bold"
54
+ }}
55
+ >
56
+ ${n.error.name}
57
+ </span>
58
+ ${n.error.message}
59
+ </blockquote>
60
+
61
+ <p>Please see the browser console for details.</p>
62
+ </div>
63
+ `;
20
64
  }
21
- var K, Ve, T, q;
65
+ var J, _e, N, q;
22
66
  class Ot {
23
67
  constructor() {
24
- f(this, T);
25
- f(this, K, []);
26
- f(this, Ve, Nt());
68
+ u(this, N);
69
+ u(this, J, []);
70
+ u(this, _e, Tt());
27
71
  }
28
72
  /**
29
73
  * Adds a new middleware that will apply to subsequent requests.
@@ -32,127 +76,127 @@ class Ot {
32
76
  * @param middleware - A middleware function that will intercept requests.
33
77
  */
34
78
  use(e) {
35
- return s(this, K).push(e), () => {
36
- s(this, K).splice(s(this, K).indexOf(e), 1);
79
+ return a(this, J).push(e), () => {
80
+ a(this, J).splice(a(this, J).indexOf(e), 1);
37
81
  };
38
82
  }
39
83
  async get(e, t) {
40
- return P(this, T, q).call(this, "get", e, t);
84
+ return P(this, N, q).call(this, "get", e, t);
41
85
  }
42
86
  async put(e, t) {
43
- return P(this, T, q).call(this, "put", e, t);
87
+ return P(this, N, q).call(this, "put", e, t);
44
88
  }
45
89
  async patch(e, t) {
46
- return P(this, T, q).call(this, "patch", e, t);
90
+ return P(this, N, q).call(this, "patch", e, t);
47
91
  }
48
92
  async post(e, t) {
49
- return P(this, T, q).call(this, "post", e, t);
93
+ return P(this, N, q).call(this, "post", e, t);
50
94
  }
51
95
  async delete(e, t) {
52
- return P(this, T, q).call(this, "delete", e, t);
96
+ return P(this, N, q).call(this, "delete", e, t);
53
97
  }
54
98
  async head(e, t) {
55
- return P(this, T, q).call(this, "head", e, t);
99
+ return P(this, N, q).call(this, "head", e, t);
56
100
  }
57
101
  async options(e, t) {
58
- return P(this, T, q).call(this, "options", e, t);
102
+ return P(this, N, q).call(this, "options", e, t);
59
103
  }
60
104
  async trace(e, t) {
61
- return P(this, T, q).call(this, "trace", e, t);
105
+ return P(this, N, q).call(this, "trace", e, t);
62
106
  }
63
107
  }
64
- K = new WeakMap(), Ve = new WeakMap(), T = new WeakSet(), q = async function(e, t, n) {
65
- return At({
66
- ...n,
108
+ J = new WeakMap(), _e = new WeakMap(), N = new WeakSet(), q = async function(e, t, r) {
109
+ return jt({
110
+ ...r,
67
111
  method: e,
68
112
  uri: t,
69
- middleware: s(this, K),
70
- fetch: s(this, Ve)
113
+ middleware: a(this, J),
114
+ fetch: a(this, _e)
71
115
  });
72
116
  };
73
- function Nt() {
117
+ function Tt() {
74
118
  if (typeof window < "u" && window.fetch)
75
119
  return window.fetch.bind(window);
76
120
  if (typeof global < "u" && global.fetch)
77
121
  return global.fetch.bind(global);
78
122
  throw new Error("Running in neither browser nor node. Please run this app in one of the supported environments.");
79
123
  }
80
- class Tt extends Error {
124
+ class At extends Error {
81
125
  constructor(t) {
82
- const { status: n, statusText: i, method: a, uri: o } = t, d = `${n} ${i}: Request failed (${a.toUpperCase()} ${o})`;
83
- super(d);
126
+ const { status: r, statusText: s, method: i, uri: o } = t, f = `${r} ${s}: Request failed (${i.toUpperCase()} ${o})`;
127
+ super(f);
84
128
  k(this, "response");
85
129
  this.response = t;
86
130
  }
87
131
  }
88
- async function At(r) {
89
- const { headers: e, query: t, fetch: n, middleware: i } = r, a = {
90
- method: r.method,
91
- uri: r.uri,
132
+ async function jt(n) {
133
+ const { headers: e, query: t, fetch: r, middleware: s } = n, i = {
134
+ method: n.method,
135
+ uri: n.uri,
92
136
  get sameOrigin() {
93
- return !a.uri.startsWith("http");
137
+ return !i.uri.startsWith("http");
94
138
  },
95
139
  query: new URLSearchParams(),
96
140
  headers: new Headers(),
97
- body: r.body
141
+ body: n.body
98
142
  };
99
143
  if (e)
100
144
  if (e instanceof Map || e instanceof Headers)
101
- e.forEach((c, h) => {
102
- a.headers.set(h, c);
145
+ e.forEach((c, y) => {
146
+ i.headers.set(y, c);
103
147
  });
104
148
  else if (e != null && typeof e == "object" && !Array.isArray(e))
105
149
  for (const c in e) {
106
- const h = e[c];
107
- h instanceof Date ? a.headers.set(c, h.toISOString()) : h != null && a.headers.set(c, String(h));
150
+ const y = e[c];
151
+ y instanceof Date ? i.headers.set(c, y.toISOString()) : y != null && i.headers.set(c, String(y));
108
152
  }
109
153
  else
110
154
  throw new TypeError(`Unknown headers type. Got: ${e}`);
111
155
  if (t)
112
156
  if (t instanceof Map || t instanceof URLSearchParams)
113
- t.forEach((c, h) => {
114
- a.query.set(h, c);
157
+ t.forEach((c, y) => {
158
+ i.query.set(y, c);
115
159
  });
116
160
  else if (t != null && typeof t == "object" && !Array.isArray(t))
117
161
  for (const c in t) {
118
- const h = t[c];
119
- h instanceof Date ? a.query.set(c, h.toISOString()) : h != null && a.query.set(c, String(h));
162
+ const y = t[c];
163
+ y instanceof Date ? i.query.set(c, y.toISOString()) : y != null && i.query.set(c, String(y));
120
164
  }
121
165
  else
122
166
  throw new TypeError(`Unknown query params type. Got: ${t}`);
123
167
  let o;
124
- const d = async () => {
125
- const c = a.query.toString(), h = c.length > 0 ? a.uri + "?" + c : a.uri;
126
- let y;
127
- !a.headers.has("content-type") && ze(a.body) ? (a.headers.set("content-type", "application/json"), y = JSON.stringify(a.body)) : y = a.body;
128
- const b = await n(h, {
129
- method: a.method,
130
- headers: a.headers,
131
- body: y
132
- }), g = Object.fromEntries(b.headers.entries()), p = g["content-type"];
168
+ const f = async () => {
169
+ const c = i.query.toString(), y = c.length > 0 ? i.uri + "?" + c : i.uri;
170
+ let w;
171
+ !i.headers.has("content-type") && Ie(i.body) ? (i.headers.set("content-type", "application/json"), w = JSON.stringify(i.body)) : w = i.body;
172
+ const p = await r(y, {
173
+ method: i.method,
174
+ headers: i.headers,
175
+ body: w
176
+ }), d = Object.fromEntries(p.headers.entries()), b = d["content-type"];
133
177
  let $;
134
- p != null && p.includes("application/json") ? $ = await b.json() : p != null && p.includes("application/x-www-form-urlencoded") ? $ = await b.formData() : $ = await b.text(), o = {
135
- method: a.method,
136
- uri: a.uri,
137
- status: b.status,
138
- statusText: b.statusText,
139
- headers: g,
178
+ b != null && b.includes("application/json") ? $ = await p.json() : b != null && b.includes("application/x-www-form-urlencoded") ? $ = await p.formData() : $ = await p.text(), o = {
179
+ method: i.method,
180
+ uri: i.uri,
181
+ status: p.status,
182
+ statusText: p.statusText,
183
+ headers: d,
140
184
  body: $
141
185
  };
142
186
  };
143
- if (i.length > 0) {
144
- const c = (h = 0) => {
145
- const y = i[h], b = i[h + 1] ? c(h + 1) : d;
146
- return async () => y(a, async () => (await b(), o));
187
+ if (s.length > 0) {
188
+ const c = (y = 0) => {
189
+ const w = s[y], p = s[y + 1] ? c(y + 1) : f;
190
+ return async () => w(i, async () => (await p(), o));
147
191
  };
148
192
  await c()();
149
193
  } else
150
- await d();
194
+ await f();
151
195
  if (o.status < 200 || o.status >= 400)
152
- throw new Tt(o);
196
+ throw new At(o);
153
197
  return o;
154
198
  }
155
- class jt {
199
+ class Ct {
156
200
  constructor(e, t) {
157
201
  k(this, "dolla");
158
202
  k(this, "config");
@@ -161,16 +205,16 @@ class jt {
161
205
  }
162
206
  async load() {
163
207
  if (this.strings == null) {
164
- if (Ze(this.config.fetch)) {
208
+ if (Xe(this.config.fetch)) {
165
209
  const e = await this.config.fetch();
166
- if (ze(e))
210
+ if (Ie(e))
167
211
  this.strings = e;
168
212
  else
169
213
  throw new Error(`Fetch function did not return an object of language strings: ${e}`);
170
- } else if (H(this.config.path)) {
214
+ } else if (D(this.config.path)) {
171
215
  const e = await this.dolla.http.get(this.config.path);
172
216
  if (e.status >= 200 && e.status < 300)
173
- if (ze(e.body))
217
+ if (Ie(e.body))
174
218
  this.strings = e.body;
175
219
  else
176
220
  throw new Error(
@@ -185,65 +229,65 @@ class jt {
185
229
  return this.strings;
186
230
  }
187
231
  }
188
- var we, J, M, ie, be, ve, oe, $e, Fe, ut;
189
- class Ct {
232
+ var ye, Y, x, ie, we, be, se, ve, We, ft;
233
+ class qt {
190
234
  constructor(e) {
191
- f(this, Fe);
192
- f(this, we);
193
- f(this, J);
194
- f(this, M, /* @__PURE__ */ new Map());
195
- f(this, ie, []);
196
- f(this, be, "auto");
235
+ u(this, We);
236
+ u(this, ye);
237
+ u(this, Y);
238
+ u(this, x, /* @__PURE__ */ new Map());
239
+ u(this, ie, []);
240
+ u(this, we, "auto");
197
241
  k(this, "$current");
198
- f(this, ve);
199
- f(this, oe);
200
- f(this, $e);
201
- w(this, we, e), w(this, J, e.createLogger("dolla/language"));
202
- const [t, n] = Q(), [i, a] = Q();
203
- this.$current = t, w(this, ve, n), w(this, oe, i), w(this, $e, a), e.beforeMount(async () => {
204
- s(this, M).size > 0 && await this.setLanguage(s(this, be));
242
+ u(this, be);
243
+ u(this, se);
244
+ u(this, ve);
245
+ m(this, ye, e), m(this, Y, e.createLogger("dolla/language"));
246
+ const [t, r] = K(), [s, i] = K();
247
+ this.$current = t, m(this, be, r), m(this, se, s), m(this, ve, i), e.beforeMount(async () => {
248
+ a(this, x).size > 0 && await this.setLanguage(a(this, we));
205
249
  });
206
250
  }
207
251
  get supportedLanguages() {
208
- return [...s(this, M).keys()];
252
+ return [...a(this, x).keys()];
209
253
  }
210
254
  setup(e) {
211
255
  if (e.languages.forEach((t) => {
212
- s(this, M).set(t.name, new jt(t, s(this, we)));
256
+ a(this, x).set(t.name, new Ct(t, a(this, ye)));
213
257
  }), e.initialLanguage && e.initialLanguage !== "auto") {
214
- if (!e.languages.some((n) => n.name === e.initialLanguage))
258
+ if (!e.languages.some((r) => r.name === e.initialLanguage))
215
259
  throw new Error(`Initial language '${e.initialLanguage}' has no registered translation.`);
216
- w(this, be, e.initialLanguage);
260
+ m(this, we, e.initialLanguage);
217
261
  }
218
- s(this, J).info(
219
- `${s(this, M).size} language${s(this, M).size === 1 ? "" : "s"} supported: '${[...s(this, M).keys()].join("', '")}'`
262
+ a(this, Y).info(
263
+ `${a(this, x).size} language${a(this, x).size === 1 ? "" : "s"} supported: '${[...a(this, x).keys()].join("', '")}'`
220
264
  );
221
265
  }
222
266
  async setLanguage(e) {
223
- var i;
267
+ var s;
224
268
  let t;
225
269
  if (e === "auto") {
226
- let a = [];
270
+ let i = [];
227
271
  if (typeof navigator == "object") {
228
272
  const o = navigator;
229
- ((i = o.languages) == null ? void 0 : i.length) > 0 ? a.push(...o.languages) : o.language ? a.push(o.language) : o.browserLanguage ? a.push(o.browserLanguage) : o.userLanguage && a.push(o.userLanguage);
273
+ ((s = o.languages) == null ? void 0 : s.length) > 0 ? i.push(...o.languages) : o.language ? i.push(o.language) : o.browserLanguage ? i.push(o.browserLanguage) : o.userLanguage && i.push(o.userLanguage);
230
274
  }
231
- for (const o of a)
232
- s(this, M).has(o) && (t = o);
275
+ for (const o of i)
276
+ a(this, x).has(o) && (t = o);
233
277
  } else
234
- s(this, M).has(e) && (t = e);
278
+ a(this, x).has(e) && (t = e);
235
279
  if (t == null) {
236
- const a = s(this, M).keys().next().value;
237
- a && (t = a);
280
+ const i = a(this, x).keys().next().value;
281
+ i && (t = i);
238
282
  }
239
- if (!t || !s(this, M).has(t))
283
+ if (!t || !a(this, x).has(t))
240
284
  throw new Error(`Language '${e}' is not configured for this app.`);
241
- const n = s(this, M).get(t);
285
+ const r = a(this, x).get(t);
242
286
  try {
243
- const a = await n.load();
244
- s(this, $e).call(this, a), s(this, ve).call(this, t), s(this, J).info("set language to " + t);
245
- } catch (a) {
246
- a instanceof Error && s(this, J).crash(a);
287
+ const i = await r.load();
288
+ a(this, ve).call(this, i), a(this, be).call(this, t), a(this, Y).info("set language to " + t);
289
+ } catch (i) {
290
+ i instanceof Error && a(this, Y).crash(i);
247
291
  }
248
292
  }
249
293
  /**
@@ -255,74 +299,74 @@ class Ct {
255
299
  t(e, t) {
256
300
  if (this === void 0)
257
301
  throw new Error(
258
- `The 't' function cannot be destructured. If you need a standalone version you can import it from the package like so: 'import { t } from "@manyducks.co/dolla"'`
302
+ `The 't' function cannot be destructured. If you need a standalone version you can import it like so: 'import { t } from "@manyducks.co/dolla"'`
259
303
  );
260
304
  if (!this.$current.get())
261
305
  return Ut;
262
- const n = P(this, Fe, ut).call(this, e, t);
263
- if (n)
264
- return n;
306
+ const r = P(this, We, ft).call(this, e, t);
307
+ if (r)
308
+ return r;
265
309
  if (t) {
266
- const a = {};
267
- for (const [d, c] of Object.entries(t))
268
- bt(c) && (a[d] = c);
269
- const o = Object.entries(a);
310
+ const i = {};
311
+ for (const [f, c] of Object.entries(t))
312
+ wt(c) && (i[f] = c);
313
+ const o = Object.entries(i);
270
314
  if (o.length > 0) {
271
- const d = o.map((h) => h[1]), c = Be([s(this, oe), ...d], (h, ...y) => {
272
- const b = y.map(($, N) => o[N]), g = {
315
+ const f = o.map((y) => y[1]), c = Be([a(this, se), ...f], (y, ...w) => {
316
+ const p = w.map(($, j) => o[j]), d = {
273
317
  ...t
274
318
  };
275
- for (let $ = 0; $ < b.length; $++) {
276
- const N = b[$][0];
277
- g[N] = y[$];
319
+ for (let $ = 0; $ < p.length; $++) {
320
+ const j = p[$][0];
321
+ d[j] = w[$];
278
322
  }
279
- const p = it(h, e) || `[NO TRANSLATION: ${e}]`;
280
- return st(p, g);
323
+ const b = st(y, e) || `[NO TRANSLATION: ${e}]`;
324
+ return it(b, d);
281
325
  });
282
- return s(this, ie).push([e, t, c]), c;
326
+ return a(this, ie).push([e, t, c]), c;
283
327
  }
284
328
  }
285
- const i = Be([s(this, oe)], (a) => {
286
- let o = it(a, e) || `[NO TRANSLATION: ${e}]`;
287
- return t && (o = st(o, t)), o;
329
+ const s = Be([a(this, se)], (i) => {
330
+ let o = st(i, e) || `[NO TRANSLATION: ${e}]`;
331
+ return t && (o = it(o, t)), o;
288
332
  });
289
- return s(this, ie).push([e, t, i]), i;
333
+ return a(this, ie).push([e, t, s]), s;
290
334
  }
291
335
  }
292
- we = new WeakMap(), J = new WeakMap(), M = new WeakMap(), ie = new WeakMap(), be = new WeakMap(), ve = new WeakMap(), oe = new WeakMap(), $e = new WeakMap(), Fe = new WeakSet(), ut = function(e, t) {
293
- for (const n of s(this, ie))
294
- if (n[0] === e && vt(n[1], t))
295
- return n[2];
336
+ ye = new WeakMap(), Y = new WeakMap(), x = new WeakMap(), ie = new WeakMap(), we = new WeakMap(), be = new WeakMap(), se = new WeakMap(), ve = new WeakMap(), We = new WeakSet(), ft = function(e, t) {
337
+ for (const r of a(this, ie))
338
+ if (r[0] === e && bt(r[1], t))
339
+ return r[2];
296
340
  };
297
341
  const Ut = Ge("[NO LANGUAGE SET]");
298
- function st(r, e) {
342
+ function it(n, e) {
299
343
  for (const t in e)
300
- r = r.replace(`{{${t}}}`, String(e[t]));
301
- return r;
344
+ n = n.replace(`{{${t}}}`, String(e[t]));
345
+ return n;
302
346
  }
303
- function it(r, e) {
304
- const t = String(e).split(/[\.\[\]]/).filter((i) => i.trim() !== "");
305
- let n = r;
347
+ function st(n, e) {
348
+ const t = String(e).split(/[\.\[\]]/).filter((s) => s.trim() !== "");
349
+ let r = n;
306
350
  for (; t.length > 0; ) {
307
- const i = t.shift();
308
- n != null ? n = n[i] : n = void 0;
351
+ const s = t.shift();
352
+ r != null ? r = r[s] : r = void 0;
309
353
  }
310
- return n;
354
+ return r;
311
355
  }
312
- var Y, Ee, V, F, ce, _, le, Ae;
313
- class qt {
356
+ var X, $e, H, _, oe, U, ce, Ae;
357
+ class Vt {
314
358
  constructor(e) {
315
- f(this, le);
316
- f(this, Y);
317
- f(this, Ee);
359
+ u(this, ce);
360
+ u(this, X);
361
+ u(this, $e);
318
362
  // Keyed updates ensure only the most recent callback queued with a certain key
319
363
  // will be called, keeping DOM operations to a minimum.
320
- f(this, V, /* @__PURE__ */ new Map());
364
+ u(this, H, /* @__PURE__ */ new Map());
321
365
  // All unkeyed updates are run on every batch.
322
- f(this, F, []);
323
- f(this, ce, []);
324
- f(this, _, !1);
325
- w(this, Y, e), w(this, Ee, e.createLogger("dolla/render"));
366
+ u(this, _, []);
367
+ u(this, oe, []);
368
+ u(this, U, !1);
369
+ m(this, X, e), m(this, $e, e.createLogger("dolla/render"));
326
370
  }
327
371
  /**
328
372
  * Queues a callback to run in the next render batch.
@@ -330,12 +374,12 @@ class qt {
330
374
  * Returns a Promise that resolves once the callback has run.
331
375
  */
332
376
  update(e, t) {
333
- return new Promise((n) => {
334
- t ? s(this, V).set(t, () => {
335
- e(), n();
336
- }) : s(this, F).push(() => {
337
- e(), n();
338
- }), !s(this, _) && s(this, Y).isMounted && (w(this, _, !0), P(this, le, Ae).call(this));
377
+ return new Promise((r) => {
378
+ t ? a(this, H).set(t, () => {
379
+ e(), r();
380
+ }) : a(this, _).push(() => {
381
+ e(), r();
382
+ }), !a(this, U) && a(this, X).isMounted && (m(this, U, !0), P(this, ce, Ae).call(this));
339
383
  });
340
384
  }
341
385
  /**
@@ -345,51 +389,51 @@ class qt {
345
389
  */
346
390
  async read(e) {
347
391
  return new Promise((t) => {
348
- s(this, ce).push(() => {
392
+ a(this, oe).push(() => {
349
393
  e(), t();
350
- }), !s(this, _) && s(this, Y).isMounted && (w(this, _, !0), P(this, le, Ae).call(this));
394
+ }), !a(this, U) && a(this, X).isMounted && (m(this, U, !0), P(this, ce, Ae).call(this));
351
395
  });
352
396
  }
353
397
  }
354
- Y = new WeakMap(), Ee = new WeakMap(), V = new WeakMap(), F = new WeakMap(), ce = new WeakMap(), _ = new WeakMap(), le = new WeakSet(), Ae = function() {
355
- const e = s(this, V).size + s(this, F).length;
356
- if ((!s(this, Y).isMounted || e === 0) && w(this, _, !1), !s(this, _)) {
357
- for (const t of s(this, ce))
398
+ X = new WeakMap(), $e = new WeakMap(), H = new WeakMap(), _ = new WeakMap(), oe = new WeakMap(), U = new WeakMap(), ce = new WeakSet(), Ae = function() {
399
+ const e = a(this, H).size + a(this, _).length;
400
+ if ((!a(this, X).isMounted || e === 0) && m(this, U, !1), !a(this, U)) {
401
+ for (const t of a(this, oe))
358
402
  t();
359
- w(this, ce, []);
403
+ m(this, oe, []);
360
404
  return;
361
405
  }
362
406
  requestAnimationFrame(() => {
363
- s(this, Ee).info(`Batching ${s(this, V).size + s(this, F).length} queued DOM update(s).`);
364
- for (const t of s(this, V).values())
407
+ a(this, $e).info(`Batching ${a(this, H).size + a(this, _).length} queued DOM update(s).`);
408
+ for (const t of a(this, H).values())
365
409
  t();
366
- s(this, V).clear();
367
- for (const t of s(this, F))
410
+ a(this, H).clear();
411
+ for (const t of a(this, _))
368
412
  t();
369
- w(this, F, []), P(this, le, Ae).call(this);
413
+ m(this, _, []), P(this, ce, Ae).call(this);
370
414
  });
371
415
  };
372
- function de() {
373
- return de = Object.assign || function(r) {
416
+ function fe() {
417
+ return fe = Object.assign || function(n) {
374
418
  for (var e = 1; e < arguments.length; e++) {
375
419
  var t = arguments[e];
376
- for (var n in t)
377
- Object.prototype.hasOwnProperty.call(t, n) && (r[n] = t[n]);
420
+ for (var r in t)
421
+ Object.prototype.hasOwnProperty.call(t, r) && (n[r] = t[r]);
378
422
  }
379
- return r;
380
- }, de.apply(this, arguments);
423
+ return n;
424
+ }, fe.apply(this, arguments);
381
425
  }
382
- var C;
383
- (function(r) {
384
- r.Pop = "POP", r.Push = "PUSH", r.Replace = "REPLACE";
385
- })(C || (C = {}));
386
- var qe = process.env.NODE_ENV !== "production" ? function(r) {
387
- return Object.freeze(r);
388
- } : function(r) {
389
- return r;
426
+ var A;
427
+ (function(n) {
428
+ n.Pop = "POP", n.Push = "PUSH", n.Replace = "REPLACE";
429
+ })(A || (A = {}));
430
+ var Ue = process.env.NODE_ENV !== "production" ? function(n) {
431
+ return Object.freeze(n);
432
+ } : function(n) {
433
+ return n;
390
434
  };
391
- function je(r, e) {
392
- if (!r) {
435
+ function je(n, e) {
436
+ if (!n) {
393
437
  typeof console < "u" && console.warn(e);
394
438
  try {
395
439
  throw new Error(e);
@@ -397,36 +441,36 @@ function je(r, e) {
397
441
  }
398
442
  }
399
443
  }
400
- var _e = "beforeunload", _t = "hashchange", ft = "popstate";
401
- function Dt(r) {
402
- r === void 0 && (r = {});
403
- var e = r, t = e.window, n = t === void 0 ? document.defaultView : t, i = n.history;
404
- function a() {
405
- var m = n.location, l = m.pathname, u = m.search, v = m.hash, E = i.state || {};
406
- return [E.idx, qe({
444
+ var Ve = "beforeunload", Dt = "hashchange", dt = "popstate";
445
+ function Ht(n) {
446
+ n === void 0 && (n = {});
447
+ var e = n, t = e.window, r = t === void 0 ? document.defaultView : t, s = r.history;
448
+ function i() {
449
+ var g = r.location, l = g.pathname, h = g.search, v = g.hash, E = s.state || {};
450
+ return [E.idx, Ue({
407
451
  pathname: l,
408
- search: u,
452
+ search: h,
409
453
  hash: v,
410
454
  state: E.usr || null,
411
455
  key: E.key || "default"
412
456
  })];
413
457
  }
414
458
  var o = null;
415
- function d() {
459
+ function f() {
416
460
  if (o)
417
- p.call(o), o = null;
461
+ b.call(o), o = null;
418
462
  else {
419
- var m = C.Pop, l = a(), u = l[0], v = l[1];
420
- if (p.length)
421
- if (u != null) {
422
- var E = y - u;
463
+ var g = A.Pop, l = i(), h = l[0], v = l[1];
464
+ if (b.length)
465
+ if (h != null) {
466
+ var E = w - h;
423
467
  E && (o = {
424
- action: m,
468
+ action: g,
425
469
  location: v,
426
470
  retry: function() {
427
- D(E * -1);
471
+ V(E * -1);
428
472
  }
429
- }, D(E));
473
+ }, V(E));
430
474
  } else
431
475
  process.env.NODE_ENV !== "production" && je(
432
476
  !1,
@@ -436,135 +480,135 @@ function Dt(r) {
436
480
  "You are trying to block a POP navigation to a location that was not created by the history library. The block will fail silently in production, but in general you should do all navigation with the history library (instead of using window.history.pushState directly) to avoid this situation."
437
481
  );
438
482
  else
439
- re(m);
483
+ re(g);
440
484
  }
441
485
  }
442
- n.addEventListener(ft, d);
443
- var c = C.Pop, h = a(), y = h[0], b = h[1], g = He(), p = He();
444
- y == null && (y = 0, i.replaceState(de({}, i.state, {
445
- idx: y
486
+ r.addEventListener(dt, f);
487
+ var c = A.Pop, y = i(), w = y[0], p = y[1], d = He(), b = He();
488
+ w == null && (w = 0, s.replaceState(fe({}, s.state, {
489
+ idx: w
446
490
  }), ""));
447
- function $(m) {
448
- return typeof m == "string" ? m : Ce(m);
491
+ function $(g) {
492
+ return typeof g == "string" ? g : Ce(g);
449
493
  }
450
- function N(m, l) {
451
- return l === void 0 && (l = null), qe(de({
452
- pathname: b.pathname,
494
+ function j(g, l) {
495
+ return l === void 0 && (l = null), Ue(fe({
496
+ pathname: p.pathname,
453
497
  hash: "",
454
498
  search: ""
455
- }, typeof m == "string" ? Ke(m) : m, {
499
+ }, typeof g == "string" ? Qe(g) : g, {
456
500
  state: l,
457
- key: dt()
501
+ key: gt()
458
502
  }));
459
503
  }
460
- function ge(m, l) {
504
+ function de(g, l) {
461
505
  return [{
462
- usr: m.state,
463
- key: m.key,
506
+ usr: g.state,
507
+ key: g.key,
464
508
  idx: l
465
- }, $(m)];
509
+ }, $(g)];
466
510
  }
467
- function pe(m, l, u) {
468
- return !p.length || (p.call({
469
- action: m,
511
+ function ge(g, l, h) {
512
+ return !b.length || (b.call({
513
+ action: g,
470
514
  location: l,
471
- retry: u
515
+ retry: h
472
516
  }), !1);
473
517
  }
474
- function re(m) {
475
- c = m;
476
- var l = a();
477
- y = l[0], b = l[1], g.call({
518
+ function re(g) {
519
+ c = g;
520
+ var l = i();
521
+ w = l[0], p = l[1], d.call({
478
522
  action: c,
479
- location: b
523
+ location: p
480
524
  });
481
525
  }
482
- function ae(m, l) {
483
- var u = C.Push, v = N(m, l);
526
+ function ne(g, l) {
527
+ var h = A.Push, v = j(g, l);
484
528
  function E() {
485
- ae(m, l);
529
+ ne(g, l);
486
530
  }
487
- if (pe(u, v, E)) {
488
- var R = ge(v, y + 1), O = R[0], A = R[1];
531
+ if (ge(h, v, E)) {
532
+ var S = de(v, w + 1), M = S[0], O = S[1];
489
533
  try {
490
- i.pushState(O, "", A);
534
+ s.pushState(M, "", O);
491
535
  } catch {
492
- n.location.assign(A);
536
+ r.location.assign(O);
493
537
  }
494
- re(u);
538
+ re(h);
495
539
  }
496
540
  }
497
- function me(m, l) {
498
- var u = C.Replace, v = N(m, l);
541
+ function pe(g, l) {
542
+ var h = A.Replace, v = j(g, l);
499
543
  function E() {
500
- me(m, l);
544
+ pe(g, l);
501
545
  }
502
- if (pe(u, v, E)) {
503
- var R = ge(v, y), O = R[0], A = R[1];
504
- i.replaceState(O, "", A), re(u);
546
+ if (ge(h, v, E)) {
547
+ var S = de(v, w), M = S[0], O = S[1];
548
+ s.replaceState(M, "", O), re(h);
505
549
  }
506
550
  }
507
- function D(m) {
508
- i.go(m);
551
+ function V(g) {
552
+ s.go(g);
509
553
  }
510
- var B = {
554
+ var Q = {
511
555
  get action() {
512
556
  return c;
513
557
  },
514
558
  get location() {
515
- return b;
559
+ return p;
516
560
  },
517
561
  createHref: $,
518
- push: ae,
519
- replace: me,
520
- go: D,
562
+ push: ne,
563
+ replace: pe,
564
+ go: V,
521
565
  back: function() {
522
- D(-1);
566
+ V(-1);
523
567
  },
524
568
  forward: function() {
525
- D(1);
569
+ V(1);
526
570
  },
527
571
  listen: function(l) {
528
- return g.push(l);
572
+ return d.push(l);
529
573
  },
530
574
  block: function(l) {
531
- var u = p.push(l);
532
- return p.length === 1 && n.addEventListener(_e, De), function() {
533
- u(), p.length || n.removeEventListener(_e, De);
575
+ var h = b.push(l);
576
+ return b.length === 1 && r.addEventListener(Ve, De), function() {
577
+ h(), b.length || r.removeEventListener(Ve, De);
534
578
  };
535
579
  }
536
580
  };
537
- return B;
581
+ return Q;
538
582
  }
539
- function Ht(r) {
540
- r === void 0 && (r = {});
541
- var e = r, t = e.window, n = t === void 0 ? document.defaultView : t, i = n.history;
542
- function a() {
543
- var l = Ke(n.location.hash.substr(1)), u = l.pathname, v = u === void 0 ? "/" : u, E = l.search, R = E === void 0 ? "" : E, O = l.hash, A = O === void 0 ? "" : O, U = i.state || {};
544
- return [U.idx, qe({
583
+ function _t(n) {
584
+ n === void 0 && (n = {});
585
+ var e = n, t = e.window, r = t === void 0 ? document.defaultView : t, s = r.history;
586
+ function i() {
587
+ var l = Qe(r.location.hash.substr(1)), h = l.pathname, v = h === void 0 ? "/" : h, E = l.search, S = E === void 0 ? "" : E, M = l.hash, O = M === void 0 ? "" : M, C = s.state || {};
588
+ return [C.idx, Ue({
545
589
  pathname: v,
546
- search: R,
547
- hash: A,
548
- state: U.usr || null,
549
- key: U.key || "default"
590
+ search: S,
591
+ hash: O,
592
+ state: C.usr || null,
593
+ key: C.key || "default"
550
594
  })];
551
595
  }
552
596
  var o = null;
553
- function d() {
597
+ function f() {
554
598
  if (o)
555
- p.call(o), o = null;
599
+ b.call(o), o = null;
556
600
  else {
557
- var l = C.Pop, u = a(), v = u[0], E = u[1];
558
- if (p.length)
601
+ var l = A.Pop, h = i(), v = h[0], E = h[1];
602
+ if (b.length)
559
603
  if (v != null) {
560
- var R = y - v;
561
- R && (o = {
604
+ var S = w - v;
605
+ S && (o = {
562
606
  action: l,
563
607
  location: E,
564
608
  retry: function() {
565
- B(R * -1);
609
+ Q(S * -1);
566
610
  }
567
- }, B(R));
611
+ }, Q(S));
568
612
  } else
569
613
  process.env.NODE_ENV !== "production" && je(
570
614
  !1,
@@ -574,361 +618,363 @@ function Ht(r) {
574
618
  "You are trying to block a POP navigation to a location that was not created by the history library. The block will fail silently in production, but in general you should do all navigation with the history library (instead of using window.history.pushState directly) to avoid this situation."
575
619
  );
576
620
  else
577
- ae(l);
621
+ ne(l);
578
622
  }
579
623
  }
580
- n.addEventListener(ft, d), n.addEventListener(_t, function() {
581
- var l = a(), u = l[1];
582
- Ce(u) !== Ce(b) && d();
624
+ r.addEventListener(dt, f), r.addEventListener(Dt, function() {
625
+ var l = i(), h = l[1];
626
+ Ce(h) !== Ce(p) && f();
583
627
  });
584
- var c = C.Pop, h = a(), y = h[0], b = h[1], g = He(), p = He();
585
- y == null && (y = 0, i.replaceState(de({}, i.state, {
586
- idx: y
628
+ var c = A.Pop, y = i(), w = y[0], p = y[1], d = He(), b = He();
629
+ w == null && (w = 0, s.replaceState(fe({}, s.state, {
630
+ idx: w
587
631
  }), ""));
588
632
  function $() {
589
- var l = document.querySelector("base"), u = "";
633
+ var l = document.querySelector("base"), h = "";
590
634
  if (l && l.getAttribute("href")) {
591
- var v = n.location.href, E = v.indexOf("#");
592
- u = E === -1 ? v : v.slice(0, E);
635
+ var v = r.location.href, E = v.indexOf("#");
636
+ h = E === -1 ? v : v.slice(0, E);
593
637
  }
594
- return u;
638
+ return h;
595
639
  }
596
- function N(l) {
640
+ function j(l) {
597
641
  return $() + "#" + (typeof l == "string" ? l : Ce(l));
598
642
  }
599
- function ge(l, u) {
600
- return u === void 0 && (u = null), qe(de({
601
- pathname: b.pathname,
643
+ function de(l, h) {
644
+ return h === void 0 && (h = null), Ue(fe({
645
+ pathname: p.pathname,
602
646
  hash: "",
603
647
  search: ""
604
- }, typeof l == "string" ? Ke(l) : l, {
605
- state: u,
606
- key: dt()
648
+ }, typeof l == "string" ? Qe(l) : l, {
649
+ state: h,
650
+ key: gt()
607
651
  }));
608
652
  }
609
- function pe(l, u) {
653
+ function ge(l, h) {
610
654
  return [{
611
655
  usr: l.state,
612
656
  key: l.key,
613
- idx: u
614
- }, N(l)];
657
+ idx: h
658
+ }, j(l)];
615
659
  }
616
- function re(l, u, v) {
617
- return !p.length || (p.call({
660
+ function re(l, h, v) {
661
+ return !b.length || (b.call({
618
662
  action: l,
619
- location: u,
663
+ location: h,
620
664
  retry: v
621
665
  }), !1);
622
666
  }
623
- function ae(l) {
667
+ function ne(l) {
624
668
  c = l;
625
- var u = a();
626
- y = u[0], b = u[1], g.call({
669
+ var h = i();
670
+ w = h[0], p = h[1], d.call({
627
671
  action: c,
628
- location: b
672
+ location: p
629
673
  });
630
674
  }
631
- function me(l, u) {
632
- var v = C.Push, E = ge(l, u);
633
- function R() {
634
- me(l, u);
675
+ function pe(l, h) {
676
+ var v = A.Push, E = de(l, h);
677
+ function S() {
678
+ pe(l, h);
635
679
  }
636
- if (process.env.NODE_ENV !== "production" && je(E.pathname.charAt(0) === "/", "Relative pathnames are not supported in hash history.push(" + JSON.stringify(l) + ")"), re(v, E, R)) {
637
- var O = pe(E, y + 1), A = O[0], U = O[1];
680
+ if (process.env.NODE_ENV !== "production" && je(E.pathname.charAt(0) === "/", "Relative pathnames are not supported in hash history.push(" + JSON.stringify(l) + ")"), re(v, E, S)) {
681
+ var M = ge(E, w + 1), O = M[0], C = M[1];
638
682
  try {
639
- i.pushState(A, "", U);
683
+ s.pushState(O, "", C);
640
684
  } catch {
641
- n.location.assign(U);
685
+ r.location.assign(C);
642
686
  }
643
- ae(v);
687
+ ne(v);
644
688
  }
645
689
  }
646
- function D(l, u) {
647
- var v = C.Replace, E = ge(l, u);
648
- function R() {
649
- D(l, u);
690
+ function V(l, h) {
691
+ var v = A.Replace, E = de(l, h);
692
+ function S() {
693
+ V(l, h);
650
694
  }
651
- if (process.env.NODE_ENV !== "production" && je(E.pathname.charAt(0) === "/", "Relative pathnames are not supported in hash history.replace(" + JSON.stringify(l) + ")"), re(v, E, R)) {
652
- var O = pe(E, y), A = O[0], U = O[1];
653
- i.replaceState(A, "", U), ae(v);
695
+ if (process.env.NODE_ENV !== "production" && je(E.pathname.charAt(0) === "/", "Relative pathnames are not supported in hash history.replace(" + JSON.stringify(l) + ")"), re(v, E, S)) {
696
+ var M = ge(E, w), O = M[0], C = M[1];
697
+ s.replaceState(O, "", C), ne(v);
654
698
  }
655
699
  }
656
- function B(l) {
657
- i.go(l);
700
+ function Q(l) {
701
+ s.go(l);
658
702
  }
659
- var m = {
703
+ var g = {
660
704
  get action() {
661
705
  return c;
662
706
  },
663
707
  get location() {
664
- return b;
708
+ return p;
665
709
  },
666
- createHref: N,
667
- push: me,
668
- replace: D,
669
- go: B,
710
+ createHref: j,
711
+ push: pe,
712
+ replace: V,
713
+ go: Q,
670
714
  back: function() {
671
- B(-1);
715
+ Q(-1);
672
716
  },
673
717
  forward: function() {
674
- B(1);
718
+ Q(1);
675
719
  },
676
- listen: function(u) {
677
- return g.push(u);
720
+ listen: function(h) {
721
+ return d.push(h);
678
722
  },
679
- block: function(u) {
680
- var v = p.push(u);
681
- return p.length === 1 && n.addEventListener(_e, De), function() {
682
- v(), p.length || n.removeEventListener(_e, De);
723
+ block: function(h) {
724
+ var v = b.push(h);
725
+ return b.length === 1 && r.addEventListener(Ve, De), function() {
726
+ v(), b.length || r.removeEventListener(Ve, De);
683
727
  };
684
728
  }
685
729
  };
686
- return m;
730
+ return g;
687
731
  }
688
- function De(r) {
689
- r.preventDefault(), r.returnValue = "";
732
+ function De(n) {
733
+ n.preventDefault(), n.returnValue = "";
690
734
  }
691
735
  function He() {
692
- var r = [];
736
+ var n = [];
693
737
  return {
694
738
  get length() {
695
- return r.length;
739
+ return n.length;
696
740
  },
697
741
  push: function(t) {
698
- return r.push(t), function() {
699
- r = r.filter(function(n) {
700
- return n !== t;
742
+ return n.push(t), function() {
743
+ n = n.filter(function(r) {
744
+ return r !== t;
701
745
  });
702
746
  };
703
747
  },
704
748
  call: function(t) {
705
- r.forEach(function(n) {
706
- return n && n(t);
749
+ n.forEach(function(r) {
750
+ return r && r(t);
707
751
  });
708
752
  }
709
753
  };
710
754
  }
711
- function dt() {
755
+ function gt() {
712
756
  return Math.random().toString(36).substr(2, 8);
713
757
  }
714
- function Ce(r) {
715
- var e = r.pathname, t = e === void 0 ? "/" : e, n = r.search, i = n === void 0 ? "" : n, a = r.hash, o = a === void 0 ? "" : a;
716
- return i && i !== "?" && (t += i.charAt(0) === "?" ? i : "?" + i), o && o !== "#" && (t += o.charAt(0) === "#" ? o : "#" + o), t;
758
+ function Ce(n) {
759
+ var e = n.pathname, t = e === void 0 ? "/" : e, r = n.search, s = r === void 0 ? "" : r, i = n.hash, o = i === void 0 ? "" : i;
760
+ return s && s !== "?" && (t += s.charAt(0) === "?" ? s : "?" + s), o && o !== "#" && (t += o.charAt(0) === "#" ? o : "#" + o), t;
717
761
  }
718
- function Ke(r) {
762
+ function Qe(n) {
719
763
  var e = {};
720
- if (r) {
721
- var t = r.indexOf("#");
722
- t >= 0 && (e.hash = r.substr(t), r = r.substr(0, t));
723
- var n = r.indexOf("?");
724
- n >= 0 && (e.search = r.substr(n), r = r.substr(0, n)), r && (e.pathname = r);
764
+ if (n) {
765
+ var t = n.indexOf("#");
766
+ t >= 0 && (e.hash = n.substr(t), n = n.substr(0, t));
767
+ var r = n.indexOf("?");
768
+ r >= 0 && (e.search = n.substr(r), n = n.substr(0, r)), n && (e.pathname = n);
725
769
  }
726
770
  return e;
727
771
  }
728
- function ye(r) {
729
- return ct(r, "Expected `path` to be a string. Got type: %t, value: %v"), r.split("/").map((e) => e.trim()).filter((e) => e !== "");
772
+ function me(n) {
773
+ return lt(n, "Expected `path` to be a string. Got type: %t, value: %v"), n.split("/").map((e) => e.trim()).filter((e) => e !== "");
730
774
  }
731
- function se(r) {
775
+ function ae(n) {
732
776
  var t;
733
- $t(
734
- (n) => Ze(n == null ? void 0 : n.toString),
735
- r,
777
+ vt(
778
+ (r) => Xe(r == null ? void 0 : r.toString),
779
+ n,
736
780
  "Expected `parts` to be an array of objects with a .toString() method. Got type: %t, value: %v"
737
- ), r = r.filter((n) => n).flatMap(String);
738
- let e = (t = r.shift()) == null ? void 0 : t.toString();
781
+ ), n = n.filter((r) => r).flatMap(String);
782
+ let e = (t = n.shift()) == null ? void 0 : t.toString();
739
783
  if (e) {
740
- for (const n of r.map((i) => i.toString()))
741
- n.startsWith(".") ? e = Ue(e, n) : e[e.length - 1] !== "/" ? n[0] !== "/" ? e += "/" + n : e += n : n[0] === "/" ? e += n.slice(1) : e += n;
784
+ for (const r of n.map((s) => s.toString()))
785
+ r.startsWith(".") ? e = qe(e, r) : e[e.length - 1] !== "/" ? r[0] !== "/" ? e += "/" + r : e += r : r[0] === "/" ? e += r.slice(1) : e += r;
742
786
  e && e !== "/" && e.endsWith("/") && (e = e.slice(0, e.length - 1));
743
787
  }
744
788
  return e ?? "";
745
789
  }
746
- function Ue(r, e) {
747
- if (ct(r, "Expected `base` to be a string. Got type: %t, value: %v"), e == null && (e = r, r = ""), e.startsWith("/"))
790
+ function qe(n, e) {
791
+ if (lt(n, "Expected `base` to be a string. Got type: %t, value: %v"), e == null && (e = n, n = ""), e.startsWith("/"))
748
792
  return e;
749
- let t = r;
793
+ let t = n;
750
794
  for (; ; )
751
795
  if (e.startsWith("..")) {
752
- for (let n = t.length; n > 0; --n)
753
- if (t[n] === "/" || n === 0) {
754
- t = t.slice(0, n), e = e.replace(/^\.\.\/?/, "");
796
+ for (let r = t.length; r > 0; --r)
797
+ if (t[r] === "/" || r === 0) {
798
+ t = t.slice(0, r), e = e.replace(/^\.\.\/?/, "");
755
799
  break;
756
800
  }
757
801
  } else if (e.startsWith("."))
758
802
  e = e.replace(/^\.\/?/, "");
759
803
  else
760
804
  break;
761
- return se([t, e]);
805
+ return ae([t, e]);
762
806
  }
763
- function Je(r) {
764
- if (!r) return {};
765
- r.startsWith("?") && (r = r.slice(1));
766
- const e = r.split("&").filter((t) => t.trim() !== "").map((t) => {
767
- const [n, i] = t.split("=").map((a) => a.trim());
768
- return i.toLowerCase() === "true" ? [n, !0] : i.toLowerCase() === "false" ? [n, !1] : isNaN(Number(i)) ? [n, i] : [n, Number(i)];
807
+ function Ke(n) {
808
+ if (!n) return {};
809
+ n.startsWith("?") && (n = n.slice(1));
810
+ const e = n.split("&").filter((t) => t.trim() !== "").map((t) => {
811
+ const [r, s] = t.split("=").map((i) => i.trim());
812
+ return s.toLowerCase() === "true" ? [r, !0] : s.toLowerCase() === "false" ? [r, !1] : isNaN(Number(s)) ? [r, s] : [r, Number(s)];
769
813
  });
770
814
  return Object.fromEntries(e);
771
815
  }
772
- function ot(r, e, t = {}) {
816
+ function ot(n, e, t = {}) {
773
817
  var o;
774
- const [n, i] = e.split("?"), a = ye(n);
775
- e: for (const d of r) {
776
- const { fragments: c } = d;
777
- if (!(((o = c[c.length - 1]) == null ? void 0 : o.type) === 3) && c.length !== a.length || t.willMatch && !t.willMatch(d))
818
+ const [r, s] = e.split("?"), i = me(r);
819
+ e: for (const f of n) {
820
+ const { fragments: c } = f;
821
+ if (!(((o = c[c.length - 1]) == null ? void 0 : o.type) === 3) && c.length !== i.length || t.willMatch && !t.willMatch(f))
778
822
  continue e;
779
- const y = [];
780
- t: for (let g = 0; g < c.length; g++) {
781
- const p = a[g], $ = c[g];
782
- if (p == null && $.type !== 3)
823
+ const w = [];
824
+ t: for (let d = 0; d < c.length; d++) {
825
+ const b = i[d], $ = c[d];
826
+ if (b == null && $.type !== 3)
783
827
  continue e;
784
828
  switch ($.type) {
785
829
  case 1:
786
- if ($.name.toLowerCase() === p.toLowerCase()) {
787
- y.push($);
830
+ if ($.name.toLowerCase() === b.toLowerCase()) {
831
+ w.push($);
788
832
  break;
789
833
  } else
790
834
  continue e;
791
835
  case 2:
792
- y.push({ ...$, value: p });
836
+ w.push({ ...$, value: b });
793
837
  break;
794
838
  case 3:
795
- y.push({ ...$, value: a.slice(g).join("/") });
839
+ w.push({ ...$, value: i.slice(d).join("/") });
796
840
  break t;
797
841
  case 4:
798
- if (isNaN(Number(p)))
842
+ if (isNaN(Number(b)))
799
843
  continue e;
800
- y.push({ ...$, value: Number(p) });
844
+ w.push({ ...$, value: Number(b) });
801
845
  break;
802
846
  default:
803
847
  throw new Error(`Unknown fragment type: ${$.type}`);
804
848
  }
805
849
  }
806
- const b = /* @__PURE__ */ Object.create(null);
807
- for (const g of y)
808
- g.type === 2 && (b[g.name] = decodeURIComponent(g.value)), g.type === 4 && (b[g.name] = g.value), g.type === 3 && (b.wildcard = "/" + decodeURIComponent(g.value));
850
+ const p = /* @__PURE__ */ Object.create(null);
851
+ for (const d of w)
852
+ d.type === 2 && (p[d.name] = decodeURIComponent(d.value)), d.type === 4 && (p[d.name] = d.value), d.type === 3 && (p.wildcard = "/" + decodeURIComponent(d.value));
809
853
  return {
810
- path: "/" + y.map((g) => g.value).join("/"),
811
- pattern: "/" + c.map((g) => g.type === 2 ? `{${g.name}}` : g.type === 4 ? `{#${g.name}}` : g.name).join("/"),
812
- params: b,
813
- query: Je(i),
814
- meta: d.meta
854
+ path: "/" + w.map((d) => d.value).join("/"),
855
+ pattern: "/" + c.map((d) => d.type === 2 ? `{${d.name}}` : d.type === 4 ? `{#${d.name}}` : d.name).join("/"),
856
+ params: p,
857
+ query: Ke(s),
858
+ meta: f.meta
815
859
  };
816
860
  }
817
861
  }
818
- function Vt(r) {
819
- const e = [], t = [], n = [], i = [];
820
- for (const o of r) {
821
- const { fragments: d } = o;
822
- d.some(
862
+ function Wt(n) {
863
+ const e = [], t = [], r = [], s = [];
864
+ for (const o of n) {
865
+ const { fragments: f } = o;
866
+ f.some(
823
867
  (c) => c.type === 3
824
868
  /* Wildcard */
825
- ) ? i.push(o) : d.some(
869
+ ) ? s.push(o) : f.some(
826
870
  (c) => c.type === 4
827
871
  /* NumericParam */
828
- ) ? t.push(o) : d.some(
872
+ ) ? t.push(o) : f.some(
829
873
  (c) => c.type === 2
830
874
  /* Param */
831
- ) ? n.push(o) : e.push(o);
875
+ ) ? r.push(o) : e.push(o);
832
876
  }
833
- const a = (o, d) => o.fragments.length > d.fragments.length ? -1 : 1;
834
- return e.sort(a), t.sort(a), n.sort(a), i.sort(a), [...e, ...t, ...n, ...i];
877
+ const i = (o, f) => o.fragments.length > f.fragments.length ? -1 : 1;
878
+ return e.sort(i), t.sort(i), r.sort(i), s.sort(i), [...e, ...t, ...r, ...s];
835
879
  }
836
- function Ft(r) {
837
- const e = ye(r), t = [];
838
- for (let n = 0; n < e.length; n++) {
839
- const i = e[n];
840
- if (i === "*") {
841
- if (n !== e.length - 1)
842
- throw new Error(`Wildcard must be at the end of a pattern. Received: ${r}`);
880
+ function zt(n) {
881
+ const e = me(n), t = [];
882
+ for (let r = 0; r < e.length; r++) {
883
+ const s = e[r];
884
+ if (s === "*") {
885
+ if (r !== e.length - 1)
886
+ throw new Error(`Wildcard must be at the end of a pattern. Received: ${n}`);
843
887
  t.push({
844
888
  type: 3,
845
889
  name: "*",
846
890
  value: null
847
891
  });
848
- } else i.at(0) === "{" && i.at(-1) === "}" ? t.push({
849
- type: i[1] === "#" ? 4 : 2,
850
- name: i[1] === "#" ? i.slice(2, -1) : i.slice(1, -1),
892
+ } else s.at(0) === "{" && s.at(-1) === "}" ? t.push({
893
+ type: s[1] === "#" ? 4 : 2,
894
+ name: s[1] === "#" ? s.slice(2, -1) : s.slice(1, -1),
851
895
  value: null
852
896
  }) : t.push({
853
897
  type: 1,
854
- name: i,
855
- value: i
898
+ name: s,
899
+ value: s
856
900
  });
857
901
  }
858
902
  return t;
859
903
  }
860
- var gt = /* @__PURE__ */ ((r) => (r.hash = "hash", r.path = "path", r))(gt || {}), Le, j, X, S, We, W, ke, Z, ee, he, ue, fe, Se, G, Ye, Xe;
861
- class pt {
904
+ var Ee, T, Z, L, ze, W, ke, ee, z, le, he, ue, Le, B, Je, Ye;
905
+ class Ft {
862
906
  constructor(e, t) {
863
- f(this, G);
864
- f(this, Le);
865
- f(this, j);
866
- f(this, X);
867
- f(this, S, Dt());
868
- f(this, We, 0);
869
- f(this, W, []);
870
- f(this, ke);
871
- f(this, Z, []);
872
- f(this, ee);
907
+ u(this, B);
908
+ u(this, Ee);
909
+ u(this, T);
910
+ u(this, Z);
911
+ u(this, L, Ht());
912
+ u(this, ze, 0);
913
+ u(this, W, []);
914
+ u(this, ke);
915
+ u(this, ee, []);
916
+ // Callbacks that need to be called on unmount.
917
+ u(this, z, []);
873
918
  /**
874
919
  * The currently matched route pattern, if any.
875
920
  */
876
921
  k(this, "$pattern");
877
- f(this, he);
922
+ u(this, le);
878
923
  /**
879
924
  * The current URL path.
880
925
  */
881
926
  k(this, "$path");
882
- f(this, ue);
927
+ u(this, he);
883
928
  /**
884
929
  * The current named path params.
885
930
  */
886
931
  k(this, "$params");
887
- f(this, fe);
932
+ u(this, ue);
888
933
  /**
889
934
  * The current query params. Changes to this object will be reflected in the URL.
890
935
  */
891
936
  k(this, "$query");
892
- f(this, Se);
893
- w(this, Le, e), w(this, j, e.createLogger("dolla/router")), w(this, X, t);
894
- const [n, i] = Q(null), [a, o] = Q(""), [d, c] = Q({}), [h, y] = Q(Je(window.location.search));
895
- this.$pattern = n, w(this, he, i), this.$path = a, w(this, ue, o), this.$params = d, w(this, fe, c), this.$query = h, w(this, Se, y), e.beforeMount(() => {
896
- w(this, ee, lt([h], (g) => {
897
- const p = new URLSearchParams();
898
- for (const N in g)
899
- p.set(N, String(g[N]));
900
- const $ = "?" + p.toString();
901
- $ != s(this, S).location.search && s(this, S).replace({
902
- pathname: s(this, S).location.pathname,
903
- search: $
904
- });
905
- }));
906
- const b = (g) => {
907
- P(this, G, Xe).call(this, g);
908
- };
909
- s(this, S).listen(b), P(this, G, Xe).call(this, s(this, S)), s(this, j).info("Intercepting <a> clicks within root element:", s(this, X).rootElement), mt(s(this, X).rootElement, (g) => {
910
- let p = g.getAttribute("href");
911
- s(this, j).info("Intercepted link click", g, p), /^https?:\/\/|^\//.test(p) || (p = se([s(this, S).location.pathname, p])), s(this, S).push(p);
912
- });
937
+ u(this, Le);
938
+ m(this, Ee, e), m(this, T, e.createLogger("dolla/router")), m(this, Z, t);
939
+ const [r, s] = K(null), [i, o] = K(""), [f, c] = K({}), [y, w] = K(Ke(window.location.search));
940
+ this.$pattern = r, m(this, le, s), this.$path = i, m(this, he, o), this.$params = f, m(this, ue, c), this.$query = y, m(this, Le, w), e.beforeMount(() => {
941
+ a(this, z).push(
942
+ ht([y], (p) => {
943
+ const d = new URLSearchParams();
944
+ for (const $ in p)
945
+ d.set($, String(p[$]));
946
+ const b = "?" + d.toString();
947
+ b != a(this, L).location.search && a(this, L).replace({
948
+ pathname: a(this, L).location.pathname,
949
+ search: b
950
+ });
951
+ })
952
+ ), a(this, z).push(a(this, L).listen(P(this, B, Ye))), P(this, B, Ye).call(this, a(this, L)), a(this, z).push(
953
+ Bt(a(this, Z).rootElement, (p) => {
954
+ let d = p.getAttribute("href");
955
+ a(this, T).info("Intercepted link click", p, d), /^https?:\/\/|^\//.test(d) || (d = ae([a(this, L).location.pathname, d])), a(this, L).push(d);
956
+ })
957
+ ), a(this, T).info("Intercepting <a> clicks within root element:", a(this, Z).rootElement);
913
958
  }), e.onUnmount(() => {
914
- s(this, ee) && (s(this, ee).call(this), w(this, ee, void 0));
959
+ for (; a(this, z).length > 0; )
960
+ a(this, z).pop()();
915
961
  });
916
962
  }
917
963
  setup(e) {
918
- e.style === "hash" && w(this, S, Ht()), w(this, Z, Vt(
919
- e.routes.flatMap((t) => P(this, G, Ye).call(this, t)).map((t) => ({
964
+ e.style === "hash" && m(this, L, _t()), m(this, ee, Wt(
965
+ e.routes.flatMap((t) => P(this, B, Je).call(this, t)).map((t) => ({
920
966
  pattern: t.pattern,
921
967
  meta: t.meta,
922
- fragments: Ft(t.pattern)
968
+ fragments: zt(t.pattern)
923
969
  }))
924
970
  ));
925
- for (const t of s(this, Z))
971
+ for (const t of a(this, ee))
926
972
  if (t.meta.redirect) {
927
- let n;
928
- if (!Ze(t.meta.redirect)) if (H(t.meta.redirect)) {
929
- if (n = t.meta.redirect, !ot(s(this, Z), n, {
930
- willMatch(a) {
931
- return a !== t;
973
+ let r;
974
+ if (!Xe(t.meta.redirect)) if (D(t.meta.redirect)) {
975
+ if (r = t.meta.redirect, !ot(a(this, ee), r, {
976
+ willMatch(i) {
977
+ return i !== t;
932
978
  }
933
979
  }))
934
980
  throw new Error(
@@ -946,29 +992,29 @@ class pt {
946
992
  * navigate(["/users", 215], { replace: true }); // replace current history entry with `/users/215`
947
993
  */
948
994
  go(e, t = {}) {
949
- let n;
950
- Array.isArray(e) ? n = se(e) : n = e.toString(), n = Ue(s(this, S).location.pathname, n), t.preserveQuery && (n += s(this, S).location.search), t.replace ? s(this, S).replace(n) : s(this, S).push(n);
995
+ let r;
996
+ Array.isArray(e) ? r = ae(e) : r = e.toString(), r = qe(a(this, L).location.pathname, r), t.preserveQuery && (r += a(this, L).location.search), t.replace ? a(this, L).replace(r) : a(this, L).push(r);
951
997
  }
952
998
  /**
953
999
  * Navigate backward. Pass a number of steps to hit the back button that many times.
954
1000
  */
955
1001
  back(e = 1) {
956
- s(this, S).go(-e);
1002
+ a(this, L).go(-e);
957
1003
  }
958
1004
  /**
959
1005
  * Navigate forward. Pass a number of steps to hit the forward button that many times.
960
1006
  */
961
1007
  forward(e = 1) {
962
- s(this, S).go(e);
1008
+ a(this, L).go(e);
963
1009
  }
964
1010
  }
965
- Le = new WeakMap(), j = new WeakMap(), X = new WeakMap(), S = new WeakMap(), We = new WeakMap(), W = new WeakMap(), ke = new WeakMap(), Z = new WeakMap(), ee = new WeakMap(), he = new WeakMap(), ue = new WeakMap(), fe = new WeakMap(), Se = new WeakMap(), G = new WeakSet(), /**
1011
+ Ee = new WeakMap(), T = new WeakMap(), Z = new WeakMap(), L = new WeakMap(), ze = new WeakMap(), W = new WeakMap(), ke = new WeakMap(), ee = new WeakMap(), z = new WeakMap(), le = new WeakMap(), he = new WeakMap(), ue = new WeakMap(), Le = new WeakMap(), B = new WeakSet(), /**
966
1012
  * Parses a route definition object into a set of matchable routes.
967
1013
  *
968
1014
  * @param route - Route config object.
969
1015
  * @param layers - Array of parent layers. Passed when this function calls itself on nested routes.
970
1016
  */
971
- Ye = function(e, t = [], n = []) {
1017
+ Je = function(e, t = [], r = []) {
972
1018
  if (!(typeof e == "object" && !Array.isArray(e)) || typeof e.path != "string")
973
1019
  throw new TypeError(`Route configs must be objects with a 'path' string property. Got: ${e}`);
974
1020
  if (e.redirect && e.routes)
@@ -977,180 +1023,191 @@ Ye = function(e, t = [], n = []) {
977
1023
  throw new Error("Route cannot have both a 'redirect' and a 'view'.");
978
1024
  if (!e.view && !e.routes && !e.redirect)
979
1025
  throw new Error("Route must have a 'view', a 'redirect', or a set of nested 'routes'.");
980
- let i = [];
981
- for (const h of t)
982
- i.push(...ye(h.path));
983
- i.push(...ye(e.path)), i[i.length - 1] === "*" && i.pop();
984
- const a = [];
1026
+ let s = [];
1027
+ for (const c of t)
1028
+ s.push(...me(c.path));
1029
+ s.push(...me(e.path)), s[s.length - 1] === "*" && s.pop();
1030
+ const i = [];
985
1031
  if (e.redirect) {
986
- let h = e.redirect;
987
- return H(h) && (h = Ue(se(i), h), h.startsWith("/") || (h = "/" + h)), a.push({
988
- pattern: "/" + se([...i, ...ye(e.path)]),
1032
+ let c = e.redirect;
1033
+ return D(c) && (c = qe(ae(s), c), c.startsWith("/") || (c = "/" + c)), i.push({
1034
+ pattern: "/" + ae([...s, ...me(e.path)]),
989
1035
  meta: {
990
- redirect: h
1036
+ redirect: c
991
1037
  }
992
- }), a;
1038
+ }), i;
993
1039
  }
994
- let o = ht;
1040
+ let o = ut;
995
1041
  if (typeof e.view == "function")
996
1042
  o = e.view;
997
1043
  else if (e.view)
998
1044
  throw new TypeError(`Route '${e.path}' expected a view function or undefined. Got: ${e.view}`);
999
- const d = Qe(o), c = { id: tt(this, We)._++, markup: d };
1045
+ const f = { id: et(this, ze)._++, view: o };
1000
1046
  if (e.routes)
1001
- for (const h of e.routes)
1002
- a.push(...P(this, G, Ye).call(this, h, [...t, e], [...n, c]));
1047
+ for (const c of e.routes)
1048
+ i.push(...P(this, B, Je).call(this, c, [...t, e], [...r, f]));
1003
1049
  else
1004
- a.push({
1005
- pattern: parent ? se([...t.map((h) => h.path), e.path]) : e.path,
1050
+ i.push({
1051
+ pattern: parent ? ae([...t.map((c) => c.path), e.path]) : e.path,
1006
1052
  meta: {
1007
1053
  pattern: e.path,
1008
- layers: [...n, c],
1054
+ layers: [...r, f],
1009
1055
  beforeMatch: e.beforeMatch
1010
1056
  }
1011
1057
  });
1012
- return a;
1013
- }, Xe = async function({ location: e }) {
1014
- e.search !== s(this, ke) && (w(this, ke, e.search), s(this, Se).call(this, Je(e.search)));
1015
- const t = ot(s(this, Z), e.pathname);
1058
+ return i;
1059
+ }, Ye = async function({ location: e }) {
1060
+ e.search !== a(this, ke) && (m(this, ke, e.search), a(this, Le).call(this, Ke(e.search)));
1061
+ const t = ot(a(this, ee), e.pathname);
1016
1062
  if (!t) {
1017
- s(this, he).call(this, null), s(this, ue).call(this, e.pathname), s(this, fe).call(this, {
1063
+ a(this, le).call(this, null), a(this, he).call(this, e.pathname), a(this, ue).call(this, {
1018
1064
  wildcard: e.pathname
1019
1065
  });
1020
1066
  return;
1021
1067
  }
1022
1068
  if (t.meta.beforeMatch && await t.meta.beforeMatch({
1023
- redirect: (n) => {
1069
+ redirect: (r) => {
1024
1070
  throw new Error("Redirect not yet implemented.");
1025
1071
  }
1026
- }), s(this, j).info(`Matched route: '${t.pattern}' ('${t.path}')`), t.meta.redirect != null)
1072
+ }), a(this, T).info(`Matched route: '${t.pattern}' ('${t.path}')`), t.meta.redirect != null)
1027
1073
  if (typeof t.meta.redirect == "string") {
1028
- const n = zt(t.meta.redirect, t.params);
1029
- s(this, j).info(`Redirecting to: '${n}'`), s(this, S).replace(n);
1074
+ const r = Qt(t.meta.redirect, t.params);
1075
+ a(this, T).info(`Redirecting to: '${r}'`), a(this, L).replace(r);
1030
1076
  } else if (typeof t.meta.redirect == "function") {
1031
- const n = {
1077
+ const r = {
1032
1078
  path: t.path,
1033
1079
  pattern: t.pattern,
1034
1080
  params: t.params,
1035
1081
  query: t.query
1036
1082
  };
1037
- let i = await t.meta.redirect(n);
1038
- if (typeof i != "string")
1083
+ let s = await t.meta.redirect(r);
1084
+ if (typeof s != "string")
1039
1085
  throw new Error("Redirect function must return a path to redirect to.");
1040
- i.startsWith("/") || (i = Ue(t.path, i)), s(this, j).info(`Redirecting to: '${i}'`), s(this, S).replace(i);
1086
+ s.startsWith("/") || (s = qe(t.path, s)), a(this, T).info(`Redirecting to: '${s}'`), a(this, L).replace(s);
1041
1087
  } else
1042
1088
  throw new TypeError("Redirect must either be a path string or a function.");
1043
- else if (s(this, ue).call(this, t.path), s(this, fe).call(this, t.params), t.pattern !== this.$pattern.get()) {
1044
- s(this, he).call(this, t.pattern);
1045
- const n = t.meta.layers;
1046
- for (let i = 0; i < n.length; i++) {
1047
- const a = n[i], o = s(this, W)[i];
1048
- if ((o == null ? void 0 : o.id) !== a.id) {
1049
- s(this, j).info(`Replacing layer @${i} (active ID: ${o == null ? void 0 : o.id}, matched ID: ${a.id})`), w(this, W, s(this, W).slice(0, i));
1050
- const d = s(this, W).at(-1), c = {
1051
- dolla: s(this, Le)
1052
- }, h = Et(a.markup, c), y = Lt(h);
1053
- o && o.handle.connected && o.handle.disconnect(), d ? d.handle.setChildren(h) : s(this, X).rootView.setChildren(h), s(this, W).push({ id: a.id, handle: y });
1089
+ else if (a(this, he).call(this, t.path), a(this, ue).call(this, t.params), t.pattern !== this.$pattern.get()) {
1090
+ a(this, le).call(this, t.pattern);
1091
+ const r = t.meta.layers;
1092
+ for (let s = 0; s < r.length; s++) {
1093
+ const i = r[s], o = a(this, W)[s];
1094
+ if ((o == null ? void 0 : o.id) !== i.id) {
1095
+ a(this, T).info(`Replacing layer @${s} (active ID: ${o == null ? void 0 : o.id}, matched ID: ${i.id})`), m(this, W, a(this, W).slice(0, s));
1096
+ const f = a(this, W).at(-1), c = a(this, Ee).constructView(i.view, {});
1097
+ o && o.node.isMounted && o.node.unmount(), f ? f.node.setChildren([c]) : a(this, Z).rootView.setChildren([c]), a(this, W).push({ id: i.id, node: c });
1054
1098
  }
1055
1099
  }
1056
1100
  }
1057
1101
  };
1058
- const Wt = /(noopener|noreferrer) (noopener|noreferrer)/, It = /^[\w-_]+:/;
1059
- function mt(r, e, t = window) {
1060
- function n(a) {
1061
- return !a || a === r ? null : a.localName !== "a" || a.href === void 0 ? n(a.parentNode) : a;
1102
+ const It = /(noopener|noreferrer) (noopener|noreferrer)/, Gt = /^[\w-_]+:/;
1103
+ function Bt(n, e, t = window) {
1104
+ function r(i) {
1105
+ return !i || i === n ? null : i.localName !== "a" || i.href === void 0 ? r(i.parentNode) : i;
1062
1106
  }
1063
- function i(a) {
1064
- if (a.button && a.button !== 0 || a.ctrlKey || a.metaKey || a.altKey || a.shiftKey || a.defaultPrevented)
1107
+ function s(i) {
1108
+ if (i.button && i.button !== 0 || i.ctrlKey || i.metaKey || i.altKey || i.shiftKey || i.defaultPrevented)
1065
1109
  return;
1066
- const o = n(a.target);
1067
- o && (t.location.protocol !== o.protocol || t.location.hostname !== o.hostname || t.location.port !== o.port || o.hasAttribute("data-router-ignore") || o.hasAttribute("download") || o.getAttribute("target") === "_blank" && Wt.test(o.getAttribute("rel")) || It.test(o.getAttribute("href")) || (a.preventDefault(), e(o)));
1110
+ const o = r(i.target);
1111
+ o && (t.location.protocol !== o.protocol || t.location.hostname !== o.hostname || t.location.port !== o.port || o.hasAttribute("data-router-ignore") || o.hasAttribute("download") || o.getAttribute("target") === "_blank" && It.test(o.getAttribute("rel")) || Gt.test(o.getAttribute("href")) || (i.preventDefault(), e(o)));
1068
1112
  }
1069
- return r.addEventListener("click", i), function() {
1070
- r.removeEventListener("click", i);
1113
+ return n.addEventListener("click", s), function() {
1114
+ n.removeEventListener("click", s);
1071
1115
  };
1072
1116
  }
1073
- function zt(r, e) {
1117
+ function Qt(n, e) {
1074
1118
  for (const t in e) {
1075
- const n = e[t].toString();
1076
- r = r.replace(`{${t}}`, n).replace(`{#${t}}`, n);
1119
+ const r = e[t].toString();
1120
+ n = n.replace(`{${t}}`, r).replace(`{#${t}}`, r);
1077
1121
  }
1078
- return r;
1122
+ return n;
1079
1123
  }
1080
- const Jt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1081
- __proto__: null,
1082
- Router: pt,
1083
- RoutingStyle: gt,
1084
- catchLinks: mt
1085
- }, Symbol.toStringTag, { value: "Module" }));
1086
- var I, Pe, te, ne, Re, xe, Me, Oe, x, z;
1087
- class Gt {
1124
+ var F, Pe, I, te, Se, Re, xe, Me, Ne, R, G;
1125
+ class Kt {
1088
1126
  constructor() {
1089
- f(this, I, !1);
1090
- f(this, Pe, "production");
1091
- f(this, te);
1092
- f(this, ne);
1093
1127
  k(this, "http");
1094
1128
  k(this, "language");
1095
1129
  k(this, "render");
1096
1130
  k(this, "router");
1097
- f(this, Re, []);
1098
- f(this, xe, []);
1099
- f(this, Me, []);
1100
- f(this, Oe, []);
1101
- f(this, x, {
1131
+ u(this, F, !1);
1132
+ u(this, Pe, "production");
1133
+ u(this, I);
1134
+ u(this, te);
1135
+ u(this, Se, Nt);
1136
+ u(this, Re, []);
1137
+ u(this, xe, []);
1138
+ u(this, Me, []);
1139
+ u(this, Ne, []);
1140
+ u(this, R, {
1102
1141
  info: "development",
1103
1142
  log: "development",
1104
1143
  warn: "development",
1105
1144
  error: !0
1106
1145
  });
1107
- f(this, z, nt("*,-dolla/*"));
1108
- k(this, "createSignal", Q);
1109
- k(this, "createSettableSignal", kt);
1110
- k(this, "toSettableSignal", St);
1146
+ u(this, G, rt("*,-dolla/*"));
1147
+ k(this, "createSignal", K);
1148
+ k(this, "createSettableSignal", $t);
1149
+ k(this, "toSettableSignal", Et);
1111
1150
  k(this, "signalify", Ge);
1112
- k(this, "designalify", Pt);
1151
+ k(this, "designalify", kt);
1113
1152
  k(this, "derive", Be);
1114
- k(this, "watch", lt);
1115
- k(this, "createRef", Rt);
1116
- k(this, "isRef", xt);
1153
+ k(this, "watch", ht);
1154
+ k(this, "createRef", Lt);
1155
+ k(this, "isRef", Pt);
1117
1156
  const e = this;
1118
- this.http = new Ot(), this.language = new Ct(this), this.render = new qt(this), this.router = new pt(this, {
1157
+ this.http = new Ot(), this.language = new qt(this), this.render = new Vt(this), this.router = new Ft(this, {
1119
1158
  get rootElement() {
1120
- return s(e, te);
1159
+ return a(e, I);
1121
1160
  },
1122
1161
  get rootView() {
1123
- return s(e, ne);
1162
+ return a(e, te);
1124
1163
  }
1125
1164
  });
1126
1165
  }
1166
+ /**
1167
+ * True when the app is connected to a DOM node and displayed to the user.
1168
+ */
1127
1169
  get isMounted() {
1128
- return s(this, I);
1170
+ return a(this, F);
1171
+ }
1172
+ /**
1173
+ * Get the current environment that this app is running in.
1174
+ * Environment affects which log messages will print and how much debugging info is included in the DOM.
1175
+ */
1176
+ getEnv() {
1177
+ return a(this, Pe);
1129
1178
  }
1130
- get env() {
1131
- return s(this, Pe);
1179
+ /**
1180
+ * Sets the environment that this app is running in.
1181
+ * Environment affects which log messages will print and how much debugging info is included in the DOM.
1182
+ */
1183
+ setEnv(e) {
1184
+ m(this, Pe, e);
1132
1185
  }
1133
- set env(e) {
1134
- w(this, Pe, e);
1186
+ /**
1187
+ * Sets the view that will be shown when the `crash` method is called on any logger.
1188
+ * When a crash is reported the app will be unmounted and replaced with this crash page.
1189
+ */
1190
+ setCrashView(e) {
1191
+ m(this, Se, e);
1135
1192
  }
1136
1193
  async mount(e, t) {
1137
- if (s(this, I))
1194
+ if (a(this, F))
1138
1195
  throw new Error("Dolla is already mounted.");
1139
- if (H(e)) {
1140
- const a = document.querySelector(e);
1141
- rt(HTMLElement, a, `Selector '${e}' did not match any element.`), w(this, te, a);
1196
+ if (D(e)) {
1197
+ const s = document.querySelector(e);
1198
+ nt(HTMLElement, s, `Selector '${e}' did not match any element.`), m(this, I, s);
1142
1199
  } else
1143
- rt(HTMLElement, e, "Expected an HTML element or a selector string. Got type: %t, value: %v"), w(this, te, e);
1144
- let n;
1145
- t ? n = Qe(t) : n = Qe(ht), w(this, ne, at({ dolla: this }, n.type, n.props)), await Promise.all(s(this, Re).map((a) => a())), s(this, ne).connect(s(this, te)), w(this, I, !0);
1146
- for (const a of s(this, xe))
1147
- a();
1200
+ nt(HTMLElement, e, "Expected an HTML element or a selector string. Got type: %t, value: %v"), m(this, I, e);
1201
+ let r;
1202
+ t ? r = at(t) : r = at(ut), m(this, te, this.constructView(r.type, r.props)), await Promise.all(a(this, Re).map((s) => s())), a(this, te).mount(a(this, I)), m(this, F, !0);
1203
+ for (const s of a(this, xe))
1204
+ s();
1148
1205
  }
1149
1206
  async unmount() {
1150
1207
  var e;
1151
- if (s(this, I)) {
1152
- await Promise.all(s(this, Me).map((t) => t())), (e = s(this, ne)) == null || e.disconnect(), w(this, I, !1);
1153
- for (const t of s(this, Oe))
1208
+ if (a(this, F)) {
1209
+ await Promise.all(a(this, Me).map((t) => t())), (e = a(this, te)) == null || e.unmount(), m(this, F, !1);
1210
+ for (const t of a(this, Ne))
1154
1211
  t();
1155
1212
  }
1156
1213
  }
@@ -1159,51 +1216,51 @@ class Gt {
1159
1216
  * it will be awaited before mounting finishes. Use this to perform initial setup before the app is displayed to the user.
1160
1217
  */
1161
1218
  beforeMount(e) {
1162
- s(this, Re).push(e);
1219
+ a(this, Re).push(e);
1163
1220
  }
1164
1221
  /**
1165
1222
  * Registers a `callback` to run after the app is mounted.
1166
1223
  */
1167
1224
  onMount(e) {
1168
- s(this, xe).push(e);
1225
+ a(this, xe).push(e);
1169
1226
  }
1170
1227
  /**
1171
1228
  * Registers a `callback` to run after `Dolla.unmount` is called, before the app is unmounted. If `callback` returns a Promise,
1172
1229
  * it will be awaited before unmounting finishes. Use this to perform cleanup.
1173
1230
  */
1174
1231
  beforeUnmount(e) {
1175
- s(this, Me).push(e);
1232
+ a(this, Me).push(e);
1176
1233
  }
1177
1234
  /**
1178
1235
  * Registers a `callback` to run after the app is unmounted.
1179
1236
  */
1180
1237
  onUnmount(e) {
1181
- s(this, Oe).push(e);
1238
+ a(this, Ne).push(e);
1182
1239
  }
1183
1240
  /**
1184
- * Update log level settings. Values that are not passed will remain unchanged.
1241
+ * Update log type toggles. Values that are not passed will remain unchanged.
1185
1242
  */
1186
1243
  setLoggles(e) {
1187
1244
  for (const t in e) {
1188
- const n = e[t];
1189
- n && (s(this, x)[t] = n);
1245
+ const r = e[t];
1246
+ r && (a(this, R)[t] = r);
1190
1247
  }
1191
1248
  }
1192
1249
  setLogFilter(e) {
1193
- w(this, z, nt(e));
1250
+ m(this, G, rt(e));
1194
1251
  }
1195
1252
  createLogger(e, t) {
1196
- const n = Ge(e), i = (t == null ? void 0 : t.console) ?? Mt(), a = this;
1253
+ const r = Ge(e), s = (t == null ? void 0 : t.console) ?? St(), i = this;
1197
1254
  return {
1198
1255
  get info() {
1199
- var d;
1200
- const o = n.get();
1201
- if (s(a, x).info === !1 || H(s(a, x).info) && s(a, x).info !== a.env || !s(d = a, z).call(d, o))
1202
- return Ne;
1256
+ var f;
1257
+ const o = r.get();
1258
+ if (a(i, R).info === !1 || D(a(i, R).info) && a(i, R).info !== i.getEnv() || !a(f = i, G).call(f, o))
1259
+ return Oe;
1203
1260
  {
1204
1261
  let c = `%c${o}`;
1205
- return t != null && t.uid ? c += ` %c[uid: %c${t.uid}%c]` : c += "%c%c%c", i.info.bind(
1206
- i,
1262
+ return t != null && t.uid ? c += ` %c[uid: %c${t.uid}%c]` : c += "%c%c%c", s.info.bind(
1263
+ s,
1207
1264
  c,
1208
1265
  `color:${Te(c)};font-weight:bold`,
1209
1266
  "color:#777",
@@ -1213,14 +1270,14 @@ class Gt {
1213
1270
  }
1214
1271
  },
1215
1272
  get log() {
1216
- var d;
1217
- const o = n.get();
1218
- if (s(a, x).log === !1 || H(s(a, x).log) && s(a, x).log !== a.env || !s(d = a, z).call(d, o))
1219
- return Ne;
1273
+ var f;
1274
+ const o = r.get();
1275
+ if (a(i, R).log === !1 || D(a(i, R).log) && a(i, R).log !== i.getEnv() || !a(f = i, G).call(f, o))
1276
+ return Oe;
1220
1277
  {
1221
1278
  let c = `%c${o}`;
1222
- return t != null && t.uid ? c += ` %c[uid: %c${t.uid}%c]` : c += "%c%c%c", i.log.bind(
1223
- i,
1279
+ return t != null && t.uid ? c += ` %c[uid: %c${t.uid}%c]` : c += "%c%c%c", s.log.bind(
1280
+ s,
1224
1281
  c,
1225
1282
  `color:${Te(c)};font-weight:bold`,
1226
1283
  "color:#777",
@@ -1230,14 +1287,14 @@ class Gt {
1230
1287
  }
1231
1288
  },
1232
1289
  get warn() {
1233
- var d;
1234
- const o = n.get();
1235
- if (s(a, x).warn === !1 || H(s(a, x).warn) && s(a, x).warn !== a.env || !s(d = a, z).call(d, o))
1236
- return Ne;
1290
+ var f;
1291
+ const o = r.get();
1292
+ if (a(i, R).warn === !1 || D(a(i, R).warn) && a(i, R).warn !== i.getEnv() || !a(f = i, G).call(f, o))
1293
+ return Oe;
1237
1294
  {
1238
1295
  let c = `%c${o}`;
1239
- return t != null && t.uid ? c += ` %c[uid: %c${t.uid}%c]` : c += "%c%c%c", i.warn.bind(
1240
- i,
1296
+ return t != null && t.uid ? c += ` %c[uid: %c${t.uid}%c]` : c += "%c%c%c", s.warn.bind(
1297
+ s,
1241
1298
  c,
1242
1299
  `color:${Te(c)};font-weight:bold`,
1243
1300
  "color:#777",
@@ -1247,14 +1304,14 @@ class Gt {
1247
1304
  }
1248
1305
  },
1249
1306
  get error() {
1250
- var d;
1251
- const o = n.get();
1252
- if (s(a, x).error === !1 || H(s(a, x).error) && s(a, x).error !== a.env || !s(d = a, z).call(d, o))
1253
- return Ne;
1307
+ var f;
1308
+ const o = r.get();
1309
+ if (a(i, R).error === !1 || D(a(i, R).error) && a(i, R).error !== i.getEnv() || !a(f = i, G).call(f, o))
1310
+ return Oe;
1254
1311
  {
1255
1312
  let c = `%c${o}`;
1256
- return t != null && t.uid ? c += ` %c[uid: %c${t.uid}%c]` : c += "%c%c%c", i.error.bind(
1257
- i,
1313
+ return t != null && t.uid ? c += ` %c[uid: %c${t.uid}%c]` : c += "%c%c%c", s.error.bind(
1314
+ s,
1258
1315
  c,
1259
1316
  `color:${Te(c)};font-weight:bold`,
1260
1317
  "color:#777",
@@ -1264,45 +1321,46 @@ class Gt {
1264
1321
  }
1265
1322
  },
1266
1323
  crash(o) {
1324
+ throw i.isMounted && (i.unmount(), i.constructView(a(i, Se), {
1325
+ error: o,
1326
+ loggerName: r.get(),
1327
+ uid: t == null ? void 0 : t.uid
1328
+ }).mount(a(i, I))), o;
1267
1329
  }
1268
1330
  };
1269
1331
  }
1270
- constructView(e, t, n = []) {
1271
- return at({ dolla: this }, e, t, n);
1332
+ /**
1333
+ *
1334
+ */
1335
+ constructView(e, t, r = []) {
1336
+ return Rt({ root: this }, e, t, r);
1337
+ }
1338
+ /**
1339
+ *
1340
+ */
1341
+ constructMarkup(e) {
1342
+ return xt(Mt({ root: this }, e));
1272
1343
  }
1273
1344
  }
1274
- I = new WeakMap(), Pe = new WeakMap(), te = new WeakMap(), ne = new WeakMap(), Re = new WeakMap(), xe = new WeakMap(), Me = new WeakMap(), Oe = new WeakMap(), x = new WeakMap(), z = new WeakMap();
1275
- const L = new Gt(), Yt = L.beforeMount.bind(L), Xt = L.onMount.bind(L), Zt = L.beforeUnmount.bind(L), en = L.onUnmount.bind(L), tn = L.mount.bind(L), nn = L.unmount.bind(L), rn = L.http, an = L.render, sn = L.createLogger.bind(L), on = L.setLogFilter.bind(L), cn = L.setLoggles.bind(L), ln = L.language.t.bind(L.language), hn = L.constructView.bind(L);
1345
+ F = new WeakMap(), Pe = new WeakMap(), I = new WeakMap(), te = new WeakMap(), Se = new WeakMap(), Re = new WeakMap(), xe = new WeakMap(), Me = new WeakMap(), Ne = new WeakMap(), R = new WeakMap(), G = new WeakMap();
1346
+ const ct = new Kt(), Zt = ct.language.t.bind(ct.language);
1276
1347
  export {
1277
- dn as Fragment,
1278
- Yt as beforeMount,
1279
- Zt as beforeUnmount,
1280
- gn as cond,
1281
- hn as constructView,
1282
- sn as createLogger,
1283
- Rt as createRef,
1284
- kt as createSettableSignal,
1285
- Q as createSignal,
1286
- pn as createSignalSetter,
1287
- L as default,
1348
+ yt as cond,
1349
+ at as createMarkup,
1350
+ Lt as createRef,
1351
+ $t as createSettableSignal,
1352
+ K as createSignal,
1353
+ rr as createSignalSetter,
1354
+ ct as default,
1288
1355
  Be as derive,
1289
- Pt as designalify,
1290
- rn as http,
1291
- xt as isRef,
1292
- Qe as m,
1293
- tn as mount,
1294
- Xt as onMount,
1295
- en as onUnmount,
1296
- mn as portal,
1297
- an as render,
1298
- yn as repeat,
1299
- Jt as router,
1300
- on as setLogFilter,
1301
- cn as setLogges,
1356
+ kt as designalify,
1357
+ tt as html,
1358
+ Pt as isRef,
1359
+ nr as portal,
1360
+ ar as repeat,
1302
1361
  Ge as signalify,
1303
- ln as t,
1304
- St as toSettableSignal,
1305
- nn as unmount,
1306
- lt as watch
1362
+ Zt as t,
1363
+ Et as toSettableSignal,
1364
+ ht as watch
1307
1365
  };
1308
1366
  //# sourceMappingURL=index.js.map