@ikonai/sdk-react-ui 1.7.0 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/connection-state-renderer.d.ts +4 -4
- package/app/connection-state-renderer.spec.d.ts +1 -0
- package/app/ikon-app.d.ts +3 -3
- package/app/ikon-app.spec.d.ts +1 -0
- package/app/use-ikon-app.d.ts +6 -8
- package/app/use-ikon-debug.d.ts +1 -1
- package/auth/auth-service.d.ts +9 -0
- package/auth/index.d.ts +1 -1
- package/auth/oauth-continuation.d.ts +15 -1
- package/index.d.ts +1 -1
- package/index.js +902 -832
- package/package.json +1 -1
- package/parallax-view.d.ts +2 -2
- package/renderer/index.d.ts +1 -1
- package/renderer/types.d.ts +12 -1
- package/renderer/ui-renderer.d.ts +2 -2
- package/surface.d.ts +2 -2
- package/theme/ikon-app.css +261 -250
- package/theme/ikon-auth.css +290 -271
- package/theme/ikon-surface.css +107 -94
- package/theme/ikon-tokens.css +97 -95
package/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { IkonUiCore as e, LiveSnapshotCache as t, UiStreamStore as n, UiStreamStore as r, isPrerenderVisible as i, prefetchBootSnapshot as a } from "@ikonai/sdk-ui";
|
|
2
|
-
import { AccessDeniedError as o, AppStartupFailedError as s, AuthenticationError as c,
|
|
3
|
-
import { Fragment as
|
|
4
|
-
import { Fragment as
|
|
2
|
+
import { AccessDeniedError as o, AppStartupFailedError as s, AuthenticationError as c, DEFAULT_LOCAL_SERVER_HOST as l, DEFAULT_LOCAL_SERVER_PORT as u, DEFAULT_SLOW_CONNECTION_THRESHOLD_MS as d, IKON_INSPECT_MODE_CHANGED_EVENT as f, IKON_PARAM_OAUTH_CODE as p, IKON_PARAM_OAUTH_PKCE as m, IKON_PARAM_OAUTH_PROVIDER as h, IKON_PARAM_OAUTH_TOKEN as g, IkonClient as _, LogLevel as v, ProvisioningTimeoutError as y, ServerFullError as ee, ServerUnavailableError as te, SessionNotFoundError as b, abortSignalTimeout as x, adoptPkceVerifierFromUrl as ne, clearLoginPrompt as re, createLogger as S, createPkceChallenge as ie, deriveAuthUrl as C, deriveBackendType as ae, deriveCrossOriginAuthUrl as oe, extractUserIdFromToken as se, getDebugOverlayParam as w, getLangParam as ce, getLoginPromptState as T, getOrCreateDeviceId as le, getSameOriginAuthUrl as E, getSignedOutParam as ue, getUrlWithoutSession as de, isCloudEnvironment as fe, isDebugModeEnabled as pe, isEmbedded as me, isInspectModeEnabled as he, onEmbeddedOAuthResult as ge, parseUrlParams as _e, randomUuid as ve, reportConnectTimeline as ye, restorePkceVerifier as be, setLoginPromptRequired as xe, startEmbeddedOAuthSignIn as Se, subscribeLoginPrompt as Ce, subscribeToLogEvents as we, takePkceVerifier as Te } from "@ikonai/sdk";
|
|
3
|
+
import { Fragment as Ee, createContext as De, memo as D, use as Oe, useCallback as O, useEffect as k, useLayoutEffect as A, useMemo as j, useReducer as ke, useRef as M, useState as N, useSyncExternalStore as Ae } from "react";
|
|
4
|
+
import { Fragment as je, jsx as P, jsxs as F } from "react/jsx-runtime";
|
|
5
5
|
//#region src/renderer/use-root-view.ts
|
|
6
|
-
function
|
|
7
|
-
let n =
|
|
6
|
+
function Me(e, t) {
|
|
7
|
+
let n = Ae((t) => e.subscribe(t), () => {
|
|
8
8
|
let n = e.getSnapshot(), r = t ?? n.rootViewId, i = r ? n.views.get(r) : void 0;
|
|
9
9
|
return `${r ?? ""}:${i?.id ?? ""}`;
|
|
10
10
|
}, () => {
|
|
@@ -22,7 +22,7 @@ function ke(e, t) {
|
|
|
22
22
|
//#endregion
|
|
23
23
|
//#region src/renderer/use-ui-node.ts
|
|
24
24
|
function I(e, t) {
|
|
25
|
-
let n =
|
|
25
|
+
let n = Ae((n) => e.subscribeNode(t, n), () => e.getNodeVersion(t), () => e.getNodeVersion(t));
|
|
26
26
|
return j(() => e.getNode(t), [
|
|
27
27
|
e,
|
|
28
28
|
t,
|
|
@@ -31,8 +31,8 @@ function I(e, t) {
|
|
|
31
31
|
}
|
|
32
32
|
//#endregion
|
|
33
33
|
//#region src/renderer/ui-renderer.tsx
|
|
34
|
-
var
|
|
35
|
-
function
|
|
34
|
+
var Ne = S("UIRenderer");
|
|
35
|
+
function Pe(e) {
|
|
36
36
|
if (e === void 0) return "{}";
|
|
37
37
|
if (typeof e == "string") return e;
|
|
38
38
|
try {
|
|
@@ -41,33 +41,35 @@ function je(e) {
|
|
|
41
41
|
return "{}";
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
|
-
function
|
|
44
|
+
function Fe(e) {
|
|
45
45
|
let t = e.styleIds;
|
|
46
46
|
return Array.isArray(t) ? t : [];
|
|
47
47
|
}
|
|
48
|
-
var
|
|
49
|
-
function
|
|
48
|
+
var Ie = 1500, Le = 8e3;
|
|
49
|
+
function Re(e) {
|
|
50
50
|
let [t, n] = N(0);
|
|
51
51
|
return k(() => {
|
|
52
52
|
if (e.subscribe) return e.subscribe(() => n((e) => e + 1));
|
|
53
53
|
}, [e]), t;
|
|
54
54
|
}
|
|
55
|
-
function
|
|
56
|
-
let [i, a] = N(!1), o = I(n.store, t),
|
|
55
|
+
function ze({ nodeType: e, nodeId: t, context: n, className: r }) {
|
|
56
|
+
let [i, a] = N(!1), [o, s] = N(!1), c = I(n.store, t), l = Re(n.library), u = j(() => c ? n.library.resolve(c) : void 0, [
|
|
57
57
|
n.library,
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
c,
|
|
59
|
+
l
|
|
60
60
|
]);
|
|
61
61
|
return k(() => {
|
|
62
|
-
let e = setTimeout(() => a(!0),
|
|
63
|
-
return () =>
|
|
62
|
+
let e = setTimeout(() => a(!0), Ie), t = setTimeout(() => s(!0), Le);
|
|
63
|
+
return () => {
|
|
64
|
+
clearTimeout(e), clearTimeout(t);
|
|
65
|
+
};
|
|
64
66
|
}, [e]), k(() => {
|
|
65
|
-
!
|
|
67
|
+
!o || u || Ne.error(`No React resolver is registered for node type '${e}', 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 '${e}', (3) a registerModule(...) call for it in app.tsx, and (4) the C# view.AddNode("${e}", ...) extension. Prefer native view.* components where they fit.`);
|
|
66
68
|
}, [
|
|
67
|
-
|
|
68
|
-
|
|
69
|
+
o,
|
|
70
|
+
u,
|
|
69
71
|
e
|
|
70
|
-
]),
|
|
72
|
+
]), u ? /* @__PURE__ */ P(u, {
|
|
71
73
|
nodeId: t,
|
|
72
74
|
context: n,
|
|
73
75
|
className: r
|
|
@@ -75,6 +77,7 @@ function Fe({ nodeType: e, nodeId: t, context: n, className: r }) {
|
|
|
75
77
|
"data-ikon-node-id": t,
|
|
76
78
|
"data-ikon-unresolved-node": e,
|
|
77
79
|
role: "alert",
|
|
80
|
+
className: r,
|
|
78
81
|
style: {
|
|
79
82
|
padding: "12px 16px",
|
|
80
83
|
border: "2px dashed #ef4444",
|
|
@@ -87,69 +90,69 @@ function Fe({ nodeType: e, nodeId: t, context: n, className: r }) {
|
|
|
87
90
|
children: `Unregistered node type: ${e}\nNo React resolver is registered for it — register the component's module in app.tsx (see the console for details).`
|
|
88
91
|
}) : null;
|
|
89
92
|
}
|
|
90
|
-
function
|
|
93
|
+
function Be(e) {
|
|
91
94
|
let t = e.children;
|
|
92
95
|
return Array.isArray(t) ? t : [];
|
|
93
96
|
}
|
|
94
|
-
function
|
|
97
|
+
function Ve(e, t) {
|
|
95
98
|
return e.nodeId === t.nodeId && e.context === t.context;
|
|
96
99
|
}
|
|
97
|
-
function
|
|
100
|
+
function He(e) {
|
|
98
101
|
if (e.length === 0) return "";
|
|
99
102
|
if (e.length === 1) return e[0].id;
|
|
100
103
|
let t = e[0].id;
|
|
101
104
|
for (let n = 1; n < e.length; n++) t += "," + e[n].id;
|
|
102
105
|
return t;
|
|
103
106
|
}
|
|
104
|
-
var
|
|
105
|
-
let r = I(n.store, t), i = r ?
|
|
107
|
+
var L = D(function e({ nodeId: t, context: n }) {
|
|
108
|
+
let r = I(n.store, t), i = r ? Be(r) : [], a = He(i), o = j(() => i.length === 0 ? null : i.map((t) => /* @__PURE__ */ P(e, {
|
|
106
109
|
nodeId: t.id,
|
|
107
110
|
context: n
|
|
108
111
|
}, t.id)), [a, n]);
|
|
109
112
|
if (!r) return null;
|
|
110
|
-
if (r.type === "root") return /* @__PURE__ */ P(
|
|
111
|
-
let s =
|
|
113
|
+
if (r.type === "root") return /* @__PURE__ */ P(Ee, { children: o }, r.id);
|
|
114
|
+
let s = Fe(r), c = s.length > 0 ? s.join(" ") : void 0, l = n.library.resolve(r);
|
|
112
115
|
return l ? /* @__PURE__ */ P(l, {
|
|
113
116
|
nodeId: t,
|
|
114
117
|
context: n,
|
|
115
118
|
className: c
|
|
116
|
-
}) : /* @__PURE__ */ P(
|
|
119
|
+
}) : /* @__PURE__ */ P(ze, {
|
|
117
120
|
nodeType: r.type,
|
|
118
121
|
nodeId: r.id,
|
|
119
122
|
context: n,
|
|
120
123
|
className: c
|
|
121
124
|
});
|
|
122
|
-
},
|
|
123
|
-
function
|
|
124
|
-
return !Array.isArray(e) || e.length === 0 ? null : e.map((e) => /* @__PURE__ */ P(
|
|
125
|
+
}, Ve);
|
|
126
|
+
function Ue(e, t) {
|
|
127
|
+
return !Array.isArray(e) || e.length === 0 ? null : e.map((e) => /* @__PURE__ */ P(L, {
|
|
125
128
|
nodeId: e.id,
|
|
126
129
|
context: t
|
|
127
130
|
}, e.id));
|
|
128
131
|
}
|
|
129
|
-
function
|
|
132
|
+
function We(e, t) {
|
|
130
133
|
return e.store === t.store && e.library === t.library && e.viewId === t.viewId && e.emptyFallback === t.emptyFallback;
|
|
131
134
|
}
|
|
132
|
-
var
|
|
133
|
-
let { rootViewId: s, rootNodeId: c } =
|
|
135
|
+
var Ge = D(function({ store: e, library: t, viewId: n, emptyFallback: r = null, onAction: i, client: a, video: o }) {
|
|
136
|
+
let { rootViewId: s, rootNodeId: c } = Me(e, n), l = M(i);
|
|
134
137
|
l.current = i;
|
|
135
138
|
let u = M(a);
|
|
136
139
|
u.current = a;
|
|
137
140
|
let d = M(o);
|
|
138
141
|
d.current = o;
|
|
139
|
-
let f = O((e, t) => {
|
|
142
|
+
let f = O((e, t, n) => {
|
|
140
143
|
if (!e) return;
|
|
141
|
-
let
|
|
142
|
-
l.current?.(e, n);
|
|
144
|
+
let r = Pe(t);
|
|
145
|
+
l.current?.(e, r, n);
|
|
143
146
|
}, []), p = j(() => {
|
|
144
147
|
let n = {
|
|
145
148
|
store: e,
|
|
146
149
|
library: t,
|
|
147
150
|
handlerCache: e.handlerCache,
|
|
148
151
|
getPayload: (t) => e.getSnapshot().payloads.get(t),
|
|
149
|
-
renderChildren: (e) =>
|
|
152
|
+
renderChildren: (e) => Ue(e, n),
|
|
150
153
|
renderView: (t) => {
|
|
151
154
|
let r = e.getSnapshot().views.get(t);
|
|
152
|
-
return r ? /* @__PURE__ */ P(
|
|
155
|
+
return r ? /* @__PURE__ */ P(L, {
|
|
153
156
|
nodeId: r.id,
|
|
154
157
|
context: n
|
|
155
158
|
}) : null;
|
|
@@ -171,12 +174,12 @@ var Ve = D(function({ store: e, library: t, viewId: n, emptyFallback: r = null,
|
|
|
171
174
|
return !s || !c ? r : /* @__PURE__ */ P("div", {
|
|
172
175
|
"data-ikon-view-id": s,
|
|
173
176
|
style: { display: "contents" },
|
|
174
|
-
children: /* @__PURE__ */ P(
|
|
177
|
+
children: /* @__PURE__ */ P(L, {
|
|
175
178
|
nodeId: c,
|
|
176
179
|
context: p
|
|
177
180
|
})
|
|
178
181
|
});
|
|
179
|
-
},
|
|
182
|
+
}, We), Ke = class {
|
|
180
183
|
fallback;
|
|
181
184
|
renderers = /* @__PURE__ */ new Map();
|
|
182
185
|
listeners = /* @__PURE__ */ new Set();
|
|
@@ -201,27 +204,27 @@ var Ve = D(function({ store: e, library: t, viewId: n, emptyFallback: r = null,
|
|
|
201
204
|
for (let e of this.listeners) e();
|
|
202
205
|
}
|
|
203
206
|
};
|
|
204
|
-
function
|
|
205
|
-
return new
|
|
207
|
+
function qe(e, t) {
|
|
208
|
+
return new Ke(Object.entries(e), t);
|
|
206
209
|
}
|
|
207
210
|
//#endregion
|
|
208
211
|
//#region src/renderer/use-ui-store.ts
|
|
209
|
-
function
|
|
210
|
-
return
|
|
212
|
+
function Je(e) {
|
|
213
|
+
return Ae((t) => e.subscribe(t), () => e.getSnapshot(), () => e.getSnapshot());
|
|
211
214
|
}
|
|
212
215
|
//#endregion
|
|
213
216
|
//#region src/inspect/inspect-overlay.tsx
|
|
214
|
-
function
|
|
215
|
-
let [e, t] = N(
|
|
217
|
+
function Ye() {
|
|
218
|
+
let [e, t] = N(he), n = M(!1);
|
|
216
219
|
return k(() => {
|
|
217
220
|
if (e) return;
|
|
218
221
|
let r = () => {
|
|
219
|
-
|
|
222
|
+
he() && t(!0);
|
|
220
223
|
}, i = (e) => {
|
|
221
224
|
e.data?.type === "ikon-inspect-mode" && e.data.enabled && (n.current = !0, t(!0));
|
|
222
225
|
};
|
|
223
|
-
return window.addEventListener(
|
|
224
|
-
window.removeEventListener(
|
|
226
|
+
return window.addEventListener(f, r), window.addEventListener("message", i), () => {
|
|
227
|
+
window.removeEventListener(f, r), window.removeEventListener("message", i);
|
|
225
228
|
};
|
|
226
229
|
}, [e]), k(() => {
|
|
227
230
|
if (!e) return;
|
|
@@ -351,11 +354,11 @@ function Ge() {
|
|
|
351
354
|
}
|
|
352
355
|
//#endregion
|
|
353
356
|
//#region src/surface.tsx
|
|
354
|
-
var
|
|
355
|
-
function
|
|
357
|
+
var Xe = S("IkonUiSurface"), R = "ikon-ui";
|
|
358
|
+
function Ze(e, t) {
|
|
356
359
|
return e === t;
|
|
357
360
|
}
|
|
358
|
-
var
|
|
361
|
+
var z = D(function({ stores: e, registry: t, category: n = R, onAction: r, client: i }) {
|
|
359
362
|
let a = j(() => Array.from(e.keys()).sort().join(","), [e]), o = M(r);
|
|
360
363
|
o.current = r;
|
|
361
364
|
let s = M(i);
|
|
@@ -364,7 +367,7 @@ var Je = D(function({ stores: e, registry: t, category: n = qe, onAction: r, cli
|
|
|
364
367
|
let t = [];
|
|
365
368
|
for (let [r, i] of e) {
|
|
366
369
|
let e = i.store.getSnapshot();
|
|
367
|
-
|
|
370
|
+
Ze(i.category, n) && (!e.rootViewId || !e.views.has(e.rootViewId) || t.push({
|
|
368
371
|
key: r,
|
|
369
372
|
store: i.store
|
|
370
373
|
}));
|
|
@@ -376,15 +379,15 @@ var Je = D(function({ stores: e, registry: t, category: n = qe, onAction: r, cli
|
|
|
376
379
|
a
|
|
377
380
|
]), l = M(!1), u = c.length > 0;
|
|
378
381
|
return k(() => {
|
|
379
|
-
u && !l.current && (l.current = !0,
|
|
380
|
-
}, [u]), u ? /* @__PURE__ */ F(
|
|
382
|
+
u && !l.current && (l.current = !0, Xe.debug("First UI render"));
|
|
383
|
+
}, [u]), u ? /* @__PURE__ */ F(je, { children: [/* @__PURE__ */ P(Ye, {}), c.map(({ key: e, store: n }) => /* @__PURE__ */ P(Ge, {
|
|
381
384
|
store: n,
|
|
382
385
|
library: t,
|
|
383
386
|
onAction: o.current,
|
|
384
387
|
client: s.current,
|
|
385
388
|
video: s.current?.media?.video
|
|
386
389
|
}, e))] }) : null;
|
|
387
|
-
}),
|
|
390
|
+
}), Qe = class {
|
|
388
391
|
core;
|
|
389
392
|
ownsCore;
|
|
390
393
|
stores = /* @__PURE__ */ new Map();
|
|
@@ -456,7 +459,7 @@ var Je = D(function({ stores: e, registry: t, category: n = qe, onAction: r, cli
|
|
|
456
459
|
let t = this.stores.get(e);
|
|
457
460
|
if (t) return t;
|
|
458
461
|
let n = {
|
|
459
|
-
category:
|
|
462
|
+
category: R,
|
|
460
463
|
store: new r()
|
|
461
464
|
};
|
|
462
465
|
return this.stores.set(e, n), n;
|
|
@@ -476,13 +479,13 @@ var Je = D(function({ stores: e, registry: t, category: n = qe, onAction: r, cli
|
|
|
476
479
|
};
|
|
477
480
|
//#endregion
|
|
478
481
|
//#region src/base/base-div.tsx
|
|
479
|
-
function
|
|
482
|
+
function $e(e) {
|
|
480
483
|
if (typeof e == "string") {
|
|
481
484
|
let t = e.trim();
|
|
482
485
|
return t.length > 0 ? t : void 0;
|
|
483
486
|
}
|
|
484
487
|
}
|
|
485
|
-
function
|
|
488
|
+
function B(e) {
|
|
486
489
|
if (typeof e == "string") {
|
|
487
490
|
let t = e.trim();
|
|
488
491
|
return t.length > 0 ? t : void 0;
|
|
@@ -492,7 +495,7 @@ function z(e) {
|
|
|
492
495
|
return t.length > 0 ? t.join(" ") : void 0;
|
|
493
496
|
}
|
|
494
497
|
}
|
|
495
|
-
function
|
|
498
|
+
function V(...e) {
|
|
496
499
|
let t = "";
|
|
497
500
|
for (let n of e) if (n) {
|
|
498
501
|
let e = n.trim();
|
|
@@ -500,8 +503,8 @@ function Ze(...e) {
|
|
|
500
503
|
}
|
|
501
504
|
return t || void 0;
|
|
502
505
|
}
|
|
503
|
-
var
|
|
504
|
-
function
|
|
506
|
+
var H = /* @__PURE__ */ new WeakMap(), et = {};
|
|
507
|
+
function tt(e) {
|
|
505
508
|
let t = {};
|
|
506
509
|
for (let n of e.split(";")) {
|
|
507
510
|
let e = n.indexOf(":");
|
|
@@ -513,28 +516,28 @@ function $e(e) {
|
|
|
513
516
|
}
|
|
514
517
|
return t;
|
|
515
518
|
}
|
|
516
|
-
function
|
|
519
|
+
function nt(e, t) {
|
|
517
520
|
let n = e && typeof e == "object" ? e : void 0;
|
|
518
521
|
return t ? {
|
|
519
522
|
...n ?? {},
|
|
520
523
|
cursor: t
|
|
521
524
|
} : n;
|
|
522
525
|
}
|
|
523
|
-
function
|
|
524
|
-
if (!e) return
|
|
525
|
-
let t =
|
|
526
|
+
function rt(e) {
|
|
527
|
+
if (!e) return et;
|
|
528
|
+
let t = H.get(e);
|
|
526
529
|
if (t) return t;
|
|
527
530
|
let n = {};
|
|
528
531
|
for (let [t, r] of Object.entries(e)) if (r != null) {
|
|
529
532
|
if (t === "style" && typeof r == "string") {
|
|
530
|
-
n[t] =
|
|
533
|
+
n[t] = tt(r);
|
|
531
534
|
continue;
|
|
532
535
|
}
|
|
533
536
|
(typeof r == "string" || typeof r == "number" || typeof r == "boolean") && (n[t] = r);
|
|
534
537
|
}
|
|
535
|
-
return
|
|
538
|
+
return H.set(e, n), n;
|
|
536
539
|
}
|
|
537
|
-
function
|
|
540
|
+
function U(e) {
|
|
538
541
|
let t = e.parentElement;
|
|
539
542
|
for (; t;) {
|
|
540
543
|
let e = window.getComputedStyle(t).overflowY;
|
|
@@ -543,18 +546,18 @@ function tt(e) {
|
|
|
543
546
|
}
|
|
544
547
|
return null;
|
|
545
548
|
}
|
|
546
|
-
var
|
|
547
|
-
function
|
|
549
|
+
var it = 1.5;
|
|
550
|
+
function at(e, t, n) {
|
|
548
551
|
requestAnimationFrame(() => {
|
|
549
|
-
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 *
|
|
552
|
+
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 * it ? "auto" : "smooth");
|
|
550
553
|
"scrollBehavior" in document.documentElement.style ? e.scrollTo({
|
|
551
554
|
top: a,
|
|
552
555
|
behavior: s
|
|
553
556
|
}) : e.scrollTop = a;
|
|
554
557
|
});
|
|
555
558
|
}
|
|
556
|
-
var
|
|
557
|
-
function
|
|
559
|
+
var ot = 3e3;
|
|
560
|
+
function st(e, t) {
|
|
558
561
|
if (typeof ResizeObserver > "u") return () => void 0;
|
|
559
562
|
let n = !1, r = () => {
|
|
560
563
|
n = !0;
|
|
@@ -562,32 +565,32 @@ function rt(e, t) {
|
|
|
562
565
|
e.addEventListener("wheel", r, i), e.addEventListener("touchmove", r, i), e.addEventListener("keydown", r, i);
|
|
563
566
|
let a = e.scrollHeight, o = new ResizeObserver(() => {
|
|
564
567
|
let r = e.scrollHeight > a;
|
|
565
|
-
a = e.scrollHeight, !(!r || n || !
|
|
568
|
+
a = e.scrollHeight, !(!r || n || !ft(e)) && at(e, t, "auto");
|
|
566
569
|
});
|
|
567
570
|
for (let t of Array.from(e.children)) o.observe(t);
|
|
568
|
-
let s = setTimeout(r,
|
|
571
|
+
let s = setTimeout(r, ot);
|
|
569
572
|
return () => {
|
|
570
573
|
clearTimeout(s), o.disconnect(), e.removeEventListener("wheel", r), e.removeEventListener("touchmove", r), e.removeEventListener("keydown", r);
|
|
571
574
|
};
|
|
572
575
|
}
|
|
573
|
-
var
|
|
574
|
-
function
|
|
575
|
-
return Math.max(e.clientHeight *
|
|
576
|
+
var ct = "data-ikon-scroll-indicator", lt = .15, ut = "data-ikon-at-bottom";
|
|
577
|
+
function dt(e) {
|
|
578
|
+
return Math.max(e.clientHeight * lt, 20);
|
|
576
579
|
}
|
|
577
|
-
function
|
|
578
|
-
return e.getAttribute(
|
|
580
|
+
function ft(e) {
|
|
581
|
+
return e.getAttribute(ut) !== "false";
|
|
579
582
|
}
|
|
580
|
-
function
|
|
581
|
-
e.getAttribute(
|
|
582
|
-
let { scrollTop: t, scrollHeight: n, clientHeight: r } = e, i = n - t - r <=
|
|
583
|
-
e.setAttribute(
|
|
583
|
+
function pt(e) {
|
|
584
|
+
e.getAttribute(ut) === null && (e.setAttribute(ut, "true"), e.addEventListener("scroll", () => {
|
|
585
|
+
let { scrollTop: t, scrollHeight: n, clientHeight: r } = e, i = n - t - r <= dt(e);
|
|
586
|
+
e.setAttribute(ut, i ? "true" : "false");
|
|
584
587
|
}, { passive: !0 }));
|
|
585
588
|
}
|
|
586
|
-
function
|
|
587
|
-
let t = e.parentElement ?? e, n = t.querySelector(`[${
|
|
589
|
+
function mt(e) {
|
|
590
|
+
let t = e.parentElement ?? e, n = t.querySelector(`[${ct}]`);
|
|
588
591
|
if (n) return n;
|
|
589
592
|
let r = document.createElement("button");
|
|
590
|
-
return r.setAttribute(
|
|
593
|
+
return r.setAttribute(ct, "true"), r.setAttribute("aria-label", "Scroll to latest"), r.textContent = "↓", Object.assign(r.style, {
|
|
591
594
|
position: "absolute",
|
|
592
595
|
bottom: "12px",
|
|
593
596
|
left: "50%",
|
|
@@ -615,36 +618,37 @@ function ut(e) {
|
|
|
615
618
|
r.style.opacity = "0.9";
|
|
616
619
|
}), t.appendChild(r), r;
|
|
617
620
|
}
|
|
618
|
-
function
|
|
619
|
-
let n =
|
|
621
|
+
function ht(e, t) {
|
|
622
|
+
let n = mt(e);
|
|
620
623
|
n.style.display = "flex";
|
|
621
624
|
let r = () => {
|
|
622
|
-
|
|
625
|
+
at(e, t), n.style.display = "none";
|
|
623
626
|
}, i = () => {
|
|
624
627
|
let { scrollTop: t, scrollHeight: r, clientHeight: i } = e;
|
|
625
|
-
r - t - i <=
|
|
628
|
+
r - t - i <= dt(e) && (n.style.display = "none");
|
|
626
629
|
};
|
|
627
630
|
return n.addEventListener("click", r), e.addEventListener("scroll", i, { passive: !0 }), () => {
|
|
628
631
|
n.removeEventListener("click", r), e.removeEventListener("scroll", i);
|
|
629
632
|
};
|
|
630
633
|
}
|
|
631
|
-
function
|
|
634
|
+
function gt() {
|
|
632
635
|
let e = D(function({ nodeId: e, context: t }) {
|
|
633
|
-
let n = I(t.store, e), r = M(null), i =
|
|
636
|
+
let n = I(t.store, e), r = M(null), i = B(n?.props?.targetViewId), a = n?.props?.focusOnly, o = typeof a == "boolean" ? a : void 0, s = B(n?.props?.priority), c = B(n?.props?.key), l = n?.props?.preciseGeneratedAt;
|
|
634
637
|
return k(() => {
|
|
635
638
|
if (typeof document > "u") return;
|
|
636
639
|
let e = r.current;
|
|
637
640
|
if (!e || i && e.closest("[data-ikon-view-id]")?.getAttribute("data-ikon-view-id") !== i) return;
|
|
638
641
|
let t, n;
|
|
639
642
|
if (o !== !0) {
|
|
640
|
-
let r =
|
|
641
|
-
if (r)
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
643
|
+
let r = U(e);
|
|
644
|
+
if (r) {
|
|
645
|
+
if (pt(r), s === "Polite" && !ft(r)) t = ht(r, e);
|
|
646
|
+
else {
|
|
647
|
+
let t = (r.parentElement ?? r).querySelector(`[${ct}]`);
|
|
648
|
+
t && (t.style.display = "none"), at(r, e), n = st(r, e);
|
|
649
|
+
}
|
|
650
|
+
} else typeof e.scrollIntoView == "function" && requestAnimationFrame(() => {
|
|
651
|
+
let t = e.getBoundingClientRect().top, n = typeof window < "u" ? window.innerHeight : 0, r = Math.abs(t) > n * it ? "auto" : "smooth";
|
|
648
652
|
try {
|
|
649
653
|
e.scrollIntoView({
|
|
650
654
|
behavior: r,
|
|
@@ -689,15 +693,15 @@ function ft() {
|
|
|
689
693
|
if (t === "std.focus-hint") return e;
|
|
690
694
|
};
|
|
691
695
|
}
|
|
692
|
-
function
|
|
696
|
+
function _t() {
|
|
693
697
|
let e = D(function({ nodeId: e, context: t, className: n }) {
|
|
694
|
-
let r = I(t.store, e), i =
|
|
698
|
+
let r = I(t.store, e), i = $e(r?.props?.onInvokeId), a = O(() => {
|
|
695
699
|
i && t.dispatchAction(i);
|
|
696
700
|
}, [i, t]);
|
|
697
701
|
if (!r) return null;
|
|
698
|
-
let o =
|
|
702
|
+
let o = rt(r.props);
|
|
699
703
|
delete o.onInvokeId;
|
|
700
|
-
let s =
|
|
704
|
+
let s = V(B(r.props?.className), n), c = r.children?.length ? t.renderChildren(r.children) : void 0;
|
|
701
705
|
return /* @__PURE__ */ P("div", {
|
|
702
706
|
...o,
|
|
703
707
|
"data-ikon-node-id": r.id,
|
|
@@ -709,7 +713,7 @@ function pt() {
|
|
|
709
713
|
onKeyDown: i ? (e) => {
|
|
710
714
|
(e.key === "Enter" || e.key === " ") && (e.preventDefault(), a());
|
|
711
715
|
} : void 0,
|
|
712
|
-
style:
|
|
716
|
+
style: nt(o.style, i ? "pointer" : void 0),
|
|
713
717
|
children: c
|
|
714
718
|
});
|
|
715
719
|
});
|
|
@@ -717,11 +721,11 @@ function pt() {
|
|
|
717
721
|
if (t === "std.div") return e;
|
|
718
722
|
};
|
|
719
723
|
}
|
|
720
|
-
function
|
|
724
|
+
function vt() {
|
|
721
725
|
let e = D(function({ nodeId: e, context: t, className: n }) {
|
|
722
726
|
let r = I(t.store, e);
|
|
723
727
|
if (!r) return null;
|
|
724
|
-
let i =
|
|
728
|
+
let i = rt(r.props), a = V("relative", B(r.props?.className), n), o = r.children?.length ? t.renderChildren(r.children) : void 0;
|
|
725
729
|
return /* @__PURE__ */ P("div", {
|
|
726
730
|
...i,
|
|
727
731
|
"data-ikon-node-id": r.id,
|
|
@@ -734,11 +738,11 @@ function mt() {
|
|
|
734
738
|
if (t === "std.stack") return e;
|
|
735
739
|
};
|
|
736
740
|
}
|
|
737
|
-
function
|
|
741
|
+
function yt() {
|
|
738
742
|
let e = D(function({ nodeId: e, context: t, className: n }) {
|
|
739
743
|
let r = I(t.store, e);
|
|
740
744
|
if (!r) return null;
|
|
741
|
-
let i =
|
|
745
|
+
let i = rt(r.props), a = V("absolute", B(r.props?.className), n), o = r.children?.length ? t.renderChildren(r.children) : void 0;
|
|
742
746
|
return /* @__PURE__ */ P("div", {
|
|
743
747
|
...i,
|
|
744
748
|
"data-ikon-node-id": r.id,
|
|
@@ -751,23 +755,23 @@ function ht() {
|
|
|
751
755
|
if (t === "std.layer") return e;
|
|
752
756
|
};
|
|
753
757
|
}
|
|
754
|
-
function
|
|
758
|
+
function bt() {
|
|
755
759
|
return [
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
+
_t(),
|
|
761
|
+
vt(),
|
|
762
|
+
yt(),
|
|
763
|
+
gt()
|
|
760
764
|
];
|
|
761
765
|
}
|
|
762
766
|
//#endregion
|
|
763
767
|
//#region src/base/base-module.ts
|
|
764
|
-
var
|
|
765
|
-
function
|
|
766
|
-
e.registerModule(
|
|
768
|
+
var xt = "base", St = async () => bt();
|
|
769
|
+
function Ct(e) {
|
|
770
|
+
e.registerModule(xt, St);
|
|
767
771
|
}
|
|
768
772
|
//#endregion
|
|
769
773
|
//#region src/media/audio-player.tsx
|
|
770
|
-
function
|
|
774
|
+
function wt(e) {
|
|
771
775
|
if (typeof e == "string") {
|
|
772
776
|
let t = e.trim();
|
|
773
777
|
return t.length > 0 ? t : void 0;
|
|
@@ -777,17 +781,17 @@ function bt(e) {
|
|
|
777
781
|
return t.length > 0 ? t.join(" ") : void 0;
|
|
778
782
|
}
|
|
779
783
|
}
|
|
780
|
-
function
|
|
784
|
+
function Tt(...e) {
|
|
781
785
|
let t = [];
|
|
782
786
|
for (let n of e) n && n.trim() && t.push(n.trim());
|
|
783
787
|
return t.length > 0 ? t.join(" ") : void 0;
|
|
784
788
|
}
|
|
785
|
-
function
|
|
789
|
+
function Et(e) {
|
|
786
790
|
if (typeof e != "string") return;
|
|
787
791
|
let t = e.trim();
|
|
788
792
|
return t.length > 0 ? t : void 0;
|
|
789
793
|
}
|
|
790
|
-
function
|
|
794
|
+
function Dt(e) {
|
|
791
795
|
if (typeof e == "boolean") return e;
|
|
792
796
|
if (typeof e == "string") {
|
|
793
797
|
let t = e.trim().toLowerCase();
|
|
@@ -795,13 +799,13 @@ function Ct(e) {
|
|
|
795
799
|
if (t === "false") return !1;
|
|
796
800
|
}
|
|
797
801
|
}
|
|
798
|
-
function
|
|
802
|
+
function Ot() {
|
|
799
803
|
let e = D(function({ nodeId: e, context: t, className: n }) {
|
|
800
|
-
let r = I(t.store, e), i = M(null), a = r ?
|
|
804
|
+
let r = I(t.store, e), i = M(null), a = r ? Dt(r.props?.autoplay) : void 0, o = r ? Et(r.props?.src) : void 0;
|
|
801
805
|
if (k(() => {
|
|
802
806
|
a && i.current && i.current.play().catch(() => {});
|
|
803
807
|
}, [a, o]), !r) return null;
|
|
804
|
-
let s =
|
|
808
|
+
let s = Tt(wt(r.props?.className), n), c = Et(r.props?.preload), l = Dt(r.props?.controls), u = Dt(r.props?.loop), d = Dt(r.props?.muted);
|
|
805
809
|
return /* @__PURE__ */ P("audio", {
|
|
806
810
|
ref: i,
|
|
807
811
|
src: o,
|
|
@@ -821,7 +825,7 @@ function wt() {
|
|
|
821
825
|
}
|
|
822
826
|
//#endregion
|
|
823
827
|
//#region src/media/video-stream-view.tsx
|
|
824
|
-
var
|
|
828
|
+
var kt = S("IkonVideoStreamView"), At = D(function({ client: e, streamId: t, className: n, style: r, width: i, height: a, attributes: o, getPlayback: s }) {
|
|
825
829
|
let c = M(null), l = M(null), [, u] = N(0);
|
|
826
830
|
k(() => {
|
|
827
831
|
if (e?.isWebRtcEnabled) return e.addWebRtcTrackMapListener((e) => {
|
|
@@ -837,14 +841,14 @@ var Tt = S("IkonVideoStreamView"), Et = D(function({ client: e, streamId: t, cla
|
|
|
837
841
|
let e = o();
|
|
838
842
|
if (!e) {
|
|
839
843
|
if (a++ >= 50) {
|
|
840
|
-
|
|
844
|
+
kt.warn(`Gave up attaching the canvas for stream ${t}: video playback never became available`);
|
|
841
845
|
return;
|
|
842
846
|
}
|
|
843
847
|
i = setTimeout(l, 100);
|
|
844
848
|
return;
|
|
845
849
|
}
|
|
846
850
|
e.attachCanvas(t, n).catch((e) => {
|
|
847
|
-
|
|
851
|
+
kt.error(`Failed to attach the canvas for stream ${t}, it will stay blank: ${String(e)}`);
|
|
848
852
|
});
|
|
849
853
|
};
|
|
850
854
|
return l(), () => {
|
|
@@ -882,7 +886,7 @@ var Tt = S("IkonVideoStreamView"), Et = D(function({ client: e, streamId: t, cla
|
|
|
882
886
|
});
|
|
883
887
|
//#endregion
|
|
884
888
|
//#region src/media/video-canvas.tsx
|
|
885
|
-
function
|
|
889
|
+
function jt(e) {
|
|
886
890
|
if (typeof e == "string") {
|
|
887
891
|
let t = e.trim();
|
|
888
892
|
return t.length > 0 ? t : void 0;
|
|
@@ -892,52 +896,68 @@ function Dt(e) {
|
|
|
892
896
|
return t.length > 0 ? t.join(" ") : void 0;
|
|
893
897
|
}
|
|
894
898
|
}
|
|
895
|
-
function
|
|
899
|
+
function Mt(...e) {
|
|
896
900
|
let t = [];
|
|
897
901
|
for (let n of e) n && n.trim() && t.push(n.trim());
|
|
898
902
|
return t.length > 0 ? t.join(" ") : void 0;
|
|
899
903
|
}
|
|
900
|
-
function
|
|
904
|
+
function Nt(e) {
|
|
901
905
|
if (typeof e == "number" && Number.isFinite(e)) return Math.floor(e);
|
|
902
906
|
if (typeof e == "string" && e.trim().length > 0) {
|
|
903
907
|
let t = Number(e);
|
|
904
908
|
if (Number.isFinite(t)) return Math.floor(t);
|
|
905
909
|
}
|
|
906
910
|
}
|
|
907
|
-
function
|
|
911
|
+
function Pt(e) {
|
|
908
912
|
if (typeof e != "string") return;
|
|
909
913
|
let t = e.trim();
|
|
910
914
|
return t.length > 0 ? t : void 0;
|
|
911
915
|
}
|
|
912
|
-
var
|
|
913
|
-
function
|
|
916
|
+
var Ft = "std.video-canvas", It = "std.video-url-player";
|
|
917
|
+
function Lt() {
|
|
914
918
|
let e = D(function({ nodeId: e, context: t, className: n }) {
|
|
915
|
-
let r = I(t.store, e), i = r ?
|
|
916
|
-
|
|
919
|
+
let r = I(t.store, e), i = r ? Pt(r.props?.streamId) : void 0, a = r ? Pt(r.props?.onTapId) : void 0, o = r ? Nt(r.props?.width) : void 0, s = r ? Nt(r.props?.height) : void 0, c = r ? Mt(jt(r.props?.className), n) : n, l = O(() => t.video ?? t.client?.media?.video, [t]), u = O((e) => {
|
|
920
|
+
if (!a) return;
|
|
921
|
+
let n = e.target.getBoundingClientRect();
|
|
922
|
+
n.width <= 0 || n.height <= 0 || t.dispatchAction(a, {
|
|
923
|
+
x: Math.min(1, Math.max(0, (e.clientX - n.left) / n.width)),
|
|
924
|
+
y: Math.min(1, Math.max(0, (e.clientY - n.top) / n.height))
|
|
925
|
+
});
|
|
926
|
+
}, [a, t]);
|
|
927
|
+
if (!r) return null;
|
|
928
|
+
let d = /* @__PURE__ */ P(At, {
|
|
917
929
|
client: t.client,
|
|
918
930
|
streamId: i,
|
|
919
|
-
className:
|
|
920
|
-
width:
|
|
921
|
-
height:
|
|
922
|
-
getPlayback:
|
|
931
|
+
className: c,
|
|
932
|
+
width: o,
|
|
933
|
+
height: s,
|
|
934
|
+
getPlayback: l,
|
|
923
935
|
attributes: {
|
|
924
936
|
"data-ikon-node-id": r.id,
|
|
925
937
|
...r.sourceMarker ? { "data-ikon-source": r.sourceMarker } : {}
|
|
926
938
|
}
|
|
927
|
-
})
|
|
939
|
+
});
|
|
940
|
+
return a ? /* @__PURE__ */ P("div", {
|
|
941
|
+
style: {
|
|
942
|
+
display: "contents",
|
|
943
|
+
cursor: "pointer"
|
|
944
|
+
},
|
|
945
|
+
onPointerUp: u,
|
|
946
|
+
children: d
|
|
947
|
+
}) : d;
|
|
928
948
|
});
|
|
929
949
|
return ({ type: t }) => {
|
|
930
950
|
if (t === "std.video-canvas") return e;
|
|
931
951
|
};
|
|
932
952
|
}
|
|
933
|
-
function
|
|
953
|
+
function Rt() {
|
|
934
954
|
return [
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
955
|
+
Lt(),
|
|
956
|
+
Bt(),
|
|
957
|
+
Ot()
|
|
938
958
|
];
|
|
939
959
|
}
|
|
940
|
-
function
|
|
960
|
+
function zt(e) {
|
|
941
961
|
if (typeof e == "boolean") return e;
|
|
942
962
|
if (typeof e == "string") {
|
|
943
963
|
let t = e.trim().toLowerCase();
|
|
@@ -945,13 +965,13 @@ function Ft(e) {
|
|
|
945
965
|
if (t === "false") return !1;
|
|
946
966
|
}
|
|
947
967
|
}
|
|
948
|
-
function
|
|
968
|
+
function Bt() {
|
|
949
969
|
let e = D(function({ nodeId: e, context: t, className: n }) {
|
|
950
|
-
let r = I(t.store, e), i = M(null), a = r ?
|
|
970
|
+
let r = I(t.store, e), i = M(null), a = r ? zt(r.props?.autoplay) : void 0, o = r ? Pt(r.props?.src) : void 0;
|
|
951
971
|
if (k(() => {
|
|
952
972
|
a && i.current && i.current.play().catch(() => {});
|
|
953
973
|
}, [a, o]), !r) return null;
|
|
954
|
-
let s =
|
|
974
|
+
let s = Mt(jt(r.props?.className), n), c = Pt(r.props?.poster), l = zt(r.props?.controls), u = zt(r.props?.loop), d = zt(r.props?.muted), f = zt(r.props?.playsInline), p = Nt(r.props?.width), m = Nt(r.props?.height), h = r.children?.length ? t.renderChildren(r.children) : void 0;
|
|
955
975
|
return /* @__PURE__ */ P("video", {
|
|
956
976
|
ref: i,
|
|
957
977
|
src: o,
|
|
@@ -975,20 +995,20 @@ function It() {
|
|
|
975
995
|
}
|
|
976
996
|
//#endregion
|
|
977
997
|
//#region src/media/media-module.ts
|
|
978
|
-
var
|
|
979
|
-
function
|
|
980
|
-
e.registerModule(
|
|
998
|
+
var Vt = "media", Ht = async () => Rt();
|
|
999
|
+
function Ut(e) {
|
|
1000
|
+
e.registerModule(Vt, Ht);
|
|
981
1001
|
}
|
|
982
1002
|
//#endregion
|
|
983
1003
|
//#region src/shadertoy/shadertoy-gl.ts
|
|
984
|
-
var
|
|
985
|
-
function
|
|
1004
|
+
var Wt = "#version 300 es\nin vec4 a_position;\nvoid main() {\n gl_Position = a_position;\n}\n", Gt = 4;
|
|
1005
|
+
function Kt(e, t) {
|
|
986
1006
|
return RegExp(`\\buniform\\s+\\w+\\s+${t}\\s*;`, "g").test(e);
|
|
987
1007
|
}
|
|
988
|
-
function
|
|
1008
|
+
function qt(e, t) {
|
|
989
1009
|
let n = [];
|
|
990
1010
|
for (let [r, i] of Object.entries(t)) {
|
|
991
|
-
if (
|
|
1011
|
+
if (Kt(e, r)) continue;
|
|
992
1012
|
let t;
|
|
993
1013
|
switch (i.type) {
|
|
994
1014
|
case "float":
|
|
@@ -1046,7 +1066,7 @@ void main() {
|
|
|
1046
1066
|
}
|
|
1047
1067
|
`;
|
|
1048
1068
|
}
|
|
1049
|
-
var
|
|
1069
|
+
var Jt = class {
|
|
1050
1070
|
gl;
|
|
1051
1071
|
program = null;
|
|
1052
1072
|
positionBuffer = null;
|
|
@@ -1062,7 +1082,7 @@ var Wt = class {
|
|
|
1062
1082
|
mouseClickY = 0;
|
|
1063
1083
|
channels = [];
|
|
1064
1084
|
channelResolution = /* @__PURE__ */ new Float32Array(12);
|
|
1065
|
-
channelTime = new Float32Array(
|
|
1085
|
+
channelTime = new Float32Array(Gt);
|
|
1066
1086
|
lastError = null;
|
|
1067
1087
|
currentShaderSource = "";
|
|
1068
1088
|
constructor(e) {
|
|
@@ -1097,7 +1117,7 @@ var Wt = class {
|
|
|
1097
1117
|
}
|
|
1098
1118
|
initializeChannels() {
|
|
1099
1119
|
let e = this.gl;
|
|
1100
|
-
for (let t = 0; t <
|
|
1120
|
+
for (let t = 0; t < Gt; t++) {
|
|
1101
1121
|
let t = e.createTexture();
|
|
1102
1122
|
e.bindTexture(e.TEXTURE_2D, t), e.texImage2D(e.TEXTURE_2D, 0, e.RGBA, 1, 1, 0, e.RGBA, e.UNSIGNED_BYTE, new Uint8Array([
|
|
1103
1123
|
0,
|
|
@@ -1114,7 +1134,7 @@ var Wt = class {
|
|
|
1114
1134
|
e.bindTexture(e.TEXTURE_2D, null);
|
|
1115
1135
|
}
|
|
1116
1136
|
setChannels(e) {
|
|
1117
|
-
for (let t = 0; t <
|
|
1137
|
+
for (let t = 0; t < Gt; t++) {
|
|
1118
1138
|
let n = e[t] ?? null, r = this.channels[t];
|
|
1119
1139
|
if (r.url !== n) {
|
|
1120
1140
|
if (r.url = n, !n) {
|
|
@@ -1145,9 +1165,9 @@ var Wt = class {
|
|
|
1145
1165
|
}
|
|
1146
1166
|
compile(e, t = {}) {
|
|
1147
1167
|
this.lastError = null, this.customUniforms = t, this.currentShaderSource = e;
|
|
1148
|
-
let n = this.gl, r = this.compileShader(n.VERTEX_SHADER,
|
|
1168
|
+
let n = this.gl, r = this.compileShader(n.VERTEX_SHADER, Wt);
|
|
1149
1169
|
if (!r) return !1;
|
|
1150
|
-
let i =
|
|
1170
|
+
let i = qt(e, t), a = this.compileShader(n.FRAGMENT_SHADER, i);
|
|
1151
1171
|
if (!a) return n.deleteShader(r), !1;
|
|
1152
1172
|
let o = n.createProgram();
|
|
1153
1173
|
return o ? (n.attachShader(o, r), n.attachShader(o, a), n.linkProgram(o), n.deleteShader(r), n.deleteShader(a), n.getProgramParameter(o, n.LINK_STATUS) ? (this.program && n.deleteProgram(this.program), this.program = o, this.cacheUniformLocations(), !0) : (this.lastError = n.getProgramInfoLog(o) || "Program link failed", n.deleteProgram(o), !1)) : (this.lastError = "Failed to create program", n.deleteShader(r), n.deleteShader(a), !1);
|
|
@@ -1171,7 +1191,7 @@ var Wt = class {
|
|
|
1171
1191
|
"iMouse",
|
|
1172
1192
|
"iDate"
|
|
1173
1193
|
]) this.uniformLocations.set(t, e.getUniformLocation(this.program, t));
|
|
1174
|
-
for (let t = 0; t <
|
|
1194
|
+
for (let t = 0; t < Gt; t++) this.uniformLocations.set(`iChannel${t}`, e.getUniformLocation(this.program, `iChannel${t}`));
|
|
1175
1195
|
this.uniformLocations.set("iChannelResolution", e.getUniformLocation(this.program, "iChannelResolution[0]")), this.uniformLocations.set("iChannelTime", e.getUniformLocation(this.program, "iChannelTime[0]"));
|
|
1176
1196
|
for (let t of Object.keys(this.customUniforms)) this.uniformLocations.set(t, e.getUniformLocation(this.program, t));
|
|
1177
1197
|
}
|
|
@@ -1203,7 +1223,7 @@ var Wt = class {
|
|
|
1203
1223
|
let t = /* @__PURE__ */ new Date();
|
|
1204
1224
|
e.uniform4f(p, t.getFullYear(), t.getMonth(), t.getDate(), t.getHours() * 3600 + t.getMinutes() * 60 + t.getSeconds() + t.getMilliseconds() / 1e3);
|
|
1205
1225
|
}
|
|
1206
|
-
for (let t = 0; t <
|
|
1226
|
+
for (let t = 0; t < Gt; t++) {
|
|
1207
1227
|
e.activeTexture(e.TEXTURE0 + t), e.bindTexture(e.TEXTURE_2D, this.channels[t].texture);
|
|
1208
1228
|
let n = this.uniformLocations.get(`iChannel${t}`);
|
|
1209
1229
|
n && e.uniform1i(n, t);
|
|
@@ -1253,7 +1273,7 @@ var Wt = class {
|
|
|
1253
1273
|
};
|
|
1254
1274
|
//#endregion
|
|
1255
1275
|
//#region src/shadertoy/shadertoy-renderer.tsx
|
|
1256
|
-
function
|
|
1276
|
+
function Yt(e) {
|
|
1257
1277
|
if (typeof e == "string") {
|
|
1258
1278
|
let t = e.trim();
|
|
1259
1279
|
return t.length > 0 ? t : void 0;
|
|
@@ -1263,22 +1283,22 @@ function Gt(e) {
|
|
|
1263
1283
|
return t.length > 0 ? t.join(" ") : void 0;
|
|
1264
1284
|
}
|
|
1265
1285
|
}
|
|
1266
|
-
function
|
|
1286
|
+
function Xt(...e) {
|
|
1267
1287
|
let t = [];
|
|
1268
1288
|
for (let n of e) n && n.trim() && t.push(n.trim());
|
|
1269
1289
|
return t.length > 0 ? t.join(" ") : void 0;
|
|
1270
1290
|
}
|
|
1271
|
-
function
|
|
1291
|
+
function Zt(e) {
|
|
1272
1292
|
if (typeof e == "number" && Number.isFinite(e)) return Math.floor(e);
|
|
1273
1293
|
if (typeof e == "string" && e.trim().length > 0) {
|
|
1274
1294
|
let t = Number(e);
|
|
1275
1295
|
if (Number.isFinite(t)) return Math.floor(t);
|
|
1276
1296
|
}
|
|
1277
1297
|
}
|
|
1278
|
-
function
|
|
1298
|
+
function Qt(e) {
|
|
1279
1299
|
return typeof e == "string" ? e : "";
|
|
1280
1300
|
}
|
|
1281
|
-
function
|
|
1301
|
+
function $t(e) {
|
|
1282
1302
|
if (typeof e == "boolean") return e;
|
|
1283
1303
|
if (typeof e == "string") {
|
|
1284
1304
|
let t = e.trim().toLowerCase();
|
|
@@ -1286,7 +1306,7 @@ function Yt(e) {
|
|
|
1286
1306
|
if (t === "false") return !1;
|
|
1287
1307
|
}
|
|
1288
1308
|
}
|
|
1289
|
-
function
|
|
1309
|
+
function en(e) {
|
|
1290
1310
|
if (!e || typeof e != "object") return {};
|
|
1291
1311
|
let t = {}, n = e;
|
|
1292
1312
|
for (let [e, r] of Object.entries(n)) {
|
|
@@ -1306,10 +1326,10 @@ function Xt(e) {
|
|
|
1306
1326
|
}
|
|
1307
1327
|
return t;
|
|
1308
1328
|
}
|
|
1309
|
-
function
|
|
1329
|
+
function tn(e) {
|
|
1310
1330
|
return Array.isArray(e) ? e.map((e) => typeof e == "string" ? e : null) : [];
|
|
1311
1331
|
}
|
|
1312
|
-
function
|
|
1332
|
+
function nn(e, t) {
|
|
1313
1333
|
let n = Object.keys(e), r = Object.keys(t);
|
|
1314
1334
|
if (n.length !== r.length) return !1;
|
|
1315
1335
|
for (let r of n) {
|
|
@@ -1323,8 +1343,8 @@ function Qt(e, t) {
|
|
|
1323
1343
|
}
|
|
1324
1344
|
return !0;
|
|
1325
1345
|
}
|
|
1326
|
-
var
|
|
1327
|
-
function
|
|
1346
|
+
var rn = "std.shadertoy-canvas";
|
|
1347
|
+
function an() {
|
|
1328
1348
|
let e = D(function({ nodeId: e, context: t, className: n }) {
|
|
1329
1349
|
let r = I(t.store, e), i = M(null), a = M(null), o = M(null), s = M(0), c = M(""), l = M({}), u = M({
|
|
1330
1350
|
x: 0,
|
|
@@ -1332,12 +1352,12 @@ function en() {
|
|
|
1332
1352
|
clickX: 0,
|
|
1333
1353
|
clickY: 0,
|
|
1334
1354
|
isDown: !1
|
|
1335
|
-
}), d = r ?
|
|
1355
|
+
}), d = r ? Qt(r.props?.shaderSource) : "", f = r ? Zt(r.props?.fps) ?? 60 : 60, p = r?.props?.uniforms, m = j(() => en(p), [p]), h = r?.props?.channels, g = j(() => tn(h), [h]), _ = r ? $t(r.props?.enableMouse) ?? !0 : !0, v = r ? Zt(r.props?.width) : void 0, y = r ? Zt(r.props?.height) : void 0, ee = r ? Xt(Yt(r.props?.className), n) : n;
|
|
1336
1356
|
k(() => {
|
|
1337
1357
|
let e = i.current;
|
|
1338
1358
|
if (e) {
|
|
1339
1359
|
try {
|
|
1340
|
-
let t = new
|
|
1360
|
+
let t = new Jt(e);
|
|
1341
1361
|
a.current = t;
|
|
1342
1362
|
} catch (e) {
|
|
1343
1363
|
console.error("[ShadertoyRenderer] Failed to create WebGL2 context:", e);
|
|
@@ -1348,14 +1368,16 @@ function en() {
|
|
|
1348
1368
|
}
|
|
1349
1369
|
}, []), k(() => {
|
|
1350
1370
|
let e = a.current;
|
|
1351
|
-
if (!(!e || !d) && c.current !== d)
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1371
|
+
if (!(!e || !d) && c.current !== d) {
|
|
1372
|
+
if (e.compile(d, m)) c.current = d, l.current = m;
|
|
1373
|
+
else {
|
|
1374
|
+
let t = e.getError();
|
|
1375
|
+
console.error("[ShadertoyRenderer] Shader compilation failed:", t);
|
|
1376
|
+
}
|
|
1355
1377
|
}
|
|
1356
1378
|
}, [d, m]), k(() => {
|
|
1357
1379
|
let e = a.current;
|
|
1358
|
-
!e || !c.current ||
|
|
1380
|
+
!e || !c.current || nn(l.current, m) || (e.setCustomUniforms(m), l.current = m);
|
|
1359
1381
|
}, [m]), k(() => {
|
|
1360
1382
|
let e = a.current;
|
|
1361
1383
|
e && e.setChannels(g);
|
|
@@ -1370,32 +1392,32 @@ function en() {
|
|
|
1370
1392
|
o.current !== null && (cancelAnimationFrame(o.current), o.current = null);
|
|
1371
1393
|
};
|
|
1372
1394
|
}, [f]);
|
|
1373
|
-
let
|
|
1395
|
+
let te = O((e) => {
|
|
1374
1396
|
if (!_) return;
|
|
1375
1397
|
let t = i.current, n = a.current;
|
|
1376
1398
|
if (!t || !n) return;
|
|
1377
1399
|
let r = window.devicePixelRatio || 1, o = t.getBoundingClientRect(), s = (e.clientX - o.left) * r, c = (o.height - (e.clientY - o.top)) * r;
|
|
1378
1400
|
u.current.x = s, u.current.y = c, n.setMouse(s, c, u.current.clickX, u.current.clickY);
|
|
1379
|
-
}, [_]),
|
|
1401
|
+
}, [_]), b = O((e) => {
|
|
1380
1402
|
if (!_) return;
|
|
1381
1403
|
let t = i.current, n = a.current;
|
|
1382
1404
|
if (!t || !n) return;
|
|
1383
1405
|
let r = window.devicePixelRatio || 1, o = t.getBoundingClientRect(), s = (e.clientX - o.left) * r, c = (o.height - (e.clientY - o.top)) * r;
|
|
1384
1406
|
u.current.isDown = !0, u.current.clickX = s, u.current.clickY = c, n.setMouse(s, c, s, c);
|
|
1385
|
-
}, [_]),
|
|
1407
|
+
}, [_]), x = O(() => {
|
|
1386
1408
|
_ && (u.current.isDown = !1, u.current.clickX = -Math.abs(u.current.clickX));
|
|
1387
1409
|
}, [_]);
|
|
1388
1410
|
return r ? /* @__PURE__ */ P("canvas", {
|
|
1389
1411
|
ref: i,
|
|
1390
1412
|
"data-ikon-node-id": r.id,
|
|
1391
1413
|
"data-ikon-source": r.sourceMarker,
|
|
1392
|
-
className:
|
|
1393
|
-
...
|
|
1394
|
-
...
|
|
1395
|
-
onMouseMove:
|
|
1396
|
-
onMouseDown:
|
|
1397
|
-
onMouseUp:
|
|
1398
|
-
onMouseLeave:
|
|
1414
|
+
className: ee,
|
|
1415
|
+
...v ? { width: v } : {},
|
|
1416
|
+
...y ? { height: y } : {},
|
|
1417
|
+
onMouseMove: te,
|
|
1418
|
+
onMouseDown: b,
|
|
1419
|
+
onMouseUp: x,
|
|
1420
|
+
onMouseLeave: x
|
|
1399
1421
|
}) : null;
|
|
1400
1422
|
});
|
|
1401
1423
|
return ({ type: t }) => {
|
|
@@ -1404,13 +1426,13 @@ function en() {
|
|
|
1404
1426
|
}
|
|
1405
1427
|
//#endregion
|
|
1406
1428
|
//#region src/shadertoy/shadertoy-module.ts
|
|
1407
|
-
var
|
|
1408
|
-
function
|
|
1409
|
-
e.registerModule(
|
|
1429
|
+
var on = "shadertoy", sn = async () => an();
|
|
1430
|
+
function cn(e) {
|
|
1431
|
+
e.registerModule(on, sn);
|
|
1410
1432
|
}
|
|
1411
1433
|
//#endregion
|
|
1412
1434
|
//#region src/ikon-ui-registry.ts
|
|
1413
|
-
var
|
|
1435
|
+
var ln = S("UIRegistry"), un = class {
|
|
1414
1436
|
baseResolvers = [];
|
|
1415
1437
|
moduleLoaders = /* @__PURE__ */ new Map();
|
|
1416
1438
|
moduleResolvers = /* @__PURE__ */ new Map();
|
|
@@ -1436,14 +1458,14 @@ var an = S("UIRegistry"), on = class {
|
|
|
1436
1458
|
async loadRegisteredModules() {
|
|
1437
1459
|
let e = !1;
|
|
1438
1460
|
for (let [t, n] of this.moduleLoaders.entries()) if (!this.moduleResolvers.has(t)) try {
|
|
1439
|
-
let r =
|
|
1461
|
+
let r = pn(await n());
|
|
1440
1462
|
this.moduleResolvers.set(t, r), e = !0;
|
|
1441
1463
|
} catch (e) {
|
|
1442
|
-
|
|
1464
|
+
ln.error(`[IkonUiRegistry] Failed to load module '${t}'.`, e);
|
|
1443
1465
|
}
|
|
1444
1466
|
let t = [];
|
|
1445
1467
|
for (let e of this.moduleLoaders.keys()) this.moduleResolvers.has(e) && t.push(e);
|
|
1446
|
-
return
|
|
1468
|
+
return mn(t, this.activeModuleOrder) || (this.activeModuleOrder = t, e = !0), e && this.notify(), e;
|
|
1447
1469
|
}
|
|
1448
1470
|
resolve(e) {
|
|
1449
1471
|
for (let t of this.baseResolvers) {
|
|
@@ -1453,7 +1475,7 @@ var an = S("UIRegistry"), on = class {
|
|
|
1453
1475
|
for (let t of this.activeModuleOrder) {
|
|
1454
1476
|
let n = this.moduleResolvers.get(t);
|
|
1455
1477
|
if (!n) {
|
|
1456
|
-
|
|
1478
|
+
ln.warn(`Missing resolvers for module ${t}`);
|
|
1457
1479
|
continue;
|
|
1458
1480
|
}
|
|
1459
1481
|
for (let t of n) {
|
|
@@ -1466,25 +1488,25 @@ var an = S("UIRegistry"), on = class {
|
|
|
1466
1488
|
for (let e of this.listeners) e();
|
|
1467
1489
|
}
|
|
1468
1490
|
};
|
|
1469
|
-
function
|
|
1470
|
-
let e = new
|
|
1471
|
-
return
|
|
1491
|
+
function dn() {
|
|
1492
|
+
let e = new un();
|
|
1493
|
+
return Ct(e), Ut(e), cn(e), e.loadRegisteredModules(), e;
|
|
1472
1494
|
}
|
|
1473
|
-
function
|
|
1495
|
+
function fn(e) {
|
|
1474
1496
|
return Array.isArray(e) ? e : [e];
|
|
1475
1497
|
}
|
|
1476
|
-
function
|
|
1477
|
-
return e ?
|
|
1498
|
+
function pn(e) {
|
|
1499
|
+
return e ? fn(e).flatMap((e) => e ? Array.isArray(e) ? e.filter(Boolean) : [e] : []) : [];
|
|
1478
1500
|
}
|
|
1479
|
-
function
|
|
1501
|
+
function mn(e, t) {
|
|
1480
1502
|
if (e.length !== t.length) return !1;
|
|
1481
1503
|
for (let n = 0; n < e.length; n += 1) if (e[n] !== t[n]) return !1;
|
|
1482
1504
|
return !0;
|
|
1483
1505
|
}
|
|
1484
1506
|
//#endregion
|
|
1485
1507
|
//#region src/parallax-view.tsx
|
|
1486
|
-
function
|
|
1487
|
-
return /* @__PURE__ */ P(
|
|
1508
|
+
function hn({ mount: e, stores: t, registry: n, client: r, onAction: i }) {
|
|
1509
|
+
return /* @__PURE__ */ P(z, {
|
|
1488
1510
|
stores: t,
|
|
1489
1511
|
registry: n,
|
|
1490
1512
|
category: e,
|
|
@@ -1494,7 +1516,7 @@ function dn({ mount: e, stores: t, registry: n, client: r, onAction: i }) {
|
|
|
1494
1516
|
}
|
|
1495
1517
|
//#endregion
|
|
1496
1518
|
//#region src/motion/motion-controller.ts
|
|
1497
|
-
var
|
|
1519
|
+
var gn = S("MotionController"), _n = {
|
|
1498
1520
|
ease: [
|
|
1499
1521
|
.25,
|
|
1500
1522
|
.1,
|
|
@@ -1667,17 +1689,17 @@ var fn = S("MotionController"), pn = {
|
|
|
1667
1689
|
function W(e) {
|
|
1668
1690
|
return e <= 0 ? 0 : e >= 1 ? 1 : e;
|
|
1669
1691
|
}
|
|
1670
|
-
function
|
|
1692
|
+
function vn(e) {
|
|
1671
1693
|
if (e == null) return;
|
|
1672
1694
|
let t = e.trim();
|
|
1673
1695
|
if (!t) return;
|
|
1674
1696
|
let n = Number.parseFloat(t);
|
|
1675
1697
|
return Number.isFinite(n) ? n : void 0;
|
|
1676
1698
|
}
|
|
1677
|
-
function
|
|
1699
|
+
function yn(e) {
|
|
1678
1700
|
return typeof CSS < "u" && CSS.escape ? CSS.escape(e) : e.replace(/[^a-zA-Z0-9_-]/g, (e) => `\\${e}`);
|
|
1679
1701
|
}
|
|
1680
|
-
function
|
|
1702
|
+
function bn(e, t, n, r) {
|
|
1681
1703
|
let i = 1 / 10, a = /* @__PURE__ */ new Float32Array(11);
|
|
1682
1704
|
function o(e, t, n) {
|
|
1683
1705
|
return ((3 * t - 3 * n + 1) * e + (3 * n - 6 * t)) * e * e + 3 * t * e;
|
|
@@ -1711,34 +1733,34 @@ function gn(e, t, n, r) {
|
|
|
1711
1733
|
for (let t = 0; t < 11; t += 1) a[t] = o(t * i, e, n);
|
|
1712
1734
|
return (e) => e <= 0 ? 0 : e >= 1 ? 1 : o(u(e), t, r);
|
|
1713
1735
|
}
|
|
1714
|
-
function
|
|
1736
|
+
function xn(e) {
|
|
1715
1737
|
let t = /steps\(\s*([0-9]+)\s*(?:,\s*([a-z-]+)\s*)?\)/i.exec(e);
|
|
1716
1738
|
if (!t) return (e) => W(e);
|
|
1717
1739
|
let n = Math.max(1, parseInt(t[1], 10)), r = (t[2] ?? "end").toLowerCase();
|
|
1718
1740
|
return r === "start" || r === "jump-start" ? (e) => W(Math.ceil(e * n) / n) : r === "none" || r === "jump-none" ? (e) => W(Math.round(e * n) / n) : r === "both" || r === "jump-both" ? (e) => W((Math.floor(e * n) + .5) / n) : (e) => W(Math.floor(e * n) / n);
|
|
1719
1741
|
}
|
|
1720
|
-
function
|
|
1742
|
+
function Sn(e) {
|
|
1721
1743
|
if (!e) return (e) => W(e);
|
|
1722
1744
|
let t = e.trim().toLowerCase();
|
|
1723
1745
|
if (!t || t === "linear") return (e) => W(e);
|
|
1724
|
-
if (
|
|
1725
|
-
let [e, n, r, i] =
|
|
1746
|
+
if (_n[t]) {
|
|
1747
|
+
let [e, n, r, i] = _n[t], a = bn(e, n, r, i);
|
|
1726
1748
|
return (e) => W(a(W(e)));
|
|
1727
1749
|
}
|
|
1728
1750
|
if (t.startsWith("cubic-bezier(") && t.endsWith(")")) {
|
|
1729
1751
|
let e = t.slice(13, -1).split(",").map((e) => Number.parseFloat(e.trim()));
|
|
1730
1752
|
if (e.length === 4 && e.every((e) => Number.isFinite(e))) {
|
|
1731
|
-
let [t, n, r, i] = e, a =
|
|
1753
|
+
let [t, n, r, i] = e, a = bn(t, n, r, i);
|
|
1732
1754
|
return (e) => W(a(W(e)));
|
|
1733
1755
|
}
|
|
1734
1756
|
}
|
|
1735
1757
|
if (t.startsWith("steps(") && t.endsWith(")")) {
|
|
1736
|
-
let e =
|
|
1758
|
+
let e = xn(t);
|
|
1737
1759
|
return (t) => e(W(t));
|
|
1738
1760
|
}
|
|
1739
1761
|
return (e) => W(e);
|
|
1740
1762
|
}
|
|
1741
|
-
function
|
|
1763
|
+
function Cn(e) {
|
|
1742
1764
|
if (!e) return;
|
|
1743
1765
|
let t = /(-?\d+(?:\.\d+)?)\s*\.\.\s*(-?\d+(?:\.\d+)?)\s*->\s*(-?\d+(?:\.\d+)?)\s*\.\.\s*(-?\d+(?:\.\d+)?)/.exec(e);
|
|
1744
1766
|
if (!t) return;
|
|
@@ -1755,7 +1777,7 @@ function yn(e) {
|
|
|
1755
1777
|
outEnd: a
|
|
1756
1778
|
};
|
|
1757
1779
|
}
|
|
1758
|
-
var
|
|
1780
|
+
var wn = new class {
|
|
1759
1781
|
bindingsByStyle = /* @__PURE__ */ new Map();
|
|
1760
1782
|
observer;
|
|
1761
1783
|
observeScheduled = !1;
|
|
@@ -1766,7 +1788,7 @@ var bn = new class {
|
|
|
1766
1788
|
globalCleanups = /* @__PURE__ */ new Set();
|
|
1767
1789
|
registerStyle(e, t) {
|
|
1768
1790
|
if (!e) return;
|
|
1769
|
-
let n = this.parseMetadata(t);
|
|
1791
|
+
let n = this.parseMetadata(e, t);
|
|
1770
1792
|
if (!n) {
|
|
1771
1793
|
this.bindingsByStyle.delete(e), this.cleanupStyle(e);
|
|
1772
1794
|
return;
|
|
@@ -1780,32 +1802,43 @@ var bn = new class {
|
|
|
1780
1802
|
for (let e of Array.from(this.globalCleanups)) try {
|
|
1781
1803
|
e();
|
|
1782
1804
|
} catch (e) {
|
|
1783
|
-
|
|
1805
|
+
gn.warn("Failed to cleanup binding listener", e);
|
|
1784
1806
|
}
|
|
1785
1807
|
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);
|
|
1786
1808
|
}
|
|
1787
|
-
parseMetadata(e) {
|
|
1788
|
-
if (
|
|
1789
|
-
let
|
|
1790
|
-
|
|
1809
|
+
parseMetadata(e, t) {
|
|
1810
|
+
if (t) try {
|
|
1811
|
+
let n = JSON.parse(t).motionBindings ?? [], r = n.map((t) => this.parseBinding(e, t)).filter((e) => e !== void 0);
|
|
1812
|
+
if (r.length === 0) {
|
|
1813
|
+
n.length > 0 && gn.warn(`Style ${e} declares ${n.length} motion binding(s) but none are usable; it will not animate`);
|
|
1814
|
+
return;
|
|
1815
|
+
}
|
|
1816
|
+
return { bindings: r };
|
|
1791
1817
|
} catch (e) {
|
|
1792
|
-
|
|
1818
|
+
gn.warn("Failed to parse motion metadata", e);
|
|
1793
1819
|
return;
|
|
1794
1820
|
}
|
|
1795
1821
|
}
|
|
1796
|
-
parseBinding(e) {
|
|
1797
|
-
let
|
|
1798
|
-
if (!
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1822
|
+
parseBinding(e, t) {
|
|
1823
|
+
let n = t.source?.trim();
|
|
1824
|
+
if (!n) {
|
|
1825
|
+
gn.warn(`Style ${e} has a motion binding with no source; discarding it`);
|
|
1826
|
+
return;
|
|
1827
|
+
}
|
|
1828
|
+
let r = vn(t.min) ?? 0, i = vn(t.max), a = i === void 0 ? r + 100 : i, o = (t.clamp ?? "clamp").trim().toLowerCase(), s = !!t.reverse, c = Sn(t.ease), l = Cn(t.map), u = t.targetId?.trim() || void 0;
|
|
1829
|
+
if (Number.isNaN(r) || Number.isNaN(a)) {
|
|
1830
|
+
gn.warn(`Style ${e} has a motion binding on '${n}' with an unreadable range; discarding it`);
|
|
1831
|
+
return;
|
|
1832
|
+
}
|
|
1833
|
+
return {
|
|
1834
|
+
source: n.toLowerCase(),
|
|
1835
|
+
min: r,
|
|
1836
|
+
max: a,
|
|
1837
|
+
clamp: o === "freeze-start" || o === "freeze-end" || o === "unclamped" ? o : "clamp",
|
|
1838
|
+
reverse: s,
|
|
1839
|
+
ease: c,
|
|
1840
|
+
map: l,
|
|
1841
|
+
targetId: u
|
|
1809
1842
|
};
|
|
1810
1843
|
}
|
|
1811
1844
|
ensureObserver() {
|
|
@@ -1842,7 +1875,7 @@ var bn = new class {
|
|
|
1842
1875
|
scanExistingNodes(e) {
|
|
1843
1876
|
let t = this.bindingsByStyle.get(e);
|
|
1844
1877
|
if (!t || typeof document > "u") return;
|
|
1845
|
-
let n = `.${
|
|
1878
|
+
let n = `.${yn(e)}`;
|
|
1846
1879
|
document.querySelectorAll(n).forEach((n) => this.applyStyleToElement(n, e, t));
|
|
1847
1880
|
}
|
|
1848
1881
|
applyStyleToElement(e, t, n) {
|
|
@@ -1878,7 +1911,7 @@ var bn = new class {
|
|
|
1878
1911
|
}
|
|
1879
1912
|
resolveScrollContainer(e, t) {
|
|
1880
1913
|
if (t.targetId) {
|
|
1881
|
-
let e = `[data-ikon-motion-source="${
|
|
1914
|
+
let e = `[data-ikon-motion-source="${yn(t.targetId)}"]`, n = typeof document < "u" ? document.querySelector(e) : null;
|
|
1882
1915
|
if (n) return n;
|
|
1883
1916
|
}
|
|
1884
1917
|
return e.closest("[data-ikon-view-type=\"scroll-view\"]");
|
|
@@ -1933,7 +1966,7 @@ var bn = new class {
|
|
|
1933
1966
|
try {
|
|
1934
1967
|
e();
|
|
1935
1968
|
} catch (e) {
|
|
1936
|
-
|
|
1969
|
+
gn.warn("Failed to cleanup listener", e);
|
|
1937
1970
|
}
|
|
1938
1971
|
this.globalCleanups.delete(e);
|
|
1939
1972
|
}
|
|
@@ -1973,26 +2006,26 @@ var bn = new class {
|
|
|
1973
2006
|
}();
|
|
1974
2007
|
//#endregion
|
|
1975
2008
|
//#region src/use-ikon-styles.ts
|
|
1976
|
-
function
|
|
2009
|
+
function Tn(e) {
|
|
1977
2010
|
let t = M(/* @__PURE__ */ new Map()), n = O(({ styleId: e, css: n, common: r }) => {
|
|
1978
2011
|
if (!(!e || typeof document > "u")) {
|
|
1979
2012
|
if (n) {
|
|
1980
2013
|
let r = t.current.get(e);
|
|
1981
2014
|
r || (r = document.createElement("style"), r.setAttribute("data-ikon-style-id", e), document.head.appendChild(r), t.current.set(e, r)), r.textContent = n;
|
|
1982
2015
|
}
|
|
1983
|
-
|
|
2016
|
+
wn.registerStyle(e, r);
|
|
1984
2017
|
}
|
|
1985
2018
|
}, []), r = O((e) => {
|
|
1986
2019
|
if (!(typeof document > "u")) for (let n of e) {
|
|
1987
2020
|
let e = t.current.get(n);
|
|
1988
|
-
e && (e.remove(), t.current.delete(n)),
|
|
2021
|
+
e && (e.remove(), t.current.delete(n)), wn.unregisterStyle(n);
|
|
1989
2022
|
}
|
|
1990
2023
|
}, []), i = O(() => {
|
|
1991
2024
|
if (typeof document < "u") {
|
|
1992
2025
|
for (let e of t.current.values()) e.remove();
|
|
1993
2026
|
t.current.clear();
|
|
1994
2027
|
}
|
|
1995
|
-
|
|
2028
|
+
wn.reset();
|
|
1996
2029
|
}, []);
|
|
1997
2030
|
return k(() => {
|
|
1998
2031
|
if (!e) return;
|
|
@@ -2014,7 +2047,7 @@ function xn(e) {
|
|
|
2014
2047
|
}
|
|
2015
2048
|
//#endregion
|
|
2016
2049
|
//#region src/use-ikon-ui-stores.ts
|
|
2017
|
-
function
|
|
2050
|
+
function En(e) {
|
|
2018
2051
|
let t = [];
|
|
2019
2052
|
for (let [n, r] of e) {
|
|
2020
2053
|
let e = r.store.getSnapshot(), i = e.rootViewId && e.views.has(e.rootViewId);
|
|
@@ -2022,7 +2055,7 @@ function Sn(e) {
|
|
|
2022
2055
|
}
|
|
2023
2056
|
return t.sort(), t.join(",");
|
|
2024
2057
|
}
|
|
2025
|
-
function
|
|
2058
|
+
function Dn(e) {
|
|
2026
2059
|
let [t, n] = N(), r = M("");
|
|
2027
2060
|
return k(() => {
|
|
2028
2061
|
if (!e) {
|
|
@@ -2030,7 +2063,7 @@ function Cn(e) {
|
|
|
2030
2063
|
return;
|
|
2031
2064
|
}
|
|
2032
2065
|
let t = () => {
|
|
2033
|
-
let t = e.getStores(), i =
|
|
2066
|
+
let t = e.getStores(), i = En(t);
|
|
2034
2067
|
i !== r.current && (r.current = i, n(t));
|
|
2035
2068
|
};
|
|
2036
2069
|
return t(), e.subscribe(t);
|
|
@@ -2038,7 +2071,7 @@ function Cn(e) {
|
|
|
2038
2071
|
}
|
|
2039
2072
|
//#endregion
|
|
2040
2073
|
//#region src/media/use-sibling-client.ts
|
|
2041
|
-
function
|
|
2074
|
+
function On(e, t, n) {
|
|
2042
2075
|
let [r, i] = N(null), [a, o] = N(null), s = M(n);
|
|
2043
2076
|
s.current = n;
|
|
2044
2077
|
let c = t ? JSON.stringify(Object.entries(t).sort(([e], [t]) => e < t ? -1 : +(e > t))) : null;
|
|
@@ -2059,8 +2092,8 @@ function wn(e, t, n) {
|
|
|
2059
2092
|
}
|
|
2060
2093
|
//#endregion
|
|
2061
2094
|
//#region src/media/use-media-capture.ts
|
|
2062
|
-
var
|
|
2063
|
-
function
|
|
2095
|
+
var kn = S("IkonMediaCaptureHooks");
|
|
2096
|
+
function An(e, t, n, r) {
|
|
2064
2097
|
let [i, a] = N(null), o = M(r);
|
|
2065
2098
|
return o.current = r, k(() => {
|
|
2066
2099
|
if (!e || !t) return;
|
|
@@ -2075,7 +2108,7 @@ function En(e, t, n, r) {
|
|
|
2075
2108
|
try {
|
|
2076
2109
|
i = await o.current(t);
|
|
2077
2110
|
} catch (e) {
|
|
2078
|
-
r || (
|
|
2111
|
+
r || (kn.error(`${n} capture start failed: ${String(e)}`), a(e instanceof Error ? e : Error(String(e))));
|
|
2079
2112
|
return;
|
|
2080
2113
|
}
|
|
2081
2114
|
r && i.stop();
|
|
@@ -2089,17 +2122,17 @@ function En(e, t, n, r) {
|
|
|
2089
2122
|
n
|
|
2090
2123
|
]), { error: i };
|
|
2091
2124
|
}
|
|
2092
|
-
function
|
|
2125
|
+
function jn(e, t, n) {
|
|
2093
2126
|
let r = M(n);
|
|
2094
|
-
return r.current = n,
|
|
2127
|
+
return r.current = n, An(e, t, "microphone", O((e) => e.audio.startMic(r.current ?? {}), []));
|
|
2095
2128
|
}
|
|
2096
|
-
function
|
|
2129
|
+
function Mn(e, t, n) {
|
|
2097
2130
|
let r = M(n);
|
|
2098
|
-
return r.current = n,
|
|
2131
|
+
return r.current = n, An(e, t, "camera", O((e) => e.video.startCamera(r.current), []));
|
|
2099
2132
|
}
|
|
2100
|
-
function
|
|
2133
|
+
function Nn(e, t, n) {
|
|
2101
2134
|
let r = M(n);
|
|
2102
|
-
return r.current = n,
|
|
2135
|
+
return r.current = n, An(e, t, "screen", O((e) => e.video.startScreen(r.current), []));
|
|
2103
2136
|
}
|
|
2104
2137
|
//#endregion
|
|
2105
2138
|
//#region src/shared/render-motion-letters.tsx
|
|
@@ -2110,7 +2143,7 @@ var G = {
|
|
|
2110
2143
|
Line: 4,
|
|
2111
2144
|
Paragraph: 8,
|
|
2112
2145
|
Emoji: 16
|
|
2113
|
-
},
|
|
2146
|
+
}, Pn = [
|
|
2114
2147
|
{
|
|
2115
2148
|
flag: G.Letter,
|
|
2116
2149
|
hints: [
|
|
@@ -2159,16 +2192,16 @@ var G = {
|
|
|
2159
2192
|
"[data-emoji]"
|
|
2160
2193
|
]
|
|
2161
2194
|
}
|
|
2162
|
-
],
|
|
2163
|
-
function
|
|
2164
|
-
if (!e || e.length >
|
|
2165
|
-
let n =
|
|
2195
|
+
], Fn = G.Letter | G.Word | G.Line | G.Paragraph | G.Emoji, In = G.Letter | G.Word | G.Line | G.Paragraph, Ln = /* @__PURE__ */ new Map(), Rn = 16384;
|
|
2196
|
+
function zn(e, t) {
|
|
2197
|
+
if (!e || e.length > Rn) return e;
|
|
2198
|
+
let n = mr(t), r = ur(n, G.Emoji), i = n & In;
|
|
2166
2199
|
if (i === G.None && !r) return e;
|
|
2167
2200
|
let a = e.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
|
|
2168
|
-
if (i === G.None) return
|
|
2169
|
-
let o =
|
|
2170
|
-
if (o.length === 0) return r ?
|
|
2171
|
-
let s =
|
|
2201
|
+
if (i === G.None) return fr(a);
|
|
2202
|
+
let o = cr(a);
|
|
2203
|
+
if (o.length === 0) return r ? fr(a) : e;
|
|
2204
|
+
let s = lr(o), c = {
|
|
2172
2205
|
letter: 0,
|
|
2173
2206
|
word: 0,
|
|
2174
2207
|
line: 0,
|
|
@@ -2177,58 +2210,58 @@ function Fn(e, t) {
|
|
|
2177
2210
|
emoji: 0
|
|
2178
2211
|
}, l = [];
|
|
2179
2212
|
for (let e of s) {
|
|
2180
|
-
let t =
|
|
2213
|
+
let t = Bn(e, n, c);
|
|
2181
2214
|
l.push(...t);
|
|
2182
2215
|
}
|
|
2183
2216
|
return l;
|
|
2184
2217
|
}
|
|
2185
|
-
function
|
|
2218
|
+
function Bn(e, t, n) {
|
|
2186
2219
|
let r = [];
|
|
2187
2220
|
for (let i of e) {
|
|
2188
|
-
let e =
|
|
2221
|
+
let e = Vn(i, t, n);
|
|
2189
2222
|
r.push(...e);
|
|
2190
2223
|
}
|
|
2191
|
-
if (
|
|
2224
|
+
if (ur(t, G.Paragraph)) {
|
|
2192
2225
|
let e = n.paragraph++;
|
|
2193
2226
|
return [/* @__PURE__ */ P("span", {
|
|
2194
2227
|
"data-motion-paragraph": !0,
|
|
2195
|
-
style:
|
|
2228
|
+
style: dr(e),
|
|
2196
2229
|
children: r
|
|
2197
2230
|
}, `motion-paragraph-${e}`)];
|
|
2198
2231
|
}
|
|
2199
2232
|
return r;
|
|
2200
2233
|
}
|
|
2201
|
-
function
|
|
2202
|
-
let r =
|
|
2203
|
-
if (
|
|
2234
|
+
function Vn(e, t, n) {
|
|
2235
|
+
let r = Hn(e.text, t, n), i = [];
|
|
2236
|
+
if (ur(t, G.Line)) {
|
|
2204
2237
|
let e = n.line++;
|
|
2205
2238
|
i.push(/* @__PURE__ */ P("span", {
|
|
2206
2239
|
"data-motion-line": !0,
|
|
2207
|
-
style:
|
|
2240
|
+
style: dr(e),
|
|
2208
2241
|
children: r
|
|
2209
2242
|
}, `motion-line-${e}`));
|
|
2210
2243
|
} else i.push(...r);
|
|
2211
2244
|
for (let t = 0; t < e.breaks; t++) i.push(/* @__PURE__ */ P("br", {}, `motion-break-${n.br++}`));
|
|
2212
2245
|
return i;
|
|
2213
2246
|
}
|
|
2214
|
-
function
|
|
2247
|
+
function Hn(e, t, n) {
|
|
2215
2248
|
if (!e) return [];
|
|
2216
|
-
let r =
|
|
2249
|
+
let r = ur(t, G.Word), i = [], a = /(\s+)/g, o = 0, s;
|
|
2217
2250
|
for (; (s = a.exec(e)) !== null;) {
|
|
2218
2251
|
if (s.index > o) {
|
|
2219
2252
|
let a = e.slice(o, s.index);
|
|
2220
|
-
i.push(
|
|
2253
|
+
i.push(Un(a, n, t, r));
|
|
2221
2254
|
}
|
|
2222
2255
|
i.push(s[0]), o = s.index + s[0].length;
|
|
2223
2256
|
}
|
|
2224
2257
|
if (o < e.length) {
|
|
2225
2258
|
let a = e.slice(o);
|
|
2226
|
-
i.push(
|
|
2259
|
+
i.push(Un(a, n, t, r));
|
|
2227
2260
|
}
|
|
2228
2261
|
return i;
|
|
2229
2262
|
}
|
|
2230
|
-
function
|
|
2231
|
-
let i = t.word++, a =
|
|
2263
|
+
function Un(e, t, n, r) {
|
|
2264
|
+
let i = t.word++, a = Gn(e, n, t), o = `motion-word-${i}`, s = Wn(i, r);
|
|
2232
2265
|
return r ? /* @__PURE__ */ P("span", {
|
|
2233
2266
|
"data-motion-word": !0,
|
|
2234
2267
|
style: s,
|
|
@@ -2238,25 +2271,25 @@ function zn(e, t, n, r) {
|
|
|
2238
2271
|
children: a
|
|
2239
2272
|
}, o);
|
|
2240
2273
|
}
|
|
2241
|
-
function
|
|
2274
|
+
function Wn(e, t) {
|
|
2242
2275
|
return t ? {
|
|
2243
|
-
...
|
|
2276
|
+
...dr(e),
|
|
2244
2277
|
whiteSpace: "nowrap"
|
|
2245
2278
|
} : { whiteSpace: "nowrap" };
|
|
2246
2279
|
}
|
|
2247
|
-
function
|
|
2280
|
+
function Gn(e, t, n) {
|
|
2248
2281
|
if (!e) return [];
|
|
2249
|
-
let r =
|
|
2282
|
+
let r = ur(t, G.Letter), i = ur(t, G.Emoji);
|
|
2250
2283
|
if (!r) {
|
|
2251
2284
|
if (!i) return [e];
|
|
2252
|
-
let t =
|
|
2285
|
+
let t = Kn(e);
|
|
2253
2286
|
if (t.length === 0) return [e];
|
|
2254
|
-
let { nodes: r } =
|
|
2287
|
+
let { nodes: r } = pr(t, n);
|
|
2255
2288
|
return r;
|
|
2256
2289
|
}
|
|
2257
|
-
let a = [], o =
|
|
2290
|
+
let a = [], o = Kn(e);
|
|
2258
2291
|
for (let e of o) {
|
|
2259
|
-
let t = n.letter++, r = `motion-letter-${t}`, o =
|
|
2292
|
+
let t = n.letter++, r = `motion-letter-${t}`, o = dr(t);
|
|
2260
2293
|
if (e === "\n") {
|
|
2261
2294
|
a.push(/* @__PURE__ */ P("span", {
|
|
2262
2295
|
"data-motion-letter": !0,
|
|
@@ -2265,7 +2298,7 @@ function Vn(e, t, n) {
|
|
|
2265
2298
|
}, r));
|
|
2266
2299
|
continue;
|
|
2267
2300
|
}
|
|
2268
|
-
let s = i &&
|
|
2301
|
+
let s = i && ar(e) ? { "data-motion-emoji": !0 } : void 0, c = e === " " ? "\xA0" : e;
|
|
2269
2302
|
a.push(/* @__PURE__ */ P("span", {
|
|
2270
2303
|
"data-motion-letter": !0,
|
|
2271
2304
|
style: o,
|
|
@@ -2275,46 +2308,46 @@ function Vn(e, t, n) {
|
|
|
2275
2308
|
}
|
|
2276
2309
|
return a;
|
|
2277
2310
|
}
|
|
2278
|
-
function
|
|
2311
|
+
function Kn(e) {
|
|
2279
2312
|
if (!e) return [];
|
|
2280
|
-
let t =
|
|
2281
|
-
return t ? Array.from(t.segment(e), (e) => e.segment) :
|
|
2313
|
+
let t = Jn();
|
|
2314
|
+
return t ? Array.from(t.segment(e), (e) => e.segment) : Yn(e);
|
|
2282
2315
|
}
|
|
2283
|
-
var
|
|
2284
|
-
function
|
|
2285
|
-
return
|
|
2316
|
+
var qn;
|
|
2317
|
+
function Jn() {
|
|
2318
|
+
return qn === void 0 && (qn = typeof Intl < "u" && typeof Intl.Segmenter == "function" ? new Intl.Segmenter(void 0, { granularity: "grapheme" }) : null), qn;
|
|
2286
2319
|
}
|
|
2287
|
-
function
|
|
2320
|
+
function Yn(e) {
|
|
2288
2321
|
let t = [], n = Array.from(e), r = "";
|
|
2289
2322
|
for (let e = 0; e < n.length; e++) {
|
|
2290
2323
|
let i = n[e], a = n[e + 1];
|
|
2291
|
-
r += i, !(a &&
|
|
2324
|
+
r += i, !(a && Xn(i, a)) && (t.push(r), r = "");
|
|
2292
2325
|
}
|
|
2293
2326
|
return r && t.push(r), t;
|
|
2294
2327
|
}
|
|
2295
|
-
function
|
|
2296
|
-
return t ? !!(
|
|
2328
|
+
function Xn(e, t) {
|
|
2329
|
+
return t ? !!(Zn(e) || Zn(t) || nr(t) || Qn(t) || $n(t) || er(e) && er(t)) : !1;
|
|
2297
2330
|
}
|
|
2298
|
-
function
|
|
2331
|
+
function Zn(e) {
|
|
2299
2332
|
return e.codePointAt(0) === 8205;
|
|
2300
2333
|
}
|
|
2301
|
-
function
|
|
2334
|
+
function Qn(e) {
|
|
2302
2335
|
let t = e.codePointAt(0);
|
|
2303
2336
|
return t === void 0 ? !1 : t >= 65024 && t <= 65039 || t >= 917760 && t <= 917999;
|
|
2304
2337
|
}
|
|
2305
|
-
function
|
|
2338
|
+
function $n(e) {
|
|
2306
2339
|
let t = e.codePointAt(0);
|
|
2307
2340
|
return t !== void 0 && t >= 127995 && t <= 127999;
|
|
2308
2341
|
}
|
|
2309
|
-
function
|
|
2342
|
+
function er(e) {
|
|
2310
2343
|
let t = e.codePointAt(0);
|
|
2311
2344
|
return t !== void 0 && t >= 127462 && t <= 127487;
|
|
2312
2345
|
}
|
|
2313
|
-
var
|
|
2314
|
-
function
|
|
2315
|
-
return e ? (
|
|
2346
|
+
var tr;
|
|
2347
|
+
function nr(e) {
|
|
2348
|
+
return e ? (tr ||= rr(), tr(e)) : !1;
|
|
2316
2349
|
}
|
|
2317
|
-
function
|
|
2350
|
+
function rr() {
|
|
2318
2351
|
try {
|
|
2319
2352
|
let e = /\p{Mark}/u;
|
|
2320
2353
|
return (t) => e.test(t);
|
|
@@ -2325,19 +2358,19 @@ function $n() {
|
|
|
2325
2358
|
};
|
|
2326
2359
|
}
|
|
2327
2360
|
}
|
|
2328
|
-
var
|
|
2329
|
-
function
|
|
2330
|
-
return e ? (
|
|
2361
|
+
var ir;
|
|
2362
|
+
function ar(e) {
|
|
2363
|
+
return e ? (ir ||= or(), ir(e)) : !1;
|
|
2331
2364
|
}
|
|
2332
|
-
function
|
|
2365
|
+
function or() {
|
|
2333
2366
|
try {
|
|
2334
2367
|
let e = /\p{Extended_Pictographic}/u;
|
|
2335
2368
|
return (t) => e.test(t);
|
|
2336
2369
|
} catch {
|
|
2337
|
-
return
|
|
2370
|
+
return sr;
|
|
2338
2371
|
}
|
|
2339
2372
|
}
|
|
2340
|
-
function
|
|
2373
|
+
function sr(e) {
|
|
2341
2374
|
if (!e) return !1;
|
|
2342
2375
|
for (let t of Array.from(e)) {
|
|
2343
2376
|
let e = t.codePointAt(0);
|
|
@@ -2345,7 +2378,7 @@ function rr(e) {
|
|
|
2345
2378
|
}
|
|
2346
2379
|
return !1;
|
|
2347
2380
|
}
|
|
2348
|
-
function
|
|
2381
|
+
function cr(e) {
|
|
2349
2382
|
let t = [], n = "", r = 0;
|
|
2350
2383
|
for (let i = 0; i < e.length; i++) {
|
|
2351
2384
|
let a = e[i];
|
|
@@ -2363,16 +2396,16 @@ function ir(e) {
|
|
|
2363
2396
|
breaks: r
|
|
2364
2397
|
}), t;
|
|
2365
2398
|
}
|
|
2366
|
-
function
|
|
2399
|
+
function lr(e) {
|
|
2367
2400
|
if (e.length === 0) return [];
|
|
2368
2401
|
let t = [], n = [];
|
|
2369
2402
|
for (let r of e) n.push(r), r.breaks >= 2 && (t.push(n), n = []);
|
|
2370
2403
|
return n.length > 0 && t.push(n), t;
|
|
2371
2404
|
}
|
|
2372
|
-
function
|
|
2405
|
+
function ur(e, t) {
|
|
2373
2406
|
return (e & t) === t;
|
|
2374
2407
|
}
|
|
2375
|
-
function
|
|
2408
|
+
function dr(e) {
|
|
2376
2409
|
return {
|
|
2377
2410
|
"--tw-motion-seq-index": e.toString(),
|
|
2378
2411
|
backgroundColor: "inherit",
|
|
@@ -2389,19 +2422,19 @@ function or(e) {
|
|
|
2389
2422
|
WebkitTextFillColor: "inherit"
|
|
2390
2423
|
};
|
|
2391
2424
|
}
|
|
2392
|
-
function
|
|
2425
|
+
function fr(e) {
|
|
2393
2426
|
if (!e) return e;
|
|
2394
|
-
let t =
|
|
2427
|
+
let t = Kn(e);
|
|
2395
2428
|
if (t.length === 0) return e;
|
|
2396
|
-
let { nodes: n, sawEmoji: r } =
|
|
2429
|
+
let { nodes: n, sawEmoji: r } = pr(t);
|
|
2397
2430
|
return r ? n.length === 1 ? n[0] ?? e : n : e;
|
|
2398
2431
|
}
|
|
2399
|
-
function
|
|
2432
|
+
function pr(e, t) {
|
|
2400
2433
|
let n = [], r = "", i = !1, a = t?.emoji ?? 0, o = () => {
|
|
2401
2434
|
r &&= (n.push(r), "");
|
|
2402
2435
|
};
|
|
2403
2436
|
for (let s of e) {
|
|
2404
|
-
if (
|
|
2437
|
+
if (ar(s)) {
|
|
2405
2438
|
i = !0, o();
|
|
2406
2439
|
let e = `motion-emoji-${t ? t.emoji++ : a++}`;
|
|
2407
2440
|
n.push(/* @__PURE__ */ P("span", {
|
|
@@ -2420,16 +2453,16 @@ function cr(e, t) {
|
|
|
2420
2453
|
sawEmoji: !1
|
|
2421
2454
|
};
|
|
2422
2455
|
}
|
|
2423
|
-
function
|
|
2456
|
+
function mr(e) {
|
|
2424
2457
|
if (!e) return G.None;
|
|
2425
2458
|
let t = e.trim();
|
|
2426
2459
|
if (!t) return G.None;
|
|
2427
|
-
let n =
|
|
2460
|
+
let n = Ln.get(t);
|
|
2428
2461
|
if (typeof n == "number") return n;
|
|
2429
2462
|
if (typeof document > "u") return G.None;
|
|
2430
2463
|
let r = t.split(/\s+/).filter(Boolean);
|
|
2431
2464
|
if (r.length === 0) return G.None;
|
|
2432
|
-
let i = r.map((e) => `.${
|
|
2465
|
+
let i = r.map((e) => `.${gr(e)}`).map((e) => RegExp(`(^|[^a-zA-Z0-9_-])${_r(e)}(?![a-zA-Z0-9_-])`)), a = G.None, o = !1;
|
|
2433
2466
|
for (let e of Array.from(document.styleSheets)) {
|
|
2434
2467
|
let t;
|
|
2435
2468
|
try {
|
|
@@ -2437,13 +2470,13 @@ function lr(e) {
|
|
|
2437
2470
|
} catch {
|
|
2438
2471
|
continue;
|
|
2439
2472
|
}
|
|
2440
|
-
let n =
|
|
2441
|
-
if (n.mask && (a |= n.mask, a ===
|
|
2473
|
+
let n = hr(t, i);
|
|
2474
|
+
if (n.mask && (a |= n.mask, a === Fn)) break;
|
|
2442
2475
|
o ||= n.sawStyleRule;
|
|
2443
2476
|
}
|
|
2444
|
-
return (a !== G.None || o) &&
|
|
2477
|
+
return (a !== G.None || o) && Ln.set(t, a), a;
|
|
2445
2478
|
}
|
|
2446
|
-
function
|
|
2479
|
+
function hr(e, t) {
|
|
2447
2480
|
if (!e) return {
|
|
2448
2481
|
mask: G.None,
|
|
2449
2482
|
sawStyleRule: !1
|
|
@@ -2456,14 +2489,14 @@ function ur(e, t) {
|
|
|
2456
2489
|
let e = a.selectorText ?? "";
|
|
2457
2490
|
if (!e || !t.some((t) => t.test(e))) continue;
|
|
2458
2491
|
r = !0;
|
|
2459
|
-
for (let t of
|
|
2460
|
-
if (n ===
|
|
2492
|
+
for (let t of Pn) t.hints.some((t) => e.includes(t)) && (n |= t.flag);
|
|
2493
|
+
if (n === Fn) return {
|
|
2461
2494
|
mask: n,
|
|
2462
2495
|
sawStyleRule: !0
|
|
2463
2496
|
};
|
|
2464
2497
|
} else if ("cssRules" in a) {
|
|
2465
|
-
let e =
|
|
2466
|
-
if (e.mask && (n |= e.mask, n ===
|
|
2498
|
+
let e = hr(a.cssRules, t);
|
|
2499
|
+
if (e.mask && (n |= e.mask, n === Fn)) return {
|
|
2467
2500
|
mask: n,
|
|
2468
2501
|
sawStyleRule: !0
|
|
2469
2502
|
};
|
|
@@ -2476,16 +2509,16 @@ function ur(e, t) {
|
|
|
2476
2509
|
sawStyleRule: r
|
|
2477
2510
|
};
|
|
2478
2511
|
}
|
|
2479
|
-
function
|
|
2512
|
+
function gr(e) {
|
|
2480
2513
|
return typeof CSS < "u" && typeof CSS.escape == "function" ? CSS.escape(e) : e.replace(/[^a-zA-Z0-9_-]/g, (e) => `\\${e}`);
|
|
2481
2514
|
}
|
|
2482
|
-
function
|
|
2515
|
+
function _r(e) {
|
|
2483
2516
|
return e.replace(/[.*+?^${}()|[\]\\]/g, (e) => `\\${e}`);
|
|
2484
2517
|
}
|
|
2485
2518
|
//#endregion
|
|
2486
2519
|
//#region src/auth/storage.ts
|
|
2487
|
-
var
|
|
2488
|
-
function
|
|
2520
|
+
var vr = "ikon-auth-session", yr = "ikon-auth-refreshable", br = "ikon-auth-auto-login-attempted-run", xr = 6048e5, Sr = 6e4;
|
|
2521
|
+
function Cr(e) {
|
|
2489
2522
|
try {
|
|
2490
2523
|
let t = e.split(".");
|
|
2491
2524
|
if (t.length !== 3) return;
|
|
@@ -2495,105 +2528,105 @@ function vr(e) {
|
|
|
2495
2528
|
return;
|
|
2496
2529
|
}
|
|
2497
2530
|
}
|
|
2498
|
-
function
|
|
2499
|
-
let t =
|
|
2500
|
-
return !t || typeof t.exp == "number" && Date.now() >= t.exp * 1e3 -
|
|
2531
|
+
function wr(e) {
|
|
2532
|
+
let t = Cr(e);
|
|
2533
|
+
return !t || typeof t.exp == "number" && Date.now() >= t.exp * 1e3 - Sr;
|
|
2501
2534
|
}
|
|
2502
|
-
function
|
|
2503
|
-
let t =
|
|
2535
|
+
function Tr(e) {
|
|
2536
|
+
let t = Cr(e)?.exp;
|
|
2504
2537
|
return typeof t == "number" ? (/* @__PURE__ */ new Date(t * 1e3)).toISOString() : void 0;
|
|
2505
2538
|
}
|
|
2506
|
-
function
|
|
2539
|
+
function K(e) {
|
|
2507
2540
|
try {
|
|
2508
|
-
localStorage.setItem(
|
|
2541
|
+
localStorage.setItem(vr, JSON.stringify(e));
|
|
2509
2542
|
} catch {
|
|
2510
2543
|
console.warn("Failed to save auth session to localStorage");
|
|
2511
2544
|
}
|
|
2512
2545
|
}
|
|
2513
|
-
function
|
|
2546
|
+
function Er() {
|
|
2514
2547
|
try {
|
|
2515
|
-
let e = localStorage.getItem(
|
|
2548
|
+
let e = localStorage.getItem(vr);
|
|
2516
2549
|
if (!e) return null;
|
|
2517
2550
|
let t = JSON.parse(e);
|
|
2518
|
-
return Date.now() - t.authenticatedAt >
|
|
2551
|
+
return Date.now() - t.authenticatedAt > xr || wr(t.token) ? (Pr(), null) : t;
|
|
2519
2552
|
} catch {
|
|
2520
2553
|
return console.warn("Failed to load auth session from localStorage"), null;
|
|
2521
2554
|
}
|
|
2522
2555
|
}
|
|
2523
|
-
function
|
|
2556
|
+
function Dr() {
|
|
2524
2557
|
try {
|
|
2525
|
-
let e = localStorage.getItem(
|
|
2558
|
+
let e = localStorage.getItem(vr);
|
|
2526
2559
|
if (!e) return !1;
|
|
2527
2560
|
let t = JSON.parse(e);
|
|
2528
|
-
return t.provider === "dev" &&
|
|
2561
|
+
return t.provider === "dev" && wr(t.token);
|
|
2529
2562
|
} catch {
|
|
2530
2563
|
return !1;
|
|
2531
2564
|
}
|
|
2532
2565
|
}
|
|
2533
|
-
function
|
|
2566
|
+
function Or(e) {
|
|
2534
2567
|
try {
|
|
2535
|
-
localStorage.removeItem(
|
|
2568
|
+
localStorage.removeItem(vr), localStorage.setItem(yr, JSON.stringify(e));
|
|
2536
2569
|
} catch {
|
|
2537
2570
|
console.warn("Failed to save the auth session marker to localStorage");
|
|
2538
2571
|
}
|
|
2539
2572
|
}
|
|
2540
|
-
function
|
|
2573
|
+
function kr() {
|
|
2541
2574
|
try {
|
|
2542
|
-
let e = localStorage.getItem(
|
|
2575
|
+
let e = localStorage.getItem(yr);
|
|
2543
2576
|
if (!e) return null;
|
|
2544
2577
|
let t = JSON.parse(e);
|
|
2545
|
-
return Date.now() - t.renewedAt >
|
|
2578
|
+
return Date.now() - t.renewedAt > xr ? (jr(), null) : t;
|
|
2546
2579
|
} catch {
|
|
2547
2580
|
return console.warn("Failed to load the auth session marker from localStorage"), null;
|
|
2548
2581
|
}
|
|
2549
2582
|
}
|
|
2550
|
-
function
|
|
2551
|
-
let e =
|
|
2552
|
-
e &&
|
|
2583
|
+
function Ar() {
|
|
2584
|
+
let e = kr();
|
|
2585
|
+
e && Or({
|
|
2553
2586
|
...e,
|
|
2554
2587
|
renewedAt: Date.now()
|
|
2555
2588
|
});
|
|
2556
2589
|
}
|
|
2557
|
-
function
|
|
2590
|
+
function jr() {
|
|
2558
2591
|
try {
|
|
2559
|
-
localStorage.removeItem(
|
|
2592
|
+
localStorage.removeItem(yr);
|
|
2560
2593
|
} catch {
|
|
2561
2594
|
console.warn("Failed to clear the auth session marker from localStorage");
|
|
2562
2595
|
}
|
|
2563
2596
|
}
|
|
2564
|
-
function
|
|
2565
|
-
|
|
2597
|
+
function Mr() {
|
|
2598
|
+
Er()?.provider === "anonymous" && Pr(), kr()?.provider === "anonymous" && jr();
|
|
2566
2599
|
}
|
|
2567
|
-
function
|
|
2600
|
+
function Nr() {
|
|
2568
2601
|
try {
|
|
2569
2602
|
let e = typeof window < "u" ? new URLSearchParams(window.location.search) : void 0;
|
|
2570
2603
|
if (e?.get("ikon_token") || e?.get("ikon_code")) return !0;
|
|
2571
2604
|
} catch {}
|
|
2572
|
-
let e =
|
|
2605
|
+
let e = Er()?.provider ?? kr()?.provider;
|
|
2573
2606
|
return e !== void 0 && e !== "anonymous";
|
|
2574
2607
|
}
|
|
2575
|
-
function
|
|
2608
|
+
function Pr() {
|
|
2576
2609
|
try {
|
|
2577
|
-
localStorage.removeItem(
|
|
2610
|
+
localStorage.removeItem(vr);
|
|
2578
2611
|
} catch {
|
|
2579
2612
|
console.warn("Failed to clear auth session from localStorage");
|
|
2580
2613
|
}
|
|
2581
2614
|
}
|
|
2582
|
-
function
|
|
2615
|
+
function Fr(e) {
|
|
2583
2616
|
if (e) try {
|
|
2584
|
-
sessionStorage.setItem(
|
|
2617
|
+
sessionStorage.setItem(br, e);
|
|
2585
2618
|
} catch {
|
|
2586
2619
|
console.warn("Failed to record auto-login attempt in sessionStorage");
|
|
2587
2620
|
}
|
|
2588
2621
|
}
|
|
2589
|
-
function
|
|
2622
|
+
function Ir() {
|
|
2590
2623
|
try {
|
|
2591
|
-
return sessionStorage.getItem(
|
|
2624
|
+
return sessionStorage.getItem(br);
|
|
2592
2625
|
} catch {
|
|
2593
2626
|
return null;
|
|
2594
2627
|
}
|
|
2595
2628
|
}
|
|
2596
|
-
function
|
|
2629
|
+
function q(e) {
|
|
2597
2630
|
return {
|
|
2598
2631
|
id: "",
|
|
2599
2632
|
provider: e.provider,
|
|
@@ -2604,8 +2637,8 @@ function J(e) {
|
|
|
2604
2637
|
}
|
|
2605
2638
|
//#endregion
|
|
2606
2639
|
//#region src/auth/auth-service.ts
|
|
2607
|
-
var
|
|
2608
|
-
async function
|
|
2640
|
+
var Lr = 15e3, Rr = 15e3, J = S("AuthService");
|
|
2641
|
+
async function zr(e) {
|
|
2609
2642
|
try {
|
|
2610
2643
|
return await fetch(e, {
|
|
2611
2644
|
method: "GET",
|
|
@@ -2615,35 +2648,48 @@ async function Pr(e) {
|
|
|
2615
2648
|
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)`;
|
|
2616
2649
|
}
|
|
2617
2650
|
}
|
|
2618
|
-
var
|
|
2619
|
-
function
|
|
2620
|
-
if (e.headers.get(
|
|
2651
|
+
var Br = "x-ikon-auth-service";
|
|
2652
|
+
function Vr(e) {
|
|
2653
|
+
if (e.headers.get(Br) !== null) return !1;
|
|
2621
2654
|
if (e.status === 404 || e.status === 405) return !0;
|
|
2622
2655
|
let t = e.headers.get("content-type") ?? "";
|
|
2623
2656
|
return e.status === 200 && t.includes("text/html");
|
|
2624
2657
|
}
|
|
2625
|
-
async function
|
|
2626
|
-
let r = `${e}${t}`, i = E(), a = i !== null && e === i, o = a ? await
|
|
2658
|
+
async function Y(e, t, n) {
|
|
2659
|
+
let r = `${e}${t}`, i = E(), a = i !== null && e === i, o = a ? await oe() : i, s = o !== null && o !== e ? `${o}${t}` : null, c;
|
|
2627
2660
|
try {
|
|
2628
2661
|
c = await fetch(r, n);
|
|
2629
2662
|
} catch (i) {
|
|
2630
2663
|
let a = i instanceof Error ? `${i.name}: ${i.message}` : String(i);
|
|
2631
2664
|
if (!s) {
|
|
2632
|
-
let n = await
|
|
2633
|
-
throw
|
|
2665
|
+
let n = await zr(e);
|
|
2666
|
+
throw J.error(`Auth request ${t} could not reach ${r} — ${a}. ${n}`), Error(`Auth request could not reach ${r} (${a}). ${n}`, { cause: i });
|
|
2634
2667
|
}
|
|
2635
|
-
|
|
2668
|
+
J.warn(`Auth request ${t} could not reach ${r} (${a}); falling back to ${s}`);
|
|
2636
2669
|
try {
|
|
2637
2670
|
return await fetch(s, n);
|
|
2638
2671
|
} catch (n) {
|
|
2639
|
-
let i = n instanceof Error ? `${n.name}: ${n.message}` : String(n), o = await
|
|
2640
|
-
throw
|
|
2672
|
+
let i = n instanceof Error ? `${n.name}: ${n.message}` : String(n), o = await zr(e);
|
|
2673
|
+
throw J.error(`Auth request ${t} failed on both ${r} (${a}) and ${s} (${i}). ${o}`), Error(`Auth request unreachable: ${r} (${a}) and ${s} (${i})`, { cause: n });
|
|
2641
2674
|
}
|
|
2642
2675
|
}
|
|
2643
|
-
return a && s !== null &&
|
|
2676
|
+
return a && s !== null && Vr(c) ? (J.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;
|
|
2677
|
+
}
|
|
2678
|
+
async function Hr(e, t) {
|
|
2679
|
+
let n;
|
|
2680
|
+
try {
|
|
2681
|
+
n = await e.json();
|
|
2682
|
+
} catch (e) {
|
|
2683
|
+
throw Error(`${t} returned a body that is not JSON`, { cause: e });
|
|
2684
|
+
}
|
|
2685
|
+
if (typeof n.token != "string" || n.token.length === 0) throw Error(`${t} returned no token`);
|
|
2686
|
+
return {
|
|
2687
|
+
token: n.token,
|
|
2688
|
+
...typeof n.expiresAt == "string" && n.expiresAt.length > 0 ? { expiresAt: n.expiresAt } : {}
|
|
2689
|
+
};
|
|
2644
2690
|
}
|
|
2645
|
-
async function
|
|
2646
|
-
let r =
|
|
2691
|
+
async function Ur(e, t, n) {
|
|
2692
|
+
let r = le(), i = n === "guest" ? "anonymous" : n, a = {
|
|
2647
2693
|
method: "POST",
|
|
2648
2694
|
headers: { "Content-Type": "application/json" },
|
|
2649
2695
|
body: JSON.stringify({
|
|
@@ -2652,73 +2698,73 @@ async function Lr(e, t, n) {
|
|
|
2652
2698
|
...i ? { method: i } : {}
|
|
2653
2699
|
})
|
|
2654
2700
|
}, o = typeof window < "u" ? window.location.origin : "?";
|
|
2655
|
-
|
|
2656
|
-
let s = await
|
|
2701
|
+
J.debug(`Anonymous auth: POST ${t}/anonymous (space=${e}, origin=${o})`);
|
|
2702
|
+
let s = await Y(t, "/anonymous", a);
|
|
2657
2703
|
if (!s.ok) {
|
|
2658
2704
|
let e = await s.text().catch(() => "Unknown error");
|
|
2659
|
-
throw
|
|
2705
|
+
throw J.error(`Anonymous auth HTTP ${s.status} from ${s.url}: ${e}`), Error(`Anonymous auth failed: ${s.status} ${e}`);
|
|
2660
2706
|
}
|
|
2661
|
-
let { token: c } = await s
|
|
2707
|
+
let { token: c } = await Hr(s, `Anonymous auth for space ${e}`), l = {
|
|
2662
2708
|
token: c,
|
|
2663
2709
|
provider: "anonymous",
|
|
2664
2710
|
authenticatedAt: Date.now()
|
|
2665
2711
|
};
|
|
2666
|
-
return
|
|
2712
|
+
return K(l), l;
|
|
2667
2713
|
}
|
|
2668
|
-
async function
|
|
2669
|
-
let r = await
|
|
2714
|
+
async function Wr({ email: e, spaceId: t, authUrl: n }) {
|
|
2715
|
+
let r = await Y(n, "/email/send", {
|
|
2670
2716
|
method: "POST",
|
|
2671
2717
|
headers: { "Content-Type": "application/json" },
|
|
2672
2718
|
body: JSON.stringify({
|
|
2673
2719
|
email: e.trim(),
|
|
2674
2720
|
space: t
|
|
2675
2721
|
}),
|
|
2676
|
-
signal:
|
|
2722
|
+
signal: x(Lr)
|
|
2677
2723
|
});
|
|
2678
2724
|
if (!r.ok) {
|
|
2679
2725
|
let e = await r.text().catch(() => "Failed to send login code");
|
|
2680
2726
|
throw Error(e);
|
|
2681
2727
|
}
|
|
2682
2728
|
}
|
|
2683
|
-
async function
|
|
2684
|
-
let r = await
|
|
2729
|
+
async function Gr({ email: e, code: t, authUrl: n }) {
|
|
2730
|
+
let r = await Y(n, "/email/code", {
|
|
2685
2731
|
method: "POST",
|
|
2686
2732
|
headers: { "Content-Type": "application/json" },
|
|
2687
2733
|
body: JSON.stringify({
|
|
2688
2734
|
email: e.trim(),
|
|
2689
2735
|
code: t.trim()
|
|
2690
2736
|
}),
|
|
2691
|
-
signal:
|
|
2737
|
+
signal: x(Lr)
|
|
2692
2738
|
});
|
|
2693
2739
|
if (!r.ok) {
|
|
2694
2740
|
let e = await r.text().catch(() => "Invalid code");
|
|
2695
2741
|
throw Error(e);
|
|
2696
2742
|
}
|
|
2697
|
-
let { token: i } = await r
|
|
2743
|
+
let { token: i } = await Hr(r, "Login-code verification"), a = {
|
|
2698
2744
|
token: i,
|
|
2699
2745
|
provider: "email",
|
|
2700
2746
|
authenticatedAt: Date.now()
|
|
2701
2747
|
};
|
|
2702
|
-
return
|
|
2748
|
+
return K(a), a;
|
|
2703
2749
|
}
|
|
2704
|
-
function
|
|
2705
|
-
let e = new URLSearchParams(window.location.search), t = e.get(
|
|
2750
|
+
function Kr() {
|
|
2751
|
+
let e = new URLSearchParams(window.location.search), t = e.get(g), n = e.get(h);
|
|
2706
2752
|
return t && n ? {
|
|
2707
2753
|
token: t,
|
|
2708
2754
|
provider: n
|
|
2709
2755
|
} : null;
|
|
2710
2756
|
}
|
|
2711
|
-
function
|
|
2712
|
-
let e = new URLSearchParams(window.location.search), t = e.get(
|
|
2757
|
+
function qr() {
|
|
2758
|
+
let e = new URLSearchParams(window.location.search), t = e.get(p), n = e.get(h);
|
|
2713
2759
|
return t && n ? {
|
|
2714
2760
|
code: t,
|
|
2715
2761
|
provider: n
|
|
2716
2762
|
} : null;
|
|
2717
2763
|
}
|
|
2718
|
-
async function
|
|
2719
|
-
let r =
|
|
2764
|
+
async function Jr(e, t, n) {
|
|
2765
|
+
let r = Te();
|
|
2720
2766
|
if (!r) throw Error("This sign-in was started in a different browser or tab");
|
|
2721
|
-
let i = await
|
|
2767
|
+
let i = await Y(await C(n), "/oauth/exchange", {
|
|
2722
2768
|
method: "POST",
|
|
2723
2769
|
headers: { "Content-Type": "application/json" },
|
|
2724
2770
|
body: JSON.stringify({
|
|
@@ -2726,37 +2772,38 @@ async function Hr(e, t, n) {
|
|
|
2726
2772
|
codeVerifier: r,
|
|
2727
2773
|
supportsRefresh: !0
|
|
2728
2774
|
}),
|
|
2729
|
-
signal:
|
|
2775
|
+
signal: x(Lr)
|
|
2730
2776
|
});
|
|
2731
2777
|
if (!i.ok) throw Error("Could not complete the sign-in");
|
|
2732
|
-
let { token: a, expiresAt: o } = await i
|
|
2778
|
+
let { token: a, expiresAt: o } = await Hr(i, `OAuth code exchange for ${t}`), s = {
|
|
2733
2779
|
token: a,
|
|
2734
2780
|
provider: t,
|
|
2735
2781
|
authenticatedAt: Date.now(),
|
|
2736
2782
|
expiresAt: o
|
|
2737
2783
|
};
|
|
2738
|
-
return o ?
|
|
2784
|
+
return o ? Or({
|
|
2739
2785
|
provider: t,
|
|
2740
2786
|
authenticatedAt: s.authenticatedAt,
|
|
2741
2787
|
renewedAt: s.authenticatedAt
|
|
2742
|
-
}) :
|
|
2788
|
+
}) : K(s), s;
|
|
2743
2789
|
}
|
|
2744
|
-
async function
|
|
2790
|
+
async function Yr(e) {
|
|
2745
2791
|
let t = E();
|
|
2746
2792
|
if (t === null) return null;
|
|
2747
2793
|
let n;
|
|
2748
2794
|
try {
|
|
2749
2795
|
n = await fetch(`${t}/session/refresh`, {
|
|
2750
2796
|
method: "POST",
|
|
2751
|
-
signal:
|
|
2797
|
+
signal: x(Rr)
|
|
2752
2798
|
});
|
|
2753
2799
|
} catch (e) {
|
|
2754
2800
|
let n = e instanceof Error ? `${e.name}: ${e.message}` : String(e);
|
|
2755
|
-
throw
|
|
2801
|
+
throw J.warn(`Session renewal could not reach ${t}/session/refresh (${n})`), Error(`Session renewal could not reach the auth service (${n})`, { cause: e });
|
|
2756
2802
|
}
|
|
2757
2803
|
if (n.status === 401) return null;
|
|
2758
2804
|
if (!n.ok) throw Error(`Session renewal failed: ${n.status}`);
|
|
2759
|
-
let { token: r, expiresAt: i } = await n
|
|
2805
|
+
let { token: r, expiresAt: i } = await Hr(n, "Session renewal");
|
|
2806
|
+
if (!i) throw Error("Session renewal returned a token with no expiry");
|
|
2760
2807
|
return {
|
|
2761
2808
|
token: r,
|
|
2762
2809
|
provider: e.provider,
|
|
@@ -2764,25 +2811,25 @@ async function Ur(e) {
|
|
|
2764
2811
|
expiresAt: i
|
|
2765
2812
|
};
|
|
2766
2813
|
}
|
|
2767
|
-
function
|
|
2814
|
+
function Xr() {
|
|
2768
2815
|
let e = new URLSearchParams(window.location.search), t = e.get("error");
|
|
2769
2816
|
return t ? {
|
|
2770
2817
|
code: t,
|
|
2771
|
-
provider: e.get(
|
|
2818
|
+
provider: e.get(h)
|
|
2772
2819
|
} : null;
|
|
2773
2820
|
}
|
|
2774
|
-
function
|
|
2775
|
-
return
|
|
2821
|
+
function Zr() {
|
|
2822
|
+
return ue();
|
|
2776
2823
|
}
|
|
2777
|
-
var
|
|
2824
|
+
var Qr = {
|
|
2778
2825
|
google: "Google",
|
|
2779
2826
|
facebook: "Facebook",
|
|
2780
2827
|
apple: "Apple",
|
|
2781
2828
|
microsoft: "Microsoft",
|
|
2782
2829
|
signicat: "eID"
|
|
2783
2830
|
};
|
|
2784
|
-
function
|
|
2785
|
-
let r = t ?
|
|
2831
|
+
function $r(e, t, n) {
|
|
2832
|
+
let r = t ? Qr[t] ?? t : "this provider";
|
|
2786
2833
|
switch (e) {
|
|
2787
2834
|
case "account_exists_unverified_email": {
|
|
2788
2835
|
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.`;
|
|
@@ -2793,24 +2840,24 @@ function qr(e, t, n) {
|
|
|
2793
2840
|
default: return e;
|
|
2794
2841
|
}
|
|
2795
2842
|
}
|
|
2796
|
-
function
|
|
2843
|
+
function ei() {
|
|
2797
2844
|
let e = new URLSearchParams(window.location.search);
|
|
2798
2845
|
for (let t of [
|
|
2846
|
+
g,
|
|
2799
2847
|
p,
|
|
2800
|
-
|
|
2801
|
-
f,
|
|
2848
|
+
h,
|
|
2802
2849
|
"error",
|
|
2803
|
-
|
|
2850
|
+
m
|
|
2804
2851
|
]) e.delete(t);
|
|
2805
2852
|
let t = e.toString();
|
|
2806
2853
|
window.history.replaceState({}, "", t.length > 0 ? `${window.location.pathname}?${t}` : window.location.pathname);
|
|
2807
2854
|
}
|
|
2808
|
-
async function
|
|
2809
|
-
let i = r ?? window.location.origin + window.location.pathname + window.location.search, a = await
|
|
2855
|
+
async function ti(e, t, n, r) {
|
|
2856
|
+
let i = r ?? window.location.origin + window.location.pathname + window.location.search, a = await ie(), o = a ? `&code_challenge=${encodeURIComponent(a)}` : "";
|
|
2810
2857
|
return `${n}/oauth/${e}?space=${encodeURIComponent(t)}&return=${encodeURIComponent(i)}${o}`;
|
|
2811
2858
|
}
|
|
2812
|
-
async function
|
|
2813
|
-
let t = await
|
|
2859
|
+
async function ni(e) {
|
|
2860
|
+
let t = await Y(e, "/passkey/registration/options", {
|
|
2814
2861
|
method: "POST",
|
|
2815
2862
|
headers: { "Content-Type": "application/json" }
|
|
2816
2863
|
});
|
|
@@ -2820,8 +2867,8 @@ async function Xr(e) {
|
|
|
2820
2867
|
}
|
|
2821
2868
|
return t.json();
|
|
2822
2869
|
}
|
|
2823
|
-
async function
|
|
2824
|
-
let r = await
|
|
2870
|
+
async function ri(e, t, n) {
|
|
2871
|
+
let r = await Y(e, "/passkey/registration/verify", {
|
|
2825
2872
|
method: "POST",
|
|
2826
2873
|
headers: { "Content-Type": "application/json" },
|
|
2827
2874
|
body: JSON.stringify({
|
|
@@ -2833,15 +2880,15 @@ async function Zr(e, t, n) {
|
|
|
2833
2880
|
let e = await r.text().catch(() => "Registration verification failed");
|
|
2834
2881
|
throw Error(e);
|
|
2835
2882
|
}
|
|
2836
|
-
let { token: i } = await r
|
|
2883
|
+
let { token: i } = await Hr(r, "Passkey registration verification"), a = {
|
|
2837
2884
|
token: i,
|
|
2838
2885
|
provider: "passkey",
|
|
2839
2886
|
authenticatedAt: Date.now()
|
|
2840
2887
|
};
|
|
2841
|
-
return
|
|
2888
|
+
return K(a), a;
|
|
2842
2889
|
}
|
|
2843
|
-
async function
|
|
2844
|
-
let n = await
|
|
2890
|
+
async function ii(e, t) {
|
|
2891
|
+
let n = await Y(e, "/passkey/authentication/options", {
|
|
2845
2892
|
method: "POST",
|
|
2846
2893
|
headers: { "Content-Type": "application/json" },
|
|
2847
2894
|
body: JSON.stringify({ email: t })
|
|
@@ -2852,8 +2899,8 @@ async function Qr(e, t) {
|
|
|
2852
2899
|
}
|
|
2853
2900
|
return n.json();
|
|
2854
2901
|
}
|
|
2855
|
-
async function
|
|
2856
|
-
let n = await
|
|
2902
|
+
async function ai(e, t) {
|
|
2903
|
+
let n = await Y(e, "/passkey/authentication/verify", {
|
|
2857
2904
|
method: "POST",
|
|
2858
2905
|
headers: { "Content-Type": "application/json" },
|
|
2859
2906
|
body: JSON.stringify({ response: t })
|
|
@@ -2862,60 +2909,61 @@ async function $r(e, t) {
|
|
|
2862
2909
|
let e = await n.text().catch(() => "Authentication verification failed");
|
|
2863
2910
|
throw Error(e);
|
|
2864
2911
|
}
|
|
2865
|
-
let { token: r } = await n
|
|
2912
|
+
let { token: r } = await Hr(n, "Passkey authentication verification"), i = {
|
|
2866
2913
|
token: r,
|
|
2867
2914
|
provider: "passkey",
|
|
2868
2915
|
authenticatedAt: Date.now()
|
|
2869
2916
|
};
|
|
2870
|
-
return
|
|
2917
|
+
return K(i), i;
|
|
2871
2918
|
}
|
|
2872
|
-
async function
|
|
2919
|
+
async function oi(e, t) {
|
|
2873
2920
|
try {
|
|
2874
|
-
await
|
|
2921
|
+
await Y(await C(t), "/logout", {
|
|
2875
2922
|
method: "POST",
|
|
2876
2923
|
headers: { Authorization: `Bearer ${e}` },
|
|
2877
|
-
signal:
|
|
2924
|
+
signal: x(Lr)
|
|
2878
2925
|
});
|
|
2879
2926
|
} catch {}
|
|
2880
2927
|
}
|
|
2881
2928
|
//#endregion
|
|
2882
2929
|
//#region ../../node_modules/@simplewebauthn/browser/esm/helpers/bufferToBase64URLString.js
|
|
2883
|
-
function
|
|
2930
|
+
function X(e) {
|
|
2884
2931
|
let t = new Uint8Array(e), n = "";
|
|
2885
2932
|
for (let e of t) n += String.fromCharCode(e);
|
|
2886
2933
|
return btoa(n).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
|
|
2887
2934
|
}
|
|
2888
2935
|
//#endregion
|
|
2889
2936
|
//#region ../../node_modules/@simplewebauthn/browser/esm/helpers/base64URLStringToBuffer.js
|
|
2890
|
-
function
|
|
2937
|
+
function si(e) {
|
|
2891
2938
|
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);
|
|
2892
2939
|
for (let e = 0; e < i.length; e++) o[e] = i.charCodeAt(e);
|
|
2893
2940
|
return a;
|
|
2894
2941
|
}
|
|
2895
2942
|
//#endregion
|
|
2896
2943
|
//#region ../../node_modules/@simplewebauthn/browser/esm/helpers/browserSupportsWebAuthn.js
|
|
2897
|
-
function
|
|
2898
|
-
return
|
|
2944
|
+
function ci() {
|
|
2945
|
+
return li.stubThis(globalThis?.PublicKeyCredential !== void 0 && typeof globalThis.PublicKeyCredential == "function");
|
|
2899
2946
|
}
|
|
2900
|
-
var
|
|
2947
|
+
var li = { stubThis: (e) => e };
|
|
2901
2948
|
//#endregion
|
|
2902
2949
|
//#region ../../node_modules/@simplewebauthn/browser/esm/helpers/toPublicKeyCredentialDescriptor.js
|
|
2903
|
-
function
|
|
2950
|
+
function ui(e) {
|
|
2904
2951
|
let { id: t } = e;
|
|
2905
2952
|
return {
|
|
2906
2953
|
...e,
|
|
2907
|
-
id:
|
|
2908
|
-
transports: e.transports
|
|
2954
|
+
id: si(t),
|
|
2955
|
+
transports: e.transports,
|
|
2956
|
+
type: e.type
|
|
2909
2957
|
};
|
|
2910
2958
|
}
|
|
2911
2959
|
//#endregion
|
|
2912
2960
|
//#region ../../node_modules/@simplewebauthn/browser/esm/helpers/isValidDomain.js
|
|
2913
|
-
function
|
|
2961
|
+
function di(e) {
|
|
2914
2962
|
return e === "localhost" || /^((xn--[a-z0-9-]+|[a-z0-9]+(-[a-z0-9]+)*)\.)+([a-z]{2,}|xn--[a-z0-9-]+)$/i.test(e);
|
|
2915
2963
|
}
|
|
2916
2964
|
//#endregion
|
|
2917
2965
|
//#region ../../node_modules/@simplewebauthn/browser/esm/helpers/webAuthnError.js
|
|
2918
|
-
var
|
|
2966
|
+
var Z = class extends Error {
|
|
2919
2967
|
constructor({ message: e, code: t, cause: n, name: r }) {
|
|
2920
2968
|
super(e, { cause: n }), Object.defineProperty(this, "code", {
|
|
2921
2969
|
enumerable: !0,
|
|
@@ -2927,76 +2975,76 @@ var Q = class extends Error {
|
|
|
2927
2975
|
};
|
|
2928
2976
|
//#endregion
|
|
2929
2977
|
//#region ../../node_modules/@simplewebauthn/browser/esm/helpers/identifyRegistrationError.js
|
|
2930
|
-
function
|
|
2978
|
+
function fi({ error: e, options: t }) {
|
|
2931
2979
|
let { publicKey: n } = t;
|
|
2932
2980
|
if (!n) throw Error("options was missing required publicKey property");
|
|
2933
2981
|
if (e.name === "AbortError") {
|
|
2934
|
-
if (t.signal instanceof AbortSignal) return new
|
|
2982
|
+
if (t.signal instanceof AbortSignal) return new Z({
|
|
2935
2983
|
message: "Registration ceremony was sent an abort signal",
|
|
2936
2984
|
code: "ERROR_CEREMONY_ABORTED",
|
|
2937
2985
|
cause: e
|
|
2938
2986
|
});
|
|
2939
2987
|
} else if (e.name === "ConstraintError") {
|
|
2940
|
-
if (n.authenticatorSelection?.requireResidentKey === !0) return new
|
|
2988
|
+
if (n.authenticatorSelection?.requireResidentKey === !0) return new Z({
|
|
2941
2989
|
message: "Discoverable credentials were required but no available authenticator supported it",
|
|
2942
2990
|
code: "ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",
|
|
2943
2991
|
cause: e
|
|
2944
2992
|
});
|
|
2945
|
-
if (t.mediation === "conditional" && n.authenticatorSelection?.userVerification === "required") return new
|
|
2993
|
+
if (t.mediation === "conditional" && n.authenticatorSelection?.userVerification === "required") return new Z({
|
|
2946
2994
|
message: "User verification was required during automatic registration but it could not be performed",
|
|
2947
2995
|
code: "ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE",
|
|
2948
2996
|
cause: e
|
|
2949
2997
|
});
|
|
2950
|
-
if (n.authenticatorSelection?.userVerification === "required") return new
|
|
2998
|
+
if (n.authenticatorSelection?.userVerification === "required") return new Z({
|
|
2951
2999
|
message: "User verification was required but no available authenticator supported it",
|
|
2952
3000
|
code: "ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT",
|
|
2953
3001
|
cause: e
|
|
2954
3002
|
});
|
|
2955
|
-
} else if (e.name === "InvalidStateError") return new
|
|
3003
|
+
} else if (e.name === "InvalidStateError") return new Z({
|
|
2956
3004
|
message: "The authenticator was previously registered",
|
|
2957
3005
|
code: "ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",
|
|
2958
3006
|
cause: e
|
|
2959
3007
|
});
|
|
2960
|
-
else if (e.name === "NotAllowedError") return new
|
|
3008
|
+
else if (e.name === "NotAllowedError") return new Z({
|
|
2961
3009
|
message: e.message,
|
|
2962
3010
|
code: "ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",
|
|
2963
3011
|
cause: e
|
|
2964
3012
|
});
|
|
2965
|
-
else if (e.name === "NotSupportedError") return n.pubKeyCredParams.filter((e) => e.type === "public-key").length === 0 ? new
|
|
3013
|
+
else if (e.name === "NotSupportedError") return n.pubKeyCredParams.filter((e) => e.type === "public-key").length === 0 ? new Z({
|
|
2966
3014
|
message: "No entry in pubKeyCredParams was of type \"public-key\"",
|
|
2967
3015
|
code: "ERROR_MALFORMED_PUBKEYCREDPARAMS",
|
|
2968
3016
|
cause: e
|
|
2969
|
-
}) : new
|
|
3017
|
+
}) : new Z({
|
|
2970
3018
|
message: "No available authenticator supported any of the specified pubKeyCredParams algorithms",
|
|
2971
3019
|
code: "ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG",
|
|
2972
3020
|
cause: e
|
|
2973
3021
|
});
|
|
2974
3022
|
else if (e.name === "SecurityError") {
|
|
2975
3023
|
let t = globalThis.location.hostname;
|
|
2976
|
-
if (!
|
|
3024
|
+
if (!di(t)) return new Z({
|
|
2977
3025
|
message: `${globalThis.location.hostname} is an invalid domain`,
|
|
2978
3026
|
code: "ERROR_INVALID_DOMAIN",
|
|
2979
3027
|
cause: e
|
|
2980
3028
|
});
|
|
2981
|
-
if (n.rp.id !== t) return new
|
|
3029
|
+
if (n.rp.id !== t) return new Z({
|
|
2982
3030
|
message: `The RP ID "${n.rp.id}" is invalid for this domain`,
|
|
2983
3031
|
code: "ERROR_INVALID_RP_ID",
|
|
2984
3032
|
cause: e
|
|
2985
3033
|
});
|
|
2986
3034
|
} else if (e.name === "TypeError") {
|
|
2987
|
-
if (n.user.id.byteLength < 1 || n.user.id.byteLength > 64) return new
|
|
3035
|
+
if (n.user.id.byteLength < 1 || n.user.id.byteLength > 64) return new Z({
|
|
2988
3036
|
message: "User ID was not between 1 and 64 characters",
|
|
2989
3037
|
code: "ERROR_INVALID_USER_ID_LENGTH",
|
|
2990
3038
|
cause: e
|
|
2991
3039
|
});
|
|
2992
|
-
} else if (e.name === "UnknownError") return new
|
|
3040
|
+
} else if (e.name === "UnknownError") return new Z({
|
|
2993
3041
|
message: "The authenticator was unable to process the specified options, or could not create a new credential",
|
|
2994
3042
|
code: "ERROR_AUTHENTICATOR_GENERAL_ERROR",
|
|
2995
3043
|
cause: e
|
|
2996
3044
|
});
|
|
2997
3045
|
return e;
|
|
2998
3046
|
}
|
|
2999
|
-
var
|
|
3047
|
+
var pi = new class {
|
|
3000
3048
|
constructor() {
|
|
3001
3049
|
Object.defineProperty(this, "controller", {
|
|
3002
3050
|
enumerable: !0,
|
|
@@ -3019,31 +3067,31 @@ var si = new class {
|
|
|
3019
3067
|
e.name = "AbortError", this.controller.abort(e), this.controller = void 0;
|
|
3020
3068
|
}
|
|
3021
3069
|
}
|
|
3022
|
-
}(),
|
|
3023
|
-
function
|
|
3024
|
-
if (e && !(
|
|
3070
|
+
}(), mi = ["cross-platform", "platform"];
|
|
3071
|
+
function hi(e) {
|
|
3072
|
+
if (e && !(mi.indexOf(e) < 0)) return e;
|
|
3025
3073
|
}
|
|
3026
3074
|
//#endregion
|
|
3027
3075
|
//#region ../../node_modules/@simplewebauthn/browser/esm/methods/startRegistration.js
|
|
3028
|
-
async function
|
|
3076
|
+
async function gi(e) {
|
|
3029
3077
|
!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 });
|
|
3030
3078
|
let { optionsJSON: t, useAutoRegister: n = !1 } = e;
|
|
3031
|
-
if (!
|
|
3079
|
+
if (!ci()) throw Error("WebAuthn is not supported in this browser");
|
|
3032
3080
|
let r = {
|
|
3033
3081
|
...t,
|
|
3034
|
-
challenge:
|
|
3082
|
+
challenge: si(t.challenge),
|
|
3035
3083
|
user: {
|
|
3036
3084
|
...t.user,
|
|
3037
|
-
id:
|
|
3085
|
+
id: si(t.user.id)
|
|
3038
3086
|
},
|
|
3039
|
-
excludeCredentials: t.excludeCredentials?.map(
|
|
3087
|
+
excludeCredentials: t.excludeCredentials?.map(ui)
|
|
3040
3088
|
}, i = {};
|
|
3041
|
-
n && (i.mediation = "conditional"), i.publicKey = r, i.signal =
|
|
3089
|
+
n && (i.mediation = "conditional"), i.publicKey = r, i.signal = pi.createNewAbortSignal();
|
|
3042
3090
|
let a;
|
|
3043
3091
|
try {
|
|
3044
3092
|
a = await navigator.credentials.create(i);
|
|
3045
3093
|
} catch (e) {
|
|
3046
|
-
throw
|
|
3094
|
+
throw fi({
|
|
3047
3095
|
error: e,
|
|
3048
3096
|
options: i
|
|
3049
3097
|
});
|
|
@@ -3055,27 +3103,27 @@ async function ui(e) {
|
|
|
3055
3103
|
if (typeof c.getPublicKeyAlgorithm == "function") try {
|
|
3056
3104
|
d = c.getPublicKeyAlgorithm();
|
|
3057
3105
|
} catch (e) {
|
|
3058
|
-
|
|
3106
|
+
_i("getPublicKeyAlgorithm()", e);
|
|
3059
3107
|
}
|
|
3060
3108
|
let f;
|
|
3061
3109
|
if (typeof c.getPublicKey == "function") try {
|
|
3062
3110
|
let e = c.getPublicKey();
|
|
3063
|
-
e !== null && (f =
|
|
3111
|
+
e !== null && (f = X(e));
|
|
3064
3112
|
} catch (e) {
|
|
3065
|
-
|
|
3113
|
+
_i("getPublicKey()", e);
|
|
3066
3114
|
}
|
|
3067
3115
|
let p;
|
|
3068
3116
|
if (typeof c.getAuthenticatorData == "function") try {
|
|
3069
|
-
p =
|
|
3117
|
+
p = X(c.getAuthenticatorData());
|
|
3070
3118
|
} catch (e) {
|
|
3071
|
-
|
|
3119
|
+
_i("getAuthenticatorData()", e);
|
|
3072
3120
|
}
|
|
3073
3121
|
return {
|
|
3074
3122
|
id: o,
|
|
3075
|
-
rawId:
|
|
3123
|
+
rawId: X(s),
|
|
3076
3124
|
response: {
|
|
3077
|
-
attestationObject:
|
|
3078
|
-
clientDataJSON:
|
|
3125
|
+
attestationObject: X(c.attestationObject),
|
|
3126
|
+
clientDataJSON: X(c.clientDataJSON),
|
|
3079
3127
|
transports: u,
|
|
3080
3128
|
publicKeyAlgorithm: d,
|
|
3081
3129
|
publicKey: f,
|
|
@@ -3083,49 +3131,49 @@ async function ui(e) {
|
|
|
3083
3131
|
},
|
|
3084
3132
|
type: l,
|
|
3085
3133
|
clientExtensionResults: a.getClientExtensionResults(),
|
|
3086
|
-
authenticatorAttachment:
|
|
3134
|
+
authenticatorAttachment: hi(a.authenticatorAttachment)
|
|
3087
3135
|
};
|
|
3088
3136
|
}
|
|
3089
|
-
function
|
|
3137
|
+
function _i(e, t) {
|
|
3090
3138
|
console.warn(`The browser extension that intercepted this WebAuthn API call incorrectly implemented ${e}. You should report this error to them.\n`, t);
|
|
3091
3139
|
}
|
|
3092
3140
|
//#endregion
|
|
3093
3141
|
//#region ../../node_modules/@simplewebauthn/browser/esm/helpers/browserSupportsWebAuthnAutofill.js
|
|
3094
|
-
function
|
|
3095
|
-
if (!
|
|
3142
|
+
function vi() {
|
|
3143
|
+
if (!ci()) return yi.stubThis(new Promise((e) => e(!1)));
|
|
3096
3144
|
let e = globalThis.PublicKeyCredential;
|
|
3097
|
-
return e?.isConditionalMediationAvailable === void 0 ?
|
|
3145
|
+
return e?.isConditionalMediationAvailable === void 0 ? yi.stubThis(new Promise((e) => e(!1))) : yi.stubThis(e.isConditionalMediationAvailable());
|
|
3098
3146
|
}
|
|
3099
|
-
var
|
|
3147
|
+
var yi = { stubThis: (e) => e };
|
|
3100
3148
|
//#endregion
|
|
3101
3149
|
//#region ../../node_modules/@simplewebauthn/browser/esm/helpers/identifyAuthenticationError.js
|
|
3102
|
-
function
|
|
3150
|
+
function bi({ error: e, options: t }) {
|
|
3103
3151
|
let { publicKey: n } = t;
|
|
3104
3152
|
if (!n) throw Error("options was missing required publicKey property");
|
|
3105
3153
|
if (e.name === "AbortError") {
|
|
3106
|
-
if (t.signal instanceof AbortSignal) return new
|
|
3154
|
+
if (t.signal instanceof AbortSignal) return new Z({
|
|
3107
3155
|
message: "Authentication ceremony was sent an abort signal",
|
|
3108
3156
|
code: "ERROR_CEREMONY_ABORTED",
|
|
3109
3157
|
cause: e
|
|
3110
3158
|
});
|
|
3111
|
-
} else if (e.name === "NotAllowedError") return new
|
|
3159
|
+
} else if (e.name === "NotAllowedError") return new Z({
|
|
3112
3160
|
message: e.message,
|
|
3113
3161
|
code: "ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",
|
|
3114
3162
|
cause: e
|
|
3115
3163
|
});
|
|
3116
3164
|
else if (e.name === "SecurityError") {
|
|
3117
3165
|
let t = globalThis.location.hostname;
|
|
3118
|
-
if (!
|
|
3166
|
+
if (!di(t)) return new Z({
|
|
3119
3167
|
message: `${globalThis.location.hostname} is an invalid domain`,
|
|
3120
3168
|
code: "ERROR_INVALID_DOMAIN",
|
|
3121
3169
|
cause: e
|
|
3122
3170
|
});
|
|
3123
|
-
if (n.rpId !== t) return new
|
|
3171
|
+
if (n.rpId !== t) return new Z({
|
|
3124
3172
|
message: `The RP ID "${n.rpId}" is invalid for this domain`,
|
|
3125
3173
|
code: "ERROR_INVALID_RP_ID",
|
|
3126
3174
|
cause: e
|
|
3127
3175
|
});
|
|
3128
|
-
} else if (e.name === "UnknownError") return new
|
|
3176
|
+
} else if (e.name === "UnknownError") return new Z({
|
|
3129
3177
|
message: "The authenticator was unable to process the specified options, or could not create a new assertion signature",
|
|
3130
3178
|
code: "ERROR_AUTHENTICATOR_GENERAL_ERROR",
|
|
3131
3179
|
cause: e
|
|
@@ -3134,65 +3182,65 @@ function mi({ error: e, options: t }) {
|
|
|
3134
3182
|
}
|
|
3135
3183
|
//#endregion
|
|
3136
3184
|
//#region ../../node_modules/@simplewebauthn/browser/esm/methods/startAuthentication.js
|
|
3137
|
-
async function
|
|
3185
|
+
async function xi(e) {
|
|
3138
3186
|
!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 });
|
|
3139
3187
|
let { optionsJSON: t, useBrowserAutofill: n = !1, verifyBrowserAutofillInput: r = !0 } = e;
|
|
3140
|
-
if (!
|
|
3188
|
+
if (!ci()) throw Error("WebAuthn is not supported in this browser");
|
|
3141
3189
|
let i;
|
|
3142
|
-
t.allowCredentials?.length !== 0 && (i = t.allowCredentials?.map(
|
|
3190
|
+
t.allowCredentials?.length !== 0 && (i = t.allowCredentials?.map(ui));
|
|
3143
3191
|
let a = {
|
|
3144
3192
|
...t,
|
|
3145
|
-
challenge:
|
|
3193
|
+
challenge: si(t.challenge),
|
|
3146
3194
|
allowCredentials: i
|
|
3147
3195
|
}, o = {};
|
|
3148
3196
|
if (n) {
|
|
3149
|
-
if (!await
|
|
3197
|
+
if (!await vi()) throw Error("Browser does not support WebAuthn autofill");
|
|
3150
3198
|
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");
|
|
3151
3199
|
o.mediation = "conditional", a.allowCredentials = [];
|
|
3152
3200
|
}
|
|
3153
|
-
o.publicKey = a, o.signal =
|
|
3201
|
+
o.publicKey = a, o.signal = pi.createNewAbortSignal();
|
|
3154
3202
|
let s;
|
|
3155
3203
|
try {
|
|
3156
3204
|
s = await navigator.credentials.get(o);
|
|
3157
3205
|
} catch (e) {
|
|
3158
|
-
throw
|
|
3206
|
+
throw bi({
|
|
3159
3207
|
error: e,
|
|
3160
3208
|
options: o
|
|
3161
3209
|
});
|
|
3162
3210
|
}
|
|
3163
3211
|
if (!s) throw Error("Authentication was not completed");
|
|
3164
3212
|
let { id: c, rawId: l, response: u, type: d } = s, f;
|
|
3165
|
-
return u.userHandle && (f =
|
|
3213
|
+
return u.userHandle && (f = X(u.userHandle)), {
|
|
3166
3214
|
id: c,
|
|
3167
|
-
rawId:
|
|
3215
|
+
rawId: X(l),
|
|
3168
3216
|
response: {
|
|
3169
|
-
authenticatorData:
|
|
3170
|
-
clientDataJSON:
|
|
3171
|
-
signature:
|
|
3217
|
+
authenticatorData: X(u.authenticatorData),
|
|
3218
|
+
clientDataJSON: X(u.clientDataJSON),
|
|
3219
|
+
signature: X(u.signature),
|
|
3172
3220
|
userHandle: f
|
|
3173
3221
|
},
|
|
3174
3222
|
type: d,
|
|
3175
3223
|
clientExtensionResults: s.getClientExtensionResults(),
|
|
3176
|
-
authenticatorAttachment:
|
|
3224
|
+
authenticatorAttachment: hi(s.authenticatorAttachment)
|
|
3177
3225
|
};
|
|
3178
3226
|
}
|
|
3179
3227
|
//#endregion
|
|
3180
3228
|
//#region src/auth/auth-context.tsx
|
|
3181
|
-
var
|
|
3182
|
-
async function
|
|
3229
|
+
var Si = "/dev-login-token", Ci = "X-Ikon-Dev-Login-Run";
|
|
3230
|
+
async function wi(e) {
|
|
3183
3231
|
let t = typeof window < "u" ? window.__IKON_LOCAL_IKON_SERVER_CONFIG__ : void 0;
|
|
3184
3232
|
if (!(!t?.enabled || !t.host || !t.port)) try {
|
|
3185
|
-
let n = await fetch(`https://${t.host}:${t.port}${
|
|
3233
|
+
let n = await fetch(`https://${t.host}:${t.port}${Si}`, {
|
|
3186
3234
|
cache: "no-store",
|
|
3187
|
-
headers: { [
|
|
3235
|
+
headers: { [Ci]: e }
|
|
3188
3236
|
});
|
|
3189
3237
|
return n.ok && (await n.json()).token || void 0;
|
|
3190
3238
|
} catch {
|
|
3191
3239
|
return;
|
|
3192
3240
|
}
|
|
3193
3241
|
}
|
|
3194
|
-
var
|
|
3195
|
-
function
|
|
3242
|
+
var Ti = De(null), Ei = 12e4, Di = 6e4;
|
|
3243
|
+
function Oi({ children: e, config: n }) {
|
|
3196
3244
|
let [r, i] = N({
|
|
3197
3245
|
isAuthenticated: !1,
|
|
3198
3246
|
isLoading: !0,
|
|
@@ -3202,9 +3250,9 @@ function Si({ children: e, config: n }) {
|
|
|
3202
3250
|
if (!c.current) {
|
|
3203
3251
|
c.current = !0;
|
|
3204
3252
|
try {
|
|
3205
|
-
let t = await
|
|
3253
|
+
let t = await Yr(e);
|
|
3206
3254
|
if (t === null) {
|
|
3207
|
-
|
|
3255
|
+
jr(), i({
|
|
3208
3256
|
isAuthenticated: !1,
|
|
3209
3257
|
isLoading: !1,
|
|
3210
3258
|
user: null,
|
|
@@ -3212,10 +3260,10 @@ function Si({ children: e, config: n }) {
|
|
|
3212
3260
|
});
|
|
3213
3261
|
return;
|
|
3214
3262
|
}
|
|
3215
|
-
|
|
3263
|
+
Ar(), i({
|
|
3216
3264
|
isAuthenticated: !0,
|
|
3217
3265
|
isLoading: !1,
|
|
3218
|
-
user:
|
|
3266
|
+
user: q(t),
|
|
3219
3267
|
error: null
|
|
3220
3268
|
});
|
|
3221
3269
|
} catch {} finally {
|
|
@@ -3226,28 +3274,28 @@ function Si({ children: e, config: n }) {
|
|
|
3226
3274
|
k(() => {
|
|
3227
3275
|
(() => {
|
|
3228
3276
|
if (s.current) return;
|
|
3229
|
-
let e = n.devLoginRunId, t = !!e &&
|
|
3230
|
-
e && !
|
|
3231
|
-
let r = !!n.devLoginToken && !!e && !t && !
|
|
3232
|
-
o ||
|
|
3233
|
-
let c =
|
|
3277
|
+
let e = n.devLoginRunId, t = !!e && Ir() === e && !Dr();
|
|
3278
|
+
e && !Zr() && Fr(e);
|
|
3279
|
+
let r = !!n.devLoginToken && !!e && !t && !Zr();
|
|
3280
|
+
o || Mr();
|
|
3281
|
+
let c = Xr();
|
|
3234
3282
|
if (c) {
|
|
3235
|
-
|
|
3283
|
+
ei(), i({
|
|
3236
3284
|
isAuthenticated: !1,
|
|
3237
3285
|
isLoading: !1,
|
|
3238
3286
|
user: null,
|
|
3239
|
-
error:
|
|
3287
|
+
error: $r(c.code, c.provider, { emailSignInAvailable: a })
|
|
3240
3288
|
});
|
|
3241
3289
|
return;
|
|
3242
3290
|
}
|
|
3243
|
-
|
|
3244
|
-
let l =
|
|
3291
|
+
ne();
|
|
3292
|
+
let l = qr();
|
|
3245
3293
|
if (l) {
|
|
3246
|
-
s.current = !0,
|
|
3294
|
+
s.current = !0, ei(), Jr(l.code, l.provider, n.authUrl).then((e) => {
|
|
3247
3295
|
i({
|
|
3248
3296
|
isAuthenticated: !0,
|
|
3249
3297
|
isLoading: !1,
|
|
3250
|
-
user:
|
|
3298
|
+
user: q(e),
|
|
3251
3299
|
error: null
|
|
3252
3300
|
});
|
|
3253
3301
|
}).catch((e) => {
|
|
@@ -3260,26 +3308,26 @@ function Si({ children: e, config: n }) {
|
|
|
3260
3308
|
});
|
|
3261
3309
|
return;
|
|
3262
3310
|
}
|
|
3263
|
-
let u =
|
|
3311
|
+
let u = Kr();
|
|
3264
3312
|
if (u) {
|
|
3265
3313
|
let e = {
|
|
3266
3314
|
token: u.token,
|
|
3267
3315
|
provider: u.provider,
|
|
3268
3316
|
authenticatedAt: Date.now()
|
|
3269
3317
|
};
|
|
3270
|
-
|
|
3318
|
+
K(e), ei(), i({
|
|
3271
3319
|
isAuthenticated: !0,
|
|
3272
3320
|
isLoading: !1,
|
|
3273
|
-
user:
|
|
3321
|
+
user: q(e),
|
|
3274
3322
|
error: null
|
|
3275
3323
|
});
|
|
3276
3324
|
return;
|
|
3277
3325
|
}
|
|
3278
|
-
let d =
|
|
3326
|
+
let d = kr();
|
|
3279
3327
|
if (d) {
|
|
3280
|
-
s.current = !0,
|
|
3328
|
+
s.current = !0, Yr(d).then((e) => {
|
|
3281
3329
|
if (e === null) {
|
|
3282
|
-
|
|
3330
|
+
jr(), i({
|
|
3283
3331
|
isAuthenticated: !1,
|
|
3284
3332
|
isLoading: !1,
|
|
3285
3333
|
user: null,
|
|
@@ -3287,10 +3335,10 @@ function Si({ children: e, config: n }) {
|
|
|
3287
3335
|
});
|
|
3288
3336
|
return;
|
|
3289
3337
|
}
|
|
3290
|
-
|
|
3338
|
+
Ar(), i({
|
|
3291
3339
|
isAuthenticated: !0,
|
|
3292
3340
|
isLoading: !1,
|
|
3293
|
-
user:
|
|
3341
|
+
user: q(e),
|
|
3294
3342
|
error: null
|
|
3295
3343
|
});
|
|
3296
3344
|
}).catch(() => {
|
|
@@ -3303,12 +3351,12 @@ function Si({ children: e, config: n }) {
|
|
|
3303
3351
|
});
|
|
3304
3352
|
return;
|
|
3305
3353
|
}
|
|
3306
|
-
let f =
|
|
3354
|
+
let f = Er();
|
|
3307
3355
|
if (f && !(r && f.provider === "anonymous")) {
|
|
3308
3356
|
i({
|
|
3309
3357
|
isAuthenticated: !0,
|
|
3310
3358
|
isLoading: !1,
|
|
3311
|
-
user:
|
|
3359
|
+
user: q(f),
|
|
3312
3360
|
error: null
|
|
3313
3361
|
});
|
|
3314
3362
|
return;
|
|
@@ -3319,21 +3367,21 @@ function Si({ children: e, config: n }) {
|
|
|
3319
3367
|
token: e,
|
|
3320
3368
|
provider: "dev",
|
|
3321
3369
|
authenticatedAt: Date.now(),
|
|
3322
|
-
expiresAt:
|
|
3370
|
+
expiresAt: Tr(e)
|
|
3323
3371
|
};
|
|
3324
|
-
|
|
3372
|
+
K(t), i({
|
|
3325
3373
|
isAuthenticated: !0,
|
|
3326
3374
|
isLoading: !1,
|
|
3327
|
-
user:
|
|
3375
|
+
user: q(t),
|
|
3328
3376
|
error: null
|
|
3329
3377
|
});
|
|
3330
3378
|
};
|
|
3331
|
-
if (!
|
|
3379
|
+
if (!wr(n.devLoginToken)) {
|
|
3332
3380
|
t(n.devLoginToken);
|
|
3333
3381
|
return;
|
|
3334
3382
|
}
|
|
3335
|
-
|
|
3336
|
-
if (e && !
|
|
3383
|
+
wi(e).then((e) => {
|
|
3384
|
+
if (e && !wr(e)) {
|
|
3337
3385
|
t(e);
|
|
3338
3386
|
return;
|
|
3339
3387
|
}
|
|
@@ -3360,12 +3408,12 @@ function Si({ children: e, config: n }) {
|
|
|
3360
3408
|
a,
|
|
3361
3409
|
o
|
|
3362
3410
|
]), k(() => {
|
|
3363
|
-
if (n.spaceId) return
|
|
3364
|
-
s.current = !0, e.codeVerifier &&
|
|
3411
|
+
if (n.spaceId) return ge(n.spaceId, (e) => {
|
|
3412
|
+
s.current = !0, e.codeVerifier && be(e.codeVerifier), Jr(e.code, e.provider, n.authUrl).then((e) => {
|
|
3365
3413
|
i({
|
|
3366
3414
|
isAuthenticated: !0,
|
|
3367
3415
|
isLoading: !1,
|
|
3368
|
-
user:
|
|
3416
|
+
user: q(e),
|
|
3369
3417
|
error: null
|
|
3370
3418
|
});
|
|
3371
3419
|
}).catch((e) => {
|
|
@@ -3380,9 +3428,9 @@ function Si({ children: e, config: n }) {
|
|
|
3380
3428
|
}, [n.spaceId, n.authUrl]), k(() => {
|
|
3381
3429
|
let e = r.user?.expiresAt;
|
|
3382
3430
|
if (!e || r.user?.provider === "dev") return;
|
|
3383
|
-
let t =
|
|
3431
|
+
let t = kr();
|
|
3384
3432
|
if (!t) return;
|
|
3385
|
-
let n = Date.parse(e) -
|
|
3433
|
+
let n = Date.parse(e) - Ei, i = setTimeout(() => void l(t), Math.max(0, n - Date.now())), a = () => {
|
|
3386
3434
|
document.visibilityState === "visible" && Date.now() >= n && l(t);
|
|
3387
3435
|
};
|
|
3388
3436
|
return document.addEventListener("visibilitychange", a), () => {
|
|
@@ -3398,25 +3446,25 @@ function Si({ children: e, config: n }) {
|
|
|
3398
3446
|
if (!e) return;
|
|
3399
3447
|
let t = r.user.expiresAt;
|
|
3400
3448
|
if (!t) return;
|
|
3401
|
-
let a = r.user.token, o = Date.parse(t) -
|
|
3449
|
+
let a = r.user.token, o = Date.parse(t) - Ei, s, c = !1, l = !1, u = async () => {
|
|
3402
3450
|
if (c || l) return;
|
|
3403
3451
|
l = !0;
|
|
3404
|
-
let t = await
|
|
3452
|
+
let t = await wi(e);
|
|
3405
3453
|
if (l = !1, c) return;
|
|
3406
|
-
if (!t || t === a ||
|
|
3407
|
-
s = setTimeout(() => void u(),
|
|
3454
|
+
if (!t || t === a || wr(t)) {
|
|
3455
|
+
s = setTimeout(() => void u(), Di);
|
|
3408
3456
|
return;
|
|
3409
3457
|
}
|
|
3410
3458
|
let n = {
|
|
3411
3459
|
token: t,
|
|
3412
3460
|
provider: "dev",
|
|
3413
3461
|
authenticatedAt: Date.now(),
|
|
3414
|
-
expiresAt:
|
|
3462
|
+
expiresAt: Tr(t)
|
|
3415
3463
|
};
|
|
3416
|
-
|
|
3464
|
+
K(n), i({
|
|
3417
3465
|
isAuthenticated: !0,
|
|
3418
3466
|
isLoading: !1,
|
|
3419
|
-
user:
|
|
3467
|
+
user: q(n),
|
|
3420
3468
|
error: null
|
|
3421
3469
|
});
|
|
3422
3470
|
};
|
|
@@ -3458,11 +3506,11 @@ function Si({ children: e, config: n }) {
|
|
|
3458
3506
|
isLoading: !0
|
|
3459
3507
|
}));
|
|
3460
3508
|
try {
|
|
3461
|
-
let r = await
|
|
3509
|
+
let r = await Ur(n.spaceId, t, e);
|
|
3462
3510
|
i({
|
|
3463
3511
|
isAuthenticated: !0,
|
|
3464
3512
|
isLoading: !1,
|
|
3465
|
-
user:
|
|
3513
|
+
user: q(r),
|
|
3466
3514
|
error: null
|
|
3467
3515
|
});
|
|
3468
3516
|
} catch (e) {
|
|
@@ -3481,11 +3529,11 @@ function Si({ children: e, config: n }) {
|
|
|
3481
3529
|
error: null
|
|
3482
3530
|
}));
|
|
3483
3531
|
try {
|
|
3484
|
-
let e = await
|
|
3532
|
+
let e = await xi({ optionsJSON: await ii(t) }), n = await ai(t, e);
|
|
3485
3533
|
i({
|
|
3486
3534
|
isAuthenticated: !0,
|
|
3487
3535
|
isLoading: !1,
|
|
3488
|
-
user:
|
|
3536
|
+
user: q(n),
|
|
3489
3537
|
error: null
|
|
3490
3538
|
});
|
|
3491
3539
|
} catch (e) {
|
|
@@ -3498,22 +3546,22 @@ function Si({ children: e, config: n }) {
|
|
|
3498
3546
|
return;
|
|
3499
3547
|
}
|
|
3500
3548
|
if (e === "email") throw Error("login('email') is not supported. Use requestEmailCode()/submitEmailCode() from useAuth() instead.");
|
|
3501
|
-
if (
|
|
3502
|
-
await
|
|
3549
|
+
if (me()) {
|
|
3550
|
+
await Se(e, n.spaceId) || i((e) => ({
|
|
3503
3551
|
...e,
|
|
3504
3552
|
isLoading: !1,
|
|
3505
3553
|
error: "The sign-in window did not complete. Allow pop-ups for this site and try again."
|
|
3506
3554
|
}));
|
|
3507
3555
|
return;
|
|
3508
3556
|
}
|
|
3509
|
-
window.location.href = await
|
|
3557
|
+
window.location.href = await ti(e, n.spaceId, t);
|
|
3510
3558
|
}, [n.authUrl, n.spaceId]), d = O(async (e) => {
|
|
3511
3559
|
if (!n.spaceId) throw i((e) => ({
|
|
3512
3560
|
...e,
|
|
3513
3561
|
error: "Space ID is not configured"
|
|
3514
3562
|
})), Error("Space ID is not configured");
|
|
3515
3563
|
let t = await C(n.authUrl);
|
|
3516
|
-
await
|
|
3564
|
+
await Wr({
|
|
3517
3565
|
email: e,
|
|
3518
3566
|
spaceId: n.spaceId,
|
|
3519
3567
|
authUrl: t
|
|
@@ -3525,7 +3573,7 @@ function Si({ children: e, config: n }) {
|
|
|
3525
3573
|
error: null
|
|
3526
3574
|
}));
|
|
3527
3575
|
try {
|
|
3528
|
-
let r = await
|
|
3576
|
+
let r = await Gr({
|
|
3529
3577
|
email: e,
|
|
3530
3578
|
code: t,
|
|
3531
3579
|
authUrl: await C(n.authUrl)
|
|
@@ -3533,7 +3581,7 @@ function Si({ children: e, config: n }) {
|
|
|
3533
3581
|
i({
|
|
3534
3582
|
isAuthenticated: !0,
|
|
3535
3583
|
isLoading: !1,
|
|
3536
|
-
user:
|
|
3584
|
+
user: q(r),
|
|
3537
3585
|
error: null
|
|
3538
3586
|
});
|
|
3539
3587
|
} catch (e) {
|
|
@@ -3546,7 +3594,7 @@ function Si({ children: e, config: n }) {
|
|
|
3546
3594
|
}
|
|
3547
3595
|
}, [n.authUrl]), p = O(() => {
|
|
3548
3596
|
let e = r.user?.token;
|
|
3549
|
-
e &&
|
|
3597
|
+
e && oi(e, n.authUrl), Pr(), jr(), t.clearAll(), i({
|
|
3550
3598
|
isAuthenticated: !1,
|
|
3551
3599
|
isLoading: !1,
|
|
3552
3600
|
user: null,
|
|
@@ -3560,11 +3608,11 @@ function Si({ children: e, config: n }) {
|
|
|
3560
3608
|
error: null
|
|
3561
3609
|
}));
|
|
3562
3610
|
try {
|
|
3563
|
-
let n = await
|
|
3611
|
+
let n = await ri(t, await gi({ optionsJSON: await ni(t) }), e);
|
|
3564
3612
|
i({
|
|
3565
3613
|
isAuthenticated: !0,
|
|
3566
3614
|
isLoading: !1,
|
|
3567
|
-
user:
|
|
3615
|
+
user: q(n),
|
|
3568
3616
|
error: null
|
|
3569
3617
|
});
|
|
3570
3618
|
} catch (e) {
|
|
@@ -3591,37 +3639,38 @@ function Si({ children: e, config: n }) {
|
|
|
3591
3639
|
d,
|
|
3592
3640
|
f
|
|
3593
3641
|
]);
|
|
3594
|
-
return /* @__PURE__ */ P(
|
|
3642
|
+
return /* @__PURE__ */ P(Ti, {
|
|
3595
3643
|
value: g,
|
|
3596
3644
|
children: e
|
|
3597
3645
|
});
|
|
3598
3646
|
}
|
|
3599
|
-
function
|
|
3600
|
-
let e =
|
|
3647
|
+
function ki() {
|
|
3648
|
+
let e = Oe(Ti);
|
|
3601
3649
|
if (!e) throw Error("useAuth must be used within an AuthProvider");
|
|
3602
3650
|
return e;
|
|
3603
3651
|
}
|
|
3604
|
-
function
|
|
3605
|
-
return
|
|
3652
|
+
function Ai() {
|
|
3653
|
+
return Oe(Ti);
|
|
3606
3654
|
}
|
|
3607
3655
|
//#endregion
|
|
3608
3656
|
//#region src/auth/oauth-continuation.ts
|
|
3609
|
-
var
|
|
3610
|
-
function
|
|
3657
|
+
var ji = "ikon-oauth", Mi = "ikon-oauth-continue", Ni = "ikon-oauth-continue-attempts", Pi = 5, Fi = 6e5;
|
|
3658
|
+
function Ii() {
|
|
3611
3659
|
if (typeof window > "u") return !1;
|
|
3612
|
-
let e = new URL(window.location.href).searchParams.get(
|
|
3613
|
-
return e ? (
|
|
3660
|
+
let e = new URL(window.location.href).searchParams.get(ji);
|
|
3661
|
+
return e ? (Wi(e), !0) : Ui() !== null;
|
|
3614
3662
|
}
|
|
3615
|
-
function
|
|
3616
|
-
return
|
|
3663
|
+
function Li() {
|
|
3664
|
+
return Ri() !== null;
|
|
3617
3665
|
}
|
|
3618
|
-
function
|
|
3619
|
-
return typeof window > "u" ? null : new URL(window.location.href).searchParams.get("ikon-oauth") ??
|
|
3666
|
+
function Ri() {
|
|
3667
|
+
return typeof window > "u" ? null : new URL(window.location.href).searchParams.get("ikon-oauth") ?? Ui();
|
|
3620
3668
|
}
|
|
3621
|
-
|
|
3622
|
-
|
|
3623
|
-
|
|
3624
|
-
if (!
|
|
3669
|
+
var zi = "You are not allowed to connect an application to this app with this account.";
|
|
3670
|
+
async function Bi(e) {
|
|
3671
|
+
let t = Ri();
|
|
3672
|
+
if (!t) return { status: "pending" };
|
|
3673
|
+
if (!e) return Hi() < Pi ? (console.warn("[ikon] Waiting for the signed-in session before continuing the authorization that sent you here."), { status: "pending" }) : (Gi(), 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" });
|
|
3625
3674
|
try {
|
|
3626
3675
|
let n = await fetch("/ikon/oauth/continue", {
|
|
3627
3676
|
method: "POST",
|
|
@@ -3631,68 +3680,89 @@ async function Ni(e) {
|
|
|
3631
3680
|
},
|
|
3632
3681
|
body: JSON.stringify({ continueId: t })
|
|
3633
3682
|
});
|
|
3634
|
-
if (!n.ok)
|
|
3683
|
+
if (!n.ok) {
|
|
3684
|
+
if (Gi(), n.status === 403) {
|
|
3685
|
+
let e = await Vi(n);
|
|
3686
|
+
return console.warn(`[ikon] The authorization that sent you here was refused: ${e}`), {
|
|
3687
|
+
status: "refused",
|
|
3688
|
+
message: e
|
|
3689
|
+
};
|
|
3690
|
+
}
|
|
3691
|
+
return console.warn(`[ikon] Could not continue the authorization that sent you here (${n.status}). Start the connection again from the application.`), { status: "pending" };
|
|
3692
|
+
}
|
|
3635
3693
|
let { consentUrl: r } = await n.json();
|
|
3636
|
-
return r ? (
|
|
3694
|
+
return r ? (Gi(), window.location.href = r, { status: "handed-off" }) : (Gi(), console.warn("[ikon] The authorization that sent you here returned no consent step. Start the connection again from the application."), { status: "pending" });
|
|
3637
3695
|
} catch {
|
|
3638
|
-
return
|
|
3696
|
+
return { status: "pending" };
|
|
3639
3697
|
}
|
|
3640
3698
|
}
|
|
3641
|
-
function
|
|
3699
|
+
async function Vi(e) {
|
|
3642
3700
|
try {
|
|
3643
|
-
let e =
|
|
3644
|
-
return
|
|
3701
|
+
let t = await e.json(), n = Array.isArray(t?.message) ? t.message.join(", ") : t?.message;
|
|
3702
|
+
return typeof n == "string" && n.trim().length > 0 ? n : zi;
|
|
3645
3703
|
} catch {
|
|
3646
|
-
return
|
|
3704
|
+
return zi;
|
|
3647
3705
|
}
|
|
3648
3706
|
}
|
|
3649
|
-
function
|
|
3707
|
+
function Hi() {
|
|
3650
3708
|
try {
|
|
3651
|
-
let e = sessionStorage.getItem(
|
|
3709
|
+
let e = Number(sessionStorage.getItem(Ni) ?? "0") + 1;
|
|
3710
|
+
return sessionStorage.setItem(Ni, String(e)), e;
|
|
3711
|
+
} catch {
|
|
3712
|
+
return Pi;
|
|
3713
|
+
}
|
|
3714
|
+
}
|
|
3715
|
+
function Ui() {
|
|
3716
|
+
try {
|
|
3717
|
+
let e = sessionStorage.getItem(Mi);
|
|
3652
3718
|
if (!e) return null;
|
|
3653
3719
|
let { id: t, at: n } = JSON.parse(e);
|
|
3654
|
-
return !t || typeof n != "number" || Date.now() - n >
|
|
3720
|
+
return !t || typeof n != "number" || Date.now() - n > Fi ? (Gi(), null) : t;
|
|
3655
3721
|
} catch {
|
|
3656
|
-
return
|
|
3722
|
+
return Gi(), null;
|
|
3657
3723
|
}
|
|
3658
3724
|
}
|
|
3659
|
-
function
|
|
3725
|
+
function Wi(e) {
|
|
3660
3726
|
try {
|
|
3661
|
-
sessionStorage.setItem(
|
|
3727
|
+
sessionStorage.setItem(Mi, JSON.stringify({
|
|
3662
3728
|
id: e,
|
|
3663
3729
|
at: Date.now()
|
|
3664
3730
|
}));
|
|
3665
3731
|
} catch {}
|
|
3666
3732
|
}
|
|
3667
|
-
function
|
|
3733
|
+
function Gi() {
|
|
3668
3734
|
try {
|
|
3669
|
-
sessionStorage.removeItem(
|
|
3735
|
+
sessionStorage.removeItem(Mi), sessionStorage.removeItem(Ni);
|
|
3670
3736
|
} catch {}
|
|
3671
3737
|
try {
|
|
3672
3738
|
let e = new URL(window.location.href);
|
|
3673
|
-
e.searchParams.has("ikon-oauth") && (e.searchParams.delete(
|
|
3739
|
+
e.searchParams.has("ikon-oauth") && (e.searchParams.delete(ji), window.history.replaceState(null, "", e.toString()));
|
|
3674
3740
|
} catch {}
|
|
3675
3741
|
}
|
|
3676
3742
|
//#endregion
|
|
3677
3743
|
//#region src/auth/use-auth-guard.ts
|
|
3678
|
-
function
|
|
3679
|
-
let { config: t, guestUrlParam: n } = e, { state: r, login: i, getToken: a } =
|
|
3744
|
+
function Ki(e) {
|
|
3745
|
+
let { config: t, guestUrlParam: n } = e, { state: r, login: i, getToken: a } = ki(), o = M(!1), s = M(!1), c = M(null), l = Ae(Ce, T, T), u = l.required;
|
|
3680
3746
|
k(() => {
|
|
3681
|
-
|
|
3747
|
+
Ii() && xe("An application is asking to act as you. Sign in to review what it wants.");
|
|
3682
3748
|
}, []), k(() => {
|
|
3683
|
-
if (!(!
|
|
3684
|
-
if (!
|
|
3685
|
-
|
|
3749
|
+
if (!(!u || !r.isAuthenticated || !r.user || r.user.provider === "anonymous")) {
|
|
3750
|
+
if (!Li()) {
|
|
3751
|
+
c.current || re();
|
|
3686
3752
|
return;
|
|
3687
3753
|
}
|
|
3688
|
-
s.current || (s.current = !0,
|
|
3689
|
-
(e
|
|
3754
|
+
s.current || (s.current = !0, Bi(a()).then((e) => {
|
|
3755
|
+
if (e.status === "refused") {
|
|
3756
|
+
c.current = e.message, xe(e.message);
|
|
3757
|
+
return;
|
|
3758
|
+
}
|
|
3759
|
+
(e.status === "handed-off" || !Li()) && re();
|
|
3690
3760
|
}).finally(() => {
|
|
3691
3761
|
s.current = !1;
|
|
3692
3762
|
}));
|
|
3693
3763
|
}
|
|
3694
3764
|
}, [
|
|
3695
|
-
|
|
3765
|
+
u,
|
|
3696
3766
|
r.isAuthenticated,
|
|
3697
3767
|
r.user,
|
|
3698
3768
|
a
|
|
@@ -3701,7 +3771,7 @@ function Ri(e) {
|
|
|
3701
3771
|
let e = t.methods.includes("global") ? "global" : t.methods.includes("guest") ? "guest" : null;
|
|
3702
3772
|
if (!e) return;
|
|
3703
3773
|
let a = new URLSearchParams(window.location.search), s = a.get(n);
|
|
3704
|
-
if (s === "true" || s === "1" || s === "" ||
|
|
3774
|
+
if (s === "true" || s === "1" || s === "" || Zr()) {
|
|
3705
3775
|
a.delete(n);
|
|
3706
3776
|
let t = a.toString(), r = window.location.pathname + (t ? `?${t}` : "");
|
|
3707
3777
|
window.history.replaceState({}, "", r), o.current = !0, i(e);
|
|
@@ -3713,30 +3783,30 @@ function Ri(e) {
|
|
|
3713
3783
|
t.methods,
|
|
3714
3784
|
i
|
|
3715
3785
|
]);
|
|
3716
|
-
let
|
|
3786
|
+
let d = t.methods.includes("guest") || t.methods.includes("global"), f = r.isAuthenticated && (d || r.user?.provider !== "anonymous"), p = !!t.requireSignIn && !f;
|
|
3717
3787
|
return {
|
|
3718
|
-
shouldRenderChildren: !
|
|
3788
|
+
shouldRenderChildren: !p && !u,
|
|
3719
3789
|
isCheckingAuth: r.isLoading,
|
|
3720
3790
|
isAuthenticated: r.isAuthenticated,
|
|
3721
3791
|
error: r.error,
|
|
3722
|
-
isLoginPrompt:
|
|
3723
|
-
dismissLoginPrompt:
|
|
3724
|
-
loginPromptReason:
|
|
3792
|
+
isLoginPrompt: u && !p,
|
|
3793
|
+
dismissLoginPrompt: re,
|
|
3794
|
+
loginPromptReason: u ? l.reason : null
|
|
3725
3795
|
};
|
|
3726
3796
|
}
|
|
3727
3797
|
//#endregion
|
|
3728
3798
|
//#region src/debug/debug-overlay.tsx
|
|
3729
|
-
var
|
|
3799
|
+
var qi = (() => {
|
|
3730
3800
|
try {
|
|
3731
3801
|
return w();
|
|
3732
3802
|
} catch {
|
|
3733
3803
|
return !1;
|
|
3734
3804
|
}
|
|
3735
|
-
})(),
|
|
3736
|
-
function
|
|
3737
|
-
|
|
3805
|
+
})(), Ji = Date.now(), Q = [], Yi = 300;
|
|
3806
|
+
function Xi(e) {
|
|
3807
|
+
Q.push(`[+${((Date.now() - Ji) / 1e3).toFixed(1)}s] ${e}`), Q.length > Yi && Q.shift();
|
|
3738
3808
|
}
|
|
3739
|
-
function
|
|
3809
|
+
function Zi(e) {
|
|
3740
3810
|
if (typeof e == "string") return e;
|
|
3741
3811
|
if (e instanceof Error) return `${e.name}: ${e.message}`;
|
|
3742
3812
|
try {
|
|
@@ -3745,10 +3815,10 @@ function Ui(e) {
|
|
|
3745
3815
|
return String(e);
|
|
3746
3816
|
}
|
|
3747
3817
|
}
|
|
3748
|
-
var
|
|
3749
|
-
function
|
|
3750
|
-
if (
|
|
3751
|
-
|
|
3818
|
+
var Qi = !1;
|
|
3819
|
+
function $i() {
|
|
3820
|
+
if (Qi || typeof window > "u") return;
|
|
3821
|
+
Qi = !0, window.addEventListener("error", (e) => Xi(`window.error: ${e.message} @ ${e.filename ?? "?"}:${e.lineno ?? "?"}:${e.colno ?? "?"}`)), window.addEventListener("unhandledrejection", (e) => Xi(`unhandledRejection: ${Zi(e.reason)}`));
|
|
3752
3822
|
let e = console;
|
|
3753
3823
|
for (let t of [
|
|
3754
3824
|
"error",
|
|
@@ -3759,17 +3829,17 @@ function Gi() {
|
|
|
3759
3829
|
let n = e[t]?.bind(console) ?? (() => void 0);
|
|
3760
3830
|
e[t] = (...e) => {
|
|
3761
3831
|
try {
|
|
3762
|
-
|
|
3832
|
+
Xi(`console.${t}: ${e.map(Zi).join(" ")}`);
|
|
3763
3833
|
} catch {}
|
|
3764
3834
|
n(...e);
|
|
3765
3835
|
};
|
|
3766
3836
|
}
|
|
3767
3837
|
try {
|
|
3768
|
-
|
|
3838
|
+
we((e) => Xi(`${e.levelName} [${e.component}] ${e.message}`), { minLevel: v.DEBUG });
|
|
3769
3839
|
} catch {}
|
|
3770
3840
|
}
|
|
3771
|
-
|
|
3772
|
-
function
|
|
3841
|
+
qi && $i();
|
|
3842
|
+
function ea() {
|
|
3773
3843
|
let e = !1;
|
|
3774
3844
|
try {
|
|
3775
3845
|
let t = URL.createObjectURL(new Blob([""]));
|
|
@@ -3779,11 +3849,11 @@ function Ki() {
|
|
|
3779
3849
|
} catch {}
|
|
3780
3850
|
return e;
|
|
3781
3851
|
}
|
|
3782
|
-
function
|
|
3852
|
+
function ta() {
|
|
3783
3853
|
let e = globalThis;
|
|
3784
3854
|
return [
|
|
3785
3855
|
`Worker=${typeof Worker < "u"}`,
|
|
3786
|
-
`moduleWorker=${
|
|
3856
|
+
`moduleWorker=${ea()}`,
|
|
3787
3857
|
`WebSocket=${typeof WebSocket < "u"}`,
|
|
3788
3858
|
`WebTransport=${e.WebTransport !== void 0}`,
|
|
3789
3859
|
`RTCPeerConnection=${typeof RTCPeerConnection < "u"}`,
|
|
@@ -3796,14 +3866,14 @@ function qi() {
|
|
|
3796
3866
|
`online=${typeof navigator < "u" ? navigator.onLine : "?"}`
|
|
3797
3867
|
].join(" ");
|
|
3798
3868
|
}
|
|
3799
|
-
function
|
|
3869
|
+
function na(e) {
|
|
3800
3870
|
return /ERROR|error:|Rejection/.test(e) ? "#f88" : /WARN|warn:/.test(e) ? "#fc6" : "#9d9";
|
|
3801
3871
|
}
|
|
3802
|
-
function
|
|
3803
|
-
let n =
|
|
3872
|
+
function ra({ state: e = "", forceVisible: t = !1 }) {
|
|
3873
|
+
let n = qi || t, r = e === "connected" || e === "reconnecting", [, i] = ke((e) => e + 1, 0), [a, o] = N(!0);
|
|
3804
3874
|
return k(() => {
|
|
3805
3875
|
if (!n) return;
|
|
3806
|
-
|
|
3876
|
+
$i();
|
|
3807
3877
|
let e = setInterval(i, 1e3);
|
|
3808
3878
|
return () => clearInterval(e);
|
|
3809
3879
|
}, [n]), n ? r && a ? /* @__PURE__ */ F("button", {
|
|
@@ -3823,7 +3893,7 @@ function Yi({ state: e = "", forceVisible: t = !1 }) {
|
|
|
3823
3893
|
},
|
|
3824
3894
|
children: [
|
|
3825
3895
|
"🐞 debug (",
|
|
3826
|
-
|
|
3896
|
+
Q.length,
|
|
3827
3897
|
")"
|
|
3828
3898
|
]
|
|
3829
3899
|
}) : /* @__PURE__ */ F("div", {
|
|
@@ -3857,9 +3927,9 @@ function Yi({ state: e = "", forceVisible: t = !1 }) {
|
|
|
3857
3927
|
"Ikon debug overlay — state: ",
|
|
3858
3928
|
e || "?",
|
|
3859
3929
|
", +",
|
|
3860
|
-
Math.round((Date.now() -
|
|
3930
|
+
Math.round((Date.now() - Ji) / 1e3),
|
|
3861
3931
|
"s, ",
|
|
3862
|
-
|
|
3932
|
+
Q.length,
|
|
3863
3933
|
" entries",
|
|
3864
3934
|
r && /* @__PURE__ */ P("button", {
|
|
3865
3935
|
type: "button",
|
|
@@ -3898,7 +3968,7 @@ function Yi({ state: e = "", forceVisible: t = !1 }) {
|
|
|
3898
3968
|
color: "#8cf",
|
|
3899
3969
|
marginBottom: "4px"
|
|
3900
3970
|
},
|
|
3901
|
-
children:
|
|
3971
|
+
children: ta()
|
|
3902
3972
|
}),
|
|
3903
3973
|
/* @__PURE__ */ P("div", {
|
|
3904
3974
|
style: {
|
|
@@ -3907,9 +3977,9 @@ function Yi({ state: e = "", forceVisible: t = !1 }) {
|
|
|
3907
3977
|
},
|
|
3908
3978
|
children: typeof window < "u" ? `viewport=${window.innerWidth}x${window.innerHeight} dpr=${window.devicePixelRatio}` : ""
|
|
3909
3979
|
}),
|
|
3910
|
-
/* @__PURE__ */ P("div", { children:
|
|
3980
|
+
/* @__PURE__ */ P("div", { children: Q.length === 0 ? "(nothing captured yet)" : Q.map((e, t) => /* @__PURE__ */ P("div", {
|
|
3911
3981
|
style: {
|
|
3912
|
-
color:
|
|
3982
|
+
color: na(e),
|
|
3913
3983
|
wordBreak: "break-all"
|
|
3914
3984
|
},
|
|
3915
3985
|
children: e
|
|
@@ -3919,7 +3989,7 @@ function Yi({ state: e = "", forceVisible: t = !1 }) {
|
|
|
3919
3989
|
}
|
|
3920
3990
|
//#endregion
|
|
3921
3991
|
//#region src/app/connection-state-renderer.tsx
|
|
3922
|
-
function
|
|
3992
|
+
function ia({ 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 }) {
|
|
3923
3993
|
let m = M(!1), h = (() => {
|
|
3924
3994
|
switch (e) {
|
|
3925
3995
|
case "waitingForExternalConnectUrl":
|
|
@@ -3945,252 +4015,252 @@ function Xi({ connectionState: e, error: t, isReady: n, isConnectingSlow: r, sto
|
|
|
3945
4015
|
default: return null;
|
|
3946
4016
|
}
|
|
3947
4017
|
})();
|
|
3948
|
-
return /* @__PURE__ */ F(
|
|
4018
|
+
return /* @__PURE__ */ F(je, { children: [h, /* @__PURE__ */ P(ra, { state: e })] });
|
|
3949
4019
|
}
|
|
3950
4020
|
//#endregion
|
|
3951
4021
|
//#region src/app/boot-snapshot-variant.ts
|
|
3952
|
-
function
|
|
4022
|
+
function aa(e, t) {
|
|
3953
4023
|
return e === !1 ? !1 : t ? "signed-in" : "guest";
|
|
3954
4024
|
}
|
|
3955
4025
|
//#endregion
|
|
3956
4026
|
//#region src/app/use-ikon-app.ts
|
|
3957
|
-
var
|
|
3958
|
-
function
|
|
4027
|
+
var oa = S("useIkonApp");
|
|
4028
|
+
function sa() {
|
|
3959
4029
|
if (typeof window < "u" && window.__IKON_AUTH_CONFIG__) return window.__IKON_AUTH_CONFIG__;
|
|
3960
4030
|
}
|
|
3961
|
-
function
|
|
4031
|
+
function ca() {
|
|
3962
4032
|
if (typeof window < "u" && window.__IKON_LOCAL_IKON_SERVER_CONFIG__) return window.__IKON_LOCAL_IKON_SERVER_CONFIG__;
|
|
3963
4033
|
}
|
|
3964
|
-
function
|
|
4034
|
+
function la(e, t) {
|
|
3965
4035
|
return {
|
|
3966
4036
|
...e,
|
|
3967
4037
|
...t ?? {}
|
|
3968
4038
|
};
|
|
3969
4039
|
}
|
|
3970
|
-
function
|
|
3971
|
-
return e?.token ? `${e.provider}:${
|
|
4040
|
+
function ua(e) {
|
|
4041
|
+
return e?.token ? `${e.provider}:${se(e.token) ?? e.token}` : null;
|
|
3972
4042
|
}
|
|
3973
|
-
function
|
|
3974
|
-
let { authConfig: n, modules: r, parameters:
|
|
3975
|
-
|
|
3976
|
-
let [A,
|
|
4043
|
+
function da(e) {
|
|
4044
|
+
let { authConfig: n, modules: r, parameters: f, timeouts: p, backgroundAudio: m, webRtc: h, audio: g, video: v, websocket: x, webtransport: ne, httpstream: re, proxy: S, liveSnapshot: ie, bootSnapshot: oe } = e, w = n === void 0 ? sa() ?? null : n, ce = ca(), T = Ai(), le = !!T && T.state.isLoading, E = M(null), ue = M(null), de = M(null), pe = M(!1), me = M(!1), he = M(m), ge = M(p), ve = M(h), be = M(g), xe = M(v), Se = M(x), Ce = M(ne), we = M(re), Te = M(S), Ee = M(ie), De = M(oe), D = M("local"), Oe = M(void 0);
|
|
4045
|
+
he.current = m, ge.current = p, ve.current = h, be.current = g, xe.current = v, Se.current = x, Ce.current = ne, we.current = re, Te.current = S, Ee.current = ie, De.current = oe;
|
|
4046
|
+
let [A, ke] = N("connecting"), [Ae, je] = N(!1), [P, F] = N(!1), [Me, I] = N(null), [Ne, Pe] = N(null), [Fe, Ie] = N(!1), [Le, Re] = N(!1), [ze, Be] = N(!1), [Ve, He] = N(null), [L, Ue] = N(null), [We, Ge] = N(!1), Ke = M(!1), [qe, Je] = N(0), [Ye, Xe] = N(0), R = j(() => {
|
|
3977
4047
|
try {
|
|
3978
|
-
return
|
|
4048
|
+
return _e();
|
|
3979
4049
|
} catch {
|
|
3980
4050
|
return { parameters: {} };
|
|
3981
4051
|
}
|
|
3982
|
-
}, []),
|
|
3983
|
-
|
|
3984
|
-
let
|
|
4052
|
+
}, []), Ze = JSON.stringify(f ?? {}), z = j(() => la(R.parameters, f), [R.parameters, Ze]), $e = (w?.methods?.length ?? 0) > 0, B = aa(oe, $e && Nr());
|
|
4053
|
+
B !== !1 && !i() && a(B);
|
|
4054
|
+
let V = j(() => {
|
|
3985
4055
|
if (!w?.spaceId) return null;
|
|
3986
4056
|
let e = T?.state.user;
|
|
3987
4057
|
return e ? {
|
|
3988
4058
|
token: e.token,
|
|
3989
4059
|
provider: e.provider,
|
|
3990
4060
|
authenticatedAt: e.authenticatedAt
|
|
3991
|
-
} :
|
|
4061
|
+
} : Er();
|
|
3992
4062
|
}, [
|
|
3993
4063
|
w?.spaceId,
|
|
3994
|
-
|
|
4064
|
+
qe,
|
|
3995
4065
|
T?.state.isLoading,
|
|
3996
4066
|
T?.state.isAuthenticated,
|
|
3997
4067
|
T?.state.user?.token
|
|
3998
|
-
]),
|
|
3999
|
-
|
|
4000
|
-
|
|
4068
|
+
]), H = ce?.enabled ?? !1, et = ce?.host ?? l, tt = ce?.port ?? u, nt = !le && !!w && !V && !w.requireSignIn && !!w.spaceId && (fe() || H);
|
|
4069
|
+
nt && !L && !We && !Ke.current && (Ke.current = !0, C(w.authUrl).then((e) => Ur(w.spaceId, e)).then((e) => {
|
|
4070
|
+
Ue(e.token), Ge(!0);
|
|
4001
4071
|
}).catch((e) => {
|
|
4002
|
-
|
|
4072
|
+
oa.error("Anonymous auth failed:", e), Ke.current = !1, H ? Ge(!0) : I(e instanceof Error ? e.message : "Anonymous auth failed");
|
|
4003
4073
|
}));
|
|
4004
|
-
let
|
|
4005
|
-
|
|
4006
|
-
let
|
|
4007
|
-
if (
|
|
4008
|
-
if (
|
|
4009
|
-
if (
|
|
4010
|
-
let e =
|
|
4074
|
+
let rt = ua(V), U = M(void 0);
|
|
4075
|
+
U.current = V?.token ?? void 0;
|
|
4076
|
+
let it = j(() => {
|
|
4077
|
+
if (le) return null;
|
|
4078
|
+
if (H) {
|
|
4079
|
+
if (nt && !We) return null;
|
|
4080
|
+
let e = U.current ?? L ?? void 0, t = e ? se(e) ?? void 0 : void 0;
|
|
4011
4081
|
return { local: {
|
|
4012
|
-
host:
|
|
4013
|
-
httpsPort:
|
|
4082
|
+
host: et,
|
|
4083
|
+
httpsPort: tt,
|
|
4014
4084
|
userId: t,
|
|
4015
|
-
token:
|
|
4085
|
+
token: U.current,
|
|
4016
4086
|
identityToken: e,
|
|
4017
4087
|
spaceId: w?.spaceId,
|
|
4018
4088
|
backendUrl: w?.backendUrl,
|
|
4019
4089
|
authUrl: w?.authUrl,
|
|
4020
|
-
parameters:
|
|
4090
|
+
parameters: z
|
|
4021
4091
|
} };
|
|
4022
4092
|
}
|
|
4023
|
-
return
|
|
4024
|
-
token:
|
|
4093
|
+
return U.current && w?.spaceId ? { sessionToken: {
|
|
4094
|
+
token: U.current,
|
|
4025
4095
|
spaceId: w.spaceId,
|
|
4026
|
-
backendType:
|
|
4096
|
+
backendType: ae(),
|
|
4027
4097
|
sessionIdentityHash: R.sessionIdentityHash,
|
|
4028
|
-
parameters:
|
|
4098
|
+
parameters: z
|
|
4029
4099
|
} } : L && w?.spaceId ? { sessionToken: {
|
|
4030
4100
|
token: L,
|
|
4031
4101
|
spaceId: w.spaceId,
|
|
4032
|
-
backendType:
|
|
4102
|
+
backendType: ae(),
|
|
4033
4103
|
sessionIdentityHash: R.sessionIdentityHash,
|
|
4034
|
-
parameters:
|
|
4035
|
-
} } :
|
|
4036
|
-
host:
|
|
4037
|
-
httpsPort:
|
|
4104
|
+
parameters: z
|
|
4105
|
+
} } : fe() ? null : { local: {
|
|
4106
|
+
host: et,
|
|
4107
|
+
httpsPort: tt,
|
|
4038
4108
|
spaceId: w?.spaceId,
|
|
4039
4109
|
backendUrl: w?.backendUrl,
|
|
4040
4110
|
authUrl: w?.authUrl,
|
|
4041
|
-
parameters:
|
|
4111
|
+
parameters: z
|
|
4042
4112
|
} };
|
|
4043
4113
|
}, [
|
|
4044
|
-
|
|
4045
|
-
|
|
4046
|
-
$e,
|
|
4114
|
+
le,
|
|
4115
|
+
H,
|
|
4047
4116
|
et,
|
|
4048
4117
|
tt,
|
|
4118
|
+
rt,
|
|
4049
4119
|
w?.spaceId,
|
|
4050
4120
|
w?.backendUrl,
|
|
4051
4121
|
w?.authUrl,
|
|
4052
4122
|
L,
|
|
4053
|
-
|
|
4054
|
-
|
|
4123
|
+
nt,
|
|
4124
|
+
We,
|
|
4055
4125
|
R.sessionIdentityHash,
|
|
4056
|
-
|
|
4126
|
+
z
|
|
4057
4127
|
]);
|
|
4058
|
-
D.current = w?.spaceId ?? "local",
|
|
4059
|
-
let
|
|
4128
|
+
D.current = w?.spaceId ?? "local", Oe.current = V?.token ?? L ?? void 0, Tn(Ve);
|
|
4129
|
+
let at = Dn(Ve);
|
|
4060
4130
|
k(() => {
|
|
4061
|
-
if (!
|
|
4062
|
-
if (
|
|
4063
|
-
|
|
4064
|
-
|
|
4131
|
+
if (!pe.current) {
|
|
4132
|
+
if (pe.current = !0, de.current = dn(), r) for (let e of r) e(de.current);
|
|
4133
|
+
de.current.loadRegisteredModules().catch((e) => {
|
|
4134
|
+
oa.error("Failed to load UI modules", e);
|
|
4065
4135
|
});
|
|
4066
4136
|
}
|
|
4067
4137
|
}, []), k(() => {
|
|
4068
|
-
if (!
|
|
4069
|
-
let e = new
|
|
4070
|
-
...
|
|
4071
|
-
timeouts:
|
|
4072
|
-
audio:
|
|
4073
|
-
enabled:
|
|
4074
|
-
...
|
|
4138
|
+
if (!it) return;
|
|
4139
|
+
let e = new _({
|
|
4140
|
+
...it,
|
|
4141
|
+
timeouts: ge.current,
|
|
4142
|
+
audio: be.current !== void 0 || he.current ? {
|
|
4143
|
+
enabled: be.current,
|
|
4144
|
+
...he.current ? { background: {
|
|
4075
4145
|
allowOnDesktop: !0,
|
|
4076
4146
|
allowOnMobile: !0
|
|
4077
4147
|
} } : {}
|
|
4078
4148
|
} : void 0,
|
|
4079
|
-
video:
|
|
4149
|
+
video: xe.current === void 0 ? void 0 : { enabled: xe.current },
|
|
4080
4150
|
mediaSession: {
|
|
4081
4151
|
title: document.title || void 0,
|
|
4082
4152
|
artist: document.title || void 0
|
|
4083
4153
|
},
|
|
4084
|
-
webRtc:
|
|
4085
|
-
websocket:
|
|
4086
|
-
webtransport:
|
|
4087
|
-
httpstream:
|
|
4088
|
-
proxy:
|
|
4154
|
+
webRtc: ve.current === !1 ? { enabled: !1 } : void 0,
|
|
4155
|
+
websocket: Se.current,
|
|
4156
|
+
webtransport: Ce.current,
|
|
4157
|
+
httpstream: we.current,
|
|
4158
|
+
proxy: Te.current,
|
|
4089
4159
|
onConnectionStateChange: (e) => {
|
|
4090
|
-
|
|
4160
|
+
ke(e);
|
|
4091
4161
|
},
|
|
4092
4162
|
onError: (e) => {
|
|
4093
4163
|
I(e.message);
|
|
4094
4164
|
}
|
|
4095
4165
|
});
|
|
4096
4166
|
E.current = e;
|
|
4097
|
-
let n =
|
|
4167
|
+
let n = Ee.current ?? !0, r = Oe.current, i = r ? se(r) ?? null : null, a = n && i ? {
|
|
4098
4168
|
enabled: !0,
|
|
4099
4169
|
appId: D.current,
|
|
4100
4170
|
userId: i
|
|
4101
|
-
} : void 0, l =
|
|
4171
|
+
} : void 0, l = V != null && V.provider !== "anonymous", u = $e && (l || Nr()), d = new Qe({
|
|
4102
4172
|
client: e,
|
|
4103
4173
|
liveSnapshot: a,
|
|
4104
|
-
bootSnapshot:
|
|
4174
|
+
bootSnapshot: aa(De.current, u)
|
|
4105
4175
|
});
|
|
4106
|
-
|
|
4176
|
+
ue.current = d, He(d), F(!1);
|
|
4107
4177
|
let f = d.subscribeToUiUpdates(() => {
|
|
4108
|
-
F(!0),
|
|
4178
|
+
F(!0), ye();
|
|
4109
4179
|
});
|
|
4110
4180
|
return e.connect().catch((e) => {
|
|
4111
|
-
if (
|
|
4112
|
-
|
|
4181
|
+
if (oa.error("Connection failed:", e), e instanceof o) {
|
|
4182
|
+
Pe(e.reason);
|
|
4113
4183
|
return;
|
|
4114
4184
|
}
|
|
4115
|
-
if (e instanceof
|
|
4116
|
-
|
|
4185
|
+
if (e instanceof ee) {
|
|
4186
|
+
Ie(!0);
|
|
4117
4187
|
return;
|
|
4118
4188
|
}
|
|
4119
|
-
if (e instanceof
|
|
4120
|
-
|
|
4189
|
+
if (e instanceof b) {
|
|
4190
|
+
Re(!0);
|
|
4121
4191
|
return;
|
|
4122
4192
|
}
|
|
4123
|
-
if (!(e instanceof
|
|
4193
|
+
if (!(e instanceof te)) {
|
|
4124
4194
|
if (e instanceof s) {
|
|
4125
|
-
|
|
4195
|
+
Be(!0);
|
|
4126
4196
|
return;
|
|
4127
4197
|
}
|
|
4128
|
-
e instanceof
|
|
4198
|
+
e instanceof y || e instanceof c && !me.current && (me.current = !0, oa.warn("Auth session appears stale, clearing and retrying"), t.clearAll(), T ? T.logout() : (Pr(), Je((e) => e + 1)));
|
|
4129
4199
|
}
|
|
4130
4200
|
}), () => {
|
|
4131
|
-
f(), e.disconnect(), E.current = null, d.dispose(),
|
|
4201
|
+
f(), e.disconnect(), E.current = null, d.dispose(), ue.current = null;
|
|
4132
4202
|
};
|
|
4133
|
-
}, [
|
|
4134
|
-
let e =
|
|
4203
|
+
}, [it, Ye]), k(() => {
|
|
4204
|
+
let e = V?.token, t = E.current;
|
|
4135
4205
|
if (!(!e || !t)) {
|
|
4136
4206
|
if (t.connectionState === "offline" && !t.serverStopped) {
|
|
4137
|
-
|
|
4207
|
+
Xe((e) => e + 1);
|
|
4138
4208
|
return;
|
|
4139
4209
|
}
|
|
4140
4210
|
t.updateAuthToken(e);
|
|
4141
4211
|
}
|
|
4142
|
-
}, [
|
|
4143
|
-
let
|
|
4144
|
-
let
|
|
4145
|
-
E.current?.sendActionCall(e, n);
|
|
4212
|
+
}, [V?.token]);
|
|
4213
|
+
let ot = O((e, t, n) => {
|
|
4214
|
+
let r = typeof t == "string" ? t : JSON.stringify(t ?? {});
|
|
4215
|
+
E.current?.sendActionCall(e, r, n);
|
|
4146
4216
|
}, []);
|
|
4147
4217
|
k(() => {
|
|
4148
|
-
if (A !== "connecting") {
|
|
4149
|
-
|
|
4218
|
+
if (A !== "connecting" && A !== "waitingForExternalConnectUrl") {
|
|
4219
|
+
je(!1);
|
|
4150
4220
|
return;
|
|
4151
4221
|
}
|
|
4152
|
-
let e = E.current?.slowConnectionThresholdMs ??
|
|
4222
|
+
let e = E.current?.slowConnectionThresholdMs ?? d, t = setTimeout(() => je(!0), e);
|
|
4153
4223
|
return () => clearTimeout(t);
|
|
4154
4224
|
}, [A]);
|
|
4155
|
-
let
|
|
4225
|
+
let st = A === "connected" || A === "reconnecting", ct = P && A !== "offline";
|
|
4156
4226
|
return k(() => {
|
|
4157
|
-
typeof document > "u" || (document.documentElement.dataset.ikonLive = String(
|
|
4158
|
-
}, [
|
|
4227
|
+
typeof document > "u" || (document.documentElement.dataset.ikonLive = String(ct));
|
|
4228
|
+
}, [ct]), {
|
|
4159
4229
|
connectionState: A,
|
|
4160
|
-
error:
|
|
4161
|
-
accessDeniedReason:
|
|
4162
|
-
isServerFull:
|
|
4163
|
-
isSessionExpired:
|
|
4164
|
-
isStartupFailed:
|
|
4165
|
-
stores:
|
|
4230
|
+
error: Me,
|
|
4231
|
+
accessDeniedReason: Ne,
|
|
4232
|
+
isServerFull: Fe,
|
|
4233
|
+
isSessionExpired: Le,
|
|
4234
|
+
isStartupFailed: ze,
|
|
4235
|
+
stores: at,
|
|
4166
4236
|
client: E.current,
|
|
4167
|
-
registry:
|
|
4237
|
+
registry: de.current,
|
|
4168
4238
|
clientRef: E,
|
|
4169
|
-
uiRef:
|
|
4170
|
-
registryRef:
|
|
4171
|
-
onAction:
|
|
4172
|
-
isReady:
|
|
4173
|
-
isLive:
|
|
4239
|
+
uiRef: ue,
|
|
4240
|
+
registryRef: de,
|
|
4241
|
+
onAction: ot,
|
|
4242
|
+
isReady: st,
|
|
4243
|
+
isLive: ct,
|
|
4174
4244
|
brandingRequired: E.current?.brandingRequired ?? !1,
|
|
4175
|
-
isConnectingSlow:
|
|
4245
|
+
isConnectingSlow: Ae,
|
|
4176
4246
|
webRtcVideoStreams: E.current?.webRtcVideoStreams ?? /* @__PURE__ */ new Map(),
|
|
4177
4247
|
webRtcTrackMap: E.current?.webRtcTrackMap ?? /* @__PURE__ */ new Map()
|
|
4178
4248
|
};
|
|
4179
4249
|
}
|
|
4180
4250
|
//#endregion
|
|
4181
4251
|
//#region src/hooks/use-toasts.ts
|
|
4182
|
-
var
|
|
4183
|
-
function
|
|
4252
|
+
var fa = 0;
|
|
4253
|
+
function pa(e = 5, t = 5e3) {
|
|
4184
4254
|
let [n, r] = N([]), i = M(/* @__PURE__ */ new Map()), a = O((e) => {
|
|
4185
4255
|
let t = i.current.get(e);
|
|
4186
4256
|
t && (clearTimeout(t), i.current.delete(e)), r((t) => t.filter((t) => t.id !== e));
|
|
4187
4257
|
}, []);
|
|
4188
4258
|
return k(() => {
|
|
4189
|
-
let n = i.current, o =
|
|
4190
|
-
if (!
|
|
4191
|
-
let o = `toast-${++
|
|
4259
|
+
let n = i.current, o = we((i) => {
|
|
4260
|
+
if (!pe()) return;
|
|
4261
|
+
let o = `toast-${++fa}`, s = {
|
|
4192
4262
|
id: o,
|
|
4193
|
-
level: i.level ===
|
|
4263
|
+
level: i.level === v.ERROR ? "error" : "warn",
|
|
4194
4264
|
message: i.message,
|
|
4195
4265
|
component: i.component
|
|
4196
4266
|
};
|
|
@@ -4199,7 +4269,7 @@ function aa(e = 5, t = 5e3) {
|
|
|
4199
4269
|
a(o);
|
|
4200
4270
|
}, t);
|
|
4201
4271
|
n.set(o, c);
|
|
4202
|
-
}, { minLevel:
|
|
4272
|
+
}, { minLevel: v.WARN });
|
|
4203
4273
|
return () => {
|
|
4204
4274
|
o();
|
|
4205
4275
|
for (let e of n.values()) clearTimeout(e);
|
|
@@ -4216,7 +4286,7 @@ function aa(e = 5, t = 5e3) {
|
|
|
4216
4286
|
}
|
|
4217
4287
|
//#endregion
|
|
4218
4288
|
//#region src/hooks/use-ikon-reactive.ts
|
|
4219
|
-
function
|
|
4289
|
+
function ma(e, t, n) {
|
|
4220
4290
|
let [r, i] = N(n);
|
|
4221
4291
|
return k(() => {
|
|
4222
4292
|
if (!e) return;
|
|
@@ -4234,7 +4304,7 @@ function oa(e, t, n) {
|
|
|
4234
4304
|
}
|
|
4235
4305
|
//#endregion
|
|
4236
4306
|
//#region src/hooks/use-reactive.ts
|
|
4237
|
-
function
|
|
4307
|
+
function ha(e, t, n) {
|
|
4238
4308
|
let [r, i] = N(null);
|
|
4239
4309
|
return k(() => {
|
|
4240
4310
|
if (!e) return;
|
|
@@ -4246,48 +4316,48 @@ function sa(e, t, n) {
|
|
|
4246
4316
|
}), () => {
|
|
4247
4317
|
n = !1;
|
|
4248
4318
|
};
|
|
4249
|
-
}, [e, t]),
|
|
4319
|
+
}, [e, t]), ma(r ? e : null, r ?? "", n);
|
|
4250
4320
|
}
|
|
4251
4321
|
//#endregion
|
|
4252
4322
|
//#region src/app/use-ikon-debug.ts
|
|
4253
|
-
var
|
|
4323
|
+
var $ = S("IkonDebug"), ga = {
|
|
4254
4324
|
Digit1: "connecting",
|
|
4255
4325
|
Digit2: "connected",
|
|
4256
4326
|
Digit3: "reconnecting",
|
|
4257
4327
|
Digit4: "offline",
|
|
4258
4328
|
Digit5: "offline",
|
|
4259
4329
|
Digit0: "clear"
|
|
4260
|
-
},
|
|
4261
|
-
function
|
|
4262
|
-
let t =
|
|
4330
|
+
}, _a = "Digit5", va = "Digit6", ya = "Synthetic debug error (Ctrl+Shift+5)", ba = "Synthetic debug access-denied (Ctrl+Shift+6)", xa = 5e3;
|
|
4331
|
+
function Sa(e) {
|
|
4332
|
+
let t = pe(), [n, r] = N(null), [i, a] = N(!1), [o, s] = N(null), [c, l] = N(null), [u, d] = N(!1), [f, p] = N(!1), [m, h] = N(!1);
|
|
4263
4333
|
return k(() => {
|
|
4264
4334
|
if (!t) return;
|
|
4265
4335
|
let e = (e) => {
|
|
4266
4336
|
if (!e.ctrlKey || !e.shiftKey) return;
|
|
4267
4337
|
if (e.code === "KeyE") {
|
|
4268
|
-
e.preventDefault(), d((e) => (
|
|
4338
|
+
e.preventDefault(), d((e) => ($.warn(`Empty-stores override: ${e ? "off" : "on"}`), !e));
|
|
4269
4339
|
return;
|
|
4270
4340
|
}
|
|
4271
4341
|
if (e.code === "Digit7") {
|
|
4272
|
-
e.preventDefault(), p((e) => (
|
|
4342
|
+
e.preventDefault(), p((e) => ($.warn(`Branding-banner override: ${e ? "off" : "on"}`), !e));
|
|
4273
4343
|
return;
|
|
4274
4344
|
}
|
|
4275
4345
|
if (e.code === "Digit8") {
|
|
4276
|
-
e.preventDefault(), h((e) => (
|
|
4346
|
+
e.preventDefault(), h((e) => ($.warn(`Debug-overlay override: ${e ? "off" : "on"}`), !e));
|
|
4277
4347
|
return;
|
|
4278
4348
|
}
|
|
4279
|
-
if (e.code ===
|
|
4280
|
-
e.preventDefault(), l(
|
|
4349
|
+
if (e.code === va) {
|
|
4350
|
+
e.preventDefault(), l(ba), r(null), s(null), $.warn("Forced access denied");
|
|
4281
4351
|
return;
|
|
4282
4352
|
}
|
|
4283
|
-
let t =
|
|
4353
|
+
let t = ga[e.code];
|
|
4284
4354
|
if (t === void 0) return;
|
|
4285
4355
|
if (e.preventDefault(), t === "clear") {
|
|
4286
|
-
r(null), s(null), l(null),
|
|
4356
|
+
r(null), s(null), l(null), $.warn("Cleared forced state");
|
|
4287
4357
|
return;
|
|
4288
4358
|
}
|
|
4289
|
-
let n = e.code ===
|
|
4290
|
-
r(t), s(n ?
|
|
4359
|
+
let n = e.code === _a;
|
|
4360
|
+
r(t), s(n ? ya : null), l(null), $.warn(`Forced state: ${t}${n ? " (with error)" : ""}`);
|
|
4291
4361
|
};
|
|
4292
4362
|
return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
|
|
4293
4363
|
}, [t]), k(() => {
|
|
@@ -4295,7 +4365,7 @@ function ha(e) {
|
|
|
4295
4365
|
a(!1);
|
|
4296
4366
|
return;
|
|
4297
4367
|
}
|
|
4298
|
-
let e = setTimeout(() => a(!0),
|
|
4368
|
+
let e = setTimeout(() => a(!0), xa);
|
|
4299
4369
|
return () => clearTimeout(e);
|
|
4300
4370
|
}, [n]), !t || n === null && !u && c === null && !f && !m ? {
|
|
4301
4371
|
app: e,
|
|
@@ -4326,64 +4396,64 @@ function ha(e) {
|
|
|
4326
4396
|
}
|
|
4327
4397
|
//#endregion
|
|
4328
4398
|
//#region src/app/ikon-app.tsx
|
|
4329
|
-
function
|
|
4399
|
+
function Ca(e, t) {
|
|
4330
4400
|
return e === void 0 ? null : typeof e == "function" ? e(t) : e;
|
|
4331
4401
|
}
|
|
4332
|
-
function
|
|
4402
|
+
function wa(e) {
|
|
4333
4403
|
return e === void 0 ? null : typeof e == "function" ? e() : e;
|
|
4334
4404
|
}
|
|
4335
|
-
function
|
|
4405
|
+
function Ta(e, t) {
|
|
4336
4406
|
return e === void 0 ? null : typeof e == "function" ? e(t) : e;
|
|
4337
4407
|
}
|
|
4338
|
-
function
|
|
4408
|
+
function Ea(e, t) {
|
|
4339
4409
|
return e === void 0 ? null : typeof e == "function" ? e(t) : e;
|
|
4340
4410
|
}
|
|
4341
|
-
function
|
|
4342
|
-
let { connectingOverlay: t, reconnectingOverlay: n, offlineOverlay: r, accessDeniedScreen: i, ...a } = e, o =
|
|
4343
|
-
u && d && (m || u.size > 0) && (
|
|
4411
|
+
function Da(e) {
|
|
4412
|
+
let { connectingOverlay: t, reconnectingOverlay: n, offlineOverlay: r, accessDeniedScreen: i, ...a } = e, o = Sa(a), { app: s } = o, { connectionState: c, isConnectingSlow: l, stores: u, registry: d, client: f, onAction: p, isReady: m, error: h, accessDeniedReason: g, brandingRequired: _ } = s, v = _ || o.forcedBranding, y = M(null);
|
|
4413
|
+
u && d && (m || u.size > 0) && (y.current = {
|
|
4344
4414
|
stores: u,
|
|
4345
4415
|
registry: d,
|
|
4346
4416
|
client: f
|
|
4347
4417
|
});
|
|
4348
|
-
let
|
|
4418
|
+
let ee = y.current != null || !!g;
|
|
4349
4419
|
if (A(() => {
|
|
4350
|
-
!
|
|
4351
|
-
}, [
|
|
4352
|
-
let
|
|
4420
|
+
!ee || typeof document > "u" || document.querySelectorAll("[data-ikon-prerender]").forEach((e) => e.remove());
|
|
4421
|
+
}, [ee]), g) return Ea(i, g);
|
|
4422
|
+
let te = y.current, b;
|
|
4353
4423
|
switch (c) {
|
|
4354
4424
|
case "waitingForExternalConnectUrl":
|
|
4355
4425
|
case "connecting":
|
|
4356
|
-
|
|
4426
|
+
b = Ca(t, l);
|
|
4357
4427
|
break;
|
|
4358
4428
|
case "reconnecting":
|
|
4359
|
-
|
|
4429
|
+
b = wa(n);
|
|
4360
4430
|
break;
|
|
4361
4431
|
case "offline":
|
|
4362
|
-
|
|
4432
|
+
b = Ta(r, h);
|
|
4363
4433
|
break;
|
|
4364
|
-
default:
|
|
4434
|
+
default: b = null;
|
|
4365
4435
|
}
|
|
4366
|
-
return /* @__PURE__ */ F(
|
|
4367
|
-
|
|
4368
|
-
stores:
|
|
4369
|
-
registry:
|
|
4370
|
-
client:
|
|
4436
|
+
return /* @__PURE__ */ F(je, { children: [
|
|
4437
|
+
te && /* @__PURE__ */ P(z, {
|
|
4438
|
+
stores: te.stores,
|
|
4439
|
+
registry: te.registry,
|
|
4440
|
+
client: te.client,
|
|
4371
4441
|
onAction: p
|
|
4372
4442
|
}),
|
|
4373
|
-
|
|
4374
|
-
|
|
4375
|
-
/* @__PURE__ */ P(
|
|
4376
|
-
/* @__PURE__ */ P(
|
|
4443
|
+
b,
|
|
4444
|
+
v && /* @__PURE__ */ P(ka, {}),
|
|
4445
|
+
/* @__PURE__ */ P(Aa, {}),
|
|
4446
|
+
/* @__PURE__ */ P(ra, {
|
|
4377
4447
|
state: c,
|
|
4378
4448
|
forceVisible: o.forcedDebugOverlay
|
|
4379
4449
|
})
|
|
4380
4450
|
] });
|
|
4381
4451
|
}
|
|
4382
|
-
var
|
|
4383
|
-
function
|
|
4452
|
+
var Oa = "https://ikonai.com";
|
|
4453
|
+
function ka() {
|
|
4384
4454
|
return /* @__PURE__ */ F("a", {
|
|
4385
4455
|
className: "ikon-branding-banner",
|
|
4386
|
-
href:
|
|
4456
|
+
href: Oa,
|
|
4387
4457
|
target: "_blank",
|
|
4388
4458
|
rel: "noopener noreferrer",
|
|
4389
4459
|
style: {
|
|
@@ -4413,17 +4483,17 @@ function Sa() {
|
|
|
4413
4483
|
})]
|
|
4414
4484
|
});
|
|
4415
4485
|
}
|
|
4416
|
-
function
|
|
4417
|
-
let { toasts: e, dismissToast: t } =
|
|
4486
|
+
function Aa() {
|
|
4487
|
+
let { toasts: e, dismissToast: t } = pa();
|
|
4418
4488
|
return e.length === 0 ? null : /* @__PURE__ */ P("div", {
|
|
4419
4489
|
className: "ikon-toast-overlay",
|
|
4420
|
-
children: e.map((e) => /* @__PURE__ */ P(
|
|
4490
|
+
children: e.map((e) => /* @__PURE__ */ P(ja, {
|
|
4421
4491
|
toast: e,
|
|
4422
4492
|
onDismiss: t
|
|
4423
4493
|
}, e.id))
|
|
4424
4494
|
});
|
|
4425
4495
|
}
|
|
4426
|
-
function
|
|
4496
|
+
function ja({ toast: e, onDismiss: t }) {
|
|
4427
4497
|
return /* @__PURE__ */ F("div", {
|
|
4428
4498
|
className: `ikon-toast-overlay-chip ikon-toast-overlay-chip--${e.level}`,
|
|
4429
4499
|
onClick: () => t(e.id),
|
|
@@ -4449,9 +4519,9 @@ function wa({ toast: e, onDismiss: t }) {
|
|
|
4449
4519
|
}
|
|
4450
4520
|
//#endregion
|
|
4451
4521
|
//#region src/app/connection-recovery.ts
|
|
4452
|
-
function
|
|
4522
|
+
function Ma({ isSessionExpired: e }) {
|
|
4453
4523
|
if (e) {
|
|
4454
|
-
let e =
|
|
4524
|
+
let e = de();
|
|
4455
4525
|
if (e) return {
|
|
4456
4526
|
kind: "freshSession",
|
|
4457
4527
|
run: () => {
|
|
@@ -4468,37 +4538,37 @@ function Ta({ isSessionExpired: e }) {
|
|
|
4468
4538
|
}
|
|
4469
4539
|
//#endregion
|
|
4470
4540
|
//#region src/i18n/i18n.tsx
|
|
4471
|
-
var
|
|
4472
|
-
function
|
|
4541
|
+
var Na = De(null);
|
|
4542
|
+
function Pa(e, t) {
|
|
4473
4543
|
return t ? e.replace(/\{(\w+)\}/g, (e, n) => t[n] ?? `{${n}}`) : e;
|
|
4474
4544
|
}
|
|
4475
|
-
function
|
|
4476
|
-
let n =
|
|
4545
|
+
function Fa(e, t) {
|
|
4546
|
+
let n = ce();
|
|
4477
4547
|
if (n && e.includes(n)) return n;
|
|
4478
4548
|
let r = navigator.language.split("-")[0];
|
|
4479
4549
|
return e.includes(r) ? r : t && e.includes(t) ? t : "en";
|
|
4480
4550
|
}
|
|
4481
|
-
function
|
|
4482
|
-
return t ?
|
|
4551
|
+
function Ia(e, t, n) {
|
|
4552
|
+
return t ? Fa(e, n) : n && e.includes(n) ? n : "en";
|
|
4483
4553
|
}
|
|
4484
|
-
function
|
|
4485
|
-
let i =
|
|
4554
|
+
function La({ children: e, translations: t, defaultLanguage: n, detectLanguage: r = !1 }) {
|
|
4555
|
+
let i = Ia(Object.keys(t), r, n), a = t[i] ?? t.en, o = j(() => ({
|
|
4486
4556
|
t: (e, t) => {
|
|
4487
4557
|
let n = a[e];
|
|
4488
|
-
return
|
|
4558
|
+
return Pa(n, t);
|
|
4489
4559
|
},
|
|
4490
4560
|
locale: i,
|
|
4491
4561
|
translations: a
|
|
4492
4562
|
}), [a, i]);
|
|
4493
|
-
return /* @__PURE__ */ P(
|
|
4563
|
+
return /* @__PURE__ */ P(Na, {
|
|
4494
4564
|
value: o,
|
|
4495
4565
|
children: e
|
|
4496
4566
|
});
|
|
4497
4567
|
}
|
|
4498
|
-
function
|
|
4499
|
-
let e =
|
|
4568
|
+
function Ra() {
|
|
4569
|
+
let e = Oe(Na);
|
|
4500
4570
|
if (!e) throw Error("useI18n must be used within an I18nProvider");
|
|
4501
4571
|
return e;
|
|
4502
4572
|
}
|
|
4503
4573
|
//#endregion
|
|
4504
|
-
export {
|
|
4574
|
+
export { Oi as AuthProvider, ia as ConnectionStateRenderer, qi as DEBUG_OVERLAY_ENABLED, ra as DebugOverlay, La as I18nProvider, xt as IKON_UI_BASE_MODULE, Vt as IKON_UI_MEDIA_MODULE, on as IKON_UI_SHADERTOY_MODULE, rn as IKON_UI_SHADERTOY_TYPE, R as IKON_UI_STREAM_CATEGORY, Ft as IKON_UI_VIDEO_CANVAS_TYPE, It as IKON_UI_VIDEO_URL_PLAYER_TYPE, Da as IkonApp, Qe as IkonUi, un as IkonUiRegistry, z as IkonUiSurface, Ye as InspectOverlay, hn as ParallaxView, Ke as UiComponentRegistry, Ge as UiRenderer, n as UiStreamStore, At as VideoStreamView, Ur as authenticateAnonymous, ti as buildOAuthRedirectUrl, Pr as clearAuthSession, ei as clearOAuthParams, bt as createBaseResolvers, qe as createComponentLibrary, dn as createIkonUiRegistry, Rt as createMediaResolvers, an as createShadertoyRendererResolver, Ma as getConnectionRecovery, Ze as isIkonUiCategoryMatch, Er as loadAuthSession, St as loadBaseModule, Ht as loadMediaModule, sn as loadShadertoyModule, Kr as parseOAuthCallback, Xr as parseOAuthError, ve as randomUuid, Ct as registerBaseModule, Ut as registerMediaModule, cn as registerShadertoyModule, Ue as renderChildren, zn as renderMotionLetters, K as saveAuthSession, Wr as sendLoginCode, q as sessionToUser, ki as useAuth, Ki as useAuthGuard, Ai as useAuthOptional, Mn as useCameraCapture, Ra as useI18n, da as useIkonApp, Sa as useIkonDebug, ma as useIkonReactive, Tn as useIkonStyles, Dn as useIkonUiStores, jn as useMicrophoneCapture, ha as useReactive, Nn as useScreenCapture, On as useSiblingClient, pa as useToasts, I as useUiNode, Je as useUiStore, Gr as verifyLoginCode };
|