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