@lumencast/runtime 0.5.0 → 0.7.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/dist/.tsbuildinfo +1 -1
- package/dist/broadcast-DUYqvcgo.js +12 -0
- package/dist/broadcast-DUYqvcgo.js.map +1 -0
- package/dist/control-CL8TWXaE.js +17 -0
- package/dist/control-CL8TWXaE.js.map +1 -0
- package/dist/{index-CyOlpZAL.js → index-C6viWFcT.js} +216 -182
- package/dist/index-C6viWFcT.js.map +1 -0
- package/dist/index.html +1 -1
- package/dist/lumencast.js +1 -1
- package/dist/modes/broadcast.d.ts.map +1 -1
- package/dist/modes/broadcast.js +6 -1
- package/dist/modes/broadcast.js.map +1 -1
- package/dist/modes/control.d.ts.map +1 -1
- package/dist/modes/control.js +6 -1
- package/dist/modes/control.js.map +1 -1
- package/dist/modes/test.d.ts.map +1 -1
- package/dist/modes/test.js +2 -1
- package/dist/modes/test.js.map +1 -1
- package/dist/mount.d.ts.map +1 -1
- package/dist/mount.js +5 -0
- package/dist/mount.js.map +1 -1
- package/dist/render/allowed-hosts.d.ts +41 -0
- package/dist/render/allowed-hosts.d.ts.map +1 -0
- package/dist/render/allowed-hosts.js +88 -0
- package/dist/render/allowed-hosts.js.map +1 -0
- package/dist/render/blend-mode.d.ts +7 -0
- package/dist/render/blend-mode.d.ts.map +1 -0
- package/dist/render/blend-mode.js +49 -0
- package/dist/render/blend-mode.js.map +1 -0
- package/dist/render/bundle.d.ts +17 -1
- package/dist/render/bundle.d.ts.map +1 -1
- package/dist/render/bundle.js +15 -1
- package/dist/render/bundle.js.map +1 -1
- package/dist/render/fill.d.ts +36 -3
- package/dist/render/fill.d.ts.map +1 -1
- package/dist/render/fill.js +222 -23
- package/dist/render/fill.js.map +1 -1
- package/dist/render/mask.d.ts +87 -0
- package/dist/render/mask.d.ts.map +1 -0
- package/dist/render/mask.js +243 -0
- package/dist/render/mask.js.map +1 -0
- package/dist/render/primitives/frame.d.ts.map +1 -1
- package/dist/render/primitives/frame.js +91 -5
- package/dist/render/primitives/frame.js.map +1 -1
- package/dist/render/primitives/grid.d.ts +1 -1
- package/dist/render/primitives/grid.d.ts.map +1 -1
- package/dist/render/primitives/grid.js +4 -1
- package/dist/render/primitives/grid.js.map +1 -1
- package/dist/render/primitives/image.d.ts +8 -1
- package/dist/render/primitives/image.d.ts.map +1 -1
- package/dist/render/primitives/image.js +17 -3
- package/dist/render/primitives/image.js.map +1 -1
- package/dist/render/primitives/index.d.ts +7 -0
- package/dist/render/primitives/index.d.ts.map +1 -1
- package/dist/render/primitives/index.js.map +1 -1
- package/dist/render/primitives/shape.d.ts.map +1 -1
- package/dist/render/primitives/shape.js +29 -26
- package/dist/render/primitives/shape.js.map +1 -1
- package/dist/render/primitives/stack.d.ts +1 -1
- package/dist/render/primitives/stack.d.ts.map +1 -1
- package/dist/render/primitives/stack.js +5 -1
- package/dist/render/primitives/stack.js.map +1 -1
- package/dist/render/primitives/text.d.ts.map +1 -1
- package/dist/render/primitives/text.js +0 -1
- package/dist/render/primitives/text.js.map +1 -1
- package/dist/render/prop-allowlist.d.ts.map +1 -1
- package/dist/render/prop-allowlist.js +25 -2
- package/dist/render/prop-allowlist.js.map +1 -1
- package/dist/render/shape-geometry.d.ts +81 -0
- package/dist/render/shape-geometry.d.ts.map +1 -0
- package/dist/render/shape-geometry.js +199 -0
- package/dist/render/shape-geometry.js.map +1 -0
- package/dist/render/shape-index.d.ts +28 -0
- package/dist/render/shape-index.d.ts.map +1 -0
- package/dist/render/shape-index.js +77 -0
- package/dist/render/shape-index.js.map +1 -0
- package/dist/render/tree.d.ts.map +1 -1
- package/dist/render/tree.js +175 -3
- package/dist/render/tree.js.map +1 -1
- package/dist/render/universal-wrapper.d.ts +27 -1
- package/dist/render/universal-wrapper.d.ts.map +1 -1
- package/dist/render/universal-wrapper.js +98 -22
- package/dist/render/universal-wrapper.js.map +1 -1
- package/dist/{status-pill-DIpXc5du.js → status-pill-jJT54n07.js} +2 -2
- package/dist/{status-pill-DIpXc5du.js.map → status-pill-jJT54n07.js.map} +1 -1
- package/dist/{test-ByRec1kd.js → test-84XodL1c.js} +51 -51
- package/dist/{test-ByRec1kd.js.map → test-84XodL1c.js.map} +1 -1
- package/dist/transport/ws.d.ts +5 -0
- 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-BIimahCf.js +1777 -0
- package/dist/tree-BIimahCf.js.map +1 -0
- package/package.json +4 -4
- package/src/modes/broadcast.tsx +12 -1
- package/src/modes/control.tsx +10 -1
- package/src/modes/test.tsx +4 -1
- package/src/mount.ts +5 -0
- package/src/render/allowed-hosts.tsx +100 -0
- package/src/render/blend-mode.ts +50 -0
- package/src/render/bundle.ts +28 -2
- package/src/render/fill.tsx +266 -24
- package/src/render/mask.tsx +389 -0
- package/src/render/primitives/frame.tsx +101 -5
- package/src/render/primitives/grid.tsx +4 -1
- package/src/render/primitives/image.tsx +17 -3
- package/src/render/primitives/index.ts +7 -0
- package/src/render/primitives/shape.tsx +39 -75
- package/src/render/primitives/stack.tsx +5 -1
- package/src/render/primitives/text.tsx +0 -1
- package/src/render/prop-allowlist.ts +25 -2
- package/src/render/shape-geometry.tsx +315 -0
- package/src/render/shape-index.tsx +90 -0
- package/src/render/tree.tsx +214 -12
- package/src/render/universal-wrapper.tsx +128 -21
- package/src/transport/ws.ts +8 -0
- package/dist/broadcast-3vYij4k-.js +0 -11
- package/dist/broadcast-3vYij4k-.js.map +0 -1
- package/dist/control-BFNkY7-6.js +0 -16
- package/dist/control-BFNkY7-6.js.map +0 -1
- package/dist/index-CyOlpZAL.js.map +0 -1
- package/dist/tree-D5wYHpPu.js +0 -1230
- package/dist/tree-D5wYHpPu.js.map +0 -1
|
@@ -1,77 +1,77 @@
|
|
|
1
|
-
import { batch as y, signal 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 y, signal as p } from "@preact/signals-react";
|
|
2
|
+
import { createRoot as B } from "react-dom/client";
|
|
3
|
+
import { createContext as W, useContext as z, lazy as T, Suspense as H, createElement as G } from "react";
|
|
4
|
+
import { jsx as f } from "react/jsx-runtime";
|
|
5
|
+
import { useSignals as X } from "@preact/signals-react/runtime";
|
|
6
|
+
import { AnimatePresence as Y, motion as K } from "framer-motion";
|
|
7
|
+
import { SequenceTracker as J, encodeFrame as R, input as Q, WS_SUBPROTOCOLS as Z, WS_SUBPROTOCOL_V1_1 as V, subscribe as ee, decodeServerFrame as te, LumencastError as A } from "@lumencast/protocol";
|
|
8
|
+
const P = W(null);
|
|
9
|
+
function se({
|
|
10
10
|
value: t,
|
|
11
11
|
children: e
|
|
12
12
|
}) {
|
|
13
|
-
return /* @__PURE__ */
|
|
13
|
+
return /* @__PURE__ */ f(P.Provider, { value: t, children: e });
|
|
14
14
|
}
|
|
15
15
|
function Ye() {
|
|
16
|
-
const t =
|
|
16
|
+
const t = z(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
|
-
const
|
|
24
|
-
() => import("./broadcast-
|
|
25
|
-
),
|
|
26
|
-
() => import("./control-
|
|
27
|
-
),
|
|
28
|
-
function
|
|
23
|
+
const ne = T(
|
|
24
|
+
() => import("./broadcast-DUYqvcgo.js").then((t) => ({ default: t.BroadcastMode }))
|
|
25
|
+
), re = T(
|
|
26
|
+
() => import("./control-CL8TWXaE.js").then((t) => ({ default: t.ControlMode }))
|
|
27
|
+
), ie = T(() => import("./test-84XodL1c.js").then((t) => ({ default: t.TestMode })));
|
|
28
|
+
function oe({
|
|
29
29
|
mode: t,
|
|
30
30
|
store: e,
|
|
31
31
|
bundleSignal: s,
|
|
32
32
|
statusSignal: n,
|
|
33
33
|
crossfadeKeySignal: r,
|
|
34
|
-
sendInput:
|
|
34
|
+
sendInput: o
|
|
35
35
|
}) {
|
|
36
|
-
|
|
37
|
-
const c = s.value,
|
|
36
|
+
X();
|
|
37
|
+
const c = s.value, a = n.value, d = r.value;
|
|
38
38
|
if (!c) return null;
|
|
39
|
-
const
|
|
40
|
-
return /* @__PURE__ */
|
|
41
|
-
|
|
39
|
+
const l = t === "broadcast" ? ne : t === "control" ? re : ie;
|
|
40
|
+
return /* @__PURE__ */ f(Y, { mode: "sync", children: /* @__PURE__ */ f(
|
|
41
|
+
K.div,
|
|
42
42
|
{
|
|
43
43
|
initial: { opacity: 0 },
|
|
44
44
|
animate: { opacity: 1 },
|
|
45
45
|
exit: { opacity: 0 },
|
|
46
46
|
transition: { duration: 0.4, ease: "easeInOut" },
|
|
47
47
|
style: { position: "absolute", inset: 0 },
|
|
48
|
-
children: /* @__PURE__ */
|
|
49
|
-
|
|
48
|
+
children: /* @__PURE__ */ f(
|
|
49
|
+
se,
|
|
50
50
|
{
|
|
51
51
|
value: {
|
|
52
52
|
mode: t,
|
|
53
53
|
store: e,
|
|
54
54
|
bundle: c,
|
|
55
|
-
status:
|
|
56
|
-
sendInput:
|
|
55
|
+
status: a,
|
|
56
|
+
sendInput: o
|
|
57
57
|
},
|
|
58
|
-
children: /* @__PURE__ */
|
|
58
|
+
children: /* @__PURE__ */ f(H, { fallback: null, children: /* @__PURE__ */ f(l, {}) })
|
|
59
59
|
}
|
|
60
60
|
)
|
|
61
61
|
},
|
|
62
|
-
|
|
62
|
+
d
|
|
63
63
|
) });
|
|
64
64
|
}
|
|
65
|
-
const
|
|
66
|
-
function
|
|
67
|
-
return
|
|
68
|
-
|
|
65
|
+
const ce = "<anon>", b = /* @__PURE__ */ new Set();
|
|
66
|
+
function ae(t) {
|
|
67
|
+
return b.add(t), () => {
|
|
68
|
+
b.delete(t);
|
|
69
69
|
};
|
|
70
70
|
}
|
|
71
|
-
function
|
|
72
|
-
const n = { nodeId: t ??
|
|
73
|
-
if (
|
|
74
|
-
for (const r of
|
|
71
|
+
function $(t, e, s) {
|
|
72
|
+
const n = { nodeId: t ?? ce, field: e, reason: s };
|
|
73
|
+
if (b.size > 0) {
|
|
74
|
+
for (const r of b)
|
|
75
75
|
try {
|
|
76
76
|
r(n);
|
|
77
77
|
} catch {
|
|
@@ -79,41 +79,41 @@ function P(t, e, s) {
|
|
|
79
79
|
return;
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
|
-
const
|
|
83
|
-
blur:
|
|
84
|
-
brightness:
|
|
82
|
+
const le = 100, ue = 4, he = 64, fe = {
|
|
83
|
+
blur: le,
|
|
84
|
+
brightness: ue
|
|
85
85
|
};
|
|
86
86
|
function O(t, e) {
|
|
87
87
|
if (typeof e != "number" || !Number.isFinite(e) || e < 0 || Object.is(e, -0)) return null;
|
|
88
|
-
const s =
|
|
88
|
+
const s = fe[t];
|
|
89
89
|
return e > s ? s : e;
|
|
90
90
|
}
|
|
91
|
-
const
|
|
92
|
-
function
|
|
93
|
-
if (typeof t != "string" || t.length === 0 || t.length >
|
|
94
|
-
const e =
|
|
91
|
+
const de = /^blur\((\d{1,7}(?:\.\d{1,4})?)px\) brightness\((\d{1,7}(?:\.\d{1,4})?)\)$/, Ke = "blur(0px) brightness(1)";
|
|
92
|
+
function me(t) {
|
|
93
|
+
if (typeof t != "string" || t.length === 0 || t.length > he) return null;
|
|
94
|
+
const e = de.exec(t);
|
|
95
95
|
if (!e) return null;
|
|
96
96
|
const s = O("blur", Number(e[1])), n = O("brightness", Number(e[2]));
|
|
97
97
|
return s === null || n === null ? null : `blur(${s}px) brightness(${n})`;
|
|
98
98
|
}
|
|
99
|
-
function
|
|
100
|
-
|
|
99
|
+
function pe(t, e) {
|
|
100
|
+
$(
|
|
101
101
|
e,
|
|
102
102
|
t,
|
|
103
103
|
"rejected unsafe filter value : outside the R8 caps or not a finite number >= 0"
|
|
104
104
|
);
|
|
105
105
|
}
|
|
106
|
-
const
|
|
106
|
+
const ge = { duration: 0 }, be = {
|
|
107
107
|
linear: "linear",
|
|
108
108
|
"cubic-in": "easeIn",
|
|
109
109
|
"cubic-out": "easeOut",
|
|
110
110
|
"cubic-in-out": "easeInOut"
|
|
111
111
|
};
|
|
112
112
|
function Je(t) {
|
|
113
|
-
return !t || t.kind === "none" ?
|
|
113
|
+
return !t || t.kind === "none" ? ge : t.kind === "tween" ? {
|
|
114
114
|
type: "tween",
|
|
115
115
|
duration: (t.duration_ms ?? 0) / 1e3,
|
|
116
|
-
ease: t.ease ?
|
|
116
|
+
ease: t.ease ? be[t.ease] ?? "easeOut" : "easeOut"
|
|
117
117
|
} : t.kind === "spring" ? {
|
|
118
118
|
type: "spring",
|
|
119
119
|
...t.stiffness !== void 0 ? { stiffness: t.stiffness } : {},
|
|
@@ -125,7 +125,7 @@ function Je(t) {
|
|
|
125
125
|
ease: "easeInOut"
|
|
126
126
|
};
|
|
127
127
|
}
|
|
128
|
-
const
|
|
128
|
+
const ve = {
|
|
129
129
|
opacity: 1,
|
|
130
130
|
scale: 1,
|
|
131
131
|
scaleX: 1,
|
|
@@ -137,7 +137,7 @@ const be = {
|
|
|
137
137
|
// framer interpolates between structurally-identical filter lists
|
|
138
138
|
// (the compiler emits the same two-function form, clamped per R8).
|
|
139
139
|
filter: "blur(0px) brightness(1)"
|
|
140
|
-
},
|
|
140
|
+
}, ke = {
|
|
141
141
|
kind: "tween",
|
|
142
142
|
duration_ms: 400,
|
|
143
143
|
ease: "cubic-out"
|
|
@@ -152,7 +152,7 @@ function Qe(t, e, s) {
|
|
|
152
152
|
const r = t(n);
|
|
153
153
|
if (r !== void 0) return r;
|
|
154
154
|
}
|
|
155
|
-
return
|
|
155
|
+
return ke;
|
|
156
156
|
}
|
|
157
157
|
}
|
|
158
158
|
function Ze(t, e, s) {
|
|
@@ -160,21 +160,21 @@ function Ze(t, e, s) {
|
|
|
160
160
|
return { initial: t, animate: t };
|
|
161
161
|
let n = e;
|
|
162
162
|
if (e.filter !== void 0) {
|
|
163
|
-
const
|
|
164
|
-
n = { ...e },
|
|
163
|
+
const o = me(e.filter);
|
|
164
|
+
n = { ...e }, o === null ? (pe("animate_initial.filter", s), delete n.filter) : n.filter = o;
|
|
165
165
|
}
|
|
166
166
|
const r = { ...t };
|
|
167
|
-
for (const
|
|
168
|
-
|
|
167
|
+
for (const o of Object.keys(n))
|
|
168
|
+
o in r || (r[o] = ve[o] ?? 0);
|
|
169
169
|
return { initial: n, animate: r };
|
|
170
170
|
}
|
|
171
|
-
function
|
|
171
|
+
function ye(t) {
|
|
172
172
|
if (typeof t != "object" || t === null) return;
|
|
173
173
|
const e = t, s = e.kind;
|
|
174
174
|
if (s === "snap")
|
|
175
175
|
return { kind: "none" };
|
|
176
176
|
if (s === "tween") {
|
|
177
|
-
const n = typeof e.duration_ms == "number" ? e.duration_ms : 0, r =
|
|
177
|
+
const n = typeof e.duration_ms == "number" ? e.duration_ms : 0, r = Te[e.easing] ?? "cubic-out";
|
|
178
178
|
return { kind: "tween", duration_ms: n, ease: r };
|
|
179
179
|
}
|
|
180
180
|
if (s === "spring") {
|
|
@@ -182,33 +182,33 @@ function ke(t) {
|
|
|
182
182
|
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;
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
|
-
const
|
|
185
|
+
const Te = {
|
|
186
186
|
linear: "linear",
|
|
187
187
|
"ease-in": "cubic-in",
|
|
188
188
|
"ease-out": "cubic-out",
|
|
189
189
|
"ease-in-out": "cubic-in-out"
|
|
190
190
|
};
|
|
191
|
-
function
|
|
191
|
+
function we(t, e) {
|
|
192
192
|
y(() => {
|
|
193
193
|
for (const s of e.patches) {
|
|
194
|
-
const n =
|
|
194
|
+
const n = ye(s.transition);
|
|
195
195
|
n !== void 0 ? t.setWithTransition(s.path, s.value, n) : t.set(s.path, s.value);
|
|
196
196
|
}
|
|
197
197
|
});
|
|
198
198
|
}
|
|
199
|
-
function
|
|
199
|
+
function Se(t, e) {
|
|
200
200
|
t.reset(e.state);
|
|
201
201
|
}
|
|
202
|
-
class
|
|
202
|
+
class _e {
|
|
203
203
|
signals = /* @__PURE__ */ new Map();
|
|
204
204
|
transitions = /* @__PURE__ */ new Map();
|
|
205
205
|
signal(e) {
|
|
206
206
|
let s = this.signals.get(e);
|
|
207
|
-
return s || (s =
|
|
207
|
+
return s || (s = p(void 0), this.signals.set(e, s)), s;
|
|
208
208
|
}
|
|
209
209
|
transitionSignal(e) {
|
|
210
210
|
let s = this.transitions.get(e);
|
|
211
|
-
return s || (s =
|
|
211
|
+
return s || (s = p(void 0), this.transitions.set(e, s)), s;
|
|
212
212
|
}
|
|
213
213
|
set(e, s) {
|
|
214
214
|
const n = this.signal(e);
|
|
@@ -218,8 +218,8 @@ class Te {
|
|
|
218
218
|
y(() => {
|
|
219
219
|
const r = this.transitionSignal(e);
|
|
220
220
|
r.peek() !== n && (r.value = n);
|
|
221
|
-
const
|
|
222
|
-
k(
|
|
221
|
+
const o = this.signal(e);
|
|
222
|
+
k(o.peek(), s) || (o.value = s);
|
|
223
223
|
});
|
|
224
224
|
}
|
|
225
225
|
reset(e) {
|
|
@@ -227,8 +227,8 @@ class Te {
|
|
|
227
227
|
const s = /* @__PURE__ */ new Set();
|
|
228
228
|
for (const [n, r] of Object.entries(e)) {
|
|
229
229
|
s.add(n);
|
|
230
|
-
const
|
|
231
|
-
k(
|
|
230
|
+
const o = this.signal(n);
|
|
231
|
+
k(o.peek(), r) || (o.value = r);
|
|
232
232
|
const c = this.transitions.get(n);
|
|
233
233
|
c && c.peek() !== void 0 && (c.value = void 0);
|
|
234
234
|
}
|
|
@@ -246,8 +246,8 @@ class Te {
|
|
|
246
246
|
return e;
|
|
247
247
|
}
|
|
248
248
|
}
|
|
249
|
-
function
|
|
250
|
-
return new
|
|
249
|
+
function Ee() {
|
|
250
|
+
return new _e();
|
|
251
251
|
}
|
|
252
252
|
function k(t, e) {
|
|
253
253
|
if (t === e) return !0;
|
|
@@ -258,20 +258,20 @@ function k(t, e) {
|
|
|
258
258
|
if (t[c] !== e[c]) return !1;
|
|
259
259
|
return !0;
|
|
260
260
|
}
|
|
261
|
-
const s = t, n = e, r = Object.keys(s),
|
|
262
|
-
if (r.length !==
|
|
261
|
+
const s = t, n = e, r = Object.keys(s), o = Object.keys(n);
|
|
262
|
+
if (r.length !== o.length) return !1;
|
|
263
263
|
for (const c of r)
|
|
264
264
|
if (s[c] !== n[c]) return !1;
|
|
265
265
|
return !0;
|
|
266
266
|
}
|
|
267
|
-
const
|
|
267
|
+
const Ie = /* @__PURE__ */ new Set([
|
|
268
268
|
"x-lumencast.color-srgb-1.0"
|
|
269
|
-
]),
|
|
270
|
-
function
|
|
269
|
+
]), Re = /^x-[a-z0-9-]+(?:\.[a-z0-9-]+)*$/, Ae = /^(?:0|[1-9][0-9]*)$/, N = ".authoring";
|
|
270
|
+
function Oe(t) {
|
|
271
271
|
const e = t.indexOf("/");
|
|
272
272
|
if (e < 0) return !1;
|
|
273
273
|
const s = t.slice(0, e), n = t.slice(e + 1);
|
|
274
|
-
return !
|
|
274
|
+
return !Ae.test(n) || !s.endsWith(N) ? !1 : Re.test(s.slice(0, -N.length));
|
|
275
275
|
}
|
|
276
276
|
class L extends Error {
|
|
277
277
|
code = "BUNDLE_INCOMPATIBLE";
|
|
@@ -284,24 +284,34 @@ class L extends Error {
|
|
|
284
284
|
), this.name = "BundleIncompatibleError", this.unsupportedProfiles = e;
|
|
285
285
|
}
|
|
286
286
|
}
|
|
287
|
-
function U(t, e =
|
|
287
|
+
function U(t, e = Ie) {
|
|
288
288
|
const s = t.profiles;
|
|
289
289
|
if (!s) return;
|
|
290
290
|
if (!Array.isArray(s))
|
|
291
291
|
throw new L(["<malformed: profiles is not an array>"]);
|
|
292
292
|
if (s.length === 0) return;
|
|
293
|
-
const n = s.filter((r) => typeof r != "string" || !
|
|
293
|
+
const n = s.filter((r) => typeof r != "string" || !Oe(r) && !e.has(r)).map((r) => typeof r == "string" ? r : "<malformed: non-string profile entry>");
|
|
294
294
|
if (n.length > 0)
|
|
295
295
|
throw new L(n);
|
|
296
296
|
}
|
|
297
|
-
class
|
|
297
|
+
class Ne {
|
|
298
298
|
cache = /* @__PURE__ */ new Map();
|
|
299
299
|
baseUrl;
|
|
300
300
|
pathPrefix;
|
|
301
301
|
resolveUrl;
|
|
302
|
+
getAuthToken;
|
|
302
303
|
fetchImpl;
|
|
303
304
|
constructor(e) {
|
|
304
|
-
this.baseUrl = e.baseUrl.replace(/\/$/, ""), this.pathPrefix = (e.pathPrefix ?? "/lsdp/v1/scenes").replace(/\/$/, ""), this.resolveUrl = e.resolveUrl, this.fetchImpl = e.fetchImpl ?? globalThis.fetch.bind(globalThis);
|
|
305
|
+
this.baseUrl = e.baseUrl.replace(/\/$/, ""), this.pathPrefix = (e.pathPrefix ?? "/lsdp/v1/scenes").replace(/\/$/, ""), this.resolveUrl = e.resolveUrl, this.getAuthToken = e.getAuthToken, this.fetchImpl = e.fetchImpl ?? globalThis.fetch.bind(globalThis);
|
|
306
|
+
}
|
|
307
|
+
/** Build the request init carrying the bearer token, if any. Returns
|
|
308
|
+
* `undefined` when no token is available — the fetch stays header-less,
|
|
309
|
+
* preserving v0.5.0 behaviour. */
|
|
310
|
+
async buildInit() {
|
|
311
|
+
if (!this.getAuthToken) return;
|
|
312
|
+
const e = await this.getAuthToken();
|
|
313
|
+
if (e)
|
|
314
|
+
return { headers: { Authorization: `Bearer ${e}` } };
|
|
305
315
|
}
|
|
306
316
|
buildUrl(e, s) {
|
|
307
317
|
return this.resolveUrl ? this.resolveUrl(e, s) : `${this.baseUrl}${this.pathPrefix}/${encodeURIComponent(e)}/bundle?v=${encodeURIComponent(s)}`;
|
|
@@ -312,27 +322,27 @@ class Oe {
|
|
|
312
322
|
async get(e, s) {
|
|
313
323
|
const n = this.cache.get(s);
|
|
314
324
|
if (n) return n;
|
|
315
|
-
const r = this.buildUrl(e, s),
|
|
316
|
-
if (!
|
|
317
|
-
throw new Error(`bundle fetch failed: ${
|
|
318
|
-
const
|
|
319
|
-
if (
|
|
325
|
+
const r = this.buildUrl(e, s), o = await this.buildInit(), c = o ? await this.fetchImpl(r, o) : await this.fetchImpl(r);
|
|
326
|
+
if (!c.ok)
|
|
327
|
+
throw new Error(`bundle fetch failed: ${c.status} ${c.statusText}`);
|
|
328
|
+
const a = await c.json();
|
|
329
|
+
if (a.scene_version !== s)
|
|
320
330
|
throw new Error(
|
|
321
|
-
`bundle scene_version mismatch: expected ${s}, got ${
|
|
331
|
+
`bundle scene_version mismatch: expected ${s}, got ${a.scene_version}`
|
|
322
332
|
);
|
|
323
|
-
return U(
|
|
333
|
+
return U(a), this.cache.set(s, a), a;
|
|
324
334
|
}
|
|
325
335
|
}
|
|
326
|
-
function
|
|
327
|
-
return new
|
|
336
|
+
function Le(t) {
|
|
337
|
+
return new Ne(t);
|
|
328
338
|
}
|
|
329
|
-
const
|
|
339
|
+
const g = {
|
|
330
340
|
initial: 200,
|
|
331
341
|
max: 5e3,
|
|
332
342
|
factor: 2,
|
|
333
343
|
jitter: 0.2
|
|
334
344
|
};
|
|
335
|
-
class
|
|
345
|
+
class Ue {
|
|
336
346
|
constructor(e, s) {
|
|
337
347
|
this.opts = e, this.random = s;
|
|
338
348
|
}
|
|
@@ -356,20 +366,20 @@ class Le {
|
|
|
356
366
|
this._attempt = 0;
|
|
357
367
|
}
|
|
358
368
|
}
|
|
359
|
-
function
|
|
369
|
+
function xe(t = {}) {
|
|
360
370
|
const e = {
|
|
361
|
-
initial: t.initial ??
|
|
362
|
-
max: t.max ??
|
|
363
|
-
factor: t.factor ??
|
|
364
|
-
jitter: t.jitter ??
|
|
371
|
+
initial: t.initial ?? g.initial,
|
|
372
|
+
max: t.max ?? g.max,
|
|
373
|
+
factor: t.factor ?? g.factor,
|
|
374
|
+
jitter: t.jitter ?? g.jitter
|
|
365
375
|
};
|
|
366
376
|
if (e.initial <= 0) throw new RangeError("initial must be > 0");
|
|
367
377
|
if (e.max < e.initial) throw new RangeError("max must be >= initial");
|
|
368
378
|
if (e.factor < 1) throw new RangeError("factor must be >= 1");
|
|
369
379
|
if (e.jitter < 0 || e.jitter > 1) throw new RangeError("jitter must be within [0, 1]");
|
|
370
|
-
return new
|
|
380
|
+
return new Ue(e, t.random ?? Math.random);
|
|
371
381
|
}
|
|
372
|
-
class
|
|
382
|
+
class h extends Error {
|
|
373
383
|
recoverable;
|
|
374
384
|
code;
|
|
375
385
|
cause;
|
|
@@ -377,14 +387,14 @@ class u extends Error {
|
|
|
377
387
|
super(e), this.name = "TransportError", this.recoverable = s, this.code = n, this.cause = r;
|
|
378
388
|
}
|
|
379
389
|
}
|
|
380
|
-
class
|
|
390
|
+
class Me {
|
|
381
391
|
status = "disconnected";
|
|
382
392
|
socket = null;
|
|
383
393
|
token;
|
|
384
394
|
url;
|
|
385
395
|
WebSocketCtor;
|
|
386
396
|
schedule;
|
|
387
|
-
seq = new
|
|
397
|
+
seq = new J();
|
|
388
398
|
opts;
|
|
389
399
|
scheduler;
|
|
390
400
|
reconnectTimer = null;
|
|
@@ -396,7 +406,7 @@ class xe {
|
|
|
396
406
|
throw new TypeError(
|
|
397
407
|
"Lumencast WsClient: no WebSocket implementation found in this environment"
|
|
398
408
|
);
|
|
399
|
-
this.WebSocketCtor = s, this.schedule =
|
|
409
|
+
this.WebSocketCtor = s, this.schedule = xe(e.reconnect), this.scheduler = e.scheduler ?? {
|
|
400
410
|
setTimeout: globalThis.setTimeout.bind(globalThis),
|
|
401
411
|
clearTimeout: globalThis.clearTimeout.bind(globalThis)
|
|
402
412
|
};
|
|
@@ -405,9 +415,16 @@ class xe {
|
|
|
405
415
|
start() {
|
|
406
416
|
this.active && (this.socket || this.status === "connecting" || this.openSocket());
|
|
407
417
|
}
|
|
418
|
+
/** Resolve the current session token (the one used for the WS
|
|
419
|
+
* subscription). Mirrors `setToken` swaps. Used by the bundle fetcher to
|
|
420
|
+
* authenticate the render-bundle GET with the same credential. A
|
|
421
|
+
* `LumencastTokenProvider` is awaited. */
|
|
422
|
+
resolveCurrentToken() {
|
|
423
|
+
return x(this.token);
|
|
424
|
+
}
|
|
408
425
|
/** Send `input` patches to the server. No-op if not connected. */
|
|
409
426
|
sendInput(e) {
|
|
410
|
-
!this.socket || this.socket.readyState !== this.WebSocketCtor.OPEN || e.length !== 0 && this.socket.send(R(
|
|
427
|
+
!this.socket || this.socket.readyState !== this.WebSocketCtor.OPEN || e.length !== 0 && this.socket.send(R(Q(e)));
|
|
411
428
|
}
|
|
412
429
|
/** Replace the auth token. Closes and reopens with the new token. */
|
|
413
430
|
setToken(e) {
|
|
@@ -423,10 +440,10 @@ class xe {
|
|
|
423
440
|
this.setStatus("connecting");
|
|
424
441
|
let e;
|
|
425
442
|
try {
|
|
426
|
-
e = await
|
|
443
|
+
e = await x(this.token);
|
|
427
444
|
} catch (n) {
|
|
428
445
|
this.opts.onTransportError?.(
|
|
429
|
-
new
|
|
446
|
+
new h(
|
|
430
447
|
`failed to resolve token: ${n.message}`,
|
|
431
448
|
!0,
|
|
432
449
|
"AUTH_DENIED",
|
|
@@ -438,10 +455,10 @@ class xe {
|
|
|
438
455
|
if (!this.active) return;
|
|
439
456
|
let s;
|
|
440
457
|
try {
|
|
441
|
-
s = new this.WebSocketCtor(this.url, [...
|
|
458
|
+
s = new this.WebSocketCtor(this.url, [...Z]);
|
|
442
459
|
} catch (n) {
|
|
443
460
|
this.opts.onTransportError?.(
|
|
444
|
-
new
|
|
461
|
+
new h(
|
|
445
462
|
`failed to open WebSocket: ${n.message}`,
|
|
446
463
|
!0,
|
|
447
464
|
"INTERNAL",
|
|
@@ -454,25 +471,25 @@ class xe {
|
|
|
454
471
|
}
|
|
455
472
|
handleOpen(e) {
|
|
456
473
|
if (!this.socket) return;
|
|
457
|
-
const n = this.socket.protocol ===
|
|
474
|
+
const n = this.socket.protocol === V && this.seq.last > 0, r = n ? this.seq.last : void 0;
|
|
458
475
|
n || this.seq.reset();
|
|
459
|
-
const
|
|
476
|
+
const o = ee({
|
|
460
477
|
token: e,
|
|
461
478
|
...this.opts.scene !== void 0 ? { scene: this.opts.scene } : {},
|
|
462
479
|
...this.opts.session !== void 0 ? { session: this.opts.session } : {},
|
|
463
480
|
...r !== void 0 ? { since_sequence: r } : {}
|
|
464
481
|
});
|
|
465
|
-
this.socket.send(R(
|
|
482
|
+
this.socket.send(R(o));
|
|
466
483
|
}
|
|
467
484
|
handleMessage(e) {
|
|
468
485
|
const s = typeof e.data == "string" ? e.data : "";
|
|
469
486
|
if (!s) return;
|
|
470
487
|
let n;
|
|
471
488
|
try {
|
|
472
|
-
n =
|
|
489
|
+
n = te(s);
|
|
473
490
|
} catch (r) {
|
|
474
|
-
const
|
|
475
|
-
this.opts.onTransportError?.(new
|
|
491
|
+
const o = (r instanceof A, r.message), c = r instanceof A ? r.code : "INTERNAL";
|
|
492
|
+
this.opts.onTransportError?.(new h(`codec: ${o}`, !0, c, r)), this.closeSocket(), this.scheduleReconnect();
|
|
476
493
|
return;
|
|
477
494
|
}
|
|
478
495
|
if (n !== null)
|
|
@@ -480,7 +497,7 @@ class xe {
|
|
|
480
497
|
case "snapshot": {
|
|
481
498
|
if (n.seq < 1) {
|
|
482
499
|
this.opts.onTransportError?.(
|
|
483
|
-
new
|
|
500
|
+
new h(`snapshot seq must be >= 1, got ${n.seq}`, !0, "VERSION_GAP")
|
|
484
501
|
), this.closeSocket(), this.scheduleReconnect();
|
|
485
502
|
return;
|
|
486
503
|
}
|
|
@@ -491,7 +508,7 @@ class xe {
|
|
|
491
508
|
const r = this.seq.observe(n.seq);
|
|
492
509
|
if (r.kind === "gap") {
|
|
493
510
|
this.opts.onTransportError?.(
|
|
494
|
-
new
|
|
511
|
+
new h(
|
|
495
512
|
`sequence gap: expected ${this.seq.last + 1}, got ${n.seq}`,
|
|
496
513
|
!0,
|
|
497
514
|
"VERSION_GAP"
|
|
@@ -524,7 +541,7 @@ class xe {
|
|
|
524
541
|
}
|
|
525
542
|
if (e.code === 4401 || e.code === 4403 || e.code === 1008) {
|
|
526
543
|
this.opts.onTransportError?.(
|
|
527
|
-
new
|
|
544
|
+
new h(`server closed: ${e.code} ${e.reason}`, !1, "AUTH_DENIED")
|
|
528
545
|
), this.close();
|
|
529
546
|
return;
|
|
530
547
|
}
|
|
@@ -554,7 +571,7 @@ class xe {
|
|
|
554
571
|
this.status !== e && (this.status = e, this.opts.onStatus?.(e));
|
|
555
572
|
}
|
|
556
573
|
}
|
|
557
|
-
async function
|
|
574
|
+
async function x(t) {
|
|
558
575
|
return typeof t == "string" ? t : await t.fetch();
|
|
559
576
|
}
|
|
560
577
|
function Pe(t) {
|
|
@@ -571,94 +588,95 @@ function Pe(t) {
|
|
|
571
588
|
}
|
|
572
589
|
function Ve(t) {
|
|
573
590
|
Pe(t), t.onStatus?.("disconnected");
|
|
574
|
-
const e =
|
|
591
|
+
const e = Ee(), s = je(t.serverUrl), n = Le({
|
|
575
592
|
baseUrl: s,
|
|
576
|
-
...t.resolveBundleUrl !== void 0 ? { resolveUrl: t.resolveBundleUrl } : {}
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
593
|
+
...t.resolveBundleUrl !== void 0 ? { resolveUrl: t.resolveBundleUrl } : {},
|
|
594
|
+
getAuthToken: () => m.resolveCurrentToken()
|
|
595
|
+
}), r = p(null), o = p("disconnected"), c = p("__initial__"), a = (i) => {
|
|
596
|
+
o.value = i, t.onStatus?.(i);
|
|
597
|
+
}, d = (i) => {
|
|
598
|
+
t.onError?.(i);
|
|
581
599
|
};
|
|
582
|
-
let
|
|
583
|
-
const
|
|
600
|
+
let l = !0;
|
|
601
|
+
const j = t.onDiagnostic ? ae(t.onDiagnostic) : void 0, m = new Me({
|
|
584
602
|
url: t.serverUrl,
|
|
585
603
|
token: t.token,
|
|
586
604
|
...t.scene !== void 0 ? { scene: t.scene } : {},
|
|
587
605
|
...t.testSession !== void 0 ? { session: t.testSession } : {},
|
|
588
|
-
onStatus:
|
|
589
|
-
onSnapshot: (
|
|
590
|
-
|
|
606
|
+
onStatus: a,
|
|
607
|
+
onSnapshot: (i) => {
|
|
608
|
+
l && (C(
|
|
591
609
|
n,
|
|
592
610
|
r,
|
|
593
611
|
c,
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
() =>
|
|
597
|
-
|
|
612
|
+
i.scene_id,
|
|
613
|
+
i.scene_version,
|
|
614
|
+
() => Se(e, i),
|
|
615
|
+
d
|
|
598
616
|
), t.onMetric?.({
|
|
599
617
|
name: "snapshot_received",
|
|
600
|
-
scene_id:
|
|
601
|
-
path_count: Object.keys(
|
|
618
|
+
scene_id: i.scene_id,
|
|
619
|
+
path_count: Object.keys(i.state).length
|
|
602
620
|
}));
|
|
603
621
|
},
|
|
604
|
-
onDelta: (
|
|
605
|
-
if (!
|
|
622
|
+
onDelta: (i) => {
|
|
623
|
+
if (!l) return;
|
|
606
624
|
const v = performance.now();
|
|
607
|
-
|
|
625
|
+
we(e, i), t.onMetric?.({
|
|
608
626
|
name: "delta_applied",
|
|
609
627
|
duration_ms: performance.now() - v
|
|
610
|
-
}), t.onMetric?.({ name: "delta_received", count: 1, path_count:
|
|
628
|
+
}), t.onMetric?.({ name: "delta_received", count: 1, path_count: i.patches.length });
|
|
611
629
|
},
|
|
612
|
-
onSceneChanged: (
|
|
613
|
-
|
|
630
|
+
onSceneChanged: (i) => {
|
|
631
|
+
l && t.onMetric?.({
|
|
614
632
|
name: "scene_changed",
|
|
615
633
|
from: r.value?.scene_version ?? null,
|
|
616
|
-
to:
|
|
634
|
+
to: i.scene_version
|
|
617
635
|
});
|
|
618
636
|
},
|
|
619
|
-
onServerError: (
|
|
620
|
-
|
|
621
|
-
code:
|
|
622
|
-
message:
|
|
623
|
-
recoverable:
|
|
637
|
+
onServerError: (i) => {
|
|
638
|
+
d({
|
|
639
|
+
code: i.code,
|
|
640
|
+
message: i.message,
|
|
641
|
+
recoverable: i.recoverable
|
|
624
642
|
});
|
|
625
643
|
},
|
|
626
|
-
onTransportError: (
|
|
627
|
-
|
|
644
|
+
onTransportError: (i) => {
|
|
645
|
+
d($e(i));
|
|
628
646
|
}
|
|
629
647
|
});
|
|
630
648
|
m.start();
|
|
631
|
-
const w =
|
|
649
|
+
const w = B(t.target);
|
|
632
650
|
return w.render(
|
|
633
|
-
|
|
651
|
+
G(oe, {
|
|
634
652
|
mode: t.mode,
|
|
635
653
|
store: e,
|
|
636
654
|
bundleSignal: r,
|
|
637
|
-
statusSignal:
|
|
655
|
+
statusSignal: o,
|
|
638
656
|
crossfadeKeySignal: c,
|
|
639
|
-
sendInput: (
|
|
657
|
+
sendInput: (i) => m.sendInput(i)
|
|
640
658
|
})
|
|
641
659
|
), {
|
|
642
660
|
disconnect() {
|
|
643
|
-
|
|
661
|
+
l && (l = !1, j?.(), m.close(), w.unmount());
|
|
644
662
|
},
|
|
645
|
-
setToken(
|
|
646
|
-
|
|
663
|
+
setToken(i) {
|
|
664
|
+
l && m.setToken(i);
|
|
647
665
|
}
|
|
648
666
|
};
|
|
649
|
-
async function
|
|
667
|
+
async function C(i, v, D, S, _, F, q) {
|
|
650
668
|
let E;
|
|
651
669
|
try {
|
|
652
|
-
E = await
|
|
670
|
+
E = await i.get(S, _);
|
|
653
671
|
} catch (I) {
|
|
654
|
-
|
|
672
|
+
q({
|
|
655
673
|
code: "BUNDLE_FETCH_FAILED",
|
|
656
674
|
message: I instanceof Error ? I.message : "render bundle fetch failed",
|
|
657
675
|
recoverable: !0
|
|
658
676
|
});
|
|
659
677
|
return;
|
|
660
678
|
}
|
|
661
|
-
|
|
679
|
+
l && (F(), v.value = E, D.value = `${S}::${_}`);
|
|
662
680
|
}
|
|
663
681
|
}
|
|
664
682
|
function $e(t) {
|
|
@@ -676,14 +694,30 @@ function je(t) {
|
|
|
676
694
|
return "";
|
|
677
695
|
}
|
|
678
696
|
}
|
|
679
|
-
const Ce = [
|
|
680
|
-
|
|
697
|
+
const Ce = [
|
|
698
|
+
"visible",
|
|
699
|
+
"opacity",
|
|
700
|
+
"universal_opacity",
|
|
701
|
+
"rotation",
|
|
702
|
+
"sizing",
|
|
703
|
+
"x",
|
|
704
|
+
"y",
|
|
705
|
+
"width",
|
|
706
|
+
"height",
|
|
707
|
+
// ADR 002 §3.2 (D2 / #D) — `blendMode` is consumed universally by the
|
|
708
|
+
// wrapper (→ CSS `mix-blend-mode`) on every primitive.
|
|
709
|
+
"blendMode",
|
|
710
|
+
// ADR 002 §3.2 (#E) — a typed `mask` is lowered onto EVERY primitive by the
|
|
711
|
+
// compiler and consumed by the Tree (built into a `<mask>` SVG element).
|
|
712
|
+
"mask"
|
|
713
|
+
];
|
|
714
|
+
function u(t) {
|
|
681
715
|
return /* @__PURE__ */ new Set([...Ce, ...t]);
|
|
682
716
|
}
|
|
683
717
|
const De = {
|
|
684
|
-
stack:
|
|
685
|
-
grid:
|
|
686
|
-
frame:
|
|
718
|
+
stack: u(["direction", "gap", "wrap", "crossGap", "align", "justify"]),
|
|
719
|
+
grid: u(["cols", "rows", "gap"]),
|
|
720
|
+
frame: u([
|
|
687
721
|
"x",
|
|
688
722
|
"y",
|
|
689
723
|
"width",
|
|
@@ -694,7 +728,7 @@ const De = {
|
|
|
694
728
|
"backgrounds",
|
|
695
729
|
"clipsContent"
|
|
696
730
|
]),
|
|
697
|
-
text:
|
|
731
|
+
text: u([
|
|
698
732
|
"value",
|
|
699
733
|
"size",
|
|
700
734
|
"font",
|
|
@@ -708,8 +742,8 @@ const De = {
|
|
|
708
742
|
"fontStyle",
|
|
709
743
|
"maxLines"
|
|
710
744
|
]),
|
|
711
|
-
image:
|
|
712
|
-
shape:
|
|
745
|
+
image: u(["src", "alt", "fit", "position", "width", "height"]),
|
|
746
|
+
shape: u([
|
|
713
747
|
"geometry",
|
|
714
748
|
"kind",
|
|
715
749
|
"width",
|
|
@@ -724,8 +758,8 @@ const De = {
|
|
|
724
758
|
"paths",
|
|
725
759
|
"ariaLabel"
|
|
726
760
|
]),
|
|
727
|
-
media:
|
|
728
|
-
instance:
|
|
761
|
+
media: u(["src", "loop", "mute", "autoplay", "fit"]),
|
|
762
|
+
instance: u(["scene_id", "scene_version", "size", "position"]),
|
|
729
763
|
// `repeat` is dispatched specially by the tree ; its only consumed
|
|
730
764
|
// binding is `items`.
|
|
731
765
|
repeat: /* @__PURE__ */ new Set(["items"])
|
|
@@ -734,39 +768,39 @@ function Fe(t, e) {
|
|
|
734
768
|
const s = De[t];
|
|
735
769
|
return !!(s === void 0 || s.has(e) || t === "instance" && (e === "params" || e.startsWith("params.")));
|
|
736
770
|
}
|
|
737
|
-
const
|
|
771
|
+
const M = /* @__PURE__ */ new WeakSet();
|
|
738
772
|
function et(t) {
|
|
739
|
-
if (
|
|
740
|
-
|
|
773
|
+
if (M.has(t)) return;
|
|
774
|
+
M.add(t);
|
|
741
775
|
const e = /* @__PURE__ */ new Set([
|
|
742
776
|
...Object.keys(t.props ?? {}),
|
|
743
777
|
...Object.keys(t.bindings ?? {})
|
|
744
778
|
]);
|
|
745
779
|
for (const s of e)
|
|
746
|
-
Fe(t.kind, s) ||
|
|
780
|
+
Fe(t.kind, s) || $(
|
|
747
781
|
t.id,
|
|
748
782
|
`${t.kind}.${s}`,
|
|
749
783
|
"is not consumed by this primitive's renderer ; the prop is ignored (anti-silent-drop, ADR 001 §3.4)"
|
|
750
784
|
);
|
|
751
785
|
}
|
|
752
786
|
export {
|
|
753
|
-
|
|
787
|
+
ce as A,
|
|
754
788
|
L as B,
|
|
755
789
|
Ke as F,
|
|
756
790
|
De as P,
|
|
757
|
-
|
|
791
|
+
Ie as S,
|
|
758
792
|
et as a,
|
|
759
|
-
|
|
793
|
+
ae as b,
|
|
760
794
|
O as c,
|
|
761
795
|
Ve as d,
|
|
762
|
-
|
|
763
|
-
|
|
796
|
+
$ as e,
|
|
797
|
+
Oe as i,
|
|
764
798
|
Ze as m,
|
|
765
799
|
Qe as r,
|
|
766
|
-
|
|
800
|
+
me as s,
|
|
767
801
|
Je as t,
|
|
768
802
|
Ye as u,
|
|
769
803
|
U as v,
|
|
770
|
-
|
|
804
|
+
pe as w
|
|
771
805
|
};
|
|
772
|
-
//# sourceMappingURL=index-
|
|
806
|
+
//# sourceMappingURL=index-C6viWFcT.js.map
|