@lumencast/runtime 0.10.0 → 0.12.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/README.md +39 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/{broadcast-L5wm2I6J.js → broadcast-ydSpPUje.js} +3 -3
- package/dist/{broadcast-L5wm2I6J.js.map → broadcast-ydSpPUje.js.map} +1 -1
- package/dist/{control-eEUG7unp.js → control-zTsF-bHP.js} +4 -4
- package/dist/{control-eEUG7unp.js.map → control-zTsF-bHP.js.map} +1 -1
- package/dist/{index-Clrya_9l.js → index-ClWi5UzJ.js} +422 -341
- package/dist/index-ClWi5UzJ.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.html +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/lumencast.js +22 -18
- package/dist/mount.d.ts.map +1 -1
- package/dist/mount.js +63 -0
- package/dist/mount.js.map +1 -1
- package/dist/render/primitives/index.d.ts.map +1 -1
- package/dist/render/primitives/index.js +6 -0
- package/dist/render/primitives/index.js.map +1 -1
- package/dist/render/primitives/meet-peer-slot.d.ts +29 -0
- package/dist/render/primitives/meet-peer-slot.d.ts.map +1 -0
- package/dist/render/primitives/meet-peer-slot.js +46 -0
- package/dist/render/primitives/meet-peer-slot.js.map +1 -0
- package/dist/state/reserved-leaves.d.ts +37 -0
- package/dist/state/reserved-leaves.d.ts.map +1 -0
- package/dist/state/reserved-leaves.js +96 -0
- package/dist/state/reserved-leaves.js.map +1 -0
- package/dist/{status-pill-elORkMrh.js → status-pill-DkHIOL5V.js} +2 -2
- package/dist/{status-pill-elORkMrh.js.map → status-pill-DkHIOL5V.js.map} +1 -1
- package/dist/{test-7q_KJkdX.js → test-COpMkyms.js} +4 -4
- package/dist/{test-7q_KJkdX.js.map → test-COpMkyms.js.map} +1 -1
- package/dist/transport/ws.d.ts +4 -1
- package/dist/transport/ws.d.ts.map +1 -1
- package/dist/transport/ws.js +7 -0
- package/dist/transport/ws.js.map +1 -1
- package/dist/{tree-BMxx5170.js → tree-Cubmxeqo.js} +213 -197
- package/dist/tree-Cubmxeqo.js.map +1 -0
- package/dist/types.d.ts +30 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/webrtc/index.d.ts +1 -1
- package/dist/webrtc/index.d.ts.map +1 -1
- package/dist/webrtc/index.js.map +1 -1
- package/dist/webrtc/peer-stream-registry.d.ts +17 -0
- package/dist/webrtc/peer-stream-registry.d.ts.map +1 -1
- package/dist/webrtc/peer-stream-registry.js +22 -0
- package/dist/webrtc/peer-stream-registry.js.map +1 -1
- package/package.json +4 -4
- package/src/index.ts +13 -0
- package/src/mount.ts +66 -0
- package/src/render/primitives/index.ts +6 -0
- package/src/render/primitives/meet-peer-slot.tsx +55 -0
- package/src/state/reserved-leaves.ts +121 -0
- package/src/transport/ws.ts +11 -0
- package/src/types.ts +30 -2
- package/src/webrtc/index.ts +1 -0
- package/src/webrtc/peer-stream-registry.ts +38 -0
- package/dist/index-Clrya_9l.js.map +0 -1
- package/dist/tree-BMxx5170.js.map +0 -1
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
import { batch as
|
|
2
|
-
import { createRoot as
|
|
3
|
-
import { createContext as
|
|
4
|
-
import { jsx as
|
|
5
|
-
import { useSignals as
|
|
6
|
-
import { AnimatePresence as
|
|
7
|
-
import { SequenceTracker as
|
|
8
|
-
const
|
|
9
|
-
function
|
|
1
|
+
import { batch as I, signal as S } from "@preact/signals-react";
|
|
2
|
+
import { createRoot as X } from "react-dom/client";
|
|
3
|
+
import { createContext as ce, useContext as K, lazy as O, Suspense as le, createElement as ue, StrictMode as de } from "react";
|
|
4
|
+
import { jsx as p } from "react/jsx-runtime";
|
|
5
|
+
import { useSignals as fe } from "@preact/signals-react/runtime";
|
|
6
|
+
import { AnimatePresence as he, motion as me } from "framer-motion";
|
|
7
|
+
import { SequenceTracker as pe, encodeFrame as x, input as ge, WS_SUBPROTOCOLS as ve, WS_SUBPROTOCOL_V1_1 as we, subscribe as ye, decodeServerFrame as be, LumencastError as j } from "@lumencast/protocol";
|
|
8
|
+
const P = ce(null);
|
|
9
|
+
function J({
|
|
10
10
|
value: t,
|
|
11
11
|
children: e
|
|
12
12
|
}) {
|
|
13
|
-
return /* @__PURE__ */
|
|
13
|
+
return /* @__PURE__ */ p(P.Provider, { value: t, children: e });
|
|
14
14
|
}
|
|
15
|
-
function
|
|
16
|
-
const t =
|
|
15
|
+
function gt() {
|
|
16
|
+
const t = K(P);
|
|
17
17
|
if (!t)
|
|
18
18
|
throw new Error(
|
|
19
19
|
"Lumencast overlay components must be rendered inside LumencastRuntimeProvider"
|
|
20
20
|
);
|
|
21
21
|
return t;
|
|
22
22
|
}
|
|
23
|
-
function
|
|
24
|
-
return
|
|
23
|
+
function vt() {
|
|
24
|
+
return K(P);
|
|
25
25
|
}
|
|
26
|
-
const
|
|
27
|
-
() => import("./broadcast-
|
|
28
|
-
),
|
|
29
|
-
() => import("./control-
|
|
30
|
-
),
|
|
31
|
-
function
|
|
26
|
+
const Se = O(
|
|
27
|
+
() => import("./broadcast-ydSpPUje.js").then((t) => ({ default: t.BroadcastMode }))
|
|
28
|
+
), ke = O(
|
|
29
|
+
() => import("./control-zTsF-bHP.js").then((t) => ({ default: t.ControlMode }))
|
|
30
|
+
), Te = O(() => import("./test-COpMkyms.js").then((t) => ({ default: t.TestMode })));
|
|
31
|
+
function _e({
|
|
32
32
|
mode: t,
|
|
33
33
|
store: e,
|
|
34
34
|
bundleSignal: s,
|
|
35
35
|
statusSignal: n,
|
|
36
36
|
crossfadeKeySignal: r,
|
|
37
|
-
sendInput:
|
|
37
|
+
sendInput: i,
|
|
38
38
|
resolveCaptureDevice: a,
|
|
39
|
-
resolvePeerStream:
|
|
40
|
-
subscribePeerStream:
|
|
39
|
+
resolvePeerStream: o,
|
|
40
|
+
subscribePeerStream: c
|
|
41
41
|
}) {
|
|
42
|
-
|
|
43
|
-
const
|
|
44
|
-
if (!
|
|
45
|
-
const
|
|
46
|
-
return /* @__PURE__ */
|
|
47
|
-
|
|
42
|
+
fe();
|
|
43
|
+
const l = s.value, d = n.value, h = r.value;
|
|
44
|
+
if (!l) return null;
|
|
45
|
+
const _ = t === "broadcast" ? Se : t === "control" ? ke : Te;
|
|
46
|
+
return /* @__PURE__ */ p(he, { mode: "sync", children: /* @__PURE__ */ p(
|
|
47
|
+
me.div,
|
|
48
48
|
{
|
|
49
49
|
initial: { opacity: 0 },
|
|
50
50
|
animate: { opacity: 1 },
|
|
51
51
|
exit: { opacity: 0 },
|
|
52
52
|
transition: { duration: 0.4, ease: "easeInOut" },
|
|
53
53
|
style: { position: "absolute", inset: 0 },
|
|
54
|
-
children: /* @__PURE__ */
|
|
55
|
-
|
|
54
|
+
children: /* @__PURE__ */ p(
|
|
55
|
+
J,
|
|
56
56
|
{
|
|
57
57
|
value: {
|
|
58
58
|
mode: t,
|
|
59
59
|
store: e,
|
|
60
|
-
bundle:
|
|
60
|
+
bundle: l,
|
|
61
61
|
status: d,
|
|
62
|
-
sendInput:
|
|
62
|
+
sendInput: i,
|
|
63
63
|
...a !== void 0 ? { resolveCaptureDevice: a } : {},
|
|
64
|
-
...
|
|
65
|
-
...
|
|
64
|
+
...o !== void 0 ? { resolvePeerStream: o } : {},
|
|
65
|
+
...c !== void 0 ? { subscribePeerStream: c } : {}
|
|
66
66
|
},
|
|
67
|
-
children: /* @__PURE__ */
|
|
67
|
+
children: /* @__PURE__ */ p(le, { fallback: null, children: /* @__PURE__ */ p(_, {}) })
|
|
68
68
|
}
|
|
69
69
|
)
|
|
70
70
|
},
|
|
71
71
|
h
|
|
72
72
|
) });
|
|
73
73
|
}
|
|
74
|
-
const
|
|
75
|
-
function
|
|
76
|
-
return
|
|
77
|
-
|
|
74
|
+
const Ee = "<anon>", T = /* @__PURE__ */ new Set();
|
|
75
|
+
function Y(t) {
|
|
76
|
+
return T.add(t), () => {
|
|
77
|
+
T.delete(t);
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
|
-
function
|
|
81
|
-
const n = { nodeId: t ??
|
|
82
|
-
if (
|
|
83
|
-
for (const r of
|
|
80
|
+
function Z(t, e, s) {
|
|
81
|
+
const n = { nodeId: t ?? Ee, field: e, reason: s };
|
|
82
|
+
if (T.size > 0) {
|
|
83
|
+
for (const r of T)
|
|
84
84
|
try {
|
|
85
85
|
r(n);
|
|
86
86
|
} catch {
|
|
@@ -88,41 +88,41 @@ function H(t, e, s) {
|
|
|
88
88
|
return;
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
|
-
const
|
|
92
|
-
blur:
|
|
93
|
-
brightness:
|
|
91
|
+
const Re = 100, Ie = 4, Ae = 64, Oe = {
|
|
92
|
+
blur: Re,
|
|
93
|
+
brightness: Ie
|
|
94
94
|
};
|
|
95
|
-
function
|
|
95
|
+
function D(t, e) {
|
|
96
96
|
if (typeof e != "number" || !Number.isFinite(e) || e < 0 || Object.is(e, -0)) return null;
|
|
97
|
-
const s =
|
|
97
|
+
const s = Oe[t];
|
|
98
98
|
return e > s ? s : e;
|
|
99
99
|
}
|
|
100
|
-
const
|
|
101
|
-
function
|
|
102
|
-
if (typeof t != "string" || t.length === 0 || t.length >
|
|
103
|
-
const e =
|
|
100
|
+
const Pe = /^blur\((\d{1,7}(?:\.\d{1,4})?)px\) brightness\((\d{1,7}(?:\.\d{1,4})?)\)$/, wt = "blur(0px) brightness(1)";
|
|
101
|
+
function Le(t) {
|
|
102
|
+
if (typeof t != "string" || t.length === 0 || t.length > Ae) return null;
|
|
103
|
+
const e = Pe.exec(t);
|
|
104
104
|
if (!e) return null;
|
|
105
|
-
const s =
|
|
105
|
+
const s = D("blur", Number(e[1])), n = D("brightness", Number(e[2]));
|
|
106
106
|
return s === null || n === null ? null : `blur(${s}px) brightness(${n})`;
|
|
107
107
|
}
|
|
108
|
-
function
|
|
109
|
-
|
|
108
|
+
function Me(t, e) {
|
|
109
|
+
Z(
|
|
110
110
|
e,
|
|
111
111
|
t,
|
|
112
112
|
"rejected unsafe filter value : outside the R8 caps or not a finite number >= 0"
|
|
113
113
|
);
|
|
114
114
|
}
|
|
115
|
-
const
|
|
115
|
+
const Ce = { duration: 0 }, Ne = {
|
|
116
116
|
linear: "linear",
|
|
117
117
|
"cubic-in": "easeIn",
|
|
118
118
|
"cubic-out": "easeOut",
|
|
119
119
|
"cubic-in-out": "easeInOut"
|
|
120
120
|
};
|
|
121
|
-
function
|
|
122
|
-
return !t || t.kind === "none" ?
|
|
121
|
+
function yt(t) {
|
|
122
|
+
return !t || t.kind === "none" ? Ce : t.kind === "tween" ? {
|
|
123
123
|
type: "tween",
|
|
124
124
|
duration: (t.duration_ms ?? 0) / 1e3,
|
|
125
|
-
ease: t.ease ?
|
|
125
|
+
ease: t.ease ? Ne[t.ease] ?? "easeOut" : "easeOut"
|
|
126
126
|
} : t.kind === "spring" ? {
|
|
127
127
|
type: "spring",
|
|
128
128
|
...t.stiffness !== void 0 ? { stiffness: t.stiffness } : {},
|
|
@@ -134,7 +134,7 @@ function ut(t) {
|
|
|
134
134
|
ease: "easeInOut"
|
|
135
135
|
};
|
|
136
136
|
}
|
|
137
|
-
const
|
|
137
|
+
const xe = {
|
|
138
138
|
opacity: 1,
|
|
139
139
|
scale: 1,
|
|
140
140
|
scaleX: 1,
|
|
@@ -146,12 +146,12 @@ const Ae = {
|
|
|
146
146
|
// framer interpolates between structurally-identical filter lists
|
|
147
147
|
// (the compiler emits the same two-function form, clamped per R8).
|
|
148
148
|
filter: "blur(0px) brightness(1)"
|
|
149
|
-
},
|
|
149
|
+
}, je = {
|
|
150
150
|
kind: "tween",
|
|
151
151
|
duration_ms: 400,
|
|
152
152
|
ease: "cubic-out"
|
|
153
153
|
};
|
|
154
|
-
function
|
|
154
|
+
function bt(t, e, s) {
|
|
155
155
|
for (const n of e) {
|
|
156
156
|
const r = t(n);
|
|
157
157
|
if (r !== void 0) return r;
|
|
@@ -161,29 +161,29 @@ function dt(t, e, s) {
|
|
|
161
161
|
const r = t(n);
|
|
162
162
|
if (r !== void 0) return r;
|
|
163
163
|
}
|
|
164
|
-
return
|
|
164
|
+
return je;
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
|
-
function
|
|
167
|
+
function St(t, e, s) {
|
|
168
168
|
if (!e || Object.keys(e).length === 0)
|
|
169
169
|
return { initial: t, animate: t };
|
|
170
170
|
let n = e;
|
|
171
171
|
if (e.filter !== void 0) {
|
|
172
|
-
const
|
|
173
|
-
n = { ...e },
|
|
172
|
+
const i = Le(e.filter);
|
|
173
|
+
n = { ...e }, i === null ? (Me("animate_initial.filter", s), delete n.filter) : n.filter = i;
|
|
174
174
|
}
|
|
175
175
|
const r = { ...t };
|
|
176
|
-
for (const
|
|
177
|
-
|
|
176
|
+
for (const i of Object.keys(n))
|
|
177
|
+
i in r || (r[i] = xe[i] ?? 0);
|
|
178
178
|
return { initial: n, animate: r };
|
|
179
179
|
}
|
|
180
|
-
function
|
|
180
|
+
function De(t) {
|
|
181
181
|
if (typeof t != "object" || t === null) return;
|
|
182
182
|
const e = t, s = e.kind;
|
|
183
183
|
if (s === "snap")
|
|
184
184
|
return { kind: "none" };
|
|
185
185
|
if (s === "tween") {
|
|
186
|
-
const n = typeof e.duration_ms == "number" ? e.duration_ms : 0, r =
|
|
186
|
+
const n = typeof e.duration_ms == "number" ? e.duration_ms : 0, r = Ue[e.easing] ?? "cubic-out";
|
|
187
187
|
return { kind: "tween", duration_ms: n, ease: r };
|
|
188
188
|
}
|
|
189
189
|
if (s === "spring") {
|
|
@@ -191,53 +191,95 @@ function Oe(t) {
|
|
|
191
191
|
return typeof e.stiffness == "number" && (n.stiffness = e.stiffness), typeof e.damping == "number" && (n.damping = e.damping), typeof e.mass == "number" && (n.mass = e.mass), n;
|
|
192
192
|
}
|
|
193
193
|
}
|
|
194
|
-
const
|
|
194
|
+
const Ue = {
|
|
195
195
|
linear: "linear",
|
|
196
196
|
"ease-in": "cubic-in",
|
|
197
197
|
"ease-out": "cubic-out",
|
|
198
198
|
"ease-in-out": "cubic-in-out"
|
|
199
199
|
};
|
|
200
|
-
function
|
|
201
|
-
|
|
200
|
+
function $e(t, e) {
|
|
201
|
+
I(() => {
|
|
202
202
|
for (const s of e.patches) {
|
|
203
|
-
const n =
|
|
203
|
+
const n = De(s.transition);
|
|
204
204
|
n !== void 0 ? t.setWithTransition(s.path, s.value, n) : t.set(s.path, s.value);
|
|
205
205
|
}
|
|
206
206
|
});
|
|
207
207
|
}
|
|
208
|
-
function
|
|
208
|
+
function Fe(t, e) {
|
|
209
209
|
t.reset(e.state);
|
|
210
210
|
}
|
|
211
|
-
|
|
211
|
+
const kt = "__cam.", A = "__cam.slots.", Q = "__cam.viewer";
|
|
212
|
+
function U(t) {
|
|
213
|
+
return t === Q || t.startsWith(A);
|
|
214
|
+
}
|
|
215
|
+
function We(t) {
|
|
216
|
+
const e = {};
|
|
217
|
+
let s;
|
|
218
|
+
for (const [n, r] of t)
|
|
219
|
+
if (n === Q)
|
|
220
|
+
r != null && (s = r);
|
|
221
|
+
else if (n.startsWith(A)) {
|
|
222
|
+
const i = n.slice(A.length);
|
|
223
|
+
i !== "" && typeof r == "string" && r !== "" && (e[i] = r);
|
|
224
|
+
}
|
|
225
|
+
return s !== void 0 ? { viewer: s, slots: e } : { slots: e };
|
|
226
|
+
}
|
|
227
|
+
function $(t) {
|
|
228
|
+
const e = Object.keys(t.slots).sort().map((n) => `${n}=${t.slots[n]}`).join("&"), s = t.viewer === void 0 ? "" : JSON.stringify(t.viewer);
|
|
229
|
+
return `${e}|${s}`;
|
|
230
|
+
}
|
|
231
|
+
function qe(t) {
|
|
232
|
+
const e = /* @__PURE__ */ new Map();
|
|
233
|
+
let s = $({ slots: {} });
|
|
234
|
+
const n = () => {
|
|
235
|
+
const r = We(e), i = $(r);
|
|
236
|
+
i !== s && (s = i, t(r));
|
|
237
|
+
};
|
|
238
|
+
return {
|
|
239
|
+
onSnapshot(r) {
|
|
240
|
+
e.clear();
|
|
241
|
+
for (const [i, a] of Object.entries(r))
|
|
242
|
+
U(i) && e.set(i, a);
|
|
243
|
+
n();
|
|
244
|
+
},
|
|
245
|
+
onDelta(r) {
|
|
246
|
+
let i = !1;
|
|
247
|
+
for (const a of r)
|
|
248
|
+
U(a.path) && (e.set(a.path, a.value), i = !0);
|
|
249
|
+
i && n();
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
class ze {
|
|
212
254
|
signals = /* @__PURE__ */ new Map();
|
|
213
255
|
transitions = /* @__PURE__ */ new Map();
|
|
214
256
|
signal(e) {
|
|
215
257
|
let s = this.signals.get(e);
|
|
216
|
-
return s || (s =
|
|
258
|
+
return s || (s = S(void 0), this.signals.set(e, s)), s;
|
|
217
259
|
}
|
|
218
260
|
transitionSignal(e) {
|
|
219
261
|
let s = this.transitions.get(e);
|
|
220
|
-
return s || (s =
|
|
262
|
+
return s || (s = S(void 0), this.transitions.set(e, s)), s;
|
|
221
263
|
}
|
|
222
264
|
set(e, s) {
|
|
223
265
|
const n = this.signal(e);
|
|
224
|
-
|
|
266
|
+
R(n.peek(), s) || (n.value = s);
|
|
225
267
|
}
|
|
226
268
|
setWithTransition(e, s, n) {
|
|
227
|
-
|
|
269
|
+
I(() => {
|
|
228
270
|
const r = this.transitionSignal(e);
|
|
229
271
|
r.peek() !== n && (r.value = n);
|
|
230
|
-
const
|
|
231
|
-
|
|
272
|
+
const i = this.signal(e);
|
|
273
|
+
R(i.peek(), s) || (i.value = s);
|
|
232
274
|
});
|
|
233
275
|
}
|
|
234
276
|
reset(e) {
|
|
235
|
-
|
|
277
|
+
I(() => {
|
|
236
278
|
const s = /* @__PURE__ */ new Set();
|
|
237
279
|
for (const [n, r] of Object.entries(e)) {
|
|
238
280
|
s.add(n);
|
|
239
|
-
const
|
|
240
|
-
|
|
281
|
+
const i = this.signal(n);
|
|
282
|
+
R(i.peek(), r) || (i.value = r);
|
|
241
283
|
const a = this.transitions.get(n);
|
|
242
284
|
a && a.peek() !== void 0 && (a.value = void 0);
|
|
243
285
|
}
|
|
@@ -255,10 +297,10 @@ class Ne {
|
|
|
255
297
|
return e;
|
|
256
298
|
}
|
|
257
299
|
}
|
|
258
|
-
function
|
|
259
|
-
return new
|
|
300
|
+
function ee() {
|
|
301
|
+
return new ze();
|
|
260
302
|
}
|
|
261
|
-
function
|
|
303
|
+
function R(t, e) {
|
|
262
304
|
if (t === e) return !0;
|
|
263
305
|
if (t === null || e === null || typeof t != typeof e || typeof t != "object" || Array.isArray(t) !== Array.isArray(e)) return !1;
|
|
264
306
|
if (Array.isArray(t) && Array.isArray(e)) {
|
|
@@ -267,26 +309,26 @@ function S(t, e) {
|
|
|
267
309
|
if (t[a] !== e[a]) return !1;
|
|
268
310
|
return !0;
|
|
269
311
|
}
|
|
270
|
-
const s = t, n = e, r = Object.keys(s),
|
|
271
|
-
if (r.length !==
|
|
312
|
+
const s = t, n = e, r = Object.keys(s), i = Object.keys(n);
|
|
313
|
+
if (r.length !== i.length) return !1;
|
|
272
314
|
for (const a of r)
|
|
273
315
|
if (s[a] !== n[a]) return !1;
|
|
274
316
|
return !0;
|
|
275
317
|
}
|
|
276
|
-
const
|
|
318
|
+
const Be = /* @__PURE__ */ new Set([
|
|
277
319
|
"x-lumencast.color-srgb-1.0",
|
|
278
320
|
// RFC-0001 / ADR 004 — this runtime ships the Zab capture plugin, so a
|
|
279
321
|
// bundle declaring `x-zab.capture/1` in `profiles[]` is compatible (it is
|
|
280
322
|
// NOT rejected as BUNDLE_INCOMPATIBLE, §17.3.1).
|
|
281
323
|
"x-zab.capture/1"
|
|
282
|
-
]),
|
|
283
|
-
function
|
|
324
|
+
]), He = /^x-[a-z0-9-]+(?:\.[a-z0-9-]+)*$/, Ge = /^(?:0|[1-9][0-9]*)$/, F = ".authoring";
|
|
325
|
+
function Ve(t) {
|
|
284
326
|
const e = t.indexOf("/");
|
|
285
327
|
if (e < 0) return !1;
|
|
286
328
|
const s = t.slice(0, e), n = t.slice(e + 1);
|
|
287
|
-
return !
|
|
329
|
+
return !Ge.test(n) || !s.endsWith(F) ? !1 : He.test(s.slice(0, -F.length));
|
|
288
330
|
}
|
|
289
|
-
class
|
|
331
|
+
class W extends Error {
|
|
290
332
|
code = "BUNDLE_INCOMPATIBLE";
|
|
291
333
|
unsupportedProfiles;
|
|
292
334
|
constructor(e) {
|
|
@@ -297,17 +339,17 @@ class N extends Error {
|
|
|
297
339
|
), this.name = "BundleIncompatibleError", this.unsupportedProfiles = e;
|
|
298
340
|
}
|
|
299
341
|
}
|
|
300
|
-
function
|
|
342
|
+
function q(t, e = Be) {
|
|
301
343
|
const s = t.profiles;
|
|
302
344
|
if (!s) return;
|
|
303
345
|
if (!Array.isArray(s))
|
|
304
|
-
throw new
|
|
346
|
+
throw new W(["<malformed: profiles is not an array>"]);
|
|
305
347
|
if (s.length === 0) return;
|
|
306
|
-
const n = s.filter((r) => typeof r != "string" || !
|
|
348
|
+
const n = s.filter((r) => typeof r != "string" || !Ve(r) && !e.has(r)).map((r) => typeof r == "string" ? r : "<malformed: non-string profile entry>");
|
|
307
349
|
if (n.length > 0)
|
|
308
|
-
throw new
|
|
350
|
+
throw new W(n);
|
|
309
351
|
}
|
|
310
|
-
class
|
|
352
|
+
class Xe {
|
|
311
353
|
cache = /* @__PURE__ */ new Map();
|
|
312
354
|
baseUrl;
|
|
313
355
|
pathPrefix;
|
|
@@ -330,32 +372,32 @@ class $e {
|
|
|
330
372
|
return this.resolveUrl ? this.resolveUrl(e, s) : `${this.baseUrl}${this.pathPrefix}/${encodeURIComponent(e)}/bundle?v=${encodeURIComponent(s)}`;
|
|
331
373
|
}
|
|
332
374
|
preload(e) {
|
|
333
|
-
|
|
375
|
+
q(e), this.cache.set(e.scene_version, e);
|
|
334
376
|
}
|
|
335
377
|
async get(e, s) {
|
|
336
378
|
const n = this.cache.get(s);
|
|
337
379
|
if (n) return n;
|
|
338
|
-
const r = this.buildUrl(e, s),
|
|
380
|
+
const r = this.buildUrl(e, s), i = await this.buildInit(), a = i ? await this.fetchImpl(r, i) : await this.fetchImpl(r);
|
|
339
381
|
if (!a.ok)
|
|
340
382
|
throw new Error(`bundle fetch failed: ${a.status} ${a.statusText}`);
|
|
341
|
-
const
|
|
342
|
-
if (
|
|
383
|
+
const o = await a.json();
|
|
384
|
+
if (o.scene_version !== s)
|
|
343
385
|
throw new Error(
|
|
344
|
-
`bundle scene_version mismatch: expected ${s}, got ${
|
|
386
|
+
`bundle scene_version mismatch: expected ${s}, got ${o.scene_version}`
|
|
345
387
|
);
|
|
346
|
-
return
|
|
388
|
+
return q(o), this.cache.set(s, o), o;
|
|
347
389
|
}
|
|
348
390
|
}
|
|
349
|
-
function
|
|
350
|
-
return new
|
|
391
|
+
function Ke(t) {
|
|
392
|
+
return new Xe(t);
|
|
351
393
|
}
|
|
352
|
-
const
|
|
394
|
+
const k = {
|
|
353
395
|
initial: 200,
|
|
354
396
|
max: 5e3,
|
|
355
397
|
factor: 2,
|
|
356
398
|
jitter: 0.2
|
|
357
399
|
};
|
|
358
|
-
class
|
|
400
|
+
class Je {
|
|
359
401
|
constructor(e, s) {
|
|
360
402
|
this.opts = e, this.random = s;
|
|
361
403
|
}
|
|
@@ -379,20 +421,20 @@ class qe {
|
|
|
379
421
|
this._attempt = 0;
|
|
380
422
|
}
|
|
381
423
|
}
|
|
382
|
-
function
|
|
424
|
+
function Ye(t = {}) {
|
|
383
425
|
const e = {
|
|
384
|
-
initial: t.initial ??
|
|
385
|
-
max: t.max ??
|
|
386
|
-
factor: t.factor ??
|
|
387
|
-
jitter: t.jitter ??
|
|
426
|
+
initial: t.initial ?? k.initial,
|
|
427
|
+
max: t.max ?? k.max,
|
|
428
|
+
factor: t.factor ?? k.factor,
|
|
429
|
+
jitter: t.jitter ?? k.jitter
|
|
388
430
|
};
|
|
389
431
|
if (e.initial <= 0) throw new RangeError("initial must be > 0");
|
|
390
432
|
if (e.max < e.initial) throw new RangeError("max must be >= initial");
|
|
391
433
|
if (e.factor < 1) throw new RangeError("factor must be >= 1");
|
|
392
434
|
if (e.jitter < 0 || e.jitter > 1) throw new RangeError("jitter must be within [0, 1]");
|
|
393
|
-
return new
|
|
435
|
+
return new Je(e, t.random ?? Math.random);
|
|
394
436
|
}
|
|
395
|
-
class
|
|
437
|
+
class g extends Error {
|
|
396
438
|
recoverable;
|
|
397
439
|
code;
|
|
398
440
|
cause;
|
|
@@ -400,14 +442,14 @@ class p extends Error {
|
|
|
400
442
|
super(e), this.name = "TransportError", this.recoverable = s, this.code = n, this.cause = r;
|
|
401
443
|
}
|
|
402
444
|
}
|
|
403
|
-
class
|
|
445
|
+
class Ze {
|
|
404
446
|
status = "disconnected";
|
|
405
447
|
socket = null;
|
|
406
448
|
token;
|
|
407
449
|
url;
|
|
408
450
|
WebSocketCtor;
|
|
409
451
|
schedule;
|
|
410
|
-
seq = new
|
|
452
|
+
seq = new pe();
|
|
411
453
|
opts;
|
|
412
454
|
scheduler;
|
|
413
455
|
reconnectTimer = null;
|
|
@@ -419,7 +461,7 @@ class ze {
|
|
|
419
461
|
throw new TypeError(
|
|
420
462
|
"Lumencast WsClient: no WebSocket implementation found in this environment"
|
|
421
463
|
);
|
|
422
|
-
this.WebSocketCtor = s, this.schedule =
|
|
464
|
+
this.WebSocketCtor = s, this.schedule = Ye(e.reconnect), this.scheduler = e.scheduler ?? {
|
|
423
465
|
setTimeout: globalThis.setTimeout.bind(globalThis),
|
|
424
466
|
clearTimeout: globalThis.clearTimeout.bind(globalThis)
|
|
425
467
|
};
|
|
@@ -433,11 +475,11 @@ class ze {
|
|
|
433
475
|
* authenticate the render-bundle GET with the same credential. A
|
|
434
476
|
* `LumencastTokenProvider` is awaited. */
|
|
435
477
|
resolveCurrentToken() {
|
|
436
|
-
return
|
|
478
|
+
return z(this.token);
|
|
437
479
|
}
|
|
438
480
|
/** Send `input` patches to the server. No-op if not connected. */
|
|
439
481
|
sendInput(e) {
|
|
440
|
-
!this.socket || this.socket.readyState !== this.WebSocketCtor.OPEN || e.length !== 0 && this.socket.send(
|
|
482
|
+
!this.socket || this.socket.readyState !== this.WebSocketCtor.OPEN || e.length !== 0 && this.socket.send(x(ge(e)));
|
|
441
483
|
}
|
|
442
484
|
/** Replace the auth token. Closes and reopens with the new token. */
|
|
443
485
|
setToken(e) {
|
|
@@ -453,10 +495,10 @@ class ze {
|
|
|
453
495
|
this.setStatus("connecting");
|
|
454
496
|
let e;
|
|
455
497
|
try {
|
|
456
|
-
e = await
|
|
498
|
+
e = await z(this.token);
|
|
457
499
|
} catch (n) {
|
|
458
500
|
this.opts.onTransportError?.(
|
|
459
|
-
new
|
|
501
|
+
new g(
|
|
460
502
|
`failed to resolve token: ${n.message}`,
|
|
461
503
|
!0,
|
|
462
504
|
"AUTH_DENIED",
|
|
@@ -468,10 +510,10 @@ class ze {
|
|
|
468
510
|
if (!this.active) return;
|
|
469
511
|
let s;
|
|
470
512
|
try {
|
|
471
|
-
s = new this.WebSocketCtor(this.url, [...
|
|
513
|
+
s = new this.WebSocketCtor(this.url, [...ve]);
|
|
472
514
|
} catch (n) {
|
|
473
515
|
this.opts.onTransportError?.(
|
|
474
|
-
new
|
|
516
|
+
new g(
|
|
475
517
|
`failed to open WebSocket: ${n.message}`,
|
|
476
518
|
!0,
|
|
477
519
|
"INTERNAL",
|
|
@@ -484,25 +526,25 @@ class ze {
|
|
|
484
526
|
}
|
|
485
527
|
handleOpen(e) {
|
|
486
528
|
if (!this.socket) return;
|
|
487
|
-
const n = this.socket.protocol ===
|
|
529
|
+
const n = this.socket.protocol === we && this.seq.last > 0, r = n ? this.seq.last : void 0;
|
|
488
530
|
n || this.seq.reset();
|
|
489
|
-
const
|
|
531
|
+
const i = ye({
|
|
490
532
|
token: e,
|
|
491
533
|
...this.opts.scene !== void 0 ? { scene: this.opts.scene } : {},
|
|
492
534
|
...this.opts.session !== void 0 ? { session: this.opts.session } : {},
|
|
493
535
|
...r !== void 0 ? { since_sequence: r } : {}
|
|
494
536
|
});
|
|
495
|
-
this.socket.send(
|
|
537
|
+
this.socket.send(x(i));
|
|
496
538
|
}
|
|
497
539
|
handleMessage(e) {
|
|
498
540
|
const s = typeof e.data == "string" ? e.data : "";
|
|
499
541
|
if (!s) return;
|
|
500
542
|
let n;
|
|
501
543
|
try {
|
|
502
|
-
n =
|
|
544
|
+
n = be(s);
|
|
503
545
|
} catch (r) {
|
|
504
|
-
const
|
|
505
|
-
this.opts.onTransportError?.(new
|
|
546
|
+
const i = (r instanceof j, r.message), a = r instanceof j ? r.code : "INTERNAL";
|
|
547
|
+
this.opts.onTransportError?.(new g(`codec: ${i}`, !0, a, r)), this.closeSocket(), this.scheduleReconnect();
|
|
506
548
|
return;
|
|
507
549
|
}
|
|
508
550
|
if (n !== null)
|
|
@@ -510,7 +552,7 @@ class ze {
|
|
|
510
552
|
case "snapshot": {
|
|
511
553
|
if (n.seq < 1) {
|
|
512
554
|
this.opts.onTransportError?.(
|
|
513
|
-
new
|
|
555
|
+
new g(`snapshot seq must be >= 1, got ${n.seq}`, !0, "VERSION_GAP")
|
|
514
556
|
), this.closeSocket(), this.scheduleReconnect();
|
|
515
557
|
return;
|
|
516
558
|
}
|
|
@@ -521,7 +563,7 @@ class ze {
|
|
|
521
563
|
const r = this.seq.observe(n.seq);
|
|
522
564
|
if (r.kind === "gap") {
|
|
523
565
|
this.opts.onTransportError?.(
|
|
524
|
-
new
|
|
566
|
+
new g(
|
|
525
567
|
`sequence gap: expected ${this.seq.last + 1}, got ${n.seq}`,
|
|
526
568
|
!0,
|
|
527
569
|
"VERSION_GAP"
|
|
@@ -541,6 +583,10 @@ class ze {
|
|
|
541
583
|
this.opts.onServerError?.(n), n.recoverable || this.close();
|
|
542
584
|
return;
|
|
543
585
|
}
|
|
586
|
+
case "scene_roster": {
|
|
587
|
+
this.opts.onSceneRoster?.(n);
|
|
588
|
+
return;
|
|
589
|
+
}
|
|
544
590
|
case "pong":
|
|
545
591
|
return;
|
|
546
592
|
}
|
|
@@ -554,7 +600,7 @@ class ze {
|
|
|
554
600
|
}
|
|
555
601
|
if (e.code === 4401 || e.code === 4403 || e.code === 1008) {
|
|
556
602
|
this.opts.onTransportError?.(
|
|
557
|
-
new
|
|
603
|
+
new g(`server closed: ${e.code} ${e.reason}`, !1, "AUTH_DENIED")
|
|
558
604
|
), this.close();
|
|
559
605
|
return;
|
|
560
606
|
}
|
|
@@ -584,10 +630,10 @@ class ze {
|
|
|
584
630
|
this.status !== e && (this.status = e, this.opts.onStatus?.(e));
|
|
585
631
|
}
|
|
586
632
|
}
|
|
587
|
-
async function
|
|
633
|
+
async function z(t) {
|
|
588
634
|
return typeof t == "string" ? t : await t.fetch();
|
|
589
635
|
}
|
|
590
|
-
function
|
|
636
|
+
function Qe(t) {
|
|
591
637
|
if (!(t.target instanceof HTMLElement))
|
|
592
638
|
throw new TypeError("mount: `target` must be an HTMLElement");
|
|
593
639
|
if (typeof t.serverUrl != "string" || t.serverUrl.length === 0)
|
|
@@ -599,33 +645,33 @@ function Be(t) {
|
|
|
599
645
|
throw new TypeError("mount: `scene` is required when mode === 'test'");
|
|
600
646
|
}
|
|
601
647
|
}
|
|
602
|
-
function
|
|
603
|
-
|
|
604
|
-
const e =
|
|
648
|
+
function Tt(t) {
|
|
649
|
+
Qe(t), t.onStatus?.("disconnected");
|
|
650
|
+
const e = ee(), s = tt(t.serverUrl), n = Ke({
|
|
605
651
|
baseUrl: s,
|
|
606
652
|
...t.resolveBundleUrl !== void 0 ? { resolveUrl: t.resolveBundleUrl } : {},
|
|
607
|
-
getAuthToken: () =>
|
|
608
|
-
}), r =
|
|
609
|
-
|
|
610
|
-
},
|
|
653
|
+
getAuthToken: () => w.resolveCurrentToken()
|
|
654
|
+
}), r = S(null), i = S("disconnected"), a = S("__initial__"), o = (u) => {
|
|
655
|
+
i.value = u, t.onStatus?.(u);
|
|
656
|
+
}, c = (u) => {
|
|
611
657
|
t.onError?.(u);
|
|
612
658
|
};
|
|
613
|
-
let
|
|
614
|
-
const d = t.onDiagnostic ?
|
|
659
|
+
let l = !0;
|
|
660
|
+
const d = /* @__PURE__ */ new Set(), h = t.onReservedLeaves ? qe(t.onReservedLeaves) : void 0, _ = t.onDiagnostic ? Y(t.onDiagnostic) : void 0, w = new Ze({
|
|
615
661
|
url: t.serverUrl,
|
|
616
662
|
token: t.token,
|
|
617
663
|
...t.scene !== void 0 ? { scene: t.scene } : {},
|
|
618
664
|
...t.testSession !== void 0 ? { session: t.testSession } : {},
|
|
619
|
-
onStatus:
|
|
665
|
+
onStatus: o,
|
|
620
666
|
onSnapshot: (u) => {
|
|
621
|
-
|
|
667
|
+
l && (h?.onSnapshot(u.state), ie(
|
|
622
668
|
n,
|
|
623
669
|
r,
|
|
624
670
|
a,
|
|
625
671
|
u.scene_id,
|
|
626
672
|
u.scene_version,
|
|
627
|
-
() =>
|
|
628
|
-
|
|
673
|
+
() => Fe(e, u),
|
|
674
|
+
c
|
|
629
675
|
), t.onMetric?.({
|
|
630
676
|
name: "snapshot_received",
|
|
631
677
|
scene_id: u.scene_id,
|
|
@@ -633,41 +679,44 @@ function ft(t) {
|
|
|
633
679
|
}));
|
|
634
680
|
},
|
|
635
681
|
onDelta: (u) => {
|
|
636
|
-
if (!
|
|
637
|
-
const
|
|
638
|
-
|
|
682
|
+
if (!l) return;
|
|
683
|
+
const y = performance.now();
|
|
684
|
+
$e(e, u), h?.onDelta(u.patches), t.onMetric?.({
|
|
639
685
|
name: "delta_applied",
|
|
640
|
-
duration_ms: performance.now() -
|
|
686
|
+
duration_ms: performance.now() - y
|
|
641
687
|
}), t.onMetric?.({ name: "delta_received", count: 1, path_count: u.patches.length });
|
|
642
688
|
},
|
|
643
689
|
onSceneChanged: (u) => {
|
|
644
|
-
|
|
690
|
+
l && t.onMetric?.({
|
|
645
691
|
name: "scene_changed",
|
|
646
692
|
from: r.value?.scene_version ?? null,
|
|
647
693
|
to: u.scene_version
|
|
648
694
|
});
|
|
649
695
|
},
|
|
696
|
+
onSceneRoster: (u) => {
|
|
697
|
+
l && M(u.entries, "frame");
|
|
698
|
+
},
|
|
650
699
|
onServerError: (u) => {
|
|
651
|
-
|
|
700
|
+
c({
|
|
652
701
|
code: u.code,
|
|
653
702
|
message: u.message,
|
|
654
703
|
recoverable: u.recoverable
|
|
655
704
|
});
|
|
656
705
|
},
|
|
657
706
|
onTransportError: (u) => {
|
|
658
|
-
|
|
707
|
+
c(et(u));
|
|
659
708
|
}
|
|
660
709
|
});
|
|
661
|
-
|
|
662
|
-
const
|
|
663
|
-
return
|
|
664
|
-
|
|
710
|
+
w.start(), t.preloadRoster !== void 0 && t.preloadRoster.length > 0 && M(t.preloadRoster, "option");
|
|
711
|
+
const L = X(t.target);
|
|
712
|
+
return L.render(
|
|
713
|
+
ue(_e, {
|
|
665
714
|
mode: t.mode,
|
|
666
715
|
store: e,
|
|
667
716
|
bundleSignal: r,
|
|
668
|
-
statusSignal:
|
|
717
|
+
statusSignal: i,
|
|
669
718
|
crossfadeKeySignal: a,
|
|
670
|
-
sendInput: (u) =>
|
|
719
|
+
sendInput: (u) => w.sendInput(u),
|
|
671
720
|
// ADR 004 §A1.3 — thread the host capture resolver to the runtime context
|
|
672
721
|
// so the `x-zab.capture` primitive's ACQUIRE mode can pin a device.
|
|
673
722
|
...t.resolveCaptureDevice !== void 0 ? { resolveCaptureDevice: t.resolveCaptureDevice } : {},
|
|
@@ -681,35 +730,49 @@ function ft(t) {
|
|
|
681
730
|
})
|
|
682
731
|
), {
|
|
683
732
|
disconnect() {
|
|
684
|
-
|
|
733
|
+
l && (l = !1, _?.(), w.close(), L.unmount());
|
|
685
734
|
},
|
|
686
735
|
setToken(u) {
|
|
687
|
-
|
|
736
|
+
l && w.setToken(u);
|
|
688
737
|
}
|
|
689
738
|
};
|
|
690
|
-
|
|
691
|
-
|
|
739
|
+
function M(u, y) {
|
|
740
|
+
const E = r.value?.scene_version;
|
|
741
|
+
for (const { scene_id: b, scene_version: m } of u)
|
|
742
|
+
m !== E && (d.has(m) || (d.add(m), n.get(b, m).then(() => {
|
|
743
|
+
l && t.onMetric?.({
|
|
744
|
+
name: "roster_preloaded",
|
|
745
|
+
scene_id: b,
|
|
746
|
+
scene_version: m,
|
|
747
|
+
source: y
|
|
748
|
+
});
|
|
749
|
+
}).catch(() => {
|
|
750
|
+
d.delete(m);
|
|
751
|
+
})));
|
|
752
|
+
}
|
|
753
|
+
async function ie(u, y, E, b, m, oe, ae) {
|
|
754
|
+
let C;
|
|
692
755
|
try {
|
|
693
|
-
|
|
694
|
-
} catch (
|
|
695
|
-
|
|
756
|
+
C = await u.get(b, m);
|
|
757
|
+
} catch (N) {
|
|
758
|
+
ae({
|
|
696
759
|
code: "BUNDLE_FETCH_FAILED",
|
|
697
|
-
message:
|
|
760
|
+
message: N instanceof Error ? N.message : "render bundle fetch failed",
|
|
698
761
|
recoverable: !0
|
|
699
762
|
});
|
|
700
763
|
return;
|
|
701
764
|
}
|
|
702
|
-
|
|
765
|
+
l && (oe(), y.value = C, E.value = `${b}::${m}`);
|
|
703
766
|
}
|
|
704
767
|
}
|
|
705
|
-
function
|
|
768
|
+
function et(t) {
|
|
706
769
|
return {
|
|
707
770
|
code: t.code,
|
|
708
771
|
message: t.message,
|
|
709
772
|
recoverable: t.recoverable
|
|
710
773
|
};
|
|
711
774
|
}
|
|
712
|
-
function
|
|
775
|
+
function tt(t) {
|
|
713
776
|
try {
|
|
714
777
|
const e = new URL(t);
|
|
715
778
|
return `${e.protocol === "wss:" ? "https:" : "http:"}//${e.host}`;
|
|
@@ -717,7 +780,7 @@ function Ge(t) {
|
|
|
717
780
|
return "";
|
|
718
781
|
}
|
|
719
782
|
}
|
|
720
|
-
const
|
|
783
|
+
const st = [
|
|
721
784
|
"visible",
|
|
722
785
|
"opacity",
|
|
723
786
|
"universal_opacity",
|
|
@@ -735,9 +798,9 @@ const Ke = [
|
|
|
735
798
|
"mask"
|
|
736
799
|
];
|
|
737
800
|
function f(t) {
|
|
738
|
-
return /* @__PURE__ */ new Set([...
|
|
801
|
+
return /* @__PURE__ */ new Set([...st, ...t]);
|
|
739
802
|
}
|
|
740
|
-
const
|
|
803
|
+
const nt = {
|
|
741
804
|
stack: f(["direction", "gap", "wrap", "crossGap", "align", "justify"]),
|
|
742
805
|
grid: f(["cols", "rows", "gap"]),
|
|
743
806
|
frame: f([
|
|
@@ -818,26 +881,26 @@ const Xe = {
|
|
|
818
881
|
// binding is `items`.
|
|
819
882
|
repeat: /* @__PURE__ */ new Set(["items"])
|
|
820
883
|
};
|
|
821
|
-
function
|
|
822
|
-
const s =
|
|
884
|
+
function rt(t, e) {
|
|
885
|
+
const s = nt[t];
|
|
823
886
|
return !!(s === void 0 || s.has(e) || t === "instance" && (e === "params" || e.startsWith("params.")));
|
|
824
887
|
}
|
|
825
|
-
const
|
|
826
|
-
function
|
|
827
|
-
if (
|
|
828
|
-
|
|
888
|
+
const B = /* @__PURE__ */ new WeakSet();
|
|
889
|
+
function _t(t) {
|
|
890
|
+
if (B.has(t)) return;
|
|
891
|
+
B.add(t);
|
|
829
892
|
const e = /* @__PURE__ */ new Set([
|
|
830
893
|
...Object.keys(t.props ?? {}),
|
|
831
894
|
...Object.keys(t.bindings ?? {})
|
|
832
895
|
]);
|
|
833
896
|
for (const s of e)
|
|
834
|
-
|
|
897
|
+
rt(t.kind, s) || Z(
|
|
835
898
|
t.id,
|
|
836
899
|
`${t.kind}.${s}`,
|
|
837
900
|
"is not consumed by this primitive's renderer ; the prop is ignored (anti-silent-drop, ADR 001 §3.4)"
|
|
838
901
|
);
|
|
839
902
|
}
|
|
840
|
-
class
|
|
903
|
+
class te {
|
|
841
904
|
constructor(e) {
|
|
842
905
|
this.options = e, this.deps = {
|
|
843
906
|
WebSocket: e.deps?.WebSocket ?? globalThis.WebSocket,
|
|
@@ -870,13 +933,13 @@ class K {
|
|
|
870
933
|
return e.searchParams.set("room", this.options.roomId), e.searchParams.set("token", this.options.token), new Promise((s, n) => {
|
|
871
934
|
const r = new this.deps.WebSocket(e.toString());
|
|
872
935
|
this.ws = r;
|
|
873
|
-
const
|
|
936
|
+
const i = () => {
|
|
874
937
|
r.removeEventListener("error", a), this.send({ type: "join", name: this.options.name, role: "viewer" }), s();
|
|
875
|
-
}, a = (
|
|
876
|
-
r.removeEventListener("open",
|
|
938
|
+
}, a = (o) => {
|
|
939
|
+
r.removeEventListener("open", i), n(o);
|
|
877
940
|
};
|
|
878
|
-
r.addEventListener("open",
|
|
879
|
-
this.tearDown(), this.emit("close", { code:
|
|
941
|
+
r.addEventListener("open", i, { once: !0 }), r.addEventListener("error", a, { once: !0 }), r.addEventListener("message", (o) => void this.onMessage(o.data)), r.addEventListener("close", (o) => {
|
|
942
|
+
this.tearDown(), this.emit("close", { code: o.code, reason: o.reason });
|
|
880
943
|
});
|
|
881
944
|
});
|
|
882
945
|
}
|
|
@@ -929,15 +992,15 @@ class K {
|
|
|
929
992
|
n || (n = this.ensureRemote({ id: e, name: e.slice(0, 8), role: "publisher" }));
|
|
930
993
|
const { pc: r } = n;
|
|
931
994
|
if (s.kind === "sdp") {
|
|
932
|
-
const
|
|
995
|
+
const i = s.description, a = i.type === "offer" && (n.makingOffer || r.signalingState !== "stable");
|
|
933
996
|
if (n.ignoreOffer = !this.isPolite(e) && a, n.ignoreOffer) return;
|
|
934
|
-
await r.setRemoteDescription(
|
|
935
|
-
for (const
|
|
997
|
+
await r.setRemoteDescription(i);
|
|
998
|
+
for (const o of n.pendingCandidates)
|
|
936
999
|
try {
|
|
937
|
-
await r.addIceCandidate(
|
|
1000
|
+
await r.addIceCandidate(o);
|
|
938
1001
|
} catch {
|
|
939
1002
|
}
|
|
940
|
-
n.pendingCandidates = [],
|
|
1003
|
+
n.pendingCandidates = [], i.type === "offer" && (await r.setLocalDescription(), r.localDescription && this.sendSignal(e, {
|
|
941
1004
|
kind: "sdp",
|
|
942
1005
|
description: {
|
|
943
1006
|
type: r.localDescription.type,
|
|
@@ -947,15 +1010,15 @@ class K {
|
|
|
947
1010
|
return;
|
|
948
1011
|
}
|
|
949
1012
|
if (s.kind === "ice") {
|
|
950
|
-
const
|
|
1013
|
+
const i = s.candidate;
|
|
951
1014
|
if (r.remoteDescription)
|
|
952
1015
|
try {
|
|
953
|
-
await r.addIceCandidate(
|
|
1016
|
+
await r.addIceCandidate(i);
|
|
954
1017
|
} catch (a) {
|
|
955
1018
|
if (!n.ignoreOffer) throw a;
|
|
956
1019
|
}
|
|
957
1020
|
else
|
|
958
|
-
n.pendingCandidates.push(
|
|
1021
|
+
n.pendingCandidates.push(i);
|
|
959
1022
|
return;
|
|
960
1023
|
}
|
|
961
1024
|
}
|
|
@@ -966,9 +1029,9 @@ class K {
|
|
|
966
1029
|
const n = new this.deps.RTCPeerConnection({
|
|
967
1030
|
iceServers: this.iceServers,
|
|
968
1031
|
iceTransportPolicy: "relay"
|
|
969
|
-
}), r = new this.deps.MediaStream(),
|
|
970
|
-
|
|
971
|
-
const
|
|
1032
|
+
}), r = new this.deps.MediaStream(), i = n.addTransceiver("audio", { direction: "recvonly" }), a = n.addTransceiver("video", { direction: "recvonly" });
|
|
1033
|
+
it(i, a);
|
|
1034
|
+
const o = {
|
|
972
1035
|
info: e,
|
|
973
1036
|
pc: n,
|
|
974
1037
|
stream: r,
|
|
@@ -979,7 +1042,7 @@ class K {
|
|
|
979
1042
|
return n.addEventListener("negotiationneeded", () => {
|
|
980
1043
|
(async () => {
|
|
981
1044
|
try {
|
|
982
|
-
|
|
1045
|
+
o.makingOffer = !0, await n.setLocalDescription(), n.localDescription && this.sendSignal(e.id, {
|
|
983
1046
|
kind: "sdp",
|
|
984
1047
|
description: {
|
|
985
1048
|
type: n.localDescription.type,
|
|
@@ -988,32 +1051,32 @@ class K {
|
|
|
988
1051
|
});
|
|
989
1052
|
} catch {
|
|
990
1053
|
} finally {
|
|
991
|
-
|
|
1054
|
+
o.makingOffer = !1;
|
|
992
1055
|
}
|
|
993
1056
|
})();
|
|
994
|
-
}), n.addEventListener("icecandidate", (
|
|
995
|
-
const
|
|
996
|
-
|
|
1057
|
+
}), n.addEventListener("icecandidate", (c) => {
|
|
1058
|
+
const l = c.candidate;
|
|
1059
|
+
l && this.sendSignal(e.id, {
|
|
997
1060
|
kind: "ice",
|
|
998
1061
|
candidate: {
|
|
999
|
-
candidate:
|
|
1000
|
-
sdpMid:
|
|
1001
|
-
sdpMLineIndex:
|
|
1002
|
-
usernameFragment:
|
|
1062
|
+
candidate: l.candidate,
|
|
1063
|
+
sdpMid: l.sdpMid,
|
|
1064
|
+
sdpMLineIndex: l.sdpMLineIndex,
|
|
1065
|
+
usernameFragment: l.usernameFragment
|
|
1003
1066
|
}
|
|
1004
1067
|
});
|
|
1005
|
-
}), n.addEventListener("track", (
|
|
1006
|
-
const
|
|
1007
|
-
|
|
1008
|
-
|
|
1068
|
+
}), n.addEventListener("track", (c) => {
|
|
1069
|
+
const l = c.track;
|
|
1070
|
+
o.stream.getTracks().includes(l) || o.stream.addTrack(l), l.addEventListener("ended", () => {
|
|
1071
|
+
o.stream.removeTrack(l);
|
|
1009
1072
|
}), this.emit("remote-track", {
|
|
1010
1073
|
peerId: e.id,
|
|
1011
1074
|
peerName: e.name,
|
|
1012
|
-
stream:
|
|
1075
|
+
stream: o.stream
|
|
1013
1076
|
});
|
|
1014
1077
|
}), n.addEventListener("connectionstatechange", () => {
|
|
1015
1078
|
this.emit("connection-state", { peerId: e.id, state: n.connectionState }), (n.connectionState === "failed" || n.connectionState === "closed") && (this.remotes.delete(e.id), this.emit("peer-left", { peerId: e.id, peerName: e.name }));
|
|
1016
|
-
}), this.remotes.set(e.id,
|
|
1079
|
+
}), this.remotes.set(e.id, o), o;
|
|
1017
1080
|
}
|
|
1018
1081
|
/* ---- Helpers ------------------------------------------------------ */
|
|
1019
1082
|
isPolite(e) {
|
|
@@ -1028,213 +1091,227 @@ class K {
|
|
|
1028
1091
|
for (const r of n) r(s);
|
|
1029
1092
|
}
|
|
1030
1093
|
}
|
|
1031
|
-
function
|
|
1094
|
+
function it(t, e) {
|
|
1032
1095
|
const s = globalThis.RTCRtpReceiver?.getCapabilities;
|
|
1033
|
-
typeof s == "function" && (
|
|
1096
|
+
typeof s == "function" && (H(e, s("video"), (n) => {
|
|
1034
1097
|
const r = n.toLowerCase();
|
|
1035
1098
|
return r === "video/h264" || r === "video/rtx";
|
|
1036
|
-
}),
|
|
1099
|
+
}), H(t, s("audio"), (n) => {
|
|
1037
1100
|
const r = n.toLowerCase();
|
|
1038
1101
|
return r === "audio/opus" || r === "audio/telephone-event";
|
|
1039
1102
|
}));
|
|
1040
1103
|
}
|
|
1041
|
-
function
|
|
1104
|
+
function H(t, e, s) {
|
|
1042
1105
|
const n = t?.setCodecPreferences;
|
|
1043
1106
|
if (typeof n != "function" || !e) return;
|
|
1044
|
-
const r = e.codecs.filter((
|
|
1107
|
+
const r = e.codecs.filter((i) => s(i.mimeType));
|
|
1045
1108
|
if (r.length !== 0)
|
|
1046
1109
|
try {
|
|
1047
1110
|
n.call(t, r);
|
|
1048
1111
|
} catch {
|
|
1049
1112
|
}
|
|
1050
1113
|
}
|
|
1051
|
-
function
|
|
1052
|
-
const t = /* @__PURE__ */ new Map(), e = /* @__PURE__ */ new Map();
|
|
1053
|
-
function
|
|
1054
|
-
const
|
|
1055
|
-
if (
|
|
1056
|
-
const o = t.get(
|
|
1057
|
-
for (const
|
|
1114
|
+
function se() {
|
|
1115
|
+
const t = /* @__PURE__ */ new Map(), e = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Set();
|
|
1116
|
+
function n(i) {
|
|
1117
|
+
const a = e.get(i);
|
|
1118
|
+
if (a === void 0) return;
|
|
1119
|
+
const o = t.get(i) ?? null;
|
|
1120
|
+
for (const c of a) c(o);
|
|
1121
|
+
}
|
|
1122
|
+
function r() {
|
|
1123
|
+
for (const i of [...s]) i();
|
|
1058
1124
|
}
|
|
1059
1125
|
return {
|
|
1060
|
-
resolve(
|
|
1061
|
-
return t.get(
|
|
1126
|
+
resolve(i) {
|
|
1127
|
+
return t.get(i) ?? null;
|
|
1128
|
+
},
|
|
1129
|
+
orderedLabels() {
|
|
1130
|
+
return [...t.keys()];
|
|
1062
1131
|
},
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
const a = e.get(n);
|
|
1067
|
-
a !== void 0 && (a.delete(r), a.size === 0 && e.delete(n));
|
|
1132
|
+
subscribeRoster(i) {
|
|
1133
|
+
return s.add(i), () => {
|
|
1134
|
+
s.delete(i);
|
|
1068
1135
|
};
|
|
1069
1136
|
},
|
|
1070
|
-
|
|
1071
|
-
|
|
1137
|
+
subscribe(i, a) {
|
|
1138
|
+
let o = e.get(i);
|
|
1139
|
+
return o === void 0 && (o = /* @__PURE__ */ new Set(), e.set(i, o)), o.add(a), a(t.get(i) ?? null), () => {
|
|
1140
|
+
const c = e.get(i);
|
|
1141
|
+
c !== void 0 && (c.delete(a), c.size === 0 && e.delete(i));
|
|
1142
|
+
};
|
|
1143
|
+
},
|
|
1144
|
+
set(i, a) {
|
|
1145
|
+
if (t.get(i) === a) return;
|
|
1146
|
+
const o = !t.has(i);
|
|
1147
|
+
t.set(i, a), n(i), o && r();
|
|
1072
1148
|
},
|
|
1073
|
-
remove(
|
|
1074
|
-
t.has(
|
|
1149
|
+
remove(i) {
|
|
1150
|
+
t.has(i) && (t.delete(i), n(i), r());
|
|
1075
1151
|
},
|
|
1076
1152
|
clear() {
|
|
1077
|
-
const
|
|
1153
|
+
const i = [...t.keys()];
|
|
1078
1154
|
t.clear();
|
|
1079
|
-
for (const
|
|
1155
|
+
for (const a of i) n(a);
|
|
1156
|
+
i.length > 0 && r();
|
|
1080
1157
|
}
|
|
1081
1158
|
};
|
|
1082
1159
|
}
|
|
1083
|
-
function
|
|
1160
|
+
function v(t) {
|
|
1084
1161
|
return t.toLowerCase().replace(/[^a-z0-9_-]+/g, "_").replace(/^[_-]+|[_-]+$/g, "");
|
|
1085
1162
|
}
|
|
1086
|
-
function
|
|
1163
|
+
function ne(t, e, s) {
|
|
1087
1164
|
t.on("remote-track", (n) => {
|
|
1088
|
-
const r =
|
|
1165
|
+
const r = v(n.peerName);
|
|
1089
1166
|
s.acquire(r, t) && e.set(r, n.stream);
|
|
1090
1167
|
}), t.on("peer-left", (n) => {
|
|
1091
|
-
const r =
|
|
1168
|
+
const r = v(n.peerName);
|
|
1092
1169
|
s.acquire(r, t) && (e.remove(r), s.release(r, t));
|
|
1093
1170
|
});
|
|
1094
1171
|
}
|
|
1095
|
-
const
|
|
1172
|
+
const ot = {
|
|
1096
1173
|
acquire: () => !0,
|
|
1097
1174
|
release: () => {
|
|
1098
1175
|
}
|
|
1099
1176
|
};
|
|
1100
|
-
function
|
|
1101
|
-
const e =
|
|
1102
|
-
return
|
|
1177
|
+
function Et(t) {
|
|
1178
|
+
const e = se(), s = new te(t);
|
|
1179
|
+
return ne(s, e, ot), {
|
|
1103
1180
|
join: () => s.join(),
|
|
1104
1181
|
leave: () => {
|
|
1105
1182
|
s.leave(), e.clear();
|
|
1106
1183
|
},
|
|
1107
|
-
resolvePeerStream: (n) => e.resolve(
|
|
1108
|
-
subscribePeerStream: (n, r) => e.subscribe(
|
|
1184
|
+
resolvePeerStream: (n) => e.resolve(v(n)),
|
|
1185
|
+
subscribePeerStream: (n, r) => e.subscribe(v(n), r),
|
|
1109
1186
|
registry: e,
|
|
1110
1187
|
viewer: s
|
|
1111
1188
|
};
|
|
1112
1189
|
}
|
|
1113
|
-
function
|
|
1114
|
-
const e =
|
|
1115
|
-
acquire: (
|
|
1116
|
-
const
|
|
1117
|
-
return
|
|
1190
|
+
function G(t) {
|
|
1191
|
+
const e = se(), s = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map(), r = {
|
|
1192
|
+
acquire: (o, c) => {
|
|
1193
|
+
const l = n.get(o);
|
|
1194
|
+
return l === void 0 ? (n.set(o, c), !0) : l === c;
|
|
1118
1195
|
},
|
|
1119
|
-
release: (
|
|
1120
|
-
n.get(
|
|
1196
|
+
release: (o, c) => {
|
|
1197
|
+
n.get(o) === c && n.delete(o);
|
|
1121
1198
|
}
|
|
1122
1199
|
};
|
|
1123
|
-
function o
|
|
1124
|
-
if (s.has(
|
|
1125
|
-
const
|
|
1126
|
-
name:
|
|
1127
|
-
...
|
|
1128
|
-
...t.deps !== void 0 &&
|
|
1200
|
+
function i(o) {
|
|
1201
|
+
if (s.has(o.roomId)) return;
|
|
1202
|
+
const c = new te({
|
|
1203
|
+
name: o.name ?? "solar-viewer",
|
|
1204
|
+
...o,
|
|
1205
|
+
...t.deps !== void 0 && o.deps === void 0 ? { deps: t.deps } : {}
|
|
1129
1206
|
});
|
|
1130
|
-
|
|
1207
|
+
ne(c, e, r), s.set(o.roomId, { viewer: c });
|
|
1131
1208
|
}
|
|
1132
|
-
function a(
|
|
1133
|
-
const
|
|
1134
|
-
if (
|
|
1135
|
-
for (const [
|
|
1136
|
-
d ===
|
|
1137
|
-
|
|
1209
|
+
function a(o) {
|
|
1210
|
+
const c = s.get(o);
|
|
1211
|
+
if (c !== void 0) {
|
|
1212
|
+
for (const [l, d] of [...n.entries()])
|
|
1213
|
+
d === c.viewer && (e.remove(l), n.delete(l));
|
|
1214
|
+
c.viewer.leave(), s.delete(o);
|
|
1138
1215
|
}
|
|
1139
1216
|
}
|
|
1140
|
-
for (const
|
|
1217
|
+
for (const o of t.rooms) i(o);
|
|
1141
1218
|
return {
|
|
1142
1219
|
join: async () => {
|
|
1143
|
-
await Promise.all([...s.values()].map((
|
|
1220
|
+
await Promise.all([...s.values()].map((o) => o.viewer.join()));
|
|
1144
1221
|
},
|
|
1145
1222
|
leave: () => {
|
|
1146
|
-
for (const
|
|
1223
|
+
for (const o of [...s.keys()]) a(o);
|
|
1147
1224
|
e.clear();
|
|
1148
1225
|
},
|
|
1149
|
-
setRooms: async (
|
|
1150
|
-
const
|
|
1226
|
+
setRooms: async (o) => {
|
|
1227
|
+
const c = new Set(o.map((d) => d.roomId));
|
|
1151
1228
|
for (const d of [...s.keys()])
|
|
1152
|
-
|
|
1153
|
-
const
|
|
1154
|
-
for (const d of
|
|
1229
|
+
c.has(d) || a(d);
|
|
1230
|
+
const l = [];
|
|
1231
|
+
for (const d of o)
|
|
1155
1232
|
if (!s.has(d.roomId)) {
|
|
1156
|
-
|
|
1233
|
+
i(d);
|
|
1157
1234
|
const h = s.get(d.roomId);
|
|
1158
|
-
h &&
|
|
1235
|
+
h && l.push(h.viewer);
|
|
1159
1236
|
}
|
|
1160
|
-
await Promise.all(
|
|
1237
|
+
await Promise.all(l.map((d) => d.join()));
|
|
1161
1238
|
},
|
|
1162
|
-
resolvePeerStream: (
|
|
1163
|
-
subscribePeerStream: (
|
|
1239
|
+
resolvePeerStream: (o) => e.resolve(v(o)),
|
|
1240
|
+
subscribePeerStream: (o, c) => e.subscribe(v(o), c),
|
|
1164
1241
|
registry: e
|
|
1165
1242
|
};
|
|
1166
1243
|
}
|
|
1167
|
-
function
|
|
1244
|
+
function Rt(t) {
|
|
1168
1245
|
if ("rooms" in t && Array.isArray(t.rooms))
|
|
1169
|
-
return
|
|
1246
|
+
return G(t);
|
|
1170
1247
|
const { name: e, deps: s, ...n } = t;
|
|
1171
|
-
return
|
|
1248
|
+
return G({
|
|
1172
1249
|
rooms: [{ ...n, ...e !== void 0 ? { name: e } : {} }],
|
|
1173
1250
|
...s !== void 0 ? { deps: s } : {}
|
|
1174
1251
|
});
|
|
1175
1252
|
}
|
|
1176
|
-
const
|
|
1253
|
+
const at = { width: 1920, height: 1080 }, ct = () => {
|
|
1177
1254
|
};
|
|
1178
|
-
function
|
|
1179
|
-
const e = t.stage ??
|
|
1255
|
+
function It(t) {
|
|
1256
|
+
const e = t.stage ?? at, s = t.target;
|
|
1180
1257
|
s.style.position ||= "relative", s.style.width = `${e.width}px`, s.style.height = `${e.height}px`, s.style.overflow = "hidden";
|
|
1181
|
-
const n = t.onDiagnostic ?
|
|
1258
|
+
const n = t.onDiagnostic ? Y(t.onDiagnostic) : void 0, r = ee();
|
|
1182
1259
|
r.reset(t.defaults ?? {});
|
|
1183
|
-
const
|
|
1260
|
+
const i = X(s);
|
|
1184
1261
|
return {
|
|
1185
|
-
ready: new Promise((
|
|
1186
|
-
import("./broadcast-
|
|
1187
|
-
|
|
1188
|
-
/* @__PURE__ */
|
|
1189
|
-
|
|
1262
|
+
ready: new Promise((o) => {
|
|
1263
|
+
import("./broadcast-ydSpPUje.js").then(({ BroadcastMode: c }) => {
|
|
1264
|
+
i.render(
|
|
1265
|
+
/* @__PURE__ */ p(de, { children: /* @__PURE__ */ p(
|
|
1266
|
+
J,
|
|
1190
1267
|
{
|
|
1191
1268
|
value: {
|
|
1192
1269
|
mode: "broadcast",
|
|
1193
1270
|
store: r,
|
|
1194
1271
|
bundle: t.bundle,
|
|
1195
1272
|
status: "live",
|
|
1196
|
-
sendInput:
|
|
1273
|
+
sendInput: ct
|
|
1197
1274
|
},
|
|
1198
|
-
children: /* @__PURE__ */
|
|
1275
|
+
children: /* @__PURE__ */ p(c, {})
|
|
1199
1276
|
}
|
|
1200
1277
|
) })
|
|
1201
1278
|
);
|
|
1202
|
-
const
|
|
1279
|
+
const l = new Promise((h) => {
|
|
1203
1280
|
requestAnimationFrame(() => requestAnimationFrame(() => h()));
|
|
1204
1281
|
}), d = typeof document < "u" && document.fonts ? document.fonts.ready.then(() => {
|
|
1205
1282
|
}) : Promise.resolve();
|
|
1206
|
-
Promise.all([
|
|
1283
|
+
Promise.all([l, d]).then(() => o());
|
|
1207
1284
|
});
|
|
1208
1285
|
}),
|
|
1209
1286
|
unmount() {
|
|
1210
|
-
n?.(),
|
|
1287
|
+
n?.(), i.unmount();
|
|
1211
1288
|
}
|
|
1212
1289
|
};
|
|
1213
1290
|
}
|
|
1214
|
-
function
|
|
1291
|
+
function re(t, e) {
|
|
1215
1292
|
if (typeof t != "string") return t;
|
|
1216
1293
|
if (e[t]) return e[t];
|
|
1217
1294
|
const s = /^assets\/([A-Za-z0-9]+)\.[A-Za-z0-9]+$/.exec(t);
|
|
1218
1295
|
return s && s[1] !== void 0 && e[s[1]] ? e[s[1]] : t;
|
|
1219
1296
|
}
|
|
1220
|
-
function
|
|
1297
|
+
function V(t, e) {
|
|
1221
1298
|
if (t === null || typeof t != "object") return;
|
|
1222
1299
|
if (Array.isArray(t)) {
|
|
1223
|
-
for (const n of t)
|
|
1300
|
+
for (const n of t) V(n, e);
|
|
1224
1301
|
return;
|
|
1225
1302
|
}
|
|
1226
1303
|
const s = t;
|
|
1227
|
-
"src" in s && (s.src =
|
|
1304
|
+
"src" in s && (s.src = re(s.src, e));
|
|
1228
1305
|
for (const n of Object.values(s))
|
|
1229
|
-
n && typeof n == "object" &&
|
|
1306
|
+
n && typeof n == "object" && V(n, e);
|
|
1230
1307
|
}
|
|
1231
|
-
function
|
|
1308
|
+
function At(t, e) {
|
|
1232
1309
|
const s = { ...t };
|
|
1233
1310
|
for (const [n, r] of Object.entries(s))
|
|
1234
|
-
n.startsWith("__lit.image.") && (s[n] =
|
|
1311
|
+
n.startsWith("__lit.image.") && (s[n] = re(r, e));
|
|
1235
1312
|
return s;
|
|
1236
1313
|
}
|
|
1237
|
-
async function
|
|
1314
|
+
async function Ot(t) {
|
|
1238
1315
|
const e = [];
|
|
1239
1316
|
for (const s of t)
|
|
1240
1317
|
try {
|
|
@@ -1248,34 +1325,38 @@ async function yt(t) {
|
|
|
1248
1325
|
return e;
|
|
1249
1326
|
}
|
|
1250
1327
|
export {
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1328
|
+
Ee as A,
|
|
1329
|
+
W as B,
|
|
1330
|
+
kt as C,
|
|
1331
|
+
wt as F,
|
|
1332
|
+
te as M,
|
|
1333
|
+
nt as P,
|
|
1334
|
+
Be as S,
|
|
1335
|
+
vt as a,
|
|
1336
|
+
_t as b,
|
|
1337
|
+
D as c,
|
|
1338
|
+
A as d,
|
|
1339
|
+
Z as e,
|
|
1340
|
+
Q as f,
|
|
1341
|
+
Y as g,
|
|
1342
|
+
G as h,
|
|
1343
|
+
se as i,
|
|
1344
|
+
Et as j,
|
|
1345
|
+
Rt as k,
|
|
1346
|
+
Ot as l,
|
|
1347
|
+
St as m,
|
|
1348
|
+
Ve as n,
|
|
1349
|
+
U as o,
|
|
1350
|
+
Tt as p,
|
|
1351
|
+
It as q,
|
|
1352
|
+
bt as r,
|
|
1353
|
+
Le as s,
|
|
1354
|
+
yt as t,
|
|
1355
|
+
gt as u,
|
|
1356
|
+
re as v,
|
|
1357
|
+
Me as w,
|
|
1358
|
+
At as x,
|
|
1359
|
+
V as y,
|
|
1360
|
+
q as z
|
|
1280
1361
|
};
|
|
1281
|
-
//# sourceMappingURL=index-
|
|
1362
|
+
//# sourceMappingURL=index-ClWi5UzJ.js.map
|