@webority/ui-elements 0.30.0 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -51,22 +51,22 @@ function S(e, { unit: t = "rupees", decimals: n } = {}) {
51
51
  let r = b(e, t), i = _(p(n, 0)).format(Math.abs(r));
52
52
  return (Number(i.replace(/,/g, "")) === 0 ? "" : y(r)) + l + i;
53
53
  }
54
- var C = (e) => e > 0 && e < .1 ? Math.min(20, 1 - Math.floor(Math.log10(e))) : 2;
55
- function w(e, { currency: t, unit: n = "rupees" } = {}) {
54
+ var ee = (e) => e > 0 && e < .1 ? Math.min(20, 1 - Math.floor(Math.log10(e))) : 2;
55
+ function C(e, { currency: t, unit: n = "rupees" } = {}) {
56
56
  if (!v(e)) return "-";
57
57
  let r = t ? b(e, n) : e, i = t ? l : "", a = Math.abs(r), o = f.findIndex(([e]) => a >= e);
58
58
  if (o === -1) {
59
- let e = h(C(a)).format(a);
59
+ let e = h(ee(a)).format(a);
60
60
  if (e !== "1,000") return (e === "0" ? "" : y(r)) + i + e;
61
61
  o = f.length - 1;
62
62
  }
63
63
  let [s, c] = f[o], u = a / s, d = u >= 100 ? 0 : u >= 10 ? 1 : 2, p = Number(u.toFixed(d));
64
64
  return p >= 100 && o > 0 && (--o, [s, c] = f[o], u = a / s, d = u >= 100 ? 0 : u >= 10 ? 1 : 2, p = Number(u.toFixed(d))), `${y(r)}${i}${h(d).format(p)} ${c}`;
65
65
  }
66
- function ee(e, { decimals: t } = {}) {
66
+ function te(e, { decimals: t } = {}) {
67
67
  return v(e) ? `${x(e * 100, { decimals: p(t, 1) })}%` : "-";
68
68
  }
69
- function te(e, { unit: t = "s" } = {}) {
69
+ function ne(e, { unit: t = "s" } = {}) {
70
70
  if (!v(e)) return "-";
71
71
  let n = {
72
72
  ms: 1,
@@ -84,7 +84,7 @@ function te(e, { unit: t = "s" } = {}) {
84
84
  let l = Math.floor(c / 60);
85
85
  return `${i}${h(0).format(l)}h ${s(c % 60)}m`;
86
86
  }
87
- function ne(e) {
87
+ function re(e) {
88
88
  if (e instanceof Date) return e.getTime();
89
89
  if (v(e)) return e;
90
90
  if (typeof e != "string") return NaN;
@@ -99,7 +99,7 @@ function ne(e) {
99
99
  }
100
100
  return Date.parse(e);
101
101
  }
102
- function T(e) {
102
+ function w(e) {
103
103
  let t = new Date(e + u);
104
104
  return {
105
105
  year: t.getUTCFullYear(),
@@ -109,10 +109,10 @@ function T(e) {
109
109
  minute: t.getUTCMinutes()
110
110
  };
111
111
  }
112
- function E(e, { pattern: t = "day" } = {}) {
113
- let n = ne(e);
112
+ function T(e, { pattern: t = "day" } = {}) {
113
+ let n = re(e);
114
114
  if (!Number.isFinite(n)) return "-";
115
- let r = T(n), i = (e) => String(e).padStart(2, "0"), a = `${i(r.day)}-${d[r.month]}-${r.year}`, o = `${i(r.hour)}:${i(r.minute)}`;
115
+ let r = w(n), i = (e) => String(e).padStart(2, "0"), a = `${i(r.day)}-${d[r.month]}-${r.year}`, o = `${i(r.hour)}:${i(r.minute)}`;
116
116
  switch (t) {
117
117
  case "month": return `${d[r.month]}-${r.year}`;
118
118
  case "year": return String(r.year);
@@ -121,29 +121,29 @@ function E(e, { pattern: t = "day" } = {}) {
121
121
  default: return a;
122
122
  }
123
123
  }
124
- function re(e, t) {
124
+ function ie(e, t) {
125
125
  if (e == null || e === "") return "-";
126
126
  let n = t?.style;
127
- if (n === "date") return E(e, t);
127
+ if (n === "date") return T(e, t);
128
128
  if (typeof e != "number") return String(e);
129
129
  switch (n) {
130
130
  case "currency": return S(e, t);
131
- case "percent": return ee(e, t);
132
- case "compact": return w(e, t);
133
- case "duration": return te(e, t);
131
+ case "percent": return te(e, t);
132
+ case "compact": return C(e, t);
133
+ case "duration": return ne(e, t);
134
134
  default: return x(e, t);
135
135
  }
136
136
  }
137
137
  //#endregion
138
138
  //#region src/wuiHttp.js
139
- var ie = "wui-csrf", D = "RequestVerificationToken", O = Object.freeze({
139
+ var ae = "wui-csrf", E = "RequestVerificationToken", D = Object.freeze({
140
140
  fragment: "X-Wui-Fragment",
141
141
  message: "X-Wui-Message",
142
142
  redirect: "X-Wui-Redirect",
143
143
  result: "X-Wui-Result",
144
144
  keepOpen: "X-Wui-Keep-Open",
145
145
  toastVariant: "X-Wui-Toast-Variant"
146
- }), ae = Object.freeze([
146
+ }), oe = Object.freeze([
147
147
  "ok",
148
148
  "validation",
149
149
  "forbidden",
@@ -153,33 +153,33 @@ var ie = "wui-csrf", D = "RequestVerificationToken", O = Object.freeze({
153
153
  "aborted",
154
154
  "stale",
155
155
  "session"
156
- ]), oe = /* @__PURE__ */ new Set(["GET", "HEAD"]);
157
- function se(e = document) {
158
- let t = e.querySelector(`meta[name="${ie}"]`), n = t?.getAttribute("content");
156
+ ]), se = /* @__PURE__ */ new Set(["GET", "HEAD"]);
157
+ function ce(e = document) {
158
+ let t = e.querySelector(`meta[name="${ae}"]`), n = t?.getAttribute("content");
159
159
  return n ? {
160
160
  header: t.getAttribute("data-header") || "RequestVerificationToken",
161
161
  token: n
162
162
  } : null;
163
163
  }
164
- var ce = (e) => {
164
+ var le = (e) => {
165
165
  try {
166
166
  return new URL(e, window.location.href).origin === window.location.origin;
167
167
  } catch {
168
168
  return !1;
169
169
  }
170
170
  };
171
- function le(e) {
171
+ function ue(e) {
172
172
  return e >= 200 && e < 300 ? "ok" : e === 401 ? "session" : e === 403 ? "forbidden" : e === 422 ? "validation" : e >= 400 && e < 500 ? "client" : "server";
173
173
  }
174
- var k = (e) => e?.name === "AbortError";
175
- async function A(e, t = {}) {
174
+ var de = (e) => e?.name === "AbortError";
175
+ async function fe(e, t = {}) {
176
176
  let n = (t.method || "GET").toUpperCase(), r = t.navigate || ((e) => window.location.assign(e)), i = {
177
177
  Accept: "text/html",
178
178
  "X-Requested-With": "XMLHttpRequest",
179
179
  ...t.headers
180
180
  };
181
- if (!oe.has(n) && ce(e)) {
182
- let e = se();
181
+ if (!se.has(n) && le(e)) {
182
+ let e = ce();
183
183
  e && (i[e.header] = e.token);
184
184
  }
185
185
  let a = (e) => {
@@ -197,12 +197,12 @@ async function A(e, t = {}) {
197
197
  status: t?.status ?? 0,
198
198
  html: n,
199
199
  response: t,
200
- message: a(r(O.message)),
201
- redirect: r(O.redirect),
202
- result: r(O.result),
203
- keepOpen: r(O.keepOpen) === "1",
204
- toastVariant: r(O.toastVariant),
205
- fragment: r(O.fragment) === "1"
200
+ message: a(r(D.message)),
201
+ redirect: r(D.redirect),
202
+ result: r(D.result),
203
+ keepOpen: r(D.keepOpen) === "1",
204
+ toastVariant: r(D.toastVariant),
205
+ fragment: r(D.fragment) === "1"
206
206
  };
207
207
  }, s;
208
208
  try {
@@ -214,19 +214,19 @@ async function A(e, t = {}) {
214
214
  credentials: "same-origin"
215
215
  });
216
216
  } catch (e) {
217
- return o(k(e) || t.signal?.aborted ? "aborted" : "network");
217
+ return o(de(e) || t.signal?.aborted ? "aborted" : "network");
218
218
  }
219
- let c = le(s.status);
220
- if (c === "ok" && s.redirected && s.headers.get(O.fragment) !== "1" && (c = "session"), c === "session") return r(s.status === 401 ? s.headers.get("Location") || window.location.href : s.url), o(c, s);
219
+ let c = ue(s.status);
220
+ if (c === "ok" && s.redirected && s.headers.get(D.fragment) !== "1" && (c = "session"), c === "session") return r(s.status === 401 ? s.headers.get("Location") || window.location.href : s.url), o(c, s);
221
221
  let l = "";
222
222
  if (c === "ok" || c === "validation") try {
223
223
  l = await s.text();
224
224
  } catch (e) {
225
- return o(k(e) || t.signal?.aborted ? "aborted" : "network", s);
225
+ return o(de(e) || t.signal?.aborted ? "aborted" : "network", s);
226
226
  }
227
227
  return o(c, s, l);
228
228
  }
229
- function ue() {
229
+ function pe() {
230
230
  let e = null, t = 0;
231
231
  return {
232
232
  async run(n, r = {}) {
@@ -235,7 +235,7 @@ function ue() {
235
235
  e = i;
236
236
  let a = ++t, o = r.signal;
237
237
  o && (o.aborted ? i.abort() : o.addEventListener("abort", () => i.abort(), { once: !0 }));
238
- let s = await A(n, {
238
+ let s = await fe(n, {
239
239
  ...r,
240
240
  signal: i.signal
241
241
  });
@@ -252,12 +252,12 @@ function ue() {
252
252
  }
253
253
  //#endregion
254
254
  //#region src/remoteModal.js
255
- var de = "wui-remote-modal", fe = "wui-modal-fullscreen", pe = Object.freeze({
255
+ var O = "wui-remote-modal", me = "wui-modal-fullscreen", he = Object.freeze({
256
256
  sm: 380,
257
257
  md: 440,
258
258
  lg: 640,
259
259
  xl: 880
260
- }), j = Object.freeze({
260
+ }), k = Object.freeze({
261
261
  loading: "Loading",
262
262
  close: "Close",
263
263
  retry: "Try again",
@@ -268,38 +268,38 @@ var de = "wui-remote-modal", fe = "wui-modal-fullscreen", pe = Object.freeze({
268
268
  network: "Could not reach the server. Check your connection and try again.",
269
269
  submitFailed: "Your changes were not saved.",
270
270
  invalid: "Some fields need attention."
271
- }), me = "a[href],button:not([disabled]),input:not([disabled]):not([type=\"hidden\"]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex=\"-1\"])", he = "[aria-invalid=\"true\"], .is-invalid, .input-validation-error", ge = ".wui-error-summary, [data-wui-form-errors], .validation-summary-errors, [data-valmsg-summary]", _e = "[data-wui-modal-content]", ve = "<button type=\"button\" class=\"wui-modal-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M18 6 6 18M6 6l12 12\"></path></svg></button>", ye = /* @__PURE__ */ new WeakMap(), be = /* @__PURE__ */ new WeakSet(), xe = () => Object.assign(/* @__PURE__ */ Error("The remote modal load was aborted."), { name: "AbortError" }), Se = (e) => {
271
+ }), ge = "a[href],button:not([disabled]),input:not([disabled]):not([type=\"hidden\"]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex=\"-1\"])", _e = "[aria-invalid=\"true\"], .is-invalid, .input-validation-error", ve = ".wui-error-summary, [data-wui-form-errors], .validation-summary-errors, [data-valmsg-summary]", A = "[data-wui-modal-content]", ye = "<button type=\"button\" class=\"wui-modal-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M18 6 6 18M6 6l12 12\"></path></svg></button>", be = /* @__PURE__ */ new WeakMap(), xe = /* @__PURE__ */ new WeakSet(), Se = () => Object.assign(/* @__PURE__ */ Error("The remote modal load was aborted."), { name: "AbortError" }), Ce = (e) => {
272
272
  let t = window.bootstrap?.Modal;
273
273
  if (!t) throw Error(`WUI.modal.load(${String(e)}): Bootstrap's bundle (window.bootstrap) is not loaded on this page.`);
274
274
  return t;
275
- }, Ce = (e) => {
275
+ }, we = (e) => {
276
276
  let t = document.createElement("span");
277
277
  return t.textContent = e ?? "", t.innerHTML;
278
278
  };
279
- function we(e) {
279
+ function Te(e) {
280
280
  if (e == null || e === "") return null;
281
281
  if (e === "fullscreen") return { fullscreen: !0 };
282
- if (Object.hasOwn(pe, e)) return { px: pe[e] };
282
+ if (Object.hasOwn(he, e)) return { px: he[e] };
283
283
  let t = typeof e == "number" ? e : /^\d+$/.test(String(e)) ? Number(e) : NaN;
284
284
  if (Number.isInteger(t) && t > 0) return { px: t };
285
285
  throw TypeError(`Unsupported modal size "${String(e)}". Use sm, md, lg, xl, fullscreen or a px number.`);
286
286
  }
287
- var Te = (e) => {
287
+ var Ee = (e) => {
288
288
  if (e.classList.contains("wui-modal-fullscreen")) return { fullscreen: !0 };
289
289
  let t = Number.parseInt(e.style.getPropertyValue("--wui-modal-max-width"), 10);
290
- return { px: t > 0 ? t : pe.md };
291
- }, Ee = (e, t) => {
292
- e.classList.toggle(fe, !!t.fullscreen), t.fullscreen ? e.style.removeProperty("--wui-modal-max-width") : e.style.setProperty("--wui-modal-max-width", `${t.px}px`);
293
- }, De = ["center", "top"];
294
- function Oe() {
295
- let e = document.getElementById(de);
296
- return e || (e = document.createElement("div"), e.id = de, e.className = "modal fade wui-modal-shell", e.tabIndex = -1, e.setAttribute("aria-hidden", "true"), e.setAttribute("role", "dialog"), e.setAttribute("aria-modal", "true"), e.style.setProperty("--wui-modal-max-width", `${pe.md}px`), e.innerHTML = "<div class=\"modal-dialog modal-dialog-centered wui-rb-dialog\"><div class=\"modal-content wui-modal\"></div></div>", document.body.appendChild(e), e);
297
- }
298
- var ke = (e) => `<div class="wui-modal-header"><div class="wui-modal-heading"><div class="wui-modal-headtext"><div class="wui-modal-title">${Ce(e)}</div></div></div>${ve}</div>`, Ae = (e) => `<div class="modal-content wui-modal" aria-busy="true">${ke(e)}<div class="wui-modal-body"><div class="wui-modal-loading" role="status"><span class="visually-hidden">${Ce(j.loading)}</span><div class="skeleton wui-modal-skeleton"></div><div class="skeleton wui-modal-skeleton"></div><div class="skeleton wui-modal-skeleton wui-modal-skeleton--short"></div></div></div></div>`, je = (e, t) => `<div class="modal-content wui-modal" data-wui-modal-error="${Ce(t)}">${ke(e)}<div class="wui-modal-body"><div class="wui-modal-state" role="alert"><p class="wui-modal-state-title">${Ce(j.errorTitle)}</p><p class="wui-modal-state-text">${Ce(j[t] || j.server)}</p><div class="wui-modal-state-actions"><button type="button" class="btn btn-secondary" data-bs-dismiss="modal">${Ce(j.close)}</button><button type="button" class="btn btn-primary" data-wui-modal-retry>${Ce(j.retry)}</button></div></div></div></div>`, Me = (e) => {
290
+ return { px: t > 0 ? t : he.md };
291
+ }, De = (e, t) => {
292
+ e.classList.toggle(me, !!t.fullscreen), t.fullscreen ? e.style.removeProperty("--wui-modal-max-width") : e.style.setProperty("--wui-modal-max-width", `${t.px}px`);
293
+ }, Oe = ["center", "top"];
294
+ function ke() {
295
+ let e = document.getElementById(O);
296
+ return e || (e = document.createElement("div"), e.id = O, e.className = "modal fade wui-modal-shell", e.tabIndex = -1, e.setAttribute("aria-hidden", "true"), e.setAttribute("role", "dialog"), e.setAttribute("aria-modal", "true"), e.style.setProperty("--wui-modal-max-width", `${he.md}px`), e.innerHTML = "<div class=\"modal-dialog modal-dialog-centered wui-rb-dialog\"><div class=\"modal-content wui-modal\"></div></div>", document.body.appendChild(e), e);
297
+ }
298
+ var Ae = (e) => `<div class="wui-modal-header"><div class="wui-modal-heading"><div class="wui-modal-headtext"><div class="wui-modal-title">${we(e)}</div></div></div>${ye}</div>`, je = (e) => `<div class="modal-content wui-modal" aria-busy="true">${Ae(e)}<div class="wui-modal-body"><div class="wui-modal-loading" role="status"><span class="visually-hidden">${we(k.loading)}</span><div class="skeleton wui-modal-skeleton"></div><div class="skeleton wui-modal-skeleton"></div><div class="skeleton wui-modal-skeleton wui-modal-skeleton--short"></div></div></div></div>`, Me = (e, t) => `<div class="modal-content wui-modal" data-wui-modal-error="${we(t)}">${Ae(e)}<div class="wui-modal-body"><div class="wui-modal-state" role="alert"><p class="wui-modal-state-title">${we(k.errorTitle)}</p><p class="wui-modal-state-text">${we(k[t] || k.server)}</p><div class="wui-modal-state-actions"><button type="button" class="btn btn-secondary" data-bs-dismiss="modal">${we(k.close)}</button><button type="button" class="btn btn-primary" data-wui-modal-retry>${we(k.retry)}</button></div></div></div></div>`, Ne = (e) => {
299
299
  let t = document.createElement("template");
300
300
  return t.innerHTML = e, t.content.querySelector(".modal-content");
301
- }, Ne = (e) => e.shell.querySelector(".modal-content");
302
- function Pe(e) {
301
+ }, Pe = (e) => e.shell.querySelector(".modal-content");
302
+ function Fe(e) {
303
303
  if (!e) return;
304
304
  e.dispatchEvent(new CustomEvent("wui:teardown", { bubbles: !0 }));
305
305
  let t = window.bootstrap, n = [
@@ -309,51 +309,51 @@ function Pe(e) {
309
309
  ].filter((e) => e?.getInstance);
310
310
  for (let t of [e, ...e.querySelectorAll("*")]) for (let e of n) e.getInstance(t)?.dispose();
311
311
  }
312
- function Fe(e, t) {
313
- let n = Ne(e);
314
- Pe(n), n ? n.replaceWith(t) : e.shell.querySelector(".modal-dialog").appendChild(t), window.WUI?.refresh?.();
312
+ function Ie(e, t) {
313
+ let n = Pe(e);
314
+ Fe(n), n ? n.replaceWith(t) : e.shell.querySelector(".modal-dialog").appendChild(t), window.WUI?.refresh?.();
315
315
  }
316
- var Ie = (e) => e.shell.classList.contains("show");
317
- function Le(e, t) {
318
- let n = t && e.querySelector(he), r = n ? n.matches(me) ? n : n.querySelector(me) || n : null;
316
+ var Le = (e) => e.shell.classList.contains("show");
317
+ function Re(e, t) {
318
+ let n = t && e.querySelector(_e), r = n ? n.matches(ge) ? n : n.querySelector(ge) || n : null;
319
319
  if (!r) {
320
- let t = [...e.querySelectorAll(me)];
320
+ let t = [...e.querySelectorAll(ge)];
321
321
  r = e.querySelector("[data-autofocus]") || t.find((e) => !e.classList.contains("wui-modal-close")) || t[0] || e;
322
322
  }
323
323
  r.focus?.();
324
324
  }
325
- function Re(e, t) {
325
+ function ze(e, t) {
326
326
  let n = e.shell.querySelector("[data-wui-modal-live]");
327
327
  n || (n = document.createElement("div"), n.className = "visually-hidden", n.setAttribute("aria-live", "assertive"), n.setAttribute("data-wui-modal-live", ""), e.shell.querySelector(".modal-dialog").appendChild(n)), n.textContent = "", n.textContent = t;
328
328
  }
329
- var ze = (e, t, n) => e.dispatchEvent(new CustomEvent(t, {
329
+ var Be = (e, t, n) => e.dispatchEvent(new CustomEvent(t, {
330
330
  bubbles: !0,
331
331
  detail: n
332
332
  }));
333
- function Be(e) {
334
- let t = ye.get(e);
333
+ function Ve(e) {
334
+ let t = be.get(e);
335
335
  return t || (t = {
336
336
  shell: e,
337
- queue: ue(),
338
- defaultSize: Te(e),
337
+ queue: pe(),
338
+ defaultSize: Ee(e),
339
339
  defaultLabel: e.getAttribute("aria-label"),
340
- placeholder: Ne({ shell: e })?.outerHTML || "<div class=\"modal-content wui-modal\"></div>",
340
+ placeholder: Pe({ shell: e })?.outerHTML || "<div class=\"modal-content wui-modal\"></div>",
341
341
  remoteUrl: e.getAttribute("data-wui-remote-url"),
342
342
  cache: e.getAttribute("data-wui-remote-cache") === "true",
343
343
  loadedUrl: null,
344
344
  session: null
345
- }, ye.set(e, t), e.addEventListener("submit", (e) => $e(t, e)), e.addEventListener("click", (e) => {
346
- !e.target.closest?.("[data-wui-modal-retry]") || !t.session || (e.preventDefault(), Ke(t, t.session));
345
+ }, be.set(e, t), e.addEventListener("submit", (e) => et(t, e)), e.addEventListener("click", (e) => {
346
+ !e.target.closest?.("[data-wui-modal-retry]") || !t.session || (e.preventDefault(), qe(t, t.session));
347
347
  }), e.addEventListener("hidden.bs.modal", (n) => {
348
- n.target === e && Ue(t);
348
+ n.target === e && We(t);
349
349
  }), e.addEventListener("shown.bs.modal", (n) => {
350
- let r = Ne(t);
351
- n.target === e && t.session && r?.matches(_e) && !r.contains(document.activeElement) && Le(r, !1);
350
+ let r = Pe(t);
351
+ n.target === e && t.session && r?.matches(A) && !r.contains(document.activeElement) && Re(r, !1);
352
352
  }), t.remoteUrl && e.addEventListener("show.bs.modal", (n) => {
353
- n.target === e && We(t, n);
353
+ n.target === e && Ge(t, n);
354
354
  }), t);
355
355
  }
356
- function Ve(e, t, n) {
356
+ function He(e, t, n) {
357
357
  e.session && (e.queue.abort(), e.session.resolveClosed({
358
358
  status: "dismissed",
359
359
  detail: { replaced: !0 }
@@ -374,17 +374,17 @@ function Ve(e, t, n) {
374
374
  return a.handle = {
375
375
  el: e.shell,
376
376
  closed: i,
377
- close: () => He(e, a, "dismissed", null),
378
- reload: () => Ke(e, a)
377
+ close: () => Ue(e, a, "dismissed", null),
378
+ reload: () => qe(e, a)
379
379
  }, e.session = a, a;
380
380
  }
381
- function He(e, t, n, r) {
381
+ function Ue(e, t, n, r) {
382
382
  e.session === t && (t.closing = {
383
383
  status: n,
384
384
  detail: r
385
385
  }, window.bootstrap?.Modal?.getOrCreateInstance(e.shell).hide());
386
386
  }
387
- function Ue(e) {
387
+ function We(e) {
388
388
  let t = e.session;
389
389
  if (e.queue.abort(), e.session = null, t) {
390
390
  let { status: n, detail: r } = t.closing || {
@@ -394,28 +394,28 @@ function Ue(e) {
394
394
  t.resolveClosed({
395
395
  status: n,
396
396
  detail: r
397
- }), ze(e.shell, "wui:modal:closed", {
397
+ }), Be(e.shell, "wui:modal:closed", {
398
398
  status: n,
399
399
  url: t.url
400
400
  });
401
401
  let i = document.activeElement;
402
402
  t.trigger?.isConnected && (!i || i === document.body || e.shell.contains(i)) && t.trigger.focus?.();
403
403
  }
404
- e.cache || (Fe(e, Me(e.placeholder)), e.loadedUrl = null, Ee(e.shell, e.defaultSize), e.defaultLabel ? e.shell.setAttribute("aria-label", e.defaultLabel) : e.shell.removeAttribute("aria-label"));
404
+ e.cache || (Ie(e, Ne(e.placeholder)), e.loadedUrl = null, De(e.shell, e.defaultSize), e.defaultLabel ? e.shell.setAttribute("aria-label", e.defaultLabel) : e.shell.removeAttribute("aria-label"));
405
405
  }
406
- function We(e, t) {
407
- let n = t.relatedTarget instanceof Element ? t.relatedTarget : null, r = n?.getAttribute("data-wui-url") || e.remoteUrl, i = Ve(e, r, { trigger: n });
408
- i.explicitSize = Ge(n?.getAttribute("data-wui-size")), i.explicitSize && Ee(e.shell, i.explicitSize), !(e.cache && e.loadedUrl === r) && (e.loadedUrl && Fe(e, Me(e.placeholder)), Ke(e, i, { keepPlaceholder: !0 }));
406
+ function Ge(e, t) {
407
+ let n = t.relatedTarget instanceof Element ? t.relatedTarget : null, r = n?.getAttribute("data-wui-url") || e.remoteUrl, i = He(e, r, { trigger: n });
408
+ i.explicitSize = Ke(n?.getAttribute("data-wui-size")), i.explicitSize && De(e.shell, i.explicitSize), !(e.cache && e.loadedUrl === r) && (e.loadedUrl && Ie(e, Ne(e.placeholder)), qe(e, i, { keepPlaceholder: !0 }));
409
409
  }
410
- function Ge(e) {
410
+ function Ke(e) {
411
411
  try {
412
- return we(e);
412
+ return Te(e);
413
413
  } catch (e) {
414
414
  return console.error(e), null;
415
415
  }
416
416
  }
417
- async function Ke(e, t, { keepPlaceholder: n = !1 } = {}) {
418
- n || Fe(e, Me(Ae(t.options.title || qe(e))));
417
+ async function qe(e, t, { keepPlaceholder: n = !1 } = {}) {
418
+ n || Ie(e, Ne(je(t.options.title || Je(e))));
419
419
  let r = await e.queue.run(t.url, {
420
420
  method: t.method,
421
421
  body: t.body,
@@ -423,19 +423,19 @@ async function Ke(e, t, { keepPlaceholder: n = !1 } = {}) {
423
423
  });
424
424
  if (e.session !== t || r.kind === "aborted" || r.kind === "stale") return "aborted";
425
425
  if (r.kind === "session") return "session";
426
- if ((r.kind === "ok" || r.kind === "validation") && Je(e, t, r.html, !1)) return e.loadedUrl = t.url, ze(e.shell, "wui:modal:loaded", {
426
+ if ((r.kind === "ok" || r.kind === "validation") && Ye(e, t, r.html, !1)) return e.loadedUrl = t.url, Be(e.shell, "wui:modal:loaded", {
427
427
  url: t.url,
428
428
  handle: t.handle
429
429
  }), "loaded";
430
430
  let i = r.kind === "ok" || r.kind === "validation" ? "server" : r.kind;
431
- return Fe(e, Me(je(t.options.title || qe(e), i))), Ie(e) && Le(Ne(e), !1), ze(e.shell, "wui:modal:error", {
431
+ return Ie(e, Ne(Me(t.options.title || Je(e), i))), Le(e) && Re(Pe(e), !1), Be(e.shell, "wui:modal:error", {
432
432
  url: t.url,
433
433
  kind: i,
434
434
  status: r.status
435
435
  }), "error";
436
436
  }
437
- var qe = (e) => Ne(e)?.querySelector(".wui-modal-title")?.textContent || e.shell.getAttribute("aria-label") || "";
438
- function Je(e, t, n, r) {
437
+ var Je = (e) => Pe(e)?.querySelector(".wui-modal-title")?.textContent || e.shell.getAttribute("aria-label") || "";
438
+ function Ye(e, t, n, r) {
439
439
  let i = document.createElement("template");
440
440
  i.innerHTML = n;
441
441
  let a = i.content.querySelectorAll("script");
@@ -443,15 +443,15 @@ function Je(e, t, n, r) {
443
443
  console.warn(`WUI.modal: ${t.url} returned a fragment with script; it was removed. Keep page behaviour in the page.`);
444
444
  for (let e of a) e.remove();
445
445
  }
446
- let o = i.content.querySelector(_e);
446
+ let o = i.content.querySelector(A);
447
447
  if (!o) return console.error(`WUI.modal: ${t.url} did not answer with an <app-modal-content> fragment.`), !1;
448
- Fe(e, o), Ee(e.shell, t.explicitSize || Ge(o.getAttribute("data-wui-size")) || e.defaultSize);
448
+ Ie(e, o), De(e.shell, t.explicitSize || Ke(o.getAttribute("data-wui-size")) || e.defaultSize);
449
449
  let s = o.getAttribute("data-wui-title");
450
- return s && e.shell.setAttribute("aria-label", s), Ie(e) && Le(o, r), !0;
450
+ return s && e.shell.setAttribute("aria-label", s), Le(e) && Re(o, r), !0;
451
451
  }
452
- var Ye = "button[type=\"submit\"], button:not([type]), input[type=\"submit\"], input[type=\"image\"]";
453
- function Xe(e, t, n) {
454
- let r = [...e.elements].filter((e) => e.matches(Ye));
452
+ var Xe = "button[type=\"submit\"], button:not([type]), input[type=\"submit\"], input[type=\"image\"]";
453
+ function Ze(e, t, n) {
454
+ let r = [...e.elements].filter((e) => e.matches(Xe));
455
455
  if (n) {
456
456
  e.setAttribute("data-wui-submitting", "");
457
457
  let n = t && r.includes(t) ? t : r[0];
@@ -462,45 +462,45 @@ function Xe(e, t, n) {
462
462
  e.removeAttribute("data-wui-submitting");
463
463
  for (let e of r) e.disabled = e.hasAttribute("data-wui-was-disabled"), e.removeAttribute("data-wui-was-disabled"), e.classList.remove("is-loading"), e.removeAttribute("aria-busy"), e.querySelector("[data-wui-submit-spinner]")?.remove();
464
464
  }
465
- function Ze(e, t, n) {
465
+ function Qe(e, t, n) {
466
466
  let r = t.closest(".wui-modal-body") || t;
467
467
  r.querySelector("[data-wui-modal-submit-error]")?.remove();
468
468
  let i = document.createElement("div");
469
- i.className = "alert alert-danger wui-modal-submit-error", i.setAttribute("role", "alert"), i.setAttribute("data-wui-modal-submit-error", ""), i.textContent = `${j.submitFailed} ${j[n] || j.server}`, r.prepend(i), Re(e, i.textContent);
469
+ i.className = "alert alert-danger wui-modal-submit-error", i.setAttribute("role", "alert"), i.setAttribute("data-wui-modal-submit-error", ""), i.textContent = `${k.submitFailed} ${k[n] || k.server}`, r.prepend(i), ze(e, i.textContent);
470
470
  }
471
- var Qe = (e, t) => {
471
+ var $e = (e, t) => {
472
472
  let n = new URL(e, window.location.href);
473
473
  for (let [e, r] of t) typeof r == "string" && n.searchParams.append(e, r);
474
474
  return n.origin === window.location.origin ? n.pathname + n.search : n.href;
475
475
  };
476
- async function $e(e, t) {
476
+ async function et(e, t) {
477
477
  let n = t.target, r = e.session;
478
- if (!(n instanceof HTMLFormElement) || !r || n.hasAttribute("data-wui-native") || !n.closest(_e) || (t.preventDefault(), n.hasAttribute("data-wui-submitting"))) return;
478
+ if (!(n instanceof HTMLFormElement) || !r || n.hasAttribute("data-wui-native") || !n.closest(A) || (t.preventDefault(), n.hasAttribute("data-wui-submitting"))) return;
479
479
  let i = t.submitter || null, a = i?.getAttribute("formaction") || n.getAttribute("action") || r.url, o = (i?.getAttribute("formmethod") || n.getAttribute("method") || "GET").toUpperCase(), s = new FormData(n);
480
480
  i?.name && !s.has(i.name) && s.append(i.name, i.value);
481
481
  let c = o === "GET";
482
- Xe(n, i, !0);
483
- let l = await e.queue.run(c ? Qe(a, s) : a, {
482
+ Ze(n, i, !0);
483
+ let l = await e.queue.run(c ? $e(a, s) : a, {
484
484
  method: o,
485
485
  body: c ? void 0 : s,
486
486
  navigate: r.options.navigate
487
487
  });
488
488
  if (e.session === r) {
489
- if (n.isConnected && Xe(n, i, !1), l.kind === "ok" && l.result === "success") {
490
- et(e, r, l);
489
+ if (n.isConnected && Ze(n, i, !1), l.kind === "ok" && l.result === "success") {
490
+ tt(e, r, l);
491
491
  return;
492
492
  }
493
493
  if (!(l.kind === "aborted" || l.kind === "stale" || l.kind === "session")) {
494
- if (l.kind === "validation" && Je(e, r, l.html, !0)) {
495
- let t = Ne(e).querySelector(ge)?.textContent.replace(/\s+/g, " ").trim();
496
- Re(e, t || j.invalid);
494
+ if (l.kind === "validation" && Ye(e, r, l.html, !0)) {
495
+ let t = Pe(e).querySelector(ve)?.textContent.replace(/\s+/g, " ").trim();
496
+ ze(e, t || k.invalid);
497
497
  return;
498
498
  }
499
- l.kind === "ok" && l.html && Je(e, r, l.html, !1) || Ze(e, n, l.kind === "ok" || l.kind === "validation" ? "server" : l.kind);
499
+ l.kind === "ok" && l.html && Ye(e, r, l.html, !1) || Qe(e, n, l.kind === "ok" || l.kind === "validation" ? "server" : l.kind);
500
500
  }
501
501
  }
502
502
  }
503
- function et(e, t, n) {
503
+ function tt(e, t, n) {
504
504
  let r = n.message, i = n.redirect || null, a = {
505
505
  url: t.url,
506
506
  trigger: t.trigger,
@@ -508,15 +508,15 @@ function et(e, t, n) {
508
508
  message: r,
509
509
  redirect: i
510
510
  };
511
- if (r && window.WUI?.toast?.(r, { variant: "success" }), ze(t.trigger?.isConnected ? t.trigger : document, "wui:modal:success", a), t.options.onSuccess?.(a, t.handle), i && (t.options.navigate || ((e) => window.location.assign(e)))(i), n.keepOpen) {
512
- n.html && Je(e, t, n.html, !1);
511
+ if (r && window.WUI?.toast?.(r, { variant: "success" }), Be(t.trigger?.isConnected ? t.trigger : document, "wui:modal:success", a), t.options.onSuccess?.(a, t.handle), i && (t.options.navigate || ((e) => window.location.assign(e)))(i), n.keepOpen) {
512
+ n.html && Ye(e, t, n.html, !1);
513
513
  return;
514
514
  }
515
- He(e, t, "success", a);
515
+ Ue(e, t, "success", a);
516
516
  }
517
- function tt(e) {
517
+ function nt(e) {
518
518
  let t = e.target.closest?.("[data-wui-modal]");
519
- t && (t.matches("a[href]") && (e.ctrlKey || e.metaKey || e.shiftKey || e.button !== 0) || (e.preventDefault(), rt(t.getAttribute("data-wui-modal"), {
519
+ t && (t.matches("a[href]") && (e.ctrlKey || e.metaKey || e.shiftKey || e.button !== 0) || (e.preventDefault(), it(t.getAttribute("data-wui-modal"), {
520
520
  size: t.getAttribute("data-wui-size") || void 0,
521
521
  title: t.getAttribute("data-wui-title") || void 0,
522
522
  trigger: t
@@ -524,34 +524,34 @@ function tt(e) {
524
524
  e?.name !== "AbortError" && console.error(e);
525
525
  })));
526
526
  }
527
- function nt(e = document) {
527
+ function rt(e = document) {
528
528
  let t = e.ownerDocument || e;
529
- be.has(t) || (be.add(t), t.addEventListener("click", tt));
529
+ xe.has(t) || (xe.add(t), t.addEventListener("click", nt));
530
530
  let n = [...e.querySelectorAll?.(".modal[data-wui-remote-url]") || []];
531
531
  e.matches?.(".modal[data-wui-remote-url]") && n.unshift(e);
532
- for (let e of n) Be(e);
532
+ for (let e of n) Ve(e);
533
533
  }
534
- function rt(e, t = {}) {
534
+ function it(e, t = {}) {
535
535
  try {
536
536
  if (!e) throw TypeError("WUI.modal.load: a fragment url is required.");
537
- let n = Se(e), r = we(t.size), i = t.placement || "center";
538
- if (!De.includes(i)) throw TypeError(`WUI.modal.load: unsupported placement "${i}". Use center or top.`);
539
- if (t.signal?.aborted) return Promise.reject(xe());
540
- let a = Oe();
541
- nt(document);
542
- let o = Be(a), s = Ie(o), c = Ve(o, e, t);
543
- c.explicitSize = r, Ee(a, r || o.defaultSize), a.querySelector(".modal-dialog").classList.toggle("modal-dialog-centered", i === "center"), t.title && a.setAttribute("aria-label", t.title), s || (n.getInstance(a)?.dispose(), n.getOrCreateInstance(a, {
537
+ let n = Ce(e), r = Te(t.size), i = t.placement || "center";
538
+ if (!Oe.includes(i)) throw TypeError(`WUI.modal.load: unsupported placement "${i}". Use center or top.`);
539
+ if (t.signal?.aborted) return Promise.reject(Se());
540
+ let a = ke();
541
+ rt(document);
542
+ let o = Ve(a), s = Le(o), c = He(o, e, t);
543
+ c.explicitSize = r, De(a, r || o.defaultSize), a.querySelector(".modal-dialog").classList.toggle("modal-dialog-centered", i === "center"), t.title && a.setAttribute("aria-label", t.title), s || (n.getInstance(a)?.dispose(), n.getOrCreateInstance(a, {
544
544
  backdrop: !t.staticBackdrop || "static",
545
545
  keyboard: !t.staticBackdrop
546
546
  }));
547
- let l = s ? Promise.resolve() : new Promise((e) => a.addEventListener("shown.bs.modal", () => e(), { once: !0 })), u = Ke(o, c);
547
+ let l = s ? Promise.resolve() : new Promise((e) => a.addEventListener("shown.bs.modal", () => e(), { once: !0 })), u = qe(o, c);
548
548
  s || n.getOrCreateInstance(a).show();
549
549
  let d = new Promise((e, n) => {
550
550
  t.signal?.addEventListener("abort", () => {
551
- o.session === c && (o.queue.abort(), He(o, c, "dismissed", { aborted: !0 })), n(xe());
551
+ o.session === c && (o.queue.abort(), Ue(o, c, "dismissed", { aborted: !0 })), n(Se());
552
552
  }, { once: !0 });
553
553
  }), f = Promise.all([l, u]).then(([, t]) => {
554
- if (t === "aborted") throw xe();
554
+ if (t === "aborted") throw Se();
555
555
  if (t === "session") throw Error(`WUI.modal.load(${e}): the session expired; the browser is signing in again.`);
556
556
  return c.handle;
557
557
  });
@@ -562,18 +562,18 @@ function rt(e, t = {}) {
562
562
  }
563
563
  //#endregion
564
564
  //#region src/kanban.js
565
- var it = Object.freeze([
565
+ var at = Object.freeze([
566
566
  "neutral",
567
567
  "primary",
568
568
  "info",
569
569
  "success",
570
570
  "warning",
571
571
  "danger"
572
- ]), at = Object.freeze([
572
+ ]), ot = Object.freeze([
573
573
  "number",
574
574
  "currency",
575
575
  "compact"
576
- ]), ot = "wui-kanban:", st = "(max-width: 767.98px)", ct = 400, lt = 6, M = Object.freeze({
576
+ ]), st = "wui-kanban:", ct = "(max-width: 767.98px)", lt = 400, ut = 6, j = Object.freeze({
577
577
  help: "Press Space to pick up the card. Use the Left and Right arrow keys to choose a column, then Space to drop it, or Escape to cancel.",
578
578
  empty: "Nothing here",
579
579
  collapse: (e) => `Collapse ${e}`,
@@ -597,16 +597,16 @@ var it = Object.freeze([
597
597
  server: "Something went wrong on our side, so the card went back. Try again in a moment.",
598
598
  network: "Could not reach the server, so the card went back. Check your connection and try again."
599
599
  })
600
- }), ut = "[data-wui-column]", dt = "[data-wui-body]", ft = "[data-wui-card]", pt = "[data-wui-count]", mt = "[data-wui-summary]", ht = "[data-wui-empty]", gt = "[data-wui-drop-note]", _t = "[data-wui-live]", vt = "[data-wui-help]", yt = "[data-wui-switch]", bt = "[data-wui-scroller]", xt = "[data-wui-collapse]", St = "input, select, textarea, [contenteditable=\"\"], [contenteditable=\"true\"], [data-wui-no-drag]", Ct = 48, wt = 16, N = (e) => e.getAttribute("data-wui-column"), Tt = (e) => e.getAttribute("data-wui-card"), Et = (e) => e.hidden || e.hasAttribute("hidden");
601
- function P(e) {
600
+ }), dt = "[data-wui-column]", ft = "[data-wui-body]", pt = "[data-wui-card]", mt = "[data-wui-count]", ht = "[data-wui-summary]", gt = "[data-wui-empty]", _t = "[data-wui-drop-note]", vt = "[data-wui-live]", yt = "[data-wui-help]", bt = "[data-wui-switch]", xt = "[data-wui-scroller]", St = "[data-wui-collapse]", Ct = "input, select, textarea, [contenteditable=\"\"], [contenteditable=\"true\"], [data-wui-no-drag]", wt = 48, Tt = 16, M = (e) => e.getAttribute("data-wui-column"), Et = (e) => e.getAttribute("data-wui-card"), Dt = (e) => e.hidden || e.hasAttribute("hidden");
601
+ function N(e) {
602
602
  let t = (e.getAttribute("aria-label") || e.textContent || "").replace(/\s+/g, " ").trim();
603
- return t.length > 80 ? `${t.slice(0, 79)}…` : t || Tt(e) || "Card";
603
+ return t.length > 80 ? `${t.slice(0, 79)}…` : t || Et(e) || "Card";
604
604
  }
605
- function Dt(e) {
606
- return e ? `${ot}${e}` : null;
605
+ function Ot(e) {
606
+ return e ? `${st}${e}` : null;
607
607
  }
608
- function Ot(e, t = globalThis.localStorage) {
609
- let n = Dt(e);
608
+ function kt(e, t = globalThis.localStorage) {
609
+ let n = Ot(e);
610
610
  if (!n || !t) return {};
611
611
  try {
612
612
  let e = JSON.parse(t.getItem(n) || "null");
@@ -615,19 +615,19 @@ function Ot(e, t = globalThis.localStorage) {
615
615
  return {};
616
616
  }
617
617
  }
618
- function kt(e, t, n, r = globalThis.localStorage) {
619
- let i = Dt(e);
618
+ function At(e, t, n, r = globalThis.localStorage) {
619
+ let i = Ot(e);
620
620
  if (!i || !r) return;
621
621
  let a = {
622
- ...Ot(e, r),
622
+ ...kt(e, r),
623
623
  [t]: !!n
624
624
  };
625
625
  try {
626
626
  r.setItem(i, JSON.stringify({ collapsed: a }));
627
627
  } catch {}
628
628
  }
629
- function At(e, t) {
630
- if (!at.includes(e)) throw TypeError(`Unsupported kanban summary format "${String(e)}". Use ${at.join(", ")}.`);
629
+ function jt(e, t) {
630
+ if (!ot.includes(e)) throw TypeError(`Unsupported kanban summary format "${String(e)}". Use ${ot.join(", ")}.`);
631
631
  if (t != null && t !== "" && !r.includes(t)) throw TypeError(`Unsupported kanban summary unit "${String(t)}". Use ${r.join(", ")}.`);
632
632
  return e === "currency" ? {
633
633
  style: "currency",
@@ -641,7 +641,7 @@ function At(e, t) {
641
641
  decimals: 0
642
642
  };
643
643
  }
644
- function jt(e) {
644
+ function Mt(e) {
645
645
  let t = 0;
646
646
  for (let n of e) {
647
647
  if (n == null || n === "") continue;
@@ -650,9 +650,9 @@ function jt(e) {
650
650
  }
651
651
  return t;
652
652
  }
653
- var Mt = (e, t) => {
653
+ var Nt = (e, t) => {
654
654
  e && window.WUI?.toast?.(e, { variant: t });
655
- }, Nt = class extends e {
655
+ }, Pt = class extends e {
656
656
  constructor() {
657
657
  super(), this._wired = !1, this._filter = null, this._press = null, this._drag = null, this._kbd = null, this._suppressClick = !1, this._observer = null, this._refreshQueued = !1, this._scrollTimer = 0, this._onPointerMove = (e) => this._pointerMove(e), this._onPointerUp = (e) => this._pointerUp(e), this._onPointerCancel = () => this._endPointer(!1), this._onDocKeyDown = (e) => {
658
658
  e.key === "Escape" && this._drag && (e.preventDefault(), this._endPointer(!1));
@@ -666,17 +666,17 @@ var Mt = (e, t) => {
666
666
  connectedCallback() {
667
667
  if (!this._wired) {
668
668
  this._wired = !0, this.addEventListener("pointerdown", (e) => this._pointerDown(e)), this.addEventListener("keydown", (e) => this._keyDown(e)), this.addEventListener("click", (e) => this._click(e), !0), this.addEventListener("dragstart", (e) => {
669
- e.target.closest?.(ft) && e.preventDefault();
669
+ e.target.closest?.(pt) && e.preventDefault();
670
670
  }), this.addEventListener("touchmove", (e) => {
671
671
  this._drag && e.preventDefault();
672
672
  }, { passive: !1 }), this._scroller()?.addEventListener("scroll", this._onScroll, { passive: !0 }), this._restoreCollapsed();
673
673
  for (let e of this._allCards()) this._prepareCard(e);
674
674
  if (typeof MutationObserver == "function") {
675
675
  this._observer = new MutationObserver((e) => {
676
- for (let t of e) for (let e of t.addedNodes) e.nodeType === 1 && e.matches(ft) && this._prepareCard(e);
676
+ for (let t of e) for (let e of t.addedNodes) e.nodeType === 1 && e.matches(pt) && this._prepareCard(e);
677
677
  this._queueRefresh();
678
678
  });
679
- for (let e of this.querySelectorAll(dt)) this._observer.observe(e, { childList: !0 });
679
+ for (let e of this.querySelectorAll(ft)) this._observer.observe(e, { childList: !0 });
680
680
  }
681
681
  this.refresh();
682
682
  }
@@ -695,13 +695,13 @@ var Mt = (e, t) => {
695
695
  let e = this._summaryFormat();
696
696
  for (let t of this._columns()) {
697
697
  let n = 0, r = [];
698
- for (let e of this._cardsIn(t)) this._filter && (e.hidden = this._filter(e) === !1), !Et(e) && (n++, r.push(e.getAttribute("data-wui-value")));
698
+ for (let e of this._cardsIn(t)) this._filter && (e.hidden = this._filter(e) === !1), !Dt(e) && (n++, r.push(e.getAttribute("data-wui-value")));
699
699
  let i = String(n);
700
700
  for (let e of this._countsOf(t)) e.textContent !== i && (e.textContent = i);
701
- let a = t.querySelector(ht);
701
+ let a = t.querySelector(gt);
702
702
  if (a && (a.hidden = n > 0), e) {
703
- let n = t.querySelector(mt);
704
- n && (n.textContent = re(jt(r), e));
703
+ let n = t.querySelector(ht);
704
+ n && (n.textContent = ie(Mt(r), e));
705
705
  }
706
706
  }
707
707
  }
@@ -712,43 +712,43 @@ var Mt = (e, t) => {
712
712
  return this._commit(r, t, n);
713
713
  }
714
714
  _columns() {
715
- return [...this.querySelectorAll(ut)];
715
+ return [...this.querySelectorAll(dt)];
716
716
  }
717
717
  _columnByKey(e) {
718
- return this._columns().find((t) => N(t) === e) || null;
718
+ return this._columns().find((t) => M(t) === e) || null;
719
719
  }
720
720
  _columnOf(e) {
721
- return e.closest(ut);
721
+ return e.closest(dt);
722
722
  }
723
723
  _titleOf(e) {
724
- return (e.querySelector(".wui-kanban-title")?.textContent || N(e) || "").replace(/\s+/g, " ").trim();
724
+ return (e.querySelector(".wui-kanban-title")?.textContent || M(e) || "").replace(/\s+/g, " ").trim();
725
725
  }
726
726
  _bodyOf(e) {
727
- return e.querySelector(dt);
727
+ return e.querySelector(ft);
728
728
  }
729
729
  _cardsIn(e) {
730
730
  let t = this._bodyOf(e);
731
- return t ? [...t.children].filter((e) => e.matches(ft)) : [];
731
+ return t ? [...t.children].filter((e) => e.matches(pt)) : [];
732
732
  }
733
733
  _visibleCardsIn(e) {
734
- return this._cardsIn(e).filter((e) => !Et(e));
734
+ return this._cardsIn(e).filter((e) => !Dt(e));
735
735
  }
736
736
  _allCards() {
737
- return [...this.querySelectorAll(`${dt} > ${ft}`)];
737
+ return [...this.querySelectorAll(`${ft} > ${pt}`)];
738
738
  }
739
739
  _cardByKey(e) {
740
- return this._allCards().find((t) => Tt(t) === e) || null;
740
+ return this._allCards().find((t) => Et(t) === e) || null;
741
741
  }
742
742
  _countsOf(e) {
743
- let t = N(e), n = [...this.querySelectorAll(yt)].filter((e) => e.getAttribute("data-wui-switch") === t);
744
- return [...e.querySelectorAll(pt), ...n.flatMap((e) => [...e.querySelectorAll(pt)])];
743
+ let t = M(e), n = [...this.querySelectorAll(bt)].filter((e) => e.getAttribute("data-wui-switch") === t);
744
+ return [...e.querySelectorAll(mt), ...n.flatMap((e) => [...e.querySelectorAll(mt)])];
745
745
  }
746
746
  _scroller() {
747
- return this.querySelector(bt);
747
+ return this.querySelector(xt);
748
748
  }
749
749
  _summaryFormat() {
750
750
  let e = this.getAttribute("summary-format");
751
- return e ? At(e, this.getAttribute("summary-unit")) : null;
751
+ return e ? jt(e, this.getAttribute("summary-unit")) : null;
752
752
  }
753
753
  _queueRefresh() {
754
754
  this._refreshQueued || (this._refreshQueued = !0, queueMicrotask(() => {
@@ -756,11 +756,11 @@ var Mt = (e, t) => {
756
756
  }));
757
757
  }
758
758
  _prepareCard(e) {
759
- let t = this.querySelector(vt);
759
+ let t = this.querySelector(yt);
760
760
  t?.id && !e.hasAttribute("aria-describedby") && e.setAttribute("aria-describedby", t.id), e.hasAttribute("tabindex") || (e.tabIndex = 0);
761
761
  }
762
762
  _announce(e) {
763
- let t = this.querySelector(_t);
763
+ let t = this.querySelector(vt);
764
764
  !t || !e || (t.textContent = "", t.textContent = e);
765
765
  }
766
766
  _fire(e, t, n = !1) {
@@ -771,8 +771,8 @@ var Mt = (e, t) => {
771
771
  }));
772
772
  }
773
773
  _canLift(e) {
774
- let t = P(e);
775
- return this.hasAttribute("readonly") || e.hasAttribute("data-wui-locked") ? (this._announce(M.locked(t)), !1) : e.getAttribute("aria-busy") === "true" ? (this._announce(M.busy), Mt(M.busy, "info"), !1) : !0;
774
+ let t = N(e);
775
+ return this.hasAttribute("readonly") || e.hasAttribute("data-wui-locked") ? (this._announce(j.locked(t)), !1) : e.getAttribute("aria-busy") === "true" ? (this._announce(j.busy), Nt(j.busy, "info"), !1) : !0;
776
776
  }
777
777
  _check(e, t, n) {
778
778
  if (t === n) return {
@@ -780,7 +780,7 @@ var Mt = (e, t) => {
780
780
  source: !0,
781
781
  reason: null
782
782
  };
783
- let r = this._columnByKey(t), i = this._columnByKey(n), a = M.refused(r ? this._titleOf(r) : t, i ? this._titleOf(i) : n), o = i?.getAttribute("data-accept-from");
783
+ let r = this._columnByKey(t), i = this._columnByKey(n), a = j.refused(r ? this._titleOf(r) : t, i ? this._titleOf(i) : n), o = i?.getAttribute("data-accept-from");
784
784
  if (o != null && !o.split(/\s+/).filter(Boolean).includes(t)) return {
785
785
  ok: !1,
786
786
  reason: a
@@ -802,35 +802,35 @@ var Mt = (e, t) => {
802
802
  };
803
803
  }
804
804
  _markTargets(e, t) {
805
- let n = P(e), r = /* @__PURE__ */ new Map();
805
+ let n = N(e), r = /* @__PURE__ */ new Map();
806
806
  for (let i of this._columns()) {
807
- let a = N(i), o = this._check(e, t, a);
807
+ let a = M(i), o = this._check(e, t, a);
808
808
  r.set(a, o), i.setAttribute("data-wui-drop", o.source ? "source" : o.ok ? "ok" : "refused");
809
- let s = i.querySelector(gt);
810
- s && !o.source && (s.textContent = o.ok ? M.dropHere(n, this._titleOf(i)) : o.reason, s.hidden = !1);
809
+ let s = i.querySelector(_t);
810
+ s && !o.source && (s.textContent = o.ok ? j.dropHere(n, this._titleOf(i)) : o.reason, s.hidden = !1);
811
811
  }
812
812
  return r;
813
813
  }
814
814
  _clearTargets() {
815
815
  for (let e of this._columns()) {
816
816
  e.removeAttribute("data-wui-drop"), e.removeAttribute("data-wui-over"), e.removeAttribute("data-wui-target");
817
- let t = e.querySelector(gt);
817
+ let t = e.querySelector(_t);
818
818
  t && (t.hidden = !0, t.textContent = "");
819
819
  }
820
820
  }
821
821
  async _commit(e, t, n) {
822
- let r = this._columnOf(e), i = N(r), a = this._columnByKey(t), o = P(e);
822
+ let r = this._columnOf(e), i = M(r), a = this._columnByKey(t), o = N(e);
823
823
  if (i === t || !this._canLift(e)) return !1;
824
824
  let s = this._check(e, i, t);
825
- if (!s.ok) return this._announce(s.reason), Mt(s.reason, "info"), !1;
825
+ if (!s.ok) return this._announce(s.reason), Nt(s.reason, "info"), !1;
826
826
  let c = this._cardsIn(a), l = Number.isInteger(n) ? Math.max(0, Math.min(n, c.length)) : c.length, u = {
827
- key: Tt(e),
827
+ key: Et(e),
828
828
  card: e,
829
829
  from: i,
830
830
  to: t,
831
831
  index: l
832
832
  }, d = e.contains(document.activeElement);
833
- if (this._controlled()) return this._fire("wui:kanban:move", u), this._announce(M.moved(o, this._titleOf(a))), d && this._refocusSoon(u.key), !0;
833
+ if (this._controlled()) return this._fire("wui:kanban:move", u), this._announce(j.moved(o, this._titleOf(a))), d && this._refocusSoon(u.key), !0;
834
834
  if (!this._fire("wui:kanban:move", u, !0)) return !1;
835
835
  let f = {
836
836
  parent: e.parentNode,
@@ -841,12 +841,12 @@ var Mt = (e, t) => {
841
841
  let p = a.getAttribute("data-wui-step");
842
842
  if (p) return this._runStep(e, u, f, p, a.getAttribute("data-wui-step-size"));
843
843
  let m = this.getAttribute("move-url");
844
- if (!m) return this._announce(M.moved(o, this._titleOf(a))), this._fire("wui:kanban:moved", {
844
+ if (!m) return this._announce(j.moved(o, this._titleOf(a))), this._fire("wui:kanban:moved", {
845
845
  ...u,
846
846
  result: null
847
847
  }), !0;
848
- this._lock(e, !0), this._announce(M.saving(o, this._titleOf(a)));
849
- let h = await A(m, {
848
+ this._lock(e, !0), this._announce(j.saving(o, this._titleOf(a)));
849
+ let h = await fe(m, {
850
850
  method: "POST",
851
851
  body: new URLSearchParams({
852
852
  card: u.key,
@@ -858,13 +858,13 @@ var Mt = (e, t) => {
858
858
  if (this._lock(e, !1), h.kind === "session") return !1;
859
859
  if (h.ok) {
860
860
  let t = this._applyFragment(h.html) || e;
861
- return Mt(h.message, "success"), this._announce(M.moved(P(t), this._titleOf(a))), this._fire("wui:kanban:moved", {
861
+ return Nt(h.message, "success"), this._announce(j.moved(N(t), this._titleOf(a))), this._fire("wui:kanban:moved", {
862
862
  ...u,
863
863
  card: t,
864
864
  result: h
865
865
  }), !0;
866
866
  }
867
- return this._rollback(e, f), h.kind !== "aborted" && Mt(h.message || M.failed[h.kind] || M.failed.server, "danger"), this._fire("wui:kanban:failed", {
867
+ return this._rollback(e, f), h.kind !== "aborted" && Nt(h.message || j.failed[h.kind] || j.failed.server, "danger"), this._fire("wui:kanban:failed", {
868
868
  ...u,
869
869
  kind: h.kind,
870
870
  status: h.status,
@@ -872,7 +872,7 @@ var Mt = (e, t) => {
872
872
  }), !1;
873
873
  }
874
874
  async _runStep(e, t, n, r, i) {
875
- let a = P(e), o = this._columnByKey(t.to), s = new URLSearchParams({
875
+ let a = N(e), o = this._columnByKey(t.to), s = new URLSearchParams({
876
876
  card: t.key,
877
877
  from: t.from,
878
878
  to: t.to
@@ -880,19 +880,19 @@ var Mt = (e, t) => {
880
880
  this._lock(e, !0);
881
881
  let l;
882
882
  try {
883
- l = await (await rt(c, {
883
+ l = await (await it(c, {
884
884
  trigger: e,
885
885
  size: i || void 0
886
886
  })).closed;
887
887
  } catch (r) {
888
- return this._lock(e, !1), this._rollback(e, n), r?.name !== "AbortError" && Mt(M.failed.server, "danger"), this._fire("wui:kanban:failed", {
888
+ return this._lock(e, !1), this._rollback(e, n), r?.name !== "AbortError" && Nt(j.failed.server, "danger"), this._fire("wui:kanban:failed", {
889
889
  ...t,
890
890
  kind: "step",
891
891
  status: 0,
892
892
  message: r?.message ?? null
893
893
  }), !1;
894
894
  }
895
- if (l?.status !== "success") return this._lock(e, !1), this._rollback(e, n), this._announce(M.cancelled(a)), this._fire("wui:kanban:failed", {
895
+ if (l?.status !== "success") return this._lock(e, !1), this._rollback(e, n), this._announce(j.cancelled(a)), this._fire("wui:kanban:failed", {
896
896
  ...t,
897
897
  kind: "dismissed",
898
898
  status: 0,
@@ -900,10 +900,10 @@ var Mt = (e, t) => {
900
900
  }), !1;
901
901
  let u = e, d = this.getAttribute("card-url");
902
902
  if (d) {
903
- let n = await A(`${d}${d.includes("?") ? "&" : "?"}${new URLSearchParams({ card: t.key })}`);
903
+ let n = await fe(`${d}${d.includes("?") ? "&" : "?"}${new URLSearchParams({ card: t.key })}`);
904
904
  n.ok && (u = this._applyFragment(n.html) || e);
905
905
  }
906
- return this._lock(u, !1), this._announce(M.moved(P(u), this._titleOf(o))), this._fire("wui:kanban:moved", {
906
+ return this._lock(u, !1), this._announce(j.moved(N(u), this._titleOf(o))), this._fire("wui:kanban:moved", {
907
907
  ...t,
908
908
  card: u,
909
909
  result: l
@@ -914,7 +914,7 @@ var Mt = (e, t) => {
914
914
  }
915
915
  _rollback(e, t) {
916
916
  let n = e.contains(document.activeElement), r = t.next && t.next.parentNode === t.parent ? t.next : null;
917
- t.parent.insertBefore(e, r), n && e.focus(), this.refresh(), this._announce(M.rolledBack(P(e), this._titleOf(t.column)));
917
+ t.parent.insertBefore(e, r), n && e.focus(), this.refresh(), this._announce(j.rolledBack(N(e), this._titleOf(t.column)));
918
918
  }
919
919
  _applyFragment(e) {
920
920
  if (!e) return null;
@@ -922,14 +922,14 @@ var Mt = (e, t) => {
922
922
  t.innerHTML = e;
923
923
  for (let e of t.content.querySelectorAll("script")) console.warn("[@webority/ui-elements] A kanban fragment carried a script tag; it was removed, not run."), e.remove();
924
924
  let n = null;
925
- for (let e of [...t.content.querySelectorAll(ft)]) {
925
+ for (let e of [...t.content.querySelectorAll(pt)]) {
926
926
  if (e.closest("template")) continue;
927
- let t = this._cardByKey(Tt(e));
927
+ let t = this._cardByKey(Et(e));
928
928
  if (!t) continue;
929
929
  let r = t.contains(document.activeElement);
930
930
  t.dispatchEvent(new CustomEvent("wui:teardown", { bubbles: !0 })), t.hidden && (e.hidden = !0), t.replaceWith(e), this._prepareCard(e), r && e.focus(), n ??= e;
931
931
  }
932
- for (let e of t.content.querySelectorAll("template[data-wui-kanban-summary]")) this._columnByKey(e.getAttribute("data-wui-kanban-summary"))?.querySelector(mt)?.replaceChildren(e.content.cloneNode(!0));
932
+ for (let e of t.content.querySelectorAll("template[data-wui-kanban-summary]")) this._columnByKey(e.getAttribute("data-wui-kanban-summary"))?.querySelector(ht)?.replaceChildren(e.content.cloneNode(!0));
933
933
  return this.refresh(), window.WUI?.refresh?.(), n;
934
934
  }
935
935
  _refocusSoon(e) {
@@ -938,8 +938,8 @@ var Mt = (e, t) => {
938
938
  }
939
939
  _pointerDown(e) {
940
940
  if (e.button !== 0 || e.isPrimary === !1 || this._drag || this._kbd) return;
941
- let t = e.target.closest?.(ft);
942
- if (!t || !this.contains(t) || e.target.closest(St)) return;
941
+ let t = e.target.closest?.(pt);
942
+ if (!t || !this.contains(t) || e.target.closest(Ct)) return;
943
943
  let n = {
944
944
  card: t,
945
945
  id: e.pointerId,
@@ -975,7 +975,7 @@ var Mt = (e, t) => {
975
975
  this._endPointer(!1);
976
976
  return;
977
977
  }
978
- let i = N(this._columnOf(r)), a = r.getBoundingClientRect(), o = r.cloneNode(!0);
978
+ let i = M(this._columnOf(r)), a = r.getBoundingClientRect(), o = r.cloneNode(!0);
979
979
  for (let e of [o, ...o.querySelectorAll("[id]")]) e.removeAttribute("id");
980
980
  o.removeAttribute("data-wui-card"), o.removeAttribute("tabindex"), o.setAttribute("aria-hidden", "true"), o.classList.add("wui-kanban-ghost"), o.style.width = `${a.width}px`, this.appendChild(o), r.setAttribute("data-wui-dragging", ""), this.setAttribute("data-wui-dragging", ""), this._drag = {
981
981
  card: r,
@@ -985,7 +985,7 @@ var Mt = (e, t) => {
985
985
  dy: n - a.top,
986
986
  over: null,
987
987
  verdicts: this._markTargets(r, i)
988
- }, this._announce(M.lifted(P(r), this._titleOf(this._columnOf(r)))), document.addEventListener("keydown", this._onDocKeyDown), this._dragTo(t, n);
988
+ }, this._announce(j.lifted(N(r), this._titleOf(this._columnOf(r)))), document.addEventListener("keydown", this._onDocKeyDown), this._dragTo(t, n);
989
989
  }
990
990
  _dragTo(e, t) {
991
991
  let n = this._drag;
@@ -1011,10 +1011,10 @@ var Mt = (e, t) => {
1011
1011
  let n = this._scroller();
1012
1012
  if (n) {
1013
1013
  let t = n.getBoundingClientRect();
1014
- t.width > 0 && (e < t.left + Ct ? n.scrollBy?.({ left: -16 }) : e > t.right - Ct && n.scrollBy?.({ left: wt }));
1014
+ t.width > 0 && (e < t.left + wt ? n.scrollBy?.({ left: -16 }) : e > t.right - wt && n.scrollBy?.({ left: Tt }));
1015
1015
  }
1016
1016
  let r = window.innerHeight || 0;
1017
- r > 0 && (t < Ct ? window.scrollBy?.({ top: -16 }) : t > r - Ct && window.scrollBy?.({ top: wt }));
1017
+ r > 0 && (t < wt ? window.scrollBy?.({ top: -16 }) : t > r - wt && window.scrollBy?.({ top: Tt }));
1018
1018
  }
1019
1019
  _endPointer(e) {
1020
1020
  let t = this._press, n = this._drag;
@@ -1024,32 +1024,32 @@ var Mt = (e, t) => {
1024
1024
  }, 0);
1025
1025
  let r = n.over;
1026
1026
  if (this._clearTargets(), !e || !r) {
1027
- this._announce(M.cancelled(P(n.card)));
1027
+ this._announce(j.cancelled(N(n.card)));
1028
1028
  return;
1029
1029
  }
1030
- let i = N(r), a = n.verdicts.get(i);
1030
+ let i = M(r), a = n.verdicts.get(i);
1031
1031
  if (a?.source) {
1032
- this._announce(M.cancelled(P(n.card)));
1032
+ this._announce(j.cancelled(N(n.card)));
1033
1033
  return;
1034
1034
  }
1035
1035
  if (!a?.ok) {
1036
- this._announce(a?.reason), Mt(a?.reason, "info");
1036
+ this._announce(a?.reason), Nt(a?.reason, "info");
1037
1037
  return;
1038
1038
  }
1039
1039
  this._commit(n.card, i, this._indexAt(r, n.y));
1040
1040
  }
1041
1041
  _click(e) {
1042
- if (this._suppressClick && e.target.closest?.(ft)) {
1042
+ if (this._suppressClick && e.target.closest?.(pt)) {
1043
1043
  e.preventDefault(), e.stopPropagation(), this._suppressClick = !1;
1044
1044
  return;
1045
1045
  }
1046
- let t = e.target.closest?.(xt);
1046
+ let t = e.target.closest?.(St);
1047
1047
  if (t && this.contains(t)) {
1048
- let e = t.closest(ut);
1048
+ let e = t.closest(dt);
1049
1049
  e && this._setCollapsed(e, !e.hasAttribute("data-collapsed"), !0);
1050
1050
  return;
1051
1051
  }
1052
- let n = e.target.closest?.(yt);
1052
+ let n = e.target.closest?.(bt);
1053
1053
  n && this.contains(n) && this._showColumn(n.getAttribute("data-wui-switch"));
1054
1054
  }
1055
1055
  _keyDown(e) {
@@ -1058,19 +1058,19 @@ var Mt = (e, t) => {
1058
1058
  return;
1059
1059
  }
1060
1060
  let t = e.target;
1061
- if (!t.matches?.(ft) || !this.contains(t)) return;
1061
+ if (!t.matches?.(pt) || !this.contains(t)) return;
1062
1062
  let n = this._columnOf(t);
1063
1063
  switch (e.key) {
1064
1064
  case " ":
1065
1065
  case "Spacebar": {
1066
1066
  if (e.preventDefault(), !this._canLift(t)) return;
1067
- let r = N(n), i = this._columns();
1067
+ let r = M(n), i = this._columns();
1068
1068
  this._kbd = {
1069
1069
  card: t,
1070
1070
  from: r,
1071
1071
  target: i.indexOf(n),
1072
1072
  verdicts: this._markTargets(t, r)
1073
- }, t.setAttribute("data-wui-lifted", ""), this.setAttribute("data-wui-dragging", ""), n.setAttribute("data-wui-target", ""), this._announce(M.lifted(P(t), this._titleOf(n)));
1073
+ }, t.setAttribute("data-wui-lifted", ""), this.setAttribute("data-wui-dragging", ""), n.setAttribute("data-wui-target", ""), this._announce(j.lifted(N(t), this._titleOf(n)));
1074
1074
  return;
1075
1075
  }
1076
1076
  case "ArrowDown":
@@ -1104,26 +1104,26 @@ var Mt = (e, t) => {
1104
1104
  if (r < 0 || r >= n.length) return;
1105
1105
  n[t.target]?.removeAttribute("data-wui-target"), t.target = r;
1106
1106
  let i = n[r];
1107
- i.setAttribute("data-wui-target", ""), this._showColumn(N(i), !1);
1108
- let a = t.verdicts.get(N(i)), o = this._titleOf(i);
1109
- this._announce(a.source ? M.overSource(o) : a.ok ? M.over(o, this._visibleCardsIn(i).length) : M.overRefused(o, a.reason));
1107
+ i.setAttribute("data-wui-target", ""), this._showColumn(M(i), !1);
1108
+ let a = t.verdicts.get(M(i)), o = this._titleOf(i);
1109
+ this._announce(a.source ? j.overSource(o) : a.ok ? j.over(o, this._visibleCardsIn(i).length) : j.overRefused(o, a.reason));
1110
1110
  return;
1111
1111
  }
1112
1112
  case " ":
1113
1113
  case "Spacebar":
1114
1114
  case "Enter": {
1115
1115
  e.preventDefault();
1116
- let r = n[t.target], i = N(r), a = t.verdicts.get(i);
1116
+ let r = n[t.target], i = M(r), a = t.verdicts.get(i);
1117
1117
  if (!a.source && !a.ok) {
1118
1118
  this._announce(a.reason);
1119
1119
  return;
1120
1120
  }
1121
- this._endKeyboard(), a.source ? this._announce(M.cancelled(P(t.card))) : this._commit(t.card, i);
1121
+ this._endKeyboard(), a.source ? this._announce(j.cancelled(N(t.card))) : this._commit(t.card, i);
1122
1122
  return;
1123
1123
  }
1124
1124
  case "Escape":
1125
1125
  case "Tab":
1126
- e.key === "Escape" && e.preventDefault(), this._endKeyboard(), this._showColumn(t.from, !1), this._announce(M.cancelled(P(t.card)));
1126
+ e.key === "Escape" && e.preventDefault(), this._endKeyboard(), this._showColumn(t.from, !1), this._announce(j.cancelled(N(t.card)));
1127
1127
  return;
1128
1128
  default:
1129
1129
  }
@@ -1133,18 +1133,18 @@ var Mt = (e, t) => {
1133
1133
  this._kbd = null, e && (e.card.removeAttribute("data-wui-lifted"), this.removeAttribute("data-wui-dragging"), this._clearTargets());
1134
1134
  }
1135
1135
  _restoreCollapsed() {
1136
- let e = Ot(this.getAttribute("board-id"));
1136
+ let e = kt(this.getAttribute("board-id"));
1137
1137
  for (let t of this._columns()) {
1138
- let n = N(t);
1138
+ let n = M(t);
1139
1139
  t.hasAttribute("data-collapsible") && Object.hasOwn(e, n) && this._setCollapsed(t, e[n], !1);
1140
1140
  }
1141
1141
  }
1142
1142
  _setCollapsed(e, t, n) {
1143
- let r = N(e);
1143
+ let r = M(e);
1144
1144
  e.toggleAttribute("data-collapsed", t);
1145
1145
  let i = this._titleOf(e);
1146
- for (let n of e.querySelectorAll(xt)) n.setAttribute("aria-expanded", t ? "false" : "true"), n.setAttribute("aria-label", t ? M.expand(i) : M.collapse(i));
1147
- n && (kt(this.getAttribute("board-id"), r, t), this._fire("wui:kanban:collapse", {
1146
+ for (let n of e.querySelectorAll(St)) n.setAttribute("aria-expanded", t ? "false" : "true"), n.setAttribute("aria-label", t ? j.expand(i) : j.collapse(i));
1147
+ n && (At(this.getAttribute("board-id"), r, t), this._fire("wui:kanban:collapse", {
1148
1148
  column: r,
1149
1149
  collapsed: t
1150
1150
  }));
@@ -1153,7 +1153,7 @@ var Mt = (e, t) => {
1153
1153
  return typeof matchMedia == "function" && matchMedia("(max-width: 767.98px)").matches;
1154
1154
  }
1155
1155
  _showColumn(e, t = !0) {
1156
- for (let t of this.querySelectorAll(yt)) t.getAttribute("data-wui-switch") === e ? t.setAttribute("aria-current", "true") : t.removeAttribute("aria-current");
1156
+ for (let t of this.querySelectorAll(bt)) t.getAttribute("data-wui-switch") === e ? t.setAttribute("aria-current", "true") : t.removeAttribute("aria-current");
1157
1157
  let n = this._columnByKey(e), r = this._scroller();
1158
1158
  if (!n || !r || !t && !this._isPhone()) return;
1159
1159
  let i = typeof matchMedia == "function" && matchMedia("(prefers-reduced-motion: reduce)").matches;
@@ -1166,22 +1166,22 @@ var Mt = (e, t) => {
1166
1166
  let e = this._scroller();
1167
1167
  if (!e || !this._isPhone()) return;
1168
1168
  let t = e.clientWidth || 1, n = this._columns()[Math.round(e.scrollLeft / t)];
1169
- if (n) for (let e of this.querySelectorAll(yt)) e.getAttribute("data-wui-switch") === N(n) ? e.setAttribute("aria-current", "true") : e.removeAttribute("aria-current");
1169
+ if (n) for (let e of this.querySelectorAll(bt)) e.getAttribute("data-wui-switch") === M(n) ? e.setAttribute("aria-current", "true") : e.removeAttribute("aria-current");
1170
1170
  }
1171
- }, Pt = {
1171
+ }, Ft = {
1172
1172
  delete: "data:image/webp;base64,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",
1173
1173
  info: "data:image/webp;base64,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",
1174
1174
  primary: "data:image/webp;base64,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",
1175
1175
  success: "data:image/webp;base64,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",
1176
1176
  warning: "data:image/webp;base64,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"
1177
- }, Ft = { error: "<rect width=\"174\" height=\"174\" rx=\"87\" fill=\"var(--wui-danger-5)\"/>\n<rect x=\"24\" y=\"24\" width=\"126\" height=\"126\" rx=\"63\" stroke=\"var(--wui-danger-20)\" stroke-width=\"16\"/>\n<g clip-path=\"url(#wui_error_clip0)\">\n<rect x=\"32\" y=\"32\" width=\"110\" height=\"110\" rx=\"55\" fill=\"var(--wui-danger)\"/>\n<rect x=\"110.758\" y=\"62\" width=\"75.5044\" height=\"69.9535\" transform=\"rotate(45 110.758 62)\" fill=\"var(--wui-danger-active)\"/>\n<g clip-path=\"url(#wui_error_clip1)\">\n<path d=\"M95.9285 87.0037L112.943 69.9887C114.823 68.1087 114.823 65.0608 112.943 63.1838L110.675 60.9155C108.795 59.0349 105.747 59.0349 103.87 60.9155L86.8552 77.9298L69.8403 60.9119C67.9603 59.032 64.9124 59.032 63.0353 60.9119L60.7635 63.1802C58.8835 65.0608 58.8835 68.1087 60.7635 69.9858L77.7814 87.0037L60.767 104.018C58.8865 105.899 58.8865 108.947 60.767 110.824L63.0353 113.092C64.9153 114.972 67.9632 114.972 69.8403 113.092L86.8552 96.0769L103.87 113.092C105.75 114.972 108.798 114.972 110.675 113.092L112.943 110.824C114.823 108.943 114.823 105.895 112.943 104.018L95.9285 87.0037Z\" fill=\"white\"/>\n</g>\n</g>\n<defs><clipPath id=\"wui_error_clip0\"><rect x=\"32\" y=\"32\" width=\"110\" height=\"110\" rx=\"55\" fill=\"white\"/></clipPath><clipPath id=\"wui_error_clip1\"><rect width=\"55\" height=\"55\" fill=\"white\" transform=\"translate(59.3535 59.502)\"/></clipPath></defs>" }, It = [
1177
+ }, It = { error: "<rect width=\"174\" height=\"174\" rx=\"87\" fill=\"var(--wui-danger-5)\"/>\n<rect x=\"24\" y=\"24\" width=\"126\" height=\"126\" rx=\"63\" stroke=\"var(--wui-danger-20)\" stroke-width=\"16\"/>\n<g clip-path=\"url(#wui_error_clip0)\">\n<rect x=\"32\" y=\"32\" width=\"110\" height=\"110\" rx=\"55\" fill=\"var(--wui-danger)\"/>\n<rect x=\"110.758\" y=\"62\" width=\"75.5044\" height=\"69.9535\" transform=\"rotate(45 110.758 62)\" fill=\"var(--wui-danger-active)\"/>\n<g clip-path=\"url(#wui_error_clip1)\">\n<path d=\"M95.9285 87.0037L112.943 69.9887C114.823 68.1087 114.823 65.0608 112.943 63.1838L110.675 60.9155C108.795 59.0349 105.747 59.0349 103.87 60.9155L86.8552 77.9298L69.8403 60.9119C67.9603 59.032 64.9124 59.032 63.0353 60.9119L60.7635 63.1802C58.8835 65.0608 58.8835 68.1087 60.7635 69.9858L77.7814 87.0037L60.767 104.018C58.8865 105.899 58.8865 108.947 60.767 110.824L63.0353 113.092C64.9153 114.972 67.9632 114.972 69.8403 113.092L86.8552 96.0769L103.87 113.092C105.75 114.972 108.798 114.972 110.675 113.092L112.943 110.824C114.823 108.943 114.823 105.895 112.943 104.018L95.9285 87.0037Z\" fill=\"white\"/>\n</g>\n</g>\n<defs><clipPath id=\"wui_error_clip0\"><rect x=\"32\" y=\"32\" width=\"110\" height=\"110\" rx=\"55\" fill=\"white\"/></clipPath><clipPath id=\"wui_error_clip1\"><rect width=\"55\" height=\"55\" fill=\"white\" transform=\"translate(59.3535 59.502)\"/></clipPath></defs>" }, Lt = [
1178
1178
  "success",
1179
1179
  "error",
1180
1180
  "warning",
1181
1181
  "info",
1182
1182
  "delete",
1183
1183
  "primary"
1184
- ], Lt = class extends e {
1184
+ ], Rt = class extends e {
1185
1185
  static get observedAttributes() {
1186
1186
  return ["tone", "size"];
1187
1187
  }
@@ -1192,29 +1192,29 @@ var Mt = (e, t) => {
1192
1192
  this.isConnected && this.render();
1193
1193
  }
1194
1194
  render() {
1195
- let e = this.getAttribute("tone"), t = Number.parseInt(this.getAttribute("size"), 10) || 72, n = Ft[e];
1195
+ let e = this.getAttribute("tone"), t = Number.parseInt(this.getAttribute("size"), 10) || 72, n = It[e];
1196
1196
  if (n) {
1197
1197
  this.innerHTML = `<svg width="${t}" height="${t}" viewBox="0 0 174 174" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">${n}</svg>`;
1198
1198
  return;
1199
1199
  }
1200
- let r = Pt[e] || Pt.info;
1200
+ let r = Ft[e] || Ft.info;
1201
1201
  this.innerHTML = `<img src="${r}" width="${t}" height="${t}" alt="" aria-hidden="true" draggable="false" />`;
1202
1202
  }
1203
- }, F = 4, Rt = 300, zt = 400;
1204
- function I(e, t, n = {}) {
1203
+ }, P = 4, zt = 300, Bt = 400;
1204
+ function F(e, t, n = {}) {
1205
1205
  if (!e || !t) return;
1206
1206
  let r = e.getBoundingClientRect(), i = n.clampHeight ? t.scrollTop : 0;
1207
1207
  n.clampHeight && (t.style.maxHeight = "");
1208
- let a = t.offsetHeight, o = window.innerHeight - r.bottom, s = o < a + F && r.top > o;
1209
- if (t.classList.toggle("drop-up", s), t.style.position = "fixed", t.style.top = s ? `${Math.max(F, r.top - a - F)}px` : `${r.bottom + F}px`, n.clampHeight) {
1210
- let e = s ? r.top - F * 2 : window.innerHeight - r.bottom - F * 2;
1208
+ let a = t.offsetHeight, o = window.innerHeight - r.bottom, s = o < a + P && r.top > o;
1209
+ if (t.classList.toggle("drop-up", s), t.style.position = "fixed", t.style.top = s ? `${Math.max(P, r.top - a - P)}px` : `${r.bottom + P}px`, n.clampHeight) {
1210
+ let e = s ? r.top - P * 2 : window.innerHeight - r.bottom - P * 2;
1211
1211
  e < a && (t.style.maxHeight = `${Math.max(e, 0)}px`), t.scrollTop = i;
1212
1212
  }
1213
- n.matchWidth && (r.width >= Rt ? (t.style.minWidth = `${r.width}px`, t.style.width = `${r.width}px`, t.style.maxWidth = `${r.width}px`) : (t.style.minWidth = `${r.width}px`, t.style.width = "max-content", t.style.maxWidth = `${Math.min(zt, window.innerWidth - F * 2)}px`));
1214
- let c = t.offsetWidth, l = Math.min(r.left, window.innerWidth - c - F);
1215
- t.style.left = `${Math.max(F, l)}px`;
1213
+ n.matchWidth && (r.width >= zt ? (t.style.minWidth = `${r.width}px`, t.style.width = `${r.width}px`, t.style.maxWidth = `${r.width}px`) : (t.style.minWidth = `${r.width}px`, t.style.width = "max-content", t.style.maxWidth = `${Math.min(Bt, window.innerWidth - P * 2)}px`));
1214
+ let c = t.offsetWidth, l = Math.min(r.left, window.innerWidth - c - P);
1215
+ t.style.left = `${Math.max(P, l)}px`;
1216
1216
  }
1217
- function Bt(e, t) {
1217
+ function I(e, t) {
1218
1218
  L(e), e._reanchor = t, e._reanchorScroll = (n) => {
1219
1219
  n.target instanceof Node && typeof e.contains == "function" && e.contains(n.target) || t();
1220
1220
  }, window.addEventListener("resize", e._reanchor), window.addEventListener("scroll", e._reanchorScroll, !0);
@@ -1685,7 +1685,7 @@ var Kt = Symbol("wui.trustedHtml"), V = (e) => String(e ?? "").replace(/&/g, "&a
1685
1685
  this._teardown();
1686
1686
  let e = this._refs();
1687
1687
  if (!e.control || !e.input) return;
1688
- let t = () => I(e.control, e.menu, { matchWidth: !0 }), n = () => this._optionEls().filter((e) => !e.hidden), r = (t) => {
1688
+ let t = () => F(e.control, e.menu, { matchWidth: !0 }), n = () => this._optionEls().filter((e) => !e.hidden), r = (t) => {
1689
1689
  let r = n();
1690
1690
  this._active = t;
1691
1691
  for (let e of this._optionEls()) e.classList.remove("is-active");
@@ -1763,7 +1763,7 @@ var Kt = Symbol("wui.trustedHtml"), V = (e) => String(e ?? "").replace(/&/g, "&a
1763
1763
  }), this._bindGlobal = () => {
1764
1764
  this._teardown(), this._onDocClick = (e) => {
1765
1765
  i() && !this.contains(e.target) && o();
1766
- }, document.addEventListener("click", this._onDocClick), Bt(this, () => {
1766
+ }, document.addEventListener("click", this._onDocClick), I(this, () => {
1767
1767
  i() && t();
1768
1768
  });
1769
1769
  }, this._bindGlobal();
@@ -2398,7 +2398,7 @@ var wn = (e) => e instanceof Element ? e : e?.parentElement ?? null, Tn = class
2398
2398
  let e = document.activeElement;
2399
2399
  this._returnFocus = e && e !== document.body && !this._inPanel(e) ? e : null;
2400
2400
  }
2401
- this._region = n, this._origin = r, xn = null, a.setAttribute(gn, ""), bn = this, I({ getBoundingClientRect: () => ({
2401
+ this._region = n, this._origin = r, xn = null, a.setAttribute(gn, ""), bn = this, F({ getBoundingClientRect: () => ({
2402
2402
  left: e,
2403
2403
  right: e,
2404
2404
  top: t,
@@ -3906,8 +3906,8 @@ var wn = (e) => e instanceof Element ? e : e?.parentElement ?? null, Tn = class
3906
3906
  let t = () => {
3907
3907
  if (this.hasAttribute("compact")) {
3908
3908
  let t = e.control.getBoundingClientRect();
3909
- e.menu.style.width = "max-content", e.menu.style.minWidth = `${t.width}px`, e.menu.style.maxWidth = "280px", I(e.control, e.menu);
3910
- } else I(e.control, e.menu, { matchWidth: !0 });
3909
+ e.menu.style.width = "max-content", e.menu.style.minWidth = `${t.width}px`, e.menu.style.maxWidth = "280px", F(e.control, e.menu);
3910
+ } else F(e.control, e.menu, { matchWidth: !0 });
3911
3911
  }, n = (t) => {
3912
3912
  let n = this._visible();
3913
3913
  this._active = t;
@@ -3958,7 +3958,7 @@ var wn = (e) => e instanceof Element ? e : e?.parentElement ?? null, Tn = class
3958
3958
  }), e.menu.addEventListener("keydown", this._navHandler.handler), this._bindGlobal = () => {
3959
3959
  this._teardown(), this._onDocClick = (e) => {
3960
3960
  i() && !this.contains(e.target) && o();
3961
- }, document.addEventListener("click", this._onDocClick), Bt(this, () => {
3961
+ }, document.addEventListener("click", this._onDocClick), I(this, () => {
3962
3962
  i() && t();
3963
3963
  });
3964
3964
  }, this._bindGlobal();
@@ -4204,7 +4204,7 @@ var wn = (e) => e instanceof Element ? e : e?.parentElement ?? null, Tn = class
4204
4204
  t && e.contains(document.activeElement) && t.focus();
4205
4205
  }
4206
4206
  _position(e, t) {
4207
- I(e, t, { clampHeight: !0 });
4207
+ F(e, t, { clampHeight: !0 });
4208
4208
  }
4209
4209
  _setFocus(e, t, n, r) {
4210
4210
  let { y: i, m: a } = K(e, t);
@@ -4333,7 +4333,7 @@ var wn = (e) => e instanceof Element ? e : e?.parentElement ?? null, Tn = class
4333
4333
  this._popClick = !1, r() && !t && !this.contains(e.target) && this._close();
4334
4334
  }, document.addEventListener("click", this._onDocClick), this._onDocKey = (e) => {
4335
4335
  r() && e.key === "Escape" && this._close();
4336
- }, document.addEventListener("keydown", this._onDocKey), Bt(this, () => {
4336
+ }, document.addEventListener("keydown", this._onDocKey), I(this, () => {
4337
4337
  r() && this._position(e, t);
4338
4338
  });
4339
4339
  }, this._bindGlobal(), this._syncFormValue();
@@ -4506,7 +4506,7 @@ var wn = (e) => e instanceof Element ? e : e?.parentElement ?? null, Tn = class
4506
4506
  i && (i.textContent = this._start ? this._end ? `${Ln(this._start)} to ${Ln(this._end)}` : "Pick an end date" : "Pick a start date");
4507
4507
  }
4508
4508
  _position(e, t) {
4509
- I(e, t, { clampHeight: !0 });
4509
+ F(e, t, { clampHeight: !0 });
4510
4510
  }
4511
4511
  _pick(e) {
4512
4512
  if (!this._start || this._start && this._end) {
@@ -4557,7 +4557,7 @@ var wn = (e) => e instanceof Element ? e : e?.parentElement ?? null, Tn = class
4557
4557
  this._popClick = !1, r() && !t && !this.contains(e.target) && this._close();
4558
4558
  }, document.addEventListener("click", this._onDocClick), this._onDocKey = (e) => {
4559
4559
  r() && e.key === "Escape" && this._close();
4560
- }, document.addEventListener("keydown", this._onDocKey), Bt(this, () => {
4560
+ }, document.addEventListener("keydown", this._onDocKey), I(this, () => {
4561
4561
  r() && this._position(e, t);
4562
4562
  });
4563
4563
  }, this._bindGlobal(), this._syncMirrors();
@@ -5207,7 +5207,7 @@ var xr = (e, t) => t.some((t) => String(e ?? "").includes(t)), Sr = class extend
5207
5207
  this._teardown();
5208
5208
  let e = this.querySelector(".search-select-control"), t = this.querySelector(".search-select-menu"), n = this.querySelector(".search-select-input"), r = this.querySelector(".search-select-clear"), i = this.querySelector(".search-select-options"), a = this._allowCustom, o = a ? this.querySelector("[data-input]") : null, s = o || e;
5209
5209
  if (!e || !t) return;
5210
- let c = () => this.hasAttribute("disabled"), l = () => I(e, t, { matchWidth: !0 }), u = () => [...this.querySelectorAll(".search-select-option")], d = () => u().filter((e) => !e.hidden), f = (e) => {
5210
+ let c = () => this.hasAttribute("disabled"), l = () => F(e, t, { matchWidth: !0 }), u = () => [...this.querySelectorAll(".search-select-option")], d = () => u().filter((e) => !e.hidden), f = (e) => {
5211
5211
  let t = d();
5212
5212
  this._active = e;
5213
5213
  for (let e of u()) e.classList.remove("is-active");
@@ -5287,7 +5287,7 @@ var xr = (e, t) => t.some((t) => String(e ?? "").includes(t)), Sr = class extend
5287
5287
  this._navHandler.clearTypeahead(), _(), o || e.focus();
5288
5288
  }
5289
5289
  });
5290
- let C = (e) => {
5290
+ let ee = (e) => {
5291
5291
  let t = o || n;
5292
5292
  if (e.key === "Backspace" && !t?.value && this._values.length) {
5293
5293
  b(this._values[this._values.length - 1]);
@@ -5295,7 +5295,7 @@ var xr = (e, t) => t.some((t) => String(e ?? "").includes(t)), Sr = class extend
5295
5295
  }
5296
5296
  this._navHandler.handler(e);
5297
5297
  };
5298
- if (n?.addEventListener("keydown", C), r?.addEventListener("click", () => {
5298
+ if (n?.addEventListener("keydown", ee), r?.addEventListener("click", () => {
5299
5299
  n.value = "", this._renderOptions(""), r.hidden = !0, n.focus();
5300
5300
  }), o) {
5301
5301
  let t = (e) => {
@@ -5313,7 +5313,7 @@ var xr = (e, t) => t.some((t) => String(e ?? "").includes(t)), Sr = class extend
5313
5313
  this._navHandler.handler(e);
5314
5314
  return;
5315
5315
  }
5316
- (e.key === "ArrowDown" || e.key === "ArrowUp") && !m() && g(), C(e);
5316
+ (e.key === "ArrowDown" || e.key === "ArrowUp") && !m() && g(), ee(e);
5317
5317
  }), o.addEventListener("paste", (e) => {
5318
5318
  let t = e.clipboardData?.getData("text/plain") ?? "";
5319
5319
  xr(t, Cr) && (e.preventDefault(), x(`${o.value}${t}`));
@@ -5322,7 +5322,7 @@ var xr = (e, t) => t.some((t) => String(e ?? "").includes(t)), Sr = class extend
5322
5322
  });
5323
5323
  } else e.addEventListener("keydown", (e) => {
5324
5324
  if (m()) {
5325
- C(e);
5325
+ ee(e);
5326
5326
  return;
5327
5327
  }
5328
5328
  (e.key === "ArrowDown" || e.key === "Enter" || e.key === " ") && (e.preventDefault(), g());
@@ -5330,7 +5330,7 @@ var xr = (e, t) => t.some((t) => String(e ?? "").includes(t)), Sr = class extend
5330
5330
  this._bindGlobal = () => {
5331
5331
  this._teardown(), !this._ro && typeof ResizeObserver < "u" && (this._ro = new ResizeObserver(() => this._collapseChips()), this._ro.observe(this)), this._onDocClick = (e) => {
5332
5332
  m() && !this.contains(e.target) && _();
5333
- }, document.addEventListener("click", this._onDocClick), Bt(this, () => {
5333
+ }, document.addEventListener("click", this._onDocClick), I(this, () => {
5334
5334
  m() && l();
5335
5335
  });
5336
5336
  }, this._bindGlobal();
@@ -6103,7 +6103,7 @@ var Qr = class extends e {
6103
6103
  this._teardown();
6104
6104
  let e = this.querySelector(".country-toggle"), t = this.querySelector(".phone-input-wrap"), n = this.querySelector(".country-dropdown-menu"), r = this.querySelector(".dropdown-search-input"), i = this.querySelector(".country-list-scroll"), a = this.querySelector(".country-empty"), o = this.querySelector("input[type=tel]"), s = this.querySelector("[data-flag]"), c = this.querySelector("[data-dial]");
6105
6105
  if (!e || !n) return;
6106
- let l = () => !n.hidden, u = () => I(t || e, n), d = (e) => {
6106
+ let l = () => !n.hidden, u = () => F(t || e, n), d = (e) => {
6107
6107
  let t = this._visibleItems();
6108
6108
  this._active = e;
6109
6109
  for (let e of this._itemEls()) e.classList.remove("is-active");
@@ -6188,7 +6188,7 @@ var Qr = class extends e {
6188
6188
  }), this._bindGlobal = () => {
6189
6189
  this._teardownGlobals?.(), this._onDocClick = (e) => {
6190
6190
  l() && !this.contains(e.target) && p();
6191
- }, document.addEventListener("click", this._onDocClick), Bt(this, () => {
6191
+ }, document.addEventListener("click", this._onDocClick), I(this, () => {
6192
6192
  l() && u();
6193
6193
  });
6194
6194
  }, this._teardownGlobals = () => {
@@ -7139,7 +7139,7 @@ var pi = class extends e {
7139
7139
  }, this._format()), this._typedError = "", this._syncInvalid(), this._syncColumns();
7140
7140
  }
7141
7141
  _position() {
7142
- I(this.querySelector(".wui-timepicker-field"), this._pop());
7142
+ F(this.querySelector(".wui-timepicker-field"), this._pop());
7143
7143
  }
7144
7144
  _onColumnKey(e) {
7145
7145
  let t = e.target.closest?.(".timepicker-option"), n = t?.closest(".wui-timepicker-col");
@@ -7234,7 +7234,7 @@ var pi = class extends e {
7234
7234
  this._popClick = !1, i() && !t && !this.contains(e.target) && this._close({ commit: !0 });
7235
7235
  }, document.addEventListener("click", this._onDocClick), this._onDocKey = (e) => {
7236
7236
  i() && e.key === "Escape" && this._close({ commit: !1 });
7237
- }, document.addEventListener("keydown", this._onDocKey), Bt(this, () => {
7237
+ }, document.addEventListener("keydown", this._onDocKey), I(this, () => {
7238
7238
  i() && this._position();
7239
7239
  });
7240
7240
  }, this._bindGlobal();
@@ -7245,11 +7245,207 @@ var pi = class extends e {
7245
7245
  disconnectedCallback() {
7246
7246
  this._teardown();
7247
7247
  }
7248
- }, Ci = [
7248
+ }, Ci = "wui-tour-step", wi = "wui-tour-seen:", Ti = {
7249
+ back: "Back",
7250
+ next: "Next",
7251
+ skip: "Skip",
7252
+ done: "Done"
7253
+ }, Ei = {
7254
+ back: "back-label",
7255
+ next: "next-label",
7256
+ skip: "skip-label",
7257
+ done: "done-label"
7258
+ }, Di = 4, Oi = 0;
7259
+ function ki(e = wi, t = globalThis.localStorage) {
7260
+ return {
7261
+ isSeen: async (n) => t.getItem(e + n) === "1",
7262
+ markSeen: async (n) => {
7263
+ t.setItem(e + n, "1");
7264
+ }
7265
+ };
7266
+ }
7267
+ var Ai = (e) => !e?.isConnected || getComputedStyle(e).visibility === "hidden" ? !1 : e.getClientRects().length > 0, ji = class extends e {
7268
+ static get observedAttributes() {
7269
+ return ["open"];
7270
+ }
7271
+ constructor() {
7272
+ super(), this.seenStore = null, this.onBeforeStep = null, this._run = 0, this._running = !1, this._layer = null;
7273
+ }
7274
+ connectedCallback() {
7275
+ this.hasAttribute("open") && this.start();
7276
+ }
7277
+ disconnectedCallback() {
7278
+ this.stop();
7279
+ }
7280
+ attributeChangedCallback(e, t, n) {
7281
+ e !== "open" || !this.isConnected || (n === null ? this.stop() : this.start());
7282
+ }
7283
+ get tourId() {
7284
+ return this.getAttribute("tour-id") || "";
7285
+ }
7286
+ _stepList() {
7287
+ return Array.from(this.querySelectorAll(`:scope > ${Ci}`), (e) => ({
7288
+ target: e.getAttribute("target") || "",
7289
+ title: e.getAttribute("title") || void 0,
7290
+ description: e.textContent.trim()
7291
+ }));
7292
+ }
7293
+ _store() {
7294
+ return this.seenStore ? this.seenStore : this.getAttribute("seen-store") === "local" ? ki() : globalThis.window?.WUI?.tour?.seenStore || null;
7295
+ }
7296
+ _label(e) {
7297
+ return this.getAttribute(Ei[e]) || Ti[e];
7298
+ }
7299
+ async start() {
7300
+ if (this._running) return;
7301
+ this._running = !0;
7302
+ let e = ++this._run;
7303
+ this.hasAttribute("open") || this.setAttribute("open", "");
7304
+ try {
7305
+ await this._start(e);
7306
+ } catch (t) {
7307
+ throw e === this._run && (this._running = !1), t;
7308
+ }
7309
+ }
7310
+ async _start(e) {
7311
+ this._steps = this._stepList();
7312
+ let t = this._store();
7313
+ if (t && !this.tourId) throw Error("<wui-tour> needs a tour-id to use a seen store.");
7314
+ if (t && await t.isSeen(this.tourId)) {
7315
+ e === this._run && this._finish("alreadySeen");
7316
+ return;
7317
+ }
7318
+ this._returnFocus = document.activeElement;
7319
+ let n = await this._locate(0, 1, e);
7320
+ if (e === this._run) {
7321
+ if (!n) {
7322
+ this._finish("noTargets");
7323
+ return;
7324
+ }
7325
+ this._firstIndex = n.index, this._build(), this._show(n);
7326
+ }
7327
+ }
7328
+ stop() {
7329
+ this._running && (this._run++, this._teardown(), this._running = !1, this.hasAttribute("open") && this.removeAttribute("open"));
7330
+ }
7331
+ async _locate(e, t, n) {
7332
+ let r = this._steps;
7333
+ for (let i = e; i >= 0 && i < r.length; i += t) {
7334
+ let e = r[i];
7335
+ if (await this._beforeStep(e, i), n !== this._run) return null;
7336
+ let t = document.querySelector(e.target);
7337
+ if (Ai(t)) return {
7338
+ index: i,
7339
+ target: t
7340
+ };
7341
+ }
7342
+ return null;
7343
+ }
7344
+ async _beforeStep(e, t) {
7345
+ let n = [];
7346
+ this.dispatchEvent(new CustomEvent("wui-tour:beforestep", {
7347
+ bubbles: !0,
7348
+ detail: {
7349
+ step: e,
7350
+ index: t,
7351
+ wait: (e) => n.push(e)
7352
+ }
7353
+ })), await Promise.all(n), typeof this.onBeforeStep == "function" && await this.onBeforeStep(e, t);
7354
+ }
7355
+ _build() {
7356
+ let e = `wui-tour-${++Oi}`, t = document.createElement("div");
7357
+ t.className = "wui-tour-layer", t.innerHTML = `
7358
+ <div class="wui-tour-spot" aria-hidden="true"></div>
7359
+ <div class="wui-tour-card" role="dialog" aria-modal="true" tabindex="-1" aria-labelledby="${e}-title" aria-describedby="${e}-text">
7360
+ <p class="wui-tour-position"></p>
7361
+ <h2 class="wui-tour-title" id="${e}-title"></h2>
7362
+ <p class="wui-tour-text" id="${e}-text"></p>
7363
+ <div class="wui-tour-actions">
7364
+ <button type="button" class="btn btn-sm btn-link wui-tour-skip"></button>
7365
+ <div class="wui-tour-nav">
7366
+ <button type="button" class="btn btn-sm btn-outline-secondary wui-tour-back"></button>
7367
+ <button type="button" class="btn btn-sm btn-primary wui-tour-next"></button>
7368
+ </div>
7369
+ </div>
7370
+ </div>
7371
+ <div class="visually-hidden" role="status" aria-live="polite"></div>`, document.body.appendChild(t), this._layer = t, this._spot = t.querySelector(".wui-tour-spot"), this._card = t.querySelector(".wui-tour-card"), this._live = t.querySelector("[role=status]"), this._card.querySelector(".wui-tour-skip").addEventListener("click", () => this._close("skipped")), this._card.querySelector(".wui-tour-back").addEventListener("click", () => this._move(-1)), this._card.querySelector(".wui-tour-next").addEventListener("click", () => this._move(1)), this._onKey = (e) => this._key(e), this._onFocusIn = (e) => {
7372
+ this._layer && !this._layer.contains(e.target) && this._card.focus();
7373
+ }, document.addEventListener("keydown", this._onKey, !0), document.addEventListener("focusin", this._onFocusIn), I(t, () => this._place());
7374
+ }
7375
+ _show(e) {
7376
+ this._current = e;
7377
+ let { index: t, target: n } = e, r = this._steps[t], i = this._steps, a = t === i.length - 1, o = this._card;
7378
+ o.querySelector(".wui-tour-position").textContent = `Step ${t + 1} of ${i.length}`;
7379
+ let s = o.querySelector(".wui-tour-title");
7380
+ s.textContent = r.title || "", s.hidden = !r.title, o.querySelector(".wui-tour-text").textContent = r.description || "", o.querySelector(".wui-tour-skip").textContent = this._label("skip"), o.querySelector(".wui-tour-back").textContent = this._label("back"), o.querySelector(".wui-tour-back").hidden = t <= this._firstIndex, o.querySelector(".wui-tour-next").textContent = this._label(a ? "done" : "next"), this._live.textContent = [
7381
+ `Step ${t + 1} of ${i.length}`,
7382
+ r.title,
7383
+ r.description
7384
+ ].filter(Boolean).join(". "), n.scrollIntoView?.({
7385
+ block: "center",
7386
+ inline: "nearest"
7387
+ }), this._place(), (!o.contains(document.activeElement) || document.activeElement.hidden) && o.focus(), this.dispatchEvent(new CustomEvent("wui-tour:step", {
7388
+ bubbles: !0,
7389
+ detail: {
7390
+ step: r,
7391
+ index: t
7392
+ }
7393
+ }));
7394
+ }
7395
+ _place() {
7396
+ if (!this._current || !this._layer) return;
7397
+ let e = this._current.target.getBoundingClientRect(), t = this._spot.style;
7398
+ t.top = `${e.top - Di}px`, t.left = `${e.left - Di}px`, t.width = `${e.width + Di * 2}px`, t.height = `${e.height + Di * 2}px`, F(this._spot, this._card, { clampHeight: !0 });
7399
+ }
7400
+ async _move(e) {
7401
+ if (!this._current || this._moving) return;
7402
+ this._moving = !0;
7403
+ let t = this._run;
7404
+ try {
7405
+ let n = await this._locate(this._current.index + e, e, t);
7406
+ if (t !== this._run) return;
7407
+ n ? this._show(n) : e > 0 && await this._close("finished");
7408
+ } finally {
7409
+ this._moving = !1;
7410
+ }
7411
+ }
7412
+ _key(e) {
7413
+ if (!(!this._layer || e.altKey || e.ctrlKey || e.metaKey)) {
7414
+ if (e.key === "Escape") e.preventDefault(), e.stopPropagation(), this._close("skipped");
7415
+ else if (e.key === "ArrowRight" || e.key === "ArrowLeft") e.preventDefault(), e.key === "ArrowRight" ? this._move(1) : this._current.index > this._firstIndex && this._move(-1);
7416
+ else if (e.key === "Tab") {
7417
+ let t = Array.from(this._card.querySelectorAll("button")).filter((e) => !e.hidden), n = t[0], r = t[t.length - 1], i = document.activeElement;
7418
+ !this._card.contains(i) || e.shiftKey && (i === n || i === this._card) ? (e.preventDefault(), (e.shiftKey ? r : n).focus()) : !e.shiftKey && i === r && (e.preventDefault(), n.focus());
7419
+ }
7420
+ }
7421
+ }
7422
+ _teardown() {
7423
+ if (!this._layer) return;
7424
+ document.removeEventListener("keydown", this._onKey, !0), document.removeEventListener("focusin", this._onFocusIn), L(this._layer), this._layer.remove(), this._layer = null, this._current = null;
7425
+ let e = this._returnFocus;
7426
+ this._returnFocus = null, e?.isConnected && e.focus?.();
7427
+ }
7428
+ async _close(e) {
7429
+ let t = this._run;
7430
+ this._teardown();
7431
+ let n = this._store();
7432
+ try {
7433
+ n && t === this._run && await n.markSeen(this.tourId);
7434
+ } finally {
7435
+ this._finish(e);
7436
+ }
7437
+ }
7438
+ _finish(e) {
7439
+ this._run++, this._running = !1, this.hasAttribute("open") && this.removeAttribute("open"), this.dispatchEvent(new CustomEvent("wui-tour:close", {
7440
+ bubbles: !0,
7441
+ detail: { reason: e }
7442
+ }));
7443
+ }
7444
+ }, Mi = [
7249
7445
  "none",
7250
7446
  "single",
7251
7447
  "multiple"
7252
- ], wi = "parentId", Ti = "Loading", Ei = "Could not load. Try again.", Di = ":scope > input[data-wui-mirror]", Oi = [
7448
+ ], Ni = "parentId", Pi = "Loading", Fi = "Could not load. Try again.", Ii = ":scope > input[data-wui-mirror]", Li = [
7253
7449
  "nodes",
7254
7450
  "selection",
7255
7451
  "selected",
@@ -7257,14 +7453,14 @@ var pi = class extends e {
7257
7453
  "loadChildren",
7258
7454
  "loadUrl",
7259
7455
  "name"
7260
- ], ki = 0;
7456
+ ], Ri = 0;
7261
7457
  function X(e, t, n) {
7262
7458
  let r = document.createElement(e);
7263
7459
  t && (r.className = t);
7264
7460
  for (let [e, t] of Object.entries(n ?? {})) t != null && r.setAttribute(e, String(t));
7265
7461
  return r;
7266
7462
  }
7267
- var Ai = class extends e {
7463
+ var zi = class extends e {
7268
7464
  static get observedAttributes() {
7269
7465
  return [
7270
7466
  "selection",
@@ -7276,7 +7472,7 @@ var Ai = class extends e {
7276
7472
  ];
7277
7473
  }
7278
7474
  constructor() {
7279
- super(), this._uid = `wui-tree-${++ki}`, this._seq = 0, this._roots = [], this._byId = /* @__PURE__ */ new Map(), this._prev = null, this._staged = null, this._els = /* @__PURE__ */ new Map(), this._checked = /* @__PURE__ */ new Set(), this._selected = null, this._focusId = null, this._loader = null, this._list = null, this._live = null, this._ready = !1, this._nav = Gt({
7475
+ super(), this._uid = `wui-tree-${++Ri}`, this._seq = 0, this._roots = [], this._byId = /* @__PURE__ */ new Map(), this._prev = null, this._staged = null, this._els = /* @__PURE__ */ new Map(), this._checked = /* @__PURE__ */ new Set(), this._selected = null, this._focusId = null, this._loader = null, this._list = null, this._live = null, this._ready = !1, this._nav = Gt({
7280
7476
  getVisibleOptions: () => this._visible().map((e) => this._els.get(e.id)?.row),
7281
7477
  getActive: () => this._visible().findIndex((e) => e.id === this._focusId),
7282
7478
  setActive: (e) => this._focusNode(this._visible()[e]),
@@ -7291,7 +7487,7 @@ var Ai = class extends e {
7291
7487
  }
7292
7488
  connectedCallback() {
7293
7489
  let e = {};
7294
- for (let t of Oi) Object.hasOwn(this, t) && (e[t] = this[t], delete this[t]);
7490
+ for (let t of Li) Object.hasOwn(this, t) && (e[t] = this[t], delete this[t]);
7295
7491
  if (!this._ready) {
7296
7492
  this._ready = !0;
7297
7493
  let e = this._readScript();
@@ -7317,7 +7513,7 @@ var Ai = class extends e {
7317
7513
  }
7318
7514
  get selection() {
7319
7515
  let e = this.getAttribute("selection");
7320
- return Ci.includes(e) ? e : "none";
7516
+ return Mi.includes(e) ? e : "none";
7321
7517
  }
7322
7518
  set selection(e) {
7323
7519
  this.setAttribute("selection", String(e));
@@ -7361,13 +7557,13 @@ var Ai = class extends e {
7361
7557
  e == null ? this.removeAttribute("name") : this.setAttribute("name", String(e));
7362
7558
  }
7363
7559
  get loadingText() {
7364
- return this.getAttribute("loading-text") ?? Ti;
7560
+ return this.getAttribute("loading-text") ?? Pi;
7365
7561
  }
7366
7562
  set loadingText(e) {
7367
7563
  this.setAttribute("loading-text", String(e ?? ""));
7368
7564
  }
7369
7565
  get errorText() {
7370
- return this.getAttribute("error-text") ?? Ei;
7566
+ return this.getAttribute("error-text") ?? Fi;
7371
7567
  }
7372
7568
  set errorText(e) {
7373
7569
  this.setAttribute("error-text", String(e ?? ""));
@@ -7556,8 +7752,8 @@ var Ai = class extends e {
7556
7752
  let t = this.getAttribute("load-url");
7557
7753
  if (!t) throw Error("<wui-tree> has a node with children to load but no loadChildren or load-url.");
7558
7754
  let n = new URL(t, window.location.href);
7559
- n.searchParams.set(wi, e.id);
7560
- let r = await A(n.href, { headers: { Accept: "application/json" } });
7755
+ n.searchParams.set(Ni, e.id);
7756
+ let r = await fe(n.href, { headers: { Accept: "application/json" } });
7561
7757
  if (!r.ok) throw Error(`Loading children answered ${r.kind}.`);
7562
7758
  return JSON.parse(r.html);
7563
7759
  }
@@ -7577,7 +7773,7 @@ var Ai = class extends e {
7577
7773
  let e = this.selection;
7578
7774
  if (e === "multiple") z(this, this.values);
7579
7775
  else if (e === "single") R(this, this._selected ?? "");
7580
- else for (let e of this.querySelectorAll(Di)) e.remove();
7776
+ else for (let e of this.querySelectorAll(Ii)) e.remove();
7581
7777
  }
7582
7778
  _render() {
7583
7779
  if (!this._list) return;
@@ -7629,7 +7825,7 @@ var Ai = class extends e {
7629
7825
  row: s
7630
7826
  }), o;
7631
7827
  }
7632
- }, ji = "wui-wizard-step", Mi = class extends e {
7828
+ }, Bi = "wui-wizard-step", Vi = class extends e {
7633
7829
  static get observedAttributes() {
7634
7830
  return [
7635
7831
  "active",
@@ -7664,7 +7860,7 @@ var Ai = class extends e {
7664
7860
  this._beforeNext = typeof e == "function" ? e : null;
7665
7861
  }
7666
7862
  get _steps() {
7667
- return [...this.querySelectorAll(`:scope > ${ji}`)];
7863
+ return [...this.querySelectorAll(`:scope > ${Bi}`)];
7668
7864
  }
7669
7865
  refresh() {
7670
7866
  this._rendered && this._renderChrome();
@@ -7703,7 +7899,7 @@ var Ai = class extends e {
7703
7899
  }
7704
7900
  _reconcileSteps() {
7705
7901
  let e = this._steps, t = this._known;
7706
- if (this._known = e, Ni(e, t)) return e;
7902
+ if (this._known = e, Hi(e, t)) return e;
7707
7903
  let n = (n) => new Set([...n].map((n) => e.indexOf(t[n])).filter((e) => e >= 0));
7708
7904
  this._skipped = n(this._skipped), this._invalid = n(this._invalid);
7709
7905
  let r = t[this._active];
@@ -7723,7 +7919,7 @@ var Ai = class extends e {
7723
7919
  _onStepsMutated() {
7724
7920
  if (!this._rendered) return;
7725
7921
  let e = this._steps;
7726
- (!e.length || this._header.nextElementSibling === e[0] && this._footer.previousElementSibling === e[e.length - 1]) && Ni(e, this._known) || (this._renderChrome(), this._observer?.takeRecords());
7922
+ (!e.length || this._header.nextElementSibling === e[0] && this._footer.previousElementSibling === e[e.length - 1]) && Hi(e, this._known) || (this._renderChrome(), this._observer?.takeRecords());
7727
7923
  }
7728
7924
  _syncPanels(e) {
7729
7925
  e.forEach((e, t) => {
@@ -7748,15 +7944,15 @@ var Ai = class extends e {
7748
7944
  return e.map((r, o) => {
7749
7945
  let s = this._stepStatus(r, o), c = r.getAttribute("label") || "", l = r.getAttribute("description") || "", u = r.getAttribute("icon") || "", d = o + 1, f;
7750
7946
  f = s === "done" ? B("check") : s === "error" ? B("alert-triangle") : s === "skipped" ? B("minus") : u ? B(u) : String(d);
7751
- let p = s === "pending" ? "step" : `step ${s}`, m = s === "active" ? " aria-current=\"step\"" : "", h = a || o < this._active, g = l ? `<span class="step-desc">${Pi(l)}</span>` : "", _;
7752
- _ = t ? `<span class="step-circle">${f}</span><span class="step-text"><span class="step-index">Step ${d}</span><span class="step-label">${Pi(c)}</span>${g}</span>` : n ? `<span class="step-circle">${f}</span><span class="step-index">Step ${d}</span><span class="step-label">${Pi(c)}</span>${g}` : `<span class="step-circle">${f}</span><span class="step-label">${Pi(c)}</span>${g}`;
7947
+ let p = s === "pending" ? "step" : `step ${s}`, m = s === "active" ? " aria-current=\"step\"" : "", h = a || o < this._active, g = l ? `<span class="step-desc">${Ui(l)}</span>` : "", _;
7948
+ _ = t ? `<span class="step-circle">${f}</span><span class="step-text"><span class="step-index">Step ${d}</span><span class="step-label">${Ui(c)}</span>${g}</span>` : n ? `<span class="step-circle">${f}</span><span class="step-index">Step ${d}</span><span class="step-label">${Ui(c)}</span>${g}` : `<span class="step-circle">${f}</span><span class="step-label">${Ui(c)}</span>${g}`;
7753
7949
  let v = h ? `<button type="button" class="${p}" data-step="${o}"${m}>${_}</button>` : `<div class="${p}"${m}>${_}</div>`;
7754
7950
  return t && i && o < e.length - 1 ? `${v}<span class="step-line${s === "done" ? " done" : ""}" aria-hidden="true"></span>` : v;
7755
7951
  }).join("");
7756
7952
  }
7757
7953
  _footerHtml(e) {
7758
7954
  let t = this._active, n = e.length - 1, r = this.hasAttribute("disabled") ? " disabled" : "", i = e[t]?.hasAttribute("optional") || this.hasAttribute("skippable"), a = this.getAttribute("back-label") || "Back", o = this.getAttribute("next-label") || "Next", s = this.getAttribute("skip-label") || "Skip", c = this.getAttribute("finish-label") || "Finish";
7759
- return `${t > 0 ? `<button type="button" class="btn btn-secondary" data-nav="back"${r}>${B("arrow-left", { className: "me-2" })}${Pi(a)}</button>` : "<span></span>"}<span class="wizard-footer-actions">${i && t < n ? `<button type="button" class="btn btn-subtle" data-nav="skip"${r}>${Pi(s)}</button>` : ""}${t < n ? `<button type="button" class="btn btn-primary" data-nav="next"${r}>${Pi(o)}${B("arrow-right", { className: "ms-2" })}</button>` : `<button type="button" class="btn btn-primary" data-nav="finish"${r}>${Pi(c)}</button>`}</span>`;
7955
+ return `${t > 0 ? `<button type="button" class="btn btn-secondary" data-nav="back"${r}>${B("arrow-left", { className: "me-2" })}${Ui(a)}</button>` : "<span></span>"}<span class="wizard-footer-actions">${i && t < n ? `<button type="button" class="btn btn-subtle" data-nav="skip"${r}>${Ui(s)}</button>` : ""}${t < n ? `<button type="button" class="btn btn-primary" data-nav="next"${r}>${Ui(o)}${B("arrow-right", { className: "ms-2" })}</button>` : `<button type="button" class="btn btn-primary" data-nav="finish"${r}>${Ui(c)}</button>`}</span>`;
7760
7956
  }
7761
7957
  _wire() {
7762
7958
  this._teardown(), this._onHeaderClick = (e) => {
@@ -7830,7 +8026,7 @@ var Ai = class extends e {
7830
8026
  _reflectActive(e) {
7831
8027
  this._reflecting = !0, this.setAttribute("active", String(e)), this._reflecting = !1;
7832
8028
  }
7833
- }, Ni = (e, t) => e.length === t.length && e.every((e, n) => e === t[n]), Pi = (e) => String(e ?? "").replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;"), Fi = class extends e {
8029
+ }, Hi = (e, t) => e.length === t.length && e.every((e, n) => e === t[n]), Ui = (e) => String(e ?? "").replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;"), Wi = class extends e {
7834
8030
  static get observedAttributes() {
7835
8031
  return [
7836
8032
  "label",
@@ -7844,8 +8040,8 @@ var Ai = class extends e {
7844
8040
  let e = this.closest("wui-wizard");
7845
8041
  e && typeof e.refresh == "function" && e.refresh();
7846
8042
  }
7847
- }, Ii = 2e3;
7848
- async function Li(e) {
8043
+ }, Gi = 2e3;
8044
+ async function Ki(e) {
7849
8045
  try {
7850
8046
  if (navigator.clipboard?.writeText) return await navigator.clipboard.writeText(e), !0;
7851
8047
  } catch {}
@@ -7860,14 +8056,14 @@ async function Li(e) {
7860
8056
  }
7861
8057
  //#endregion
7862
8058
  //#region src/fileValidation.js
7863
- var Ri = "image/png,image/jpeg,image/webp", zi = 5, Bi = {
8059
+ var qi = "image/png,image/jpeg,image/webp", Ji = 5, Yi = {
7864
8060
  "image/png": [".png"],
7865
8061
  "image/jpeg": [".jpg", ".jpeg"],
7866
8062
  "image/webp": [".webp"],
7867
8063
  "image/gif": [".gif"],
7868
8064
  "image/svg+xml": [".svg"],
7869
8065
  "application/pdf": [".pdf"]
7870
- }, Vi = {
8066
+ }, Xi = {
7871
8067
  "image/png": "PNG",
7872
8068
  "image/jpeg": "JPG",
7873
8069
  "image/webp": "WEBP",
@@ -7881,7 +8077,7 @@ var Ri = "image/png,image/jpeg,image/webp", zi = 5, Bi = {
7881
8077
  ".gif": "GIF",
7882
8078
  ".svg": "SVG",
7883
8079
  ".pdf": "PDF"
7884
- }, Hi = (e) => String(e || "").split(",").map((e) => e.trim().toLowerCase()).filter(Boolean), Ui = [
8080
+ }, Zi = (e) => String(e || "").split(",").map((e) => e.trim().toLowerCase()).filter(Boolean), Qi = [
7885
8081
  ".png",
7886
8082
  ".jpg",
7887
8083
  ".jpeg",
@@ -7892,64 +8088,71 @@ var Ri = "image/png,image/jpeg,image/webp", zi = 5, Bi = {
7892
8088
  ".avif",
7893
8089
  ".heic"
7894
8090
  ];
7895
- function Wi(e) {
8091
+ function $i(e) {
7896
8092
  if (!e) return !1;
7897
8093
  let t = typeof e == "object" && e.type ? String(e.type).toLowerCase() : "";
7898
8094
  if (t) return t.startsWith("image/");
7899
8095
  let n = typeof e == "string" ? e : e.name || e.url || "", r = String(n).toLowerCase();
7900
- return Ui.some((e) => r.endsWith(e));
8096
+ return Qi.some((e) => r.endsWith(e));
8097
+ }
8098
+ function ea(e) {
8099
+ if (!e) return !1;
8100
+ let t = typeof e == "object" && e.type ? String(e.type).toLowerCase() : "";
8101
+ if (t) return t === "application/pdf";
8102
+ let n = typeof e == "string" ? e : e.name || e.url || "";
8103
+ return String(n).toLowerCase().split(/[?#]/)[0].endsWith(".pdf");
7901
8104
  }
7902
- function Gi(e) {
7903
- let t = Hi(e);
7904
- return t.length ? t.every((e) => e.startsWith(".") ? Ui.includes(e) : e === "image/*" || e.startsWith("image/")) : !1;
8105
+ function ta(e) {
8106
+ let t = Zi(e);
8107
+ return t.length ? t.every((e) => e.startsWith(".") ? Qi.includes(e) : e === "image/*" || e.startsWith("image/")) : !1;
7905
8108
  }
7906
- function Ki(e) {
8109
+ function na(e) {
7907
8110
  let t = [];
7908
- for (let n of Hi(e)) {
7909
- let e = Vi[n] || (n.startsWith(".") ? n.slice(1).toUpperCase() : n.toUpperCase());
8111
+ for (let n of Zi(e)) {
8112
+ let e = Xi[n] || (n.startsWith(".") ? n.slice(1).toUpperCase() : n.toUpperCase());
7910
8113
  t.includes(e) || t.push(e);
7911
8114
  }
7912
8115
  return t.length <= 1 ? t[0] || "supported" : `${t.slice(0, -1).join(", ")} or ${t[t.length - 1]}`;
7913
8116
  }
7914
- function qi(e, t) {
7915
- let n = Hi(t);
8117
+ function ra(e, t) {
8118
+ let n = Zi(t);
7916
8119
  if (!n.length) return !0;
7917
8120
  let r = (e.type || "").toLowerCase(), i = (e.name || "").toLowerCase();
7918
- return n.some((e) => e.startsWith(".") ? i.endsWith(e) : e.endsWith("/*") ? r.startsWith(e.slice(0, -1)) : r && r === e ? !0 : !r && (Bi[e] || []).some((e) => i.endsWith(e)));
8121
+ return n.some((e) => e.startsWith(".") ? i.endsWith(e) : e.endsWith("/*") ? r.startsWith(e.slice(0, -1)) : r && r === e ? !0 : !r && (Yi[e] || []).some((e) => i.endsWith(e)));
7919
8122
  }
7920
- function Ji(e, t = {}) {
8123
+ function ia(e, t = {}) {
7921
8124
  if (!e) return null;
7922
- let n = t.accept === void 0 ? Ri : t.accept, r = t.maxSizeMb === void 0 ? 5 : t.maxSizeMb;
7923
- return qi(e, n) ? r > 0 && e.size > r * 1024 * 1024 ? `Keep the file under ${r} MB.` : null : `Choose a ${Ki(n)} file.`;
8125
+ let n = t.accept === void 0 ? qi : t.accept, r = t.maxSizeMb === void 0 ? 5 : t.maxSizeMb;
8126
+ return ra(e, n) ? r > 0 && e.size > r * 1024 * 1024 ? `Keep the file under ${r} MB.` : null : `Choose a ${na(n)} file.`;
7924
8127
  }
7925
8128
  //#endregion
7926
8129
  //#region src/inputMask.js
7927
- var Yi = /[0-9]/, Xi = {
7928
- 9: Yi,
8130
+ var aa = /[0-9]/, oa = {
8131
+ 9: aa,
7929
8132
  A: /[A-Za-z]/,
7930
8133
  "*": /[0-9A-Za-z]/
7931
- }, Zi = /[9A*]/, Qi = /* @__PURE__ */ new Set([
8134
+ }, sa = /[9A*]/, ca = /* @__PURE__ */ new Set([
7932
8135
  "text",
7933
8136
  "tel",
7934
8137
  "search",
7935
8138
  "url",
7936
8139
  "password"
7937
- ]), $i = (e) => {
8140
+ ]), la = (e) => {
7938
8141
  let t = e.replace(/\D/g, "");
7939
8142
  return t.length === 12 && t.startsWith("91") ? t.slice(2) : t.length === 11 && t.startsWith("0") ? t.slice(1) : e;
7940
- }, ea = (e) => {
8143
+ }, ua = (e) => {
7941
8144
  let t = Number(e.slice(0, 2)), n = Number(e.slice(2, 4)), r = Number(e.slice(4, 8));
7942
8145
  if (r < 1) return !1;
7943
8146
  let i = new Date(Date.UTC(r, n - 1, t));
7944
8147
  return i.getUTCFullYear() === r && i.getUTCMonth() === n - 1 && i.getUTCDate() === t;
7945
- }, ta = (e) => e.length <= 3 ? e : `${e.slice(0, -3).replace(/\B(?=(\d{2})+(?!\d))/g, ",")},${e.slice(-3)}`, na = (e) => {
8148
+ }, da = (e) => e.length <= 3 ? e : `${e.slice(0, -3).replace(/\B(?=(\d{2})+(?!\d))/g, ",")},${e.slice(-3)}`, fa = (e) => {
7946
8149
  let t = /^(\d{4})-(\d{2})-(\d{2})$/.exec(e.trim());
7947
8150
  return t ? `${t[3]}-${t[2]}-${t[1]}` : e;
7948
8151
  };
7949
- function ra(e, { upper: t = !1, normalize: n, valid: r, post: i = (e) => e, message: a = "Enter the full value" } = {}) {
7950
- let o = [...e].map((e) => Xi[e] ? { re: Xi[e] } : { lit: e }), s = o.filter((e) => e.re).length;
8152
+ function pa(e, { upper: t = !1, normalize: n, valid: r, post: i = (e) => e, message: a = "Enter the full value" } = {}) {
8153
+ let o = [...e].map((e) => oa[e] ? { re: oa[e] } : { lit: e }), s = o.filter((e) => e.re).length;
7951
8154
  return {
7952
- inputMode: o.every((e) => !e.re || e.re === Yi) ? "numeric" : "text",
8155
+ inputMode: o.every((e) => !e.re || e.re === aa) ? "numeric" : "text",
7953
8156
  normalize: n,
7954
8157
  post: i,
7955
8158
  message: a,
@@ -7974,18 +8177,18 @@ function ra(e, { upper: t = !1, normalize: n, valid: r, post: i = (e) => e, mess
7974
8177
  isValid: (e) => e.length === s && (!r || r(e))
7975
8178
  };
7976
8179
  }
7977
- function ia() {
8180
+ function ma() {
7978
8181
  return {
7979
8182
  inputMode: "decimal",
7980
8183
  post: (e) => e,
7981
8184
  message: "Enter a valid amount",
7982
8185
  extract(e) {
7983
8186
  let t = "", n = !1, r = 0;
7984
- for (let i of e) Yi.test(i) ? n ? r < 2 && (t += i, r++) : t += i : i === "." && !n && (n = !0, t += i);
8187
+ for (let i of e) aa.test(i) ? n ? r < 2 && (t += i, r++) : t += i : i === "." && !n && (n = !0, t += i);
7985
8188
  return t.startsWith(".") && (t = `0${t}`), t.replace(/^0+(?=\d)/, "");
7986
8189
  },
7987
8190
  layout(e) {
7988
- let [t, n] = e.split("."), r = ta(t) + (e.includes(".") ? `.${n}` : "");
8191
+ let [t, n] = e.split("."), r = da(t) + (e.includes(".") ? `.${n}` : "");
7989
8192
  return {
7990
8193
  text: r,
7991
8194
  isRaw: [...r].map((e) => e !== ",")
@@ -7994,75 +8197,75 @@ function ia() {
7994
8197
  isValid: (e) => /^\d+(\.\d{1,2})?$/.test(e)
7995
8198
  };
7996
8199
  }
7997
- var aa = {
7998
- "phone-in": () => ra("99999 99999", {
7999
- normalize: $i,
8200
+ var ha = {
8201
+ "phone-in": () => pa("99999 99999", {
8202
+ normalize: la,
8000
8203
  valid: (e) => /^[6-9]/.test(e),
8001
8204
  message: "Enter a 10-digit mobile number"
8002
8205
  }),
8003
- pan: () => ra("AAAAA9999A", {
8206
+ pan: () => pa("AAAAA9999A", {
8004
8207
  upper: !0,
8005
8208
  valid: (e) => /^[A-Z]{5}\d{4}[A-Z]$/.test(e),
8006
8209
  message: "Enter a valid PAN"
8007
8210
  }),
8008
- gstin: () => ra("99AAAAA9999A***", {
8211
+ gstin: () => pa("99AAAAA9999A***", {
8009
8212
  upper: !0,
8010
8213
  valid: (e) => /^\d{2}[A-Z]{5}\d{4}[A-Z][1-9A-Z]Z[0-9A-Z]$/.test(e),
8011
8214
  message: "Enter a valid GSTIN"
8012
8215
  }),
8013
- aadhaar: () => ra("9999 9999 9999", {
8216
+ aadhaar: () => pa("9999 9999 9999", {
8014
8217
  valid: (e) => /^[2-9]/.test(e),
8015
8218
  message: "Enter a valid 12-digit Aadhaar number"
8016
8219
  }),
8017
- ifsc: () => ra("AAAA*******", {
8220
+ ifsc: () => pa("AAAA*******", {
8018
8221
  upper: !0,
8019
8222
  valid: (e) => /^[A-Z]{4}0[A-Z0-9]{6}$/.test(e),
8020
8223
  message: "Enter a valid IFSC"
8021
8224
  }),
8022
- "pin-code": () => ra("999999", {
8225
+ "pin-code": () => pa("999999", {
8023
8226
  valid: (e) => /^[1-9]/.test(e),
8024
8227
  message: "Enter a valid 6-digit PIN code"
8025
8228
  }),
8026
- date: () => ra("99-99-9999", {
8027
- normalize: na,
8028
- valid: ea,
8029
- post: (e, t) => e.length === 8 && ea(e) ? `${e.slice(4)}-${e.slice(2, 4)}-${e.slice(0, 2)}` : t,
8229
+ date: () => pa("99-99-9999", {
8230
+ normalize: fa,
8231
+ valid: ua,
8232
+ post: (e, t) => e.length === 8 && ua(e) ? `${e.slice(4)}-${e.slice(2, 4)}-${e.slice(0, 2)}` : t,
8030
8233
  message: "Enter a valid date as DD-MM-YYYY"
8031
8234
  }),
8032
- amount: ia
8033
- }, oa = Object.keys(aa), sa = (e) => {
8235
+ amount: ma
8236
+ }, ga = Object.keys(ha), _a = (e) => {
8034
8237
  let t = String(e).toLowerCase();
8035
- return Object.hasOwn(aa, t) ? t : void 0;
8036
- }, ca = (e) => Zi.test(String(e)) && sa(e) === void 0, la = /* @__PURE__ */ new Map();
8037
- function ua(e) {
8238
+ return Object.hasOwn(ha, t) ? t : void 0;
8239
+ }, va = (e) => sa.test(String(e)) && _a(e) === void 0, ya = /* @__PURE__ */ new Map();
8240
+ function ba(e) {
8038
8241
  if (e == null || e === "") return null;
8039
8242
  let t = String(e);
8040
- return la.has(t) || (ca(t) ? la.set(t, ra(t)) : la.set(t, Object.hasOwn(aa, t) ? aa[t]() : null)), la.get(t);
8243
+ return ya.has(t) || (va(t) ? ya.set(t, pa(t)) : ya.set(t, Object.hasOwn(ha, t) ? ha[t]() : null)), ya.get(t);
8041
8244
  }
8042
8245
  var Z = (e, t) => e.normalize ? e.normalize(t) : t;
8043
- function da(e, t) {
8044
- let n = ua(e);
8246
+ function xa(e, t) {
8247
+ let n = ba(e);
8045
8248
  return n ? n.extract(Z(n, String(t ?? ""))) : String(t ?? "");
8046
8249
  }
8047
- function fa(e, t) {
8048
- let n = ua(e);
8250
+ function Sa(e, t) {
8251
+ let n = ba(e);
8049
8252
  if (!n) return String(t ?? "");
8050
8253
  let r = n.extract(Z(n, String(t ?? "")));
8051
8254
  return n.post(r, n.layout(r).text);
8052
8255
  }
8053
- function pa(e, t) {
8054
- let n = ua(e);
8256
+ function Ca(e, t) {
8257
+ let n = ba(e);
8055
8258
  return n ? n.layout(n.extract(Z(n, String(t ?? "")))).text : String(t ?? "");
8056
8259
  }
8057
- var ma = (e, t) => {
8260
+ var wa = (e, t) => {
8058
8261
  if (t <= 0) return 0;
8059
8262
  let n = 0;
8060
8263
  for (let r = 0; r < e.length; r++) if (e[r] && ++n === t) return r + 1;
8061
8264
  return e.length;
8062
- }, ha = /* @__PURE__ */ new WeakMap(), ga = (e) => ha.get(e)?.(), _a = /* @__PURE__ */ new WeakMap();
8063
- function va(e, t, n, r) {
8064
- let i = e.getAll(t), a = _a.get(e);
8065
- a || _a.set(e, a = /* @__PURE__ */ new Set());
8265
+ }, Ta = /* @__PURE__ */ new WeakMap(), Ea = (e) => Ta.get(e)?.(), Da = /* @__PURE__ */ new WeakMap();
8266
+ function Oa(e, t, n, r) {
8267
+ let i = e.getAll(t), a = Da.get(e);
8268
+ a || Da.set(e, a = /* @__PURE__ */ new Set());
8066
8269
  let o = i.findIndex((e, r) => e === n && !a.has(`${t}\u0000${r}`));
8067
8270
  if (!(o < 0)) {
8068
8271
  if (a.add(`${t}\u0000${o}`), i[o] = r, i.length === 1) {
@@ -8073,7 +8276,7 @@ function va(e, t, n, r) {
8073
8276
  for (let n of i) e.append(t, n);
8074
8277
  }
8075
8278
  }
8076
- function ya(e) {
8279
+ function ka(e) {
8077
8280
  let t = null, n = null, r = !1, i = (t, n) => n === null ? e.removeAttribute(t) : e.setAttribute(t, n), a, o, s = () => {
8078
8281
  t?.remove(), t = null, n && (n.hidden = !1), n = null, r && e.classList.remove("error"), r = !1, a !== void 0 && i("aria-invalid", a), o !== void 0 && i("aria-describedby", o), a = void 0, o = void 0;
8079
8282
  };
@@ -8086,18 +8289,18 @@ function ya(e) {
8086
8289
  l && l !== t && l.textContent.trim() || (t || (r = !e.classList.contains("error"), e.classList.add("error"), a = e.getAttribute("aria-invalid"), o = e.getAttribute("aria-describedby"), c && (t = document.createElement("div"), t.className = "field-error", e.id && (t.id = `${e.id}-error`), n = c.querySelector(".field-hint"), n && (n.hidden = !0), c.insertBefore(t, [...c.children].find((e) => e.classList.contains("field-count")) ?? null), t.id && e.setAttribute("aria-describedby", t.id)), e.setAttribute("aria-invalid", "true")), t && (t.textContent = i));
8087
8290
  };
8088
8291
  }
8089
- function ba(e, { mask: t, postFormatted: n = !1, onChange: r, onInvalidChange: i } = {}) {
8090
- let a = ua(t);
8091
- if (!a || !Qi.has(e.type)) return () => {};
8292
+ function Aa(e, { mask: t, postFormatted: n = !1, onChange: r, onInvalidChange: i } = {}) {
8293
+ let a = ba(t);
8294
+ if (!a || !ca.has(e.type)) return () => {};
8092
8295
  let o = Object.getPrototypeOf(e), s = Object.getOwnPropertyDescriptor(o, "value").set, c = !e.hasAttribute("inputmode");
8093
8296
  c && e.setAttribute("inputmode", a.inputMode);
8094
- let l = i ?? ya(e), u = null, d = !1, f = !1, p = !1, m = "", h = "", g, _ = () => {
8297
+ let l = i ?? ka(e), u = null, d = !1, f = !1, p = !1, m = "", h = "", g, _ = () => {
8095
8298
  let e = p ? m : "";
8096
8299
  e !== h && (h = e, l(h));
8097
8300
  }, v = (t, n, i) => {
8098
8301
  let o = a.extract(t.slice(0, n)).length, c = a.extract(t), { text: l, isRaw: d } = a.layout(c);
8099
- if (e.value !== l && (s.call(e, l), document.activeElement === e && Qi.has(e.type))) {
8100
- let t = ma(d, o);
8302
+ if (e.value !== l && (s.call(e, l), document.activeElement === e && ca.has(e.type))) {
8303
+ let t = wa(d, o);
8101
8304
  e.setSelectionRange(t, t);
8102
8305
  }
8103
8306
  e.dataset.maskRaw = c, m = c && !a.isValid(c) ? a.message : "", e.setCustomValidity(m), _(), i && c !== u && r?.(c, l), u = c;
@@ -8118,13 +8321,13 @@ function ba(e, { mask: t, postFormatted: n = !1, onChange: r, onInvalidChange: i
8118
8321
  if (d || f || t.isComposing) return;
8119
8322
  let n = t.inputType === "insertText" && (t.data?.length ?? 0) <= 1 || t.inputType?.startsWith("delete") ? e.value : Z(a, e.value);
8120
8323
  v(n, e.selectionStart ?? n.length, !0);
8121
- }, C = () => {
8324
+ }, ee = () => {
8122
8325
  f = !0;
8123
- }, w = () => {
8326
+ }, C = () => {
8124
8327
  f = !1;
8125
8328
  let t = Z(a, e.value);
8126
8329
  v(t, e.selectionStart ?? t.length, !0), x();
8127
- }, ee = (t) => {
8330
+ }, te = (t) => {
8128
8331
  let n = t.inputType === "deleteContentBackward";
8129
8332
  if (!n && t.inputType !== "deleteContentForward" || t.isComposing) return;
8130
8333
  let r = e.selectionStart;
@@ -8132,67 +8335,67 @@ function ba(e, { mask: t, postFormatted: n = !1, onChange: r, onInvalidChange: i
8132
8335
  let { isRaw: i } = a.layout(a.extract(e.value)), o = n ? r - 1 : r;
8133
8336
  for (; o >= 0 && o < i.length && !i[o];) o += n ? -1 : 1;
8134
8337
  o !== (n ? r - 1 : r) && (t.preventDefault(), !(o < 0 || o >= i.length) && (v(e.value.slice(0, o) + e.value.slice(o + 1), n ? o : r, !0), x()));
8135
- }, te = (t) => {
8338
+ }, ne = (t) => {
8136
8339
  if (e.readOnly || e.disabled) return;
8137
8340
  let n = t.clipboardData?.getData("text");
8138
8341
  if (n == null) return;
8139
8342
  t.preventDefault();
8140
8343
  let r = Z(a, n), i = e.selectionStart ?? e.value.length, o = e.selectionEnd ?? i;
8141
8344
  v(e.value.slice(0, i) + r + e.value.slice(o), i + r.length, !0), x();
8142
- }, ne = () => {
8345
+ }, re = () => {
8143
8346
  let t = a.extract(e.value);
8144
8347
  return a.post(t, a.layout(t).text);
8145
- }, T = () => {
8348
+ }, w = () => {
8146
8349
  p = !0, _();
8147
8350
  };
8148
- e.addEventListener("input", S), e.addEventListener("beforeinput", ee), e.addEventListener("paste", te), e.addEventListener("compositionstart", C), e.addEventListener("compositionend", w), e.addEventListener("blur", T), e.addEventListener("invalid", T);
8149
- let E = e.form, re = (t) => {
8150
- e.name && !e.disabled && va(t.formData, e.name, e.value, ne());
8151
- }, ie = () => {
8351
+ e.addEventListener("input", S), e.addEventListener("beforeinput", te), e.addEventListener("paste", ne), e.addEventListener("compositionstart", ee), e.addEventListener("compositionend", C), e.addEventListener("blur", w), e.addEventListener("invalid", w);
8352
+ let T = e.form, ie = (t) => {
8353
+ e.name && !e.disabled && Oa(t.formData, e.name, e.value, re());
8354
+ }, ae = () => {
8152
8355
  clearTimeout(g), g = setTimeout(() => {
8153
8356
  p = !1, v(Z(a, e.value), e.value.length, !0);
8154
8357
  }, 0);
8155
8358
  };
8156
- n || (E?.addEventListener("formdata", re), ha.set(e, ne)), E?.addEventListener("reset", ie), E?.addEventListener("submit", T);
8157
- let D = Z(a, e.value);
8158
- return v(D, D.length, !1), () => {
8159
- clearTimeout(g), e.removeEventListener("input", S), e.removeEventListener("beforeinput", ee), e.removeEventListener("paste", te), e.removeEventListener("compositionstart", C), e.removeEventListener("compositionend", w), e.removeEventListener("blur", T), e.removeEventListener("invalid", T), E?.removeEventListener("formdata", re), E?.removeEventListener("reset", ie), E?.removeEventListener("submit", T), ha.delete(e), y ? Object.defineProperty(e, "value", y) : delete e.value, p = !1, m = "", _(), e.setCustomValidity(""), delete e.dataset.maskRaw, c && e.removeAttribute("inputmode");
8359
+ n || (T?.addEventListener("formdata", ie), Ta.set(e, re)), T?.addEventListener("reset", ae), T?.addEventListener("submit", w);
8360
+ let E = Z(a, e.value);
8361
+ return v(E, E.length, !1), () => {
8362
+ clearTimeout(g), e.removeEventListener("input", S), e.removeEventListener("beforeinput", te), e.removeEventListener("paste", ne), e.removeEventListener("compositionstart", ee), e.removeEventListener("compositionend", C), e.removeEventListener("blur", w), e.removeEventListener("invalid", w), T?.removeEventListener("formdata", ie), T?.removeEventListener("reset", ae), T?.removeEventListener("submit", w), Ta.delete(e), y ? Object.defineProperty(e, "value", y) : delete e.value, p = !1, m = "", _(), e.setCustomValidity(""), delete e.dataset.maskRaw, c && e.removeAttribute("inputmode");
8160
8363
  };
8161
8364
  }
8162
- function xa() {
8365
+ function ja() {
8163
8366
  let e = typeof window > "u" ? void 0 : window.jQuery?.validator?.prototype;
8164
8367
  if (!e || e.wuiMaskHook) return;
8165
8368
  let t = e.elementValue;
8166
8369
  e.elementValue = function(e) {
8167
- let n = ga(e);
8370
+ let n = Ea(e);
8168
8371
  return n === void 0 ? t.call(this, e) : n;
8169
8372
  }, e.wuiMaskHook = !0;
8170
8373
  }
8171
- var Sa = /* @__PURE__ */ new WeakMap(), Ca, wa = (e) => {
8172
- Sa.has(e) || Sa.set(e, ba(e, {
8374
+ var Ma = /* @__PURE__ */ new WeakMap(), Na, Pa = (e) => {
8375
+ Ma.has(e) || Ma.set(e, Aa(e, {
8173
8376
  mask: e.dataset.appMask,
8174
8377
  postFormatted: e.hasAttribute("data-mask-post-formatted")
8175
8378
  }));
8176
- }, Ta = (e) => e.nodeType === 1 ? [...e.matches("input[data-app-mask]") ? [e] : [], ...e.querySelectorAll("input[data-app-mask]")] : [];
8177
- function Ea() {
8178
- Ca || typeof MutationObserver > "u" || (Ca = new MutationObserver((e) => {
8379
+ }, Fa = (e) => e.nodeType === 1 ? [...e.matches("input[data-app-mask]") ? [e] : [], ...e.querySelectorAll("input[data-app-mask]")] : [];
8380
+ function Ia() {
8381
+ Na || typeof MutationObserver > "u" || (Na = new MutationObserver((e) => {
8179
8382
  for (let t of e) {
8180
- for (let e of t.removedNodes) for (let t of Ta(e)) Sa.get(t)?.(), Sa.delete(t);
8181
- for (let e of t.addedNodes) for (let t of Ta(e)) wa(t);
8383
+ for (let e of t.removedNodes) for (let t of Fa(e)) Ma.get(t)?.(), Ma.delete(t);
8384
+ for (let e of t.addedNodes) for (let t of Fa(e)) Pa(t);
8182
8385
  }
8183
- }), Ca.observe(document.documentElement, {
8386
+ }), Na.observe(document.documentElement, {
8184
8387
  childList: !0,
8185
8388
  subtree: !0
8186
8389
  }));
8187
8390
  }
8188
- function Da(e = document) {
8189
- xa();
8190
- for (let t of e.querySelectorAll("input[data-app-mask]")) wa(t);
8191
- e === document && Ea();
8391
+ function La(e = document) {
8392
+ ja();
8393
+ for (let t of e.querySelectorAll("input[data-app-mask]")) Pa(t);
8394
+ e === document && Ia();
8192
8395
  }
8193
8396
  //#endregion
8194
8397
  //#region src/passwordRules.js
8195
- var Oa = {
8398
+ var Ra = {
8196
8399
  minLength: 10,
8197
8400
  uppercase: !0,
8198
8401
  lowercase: !0,
@@ -8200,15 +8403,15 @@ var Oa = {
8200
8403
  special: !0,
8201
8404
  uniqueChars: 0,
8202
8405
  customRules: []
8203
- }, ka = "Password requirements";
8204
- function Aa(e) {
8205
- return e === !0 || e == null ? { ...Oa } : {
8206
- ...Oa,
8406
+ }, za = "Password requirements";
8407
+ function Ba(e) {
8408
+ return e === !0 || e == null ? { ...Ra } : {
8409
+ ...Ra,
8207
8410
  ...e
8208
8411
  };
8209
8412
  }
8210
- function ja(e) {
8211
- let t = Aa(e), n = [];
8413
+ function Va(e) {
8414
+ let t = Ba(e), n = [];
8212
8415
  if (t.minLength > 0 && n.push({
8213
8416
  key: "length",
8214
8417
  label: `At least ${t.minLength} characters long`,
@@ -8247,47 +8450,47 @@ function ja(e) {
8247
8450
  }
8248
8451
  return n;
8249
8452
  }
8250
- function Ma(e, t) {
8453
+ function Ha(e, t) {
8251
8454
  let n = e == null ? "" : String(e);
8252
- return ja(t).map((e) => ({
8455
+ return Va(t).map((e) => ({
8253
8456
  key: e.key,
8254
8457
  label: e.label,
8255
8458
  met: e.test(n)
8256
8459
  }));
8257
8460
  }
8258
- function Na(e, t) {
8259
- return Ma(e, t).every((e) => e.met);
8461
+ function Ua(e, t) {
8462
+ return Ha(e, t).every((e) => e.met);
8260
8463
  }
8261
8464
  //#endregion
8262
8465
  //#region src/tableSelect.js
8263
- var Pa = "Select all rows", Fa = "Select row", Q = "wui-select-cell", Ia = (e, t) => {
8466
+ var Wa = "Select all rows", Ga = "Select row", Q = "wui-select-cell", Ka = (e, t) => {
8264
8467
  let n = e.createElement("input");
8265
8468
  return n.type = "checkbox", n.className = "wui-check", n.setAttribute("aria-label", t), n;
8266
8469
  };
8267
- function La(e = document) {
8470
+ function qa(e = document) {
8268
8471
  let t = e.createElement("th");
8269
- return t.className = Q, t.appendChild(Ia(e, Pa)), t;
8472
+ return t.className = Q, t.appendChild(Ka(e, Wa)), t;
8270
8473
  }
8271
- function Ra(e = document) {
8474
+ function Ja(e = document) {
8272
8475
  let t = e.createElement("td");
8273
- return t.className = Q, t.appendChild(Ia(e, Fa)), t;
8476
+ return t.className = Q, t.appendChild(Ka(e, Ga)), t;
8274
8477
  }
8275
- function za(e = document) {
8478
+ function Ya(e = document) {
8276
8479
  let t = e.createElement("td");
8277
8480
  return t.className = Q, t;
8278
8481
  }
8279
- var Ba = (e) => e.firstElementChild?.classList.contains(Q);
8280
- function Va(e) {
8281
- for (let t of e) Ba(t) || t.insertBefore(Ra(t.ownerDocument), t.firstChild);
8482
+ var Xa = (e) => e.firstElementChild?.classList.contains(Q);
8483
+ function Za(e) {
8484
+ for (let t of e) Xa(t) || t.insertBefore(Ja(t.ownerDocument), t.firstChild);
8282
8485
  }
8283
- function Ha(e) {
8486
+ function Qa(e) {
8284
8487
  let t = e.querySelector("thead tr");
8285
8488
  if (!t) return null;
8286
- Ba(t) || t.insertBefore(La(e.ownerDocument), t.firstChild), Va(e.querySelectorAll("tbody tr"));
8287
- for (let t of e.querySelectorAll("tfoot tr")) Ba(t) || t.insertBefore(za(e.ownerDocument), t.firstChild);
8489
+ Xa(t) || t.insertBefore(qa(e.ownerDocument), t.firstChild), Za(e.querySelectorAll("tbody tr"));
8490
+ for (let t of e.querySelectorAll("tfoot tr")) Xa(t) || t.insertBefore(Ya(e.ownerDocument), t.firstChild);
8288
8491
  return t.querySelector(`.${Q} .wui-check`);
8289
8492
  }
8290
- function Ua(e) {
8493
+ function $a(e) {
8291
8494
  let t = e.querySelector(`thead .${Q} .wui-check`), n = [...e.querySelectorAll("tbody tr .wui-check")], r = n.length, i = n.filter((e) => e.checked).length;
8292
8495
  t && (t.checked = r > 0 && i === r, t.indeterminate = i > 0 && i < r);
8293
8496
  for (let t of e.querySelectorAll("tbody tr")) t.classList.toggle("is-selected", !!t.querySelector(".wui-check")?.checked);
@@ -8298,12 +8501,12 @@ function Ua(e) {
8298
8501
  }
8299
8502
  //#endregion
8300
8503
  //#region src/serverTable.js
8301
- var Wa = Object.freeze([
8504
+ var eo = Object.freeze([
8302
8505
  "page",
8303
8506
  "pageSize",
8304
8507
  "sortBy",
8305
8508
  "sortOrder"
8306
- ]), Ga = "search", Ka = Object.freeze({
8509
+ ]), to = "search", no = Object.freeze({
8307
8510
  loading: "Loading rows",
8308
8511
  error: "These rows did not load. Try again.",
8309
8512
  network: "The connection dropped before the rows loaded. Check it and try again.",
@@ -8312,28 +8515,28 @@ var Wa = Object.freeze([
8312
8515
  actionFailed: "That did not work. Try again.",
8313
8516
  actionForbidden: "You do not have permission to do that.",
8314
8517
  empty: "No rows"
8315
- }), qa = /* @__PURE__ */ new WeakMap(), Ja = (e, t) => {
8518
+ }), ro = 5, io = /* @__PURE__ */ new WeakMap(), ao = (e, t) => {
8316
8519
  let n = Number(e);
8317
8520
  return Number.isInteger(n) ? n : t;
8318
- }, Ya = (e) => ({
8319
- total: Ja(e.dataset.total, 0),
8320
- page: Ja(e.dataset.page, 1),
8321
- pageSize: Ja(e.dataset.pageSize, 0),
8521
+ }, oo = (e) => ({
8522
+ total: ao(e.dataset.total, 0),
8523
+ page: ao(e.dataset.page, 1),
8524
+ pageSize: ao(e.dataset.pageSize, 0),
8322
8525
  sortBy: e.dataset.sortBy || "",
8323
8526
  sortOrder: e.dataset.sortOrder === "desc" ? "desc" : "asc"
8324
- }), Xa = (e, t) => {
8527
+ }), so = (e, t) => {
8325
8528
  e && window.WUI?.toast?.(e, { variant: t });
8326
8529
  };
8327
- function Za(e = document) {
8530
+ function co(e = document) {
8328
8531
  let t = e.querySelectorAll ? [...e.querySelectorAll("[data-wui-server]")] : [];
8329
8532
  e instanceof Element && e.matches("[data-wui-server]") && t.unshift(e);
8330
- for (let e of t) qa.has(e) || qa.set(e, $a(e));
8533
+ for (let e of t) io.has(e) || io.set(e, uo(e));
8331
8534
  }
8332
- function Qa(e) {
8535
+ function lo(e) {
8333
8536
  let t = e instanceof Element ? e.closest("[data-wui-server]") : null;
8334
- return t && qa.get(t) || null;
8537
+ return t && io.get(t) || null;
8335
8538
  }
8336
- function $a(e) {
8539
+ function uo(e) {
8337
8540
  let t = e.querySelector(".table-wrap"), n = t?.querySelector(":scope > table"), r = e.dataset.src;
8338
8541
  if (!n || !r) throw Error("A server-paged table needs data-src and a .table-wrap > table: render it with <app-data-table src>.");
8339
8542
  let i = t.querySelector(":scope > [data-wui-table-state]"), a = e.querySelector("[data-wui-table-pager]"), o = e.querySelector("[data-wui-table-status]"), s = {
@@ -8342,11 +8545,11 @@ function $a(e) {
8342
8545
  filtersForm: e.dataset.filtersForm || null,
8343
8546
  filtersRegion: e.dataset.filtersRegion || null,
8344
8547
  searchInput: e.dataset.searchInput || null,
8345
- loadingText: e.dataset.loadingText || Ka.loading,
8346
- errorText: e.dataset.errorText || Ka.error
8347
- }, c = new URL(r, window.location.href), l = new Set(c.searchParams.keys()), u = n.hasAttribute("data-app-datatable-selectable"), d = /* @__PURE__ */ new Set(), f = ue(), p = new AbortController(), m = { signal: p.signal }, h = n.querySelector(":scope > tbody[data-wui-rows]");
8548
+ loadingText: e.dataset.loadingText || no.loading,
8549
+ errorText: e.dataset.errorText || no.error
8550
+ }, c = new URL(r, window.location.href), l = new Set(c.searchParams.keys()), u = n.hasAttribute("data-app-datatable-selectable"), d = /* @__PURE__ */ new Set(), f = pe(), p = new AbortController(), m = { signal: p.signal }, h = n.querySelector(":scope > tbody[data-wui-rows]");
8348
8551
  if (!h) throw Error("A server-paged table needs its rows in <app-table-rows> (tbody[data-wui-rows]).");
8349
- let g = Ya(h), _ = null, v = null, y = (e) => {
8552
+ let g = oo(h), _ = null, v = null, y = (e) => {
8350
8553
  let t = new URLSearchParams();
8351
8554
  for (let [n, r] of new URLSearchParams(e)) l.has(n) || t.append(n, r);
8352
8555
  return t;
@@ -8357,33 +8560,33 @@ function $a(e) {
8357
8560
  let t = new URL(c.href);
8358
8561
  for (let [n, r] of e) l.has(n) || t.searchParams.append(n, r);
8359
8562
  return t.origin === window.location.origin ? `${t.pathname}${t.search}` : t.href;
8360
- }, C = (e, t) => {
8563
+ }, ee = (e, t) => {
8361
8564
  let n = new URLSearchParams(e);
8362
8565
  return n.has("page") && n.set("page", String(t.page)), n.has("pageSize") && n.set("pageSize", String(t.pageSize)), n.has("sortBy") ? t.sortBy ? (n.set("sortBy", t.sortBy), n.set("sortOrder", t.sortOrder)) : (n.delete("sortBy"), n.delete("sortOrder")) : n.delete("sortOrder"), n;
8363
- }, w = C(s.urlState ? y(window.location.search) : new URLSearchParams(), g);
8364
- s.urlState && x(w) !== `${window.location.pathname}${window.location.search}${window.location.hash}` && window.history.replaceState(window.history.state, "", x(w));
8365
- let ee = (e, n) => t.dispatchEvent(new CustomEvent(e, {
8566
+ }, C = ee(s.urlState ? y(window.location.search) : new URLSearchParams(), g);
8567
+ s.urlState && x(C) !== `${window.location.pathname}${window.location.search}${window.location.hash}` && window.history.replaceState(window.history.state, "", x(C));
8568
+ let te = (e, n) => t.dispatchEvent(new CustomEvent(e, {
8366
8569
  bubbles: !0,
8367
8570
  detail: n
8368
- })), te = (e) => {
8571
+ })), ne = (e) => {
8369
8572
  o && (o.textContent = e);
8370
- }, ne = (e) => {
8371
- if (e.total === 0) return Ka.empty;
8573
+ }, re = (e) => {
8574
+ if (e.total === 0) return no.empty;
8372
8575
  let t = e.pageSize > 0 ? Math.max(1, Math.ceil(e.total / e.pageSize)) : 1;
8373
8576
  return `Page ${e.page} of ${t}, ${e.total} ${e.total === 1 ? "row" : "rows"}`;
8374
- }, T = () => [...n.querySelectorAll(":scope > thead > tr:first-child > th")], E = (e) => {
8577
+ }, w = () => [...n.querySelectorAll(":scope > thead > tr:first-child > th")], T = (e) => {
8375
8578
  if (u && [...e.querySelectorAll(":scope > tr")].some((e) => !e.dataset.rowKey)) throw Error("A selectable server-paged table needs data-row-key on every row, so a selection can span pages.");
8376
- }, re = (e) => {
8579
+ }, ie = (e) => {
8377
8580
  let t = [...e.querySelectorAll(":scope > tr")];
8378
8581
  if (u) {
8379
- Va(t);
8582
+ Za(t);
8380
8583
  for (let e of t) {
8381
8584
  let t = e.querySelector(`.${Q} .wui-check`);
8382
8585
  t && (t.checked = d.has(e.dataset.rowKey));
8383
8586
  }
8384
- Ua(n);
8587
+ $a(n);
8385
8588
  }
8386
- let r = T();
8589
+ let r = w();
8387
8590
  if (n.classList.contains("wui-table-stack")) for (let e of t) [...e.cells].forEach((e, t) => {
8388
8591
  let n = r[t]?.textContent.trim();
8389
8592
  n && !e.hasAttribute("data-label") && e.setAttribute("data-label", n);
@@ -8391,30 +8594,42 @@ function $a(e) {
8391
8594
  r.forEach((e, n) => {
8392
8595
  if (e.classList.contains("wui-col-hidden")) for (let e of t) e.cells[n]?.classList.add("wui-col-hidden");
8393
8596
  });
8394
- }, ie = (e) => {
8597
+ }, ae = (e) => {
8395
8598
  for (let t of e.querySelectorAll(":scope > template[data-wui-pager], :scope > template[data-wui-empty], :scope > template[data-wui-filters]")) t.remove();
8396
- }, D = (e) => e?.dispatchEvent(new CustomEvent("wui:teardown", { bubbles: !0 })), O = (e, t) => {
8599
+ }, E = (e) => e?.dispatchEvent(new CustomEvent("wui:teardown", { bubbles: !0 })), D = (e, t) => {
8397
8600
  if (!i) return;
8398
8601
  let n = e.querySelector(":scope > template[data-wui-empty]");
8399
- D(i), t.total === 0 && n ? (i.replaceChildren(n.content.cloneNode(!0)), i.hidden = !1) : (i.replaceChildren(), i.hidden = !0);
8400
- }, ae = (e) => {
8401
- let r = Ya(e);
8602
+ E(i), t.total === 0 && n ? (i.replaceChildren(n.content.cloneNode(!0)), i.hidden = !1) : (i.replaceChildren(), i.hidden = !0);
8603
+ }, oe = (e) => {
8604
+ let r = oo(e);
8402
8605
  if (a) {
8403
8606
  let t = e.querySelector(":scope > template[data-wui-pager]");
8404
- D(a), a.replaceChildren(...t ? [t.content.cloneNode(!0)] : []), a.hidden = !1;
8607
+ E(a), a.replaceChildren(...t ? [t.content.cloneNode(!0)] : []), a.hidden = !1;
8405
8608
  }
8406
- O(e, r);
8609
+ D(e, r);
8407
8610
  let i = e.querySelector(":scope > template[data-wui-filters]"), o = s.filtersRegion && i ? document.querySelector(s.filtersRegion) : null;
8408
- o && (D(o), o.replaceChildren(i.content.cloneNode(!0))), ie(e), D(h), n.replaceChild(e, h), h = e, g = r, t.removeAttribute("data-wui-table-error"), re(e), pe();
8409
- }, oe = (e) => {
8611
+ o && (E(o), o.replaceChildren(i.content.cloneNode(!0))), ae(e), E(h), n.replaceChild(e, h), h = e, g = r, t.removeAttribute("data-wui-table-error"), ie(e), k();
8612
+ }, se = (e) => {
8410
8613
  let t = document.createElement("template");
8411
8614
  t.innerHTML = `<table>${e}</table>`;
8412
8615
  let n = t.content.querySelector("tbody[data-wui-rows]");
8413
- return n && E(n), n ? document.importNode(n, !0) : null;
8414
- }, se = (e) => {
8415
- e ? t.setAttribute("aria-busy", "true") : t.removeAttribute("aria-busy");
8416
- }, ce = (e) => e === "forbidden" ? Ka.forbidden : e === "network" ? Ka.network : s.errorText, le = (e) => {
8417
- let n = ce(e);
8616
+ return n && T(n), n ? document.importNode(n, !0) : null;
8617
+ }, ce = () => {
8618
+ if (h.querySelector(":scope > tr:not([data-wui-skeleton])")) return;
8619
+ let e = Math.max(1, w().length);
8620
+ h.replaceChildren(...Array.from({ length: ro }, () => {
8621
+ let t = document.createElement("tr");
8622
+ t.setAttribute("data-wui-skeleton", "");
8623
+ for (let n = 0; n < e; n++) {
8624
+ let e = document.createElement("td"), r = document.createElement("span");
8625
+ r.className = "skeleton", r.setAttribute("aria-hidden", "true"), r.style.cssText = `display:block;width:${n === 0 ? 70 : 50}%;height:12px;border-radius:6px`, e.append(r), t.append(e);
8626
+ }
8627
+ return t;
8628
+ })), t.removeAttribute("data-wui-table-error"), i && (i.hidden = !0);
8629
+ }, le = (e) => {
8630
+ e ? (t.setAttribute("aria-busy", "true"), ce()) : t.removeAttribute("aria-busy");
8631
+ }, ue = (e) => e === "forbidden" ? no.forbidden : e === "network" ? no.network : s.errorText, de = (e) => {
8632
+ let n = ue(e);
8418
8633
  if (t.setAttribute("data-wui-table-error", e), a && (a.hidden = !0), i) {
8419
8634
  let t = document.createElement("div");
8420
8635
  t.className = "tbl-empty wui-table-error", t.setAttribute("role", "alert");
@@ -8425,59 +8640,59 @@ function $a(e) {
8425
8640
  let o = document.createElement("div");
8426
8641
  o.className = "tbl-empty-action";
8427
8642
  let s = document.createElement("button");
8428
- s.type = "button", s.className = "btn btn-outline-primary btn-sm", s.setAttribute("data-wui-table-retry", ""), s.textContent = Ka.retry, o.append(s), t.append(r, a, o), D(i), i.replaceChildren(t), i.hidden = !1;
8643
+ s.type = "button", s.className = "btn btn-outline-primary btn-sm", s.setAttribute("data-wui-table-retry", ""), s.textContent = no.retry, o.append(s), t.append(r, a, o), E(i), i.replaceChildren(t), i.hidden = !1;
8429
8644
  }
8430
- te(n);
8431
- }, k = async (e, t = "none") => {
8645
+ ne(n);
8646
+ }, O = async (e, t = "none") => {
8432
8647
  let n = new URLSearchParams(e);
8433
8648
  _ = {
8434
8649
  query: n,
8435
8650
  mode: t
8436
- }, se(!0), te(s.loadingText), ee("wui:table:loading", { query: n.toString() });
8651
+ }, le(!0), ne(s.loadingText), te("wui:table:loading", { query: n.toString() });
8437
8652
  let r = await f.run(S(n));
8438
8653
  if (r.kind === "aborted" || r.kind === "stale" || r.kind === "session") return r;
8439
- se(!1);
8654
+ le(!1);
8440
8655
  let i = null, a = r.ok ? null : r.kind;
8441
8656
  if (r.ok) {
8442
8657
  try {
8443
- i = oe(r.html);
8658
+ i = se(r.html);
8444
8659
  } catch (e) {
8445
8660
  console.error(e);
8446
8661
  }
8447
8662
  i || (a = "server");
8448
8663
  }
8449
- return a ? (le(a), ee("wui:table:error", {
8664
+ return a ? (de(a), te("wui:table:error", {
8450
8665
  status: r.status,
8451
8666
  kind: a,
8452
- message: ce(a)
8453
- }), r) : (ae(i), w = C(n, g), s.urlState && t === "push" ? window.history.pushState(window.history.state, "", x(w)) : s.urlState && t === "replace" && window.history.replaceState(window.history.state, "", x(w)), te(ne(g)), window.WUI?.refresh?.(), ee("wui:table:loaded", {
8667
+ message: ue(a)
8668
+ }), r) : (oe(i), C = ee(n, g), s.urlState && t === "push" ? window.history.pushState(window.history.state, "", x(C)) : s.urlState && t === "replace" && window.history.replaceState(window.history.state, "", x(C)), ne(re(g)), window.WUI?.refresh?.(), te("wui:table:loaded", {
8454
8669
  ...g,
8455
- query: w.toString()
8670
+ query: C.toString()
8456
8671
  }), r);
8457
- }, de = (e) => (e.delete("page"), e), fe = () => [...n.querySelectorAll(":scope > thead th[data-sort-key]")], pe = () => {
8458
- for (let e of fe()) {
8672
+ }, me = (e) => (e.delete("page"), e), he = () => [...n.querySelectorAll(":scope > thead th[data-sort-key]")], k = () => {
8673
+ for (let e of he()) {
8459
8674
  let t = e.dataset.sortKey === g.sortBy;
8460
8675
  e.setAttribute("aria-sort", t ? g.sortOrder === "desc" ? "descending" : "ascending" : "none");
8461
8676
  }
8462
8677
  };
8463
- for (let e of fe()) if (e.classList.add("sortable"), e.tabIndex = 0, !e.querySelector(".sort-icon")) {
8678
+ for (let e of he()) if (e.classList.add("sortable"), e.tabIndex = 0, !e.querySelector(".sort-icon")) {
8464
8679
  let t = e.classList.contains("num") || e.classList.contains("text-end"), n = document.createElement("span");
8465
8680
  n.className = t ? "sort-icon wui-sort-lead" : "sort-icon", n.innerHTML = B("chevrons-up-down", { size: 14 }), t ? e.prepend(n) : e.append(n);
8466
8681
  }
8467
- let j = (e) => {
8468
- let t = de(new URLSearchParams(w)), n = g.sortBy === e && g.sortOrder === "asc" ? "desc" : "asc";
8469
- return t.set("sortBy", e), t.set("sortOrder", n), k(t, "push");
8682
+ let ge = (e) => {
8683
+ let t = me(new URLSearchParams(C)), n = g.sortBy === e && g.sortOrder === "asc" ? "desc" : "asc";
8684
+ return t.set("sortBy", e), t.set("sortOrder", n), O(t, "push");
8470
8685
  };
8471
8686
  n.addEventListener("click", (e) => {
8472
8687
  let t = e.target.closest("th[data-sort-key]");
8473
- t && n.tHead?.contains(t) && j(t.dataset.sortKey);
8688
+ t && n.tHead?.contains(t) && ge(t.dataset.sortKey);
8474
8689
  }), n.addEventListener("keydown", (e) => {
8475
8690
  if (e.key !== "Enter" && e.key !== " ") return;
8476
8691
  let t = e.target.closest?.("th[data-sort-key]");
8477
- !t || !n.tHead?.contains(t) || (e.preventDefault(), j(t.dataset.sortKey));
8692
+ !t || !n.tHead?.contains(t) || (e.preventDefault(), ge(t.dataset.sortKey));
8478
8693
  });
8479
- let me = () => {
8480
- Ua(n), n.dispatchEvent(new CustomEvent("selectionchange", {
8694
+ let _e = () => {
8695
+ $a(n), n.dispatchEvent(new CustomEvent("selectionchange", {
8481
8696
  bubbles: !0,
8482
8697
  detail: {
8483
8698
  selected: d.size,
@@ -8497,77 +8712,77 @@ function $a(e) {
8497
8712
  if (!e) return;
8498
8713
  t.checked ? d.add(e) : d.delete(e);
8499
8714
  }
8500
- me();
8715
+ _e();
8501
8716
  }
8502
8717
  }), a && (a.addEventListener("click", (e) => {
8503
8718
  let t = e.target.closest("a[href]");
8504
- !t || e.defaultPrevented || e.button !== 0 || e.ctrlKey || e.metaKey || e.shiftKey || e.altKey || (e.preventDefault(), k(b(t.getAttribute("href")), "push"));
8719
+ !t || e.defaultPrevented || e.button !== 0 || e.ctrlKey || e.metaKey || e.shiftKey || e.altKey || (e.preventDefault(), O(b(t.getAttribute("href")), "push"));
8505
8720
  }), a.addEventListener("change", (e) => {
8506
- !e.target.classList?.contains("tpg-select") || !e.target.value || (e.stopPropagation(), k(b(e.target.value), "push"));
8721
+ !e.target.classList?.contains("tpg-select") || !e.target.value || (e.stopPropagation(), O(b(e.target.value), "push"));
8507
8722
  }));
8508
- let he = () => {
8723
+ let ve = () => {
8509
8724
  if (!s.searchInput) return null;
8510
8725
  let e = document.querySelector(s.searchInput);
8511
8726
  return e && (e.matches("input, textarea") ? e : e.querySelector("input"));
8512
- }, ge = () => e.isConnected ? !0 : (p.abort(), clearTimeout(v), !1), _e = (e, t) => {
8727
+ }, A = () => e.isConnected ? !0 : (p.abort(), clearTimeout(v), !1), ye = (e, t) => {
8513
8728
  let n = t?.name ? new FormData(e, t) : new FormData(e), r = new Set([...e.querySelectorAll("[name]")].map((e) => e.getAttribute("name"))), i = new URLSearchParams();
8514
- for (let [e, t] of w) e !== "page" && (Wa.includes(e) || !r.has(e)) && i.append(e, t);
8515
- for (let [e, t] of n) typeof t != "string" || t === "" || Wa.includes(e) || l.has(e) || i.append(e, t);
8516
- let a = he();
8729
+ for (let [e, t] of C) e !== "page" && (eo.includes(e) || !r.has(e)) && i.append(e, t);
8730
+ for (let [e, t] of n) typeof t != "string" || t === "" || eo.includes(e) || l.has(e) || i.append(e, t);
8731
+ let a = ve();
8517
8732
  if (a) {
8518
- i.delete(Ga);
8733
+ i.delete(to);
8519
8734
  let e = a.value.trim();
8520
- e && i.set(Ga, e);
8735
+ e && i.set(to, e);
8521
8736
  }
8522
- return k(i, "push");
8523
- }, ve = (e) => s.filtersForm && e.closest?.(s.filtersForm) || s.filtersRegion && e.closest?.(s.filtersRegion) || null;
8737
+ return O(i, "push");
8738
+ }, be = (e) => s.filtersForm && e.closest?.(s.filtersForm) || s.filtersRegion && e.closest?.(s.filtersRegion) || null;
8524
8739
  document.addEventListener("submit", (e) => {
8525
- !ge() || !s.filtersForm || !(e.target instanceof HTMLFormElement) || !e.target.matches(s.filtersForm) || (e.preventDefault(), _e(e.target, e.submitter));
8740
+ !A() || !s.filtersForm || !(e.target instanceof HTMLFormElement) || !e.target.matches(s.filtersForm) || (e.preventDefault(), ye(e.target, e.submitter));
8526
8741
  }, m), document.addEventListener("change", (e) => {
8527
- if (!ge() || !s.filtersForm) return;
8742
+ if (!A() || !s.filtersForm) return;
8528
8743
  let t = e.target.closest?.(s.filtersForm);
8529
- !t || e.target === he() || _e(t);
8744
+ !t || e.target === ve() || ye(t);
8530
8745
  }, m);
8531
- let ye = (e, t) => {
8746
+ let xe = (e, t) => {
8532
8747
  for (let n of e?.querySelectorAll("input[name]:not([type=hidden], [type=checkbox], [type=radio])") ?? []) {
8533
8748
  let e = t.get(n.name) ?? "";
8534
8749
  n.value !== e && (n.value = e, n.dispatchEvent(new Event("input", { bubbles: !0 })));
8535
8750
  }
8536
8751
  };
8537
8752
  document.addEventListener("click", (e) => {
8538
- if (!ge()) return;
8753
+ if (!A()) return;
8539
8754
  let t = e.target.closest?.("a[href]");
8540
- if (!t || !ve(t) || e.defaultPrevented || e.button !== 0 || e.ctrlKey || e.metaKey || e.shiftKey || e.altKey) return;
8755
+ if (!t || !be(t) || e.defaultPrevented || e.button !== 0 || e.ctrlKey || e.metaKey || e.shiftKey || e.altKey) return;
8541
8756
  let n = new URL(t.getAttribute("href"), window.location.href);
8542
8757
  if (n.origin !== window.location.origin || n.pathname !== window.location.pathname) return;
8543
8758
  e.preventDefault();
8544
- let r = de(b(n.href));
8545
- ye(t.closest("form"), r), k(r, "push");
8759
+ let r = me(b(n.href));
8760
+ xe(t.closest("form"), r), O(r, "push");
8546
8761
  }, m), document.addEventListener("input", (e) => {
8547
- if (!ge()) return;
8548
- let t = he();
8762
+ if (!A()) return;
8763
+ let t = ve();
8549
8764
  !t || e.target !== t || (clearTimeout(v), v = setTimeout(() => {
8550
- let e = de(new URLSearchParams(w)), n = t.value.trim();
8551
- n ? e.set(Ga, n) : e.delete(Ga), e.toString() !== w.toString() && k(e, "replace");
8765
+ let e = me(new URLSearchParams(C)), n = t.value.trim();
8766
+ n ? e.set(to, n) : e.delete(to), e.toString() !== C.toString() && O(e, "replace");
8552
8767
  }, 300));
8553
8768
  }, m), s.urlState && window.addEventListener("popstate", () => {
8554
- if (!ge()) return;
8555
- let e = y(window.location.search), t = he();
8556
- t && (t.value = e.get("search") ?? ""), k(e, "none");
8769
+ if (!A()) return;
8770
+ let e = y(window.location.search), t = ve();
8771
+ t && (t.value = e.get("search") ?? ""), O(e, "none");
8557
8772
  }, m), document.addEventListener("wui:modal:success", () => {
8558
- ge() && s.refreshOnSuccess && k(w, "none");
8773
+ A() && s.refreshOnSuccess && O(C, "none");
8559
8774
  }, m), i?.addEventListener("click", (e) => {
8560
- e.target.closest("[data-wui-table-retry]") && _ && k(_.query, _.mode);
8775
+ e.target.closest("[data-wui-table-retry]") && _ && O(_.query, _.mode);
8561
8776
  });
8562
- let be = async (e) => {
8777
+ let Se = async (e) => {
8563
8778
  let t = e.dataset.url;
8564
8779
  if (!t) throw Error("A data-wui-row-action button needs data-url: the handler the action posts to.");
8565
8780
  let n = e.closest("tr")?.dataset.rowKey ?? null, r = e.dataset.wuiRowAction || "";
8566
8781
  e.disabled = !0, e.setAttribute("aria-busy", "true");
8567
- let i = await A(t, { method: (e.dataset.method || "post").toUpperCase() });
8782
+ let i = await fe(t, { method: (e.dataset.method || "post").toUpperCase() });
8568
8783
  if (e.disabled = !1, e.removeAttribute("aria-busy"), i.kind === "session" || i.kind === "aborted") return;
8569
8784
  let a = i.message;
8570
- i.ok ? (Xa(a, i.toastVariant || "success"), await k(w, "none")) : Xa(a || (i.kind === "forbidden" ? Ka.actionForbidden : Ka.actionFailed), "danger"), ee("wui:table:action", {
8785
+ i.ok ? (so(a, i.toastVariant || "success"), await O(C, "none")) : so(a || (i.kind === "forbidden" ? no.actionForbidden : no.actionFailed), "danger"), te("wui:table:action", {
8571
8786
  action: r,
8572
8787
  key: n,
8573
8788
  ok: i.ok,
@@ -8576,18 +8791,18 @@ function $a(e) {
8576
8791
  };
8577
8792
  return n.addEventListener("click", (e) => {
8578
8793
  let t = e.target.closest("[data-wui-row-action]");
8579
- !t || !h.contains(t) || t.disabled || (e.preventDefault(), !(t.dataset.confirm && !window.confirm(t.dataset.confirm)) && be(t));
8580
- }), E(h), ie(h), u && Ha(n), re(h), pe(), {
8794
+ !t || !h.contains(t) || t.disabled || (e.preventDefault(), Se(t));
8795
+ }), T(h), ae(h), u && Qa(n), ie(h), k(), {
8581
8796
  el: e,
8582
- reload: () => k(w, "none"),
8583
- query: () => new URLSearchParams(w),
8797
+ reload: () => O(C, "none"),
8798
+ query: () => new URLSearchParams(C),
8584
8799
  setQuery: (e) => {
8585
- let t = new URLSearchParams(w);
8800
+ let t = new URLSearchParams(C);
8586
8801
  for (let [n, r] of Object.entries(e ?? {})) {
8587
8802
  t.delete(n);
8588
8803
  for (let e of Array.isArray(r) ? r : [r]) e != null && e !== "" && t.append(n, String(e));
8589
8804
  }
8590
- return (!e || !("page" in e)) && t.delete("page"), k(t, "push");
8805
+ return (!e || !("page" in e)) && t.delete("page"), O(t, "push");
8591
8806
  },
8592
8807
  selection: {
8593
8808
  keys: () => [...d],
@@ -8595,158 +8810,158 @@ function $a(e) {
8595
8810
  clear: () => {
8596
8811
  d.clear();
8597
8812
  for (let e of h.querySelectorAll(`:scope > tr > .${Q} .wui-check`)) e.checked = !1;
8598
- me();
8813
+ _e();
8599
8814
  }
8600
8815
  }
8601
8816
  };
8602
8817
  }
8603
8818
  //#endregion
8604
8819
  //#region src/serverActions.js
8605
- var eo = "wuiConfirm", to = Object.freeze(["danger"]), no = Object.freeze([
8820
+ var fo = "wuiConfirm", po = Object.freeze(["danger"]), mo = Object.freeze([
8606
8821
  "success",
8607
8822
  "info",
8608
8823
  "warning",
8609
8824
  "danger"
8610
- ]), ro = "wui.flash", io = Object.freeze({
8825
+ ]), ho = "wui.flash", go = Object.freeze({
8611
8826
  confirmTitle: "Are you sure?",
8612
8827
  confirmLabel: "Confirm",
8613
8828
  cancelLabel: "Cancel",
8614
8829
  failed: "That did not work. Try again.",
8615
8830
  forbidden: "You do not have permission to do that.",
8616
8831
  network: "Could not reach the server. Check your connection and try again."
8617
- }), ao = /* @__PURE__ */ new WeakSet(), oo = null, so = null, co = !1, lo = (e) => {
8832
+ }), _o = /* @__PURE__ */ new WeakSet(), vo = null, yo = null, bo = !1, xo = (e) => {
8618
8833
  let t = document.createElement("span");
8619
8834
  return t.textContent = e ?? "", t.innerHTML;
8620
- }, uo = (e, t) => {
8835
+ }, So = (e, t) => {
8621
8836
  e && window.WUI?.toast?.(e, { variant: t });
8622
- }, fo = () => {
8837
+ }, Co = () => {
8623
8838
  let e = window.bootstrap?.Modal;
8624
8839
  if (!e) throw Error("data-wui-confirm: Bootstrap's bundle (window.bootstrap) is not loaded on this page.");
8625
8840
  return e;
8626
8841
  };
8627
- function po() {
8628
- let e = document.getElementById(eo);
8629
- return e || (e = document.createElement("div"), e.id = eo, e.className = "modal fade wui-modal-shell", e.tabIndex = -1, e.setAttribute("aria-hidden", "true"), e.setAttribute("role", "dialog"), e.setAttribute("aria-modal", "true"), e.style.setProperty("--wui-modal-max-width", `${pe.md}px`), e.innerHTML = `<div class="modal-dialog modal-dialog-centered wui-rb-dialog"><div class="modal-content wui-modal wui-confirm"><div class="wui-modal-body"><div class="wui-confirm-content"><span class="wui-confirm-icon"><wui-status-icon tone="info" size="120"></wui-status-icon></span><h3 class="wui-confirm-title" tabindex="-1"></h3><p class="wui-confirm-msg"></p></div></div><div class="wui-modal-footer"><div class="wui-confirm-actions"><button type="button" class="btn btn-secondary" data-bs-dismiss="modal">${lo(io.cancelLabel)}</button><button type="button" class="btn btn-primary" data-app-confirm></button></div></div></div></div>`, document.body.appendChild(e), e);
8842
+ function wo() {
8843
+ let e = document.getElementById(fo);
8844
+ return e || (e = document.createElement("div"), e.id = fo, e.className = "modal fade wui-modal-shell", e.tabIndex = -1, e.setAttribute("aria-hidden", "true"), e.setAttribute("role", "dialog"), e.setAttribute("aria-modal", "true"), e.style.setProperty("--wui-modal-max-width", `${he.md}px`), e.innerHTML = `<div class="modal-dialog modal-dialog-centered wui-rb-dialog"><div class="modal-content wui-modal wui-confirm"><div class="wui-modal-body"><div class="wui-confirm-content"><span class="wui-confirm-icon"><wui-status-icon tone="info" size="120"></wui-status-icon></span><h3 class="wui-confirm-title" tabindex="-1"></h3><p class="wui-confirm-msg"></p></div></div><div class="wui-modal-footer"><div class="wui-confirm-actions"><button type="button" class="btn btn-secondary" data-bs-dismiss="modal">${xo(go.cancelLabel)}</button><button type="button" class="btn btn-primary" data-app-confirm></button></div></div></div></div>`, document.body.appendChild(e), e);
8630
8845
  }
8631
- function mo(e, t) {
8846
+ function To(e, t) {
8632
8847
  let n = e.getAttribute("data-wui-confirm-tone");
8633
- if (n !== null && !to.includes(n)) throw TypeError(`data-wui-confirm-tone="${n}" is not supported. Use danger, or leave it off.`);
8634
- let r = fo(), i = po(), a = i.querySelector(".wui-confirm-title"), o = i.querySelector("[data-app-confirm]");
8635
- if (!a || !o) throw Error(`#${eo} is not a confirm dialog with a confirm button. Render <app-confirm-dialog id="${eo}"> without confirm-href, or leave the dialog to the library.`);
8848
+ if (n !== null && !po.includes(n)) throw TypeError(`data-wui-confirm-tone="${n}" is not supported. Use danger, or leave it off.`);
8849
+ let r = Co(), i = wo(), a = i.querySelector(".wui-confirm-title"), o = i.querySelector("[data-app-confirm]");
8850
+ if (!a || !o) throw Error(`#${fo} is not a confirm dialog with a confirm button. Render <app-confirm-dialog id="${fo}"> without confirm-href, or leave the dialog to the library.`);
8636
8851
  let s = i.querySelector(".wui-confirm-msg");
8637
8852
  s || (s = document.createElement("p"), s.className = "wui-confirm-msg", a.after(s));
8638
8853
  let c = n === "danger";
8639
- a.textContent = e.getAttribute("data-wui-confirm-title") || io.confirmTitle, s.textContent = e.getAttribute("data-wui-confirm"), o.textContent = e.getAttribute("data-wui-confirm-label") || io.confirmLabel, o.classList.toggle("btn-danger", c), o.classList.toggle("btn-primary", !c), i.querySelector("wui-status-icon")?.setAttribute("tone", c ? "delete" : "info"), i.setAttribute("aria-label", a.textContent), so = t, co = !1, r.getOrCreateInstance(i).show();
8854
+ a.textContent = e.getAttribute("data-wui-confirm-title") || go.confirmTitle, s.textContent = e.getAttribute("data-wui-confirm"), o.textContent = e.getAttribute("data-wui-confirm-label") || go.confirmLabel, o.classList.toggle("btn-danger", c), o.classList.toggle("btn-primary", !c), i.querySelector("wui-status-icon")?.setAttribute("tone", c ? "delete" : "info"), i.setAttribute("aria-label", a.textContent), yo = t, bo = !1, r.getOrCreateInstance(i).show();
8640
8855
  }
8641
- var ho = (e, t) => {
8642
- oo = e;
8856
+ var Eo = (e, t) => {
8857
+ vo = e;
8643
8858
  try {
8644
8859
  t();
8645
8860
  } finally {
8646
- oo = null;
8861
+ vo = null;
8647
8862
  }
8648
- }, go = (e) => e.disabled === !0 || e.getAttribute("aria-disabled") === "true";
8649
- function _o(e) {
8863
+ }, Do = (e) => e.disabled === !0 || e.getAttribute("aria-disabled") === "true";
8864
+ function Oo(e) {
8650
8865
  let t = e.target.closest?.("[data-wui-confirm]:not(form)");
8651
- !t || t === oo || go(t) || (e.preventDefault(), e.stopImmediatePropagation(), mo(t, () => ho(t, () => t.click())));
8866
+ !t || t === vo || Do(t) || (e.preventDefault(), e.stopImmediatePropagation(), To(t, () => Eo(t, () => t.click())));
8652
8867
  }
8653
- function vo(e) {
8868
+ function ko(e) {
8654
8869
  let t = e.target;
8655
- if (!(t instanceof HTMLFormElement) || !t.hasAttribute("data-wui-confirm") || t === oo || e.submitter && e.submitter === oo) return;
8870
+ if (!(t instanceof HTMLFormElement) || !t.hasAttribute("data-wui-confirm") || t === vo || e.submitter && e.submitter === vo) return;
8656
8871
  e.preventDefault(), e.stopImmediatePropagation();
8657
8872
  let n = e.submitter?.form === t ? e.submitter : void 0;
8658
- mo(t, () => ho(t, () => t.requestSubmit(n)));
8873
+ To(t, () => Eo(t, () => t.requestSubmit(n)));
8659
8874
  }
8660
- function yo(e) {
8661
- let t = e.target.closest?.(`#${eo} [data-app-confirm]`);
8662
- !t || t.disabled || !so || (co = !0, fo().getOrCreateInstance(t.closest(`#${eo}`)).hide());
8875
+ function Ao(e) {
8876
+ let t = e.target.closest?.(`#${fo} [data-app-confirm]`);
8877
+ !t || t.disabled || !yo || (bo = !0, Co().getOrCreateInstance(t.closest(`#${fo}`)).hide());
8663
8878
  }
8664
- function bo(e) {
8879
+ function jo(e) {
8665
8880
  if (e.target.id !== "wuiConfirm") return;
8666
- let t = co ? so : null;
8667
- so = null, co = !1, t?.();
8881
+ let t = bo ? yo : null;
8882
+ yo = null, bo = !1, t?.();
8668
8883
  }
8669
- var xo = (e, t) => {
8670
- e && window.sessionStorage.setItem(ro, JSON.stringify({
8884
+ var Mo = (e, t) => {
8885
+ e && window.sessionStorage.setItem(ho, JSON.stringify({
8671
8886
  message: e,
8672
8887
  variant: t
8673
8888
  }));
8674
- }, So = (e) => e === "forbidden" ? io.forbidden : e === "network" ? io.network : io.failed;
8675
- function Co() {
8676
- for (let e of document.querySelectorAll("[data-wui-server]")) e.dataset.refreshOnSuccess !== "false" && Qa(e)?.reload();
8889
+ }, No = (e) => e === "forbidden" ? go.forbidden : e === "network" ? go.network : go.failed;
8890
+ function Po() {
8891
+ for (let e of document.querySelectorAll("[data-wui-server]")) e.dataset.refreshOnSuccess !== "false" && lo(e)?.reload();
8677
8892
  }
8678
- async function wo(e) {
8893
+ async function Fo(e) {
8679
8894
  let t = e.getAttribute("data-wui-post");
8680
8895
  if (!t) throw Error("A data-wui-post button needs the URL the action posts to.");
8681
8896
  let n = e.getAttribute("data-wui-post-reload");
8682
8897
  if (n !== null && n !== "page") throw TypeError(`data-wui-post-reload="${n}" is not supported. Use page, or leave it off to reload the server tables.`);
8683
8898
  e.disabled = !0, e.setAttribute("aria-busy", "true");
8684
- let r = await A(t, { method: "POST" });
8899
+ let r = await fe(t, { method: "POST" });
8685
8900
  if (r.kind === "session" || r.kind === "aborted") return;
8686
8901
  let i = r.toastVariant || "success";
8687
8902
  if (r.ok && (r.redirect || n === "page")) {
8688
- xo(r.message, i), r.redirect ? window.location.assign(r.redirect) : window.location.reload();
8903
+ Mo(r.message, i), r.redirect ? window.location.assign(r.redirect) : window.location.reload();
8689
8904
  return;
8690
8905
  }
8691
8906
  if (e.disabled = !1, e.removeAttribute("aria-busy"), r.ok) {
8692
- uo(r.message, i), Co();
8907
+ So(r.message, i), Po();
8693
8908
  return;
8694
8909
  }
8695
- uo(r.message || So(r.kind), "danger");
8910
+ So(r.message || No(r.kind), "danger");
8696
8911
  }
8697
- function To(e) {
8912
+ function Io(e) {
8698
8913
  let t = e.target.closest?.("[data-wui-post]");
8699
- t && (e.preventDefault(), !(go(t) || t.getAttribute("aria-busy") === "true") && wo(t).catch((e) => console.error(e)));
8914
+ t && (e.preventDefault(), !(Do(t) || t.getAttribute("aria-busy") === "true") && Fo(t).catch((e) => console.error(e)));
8700
8915
  }
8701
- function Eo() {
8702
- let e = window.sessionStorage.getItem(ro);
8916
+ function Lo() {
8917
+ let e = window.sessionStorage.getItem(ho);
8703
8918
  if (!e) return;
8704
- window.sessionStorage.removeItem(ro);
8919
+ window.sessionStorage.removeItem(ho);
8705
8920
  let { message: t, variant: n } = JSON.parse(e);
8706
- uo(t, n);
8921
+ So(t, n);
8707
8922
  }
8708
- function Do(e) {
8923
+ function Ro(e) {
8709
8924
  let t = e.querySelectorAll ? [...e.querySelectorAll("[data-wui-flash]")] : [];
8710
8925
  e instanceof Element && e.matches("[data-wui-flash]") && t.unshift(e);
8711
8926
  for (let e of t) {
8712
8927
  let t = e.getAttribute("data-wui-flash-variant") || "success";
8713
- if (!no.includes(t)) throw TypeError(`data-wui-flash-variant="${t}" is not supported. Use ${no.join(", ")}.`);
8928
+ if (!mo.includes(t)) throw TypeError(`data-wui-flash-variant="${t}" is not supported. Use ${mo.join(", ")}.`);
8714
8929
  let n = e.getAttribute("data-wui-flash") || e.textContent.trim();
8715
- e.remove(), uo(n, t);
8930
+ e.remove(), So(n, t);
8716
8931
  }
8717
8932
  }
8718
- function Oo(e = document) {
8933
+ function zo(e = document) {
8719
8934
  let t = e.ownerDocument || e;
8720
- ao.has(t) || (ao.add(t), t.addEventListener("click", _o, !0), t.addEventListener("submit", vo, !0), t.addEventListener("click", yo), t.addEventListener("click", To), t.addEventListener("hidden.bs.modal", bo), Eo()), Do(e);
8935
+ _o.has(t) || (_o.add(t), t.addEventListener("click", Oo, !0), t.addEventListener("submit", ko, !0), t.addEventListener("click", Ao), t.addEventListener("click", Io), t.addEventListener("hidden.bs.modal", jo), Lo()), Ro(e);
8721
8936
  }
8722
- var ko = 31536e3, Ao = /* @__PURE__ */ new WeakMap(), jo = (e) => e > 99 ? "99+" : String(e);
8723
- function Mo(e, t, n = document) {
8724
- n.cookie = `${e}=${t ? "1" : "0"}; Path=/; Max-Age=${ko}; SameSite=Lax`;
8937
+ var Bo = 31536e3, Vo = /* @__PURE__ */ new WeakMap(), Ho = (e) => e > 99 ? "99+" : String(e);
8938
+ function Uo(e, t, n = document) {
8939
+ n.cookie = `${e}=${t ? "1" : "0"}; Path=/; Max-Age=${Bo}; SameSite=Lax`;
8725
8940
  }
8726
- var No = (e) => {
8941
+ var Wo = (e) => {
8727
8942
  let t = document.createElement("template");
8728
8943
  return t.innerHTML = e, t.content;
8729
- }, Po = (e, t) => {
8944
+ }, Go = (e, t) => {
8730
8945
  let n = document.createElement("div");
8731
8946
  return n.className = e, n.textContent = t, n;
8732
8947
  };
8733
- function Fo(e, t) {
8734
- let n = e.querySelector(".wui-bell-trigger"), r = e.querySelector(".wui-bell-count"), i = e.querySelector("[data-wui-bell-live]"), a = e.querySelector("[data-wui-bell-list]"), o = e.querySelector(".wui-bell-menu"), { src: s, readAction: c } = e.dataset, l = e.dataset.label || "Notifications", u = e.dataset.emptyText || "You are all caught up.", d = Number(e.dataset.pollSeconds ?? 60), f = ue(), p = Number(e.dataset.unread) || 0, m = (t, a = !0) => {
8948
+ function Ko(e, t) {
8949
+ let n = e.querySelector(".wui-bell-trigger"), r = e.querySelector(".wui-bell-count"), i = e.querySelector("[data-wui-bell-live]"), a = e.querySelector("[data-wui-bell-list]"), o = e.querySelector(".wui-bell-menu"), { src: s, readAction: c } = e.dataset, l = e.dataset.label || "Notifications", u = e.dataset.emptyText || "You are all caught up.", d = Number(e.dataset.pollSeconds ?? 60), f = pe(), p = Number(e.dataset.unread) || 0, m = (t, a = !0) => {
8735
8950
  let o = Math.max(0, Number(t) || 0), s = o !== p;
8736
- p = o, e.dataset.unread = String(o), r && (r.textContent = jo(o), r.hidden = o === 0), n?.setAttribute("aria-label", o === 0 ? l : `${l}, ${jo(o)} unread`), a && s && i && (i.textContent = o === 0 ? "No unread notifications" : `${jo(o)} unread notifications`);
8951
+ p = o, e.dataset.unread = String(o), r && (r.textContent = Ho(o), r.hidden = o === 0), n?.setAttribute("aria-label", o === 0 ? l : `${l}, ${Ho(o)} unread`), a && s && i && (i.textContent = o === 0 ? "No unread notifications" : `${Ho(o)} unread notifications`);
8737
8952
  }, h = () => o?.classList.contains("show") ?? !1, g = () => {
8738
- let e = Po("wui-bell-state", "Could not load notifications. "), t = document.createElement("button");
8953
+ let e = Go("wui-bell-state", "Could not load notifications. "), t = document.createElement("button");
8739
8954
  t.type = "button", t.className = "btn btn-link btn-sm", t.dataset.wuiBellRetry = "", t.textContent = "Retry", e.append(t), a.replaceChildren(e);
8740
8955
  }, _ = async (t) => {
8741
- t && (a.setAttribute("aria-busy", "true"), a.querySelector(".wui-bell-item") || a.replaceChildren(Po("wui-bell-state", "Loading…")));
8956
+ t && (a.setAttribute("aria-busy", "true"), a.querySelector(".wui-bell-item") || a.replaceChildren(Go("wui-bell-state", "Loading…")));
8742
8957
  let n = await f.run(s);
8743
8958
  if (n.kind === "aborted" || n.kind === "stale" || n.kind === "session") return;
8744
8959
  if (a.removeAttribute("aria-busy"), !n.ok) {
8745
8960
  t && g();
8746
8961
  return;
8747
8962
  }
8748
- let r = No(n.html), i = r.querySelector("[data-wui-unread]"), o = i ? Number(i.getAttribute("data-wui-unread")) : p;
8749
- m(o), (t || h()) && (r.querySelector(".wui-bell-item") ? a.replaceChildren(r) : a.replaceChildren(Po("wui-bell-state", u))), e.dispatchEvent(new CustomEvent("wui:notifications:loaded", {
8963
+ let r = Wo(n.html), i = r.querySelector("[data-wui-unread]"), o = i ? Number(i.getAttribute("data-wui-unread")) : p;
8964
+ m(o), (t || h()) && (r.querySelector(".wui-bell-item") ? a.replaceChildren(r) : a.replaceChildren(Go("wui-bell-state", u))), e.dispatchEvent(new CustomEvent("wui:notifications:loaded", {
8750
8965
  bubbles: !0,
8751
8966
  detail: { unread: o }
8752
8967
  }));
@@ -8759,7 +8974,7 @@ function Fo(e, t) {
8759
8974
  let t = e.target.closest("[data-wui-bell-read]");
8760
8975
  if (!t || !c) return;
8761
8976
  t.disabled = !0;
8762
- let n = await A(c, { method: "POST" });
8977
+ let n = await fe(c, { method: "POST" });
8763
8978
  t.disabled = !1, n.ok && (m(0), _(!0));
8764
8979
  });
8765
8980
  let v = null, y = () => {
@@ -8776,9 +8991,9 @@ function Fo(e, t) {
8776
8991
  refresh: () => _(h())
8777
8992
  };
8778
8993
  }
8779
- var Io = (e) => !!e && (e.isContentEditable || /^(INPUT|TEXTAREA|SELECT)$/.test(e.tagName)), Lo = (e, t, n) => `${e}${e.includes("?") ? "&" : "?"}${encodeURIComponent(t)}=${encodeURIComponent(n)}`;
8780
- function Ro(e, t) {
8781
- let n = e.querySelector("input.search-input"), r = e.querySelector(".wui-topsearch-results"), i = e.querySelector(".wui-topsearch-open"), a = e.querySelector("[data-wui-topsearch-live]"), { src: o, param: s = "q", resultsHref: c } = e.dataset, l = Number(e.dataset.minChars ?? 2), u = Number(e.dataset.debounceMs ?? 250), d = ue(), f = null, p = -1, m = () => [...r.querySelectorAll(".wui-topsearch-hit")], h = (e) => {
8994
+ var qo = (e) => !!e && (e.isContentEditable || /^(INPUT|TEXTAREA|SELECT)$/.test(e.tagName)), Jo = (e, t, n) => `${e}${e.includes("?") ? "&" : "?"}${encodeURIComponent(t)}=${encodeURIComponent(n)}`;
8995
+ function Yo(e, t) {
8996
+ let n = e.querySelector("input.search-input"), r = e.querySelector(".wui-topsearch-results"), i = e.querySelector(".wui-topsearch-open"), a = e.querySelector("[data-wui-topsearch-live]"), { src: o, param: s = "q", resultsHref: c } = e.dataset, l = Number(e.dataset.minChars ?? 2), u = Number(e.dataset.debounceMs ?? 250), d = pe(), f = null, p = -1, m = () => [...r.querySelectorAll(".wui-topsearch-hit")], h = (e) => {
8782
8997
  let t = m();
8783
8998
  p = t.length === 0 ? -1 : (e + t.length) % t.length, t.forEach((e, t) => {
8784
8999
  let n = t === p;
@@ -8799,16 +9014,16 @@ function Ro(e, t) {
8799
9014
  e.dispatchEvent(n) && window.location.assign(t);
8800
9015
  }, b = async (t) => {
8801
9016
  e.classList.add("is-loading");
8802
- let n = await d.run(Lo(o, s, t));
9017
+ let n = await d.run(Jo(o, s, t));
8803
9018
  if (!(n.kind === "aborted" || n.kind === "stale" || n.kind === "session")) {
8804
9019
  if (e.classList.remove("is-loading"), n.ok) {
8805
- let e = No(n.html), t = e.querySelector("[data-wui-count]");
9020
+ let e = Wo(n.html), t = e.querySelector("[data-wui-count]");
8806
9021
  r.replaceChildren(e), m().forEach((e, t) => {
8807
9022
  e.id = `${r.id}-opt-${t}`;
8808
9023
  });
8809
9024
  let i = t ? Number(t.getAttribute("data-wui-count")) : m().length;
8810
9025
  a && (a.textContent = i === 0 ? "No results" : `${i} ${i === 1 ? "result" : "results"}`);
8811
- } else r.replaceChildren(Po("wui-topsearch-empty", "Search is unavailable right now."));
9026
+ } else r.replaceChildren(Go("wui-topsearch-empty", "Search is unavailable right now."));
8812
9027
  p = -1, _();
8813
9028
  }
8814
9029
  };
@@ -8826,7 +9041,7 @@ function Ro(e, t) {
8826
9041
  t.preventDefault(), h(p + (t.key === "ArrowDown" ? 1 : -1));
8827
9042
  } else if (t.key === "Enter") {
8828
9043
  let e = m();
8829
- !r.hidden && p >= 0 && e[p] ? (t.preventDefault(), y(e[p].getAttribute("href"))) : c && n.value.trim() !== "" && (t.preventDefault(), y(Lo(c, s, n.value.trim())));
9044
+ !r.hidden && p >= 0 && e[p] ? (t.preventDefault(), y(e[p].getAttribute("href"))) : c && n.value.trim() !== "" && (t.preventDefault(), y(Jo(c, s, n.value.trim())));
8830
9045
  } else t.key === "Escape" && (r.hidden ? e.classList.contains("is-open") && (t.preventDefault(), v(!1), i?.focus()) : (t.preventDefault(), g()));
8831
9046
  }), r.addEventListener("click", (e) => {
8832
9047
  let t = e.target.closest(".wui-topsearch-hit");
@@ -8836,7 +9051,7 @@ function Ro(e, t) {
8836
9051
  v(t), t && n.focus();
8837
9052
  });
8838
9053
  let x = (e) => {
8839
- e.key !== "/" || e.ctrlKey || e.metaKey || e.altKey || Io(e.target) || (e.preventDefault(), v(!0), n.focus());
9054
+ e.key !== "/" || e.ctrlKey || e.metaKey || e.altKey || qo(e.target) || (e.preventDefault(), v(!0), n.focus());
8840
9055
  }, S = (t) => {
8841
9056
  e.contains(t.target) || (g(), e.classList.contains("is-open") && v(!1));
8842
9057
  };
@@ -8844,13 +9059,13 @@ function Ro(e, t) {
8844
9059
  clearTimeout(f), d.abort(), document.removeEventListener("keydown", x), document.removeEventListener("pointerdown", S);
8845
9060
  });
8846
9061
  }
8847
- function zo(e) {
9062
+ function Xo(e) {
8848
9063
  let t = [], n = e.dataset.wuiCollapsedCookie;
8849
- n && e.addEventListener("wui:shell:collapse", (e) => Mo(n, !!e.detail?.collapsed)), e.addEventListener("click", (t) => {
9064
+ n && e.addEventListener("wui:shell:collapse", (e) => Uo(n, !!e.detail?.collapsed)), e.addEventListener("click", (t) => {
8850
9065
  t.target.closest("[data-wui-tabbar-more]") && e.querySelector("[data-app-shell-menu]")?.click();
8851
9066
  });
8852
- let r = e.querySelector("[data-wui-bell]"), i = r ? Fo(r, t) : null, a = e.querySelector("[data-wui-topsearch]");
8853
- a && Ro(a, t);
9067
+ let r = e.querySelector("[data-wui-bell]"), i = r ? Ko(r, t) : null, a = e.querySelector("[data-wui-topsearch]");
9068
+ a && Yo(a, t);
8854
9069
  let o = {
8855
9070
  el: e,
8856
9071
  setUnread(e) {
@@ -8870,109 +9085,109 @@ function zo(e) {
8870
9085
  n ? n.click() : e.classList.toggle("collapsed", !!t);
8871
9086
  }
8872
9087
  };
8873
- Ao.set(e, o);
9088
+ Vo.set(e, o);
8874
9089
  let s = (n) => {
8875
9090
  if (n.target === e || n.target.contains?.(e)) {
8876
9091
  for (let e of t) e();
8877
- Ao.delete(e), delete e.dataset.wuiPartsWired, document.removeEventListener("wui:teardown", s);
9092
+ Vo.delete(e), delete e.dataset.wuiPartsWired, document.removeEventListener("wui:teardown", s);
8878
9093
  }
8879
9094
  };
8880
9095
  return document.addEventListener("wui:teardown", s), o;
8881
9096
  }
8882
- function Bo(e = document) {
9097
+ function Zo(e = document) {
8883
9098
  let t = [];
8884
9099
  e instanceof Element && e.matches("[data-app-shell]") && t.push(e), t.push(...e.querySelectorAll("[data-app-shell]"));
8885
- for (let e of t) e.dataset.wuiPartsWired || (e.dataset.wuiPartsWired = "1", zo(e));
9100
+ for (let e of t) e.dataset.wuiPartsWired || (e.dataset.wuiPartsWired = "1", Xo(e));
8886
9101
  }
8887
- function Vo(e) {
9102
+ function Qo(e) {
8888
9103
  let t = e?.closest?.("[data-app-shell]") ?? null;
8889
- return t ? (Ao.has(t) || Bo(t), Ao.get(t) ?? null) : null;
9104
+ return t ? (Vo.has(t) || Zo(t), Vo.get(t) ?? null) : null;
8890
9105
  }
8891
9106
  //#endregion
8892
9107
  //#region src/themeTransition.js
8893
- var Ho = [
9108
+ var $o = [
8894
9109
  "light",
8895
9110
  "dark",
8896
9111
  "auto"
8897
- ], Uo = [
9112
+ ], es = [
8898
9113
  "wave",
8899
9114
  "circle",
8900
9115
  "slide",
8901
9116
  "blinds",
8902
9117
  "fade",
8903
9118
  "none"
8904
- ], Wo = "wave", Go = "theme", Ko = {
9119
+ ], ts = "wave", ns = "theme", rs = {
8905
9120
  wave: 1100,
8906
9121
  circle: 700,
8907
9122
  slide: 600,
8908
9123
  blinds: 900,
8909
9124
  fade: 350,
8910
9125
  none: 0
8911
- }, qo = "wui-theme-switching", Jo = "wui:theme:change", Yo = "wui-theme-toggle", Xo = "(prefers-color-scheme: dark)", Zo = (e) => typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia(e).matches, Qo = (e) => Ho.includes(e);
8912
- function $o(e) {
8913
- return e === "dark" || e === "auto" && Zo(Xo) ? "dark" : "light";
9126
+ }, is = "wui-theme-switching", as = "wui:theme:change", os = "wui-theme-toggle", ss = "(prefers-color-scheme: dark)", cs = (e) => typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia(e).matches, ls = (e) => $o.includes(e);
9127
+ function us(e) {
9128
+ return e === "dark" || e === "auto" && cs(ss) ? "dark" : "light";
8914
9129
  }
8915
- function es(e = Go, { includeAuto: t = !1 } = {}) {
9130
+ function ds(e = ns, { includeAuto: t = !1 } = {}) {
8916
9131
  let n = null;
8917
9132
  try {
8918
9133
  n = window.localStorage.getItem(e);
8919
9134
  } catch {}
8920
- return !Qo(n) || n === "auto" && !t ? "light" : n;
9135
+ return !ls(n) || n === "auto" && !t ? "light" : n;
8921
9136
  }
8922
- function ts(e, t = Go) {
9137
+ function fs(e, t = ns) {
8923
9138
  try {
8924
9139
  window.localStorage.setItem(t, e);
8925
9140
  } catch {}
8926
9141
  }
8927
- function ns(e) {
9142
+ function ps(e) {
8928
9143
  let t = document.documentElement;
8929
- t.setAttribute("data-theme", e), t.setAttribute("data-bs-theme", $o(e)), document.dispatchEvent(new CustomEvent(Jo, { detail: { mode: e } }));
9144
+ t.setAttribute("data-theme", e), t.setAttribute("data-bs-theme", us(e)), document.dispatchEvent(new CustomEvent(as, { detail: { mode: e } }));
8930
9145
  }
8931
- function rs(e, { includeAuto: t = !1 } = {}) {
9146
+ function ms(e, { includeAuto: t = !1 } = {}) {
8932
9147
  return e === "light" ? "dark" : e === "dark" && t ? "auto" : "light";
8933
9148
  }
8934
- function is(e) {
9149
+ function hs(e) {
8935
9150
  if (typeof window > "u" || typeof window.matchMedia != "function") return () => {};
8936
- let t = window.matchMedia(Xo), n = () => e(t.matches ? "dark" : "light");
9151
+ let t = window.matchMedia(ss), n = () => e(t.matches ? "dark" : "light");
8937
9152
  return t.addEventListener("change", n), () => t.removeEventListener("change", n);
8938
9153
  }
8939
- var as = 60, os = (e) => e < .5 ? 4 * e * e * e : 1 - (-2 * e + 2) ** 3 / 2, ss = (e) => e.toFixed(1), cs = (e, t) => `${ss(e)}px ${ss(t)}px`, ls = {
9154
+ var gs = 60, _s = (e) => e < .5 ? 4 * e * e * e : 1 - (-2 * e + 2) ** 3 / 2, vs = (e) => e.toFixed(1), ys = (e, t) => `${vs(e)}px ${vs(t)}px`, bs = {
8940
9155
  amplitude: 22,
8941
9156
  segments: 36,
8942
9157
  cycles: 1.5,
8943
9158
  ripples: 2
8944
- }, us = 6, ds = (e, t, n, r, i) => {
8945
- let { amplitude: a, segments: o, cycles: s } = ls, c = n * (t + 2 * a), l = i ? t + a - c : c - a, u = i ? t + 2 * a : -2 * a, d = [cs(0, u)];
9159
+ }, xs = 6, Ss = (e, t, n, r, i) => {
9160
+ let { amplitude: a, segments: o, cycles: s } = bs, c = n * (t + 2 * a), l = i ? t + a - c : c - a, u = i ? t + 2 * a : -2 * a, d = [ys(0, u)];
8946
9161
  for (let t = 0; t <= o; t++) {
8947
9162
  let n = e * t / o, i = l + a * Math.sin(2 * Math.PI * s * t / o + r);
8948
- d.push(cs(n, i));
9163
+ d.push(ys(n, i));
8949
9164
  }
8950
- return d.push(cs(e, u)), `polygon(${d.join(", ")})`;
8951
- }, fs = (e, t, n, r) => {
8952
- let i = t / us, a = [];
8953
- for (let t = 0; t < us; t++) {
9165
+ return d.push(ys(e, u)), `polygon(${d.join(", ")})`;
9166
+ }, Cs = (e, t, n, r) => {
9167
+ let i = t / xs, a = [];
9168
+ for (let t = 0; t < xs; t++) {
8954
9169
  let o = t * i, s = i * n, c = r ? o + i - s : o, l = r ? o + i : o + s;
8955
- a.push(cs(0, c), cs(e, c), cs(e, l), cs(0, l));
9170
+ a.push(ys(0, c), ys(e, c), ys(e, l), ys(0, l));
8956
9171
  }
8957
9172
  return `polygon(${a.join(", ")})`;
8958
9173
  };
8959
- function ps(e, { width: t, height: n, to: r = "dark", origin: i } = {}) {
9174
+ function ws(e, { width: t, height: n, to: r = "dark", origin: i } = {}) {
8960
9175
  let a = r === "dark", o = [];
8961
- for (let r = 0; r <= as; r++) {
8962
- let s = r / as, c = os(s);
9176
+ for (let r = 0; r <= gs; r++) {
9177
+ let s = r / gs, c = _s(s);
8963
9178
  switch (e) {
8964
9179
  case "circle": {
8965
9180
  let e = i?.x ?? t / 2, r = i?.y ?? n / 2, a = Math.hypot(Math.max(e, t - e), Math.max(r, n - r));
8966
- o.push({ clipPath: `circle(${ss(a * c)}px at ${ss(e)}px ${ss(r)}px)` });
9181
+ o.push({ clipPath: `circle(${vs(a * c)}px at ${vs(e)}px ${vs(r)}px)` });
8967
9182
  break;
8968
9183
  }
8969
9184
  case "slide": {
8970
9185
  let e = n * (1 - c);
8971
- o.push({ clipPath: a ? `inset(${ss(e)}px 0px 0px 0px)` : `inset(0px 0px ${ss(e)}px 0px)` });
9186
+ o.push({ clipPath: a ? `inset(${vs(e)}px 0px 0px 0px)` : `inset(0px 0px ${vs(e)}px 0px)` });
8972
9187
  break;
8973
9188
  }
8974
9189
  case "blinds":
8975
- o.push({ clipPath: fs(t, n, c, a) });
9190
+ o.push({ clipPath: Cs(t, n, c, a) });
8976
9191
  break;
8977
9192
  case "fade":
8978
9193
  o.push({
@@ -8981,20 +9196,20 @@ function ps(e, { width: t, height: n, to: r = "dark", origin: i } = {}) {
8981
9196
  });
8982
9197
  break;
8983
9198
  case "none": return [];
8984
- default: o.push({ clipPath: ds(t, n, c, s * ls.ripples * 2 * Math.PI, a) });
9199
+ default: o.push({ clipPath: Ss(t, n, c, s * bs.ripples * 2 * Math.PI, a) });
8985
9200
  }
8986
9201
  }
8987
9202
  return o;
8988
9203
  }
8989
- function ms(e, { effect: t = Wo, to: n, origin: r, duration: i, live: a } = {}) {
9204
+ function Ts(e, { effect: t = ts, to: n, origin: r, duration: i, live: a } = {}) {
8990
9205
  let o = document.documentElement, s = n !== void 0 && o.getAttribute("data-bs-theme") === n;
8991
- if (t === "none" || s || Zo("(prefers-reduced-motion: reduce)") || typeof document.startViewTransition != "function" || typeof o.animate != "function") return e(), Promise.resolve(!1);
8992
- o.classList.add(qo);
9206
+ if (t === "none" || s || cs("(prefers-reduced-motion: reduce)") || typeof document.startViewTransition != "function" || typeof o.animate != "function") return e(), Promise.resolve(!1);
9207
+ o.classList.add(is);
8993
9208
  let c = a instanceof Element ? a : null;
8994
- c && (c.style.viewTransitionName = Yo);
8995
- let l = document.startViewTransition(e), u = i ?? Ko[t] ?? Ko.wave;
9209
+ c && (c.style.viewTransitionName = os);
9210
+ let l = document.startViewTransition(e), u = i ?? rs[t] ?? rs.wave;
8996
9211
  return l.ready.then(() => {
8997
- let e = ps(t, {
9212
+ let e = ws(t, {
8998
9213
  width: window.innerWidth,
8999
9214
  height: window.innerHeight,
9000
9215
  to: n,
@@ -9006,16 +9221,16 @@ function ms(e, { effect: t = Wo, to: n, origin: r, duration: i, live: a } = {})
9006
9221
  fill: "both",
9007
9222
  pseudoElement: "::view-transition-new(root)"
9008
9223
  });
9009
- }).catch(() => {}), l.finished.catch(() => {}).then(() => (o.classList.remove(qo), c && (c.style.viewTransitionName = ""), !0));
9224
+ }).catch(() => {}), l.finished.catch(() => {}).then(() => (o.classList.remove(is), c && (c.style.viewTransitionName = ""), !0));
9010
9225
  }
9011
9226
  //#endregion
9012
9227
  //#region src/index.js
9013
9228
  var $ = (e, t) => {
9014
9229
  typeof customElements < "u" && !customElements.get(e) && customElements.define(e, t);
9015
9230
  };
9016
- function hs() {
9017
- $("wui-select", On), $("wui-country-select", Mn), $("wui-phone", Qr), $("wui-datepicker", zn), $("wui-date-range", Bn), $("wui-dock", Vn), $("wui-image-crop", hr), $("wui-kanban", Nt), $("wui-consent-banner", un), $("wui-slider", ei), $("wui-sortable", ui), $("wui-timepicker", Si), $("wui-tree", Ai), $("wui-autocomplete", Zt), $("wui-command-palette", nn), $("wui-context-menu", Tn), $("wui-multiselect", Sr), $("wui-taginput", pi), $("wui-otp", Pr), $("wui-status-icon", Lt), $("wui-wizard-step", Fi), $("wui-wizard", Mi);
9231
+ function Es() {
9232
+ $("wui-select", On), $("wui-country-select", Mn), $("wui-phone", Qr), $("wui-datepicker", zn), $("wui-date-range", Bn), $("wui-dock", Vn), $("wui-image-crop", hr), $("wui-kanban", Pt), $("wui-consent-banner", un), $("wui-slider", ei), $("wui-sortable", ui), $("wui-timepicker", Si), $("wui-tour", ji), $("wui-tree", zi), $("wui-autocomplete", Zt), $("wui-command-palette", nn), $("wui-context-menu", Tn), $("wui-multiselect", Sr), $("wui-taginput", pi), $("wui-otp", Pr), $("wui-status-icon", Rt), $("wui-wizard-step", Wi), $("wui-wizard", Vi);
9018
9233
  }
9019
- hs();
9234
+ Es();
9020
9235
  //#endregion
9021
- export { eo as CONFIRM_DIALOG_ID, to as CONFIRM_TONES, Ii as COPY_FEEDBACK_MS, ie as CSRF_META_NAME, n as CURRENCIES, a as DATE_PATTERNS, D as DEFAULT_CSRF_HEADER, Ri as DEFAULT_IMAGE_ACCEPT, zi as DEFAULT_MAX_SIZE_MB, Oa as DEFAULT_PASSWORD_RULES, ka as DEFAULT_REQUIREMENTS_TITLE, Wo as DEFAULT_THEME_EFFECT, Go as DEFAULT_THEME_STORAGE_KEY, i as DURATION_UNITS, s as EMPTY_VALUE, ro as FLASH_STORAGE_KEY, no as FLASH_VARIANTS, t as FORMAT_STYLES, ae as HTTP_KINDS, o as IST_TIME_ZONE, lt as KANBAN_DRAG_THRESHOLD_PX, ct as KANBAN_LONG_PRESS_MS, st as KANBAN_PHONE_QUERY, ot as KANBAN_STORAGE_PREFIX, at as KANBAN_SUMMARY_FORMATS, M as KANBAN_TEXT, it as KANBAN_TONES, Qi as MASK_INPUT_TYPES, oa as MASK_NAMES, r as MONEY_UNITS, Pa as SELECT_ALL_LABEL, Q as SELECT_CELL_CLASS, Fa as SELECT_ROW_LABEL, io as SERVER_ACTION_TEXT, It as STATUS_TONES, Jo as THEME_CHANGE_EVENT, Uo as THEME_EFFECTS, Ko as THEME_EFFECT_DURATION, Yo as THEME_LIVE_NAME, Ho as THEME_MODES, qo as THEME_SWITCHING_CLASS, O as WUI_HEADERS, Zt as WuiAutocomplete, nn as WuiCommandPalette, un as WuiConsentBanner, Tn as WuiContextMenu, Mn as WuiCountrySelect, zn as WuiDatePicker, Bn as WuiDateRange, Vn as WuiDock, Nt as WuiKanban, Sr as WuiMultiSelect, Pr as WuiOtp, Qr as WuiPhone, On as WuiSelect, ei as WuiSlider, ui as WuiSortable, Lt as WuiStatusIcon, pi as WuiTagInput, Si as WuiTimePicker, Ai as WuiTree, Mi as WuiWizard, Fi as WuiWizardStep, Ki as acceptLabel, Va as addRowSelectCells, Ha as addSelectColumn, ns as applyTheme, ba as attachInputMask, ja as buildPasswordRules, le as classifyStatus, Li as copyTextToClipboard, ue as createRequestQueue, La as createSelectHeaderCell, Ra as createSelectRowCell, za as createSelectSpacerCell, hs as defineWeborityElements, Ma as evaluatePassword, w as formatCompact, S as formatCurrency, E as formatDate, te as formatDuration, pa as formatMasked, x as formatNumber, ee as formatPercent, re as formatValue, Qa as getServerTable, Vo as getShell, B as glyphSvg, Da as initInputMasks, nt as initRemoteModals, Oo as initServerActions, Za as initServerTables, Bo as initShellParts, Wi as isImageFile, Gi as isImageOnlyAccept, ca as isMaskPattern, P as kanbanCardLabel, Dt as kanbanStorageKey, At as kanbanSummaryFormat, rt as loadRemoteModal, ga as maskedPostValue, $t as matchSegments, qi as matchesAccept, rs as nextTheme, Na as passwordSatisfies, fa as postedMasked, da as rawMasked, se as readCsrf, Ot as readKanbanCollapsed, es as readStoredTheme, ua as resolveMask, $o as resolveTheme, ts as storeTheme, jt as sumKanbanValues, Ua as syncSelectAll, ps as themeKeyframes, ne as toInstant, ms as transitionTheme, Ji as validateFile, is as watchSystemTheme, kt as writeKanbanCollapsed, A as wuiFetch };
9236
+ export { fo as CONFIRM_DIALOG_ID, po as CONFIRM_TONES, Gi as COPY_FEEDBACK_MS, ae as CSRF_META_NAME, n as CURRENCIES, a as DATE_PATTERNS, E as DEFAULT_CSRF_HEADER, qi as DEFAULT_IMAGE_ACCEPT, Ji as DEFAULT_MAX_SIZE_MB, Ra as DEFAULT_PASSWORD_RULES, za as DEFAULT_REQUIREMENTS_TITLE, ts as DEFAULT_THEME_EFFECT, ns as DEFAULT_THEME_STORAGE_KEY, i as DURATION_UNITS, s as EMPTY_VALUE, ho as FLASH_STORAGE_KEY, mo as FLASH_VARIANTS, t as FORMAT_STYLES, oe as HTTP_KINDS, o as IST_TIME_ZONE, ut as KANBAN_DRAG_THRESHOLD_PX, lt as KANBAN_LONG_PRESS_MS, ct as KANBAN_PHONE_QUERY, st as KANBAN_STORAGE_PREFIX, ot as KANBAN_SUMMARY_FORMATS, j as KANBAN_TEXT, at as KANBAN_TONES, ca as MASK_INPUT_TYPES, ga as MASK_NAMES, r as MONEY_UNITS, Wa as SELECT_ALL_LABEL, Q as SELECT_CELL_CLASS, Ga as SELECT_ROW_LABEL, go as SERVER_ACTION_TEXT, Lt as STATUS_TONES, as as THEME_CHANGE_EVENT, es as THEME_EFFECTS, rs as THEME_EFFECT_DURATION, os as THEME_LIVE_NAME, $o as THEME_MODES, is as THEME_SWITCHING_CLASS, D as WUI_HEADERS, Zt as WuiAutocomplete, nn as WuiCommandPalette, un as WuiConsentBanner, Tn as WuiContextMenu, Mn as WuiCountrySelect, zn as WuiDatePicker, Bn as WuiDateRange, Vn as WuiDock, Pt as WuiKanban, Sr as WuiMultiSelect, Pr as WuiOtp, Qr as WuiPhone, On as WuiSelect, ei as WuiSlider, ui as WuiSortable, Rt as WuiStatusIcon, pi as WuiTagInput, Si as WuiTimePicker, ji as WuiTour, zi as WuiTree, Vi as WuiWizard, Wi as WuiWizardStep, na as acceptLabel, Za as addRowSelectCells, Qa as addSelectColumn, ps as applyTheme, Aa as attachInputMask, Va as buildPasswordRules, ue as classifyStatus, Ki as copyTextToClipboard, ki as createLocalSeenStore, pe as createRequestQueue, qa as createSelectHeaderCell, Ja as createSelectRowCell, Ya as createSelectSpacerCell, Es as defineWeborityElements, Ha as evaluatePassword, C as formatCompact, S as formatCurrency, T as formatDate, ne as formatDuration, Ca as formatMasked, x as formatNumber, te as formatPercent, ie as formatValue, lo as getServerTable, Qo as getShell, B as glyphSvg, La as initInputMasks, rt as initRemoteModals, zo as initServerActions, co as initServerTables, Zo as initShellParts, $i as isImageFile, ta as isImageOnlyAccept, va as isMaskPattern, ea as isPdfFile, N as kanbanCardLabel, Ot as kanbanStorageKey, jt as kanbanSummaryFormat, it as loadRemoteModal, Ea as maskedPostValue, $t as matchSegments, ra as matchesAccept, ms as nextTheme, Ua as passwordSatisfies, Sa as postedMasked, xa as rawMasked, ce as readCsrf, kt as readKanbanCollapsed, ds as readStoredTheme, ba as resolveMask, us as resolveTheme, fs as storeTheme, Mt as sumKanbanValues, $a as syncSelectAll, ws as themeKeyframes, re as toInstant, Ts as transitionTheme, ia as validateFile, hs as watchSystemTheme, At as writeKanbanCollapsed, fe as wuiFetch };