@ikonai/sdk-react-ui 1.11.0 → 1.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { n as e, t } from "./shadertoy-type-Cs2WeCWV.js";
2
2
  import { IKON_PLATFORM_STREAM_CATEGORY as n, IKON_PLATFORM_STREAM_CATEGORY as r, IKON_UI_STREAM_CATEGORY as i, IKON_UI_STREAM_CATEGORY as a, IkonUiCore as o, LiveSnapshotCache as s, UiStreamStore as c, UiStreamStore as l, isPrerenderVisible as u, prefetchBootSnapshot as d, seedStreamCategory as f } from "@ikonai/sdk-ui";
3
- import { AccessDeniedError as p, AppStartupFailedError as m, AuthenticationError as h, DEFAULT_LOCAL_SERVER_HOST as g, DEFAULT_LOCAL_SERVER_PORT as _, DEFAULT_SLOW_CONNECTION_THRESHOLD_MS as v, FEEDBACK_OPEN_FUNCTION_NAME as ee, IKON_CAPTURE_EXCLUDE_ATTRIBUTE as y, IKON_INSPECT_MODE_CHANGED_EVENT as b, IKON_INSPECT_OUTLINE_ATTRIBUTE as x, IKON_PARAM_OAUTH_CODE as S, IKON_PARAM_OAUTH_PKCE as C, IKON_PARAM_OAUTH_PROVIDER as w, IKON_PARAM_OAUTH_TOKEN as T, IkonClient as te, LogLevel as ne, ProvisioningTimeoutError as re, SSO_PROVIDER_PREFIX as E, ServerFullError as ie, ServerUnavailableError as ae, SessionNotFoundError as oe, SsoRequiredError as se, USER_REMOVAL_GRACE_DAYS as ce, abortSignalTimeout as D, adoptPkceVerifierFromUrl as le, buildOAuthStartUrl as O, cancelOwnRemoval as ue, captureViewAtTap as de, clearFeedbackParam as fe, clearLoginPrompt as pe, consentFor as me, createLogger as k, createPkceChallenge as he, deriveAuthUrl as A, deriveBackendType as ge, deriveCrossOriginAuthUrl as _e, extractUserIdFromToken as ve, getCurrentUser as ye, getDebugOverlayParam as be, getFeedbackParam as xe, getLangParam as Se, getLoginPromptState as Ce, getOrCreateDeviceId as we, getSameOriginAuthUrl as Te, getSignedOutParam as Ee, getTestLinkParam as De, getUrlWithoutSession as j, grantConsent as Oe, isCloudEnvironment as ke, isConsentGranted as Ae, isDebugModeEnabled as je, isEmbedded as Me, isInspectModeEnabled as Ne, onEmbeddedOAuthResult as Pe, parseUrlParams as Fe, randomUuid as Ie, readConsent as Le, reportConnectTimeline as Re, requestOwnRemoval as ze, restorePkceVerifier as Be, revokeConsent as Ve, setLoginPromptRequired as He, startEmbeddedOAuthSignIn as Ue, subscribeLoginPrompt as We, subscribeToLogEvents as Ge, takePkceVerifier as Ke } from "@ikonai/sdk";
4
- import { Fragment as qe, Suspense as Je, createContext as Ye, createElement as Xe, lazy as M, memo as N, use as Ze, useCallback as P, useEffect as F, useLayoutEffect as Qe, useMemo as I, useReducer as $e, useRef as L, useState as R, useSyncExternalStore as et } from "react";
5
- import { Fragment as tt, jsx as z, jsxs as B } from "react/jsx-runtime";
3
+ import { AccessDeniedError as p, AppStartupFailedError as m, AuthenticationError as h, DEFAULT_LOCAL_SERVER_HOST as g, DEFAULT_LOCAL_SERVER_PORT as _, DEFAULT_SLOW_CONNECTION_THRESHOLD_MS as v, FEEDBACK_OPEN_FUNCTION_NAME as ee, IKON_CAPTURE_EXCLUDE_ATTRIBUTE as y, IKON_INSPECT_MODE_CHANGED_EVENT as b, IKON_INSPECT_OUTLINE_ATTRIBUTE as x, IKON_PARAM_OAUTH_CODE as te, IKON_PARAM_OAUTH_PKCE as S, IKON_PARAM_OAUTH_PROVIDER as C, IKON_PARAM_OAUTH_TOKEN as w, IkonClient as ne, LogLevel as re, ProvisioningTimeoutError as ie, SSO_PROVIDER_PREFIX as T, ServerFullError as ae, ServerUnavailableError as oe, SessionNotFoundError as se, SsoRequiredError as ce, USER_REMOVAL_GRACE_DAYS as le, abortSignalTimeout as E, adoptPkceVerifierFromUrl as ue, buildOAuthStartUrl as de, cancelOwnRemoval as fe, captureViewAtTap as pe, clearFeedbackParam as me, clearLoginPrompt as he, consentFor as ge, createLogger as D, createPkceChallenge as _e, deriveAuthUrl as O, deriveBackendType as ve, deriveCrossOriginAuthUrl as ye, extractUserIdFromToken as be, getCurrentUser as xe, getDebugOverlayParam as Se, getFeedbackParam as Ce, getLangParam as we, getLoginPromptState as Te, getOrCreateDeviceId as Ee, getSameOriginAuthUrl as De, getSignedOutParam as Oe, getTestLinkParam as ke, getUrlWithoutSession as k, grantConsent as Ae, isCloudEnvironment as je, isConsentGranted as Me, isDebugModeEnabled as Ne, isEmbedded as Pe, isInspectModeEnabled as Fe, onEmbeddedOAuthResult as Ie, parseUrlParams as Le, randomUuid as Re, readConsent as ze, reportConnectTimeline as Be, requestOwnRemoval as Ve, restorePkceVerifier as He, revokeConsent as Ue, setLoginPromptRequired as We, startEmbeddedOAuthSignIn as Ge, subscribeLoginPrompt as Ke, subscribeToLogEvents as qe, takePkceVerifier as Je } from "@ikonai/sdk";
4
+ import { Fragment as Ye, Suspense as Xe, createContext as Ze, createElement as Qe, lazy as A, memo as j, use as $e, useCallback as M, useEffect as N, useLayoutEffect as et, useMemo as P, useReducer as tt, useRef as F, useState as I, useSyncExternalStore as nt } from "react";
5
+ import { Fragment as rt, jsx as L, jsxs as R } from "react/jsx-runtime";
6
6
  //#region src/ikon-ui.ts
7
- var nt = class {
7
+ var it = class {
8
8
  core;
9
9
  ownsCore;
10
10
  stores = /* @__PURE__ */ new Map();
@@ -93,16 +93,161 @@ var nt = class {
93
93
  notify(e) {
94
94
  for (let t of this.listeners) t(e);
95
95
  }
96
+ }, z = 500, at = 500, ot = 150, st = 7e3, ct = "data-ikon-live-announcer", B = [], V = null, H = /* @__PURE__ */ new WeakMap(), lt = /* @__PURE__ */ new WeakMap(), U = /* @__PURE__ */ new WeakMap(), ut = /* @__PURE__ */ new WeakMap(), W = 0;
97
+ function dt(e) {
98
+ wt();
99
+ let t = {
100
+ submission: e,
101
+ cleanup: void 0,
102
+ state: "queued"
103
+ }, n = H.get(e.region);
104
+ return n && Date.now() < n.until ? (n.held && (n.held.state = "cancelled"), t.state = "held", n.held = t, n.timer ??= setTimeout(() => mt(e.region), Math.max(0, n.until - Date.now()))) : pt(t), { cancel: () => ft(t) };
105
+ }
106
+ function ft(e) {
107
+ let t = e.state;
108
+ if (e.state = "cancelled", t === "queued") {
109
+ B = B.filter((t) => t !== e), B.length === 0 && V !== null && (clearTimeout(V), V = null);
110
+ return;
111
+ }
112
+ if (t === "held") {
113
+ let t = H.get(e.submission.region);
114
+ t?.held === e && (t.held = null, t.timer !== null && (clearTimeout(t.timer), t.timer = null));
115
+ return;
116
+ }
117
+ e.cleanup?.(), e.cleanup = void 0;
118
+ }
119
+ function pt(e) {
120
+ e.state = "queued", B.push(e), V ??= setTimeout(ht, 0);
121
+ }
122
+ function mt(e) {
123
+ let t = H.get(e);
124
+ if (!t) return;
125
+ t.timer = null;
126
+ let n = t.held;
127
+ t.held = null, n && n.state === "held" && pt(n);
128
+ }
129
+ function ht() {
130
+ V = null;
131
+ let e = B.filter((e) => e.state === "queued" && e.submission.region.isConnected);
132
+ if (B = [], e.length === 0) return;
133
+ let t = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Map();
134
+ for (let t of e) {
135
+ let e = t.submission.scrollGroup;
136
+ if (e === null) continue;
137
+ let r = n.get(e);
138
+ (!r || t.submission.ranking >= r.submission.ranking) && n.set(e, t);
139
+ }
140
+ for (let e of n.values()) e.cleanup = e.submission.scroll(), t.add(e);
141
+ let r;
142
+ for (let t of e) {
143
+ let e = t.submission.region, n = St(e), i = `${t.submission.hintKey ?? ""}\u0000${n}`;
144
+ lt.get(e) !== i && (lt.set(e, i), (!r || t.submission.ranking >= r.submission.ranking) && (r = t));
145
+ }
146
+ if (r) {
147
+ r.submission.focus(), t.add(r);
148
+ let e = r.submission;
149
+ e.politeness !== null && gt(e.region, e.politeness, e.hintKey ?? "", Math.max(at, e.cooldownMs));
150
+ }
151
+ let i = Date.now();
152
+ for (let n of e) if (n.state = "done", t.has(n) && n.submission.cooldownMs > 0) {
153
+ let e = H.get(n.submission.region);
154
+ e?.timer != null && clearTimeout(e.timer), H.set(n.submission.region, {
155
+ until: i + n.submission.cooldownMs,
156
+ held: null,
157
+ timer: null
158
+ });
159
+ }
160
+ }
161
+ function gt(e, t, n, r) {
162
+ let i = U.get(e);
163
+ i && clearTimeout(i.timer);
164
+ let a = {
165
+ politeness: t,
166
+ hintKey: n,
167
+ settleMs: r,
168
+ text: St(e),
169
+ timer: setTimeout(() => vt(e, a), _t(r))
170
+ };
171
+ U.set(e, a);
172
+ }
173
+ function _t(e) {
174
+ return Math.max(e, W + ot - Date.now());
175
+ }
176
+ function vt(e, t) {
177
+ if (U.get(e) !== t) return;
178
+ if (!e.isConnected) {
179
+ U.delete(e);
180
+ return;
181
+ }
182
+ let n = St(e);
183
+ if (n !== t.text) {
184
+ t.text = n, t.timer = setTimeout(() => vt(e, t), _t(t.settleMs));
185
+ return;
186
+ }
187
+ U.delete(e);
188
+ let r = yt(ut.get(e), t.hintKey, n);
189
+ ut.set(e, {
190
+ hintKey: t.hintKey,
191
+ text: n
192
+ }), r && xt(bt(r), t.politeness);
193
+ }
194
+ function yt(e, t, n) {
195
+ return e ? e.text && n.length > e.text.length && n.startsWith(e.text) ? n.slice(e.text.length).trim() : n === e.text && t === e.hintKey ? "" : n : n;
196
+ }
197
+ function bt(e) {
198
+ if (e.length <= z) return e;
199
+ let t = e.length - z, n = e.indexOf(" ", t);
200
+ return `…${e.slice(n >= 0 && n < e.length - 1 ? n + 1 : t)}`;
201
+ }
202
+ function xt(e, t) {
203
+ let n = wt()?.[t];
204
+ if (!n) return;
205
+ n.textContent = "";
206
+ let r = document.createElement("div");
207
+ r.textContent = e, n.appendChild(r), setTimeout(() => {
208
+ r.parentNode === n && n.removeChild(r);
209
+ }, st);
210
+ }
211
+ function St(e) {
212
+ return (typeof e.innerText == "string" ? e.innerText : e.textContent ?? "").replace(/\s+/g, " ").trim();
213
+ }
214
+ var Ct = {
215
+ position: "absolute",
216
+ width: "1px",
217
+ height: "1px",
218
+ margin: "-1px",
219
+ padding: "0",
220
+ border: "0",
221
+ overflow: "hidden",
222
+ clip: "rect(0 0 0 0)",
223
+ clipPath: "inset(50%)",
224
+ whiteSpace: "nowrap"
96
225
  };
226
+ function wt() {
227
+ if (typeof document > "u" || !document.body) return;
228
+ let e = document.body.querySelector(`:scope > [${ct}]`);
229
+ if (!e) {
230
+ e = document.createElement("div"), e.setAttribute(ct, "true"), Object.assign(e.style, Ct);
231
+ for (let t of ["polite", "assertive"]) {
232
+ let n = document.createElement("div");
233
+ n.setAttribute("aria-live", t), n.setAttribute("aria-atomic", "true"), n.setAttribute("data-ikon-live", t), e.appendChild(n);
234
+ }
235
+ document.body.appendChild(e), W = Date.now();
236
+ }
237
+ return {
238
+ polite: e.querySelector("[data-ikon-live=\"polite\"]"),
239
+ assertive: e.querySelector("[data-ikon-live=\"assertive\"]")
240
+ };
241
+ }
97
242
  //#endregion
98
243
  //#region src/base/base-div.tsx
99
- function rt(e) {
244
+ function Tt(e) {
100
245
  if (typeof e == "string") {
101
246
  let t = e.trim();
102
247
  return t.length > 0 ? t : void 0;
103
248
  }
104
249
  }
105
- function V(e) {
250
+ function Et(e) {
106
251
  if (typeof e == "string") {
107
252
  let t = e.trim();
108
253
  return t.length > 0 ? t : void 0;
@@ -112,7 +257,7 @@ function V(e) {
112
257
  return t.length > 0 ? t.join(" ") : void 0;
113
258
  }
114
259
  }
115
- function H(...e) {
260
+ function Dt(...e) {
116
261
  let t = "";
117
262
  for (let n of e) if (n) {
118
263
  let e = n.trim();
@@ -120,8 +265,8 @@ function H(...e) {
120
265
  }
121
266
  return t || void 0;
122
267
  }
123
- var it = /* @__PURE__ */ new WeakMap(), at = {};
124
- function U(e) {
268
+ var Ot = /* @__PURE__ */ new WeakMap(), kt = {};
269
+ function At(e) {
125
270
  let t = {};
126
271
  for (let n of e.split(";")) {
127
272
  let e = n.indexOf(":");
@@ -133,28 +278,28 @@ function U(e) {
133
278
  }
134
279
  return t;
135
280
  }
136
- function ot(e, t) {
281
+ function jt(e, t) {
137
282
  let n = e && typeof e == "object" ? e : void 0;
138
283
  return t ? {
139
284
  ...n ?? {},
140
285
  cursor: t
141
286
  } : n;
142
287
  }
143
- function st(e) {
144
- if (!e) return at;
145
- let t = it.get(e);
288
+ function Mt(e) {
289
+ if (!e) return kt;
290
+ let t = Ot.get(e);
146
291
  if (t) return t;
147
292
  let n = {};
148
293
  for (let [t, r] of Object.entries(e)) if (r != null) {
149
294
  if (t === "style" && typeof r == "string") {
150
- n[t] = U(r);
295
+ n[t] = At(r);
151
296
  continue;
152
297
  }
153
298
  (typeof r == "string" || typeof r == "number" || typeof r == "boolean") && (n[t] = r);
154
299
  }
155
- return it.set(e, n), n;
300
+ return Ot.set(e, n), n;
156
301
  }
157
- function ct(e) {
302
+ function Nt(e) {
158
303
  let t = e.parentElement;
159
304
  for (; t;) {
160
305
  let e = window.getComputedStyle(t).overflowY;
@@ -163,18 +308,18 @@ function ct(e) {
163
308
  }
164
309
  return null;
165
310
  }
166
- var lt = 1.5;
167
- function ut(e, t, n) {
311
+ var Pt = 1.5;
312
+ function Ft(e, t, n) {
168
313
  requestAnimationFrame(() => {
169
- let r = e.getBoundingClientRect(), i = t.getBoundingClientRect(), a = e.scrollTop + (i.bottom - r.bottom) + 16, o = Math.abs(a - e.scrollTop), s = n ?? (o > e.clientHeight * lt ? "auto" : "smooth");
314
+ let r = e.getBoundingClientRect(), i = t.getBoundingClientRect(), a = e.scrollTop + (i.bottom - r.bottom) + 16, o = Math.abs(a - e.scrollTop), s = n ?? (o > e.clientHeight * Pt ? "auto" : "smooth");
170
315
  "scrollBehavior" in document.documentElement.style ? e.scrollTo({
171
316
  top: a,
172
317
  behavior: s
173
318
  }) : e.scrollTop = a;
174
319
  });
175
320
  }
176
- var W = 3e3;
177
- function dt(e, t) {
321
+ var It = 3e3;
322
+ function Lt(e, t) {
178
323
  if (typeof ResizeObserver > "u") return () => void 0;
179
324
  let n = !1, r = () => {
180
325
  n = !0;
@@ -182,32 +327,32 @@ function dt(e, t) {
182
327
  e.addEventListener("wheel", r, i), e.addEventListener("touchmove", r, i), e.addEventListener("keydown", r, i);
183
328
  let a = e.scrollHeight, o = new ResizeObserver(() => {
184
329
  let r = e.scrollHeight > a;
185
- a = e.scrollHeight, !(!r || n || !gt(e)) && ut(e, t, "auto");
330
+ a = e.scrollHeight, !(!r || n || !Ht(e)) && Ft(e, t, "auto");
186
331
  });
187
332
  for (let t of Array.from(e.children)) o.observe(t);
188
- let s = setTimeout(r, W);
333
+ let s = setTimeout(r, It);
189
334
  return () => {
190
335
  clearTimeout(s), o.disconnect(), e.removeEventListener("wheel", r), e.removeEventListener("touchmove", r), e.removeEventListener("keydown", r);
191
336
  };
192
337
  }
193
- var ft = "data-ikon-scroll-indicator", pt = .15, mt = "data-ikon-at-bottom";
194
- function ht(e) {
195
- return Math.max(e.clientHeight * pt, 20);
338
+ var Rt = "data-ikon-scroll-indicator", zt = .15, Bt = "data-ikon-at-bottom";
339
+ function Vt(e) {
340
+ return Math.max(e.clientHeight * zt, 20);
196
341
  }
197
- function gt(e) {
198
- return e.getAttribute(mt) !== "false";
342
+ function Ht(e) {
343
+ return e.getAttribute(Bt) !== "false";
199
344
  }
200
- function _t(e) {
201
- e.getAttribute(mt) === null && (e.setAttribute(mt, "true"), e.addEventListener("scroll", () => {
202
- let { scrollTop: t, scrollHeight: n, clientHeight: r } = e, i = n - t - r <= ht(e);
203
- e.setAttribute(mt, i ? "true" : "false");
345
+ function Ut(e) {
346
+ e.getAttribute(Bt) === null && (e.setAttribute(Bt, "true"), e.addEventListener("scroll", () => {
347
+ let { scrollTop: t, scrollHeight: n, clientHeight: r } = e, i = n - t - r <= Vt(e);
348
+ e.setAttribute(Bt, i ? "true" : "false");
204
349
  }, { passive: !0 }));
205
350
  }
206
- function vt(e) {
207
- let t = e.parentElement ?? e, n = t.querySelector(`[${ft}]`);
351
+ function Wt(e) {
352
+ let t = e.parentElement ?? e, n = t.querySelector(`[${Rt}]`);
208
353
  if (n) return n;
209
354
  let r = document.createElement("button");
210
- return r.setAttribute(ft, "true"), r.setAttribute("aria-label", "Scroll to latest"), r.textContent = "↓", Object.assign(r.style, {
355
+ return r.setAttribute(Rt, "true"), r.setAttribute("aria-label", "Scroll to latest"), r.textContent = "↓", Object.assign(r.style, {
211
356
  position: "absolute",
212
357
  bottom: "12px",
213
358
  left: "50%",
@@ -235,64 +380,76 @@ function vt(e) {
235
380
  r.style.opacity = "0.9";
236
381
  }), t.appendChild(r), r;
237
382
  }
238
- function yt(e, t) {
239
- let n = vt(e);
383
+ function Gt(e, t) {
384
+ let n = Wt(e);
240
385
  n.style.display = "flex";
241
386
  let r = () => {
242
- ut(e, t), n.style.display = "none";
387
+ Ft(e, t), n.style.display = "none";
243
388
  }, i = () => {
244
389
  let { scrollTop: t, scrollHeight: r, clientHeight: i } = e;
245
- r - t - i <= ht(e) && (n.style.display = "none");
390
+ r - t - i <= Vt(e) && (n.style.display = "none");
246
391
  };
247
392
  return n.addEventListener("click", r), e.addEventListener("scroll", i, { passive: !0 }), () => {
248
393
  n.removeEventListener("click", r), e.removeEventListener("scroll", i);
249
394
  };
250
395
  }
251
- function bt() {
252
- let t = N(function({ nodeId: t, context: n }) {
253
- let r = e(n.store, t), i = L(null), a = V(r?.props?.targetViewId), o = r?.props?.focusOnly, s = typeof o == "boolean" ? o : void 0, c = V(r?.props?.priority), l = V(r?.props?.key), u = r?.props?.preciseGeneratedAt;
254
- return F(() => {
396
+ function Kt(e) {
397
+ return typeof e == "number" && Number.isFinite(e) ? e : 0;
398
+ }
399
+ function qt(e, t, n) {
400
+ if (t) {
401
+ if (Ut(t), n && !Ht(t)) return Gt(t, e);
402
+ let r = (t.parentElement ?? t).querySelector(`[${Rt}]`);
403
+ return r && (r.style.display = "none"), Ft(t, e), Lt(t, e);
404
+ }
405
+ typeof e.scrollIntoView == "function" && requestAnimationFrame(() => {
406
+ let t = e.getBoundingClientRect().top, n = typeof window < "u" ? window.innerHeight : 0, r = Math.abs(t) > n * Pt ? "auto" : "smooth";
407
+ try {
408
+ e.scrollIntoView({
409
+ behavior: r,
410
+ block: "end",
411
+ inline: "nearest"
412
+ });
413
+ } catch {
414
+ e.scrollIntoView(!1);
415
+ }
416
+ });
417
+ }
418
+ function Jt(e) {
419
+ let t = document.activeElement;
420
+ if (!(t instanceof HTMLInputElement || t instanceof HTMLTextAreaElement || t?.getAttribute("contenteditable") === "true" || typeof e.focus != "function")) try {
421
+ e.focus({ preventScroll: !0 });
422
+ } catch {
423
+ e.focus();
424
+ }
425
+ }
426
+ function Yt() {
427
+ let t = j(function({ nodeId: t, context: n }) {
428
+ let r = e(n.store, t), i = F(null), a = Et(r?.props?.targetViewId), o = r?.props?.focusOnly === !0, s = Et(r?.props?.priority), c = Kt(r?.props?.ranking), l = Math.max(0, Kt(r?.props?.cooldownMs)), u = Et(r?.props?.key), d = r?.props?.preciseGeneratedAt;
429
+ return N(() => {
255
430
  if (typeof document > "u") return;
256
431
  let e = i.current;
257
432
  if (!e || a && e.closest("[data-ikon-view-id]")?.getAttribute("data-ikon-view-id") !== a) return;
258
- let t, n;
259
- if (s !== !0) {
260
- let r = ct(e);
261
- if (r) {
262
- if (_t(r), c === "Polite" && !gt(r)) t = yt(r, e);
263
- else {
264
- let t = (r.parentElement ?? r).querySelector(`[${ft}]`);
265
- t && (t.style.display = "none"), ut(r, e), n = dt(r, e);
266
- }
267
- } else typeof e.scrollIntoView == "function" && requestAnimationFrame(() => {
268
- let t = e.getBoundingClientRect().top, n = typeof window < "u" ? window.innerHeight : 0, r = Math.abs(t) > n * lt ? "auto" : "smooth";
269
- try {
270
- e.scrollIntoView({
271
- behavior: r,
272
- block: "end",
273
- inline: "nearest"
274
- });
275
- } catch {
276
- e.scrollIntoView(!1);
277
- }
278
- });
279
- }
280
- let r = document.activeElement;
281
- if (!(r instanceof HTMLInputElement || r instanceof HTMLTextAreaElement || r?.getAttribute("contenteditable") === "true") && typeof e.focus == "function") try {
282
- e.focus({ preventScroll: !0 });
283
- } catch {
284
- e.focus();
285
- }
286
- return () => {
287
- t?.(), n?.();
288
- };
433
+ let t = o ? null : Nt(e), n = dt({
434
+ region: e.parentElement ?? e,
435
+ hintKey: u,
436
+ ranking: c,
437
+ cooldownMs: l,
438
+ scrollGroup: o ? null : t ?? document,
439
+ politeness: o ? null : s === "Assertive" ? "assertive" : "polite",
440
+ scroll: () => qt(e, t, s === "Polite"),
441
+ focus: () => Jt(e)
442
+ });
443
+ return () => n.cancel();
289
444
  }, [
445
+ o,
290
446
  s,
291
447
  c,
292
- a,
293
448
  l,
294
- u
295
- ]), r ? /* @__PURE__ */ z("span", {
449
+ a,
450
+ u,
451
+ d
452
+ ]), r ? /* @__PURE__ */ L("span", {
296
453
  ref: i,
297
454
  "data-ikon-node-id": r.id,
298
455
  "data-ikon-source": r.sourceMarker,
@@ -310,16 +467,16 @@ function bt() {
310
467
  if (e === "std.focus-hint") return t;
311
468
  };
312
469
  }
313
- function xt() {
314
- let t = N(function({ nodeId: t, context: n, className: r }) {
315
- let i = e(n.store, t), a = rt(i?.props?.onInvokeId), o = P(() => {
470
+ function Xt() {
471
+ let t = j(function({ nodeId: t, context: n, className: r }) {
472
+ let i = e(n.store, t), a = Tt(i?.props?.onInvokeId), o = M(() => {
316
473
  a && n.dispatchAction(a);
317
474
  }, [a, n]);
318
475
  if (!i) return null;
319
- let s = st(i.props);
476
+ let s = Mt(i.props);
320
477
  delete s.onInvokeId;
321
- let c = H(V(i.props?.className), r), l = i.children?.length ? n.renderChildren(i.children) : void 0;
322
- return /* @__PURE__ */ z("div", {
478
+ let c = Dt(Et(i.props?.className), r), l = i.children?.length ? n.renderChildren(i.children) : void 0;
479
+ return /* @__PURE__ */ L("div", {
323
480
  ...s,
324
481
  "data-ikon-node-id": i.id,
325
482
  "data-ikon-source": i.sourceMarker,
@@ -330,7 +487,7 @@ function xt() {
330
487
  onKeyDown: a ? (e) => {
331
488
  (e.key === "Enter" || e.key === " ") && (e.preventDefault(), o());
332
489
  } : void 0,
333
- style: ot(s.style, a ? "pointer" : void 0),
490
+ style: jt(s.style, a ? "pointer" : void 0),
334
491
  children: l
335
492
  });
336
493
  });
@@ -338,12 +495,12 @@ function xt() {
338
495
  if (e === "std.div") return t;
339
496
  };
340
497
  }
341
- function St() {
342
- let t = N(function({ nodeId: t, context: n, className: r }) {
498
+ function Zt() {
499
+ let t = j(function({ nodeId: t, context: n, className: r }) {
343
500
  let i = e(n.store, t);
344
501
  if (!i) return null;
345
- let a = st(i.props), o = H("relative", V(i.props?.className), r), s = i.children?.length ? n.renderChildren(i.children) : void 0;
346
- return /* @__PURE__ */ z("div", {
502
+ let a = Mt(i.props), o = Dt("relative", Et(i.props?.className), r), s = i.children?.length ? n.renderChildren(i.children) : void 0;
503
+ return /* @__PURE__ */ L("div", {
347
504
  ...a,
348
505
  "data-ikon-node-id": i.id,
349
506
  "data-ikon-source": i.sourceMarker,
@@ -355,12 +512,12 @@ function St() {
355
512
  if (e === "std.stack") return t;
356
513
  };
357
514
  }
358
- function Ct() {
359
- let t = N(function({ nodeId: t, context: n, className: r }) {
515
+ function Qt() {
516
+ let t = j(function({ nodeId: t, context: n, className: r }) {
360
517
  let i = e(n.store, t);
361
518
  if (!i) return null;
362
- let a = st(i.props), o = H("absolute", V(i.props?.className), r), s = i.children?.length ? n.renderChildren(i.children) : void 0;
363
- return /* @__PURE__ */ z("div", {
519
+ let a = Mt(i.props), o = Dt("absolute", Et(i.props?.className), r), s = i.children?.length ? n.renderChildren(i.children) : void 0;
520
+ return /* @__PURE__ */ L("div", {
364
521
  ...a,
365
522
  "data-ikon-node-id": i.id,
366
523
  "data-ikon-source": i.sourceMarker,
@@ -372,23 +529,23 @@ function Ct() {
372
529
  if (e === "std.layer") return t;
373
530
  };
374
531
  }
375
- function wt() {
532
+ function $t() {
376
533
  return [
377
- xt(),
378
- St(),
379
- Ct(),
380
- bt()
534
+ Xt(),
535
+ Zt(),
536
+ Qt(),
537
+ Yt()
381
538
  ];
382
539
  }
383
540
  //#endregion
384
541
  //#region src/base/base-module.ts
385
- var Tt = "base", Et = async () => wt();
386
- function Dt(e) {
387
- e.registerModule(Tt, Et);
542
+ var en = "base", tn = async () => $t();
543
+ function nn(e) {
544
+ e.registerModule(en, tn);
388
545
  }
389
546
  //#endregion
390
547
  //#region src/media/audio-player.tsx
391
- function Ot(e) {
548
+ function rn(e) {
392
549
  if (typeof e == "string") {
393
550
  let t = e.trim();
394
551
  return t.length > 0 ? t : void 0;
@@ -398,17 +555,17 @@ function Ot(e) {
398
555
  return t.length > 0 ? t.join(" ") : void 0;
399
556
  }
400
557
  }
401
- function kt(...e) {
558
+ function an(...e) {
402
559
  let t = [];
403
560
  for (let n of e) n && n.trim() && t.push(n.trim());
404
561
  return t.length > 0 ? t.join(" ") : void 0;
405
562
  }
406
- function At(e) {
563
+ function on(e) {
407
564
  if (typeof e != "string") return;
408
565
  let t = e.trim();
409
566
  return t.length > 0 ? t : void 0;
410
567
  }
411
- function jt(e) {
568
+ function sn(e) {
412
569
  if (typeof e == "boolean") return e;
413
570
  if (typeof e == "string") {
414
571
  let t = e.trim().toLowerCase();
@@ -416,14 +573,14 @@ function jt(e) {
416
573
  if (t === "false") return !1;
417
574
  }
418
575
  }
419
- function Mt() {
420
- let t = N(function({ nodeId: t, context: n, className: r }) {
421
- let i = e(n.store, t), a = L(null), o = i ? jt(i.props?.autoplay) : void 0, s = i ? At(i.props?.src) : void 0;
422
- if (F(() => {
576
+ function cn() {
577
+ let t = j(function({ nodeId: t, context: n, className: r }) {
578
+ let i = e(n.store, t), a = F(null), o = i ? sn(i.props?.autoplay) : void 0, s = i ? on(i.props?.src) : void 0;
579
+ if (N(() => {
423
580
  o && a.current && a.current.play().catch(() => {});
424
581
  }, [o, s]), !i) return null;
425
- let c = kt(Ot(i.props?.className), r), l = At(i.props?.preload), u = jt(i.props?.controls), d = jt(i.props?.loop), f = jt(i.props?.muted);
426
- return /* @__PURE__ */ z("audio", {
582
+ let c = an(rn(i.props?.className), r), l = on(i.props?.preload), u = sn(i.props?.controls), d = sn(i.props?.loop), f = sn(i.props?.muted);
583
+ return /* @__PURE__ */ L("audio", {
427
584
  ref: a,
428
585
  src: s,
429
586
  ...l === void 0 ? {} : { preload: l },
@@ -442,41 +599,45 @@ function Mt() {
442
599
  }
443
600
  //#endregion
444
601
  //#region src/media/video-stream-view.tsx
445
- var Nt = k("IkonVideoStreamView"), Pt = N(function({ client: e, streamId: t, className: n, style: r, width: i, height: a, attributes: o, getPlayback: s }) {
446
- let c = L(null), l = L(null), [, u] = R(0);
447
- F(() => {
602
+ var ln = D("IkonVideoStreamView"), un = j(function({ client: e, streamId: t, className: n, style: r, width: i, height: a, attributes: o, getPlayback: s }) {
603
+ let c = F(null), l = F(null), [, u] = I(0);
604
+ N(() => {
448
605
  if (e?.isWebRtcEnabled) return e.addWebRtcTrackMapListener((e) => {
449
606
  e.kind === "video" && u((e) => e + 1);
450
607
  });
451
608
  }, [e]);
452
609
  let d = e?.isWebRtcEnabled && t ? e.getWebRtcVideoStreamByStreamId(t) : null;
453
- F(() => {
610
+ N(() => {
454
611
  let n = c.current;
455
612
  if (!n || !t || d) return;
456
- let r = !1, i, a = 0, o = () => s ? s() : e?.media?.video, l = () => {
613
+ let r = !1, i, a = 0, o = !1, l = () => s ? s() : e?.media?.video, u = () => {
457
614
  if (r) return;
458
- let e = o();
459
- if (!e) {
615
+ let s = l();
616
+ if (!s && e?.isWebRtcMediaActive) {
617
+ o || (o = !0, ln.debug(`Stream ${t} has no WebRTC track yet; its canvas waits for one or for a fallback to custom playback`)), i = setTimeout(u, 500);
618
+ return;
619
+ }
620
+ if (!s) {
460
621
  if (a++ >= 50) {
461
- Nt.warn(`Gave up attaching the canvas for stream ${t}: video playback never became available`);
622
+ ln.warn(`Gave up attaching the canvas for stream ${t}: video playback never became available`);
462
623
  return;
463
624
  }
464
- i = setTimeout(l, 100);
625
+ i = setTimeout(u, 100);
465
626
  return;
466
627
  }
467
- e.attachCanvas(t, n).catch((e) => {
468
- Nt.error(`Failed to attach the canvas for stream ${t}, it will stay blank: ${String(e)}`);
628
+ s.attachCanvas(t, n).catch((e) => {
629
+ ln.error(`Failed to attach the canvas for stream ${t}, it will stay blank: ${String(e)}`);
469
630
  });
470
631
  };
471
- return l(), () => {
472
- r = !0, i !== void 0 && clearTimeout(i), o()?.detachCanvas(t);
632
+ return u(), () => {
633
+ r = !0, i !== void 0 && clearTimeout(i), l()?.detachCanvas(t);
473
634
  };
474
635
  }, [
475
636
  e,
476
637
  t,
477
638
  d,
478
639
  s
479
- ]), F(() => {
640
+ ]), N(() => {
480
641
  let e = l.current;
481
642
  if (!(!e || !d)) return e.srcObject = d, () => {
482
643
  e.srcObject = null;
@@ -490,20 +651,20 @@ var Nt = k("IkonVideoStreamView"), Pt = N(function({ client: e, streamId: t, cla
490
651
  ...i ? { width: i } : {},
491
652
  ...a ? { height: a } : {}
492
653
  };
493
- return d ? /* @__PURE__ */ z("video", {
654
+ return d ? /* @__PURE__ */ L("video", {
494
655
  ref: l,
495
656
  autoPlay: !0,
496
657
  playsInline: !0,
497
658
  muted: !0,
498
659
  ...f
499
- }, t) : /* @__PURE__ */ z("canvas", {
660
+ }, t) : /* @__PURE__ */ L("canvas", {
500
661
  ref: c,
501
662
  ...f
502
663
  }, t);
503
664
  });
504
665
  //#endregion
505
666
  //#region src/media/video-canvas.tsx
506
- function Ft(e) {
667
+ function dn(e) {
507
668
  if (typeof e == "string") {
508
669
  let t = e.trim();
509
670
  return t.length > 0 ? t : void 0;
@@ -513,27 +674,27 @@ function Ft(e) {
513
674
  return t.length > 0 ? t.join(" ") : void 0;
514
675
  }
515
676
  }
516
- function It(...e) {
677
+ function fn(...e) {
517
678
  let t = [];
518
679
  for (let n of e) n && n.trim() && t.push(n.trim());
519
680
  return t.length > 0 ? t.join(" ") : void 0;
520
681
  }
521
- function Lt(e) {
682
+ function pn(e) {
522
683
  if (typeof e == "number" && Number.isFinite(e)) return Math.floor(e);
523
684
  if (typeof e == "string" && e.trim().length > 0) {
524
685
  let t = Number(e);
525
686
  if (Number.isFinite(t)) return Math.floor(t);
526
687
  }
527
688
  }
528
- function Rt(e) {
689
+ function mn(e) {
529
690
  if (typeof e != "string") return;
530
691
  let t = e.trim();
531
692
  return t.length > 0 ? t : void 0;
532
693
  }
533
- var zt = "std.video-canvas", Bt = "std.video-url-player";
534
- function Vt() {
535
- let t = N(function({ nodeId: t, context: n, className: r }) {
536
- let i = e(n.store, t), a = i ? Rt(i.props?.streamId) : void 0, o = i ? Rt(i.props?.onTapId) : void 0, s = i ? Lt(i.props?.width) : void 0, c = i ? Lt(i.props?.height) : void 0, l = i ? It(Ft(i.props?.className), r) : r, u = P(() => n.video ?? n.client?.media?.video, [n]), d = P((e) => {
694
+ var hn = "std.video-canvas", gn = "std.video-url-player";
695
+ function _n() {
696
+ let t = j(function({ nodeId: t, context: n, className: r }) {
697
+ let i = e(n.store, t), a = i ? mn(i.props?.streamId) : void 0, o = i ? mn(i.props?.onTapId) : void 0, s = i ? pn(i.props?.width) : void 0, c = i ? pn(i.props?.height) : void 0, l = i ? fn(dn(i.props?.className), r) : r, u = M(() => n.video ?? n.client?.media?.video, [n]), d = M((e) => {
537
698
  if (!o) return;
538
699
  let t = e.target.getBoundingClientRect();
539
700
  t.width <= 0 || t.height <= 0 || n.dispatchAction(o, {
@@ -542,7 +703,7 @@ function Vt() {
542
703
  });
543
704
  }, [o, n]);
544
705
  if (!i) return null;
545
- let f = /* @__PURE__ */ z(Pt, {
706
+ let f = /* @__PURE__ */ L(un, {
546
707
  client: n.client,
547
708
  streamId: a,
548
709
  className: l,
@@ -554,7 +715,7 @@ function Vt() {
554
715
  ...i.sourceMarker ? { "data-ikon-source": i.sourceMarker } : {}
555
716
  }
556
717
  });
557
- return o ? /* @__PURE__ */ z("div", {
718
+ return o ? /* @__PURE__ */ L("div", {
558
719
  style: {
559
720
  display: "contents",
560
721
  cursor: "pointer"
@@ -567,14 +728,14 @@ function Vt() {
567
728
  if (e === "std.video-canvas") return t;
568
729
  };
569
730
  }
570
- function Ht() {
731
+ function vn() {
571
732
  return [
572
- Vt(),
573
- Wt(),
574
- Mt()
733
+ _n(),
734
+ bn(),
735
+ cn()
575
736
  ];
576
737
  }
577
- function Ut(e) {
738
+ function yn(e) {
578
739
  if (typeof e == "boolean") return e;
579
740
  if (typeof e == "string") {
580
741
  let t = e.trim().toLowerCase();
@@ -582,14 +743,14 @@ function Ut(e) {
582
743
  if (t === "false") return !1;
583
744
  }
584
745
  }
585
- function Wt() {
586
- let t = N(function({ nodeId: t, context: n, className: r }) {
587
- let i = e(n.store, t), a = L(null), o = i ? Ut(i.props?.autoplay) : void 0, s = i ? Rt(i.props?.src) : void 0;
588
- if (F(() => {
746
+ function bn() {
747
+ let t = j(function({ nodeId: t, context: n, className: r }) {
748
+ let i = e(n.store, t), a = F(null), o = i ? yn(i.props?.autoplay) : void 0, s = i ? mn(i.props?.src) : void 0;
749
+ if (N(() => {
589
750
  o && a.current && a.current.play().catch(() => {});
590
751
  }, [o, s]), !i) return null;
591
- let c = It(Ft(i.props?.className), r), l = Rt(i.props?.poster), u = Ut(i.props?.controls), d = Ut(i.props?.loop), f = Ut(i.props?.muted), p = Ut(i.props?.playsInline), m = Lt(i.props?.width), h = Lt(i.props?.height), g = i.children?.length ? n.renderChildren(i.children) : void 0;
592
- return /* @__PURE__ */ z("video", {
752
+ let c = fn(dn(i.props?.className), r), l = mn(i.props?.poster), u = yn(i.props?.controls), d = yn(i.props?.loop), f = yn(i.props?.muted), p = yn(i.props?.playsInline), m = pn(i.props?.width), h = pn(i.props?.height), g = i.children?.length ? n.renderChildren(i.children) : void 0;
753
+ return /* @__PURE__ */ L("video", {
593
754
  ref: a,
594
755
  src: s,
595
756
  poster: l,
@@ -612,30 +773,30 @@ function Wt() {
612
773
  }
613
774
  //#endregion
614
775
  //#region src/media/media-module.ts
615
- var Gt = "media", Kt = async () => Ht();
616
- function qt(e) {
617
- e.registerModule(Gt, Kt);
776
+ var xn = "media", Sn = async () => vn();
777
+ function Cn(e) {
778
+ e.registerModule(xn, Sn);
618
779
  }
619
780
  //#endregion
620
781
  //#region src/renderer/lazy-resolver.ts
621
- var Jt = () => null;
622
- function Yt(e, t, n) {
623
- let r = M(async () => ({ default: n(await t())()({ type: e }) ?? Jt })), i = (e) => Xe(Je, { fallback: null }, Xe(r, e));
782
+ var wn = () => null;
783
+ function Tn(e, t, n) {
784
+ let r = A(async () => ({ default: n(await t())()({ type: e }) ?? wn })), i = (e) => Qe(Xe, { fallback: null }, Qe(r, e));
624
785
  return (t) => t.type === e ? i : void 0;
625
786
  }
626
787
  //#endregion
627
788
  //#region src/shadertoy/shadertoy-module.ts
628
- var Xt = "shadertoy";
629
- function Zt() {
630
- return Yt(t, () => import("./shadertoy-renderer-Cq1lOXBs.js"), (e) => e.createShadertoyRendererResolver);
789
+ var En = "shadertoy";
790
+ function Dn() {
791
+ return Tn(t, () => import("./shadertoy-renderer-Cq1lOXBs.js"), (e) => e.createShadertoyRendererResolver);
631
792
  }
632
- var Qt = async () => Zt();
633
- function $t(e) {
634
- e.registerModule(Xt, Qt);
793
+ var On = async () => Dn();
794
+ function kn(e) {
795
+ e.registerModule(En, On);
635
796
  }
636
797
  //#endregion
637
798
  //#region src/ikon-ui-registry.ts
638
- var en = k("UIRegistry"), tn = class {
799
+ var An = D("UIRegistry"), jn = class {
639
800
  baseResolvers = [];
640
801
  moduleLoaders = /* @__PURE__ */ new Map();
641
802
  moduleResolvers = /* @__PURE__ */ new Map();
@@ -661,14 +822,14 @@ var en = k("UIRegistry"), tn = class {
661
822
  async loadRegisteredModules() {
662
823
  let e = !1;
663
824
  for (let [t, n] of this.moduleLoaders.entries()) if (!this.moduleResolvers.has(t)) try {
664
- let r = an(await n());
825
+ let r = Pn(await n());
665
826
  this.moduleResolvers.set(t, r), e = !0;
666
827
  } catch (e) {
667
- en.error(`[IkonUiRegistry] Failed to load module '${t}'.`, e);
828
+ An.error(`[IkonUiRegistry] Failed to load module '${t}'.`, e);
668
829
  }
669
830
  let t = [];
670
831
  for (let e of this.moduleLoaders.keys()) this.moduleResolvers.has(e) && t.push(e);
671
- return on(t, this.activeModuleOrder) || (this.activeModuleOrder = t, e = !0), e && this.notify(), e;
832
+ return Fn(t, this.activeModuleOrder) || (this.activeModuleOrder = t, e = !0), e && this.notify(), e;
672
833
  }
673
834
  resolve(e) {
674
835
  for (let t of this.baseResolvers) {
@@ -678,7 +839,7 @@ var en = k("UIRegistry"), tn = class {
678
839
  for (let t of this.activeModuleOrder) {
679
840
  let n = this.moduleResolvers.get(t);
680
841
  if (!n) {
681
- en.warn(`Missing resolvers for module ${t}`);
842
+ An.warn(`Missing resolvers for module ${t}`);
682
843
  continue;
683
844
  }
684
845
  for (let t of n) {
@@ -691,32 +852,32 @@ var en = k("UIRegistry"), tn = class {
691
852
  for (let e of this.listeners) e();
692
853
  }
693
854
  };
694
- function nn() {
695
- let e = new tn();
696
- return Dt(e), qt(e), $t(e), e.loadRegisteredModules(), e;
855
+ function Mn() {
856
+ let e = new jn();
857
+ return nn(e), Cn(e), kn(e), e.loadRegisteredModules(), e;
697
858
  }
698
- function rn(e) {
859
+ function Nn(e) {
699
860
  return Array.isArray(e) ? e : [e];
700
861
  }
701
- function an(e) {
702
- return e ? rn(e).flatMap((e) => e ? Array.isArray(e) ? e.filter(Boolean) : [e] : []) : [];
862
+ function Pn(e) {
863
+ return e ? Nn(e).flatMap((e) => e ? Array.isArray(e) ? e.filter(Boolean) : [e] : []) : [];
703
864
  }
704
- function on(e, t) {
865
+ function Fn(e, t) {
705
866
  if (e.length !== t.length) return !1;
706
867
  for (let n = 0; n < e.length; n += 1) if (e[n] !== t[n]) return !1;
707
868
  return !0;
708
869
  }
709
870
  //#endregion
710
871
  //#region src/renderer/use-root-view.ts
711
- function sn(e, t) {
712
- let n = et((t) => e.subscribe(t), () => {
872
+ function In(e, t) {
873
+ let n = nt((t) => e.subscribe(t), () => {
713
874
  let n = e.getSnapshot(), r = t ?? n.rootViewId, i = r ? n.views.get(r) : void 0;
714
875
  return `${r ?? ""}:${i?.id ?? ""}`;
715
876
  }, () => {
716
877
  let n = e.getSnapshot(), r = t ?? n.rootViewId, i = r ? n.views.get(r) : void 0;
717
878
  return `${r ?? ""}:${i?.id ?? ""}`;
718
879
  });
719
- return I(() => {
880
+ return P(() => {
720
881
  let [e, t] = n.split(":");
721
882
  return {
722
883
  rootViewId: e || void 0,
@@ -726,8 +887,8 @@ function sn(e, t) {
726
887
  }
727
888
  //#endregion
728
889
  //#region src/renderer/ui-renderer.tsx
729
- var cn = k("UIRenderer");
730
- function ln(e) {
890
+ var Ln = D("UIRenderer");
891
+ function Rn(e) {
731
892
  if (e === void 0) return "{}";
732
893
  if (typeof e == "string") return e;
733
894
  try {
@@ -736,39 +897,39 @@ function ln(e) {
736
897
  return "{}";
737
898
  }
738
899
  }
739
- function un(e) {
900
+ function zn(e) {
740
901
  let t = e.styleIds;
741
902
  return Array.isArray(t) ? t : [];
742
903
  }
743
- var dn = 1500, fn = 8e3;
744
- function pn(e) {
745
- let [t, n] = R(0);
746
- return F(() => {
904
+ var Bn = 1500, Vn = 8e3;
905
+ function Hn(e) {
906
+ let [t, n] = I(0);
907
+ return N(() => {
747
908
  if (e.subscribe) return e.subscribe(() => n((e) => e + 1));
748
909
  }, [e]), t;
749
910
  }
750
- function mn({ nodeType: t, nodeId: n, context: r, className: i }) {
751
- let [a, o] = R(!1), [s, c] = R(!1), l = e(r.store, n), u = pn(r.library), d = I(() => l ? r.library.resolve(l) : void 0, [
911
+ function Un({ nodeType: t, nodeId: n, context: r, className: i }) {
912
+ let [a, o] = I(!1), [s, c] = I(!1), l = e(r.store, n), u = Hn(r.library), d = P(() => l ? r.library.resolve(l) : void 0, [
752
913
  r.library,
753
914
  l,
754
915
  u
755
916
  ]);
756
- return F(() => {
757
- let e = setTimeout(() => o(!0), dn), t = setTimeout(() => c(!0), fn);
917
+ return N(() => {
918
+ let e = setTimeout(() => o(!0), Bn), t = setTimeout(() => c(!0), Vn);
758
919
  return () => {
759
920
  clearTimeout(e), clearTimeout(t);
760
921
  };
761
- }, [t]), F(() => {
762
- !s || d || cn.error(`No React resolver is registered for node type '${t}', so it renders as an error placeholder instead of the component you expected. A custom node needs all four parts: (1) the React component, (2) a resolver that matches '${t}', (3) a registerModule(...) call for it in app.tsx, and (4) the C# view.AddNode("${t}", ...) extension. Prefer native view.* components where they fit.`);
922
+ }, [t]), N(() => {
923
+ !s || d || Ln.error(`No React resolver is registered for node type '${t}', so it renders as an error placeholder instead of the component you expected. A custom node needs all four parts: (1) the React component, (2) a resolver that matches '${t}', (3) a registerModule(...) call for it in app.tsx, and (4) the C# view.AddNode("${t}", ...) extension. Prefer native view.* components where they fit.`);
763
924
  }, [
764
925
  s,
765
926
  d,
766
927
  t
767
- ]), d ? /* @__PURE__ */ z(d, {
928
+ ]), d ? /* @__PURE__ */ L(d, {
768
929
  nodeId: n,
769
930
  context: r,
770
931
  className: i
771
- }) : a ? /* @__PURE__ */ z("div", {
932
+ }) : a ? /* @__PURE__ */ L("div", {
772
933
  "data-ikon-node-id": n,
773
934
  "data-ikon-unresolved-node": t,
774
935
  role: "alert",
@@ -785,69 +946,69 @@ function mn({ nodeType: t, nodeId: n, context: r, className: i }) {
785
946
  children: `Unregistered node type: ${t}\nNo React resolver is registered for it — register the component's module in app.tsx (see the console for details).`
786
947
  }) : null;
787
948
  }
788
- function hn(e) {
949
+ function Wn(e) {
789
950
  let t = e.children;
790
951
  return Array.isArray(t) ? t : [];
791
952
  }
792
- function gn(e, t) {
953
+ function Gn(e, t) {
793
954
  return e.nodeId === t.nodeId && e.context === t.context;
794
955
  }
795
- function _n(e) {
956
+ function Kn(e) {
796
957
  if (e.length === 0) return "";
797
958
  if (e.length === 1) return e[0].id;
798
959
  let t = e[0].id;
799
960
  for (let n = 1; n < e.length; n++) t += "," + e[n].id;
800
961
  return t;
801
962
  }
802
- var vn = N(function t({ nodeId: n, context: r }) {
803
- let i = e(r.store, n), a = i ? hn(i) : [], o = _n(a), s = I(() => a.length === 0 ? null : a.map((e) => /* @__PURE__ */ z(t, {
963
+ var qn = j(function t({ nodeId: n, context: r }) {
964
+ let i = e(r.store, n), a = i ? Wn(i) : [], o = Kn(a), s = P(() => a.length === 0 ? null : a.map((e) => /* @__PURE__ */ L(t, {
804
965
  nodeId: e.id,
805
966
  context: r
806
967
  }, e.id)), [o, r]);
807
968
  if (!i) return null;
808
- if (i.type === "root") return /* @__PURE__ */ z(qe, { children: s }, i.id);
809
- let c = un(i), l = c.length > 0 ? c.join(" ") : void 0, u = r.library.resolve(i);
810
- return u ? /* @__PURE__ */ z(u, {
969
+ if (i.type === "root") return /* @__PURE__ */ L(Ye, { children: s }, i.id);
970
+ let c = zn(i), l = c.length > 0 ? c.join(" ") : void 0, u = r.library.resolve(i);
971
+ return u ? /* @__PURE__ */ L(u, {
811
972
  nodeId: n,
812
973
  context: r,
813
974
  className: l
814
- }) : /* @__PURE__ */ z(mn, {
975
+ }) : /* @__PURE__ */ L(Un, {
815
976
  nodeType: i.type,
816
977
  nodeId: i.id,
817
978
  context: r,
818
979
  className: l
819
980
  });
820
- }, gn);
821
- function yn(e, t) {
822
- return !Array.isArray(e) || e.length === 0 ? null : e.map((e) => /* @__PURE__ */ z(vn, {
981
+ }, Gn);
982
+ function Jn(e, t) {
983
+ return !Array.isArray(e) || e.length === 0 ? null : e.map((e) => /* @__PURE__ */ L(qn, {
823
984
  nodeId: e.id,
824
985
  context: t
825
986
  }, e.id));
826
987
  }
827
- function bn(e, t) {
988
+ function Yn(e, t) {
828
989
  return e.store === t.store && e.library === t.library && e.viewId === t.viewId && e.emptyFallback === t.emptyFallback;
829
990
  }
830
- var xn = N(function({ store: e, library: t, viewId: n, emptyFallback: r = null, onAction: i, client: a, video: o }) {
831
- let { rootViewId: s, rootNodeId: c } = sn(e, n), l = L(i);
991
+ var Xn = j(function({ store: e, library: t, viewId: n, emptyFallback: r = null, onAction: i, client: a, video: o }) {
992
+ let { rootViewId: s, rootNodeId: c } = In(e, n), l = F(i);
832
993
  l.current = i;
833
- let u = L(a);
994
+ let u = F(a);
834
995
  u.current = a;
835
- let d = L(o);
996
+ let d = F(o);
836
997
  d.current = o;
837
- let f = P((e, t, n) => {
998
+ let f = M((e, t, n) => {
838
999
  if (!e) return;
839
- let r = ln(t);
1000
+ let r = Rn(t);
840
1001
  l.current?.(e, r, n);
841
- }, []), p = I(() => {
1002
+ }, []), p = P(() => {
842
1003
  let n = {
843
1004
  store: e,
844
1005
  library: t,
845
1006
  handlerCache: e.handlerCache,
846
1007
  getPayload: (t) => e.getSnapshot().payloads.get(t),
847
- renderChildren: (e) => yn(e, n),
1008
+ renderChildren: (e) => Jn(e, n),
848
1009
  renderView: (t) => {
849
1010
  let r = e.getSnapshot().views.get(t);
850
- return r ? /* @__PURE__ */ z(vn, {
1011
+ return r ? /* @__PURE__ */ L(qn, {
851
1012
  nodeId: r.id,
852
1013
  context: n
853
1014
  }) : null;
@@ -866,15 +1027,15 @@ var xn = N(function({ store: e, library: t, viewId: n, emptyFallback: r = null,
866
1027
  t,
867
1028
  f
868
1029
  ]);
869
- return !s || !c ? r : /* @__PURE__ */ z("div", {
1030
+ return !s || !c ? r : /* @__PURE__ */ L("div", {
870
1031
  "data-ikon-view-id": s,
871
1032
  style: { display: "contents" },
872
- children: /* @__PURE__ */ z(vn, {
1033
+ children: /* @__PURE__ */ L(qn, {
873
1034
  nodeId: c,
874
1035
  context: p
875
1036
  })
876
1037
  });
877
- }, bn), Sn = class {
1038
+ }, Yn), Zn = class {
878
1039
  fallback;
879
1040
  renderers = /* @__PURE__ */ new Map();
880
1041
  listeners = /* @__PURE__ */ new Set();
@@ -899,55 +1060,55 @@ var xn = N(function({ store: e, library: t, viewId: n, emptyFallback: r = null,
899
1060
  for (let e of this.listeners) e();
900
1061
  }
901
1062
  };
902
- function Cn(e, t) {
903
- return new Sn(Object.entries(e), t);
1063
+ function Qn(e, t) {
1064
+ return new Zn(Object.entries(e), t);
904
1065
  }
905
1066
  //#endregion
906
1067
  //#region src/renderer/use-ui-store.ts
907
- function wn(e) {
908
- return et((t) => e.subscribe(t), () => e.getSnapshot(), () => e.getSnapshot());
1068
+ function $n(e) {
1069
+ return nt((t) => e.subscribe(t), () => e.getSnapshot(), () => e.getSnapshot());
909
1070
  }
910
1071
  //#endregion
911
1072
  //#region src/inspect/inspect-overlay.tsx
912
- function Tn(e, t) {
1073
+ function er(e, t) {
913
1074
  e.style.outline = `2px solid ${t}`, e.style.outlineOffset = "1px", e.setAttribute(x, "");
914
1075
  }
915
- function En(e) {
1076
+ function tr(e) {
916
1077
  e.style.outline = "", e.style.outlineOffset = "", e.removeAttribute(x);
917
1078
  }
918
- function Dn() {
919
- let [e, t] = R(Ne), n = L(!1);
920
- return F(() => {
1079
+ function nr() {
1080
+ let [e, t] = I(Fe), n = F(!1);
1081
+ return N(() => {
921
1082
  if (e) return;
922
1083
  let r = () => {
923
- Ne() && t(!0);
1084
+ Fe() && t(!0);
924
1085
  }, i = (e) => {
925
1086
  e.data?.type === "ikon-inspect-mode" && e.data.enabled && (n.current = !0, t(!0));
926
1087
  };
927
1088
  return window.addEventListener(b, r), window.addEventListener("message", i), () => {
928
1089
  window.removeEventListener(b, r), window.removeEventListener("message", i);
929
1090
  };
930
- }, [e]), F(() => {
1091
+ }, [e]), N(() => {
931
1092
  if (!e) return;
932
1093
  let t = window.parent === window || n.current, r = null, i = [], a = document.createElement("div");
933
1094
  a.setAttribute(y, ""), a.style.cssText = "position:fixed;z-index:99999;pointer-events:none;padding:2px 6px;background:#1e1e2e;color:#cdd6f4;font-size:11px;border-radius:4px;border:1px solid #45475a;white-space:nowrap;display:none;font-family:monospace;", document.body.appendChild(a);
934
1095
  function o() {
935
- r && !i.includes(r) && En(r), r = null, a.style.display = "none";
1096
+ r && !i.includes(r) && tr(r), r = null, a.style.display = "none";
936
1097
  }
937
1098
  function s(e) {
938
- for (let e of i) e !== r && En(e);
1099
+ for (let e of i) e !== r && tr(e);
939
1100
  i = [];
940
1101
  let t = new Set(e);
941
1102
  for (let e of Array.from(document.querySelectorAll("[data-ikon-source]"))) {
942
1103
  let n = e.getAttribute("data-ikon-source") ?? "";
943
- t.has(n) && (Tn(e, "#a6e3a1"), i.push(e));
1104
+ t.has(n) && (er(e, "#a6e3a1"), i.push(e));
944
1105
  }
945
1106
  }
946
1107
  function c(e) {
947
1108
  if (!t) return;
948
1109
  let n = e.target.closest?.("[data-ikon-source]");
949
1110
  if (!n || n === r) return;
950
- o(), r = n, Tn(r, "#89b4fa");
1111
+ o(), r = n, er(r, "#89b4fa");
951
1112
  let i = n.getAttribute("data-ikon-source") ?? "";
952
1113
  a.textContent = i, a.style.display = "block";
953
1114
  let s = n.getBoundingClientRect();
@@ -976,7 +1137,7 @@ function Dn() {
976
1137
  }
977
1138
  function f(e) {
978
1139
  if (e === r || (o(), !e)) return;
979
- r = e, Tn(r, i.includes(e) ? "#a6e3a1" : "#89b4fa");
1140
+ r = e, er(r, i.includes(e) ? "#a6e3a1" : "#89b4fa");
980
1141
  let t = e.getAttribute("data-ikon-source") ?? "";
981
1142
  a.textContent = t, a.style.display = "block";
982
1143
  let n = e.getBoundingClientRect();
@@ -1055,20 +1216,20 @@ function Dn() {
1055
1216
  }
1056
1217
  //#endregion
1057
1218
  //#region src/surface.tsx
1058
- var On = k("IkonUiSurface");
1059
- function kn(e, t) {
1219
+ var rr = D("IkonUiSurface");
1220
+ function ir(e, t) {
1060
1221
  return e === t;
1061
1222
  }
1062
- var An = N(function({ stores: e, registry: t, category: n = a, onAction: r, client: i, inspect: o = !0 }) {
1063
- let s = I(() => Array.from(e.keys()).sort().join(","), [e]), c = L(r);
1223
+ var ar = j(function({ stores: e, registry: t, category: n = a, onAction: r, client: i, inspect: o = !0 }) {
1224
+ let s = P(() => Array.from(e.keys()).sort().join(","), [e]), c = F(r);
1064
1225
  c.current = r;
1065
- let l = L(i);
1226
+ let l = F(i);
1066
1227
  l.current = i;
1067
- let u = I(() => {
1228
+ let u = P(() => {
1068
1229
  let t = [];
1069
1230
  for (let [r, i] of e) {
1070
1231
  let e = i.store.getSnapshot();
1071
- kn(i.category, n) && (!e.rootViewId || !e.views.has(e.rootViewId) || t.push({
1232
+ ir(i.category, n) && (!e.rootViewId || !e.views.has(e.rootViewId) || t.push({
1072
1233
  key: r,
1073
1234
  store: i.store
1074
1235
  }));
@@ -1078,10 +1239,10 @@ var An = N(function({ stores: e, registry: t, category: n = a, onAction: r, clie
1078
1239
  e,
1079
1240
  n,
1080
1241
  s
1081
- ]), d = L(!1), f = u.length > 0;
1082
- return F(() => {
1083
- f && !d.current && (d.current = !0, On.debug("First UI render"));
1084
- }, [f]), f ? /* @__PURE__ */ B(tt, { children: [o && /* @__PURE__ */ z(Dn, {}), u.map(({ key: e, store: n }) => /* @__PURE__ */ z(xn, {
1242
+ ]), d = F(!1), f = u.length > 0;
1243
+ return N(() => {
1244
+ f && !d.current && (d.current = !0, rr.debug("First UI render"));
1245
+ }, [f]), f ? /* @__PURE__ */ R(rt, { children: [o && /* @__PURE__ */ L(nr, {}), u.map(({ key: e, store: n }) => /* @__PURE__ */ L(Xn, {
1085
1246
  store: n,
1086
1247
  library: t,
1087
1248
  onAction: c.current,
@@ -1091,8 +1252,8 @@ var An = N(function({ stores: e, registry: t, category: n = a, onAction: r, clie
1091
1252
  });
1092
1253
  //#endregion
1093
1254
  //#region src/parallax-view.tsx
1094
- function jn({ mount: e, stores: t, registry: n, client: r, onAction: i }) {
1095
- return /* @__PURE__ */ z(An, {
1255
+ function or({ mount: e, stores: t, registry: n, client: r, onAction: i }) {
1256
+ return /* @__PURE__ */ L(ar, {
1096
1257
  stores: t,
1097
1258
  registry: n,
1098
1259
  category: e,
@@ -1102,7 +1263,7 @@ function jn({ mount: e, stores: t, registry: n, client: r, onAction: i }) {
1102
1263
  }
1103
1264
  //#endregion
1104
1265
  //#region src/motion/motion-controller.ts
1105
- var Mn = k("MotionController"), Nn = {
1266
+ var sr = D("MotionController"), cr = {
1106
1267
  ease: [
1107
1268
  .25,
1108
1269
  .1,
@@ -1275,17 +1436,17 @@ var Mn = k("MotionController"), Nn = {
1275
1436
  function G(e) {
1276
1437
  return e <= 0 ? 0 : e >= 1 ? 1 : e;
1277
1438
  }
1278
- function Pn(e) {
1439
+ function lr(e) {
1279
1440
  if (e == null) return;
1280
1441
  let t = e.trim();
1281
1442
  if (!t) return;
1282
1443
  let n = Number.parseFloat(t);
1283
1444
  return Number.isFinite(n) ? n : void 0;
1284
1445
  }
1285
- function Fn(e) {
1446
+ function ur(e) {
1286
1447
  return typeof CSS < "u" && CSS.escape ? CSS.escape(e) : e.replace(/[^a-zA-Z0-9_-]/g, (e) => `\\${e}`);
1287
1448
  }
1288
- function In(e, t, n, r) {
1449
+ function dr(e, t, n, r) {
1289
1450
  let i = 1 / 10, a = /* @__PURE__ */ new Float32Array(11);
1290
1451
  function o(e, t, n) {
1291
1452
  return ((3 * t - 3 * n + 1) * e + (3 * n - 6 * t)) * e * e + 3 * t * e;
@@ -1319,34 +1480,34 @@ function In(e, t, n, r) {
1319
1480
  for (let t = 0; t < 11; t += 1) a[t] = o(t * i, e, n);
1320
1481
  return (e) => e <= 0 ? 0 : e >= 1 ? 1 : o(u(e), t, r);
1321
1482
  }
1322
- function Ln(e) {
1483
+ function fr(e) {
1323
1484
  let t = /steps\(\s*([0-9]+)\s*(?:,\s*([a-z-]+)\s*)?\)/i.exec(e);
1324
1485
  if (!t) return (e) => G(e);
1325
1486
  let n = Math.max(1, parseInt(t[1], 10)), r = (t[2] ?? "end").toLowerCase();
1326
1487
  return r === "start" || r === "jump-start" ? (e) => G(Math.ceil(e * n) / n) : r === "none" || r === "jump-none" ? (e) => G(Math.round(e * n) / n) : r === "both" || r === "jump-both" ? (e) => G((Math.floor(e * n) + .5) / n) : (e) => G(Math.floor(e * n) / n);
1327
1488
  }
1328
- function Rn(e) {
1489
+ function pr(e) {
1329
1490
  if (!e) return (e) => G(e);
1330
1491
  let t = e.trim().toLowerCase();
1331
1492
  if (!t || t === "linear") return (e) => G(e);
1332
- if (Nn[t]) {
1333
- let [e, n, r, i] = Nn[t], a = In(e, n, r, i);
1493
+ if (cr[t]) {
1494
+ let [e, n, r, i] = cr[t], a = dr(e, n, r, i);
1334
1495
  return (e) => G(a(G(e)));
1335
1496
  }
1336
1497
  if (t.startsWith("cubic-bezier(") && t.endsWith(")")) {
1337
1498
  let e = t.slice(13, -1).split(",").map((e) => Number.parseFloat(e.trim()));
1338
1499
  if (e.length === 4 && e.every((e) => Number.isFinite(e))) {
1339
- let [t, n, r, i] = e, a = In(t, n, r, i);
1500
+ let [t, n, r, i] = e, a = dr(t, n, r, i);
1340
1501
  return (e) => G(a(G(e)));
1341
1502
  }
1342
1503
  }
1343
1504
  if (t.startsWith("steps(") && t.endsWith(")")) {
1344
- let e = Ln(t);
1505
+ let e = fr(t);
1345
1506
  return (t) => e(G(t));
1346
1507
  }
1347
1508
  return (e) => G(e);
1348
1509
  }
1349
- function zn(e) {
1510
+ function mr(e) {
1350
1511
  if (!e) return;
1351
1512
  let t = /(-?\d+(?:\.\d+)?)\s*\.\.\s*(-?\d+(?:\.\d+)?)\s*->\s*(-?\d+(?:\.\d+)?)\s*\.\.\s*(-?\d+(?:\.\d+)?)/.exec(e);
1352
1513
  if (!t) return;
@@ -1363,7 +1524,7 @@ function zn(e) {
1363
1524
  outEnd: a
1364
1525
  };
1365
1526
  }
1366
- var Bn = new class {
1527
+ var hr = new class {
1367
1528
  bindingsByStyle = /* @__PURE__ */ new Map();
1368
1529
  observer;
1369
1530
  observeScheduled = !1;
@@ -1388,7 +1549,7 @@ var Bn = new class {
1388
1549
  for (let e of Array.from(this.globalCleanups)) try {
1389
1550
  e();
1390
1551
  } catch (e) {
1391
- Mn.warn("Failed to cleanup binding listener", e);
1552
+ sr.warn("Failed to cleanup binding listener", e);
1392
1553
  }
1393
1554
  this.globalCleanups.clear(), this.elementStates.clear(), this.styleToElements.clear(), this.bindingsByStyle.clear(), this.pendingScanStyles.clear(), this.scanScheduled = !1, this.observer &&= (this.observer.disconnect(), void 0);
1394
1555
  }
@@ -1396,24 +1557,24 @@ var Bn = new class {
1396
1557
  if (t) try {
1397
1558
  let n = JSON.parse(t).motionBindings ?? [], r = n.map((t) => this.parseBinding(e, t)).filter((e) => e !== void 0);
1398
1559
  if (r.length === 0) {
1399
- n.length > 0 && Mn.warn(`Style ${e} declares ${n.length} motion binding(s) but none are usable; it will not animate`);
1560
+ n.length > 0 && sr.warn(`Style ${e} declares ${n.length} motion binding(s) but none are usable; it will not animate`);
1400
1561
  return;
1401
1562
  }
1402
1563
  return { bindings: r };
1403
1564
  } catch (e) {
1404
- Mn.warn("Failed to parse motion metadata", e);
1565
+ sr.warn("Failed to parse motion metadata", e);
1405
1566
  return;
1406
1567
  }
1407
1568
  }
1408
1569
  parseBinding(e, t) {
1409
1570
  let n = t.source?.trim();
1410
1571
  if (!n) {
1411
- Mn.warn(`Style ${e} has a motion binding with no source; discarding it`);
1572
+ sr.warn(`Style ${e} has a motion binding with no source; discarding it`);
1412
1573
  return;
1413
1574
  }
1414
- let r = Pn(t.min) ?? 0, i = Pn(t.max), a = i === void 0 ? r + 100 : i, o = (t.clamp ?? "clamp").trim().toLowerCase(), s = !!t.reverse, c = Rn(t.ease), l = zn(t.map), u = t.targetId?.trim() || void 0;
1575
+ let r = lr(t.min) ?? 0, i = lr(t.max), a = i === void 0 ? r + 100 : i, o = (t.clamp ?? "clamp").trim().toLowerCase(), s = !!t.reverse, c = pr(t.ease), l = mr(t.map), u = t.targetId?.trim() || void 0;
1415
1576
  if (Number.isNaN(r) || Number.isNaN(a)) {
1416
- Mn.warn(`Style ${e} has a motion binding on '${n}' with an unreadable range; discarding it`);
1577
+ sr.warn(`Style ${e} has a motion binding on '${n}' with an unreadable range; discarding it`);
1417
1578
  return;
1418
1579
  }
1419
1580
  return {
@@ -1461,7 +1622,7 @@ var Bn = new class {
1461
1622
  scanExistingNodes(e) {
1462
1623
  let t = this.bindingsByStyle.get(e);
1463
1624
  if (!t || typeof document > "u") return;
1464
- let n = `.${Fn(e)}`;
1625
+ let n = `.${ur(e)}`;
1465
1626
  document.querySelectorAll(n).forEach((n) => this.applyStyleToElement(n, e, t));
1466
1627
  }
1467
1628
  applyStyleToElement(e, t, n) {
@@ -1497,7 +1658,7 @@ var Bn = new class {
1497
1658
  }
1498
1659
  resolveScrollContainer(e, t) {
1499
1660
  if (t.targetId) {
1500
- let e = `[data-ikon-motion-source="${Fn(t.targetId)}"]`, n = typeof document < "u" ? document.querySelector(e) : null;
1661
+ let e = `[data-ikon-motion-source="${ur(t.targetId)}"]`, n = typeof document < "u" ? document.querySelector(e) : null;
1501
1662
  if (n) return n;
1502
1663
  }
1503
1664
  return e.closest("[data-ikon-view-type=\"scroll-view\"]");
@@ -1552,7 +1713,7 @@ var Bn = new class {
1552
1713
  try {
1553
1714
  e();
1554
1715
  } catch (e) {
1555
- Mn.warn("Failed to cleanup listener", e);
1716
+ sr.warn("Failed to cleanup listener", e);
1556
1717
  }
1557
1718
  this.globalCleanups.delete(e);
1558
1719
  }
@@ -1592,28 +1753,28 @@ var Bn = new class {
1592
1753
  }();
1593
1754
  //#endregion
1594
1755
  //#region src/use-ikon-styles.ts
1595
- function Vn(e) {
1596
- let t = L(/* @__PURE__ */ new Map()), n = P(({ styleId: e, css: n, common: r }) => {
1756
+ function gr(e) {
1757
+ let t = F(/* @__PURE__ */ new Map()), n = M(({ styleId: e, css: n, common: r }) => {
1597
1758
  if (!(!e || typeof document > "u")) {
1598
1759
  if (n) {
1599
1760
  let r = t.current.get(e);
1600
1761
  r || (r = document.createElement("style"), r.setAttribute("data-ikon-style-id", e), document.head.appendChild(r), t.current.set(e, r)), r.textContent = n;
1601
1762
  }
1602
- Bn.registerStyle(e, r);
1763
+ hr.registerStyle(e, r);
1603
1764
  }
1604
- }, []), r = P((e) => {
1765
+ }, []), r = M((e) => {
1605
1766
  if (!(typeof document > "u")) for (let n of e) {
1606
1767
  let e = t.current.get(n);
1607
- e && (e.remove(), t.current.delete(n)), Bn.unregisterStyle(n);
1768
+ e && (e.remove(), t.current.delete(n)), hr.unregisterStyle(n);
1608
1769
  }
1609
- }, []), i = P(() => {
1770
+ }, []), i = M(() => {
1610
1771
  if (typeof document < "u") {
1611
1772
  for (let e of t.current.values()) e.remove();
1612
1773
  t.current.clear();
1613
1774
  }
1614
- Bn.reset();
1775
+ hr.reset();
1615
1776
  }, []);
1616
- return F(() => {
1777
+ return N(() => {
1617
1778
  if (!e) return;
1618
1779
  for (let t of e.getUiStyles()) n(t);
1619
1780
  let t = e.subscribeToStyles(n), a = e.subscribeToStyleDeletes?.(r);
@@ -1625,7 +1786,7 @@ function Vn(e) {
1625
1786
  i,
1626
1787
  n,
1627
1788
  r
1628
- ]), F(() => () => i(), [i]), {
1789
+ ]), N(() => () => i(), [i]), {
1629
1790
  setStyle: n,
1630
1791
  deleteStyles: r,
1631
1792
  reset: i
@@ -1633,7 +1794,7 @@ function Vn(e) {
1633
1794
  }
1634
1795
  //#endregion
1635
1796
  //#region src/use-ikon-ui-stores.ts
1636
- function Hn(e) {
1797
+ function _r(e) {
1637
1798
  let t = [];
1638
1799
  for (let [n, r] of e) {
1639
1800
  let e = r.store.getSnapshot(), i = e.rootViewId && e.views.has(e.rootViewId);
@@ -1641,15 +1802,15 @@ function Hn(e) {
1641
1802
  }
1642
1803
  return t.sort(), t.join(",");
1643
1804
  }
1644
- function Un(e) {
1645
- let [t, n] = R(), r = L("");
1646
- return F(() => {
1805
+ function vr(e) {
1806
+ let [t, n] = I(), r = F("");
1807
+ return N(() => {
1647
1808
  if (!e) {
1648
1809
  n(void 0), r.current = "";
1649
1810
  return;
1650
1811
  }
1651
1812
  let t = () => {
1652
- let t = e.getStores(), i = Hn(t);
1813
+ let t = e.getStores(), i = _r(t);
1653
1814
  i !== r.current && (r.current = i, n(t));
1654
1815
  };
1655
1816
  return t(), e.subscribe(t);
@@ -1657,11 +1818,11 @@ function Un(e) {
1657
1818
  }
1658
1819
  //#endregion
1659
1820
  //#region src/media/use-sibling-client.ts
1660
- function Wn(e, t, n) {
1661
- let [r, i] = R(null), [a, o] = R(null), s = L(n);
1821
+ function yr(e, t, n) {
1822
+ let [r, i] = I(null), [a, o] = I(null), s = F(n);
1662
1823
  s.current = n;
1663
1824
  let c = t ? JSON.stringify(Object.entries(t).sort(([e], [t]) => e < t ? -1 : +(e > t))) : null;
1664
- return F(() => {
1825
+ return N(() => {
1665
1826
  if (!e || c === null) return;
1666
1827
  let t = Object.fromEntries(JSON.parse(c)), n = e.createSibling(t, s.current), r = !1;
1667
1828
  return o(null), n.connect().then(() => {
@@ -1678,10 +1839,10 @@ function Wn(e, t, n) {
1678
1839
  }
1679
1840
  //#endregion
1680
1841
  //#region src/media/use-media-capture.ts
1681
- var Gn = k("IkonMediaCaptureHooks");
1682
- function Kn(e, t, n, r) {
1683
- let [i, a] = R(null), o = L(r);
1684
- return o.current = r, F(() => {
1842
+ var br = D("IkonMediaCaptureHooks");
1843
+ function xr(e, t, n, r) {
1844
+ let [i, a] = I(null), o = F(r);
1845
+ return o.current = r, N(() => {
1685
1846
  if (!e || !t) return;
1686
1847
  let r = !1, i = null;
1687
1848
  return a(null), (async () => {
@@ -1694,7 +1855,7 @@ function Kn(e, t, n, r) {
1694
1855
  try {
1695
1856
  i = await o.current(t);
1696
1857
  } catch (e) {
1697
- r || (Gn.error(`${n} capture start failed: ${String(e)}`), a(e instanceof Error ? e : Error(String(e))));
1858
+ r || (br.error(`${n} capture start failed: ${String(e)}`), a(e instanceof Error ? e : Error(String(e))));
1698
1859
  return;
1699
1860
  }
1700
1861
  r && i.stop();
@@ -1708,17 +1869,17 @@ function Kn(e, t, n, r) {
1708
1869
  n
1709
1870
  ]), { error: i };
1710
1871
  }
1711
- function qn(e, t, n) {
1712
- let r = L(n);
1713
- return r.current = n, Kn(e, t, "microphone", P((e) => e.audio.startMic(r.current ?? {}), []));
1872
+ function Sr(e, t, n) {
1873
+ let r = F(n);
1874
+ return r.current = n, xr(e, t, "microphone", M((e) => e.audio.startMic(r.current ?? {}), []));
1714
1875
  }
1715
- function Jn(e, t, n) {
1716
- let r = L(n);
1717
- return r.current = n, Kn(e, t, "camera", P((e) => e.video.startCamera(r.current), []));
1876
+ function Cr(e, t, n) {
1877
+ let r = F(n);
1878
+ return r.current = n, xr(e, t, "camera", M((e) => e.video.startCamera(r.current), []));
1718
1879
  }
1719
- function Yn(e, t, n) {
1720
- let r = L(n);
1721
- return r.current = n, Kn(e, t, "screen", P((e) => e.video.startScreen(r.current), []));
1880
+ function wr(e, t, n) {
1881
+ let r = F(n);
1882
+ return r.current = n, xr(e, t, "screen", M((e) => e.video.startScreen(r.current), []));
1722
1883
  }
1723
1884
  //#endregion
1724
1885
  //#region src/shared/render-motion-letters.tsx
@@ -1728,8 +1889,11 @@ var K = {
1728
1889
  Word: 2,
1729
1890
  Line: 4,
1730
1891
  Paragraph: 8,
1731
- Emoji: 16
1732
- }, Xn = [
1892
+ Emoji: 16,
1893
+ LetterReverse: 32,
1894
+ WordReverse: 64,
1895
+ LineReverse: 128
1896
+ }, Tr = [
1733
1897
  {
1734
1898
  flag: K.Letter,
1735
1899
  hints: [
@@ -1778,114 +1942,144 @@ var K = {
1778
1942
  "[data-emoji]"
1779
1943
  ]
1780
1944
  }
1781
- ], Zn = K.Letter | K.Word | K.Line | K.Paragraph | K.Emoji, Qn = K.Letter | K.Word | K.Line | K.Paragraph, $n = /* @__PURE__ */ new Map(), er = 16384;
1782
- function tr(e, t) {
1783
- if (!e || e.length > er) return e;
1784
- let n = Ar(t), r = Er(n, K.Emoji), i = n & Qn;
1785
- if (i === K.None && !r) return e;
1786
- let a = e.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
1787
- if (i === K.None) return Or(a);
1788
- let o = wr(a);
1789
- if (o.length === 0) return r ? Or(a) : e;
1790
- let s = Tr(o), c = {
1945
+ ], Er = [
1946
+ {
1947
+ flag: K.LetterReverse,
1948
+ hint: "[data-motion-letter]"
1949
+ },
1950
+ {
1951
+ flag: K.WordReverse,
1952
+ hint: "[data-motion-word]"
1953
+ },
1954
+ {
1955
+ flag: K.LineReverse,
1956
+ hint: "[data-motion-line]"
1957
+ }
1958
+ ], Dr = ":nth-last-child(", Or = K.Letter | K.Word | K.Line | K.Paragraph | K.Emoji | K.LetterReverse | K.WordReverse | K.LineReverse, kr = K.LetterReverse | K.WordReverse | K.LineReverse, Ar = K.Letter | K.Word | K.Line | K.Paragraph, jr = /* @__PURE__ */ new Map(), Mr = 16384;
1959
+ function Nr(e) {
1960
+ return {
1791
1961
  letter: 0,
1792
1962
  word: 0,
1793
1963
  line: 0,
1794
1964
  paragraph: 0,
1795
1965
  br: 0,
1796
- emoji: 0
1797
- }, l = [];
1798
- for (let e of s) {
1799
- let t = nr(e, n, c);
1800
- l.push(...t);
1801
- }
1802
- return l;
1966
+ emoji: 0,
1967
+ reverseTotals: e
1968
+ };
1969
+ }
1970
+ function Pr(e, t, n) {
1971
+ let r = e.reverseTotals?.[t];
1972
+ return r === void 0 ? n : r - 1 - n;
1803
1973
  }
1804
- function nr(e, t, n) {
1974
+ function Fr(e, t) {
1975
+ if (!e || e.length > Mr) return e;
1976
+ let n = di(t), r = q(n, K.Emoji), i = n & Ar;
1977
+ if (i === K.None && !r) return e;
1978
+ let a = e.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
1979
+ if (i === K.None) return li(a);
1980
+ let o = oi(a);
1981
+ return o.length === 0 ? r ? li(a) : e : Ir(si(o), n, Nr(Lr(o, n)));
1982
+ }
1983
+ function Ir(e, t, n) {
1984
+ let r = [];
1985
+ for (let i of e) r.push(...Rr(i, t, n));
1986
+ return r;
1987
+ }
1988
+ function Lr(e, t) {
1989
+ if ((t & kr) === K.None) return;
1990
+ let n = q(t, K.LetterReverse), r = q(t, K.WordReverse), i = 0, a = 0;
1991
+ if (n || r) for (let t of e) for (let e of t.text.split(/\s+/)) e && (a += 1, n && (i += Wr(e).length));
1992
+ return {
1993
+ letter: n ? i : void 0,
1994
+ word: r ? a : void 0,
1995
+ line: q(t, K.LineReverse) ? e.length : void 0
1996
+ };
1997
+ }
1998
+ function Rr(e, t, n) {
1805
1999
  let r = [];
1806
2000
  for (let i of e) {
1807
- let e = rr(i, t, n);
2001
+ let e = zr(i, t, n);
1808
2002
  r.push(...e);
1809
2003
  }
1810
- if (Er(t, K.Paragraph)) {
2004
+ if (q(t, K.Paragraph)) {
1811
2005
  let e = n.paragraph++;
1812
- return [/* @__PURE__ */ z("span", {
2006
+ return [/* @__PURE__ */ L("span", {
1813
2007
  "data-motion-paragraph": !0,
1814
- style: Dr(e),
2008
+ style: ci(e),
1815
2009
  children: r
1816
2010
  }, `motion-paragraph-${e}`)];
1817
2011
  }
1818
2012
  return r;
1819
2013
  }
1820
- function rr(e, t, n) {
1821
- let r = ir(e.text, t, n), i = [];
1822
- if (Er(t, K.Line)) {
2014
+ function zr(e, t, n) {
2015
+ let r = Br(e.text, t, n), i = [];
2016
+ if (q(t, K.Line)) {
1823
2017
  let e = n.line++;
1824
- i.push(/* @__PURE__ */ z("span", {
2018
+ i.push(/* @__PURE__ */ L("span", {
1825
2019
  "data-motion-line": !0,
1826
- style: Dr(e),
2020
+ style: ci(Pr(n, "line", e)),
1827
2021
  children: r
1828
2022
  }, `motion-line-${e}`));
1829
2023
  } else i.push(...r);
1830
- for (let t = 0; t < e.breaks; t++) i.push(/* @__PURE__ */ z("br", {}, `motion-break-${n.br++}`));
2024
+ for (let t = 0; t < e.breaks; t++) i.push(/* @__PURE__ */ L("br", {}, `motion-break-${n.br++}`));
1831
2025
  return i;
1832
2026
  }
1833
- function ir(e, t, n) {
2027
+ function Br(e, t, n) {
1834
2028
  if (!e) return [];
1835
- let r = Er(t, K.Word), i = [], a = /(\s+)/g, o = 0, s;
2029
+ let r = q(t, K.Word), i = [], a = /(\s+)/g, o = 0, s;
1836
2030
  for (; (s = a.exec(e)) !== null;) {
1837
2031
  if (s.index > o) {
1838
2032
  let a = e.slice(o, s.index);
1839
- i.push(ar(a, n, t, r));
2033
+ i.push(Vr(a, n, t, r));
1840
2034
  }
1841
2035
  i.push(s[0]), o = s.index + s[0].length;
1842
2036
  }
1843
2037
  if (o < e.length) {
1844
2038
  let a = e.slice(o);
1845
- i.push(ar(a, n, t, r));
2039
+ i.push(Vr(a, n, t, r));
1846
2040
  }
1847
2041
  return i;
1848
2042
  }
1849
- function ar(e, t, n, r) {
1850
- let i = t.word++, a = sr(e, n, t), o = `motion-word-${i}`, s = or(i, r);
1851
- return r ? /* @__PURE__ */ z("span", {
2043
+ function Vr(e, t, n, r) {
2044
+ let i = t.word++, a = Ur(e, n, t), o = `motion-word-${i}`, s = Hr(Pr(t, "word", i), r);
2045
+ return r ? /* @__PURE__ */ L("span", {
1852
2046
  "data-motion-word": !0,
1853
2047
  style: s,
1854
2048
  children: a
1855
- }, o) : /* @__PURE__ */ z("span", {
2049
+ }, o) : /* @__PURE__ */ L("span", {
1856
2050
  style: s,
1857
2051
  children: a
1858
2052
  }, o);
1859
2053
  }
1860
- function or(e, t) {
2054
+ function Hr(e, t) {
1861
2055
  return t ? {
1862
- ...Dr(e),
2056
+ ...ci(e),
1863
2057
  whiteSpace: "nowrap"
1864
2058
  } : { whiteSpace: "nowrap" };
1865
2059
  }
1866
- function sr(e, t, n) {
2060
+ function Ur(e, t, n) {
1867
2061
  if (!e) return [];
1868
- let r = Er(t, K.Letter), i = Er(t, K.Emoji);
2062
+ let r = q(t, K.Letter), i = q(t, K.Emoji);
1869
2063
  if (!r) {
1870
2064
  if (!i) return [e];
1871
- let t = cr(e);
2065
+ let t = Wr(e);
1872
2066
  if (t.length === 0) return [e];
1873
- let { nodes: r } = kr(t, n);
2067
+ let { nodes: r } = ui(t, n);
1874
2068
  return r;
1875
2069
  }
1876
- let a = [], o = cr(e);
2070
+ let a = [], o = Wr(e);
1877
2071
  for (let e of o) {
1878
- let t = n.letter++, r = `motion-letter-${t}`, o = Dr(t);
2072
+ let t = n.letter++, r = `motion-letter-${t}`, o = ci(Pr(n, "letter", t));
1879
2073
  if (e === "\n") {
1880
- a.push(/* @__PURE__ */ z("span", {
2074
+ a.push(/* @__PURE__ */ L("span", {
1881
2075
  "data-motion-letter": !0,
1882
2076
  style: o,
1883
- children: /* @__PURE__ */ z("br", {})
2077
+ children: /* @__PURE__ */ L("br", {})
1884
2078
  }, r));
1885
2079
  continue;
1886
2080
  }
1887
- let s = i && xr(e) ? { "data-motion-emoji": !0 } : void 0, c = e === " " ? "\xA0" : e;
1888
- a.push(/* @__PURE__ */ z("span", {
2081
+ let s = i && ri(e) ? { "data-motion-emoji": !0 } : void 0, c = e === " " ? "\xA0" : e;
2082
+ a.push(/* @__PURE__ */ L("span", {
1889
2083
  "data-motion-letter": !0,
1890
2084
  style: o,
1891
2085
  ...s,
@@ -1894,46 +2088,46 @@ function sr(e, t, n) {
1894
2088
  }
1895
2089
  return a;
1896
2090
  }
1897
- function cr(e) {
2091
+ function Wr(e) {
1898
2092
  if (!e) return [];
1899
- let t = ur();
1900
- return t ? Array.from(t.segment(e), (e) => e.segment) : dr(e);
2093
+ let t = Kr();
2094
+ return t ? Array.from(t.segment(e), (e) => e.segment) : qr(e);
1901
2095
  }
1902
- var lr;
1903
- function ur() {
1904
- return lr === void 0 && (lr = typeof Intl < "u" && typeof Intl.Segmenter == "function" ? new Intl.Segmenter(void 0, { granularity: "grapheme" }) : null), lr;
2096
+ var Gr;
2097
+ function Kr() {
2098
+ return Gr === void 0 && (Gr = typeof Intl < "u" && typeof Intl.Segmenter == "function" ? new Intl.Segmenter(void 0, { granularity: "grapheme" }) : null), Gr;
1905
2099
  }
1906
- function dr(e) {
2100
+ function qr(e) {
1907
2101
  let t = [], n = Array.from(e), r = "";
1908
2102
  for (let e = 0; e < n.length; e++) {
1909
2103
  let i = n[e], a = n[e + 1];
1910
- r += i, !(a && fr(i, a)) && (t.push(r), r = "");
2104
+ r += i, !(a && Jr(i, a)) && (t.push(r), r = "");
1911
2105
  }
1912
2106
  return r && t.push(r), t;
1913
2107
  }
1914
- function fr(e, t) {
1915
- return t ? !!(pr(e) || pr(t) || vr(t) || mr(t) || hr(t) || gr(e) && gr(t)) : !1;
2108
+ function Jr(e, t) {
2109
+ return t ? !!(Yr(e) || Yr(t) || ei(t) || Xr(t) || Zr(t) || Qr(e) && Qr(t)) : !1;
1916
2110
  }
1917
- function pr(e) {
2111
+ function Yr(e) {
1918
2112
  return e.codePointAt(0) === 8205;
1919
2113
  }
1920
- function mr(e) {
2114
+ function Xr(e) {
1921
2115
  let t = e.codePointAt(0);
1922
2116
  return t === void 0 ? !1 : t >= 65024 && t <= 65039 || t >= 917760 && t <= 917999;
1923
2117
  }
1924
- function hr(e) {
2118
+ function Zr(e) {
1925
2119
  let t = e.codePointAt(0);
1926
2120
  return t !== void 0 && t >= 127995 && t <= 127999;
1927
2121
  }
1928
- function gr(e) {
2122
+ function Qr(e) {
1929
2123
  let t = e.codePointAt(0);
1930
2124
  return t !== void 0 && t >= 127462 && t <= 127487;
1931
2125
  }
1932
- var _r;
1933
- function vr(e) {
1934
- return e ? (_r ||= yr(), _r(e)) : !1;
2126
+ var $r;
2127
+ function ei(e) {
2128
+ return e ? ($r ||= ti(), $r(e)) : !1;
1935
2129
  }
1936
- function yr() {
2130
+ function ti() {
1937
2131
  try {
1938
2132
  let e = /\p{Mark}/u;
1939
2133
  return (t) => e.test(t);
@@ -1944,19 +2138,19 @@ function yr() {
1944
2138
  };
1945
2139
  }
1946
2140
  }
1947
- var br;
1948
- function xr(e) {
1949
- return e ? (br ||= Sr(), br(e)) : !1;
2141
+ var ni;
2142
+ function ri(e) {
2143
+ return e ? (ni ||= ii(), ni(e)) : !1;
1950
2144
  }
1951
- function Sr() {
2145
+ function ii() {
1952
2146
  try {
1953
2147
  let e = /\p{Extended_Pictographic}/u;
1954
2148
  return (t) => e.test(t);
1955
2149
  } catch {
1956
- return Cr;
2150
+ return ai;
1957
2151
  }
1958
2152
  }
1959
- function Cr(e) {
2153
+ function ai(e) {
1960
2154
  if (!e) return !1;
1961
2155
  for (let t of Array.from(e)) {
1962
2156
  let e = t.codePointAt(0);
@@ -1964,7 +2158,7 @@ function Cr(e) {
1964
2158
  }
1965
2159
  return !1;
1966
2160
  }
1967
- function wr(e) {
2161
+ function oi(e) {
1968
2162
  let t = [], n = "", r = 0;
1969
2163
  for (let i = 0; i < e.length; i++) {
1970
2164
  let a = e[i];
@@ -1982,16 +2176,16 @@ function wr(e) {
1982
2176
  breaks: r
1983
2177
  }), t;
1984
2178
  }
1985
- function Tr(e) {
2179
+ function si(e) {
1986
2180
  if (e.length === 0) return [];
1987
2181
  let t = [], n = [];
1988
2182
  for (let r of e) n.push(r), r.breaks >= 2 && (t.push(n), n = []);
1989
2183
  return n.length > 0 && t.push(n), t;
1990
2184
  }
1991
- function Er(e, t) {
2185
+ function q(e, t) {
1992
2186
  return (e & t) === t;
1993
2187
  }
1994
- function Dr(e) {
2188
+ function ci(e) {
1995
2189
  return {
1996
2190
  "--tw-motion-seq-index": e.toString(),
1997
2191
  backgroundColor: "inherit",
@@ -2008,22 +2202,22 @@ function Dr(e) {
2008
2202
  WebkitTextFillColor: "inherit"
2009
2203
  };
2010
2204
  }
2011
- function Or(e) {
2205
+ function li(e) {
2012
2206
  if (!e) return e;
2013
- let t = cr(e);
2207
+ let t = Wr(e);
2014
2208
  if (t.length === 0) return e;
2015
- let { nodes: n, sawEmoji: r } = kr(t);
2209
+ let { nodes: n, sawEmoji: r } = ui(t);
2016
2210
  return r ? n.length === 1 ? n[0] ?? e : n : e;
2017
2211
  }
2018
- function kr(e, t) {
2212
+ function ui(e, t) {
2019
2213
  let n = [], r = "", i = !1, a = t?.emoji ?? 0, o = () => {
2020
2214
  r &&= (n.push(r), "");
2021
2215
  };
2022
2216
  for (let s of e) {
2023
- if (xr(s)) {
2217
+ if (ri(s)) {
2024
2218
  i = !0, o();
2025
2219
  let e = `motion-emoji-${t ? t.emoji++ : a++}`;
2026
- n.push(/* @__PURE__ */ z("span", {
2220
+ n.push(/* @__PURE__ */ L("span", {
2027
2221
  "data-motion-emoji": !0,
2028
2222
  children: s
2029
2223
  }, e));
@@ -2039,16 +2233,16 @@ function kr(e, t) {
2039
2233
  sawEmoji: !1
2040
2234
  };
2041
2235
  }
2042
- function Ar(e) {
2236
+ function di(e) {
2043
2237
  if (!e) return K.None;
2044
2238
  let t = e.trim();
2045
2239
  if (!t) return K.None;
2046
- let n = $n.get(t);
2240
+ let n = jr.get(t);
2047
2241
  if (typeof n == "number") return n;
2048
2242
  if (typeof document > "u") return K.None;
2049
2243
  let r = t.split(/\s+/).filter(Boolean);
2050
2244
  if (r.length === 0) return K.None;
2051
- let i = r.map((e) => `.${Mr(e)}`).map((e) => RegExp(`(^|[^a-zA-Z0-9_-])${Nr(e)}(?![a-zA-Z0-9_-])`)), a = K.None, o = !1;
2245
+ let i = r.map((e) => `.${hi(e)}`), a = i.map((e) => RegExp(`(^|[^a-zA-Z0-9_-])${gi(e)}(?![a-zA-Z0-9_-])`)), o = K.None, s = !1;
2052
2246
  for (let e of Array.from(document.styleSheets)) {
2053
2247
  let t;
2054
2248
  try {
@@ -2056,55 +2250,63 @@ function Ar(e) {
2056
2250
  } catch {
2057
2251
  continue;
2058
2252
  }
2059
- let n = jr(t, i);
2060
- if (n.mask && (a |= n.mask, a === Zn)) break;
2061
- o ||= n.sawStyleRule;
2253
+ let n = fi(t, a, i, !1);
2254
+ if (n.mask && (o |= n.mask, o === Or)) break;
2255
+ s ||= n.sawStyleRule;
2062
2256
  }
2063
- return (a !== K.None || o) && $n.set(t, a), a;
2257
+ return (o !== K.None || s) && jr.set(t, o), o;
2064
2258
  }
2065
- function jr(e, t) {
2259
+ function fi(e, t, n, r) {
2066
2260
  if (!e) return {
2067
2261
  mask: K.None,
2068
2262
  sawStyleRule: !1
2069
2263
  };
2070
- let n = K.None, r = !1;
2071
- for (let i = 0; i < e.length; i++) {
2072
- let a = e[i];
2073
- if (a) {
2074
- if (a.type === CSSRule.STYLE_RULE) {
2075
- let e = a.selectorText ?? "";
2264
+ let i = K.None, a = !1;
2265
+ for (let o = 0; o < e.length; o++) {
2266
+ let s = e[o];
2267
+ if (s) {
2268
+ if (s.type === CSSRule.STYLE_RULE) {
2269
+ let e = s.selectorText ?? "";
2076
2270
  if (!e || !t.some((t) => t.test(e))) continue;
2077
- r = !0;
2078
- for (let t of Xn) t.hints.some((t) => e.includes(t)) && (n |= t.flag);
2079
- if (n === Zn) return {
2080
- mask: n,
2271
+ a = !0;
2272
+ for (let t of Tr) t.hints.some((t) => e.includes(t)) && (i |= t.flag);
2273
+ if (!r && e.includes(Dr) && pi(e, n)) for (let t of Er) e.includes(t.hint) && (i |= t.flag);
2274
+ if (i === Or) return {
2275
+ mask: i,
2081
2276
  sawStyleRule: !0
2082
2277
  };
2083
- } else if ("cssRules" in a) {
2084
- let e = jr(a.cssRules, t);
2085
- if (e.mask && (n |= e.mask, n === Zn)) return {
2086
- mask: n,
2278
+ } else if ("cssRules" in s) {
2279
+ let e = fi(s.cssRules, t, n, r || !mi(s));
2280
+ if (e.mask && (i |= e.mask, i === Or)) return {
2281
+ mask: i,
2087
2282
  sawStyleRule: !0
2088
2283
  };
2089
- r ||= e.sawStyleRule;
2284
+ a ||= e.sawStyleRule;
2090
2285
  }
2091
2286
  }
2092
2287
  }
2093
2288
  return {
2094
- mask: n,
2095
- sawStyleRule: r
2289
+ mask: i,
2290
+ sawStyleRule: a
2096
2291
  };
2097
2292
  }
2098
- function Mr(e) {
2293
+ function pi(e, t) {
2294
+ let n = e.trimStart().split(/\s/, 1)[0] ?? "";
2295
+ return t.includes(n);
2296
+ }
2297
+ function mi(e) {
2298
+ return typeof CSSLayerBlockRule < "u" && e instanceof CSSLayerBlockRule;
2299
+ }
2300
+ function hi(e) {
2099
2301
  return typeof CSS < "u" && typeof CSS.escape == "function" ? CSS.escape(e) : e.replace(/[^a-zA-Z0-9_-]/g, (e) => `\\${e}`);
2100
2302
  }
2101
- function Nr(e) {
2303
+ function gi(e) {
2102
2304
  return e.replace(/[.*+?^${}()|[\]\\]/g, (e) => `\\${e}`);
2103
2305
  }
2104
2306
  //#endregion
2105
2307
  //#region src/auth/storage.ts
2106
- var Pr = "ikon-auth-session", Fr = "ikon-auth-refreshable", Ir = "ikon-auth-auto-login-attempted-run", Lr = 6048e5, Rr = 6e4;
2107
- function zr(e) {
2308
+ var _i = "ikon-auth-session", vi = "ikon-auth-refreshable", yi = "ikon-auth-auto-login-attempted-run", bi = 6048e5, xi = 6e4;
2309
+ function Si(e) {
2108
2310
  try {
2109
2311
  let t = e.split(".");
2110
2312
  if (t.length !== 3) return;
@@ -2114,105 +2316,105 @@ function zr(e) {
2114
2316
  return;
2115
2317
  }
2116
2318
  }
2117
- function Br(e) {
2118
- let t = zr(e);
2119
- return !t || typeof t.exp == "number" && Date.now() >= t.exp * 1e3 - Rr;
2319
+ function Ci(e) {
2320
+ let t = Si(e);
2321
+ return !t || typeof t.exp == "number" && Date.now() >= t.exp * 1e3 - xi;
2120
2322
  }
2121
- function Vr(e) {
2122
- let t = zr(e)?.exp;
2323
+ function wi(e) {
2324
+ let t = Si(e)?.exp;
2123
2325
  return typeof t == "number" ? (/* @__PURE__ */ new Date(t * 1e3)).toISOString() : void 0;
2124
2326
  }
2125
- function q(e) {
2327
+ function J(e) {
2126
2328
  try {
2127
- localStorage.setItem(Pr, JSON.stringify(e));
2329
+ localStorage.setItem(_i, JSON.stringify(e));
2128
2330
  } catch {
2129
2331
  console.warn("Failed to save auth session to localStorage");
2130
2332
  }
2131
2333
  }
2132
- function Hr() {
2334
+ function Ti() {
2133
2335
  try {
2134
- let e = localStorage.getItem(Pr);
2336
+ let e = localStorage.getItem(_i);
2135
2337
  if (!e) return null;
2136
2338
  let t = JSON.parse(e);
2137
- return Date.now() - t.authenticatedAt > Lr || Br(t.token) ? (Xr(), null) : t;
2339
+ return Date.now() - t.authenticatedAt > bi || Ci(t.token) ? (Ni(), null) : t;
2138
2340
  } catch {
2139
2341
  return console.warn("Failed to load auth session from localStorage"), null;
2140
2342
  }
2141
2343
  }
2142
- function Ur() {
2344
+ function Ei() {
2143
2345
  try {
2144
- let e = localStorage.getItem(Pr);
2346
+ let e = localStorage.getItem(_i);
2145
2347
  if (!e) return !1;
2146
2348
  let t = JSON.parse(e);
2147
- return t.provider === "dev" && Br(t.token);
2349
+ return t.provider === "dev" && Ci(t.token);
2148
2350
  } catch {
2149
2351
  return !1;
2150
2352
  }
2151
2353
  }
2152
- function Wr(e) {
2354
+ function Di(e) {
2153
2355
  try {
2154
- localStorage.removeItem(Pr), localStorage.setItem(Fr, JSON.stringify(e));
2356
+ localStorage.removeItem(_i), localStorage.setItem(vi, JSON.stringify(e));
2155
2357
  } catch {
2156
2358
  console.warn("Failed to save the auth session marker to localStorage");
2157
2359
  }
2158
2360
  }
2159
- function Gr() {
2361
+ function Oi() {
2160
2362
  try {
2161
- let e = localStorage.getItem(Fr);
2363
+ let e = localStorage.getItem(vi);
2162
2364
  if (!e) return null;
2163
2365
  let t = JSON.parse(e);
2164
- return Date.now() - t.renewedAt > Lr ? (qr(), null) : t;
2366
+ return Date.now() - t.renewedAt > bi ? (Ai(), null) : t;
2165
2367
  } catch {
2166
2368
  return console.warn("Failed to load the auth session marker from localStorage"), null;
2167
2369
  }
2168
2370
  }
2169
- function Kr() {
2170
- let e = Gr();
2171
- e && Wr({
2371
+ function ki() {
2372
+ let e = Oi();
2373
+ e && Di({
2172
2374
  ...e,
2173
2375
  renewedAt: Date.now()
2174
2376
  });
2175
2377
  }
2176
- function qr() {
2378
+ function Ai() {
2177
2379
  try {
2178
- localStorage.removeItem(Fr);
2380
+ localStorage.removeItem(vi);
2179
2381
  } catch {
2180
2382
  console.warn("Failed to clear the auth session marker from localStorage");
2181
2383
  }
2182
2384
  }
2183
- function Jr() {
2184
- Hr()?.provider === "anonymous" && Xr(), Gr()?.provider === "anonymous" && qr();
2385
+ function ji() {
2386
+ Ti()?.provider === "anonymous" && Ni(), Oi()?.provider === "anonymous" && Ai();
2185
2387
  }
2186
- function Yr() {
2388
+ function Mi() {
2187
2389
  try {
2188
2390
  let e = typeof window < "u" ? new URLSearchParams(window.location.search) : void 0;
2189
2391
  if (e?.get("ikon_token") || e?.get("ikon_code")) return !0;
2190
2392
  } catch {}
2191
- let e = Hr()?.provider ?? Gr()?.provider;
2393
+ let e = Ti()?.provider ?? Oi()?.provider;
2192
2394
  return e !== void 0 && e !== "anonymous";
2193
2395
  }
2194
- function Xr() {
2396
+ function Ni() {
2195
2397
  try {
2196
- localStorage.removeItem(Pr);
2398
+ localStorage.removeItem(_i);
2197
2399
  } catch {
2198
2400
  console.warn("Failed to clear auth session from localStorage");
2199
2401
  }
2200
2402
  }
2201
- function Zr(e) {
2403
+ function Pi(e) {
2202
2404
  if (e) try {
2203
- sessionStorage.setItem(Ir, e);
2405
+ sessionStorage.setItem(yi, e);
2204
2406
  } catch {
2205
2407
  console.warn("Failed to record auto-login attempt in sessionStorage");
2206
2408
  }
2207
2409
  }
2208
- function Qr() {
2410
+ function Fi() {
2209
2411
  try {
2210
- return sessionStorage.getItem(Ir);
2412
+ return sessionStorage.getItem(yi);
2211
2413
  } catch {
2212
2414
  return null;
2213
2415
  }
2214
2416
  }
2215
- function J(e) {
2417
+ function Y(e) {
2216
2418
  return {
2217
2419
  id: "",
2218
2420
  provider: e.provider,
@@ -2223,8 +2425,8 @@ function J(e) {
2223
2425
  }
2224
2426
  //#endregion
2225
2427
  //#region src/auth/auth-service.ts
2226
- var $r = 15e3, ei = 15e3, Y = k("AuthService");
2227
- async function ti(e) {
2428
+ var Ii = 15e3, Li = 15e3, X = D("AuthService");
2429
+ async function Ri(e) {
2228
2430
  try {
2229
2431
  return await fetch(e, {
2230
2432
  method: "GET",
@@ -2234,34 +2436,34 @@ async function ti(e) {
2234
2436
  return `no-cors probe ALSO FAILED (${e instanceof Error ? e.name : "Error"}) → origin is unreachable: TLS handshake / certificate, DNS, or network (old browser may not trust this host's cert)`;
2235
2437
  }
2236
2438
  }
2237
- var ni = "x-ikon-auth-service";
2238
- function ri(e) {
2239
- if (e.headers.get(ni) !== null) return !1;
2439
+ var zi = "x-ikon-auth-service";
2440
+ function Bi(e) {
2441
+ if (e.headers.get(zi) !== null) return !1;
2240
2442
  if (e.status === 404 || e.status === 405) return !0;
2241
2443
  let t = e.headers.get("content-type") ?? "";
2242
2444
  return e.status === 200 && t.includes("text/html");
2243
2445
  }
2244
- async function X(e, t, n) {
2245
- let r = `${e}${t}`, i = Te(), a = i !== null && e === i, o = a ? await _e() : i, s = o !== null && o !== e ? `${o}${t}` : null, c;
2446
+ async function Z(e, t, n) {
2447
+ let r = `${e}${t}`, i = De(), a = i !== null && e === i, o = a ? await ye() : i, s = o !== null && o !== e ? `${o}${t}` : null, c;
2246
2448
  try {
2247
2449
  c = await fetch(r, n);
2248
2450
  } catch (i) {
2249
2451
  let a = i instanceof Error ? `${i.name}: ${i.message}` : String(i);
2250
2452
  if (!s) {
2251
- let n = await ti(e);
2252
- throw Y.error(`Auth request ${t} could not reach ${r} — ${a}. ${n}`), Error(`Auth request could not reach ${r} (${a}). ${n}`, { cause: i });
2453
+ let n = await Ri(e);
2454
+ throw X.error(`Auth request ${t} could not reach ${r} — ${a}. ${n}`), Error(`Auth request could not reach ${r} (${a}). ${n}`, { cause: i });
2253
2455
  }
2254
- Y.warn(`Auth request ${t} could not reach ${r} (${a}); falling back to ${s}`);
2456
+ X.warn(`Auth request ${t} could not reach ${r} (${a}); falling back to ${s}`);
2255
2457
  try {
2256
2458
  return await fetch(s, n);
2257
2459
  } catch (n) {
2258
- let i = n instanceof Error ? `${n.name}: ${n.message}` : String(n), o = await ti(e);
2259
- throw Y.error(`Auth request ${t} failed on both ${r} (${a}) and ${s} (${i}). ${o}`), Error(`Auth request unreachable: ${r} (${a}) and ${s} (${i})`, { cause: n });
2460
+ let i = n instanceof Error ? `${n.name}: ${n.message}` : String(n), o = await Ri(e);
2461
+ throw X.error(`Auth request ${t} failed on both ${r} (${a}) and ${s} (${i}). ${o}`), Error(`Auth request unreachable: ${r} (${a}) and ${s} (${i})`, { cause: n });
2260
2462
  }
2261
2463
  }
2262
- return a && s !== null && ri(c) ? (Y.warn(`Auth request ${t} got a non-auth-service answer from ${r} (${c.status}); this LB has no /ikon/auth route, falling back to ${s}`), fetch(s, n)) : c;
2464
+ return a && s !== null && Bi(c) ? (X.warn(`Auth request ${t} got a non-auth-service answer from ${r} (${c.status}); this LB has no /ikon/auth route, falling back to ${s}`), fetch(s, n)) : c;
2263
2465
  }
2264
- async function ii(e, t) {
2466
+ async function Vi(e, t) {
2265
2467
  let n;
2266
2468
  try {
2267
2469
  n = await e.json();
@@ -2274,84 +2476,84 @@ async function ii(e, t) {
2274
2476
  ...typeof n.expiresAt == "string" && n.expiresAt.length > 0 ? { expiresAt: n.expiresAt } : {}
2275
2477
  };
2276
2478
  }
2277
- async function ai(e, t, n) {
2278
- let r = we(), i = n === "guest" ? "anonymous" : n, a = {
2479
+ async function Hi(e, t, n) {
2480
+ let r = Ee(), i = n === "guest" ? "anonymous" : n, a = {
2279
2481
  method: "POST",
2280
2482
  headers: { "Content-Type": "application/json" },
2281
2483
  body: JSON.stringify({
2282
2484
  deviceId: r,
2283
2485
  space: e,
2284
2486
  ...i ? { method: i } : {},
2285
- testLink: De() ?? void 0
2487
+ testLink: ke() ?? void 0
2286
2488
  })
2287
2489
  }, o = typeof window < "u" ? window.location.origin : "?";
2288
- Y.debug(`Anonymous auth: POST ${t}/anonymous (space=${e}, origin=${o})`);
2289
- let s = await X(t, "/anonymous", a);
2490
+ X.debug(`Anonymous auth: POST ${t}/anonymous (space=${e}, origin=${o})`);
2491
+ let s = await Z(t, "/anonymous", a);
2290
2492
  if (!s.ok) {
2291
2493
  let e = await s.text().catch(() => "Unknown error");
2292
- throw Y.error(`Anonymous auth HTTP ${s.status} from ${s.url}: ${e}`), Error(`Anonymous auth failed: ${s.status} ${e}`);
2494
+ throw X.error(`Anonymous auth HTTP ${s.status} from ${s.url}: ${e}`), Error(`Anonymous auth failed: ${s.status} ${e}`);
2293
2495
  }
2294
- let { token: c } = await ii(s, `Anonymous auth for space ${e}`), l = {
2496
+ let { token: c } = await Vi(s, `Anonymous auth for space ${e}`), l = {
2295
2497
  token: c,
2296
2498
  provider: "anonymous",
2297
2499
  authenticatedAt: Date.now()
2298
2500
  };
2299
- return q(l), l;
2501
+ return J(l), l;
2300
2502
  }
2301
- async function oi({ email: e, spaceId: t, authUrl: n }) {
2302
- let r = await X(n, "/email/send", {
2503
+ async function Ui({ email: e, spaceId: t, authUrl: n }) {
2504
+ let r = await Z(n, "/email/send", {
2303
2505
  method: "POST",
2304
2506
  headers: { "Content-Type": "application/json" },
2305
2507
  body: JSON.stringify({
2306
2508
  email: e.trim(),
2307
2509
  space: t
2308
2510
  }),
2309
- signal: D($r)
2511
+ signal: E(Ii)
2310
2512
  });
2311
2513
  if (!r.ok) {
2312
2514
  let e = await r.text().catch(() => "Failed to send login code");
2313
2515
  throw Error(e);
2314
2516
  }
2315
2517
  }
2316
- async function si({ email: e, code: t, authUrl: n }) {
2317
- let r = await X(n, "/email/code", {
2518
+ async function Wi({ email: e, code: t, authUrl: n }) {
2519
+ let r = await Z(n, "/email/code", {
2318
2520
  method: "POST",
2319
2521
  headers: { "Content-Type": "application/json" },
2320
2522
  body: JSON.stringify({
2321
2523
  email: e.trim(),
2322
2524
  code: t.trim()
2323
2525
  }),
2324
- signal: D($r)
2526
+ signal: E(Ii)
2325
2527
  });
2326
2528
  if (!r.ok) {
2327
2529
  let e = await r.text().catch(() => "Invalid code");
2328
2530
  throw Error(e);
2329
2531
  }
2330
- let { token: i } = await ii(r, "Login-code verification"), a = {
2532
+ let { token: i } = await Vi(r, "Login-code verification"), a = {
2331
2533
  token: i,
2332
2534
  provider: "email",
2333
2535
  authenticatedAt: Date.now()
2334
2536
  };
2335
- return q(a), a;
2537
+ return J(a), a;
2336
2538
  }
2337
- function ci() {
2338
- let e = new URLSearchParams(window.location.search), t = e.get(T), n = e.get(w);
2539
+ function Gi() {
2540
+ let e = new URLSearchParams(window.location.search), t = e.get(w), n = e.get(C);
2339
2541
  return t && n ? {
2340
2542
  token: t,
2341
2543
  provider: n
2342
2544
  } : null;
2343
2545
  }
2344
- function li() {
2345
- let e = new URLSearchParams(window.location.search), t = e.get(S), n = e.get(w);
2546
+ function Ki() {
2547
+ let e = new URLSearchParams(window.location.search), t = e.get(te), n = e.get(C);
2346
2548
  return t && n ? {
2347
2549
  code: t,
2348
2550
  provider: n
2349
2551
  } : null;
2350
2552
  }
2351
- async function ui(e, t, n) {
2352
- let r = Ke();
2553
+ async function qi(e, t, n) {
2554
+ let r = Je();
2353
2555
  if (!r) throw Error("This sign-in was started in a different browser or tab");
2354
- let i = await X(await A(n), "/oauth/exchange", {
2556
+ let i = await Z(await O(n), "/oauth/exchange", {
2355
2557
  method: "POST",
2356
2558
  headers: { "Content-Type": "application/json" },
2357
2559
  body: JSON.stringify({
@@ -2359,37 +2561,37 @@ async function ui(e, t, n) {
2359
2561
  codeVerifier: r,
2360
2562
  supportsRefresh: !0
2361
2563
  }),
2362
- signal: D($r)
2564
+ signal: E(Ii)
2363
2565
  });
2364
2566
  if (!i.ok) throw Error("Could not complete the sign-in");
2365
- let { token: a, expiresAt: o } = await ii(i, `OAuth code exchange for ${t}`), s = {
2567
+ let { token: a, expiresAt: o } = await Vi(i, `OAuth code exchange for ${t}`), s = {
2366
2568
  token: a,
2367
2569
  provider: t,
2368
2570
  authenticatedAt: Date.now(),
2369
2571
  expiresAt: o
2370
2572
  };
2371
- return o ? Wr({
2573
+ return o ? Di({
2372
2574
  provider: t,
2373
2575
  authenticatedAt: s.authenticatedAt,
2374
2576
  renewedAt: s.authenticatedAt
2375
- }) : q(s), s;
2577
+ }) : J(s), s;
2376
2578
  }
2377
- async function di(e) {
2378
- let t = Te();
2579
+ async function Ji(e) {
2580
+ let t = De();
2379
2581
  if (t === null) return null;
2380
2582
  let n;
2381
2583
  try {
2382
2584
  n = await fetch(`${t}/session/refresh`, {
2383
2585
  method: "POST",
2384
- signal: D(ei)
2586
+ signal: E(Li)
2385
2587
  });
2386
2588
  } catch (e) {
2387
2589
  let n = e instanceof Error ? `${e.name}: ${e.message}` : String(e);
2388
- throw Y.warn(`Session renewal could not reach ${t}/session/refresh (${n})`), Error(`Session renewal could not reach the auth service (${n})`, { cause: e });
2590
+ throw X.warn(`Session renewal could not reach ${t}/session/refresh (${n})`), Error(`Session renewal could not reach the auth service (${n})`, { cause: e });
2389
2591
  }
2390
2592
  if (n.status === 401) return null;
2391
2593
  if (!n.ok) throw Error(`Session renewal failed: ${n.status}`);
2392
- let { token: r, expiresAt: i } = await ii(n, "Session renewal");
2594
+ let { token: r, expiresAt: i } = await Vi(n, "Session renewal");
2393
2595
  if (!i) throw Error("Session renewal returned a token with no expiry");
2394
2596
  return {
2395
2597
  token: r,
@@ -2398,17 +2600,17 @@ async function di(e) {
2398
2600
  expiresAt: i
2399
2601
  };
2400
2602
  }
2401
- function fi() {
2603
+ function Yi() {
2402
2604
  let e = new URLSearchParams(window.location.search), t = e.get("error");
2403
2605
  return t ? {
2404
2606
  code: t,
2405
- provider: e.get(w)
2607
+ provider: e.get(C)
2406
2608
  } : null;
2407
2609
  }
2408
- function pi() {
2409
- return Ee();
2610
+ function Xi() {
2611
+ return Oe();
2410
2612
  }
2411
- var mi = {
2613
+ var Zi = {
2412
2614
  google: "Google",
2413
2615
  facebook: "Facebook",
2414
2616
  apple: "Apple",
@@ -2416,8 +2618,8 @@ var mi = {
2416
2618
  signicat: "eID",
2417
2619
  sso: "organisation"
2418
2620
  };
2419
- function hi(e, t, n) {
2420
- let r = t ? mi[t] ?? t : "this provider";
2621
+ function Qi(e, t, n) {
2622
+ let r = t ? Zi[t] ?? t : "this provider";
2421
2623
  switch (e) {
2422
2624
  case "account_exists_unverified_email": {
2423
2625
  let e = `This email address already has an account on this app that uses a different sign-in method. For security, ${r} sign-in can't be connected to it automatically.`;
@@ -2438,21 +2640,21 @@ function hi(e, t, n) {
2438
2640
  default: return e;
2439
2641
  }
2440
2642
  }
2441
- function gi() {
2643
+ function $i() {
2442
2644
  let e = new URLSearchParams(window.location.search);
2443
2645
  for (let t of [
2444
- T,
2445
- S,
2446
2646
  w,
2647
+ te,
2648
+ C,
2447
2649
  "error",
2448
- C
2650
+ S
2449
2651
  ]) e.delete(t);
2450
2652
  let t = e.toString();
2451
2653
  window.history.replaceState({}, "", t.length > 0 ? `${window.location.pathname}?${t}` : window.location.pathname);
2452
2654
  }
2453
- async function _i(e, t, n, r) {
2454
- let i = r ?? window.location.origin + window.location.pathname + window.location.search, a = await he();
2455
- return O({
2655
+ async function ea(e, t, n, r) {
2656
+ let i = r ?? window.location.origin + window.location.pathname + window.location.search, a = await _e();
2657
+ return de({
2456
2658
  authUrl: n,
2457
2659
  provider: e,
2458
2660
  spaceId: t,
@@ -2460,29 +2662,29 @@ async function _i(e, t, n, r) {
2460
2662
  codeChallenge: a ?? void 0
2461
2663
  });
2462
2664
  }
2463
- async function vi(e, t, n, r = {}) {
2464
- let i = await he();
2665
+ async function ta(e, t, n, r = {}) {
2666
+ let i = await _e();
2465
2667
  if (!i) return null;
2466
- let a = r.returnUrl ?? window.location.origin + window.location.pathname + window.location.search, o = r.linkSessionToken ? await xi(n, r.linkSessionToken, e, i) : void 0;
2467
- return O({
2668
+ let a = r.returnUrl ?? window.location.origin + window.location.pathname + window.location.search, o = r.linkSessionToken ? await ia(n, r.linkSessionToken, e, i) : void 0;
2669
+ return de({
2468
2670
  authUrl: n,
2469
- provider: `${E}${e}`,
2671
+ provider: `${T}${e}`,
2470
2672
  spaceId: t,
2471
2673
  returnUrl: a,
2472
2674
  codeChallenge: i,
2473
2675
  linkTicket: o
2474
2676
  });
2475
2677
  }
2476
- async function yi(e, t) {
2678
+ async function na(e, t) {
2477
2679
  try {
2478
- let n = await X(e, `/sso/connections?host=${encodeURIComponent(t)}`, { method: "GET" });
2680
+ let n = await Z(e, `/sso/connections?host=${encodeURIComponent(t)}`, { method: "GET" });
2479
2681
  return n.ok ? await n.json() : [];
2480
2682
  } catch (e) {
2481
- return Y.warn(`Could not look up the SSO connections of ${t}: ${e instanceof Error ? e.message : String(e)}`), [];
2683
+ return X.warn(`Could not look up the SSO connections of ${t}: ${e instanceof Error ? e.message : String(e)}`), [];
2482
2684
  }
2483
2685
  }
2484
- async function bi(e, t, n) {
2485
- let r = await X(e, "/sso/discover", {
2686
+ async function ra(e, t, n) {
2687
+ let r = await Z(e, "/sso/discover", {
2486
2688
  method: "POST",
2487
2689
  headers: { "Content-Type": "application/json" },
2488
2690
  body: JSON.stringify({
@@ -2493,9 +2695,9 @@ async function bi(e, t, n) {
2493
2695
  if (!r.ok) throw Error(r.status === 429 ? "Too many attempts. Please wait a minute and try again." : "Could not look up your organisation sign-in.");
2494
2696
  return (await r.json()).connection ?? null;
2495
2697
  }
2496
- async function xi(e, t, n, r) {
2698
+ async function ia(e, t, n, r) {
2497
2699
  try {
2498
- let i = await X(e, "/oauth/sso/link-intent", {
2700
+ let i = await Z(e, "/oauth/sso/link-intent", {
2499
2701
  method: "POST",
2500
2702
  headers: {
2501
2703
  "Content-Type": "application/json",
@@ -2508,12 +2710,12 @@ async function xi(e, t, n, r) {
2508
2710
  });
2509
2711
  return i.ok ? (await i.json()).ticket : void 0;
2510
2712
  } catch (e) {
2511
- Y.warn(`Could not request an SSO link ticket for connection ${n}: ${e instanceof Error ? e.message : String(e)}`);
2713
+ X.warn(`Could not request an SSO link ticket for connection ${n}: ${e instanceof Error ? e.message : String(e)}`);
2512
2714
  return;
2513
2715
  }
2514
2716
  }
2515
- async function Si(e) {
2516
- let t = await X(e, "/passkey/registration/options", {
2717
+ async function aa(e) {
2718
+ let t = await Z(e, "/passkey/registration/options", {
2517
2719
  method: "POST",
2518
2720
  headers: { "Content-Type": "application/json" }
2519
2721
  });
@@ -2523,8 +2725,8 @@ async function Si(e) {
2523
2725
  }
2524
2726
  return t.json();
2525
2727
  }
2526
- async function Ci(e, t, n) {
2527
- let r = await X(e, "/passkey/registration/verify", {
2728
+ async function oa(e, t, n) {
2729
+ let r = await Z(e, "/passkey/registration/verify", {
2528
2730
  method: "POST",
2529
2731
  headers: { "Content-Type": "application/json" },
2530
2732
  body: JSON.stringify({
@@ -2536,15 +2738,15 @@ async function Ci(e, t, n) {
2536
2738
  let e = await r.text().catch(() => "Registration verification failed");
2537
2739
  throw Error(e);
2538
2740
  }
2539
- let { token: i } = await ii(r, "Passkey registration verification"), a = {
2741
+ let { token: i } = await Vi(r, "Passkey registration verification"), a = {
2540
2742
  token: i,
2541
2743
  provider: "passkey",
2542
2744
  authenticatedAt: Date.now()
2543
2745
  };
2544
- return q(a), a;
2746
+ return J(a), a;
2545
2747
  }
2546
- async function wi(e, t) {
2547
- let n = await X(e, "/passkey/authentication/options", {
2748
+ async function sa(e, t) {
2749
+ let n = await Z(e, "/passkey/authentication/options", {
2548
2750
  method: "POST",
2549
2751
  headers: { "Content-Type": "application/json" },
2550
2752
  body: JSON.stringify({ email: t })
@@ -2555,8 +2757,8 @@ async function wi(e, t) {
2555
2757
  }
2556
2758
  return n.json();
2557
2759
  }
2558
- async function Ti(e, t) {
2559
- let n = await X(e, "/passkey/authentication/verify", {
2760
+ async function ca(e, t) {
2761
+ let n = await Z(e, "/passkey/authentication/verify", {
2560
2762
  method: "POST",
2561
2763
  headers: { "Content-Type": "application/json" },
2562
2764
  body: JSON.stringify({ response: t })
@@ -2565,61 +2767,61 @@ async function Ti(e, t) {
2565
2767
  let e = await n.text().catch(() => "Authentication verification failed");
2566
2768
  throw Error(e);
2567
2769
  }
2568
- let { token: r } = await ii(n, "Passkey authentication verification"), i = {
2770
+ let { token: r } = await Vi(n, "Passkey authentication verification"), i = {
2569
2771
  token: r,
2570
2772
  provider: "passkey",
2571
2773
  authenticatedAt: Date.now()
2572
2774
  };
2573
- return q(i), i;
2775
+ return J(i), i;
2574
2776
  }
2575
- async function Ei(e, t) {
2777
+ async function la(e, t) {
2576
2778
  try {
2577
- await X(await A(t), "/logout", {
2779
+ await Z(await O(t), "/logout", {
2578
2780
  method: "POST",
2579
2781
  headers: { Authorization: `Bearer ${e}` },
2580
- signal: D($r)
2782
+ signal: E(Ii)
2581
2783
  });
2582
2784
  } catch {}
2583
2785
  }
2584
2786
  //#endregion
2585
2787
  //#region ../../node_modules/@simplewebauthn/browser/esm/helpers/bufferToBase64URLString.js
2586
- function Z(e) {
2788
+ function Q(e) {
2587
2789
  let t = new Uint8Array(e), n = "";
2588
2790
  for (let e of t) n += String.fromCharCode(e);
2589
2791
  return btoa(n).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
2590
2792
  }
2591
2793
  //#endregion
2592
2794
  //#region ../../node_modules/@simplewebauthn/browser/esm/helpers/base64URLStringToBuffer.js
2593
- function Di(e) {
2795
+ function ua(e) {
2594
2796
  let t = e.replace(/-/g, "+").replace(/_/g, "/"), n = (4 - t.length % 4) % 4, r = t.padEnd(t.length + n, "="), i = atob(r), a = new ArrayBuffer(i.length), o = new Uint8Array(a);
2595
2797
  for (let e = 0; e < i.length; e++) o[e] = i.charCodeAt(e);
2596
2798
  return a;
2597
2799
  }
2598
2800
  //#endregion
2599
2801
  //#region ../../node_modules/@simplewebauthn/browser/esm/helpers/browserSupportsWebAuthn.js
2600
- function Oi() {
2601
- return ki.stubThis(globalThis?.PublicKeyCredential !== void 0 && typeof globalThis.PublicKeyCredential == "function");
2802
+ function da() {
2803
+ return fa.stubThis(globalThis?.PublicKeyCredential !== void 0 && typeof globalThis.PublicKeyCredential == "function");
2602
2804
  }
2603
- var ki = { stubThis: (e) => e };
2805
+ var fa = { stubThis: (e) => e };
2604
2806
  //#endregion
2605
2807
  //#region ../../node_modules/@simplewebauthn/browser/esm/helpers/toPublicKeyCredentialDescriptor.js
2606
- function Ai(e) {
2808
+ function pa(e) {
2607
2809
  let { id: t } = e;
2608
2810
  return {
2609
2811
  ...e,
2610
- id: Di(t),
2812
+ id: ua(t),
2611
2813
  transports: e.transports,
2612
2814
  type: e.type
2613
2815
  };
2614
2816
  }
2615
2817
  //#endregion
2616
2818
  //#region ../../node_modules/@simplewebauthn/browser/esm/helpers/isValidDomain.js
2617
- function ji(e) {
2819
+ function ma(e) {
2618
2820
  return e === "localhost" || /^((xn--[a-z0-9-]+|[a-z0-9]+(-[a-z0-9]+)*)\.)+([a-z]{2,}|xn--[a-z0-9-]+)$/i.test(e);
2619
2821
  }
2620
2822
  //#endregion
2621
2823
  //#region ../../node_modules/@simplewebauthn/browser/esm/helpers/webAuthnError.js
2622
- var Q = class extends Error {
2824
+ var $ = class extends Error {
2623
2825
  constructor({ message: e, code: t, cause: n, name: r }) {
2624
2826
  super(e, { cause: n }), Object.defineProperty(this, "code", {
2625
2827
  enumerable: !0,
@@ -2631,76 +2833,76 @@ var Q = class extends Error {
2631
2833
  };
2632
2834
  //#endregion
2633
2835
  //#region ../../node_modules/@simplewebauthn/browser/esm/helpers/identifyRegistrationError.js
2634
- function Mi({ error: e, options: t }) {
2836
+ function ha({ error: e, options: t }) {
2635
2837
  let { publicKey: n } = t;
2636
2838
  if (!n) throw Error("options was missing required publicKey property");
2637
2839
  if (e.name === "AbortError") {
2638
- if (t.signal instanceof AbortSignal) return new Q({
2840
+ if (t.signal instanceof AbortSignal) return new $({
2639
2841
  message: "Registration ceremony was sent an abort signal",
2640
2842
  code: "ERROR_CEREMONY_ABORTED",
2641
2843
  cause: e
2642
2844
  });
2643
2845
  } else if (e.name === "ConstraintError") {
2644
- if (n.authenticatorSelection?.requireResidentKey === !0) return new Q({
2846
+ if (n.authenticatorSelection?.requireResidentKey === !0) return new $({
2645
2847
  message: "Discoverable credentials were required but no available authenticator supported it",
2646
2848
  code: "ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",
2647
2849
  cause: e
2648
2850
  });
2649
- if (t.mediation === "conditional" && n.authenticatorSelection?.userVerification === "required") return new Q({
2851
+ if (t.mediation === "conditional" && n.authenticatorSelection?.userVerification === "required") return new $({
2650
2852
  message: "User verification was required during automatic registration but it could not be performed",
2651
2853
  code: "ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE",
2652
2854
  cause: e
2653
2855
  });
2654
- if (n.authenticatorSelection?.userVerification === "required") return new Q({
2856
+ if (n.authenticatorSelection?.userVerification === "required") return new $({
2655
2857
  message: "User verification was required but no available authenticator supported it",
2656
2858
  code: "ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT",
2657
2859
  cause: e
2658
2860
  });
2659
- } else if (e.name === "InvalidStateError") return new Q({
2861
+ } else if (e.name === "InvalidStateError") return new $({
2660
2862
  message: "The authenticator was previously registered",
2661
2863
  code: "ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",
2662
2864
  cause: e
2663
2865
  });
2664
- else if (e.name === "NotAllowedError") return new Q({
2866
+ else if (e.name === "NotAllowedError") return new $({
2665
2867
  message: e.message,
2666
2868
  code: "ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",
2667
2869
  cause: e
2668
2870
  });
2669
- else if (e.name === "NotSupportedError") return n.pubKeyCredParams.filter((e) => e.type === "public-key").length === 0 ? new Q({
2871
+ else if (e.name === "NotSupportedError") return n.pubKeyCredParams.filter((e) => e.type === "public-key").length === 0 ? new $({
2670
2872
  message: "No entry in pubKeyCredParams was of type \"public-key\"",
2671
2873
  code: "ERROR_MALFORMED_PUBKEYCREDPARAMS",
2672
2874
  cause: e
2673
- }) : new Q({
2875
+ }) : new $({
2674
2876
  message: "No available authenticator supported any of the specified pubKeyCredParams algorithms",
2675
2877
  code: "ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG",
2676
2878
  cause: e
2677
2879
  });
2678
2880
  else if (e.name === "SecurityError") {
2679
2881
  let t = globalThis.location.hostname;
2680
- if (!ji(t)) return new Q({
2882
+ if (!ma(t)) return new $({
2681
2883
  message: `${globalThis.location.hostname} is an invalid domain`,
2682
2884
  code: "ERROR_INVALID_DOMAIN",
2683
2885
  cause: e
2684
2886
  });
2685
- if (n.rp.id !== t) return new Q({
2887
+ if (n.rp.id !== t) return new $({
2686
2888
  message: `The RP ID "${n.rp.id}" is invalid for this domain`,
2687
2889
  code: "ERROR_INVALID_RP_ID",
2688
2890
  cause: e
2689
2891
  });
2690
2892
  } else if (e.name === "TypeError") {
2691
- if (n.user.id.byteLength < 1 || n.user.id.byteLength > 64) return new Q({
2893
+ if (n.user.id.byteLength < 1 || n.user.id.byteLength > 64) return new $({
2692
2894
  message: "User ID was not between 1 and 64 characters",
2693
2895
  code: "ERROR_INVALID_USER_ID_LENGTH",
2694
2896
  cause: e
2695
2897
  });
2696
- } else if (e.name === "UnknownError") return new Q({
2898
+ } else if (e.name === "UnknownError") return new $({
2697
2899
  message: "The authenticator was unable to process the specified options, or could not create a new credential",
2698
2900
  code: "ERROR_AUTHENTICATOR_GENERAL_ERROR",
2699
2901
  cause: e
2700
2902
  });
2701
2903
  return e;
2702
2904
  }
2703
- var Ni = new class {
2905
+ var ga = new class {
2704
2906
  constructor() {
2705
2907
  Object.defineProperty(this, "controller", {
2706
2908
  enumerable: !0,
@@ -2723,31 +2925,31 @@ var Ni = new class {
2723
2925
  e.name = "AbortError", this.controller.abort(e), this.controller = void 0;
2724
2926
  }
2725
2927
  }
2726
- }(), Pi = ["cross-platform", "platform"];
2727
- function Fi(e) {
2728
- if (e && !(Pi.indexOf(e) < 0)) return e;
2928
+ }(), _a = ["cross-platform", "platform"];
2929
+ function va(e) {
2930
+ if (e && !(_a.indexOf(e) < 0)) return e;
2729
2931
  }
2730
2932
  //#endregion
2731
2933
  //#region ../../node_modules/@simplewebauthn/browser/esm/methods/startRegistration.js
2732
- async function Ii(e) {
2934
+ async function ya(e) {
2733
2935
  !e.optionsJSON && e.challenge && (console.warn("startRegistration() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information."), e = { optionsJSON: e });
2734
2936
  let { optionsJSON: t, useAutoRegister: n = !1 } = e;
2735
- if (!Oi()) throw Error("WebAuthn is not supported in this browser");
2937
+ if (!da()) throw Error("WebAuthn is not supported in this browser");
2736
2938
  let r = {
2737
2939
  ...t,
2738
- challenge: Di(t.challenge),
2940
+ challenge: ua(t.challenge),
2739
2941
  user: {
2740
2942
  ...t.user,
2741
- id: Di(t.user.id)
2943
+ id: ua(t.user.id)
2742
2944
  },
2743
- excludeCredentials: t.excludeCredentials?.map(Ai)
2945
+ excludeCredentials: t.excludeCredentials?.map(pa)
2744
2946
  }, i = {};
2745
- n && (i.mediation = "conditional"), i.publicKey = r, i.signal = Ni.createNewAbortSignal();
2947
+ n && (i.mediation = "conditional"), i.publicKey = r, i.signal = ga.createNewAbortSignal();
2746
2948
  let a;
2747
2949
  try {
2748
2950
  a = await navigator.credentials.create(i);
2749
2951
  } catch (e) {
2750
- throw Mi({
2952
+ throw ha({
2751
2953
  error: e,
2752
2954
  options: i
2753
2955
  });
@@ -2759,27 +2961,27 @@ async function Ii(e) {
2759
2961
  if (typeof c.getPublicKeyAlgorithm == "function") try {
2760
2962
  d = c.getPublicKeyAlgorithm();
2761
2963
  } catch (e) {
2762
- Li("getPublicKeyAlgorithm()", e);
2964
+ ba("getPublicKeyAlgorithm()", e);
2763
2965
  }
2764
2966
  let f;
2765
2967
  if (typeof c.getPublicKey == "function") try {
2766
2968
  let e = c.getPublicKey();
2767
- e !== null && (f = Z(e));
2969
+ e !== null && (f = Q(e));
2768
2970
  } catch (e) {
2769
- Li("getPublicKey()", e);
2971
+ ba("getPublicKey()", e);
2770
2972
  }
2771
2973
  let p;
2772
2974
  if (typeof c.getAuthenticatorData == "function") try {
2773
- p = Z(c.getAuthenticatorData());
2975
+ p = Q(c.getAuthenticatorData());
2774
2976
  } catch (e) {
2775
- Li("getAuthenticatorData()", e);
2977
+ ba("getAuthenticatorData()", e);
2776
2978
  }
2777
2979
  return {
2778
2980
  id: o,
2779
- rawId: Z(s),
2981
+ rawId: Q(s),
2780
2982
  response: {
2781
- attestationObject: Z(c.attestationObject),
2782
- clientDataJSON: Z(c.clientDataJSON),
2983
+ attestationObject: Q(c.attestationObject),
2984
+ clientDataJSON: Q(c.clientDataJSON),
2783
2985
  transports: u,
2784
2986
  publicKeyAlgorithm: d,
2785
2987
  publicKey: f,
@@ -2787,49 +2989,49 @@ async function Ii(e) {
2787
2989
  },
2788
2990
  type: l,
2789
2991
  clientExtensionResults: a.getClientExtensionResults(),
2790
- authenticatorAttachment: Fi(a.authenticatorAttachment)
2992
+ authenticatorAttachment: va(a.authenticatorAttachment)
2791
2993
  };
2792
2994
  }
2793
- function Li(e, t) {
2995
+ function ba(e, t) {
2794
2996
  console.warn(`The browser extension that intercepted this WebAuthn API call incorrectly implemented ${e}. You should report this error to them.\n`, t);
2795
2997
  }
2796
2998
  //#endregion
2797
2999
  //#region ../../node_modules/@simplewebauthn/browser/esm/helpers/browserSupportsWebAuthnAutofill.js
2798
- function Ri() {
2799
- if (!Oi()) return zi.stubThis(new Promise((e) => e(!1)));
3000
+ function xa() {
3001
+ if (!da()) return Sa.stubThis(new Promise((e) => e(!1)));
2800
3002
  let e = globalThis.PublicKeyCredential;
2801
- return e?.isConditionalMediationAvailable === void 0 ? zi.stubThis(new Promise((e) => e(!1))) : zi.stubThis(e.isConditionalMediationAvailable());
3003
+ return e?.isConditionalMediationAvailable === void 0 ? Sa.stubThis(new Promise((e) => e(!1))) : Sa.stubThis(e.isConditionalMediationAvailable());
2802
3004
  }
2803
- var zi = { stubThis: (e) => e };
3005
+ var Sa = { stubThis: (e) => e };
2804
3006
  //#endregion
2805
3007
  //#region ../../node_modules/@simplewebauthn/browser/esm/helpers/identifyAuthenticationError.js
2806
- function Bi({ error: e, options: t }) {
3008
+ function Ca({ error: e, options: t }) {
2807
3009
  let { publicKey: n } = t;
2808
3010
  if (!n) throw Error("options was missing required publicKey property");
2809
3011
  if (e.name === "AbortError") {
2810
- if (t.signal instanceof AbortSignal) return new Q({
3012
+ if (t.signal instanceof AbortSignal) return new $({
2811
3013
  message: "Authentication ceremony was sent an abort signal",
2812
3014
  code: "ERROR_CEREMONY_ABORTED",
2813
3015
  cause: e
2814
3016
  });
2815
- } else if (e.name === "NotAllowedError") return new Q({
3017
+ } else if (e.name === "NotAllowedError") return new $({
2816
3018
  message: e.message,
2817
3019
  code: "ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",
2818
3020
  cause: e
2819
3021
  });
2820
3022
  else if (e.name === "SecurityError") {
2821
3023
  let t = globalThis.location.hostname;
2822
- if (!ji(t)) return new Q({
3024
+ if (!ma(t)) return new $({
2823
3025
  message: `${globalThis.location.hostname} is an invalid domain`,
2824
3026
  code: "ERROR_INVALID_DOMAIN",
2825
3027
  cause: e
2826
3028
  });
2827
- if (n.rpId !== t) return new Q({
3029
+ if (n.rpId !== t) return new $({
2828
3030
  message: `The RP ID "${n.rpId}" is invalid for this domain`,
2829
3031
  code: "ERROR_INVALID_RP_ID",
2830
3032
  cause: e
2831
3033
  });
2832
- } else if (e.name === "UnknownError") return new Q({
3034
+ } else if (e.name === "UnknownError") return new $({
2833
3035
  message: "The authenticator was unable to process the specified options, or could not create a new assertion signature",
2834
3036
  code: "ERROR_AUTHENTICATOR_GENERAL_ERROR",
2835
3037
  cause: e
@@ -2838,77 +3040,77 @@ function Bi({ error: e, options: t }) {
2838
3040
  }
2839
3041
  //#endregion
2840
3042
  //#region ../../node_modules/@simplewebauthn/browser/esm/methods/startAuthentication.js
2841
- async function Vi(e) {
3043
+ async function wa(e) {
2842
3044
  !e.optionsJSON && e.challenge && (console.warn("startAuthentication() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information."), e = { optionsJSON: e });
2843
3045
  let { optionsJSON: t, useBrowserAutofill: n = !1, verifyBrowserAutofillInput: r = !0 } = e;
2844
- if (!Oi()) throw Error("WebAuthn is not supported in this browser");
3046
+ if (!da()) throw Error("WebAuthn is not supported in this browser");
2845
3047
  let i;
2846
- t.allowCredentials?.length !== 0 && (i = t.allowCredentials?.map(Ai));
3048
+ t.allowCredentials?.length !== 0 && (i = t.allowCredentials?.map(pa));
2847
3049
  let a = {
2848
3050
  ...t,
2849
- challenge: Di(t.challenge),
3051
+ challenge: ua(t.challenge),
2850
3052
  allowCredentials: i
2851
3053
  }, o = {};
2852
3054
  if (n) {
2853
- if (!await Ri()) throw Error("Browser does not support WebAuthn autofill");
3055
+ if (!await xa()) throw Error("Browser does not support WebAuthn autofill");
2854
3056
  if (document.querySelectorAll("input[autocomplete$='webauthn']").length < 1 && r) throw Error("No <input> with \"webauthn\" as the only or last value in its `autocomplete` attribute was detected");
2855
3057
  o.mediation = "conditional", a.allowCredentials = [];
2856
3058
  }
2857
- o.publicKey = a, o.signal = Ni.createNewAbortSignal();
3059
+ o.publicKey = a, o.signal = ga.createNewAbortSignal();
2858
3060
  let s;
2859
3061
  try {
2860
3062
  s = await navigator.credentials.get(o);
2861
3063
  } catch (e) {
2862
- throw Bi({
3064
+ throw Ca({
2863
3065
  error: e,
2864
3066
  options: o
2865
3067
  });
2866
3068
  }
2867
3069
  if (!s) throw Error("Authentication was not completed");
2868
3070
  let { id: c, rawId: l, response: u, type: d } = s, f;
2869
- return u.userHandle && (f = Z(u.userHandle)), {
3071
+ return u.userHandle && (f = Q(u.userHandle)), {
2870
3072
  id: c,
2871
- rawId: Z(l),
3073
+ rawId: Q(l),
2872
3074
  response: {
2873
- authenticatorData: Z(u.authenticatorData),
2874
- clientDataJSON: Z(u.clientDataJSON),
2875
- signature: Z(u.signature),
3075
+ authenticatorData: Q(u.authenticatorData),
3076
+ clientDataJSON: Q(u.clientDataJSON),
3077
+ signature: Q(u.signature),
2876
3078
  userHandle: f
2877
3079
  },
2878
3080
  type: d,
2879
3081
  clientExtensionResults: s.getClientExtensionResults(),
2880
- authenticatorAttachment: Fi(s.authenticatorAttachment)
3082
+ authenticatorAttachment: va(s.authenticatorAttachment)
2881
3083
  };
2882
3084
  }
2883
3085
  //#endregion
2884
3086
  //#region src/auth/auth-context.tsx
2885
- var Hi = "/dev-login-token", Ui = "X-Ikon-Dev-Login-Run";
2886
- async function Wi(e) {
3087
+ var Ta = "/dev-login-token", Ea = "X-Ikon-Dev-Login-Run";
3088
+ async function Da(e) {
2887
3089
  let t = typeof window < "u" ? window.__IKON_LOCAL_IKON_SERVER_CONFIG__ : void 0;
2888
3090
  if (!(!t?.enabled || !t.host || !t.port)) try {
2889
- let n = await fetch(`https://${t.host}:${t.port}${Hi}`, {
3091
+ let n = await fetch(`https://${t.host}:${t.port}${Ta}`, {
2890
3092
  cache: "no-store",
2891
- headers: { [Ui]: e }
3093
+ headers: { [Ea]: e }
2892
3094
  });
2893
3095
  return n.ok && (await n.json()).token || void 0;
2894
3096
  } catch {
2895
3097
  return;
2896
3098
  }
2897
3099
  }
2898
- var Gi = Ye(null), Ki = 12e4, qi = 6e4;
2899
- function Ji({ children: e, config: t }) {
2900
- let [n, r] = R({
3100
+ var Oa = Ze(null), ka = 12e4, Aa = 6e4;
3101
+ function ja({ children: e, config: t }) {
3102
+ let [n, r] = I({
2901
3103
  isAuthenticated: !1,
2902
3104
  isLoading: !0,
2903
3105
  user: null,
2904
3106
  error: null
2905
- }), i = t.methods.includes("email"), a = De() !== null, o = !t.requireSignIn || t.methods.includes("guest") || t.methods.includes("global") || a, c = L(!1), l = L(!1), u = P(async (e) => {
3107
+ }), i = t.methods.includes("email"), a = ke() !== null, o = !t.requireSignIn || t.methods.includes("guest") || t.methods.includes("global") || a, c = F(!1), l = F(!1), u = M(async (e) => {
2906
3108
  if (!l.current) {
2907
3109
  l.current = !0;
2908
3110
  try {
2909
- let t = await di(e);
3111
+ let t = await Ji(e);
2910
3112
  if (t === null) {
2911
- qr(), r({
3113
+ Ai(), r({
2912
3114
  isAuthenticated: !1,
2913
3115
  isLoading: !1,
2914
3116
  user: null,
@@ -2916,10 +3118,10 @@ function Ji({ children: e, config: t }) {
2916
3118
  });
2917
3119
  return;
2918
3120
  }
2919
- Kr(), r({
3121
+ ki(), r({
2920
3122
  isAuthenticated: !0,
2921
3123
  isLoading: !1,
2922
- user: J(t),
3124
+ user: Y(t),
2923
3125
  error: null
2924
3126
  });
2925
3127
  } catch {} finally {
@@ -2927,31 +3129,31 @@ function Ji({ children: e, config: t }) {
2927
3129
  }
2928
3130
  }
2929
3131
  }, []);
2930
- F(() => {
3132
+ N(() => {
2931
3133
  (() => {
2932
3134
  if (c.current) return;
2933
- let e = t.devLoginRunId, n = !!e && Qr() === e && !Ur();
2934
- e && !pi() && Zr(e);
2935
- let s = !!t.devLoginToken && !!e && !n && !pi();
2936
- o || Jr();
2937
- let l = fi();
3135
+ let e = t.devLoginRunId, n = !!e && Fi() === e && !Ei();
3136
+ e && !Xi() && Pi(e);
3137
+ let s = !!t.devLoginToken && !!e && !n && !Xi();
3138
+ o || ji();
3139
+ let l = Yi();
2938
3140
  if (l) {
2939
- gi(), r({
3141
+ $i(), r({
2940
3142
  isAuthenticated: !1,
2941
3143
  isLoading: !1,
2942
3144
  user: null,
2943
- error: hi(l.code, l.provider, { emailSignInAvailable: i })
3145
+ error: Qi(l.code, l.provider, { emailSignInAvailable: i })
2944
3146
  });
2945
3147
  return;
2946
3148
  }
2947
- le();
2948
- let u = li();
3149
+ ue();
3150
+ let u = Ki();
2949
3151
  if (u) {
2950
- c.current = !0, gi(), ui(u.code, u.provider, t.authUrl).then((e) => {
3152
+ c.current = !0, $i(), qi(u.code, u.provider, t.authUrl).then((e) => {
2951
3153
  r({
2952
3154
  isAuthenticated: !0,
2953
3155
  isLoading: !1,
2954
- user: J(e),
3156
+ user: Y(e),
2955
3157
  error: null
2956
3158
  });
2957
3159
  }).catch((e) => {
@@ -2964,26 +3166,26 @@ function Ji({ children: e, config: t }) {
2964
3166
  });
2965
3167
  return;
2966
3168
  }
2967
- let d = ci();
3169
+ let d = Gi();
2968
3170
  if (d) {
2969
3171
  let e = {
2970
3172
  token: d.token,
2971
3173
  provider: d.provider,
2972
3174
  authenticatedAt: Date.now()
2973
3175
  };
2974
- q(e), gi(), r({
3176
+ J(e), $i(), r({
2975
3177
  isAuthenticated: !0,
2976
3178
  isLoading: !1,
2977
- user: J(e),
3179
+ user: Y(e),
2978
3180
  error: null
2979
3181
  });
2980
3182
  return;
2981
3183
  }
2982
- let f = Gr();
3184
+ let f = Oi();
2983
3185
  if (f) {
2984
- c.current = !0, di(f).then((e) => {
3186
+ c.current = !0, Ji(f).then((e) => {
2985
3187
  if (e === null) {
2986
- qr(), r({
3188
+ Ai(), r({
2987
3189
  isAuthenticated: !1,
2988
3190
  isLoading: !1,
2989
3191
  user: null,
@@ -2991,10 +3193,10 @@ function Ji({ children: e, config: t }) {
2991
3193
  });
2992
3194
  return;
2993
3195
  }
2994
- Kr(), r({
3196
+ ki(), r({
2995
3197
  isAuthenticated: !0,
2996
3198
  isLoading: !1,
2997
- user: J(e),
3199
+ user: Y(e),
2998
3200
  error: null
2999
3201
  });
3000
3202
  }).catch(() => {
@@ -3007,12 +3209,12 @@ function Ji({ children: e, config: t }) {
3007
3209
  });
3008
3210
  return;
3009
3211
  }
3010
- let p = Hr();
3212
+ let p = Ti();
3011
3213
  if (p && !(s && p.provider === "anonymous")) {
3012
3214
  r({
3013
3215
  isAuthenticated: !0,
3014
3216
  isLoading: !1,
3015
- user: J(p),
3217
+ user: Y(p),
3016
3218
  error: null
3017
3219
  });
3018
3220
  return;
@@ -3023,21 +3225,21 @@ function Ji({ children: e, config: t }) {
3023
3225
  token: e,
3024
3226
  provider: "dev",
3025
3227
  authenticatedAt: Date.now(),
3026
- expiresAt: Vr(e)
3228
+ expiresAt: wi(e)
3027
3229
  };
3028
- q(t), r({
3230
+ J(t), r({
3029
3231
  isAuthenticated: !0,
3030
3232
  isLoading: !1,
3031
- user: J(t),
3233
+ user: Y(t),
3032
3234
  error: null
3033
3235
  });
3034
3236
  };
3035
- if (!Br(t.devLoginToken)) {
3237
+ if (!Ci(t.devLoginToken)) {
3036
3238
  n(t.devLoginToken);
3037
3239
  return;
3038
3240
  }
3039
- Wi(e).then((e) => {
3040
- if (e && !Br(e)) {
3241
+ Da(e).then((e) => {
3242
+ if (e && !Ci(e)) {
3041
3243
  n(e);
3042
3244
  return;
3043
3245
  }
@@ -3052,10 +3254,10 @@ function Ji({ children: e, config: t }) {
3052
3254
  }
3053
3255
  if (a && t.spaceId) {
3054
3256
  let e = t.spaceId;
3055
- A(t.authUrl).then((t) => ai(e, t, "guest")).then((e) => r({
3257
+ O(t.authUrl).then((t) => Hi(e, t, "guest")).then((e) => r({
3056
3258
  isAuthenticated: !0,
3057
3259
  isLoading: !1,
3058
- user: J(e),
3260
+ user: Y(e),
3059
3261
  error: null
3060
3262
  })).catch((e) => r({
3061
3263
  isAuthenticated: !1,
@@ -3080,13 +3282,13 @@ function Ji({ children: e, config: t }) {
3080
3282
  i,
3081
3283
  o,
3082
3284
  a
3083
- ]), F(() => {
3084
- if (t.spaceId) return Pe(t.spaceId, (e) => {
3085
- c.current = !0, e.codeVerifier && Be(e.codeVerifier), ui(e.code, e.provider, t.authUrl).then((e) => {
3285
+ ]), N(() => {
3286
+ if (t.spaceId) return Ie(t.spaceId, (e) => {
3287
+ c.current = !0, e.codeVerifier && He(e.codeVerifier), qi(e.code, e.provider, t.authUrl).then((e) => {
3086
3288
  r({
3087
3289
  isAuthenticated: !0,
3088
3290
  isLoading: !1,
3089
- user: J(e),
3291
+ user: Y(e),
3090
3292
  error: null
3091
3293
  });
3092
3294
  }).catch((e) => {
@@ -3098,12 +3300,12 @@ function Ji({ children: e, config: t }) {
3098
3300
  });
3099
3301
  });
3100
3302
  });
3101
- }, [t.spaceId, t.authUrl]), F(() => {
3303
+ }, [t.spaceId, t.authUrl]), N(() => {
3102
3304
  let e = n.user?.expiresAt;
3103
3305
  if (!e || n.user?.provider === "dev") return;
3104
- let t = Gr();
3306
+ let t = Oi();
3105
3307
  if (!t) return;
3106
- let r = Date.parse(e) - Ki, i = setTimeout(() => void u(t), Math.max(0, r - Date.now())), a = () => {
3308
+ let r = Date.parse(e) - ka, i = setTimeout(() => void u(t), Math.max(0, r - Date.now())), a = () => {
3107
3309
  document.visibilityState === "visible" && Date.now() >= r && u(t);
3108
3310
  };
3109
3311
  return document.addEventListener("visibilitychange", a), () => {
@@ -3113,31 +3315,31 @@ function Ji({ children: e, config: t }) {
3113
3315
  n.user?.expiresAt,
3114
3316
  n.user?.provider,
3115
3317
  u
3116
- ]), F(() => {
3318
+ ]), N(() => {
3117
3319
  if (n.user?.provider !== "dev") return;
3118
3320
  let e = t.devLoginRunId;
3119
3321
  if (!e) return;
3120
3322
  let i = n.user.expiresAt;
3121
3323
  if (!i) return;
3122
- let a = n.user.token, o = Date.parse(i) - Ki, s, c = !1, l = !1, u = async () => {
3324
+ let a = n.user.token, o = Date.parse(i) - ka, s, c = !1, l = !1, u = async () => {
3123
3325
  if (c || l) return;
3124
3326
  l = !0;
3125
- let t = await Wi(e);
3327
+ let t = await Da(e);
3126
3328
  if (l = !1, c) return;
3127
- if (!t || t === a || Br(t)) {
3128
- s = setTimeout(() => void u(), qi);
3329
+ if (!t || t === a || Ci(t)) {
3330
+ s = setTimeout(() => void u(), Aa);
3129
3331
  return;
3130
3332
  }
3131
3333
  let n = {
3132
3334
  token: t,
3133
3335
  provider: "dev",
3134
3336
  authenticatedAt: Date.now(),
3135
- expiresAt: Vr(t)
3337
+ expiresAt: wi(t)
3136
3338
  };
3137
- q(n), r({
3339
+ J(n), r({
3138
3340
  isAuthenticated: !0,
3139
3341
  isLoading: !1,
3140
- user: J(n),
3342
+ user: Y(n),
3141
3343
  error: null
3142
3344
  });
3143
3345
  };
@@ -3154,7 +3356,7 @@ function Ji({ children: e, config: t }) {
3154
3356
  n.user?.expiresAt,
3155
3357
  n.user?.token
3156
3358
  ]);
3157
- let d = P(async (e) => {
3359
+ let d = M(async (e) => {
3158
3360
  if (!t.spaceId) {
3159
3361
  r((e) => ({
3160
3362
  ...e,
@@ -3164,7 +3366,7 @@ function Ji({ children: e, config: t }) {
3164
3366
  }
3165
3367
  let n;
3166
3368
  try {
3167
- n = await A(t.authUrl);
3369
+ n = await O(t.authUrl);
3168
3370
  } catch (e) {
3169
3371
  r((t) => ({
3170
3372
  ...t,
@@ -3179,11 +3381,11 @@ function Ji({ children: e, config: t }) {
3179
3381
  isLoading: !0
3180
3382
  }));
3181
3383
  try {
3182
- let i = await ai(t.spaceId, n, e);
3384
+ let i = await Hi(t.spaceId, n, e);
3183
3385
  r({
3184
3386
  isAuthenticated: !0,
3185
3387
  isLoading: !1,
3186
- user: J(i),
3388
+ user: Y(i),
3187
3389
  error: null
3188
3390
  });
3189
3391
  } catch (e) {
@@ -3202,11 +3404,11 @@ function Ji({ children: e, config: t }) {
3202
3404
  error: null
3203
3405
  }));
3204
3406
  try {
3205
- let e = await Vi({ optionsJSON: await wi(n) }), t = await Ti(n, e);
3407
+ let e = await wa({ optionsJSON: await sa(n) }), t = await ca(n, e);
3206
3408
  r({
3207
3409
  isAuthenticated: !0,
3208
3410
  isLoading: !1,
3209
- user: J(t),
3411
+ user: Y(t),
3210
3412
  error: null
3211
3413
  });
3212
3414
  } catch (e) {
@@ -3219,16 +3421,16 @@ function Ji({ children: e, config: t }) {
3219
3421
  return;
3220
3422
  }
3221
3423
  if (e === "email") throw Error("login('email') is not supported. Use requestEmailCode()/submitEmailCode() from useAuth() instead.");
3222
- if (Me()) {
3223
- await Ue(e, t.spaceId) || r((e) => ({
3424
+ if (Pe()) {
3425
+ await Ge(e, t.spaceId) || r((e) => ({
3224
3426
  ...e,
3225
3427
  isLoading: !1,
3226
3428
  error: "The sign-in window did not complete. Allow pop-ups for this site and try again."
3227
3429
  }));
3228
3430
  return;
3229
3431
  }
3230
- window.location.href = await _i(e, t.spaceId, n);
3231
- }, [t.authUrl, t.spaceId]), f = P(async (e, n = {}) => {
3432
+ window.location.href = await ea(e, t.spaceId, n);
3433
+ }, [t.authUrl, t.spaceId]), f = M(async (e, n = {}) => {
3232
3434
  if (!t.spaceId) {
3233
3435
  r((e) => ({
3234
3436
  ...e,
@@ -3236,7 +3438,7 @@ function Ji({ children: e, config: t }) {
3236
3438
  }));
3237
3439
  return;
3238
3440
  }
3239
- if (Me()) {
3441
+ if (Pe()) {
3240
3442
  r((e) => ({
3241
3443
  ...e,
3242
3444
  isLoading: !1,
@@ -3245,7 +3447,7 @@ function Ji({ children: e, config: t }) {
3245
3447
  return;
3246
3448
  }
3247
3449
  try {
3248
- let i = await A(t.authUrl), a = await vi(e, t.spaceId, i, { linkSessionToken: n.linkSessionToken });
3450
+ let i = await O(t.authUrl), a = await ta(e, t.spaceId, i, { linkSessionToken: n.linkSessionToken });
3249
3451
  if (!a) {
3250
3452
  r((e) => ({
3251
3453
  ...e,
@@ -3262,33 +3464,33 @@ function Ji({ children: e, config: t }) {
3262
3464
  error: e instanceof Error ? e.message : "Organisation sign-in failed"
3263
3465
  }));
3264
3466
  }
3265
- }, [t.authUrl, t.spaceId]), p = P(async (e) => {
3467
+ }, [t.authUrl, t.spaceId]), p = M(async (e) => {
3266
3468
  if (!t.spaceId) throw r((e) => ({
3267
3469
  ...e,
3268
3470
  error: "Space ID is not configured"
3269
3471
  })), Error("Space ID is not configured");
3270
- let n = await A(t.authUrl);
3271
- await oi({
3472
+ let n = await O(t.authUrl);
3473
+ await Ui({
3272
3474
  email: e,
3273
3475
  spaceId: t.spaceId,
3274
3476
  authUrl: n
3275
3477
  });
3276
- }, [t.authUrl, t.spaceId]), m = P(async (e, n) => {
3478
+ }, [t.authUrl, t.spaceId]), m = M(async (e, n) => {
3277
3479
  r((e) => ({
3278
3480
  ...e,
3279
3481
  isLoading: !0,
3280
3482
  error: null
3281
3483
  }));
3282
3484
  try {
3283
- let i = await si({
3485
+ let i = await Wi({
3284
3486
  email: e,
3285
3487
  code: n,
3286
- authUrl: await A(t.authUrl)
3488
+ authUrl: await O(t.authUrl)
3287
3489
  });
3288
3490
  r({
3289
3491
  isAuthenticated: !0,
3290
3492
  isLoading: !1,
3291
- user: J(i),
3493
+ user: Y(i),
3292
3494
  error: null
3293
3495
  });
3294
3496
  } catch (e) {
@@ -3299,27 +3501,27 @@ function Ji({ children: e, config: t }) {
3299
3501
  error: t
3300
3502
  })), e;
3301
3503
  }
3302
- }, [t.authUrl]), h = P(() => {
3504
+ }, [t.authUrl]), h = M(() => {
3303
3505
  let e = n.user?.token;
3304
- e && Ei(e, t.authUrl), Xr(), qr(), s.clearAll(), r({
3506
+ e && la(e, t.authUrl), Ni(), Ai(), s.clearAll(), r({
3305
3507
  isAuthenticated: !1,
3306
3508
  isLoading: !1,
3307
3509
  user: null,
3308
3510
  error: null
3309
3511
  });
3310
- }, [n.user?.token, t.authUrl]), g = P(async (e) => {
3311
- let n = await A(t.authUrl);
3512
+ }, [n.user?.token, t.authUrl]), g = M(async (e) => {
3513
+ let n = await O(t.authUrl);
3312
3514
  r((e) => ({
3313
3515
  ...e,
3314
3516
  isLoading: !0,
3315
3517
  error: null
3316
3518
  }));
3317
3519
  try {
3318
- let t = await Ci(n, await Ii({ optionsJSON: await Si(n) }), e);
3520
+ let t = await oa(n, await ya({ optionsJSON: await aa(n) }), e);
3319
3521
  r({
3320
3522
  isAuthenticated: !0,
3321
3523
  isLoading: !1,
3322
- user: J(t),
3524
+ user: Y(t),
3323
3525
  error: null
3324
3526
  });
3325
3527
  } catch (e) {
@@ -3329,7 +3531,7 @@ function Ji({ children: e, config: t }) {
3329
3531
  error: e instanceof Error ? e.message : "Passkey registration failed"
3330
3532
  }));
3331
3533
  }
3332
- }, [t.authUrl]), _ = P(() => n.user?.token ?? null, [n.user]), v = I(() => ({
3534
+ }, [t.authUrl]), _ = M(() => n.user?.token ?? null, [n.user]), v = P(() => ({
3333
3535
  state: n,
3334
3536
  login: d,
3335
3537
  loginWithSso: f,
@@ -3348,38 +3550,38 @@ function Ji({ children: e, config: t }) {
3348
3550
  p,
3349
3551
  m
3350
3552
  ]);
3351
- return /* @__PURE__ */ z(Gi, {
3553
+ return /* @__PURE__ */ L(Oa, {
3352
3554
  value: v,
3353
3555
  children: e
3354
3556
  });
3355
3557
  }
3356
- function Yi() {
3357
- let e = Ze(Gi);
3558
+ function Ma() {
3559
+ let e = $e(Oa);
3358
3560
  if (!e) throw Error("useAuth must be used within an AuthProvider");
3359
3561
  return e;
3360
3562
  }
3361
- function Xi() {
3362
- return Ze(Gi);
3563
+ function Na() {
3564
+ return $e(Oa);
3363
3565
  }
3364
3566
  //#endregion
3365
3567
  //#region src/auth/oauth-continuation.ts
3366
- var Zi = "ikon-oauth", Qi = "ikon-oauth-continue", $i = "ikon-oauth-continue-attempts", ea = 5, ta = 6e5;
3367
- function na() {
3568
+ var Pa = "ikon-oauth", Fa = "ikon-oauth-continue", Ia = "ikon-oauth-continue-attempts", La = 5, Ra = 6e5;
3569
+ function za() {
3368
3570
  if (typeof window > "u") return !1;
3369
- let e = new URL(window.location.href).searchParams.get(Zi);
3370
- return e ? (ua(e), !0) : la() !== null;
3571
+ let e = new URL(window.location.href).searchParams.get(Pa);
3572
+ return e ? (qa(e), !0) : Ka() !== null;
3371
3573
  }
3372
- function ra() {
3373
- return ia() !== null;
3574
+ function Ba() {
3575
+ return Va() !== null;
3374
3576
  }
3375
- function ia() {
3376
- return typeof window > "u" ? null : new URL(window.location.href).searchParams.get("ikon-oauth") ?? la();
3577
+ function Va() {
3578
+ return typeof window > "u" ? null : new URL(window.location.href).searchParams.get("ikon-oauth") ?? Ka();
3377
3579
  }
3378
- var aa = "You are not allowed to connect an application to this app with this account.";
3379
- async function oa(e) {
3380
- let t = ia();
3580
+ var Ha = "You are not allowed to connect an application to this app with this account.";
3581
+ async function Ua(e) {
3582
+ let t = Va();
3381
3583
  if (!t) return { status: "pending" };
3382
- if (!e) return ca() < ea ? (console.warn("[ikon] Waiting for the signed-in session before continuing the authorization that sent you here."), { status: "pending" }) : (da(), console.warn("[ikon] Gave up continuing the authorization that sent you here: no signed-in session became readable. Start the connection again from the application."), { status: "pending" });
3584
+ if (!e) return Ga() < La ? (console.warn("[ikon] Waiting for the signed-in session before continuing the authorization that sent you here."), { status: "pending" }) : (Ja(), console.warn("[ikon] Gave up continuing the authorization that sent you here: no signed-in session became readable. Start the connection again from the application."), { status: "pending" });
3383
3585
  try {
3384
3586
  let n = await fetch("/ikon/oauth/continue", {
3385
3587
  method: "POST",
@@ -3390,8 +3592,8 @@ async function oa(e) {
3390
3592
  body: JSON.stringify({ continueId: t })
3391
3593
  });
3392
3594
  if (!n.ok) {
3393
- if (da(), n.status === 403) {
3394
- let e = await sa(n);
3595
+ if (Ja(), n.status === 403) {
3596
+ let e = await Wa(n);
3395
3597
  return console.warn(`[ikon] The authorization that sent you here was refused: ${e}`), {
3396
3598
  status: "refused",
3397
3599
  message: e
@@ -3400,72 +3602,72 @@ async function oa(e) {
3400
3602
  return console.warn(`[ikon] Could not continue the authorization that sent you here (${n.status}). Start the connection again from the application.`), { status: "pending" };
3401
3603
  }
3402
3604
  let { consentUrl: r } = await n.json();
3403
- return r ? (da(), window.location.href = r, { status: "handed-off" }) : (da(), console.warn("[ikon] The authorization that sent you here returned no consent step. Start the connection again from the application."), { status: "pending" });
3605
+ return r ? (Ja(), window.location.href = r, { status: "handed-off" }) : (Ja(), console.warn("[ikon] The authorization that sent you here returned no consent step. Start the connection again from the application."), { status: "pending" });
3404
3606
  } catch {
3405
3607
  return { status: "pending" };
3406
3608
  }
3407
3609
  }
3408
- async function sa(e) {
3610
+ async function Wa(e) {
3409
3611
  try {
3410
3612
  let t = await e.json(), n = Array.isArray(t?.message) ? t.message.join(", ") : t?.message;
3411
- return typeof n == "string" && n.trim().length > 0 ? n : aa;
3613
+ return typeof n == "string" && n.trim().length > 0 ? n : Ha;
3412
3614
  } catch {
3413
- return aa;
3615
+ return Ha;
3414
3616
  }
3415
3617
  }
3416
- function ca() {
3618
+ function Ga() {
3417
3619
  try {
3418
- let e = Number(sessionStorage.getItem($i) ?? "0") + 1;
3419
- return sessionStorage.setItem($i, String(e)), e;
3620
+ let e = Number(sessionStorage.getItem(Ia) ?? "0") + 1;
3621
+ return sessionStorage.setItem(Ia, String(e)), e;
3420
3622
  } catch {
3421
- return ea;
3623
+ return La;
3422
3624
  }
3423
3625
  }
3424
- function la() {
3626
+ function Ka() {
3425
3627
  try {
3426
- let e = sessionStorage.getItem(Qi);
3628
+ let e = sessionStorage.getItem(Fa);
3427
3629
  if (!e) return null;
3428
3630
  let { id: t, at: n } = JSON.parse(e);
3429
- return !t || typeof n != "number" || Date.now() - n > ta ? (da(), null) : t;
3631
+ return !t || typeof n != "number" || Date.now() - n > Ra ? (Ja(), null) : t;
3430
3632
  } catch {
3431
- return da(), null;
3633
+ return Ja(), null;
3432
3634
  }
3433
3635
  }
3434
- function ua(e) {
3636
+ function qa(e) {
3435
3637
  try {
3436
- sessionStorage.setItem(Qi, JSON.stringify({
3638
+ sessionStorage.setItem(Fa, JSON.stringify({
3437
3639
  id: e,
3438
3640
  at: Date.now()
3439
3641
  }));
3440
3642
  } catch {}
3441
3643
  }
3442
- function da() {
3644
+ function Ja() {
3443
3645
  try {
3444
- sessionStorage.removeItem(Qi), sessionStorage.removeItem($i);
3646
+ sessionStorage.removeItem(Fa), sessionStorage.removeItem(Ia);
3445
3647
  } catch {}
3446
3648
  try {
3447
3649
  let e = new URL(window.location.href);
3448
- e.searchParams.has("ikon-oauth") && (e.searchParams.delete(Zi), window.history.replaceState(null, "", e.toString()));
3650
+ e.searchParams.has("ikon-oauth") && (e.searchParams.delete(Pa), window.history.replaceState(null, "", e.toString()));
3449
3651
  } catch {}
3450
3652
  }
3451
3653
  //#endregion
3452
3654
  //#region src/auth/use-auth-guard.ts
3453
- function fa(e) {
3454
- let { config: t, guestUrlParam: n } = e, { state: r, login: i, getToken: a } = Yi(), o = L(!1), s = L(!1), c = L(null), l = et(We, Ce, Ce), u = l.required;
3455
- F(() => {
3456
- na() && He("An application is asking to act as you. Sign in to review what it wants.");
3457
- }, []), F(() => {
3655
+ function Ya(e) {
3656
+ let { config: t, guestUrlParam: n } = e, { state: r, login: i, getToken: a } = Ma(), o = F(!1), s = F(!1), c = F(null), l = nt(Ke, Te, Te), u = l.required;
3657
+ N(() => {
3658
+ za() && We("An application is asking to act as you. Sign in to review what it wants.");
3659
+ }, []), N(() => {
3458
3660
  if (!(!u || !r.isAuthenticated || !r.user || r.user.provider === "anonymous")) {
3459
- if (!ra()) {
3460
- c.current || pe();
3661
+ if (!Ba()) {
3662
+ c.current || he();
3461
3663
  return;
3462
3664
  }
3463
- s.current || (s.current = !0, oa(a()).then((e) => {
3665
+ s.current || (s.current = !0, Ua(a()).then((e) => {
3464
3666
  if (e.status === "refused") {
3465
- c.current = e.message, He(e.message);
3667
+ c.current = e.message, We(e.message);
3466
3668
  return;
3467
3669
  }
3468
- (e.status === "handed-off" || !ra()) && pe();
3670
+ (e.status === "handed-off" || !Ba()) && he();
3469
3671
  }).finally(() => {
3470
3672
  s.current = !1;
3471
3673
  }));
@@ -3475,12 +3677,12 @@ function fa(e) {
3475
3677
  r.isAuthenticated,
3476
3678
  r.user,
3477
3679
  a
3478
- ]), F(() => {
3680
+ ]), N(() => {
3479
3681
  if (!n || r.isAuthenticated || r.isLoading || o.current) return;
3480
3682
  let e = t.methods.includes("global") ? "global" : t.methods.includes("guest") ? "guest" : null;
3481
3683
  if (!e) return;
3482
3684
  let a = new URLSearchParams(window.location.search), s = a.get(n);
3483
- if (s === "true" || s === "1" || s === "" || pi()) {
3685
+ if (s === "true" || s === "1" || s === "" || Xi()) {
3484
3686
  a.delete(n);
3485
3687
  let t = a.toString(), r = window.location.pathname + (t ? `?${t}` : "");
3486
3688
  window.history.replaceState({}, "", r), o.current = !0, i(e);
@@ -3499,32 +3701,32 @@ function fa(e) {
3499
3701
  isAuthenticated: r.isAuthenticated,
3500
3702
  error: r.error,
3501
3703
  isLoginPrompt: u && !p,
3502
- dismissLoginPrompt: pe,
3704
+ dismissLoginPrompt: he,
3503
3705
  loginPromptReason: u ? l.reason : null
3504
3706
  };
3505
3707
  }
3506
3708
  //#endregion
3507
3709
  //#region src/auth/use-sso-sign-in.ts
3508
- function pa(e) {
3509
- let { loginWithSso: t } = Yi(), n = e.methods.includes("sso"), [r, i] = R([]), [a, o] = R(!1), [s, c] = R(null);
3510
- F(() => {
3710
+ function Xa(e) {
3711
+ let { loginWithSso: t } = Ma(), n = e.methods.includes("sso"), [r, i] = I([]), [a, o] = I(!1), [s, c] = I(null);
3712
+ N(() => {
3511
3713
  if (!n || typeof window > "u") return;
3512
3714
  let t = !1;
3513
- return A(e.authUrl).then((e) => yi(e, window.location.host)).then((e) => {
3715
+ return O(e.authUrl).then((e) => na(e, window.location.host)).then((e) => {
3514
3716
  t || i(e);
3515
3717
  }).catch(() => void 0), () => {
3516
3718
  t = !0;
3517
3719
  };
3518
3720
  }, [n, e.authUrl]);
3519
- let l = P((e) => t(e), [t]);
3721
+ let l = M((e) => t(e), [t]);
3520
3722
  return {
3521
3723
  hostConnections: r,
3522
3724
  isDiscovering: a,
3523
3725
  discoverError: s,
3524
- discover: P(async (n) => {
3726
+ discover: M(async (n) => {
3525
3727
  c(null), o(!0);
3526
3728
  try {
3527
- let r = await bi(await A(e.authUrl), e.spaceId, n.trim());
3729
+ let r = await ra(await O(e.authUrl), e.spaceId, n.trim());
3528
3730
  if (!r) {
3529
3731
  c("There is no organisation sign-in for this address. Choose another way to sign in.");
3530
3732
  return;
@@ -3545,17 +3747,17 @@ function pa(e) {
3545
3747
  }
3546
3748
  //#endregion
3547
3749
  //#region src/debug/debug-overlay.tsx
3548
- var ma = (() => {
3750
+ var Za = (() => {
3549
3751
  try {
3550
- return be();
3752
+ return Se();
3551
3753
  } catch {
3552
3754
  return !1;
3553
3755
  }
3554
- })(), ha = Date.now(), $ = [], ga = 300;
3555
- function _a(e) {
3556
- $.push(`[+${((Date.now() - ha) / 1e3).toFixed(1)}s] ${e}`), $.length > ga && $.shift();
3756
+ })(), Qa = Date.now(), $a = [], eo = 300;
3757
+ function to(e) {
3758
+ $a.push(`[+${((Date.now() - Qa) / 1e3).toFixed(1)}s] ${e}`), $a.length > eo && $a.shift();
3557
3759
  }
3558
- function va(e) {
3760
+ function no(e) {
3559
3761
  if (typeof e == "string") return e;
3560
3762
  if (e instanceof Error) return `${e.name}: ${e.message}`;
3561
3763
  try {
@@ -3564,10 +3766,10 @@ function va(e) {
3564
3766
  return String(e);
3565
3767
  }
3566
3768
  }
3567
- var ya = !1;
3568
- function ba() {
3569
- if (ya || typeof window > "u") return;
3570
- ya = !0, window.addEventListener("error", (e) => _a(`window.error: ${e.message} @ ${e.filename ?? "?"}:${e.lineno ?? "?"}:${e.colno ?? "?"}`)), window.addEventListener("unhandledrejection", (e) => _a(`unhandledRejection: ${va(e.reason)}`));
3769
+ var ro = !1;
3770
+ function io() {
3771
+ if (ro || typeof window > "u") return;
3772
+ ro = !0, window.addEventListener("error", (e) => to(`window.error: ${e.message} @ ${e.filename ?? "?"}:${e.lineno ?? "?"}:${e.colno ?? "?"}`)), window.addEventListener("unhandledrejection", (e) => to(`unhandledRejection: ${no(e.reason)}`));
3571
3773
  let e = console;
3572
3774
  for (let t of [
3573
3775
  "error",
@@ -3578,17 +3780,17 @@ function ba() {
3578
3780
  let n = e[t]?.bind(console) ?? (() => void 0);
3579
3781
  e[t] = (...e) => {
3580
3782
  try {
3581
- _a(`console.${t}: ${e.map(va).join(" ")}`);
3783
+ to(`console.${t}: ${e.map(no).join(" ")}`);
3582
3784
  } catch {}
3583
3785
  n(...e);
3584
3786
  };
3585
3787
  }
3586
3788
  try {
3587
- Ge((e) => _a(`${e.levelName} [${e.component}] ${e.message}`), { minLevel: ne.DEBUG });
3789
+ qe((e) => to(`${e.levelName} [${e.component}] ${e.message}`), { minLevel: re.DEBUG });
3588
3790
  } catch {}
3589
3791
  }
3590
- ma && ba();
3591
- function xa() {
3792
+ Za && io();
3793
+ function ao() {
3592
3794
  let e = !1;
3593
3795
  try {
3594
3796
  let t = URL.createObjectURL(new Blob([""]));
@@ -3598,11 +3800,11 @@ function xa() {
3598
3800
  } catch {}
3599
3801
  return e;
3600
3802
  }
3601
- function Sa() {
3803
+ function oo() {
3602
3804
  let e = globalThis;
3603
3805
  return [
3604
3806
  `Worker=${typeof Worker < "u"}`,
3605
- `moduleWorker=${xa()}`,
3807
+ `moduleWorker=${ao()}`,
3606
3808
  `WebSocket=${typeof WebSocket < "u"}`,
3607
3809
  `WebTransport=${e.WebTransport !== void 0}`,
3608
3810
  `RTCPeerConnection=${typeof RTCPeerConnection < "u"}`,
@@ -3615,17 +3817,17 @@ function Sa() {
3615
3817
  `online=${typeof navigator < "u" ? navigator.onLine : "?"}`
3616
3818
  ].join(" ");
3617
3819
  }
3618
- function Ca(e) {
3820
+ function so(e) {
3619
3821
  return /ERROR|error:|Rejection/.test(e) ? "#f88" : /WARN|warn:/.test(e) ? "#fc6" : "#9d9";
3620
3822
  }
3621
- function wa({ state: e = "", forceVisible: t = !1 }) {
3622
- let n = ma || t, r = e === "connected" || e === "reconnecting", [, i] = $e((e) => e + 1, 0), [a, o] = R(!0);
3623
- return F(() => {
3823
+ function co({ state: e = "", forceVisible: t = !1 }) {
3824
+ let n = Za || t, r = e === "connected" || e === "reconnecting", [, i] = tt((e) => e + 1, 0), [a, o] = I(!0);
3825
+ return N(() => {
3624
3826
  if (!n) return;
3625
- ba();
3827
+ io();
3626
3828
  let e = setInterval(i, 1e3);
3627
3829
  return () => clearInterval(e);
3628
- }, [n]), n ? r && a ? /* @__PURE__ */ B("button", {
3830
+ }, [n]), n ? r && a ? /* @__PURE__ */ R("button", {
3629
3831
  type: "button",
3630
3832
  onClick: () => o(!1),
3631
3833
  style: {
@@ -3642,10 +3844,10 @@ function wa({ state: e = "", forceVisible: t = !1 }) {
3642
3844
  },
3643
3845
  children: [
3644
3846
  "🐞 debug (",
3645
- $.length,
3847
+ $a.length,
3646
3848
  ")"
3647
3849
  ]
3648
- }) : /* @__PURE__ */ B("div", {
3850
+ }) : /* @__PURE__ */ R("div", {
3649
3851
  style: {
3650
3852
  ...r ? {
3651
3853
  position: "fixed",
@@ -3666,7 +3868,7 @@ function wa({ state: e = "", forceVisible: t = !1 }) {
3666
3868
  zIndex: 2147483647
3667
3869
  },
3668
3870
  children: [
3669
- /* @__PURE__ */ B("div", {
3871
+ /* @__PURE__ */ R("div", {
3670
3872
  style: {
3671
3873
  color: "#fff",
3672
3874
  fontSize: "18px",
@@ -3676,11 +3878,11 @@ function wa({ state: e = "", forceVisible: t = !1 }) {
3676
3878
  "Ikon debug overlay — state: ",
3677
3879
  e || "?",
3678
3880
  ", +",
3679
- Math.round((Date.now() - ha) / 1e3),
3881
+ Math.round((Date.now() - Qa) / 1e3),
3680
3882
  "s, ",
3681
- $.length,
3883
+ $a.length,
3682
3884
  " entries",
3683
- r && /* @__PURE__ */ z("button", {
3885
+ r && /* @__PURE__ */ L("button", {
3684
3886
  type: "button",
3685
3887
  onClick: () => o(!0),
3686
3888
  style: {
@@ -3696,7 +3898,7 @@ function wa({ state: e = "", forceVisible: t = !1 }) {
3696
3898
  })
3697
3899
  ]
3698
3900
  }),
3699
- /* @__PURE__ */ z("div", {
3901
+ /* @__PURE__ */ L("div", {
3700
3902
  style: {
3701
3903
  color: "#9cf",
3702
3904
  wordBreak: "break-all",
@@ -3704,7 +3906,7 @@ function wa({ state: e = "", forceVisible: t = !1 }) {
3704
3906
  },
3705
3907
  children: typeof window < "u" ? window.location.href : ""
3706
3908
  }),
3707
- /* @__PURE__ */ z("div", {
3909
+ /* @__PURE__ */ L("div", {
3708
3910
  style: {
3709
3911
  color: "#ff0",
3710
3912
  wordBreak: "break-all",
@@ -3712,23 +3914,23 @@ function wa({ state: e = "", forceVisible: t = !1 }) {
3712
3914
  },
3713
3915
  children: typeof navigator < "u" ? navigator.userAgent : "no navigator"
3714
3916
  }),
3715
- /* @__PURE__ */ z("div", {
3917
+ /* @__PURE__ */ L("div", {
3716
3918
  style: {
3717
3919
  color: "#8cf",
3718
3920
  marginBottom: "4px"
3719
3921
  },
3720
- children: Sa()
3922
+ children: oo()
3721
3923
  }),
3722
- /* @__PURE__ */ z("div", {
3924
+ /* @__PURE__ */ L("div", {
3723
3925
  style: {
3724
3926
  color: "#8cf",
3725
3927
  marginBottom: "10px"
3726
3928
  },
3727
3929
  children: typeof window < "u" ? `viewport=${window.innerWidth}x${window.innerHeight} dpr=${window.devicePixelRatio}` : ""
3728
3930
  }),
3729
- /* @__PURE__ */ z("div", { children: $.length === 0 ? "(nothing captured yet)" : $.map((e, t) => /* @__PURE__ */ z("div", {
3931
+ /* @__PURE__ */ L("div", { children: $a.length === 0 ? "(nothing captured yet)" : $a.map((e, t) => /* @__PURE__ */ L("div", {
3730
3932
  style: {
3731
- color: Ca(e),
3933
+ color: so(e),
3732
3934
  wordBreak: "break-all"
3733
3935
  },
3734
3936
  children: e
@@ -3738,8 +3940,8 @@ function wa({ state: e = "", forceVisible: t = !1 }) {
3738
3940
  }
3739
3941
  //#endregion
3740
3942
  //#region src/app/connection-state-renderer.tsx
3741
- function Ta({ connectionState: e, error: t, isReady: n, isConnectingSlow: r, stores: i, registry: a, client: o, onAction: s, renderIdle: c, renderConnecting: l, renderConnectingSlow: u, renderConnected: d, renderOffline: f, renderError: p }) {
3742
- let m = L(!1), h = (() => {
3943
+ function lo({ connectionState: e, error: t, isReady: n, isConnectingSlow: r, stores: i, registry: a, client: o, onAction: s, renderIdle: c, renderConnecting: l, renderConnectingSlow: u, renderConnected: d, renderOffline: f, renderError: p }) {
3944
+ let m = F(!1), h = (() => {
3743
3945
  switch (e) {
3744
3946
  case "waitingForExternalConnectUrl":
3745
3947
  case "connecting": return r ? u() : l();
@@ -3764,286 +3966,286 @@ function Ta({ connectionState: e, error: t, isReady: n, isConnectingSlow: r, sto
3764
3966
  default: return null;
3765
3967
  }
3766
3968
  })();
3767
- return /* @__PURE__ */ B(tt, { children: [h, /* @__PURE__ */ z(wa, { state: e })] });
3969
+ return /* @__PURE__ */ R(rt, { children: [h, /* @__PURE__ */ L(co, { state: e })] });
3768
3970
  }
3769
3971
  //#endregion
3770
3972
  //#region src/app/boot-snapshot-variant.ts
3771
- function Ea(e, t) {
3973
+ function uo(e, t) {
3772
3974
  return e === !1 ? !1 : t ? "signed-in" : "guest";
3773
3975
  }
3774
3976
  //#endregion
3775
3977
  //#region src/app/use-ikon-app.ts
3776
- var Da = k("useIkonApp");
3777
- function Oa() {
3978
+ var fo = D("useIkonApp");
3979
+ function po() {
3778
3980
  if (typeof window < "u" && window.__IKON_AUTH_CONFIG__) return window.__IKON_AUTH_CONFIG__;
3779
3981
  }
3780
- function ka() {
3982
+ function mo() {
3781
3983
  if (typeof window < "u" && window.__IKON_LOCAL_IKON_SERVER_CONFIG__) return window.__IKON_LOCAL_IKON_SERVER_CONFIG__;
3782
3984
  }
3783
- function Aa(e, t) {
3985
+ function ho(e, t) {
3784
3986
  return {
3785
3987
  ...e,
3786
3988
  ...t ?? {}
3787
3989
  };
3788
3990
  }
3789
- var ja = "ikon-sso-required-redirect:", Ma = 3e5;
3790
- function Na(e, t = Date.now()) {
3991
+ var go = "ikon-sso-required-redirect:", _o = 3e5;
3992
+ function vo(e, t = Date.now()) {
3791
3993
  try {
3792
- let n = `${ja}${e}`;
3793
- return t - Number(window.sessionStorage.getItem(n) ?? 0) < Ma ? !1 : (window.sessionStorage.setItem(n, String(t)), !0);
3994
+ let n = `${go}${e}`;
3995
+ return t - Number(window.sessionStorage.getItem(n) ?? 0) < _o ? !1 : (window.sessionStorage.setItem(n, String(t)), !0);
3794
3996
  } catch {
3795
3997
  return !1;
3796
3998
  }
3797
3999
  }
3798
- function Pa() {
4000
+ function yo() {
3799
4001
  try {
3800
4002
  let e = [];
3801
4003
  for (let t = 0; t < window.sessionStorage.length; t++) {
3802
4004
  let n = window.sessionStorage.key(t);
3803
- n?.startsWith(ja) && e.push(n);
4005
+ n?.startsWith(go) && e.push(n);
3804
4006
  }
3805
4007
  for (let t of e) window.sessionStorage.removeItem(t);
3806
4008
  } catch {}
3807
4009
  }
3808
- function Fa(e) {
3809
- return e?.token ? `${e.provider}:${ve(e.token) ?? e.token}` : null;
4010
+ function bo(e) {
4011
+ return e?.token ? `${e.provider}:${be(e.token) ?? e.token}` : null;
3810
4012
  }
3811
- function Ia(e) {
3812
- let { authConfig: t, modules: n, parameters: r, timeouts: i, backgroundAudio: a, disableBrowserFunctions: o, disableSoundFunctions: c, webRtc: l, audio: f, video: ee, websocket: y, webtransport: b, httpstream: x, proxy: S, liveSnapshot: C, bootSnapshot: w } = e, T = t === void 0 ? Oa() ?? null : t, ne = ka(), E = Xi(), ce = !!E && E.state.isLoading, D = L(null), le = L(null), O = L(null), ue = L(!1), de = L(!1), fe = L(a), pe = L(o), me = L(c), k = L(i), he = L(l), _e = L(f), ye = L(ee), be = L(y), xe = L(b), Se = L(x), Ce = L(S), we = L(C), Te = L(w), Ee = L("local"), De = L(void 0);
3813
- fe.current = a, pe.current = o, me.current = c, k.current = i, he.current = l, _e.current = f, ye.current = ee, be.current = y, xe.current = b, Se.current = x, Ce.current = S, we.current = C, Te.current = w;
3814
- let [j, Oe] = R("connecting"), [Ae, je] = R(!1), [Ne, Pe] = R(!1), [Ie, Le] = R(null), [ze, Be] = R(null), [Ve, He] = R(null), [Ue, We] = R(!1), [Ge, Ke] = R(!1), [qe, Je] = R(!1), [Ye, Xe] = R(null), [M, N] = R(null), [Ze, Qe] = R(!1), $e = L(!1), [et, tt] = R(0), [z, B] = R(0), rt = I(() => {
4013
+ function xo(e) {
4014
+ let { authConfig: t, modules: n, parameters: r, timeouts: i, backgroundAudio: a, disableBrowserFunctions: o, disableSoundFunctions: c, webRtc: l, audio: f, video: ee, websocket: y, webtransport: b, httpstream: x, proxy: te, liveSnapshot: S, bootSnapshot: C } = e, w = t === void 0 ? po() ?? null : t, re = mo(), T = Na(), le = !!T && T.state.isLoading, E = F(null), ue = F(null), de = F(null), fe = F(!1), pe = F(!1), me = F(a), he = F(o), ge = F(c), D = F(i), _e = F(l), ye = F(f), xe = F(ee), Se = F(y), Ce = F(b), we = F(x), Te = F(te), Ee = F(S), De = F(C), Oe = F("local"), ke = F(void 0);
4015
+ me.current = a, he.current = o, ge.current = c, D.current = i, _e.current = l, ye.current = f, xe.current = ee, Se.current = y, Ce.current = b, we.current = x, Te.current = te, Ee.current = S, De.current = C;
4016
+ let [k, Ae] = I("connecting"), [Me, Ne] = I(!1), [Fe, Ie] = I(!1), [Re, ze] = I(null), [Ve, He] = I(null), [Ue, We] = I(null), [Ge, Ke] = I(!1), [qe, Je] = I(!1), [Ye, Xe] = I(!1), [Ze, Qe] = I(null), [A, j] = I(null), [$e, et] = I(!1), tt = F(!1), [nt, rt] = I(0), [L, R] = I(0), z = P(() => {
3815
4017
  try {
3816
- return Fe();
4018
+ return Le();
3817
4019
  } catch {
3818
4020
  return { parameters: {} };
3819
4021
  }
3820
- }, []), V = JSON.stringify(r ?? {}), H = I(() => Aa(rt.parameters, r), [rt.parameters, V]), it = (T?.methods?.length ?? 0) > 0, at = Ea(w, it && Yr());
3821
- at !== !1 && !u() && d(at);
3822
- let U = I(() => {
3823
- if (!T?.spaceId) return null;
3824
- let e = E?.state.user;
4022
+ }, []), at = JSON.stringify(r ?? {}), ot = P(() => ho(z.parameters, r), [z.parameters, at]), st = (w?.methods?.length ?? 0) > 0, ct = uo(C, st && Mi());
4023
+ ct !== !1 && !u() && d(ct);
4024
+ let B = P(() => {
4025
+ if (!w?.spaceId) return null;
4026
+ let e = T?.state.user;
3825
4027
  return e ? {
3826
4028
  token: e.token,
3827
4029
  provider: e.provider,
3828
4030
  authenticatedAt: e.authenticatedAt
3829
- } : Hr();
4031
+ } : Ti();
3830
4032
  }, [
3831
- T?.spaceId,
3832
- et,
3833
- E?.state.isLoading,
3834
- E?.state.isAuthenticated,
3835
- E?.state.user?.token
3836
- ]), ot = ne?.enabled ?? !1, st = ne?.host ?? g, ct = ne?.port ?? _, lt = !ce && !!T && !U && !T.requireSignIn && !!T.spaceId && (ke() || ot);
3837
- lt && !M && !Ze && !$e.current && ($e.current = !0, A(T.authUrl).then((e) => ai(T.spaceId, e)).then((e) => {
3838
- N(e.token), Qe(!0);
4033
+ w?.spaceId,
4034
+ nt,
4035
+ T?.state.isLoading,
4036
+ T?.state.isAuthenticated,
4037
+ T?.state.user?.token
4038
+ ]), V = re?.enabled ?? !1, H = re?.host ?? g, lt = re?.port ?? _, U = !le && !!w && !B && !w.requireSignIn && !!w.spaceId && (je() || V);
4039
+ U && !A && !$e && !tt.current && (tt.current = !0, O(w.authUrl).then((e) => Hi(w.spaceId, e)).then((e) => {
4040
+ j(e.token), et(!0);
3839
4041
  }).catch((e) => {
3840
- Da.error("Anonymous auth failed:", e), $e.current = !1, ot ? Qe(!0) : Be(e instanceof Error ? e.message : "Anonymous auth failed");
4042
+ fo.error("Anonymous auth failed:", e), tt.current = !1, V ? et(!0) : He(e instanceof Error ? e.message : "Anonymous auth failed");
3841
4043
  }));
3842
- let ut = Fa(U), W = L(void 0);
3843
- W.current = U?.token ?? void 0;
3844
- let dt = I(() => {
3845
- if (ce) return null;
3846
- if (ot) {
3847
- if (lt && !Ze) return null;
3848
- let e = W.current ?? M ?? void 0, t = e ? ve(e) ?? void 0 : void 0;
4044
+ let ut = bo(B), W = F(void 0);
4045
+ W.current = B?.token ?? void 0;
4046
+ let dt = P(() => {
4047
+ if (le) return null;
4048
+ if (V) {
4049
+ if (U && !$e) return null;
4050
+ let e = W.current ?? A ?? void 0, t = e ? be(e) ?? void 0 : void 0;
3849
4051
  return { local: {
3850
- host: st,
3851
- httpsPort: ct,
4052
+ host: H,
4053
+ httpsPort: lt,
3852
4054
  userId: t,
3853
4055
  token: W.current,
3854
4056
  identityToken: e,
3855
- spaceId: T?.spaceId,
3856
- backendUrl: T?.backendUrl,
3857
- authUrl: T?.authUrl,
3858
- parameters: H
4057
+ spaceId: w?.spaceId,
4058
+ backendUrl: w?.backendUrl,
4059
+ authUrl: w?.authUrl,
4060
+ parameters: ot
3859
4061
  } };
3860
4062
  }
3861
- return W.current && T?.spaceId ? { sessionToken: {
4063
+ return W.current && w?.spaceId ? { sessionToken: {
3862
4064
  token: W.current,
3863
- spaceId: T.spaceId,
3864
- backendType: ge(),
3865
- sessionIdentityHash: rt.sessionIdentityHash,
3866
- parameters: H
3867
- } } : M && T?.spaceId ? { sessionToken: {
3868
- token: M,
3869
- spaceId: T.spaceId,
3870
- backendType: ge(),
3871
- sessionIdentityHash: rt.sessionIdentityHash,
3872
- parameters: H
3873
- } } : ke() ? null : { local: {
3874
- host: st,
3875
- httpsPort: ct,
3876
- spaceId: T?.spaceId,
3877
- backendUrl: T?.backendUrl,
3878
- authUrl: T?.authUrl,
3879
- parameters: H
4065
+ spaceId: w.spaceId,
4066
+ backendType: ve(),
4067
+ sessionIdentityHash: z.sessionIdentityHash,
4068
+ parameters: ot
4069
+ } } : A && w?.spaceId ? { sessionToken: {
4070
+ token: A,
4071
+ spaceId: w.spaceId,
4072
+ backendType: ve(),
4073
+ sessionIdentityHash: z.sessionIdentityHash,
4074
+ parameters: ot
4075
+ } } : je() ? null : { local: {
4076
+ host: H,
4077
+ httpsPort: lt,
4078
+ spaceId: w?.spaceId,
4079
+ backendUrl: w?.backendUrl,
4080
+ authUrl: w?.authUrl,
4081
+ parameters: ot
3880
4082
  } };
3881
4083
  }, [
3882
- ce,
3883
- ot,
3884
- st,
3885
- ct,
3886
- ut,
3887
- T?.spaceId,
3888
- T?.backendUrl,
3889
- T?.authUrl,
3890
- M,
4084
+ le,
4085
+ V,
4086
+ H,
3891
4087
  lt,
3892
- Ze,
3893
- rt.sessionIdentityHash,
3894
- H
4088
+ ut,
4089
+ w?.spaceId,
4090
+ w?.backendUrl,
4091
+ w?.authUrl,
4092
+ A,
4093
+ U,
4094
+ $e,
4095
+ z.sessionIdentityHash,
4096
+ ot
3895
4097
  ]);
3896
- Ee.current = T?.spaceId ?? "local", De.current = U?.token ?? M ?? void 0, Vn(Ye);
3897
- let ft = Un(Ye);
3898
- F(() => {
3899
- if (!ue.current) {
3900
- if (ue.current = !0, O.current = nn(), n) for (let e of n) e(O.current);
3901
- O.current.loadRegisteredModules().catch((e) => {
3902
- Da.error("Failed to load UI modules", e);
4098
+ Oe.current = w?.spaceId ?? "local", ke.current = B?.token ?? A ?? void 0, gr(Ze);
4099
+ let ft = vr(Ze);
4100
+ N(() => {
4101
+ if (!fe.current) {
4102
+ if (fe.current = !0, de.current = Mn(), n) for (let e of n) e(de.current);
4103
+ de.current.loadRegisteredModules().catch((e) => {
4104
+ fo.error("Failed to load UI modules", e);
3903
4105
  });
3904
4106
  }
3905
- }, []), F(() => {
4107
+ }, []), N(() => {
3906
4108
  if (!dt) return;
3907
- let e = new te({
4109
+ let e = new ne({
3908
4110
  ...dt,
3909
- timeouts: k.current,
3910
- disableBrowserFunctions: pe.current,
3911
- disableSoundFunctions: me.current,
3912
- audio: _e.current !== void 0 || fe.current ? {
3913
- enabled: _e.current,
3914
- ...fe.current ? { background: {
4111
+ timeouts: D.current,
4112
+ disableBrowserFunctions: he.current,
4113
+ disableSoundFunctions: ge.current,
4114
+ audio: ye.current !== void 0 || me.current ? {
4115
+ enabled: ye.current,
4116
+ ...me.current ? { background: {
3915
4117
  allowOnDesktop: !0,
3916
4118
  allowOnMobile: !0
3917
4119
  } } : {}
3918
4120
  } : void 0,
3919
- video: ye.current === void 0 ? void 0 : { enabled: ye.current },
4121
+ video: xe.current === void 0 ? void 0 : { enabled: xe.current },
3920
4122
  mediaSession: {
3921
4123
  title: document.title || void 0,
3922
4124
  artist: document.title || void 0
3923
4125
  },
3924
- webRtc: he.current === !1 ? { enabled: !1 } : void 0,
3925
- websocket: be.current,
3926
- webtransport: xe.current,
3927
- httpstream: Se.current,
3928
- proxy: Ce.current,
4126
+ webRtc: _e.current === !1 ? { enabled: !1 } : void 0,
4127
+ websocket: Se.current,
4128
+ webtransport: Ce.current,
4129
+ httpstream: we.current,
4130
+ proxy: Te.current,
3929
4131
  onConnectionStateChange: (e) => {
3930
- Oe(e);
4132
+ Ae(e);
3931
4133
  },
3932
4134
  onError: (e) => {
3933
- Be(e.message);
4135
+ He(e.message);
3934
4136
  }
3935
4137
  });
3936
- D.current = e;
3937
- let t = we.current ?? !0, n = De.current, r = n ? ve(n) ?? null : null, i = t && r ? {
4138
+ E.current = e;
4139
+ let t = Ee.current ?? !0, n = ke.current, r = n ? be(n) ?? null : null, i = t && r ? {
3938
4140
  enabled: !0,
3939
- appId: Ee.current,
4141
+ appId: Oe.current,
3940
4142
  userId: r
3941
- } : void 0, a = U != null && U.provider !== "anonymous", o = it && (a || Yr()), c = new nt({
4143
+ } : void 0, a = B != null && B.provider !== "anonymous", o = st && (a || Mi()), c = new it({
3942
4144
  client: e,
3943
4145
  liveSnapshot: i,
3944
- bootSnapshot: Ea(Te.current, o)
4146
+ bootSnapshot: uo(De.current, o)
3945
4147
  });
3946
- le.current = c, Xe(c), Pe(!1), Le(e.feedback);
3947
- let l = e.subscribeToFeedback(Le), u = c.subscribeToUiUpdates(() => {
3948
- Pe(!0), Re();
4148
+ ue.current = c, Qe(c), Ie(!1), ze(e.feedback);
4149
+ let l = e.subscribeToFeedback(ze), u = c.subscribeToUiUpdates(() => {
4150
+ Ie(!0), Be();
3949
4151
  });
3950
- return e.connect().then(Pa, (e) => {
3951
- if (Da.error("Connection failed:", e), e instanceof se && T?.spaceId && !Me() && Na(e.connectionId)) {
3952
- let t = T.spaceId, n = W.current;
3953
- A(T.authUrl).then(async (r) => {
3954
- let i = await vi(e.connectionId, t, r, { linkSessionToken: n ?? void 0 });
4152
+ return e.connect().then(yo, (e) => {
4153
+ if (fo.error("Connection failed:", e), e instanceof ce && w?.spaceId && !Pe() && vo(e.connectionId)) {
4154
+ let t = w.spaceId, n = W.current;
4155
+ O(w.authUrl).then(async (r) => {
4156
+ let i = await ta(e.connectionId, t, r, { linkSessionToken: n ?? void 0 });
3955
4157
  if (!i) {
3956
- He(e.reason);
4158
+ We(e.reason);
3957
4159
  return;
3958
4160
  }
3959
4161
  window.location.href = i;
3960
- }).catch(() => He(e.reason));
4162
+ }).catch(() => We(e.reason));
3961
4163
  return;
3962
4164
  }
3963
4165
  if (e instanceof p) {
3964
- He(e.reason);
4166
+ We(e.reason);
3965
4167
  return;
3966
4168
  }
3967
- if (e instanceof ie) {
3968
- We(!0);
4169
+ if (e instanceof ae) {
4170
+ Ke(!0);
3969
4171
  return;
3970
4172
  }
3971
- if (e instanceof oe) {
3972
- Ke(!0);
4173
+ if (e instanceof se) {
4174
+ Je(!0);
3973
4175
  return;
3974
4176
  }
3975
- if (!(e instanceof ae)) {
4177
+ if (!(e instanceof oe)) {
3976
4178
  if (e instanceof m) {
3977
- Je(!0);
4179
+ Xe(!0);
3978
4180
  return;
3979
4181
  }
3980
- e instanceof re || e instanceof h && !de.current && (de.current = !0, Da.warn("Auth session appears stale, clearing and retrying"), s.clearAll(), E ? E.logout() : (Xr(), tt((e) => e + 1)));
4182
+ e instanceof ie || e instanceof h && !pe.current && (pe.current = !0, fo.warn("Auth session appears stale, clearing and retrying"), s.clearAll(), T ? T.logout() : (Ni(), rt((e) => e + 1)));
3981
4183
  }
3982
4184
  }), () => {
3983
- u(), l(), e.disconnect(), D.current = null, c.dispose(), le.current = null;
4185
+ u(), l(), e.disconnect(), E.current = null, c.dispose(), ue.current = null;
3984
4186
  };
3985
- }, [dt, z]), F(() => {
3986
- let e = U?.token, t = D.current;
4187
+ }, [dt, L]), N(() => {
4188
+ let e = B?.token, t = E.current;
3987
4189
  if (!(!e || !t)) {
3988
4190
  if (t.connectionState === "offline" && !t.serverStopped) {
3989
- B((e) => e + 1);
4191
+ R((e) => e + 1);
3990
4192
  return;
3991
4193
  }
3992
4194
  t.updateAuthToken(e);
3993
4195
  }
3994
- }, [U?.token]);
3995
- let pt = P((e, t, n) => {
4196
+ }, [B?.token]);
4197
+ let pt = M((e, t, n) => {
3996
4198
  let r = typeof t == "string" ? t : JSON.stringify(t ?? {});
3997
- D.current?.sendActionCall(e, r, n);
4199
+ E.current?.sendActionCall(e, r, n);
3998
4200
  }, []);
3999
- F(() => {
4000
- if (j !== "connecting" && j !== "waitingForExternalConnectUrl") {
4001
- je(!1);
4201
+ N(() => {
4202
+ if (k !== "connecting" && k !== "waitingForExternalConnectUrl") {
4203
+ Ne(!1);
4002
4204
  return;
4003
4205
  }
4004
- let e = D.current?.slowConnectionThresholdMs ?? v, t = setTimeout(() => je(!0), e);
4206
+ let e = E.current?.slowConnectionThresholdMs ?? v, t = setTimeout(() => Ne(!0), e);
4005
4207
  return () => clearTimeout(t);
4006
- }, [j]);
4007
- let mt = j === "connected" || j === "reconnecting", ht = Ne && j !== "offline";
4008
- return F(() => {
4208
+ }, [k]);
4209
+ let mt = k === "connected" || k === "reconnecting", ht = Fe && k !== "offline";
4210
+ return N(() => {
4009
4211
  typeof document > "u" || (document.documentElement.dataset.ikonLive = String(ht));
4010
4212
  }, [ht]), {
4011
- connectionState: j,
4012
- error: ze,
4013
- accessDeniedReason: Ve,
4014
- isServerFull: Ue,
4015
- isSessionExpired: Ge,
4016
- isStartupFailed: qe,
4213
+ connectionState: k,
4214
+ error: Ve,
4215
+ accessDeniedReason: Ue,
4216
+ isServerFull: Ge,
4217
+ isSessionExpired: qe,
4218
+ isStartupFailed: Ye,
4017
4219
  stores: ft,
4018
- client: D.current,
4019
- registry: O.current,
4020
- clientRef: D,
4021
- uiRef: le,
4022
- registryRef: O,
4220
+ client: E.current,
4221
+ registry: de.current,
4222
+ clientRef: E,
4223
+ uiRef: ue,
4224
+ registryRef: de,
4023
4225
  onAction: pt,
4024
4226
  isReady: mt,
4025
4227
  isLive: ht,
4026
- brandingRequired: D.current?.brandingRequired ?? !1,
4027
- feedback: Ie,
4028
- isConnectingSlow: Ae,
4029
- webRtcVideoStreams: D.current?.webRtcVideoStreams ?? /* @__PURE__ */ new Map(),
4030
- webRtcTrackMap: D.current?.webRtcTrackMap ?? /* @__PURE__ */ new Map()
4228
+ brandingRequired: E.current?.brandingRequired ?? !1,
4229
+ feedback: Re,
4230
+ isConnectingSlow: Me,
4231
+ webRtcVideoStreams: E.current?.webRtcVideoStreams ?? /* @__PURE__ */ new Map(),
4232
+ webRtcTrackMap: E.current?.webRtcTrackMap ?? /* @__PURE__ */ new Map()
4031
4233
  };
4032
4234
  }
4033
4235
  //#endregion
4034
4236
  //#region src/hooks/use-toasts.ts
4035
- var La = 0;
4036
- function Ra(e = 5, t = 5e3) {
4037
- let [n, r] = R([]), i = L(/* @__PURE__ */ new Map()), a = P((e) => {
4237
+ var So = 0;
4238
+ function Co(e = 5, t = 5e3) {
4239
+ let [n, r] = I([]), i = F(/* @__PURE__ */ new Map()), a = M((e) => {
4038
4240
  let t = i.current.get(e);
4039
4241
  t && (clearTimeout(t), i.current.delete(e)), r((t) => t.filter((t) => t.id !== e));
4040
4242
  }, []);
4041
- return F(() => {
4042
- let n = i.current, o = Ge((i) => {
4043
- if (!je()) return;
4044
- let o = `toast-${++La}`, s = {
4243
+ return N(() => {
4244
+ let n = i.current, o = qe((i) => {
4245
+ if (!Ne()) return;
4246
+ let o = `toast-${++So}`, s = {
4045
4247
  id: o,
4046
- level: i.level === ne.ERROR ? "error" : "warn",
4248
+ level: i.level === re.ERROR ? "error" : "warn",
4047
4249
  message: i.message,
4048
4250
  component: i.component
4049
4251
  };
@@ -4052,7 +4254,7 @@ function Ra(e = 5, t = 5e3) {
4052
4254
  a(o);
4053
4255
  }, t);
4054
4256
  n.set(o, c);
4055
- }, { minLevel: ne.WARN });
4257
+ }, { minLevel: re.WARN });
4056
4258
  return () => {
4057
4259
  o();
4058
4260
  for (let e of n.values()) clearTimeout(e);
@@ -4069,9 +4271,9 @@ function Ra(e = 5, t = 5e3) {
4069
4271
  }
4070
4272
  //#endregion
4071
4273
  //#region src/hooks/use-ikon-reactive.ts
4072
- function za(e, t, n) {
4073
- let [r, i] = R(n);
4074
- return F(() => {
4274
+ function wo(e, t, n) {
4275
+ let [r, i] = I(n);
4276
+ return N(() => {
4075
4277
  if (!e) return;
4076
4278
  let n = !0, r = null;
4077
4279
  return e.reactiveRegistry.subscribe(t, (e) => {
@@ -4087,9 +4289,9 @@ function za(e, t, n) {
4087
4289
  }
4088
4290
  //#endregion
4089
4291
  //#region src/hooks/use-reactive.ts
4090
- function Ba(e, t, n) {
4091
- let [r, i] = R(null);
4092
- return F(() => {
4292
+ function To(e, t, n) {
4293
+ let [r, i] = I(null);
4294
+ return N(() => {
4093
4295
  if (!e) return;
4094
4296
  let n = !0;
4095
4297
  return e.call("Ikon.Reactive.GetStableIdByName", [t]).then((e) => {
@@ -4099,56 +4301,56 @@ function Ba(e, t, n) {
4099
4301
  }), () => {
4100
4302
  n = !1;
4101
4303
  };
4102
- }, [e, t]), za(r ? e : null, r ?? "", n);
4304
+ }, [e, t]), wo(r ? e : null, r ?? "", n);
4103
4305
  }
4104
4306
  //#endregion
4105
4307
  //#region src/app/use-ikon-debug.ts
4106
- var Va = k("IkonDebug"), Ha = {
4308
+ var Eo = D("IkonDebug"), Do = {
4107
4309
  Digit1: "connecting",
4108
4310
  Digit2: "connected",
4109
4311
  Digit3: "reconnecting",
4110
4312
  Digit4: "offline",
4111
4313
  Digit5: "offline",
4112
4314
  Digit0: "clear"
4113
- }, Ua = "Digit5", Wa = "Digit6", Ga = "Synthetic debug error (Ctrl+Shift+5)", Ka = "Synthetic debug access-denied (Ctrl+Shift+6)", qa = 5e3;
4114
- function Ja(e) {
4115
- let t = je(), [n, r] = R(null), [i, a] = R(!1), [o, s] = R(null), [c, l] = R(null), [u, d] = R(!1), [f, p] = R(!1), [m, h] = R(!1);
4116
- return F(() => {
4315
+ }, Oo = "Digit5", ko = "Digit6", Ao = "Synthetic debug error (Ctrl+Shift+5)", jo = "Synthetic debug access-denied (Ctrl+Shift+6)", Mo = 5e3;
4316
+ function No(e) {
4317
+ let t = Ne(), [n, r] = I(null), [i, a] = I(!1), [o, s] = I(null), [c, l] = I(null), [u, d] = I(!1), [f, p] = I(!1), [m, h] = I(!1);
4318
+ return N(() => {
4117
4319
  if (!t) return;
4118
4320
  let e = (e) => {
4119
4321
  if (!e.ctrlKey || !e.shiftKey) return;
4120
4322
  if (e.code === "KeyE") {
4121
- e.preventDefault(), d((e) => (Va.warn(`Empty-stores override: ${e ? "off" : "on"}`), !e));
4323
+ e.preventDefault(), d((e) => (Eo.warn(`Empty-stores override: ${e ? "off" : "on"}`), !e));
4122
4324
  return;
4123
4325
  }
4124
4326
  if (e.code === "Digit7") {
4125
- e.preventDefault(), p((e) => (Va.warn(`Branding-banner override: ${e ? "off" : "on"}`), !e));
4327
+ e.preventDefault(), p((e) => (Eo.warn(`Branding-banner override: ${e ? "off" : "on"}`), !e));
4126
4328
  return;
4127
4329
  }
4128
4330
  if (e.code === "Digit8") {
4129
- e.preventDefault(), h((e) => (Va.warn(`Debug-overlay override: ${e ? "off" : "on"}`), !e));
4331
+ e.preventDefault(), h((e) => (Eo.warn(`Debug-overlay override: ${e ? "off" : "on"}`), !e));
4130
4332
  return;
4131
4333
  }
4132
- if (e.code === Wa) {
4133
- e.preventDefault(), l(Ka), r(null), s(null), Va.warn("Forced access denied");
4334
+ if (e.code === ko) {
4335
+ e.preventDefault(), l(jo), r(null), s(null), Eo.warn("Forced access denied");
4134
4336
  return;
4135
4337
  }
4136
- let t = Ha[e.code];
4338
+ let t = Do[e.code];
4137
4339
  if (t === void 0) return;
4138
4340
  if (e.preventDefault(), t === "clear") {
4139
- r(null), s(null), l(null), Va.warn("Cleared forced state");
4341
+ r(null), s(null), l(null), Eo.warn("Cleared forced state");
4140
4342
  return;
4141
4343
  }
4142
- let n = e.code === Ua;
4143
- r(t), s(n ? Ga : null), l(null), Va.warn(`Forced state: ${t}${n ? " (with error)" : ""}`);
4344
+ let n = e.code === Oo;
4345
+ r(t), s(n ? Ao : null), l(null), Eo.warn(`Forced state: ${t}${n ? " (with error)" : ""}`);
4144
4346
  };
4145
4347
  return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
4146
- }, [t]), F(() => {
4348
+ }, [t]), N(() => {
4147
4349
  if (n !== "connecting") {
4148
4350
  a(!1);
4149
4351
  return;
4150
4352
  }
4151
- let e = setTimeout(() => a(!0), qa);
4353
+ let e = setTimeout(() => a(!0), Mo);
4152
4354
  return () => clearTimeout(e);
4153
4355
  }, [n]), !t || n === null && !u && c === null && !f && !m ? {
4154
4356
  app: e,
@@ -4179,112 +4381,112 @@ function Ja(e) {
4179
4381
  }
4180
4382
  //#endregion
4181
4383
  //#region src/app/feedback/feedback-controls.tsx
4182
- var Ya = k("FeedbackControls"), Xa = null;
4183
- function Za() {
4184
- return import("./feedback-form-BSy2olwD.js").then((e) => Xa = e);
4185
- }
4186
- var Qa = 4e3, $a = 1e4, eo = 16, to = 52, no = "ikon-feedback-control", ro = `.${no}:focus-visible{outline:2px solid var(--ikon-focus-ring,#f5277f);outline-offset:2px}`;
4187
- function io({ client: e, feedback: t, connectionState: n, isLive: r, sheetOpen: i, brandingShown: a }) {
4188
- let [o, s] = R(null), [c, l] = R(Xa), u = L(null), d = L(i), f = L(!1), p = L(!1), m = L(!1), h = L(null), g = L(!1);
4189
- p.current = o !== null, F(() => {
4384
+ var Po = D("FeedbackControls"), Fo = null;
4385
+ function Io() {
4386
+ return import("./feedback-form-BSy2olwD.js").then((e) => Fo = e);
4387
+ }
4388
+ var Lo = 4e3, Ro = 1e4, zo = 16, Bo = 52, Vo = "ikon-feedback-control", Ho = `.${Vo}:focus-visible{outline:2px solid var(--ikon-focus-ring,#f5277f);outline-offset:2px}`;
4389
+ function Uo({ client: e, feedback: t, connectionState: n, isLive: r, sheetOpen: i, brandingShown: a }) {
4390
+ let [o, s] = I(null), [c, l] = I(Fo), u = F(null), d = F(i), f = F(!1), p = F(!1), m = F(!1), h = F(null), g = F(!1);
4391
+ p.current = o !== null, N(() => {
4190
4392
  if (!o || c) return;
4191
4393
  let e = !1;
4192
- return Za().then((t) => {
4394
+ return Io().then((t) => {
4193
4395
  e || l(t);
4194
4396
  }).catch((e) => {
4195
- Ya.error("Loading the feedback form failed, feedback cannot be sent from this page:", e);
4397
+ Po.error("Loading the feedback form failed, feedback cannot be sent from this page:", e);
4196
4398
  }), () => {
4197
4399
  e = !0;
4198
4400
  };
4199
4401
  }, [o, c]);
4200
- let _ = P(() => {
4402
+ let _ = M(() => {
4201
4403
  u.current &&= (clearTimeout(u.current.timer), null);
4202
- }, []), v = P((e) => {
4404
+ }, []), v = M((e) => {
4203
4405
  _(), f.current = !1, s({ screenshot: e });
4204
4406
  }, [_]);
4205
- F(() => {
4407
+ N(() => {
4206
4408
  d.current = i, i && (_(), p.current && !f.current && s(null));
4207
- }, [i, _]), F(() => _, [_]);
4208
- let b = P(() => {
4409
+ }, [i, _]), N(() => _, [_]);
4410
+ let b = M(() => {
4209
4411
  if (u.current || p.current || d.current) return;
4210
- Za().catch((e) => {
4211
- Ya.debug("Preloading the feedback form failed:", e);
4412
+ Io().catch((e) => {
4413
+ Po.debug("Preloading the feedback form failed:", e);
4212
4414
  });
4213
- let t = de();
4415
+ let t = pe();
4214
4416
  if (t.catch((e) => {
4215
- Ya.warn("Capturing the view for a feedback report failed, the report goes without a screenshot:", e);
4417
+ Po.warn("Capturing the view for a feedback report failed, the report goes without a screenshot:", e);
4216
4418
  }), !e || e.connectionState !== "connected") {
4217
4419
  v(t);
4218
4420
  return;
4219
4421
  }
4220
4422
  let n = { timer: setTimeout(() => {
4221
- u.current === n && !d.current && (Ya.warn(`The feedback sheet did not open within ${Qa} ms, showing the built-in form`), v(t));
4222
- }, Qa) };
4423
+ u.current === n && !d.current && (Po.warn(`The feedback sheet did not open within ${Lo} ms, showing the built-in form`), v(t));
4424
+ }, Lo) };
4223
4425
  u.current = n, e.call(ee, [""]).then((e) => {
4224
- e !== !0 && u.current === n && (Ya.warn(`The app declined ${ee}, showing the built-in form`), v(t));
4426
+ e !== !0 && u.current === n && (Po.warn(`The app declined ${ee}, showing the built-in form`), v(t));
4225
4427
  }, (e) => {
4226
- u.current === n && (Ya.warn(`Calling ${ee} failed, showing the built-in form:`, e), v(t));
4428
+ u.current === n && (Po.warn(`Calling ${ee} failed, showing the built-in form:`, e), v(t));
4227
4429
  });
4228
4430
  }, [e, v]);
4229
- F(() => {
4230
- m.current || !t || !r || n !== "connected" || !xe() || (m.current = !0, fe(), b());
4431
+ N(() => {
4432
+ m.current || !t || !r || n !== "connected" || !Ce() || (m.current = !0, me(), b());
4231
4433
  }, [
4232
4434
  t,
4233
4435
  r,
4234
4436
  n,
4235
4437
  b
4236
4438
  ]);
4237
- let x = P(() => {
4439
+ let x = M(() => {
4238
4440
  g.current = !0, s(null);
4239
4441
  }, []);
4240
- F(() => {
4442
+ N(() => {
4241
4443
  o || !g.current || (g.current = !1, h.current?.focus());
4242
4444
  }, [o]);
4243
- let S = P((e) => {
4445
+ let te = M((e) => {
4244
4446
  f.current = e;
4245
4447
  }, []);
4246
- if (F(() => {
4448
+ if (N(() => {
4247
4449
  if (!(!e || !t)) return e.setFeedbackRequestHandler(b);
4248
4450
  }, [
4249
4451
  e,
4250
4452
  t,
4251
4453
  b
4252
4454
  ]), !t) return null;
4253
- let C = { [y]: "" }, w = `calc(${a ? to : eo}px + env(safe-area-inset-bottom, 0px))`, T = t.showButton && !i && !o;
4254
- return /* @__PURE__ */ B(tt, { children: [T && /* @__PURE__ */ B("div", {
4255
- ...C,
4455
+ let S = { [y]: "" }, C = `calc(${a ? Bo : zo}px + env(safe-area-inset-bottom, 0px))`, w = t.showButton && !i && !o;
4456
+ return /* @__PURE__ */ R(rt, { children: [w && /* @__PURE__ */ R("div", {
4457
+ ...S,
4256
4458
  "data-ikon-feedback-controls": "",
4257
4459
  style: {
4258
- ...so.dock,
4259
- bottom: w
4460
+ ...Ko.dock,
4461
+ bottom: C
4260
4462
  },
4261
- children: [/* @__PURE__ */ z("style", { children: ro }), /* @__PURE__ */ z(ao, {
4463
+ children: [/* @__PURE__ */ L("style", { children: Ho }), /* @__PURE__ */ L(Wo, {
4262
4464
  buttonRef: h,
4263
4465
  onPress: b
4264
4466
  })]
4265
- }), o && c && /* @__PURE__ */ z(c.FeedbackForm, {
4467
+ }), o && c && /* @__PURE__ */ L(c.FeedbackForm, {
4266
4468
  access: e?.backendAccess ?? null,
4267
4469
  screenshot: o.screenshot,
4268
4470
  appSession: e?.appSessionId,
4269
4471
  clientSession: e?.sessionId === void 0 ? void 0 : String(e.sessionId),
4270
4472
  onClose: x,
4271
- onDirtyChange: S
4473
+ onDirtyChange: te
4272
4474
  })] });
4273
4475
  }
4274
- function ao({ buttonRef: e, onPress: t }) {
4275
- return /* @__PURE__ */ z("button", {
4476
+ function Wo({ buttonRef: e, onPress: t }) {
4477
+ return /* @__PURE__ */ L("button", {
4276
4478
  ref: e,
4277
4479
  type: "button",
4278
- className: no,
4480
+ className: Vo,
4279
4481
  "aria-label": "Send feedback",
4280
4482
  title: "Send feedback",
4281
- style: so.feedbackButton,
4483
+ style: Ko.feedbackButton,
4282
4484
  onClick: t,
4283
- children: /* @__PURE__ */ z(oo, {})
4485
+ children: /* @__PURE__ */ L(Go, {})
4284
4486
  });
4285
4487
  }
4286
- function oo() {
4287
- return /* @__PURE__ */ B("svg", {
4488
+ function Go() {
4489
+ return /* @__PURE__ */ R("svg", {
4288
4490
  width: "22",
4289
4491
  height: "22",
4290
4492
  viewBox: "0 0 24 24",
@@ -4295,14 +4497,14 @@ function oo() {
4295
4497
  strokeLinejoin: "round",
4296
4498
  "aria-hidden": "true",
4297
4499
  focusable: "false",
4298
- children: [/* @__PURE__ */ z("path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" }), /* @__PURE__ */ z("path", { d: "M8 9h8M8 13h5" })]
4500
+ children: [/* @__PURE__ */ L("path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" }), /* @__PURE__ */ L("path", { d: "M8 9h8M8 13h5" })]
4299
4501
  });
4300
4502
  }
4301
- var so = {
4503
+ var Ko = {
4302
4504
  dock: {
4303
4505
  position: "fixed",
4304
4506
  right: "max(16px, env(safe-area-inset-right, 0px))",
4305
- zIndex: $a,
4507
+ zIndex: Ro,
4306
4508
  display: "flex",
4307
4509
  alignItems: "center",
4308
4510
  font: "14px/1.4 var(--ikon-font-body, system-ui, -apple-system, \"Segoe UI\", sans-serif)"
@@ -4324,31 +4526,31 @@ var so = {
4324
4526
  WebkitTouchCallout: "none",
4325
4527
  userSelect: "none"
4326
4528
  }
4327
- }, co = 9990, lo = "ikon-platform-layer", uo = `.${lo}>*{pointer-events:auto}`;
4328
- function fo(e) {
4529
+ }, qo = 9990, Jo = "ikon-platform-layer", Yo = `.${Jo}>*{pointer-events:auto}`;
4530
+ function Xo(e) {
4329
4531
  if (!e) return !1;
4330
- for (let t of e.values()) if (t.category === r && mo(t.store)?.children.some((e) => e.children.length > 0)) return !0;
4532
+ for (let t of e.values()) if (t.category === r && Qo(t.store)?.children.some((e) => e.children.length > 0)) return !0;
4331
4533
  return !1;
4332
4534
  }
4333
- function po(e) {
4334
- let [t, n] = R(() => fo(e));
4335
- return F(() => {
4336
- let t = () => n(fo(e));
4535
+ function Zo(e) {
4536
+ let [t, n] = I(() => Xo(e));
4537
+ return N(() => {
4538
+ let t = () => n(Xo(e));
4337
4539
  if (t(), !e) return;
4338
4540
  let i = [];
4339
- for (let n of e.values()) n.category === r && i.push(ho(n.store, t));
4541
+ for (let n of e.values()) n.category === r && i.push($o(n.store, t));
4340
4542
  return () => {
4341
4543
  for (let e of i) e();
4342
4544
  };
4343
4545
  }, [e]), t;
4344
4546
  }
4345
- function mo(e) {
4547
+ function Qo(e) {
4346
4548
  let t = e.getSnapshot();
4347
4549
  return t.rootViewId ? t.views.get(t.rootViewId) : void 0;
4348
4550
  }
4349
- function ho(e, t) {
4551
+ function $o(e, t) {
4350
4552
  let n = /* @__PURE__ */ new Map(), r = () => {
4351
- let t = mo(e), r = new Set(t ? [t.id, ...t.children.map((e) => e.id)] : []);
4553
+ let t = Qo(e), r = new Set(t ? [t.id, ...t.children.map((e) => e.id)] : []);
4352
4554
  for (let [e, t] of n) r.has(e) || (t(), n.delete(e));
4353
4555
  for (let t of r) n.has(t) || n.set(t, e.subscribeNode(t, i));
4354
4556
  };
@@ -4362,10 +4564,10 @@ function ho(e, t) {
4362
4564
  n.clear(), a();
4363
4565
  };
4364
4566
  }
4365
- function go({ stores: e, registry: t, client: n, onAction: i, open: a }) {
4366
- return /* @__PURE__ */ B("div", {
4567
+ function es({ stores: e, registry: t, client: n, onAction: i, open: a }) {
4568
+ return /* @__PURE__ */ R("div", {
4367
4569
  [y]: "",
4368
- className: lo,
4570
+ className: Jo,
4369
4571
  "data-ikon-platform-layer": "",
4370
4572
  style: {
4371
4573
  position: "fixed",
@@ -4373,11 +4575,11 @@ function go({ stores: e, registry: t, client: n, onAction: i, open: a }) {
4373
4575
  right: 0,
4374
4576
  bottom: 0,
4375
4577
  left: 0,
4376
- zIndex: co,
4578
+ zIndex: qo,
4377
4579
  pointerEvents: "none",
4378
4580
  display: a ? "block" : "none"
4379
4581
  },
4380
- children: [/* @__PURE__ */ z("style", { children: uo }), /* @__PURE__ */ z(An, {
4582
+ children: [/* @__PURE__ */ L("style", { children: Yo }), /* @__PURE__ */ L(ar, {
4381
4583
  stores: e,
4382
4584
  registry: t,
4383
4585
  client: n,
@@ -4389,89 +4591,89 @@ function go({ stores: e, registry: t, client: n, onAction: i, open: a }) {
4389
4591
  }
4390
4592
  //#endregion
4391
4593
  //#region src/app/ikon-app.tsx
4392
- var _o = { [y]: "" };
4393
- function vo(e, t) {
4594
+ var ts = { [y]: "" };
4595
+ function ns(e, t) {
4394
4596
  return e === void 0 ? null : typeof e == "function" ? e(t) : e;
4395
4597
  }
4396
- function yo(e) {
4598
+ function rs(e) {
4397
4599
  return e === void 0 ? null : typeof e == "function" ? e() : e;
4398
4600
  }
4399
- function bo(e, t) {
4601
+ function is(e, t) {
4400
4602
  return e === void 0 ? null : typeof e == "function" ? e(t) : e;
4401
4603
  }
4402
- function xo(e, t) {
4604
+ function as(e, t) {
4403
4605
  return e === void 0 ? null : typeof e == "function" ? e(t) : e;
4404
4606
  }
4405
- function So(e) {
4406
- let { connectingOverlay: t, reconnectingOverlay: n, offlineOverlay: r, accessDeniedScreen: i, ...a } = e, o = Ja(a), { app: s } = o, { connectionState: c, isConnectingSlow: l, stores: u, registry: d, client: f, onAction: p, isReady: m, isLive: h, error: g, accessDeniedReason: _, brandingRequired: v, feedback: ee } = s, y = v || o.forcedBranding, b = L(null);
4607
+ function os(e) {
4608
+ let { connectingOverlay: t, reconnectingOverlay: n, offlineOverlay: r, accessDeniedScreen: i, ...a } = e, o = No(a), { app: s } = o, { connectionState: c, isConnectingSlow: l, stores: u, registry: d, client: f, onAction: p, isReady: m, isLive: h, error: g, accessDeniedReason: _, brandingRequired: v, feedback: ee } = s, y = v || o.forcedBranding, b = F(null);
4407
4609
  u && d && (m || u.size > 0) && (b.current = {
4408
4610
  stores: u,
4409
4611
  registry: d,
4410
4612
  client: f
4411
4613
  });
4412
- let x = b.current != null || !!_, S = po(b.current?.stores) && c === "connected";
4413
- if (Qe(() => {
4614
+ let x = b.current != null || !!_, te = Zo(b.current?.stores) && c === "connected";
4615
+ if (et(() => {
4414
4616
  !x || typeof document > "u" || document.querySelectorAll("[data-ikon-prerender]").forEach((e) => e.remove());
4415
- }, [x]), _) return xo(i, _);
4416
- let C = b.current, w;
4617
+ }, [x]), _) return as(i, _);
4618
+ let S = b.current, C;
4417
4619
  switch (c) {
4418
4620
  case "waitingForExternalConnectUrl":
4419
4621
  case "connecting":
4420
- w = vo(t, l);
4622
+ C = ns(t, l);
4421
4623
  break;
4422
4624
  case "reconnecting":
4423
- w = yo(n);
4625
+ C = rs(n);
4424
4626
  break;
4425
4627
  case "offline":
4426
- w = bo(r, g);
4628
+ C = is(r, g);
4427
4629
  break;
4428
- default: w = null;
4630
+ default: C = null;
4429
4631
  }
4430
- return /* @__PURE__ */ B(tt, { children: [
4431
- C && /* @__PURE__ */ z(An, {
4432
- stores: C.stores,
4433
- registry: C.registry,
4434
- client: C.client,
4632
+ return /* @__PURE__ */ R(rt, { children: [
4633
+ S && /* @__PURE__ */ L(ar, {
4634
+ stores: S.stores,
4635
+ registry: S.registry,
4636
+ client: S.client,
4435
4637
  onAction: p
4436
4638
  }),
4437
- C && /* @__PURE__ */ z(go, {
4438
- stores: C.stores,
4439
- registry: C.registry,
4440
- client: C.client,
4639
+ S && /* @__PURE__ */ L(es, {
4640
+ stores: S.stores,
4641
+ registry: S.registry,
4642
+ client: S.client,
4441
4643
  onAction: p,
4442
- open: S
4644
+ open: te
4443
4645
  }),
4444
- w != null && /* @__PURE__ */ z("div", {
4445
- ..._o,
4646
+ C != null && /* @__PURE__ */ L("div", {
4647
+ ...ts,
4446
4648
  style: { display: "contents" },
4447
- children: w
4649
+ children: C
4448
4650
  }),
4449
- y && /* @__PURE__ */ z(wo, {}),
4450
- /* @__PURE__ */ z(io, {
4651
+ y && /* @__PURE__ */ L(cs, {}),
4652
+ /* @__PURE__ */ L(Uo, {
4451
4653
  client: f,
4452
4654
  feedback: ee,
4453
4655
  connectionState: c,
4454
4656
  isLive: h,
4455
- sheetOpen: S,
4657
+ sheetOpen: te,
4456
4658
  brandingShown: y
4457
4659
  }),
4458
- /* @__PURE__ */ z(To, {}),
4459
- /* @__PURE__ */ z("div", {
4460
- ..._o,
4660
+ /* @__PURE__ */ L(ls, {}),
4661
+ /* @__PURE__ */ L("div", {
4662
+ ...ts,
4461
4663
  style: { display: "contents" },
4462
- children: /* @__PURE__ */ z(wa, {
4664
+ children: /* @__PURE__ */ L(co, {
4463
4665
  state: c,
4464
4666
  forceVisible: o.forcedDebugOverlay
4465
4667
  })
4466
4668
  })
4467
4669
  ] });
4468
4670
  }
4469
- var Co = "https://ikonai.com";
4470
- function wo() {
4471
- return /* @__PURE__ */ B("a", {
4472
- ..._o,
4671
+ var ss = "https://ikonai.com";
4672
+ function cs() {
4673
+ return /* @__PURE__ */ R("a", {
4674
+ ...ts,
4473
4675
  className: "ikon-branding-banner",
4474
- href: Co,
4676
+ href: ss,
4475
4677
  target: "_blank",
4476
4678
  rel: "noopener noreferrer",
4477
4679
  style: {
@@ -4492,44 +4694,44 @@ function wo() {
4492
4694
  boxShadow: "0 -1px 8px rgba(0, 0, 0, 0.25)",
4493
4695
  pointerEvents: "auto"
4494
4696
  },
4495
- children: [/* @__PURE__ */ z("span", {
4697
+ children: [/* @__PURE__ */ L("span", {
4496
4698
  style: { opacity: .75 },
4497
4699
  children: "Powered by"
4498
- }), /* @__PURE__ */ z("span", {
4700
+ }), /* @__PURE__ */ L("span", {
4499
4701
  style: { fontWeight: 700 },
4500
4702
  children: "Ikon"
4501
4703
  })]
4502
4704
  });
4503
4705
  }
4504
- function To() {
4505
- let { toasts: e, dismissToast: t } = Ra();
4506
- return e.length === 0 ? null : /* @__PURE__ */ z("div", {
4507
- ..._o,
4706
+ function ls() {
4707
+ let { toasts: e, dismissToast: t } = Co();
4708
+ return e.length === 0 ? null : /* @__PURE__ */ L("div", {
4709
+ ...ts,
4508
4710
  className: "ikon-toast-overlay",
4509
- children: e.map((e) => /* @__PURE__ */ z(Eo, {
4711
+ children: e.map((e) => /* @__PURE__ */ L(us, {
4510
4712
  toast: e,
4511
4713
  onDismiss: t
4512
4714
  }, e.id))
4513
4715
  });
4514
4716
  }
4515
- function Eo({ toast: e, onDismiss: t }) {
4516
- return /* @__PURE__ */ B("div", {
4717
+ function us({ toast: e, onDismiss: t }) {
4718
+ return /* @__PURE__ */ R("div", {
4517
4719
  className: `ikon-toast-overlay-chip ikon-toast-overlay-chip--${e.level}`,
4518
4720
  onClick: () => t(e.id),
4519
4721
  role: "alert",
4520
- children: [/* @__PURE__ */ z("span", {
4722
+ children: [/* @__PURE__ */ L("span", {
4521
4723
  className: "ikon-toast-overlay-icon",
4522
4724
  children: e.level === "error" ? "🚨" : "⚠️"
4523
- }), /* @__PURE__ */ B("div", {
4725
+ }), /* @__PURE__ */ R("div", {
4524
4726
  className: "ikon-toast-overlay-content",
4525
- children: [/* @__PURE__ */ B("span", {
4727
+ children: [/* @__PURE__ */ R("span", {
4526
4728
  className: "ikon-toast-overlay-component",
4527
4729
  children: [
4528
4730
  "[",
4529
4731
  e.component,
4530
4732
  "]"
4531
4733
  ]
4532
- }), /* @__PURE__ */ z("span", {
4734
+ }), /* @__PURE__ */ L("span", {
4533
4735
  className: "ikon-toast-overlay-message",
4534
4736
  children: e.message
4535
4737
  })]
@@ -4538,19 +4740,19 @@ function Eo({ toast: e, onDismiss: t }) {
4538
4740
  }
4539
4741
  //#endregion
4540
4742
  //#region src/app/feedback/use-ikon-feedback.ts
4541
- function Do(e) {
4542
- let t = P((t) => e?.subscribeToFeedback(t) ?? Oo, [e]);
4743
+ function ds(e) {
4744
+ let t = M((t) => e?.subscribeToFeedback(t) ?? fs, [e]);
4543
4745
  return {
4544
- available: et(t, () => e?.feedback != null, () => !1),
4545
- open: P(() => e?.requestFeedback() ?? !1, [e])
4746
+ available: nt(t, () => e?.feedback != null, () => !1),
4747
+ open: M(() => e?.requestFeedback() ?? !1, [e])
4546
4748
  };
4547
4749
  }
4548
- function Oo() {}
4750
+ function fs() {}
4549
4751
  //#endregion
4550
4752
  //#region src/app/connection-recovery.ts
4551
- function ko({ isSessionExpired: e }) {
4753
+ function ps({ isSessionExpired: e }) {
4552
4754
  if (e) {
4553
- let e = j();
4755
+ let e = k();
4554
4756
  if (e) return {
4555
4757
  kind: "freshSession",
4556
4758
  run: () => {
@@ -4567,31 +4769,31 @@ function ko({ isSessionExpired: e }) {
4567
4769
  }
4568
4770
  //#endregion
4569
4771
  //#region src/account/use-account-removal.ts
4570
- function Ao(e) {
4772
+ function ms(e) {
4571
4773
  return e instanceof Error && e.message ? e.message : String(e);
4572
4774
  }
4573
- function jo(e = {}) {
4574
- let { backendUrl: t, loadOnMount: n = !0 } = e, { state: r, getToken: i } = Yi(), [a, o] = R(null), [s, c] = R(!1), [l, u] = R(!1), [d, f] = R(null), p = L(!0);
4575
- F(() => (p.current = !0, () => {
4775
+ function hs(e = {}) {
4776
+ let { backendUrl: t, loadOnMount: n = !0 } = e, { state: r, getToken: i } = Ma(), [a, o] = I(null), [s, c] = I(!1), [l, u] = I(!1), [d, f] = I(null), p = F(!0);
4777
+ N(() => (p.current = !0, () => {
4576
4778
  p.current = !1;
4577
4779
  }), []);
4578
- let m = r.isAuthenticated && r.user !== null && r.user.provider !== "anonymous" && r.user.provider !== "dev", h = P(async () => {
4780
+ let m = r.isAuthenticated && r.user !== null && r.user.provider !== "anonymous" && r.user.provider !== "dev", h = M(async () => {
4579
4781
  let e = i();
4580
4782
  if (e) {
4581
4783
  c(!0), f(null);
4582
4784
  try {
4583
- let n = await ye({
4785
+ let n = await xe({
4584
4786
  authToken: e,
4585
4787
  backendUrl: t
4586
4788
  });
4587
4789
  p.current && o(n.removal ?? null);
4588
4790
  } catch (e) {
4589
- p.current && f(Ao(e));
4791
+ p.current && f(ms(e));
4590
4792
  } finally {
4591
4793
  p.current && c(!1);
4592
4794
  }
4593
4795
  }
4594
- }, [t, i]), g = P(async (e) => {
4796
+ }, [t, i]), g = M(async (e) => {
4595
4797
  let n = i();
4596
4798
  if (!n) {
4597
4799
  f("You are not signed in");
@@ -4605,12 +4807,12 @@ function jo(e = {}) {
4605
4807
  });
4606
4808
  p.current && o(r.removal ?? null);
4607
4809
  } catch (e) {
4608
- p.current && f(Ao(e));
4810
+ p.current && f(ms(e));
4609
4811
  } finally {
4610
4812
  p.current && u(!1);
4611
4813
  }
4612
- }, [t, i]), _ = P(() => g(ze), [g]), v = P(() => g(ue), [g]);
4613
- return F(() => {
4814
+ }, [t, i]), _ = M(() => g(Ve), [g]), v = M(() => g(fe), [g]);
4815
+ return N(() => {
4614
4816
  !n || !m || h();
4615
4817
  }, [
4616
4818
  n,
@@ -4622,7 +4824,7 @@ function jo(e = {}) {
4622
4824
  isSubmittingRemoval: l,
4623
4825
  removalError: d,
4624
4826
  canRequestRemoval: m,
4625
- removalGraceDays: ce,
4827
+ removalGraceDays: le,
4626
4828
  requestAccountRemoval: _,
4627
4829
  cancelAccountRemoval: v,
4628
4830
  reloadAccountRemoval: h
@@ -4630,27 +4832,27 @@ function jo(e = {}) {
4630
4832
  }
4631
4833
  //#endregion
4632
4834
  //#region src/consent/use-consent.ts
4633
- function Mo(e) {
4835
+ function gs(e) {
4634
4836
  return e instanceof Error && e.message ? e.message : String(e);
4635
4837
  }
4636
- function No({ client: e, purposes: t }) {
4637
- let [n, r] = R({}), [i, a] = R(!1), [o, s] = R(!1), [c, l] = R(null), u = L(!0);
4638
- F(() => (u.current = !0, () => {
4838
+ function _s({ client: e, purposes: t }) {
4839
+ let [n, r] = I({}), [i, a] = I(!1), [o, s] = I(!1), [c, l] = I(null), u = F(!0);
4840
+ N(() => (u.current = !0, () => {
4639
4841
  u.current = !1;
4640
4842
  }), []);
4641
- let d = P(async () => {
4843
+ let d = M(async () => {
4642
4844
  if (e) {
4643
4845
  a(!0), l(null);
4644
4846
  try {
4645
- let t = await Le(e);
4847
+ let t = await ze(e);
4646
4848
  u.current && r(t);
4647
4849
  } catch (e) {
4648
- u.current && l(Mo(e));
4850
+ u.current && l(gs(e));
4649
4851
  } finally {
4650
4852
  u.current && a(!1);
4651
4853
  }
4652
4854
  }
4653
- }, [e]), f = P(async (t, n) => {
4855
+ }, [e]), f = M(async (t, n) => {
4654
4856
  if (!e) {
4655
4857
  l("The app is not connected, so your answer was not recorded");
4656
4858
  return;
@@ -4663,20 +4865,20 @@ function No({ client: e, purposes: t }) {
4663
4865
  [i.purpose]: i
4664
4866
  }));
4665
4867
  } catch (e) {
4666
- u.current && l(Mo(e));
4868
+ u.current && l(gs(e));
4667
4869
  } finally {
4668
4870
  u.current && s(!1);
4669
4871
  }
4670
- }, [e]), p = P((e) => f(e, Oe), [f]), m = P((e) => f(e, Ve), [f]), h = t.join("\0");
4671
- return F(() => {
4872
+ }, [e]), p = M((e) => f(e, Ae), [f]), m = M((e) => f(e, Ue), [f]), h = t.join("\0");
4873
+ return N(() => {
4672
4874
  d();
4673
4875
  }, [d, h]), {
4674
4876
  answers: n,
4675
4877
  isLoading: i,
4676
4878
  isSubmitting: o,
4677
4879
  error: c,
4678
- consentFor: (e) => me(n, e),
4679
- isGranted: (e) => Ae(n, e),
4880
+ consentFor: (e) => ge(n, e),
4881
+ isGranted: (e) => Me(n, e),
4680
4882
  grant: p,
4681
4883
  revoke: m,
4682
4884
  reload: d
@@ -4684,37 +4886,37 @@ function No({ client: e, purposes: t }) {
4684
4886
  }
4685
4887
  //#endregion
4686
4888
  //#region src/i18n/i18n.tsx
4687
- var Po = Ye(null);
4688
- function Fo(e, t) {
4889
+ var vs = Ze(null);
4890
+ function ys(e, t) {
4689
4891
  return t ? e.replace(/\{(\w+)\}/g, (e, n) => t[n] ?? `{${n}}`) : e;
4690
4892
  }
4691
- function Io(e, t) {
4692
- let n = Se();
4893
+ function bs(e, t) {
4894
+ let n = we();
4693
4895
  if (n && e.includes(n)) return n;
4694
4896
  let r = navigator.language.split("-")[0];
4695
4897
  return e.includes(r) ? r : t && e.includes(t) ? t : "en";
4696
4898
  }
4697
- function Lo(e, t, n) {
4698
- return t ? Io(e, n) : n && e.includes(n) ? n : "en";
4899
+ function xs(e, t, n) {
4900
+ return t ? bs(e, n) : n && e.includes(n) ? n : "en";
4699
4901
  }
4700
- function Ro({ children: e, translations: t, defaultLanguage: n, detectLanguage: r = !1 }) {
4701
- let i = Lo(Object.keys(t), r, n), a = t[i] ?? t.en, o = I(() => ({
4902
+ function Ss({ children: e, translations: t, defaultLanguage: n, detectLanguage: r = !1 }) {
4903
+ let i = xs(Object.keys(t), r, n), a = t[i] ?? t.en, o = P(() => ({
4702
4904
  t: (e, t) => {
4703
4905
  let n = a[e];
4704
- return Fo(n, t);
4906
+ return ys(n, t);
4705
4907
  },
4706
4908
  locale: i,
4707
4909
  translations: a
4708
4910
  }), [a, i]);
4709
- return /* @__PURE__ */ z(Po, {
4911
+ return /* @__PURE__ */ L(vs, {
4710
4912
  value: o,
4711
4913
  children: e
4712
4914
  });
4713
4915
  }
4714
- function zo() {
4715
- let e = Ze(Po);
4916
+ function Cs() {
4917
+ let e = $e(vs);
4716
4918
  if (!e) throw Error("useI18n must be used within an I18nProvider");
4717
4919
  return e;
4718
4920
  }
4719
4921
  //#endregion
4720
- export { Ji as AuthProvider, Ta as ConnectionStateRenderer, ma as DEBUG_OVERLAY_ENABLED, wa as DebugOverlay, Ro as I18nProvider, n as IKON_PLATFORM_STREAM_CATEGORY, Tt as IKON_UI_BASE_MODULE, Gt as IKON_UI_MEDIA_MODULE, Xt as IKON_UI_SHADERTOY_MODULE, t as IKON_UI_SHADERTOY_TYPE, i as IKON_UI_STREAM_CATEGORY, zt as IKON_UI_VIDEO_CANVAS_TYPE, Bt as IKON_UI_VIDEO_URL_PLAYER_TYPE, So as IkonApp, nt as IkonUi, tn as IkonUiRegistry, An as IkonUiSurface, Dn as InspectOverlay, jn as ParallaxView, Sn as UiComponentRegistry, xn as UiRenderer, c as UiStreamStore, Pt as VideoStreamView, ai as authenticateAnonymous, _i as buildOAuthRedirectUrl, vi as buildSsoRedirectUrl, Xr as clearAuthSession, gi as clearOAuthParams, wt as createBaseResolvers, Cn as createComponentLibrary, nn as createIkonUiRegistry, Yt as createLazyResolver, Ht as createMediaResolvers, Zt as createShadertoyRendererResolver, bi as discoverSsoConnection, yi as findSsoConnectionsForHost, ko as getConnectionRecovery, kn as isIkonUiCategoryMatch, Hr as loadAuthSession, Et as loadBaseModule, Kt as loadMediaModule, Qt as loadShadertoyModule, ci as parseOAuthCallback, fi as parseOAuthError, Ie as randomUuid, Dt as registerBaseModule, qt as registerMediaModule, $t as registerShadertoyModule, yn as renderChildren, tr as renderMotionLetters, xi as requestSsoLinkTicket, q as saveAuthSession, oi as sendLoginCode, J as sessionToUser, jo as useAccountRemoval, Yi as useAuth, fa as useAuthGuard, Xi as useAuthOptional, Jn as useCameraCapture, No as useConsent, zo as useI18n, Ia as useIkonApp, Ja as useIkonDebug, Do as useIkonFeedback, za as useIkonReactive, Vn as useIkonStyles, Un as useIkonUiStores, qn as useMicrophoneCapture, Ba as useReactive, Yn as useScreenCapture, Wn as useSiblingClient, pa as useSsoSignIn, Ra as useToasts, e as useUiNode, wn as useUiStore, si as verifyLoginCode };
4922
+ export { ja as AuthProvider, lo as ConnectionStateRenderer, Za as DEBUG_OVERLAY_ENABLED, co as DebugOverlay, Ss as I18nProvider, n as IKON_PLATFORM_STREAM_CATEGORY, en as IKON_UI_BASE_MODULE, xn as IKON_UI_MEDIA_MODULE, En as IKON_UI_SHADERTOY_MODULE, t as IKON_UI_SHADERTOY_TYPE, i as IKON_UI_STREAM_CATEGORY, hn as IKON_UI_VIDEO_CANVAS_TYPE, gn as IKON_UI_VIDEO_URL_PLAYER_TYPE, os as IkonApp, it as IkonUi, jn as IkonUiRegistry, ar as IkonUiSurface, nr as InspectOverlay, or as ParallaxView, Zn as UiComponentRegistry, Xn as UiRenderer, c as UiStreamStore, un as VideoStreamView, Hi as authenticateAnonymous, ea as buildOAuthRedirectUrl, ta as buildSsoRedirectUrl, Ni as clearAuthSession, $i as clearOAuthParams, $t as createBaseResolvers, Qn as createComponentLibrary, Mn as createIkonUiRegistry, Tn as createLazyResolver, vn as createMediaResolvers, Dn as createShadertoyRendererResolver, ra as discoverSsoConnection, na as findSsoConnectionsForHost, ps as getConnectionRecovery, ir as isIkonUiCategoryMatch, Ti as loadAuthSession, tn as loadBaseModule, Sn as loadMediaModule, On as loadShadertoyModule, Gi as parseOAuthCallback, Yi as parseOAuthError, Re as randomUuid, nn as registerBaseModule, Cn as registerMediaModule, kn as registerShadertoyModule, Jn as renderChildren, Fr as renderMotionLetters, ia as requestSsoLinkTicket, J as saveAuthSession, Ui as sendLoginCode, Y as sessionToUser, hs as useAccountRemoval, Ma as useAuth, Ya as useAuthGuard, Na as useAuthOptional, Cr as useCameraCapture, _s as useConsent, Cs as useI18n, xo as useIkonApp, No as useIkonDebug, ds as useIkonFeedback, wo as useIkonReactive, gr as useIkonStyles, vr as useIkonUiStores, Sr as useMicrophoneCapture, To as useReactive, wr as useScreenCapture, yr as useSiblingClient, Xa as useSsoSignIn, Co as useToasts, e as useUiNode, $n as useUiStore, Wi as verifyLoginCode };