@vouchfor/embeds 1.3.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. package/dist/es/embeds.js +1138 -11
  2. package/dist/es/embeds.js.map +1 -1
  3. package/dist/es/src/components/DialogEmbed/DialogOverlay.d.ts +2 -1
  4. package/dist/es/src/components/DialogEmbed/DialogPortal.d.ts +2 -1
  5. package/dist/es/src/components/DialogEmbed/index.d.ts +3 -1
  6. package/dist/es/src/components/PlayerEmbed/controllers/tracking/utils.d.ts +1 -1
  7. package/dist/es/src/components/PlayerEmbed/index.d.ts +3 -2
  8. package/dist/es/src/components/PlayerEmbed/tests/data.d.ts +1 -1
  9. package/dist/iife/dialog-embed/embed.iife.js +363 -334
  10. package/dist/iife/dialog-embed/embed.iife.js.map +1 -1
  11. package/dist/iife/embeds.iife.js +362 -333
  12. package/dist/iife/embeds.iife.js.map +1 -1
  13. package/dist/iife/player-embed/embed.iife.js +346 -317
  14. package/dist/iife/player-embed/embed.iife.js.map +1 -1
  15. package/package.json +34 -30
  16. package/src/components/PlayerEmbed/controllers/tracking/utils.ts +1 -1
  17. package/src/components/PlayerEmbed/tests/data.ts +1 -1
  18. package/dist/es/browser-1b4c09f1.js +0 -733
  19. package/dist/es/browser-1b4c09f1.js.map +0 -1
  20. package/dist/es/index-37e10211.js +0 -4599
  21. package/dist/es/index-37e10211.js.map +0 -1
  22. package/dist/iife/dialog-embed/browser-aef6773c.js +0 -433
  23. package/dist/iife/dialog-embed/browser-aef6773c.js.map +0 -1
  24. package/dist/iife/dialog-embed/embed.js +0 -5
  25. package/dist/iife/dialog-embed/embed.js.map +0 -1
  26. package/dist/iife/dialog-embed/index-98ee90b7.js +0 -27151
  27. package/dist/iife/dialog-embed/index-98ee90b7.js.map +0 -1
  28. package/dist/iife/dialog-embed/src/components/DialogEmbed/DialogOverlay.d.ts +0 -19
  29. package/dist/iife/dialog-embed/src/components/DialogEmbed/DialogPortal.d.ts +0 -35
  30. package/dist/iife/dialog-embed/src/components/DialogEmbed/index.d.ts +0 -36
  31. package/dist/iife/dialog-embed/src/components/PlayerEmbed/controllers/event-forwarder.d.ts +0 -15
  32. package/dist/iife/dialog-embed/src/components/PlayerEmbed/controllers/fetcher.d.ts +0 -14
  33. package/dist/iife/dialog-embed/src/components/PlayerEmbed/controllers/tracking/index.d.ts +0 -36
  34. package/dist/iife/dialog-embed/src/components/PlayerEmbed/controllers/tracking/utils.d.ts +0 -17
  35. package/dist/iife/dialog-embed/src/components/PlayerEmbed/index.d.ts +0 -73
  36. package/dist/iife/dialog-embed/src/components/PlayerEmbed/tests/data.d.ts +0 -3
  37. package/dist/iife/dialog-embed/src/index.d.ts +0 -2
  38. package/dist/iife/dialog-embed/src/utils/env.d.ts +0 -12
  39. package/dist/iife/dialog-embed/src/utils/events.d.ts +0 -2
  40. package/dist/iife/player-embed/browser-3fc50faa.js +0 -433
  41. package/dist/iife/player-embed/browser-3fc50faa.js.map +0 -1
  42. package/dist/iife/player-embed/embed.js +0 -5
  43. package/dist/iife/player-embed/embed.js.map +0 -1
  44. package/dist/iife/player-embed/index-ec0750d4.js +0 -26706
  45. package/dist/iife/player-embed/index-ec0750d4.js.map +0 -1
  46. package/dist/iife/player-embed/src/components/DialogEmbed/DialogOverlay.d.ts +0 -19
  47. package/dist/iife/player-embed/src/components/DialogEmbed/DialogPortal.d.ts +0 -35
  48. package/dist/iife/player-embed/src/components/DialogEmbed/index.d.ts +0 -36
  49. package/dist/iife/player-embed/src/components/PlayerEmbed/controllers/event-forwarder.d.ts +0 -15
  50. package/dist/iife/player-embed/src/components/PlayerEmbed/controllers/fetcher.d.ts +0 -14
  51. package/dist/iife/player-embed/src/components/PlayerEmbed/controllers/tracking/index.d.ts +0 -36
  52. package/dist/iife/player-embed/src/components/PlayerEmbed/controllers/tracking/utils.d.ts +0 -17
  53. package/dist/iife/player-embed/src/components/PlayerEmbed/index.d.ts +0 -73
  54. package/dist/iife/player-embed/src/components/PlayerEmbed/tests/data.d.ts +0 -3
  55. package/dist/iife/player-embed/src/index.d.ts +0 -2
  56. package/dist/iife/player-embed/src/utils/env.d.ts +0 -12
  57. package/dist/iife/player-embed/src/utils/events.d.ts +0 -2
@@ -1,4599 +0,0 @@
1
- import { css, LitElement, html } from "lit";
2
- import { property, state, customElement } from "lit/decorators.js";
3
- import { ifDefined } from "lit/directives/if-defined.js";
4
- import { createRef, ref } from "lit/directives/ref.js";
5
- import { Task } from "@lit/task";
6
- import { v4 } from "uuid";
7
- import "@vouchfor/media-player";
8
- import { styleMap } from "lit/directives/style-map.js";
9
- import { classMap } from "lit/directives/class-map.js";
10
- import "@a11y/focus-trap";
11
- function forwardEvent(type2, fromElement, toElement) {
12
- function forwarder(event) {
13
- toElement.dispatchEvent(new CustomEvent(event.type, event));
14
- }
15
- fromElement.addEventListener(type2, forwarder);
16
- return () => {
17
- fromElement.removeEventListener(type2, forwarder);
18
- };
19
- }
20
- class EventForwardController {
21
- constructor(host, events) {
22
- this._events = [];
23
- this._cleanup = [];
24
- this._forwardElementRef = createRef();
25
- this.host = host;
26
- this._events = events;
27
- host.addController(this);
28
- }
29
- register() {
30
- return ref(this._forwardElementRef);
31
- }
32
- hostConnected() {
33
- requestAnimationFrame(() => {
34
- this._events.forEach((event) => {
35
- if (this._forwardElementRef.value) {
36
- this._cleanup.push(forwardEvent(event, this._forwardElementRef.value, this.host));
37
- }
38
- });
39
- });
40
- }
41
- hostDisconnected() {
42
- this._cleanup.forEach((fn) => {
43
- fn();
44
- });
45
- this._cleanup = [];
46
- }
47
- }
48
- const devVideoUrl = "https://d2rxhdlm2q91uk.cloudfront.net";
49
- const stagingVideoUrl = "https://d1ix11aj5kfygl.cloudfront.net";
50
- const prodVideoUrl = "https://d157jlwnudd93d.cloudfront.net";
51
- const devPublicApiUrl = "https://bshyfw4h5a.execute-api.ap-southeast-2.amazonaws.com/dev";
52
- const stagingPublicApiUrl = "https://gyzw7rpbq3.execute-api.ap-southeast-2.amazonaws.com/staging";
53
- const prodPublicApiUrl = "https://vfcjuim1l3.execute-api.ap-southeast-2.amazonaws.com/prod";
54
- const localEmbedApiUrl = "http://localhost:6060/v2";
55
- const devEmbedApiUrl = "https://embed-dev.vouchfor.com/v2";
56
- const stagingEmbedApiUrl = "https://embed-staging.vouchfor.com/v2";
57
- const prodEmbedApiUrl = "https://embed.vouchfor.com/v2";
58
- function getEnvUrls(env) {
59
- if (!["local", "dev", "staging", "prod"].includes(env)) {
60
- throw new Error(`Unknown environment: ${env}`);
61
- }
62
- if (env === "local") {
63
- return {
64
- videoUrl: devVideoUrl,
65
- publicApiUrl: devPublicApiUrl,
66
- embedApiUrl: localEmbedApiUrl
67
- };
68
- }
69
- if (env === "dev") {
70
- return {
71
- videoUrl: devVideoUrl,
72
- publicApiUrl: devPublicApiUrl,
73
- embedApiUrl: devEmbedApiUrl
74
- };
75
- }
76
- if (env === "staging") {
77
- return {
78
- videoUrl: stagingVideoUrl,
79
- publicApiUrl: stagingPublicApiUrl,
80
- embedApiUrl: stagingEmbedApiUrl
81
- };
82
- }
83
- if (env === "prod") {
84
- return {
85
- videoUrl: prodVideoUrl,
86
- publicApiUrl: prodPublicApiUrl,
87
- embedApiUrl: prodEmbedApiUrl
88
- };
89
- }
90
- }
91
- class FetcherController {
92
- constructor(host) {
93
- this._fetching = false;
94
- this.getVouch = async (env, apiKey, vouchId) => {
95
- var _a;
96
- const { embedApiUrl } = getEnvUrls(env);
97
- const cacheCheck = v4();
98
- const res = await fetch(`${embedApiUrl}/vouches/${vouchId}`, {
99
- method: "GET",
100
- headers: [
101
- ["X-Api-Key", apiKey],
102
- ["X-Cache-Check", cacheCheck]
103
- ]
104
- });
105
- const vouch = await res.json();
106
- this.host.dispatchEvent(new CustomEvent("vouch:loaded", { detail: vouch == null ? void 0 : vouch.id }));
107
- const resCacheCheck = (_a = res == null ? void 0 : res.headers) == null ? void 0 : _a.get("X-Cache-Check");
108
- if (resCacheCheck !== cacheCheck) {
109
- fetch(`${embedApiUrl}/vouches/${vouchId}`, {
110
- method: "GET",
111
- headers: [
112
- ["X-Api-Key", apiKey],
113
- ["Cache-Control", "max-age=0"]
114
- ]
115
- });
116
- }
117
- return vouch;
118
- };
119
- this.getTemplate = async (env, apiKey, templateId) => {
120
- var _a;
121
- const { embedApiUrl } = getEnvUrls(env);
122
- const cacheCheck = v4();
123
- const res = await fetch(`${embedApiUrl}/templates/${templateId}`, {
124
- method: "GET",
125
- headers: [
126
- ["X-Api-Key", apiKey],
127
- ["X-Cache-Check", cacheCheck]
128
- ]
129
- });
130
- const template2 = await res.json();
131
- const resCacheCheck = (_a = res == null ? void 0 : res.headers) == null ? void 0 : _a.get("X-Cache-Check");
132
- if (resCacheCheck !== cacheCheck) {
133
- fetch(`${embedApiUrl}/templates/${templateId}`, {
134
- method: "GET",
135
- headers: [
136
- ["X-Api-Key", apiKey],
137
- ["Cache-Control", "max-age=0"]
138
- ]
139
- });
140
- }
141
- return template2;
142
- };
143
- this.host = host;
144
- new Task(
145
- this.host,
146
- async ([env, apiKey, data, vouchId, templateId]) => {
147
- var _a, _b, _c, _d;
148
- try {
149
- host.vouch = void 0;
150
- host.template = void 0;
151
- if (data) {
152
- let template2;
153
- if (templateId) {
154
- this.fetching = true;
155
- template2 = await this.getTemplate(env, apiKey, templateId);
156
- }
157
- this._vouch = data;
158
- host.template = template2 ?? ((_b = (_a = data == null ? void 0 : data.settings) == null ? void 0 : _a.template) == null ? void 0 : _b.instance);
159
- } else if (vouchId) {
160
- this.fetching = true;
161
- const [vouch, template2] = await Promise.all([
162
- this.getVouch(env, apiKey, vouchId),
163
- templateId ? this.getTemplate(env, apiKey, templateId) : null
164
- ]);
165
- this._vouch = vouch;
166
- host.template = template2 ?? ((_d = (_c = vouch == null ? void 0 : vouch.settings) == null ? void 0 : _c.template) == null ? void 0 : _d.instance);
167
- }
168
- } finally {
169
- this.fetching = false;
170
- }
171
- },
172
- () => [host.env, host.apiKey, host.data, host.vouchId, host.templateId]
173
- );
174
- new Task(
175
- this.host,
176
- ([vouch, questions]) => {
177
- host.vouch = vouch ? {
178
- ...vouch,
179
- questions: {
180
- items: vouch == null ? void 0 : vouch.questions.items.filter((_, index) => !(questions == null ? void 0 : questions.length) || (questions == null ? void 0 : questions.includes(index + 1)))
181
- }
182
- } : void 0;
183
- },
184
- () => [this._vouch, host.questions]
185
- );
186
- }
187
- set fetching(value) {
188
- if (this._fetching !== value) {
189
- this._fetching = value;
190
- this.host.requestUpdate();
191
- }
192
- }
193
- get fetching() {
194
- return this._fetching;
195
- }
196
- }
197
- const copyProperty$1 = (to, from, property2, ignoreNonConfigurable) => {
198
- if (property2 === "length" || property2 === "prototype") {
199
- return;
200
- }
201
- if (property2 === "arguments" || property2 === "caller") {
202
- return;
203
- }
204
- const toDescriptor = Object.getOwnPropertyDescriptor(to, property2);
205
- const fromDescriptor = Object.getOwnPropertyDescriptor(from, property2);
206
- if (!canCopyProperty$1(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {
207
- return;
208
- }
209
- Object.defineProperty(to, property2, fromDescriptor);
210
- };
211
- const canCopyProperty$1 = function(toDescriptor, fromDescriptor) {
212
- return toDescriptor === void 0 || toDescriptor.configurable || toDescriptor.writable === fromDescriptor.writable && toDescriptor.enumerable === fromDescriptor.enumerable && toDescriptor.configurable === fromDescriptor.configurable && (toDescriptor.writable || toDescriptor.value === fromDescriptor.value);
213
- };
214
- const changePrototype$1 = (to, from) => {
215
- const fromPrototype = Object.getPrototypeOf(from);
216
- if (fromPrototype === Object.getPrototypeOf(to)) {
217
- return;
218
- }
219
- Object.setPrototypeOf(to, fromPrototype);
220
- };
221
- const wrappedToString$1 = (withName, fromBody) => `/* Wrapped ${withName}*/
222
- ${fromBody}`;
223
- const toStringDescriptor$1 = Object.getOwnPropertyDescriptor(Function.prototype, "toString");
224
- const toStringName$1 = Object.getOwnPropertyDescriptor(Function.prototype.toString, "name");
225
- const changeToString$1 = (to, from, name2) => {
226
- const withName = name2 === "" ? "" : `with ${name2.trim()}() `;
227
- const newToString = wrappedToString$1.bind(null, withName, from.toString());
228
- Object.defineProperty(newToString, "name", toStringName$1);
229
- Object.defineProperty(to, "toString", { ...toStringDescriptor$1, value: newToString });
230
- };
231
- function mimicFunction$1(to, from, { ignoreNonConfigurable = false } = {}) {
232
- const { name: name2 } = to;
233
- for (const property2 of Reflect.ownKeys(from)) {
234
- copyProperty$1(to, from, property2, ignoreNonConfigurable);
235
- }
236
- changePrototype$1(to, from);
237
- changeToString$1(to, from, name2);
238
- return to;
239
- }
240
- const cacheStore$1 = /* @__PURE__ */ new WeakMap();
241
- const cacheTimerStore = /* @__PURE__ */ new WeakMap();
242
- function memoize(fn, { cacheKey, cache = /* @__PURE__ */ new Map(), maxAge } = {}) {
243
- if (maxAge === 0) {
244
- return fn;
245
- }
246
- if (typeof maxAge === "number") {
247
- const maxSetIntervalValue = 2147483647;
248
- if (maxAge > maxSetIntervalValue) {
249
- throw new TypeError(`The \`maxAge\` option cannot exceed ${maxSetIntervalValue}.`);
250
- }
251
- if (maxAge < 0) {
252
- throw new TypeError("The `maxAge` option should not be a negative number.");
253
- }
254
- }
255
- const memoized = function(...arguments_) {
256
- var _a;
257
- const key = cacheKey ? cacheKey(arguments_) : arguments_[0];
258
- const cacheItem = cache.get(key);
259
- if (cacheItem) {
260
- return cacheItem.data;
261
- }
262
- const result = fn.apply(this, arguments_);
263
- cache.set(key, {
264
- data: result,
265
- maxAge: maxAge ? Date.now() + maxAge : Number.POSITIVE_INFINITY
266
- });
267
- if (typeof maxAge === "number" && maxAge !== Number.POSITIVE_INFINITY) {
268
- const timer = setTimeout(() => {
269
- cache.delete(key);
270
- }, maxAge);
271
- (_a = timer.unref) == null ? void 0 : _a.call(timer);
272
- const timers = cacheTimerStore.get(fn) ?? /* @__PURE__ */ new Set();
273
- timers.add(timer);
274
- cacheTimerStore.set(fn, timers);
275
- }
276
- return result;
277
- };
278
- mimicFunction$1(memoized, fn, {
279
- ignoreNonConfigurable: true
280
- });
281
- cacheStore$1.set(memoized, cache);
282
- return memoized;
283
- }
284
- var invariant = function() {
285
- };
286
- const clamp$1 = (min, max, v) => Math.min(Math.max(v, min), max);
287
- const progress = (from, to, value) => {
288
- const toFromDifference = to - from;
289
- return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;
290
- };
291
- const mix = (from, to, progress2) => -progress2 * from + progress2 * to + from;
292
- const clamp = (min, max) => (v) => Math.max(Math.min(v, max), min);
293
- const sanitize = (v) => v % 1 ? Number(v.toFixed(5)) : v;
294
- const floatRegex = /(-)?([\d]*\.?[\d])+/g;
295
- const colorRegex = /(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))/gi;
296
- const singleColorRegex = /^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))$/i;
297
- function isString(v) {
298
- return typeof v === "string";
299
- }
300
- const number = {
301
- test: (v) => typeof v === "number",
302
- parse: parseFloat,
303
- transform: (v) => v
304
- };
305
- const alpha = Object.assign(Object.assign({}, number), { transform: clamp(0, 1) });
306
- Object.assign(Object.assign({}, number), { default: 1 });
307
- const createUnitType = (unit) => ({
308
- test: (v) => isString(v) && v.endsWith(unit) && v.split(" ").length === 1,
309
- parse: parseFloat,
310
- transform: (v) => `${v}${unit}`
311
- });
312
- const percent = createUnitType("%");
313
- Object.assign(Object.assign({}, percent), { parse: (v) => percent.parse(v) / 100, transform: (v) => percent.transform(v * 100) });
314
- const isColorString = (type2, testProp) => (v) => {
315
- return Boolean(isString(v) && singleColorRegex.test(v) && v.startsWith(type2) || testProp && Object.prototype.hasOwnProperty.call(v, testProp));
316
- };
317
- const splitColor = (aName, bName, cName) => (v) => {
318
- if (!isString(v))
319
- return v;
320
- const [a, b, c, alpha2] = v.match(floatRegex);
321
- return {
322
- [aName]: parseFloat(a),
323
- [bName]: parseFloat(b),
324
- [cName]: parseFloat(c),
325
- alpha: alpha2 !== void 0 ? parseFloat(alpha2) : 1
326
- };
327
- };
328
- const hsla = {
329
- test: isColorString("hsl", "hue"),
330
- parse: splitColor("hue", "saturation", "lightness"),
331
- transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {
332
- return "hsla(" + Math.round(hue) + ", " + percent.transform(sanitize(saturation)) + ", " + percent.transform(sanitize(lightness)) + ", " + sanitize(alpha.transform(alpha$1)) + ")";
333
- }
334
- };
335
- const clampRgbUnit = clamp(0, 255);
336
- const rgbUnit = Object.assign(Object.assign({}, number), { transform: (v) => Math.round(clampRgbUnit(v)) });
337
- const rgba = {
338
- test: isColorString("rgb", "red"),
339
- parse: splitColor("red", "green", "blue"),
340
- transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => "rgba(" + rgbUnit.transform(red) + ", " + rgbUnit.transform(green) + ", " + rgbUnit.transform(blue) + ", " + sanitize(alpha.transform(alpha$1)) + ")"
341
- };
342
- function parseHex(v) {
343
- let r = "";
344
- let g = "";
345
- let b = "";
346
- let a = "";
347
- if (v.length > 5) {
348
- r = v.substr(1, 2);
349
- g = v.substr(3, 2);
350
- b = v.substr(5, 2);
351
- a = v.substr(7, 2);
352
- } else {
353
- r = v.substr(1, 1);
354
- g = v.substr(2, 1);
355
- b = v.substr(3, 1);
356
- a = v.substr(4, 1);
357
- r += r;
358
- g += g;
359
- b += b;
360
- a += a;
361
- }
362
- return {
363
- red: parseInt(r, 16),
364
- green: parseInt(g, 16),
365
- blue: parseInt(b, 16),
366
- alpha: a ? parseInt(a, 16) / 255 : 1
367
- };
368
- }
369
- const hex = {
370
- test: isColorString("#"),
371
- parse: parseHex,
372
- transform: rgba.transform
373
- };
374
- const color = {
375
- test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),
376
- parse: (v) => {
377
- if (rgba.test(v)) {
378
- return rgba.parse(v);
379
- } else if (hsla.test(v)) {
380
- return hsla.parse(v);
381
- } else {
382
- return hex.parse(v);
383
- }
384
- },
385
- transform: (v) => {
386
- return isString(v) ? v : v.hasOwnProperty("red") ? rgba.transform(v) : hsla.transform(v);
387
- }
388
- };
389
- const colorToken = "${c}";
390
- const numberToken = "${n}";
391
- function test(v) {
392
- var _a, _b, _c, _d;
393
- return isNaN(v) && isString(v) && ((_b = (_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) + ((_d = (_c = v.match(colorRegex)) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) > 0;
394
- }
395
- function analyse$1(v) {
396
- if (typeof v === "number")
397
- v = `${v}`;
398
- const values = [];
399
- let numColors = 0;
400
- const colors = v.match(colorRegex);
401
- if (colors) {
402
- numColors = colors.length;
403
- v = v.replace(colorRegex, colorToken);
404
- values.push(...colors.map(color.parse));
405
- }
406
- const numbers = v.match(floatRegex);
407
- if (numbers) {
408
- v = v.replace(floatRegex, numberToken);
409
- values.push(...numbers.map(number.parse));
410
- }
411
- return { values, numColors, tokenised: v };
412
- }
413
- function parse(v) {
414
- return analyse$1(v).values;
415
- }
416
- function createTransformer(v) {
417
- const { values, numColors, tokenised } = analyse$1(v);
418
- const numValues = values.length;
419
- return (v2) => {
420
- let output = tokenised;
421
- for (let i = 0; i < numValues; i++) {
422
- output = output.replace(i < numColors ? colorToken : numberToken, i < numColors ? color.transform(v2[i]) : sanitize(v2[i]));
423
- }
424
- return output;
425
- };
426
- }
427
- const convertNumbersToZero = (v) => typeof v === "number" ? 0 : v;
428
- function getAnimatableNone(v) {
429
- const parsed = parse(v);
430
- const transformer = createTransformer(v);
431
- return transformer(parsed.map(convertNumbersToZero));
432
- }
433
- const complex = { test, parse, createTransformer, getAnimatableNone };
434
- function hueToRgb(p, q, t) {
435
- if (t < 0)
436
- t += 1;
437
- if (t > 1)
438
- t -= 1;
439
- if (t < 1 / 6)
440
- return p + (q - p) * 6 * t;
441
- if (t < 1 / 2)
442
- return q;
443
- if (t < 2 / 3)
444
- return p + (q - p) * (2 / 3 - t) * 6;
445
- return p;
446
- }
447
- function hslaToRgba({ hue, saturation, lightness, alpha: alpha2 }) {
448
- hue /= 360;
449
- saturation /= 100;
450
- lightness /= 100;
451
- let red = 0;
452
- let green = 0;
453
- let blue = 0;
454
- if (!saturation) {
455
- red = green = blue = lightness;
456
- } else {
457
- const q = lightness < 0.5 ? lightness * (1 + saturation) : lightness + saturation - lightness * saturation;
458
- const p = 2 * lightness - q;
459
- red = hueToRgb(p, q, hue + 1 / 3);
460
- green = hueToRgb(p, q, hue);
461
- blue = hueToRgb(p, q, hue - 1 / 3);
462
- }
463
- return {
464
- red: Math.round(red * 255),
465
- green: Math.round(green * 255),
466
- blue: Math.round(blue * 255),
467
- alpha: alpha2
468
- };
469
- }
470
- const mixLinearColor = (from, to, v) => {
471
- const fromExpo = from * from;
472
- const toExpo = to * to;
473
- return Math.sqrt(Math.max(0, v * (toExpo - fromExpo) + fromExpo));
474
- };
475
- const colorTypes = [hex, rgba, hsla];
476
- const getColorType = (v) => colorTypes.find((type2) => type2.test(v));
477
- const mixColor = (from, to) => {
478
- let fromColorType = getColorType(from);
479
- let toColorType = getColorType(to);
480
- let fromColor = fromColorType.parse(from);
481
- let toColor = toColorType.parse(to);
482
- if (fromColorType === hsla) {
483
- fromColor = hslaToRgba(fromColor);
484
- fromColorType = rgba;
485
- }
486
- if (toColorType === hsla) {
487
- toColor = hslaToRgba(toColor);
488
- toColorType = rgba;
489
- }
490
- const blended = Object.assign({}, fromColor);
491
- return (v) => {
492
- for (const key in blended) {
493
- if (key !== "alpha") {
494
- blended[key] = mixLinearColor(fromColor[key], toColor[key], v);
495
- }
496
- }
497
- blended.alpha = mix(fromColor.alpha, toColor.alpha, v);
498
- return fromColorType.transform(blended);
499
- };
500
- };
501
- const isNum = (v) => typeof v === "number";
502
- const combineFunctions = (a, b) => (v) => b(a(v));
503
- const pipe = (...transformers) => transformers.reduce(combineFunctions);
504
- function getMixer(origin, target) {
505
- if (isNum(origin)) {
506
- return (v) => mix(origin, target, v);
507
- } else if (color.test(origin)) {
508
- return mixColor(origin, target);
509
- } else {
510
- return mixComplex(origin, target);
511
- }
512
- }
513
- const mixArray = (from, to) => {
514
- const output = [...from];
515
- const numValues = output.length;
516
- const blendValue = from.map((fromThis, i) => getMixer(fromThis, to[i]));
517
- return (v) => {
518
- for (let i = 0; i < numValues; i++) {
519
- output[i] = blendValue[i](v);
520
- }
521
- return output;
522
- };
523
- };
524
- const mixObject = (origin, target) => {
525
- const output = Object.assign(Object.assign({}, origin), target);
526
- const blendValue = {};
527
- for (const key in output) {
528
- if (origin[key] !== void 0 && target[key] !== void 0) {
529
- blendValue[key] = getMixer(origin[key], target[key]);
530
- }
531
- }
532
- return (v) => {
533
- for (const key in blendValue) {
534
- output[key] = blendValue[key](v);
535
- }
536
- return output;
537
- };
538
- };
539
- function analyse(value) {
540
- const parsed = complex.parse(value);
541
- const numValues = parsed.length;
542
- let numNumbers = 0;
543
- let numRGB = 0;
544
- let numHSL = 0;
545
- for (let i = 0; i < numValues; i++) {
546
- if (numNumbers || typeof parsed[i] === "number") {
547
- numNumbers++;
548
- } else {
549
- if (parsed[i].hue !== void 0) {
550
- numHSL++;
551
- } else {
552
- numRGB++;
553
- }
554
- }
555
- }
556
- return { parsed, numNumbers, numRGB, numHSL };
557
- }
558
- const mixComplex = (origin, target) => {
559
- const template2 = complex.createTransformer(target);
560
- const originStats = analyse(origin);
561
- const targetStats = analyse(target);
562
- const canInterpolate = originStats.numHSL === targetStats.numHSL && originStats.numRGB === targetStats.numRGB && originStats.numNumbers >= targetStats.numNumbers;
563
- if (canInterpolate) {
564
- return pipe(mixArray(originStats.parsed, targetStats.parsed), template2);
565
- } else {
566
- return (p) => `${p > 0 ? target : origin}`;
567
- }
568
- };
569
- const mixNumber = (from, to) => (p) => mix(from, to, p);
570
- function detectMixerFactory(v) {
571
- if (typeof v === "number") {
572
- return mixNumber;
573
- } else if (typeof v === "string") {
574
- if (color.test(v)) {
575
- return mixColor;
576
- } else {
577
- return mixComplex;
578
- }
579
- } else if (Array.isArray(v)) {
580
- return mixArray;
581
- } else if (typeof v === "object") {
582
- return mixObject;
583
- }
584
- }
585
- function createMixers(output, ease, customMixer) {
586
- const mixers = [];
587
- const mixerFactory = customMixer || detectMixerFactory(output[0]);
588
- const numMixers = output.length - 1;
589
- for (let i = 0; i < numMixers; i++) {
590
- let mixer = mixerFactory(output[i], output[i + 1]);
591
- if (ease) {
592
- const easingFunction = Array.isArray(ease) ? ease[i] : ease;
593
- mixer = pipe(easingFunction, mixer);
594
- }
595
- mixers.push(mixer);
596
- }
597
- return mixers;
598
- }
599
- function fastInterpolate([from, to], [mixer]) {
600
- return (v) => mixer(progress(from, to, v));
601
- }
602
- function slowInterpolate(input, mixers) {
603
- const inputLength = input.length;
604
- const lastInputIndex = inputLength - 1;
605
- return (v) => {
606
- let mixerIndex = 0;
607
- let foundMixerIndex = false;
608
- if (v <= input[0]) {
609
- foundMixerIndex = true;
610
- } else if (v >= input[lastInputIndex]) {
611
- mixerIndex = lastInputIndex - 1;
612
- foundMixerIndex = true;
613
- }
614
- if (!foundMixerIndex) {
615
- let i = 1;
616
- for (; i < inputLength; i++) {
617
- if (input[i] > v || i === lastInputIndex) {
618
- break;
619
- }
620
- }
621
- mixerIndex = i - 1;
622
- }
623
- const progressInRange = progress(input[mixerIndex], input[mixerIndex + 1], v);
624
- return mixers[mixerIndex](progressInRange);
625
- };
626
- }
627
- function interpolate(input, output, { clamp: isClamp = true, ease, mixer } = {}) {
628
- const inputLength = input.length;
629
- invariant(inputLength === output.length);
630
- invariant(!ease || !Array.isArray(ease) || ease.length === inputLength - 1);
631
- if (input[0] > input[inputLength - 1]) {
632
- input = [].concat(input);
633
- output = [].concat(output);
634
- input.reverse();
635
- output.reverse();
636
- }
637
- const mixers = createMixers(output, ease, mixer);
638
- const interpolator = inputLength === 2 ? fastInterpolate(input, mixers) : slowInterpolate(input, mixers);
639
- return isClamp ? (v) => interpolator(clamp$1(input[0], input[inputLength - 1], v)) : interpolator;
640
- }
641
- const reverseEasing = (easing) => (p) => 1 - easing(1 - p);
642
- const mirrorEasing = (easing) => (p) => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;
643
- const createExpoIn = (power) => (p) => Math.pow(p, power);
644
- const createBackIn = (power) => (p) => p * p * ((power + 1) * p - power);
645
- const createAnticipate = (power) => {
646
- const backEasing = createBackIn(power);
647
- return (p) => (p *= 2) < 1 ? 0.5 * backEasing(p) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));
648
- };
649
- const DEFAULT_OVERSHOOT_STRENGTH = 1.525;
650
- const BOUNCE_FIRST_THRESHOLD = 4 / 11;
651
- const BOUNCE_SECOND_THRESHOLD = 8 / 11;
652
- const BOUNCE_THIRD_THRESHOLD = 9 / 10;
653
- const linear = (p) => p;
654
- const easeIn = createExpoIn(2);
655
- const easeOut = reverseEasing(easeIn);
656
- const easeInOut = mirrorEasing(easeIn);
657
- const circIn = (p) => 1 - Math.sin(Math.acos(p));
658
- const circOut = reverseEasing(circIn);
659
- const circInOut = mirrorEasing(circOut);
660
- const backIn = createBackIn(DEFAULT_OVERSHOOT_STRENGTH);
661
- const backOut = reverseEasing(backIn);
662
- const backInOut = mirrorEasing(backIn);
663
- const anticipate = createAnticipate(DEFAULT_OVERSHOOT_STRENGTH);
664
- const ca = 4356 / 361;
665
- const cb = 35442 / 1805;
666
- const cc = 16061 / 1805;
667
- const bounceOut = (p) => {
668
- if (p === 1 || p === 0)
669
- return p;
670
- const p2 = p * p;
671
- return p < BOUNCE_FIRST_THRESHOLD ? 7.5625 * p2 : p < BOUNCE_SECOND_THRESHOLD ? 9.075 * p2 - 9.9 * p + 3.4 : p < BOUNCE_THIRD_THRESHOLD ? ca * p2 - cb * p + cc : 10.8 * p * p - 20.52 * p + 10.72;
672
- };
673
- const bounceIn = reverseEasing(bounceOut);
674
- const bounceInOut = (p) => p < 0.5 ? 0.5 * (1 - bounceOut(1 - p * 2)) : 0.5 * bounceOut(p * 2 - 1) + 0.5;
675
- const copyProperty = (to, from, property2, ignoreNonConfigurable) => {
676
- if (property2 === "length" || property2 === "prototype") {
677
- return;
678
- }
679
- if (property2 === "arguments" || property2 === "caller") {
680
- return;
681
- }
682
- const toDescriptor = Object.getOwnPropertyDescriptor(to, property2);
683
- const fromDescriptor = Object.getOwnPropertyDescriptor(from, property2);
684
- if (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {
685
- return;
686
- }
687
- Object.defineProperty(to, property2, fromDescriptor);
688
- };
689
- const canCopyProperty = function(toDescriptor, fromDescriptor) {
690
- return toDescriptor === void 0 || toDescriptor.configurable || toDescriptor.writable === fromDescriptor.writable && toDescriptor.enumerable === fromDescriptor.enumerable && toDescriptor.configurable === fromDescriptor.configurable && (toDescriptor.writable || toDescriptor.value === fromDescriptor.value);
691
- };
692
- const changePrototype = (to, from) => {
693
- const fromPrototype = Object.getPrototypeOf(from);
694
- if (fromPrototype === Object.getPrototypeOf(to)) {
695
- return;
696
- }
697
- Object.setPrototypeOf(to, fromPrototype);
698
- };
699
- const wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/
700
- ${fromBody}`;
701
- const toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, "toString");
702
- const toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, "name");
703
- const changeToString = (to, from, name2) => {
704
- const withName = name2 === "" ? "" : `with ${name2.trim()}() `;
705
- const newToString = wrappedToString.bind(null, withName, from.toString());
706
- Object.defineProperty(newToString, "name", toStringName);
707
- Object.defineProperty(to, "toString", { ...toStringDescriptor, value: newToString });
708
- };
709
- function mimicFunction(to, from, { ignoreNonConfigurable = false } = {}) {
710
- const { name: name2 } = to;
711
- for (const property2 of Reflect.ownKeys(from)) {
712
- copyProperty(to, from, property2, ignoreNonConfigurable);
713
- }
714
- changePrototype(to, from);
715
- changeToString(to, from, name2);
716
- return to;
717
- }
718
- const cacheStore = /* @__PURE__ */ new WeakMap();
719
- function pMemoize(fn, { cacheKey = ([firstArgument]) => firstArgument, cache = /* @__PURE__ */ new Map() } = {}) {
720
- const promiseCache = /* @__PURE__ */ new Map();
721
- const memoized = function(...arguments_) {
722
- const key = cacheKey(arguments_);
723
- if (promiseCache.has(key)) {
724
- return promiseCache.get(key);
725
- }
726
- const promise = (async () => {
727
- try {
728
- if (cache && await cache.has(key)) {
729
- return await cache.get(key);
730
- }
731
- const promise2 = fn.apply(this, arguments_);
732
- const result = await promise2;
733
- try {
734
- return result;
735
- } finally {
736
- if (cache) {
737
- await cache.set(key, result);
738
- }
739
- }
740
- } finally {
741
- promiseCache.delete(key);
742
- }
743
- })();
744
- promiseCache.set(key, promise);
745
- return promise;
746
- };
747
- mimicFunction(memoized, fn, {
748
- ignoreNonConfigurable: true
749
- });
750
- cacheStore.set(memoized, cache);
751
- return memoized;
752
- }
753
- var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
754
- function getDefaultExportFromCjs(x) {
755
- return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
756
- }
757
- var squirrelly_min = { exports: {} };
758
- (function(module2, exports2) {
759
- !function(e, t) {
760
- t(exports2);
761
- }(commonjsGlobal, function(e) {
762
- function t(e2) {
763
- var n2, r2, a2 = new Error(e2);
764
- return n2 = a2, r2 = t.prototype, Object.setPrototypeOf ? Object.setPrototypeOf(n2, r2) : n2.__proto__ = r2, a2;
765
- }
766
- function n(e2, n2, r2) {
767
- var a2 = n2.slice(0, r2).split(/\n/), i2 = a2.length, s2 = a2[i2 - 1].length + 1;
768
- throw t(e2 += " at line " + i2 + " col " + s2 + ":\n\n " + n2.split(/\n/)[i2 - 1] + "\n " + Array(s2).join(" ") + "^");
769
- }
770
- t.prototype = Object.create(Error.prototype, { name: { value: "Squirrelly Error", enumerable: false } });
771
- var r = new Function("return this")().Promise, a = false;
772
- try {
773
- a = new Function("return (async function(){}).constructor")();
774
- } catch (e2) {
775
- if (!(e2 instanceof SyntaxError))
776
- throw e2;
777
- }
778
- function i(e2, t2) {
779
- return Object.prototype.hasOwnProperty.call(e2, t2);
780
- }
781
- function s(e2, t2, n2) {
782
- for (var r2 in t2)
783
- i(t2, r2) && (null == t2[r2] || "object" != typeof t2[r2] || "storage" !== r2 && "prefixes" !== r2 || n2 ? e2[r2] = t2[r2] : e2[r2] = s({}, t2[r2]));
784
- return e2;
785
- }
786
- var c = /^async +/, o = /`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\${)[^\\`])*`/g, l = /'(?:\\[\s\w"'\\`]|[^\n\r'\\])*?'/g, f = /"(?:\\[\s\w"'\\`]|[^\n\r"\\])*?"/g, u = /[.*+\-?^${}()|[\]\\]/g;
787
- function p(e2) {
788
- return u.test(e2) ? e2.replace(u, "\\$&") : e2;
789
- }
790
- function h(e2, r2) {
791
- r2.rmWhitespace && (e2 = e2.replace(/[\r\n]+/g, "\n").replace(/^\s+|\s+$/gm, "")), o.lastIndex = 0, l.lastIndex = 0, f.lastIndex = 0;
792
- var a2 = r2.prefixes, i2 = [a2.h, a2.b, a2.i, a2.r, a2.c, a2.e].reduce(function(e3, t2) {
793
- return e3 && t2 ? e3 + "|" + p(t2) : t2 ? p(t2) : e3;
794
- }, ""), s2 = new RegExp("([|()]|=>)|('|\"|`|\\/\\*)|\\s*((\\/)?(-|_)?" + p(r2.tags[1]) + ")", "g"), u2 = new RegExp("([^]*?)" + p(r2.tags[0]) + "(-|_)?\\s*(" + i2 + ")?\\s*", "g"), h2 = 0, d2 = false;
795
- function g2(t2, a3) {
796
- var i3, p2 = { f: [] }, g3 = 0, v3 = "c";
797
- function m3(t3) {
798
- var a4 = e2.slice(h2, t3), i4 = a4.trim();
799
- if ("f" === v3)
800
- "safe" === i4 ? p2.raw = true : r2.async && c.test(i4) ? (i4 = i4.replace(c, ""), p2.f.push([i4, "", true])) : p2.f.push([i4, ""]);
801
- else if ("fp" === v3)
802
- p2.f[p2.f.length - 1][1] += i4;
803
- else if ("err" === v3) {
804
- if (i4) {
805
- var s3 = a4.search(/\S/);
806
- n("invalid syntax", e2, h2 + s3);
807
- }
808
- } else
809
- p2[v3] = i4;
810
- h2 = t3 + 1;
811
- }
812
- for ("h" === a3 || "b" === a3 || "c" === a3 ? v3 = "n" : "r" === a3 && (p2.raw = true, a3 = "i"), s2.lastIndex = h2; null !== (i3 = s2.exec(e2)); ) {
813
- var y3 = i3[1], x2 = i3[2], b2 = i3[3], w2 = i3[4], F2 = i3[5], S2 = i3.index;
814
- if (y3)
815
- "(" === y3 ? (0 === g3 && ("n" === v3 ? (m3(S2), v3 = "p") : "f" === v3 && (m3(S2), v3 = "fp")), g3++) : ")" === y3 ? 0 === --g3 && "c" !== v3 && (m3(S2), v3 = "err") : 0 === g3 && "|" === y3 ? (m3(S2), v3 = "f") : "=>" === y3 && (m3(S2), h2 += 1, v3 = "res");
816
- else if (x2) {
817
- if ("/*" === x2) {
818
- var I2 = e2.indexOf("*/", s2.lastIndex);
819
- -1 === I2 && n("unclosed comment", e2, i3.index), s2.lastIndex = I2 + 2;
820
- } else if ("'" === x2) {
821
- l.lastIndex = i3.index, l.exec(e2) ? s2.lastIndex = l.lastIndex : n("unclosed string", e2, i3.index);
822
- } else if ('"' === x2) {
823
- f.lastIndex = i3.index, f.exec(e2) ? s2.lastIndex = f.lastIndex : n("unclosed string", e2, i3.index);
824
- } else if ("`" === x2) {
825
- o.lastIndex = i3.index, o.exec(e2) ? s2.lastIndex = o.lastIndex : n("unclosed string", e2, i3.index);
826
- }
827
- } else if (b2)
828
- return m3(S2), h2 = S2 + i3[0].length, u2.lastIndex = h2, d2 = F2, w2 && "h" === a3 && (a3 = "s"), p2.t = a3, p2;
829
- }
830
- return n("unclosed tag", e2, t2), p2;
831
- }
832
- var v2 = function i3(s3, o2) {
833
- s3.b = [], s3.d = [];
834
- var l2, f2 = false, p2 = [];
835
- function v3(e3, t2) {
836
- e3 && (e3 = function(e4, t3, n2, r3) {
837
- var a3, i4;
838
- return "string" == typeof t3.autoTrim ? a3 = i4 = t3.autoTrim : Array.isArray(t3.autoTrim) && (a3 = t3.autoTrim[1], i4 = t3.autoTrim[0]), (n2 || false === n2) && (a3 = n2), (r3 || false === r3) && (i4 = r3), "slurp" === a3 && "slurp" === i4 ? e4.trim() : ("_" === a3 || "slurp" === a3 ? e4 = String.prototype.trimLeft ? e4.trimLeft() : e4.replace(/^[\s\uFEFF\xA0]+/, "") : "-" !== a3 && "nl" !== a3 || (e4 = e4.replace(/^(?:\n|\r|\r\n)/, "")), "_" === i4 || "slurp" === i4 ? e4 = String.prototype.trimRight ? e4.trimRight() : e4.replace(/[\s\uFEFF\xA0]+$/, "") : "-" !== i4 && "nl" !== i4 || (e4 = e4.replace(/(?:\n|\r|\r\n)$/, "")), e4);
839
- }(e3, r2, d2, t2)) && (e3 = e3.replace(/\\|'/g, "\\$&").replace(/\r\n|\n|\r/g, "\\n"), p2.push(e3));
840
- }
841
- for (; null !== (l2 = u2.exec(e2)); ) {
842
- var m3, y3 = l2[1], x2 = l2[2], b2 = l2[3] || "";
843
- for (var w2 in a2)
844
- if (a2[w2] === b2) {
845
- m3 = w2;
846
- break;
847
- }
848
- v3(y3, x2), h2 = l2.index + l2[0].length, m3 || n("unrecognized tag type: " + b2, e2, h2);
849
- var F2 = g2(l2.index, m3), S2 = F2.t;
850
- if ("h" === S2) {
851
- var I2 = F2.n || "";
852
- r2.async && c.test(I2) && (F2.a = true, F2.n = I2.replace(c, "")), F2 = i3(F2), p2.push(F2);
853
- } else if ("c" === S2) {
854
- if (s3.n === F2.n)
855
- return f2 ? (f2.d = p2, s3.b.push(f2)) : s3.d = p2, s3;
856
- n("Helper start and end don't match", e2, l2.index + l2[0].length);
857
- } else if ("b" === S2) {
858
- f2 ? (f2.d = p2, s3.b.push(f2)) : s3.d = p2;
859
- var R2 = F2.n || "";
860
- r2.async && c.test(R2) && (F2.a = true, F2.n = R2.replace(c, "")), f2 = F2, p2 = [];
861
- } else if ("s" === S2) {
862
- var T2 = F2.n || "";
863
- r2.async && c.test(T2) && (F2.a = true, F2.n = T2.replace(c, "")), p2.push(F2);
864
- } else
865
- p2.push(F2);
866
- }
867
- if (!o2)
868
- throw t('unclosed helper "' + s3.n + '"');
869
- return v3(e2.slice(h2, e2.length), false), s3.d = p2, s3;
870
- }({ f: [] }, true);
871
- if (r2.plugins)
872
- for (var m2 = 0; m2 < r2.plugins.length; m2++) {
873
- var y2 = r2.plugins[m2];
874
- y2.processAST && (v2.d = y2.processAST(v2.d, r2));
875
- }
876
- return v2.d;
877
- }
878
- function d(e2, t2) {
879
- var n2 = h(e2, t2), r2 = "var tR='';" + (t2.useWith ? "with(" + t2.varName + "||{}){" : "") + x(n2, t2) + "if(cb){cb(null,tR)} return tR" + (t2.useWith ? "}" : "");
880
- if (t2.plugins)
881
- for (var a2 = 0; a2 < t2.plugins.length; a2++) {
882
- var i2 = t2.plugins[a2];
883
- i2.processFnString && (r2 = i2.processFnString(r2, t2));
884
- }
885
- return r2;
886
- }
887
- function g(e2, t2) {
888
- for (var n2 = 0; n2 < t2.length; n2++) {
889
- var r2 = t2[n2][0], a2 = t2[n2][1];
890
- e2 = (t2[n2][2] ? "await " : "") + "c.l('F','" + r2 + "')(" + e2, a2 && (e2 += "," + a2), e2 += ")";
891
- }
892
- return e2;
893
- }
894
- function v(e2, t2, n2, r2, a2, i2) {
895
- var s2 = "{exec:" + (a2 ? "async " : "") + y(n2, t2, e2) + ",params:[" + r2 + "]";
896
- return i2 && (s2 += ",name:'" + i2 + "'"), a2 && (s2 += ",async:true"), s2 += "}";
897
- }
898
- function m(e2, t2) {
899
- for (var n2 = "[", r2 = 0; r2 < e2.length; r2++) {
900
- var a2 = e2[r2];
901
- n2 += v(t2, a2.res || "", a2.d, a2.p || "", a2.a, a2.n), r2 < e2.length && (n2 += ",");
902
- }
903
- return n2 += "]";
904
- }
905
- function y(e2, t2, n2) {
906
- return "function(" + t2 + "){var tR='';" + x(e2, n2) + "return tR}";
907
- }
908
- function x(e2, t2) {
909
- for (var n2 = 0, r2 = e2.length, a2 = ""; n2 < r2; n2++) {
910
- var i2 = e2[n2];
911
- if ("string" == typeof i2) {
912
- a2 += "tR+='" + i2 + "';";
913
- } else {
914
- var s2 = i2.t, c2 = i2.c || "", o2 = i2.f, l2 = i2.n || "", f2 = i2.p || "", u2 = i2.res || "", p2 = i2.b, h2 = !!i2.a;
915
- if ("i" === s2) {
916
- t2.defaultFilter && (c2 = "c.l('F','" + t2.defaultFilter + "')(" + c2 + ")");
917
- var d2 = g(c2, o2);
918
- !i2.raw && t2.autoEscape && (d2 = "c.l('F','e')(" + d2 + ")"), a2 += "tR+=" + d2 + ";";
919
- } else if ("h" === s2)
920
- if (t2.storage.nativeHelpers.get(l2))
921
- a2 += t2.storage.nativeHelpers.get(l2)(i2, t2);
922
- else {
923
- var y2 = (h2 ? "await " : "") + "c.l('H','" + l2 + "')(" + v(t2, u2, i2.d, f2, h2);
924
- y2 += p2 ? "," + m(p2, t2) : ",[]", a2 += "tR+=" + g(y2 += ",c)", o2) + ";";
925
- }
926
- else
927
- "s" === s2 ? a2 += "tR+=" + g((h2 ? "await " : "") + "c.l('H','" + l2 + "')({params:[" + f2 + "]},[],c)", o2) + ";" : "e" === s2 && (a2 += c2 + "\n");
928
- }
929
- }
930
- return a2;
931
- }
932
- var b = function() {
933
- function e2(e3) {
934
- this.cache = e3;
935
- }
936
- return e2.prototype.define = function(e3, t2) {
937
- this.cache[e3] = t2;
938
- }, e2.prototype.get = function(e3) {
939
- return this.cache[e3];
940
- }, e2.prototype.remove = function(e3) {
941
- delete this.cache[e3];
942
- }, e2.prototype.reset = function() {
943
- this.cache = {};
944
- }, e2.prototype.load = function(e3) {
945
- s(this.cache, e3, true);
946
- }, e2;
947
- }();
948
- function w(e2, n2, r2, a2) {
949
- if (n2 && n2.length > 0)
950
- throw t((a2 ? "Native" : "") + "Helper '" + e2 + "' doesn't accept blocks");
951
- if (r2 && r2.length > 0)
952
- throw t((a2 ? "Native" : "") + "Helper '" + e2 + "' doesn't accept filters");
953
- }
954
- var F = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" };
955
- function S(e2) {
956
- return F[e2];
957
- }
958
- var I = new b({}), R = new b({ each: function(e2, t2) {
959
- var n2 = "", r2 = e2.params[0];
960
- if (w("each", t2, false), e2.async)
961
- return new Promise(function(t3) {
962
- !function e3(t4, n3, r3, a3, i2) {
963
- r3(t4[n3], n3).then(function(s2) {
964
- a3 += s2, n3 === t4.length - 1 ? i2(a3) : e3(t4, n3 + 1, r3, a3, i2);
965
- });
966
- }(r2, 0, e2.exec, n2, t3);
967
- });
968
- for (var a2 = 0; a2 < r2.length; a2++)
969
- n2 += e2.exec(r2[a2], a2);
970
- return n2;
971
- }, foreach: function(e2, t2) {
972
- var n2 = e2.params[0];
973
- if (w("foreach", t2, false), e2.async)
974
- return new Promise(function(t3) {
975
- !function e3(t4, n3, r3, a3, i2, s2) {
976
- a3(n3[r3], t4[n3[r3]]).then(function(c2) {
977
- i2 += c2, r3 === n3.length - 1 ? s2(i2) : e3(t4, n3, r3 + 1, a3, i2, s2);
978
- });
979
- }(n2, Object.keys(n2), 0, e2.exec, "", t3);
980
- });
981
- var r2 = "";
982
- for (var a2 in n2)
983
- i(n2, a2) && (r2 += e2.exec(a2, n2[a2]));
984
- return r2;
985
- }, include: function(e2, n2, r2) {
986
- w("include", n2, false);
987
- var a2 = r2.storage.templates.get(e2.params[0]);
988
- if (!a2)
989
- throw t('Could not fetch template "' + e2.params[0] + '"');
990
- return a2(e2.params[1], r2);
991
- }, extends: function(e2, n2, r2) {
992
- var a2 = e2.params[1] || {};
993
- a2.content = e2.exec();
994
- for (var i2 = 0; i2 < n2.length; i2++) {
995
- var s2 = n2[i2];
996
- a2[s2.name] = s2.exec();
997
- }
998
- var c2 = r2.storage.templates.get(e2.params[0]);
999
- if (!c2)
1000
- throw t('Could not fetch template "' + e2.params[0] + '"');
1001
- return c2(a2, r2);
1002
- }, useScope: function(e2, t2) {
1003
- return w("useScope", t2, false), e2.exec(e2.params[0]);
1004
- } }), T = new b({ if: function(e2, t2) {
1005
- w("if", false, e2.f, true);
1006
- var n2 = "if(" + e2.p + "){" + x(e2.d, t2) + "}";
1007
- if (e2.b)
1008
- for (var r2 = 0; r2 < e2.b.length; r2++) {
1009
- var a2 = e2.b[r2];
1010
- "else" === a2.n ? n2 += "else{" + x(a2.d, t2) + "}" : "elif" === a2.n && (n2 += "else if(" + a2.p + "){" + x(a2.d, t2) + "}");
1011
- }
1012
- return n2;
1013
- }, try: function(e2, n2) {
1014
- if (w("try", false, e2.f, true), !e2.b || 1 !== e2.b.length || "catch" !== e2.b[0].n)
1015
- throw t("native helper 'try' only accepts 1 block, 'catch'");
1016
- var r2 = "try{" + x(e2.d, n2) + "}", a2 = e2.b[0];
1017
- return r2 += "catch" + (a2.res ? "(" + a2.res + ")" : "") + "{" + x(a2.d, n2) + "}";
1018
- }, block: function(e2, t2) {
1019
- return w("block", e2.b, e2.f, true), "if(!" + t2.varName + "[" + e2.p + "]){tR+=(" + y(e2.d, "", t2) + ")()}else{tR+=" + t2.varName + "[" + e2.p + "]}";
1020
- } }), E = new b({ e: function(e2) {
1021
- var t2 = String(e2);
1022
- return /[&<>"']/.test(t2) ? t2.replace(/[&<>"']/g, S) : t2;
1023
- } }), j = { varName: "it", autoTrim: [false, "nl"], autoEscape: true, defaultFilter: false, tags: ["{{", "}}"], l: function(e2, n2) {
1024
- if ("H" === e2) {
1025
- var r2 = this.storage.helpers.get(n2);
1026
- if (r2)
1027
- return r2;
1028
- throw t("Can't find helper '" + n2 + "'");
1029
- }
1030
- if ("F" === e2) {
1031
- var a2 = this.storage.filters.get(n2);
1032
- if (a2)
1033
- return a2;
1034
- throw t("Can't find filter '" + n2 + "'");
1035
- }
1036
- }, async: false, storage: { helpers: R, nativeHelpers: T, filters: E, templates: I }, prefixes: { h: "@", b: "#", i: "", r: "*", c: "/", e: "!" }, cache: false, plugins: [], useWith: false };
1037
- function H(e2, t2) {
1038
- var n2 = {};
1039
- return s(n2, j), t2 && s(n2, t2), e2 && s(n2, e2), n2.l.bind(n2), n2;
1040
- }
1041
- function O(e2, n2) {
1042
- var r2 = H(n2 || {}), i2 = Function;
1043
- if (r2.async) {
1044
- if (!a)
1045
- throw t("This environment doesn't support async/await");
1046
- i2 = a;
1047
- }
1048
- try {
1049
- return new i2(r2.varName, "c", "cb", d(e2, r2));
1050
- } catch (n3) {
1051
- throw n3 instanceof SyntaxError ? t("Bad template syntax\n\n" + n3.message + "\n" + Array(n3.message.length + 1).join("=") + "\n" + d(e2, r2)) : n3;
1052
- }
1053
- }
1054
- function _(e2, t2) {
1055
- var n2;
1056
- return t2.cache && t2.name && t2.storage.templates.get(t2.name) ? t2.storage.templates.get(t2.name) : (n2 = "function" == typeof e2 ? e2 : O(e2, t2), t2.cache && t2.name && t2.storage.templates.define(t2.name, n2), n2);
1057
- }
1058
- j.l.bind(j), e.compile = O, e.compileScope = x, e.compileScopeIntoFunction = y, e.compileToString = d, e.defaultConfig = j, e.filters = E, e.getConfig = H, e.helpers = R, e.nativeHelpers = T, e.parse = h, e.render = function(e2, n2, a2, i2) {
1059
- var s2 = H(a2 || {});
1060
- if (!s2.async)
1061
- return _(e2, s2)(n2, s2);
1062
- if (!i2) {
1063
- if ("function" == typeof r)
1064
- return new r(function(t2, r2) {
1065
- try {
1066
- t2(_(e2, s2)(n2, s2));
1067
- } catch (e3) {
1068
- r2(e3);
1069
- }
1070
- });
1071
- throw t("Please provide a callback function, this env doesn't support Promises");
1072
- }
1073
- try {
1074
- _(e2, s2)(n2, s2, i2);
1075
- } catch (e3) {
1076
- return i2(e3);
1077
- }
1078
- }, e.templates = I, Object.defineProperty(e, "__esModule", { value: true });
1079
- });
1080
- })(squirrelly_min, squirrelly_min.exports);
1081
- var squirrelly_minExports = squirrelly_min.exports;
1082
- var wasmAsyncWeb$1 = {};
1083
- var wrapAssembly$1 = {};
1084
- var YGEnums = {};
1085
- Object.defineProperty(YGEnums, "__esModule", {
1086
- value: true
1087
- });
1088
- YGEnums.default = YGEnums.Wrap = YGEnums.Unit = YGEnums.PrintOptions = YGEnums.PositionType = YGEnums.Overflow = YGEnums.NodeType = YGEnums.MeasureMode = YGEnums.LogLevel = YGEnums.Justify = YGEnums.Gutter = YGEnums.FlexDirection = YGEnums.ExperimentalFeature = YGEnums.Errata = YGEnums.Edge = YGEnums.Display = YGEnums.Direction = YGEnums.Dimension = YGEnums.Align = void 0;
1089
- let Align = /* @__PURE__ */ function(Align2) {
1090
- Align2[Align2["Auto"] = 0] = "Auto";
1091
- Align2[Align2["FlexStart"] = 1] = "FlexStart";
1092
- Align2[Align2["Center"] = 2] = "Center";
1093
- Align2[Align2["FlexEnd"] = 3] = "FlexEnd";
1094
- Align2[Align2["Stretch"] = 4] = "Stretch";
1095
- Align2[Align2["Baseline"] = 5] = "Baseline";
1096
- Align2[Align2["SpaceBetween"] = 6] = "SpaceBetween";
1097
- Align2[Align2["SpaceAround"] = 7] = "SpaceAround";
1098
- return Align2;
1099
- }({});
1100
- YGEnums.Align = Align;
1101
- let Dimension = /* @__PURE__ */ function(Dimension2) {
1102
- Dimension2[Dimension2["Width"] = 0] = "Width";
1103
- Dimension2[Dimension2["Height"] = 1] = "Height";
1104
- return Dimension2;
1105
- }({});
1106
- YGEnums.Dimension = Dimension;
1107
- let Direction = /* @__PURE__ */ function(Direction2) {
1108
- Direction2[Direction2["Inherit"] = 0] = "Inherit";
1109
- Direction2[Direction2["LTR"] = 1] = "LTR";
1110
- Direction2[Direction2["RTL"] = 2] = "RTL";
1111
- return Direction2;
1112
- }({});
1113
- YGEnums.Direction = Direction;
1114
- let Display = /* @__PURE__ */ function(Display2) {
1115
- Display2[Display2["Flex"] = 0] = "Flex";
1116
- Display2[Display2["None"] = 1] = "None";
1117
- return Display2;
1118
- }({});
1119
- YGEnums.Display = Display;
1120
- let Edge = /* @__PURE__ */ function(Edge2) {
1121
- Edge2[Edge2["Left"] = 0] = "Left";
1122
- Edge2[Edge2["Top"] = 1] = "Top";
1123
- Edge2[Edge2["Right"] = 2] = "Right";
1124
- Edge2[Edge2["Bottom"] = 3] = "Bottom";
1125
- Edge2[Edge2["Start"] = 4] = "Start";
1126
- Edge2[Edge2["End"] = 5] = "End";
1127
- Edge2[Edge2["Horizontal"] = 6] = "Horizontal";
1128
- Edge2[Edge2["Vertical"] = 7] = "Vertical";
1129
- Edge2[Edge2["All"] = 8] = "All";
1130
- return Edge2;
1131
- }({});
1132
- YGEnums.Edge = Edge;
1133
- let Errata = /* @__PURE__ */ function(Errata2) {
1134
- Errata2[Errata2["None"] = 0] = "None";
1135
- Errata2[Errata2["StretchFlexBasis"] = 1] = "StretchFlexBasis";
1136
- Errata2[Errata2["All"] = 2147483647] = "All";
1137
- Errata2[Errata2["Classic"] = 2147483646] = "Classic";
1138
- return Errata2;
1139
- }({});
1140
- YGEnums.Errata = Errata;
1141
- let ExperimentalFeature = /* @__PURE__ */ function(ExperimentalFeature2) {
1142
- ExperimentalFeature2[ExperimentalFeature2["WebFlexBasis"] = 0] = "WebFlexBasis";
1143
- ExperimentalFeature2[ExperimentalFeature2["AbsolutePercentageAgainstPaddingEdge"] = 1] = "AbsolutePercentageAgainstPaddingEdge";
1144
- ExperimentalFeature2[ExperimentalFeature2["FixJNILocalRefOverflows"] = 2] = "FixJNILocalRefOverflows";
1145
- return ExperimentalFeature2;
1146
- }({});
1147
- YGEnums.ExperimentalFeature = ExperimentalFeature;
1148
- let FlexDirection = /* @__PURE__ */ function(FlexDirection2) {
1149
- FlexDirection2[FlexDirection2["Column"] = 0] = "Column";
1150
- FlexDirection2[FlexDirection2["ColumnReverse"] = 1] = "ColumnReverse";
1151
- FlexDirection2[FlexDirection2["Row"] = 2] = "Row";
1152
- FlexDirection2[FlexDirection2["RowReverse"] = 3] = "RowReverse";
1153
- return FlexDirection2;
1154
- }({});
1155
- YGEnums.FlexDirection = FlexDirection;
1156
- let Gutter = /* @__PURE__ */ function(Gutter2) {
1157
- Gutter2[Gutter2["Column"] = 0] = "Column";
1158
- Gutter2[Gutter2["Row"] = 1] = "Row";
1159
- Gutter2[Gutter2["All"] = 2] = "All";
1160
- return Gutter2;
1161
- }({});
1162
- YGEnums.Gutter = Gutter;
1163
- let Justify = /* @__PURE__ */ function(Justify2) {
1164
- Justify2[Justify2["FlexStart"] = 0] = "FlexStart";
1165
- Justify2[Justify2["Center"] = 1] = "Center";
1166
- Justify2[Justify2["FlexEnd"] = 2] = "FlexEnd";
1167
- Justify2[Justify2["SpaceBetween"] = 3] = "SpaceBetween";
1168
- Justify2[Justify2["SpaceAround"] = 4] = "SpaceAround";
1169
- Justify2[Justify2["SpaceEvenly"] = 5] = "SpaceEvenly";
1170
- return Justify2;
1171
- }({});
1172
- YGEnums.Justify = Justify;
1173
- let LogLevel = /* @__PURE__ */ function(LogLevel2) {
1174
- LogLevel2[LogLevel2["Error"] = 0] = "Error";
1175
- LogLevel2[LogLevel2["Warn"] = 1] = "Warn";
1176
- LogLevel2[LogLevel2["Info"] = 2] = "Info";
1177
- LogLevel2[LogLevel2["Debug"] = 3] = "Debug";
1178
- LogLevel2[LogLevel2["Verbose"] = 4] = "Verbose";
1179
- LogLevel2[LogLevel2["Fatal"] = 5] = "Fatal";
1180
- return LogLevel2;
1181
- }({});
1182
- YGEnums.LogLevel = LogLevel;
1183
- let MeasureMode = /* @__PURE__ */ function(MeasureMode2) {
1184
- MeasureMode2[MeasureMode2["Undefined"] = 0] = "Undefined";
1185
- MeasureMode2[MeasureMode2["Exactly"] = 1] = "Exactly";
1186
- MeasureMode2[MeasureMode2["AtMost"] = 2] = "AtMost";
1187
- return MeasureMode2;
1188
- }({});
1189
- YGEnums.MeasureMode = MeasureMode;
1190
- let NodeType = /* @__PURE__ */ function(NodeType2) {
1191
- NodeType2[NodeType2["Default"] = 0] = "Default";
1192
- NodeType2[NodeType2["Text"] = 1] = "Text";
1193
- return NodeType2;
1194
- }({});
1195
- YGEnums.NodeType = NodeType;
1196
- let Overflow = /* @__PURE__ */ function(Overflow2) {
1197
- Overflow2[Overflow2["Visible"] = 0] = "Visible";
1198
- Overflow2[Overflow2["Hidden"] = 1] = "Hidden";
1199
- Overflow2[Overflow2["Scroll"] = 2] = "Scroll";
1200
- return Overflow2;
1201
- }({});
1202
- YGEnums.Overflow = Overflow;
1203
- let PositionType = /* @__PURE__ */ function(PositionType2) {
1204
- PositionType2[PositionType2["Static"] = 0] = "Static";
1205
- PositionType2[PositionType2["Relative"] = 1] = "Relative";
1206
- PositionType2[PositionType2["Absolute"] = 2] = "Absolute";
1207
- return PositionType2;
1208
- }({});
1209
- YGEnums.PositionType = PositionType;
1210
- let PrintOptions = /* @__PURE__ */ function(PrintOptions2) {
1211
- PrintOptions2[PrintOptions2["Layout"] = 1] = "Layout";
1212
- PrintOptions2[PrintOptions2["Style"] = 2] = "Style";
1213
- PrintOptions2[PrintOptions2["Children"] = 4] = "Children";
1214
- return PrintOptions2;
1215
- }({});
1216
- YGEnums.PrintOptions = PrintOptions;
1217
- let Unit = /* @__PURE__ */ function(Unit2) {
1218
- Unit2[Unit2["Undefined"] = 0] = "Undefined";
1219
- Unit2[Unit2["Point"] = 1] = "Point";
1220
- Unit2[Unit2["Percent"] = 2] = "Percent";
1221
- Unit2[Unit2["Auto"] = 3] = "Auto";
1222
- return Unit2;
1223
- }({});
1224
- YGEnums.Unit = Unit;
1225
- let Wrap = /* @__PURE__ */ function(Wrap2) {
1226
- Wrap2[Wrap2["NoWrap"] = 0] = "NoWrap";
1227
- Wrap2[Wrap2["Wrap"] = 1] = "Wrap";
1228
- Wrap2[Wrap2["WrapReverse"] = 2] = "WrapReverse";
1229
- return Wrap2;
1230
- }({});
1231
- YGEnums.Wrap = Wrap;
1232
- const constants = {
1233
- ALIGN_AUTO: Align.Auto,
1234
- ALIGN_FLEX_START: Align.FlexStart,
1235
- ALIGN_CENTER: Align.Center,
1236
- ALIGN_FLEX_END: Align.FlexEnd,
1237
- ALIGN_STRETCH: Align.Stretch,
1238
- ALIGN_BASELINE: Align.Baseline,
1239
- ALIGN_SPACE_BETWEEN: Align.SpaceBetween,
1240
- ALIGN_SPACE_AROUND: Align.SpaceAround,
1241
- DIMENSION_WIDTH: Dimension.Width,
1242
- DIMENSION_HEIGHT: Dimension.Height,
1243
- DIRECTION_INHERIT: Direction.Inherit,
1244
- DIRECTION_LTR: Direction.LTR,
1245
- DIRECTION_RTL: Direction.RTL,
1246
- DISPLAY_FLEX: Display.Flex,
1247
- DISPLAY_NONE: Display.None,
1248
- EDGE_LEFT: Edge.Left,
1249
- EDGE_TOP: Edge.Top,
1250
- EDGE_RIGHT: Edge.Right,
1251
- EDGE_BOTTOM: Edge.Bottom,
1252
- EDGE_START: Edge.Start,
1253
- EDGE_END: Edge.End,
1254
- EDGE_HORIZONTAL: Edge.Horizontal,
1255
- EDGE_VERTICAL: Edge.Vertical,
1256
- EDGE_ALL: Edge.All,
1257
- ERRATA_NONE: Errata.None,
1258
- ERRATA_STRETCH_FLEX_BASIS: Errata.StretchFlexBasis,
1259
- ERRATA_ALL: Errata.All,
1260
- ERRATA_CLASSIC: Errata.Classic,
1261
- EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS: ExperimentalFeature.WebFlexBasis,
1262
- EXPERIMENTAL_FEATURE_ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE: ExperimentalFeature.AbsolutePercentageAgainstPaddingEdge,
1263
- EXPERIMENTAL_FEATURE_FIX_JNILOCAL_REF_OVERFLOWS: ExperimentalFeature.FixJNILocalRefOverflows,
1264
- FLEX_DIRECTION_COLUMN: FlexDirection.Column,
1265
- FLEX_DIRECTION_COLUMN_REVERSE: FlexDirection.ColumnReverse,
1266
- FLEX_DIRECTION_ROW: FlexDirection.Row,
1267
- FLEX_DIRECTION_ROW_REVERSE: FlexDirection.RowReverse,
1268
- GUTTER_COLUMN: Gutter.Column,
1269
- GUTTER_ROW: Gutter.Row,
1270
- GUTTER_ALL: Gutter.All,
1271
- JUSTIFY_FLEX_START: Justify.FlexStart,
1272
- JUSTIFY_CENTER: Justify.Center,
1273
- JUSTIFY_FLEX_END: Justify.FlexEnd,
1274
- JUSTIFY_SPACE_BETWEEN: Justify.SpaceBetween,
1275
- JUSTIFY_SPACE_AROUND: Justify.SpaceAround,
1276
- JUSTIFY_SPACE_EVENLY: Justify.SpaceEvenly,
1277
- LOG_LEVEL_ERROR: LogLevel.Error,
1278
- LOG_LEVEL_WARN: LogLevel.Warn,
1279
- LOG_LEVEL_INFO: LogLevel.Info,
1280
- LOG_LEVEL_DEBUG: LogLevel.Debug,
1281
- LOG_LEVEL_VERBOSE: LogLevel.Verbose,
1282
- LOG_LEVEL_FATAL: LogLevel.Fatal,
1283
- MEASURE_MODE_UNDEFINED: MeasureMode.Undefined,
1284
- MEASURE_MODE_EXACTLY: MeasureMode.Exactly,
1285
- MEASURE_MODE_AT_MOST: MeasureMode.AtMost,
1286
- NODE_TYPE_DEFAULT: NodeType.Default,
1287
- NODE_TYPE_TEXT: NodeType.Text,
1288
- OVERFLOW_VISIBLE: Overflow.Visible,
1289
- OVERFLOW_HIDDEN: Overflow.Hidden,
1290
- OVERFLOW_SCROLL: Overflow.Scroll,
1291
- POSITION_TYPE_STATIC: PositionType.Static,
1292
- POSITION_TYPE_RELATIVE: PositionType.Relative,
1293
- POSITION_TYPE_ABSOLUTE: PositionType.Absolute,
1294
- PRINT_OPTIONS_LAYOUT: PrintOptions.Layout,
1295
- PRINT_OPTIONS_STYLE: PrintOptions.Style,
1296
- PRINT_OPTIONS_CHILDREN: PrintOptions.Children,
1297
- UNIT_UNDEFINED: Unit.Undefined,
1298
- UNIT_POINT: Unit.Point,
1299
- UNIT_PERCENT: Unit.Percent,
1300
- UNIT_AUTO: Unit.Auto,
1301
- WRAP_NO_WRAP: Wrap.NoWrap,
1302
- WRAP_WRAP: Wrap.Wrap,
1303
- WRAP_WRAP_REVERSE: Wrap.WrapReverse
1304
- };
1305
- var _default = constants;
1306
- YGEnums.default = _default;
1307
- Object.defineProperty(wrapAssembly$1, "__esModule", {
1308
- value: true
1309
- });
1310
- wrapAssembly$1.default = wrapAssembly;
1311
- var _YGEnums = _interopRequireWildcard(YGEnums);
1312
- function _getRequireWildcardCache(nodeInterop) {
1313
- if (typeof WeakMap !== "function")
1314
- return null;
1315
- var cacheBabelInterop = /* @__PURE__ */ new WeakMap();
1316
- var cacheNodeInterop = /* @__PURE__ */ new WeakMap();
1317
- return (_getRequireWildcardCache = function(nodeInterop2) {
1318
- return nodeInterop2 ? cacheNodeInterop : cacheBabelInterop;
1319
- })(nodeInterop);
1320
- }
1321
- function _interopRequireWildcard(obj, nodeInterop) {
1322
- if (!nodeInterop && obj && obj.__esModule) {
1323
- return obj;
1324
- }
1325
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
1326
- return { default: obj };
1327
- }
1328
- var cache = _getRequireWildcardCache(nodeInterop);
1329
- if (cache && cache.has(obj)) {
1330
- return cache.get(obj);
1331
- }
1332
- var newObj = {};
1333
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
1334
- for (var key in obj) {
1335
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
1336
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
1337
- if (desc && (desc.get || desc.set)) {
1338
- Object.defineProperty(newObj, key, desc);
1339
- } else {
1340
- newObj[key] = obj[key];
1341
- }
1342
- }
1343
- }
1344
- newObj.default = obj;
1345
- if (cache) {
1346
- cache.set(obj, newObj);
1347
- }
1348
- return newObj;
1349
- }
1350
- function wrapAssembly(lib) {
1351
- function patch(prototype, name2, fn) {
1352
- const original = prototype[name2];
1353
- prototype[name2] = function() {
1354
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
1355
- args[_key] = arguments[_key];
1356
- }
1357
- return fn.call(this, original, ...args);
1358
- };
1359
- }
1360
- for (const fnName of ["setPosition", "setMargin", "setFlexBasis", "setWidth", "setHeight", "setMinWidth", "setMinHeight", "setMaxWidth", "setMaxHeight", "setPadding"]) {
1361
- const methods = {
1362
- [_YGEnums.Unit.Point]: lib.Node.prototype[fnName],
1363
- [_YGEnums.Unit.Percent]: lib.Node.prototype[`${fnName}Percent`],
1364
- [_YGEnums.Unit.Auto]: lib.Node.prototype[`${fnName}Auto`]
1365
- };
1366
- patch(lib.Node.prototype, fnName, function(original) {
1367
- for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
1368
- args[_key2 - 1] = arguments[_key2];
1369
- }
1370
- const value = args.pop();
1371
- let unit, asNumber;
1372
- if (value === "auto") {
1373
- unit = _YGEnums.Unit.Auto;
1374
- asNumber = void 0;
1375
- } else if (typeof value === "object") {
1376
- unit = value.unit;
1377
- asNumber = value.valueOf();
1378
- } else {
1379
- unit = typeof value === "string" && value.endsWith("%") ? _YGEnums.Unit.Percent : _YGEnums.Unit.Point;
1380
- asNumber = parseFloat(value);
1381
- if (!Number.isNaN(value) && Number.isNaN(asNumber)) {
1382
- throw new Error(`Invalid value ${value} for ${fnName}`);
1383
- }
1384
- }
1385
- if (!methods[unit])
1386
- throw new Error(`Failed to execute "${fnName}": Unsupported unit '${value}'`);
1387
- if (asNumber !== void 0) {
1388
- return methods[unit].call(this, ...args, asNumber);
1389
- } else {
1390
- return methods[unit].call(this, ...args);
1391
- }
1392
- });
1393
- }
1394
- function wrapMeasureFunction(measureFunction) {
1395
- return lib.MeasureCallback.implement({
1396
- measure: function() {
1397
- const {
1398
- width,
1399
- height
1400
- } = measureFunction(...arguments);
1401
- return {
1402
- width: width ?? NaN,
1403
- height: height ?? NaN
1404
- };
1405
- }
1406
- });
1407
- }
1408
- patch(lib.Node.prototype, "setMeasureFunc", function(original, measureFunc) {
1409
- if (measureFunc) {
1410
- return original.call(this, wrapMeasureFunction(measureFunc));
1411
- } else {
1412
- return this.unsetMeasureFunc();
1413
- }
1414
- });
1415
- function wrapDirtiedFunc(dirtiedFunction) {
1416
- return lib.DirtiedCallback.implement({
1417
- dirtied: dirtiedFunction
1418
- });
1419
- }
1420
- patch(lib.Node.prototype, "setDirtiedFunc", function(original, dirtiedFunc) {
1421
- original.call(this, wrapDirtiedFunc(dirtiedFunc));
1422
- });
1423
- patch(lib.Config.prototype, "free", function() {
1424
- lib.Config.destroy(this);
1425
- });
1426
- patch(lib.Node, "create", (_, config) => {
1427
- return config ? lib.Node.createWithConfig(config) : lib.Node.createDefault();
1428
- });
1429
- patch(lib.Node.prototype, "free", function() {
1430
- lib.Node.destroy(this);
1431
- });
1432
- patch(lib.Node.prototype, "freeRecursive", function() {
1433
- for (let t = 0, T = this.getChildCount(); t < T; ++t) {
1434
- this.getChild(0).freeRecursive();
1435
- }
1436
- this.free();
1437
- });
1438
- patch(lib.Node.prototype, "calculateLayout", function(original) {
1439
- let width = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : NaN;
1440
- let height = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : NaN;
1441
- let direction = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : _YGEnums.Direction.LTR;
1442
- return original.call(this, width, height, direction);
1443
- });
1444
- return {
1445
- Config: lib.Config,
1446
- Node: lib.Node,
1447
- ..._YGEnums.default
1448
- };
1449
- }
1450
- var wasmAsyncWeb = { exports: {} };
1451
- (function(module2, exports2) {
1452
- var loadYoga = (() => {
1453
- var _scriptDir = typeof document !== "undefined" && document.currentScript ? document.currentScript.src : void 0;
1454
- return function(loadYoga2) {
1455
- loadYoga2 = loadYoga2 || {};
1456
- var h;
1457
- h || (h = typeof loadYoga2 !== "undefined" ? loadYoga2 : {});
1458
- var ba, ca2;
1459
- h.ready = new Promise(function(a, b) {
1460
- ba = a;
1461
- ca2 = b;
1462
- });
1463
- var da = Object.assign({}, h), q = "";
1464
- "undefined" != typeof document && document.currentScript && (q = document.currentScript.src);
1465
- _scriptDir && (q = _scriptDir);
1466
- 0 !== q.indexOf("blob:") ? q = q.substr(0, q.replace(/[?#].*/, "").lastIndexOf("/") + 1) : q = "";
1467
- var ea = h.print || console.log.bind(console), v = h.printErr || console.warn.bind(console);
1468
- Object.assign(h, da);
1469
- da = null;
1470
- var w;
1471
- h.wasmBinary && (w = h.wasmBinary);
1472
- h.noExitRuntime || true;
1473
- "object" != typeof WebAssembly && x("no native wasm support detected");
1474
- var fa, ha = false;
1475
- function ia(a, b, c) {
1476
- c = b + c;
1477
- for (var d = ""; !(b >= c); ) {
1478
- var e = a[b++];
1479
- if (!e)
1480
- break;
1481
- if (e & 128) {
1482
- var f = a[b++] & 63;
1483
- if (192 == (e & 224))
1484
- d += String.fromCharCode((e & 31) << 6 | f);
1485
- else {
1486
- var g = a[b++] & 63;
1487
- e = 224 == (e & 240) ? (e & 15) << 12 | f << 6 | g : (e & 7) << 18 | f << 12 | g << 6 | a[b++] & 63;
1488
- 65536 > e ? d += String.fromCharCode(e) : (e -= 65536, d += String.fromCharCode(55296 | e >> 10, 56320 | e & 1023));
1489
- }
1490
- } else
1491
- d += String.fromCharCode(e);
1492
- }
1493
- return d;
1494
- }
1495
- var ja, ka, z, A, la, C, D, ma, na;
1496
- function oa() {
1497
- var a = fa.buffer;
1498
- ja = a;
1499
- h.HEAP8 = ka = new Int8Array(a);
1500
- h.HEAP16 = A = new Int16Array(a);
1501
- h.HEAP32 = C = new Int32Array(a);
1502
- h.HEAPU8 = z = new Uint8Array(a);
1503
- h.HEAPU16 = la = new Uint16Array(a);
1504
- h.HEAPU32 = D = new Uint32Array(a);
1505
- h.HEAPF32 = ma = new Float32Array(a);
1506
- h.HEAPF64 = na = new Float64Array(a);
1507
- }
1508
- var pa, qa = [], ra = [], sa = [];
1509
- function ta() {
1510
- var a = h.preRun.shift();
1511
- qa.unshift(a);
1512
- }
1513
- var E = 0, F = null;
1514
- function x(a) {
1515
- if (h.onAbort)
1516
- h.onAbort(a);
1517
- a = "Aborted(" + a + ")";
1518
- v(a);
1519
- ha = true;
1520
- a = new WebAssembly.RuntimeError(a + ". Build with -sASSERTIONS for more info.");
1521
- ca2(a);
1522
- throw a;
1523
- }
1524
- function va(a) {
1525
- return a.startsWith("data:application/octet-stream;base64,");
1526
- }
1527
- var G;
1528
- G = "data:application/octet-stream;base64,AGFzbQEAAAABvgM4YAF/AGACf38AYAF/AX9gA39/fwBgAn98AGACf38Bf2ADf39/AX9gAABgA39/fABgAX8BfGADf399AX1gBX9/f39/AX9gAn9/AXxgAAF/YAZ/f31/fX8AYAR/f39/AX9gAn9/AX1gBn9/f39/fwF/YAV/f39/fwBgBH9/f38AYAN/fn8BfmAHf39/f39/fwBgBn9/f39/fwBgAn19AX1gAX0Bf2ABfwF9YAZ/fH9/f38Bf2ACf30AYAR/fHx/AGAIf39/f39/f38AYA1/f39/f39/f39/f39/AGAKf39/f39/f39/fwBgBX9/f39/AXxgBH9/fX0BfWAEfHx/fwF9YA5/fX1/f399fX9/f39/fwF/YAZ/f319f38AYAJ+fwF/YAR/fX1/AX1gA399fQF9YAF8AXxgBH98fHwAYAV/f319fQF9YA5/fX1/f399fX9/f39/fwBgB39/fX99f38AYA1/fX99f31/fX19fX1/AX9gBX9/fX19AGAEf39+fgBgB39/f39/f38Bf2ACfH8BfGAFf398fH8AYAN/f38BfWADf39/AXxgBH9/f3wAYAN/f30AYAZ/f31/fX8BfwKvAR0BYQFhAB0BYQFiAAMBYQFjABUBYQFkABIBYQFlAAcBYQFmAB4BYQFnAAABYQFoAB8BYQFpAAMBYQFqAAABYQFrABYBYQFsAAUBYQFtAAMBYQFuAAEBYQFvABYBYQFwAAYBYQFxAAABYQFyAAABYQFzACABYQF0ABMBYQF1AAsBYQF2ABUBYQF3AAIBYQF4AAMBYQF5AA8BYQF6AAIBYQFBAAEBYQFCABIBYQFDAAEDgwKBAgIXChAQCgoKIQIDEgAGBgcBBRgiGAYPCgMGIwMDBSQDGSUBDwoZAwMKAgUAAAIDAQMGAgcBCAwAFygHAAUAKQIBKistAwMGAgECAAEuCgUKLwcFEwIwCzECBwIAAgEGEwECAgEFAQAHAQURAQEBAQgIAQEAAg0CAgIFAQEBGwMNAQEBCwsGFAIBGhQGAgcCDgAAAAUyMzQMBQYINQUCAwUNDQ02AgMCAgIDBgICNwIMDAwBCQkJCQkJHAIAAAABAA4BBQICAQMCEAMMCQEBAQEBAQkJAQICAwICAgICAgMCCAEICAgEBAQEBAQEBAQABAQABAQEBAAEBAQBAQEICAEBBAcB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ABAAQQgQHSIAQQA2AgQgAEHxADYCAEGbN0GUC0EDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEHyADYCAEGbN0GdEUECQYAlQbgiQdMAIABBABAAQQgQHSIAQQA2AgQgAEHzADYCAEGbN0GxFEEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH0ADYCAEGbN0GUDEEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH1ADYCAEGbN0GHDUEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH2ADYCAEGbN0GlC0EDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH3ADYCAEGbN0GHFEEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH4ADYCAEGbN0HxC0EDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH5ADYCAEGbN0HZDEEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH6ADYCAEGbN0GAC0EDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH7ADYCAEGbN0GBEkEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH8ADYCAEGbN0GtEEEEQaAlQbAlQdkAIABBABAAQQgQHSIAQQA2AgQgAEH9ADYCAEGbN0GfFUEEQaAlQbAlQdkAIABBABAAQQgQHSIAQQA2AgQgAEH+ADYCAEGbN0GnDEEEQaAlQbAlQdkAIABBABAAQQgQHSIAQQA2AgQgAEH/ADYCAEGbN0GMEUEEQaAlQbAlQdkAIABBABAAQQgQHSIAQQA2AgQgAEGAATYCAEGbN0GCF0ECQcQlQcQiQYEBIABBABAAQQgQHSIAQQA2AgQgAEGCATYCAEGbN0GrEkEDQcwlQaAjQYMBIABBABAAQQgQHSIAQQA2AgQgAEGEATYCAEGbN0HcCkECQcQlQcQiQYEBIABBABAAQQgQHSIAQQA2AgQgAEGFATYCAEGbN0GoDkECQcQlQcQiQYEBIABBABAAQQgQHSIAQQA2AgQgAEGGATYCAEGbN0HFFkECQcQlQcQiQYEBIABBABAAQQgQHSIAQQA2AgQgAEGHATYCAEGbN0HcEkECQcQlQcQiQYEBIABBABAAQQgQHSIAQQA2AgQgAEGIATYCAEGbN0GAEUECQcQlQcQiQYEBIABBABAAQQgQHSIAQQA2AgQgAEGJATYCAEGbN0G6CkECQcQlQcQiQYEBIABBABAAQQgQHSIAQQA2AgQgAEGKATYCAEGbN0H3EkEDQcwlQaAjQYMBIABBABAAQQgQHSIAQQA2AgQgAEGLATYCAEGbN0HDDkECQdglQcQiQYwBIABBABAAQQgQHSIAQQA2AgQgAEGNATYCAEGbN0G4CUECQeAlQeokQY4BIABBABAAQQgQHSIAQQA2AgQgAEGPATYCAEGbN0HTE0ECQeAlQeokQY4BIABBABAAQQgQHSIAQQA2AgQgAEGQATYCAEGbN0GoFEECQdglQcQiQYwBIABBABAAQQgQHSIAQQA2AgQgAEGRATYCAEGbN0H9DEECQdglQcQiQYwBIABBABAAQQgQHSIAQQA2AgQgAEGSATYCAEGbN0G9FEECQdglQcQiQYwBIABBABAAQQgQHSIAQQA2AgQgAEGTATYCAEGbN0GUDUECQdglQcQiQYwBIABBABAAQQgQHSIAQQA2AgQgAEGUATYCAEGbN0GTFEECQdglQcQiQYwBIABBABAAQQgQHSIAQQA2AgQgAEGVATYCAEGbN0HmDEECQdglQcQiQYwBIABBABAAQQgQHSIAQQA2AgQgAEGWATYCAEGbN0GQEkECQeAlQeokQY4BIABBABAAQQgQHSIAQQA2AgQgAEGXATYCAEGbN0G3EEEDQeglQfQlQZgBIABBABAAQQgQHSIAQQA2AgQgAEGZATYCAEGbN0HQCUECQcQlQcQiQYEBIABBABAAQQgQHSIAQQA2AgQgAEGaATYCAEGbN0H8CEECQcQlQcQiQYEBIABBABAAQQgQHSIAQQA2AgQgAEGbATYCAEGbN0GqFUEDQcwlQaAjQYMBIABBABAAQQgQHSIAQQA2AgQgAEGcATYCAEGbN0GTEUEDQfwlQYgmQZ0BIABBABAAQQgQHSIAQQA2AgQgAEGeATYCAEGbN0HaF0EEQZAmQZAkQZ8BIABBABAAQQgQHSIAQQA2AgQgAEGgATYCAEGbN0HvF0EDQaAmQbgkQaEBIABBABAAQQgQHSIAQQA2AgQgAEGiATYCAEGbN0GNCkECQawmQcQiQaMBIABBABAAQQgQHSIAQQA2AgQgAEGkATYCAEGbN0HsCkECQbQmQcQiQaUBIABBABAAQQgQHSIAQQA2AgQgAEGmATYCAEGbN0HmF0EDQbwmQaAjQacBIABBABAAQQgQHSIAQQA2AgQgAEGoATYCAEGbN0GSF0ECQcgmQcQiQakBIABBABAAQQgQHSIAQQA2AgQgAEGqATYCAEGbN0GmF0EDQdAmQbgkQasBIABBABAAQQgQHSIAQQA2AgQgAEGsATYCAEGbN0GdGkEDQdwmQbgkQa0BIABBABAAQQgQHSIAQQA2AgQgAEGuATYCAEGbN0GbGkECQYAlQbgiQdMAIABBABAAQQgQHSIAQQA2AgQgAEGvATYCAEGbN0GuGkEDQegmQbgkQbABIABBABAAQQgQHSIAQQA2AgQgAEGxATYCAEGbN0GsGkECQYAlQbgiQdMAIABBABAAQQgQHSIAQQA2AgQgAEGyATYCAEGbN0HfCEECQYAlQbgiQdMAIABBABAAQQgQHSIAQQA2AgQgAEGzATYCAEGbN0HXCEECQfQmQcQiQbQBIABBABAAQQgQHSIAQQA2AgQgAEG1ATYCAEGbN0HcCUEFQYAnQZQnQbYBIABBABAAQQgQHSIAQQA2AgQgAEG3ATYCAEGbN0HJDUECQeAlQeokQY4BIABBABAAQQgQHSIAQQA2AgQgAEG4ATYCAEGbN0GzDUECQeAlQeokQY4BIABBABAAQQgQHSIAQQA2AgQgAEG5ATYCAEGbN0HlEEECQeAlQeokQY4BIABBABAAQQgQHSIAQQA2AgQgAEG6ATYCAEGbN0GeE0ECQeAlQeokQY4BIABBABAAQQgQHSIAQQA2AgQgAEG7ATYCAEGbN0HJFEECQeAlQeokQY4BIABBABAAQQgQHSIAQQA2AgQgAEG8ATYCAEGbN0GhDUECQeAlQeokQY4BIABBABAAQQgQHSIAQQA2AgQgAEG9ATYCAEGbN0HsCUECQZwnQcQiQb4BIABBABAAQQgQHSIAQQA2AgQgAEG/ATYCAEGbN0GBE0EDQeglQfQlQZgBIABBABAAQQgQHSIAQQA2AgQgAEHAATYCAEGbN0HBEEEDQeglQfQlQZgBIABBABAAQQgQHSIAQQA2AgQgAEHBATYCAEGbN0G1FUEDQeglQfQlQZgBIABBABAACyoBAX8jAEEQayICJAAgAEUEQCACIAE2AgBBACACEC0QLAALIAJBEGokAAu5BQECfyAAQQA2AgAgAEIANwIIIABCADcCECAAQQA2AhggAEKAgID+p9Wq1f8ANwIkIABCgICA/oeAgOD/ADcCHCAAIAAtAARBgAFxOgAEIABBLGpBAEEkECohAwNAIAMgAkECdGpBgICA/gc2AgAgAkEBaiICQQlHDQALQQAhAiAAQdAAakEAQSQQKiEDA0AgAyACQQJ0akGAgID+BzYCACACQQFqIgJBCUcNAAtBACECIABB9ABqQQBBJBAqIQMDQCADIAJBAnRqQYCAgP4HNgIAIAJBAWoiAkEJRw0AC0EAIQIgAEGYAWpBAEEkECohAwNAIAMgAkECdGpBgICA/gc2AgAgAkEBaiICQQlHDQALQQAhAiAAQQA2AsQBIABBvAFqIgNCADcCAANAIAMgAkECdGpBgICA/gc2AgAgAkEBaiICQQNHDQALIABBgCE2AhggAEGAgID+BzYC4AEgAEKAgID+h4CA4P8ANwLYASAAQoCAgP6HgIDg/wA3AtABIABCqtWq/afVqtX/ADcCyAEgAEHkAWpBAEGgAhAqGiAAQoCAgP6HgIDg/wA3AvQBIABB/AFqQQBBMRAqGiAAQYCAgP4HNgK0AiAAQYQEaiEDIABBxAJqIQIDQCACQoCAgPyLgIDAv383AhAgAkIANwIIIAJCgICA/IuAgMC/fzcCACACQRhqIgIgA0cNAAsgAEIANwKkBCAAQoCAgP6HgIDg/wA3AoQEIABCgICA/gc3ArwEIAAgATYCuAQgAEKAgID8i4CAwL9/NwKcBCAAQgA3ApQEIABCgICA/IuAgMC/fzcCjAQgAEIANwKsBCAAQQA2ArQEIABCgICA/gc3AsQEIAFBAEdByBUQhQEgACAALQAEQQFyOgAEIAEtAAhBAXEEQCAAIAAoAhhB83hxQYgEcjYCGAsgAAvnAQEBfwJAAkAgAARAAn8gAUEEcQRAIAIgAyAEIAUgABEPAAwBCyACIAMgBCAAEQYACyIFDQELQcwEEB0iBSACQagEECsiAUEANgK0BCABQgA3AqwEIAIoArAEIgMgAigCrAQiBEcEQCADIARrIgZBAEgNAiABIAYQHSIANgKsBCABIAAgBmo2ArQEA0AgACAEKAIANgIAIABBBGohACAEQQRqIgQgA0cNAAsgASAANgKwBAsgASACKQK4BDcCuAQgASACKALIBDYCyAQgASACKQLABDcCwAQgAUEANgKoBAsgBQ8LEAQAC3EBAX8CQCAAKAIAIgAoAhgiAkECdkEDcSABRg0AIAAgAkFzcSABQQJ0QQxxcjYCGANAIAAtAAQiAUEEcQ0BIAAgAUEEcjoABCAAKAIUIgEEQCAAIAERAAALIABBgICA/gc2ArQCIAAoAqgEIgANAAsLCw0AIAAoAgBBByABEE0LDQAgACgCAEEGIAEQTQsNACAAKAIAQQUgARBNCxAAIAAoAgAgASACthAxEGILEAAgACgCACABIAK2EC8QYgt1AQF/AkAgACgCACIAKAIYIgJBEHZBA3EgAUYNACAAIAJB//9zcSABQRB0QYCADHFyNgIYA0AgAC0ABCIBQQRxDQEgACABQQRyOgAEIAAoAhQiAQRAIAAgAREAAAsgAEGAgID+BzYCtAIgACgCqAQiAA0ACwsLxwkCBn8DfQJAAkAgASgCACIFKAIYIAAoAgAiASgCGHNB////A3ENACAFKAIoIQACfwJAIAEoAigiAkHw4YP8B0cEQEMAAMB/IQhBAyACQarVqv0HRg0CGiACQY+evPwHRw0BQwAAAAAhCEEBDAILQQIMAQtBACACviIJIAlcDQAaIAJB/////3txQYCAgIACar4hCEECQQEgAkGAgICABHEbCyEDAn8CQCAAQfDhg/wHRwRAQwAAwH8hCUEDIABBqtWq/QdGDQIaIABBj568/AdHDQFDAAAAACEJQQEMAgtDAAAAACEJQQIMAQtBACAAviIKIApcDQAaIABB/////3txQYCAgIACar4hCUECQQEgAEGAgICABHEbCyADRyADRSAIIAhcIAkgCVxxciAIIAmTi0MXt9E4XXJFcg0AIAFBLGoiAygCACAFQSxqIgQoAgBHDQBBACEAAkADQCAAIgJBAWoiAEEJRg0BIAMgAEECdCIGaigCACAEIAZqKAIARg0ACyACQQhJDQELIAFB0ABqIgMoAgAgBUHQAGoiBCgCAEcNAEEAIQACQANAIAAiAkEBaiIAQQlGDQEgAyAAQQJ0IgZqKAIAIAQgBmooAgBGDQALIAJBCEkNAQsgAUH0AGoiAygCACAFQfQAaiIEKAIARw0AQQAhAAJAA0AgACICQQFqIgBBCUYNASADIABBAnQiBmooAgAgBCAGaigCAEYNAAsgAkEISQ0BCyABQZgBaiIDKAIAIAVBmAFqIgQoAgBHDQBBACEAAkADQCAAIgJBAWoiAEEJRg0BIAMgAEECdCIGaigCACAEIAZqKAIARg0ACyACQQhJDQELIAFBvAFqIgMoAgAgBUG8AWoiBCgCAEcNAEEAIQACQANAIAAiAkEBaiIAQQNGDQEgAyAAQQJ0IgZqKAIAIAQgBmooAgBGDQALIAJBAkkNAQsgBUHIAWohBiABQcgBaiEHQQAhAEEBIQIDQAJAIAYgAEECdCIAaigCACEDIAAgB2ooAgAhBCACQQFxRQ0AQQAhAkEBIQAgAyAERg0BCwsgAyAERw0AIAVB0AFqIQYgAUHQAWohB0EAIQBBASECA0ACQCAGIABBAnQiAGooAgAhAyAAIAdqKAIAIQQgAkEBcUUNAEEAIQJBASEAIAMgBEYNAQsLIAMgBEcNACAFQdgBaiEGIAFB2AFqIQdBACEAQQEhAgNAAkAgBiAAQQJ0IgBqKAIAIQMgACAHaigCACEEIAJBAXFFDQBBACECQQEhACADIARGDQELCyADIARHDQAgBSoCHCIJIAlcIgAgASoCHCIIIAhbRiAIIAhcIAByRSAIIAlccXINACABKgIgIgggCFsgBSoCICIJIAlcRiAIIAhbIAggCVxxcg0AIAUqAiQiCCAIXCIAIAEqAiQiCSAJW0YNACAARQRAIAggCVwNAQtBACEAIAEqAuABIgggCFwEQEEBIQAgBSoC4AEiCSAJXA0CCyAIIAUqAuABIglbIAAgCSAJXHFyDQELIAFBGGogBUEYakHMARArGgNAIAEtAAQiAEEEcQ0BIAEgAEEEcjoABCABKAIUIgAEQCABIAARAAALIAFBgICA/gc2ArQCIAEoAqgEIgENAAsLC8kCAQN/IwBB8ARrIgIkACAAKAIEIQEgAEEANgIEIAEEQCABIAEoAgAoAgQRAAALIAAoAgghASAAQQA2AgggAQRAIAEgASgCACgCBBEAAAsCQCAAKAIAIgAoArAEIAAoAqwERgRAIAAoAqgEDQEgACACQSBqIAAoArgEEIYBIgEpAgA3AgAgACABKQIQNwIQIAAgASkCCDcCCCAAQRhqIAFBGGpBzAEQKxogAEHkAWogAUHkAWpByAIQKxogACgCrAQiAwRAIAAgAzYCsAQgAxApCyAAIAEoAqwENgKsBCAAIAEoArAENgKwBCAAIAEoArQENgK0BCAAIAEoAsgENgLIBCAAIAEpAsAENwLABCAAIAEpArgENwK4BCACQfAEaiQADwsgAkHlGTYCECAAIAJBEGoQLRAsAAsgAkH/DzYCACAAIAIQLRAsAAsKAEEMEB0gABBZCwoAQQwQHUEAEFkLDQAgACgCAC0ACEEBcQsKACAAKAIAKAIQCw0AIAAoAgAoAhBBAXELGwAgAUEDTwRAEAQACyAAKAIAKAIMIAF2QQFxCxgAIAAoAgAiACAALQAIQf4BcSABcjoACAsMACAAKAIAIAE2AhALFwAgACgCACIAIAAoAhBBfnEgAXI2AhAL/QEBA38jAEEQayICJAAgACgCACEAIAFDAAAAAGBFBEAgAkHXETYCACMAQRBrIgMkACADIAI2AgwCQCAADQBB6DYtAAAEQEHkNigCACEADAELQRwQHSIAQoCAgPwDNwIUIABCADcCDCAAQQA2AgAgAEEAOgAIIABBATYCBEHkNiAANgIAQeg2QQE6AABB4DZB4DYoAgBBAWo2AgALIAAoAgQhBAJAIAAtAAhBCHEEQCAAQQBBBUEAQbwhIAIgBBERABoMAQsgAEEAQQVBvCEgAiAEEQsAGgsgA0EQaiQAECwACyAAQwAAAAAgASABQwAAAABbGzgCFCACQRBqJAALPAAgAUEDSQRAQQEgAXQhASAAKAIAIgACfyACBEAgACgCDCABcgwBCyAAKAIMIAFBf3NxCzYCDA8LEAQAC00BAn9BBBAdIQFBHBAdIgBCgICA/AM3AhQgAEIANwIMIABBADYCACAAQQA6AAggAEEBNgIEQeA2QeA2KAIAQQFqNgIAIAEgADYCACABCxAAIABBDTYCBCAAIAE2AgALEAAgAEEKNgIEIAAgATYCAAsQACAAQQc2AgQgACABNgIACyMAIAJBBUdBACACG0UEQEGoLCADIAQQYw8LQbgtIAMgBBBjCyIBAX4gASACrSADrUIghoQgBCAAERQAIgVCIIinJAEgBacLqAEBBX8gACgCVCIDKAIAIQUgAygCBCIEIAAoAhQgACgCHCIHayIGIAQgBkkbIgYEQCAFIAcgBhArGiADIAMoAgAgBmoiBTYCACADIAMoAgQgBmsiBDYCBAsgBCACIAIgBEsbIgQEQCAFIAEgBBArGiADIAMoAgAgBGoiBTYCACADIAMoAgQgBGs2AgQLIAVBADoAACAAIAAoAiwiATYCHCAAIAE2AhQgAgsEAEIACwQAQQALigUCBn4CfyABIAEoAgBBB2pBeHEiAUEQajYCACAAIQkgASkDACEDIAEpAwghBiMAQSBrIggkAAJAIAZC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBkIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICAgICACFoEQCAEQoGAgICAgICAwAB8IQIMAgsgBEKAgICAgICAgEB9IQIgA0KAgICAgICAgAhSDQEgAiAEQgGDfCECDAELIANQIARCgICAgICAwP//AFQgBEKAgICAgIDA//8AURtFBEAgBkIEhiADQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgBEL///////+//8MAVg0AQgAhAiAEQjCIpyIAQZH3AEkNACADIQIgBkL///////8/g0KAgICAgIDAAIQiBSEHAkAgAEGB9wBrIgFBwABxBEAgAiABQUBqrYYhB0IAIQIMAQsgAUUNACAHIAGtIgSGIAJBwAAgAWutiIQhByACIASGIQILIAggAjcDECAIIAc3AxgCQEGB+AAgAGsiAEHAAHEEQCAFIABBQGqtiCEDQgAhBQwBCyAARQ0AIAVBwAAgAGuthiADIACtIgKIhCEDIAUgAoghBQsgCCADNwMAIAggBTcDCCAIKQMIQgSGIAgpAwAiA0I8iIQhAiAIKQMQIAgpAxiEQgBSrSADQv//////////D4OEIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACFINACACQgGDIAJ8IQILIAhBIGokACAJIAIgBkKAgICAgICAgIB/g4S/OQMAC5gYAxJ/AXwDfiMAQbAEayIMJAAgDEEANgIsAkAgAb0iGUIAUwRAQQEhEUGZCSETIAGaIgG9IRkMAQsgBEGAEHEEQEEBIRFBnAkhEwwBC0GfCUGaCSAEQQFxIhEbIRMgEUUhFQsCQCAZQoCAgICAgID4/wCDQoCAgICAgID4/wBRBEAgAEEgIAIgEUEDaiIDIARB//97cRAoIAAgEyARECcgAEGTE0GDGyAFQSBxIgUbQbQWQYcbIAUbIAEgAWIbQQMQJyAAQSAgAiADIARBgMAAcxAo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ABECAAsFAEGbNwsPACABIAAoAgBqIAI2AgALDQAgASAAKAIAaigCAAsYAQF/QRAQHSIAQgA3AwggAEEANgIAIAALGAEBf0EQEB0iAEIANwMAIABCADcDCCAACwwAQTAQHUEAQTAQKgs3AQF/IAEgACgCBCIDQQF1aiEBIAAoAgAhACABIAIgA0EBcQR/IAEoAgAgAGooAgAFIAALERsACwUAQZY3CyEAIAAgASgCACABIAEsAAtBAEgbQZM3IAIoAgAQDzYCAAsqAQF/QQwQHSIBQQA6AAQgASAAKAIANgIIIABBADYCACABQcgjNgIAIAELBQBBkzcLBQBBkDcLIQAgACABKAIAIAEgASwAC0EASBtB/DYgAigCABAPNgIAC9gBAQR/IwBBIGsiAyQAIAEoAgAiBEHw////B0kEQAJAAkAgBEELTwRAIARBD3JBAWoiBRAdIQYgAyAFQYCAgIB4cjYCECADIAY2AgggAyAENgIMIAQgBmohBQwBCyADIAQ6ABMgA0EIaiIGIARqIQUgBEUNAQsgBiABQQRqIAQQKxoLIAVBADoAACADIAI2AgAgA0EYaiADQQhqIAMgABEDACADKAIYEBAgAygCGCIAEAYgAygCABAGIAMsABNBAEgEQCADKAIIECkLIANBIGokACAADwsQBAALKgEBf0EMEB0iAUEAOgAEIAEgACgCADYCCCAAQQA2AgAgAUHQIjYCACABCwUAQfw2C2kBAn8jAEEQayIGJAAgASAAKAIEIgdBAXVqIQEgACgCACEAIAYgASACIAMgBCAFIAdBAXEEfyABKAIAIABqKAIABSAACxEOAEEQEB0iACAGKQMINwMIIAAgBikDADcDACAGQRBqJAAgAAsFAEH4NgubAQIBfwF9IwBBEGsiAiQAIAAoAgAhACABQQZIBEACfwJAAkACQCABQQRrDgIAAQILIABBpAJqIAAtAKwCQQNxQQJGDQIaIABBnAJqDAILIABBnAJqIAAtAKwCQQNxQQJGDQEaIABBpAJqDAELIAAgAUECdGpBnAJqCyoCACEDIAJBEGokACADuw8LIAJB0A42AgAgACACEC0QLAALmwECAX8BfSMAQRBrIgIkACAAKAIAIQAgAUEGSARAAn8CQAJAAkAgAUEEaw4CAAECCyAAQZQCaiAALQCsAkEDcUECRg0CGiAAQYwC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bXNlbHZlcyBhcyBkaXJ0eQBpc0RpcnR5AG1hcmtEaXJ0eQBkZXN0cm95AHNldERpc3BsYXkAZ2V0RGlzcGxheQBzZXRGbGV4AC0rICAgMFgweAAtMFgrMFggMFgtMHgrMHggMHgAc2V0RmxleEdyb3cAZ2V0RmxleEdyb3cAc2V0T3ZlcmZsb3cAZ2V0T3ZlcmZsb3cAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AHNldEFsaWduQ29udGVudABnZXRBbGlnbkNvbnRlbnQAZ2V0UGFyZW50AGltcGxlbWVudABzZXRNYXhIZWlnaHRQZXJjZW50AHNldEhlaWdodFBlcmNlbnQAc2V0TWluSGVpZ2h0UGVyY2VudABzZXRGbGV4QmFzaXNQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHVzZUxlZ2FjeVN0cmV0Y2hCZWhhdmlvdXIAc2V0VXNlTGVnYWN5U3RyZXRjaEJlaGF2aW91cgBzZXRQb2ludFNjYWxlRmFjdG9yAE1lYXN1cmVDYWxsYmFja1dyYXBwZXIARGlydGllZENhbGxiYWNrV3JhcHBlcgBDYW5ub3QgcmVzZXQgYSBub2RlIHN0aWxsIGF0dGFjaGVkIHRvIGEgb3duZXIAc2V0Qm9yZGVyAGdldEJvcmRlcgBnZXRDb21wdXRlZEJvcmRlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRNYXJnaW5BdXRvAHNldFdpZHRoQXV0bwBTY2FsZSBmYWN0b3Igc2hvdWxkIG5vdCBiZSBsZXNzIHRoYW4gemVybwBzZXRBc3BlY3RSYXRpbwBnZXRBc3BlY3RSYXRpbwBzZXRQb3NpdGlvbgBnZXRQb3NpdGlvbgBub3RpZnlPbkRlc3RydWN0aW9uAHNldEZsZXhEaXJlY3Rpb24AZ2V0RmxleERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAd2lkdGgAc2V0TWF4V2lkdGgAZ2V0TWF4V2lkdGgAc2V0V2lkdGgAZ2V0V2lkdGgAc2V0TWluV2lkdGgAZ2V0TWluV2lkdGgAZ2V0Q29tcHV0ZWRXaWR0aAB1bnNpZ25lZCBsb25nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAEF0dGVtcHRpbmcgdG8gY29uc3RydWN0IFlHTm9kZSB3aXRoIG51bGwgY29uZmlnAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBjcmVhdGVXaXRoQ29uZmlnAGluZgBzZXRBbGlnblNlbGYAZ2V0QWxpZ25TZWxmAFNpemUAdmFsdWUAVmFsdWUAY3JlYXRlAG1lYXN1cmUAc2V0UG9zaXRpb25UeXBlAGdldFBvc2l0aW9uVHlwZQBpc1JlZmVyZW5jZUJhc2VsaW5lAHNldElzUmVmZXJlbmNlQmFzZWxpbmUAY29weVN0eWxlAGRvdWJsZQBOb2RlAGV4dGVuZABpbnNlcnRDaGlsZABnZXRDaGlsZAByZW1vdmVDaGlsZAB2b2lkAGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodE1lYXN1cmVNb2RlIG11c3QgYmUgWUdNZWFzdXJlTW9kZVVuZGVmaW5lZABhdmFpbGFibGVXaWR0aCBpcyBpbmRlZmluaXRlIHNvIHdpZHRoTWVhc3VyZU1vZGUgbXVzdCBiZSBZR01lYXN1cmVNb2RlVW5kZWZpbmVkAHNldEV4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGlzRXhwZXJpbWVudGFsRmVhdHVyZUVuYWJsZWQAZGlydGllZABDYW5ub3QgcmVzZXQgYSBub2RlIHdoaWNoIHN0aWxsIGhhcyBjaGlsZHJlbiBhdHRhY2hlZAB1bnNldE1lYXN1cmVGdW5jAHVuc2V0RGlydGllZEZ1bmMAc2V0RXJyYXRhAGdldEVycmF0YQBFeHBlY3QgY3VzdG9tIGJhc2VsaW5lIGZ1bmN0aW9uIHRvIG5vdCByZXR1cm4gTmFOAE5BTgBJTkYAZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZmxvYXQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVp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";
1529
- if (!va(G)) {
1530
- var wa = G;
1531
- G = h.locateFile ? h.locateFile(wa, q) : q + wa;
1532
- }
1533
- function xa() {
1534
- var a = G;
1535
- try {
1536
- if (a == G && w)
1537
- return new Uint8Array(w);
1538
- if (va(a))
1539
- try {
1540
- var b = ya(a.slice(37)), c = new Uint8Array(b.length);
1541
- for (a = 0; a < b.length; ++a)
1542
- c[a] = b.charCodeAt(a);
1543
- var d = c;
1544
- } catch (f) {
1545
- throw Error("Converting base64 string to bytes failed.");
1546
- }
1547
- else
1548
- d = void 0;
1549
- var e = d;
1550
- if (e)
1551
- return e;
1552
- throw "both async and sync fetching of the wasm failed";
1553
- } catch (f) {
1554
- x(f);
1555
- }
1556
- }
1557
- function za() {
1558
- return w || "function" != typeof fetch ? Promise.resolve().then(function() {
1559
- return xa();
1560
- }) : fetch(G, { credentials: "same-origin" }).then(function(a) {
1561
- if (!a.ok)
1562
- throw "failed to load wasm binary file at '" + G + "'";
1563
- return a.arrayBuffer();
1564
- }).catch(function() {
1565
- return xa();
1566
- });
1567
- }
1568
- function Aa(a) {
1569
- for (; 0 < a.length; )
1570
- a.shift()(h);
1571
- }
1572
- function Ba(a) {
1573
- if (void 0 === a)
1574
- return "_unknown";
1575
- a = a.replace(/[^a-zA-Z0-9_]/g, "$");
1576
- var b = a.charCodeAt(0);
1577
- return 48 <= b && 57 >= b ? "_" + a : a;
1578
- }
1579
- function Ca(a, b) {
1580
- a = Ba(a);
1581
- return function() {
1582
- return b.apply(this, arguments);
1583
- };
1584
- }
1585
- var H = [{}, { value: void 0 }, { value: null }, { value: true }, { value: false }], Da = [];
1586
- function Ea(a) {
1587
- var b = Error, c = Ca(a, function(d) {
1588
- this.name = a;
1589
- this.message = d;
1590
- d = Error(d).stack;
1591
- void 0 !== d && (this.stack = this.toString() + "\n" + d.replace(/^Error(:[^\n]*)?\n/, ""));
1592
- });
1593
- c.prototype = Object.create(b.prototype);
1594
- c.prototype.constructor = c;
1595
- c.prototype.toString = function() {
1596
- return void 0 === this.message ? this.name : this.name + ": " + this.message;
1597
- };
1598
- return c;
1599
- }
1600
- var J = void 0;
1601
- function K(a) {
1602
- throw new J(a);
1603
- }
1604
- var L = (a) => {
1605
- a || K("Cannot use deleted val. handle = " + a);
1606
- return H[a].value;
1607
- }, Fa = (a) => {
1608
- switch (a) {
1609
- case void 0:
1610
- return 1;
1611
- case null:
1612
- return 2;
1613
- case true:
1614
- return 3;
1615
- case false:
1616
- return 4;
1617
- default:
1618
- var b = Da.length ? Da.pop() : H.length;
1619
- H[b] = { fa: 1, value: a };
1620
- return b;
1621
- }
1622
- }, Ga = void 0, Ha = void 0;
1623
- function M(a) {
1624
- for (var b = ""; z[a]; )
1625
- b += Ha[z[a++]];
1626
- return b;
1627
- }
1628
- var N = [];
1629
- function Ia() {
1630
- for (; N.length; ) {
1631
- var a = N.pop();
1632
- a.L.Z = false;
1633
- a["delete"]();
1634
- }
1635
- }
1636
- var O = void 0, P = {};
1637
- function Ja(a, b) {
1638
- for (void 0 === b && K("ptr should not be undefined"); a.P; )
1639
- b = a.aa(b), a = a.P;
1640
- return b;
1641
- }
1642
- var Q = {};
1643
- function Ka(a) {
1644
- a = La(a);
1645
- var b = M(a);
1646
- R(a);
1647
- return b;
1648
- }
1649
- function Ma(a, b) {
1650
- var c = Q[a];
1651
- void 0 === c && K(b + " has unknown type " + Ka(a));
1652
- return c;
1653
- }
1654
- function Na() {
1655
- }
1656
- var Oa = false;
1657
- function Pa(a) {
1658
- --a.count.value;
1659
- 0 === a.count.value && (a.S ? a.T.V(a.S) : a.O.M.V(a.N));
1660
- }
1661
- function Qa(a, b, c) {
1662
- if (b === c)
1663
- return a;
1664
- if (void 0 === c.P)
1665
- return null;
1666
- a = Qa(a, b, c.P);
1667
- return null === a ? null : c.ma(a);
1668
- }
1669
- var Ra = {};
1670
- function Sa(a, b) {
1671
- b = Ja(a, b);
1672
- return P[b];
1673
- }
1674
- var Ta = void 0;
1675
- function Ua(a) {
1676
- throw new Ta(a);
1677
- }
1678
- function Va(a, b) {
1679
- b.O && b.N || Ua("makeClassHandle requires ptr and ptrType");
1680
- !!b.T !== !!b.S && Ua("Both smartPtrType and smartPtr must be specified");
1681
- b.count = { value: 1 };
1682
- return S(Object.create(a, { L: { value: b } }));
1683
- }
1684
- function S(a) {
1685
- if ("undefined" === typeof FinalizationRegistry)
1686
- return S = (b) => b, a;
1687
- Oa = new FinalizationRegistry((b) => {
1688
- Pa(b.L);
1689
- });
1690
- S = (b) => {
1691
- var c = b.L;
1692
- c.S && Oa.register(b, { L: c }, b);
1693
- return b;
1694
- };
1695
- Na = (b) => {
1696
- Oa.unregister(b);
1697
- };
1698
- return S(a);
1699
- }
1700
- var Wa = {};
1701
- function Xa(a) {
1702
- for (; a.length; ) {
1703
- var b = a.pop();
1704
- a.pop()(b);
1705
- }
1706
- }
1707
- function T(a) {
1708
- return this.fromWireType(C[a >> 2]);
1709
- }
1710
- var U = {}, Ya = {};
1711
- function V(a, b, c) {
1712
- function d(k) {
1713
- k = c(k);
1714
- k.length !== a.length && Ua("Mismatched type converter count");
1715
- for (var m = 0; m < a.length; ++m)
1716
- W(a[m], k[m]);
1717
- }
1718
- a.forEach(function(k) {
1719
- Ya[k] = b;
1720
- });
1721
- var e = Array(b.length), f = [], g = 0;
1722
- b.forEach((k, m) => {
1723
- Q.hasOwnProperty(k) ? e[m] = Q[k] : (f.push(k), U.hasOwnProperty(k) || (U[k] = []), U[k].push(() => {
1724
- e[m] = Q[k];
1725
- ++g;
1726
- g === f.length && d(e);
1727
- }));
1728
- });
1729
- 0 === f.length && d(e);
1730
- }
1731
- function Za(a) {
1732
- switch (a) {
1733
- case 1:
1734
- return 0;
1735
- case 2:
1736
- return 1;
1737
- case 4:
1738
- return 2;
1739
- case 8:
1740
- return 3;
1741
- default:
1742
- throw new TypeError("Unknown type size: " + a);
1743
- }
1744
- }
1745
- function W(a, b, c = {}) {
1746
- if (!("argPackAdvance" in b))
1747
- throw new TypeError("registerType registeredInstance requires argPackAdvance");
1748
- var d = b.name;
1749
- a || K('type "' + d + '" must have a positive integer typeid pointer');
1750
- if (Q.hasOwnProperty(a)) {
1751
- if (c.ta)
1752
- return;
1753
- K("Cannot register type '" + d + "' twice");
1754
- }
1755
- Q[a] = b;
1756
- delete Ya[a];
1757
- U.hasOwnProperty(a) && (b = U[a], delete U[a], b.forEach((e) => e()));
1758
- }
1759
- function $a(a) {
1760
- K(a.L.O.M.name + " instance already deleted");
1761
- }
1762
- function X() {
1763
- }
1764
- function ab(a, b, c) {
1765
- if (void 0 === a[b].R) {
1766
- var d = a[b];
1767
- a[b] = function() {
1768
- a[b].R.hasOwnProperty(arguments.length) || K("Function '" + c + "' called with an invalid number of arguments (" + arguments.length + ") - expects one of (" + a[b].R + ")!");
1769
- return a[b].R[arguments.length].apply(this, arguments);
1770
- };
1771
- a[b].R = [];
1772
- a[b].R[d.Y] = d;
1773
- }
1774
- }
1775
- function bb(a, b) {
1776
- h.hasOwnProperty(a) ? (K("Cannot register public name '" + a + "' twice"), ab(h, a, a), h.hasOwnProperty(void 0) && K("Cannot register multiple overloads of a function with the same number of arguments (undefined)!"), h[a].R[void 0] = b) : h[a] = b;
1777
- }
1778
- function cb2(a, b, c, d, e, f, g, k) {
1779
- this.name = a;
1780
- this.constructor = b;
1781
- this.W = c;
1782
- this.V = d;
1783
- this.P = e;
1784
- this.oa = f;
1785
- this.aa = g;
1786
- this.ma = k;
1787
- this.ia = [];
1788
- }
1789
- function db(a, b, c) {
1790
- for (; b !== c; )
1791
- b.aa || K("Expected null or instance of " + c.name + ", got an instance of " + b.name), a = b.aa(a), b = b.P;
1792
- return a;
1793
- }
1794
- function eb(a, b) {
1795
- if (null === b)
1796
- return this.da && K("null is not a valid " + this.name), 0;
1797
- b.L || K('Cannot pass "' + fb(b) + '" as a ' + this.name);
1798
- b.L.N || K("Cannot pass deleted object as a pointer of type " + this.name);
1799
- return db(b.L.N, b.L.O.M, this.M);
1800
- }
1801
- function gb(a, b) {
1802
- if (null === b) {
1803
- this.da && K("null is not a valid " + this.name);
1804
- if (this.ca) {
1805
- var c = this.ea();
1806
- null !== a && a.push(this.V, c);
1807
- return c;
1808
- }
1809
- return 0;
1810
- }
1811
- b.L || K('Cannot pass "' + fb(b) + '" as a ' + this.name);
1812
- b.L.N || K("Cannot pass deleted object as a pointer of type " + this.name);
1813
- !this.ba && b.L.O.ba && K("Cannot convert argument of type " + (b.L.T ? b.L.T.name : b.L.O.name) + " to parameter type " + this.name);
1814
- c = db(b.L.N, b.L.O.M, this.M);
1815
- if (this.ca)
1816
- switch (void 0 === b.L.S && K("Passing raw pointer to smart pointer is illegal"), this.Aa) {
1817
- case 0:
1818
- b.L.T === this ? c = b.L.S : K("Cannot convert argument of type " + (b.L.T ? b.L.T.name : b.L.O.name) + " to parameter type " + this.name);
1819
- break;
1820
- case 1:
1821
- c = b.L.S;
1822
- break;
1823
- case 2:
1824
- if (b.L.T === this)
1825
- c = b.L.S;
1826
- else {
1827
- var d = b.clone();
1828
- c = this.wa(c, Fa(function() {
1829
- d["delete"]();
1830
- }));
1831
- null !== a && a.push(this.V, c);
1832
- }
1833
- break;
1834
- default:
1835
- K("Unsupporting sharing policy");
1836
- }
1837
- return c;
1838
- }
1839
- function hb(a, b) {
1840
- if (null === b)
1841
- return this.da && K("null is not a valid " + this.name), 0;
1842
- b.L || K('Cannot pass "' + fb(b) + '" as a ' + this.name);
1843
- b.L.N || K("Cannot pass deleted object as a pointer of type " + this.name);
1844
- b.L.O.ba && K("Cannot convert argument of type " + b.L.O.name + " to parameter type " + this.name);
1845
- return db(b.L.N, b.L.O.M, this.M);
1846
- }
1847
- function Y(a, b, c, d) {
1848
- this.name = a;
1849
- this.M = b;
1850
- this.da = c;
1851
- this.ba = d;
1852
- this.ca = false;
1853
- this.V = this.wa = this.ea = this.ja = this.Aa = this.va = void 0;
1854
- void 0 !== b.P ? this.toWireType = gb : (this.toWireType = d ? eb : hb, this.U = null);
1855
- }
1856
- function ib(a, b) {
1857
- h.hasOwnProperty(a) || Ua("Replacing nonexistant public symbol");
1858
- h[a] = b;
1859
- h[a].Y = void 0;
1860
- }
1861
- function jb(a, b) {
1862
- var c = [];
1863
- return function() {
1864
- c.length = 0;
1865
- Object.assign(c, arguments);
1866
- if (a.includes("j")) {
1867
- var d = h["dynCall_" + a];
1868
- d = c && c.length ? d.apply(null, [b].concat(c)) : d.call(null, b);
1869
- } else
1870
- d = pa.get(b).apply(null, c);
1871
- return d;
1872
- };
1873
- }
1874
- function Z(a, b) {
1875
- a = M(a);
1876
- var c = a.includes("j") ? jb(a, b) : pa.get(b);
1877
- "function" != typeof c && K("unknown function pointer with signature " + a + ": " + b);
1878
- return c;
1879
- }
1880
- var mb = void 0;
1881
- function nb(a, b) {
1882
- function c(f) {
1883
- e[f] || Q[f] || (Ya[f] ? Ya[f].forEach(c) : (d.push(f), e[f] = true));
1884
- }
1885
- var d = [], e = {};
1886
- b.forEach(c);
1887
- throw new mb(a + ": " + d.map(Ka).join([", "]));
1888
- }
1889
- function ob(a, b, c, d, e) {
1890
- var f = b.length;
1891
- 2 > f && K("argTypes array size mismatch! Must at least get return value and 'this' types!");
1892
- var g = null !== b[1] && null !== c, k = false;
1893
- for (c = 1; c < b.length; ++c)
1894
- if (null !== b[c] && void 0 === b[c].U) {
1895
- k = true;
1896
- break;
1897
- }
1898
- var m = "void" !== b[0].name, l = f - 2, n = Array(l), p = [], r = [];
1899
- return function() {
1900
- arguments.length !== l && K("function " + a + " called with " + arguments.length + " arguments, expected " + l + " args!");
1901
- r.length = 0;
1902
- p.length = g ? 2 : 1;
1903
- p[0] = e;
1904
- if (g) {
1905
- var u = b[1].toWireType(r, this);
1906
- p[1] = u;
1907
- }
1908
- for (var t = 0; t < l; ++t)
1909
- n[t] = b[t + 2].toWireType(r, arguments[t]), p.push(n[t]);
1910
- t = d.apply(null, p);
1911
- if (k)
1912
- Xa(r);
1913
- else
1914
- for (var y = g ? 1 : 2; y < b.length; y++) {
1915
- var B = 1 === y ? u : n[y - 2];
1916
- null !== b[y].U && b[y].U(B);
1917
- }
1918
- u = m ? b[0].fromWireType(t) : void 0;
1919
- return u;
1920
- };
1921
- }
1922
- function pb(a, b) {
1923
- for (var c = [], d = 0; d < a; d++)
1924
- c.push(D[b + 4 * d >> 2]);
1925
- return c;
1926
- }
1927
- function qb(a) {
1928
- 4 < a && 0 === --H[a].fa && (H[a] = void 0, Da.push(a));
1929
- }
1930
- function fb(a) {
1931
- if (null === a)
1932
- return "null";
1933
- var b = typeof a;
1934
- return "object" === b || "array" === b || "function" === b ? a.toString() : "" + a;
1935
- }
1936
- function rb(a, b) {
1937
- switch (b) {
1938
- case 2:
1939
- return function(c) {
1940
- return this.fromWireType(ma[c >> 2]);
1941
- };
1942
- case 3:
1943
- return function(c) {
1944
- return this.fromWireType(na[c >> 3]);
1945
- };
1946
- default:
1947
- throw new TypeError("Unknown float type: " + a);
1948
- }
1949
- }
1950
- function sb(a, b, c) {
1951
- switch (b) {
1952
- case 0:
1953
- return c ? function(d) {
1954
- return ka[d];
1955
- } : function(d) {
1956
- return z[d];
1957
- };
1958
- case 1:
1959
- return c ? function(d) {
1960
- return A[d >> 1];
1961
- } : function(d) {
1962
- return la[d >> 1];
1963
- };
1964
- case 2:
1965
- return c ? function(d) {
1966
- return C[d >> 2];
1967
- } : function(d) {
1968
- return D[d >> 2];
1969
- };
1970
- default:
1971
- throw new TypeError("Unknown integer type: " + a);
1972
- }
1973
- }
1974
- function tb(a, b) {
1975
- for (var c = "", d = 0; !(d >= b / 2); ++d) {
1976
- var e = A[a + 2 * d >> 1];
1977
- if (0 == e)
1978
- break;
1979
- c += String.fromCharCode(e);
1980
- }
1981
- return c;
1982
- }
1983
- function ub(a, b, c) {
1984
- void 0 === c && (c = 2147483647);
1985
- if (2 > c)
1986
- return 0;
1987
- c -= 2;
1988
- var d = b;
1989
- c = c < 2 * a.length ? c / 2 : a.length;
1990
- for (var e = 0; e < c; ++e)
1991
- A[b >> 1] = a.charCodeAt(e), b += 2;
1992
- A[b >> 1] = 0;
1993
- return b - d;
1994
- }
1995
- function vb(a) {
1996
- return 2 * a.length;
1997
- }
1998
- function wb(a, b) {
1999
- for (var c = 0, d = ""; !(c >= b / 4); ) {
2000
- var e = C[a + 4 * c >> 2];
2001
- if (0 == e)
2002
- break;
2003
- ++c;
2004
- 65536 <= e ? (e -= 65536, d += String.fromCharCode(55296 | e >> 10, 56320 | e & 1023)) : d += String.fromCharCode(e);
2005
- }
2006
- return d;
2007
- }
2008
- function xb(a, b, c) {
2009
- void 0 === c && (c = 2147483647);
2010
- if (4 > c)
2011
- return 0;
2012
- var d = b;
2013
- c = d + c - 4;
2014
- for (var e = 0; e < a.length; ++e) {
2015
- var f = a.charCodeAt(e);
2016
- if (55296 <= f && 57343 >= f) {
2017
- var g = a.charCodeAt(++e);
2018
- f = 65536 + ((f & 1023) << 10) | g & 1023;
2019
- }
2020
- C[b >> 2] = f;
2021
- b += 4;
2022
- if (b + 4 > c)
2023
- break;
2024
- }
2025
- C[b >> 2] = 0;
2026
- return b - d;
2027
- }
2028
- function yb(a) {
2029
- for (var b = 0, c = 0; c < a.length; ++c) {
2030
- var d = a.charCodeAt(c);
2031
- 55296 <= d && 57343 >= d && ++c;
2032
- b += 4;
2033
- }
2034
- return b;
2035
- }
2036
- var zb = {};
2037
- function Ab(a) {
2038
- var b = zb[a];
2039
- return void 0 === b ? M(a) : b;
2040
- }
2041
- var Bb = [];
2042
- function Cb(a) {
2043
- var b = Bb.length;
2044
- Bb.push(a);
2045
- return b;
2046
- }
2047
- function Db(a, b) {
2048
- for (var c = Array(a), d = 0; d < a; ++d)
2049
- c[d] = Ma(D[b + 4 * d >> 2], "parameter " + d);
2050
- return c;
2051
- }
2052
- var Eb = [], Fb = [null, [], []];
2053
- J = h.BindingError = Ea("BindingError");
2054
- h.count_emval_handles = function() {
2055
- for (var a = 0, b = 5; b < H.length; ++b)
2056
- void 0 !== H[b] && ++a;
2057
- return a;
2058
- };
2059
- h.get_first_emval = function() {
2060
- for (var a = 5; a < H.length; ++a)
2061
- if (void 0 !== H[a])
2062
- return H[a];
2063
- return null;
2064
- };
2065
- Ga = h.PureVirtualError = Ea("PureVirtualError");
2066
- for (var Gb = Array(256), Hb = 0; 256 > Hb; ++Hb)
2067
- Gb[Hb] = String.fromCharCode(Hb);
2068
- Ha = Gb;
2069
- h.getInheritedInstanceCount = function() {
2070
- return Object.keys(P).length;
2071
- };
2072
- h.getLiveInheritedInstances = function() {
2073
- var a = [], b;
2074
- for (b in P)
2075
- P.hasOwnProperty(b) && a.push(P[b]);
2076
- return a;
2077
- };
2078
- h.flushPendingDeletes = Ia;
2079
- h.setDelayFunction = function(a) {
2080
- O = a;
2081
- N.length && O && O(Ia);
2082
- };
2083
- Ta = h.InternalError = Ea("InternalError");
2084
- X.prototype.isAliasOf = function(a) {
2085
- if (!(this instanceof X && a instanceof X))
2086
- return false;
2087
- var b = this.L.O.M, c = this.L.N, d = a.L.O.M;
2088
- for (a = a.L.N; b.P; )
2089
- c = b.aa(c), b = b.P;
2090
- for (; d.P; )
2091
- a = d.aa(a), d = d.P;
2092
- return b === d && c === a;
2093
- };
2094
- X.prototype.clone = function() {
2095
- this.L.N || $a(this);
2096
- if (this.L.$)
2097
- return this.L.count.value += 1, this;
2098
- var a = S, b = Object, c = b.create, d = Object.getPrototypeOf(this), e = this.L;
2099
- a = a(c.call(b, d, { L: { value: { count: e.count, Z: e.Z, $: e.$, N: e.N, O: e.O, S: e.S, T: e.T } } }));
2100
- a.L.count.value += 1;
2101
- a.L.Z = false;
2102
- return a;
2103
- };
2104
- X.prototype["delete"] = function() {
2105
- this.L.N || $a(this);
2106
- this.L.Z && !this.L.$ && K("Object already scheduled for deletion");
2107
- Na(this);
2108
- Pa(this.L);
2109
- this.L.$ || (this.L.S = void 0, this.L.N = void 0);
2110
- };
2111
- X.prototype.isDeleted = function() {
2112
- return !this.L.N;
2113
- };
2114
- X.prototype.deleteLater = function() {
2115
- this.L.N || $a(this);
2116
- this.L.Z && !this.L.$ && K("Object already scheduled for deletion");
2117
- N.push(this);
2118
- 1 === N.length && O && O(Ia);
2119
- this.L.Z = true;
2120
- return this;
2121
- };
2122
- Y.prototype.pa = function(a) {
2123
- this.ja && (a = this.ja(a));
2124
- return a;
2125
- };
2126
- Y.prototype.ga = function(a) {
2127
- this.V && this.V(a);
2128
- };
2129
- Y.prototype.argPackAdvance = 8;
2130
- Y.prototype.readValueFromPointer = T;
2131
- Y.prototype.deleteObject = function(a) {
2132
- if (null !== a)
2133
- a["delete"]();
2134
- };
2135
- Y.prototype.fromWireType = function(a) {
2136
- function b() {
2137
- return this.ca ? Va(this.M.W, { O: this.va, N: c, T: this, S: a }) : Va(this.M.W, { O: this, N: a });
2138
- }
2139
- var c = this.pa(a);
2140
- if (!c)
2141
- return this.ga(a), null;
2142
- var d = Sa(this.M, c);
2143
- if (void 0 !== d) {
2144
- if (0 === d.L.count.value)
2145
- return d.L.N = c, d.L.S = a, d.clone();
2146
- d = d.clone();
2147
- this.ga(a);
2148
- return d;
2149
- }
2150
- d = this.M.oa(c);
2151
- d = Ra[d];
2152
- if (!d)
2153
- return b.call(this);
2154
- d = this.ba ? d.ka : d.pointerType;
2155
- var e = Qa(c, this.M, d.M);
2156
- return null === e ? b.call(this) : this.ca ? Va(d.M.W, { O: d, N: e, T: this, S: a }) : Va(d.M.W, { O: d, N: e });
2157
- };
2158
- mb = h.UnboundTypeError = Ea("UnboundTypeError");
2159
- var ya = "function" == typeof atob ? atob : function(a) {
2160
- var b = "", c = 0;
2161
- a = a.replace(/[^A-Za-z0-9\+\/=]/g, "");
2162
- do {
2163
- var d = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(c++));
2164
- var e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(c++));
2165
- var f = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(c++));
2166
- var g = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(c++));
2167
- d = d << 2 | e >> 4;
2168
- e = (e & 15) << 4 | f >> 2;
2169
- var k = (f & 3) << 6 | g;
2170
- b += String.fromCharCode(d);
2171
- 64 !== f && (b += String.fromCharCode(e));
2172
- 64 !== g && (b += String.fromCharCode(k));
2173
- } while (c < a.length);
2174
- return b;
2175
- }, Jb = {
2176
- p: function(a, b, c) {
2177
- a = M(a);
2178
- b = Ma(b, "wrapper");
2179
- c = L(c);
2180
- var d = [].slice, e = b.M, f = e.W, g = e.P.W, k = e.P.constructor;
2181
- a = Ca(a, function() {
2182
- e.P.ia.forEach((function(l) {
2183
- if (this[l] === g[l])
2184
- throw new Ga("Pure virtual function " + l + " must be implemented in JavaScript");
2185
- }).bind(this));
2186
- Object.defineProperty(this, "__parent", { value: f });
2187
- this.__construct.apply(this, d.call(arguments));
2188
- });
2189
- f.__construct = function() {
2190
- this === f && K("Pass correct 'this' to __construct");
2191
- var l = k.implement.apply(void 0, [this].concat(d.call(arguments)));
2192
- Na(l);
2193
- var n = l.L;
2194
- l.notifyOnDestruction();
2195
- n.$ = true;
2196
- Object.defineProperties(this, { L: { value: n } });
2197
- S(this);
2198
- l = n.N;
2199
- l = Ja(e, l);
2200
- P.hasOwnProperty(l) ? K("Tried to register registered instance: " + l) : P[l] = this;
2201
- };
2202
- f.__destruct = function() {
2203
- this === f && K("Pass correct 'this' to __destruct");
2204
- Na(this);
2205
- var l = this.L.N;
2206
- l = Ja(e, l);
2207
- P.hasOwnProperty(l) ? delete P[l] : K("Tried to unregister unregistered instance: " + l);
2208
- };
2209
- a.prototype = Object.create(f);
2210
- for (var m in c)
2211
- a.prototype[m] = c[m];
2212
- return Fa(a);
2213
- },
2214
- j: function(a) {
2215
- var b = Wa[a];
2216
- delete Wa[a];
2217
- var c = b.ea, d = b.V, e = b.ha, f = e.map((g) => g.sa).concat(e.map((g) => g.ya));
2218
- V([a], f, (g) => {
2219
- var k = {};
2220
- e.forEach((m, l) => {
2221
- var n = g[l], p = m.qa, r = m.ra, u = g[l + e.length], t = m.xa, y = m.za;
2222
- k[m.na] = { read: (B) => n.fromWireType(p(r, B)), write: (B, aa) => {
2223
- var I = [];
2224
- t(y, B, u.toWireType(I, aa));
2225
- Xa(I);
2226
- } };
2227
- });
2228
- return [{ name: b.name, fromWireType: function(m) {
2229
- var l = {}, n;
2230
- for (n in k)
2231
- l[n] = k[n].read(m);
2232
- d(m);
2233
- return l;
2234
- }, toWireType: function(m, l) {
2235
- for (var n in k)
2236
- if (!(n in l))
2237
- throw new TypeError('Missing field: "' + n + '"');
2238
- var p = c();
2239
- for (n in k)
2240
- k[n].write(p, l[n]);
2241
- null !== m && m.push(d, p);
2242
- return p;
2243
- }, argPackAdvance: 8, readValueFromPointer: T, U: d }];
2244
- });
2245
- },
2246
- v: function() {
2247
- },
2248
- B: function(a, b, c, d, e) {
2249
- var f = Za(c);
2250
- b = M(b);
2251
- W(a, { name: b, fromWireType: function(g) {
2252
- return !!g;
2253
- }, toWireType: function(g, k) {
2254
- return k ? d : e;
2255
- }, argPackAdvance: 8, readValueFromPointer: function(g) {
2256
- if (1 === c)
2257
- var k = ka;
2258
- else if (2 === c)
2259
- k = A;
2260
- else if (4 === c)
2261
- k = C;
2262
- else
2263
- throw new TypeError("Unknown boolean type size: " + b);
2264
- return this.fromWireType(k[g >> f]);
2265
- }, U: null });
2266
- },
2267
- f: function(a, b, c, d, e, f, g, k, m, l, n, p, r) {
2268
- n = M(n);
2269
- f = Z(e, f);
2270
- k && (k = Z(g, k));
2271
- l && (l = Z(m, l));
2272
- r = Z(p, r);
2273
- var u = Ba(n);
2274
- bb(u, function() {
2275
- nb("Cannot construct " + n + " due to unbound types", [d]);
2276
- });
2277
- V([a, b, c], d ? [d] : [], function(t) {
2278
- t = t[0];
2279
- if (d) {
2280
- var y = t.M;
2281
- var B = y.W;
2282
- } else
2283
- B = X.prototype;
2284
- t = Ca(u, function() {
2285
- if (Object.getPrototypeOf(this) !== aa)
2286
- throw new J("Use 'new' to construct " + n);
2287
- if (void 0 === I.X)
2288
- throw new J(n + " has no accessible constructor");
2289
- var kb = I.X[arguments.length];
2290
- if (void 0 === kb)
2291
- throw new J("Tried to invoke ctor of " + n + " with invalid number of parameters (" + arguments.length + ") - expected (" + Object.keys(I.X).toString() + ") parameters instead!");
2292
- return kb.apply(this, arguments);
2293
- });
2294
- var aa = Object.create(B, { constructor: { value: t } });
2295
- t.prototype = aa;
2296
- var I = new cb2(n, t, aa, r, y, f, k, l);
2297
- y = new Y(n, I, true, false);
2298
- B = new Y(n + "*", I, false, false);
2299
- var lb = new Y(n + " const*", I, false, true);
2300
- Ra[a] = { pointerType: B, ka: lb };
2301
- ib(u, t);
2302
- return [y, B, lb];
2303
- });
2304
- },
2305
- c: function(a, b, c, d, e, f, g) {
2306
- var k = pb(c, d);
2307
- b = M(b);
2308
- f = Z(e, f);
2309
- V([], [a], function(m) {
2310
- function l() {
2311
- nb("Cannot call " + n + " due to unbound types", k);
2312
- }
2313
- m = m[0];
2314
- var n = m.name + "." + b;
2315
- b.startsWith("@@") && (b = Symbol[b.substring(2)]);
2316
- var p = m.M.constructor;
2317
- void 0 === p[b] ? (l.Y = c - 1, p[b] = l) : (ab(p, b, n), p[b].R[c - 1] = l);
2318
- V([], k, function(r) {
2319
- r = ob(n, [r[0], null].concat(r.slice(1)), null, f, g);
2320
- void 0 === p[b].R ? (r.Y = c - 1, p[b] = r) : p[b].R[c - 1] = r;
2321
- return [];
2322
- });
2323
- return [];
2324
- });
2325
- },
2326
- o: function(a, b, c, d, e, f) {
2327
- 0 < b || x();
2328
- var g = pb(b, c);
2329
- e = Z(d, e);
2330
- V([], [a], function(k) {
2331
- k = k[0];
2332
- var m = "constructor " + k.name;
2333
- void 0 === k.M.X && (k.M.X = []);
2334
- if (void 0 !== k.M.X[b - 1])
2335
- throw new J("Cannot register multiple constructors with identical number of parameters (" + (b - 1) + ") for class '" + k.name + "'! Overload resolution is currently only performed using the parameter count, not actual type info!");
2336
- k.M.X[b - 1] = () => {
2337
- nb("Cannot construct " + k.name + " due to unbound types", g);
2338
- };
2339
- V([], g, function(l) {
2340
- l.splice(1, 0, null);
2341
- k.M.X[b - 1] = ob(m, l, null, e, f);
2342
- return [];
2343
- });
2344
- return [];
2345
- });
2346
- },
2347
- a: function(a, b, c, d, e, f, g, k) {
2348
- var m = pb(c, d);
2349
- b = M(b);
2350
- f = Z(e, f);
2351
- V([], [a], function(l) {
2352
- function n() {
2353
- nb("Cannot call " + p + " due to unbound types", m);
2354
- }
2355
- l = l[0];
2356
- var p = l.name + "." + b;
2357
- b.startsWith("@@") && (b = Symbol[b.substring(2)]);
2358
- k && l.M.ia.push(b);
2359
- var r = l.M.W, u = r[b];
2360
- void 0 === u || void 0 === u.R && u.className !== l.name && u.Y === c - 2 ? (n.Y = c - 2, n.className = l.name, r[b] = n) : (ab(r, b, p), r[b].R[c - 2] = n);
2361
- V([], m, function(t) {
2362
- t = ob(p, t, l, f, g);
2363
- void 0 === r[b].R ? (t.Y = c - 2, r[b] = t) : r[b].R[c - 2] = t;
2364
- return [];
2365
- });
2366
- return [];
2367
- });
2368
- },
2369
- A: function(a, b) {
2370
- b = M(b);
2371
- W(a, { name: b, fromWireType: function(c) {
2372
- var d = L(c);
2373
- qb(c);
2374
- return d;
2375
- }, toWireType: function(c, d) {
2376
- return Fa(d);
2377
- }, argPackAdvance: 8, readValueFromPointer: T, U: null });
2378
- },
2379
- m: function(a, b, c) {
2380
- c = Za(c);
2381
- b = M(b);
2382
- W(a, {
2383
- name: b,
2384
- fromWireType: function(d) {
2385
- return d;
2386
- },
2387
- toWireType: function(d, e) {
2388
- return e;
2389
- },
2390
- argPackAdvance: 8,
2391
- readValueFromPointer: rb(b, c),
2392
- U: null
2393
- });
2394
- },
2395
- d: function(a, b, c, d, e) {
2396
- b = M(b);
2397
- -1 === e && (e = 4294967295);
2398
- e = Za(c);
2399
- var f = (k) => k;
2400
- if (0 === d) {
2401
- var g = 32 - 8 * c;
2402
- f = (k) => k << g >>> g;
2403
- }
2404
- c = b.includes("unsigned") ? function(k, m) {
2405
- return m >>> 0;
2406
- } : function(k, m) {
2407
- return m;
2408
- };
2409
- W(a, { name: b, fromWireType: f, toWireType: c, argPackAdvance: 8, readValueFromPointer: sb(b, e, 0 !== d), U: null });
2410
- },
2411
- b: function(a, b, c) {
2412
- function d(f) {
2413
- f >>= 2;
2414
- var g = D;
2415
- return new e(ja, g[f + 1], g[f]);
2416
- }
2417
- var e = [
2418
- Int8Array,
2419
- Uint8Array,
2420
- Int16Array,
2421
- Uint16Array,
2422
- Int32Array,
2423
- Uint32Array,
2424
- Float32Array,
2425
- Float64Array
2426
- ][b];
2427
- c = M(c);
2428
- W(a, { name: c, fromWireType: d, argPackAdvance: 8, readValueFromPointer: d }, { ta: true });
2429
- },
2430
- n: function(a, b) {
2431
- b = M(b);
2432
- var c = "std::string" === b;
2433
- W(a, { name: b, fromWireType: function(d) {
2434
- var e = D[d >> 2], f = d + 4;
2435
- if (c)
2436
- for (var g = f, k = 0; k <= e; ++k) {
2437
- var m = f + k;
2438
- if (k == e || 0 == z[m]) {
2439
- g = g ? ia(z, g, m - g) : "";
2440
- if (void 0 === l)
2441
- var l = g;
2442
- else
2443
- l += String.fromCharCode(0), l += g;
2444
- g = m + 1;
2445
- }
2446
- }
2447
- else {
2448
- l = Array(e);
2449
- for (k = 0; k < e; ++k)
2450
- l[k] = String.fromCharCode(z[f + k]);
2451
- l = l.join("");
2452
- }
2453
- R(d);
2454
- return l;
2455
- }, toWireType: function(d, e) {
2456
- e instanceof ArrayBuffer && (e = new Uint8Array(e));
2457
- var f, g = "string" == typeof e;
2458
- g || e instanceof Uint8Array || e instanceof Uint8ClampedArray || e instanceof Int8Array || K("Cannot pass non-string to std::string");
2459
- if (c && g) {
2460
- var k = 0;
2461
- for (f = 0; f < e.length; ++f) {
2462
- var m = e.charCodeAt(f);
2463
- 127 >= m ? k++ : 2047 >= m ? k += 2 : 55296 <= m && 57343 >= m ? (k += 4, ++f) : k += 3;
2464
- }
2465
- f = k;
2466
- } else
2467
- f = e.length;
2468
- k = Ib(4 + f + 1);
2469
- m = k + 4;
2470
- D[k >> 2] = f;
2471
- if (c && g) {
2472
- if (g = m, m = f + 1, f = z, 0 < m) {
2473
- m = g + m - 1;
2474
- for (var l = 0; l < e.length; ++l) {
2475
- var n = e.charCodeAt(l);
2476
- if (55296 <= n && 57343 >= n) {
2477
- var p = e.charCodeAt(++l);
2478
- n = 65536 + ((n & 1023) << 10) | p & 1023;
2479
- }
2480
- if (127 >= n) {
2481
- if (g >= m)
2482
- break;
2483
- f[g++] = n;
2484
- } else {
2485
- if (2047 >= n) {
2486
- if (g + 1 >= m)
2487
- break;
2488
- f[g++] = 192 | n >> 6;
2489
- } else {
2490
- if (65535 >= n) {
2491
- if (g + 2 >= m)
2492
- break;
2493
- f[g++] = 224 | n >> 12;
2494
- } else {
2495
- if (g + 3 >= m)
2496
- break;
2497
- f[g++] = 240 | n >> 18;
2498
- f[g++] = 128 | n >> 12 & 63;
2499
- }
2500
- f[g++] = 128 | n >> 6 & 63;
2501
- }
2502
- f[g++] = 128 | n & 63;
2503
- }
2504
- }
2505
- f[g] = 0;
2506
- }
2507
- } else if (g)
2508
- for (g = 0; g < f; ++g)
2509
- l = e.charCodeAt(g), 255 < l && (R(m), K("String has UTF-16 code units that do not fit in 8 bits")), z[m + g] = l;
2510
- else
2511
- for (g = 0; g < f; ++g)
2512
- z[m + g] = e[g];
2513
- null !== d && d.push(R, k);
2514
- return k;
2515
- }, argPackAdvance: 8, readValueFromPointer: T, U: function(d) {
2516
- R(d);
2517
- } });
2518
- },
2519
- i: function(a, b, c) {
2520
- c = M(c);
2521
- if (2 === b) {
2522
- var d = tb;
2523
- var e = ub;
2524
- var f = vb;
2525
- var g = () => la;
2526
- var k = 1;
2527
- } else
2528
- 4 === b && (d = wb, e = xb, f = yb, g = () => D, k = 2);
2529
- W(a, {
2530
- name: c,
2531
- fromWireType: function(m) {
2532
- for (var l = D[m >> 2], n = g(), p, r = m + 4, u = 0; u <= l; ++u) {
2533
- var t = m + 4 + u * b;
2534
- if (u == l || 0 == n[t >> k])
2535
- r = d(r, t - r), void 0 === p ? p = r : (p += String.fromCharCode(0), p += r), r = t + b;
2536
- }
2537
- R(m);
2538
- return p;
2539
- },
2540
- toWireType: function(m, l) {
2541
- "string" != typeof l && K("Cannot pass non-string to C++ string type " + c);
2542
- var n = f(l), p = Ib(4 + n + b);
2543
- D[p >> 2] = n >> k;
2544
- e(l, p + 4, n + b);
2545
- null !== m && m.push(R, p);
2546
- return p;
2547
- },
2548
- argPackAdvance: 8,
2549
- readValueFromPointer: T,
2550
- U: function(m) {
2551
- R(m);
2552
- }
2553
- });
2554
- },
2555
- k: function(a, b, c, d, e, f) {
2556
- Wa[a] = { name: M(b), ea: Z(c, d), V: Z(e, f), ha: [] };
2557
- },
2558
- h: function(a, b, c, d, e, f, g, k, m, l) {
2559
- Wa[a].ha.push({ na: M(b), sa: c, qa: Z(d, e), ra: f, ya: g, xa: Z(k, m), za: l });
2560
- },
2561
- C: function(a, b) {
2562
- b = M(b);
2563
- W(a, { ua: true, name: b, argPackAdvance: 0, fromWireType: function() {
2564
- }, toWireType: function() {
2565
- } });
2566
- },
2567
- s: function(a, b, c, d, e) {
2568
- a = Bb[a];
2569
- b = L(b);
2570
- c = Ab(c);
2571
- var f = [];
2572
- D[d >> 2] = Fa(f);
2573
- return a(b, c, f, e);
2574
- },
2575
- t: function(a, b, c, d) {
2576
- a = Bb[a];
2577
- b = L(b);
2578
- c = Ab(c);
2579
- a(b, c, null, d);
2580
- },
2581
- g: qb,
2582
- l: function(a, b) {
2583
- var c = Db(a, b), d = c[0];
2584
- b = d.name + "_$" + c.slice(1).map(function(g) {
2585
- return g.name;
2586
- }).join("_") + "$";
2587
- var e = Eb[b];
2588
- if (void 0 !== e)
2589
- return e;
2590
- var f = Array(a - 1);
2591
- e = Cb((g, k, m, l) => {
2592
- for (var n = 0, p = 0; p < a - 1; ++p)
2593
- f[p] = c[p + 1].readValueFromPointer(l + n), n += c[p + 1].argPackAdvance;
2594
- g = g[k].apply(g, f);
2595
- for (p = 0; p < a - 1; ++p)
2596
- c[p + 1].la && c[p + 1].la(f[p]);
2597
- if (!d.ua)
2598
- return d.toWireType(m, g);
2599
- });
2600
- return Eb[b] = e;
2601
- },
2602
- q: function(a) {
2603
- 4 < a && (H[a].fa += 1);
2604
- },
2605
- r: function(a) {
2606
- var b = L(a);
2607
- Xa(b);
2608
- qb(a);
2609
- },
2610
- e: function() {
2611
- x("");
2612
- },
2613
- x: function(a, b, c) {
2614
- z.copyWithin(a, b, b + c);
2615
- },
2616
- w: function(a) {
2617
- var b = z.length;
2618
- a >>>= 0;
2619
- if (2147483648 < a)
2620
- return false;
2621
- for (var c = 1; 4 >= c; c *= 2) {
2622
- var d = b * (1 + 0.2 / c);
2623
- d = Math.min(d, a + 100663296);
2624
- var e = Math;
2625
- d = Math.max(a, d);
2626
- e = e.min.call(e, 2147483648, d + (65536 - d % 65536) % 65536);
2627
- a: {
2628
- try {
2629
- fa.grow(e - ja.byteLength + 65535 >>> 16);
2630
- oa();
2631
- var f = 1;
2632
- break a;
2633
- } catch (g) {
2634
- }
2635
- f = void 0;
2636
- }
2637
- if (f)
2638
- return true;
2639
- }
2640
- return false;
2641
- },
2642
- z: function() {
2643
- return 52;
2644
- },
2645
- u: function() {
2646
- return 70;
2647
- },
2648
- y: function(a, b, c, d) {
2649
- for (var e = 0, f = 0; f < c; f++) {
2650
- var g = D[b >> 2], k = D[b + 4 >> 2];
2651
- b += 8;
2652
- for (var m = 0; m < k; m++) {
2653
- var l = z[g + m], n = Fb[a];
2654
- 0 === l || 10 === l ? ((1 === a ? ea : v)(ia(n, 0)), n.length = 0) : n.push(l);
2655
- }
2656
- e += k;
2657
- }
2658
- D[d >> 2] = e;
2659
- return 0;
2660
- }
2661
- };
2662
- (function() {
2663
- function a(e) {
2664
- h.asm = e.exports;
2665
- fa = h.asm.D;
2666
- oa();
2667
- pa = h.asm.I;
2668
- ra.unshift(h.asm.E);
2669
- E--;
2670
- h.monitorRunDependencies && h.monitorRunDependencies(E);
2671
- 0 == E && (F && (e = F, F = null, e()));
2672
- }
2673
- function b(e) {
2674
- a(e.instance);
2675
- }
2676
- function c(e) {
2677
- return za().then(function(f) {
2678
- return WebAssembly.instantiate(f, d);
2679
- }).then(function(f) {
2680
- return f;
2681
- }).then(e, function(f) {
2682
- v("failed to asynchronously prepare wasm: " + f);
2683
- x(f);
2684
- });
2685
- }
2686
- var d = { a: Jb };
2687
- E++;
2688
- h.monitorRunDependencies && h.monitorRunDependencies(E);
2689
- if (h.instantiateWasm)
2690
- try {
2691
- return h.instantiateWasm(
2692
- d,
2693
- a
2694
- );
2695
- } catch (e) {
2696
- v("Module.instantiateWasm callback failed with error: " + e), ca2(e);
2697
- }
2698
- (function() {
2699
- return w || "function" != typeof WebAssembly.instantiateStreaming || va(G) || "function" != typeof fetch ? c(b) : fetch(G, { credentials: "same-origin" }).then(function(e) {
2700
- return WebAssembly.instantiateStreaming(e, d).then(b, function(f) {
2701
- v("wasm streaming compile failed: " + f);
2702
- v("falling back to ArrayBuffer instantiation");
2703
- return c(b);
2704
- });
2705
- });
2706
- })().catch(ca2);
2707
- return {};
2708
- })();
2709
- h.___wasm_call_ctors = function() {
2710
- return (h.___wasm_call_ctors = h.asm.E).apply(null, arguments);
2711
- };
2712
- var La = h.___getTypeName = function() {
2713
- return (La = h.___getTypeName = h.asm.F).apply(null, arguments);
2714
- };
2715
- h.__embind_initialize_bindings = function() {
2716
- return (h.__embind_initialize_bindings = h.asm.G).apply(null, arguments);
2717
- };
2718
- var Ib = h._malloc = function() {
2719
- return (Ib = h._malloc = h.asm.H).apply(null, arguments);
2720
- }, R = h._free = function() {
2721
- return (R = h._free = h.asm.J).apply(null, arguments);
2722
- };
2723
- h.dynCall_jiji = function() {
2724
- return (h.dynCall_jiji = h.asm.K).apply(null, arguments);
2725
- };
2726
- var Kb;
2727
- F = function Lb() {
2728
- Kb || Mb();
2729
- Kb || (F = Lb);
2730
- };
2731
- function Mb() {
2732
- function a() {
2733
- if (!Kb && (Kb = true, h.calledRun = true, !ha)) {
2734
- Aa(ra);
2735
- ba(h);
2736
- if (h.onRuntimeInitialized)
2737
- h.onRuntimeInitialized();
2738
- if (h.postRun)
2739
- for ("function" == typeof h.postRun && (h.postRun = [h.postRun]); h.postRun.length; ) {
2740
- var b = h.postRun.shift();
2741
- sa.unshift(b);
2742
- }
2743
- Aa(sa);
2744
- }
2745
- }
2746
- if (!(0 < E)) {
2747
- if (h.preRun)
2748
- for ("function" == typeof h.preRun && (h.preRun = [h.preRun]); h.preRun.length; )
2749
- ta();
2750
- Aa(qa);
2751
- 0 < E || (h.setStatus ? (h.setStatus("Running..."), setTimeout(function() {
2752
- setTimeout(function() {
2753
- h.setStatus("");
2754
- }, 1);
2755
- a();
2756
- }, 1)) : a());
2757
- }
2758
- }
2759
- if (h.preInit)
2760
- for ("function" == typeof h.preInit && (h.preInit = [h.preInit]); 0 < h.preInit.length; )
2761
- h.preInit.pop()();
2762
- Mb();
2763
- return loadYoga2.ready;
2764
- };
2765
- })();
2766
- module2.exports = loadYoga;
2767
- })(wasmAsyncWeb);
2768
- var wasmAsyncWebExports = wasmAsyncWeb.exports;
2769
- (function(exports2) {
2770
- Object.defineProperty(exports2, "__esModule", {
2771
- value: true
2772
- });
2773
- var _exportNames = {
2774
- loadYoga: true
2775
- };
2776
- exports2.loadYoga = loadYoga;
2777
- var _wrapAssembly = _interopRequireDefault(wrapAssembly$1);
2778
- var _YGEnums2 = YGEnums;
2779
- Object.keys(_YGEnums2).forEach(function(key) {
2780
- if (key === "default" || key === "__esModule")
2781
- return;
2782
- if (Object.prototype.hasOwnProperty.call(_exportNames, key))
2783
- return;
2784
- if (key in exports2 && exports2[key] === _YGEnums2[key])
2785
- return;
2786
- Object.defineProperty(exports2, key, {
2787
- enumerable: true,
2788
- get: function() {
2789
- return _YGEnums2[key];
2790
- }
2791
- });
2792
- });
2793
- function _interopRequireDefault(obj) {
2794
- return obj && obj.__esModule ? obj : { default: obj };
2795
- }
2796
- const loadAssembly = wasmAsyncWebExports;
2797
- async function loadYoga() {
2798
- return (0, _wrapAssembly.default)(await loadAssembly());
2799
- }
2800
- })(wasmAsyncWeb$1);
2801
- var browserPonyfill = { exports: {} };
2802
- (function(module2, exports2) {
2803
- var __global__ = typeof globalThis !== "undefined" && globalThis || typeof self !== "undefined" && self || typeof commonjsGlobal !== "undefined" && commonjsGlobal;
2804
- var __globalThis__ = function() {
2805
- function F() {
2806
- this.fetch = false;
2807
- this.DOMException = __global__.DOMException;
2808
- }
2809
- F.prototype = __global__;
2810
- return new F();
2811
- }();
2812
- (function(globalThis2) {
2813
- (function(exports3) {
2814
- var global2 = typeof globalThis2 !== "undefined" && globalThis2 || typeof self !== "undefined" && self || typeof global2 !== "undefined" && global2;
2815
- var support = {
2816
- searchParams: "URLSearchParams" in global2,
2817
- iterable: "Symbol" in global2 && "iterator" in Symbol,
2818
- blob: "FileReader" in global2 && "Blob" in global2 && function() {
2819
- try {
2820
- new Blob();
2821
- return true;
2822
- } catch (e) {
2823
- return false;
2824
- }
2825
- }(),
2826
- formData: "FormData" in global2,
2827
- arrayBuffer: "ArrayBuffer" in global2
2828
- };
2829
- function isDataView(obj) {
2830
- return obj && DataView.prototype.isPrototypeOf(obj);
2831
- }
2832
- if (support.arrayBuffer) {
2833
- var viewClasses = [
2834
- "[object Int8Array]",
2835
- "[object Uint8Array]",
2836
- "[object Uint8ClampedArray]",
2837
- "[object Int16Array]",
2838
- "[object Uint16Array]",
2839
- "[object Int32Array]",
2840
- "[object Uint32Array]",
2841
- "[object Float32Array]",
2842
- "[object Float64Array]"
2843
- ];
2844
- var isArrayBufferView = ArrayBuffer.isView || function(obj) {
2845
- return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1;
2846
- };
2847
- }
2848
- function normalizeName(name2) {
2849
- if (typeof name2 !== "string") {
2850
- name2 = String(name2);
2851
- }
2852
- if (/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(name2) || name2 === "") {
2853
- throw new TypeError('Invalid character in header field name: "' + name2 + '"');
2854
- }
2855
- return name2.toLowerCase();
2856
- }
2857
- function normalizeValue(value) {
2858
- if (typeof value !== "string") {
2859
- value = String(value);
2860
- }
2861
- return value;
2862
- }
2863
- function iteratorFor(items) {
2864
- var iterator = {
2865
- next: function() {
2866
- var value = items.shift();
2867
- return { done: value === void 0, value };
2868
- }
2869
- };
2870
- if (support.iterable) {
2871
- iterator[Symbol.iterator] = function() {
2872
- return iterator;
2873
- };
2874
- }
2875
- return iterator;
2876
- }
2877
- function Headers(headers) {
2878
- this.map = {};
2879
- if (headers instanceof Headers) {
2880
- headers.forEach(function(value, name2) {
2881
- this.append(name2, value);
2882
- }, this);
2883
- } else if (Array.isArray(headers)) {
2884
- headers.forEach(function(header) {
2885
- this.append(header[0], header[1]);
2886
- }, this);
2887
- } else if (headers) {
2888
- Object.getOwnPropertyNames(headers).forEach(function(name2) {
2889
- this.append(name2, headers[name2]);
2890
- }, this);
2891
- }
2892
- }
2893
- Headers.prototype.append = function(name2, value) {
2894
- name2 = normalizeName(name2);
2895
- value = normalizeValue(value);
2896
- var oldValue = this.map[name2];
2897
- this.map[name2] = oldValue ? oldValue + ", " + value : value;
2898
- };
2899
- Headers.prototype["delete"] = function(name2) {
2900
- delete this.map[normalizeName(name2)];
2901
- };
2902
- Headers.prototype.get = function(name2) {
2903
- name2 = normalizeName(name2);
2904
- return this.has(name2) ? this.map[name2] : null;
2905
- };
2906
- Headers.prototype.has = function(name2) {
2907
- return this.map.hasOwnProperty(normalizeName(name2));
2908
- };
2909
- Headers.prototype.set = function(name2, value) {
2910
- this.map[normalizeName(name2)] = normalizeValue(value);
2911
- };
2912
- Headers.prototype.forEach = function(callback, thisArg) {
2913
- for (var name2 in this.map) {
2914
- if (this.map.hasOwnProperty(name2)) {
2915
- callback.call(thisArg, this.map[name2], name2, this);
2916
- }
2917
- }
2918
- };
2919
- Headers.prototype.keys = function() {
2920
- var items = [];
2921
- this.forEach(function(value, name2) {
2922
- items.push(name2);
2923
- });
2924
- return iteratorFor(items);
2925
- };
2926
- Headers.prototype.values = function() {
2927
- var items = [];
2928
- this.forEach(function(value) {
2929
- items.push(value);
2930
- });
2931
- return iteratorFor(items);
2932
- };
2933
- Headers.prototype.entries = function() {
2934
- var items = [];
2935
- this.forEach(function(value, name2) {
2936
- items.push([name2, value]);
2937
- });
2938
- return iteratorFor(items);
2939
- };
2940
- if (support.iterable) {
2941
- Headers.prototype[Symbol.iterator] = Headers.prototype.entries;
2942
- }
2943
- function consumed(body) {
2944
- if (body.bodyUsed) {
2945
- return Promise.reject(new TypeError("Already read"));
2946
- }
2947
- body.bodyUsed = true;
2948
- }
2949
- function fileReaderReady(reader) {
2950
- return new Promise(function(resolve, reject) {
2951
- reader.onload = function() {
2952
- resolve(reader.result);
2953
- };
2954
- reader.onerror = function() {
2955
- reject(reader.error);
2956
- };
2957
- });
2958
- }
2959
- function readBlobAsArrayBuffer(blob) {
2960
- var reader = new FileReader();
2961
- var promise = fileReaderReady(reader);
2962
- reader.readAsArrayBuffer(blob);
2963
- return promise;
2964
- }
2965
- function readBlobAsText(blob) {
2966
- var reader = new FileReader();
2967
- var promise = fileReaderReady(reader);
2968
- reader.readAsText(blob);
2969
- return promise;
2970
- }
2971
- function readArrayBufferAsText(buf) {
2972
- var view = new Uint8Array(buf);
2973
- var chars = new Array(view.length);
2974
- for (var i = 0; i < view.length; i++) {
2975
- chars[i] = String.fromCharCode(view[i]);
2976
- }
2977
- return chars.join("");
2978
- }
2979
- function bufferClone(buf) {
2980
- if (buf.slice) {
2981
- return buf.slice(0);
2982
- } else {
2983
- var view = new Uint8Array(buf.byteLength);
2984
- view.set(new Uint8Array(buf));
2985
- return view.buffer;
2986
- }
2987
- }
2988
- function Body() {
2989
- this.bodyUsed = false;
2990
- this._initBody = function(body) {
2991
- this.bodyUsed = this.bodyUsed;
2992
- this._bodyInit = body;
2993
- if (!body) {
2994
- this._bodyText = "";
2995
- } else if (typeof body === "string") {
2996
- this._bodyText = body;
2997
- } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {
2998
- this._bodyBlob = body;
2999
- } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {
3000
- this._bodyFormData = body;
3001
- } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
3002
- this._bodyText = body.toString();
3003
- } else if (support.arrayBuffer && support.blob && isDataView(body)) {
3004
- this._bodyArrayBuffer = bufferClone(body.buffer);
3005
- this._bodyInit = new Blob([this._bodyArrayBuffer]);
3006
- } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {
3007
- this._bodyArrayBuffer = bufferClone(body);
3008
- } else {
3009
- this._bodyText = body = Object.prototype.toString.call(body);
3010
- }
3011
- if (!this.headers.get("content-type")) {
3012
- if (typeof body === "string") {
3013
- this.headers.set("content-type", "text/plain;charset=UTF-8");
3014
- } else if (this._bodyBlob && this._bodyBlob.type) {
3015
- this.headers.set("content-type", this._bodyBlob.type);
3016
- } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
3017
- this.headers.set("content-type", "application/x-www-form-urlencoded;charset=UTF-8");
3018
- }
3019
- }
3020
- };
3021
- if (support.blob) {
3022
- this.blob = function() {
3023
- var rejected = consumed(this);
3024
- if (rejected) {
3025
- return rejected;
3026
- }
3027
- if (this._bodyBlob) {
3028
- return Promise.resolve(this._bodyBlob);
3029
- } else if (this._bodyArrayBuffer) {
3030
- return Promise.resolve(new Blob([this._bodyArrayBuffer]));
3031
- } else if (this._bodyFormData) {
3032
- throw new Error("could not read FormData body as blob");
3033
- } else {
3034
- return Promise.resolve(new Blob([this._bodyText]));
3035
- }
3036
- };
3037
- this.arrayBuffer = function() {
3038
- if (this._bodyArrayBuffer) {
3039
- var isConsumed = consumed(this);
3040
- if (isConsumed) {
3041
- return isConsumed;
3042
- }
3043
- if (ArrayBuffer.isView(this._bodyArrayBuffer)) {
3044
- return Promise.resolve(
3045
- this._bodyArrayBuffer.buffer.slice(
3046
- this._bodyArrayBuffer.byteOffset,
3047
- this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength
3048
- )
3049
- );
3050
- } else {
3051
- return Promise.resolve(this._bodyArrayBuffer);
3052
- }
3053
- } else {
3054
- return this.blob().then(readBlobAsArrayBuffer);
3055
- }
3056
- };
3057
- }
3058
- this.text = function() {
3059
- var rejected = consumed(this);
3060
- if (rejected) {
3061
- return rejected;
3062
- }
3063
- if (this._bodyBlob) {
3064
- return readBlobAsText(this._bodyBlob);
3065
- } else if (this._bodyArrayBuffer) {
3066
- return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer));
3067
- } else if (this._bodyFormData) {
3068
- throw new Error("could not read FormData body as text");
3069
- } else {
3070
- return Promise.resolve(this._bodyText);
3071
- }
3072
- };
3073
- if (support.formData) {
3074
- this.formData = function() {
3075
- return this.text().then(decode);
3076
- };
3077
- }
3078
- this.json = function() {
3079
- return this.text().then(JSON.parse);
3080
- };
3081
- return this;
3082
- }
3083
- var methods = ["DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT"];
3084
- function normalizeMethod(method) {
3085
- var upcased = method.toUpperCase();
3086
- return methods.indexOf(upcased) > -1 ? upcased : method;
3087
- }
3088
- function Request(input, options) {
3089
- if (!(this instanceof Request)) {
3090
- throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');
3091
- }
3092
- options = options || {};
3093
- var body = options.body;
3094
- if (input instanceof Request) {
3095
- if (input.bodyUsed) {
3096
- throw new TypeError("Already read");
3097
- }
3098
- this.url = input.url;
3099
- this.credentials = input.credentials;
3100
- if (!options.headers) {
3101
- this.headers = new Headers(input.headers);
3102
- }
3103
- this.method = input.method;
3104
- this.mode = input.mode;
3105
- this.signal = input.signal;
3106
- if (!body && input._bodyInit != null) {
3107
- body = input._bodyInit;
3108
- input.bodyUsed = true;
3109
- }
3110
- } else {
3111
- this.url = String(input);
3112
- }
3113
- this.credentials = options.credentials || this.credentials || "same-origin";
3114
- if (options.headers || !this.headers) {
3115
- this.headers = new Headers(options.headers);
3116
- }
3117
- this.method = normalizeMethod(options.method || this.method || "GET");
3118
- this.mode = options.mode || this.mode || null;
3119
- this.signal = options.signal || this.signal;
3120
- this.referrer = null;
3121
- if ((this.method === "GET" || this.method === "HEAD") && body) {
3122
- throw new TypeError("Body not allowed for GET or HEAD requests");
3123
- }
3124
- this._initBody(body);
3125
- if (this.method === "GET" || this.method === "HEAD") {
3126
- if (options.cache === "no-store" || options.cache === "no-cache") {
3127
- var reParamSearch = /([?&])_=[^&]*/;
3128
- if (reParamSearch.test(this.url)) {
3129
- this.url = this.url.replace(reParamSearch, "$1_=" + (/* @__PURE__ */ new Date()).getTime());
3130
- } else {
3131
- var reQueryString = /\?/;
3132
- this.url += (reQueryString.test(this.url) ? "&" : "?") + "_=" + (/* @__PURE__ */ new Date()).getTime();
3133
- }
3134
- }
3135
- }
3136
- }
3137
- Request.prototype.clone = function() {
3138
- return new Request(this, { body: this._bodyInit });
3139
- };
3140
- function decode(body) {
3141
- var form = new FormData();
3142
- body.trim().split("&").forEach(function(bytes) {
3143
- if (bytes) {
3144
- var split = bytes.split("=");
3145
- var name2 = split.shift().replace(/\+/g, " ");
3146
- var value = split.join("=").replace(/\+/g, " ");
3147
- form.append(decodeURIComponent(name2), decodeURIComponent(value));
3148
- }
3149
- });
3150
- return form;
3151
- }
3152
- function parseHeaders(rawHeaders) {
3153
- var headers = new Headers();
3154
- var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, " ");
3155
- preProcessedHeaders.split("\r").map(function(header) {
3156
- return header.indexOf("\n") === 0 ? header.substr(1, header.length) : header;
3157
- }).forEach(function(line) {
3158
- var parts = line.split(":");
3159
- var key = parts.shift().trim();
3160
- if (key) {
3161
- var value = parts.join(":").trim();
3162
- headers.append(key, value);
3163
- }
3164
- });
3165
- return headers;
3166
- }
3167
- Body.call(Request.prototype);
3168
- function Response(bodyInit, options) {
3169
- if (!(this instanceof Response)) {
3170
- throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');
3171
- }
3172
- if (!options) {
3173
- options = {};
3174
- }
3175
- this.type = "default";
3176
- this.status = options.status === void 0 ? 200 : options.status;
3177
- this.ok = this.status >= 200 && this.status < 300;
3178
- this.statusText = options.statusText === void 0 ? "" : "" + options.statusText;
3179
- this.headers = new Headers(options.headers);
3180
- this.url = options.url || "";
3181
- this._initBody(bodyInit);
3182
- }
3183
- Body.call(Response.prototype);
3184
- Response.prototype.clone = function() {
3185
- return new Response(this._bodyInit, {
3186
- status: this.status,
3187
- statusText: this.statusText,
3188
- headers: new Headers(this.headers),
3189
- url: this.url
3190
- });
3191
- };
3192
- Response.error = function() {
3193
- var response = new Response(null, { status: 0, statusText: "" });
3194
- response.type = "error";
3195
- return response;
3196
- };
3197
- var redirectStatuses = [301, 302, 303, 307, 308];
3198
- Response.redirect = function(url, status) {
3199
- if (redirectStatuses.indexOf(status) === -1) {
3200
- throw new RangeError("Invalid status code");
3201
- }
3202
- return new Response(null, { status, headers: { location: url } });
3203
- };
3204
- exports3.DOMException = global2.DOMException;
3205
- try {
3206
- new exports3.DOMException();
3207
- } catch (err) {
3208
- exports3.DOMException = function(message, name2) {
3209
- this.message = message;
3210
- this.name = name2;
3211
- var error = Error(message);
3212
- this.stack = error.stack;
3213
- };
3214
- exports3.DOMException.prototype = Object.create(Error.prototype);
3215
- exports3.DOMException.prototype.constructor = exports3.DOMException;
3216
- }
3217
- function fetch2(input, init) {
3218
- return new Promise(function(resolve, reject) {
3219
- var request = new Request(input, init);
3220
- if (request.signal && request.signal.aborted) {
3221
- return reject(new exports3.DOMException("Aborted", "AbortError"));
3222
- }
3223
- var xhr = new XMLHttpRequest();
3224
- function abortXhr() {
3225
- xhr.abort();
3226
- }
3227
- xhr.onload = function() {
3228
- var options = {
3229
- status: xhr.status,
3230
- statusText: xhr.statusText,
3231
- headers: parseHeaders(xhr.getAllResponseHeaders() || "")
3232
- };
3233
- options.url = "responseURL" in xhr ? xhr.responseURL : options.headers.get("X-Request-URL");
3234
- var body = "response" in xhr ? xhr.response : xhr.responseText;
3235
- setTimeout(function() {
3236
- resolve(new Response(body, options));
3237
- }, 0);
3238
- };
3239
- xhr.onerror = function() {
3240
- setTimeout(function() {
3241
- reject(new TypeError("Network request failed"));
3242
- }, 0);
3243
- };
3244
- xhr.ontimeout = function() {
3245
- setTimeout(function() {
3246
- reject(new TypeError("Network request failed"));
3247
- }, 0);
3248
- };
3249
- xhr.onabort = function() {
3250
- setTimeout(function() {
3251
- reject(new exports3.DOMException("Aborted", "AbortError"));
3252
- }, 0);
3253
- };
3254
- function fixUrl(url) {
3255
- try {
3256
- return url === "" && global2.location.href ? global2.location.href : url;
3257
- } catch (e) {
3258
- return url;
3259
- }
3260
- }
3261
- xhr.open(request.method, fixUrl(request.url), true);
3262
- if (request.credentials === "include") {
3263
- xhr.withCredentials = true;
3264
- } else if (request.credentials === "omit") {
3265
- xhr.withCredentials = false;
3266
- }
3267
- if ("responseType" in xhr) {
3268
- if (support.blob) {
3269
- xhr.responseType = "blob";
3270
- } else if (support.arrayBuffer && request.headers.get("Content-Type") && request.headers.get("Content-Type").indexOf("application/octet-stream") !== -1) {
3271
- xhr.responseType = "arraybuffer";
3272
- }
3273
- }
3274
- if (init && typeof init.headers === "object" && !(init.headers instanceof Headers)) {
3275
- Object.getOwnPropertyNames(init.headers).forEach(function(name2) {
3276
- xhr.setRequestHeader(name2, normalizeValue(init.headers[name2]));
3277
- });
3278
- } else {
3279
- request.headers.forEach(function(value, name2) {
3280
- xhr.setRequestHeader(name2, value);
3281
- });
3282
- }
3283
- if (request.signal) {
3284
- request.signal.addEventListener("abort", abortXhr);
3285
- xhr.onreadystatechange = function() {
3286
- if (xhr.readyState === 4) {
3287
- request.signal.removeEventListener("abort", abortXhr);
3288
- }
3289
- };
3290
- }
3291
- xhr.send(typeof request._bodyInit === "undefined" ? null : request._bodyInit);
3292
- });
3293
- }
3294
- fetch2.polyfill = true;
3295
- if (!global2.fetch) {
3296
- global2.fetch = fetch2;
3297
- global2.Headers = Headers;
3298
- global2.Request = Request;
3299
- global2.Response = Response;
3300
- }
3301
- exports3.Headers = Headers;
3302
- exports3.Request = Request;
3303
- exports3.Response = Response;
3304
- exports3.fetch = fetch2;
3305
- return exports3;
3306
- })({});
3307
- })(__globalThis__);
3308
- __globalThis__.fetch.ponyfill = true;
3309
- delete __globalThis__.fetch.polyfill;
3310
- var ctx = __global__.fetch ? __global__ : __globalThis__;
3311
- exports2 = ctx.fetch;
3312
- exports2.default = ctx.fetch;
3313
- exports2.fetch = ctx.fetch;
3314
- exports2.Headers = ctx.Headers;
3315
- exports2.Request = ctx.Request;
3316
- exports2.Response = ctx.Response;
3317
- module2.exports = exports2;
3318
- })(browserPonyfill, browserPonyfill.exports);
3319
- var browserPonyfillExports = browserPonyfill.exports;
3320
- const fetch$1 = /* @__PURE__ */ getDefaultExportFromCjs(browserPonyfillExports);
3321
- function breakWord({ context, word, maxW = Infinity }) {
3322
- const lines = [];
3323
- const fullWordMetrics = context.measureText(word);
3324
- if (fullWordMetrics.width < maxW) {
3325
- return [{ text: word, metrics: fullWordMetrics }];
3326
- }
3327
- for (let i = 0; i < word.length; i++) {
3328
- const lastLine = lines[lines.length - 1];
3329
- const newText = ((lastLine == null ? void 0 : lastLine.text) ?? "") + word[i];
3330
- const newLineMetrics = context.measureText(newText);
3331
- if (newLineMetrics.width < maxW) {
3332
- lines[lastLine ? lines.length - 1 : 0] = {
3333
- text: newText,
3334
- metrics: newLineMetrics
3335
- };
3336
- } else {
3337
- lines.push({ text: word[i], metrics: context.measureText(word[i]) });
3338
- }
3339
- }
3340
- return lines;
3341
- }
3342
- memoize(
3343
- ({ font, scale, context, maxW, maxH, text, minSize, maxSize }) => {
3344
- var _a, _b;
3345
- let fontSize = 0;
3346
- if (maxSize) {
3347
- const multiplier = 1;
3348
- fontSize = (minSize ?? 0) * scale;
3349
- let widestLine = 0;
3350
- while (maxSize * scale > fontSize + multiplier) {
3351
- fontSize += multiplier;
3352
- const lines = getLines({ context, font, fontSize, text, maxW });
3353
- widestLine = lines.reduce((acc, line) => {
3354
- if (line.metrics.width > acc) {
3355
- acc = line.metrics.width;
3356
- }
3357
- return acc;
3358
- }, 0);
3359
- if (widestLine > maxW || lines.length * fontSize > maxH) {
3360
- fontSize -= multiplier;
3361
- break;
3362
- }
3363
- }
3364
- } else {
3365
- fontSize = parseFloat(((_b = (_a = font.match(fontSizeRegex)) == null ? void 0 : _a.groups) == null ? void 0 : _b.value) ?? "0") * scale;
3366
- }
3367
- return fontSize;
3368
- },
3369
- {
3370
- cacheKey: ([{ font, text, minSize, maxSize, scale, maxW, maxH }]) => `${font}_${text}_${minSize}_${maxSize}_${scale}_${maxW}_${maxH}`
3371
- }
3372
- );
3373
- const easingMap = {
3374
- linear,
3375
- easeIn,
3376
- easeInOut,
3377
- easeOut,
3378
- circIn,
3379
- circInOut,
3380
- circOut,
3381
- backIn,
3382
- backInOut,
3383
- backOut,
3384
- anticipate,
3385
- bounceIn,
3386
- bounceInOut,
3387
- bounceOut
3388
- };
3389
- memoize(
3390
- (from, to, { clamp: clamp2 = true, ease = "easeIn", ...options } = {}) => {
3391
- return interpolate(from, to, { ...options, clamp: clamp2, ease: easingMap[ease] });
3392
- },
3393
- {
3394
- cacheKey: ([from, to, options]) => JSON.stringify({ from, to, options })
3395
- }
3396
- );
3397
- const fontSizeRegex = /(?<value>\d+\.?\d*)(?=px)/;
3398
- const getLines = memoize(
3399
- ({ context, font, fontSize, text, maxW = Infinity }) => {
3400
- try {
3401
- context.save();
3402
- context.font = font.replace(fontSizeRegex, fontSize.toString());
3403
- const newLines = text.split("\n");
3404
- return newLines.flatMap((line) => {
3405
- const words = line.split(" ").filter(Boolean);
3406
- if (!words.length) {
3407
- return { text: "", metrics: context.measureText("") };
3408
- }
3409
- return words.slice(1).reduce((acc, word) => {
3410
- const prevLine = acc[acc.length - 1].text;
3411
- const newLine = `${prevLine} ${word}`.trim();
3412
- const newMetrics = context.measureText(newLine);
3413
- if (newMetrics.width > maxW) {
3414
- acc = [...acc, ...breakWord({ context, word, maxW })];
3415
- } else {
3416
- acc[acc.length - 1] = {
3417
- text: newLine,
3418
- metrics: newMetrics
3419
- };
3420
- }
3421
- return acc;
3422
- }, breakWord({ context, word: words[0], maxW }));
3423
- });
3424
- } finally {
3425
- context.restore();
3426
- }
3427
- },
3428
- {
3429
- cacheKey: ([{ font, fontSize, text, maxW }]) => `${font}_${fontSize}_${text}_${maxW}`
3430
- }
3431
- );
3432
- const template = {
3433
- id: "046f363c-960a-449c-ae5e-984ac6ab58c2",
3434
- version: "2",
3435
- name: "None",
3436
- entityId: "none",
3437
- templateId: "a95e537e-fb4d-4d2f-9c72-86c0925c7176",
3438
- layouts: [
3439
- {
3440
- name: "none",
3441
- tree: `[
3442
- {
3443
- "width": "100%",
3444
- "height": "100%",
3445
- "node": {
3446
- "type": "video",
3447
- "format": {{ it.videoFormat }},
3448
- "value": {
3449
- "id": {{ it.id }},
3450
- "key": {{ it.key }},
3451
- "src": {{@async resolve-source({ sources: [it.mp4, it.input] }) /}},
3452
- "playlist": {{@async resolve-source({ sources: [it.playlist] }) /}},
3453
- "poster": {{ it.poster }},
3454
- "captions": {{ it.captions }},
3455
- "duration": {{ it.duration }},
3456
- "startOffset": {{ it.startOffset }},
3457
- "endOffset": {{ it.endOffset }},
3458
- "crop": {
3459
- "x": {{ it.crop?.x }},
3460
- "y": {{ it.crop?.y }},
3461
- "width": {{ it.crop?.width }},
3462
- "height": {{ it.crop?.height }}
3463
- }
3464
- }
3465
- }
3466
- }
3467
- ]`
3468
- }
3469
- ],
3470
- content: [
3471
- {
3472
- scenes: [
3473
- {
3474
- layout: "none",
3475
- data: `{
3476
- "id": {{ it.root?.answer?.id }},
3477
- "key": {{ it.root?.answer?.id + '-intro' }},
3478
- "mp4": {{ it.root?.answer?.media?.video }},
3479
- "input": {{ it.root?.answer?.media?.input }},
3480
- "playlist": {{ it.root?.answer?.media?.playlist }},
3481
- "poster": {{ it.root?.answer?.media?.thumbnail }},
3482
- "captions": {{ it.root?.answer?.captions?.current }},
3483
- "duration": {{ it.root?.answer?.metadata?.duration }},
3484
- "startOffset": {{ it.root?.answer?.settings?.startOffset }},
3485
- "endOffset": {{ it.root?.answer?.settings?.endOffset }},
3486
- "crop": {
3487
- "x": {{ it.root?.answer?.settings?.crop?.x }},
3488
- "y": {{ it.root?.answer?.settings?.crop?.y }},
3489
- "width": {{ it.root?.answer?.settings?.crop?.width }},
3490
- "height": {{ it.root?.answer?.settings?.crop?.height }}
3491
- }
3492
- }`
3493
- }
3494
- ],
3495
- root: "{{ it.intro?.questions?.items }}"
3496
- },
3497
- {
3498
- scenes: [
3499
- {
3500
- layout: "none",
3501
- data: `{
3502
- "id": {{ it.root?.answer?.id }},
3503
- "key": {{ it.root?.answer?.id + '-' + it.index }},
3504
- "mp4": {{ it.root?.answer?.media?.video }},
3505
- "input": {{ it.root?.answer?.media?.input }},
3506
- "playlist": {{ it.root?.answer?.media?.playlist }},
3507
- "poster": {{ it.root?.answer?.media?.thumbnail }},
3508
- "captions": {{ it.root?.answer?.captions?.current }},
3509
- "duration": {{ it.root?.answer?.metadata?.duration }},
3510
- "startOffset": {{ it.root?.answer?.settings?.startOffset }},
3511
- "endOffset": {{ it.root?.answer?.settings?.endOffset }},
3512
- "crop": {
3513
- "x": {{ it.root?.answer?.settings?.crop?.x }},
3514
- "y": {{ it.root?.answer?.settings?.crop?.y }},
3515
- "width": {{ it.root?.answer?.settings?.crop?.width }},
3516
- "height": {{ it.root?.answer?.settings?.crop?.height }}
3517
- }
3518
- }`
3519
- }
3520
- ],
3521
- root: "{{ it.questions?.items }}"
3522
- },
3523
- {
3524
- scenes: [
3525
- {
3526
- layout: "none",
3527
- data: `{
3528
- "id": {{ it.root?.answer?.id }},
3529
- "key": {{ it.root?.answer?.id + '-outro' }},
3530
- "mp4": {{ it.root?.answer?.media?.video }},
3531
- "input": {{ it.root?.answer?.media?.input }},
3532
- "playlist": {{ it.root?.answer?.media?.playlist }},
3533
- "poster": {{ it.root?.answer?.media?.thumbnail }},
3534
- "captions": {{ it.root?.answer?.captions?.current }},
3535
- "duration": {{ it.root?.answer?.metadata?.duration }},
3536
- "startOffset": {{ it.root?.answer?.settings?.startOffset }},
3537
- "endOffset": {{ it.root?.answer?.settings?.endOffset }},
3538
- "crop": {
3539
- "x": {{ it.root?.answer?.settings?.crop?.x }},
3540
- "y": {{ it.root?.answer?.settings?.crop?.y }},
3541
- "width": {{ it.root?.answer?.settings?.crop?.width }},
3542
- "height": {{ it.root?.answer?.settings?.crop?.height }}
3543
- }
3544
- }`
3545
- }
3546
- ],
3547
- root: "{{ it.outro?.questions?.items }}"
3548
- }
3549
- ],
3550
- system: true,
3551
- createdAt: (/* @__PURE__ */ new Date()).toISOString(),
3552
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
3553
- };
3554
- ({
3555
- id: "073977ec-6384-4329-b7c5-8275fb513e74",
3556
- name: "None",
3557
- entityId: "none",
3558
- templateId: "a95e537e-fb4d-4d2f-9c72-86c0925c7176",
3559
- templates: [template],
3560
- meta: {
3561
- frameRate: 30,
3562
- resolution: 720,
3563
- transitionDuration: 1 / 3
3564
- },
3565
- system: true,
3566
- default: 0,
3567
- createdAt: (/* @__PURE__ */ new Date()).toISOString(),
3568
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
3569
- });
3570
- async function imageFactory() {
3571
- if (typeof window === "undefined") {
3572
- const skiaCanvas = await import("./browser-1b4c09f1.js").then((n) => n.b);
3573
- return new skiaCanvas.Image();
3574
- }
3575
- return new Image();
3576
- }
3577
- pMemoize(async function getImage2(src) {
3578
- if (!src) {
3579
- return null;
3580
- }
3581
- return new Promise((resolve, reject) => {
3582
- imageFactory().then((image) => {
3583
- image.onload = () => {
3584
- resolve(image);
3585
- };
3586
- image.onerror = (e) => {
3587
- reject(e);
3588
- };
3589
- image.src = src;
3590
- });
3591
- });
3592
- });
3593
- async function checkSource(src) {
3594
- var _a;
3595
- try {
3596
- if ((_a = await fetch$1(src, { method: "HEAD" })) == null ? void 0 : _a.ok) {
3597
- return src;
3598
- }
3599
- } catch {
3600
- return void 0;
3601
- }
3602
- return void 0;
3603
- }
3604
- async function getSources({ sources }) {
3605
- let src = null;
3606
- if (sources) {
3607
- const sPromises = sources.filter(Boolean).map((src2) => checkSource(src2));
3608
- src = (await Promise.all(sPromises)).find(Boolean);
3609
- }
3610
- return src;
3611
- }
3612
- function isPlainObject(value) {
3613
- if (value === null || typeof value !== "object") {
3614
- return false;
3615
- }
3616
- if (Object.getPrototypeOf(value) === null) {
3617
- return true;
3618
- }
3619
- let proto = value;
3620
- while (Object.getPrototypeOf(proto) !== null) {
3621
- proto = Object.getPrototypeOf(proto);
3622
- }
3623
- return Object.getPrototypeOf(value) === proto;
3624
- }
3625
- function sanitizeJSON(unsanitized) {
3626
- return unsanitized.replace(/\\/g, "\\\\").replace(/\//g, "\\/").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\t/g, "\\t").replace(/\f/g, "\\f").replace(/"/g, '\\"');
3627
- }
3628
- squirrelly_minExports.filters.define("parse", (data) => {
3629
- if (typeof data === "undefined") {
3630
- return null;
3631
- }
3632
- if (typeof data === "string") {
3633
- return `"${sanitizeJSON(data)}"`;
3634
- }
3635
- if (isPlainObject(data) || Array.isArray(data)) {
3636
- return JSON.stringify(data);
3637
- }
3638
- return data;
3639
- });
3640
- squirrelly_minExports.helpers.define(
3641
- "resolve-source",
3642
- pMemoize(
3643
- async (content) => {
3644
- const { sources } = content.params[0] ?? {};
3645
- const validSources = sources == null ? void 0 : sources.filter(Boolean);
3646
- const blob = validSources == null ? void 0 : validSources.find((source2) => source2.includes("blob:"));
3647
- const local = validSources == null ? void 0 : validSources.find((source2) => !source2.includes("http"));
3648
- const source = blob ?? local ?? await getSources({ sources });
3649
- return source ? `"${source}"` : "null";
3650
- },
3651
- {
3652
- cacheKey: ([content]) => JSON.stringify(content.params[0] ?? {})
3653
- }
3654
- )
3655
- );
3656
- const TEMPLATE_VERSION = "2";
3657
- const name = "@vouchfor/embeds";
3658
- const version = "1.3.2";
3659
- const license = "MIT";
3660
- const author = "Aaron Williams";
3661
- const main = "dist/es/embeds.js";
3662
- const module = "dist/es/embeds.js";
3663
- const type = "module";
3664
- const types = "dist/es/src/index.d.ts";
3665
- const exports = {
3666
- ".": "./dist/es/embeds.js"
3667
- };
3668
- const files = [
3669
- "dist",
3670
- "src"
3671
- ];
3672
- const publishConfig = {
3673
- tag: "latest",
3674
- access: "public"
3675
- };
3676
- const scripts = {
3677
- build: "rm -rf dist && tsc && yarn build:self",
3678
- "build:deps": "yarn --cwd ../media-player build",
3679
- "build:self": "vite build --mode iife && vite build --mode es && node scripts/build.cjs",
3680
- "build:package": "yarn build",
3681
- "build:storybook": "yarn prebuild && storybook build",
3682
- "generate:manifest": "wca src --outFile custom-elements.json",
3683
- lint: "eslint . --quiet",
3684
- "lint:fix": "eslint . --fix",
3685
- "lint:staged": "lint-staged",
3686
- prepublishOnly: "yarn build",
3687
- size: "size-limit",
3688
- storybook: "yarn prebuild && storybook dev -p 6007",
3689
- prebuild: "yarn build:deps && yarn generate:manifest",
3690
- test: "rm -rf test/lib && yarn prebuild && vite build --mode test && web-test-runner",
3691
- "test:ci": "yarn test --config web-test-runner.ci.config.js"
3692
- };
3693
- const dependencies = {
3694
- "@a11y/focus-trap": "^1.0.5",
3695
- "@lit/task": "^1.0.0",
3696
- "@vouchfor/media-player": "^2.2.2",
3697
- uuid: "^9.0.1"
3698
- };
3699
- const peerDependencies = {
3700
- lit: "^3.1.0"
3701
- };
3702
- const devDependencies = {
3703
- "@esm-bundle/chai": "^4.3.4-fix.0",
3704
- "@open-wc/testing": "^3.2.0",
3705
- "@storybook/addon-essentials": "^7.4.5",
3706
- "@storybook/addon-links": "^7.4.5",
3707
- "@storybook/blocks": "^7.4.5",
3708
- "@storybook/web-components": "^7.4.5",
3709
- "@storybook/web-components-vite": "^7.4.5",
3710
- "@types/mocha": "^10.0.1",
3711
- "@vouchfor/eslint-config": "^1.0.0",
3712
- "@vouchfor/prettier-config": "^1.0.0",
3713
- "@web/dev-server-esbuild": "^0.4.1",
3714
- "@web/test-runner": "^0.17.1",
3715
- "@web/test-runner-browserstack": "^0.6.1",
3716
- "@web/test-runner-mocha": "^0.8.1",
3717
- "@web/test-runner-playwright": "^0.10.1",
3718
- dotenv: "^16.3.1",
3719
- eslint: "^8.50.0",
3720
- "eslint-plugin-import": "^2.28.1",
3721
- glob: "^10.3.10",
3722
- "lint-staged": "^14.0.1",
3723
- lit: "^3.1.0",
3724
- lodash: "^4.17.21",
3725
- prettier: "^3.0.3",
3726
- react: "^18.2.0",
3727
- "react-dom": "^18.2.0",
3728
- "rollup-plugin-internal": "^1.0.4",
3729
- sinon: "^17.0.1",
3730
- storybook: "^7.4.5",
3731
- typescript: "^5.1.3",
3732
- vite: "^4.4.9",
3733
- "vite-plugin-commonjs": "^0.10.0",
3734
- "vite-plugin-dts": "^3.6.0",
3735
- "web-component-analyzer": "^1.1.7"
3736
- };
3737
- const packageJson = {
3738
- name,
3739
- version,
3740
- license,
3741
- author,
3742
- main,
3743
- module,
3744
- type,
3745
- types,
3746
- exports,
3747
- files,
3748
- publishConfig,
3749
- scripts,
3750
- "lint-staged": {
3751
- "**/*.{ts,tsx,js}": "eslint --fix --quiet",
3752
- "**/*.{md,json,yml}": "prettier --write"
3753
- },
3754
- dependencies,
3755
- peerDependencies,
3756
- devDependencies
3757
- };
3758
- function createVisitor(env) {
3759
- const { publicApiUrl } = getEnvUrls(env);
3760
- const visitorId = v4();
3761
- navigator.sendBeacon(`${publicApiUrl}/api/visitor`, JSON.stringify({ visitorId }));
3762
- return visitorId;
3763
- }
3764
- function getUids(env) {
3765
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
3766
- if (typeof window === "undefined") {
3767
- return {
3768
- client: null,
3769
- tab: null,
3770
- request: v4()
3771
- };
3772
- }
3773
- let visitorId = (_b = (_a = window.localStorage) == null ? void 0 : _a.getItem) == null ? void 0 : _b.call(_a, "vouch-uid-visitor");
3774
- let clientId = (_d = (_c = window.localStorage) == null ? void 0 : _c.getItem) == null ? void 0 : _d.call(_c, "vouch-uid-client");
3775
- let tabId = (_f = (_e = window.sessionStorage) == null ? void 0 : _e.getItem) == null ? void 0 : _f.call(_e, "vouch-uid-tab");
3776
- const requestId = v4();
3777
- if (!visitorId) {
3778
- visitorId = createVisitor(env);
3779
- (_h = (_g = window.localStorage) == null ? void 0 : _g.setItem) == null ? void 0 : _h.call(_g, "vouch-uid-visitor", visitorId);
3780
- }
3781
- if (!clientId) {
3782
- clientId = v4();
3783
- (_j = (_i = window.localStorage) == null ? void 0 : _i.setItem) == null ? void 0 : _j.call(_i, "vouch-uid-client", clientId);
3784
- }
3785
- if (!tabId) {
3786
- tabId = v4();
3787
- (_l = (_k = window.sessionStorage) == null ? void 0 : _k.setItem) == null ? void 0 : _l.call(_k, "vouch-uid-tab", tabId);
3788
- }
3789
- return {
3790
- client: clientId,
3791
- tab: tabId,
3792
- request: requestId,
3793
- visitor: visitorId
3794
- };
3795
- }
3796
- function findVouchId(payload, vouch) {
3797
- if (payload && "vouchId" in payload) {
3798
- return payload.vouchId;
3799
- }
3800
- return (vouch == null ? void 0 : vouch.id) ?? null;
3801
- }
3802
- function getReportingMetadata(source = "embedded_player") {
3803
- var _a, _b;
3804
- const [country, region] = ((_b = (_a = Intl.DateTimeFormat().resolvedOptions().timeZone) == null ? void 0 : _a.split) == null ? void 0 : _b.call(_a, "/")) ?? [];
3805
- const utmParams = {};
3806
- [...new URLSearchParams(location.search).entries()].forEach(([key, value]) => {
3807
- if (/utm/.test(key)) {
3808
- const param = key.toLowerCase().replace(/[-_][a-z0-9]/g, (group) => group.slice(-1).toUpperCase());
3809
- utmParams[param] = value;
3810
- }
3811
- });
3812
- return {
3813
- source,
3814
- time: /* @__PURE__ */ new Date(),
3815
- region,
3816
- country,
3817
- screenHeight: window.screen.height,
3818
- screenWidth: window.screen.width,
3819
- referrer: document.referrer,
3820
- currentUrl: location.href,
3821
- embedType: "media-player-embed",
3822
- embedVersion: packageJson.version,
3823
- templateVersion: TEMPLATE_VERSION,
3824
- ...utmParams
3825
- };
3826
- }
3827
- const MINIMUM_SEND_THRESHOLD = 1;
3828
- class TrackingController {
3829
- constructor(host) {
3830
- this._batchedEvents = [];
3831
- this._hasPlayed = false;
3832
- this._hasLoaded = {};
3833
- this._answersViewed = {};
3834
- this._streamStartTime = {};
3835
- this._streamLatestTime = {};
3836
- this._currentlyPlayingVideo = null;
3837
- this._createTrackingEvent = (event, payload) => {
3838
- const vouchId = findVouchId(payload, this.host.vouch);
3839
- if (!vouchId || this.host.disableTracking) {
3840
- return;
3841
- }
3842
- this._batchedEvents.push({
3843
- event,
3844
- payload: {
3845
- ...payload,
3846
- vouchId,
3847
- time: (/* @__PURE__ */ new Date()).toISOString()
3848
- }
3849
- });
3850
- };
3851
- this._sendTrackingEvent = () => {
3852
- if (this._batchedEvents.length <= 0) {
3853
- return;
3854
- }
3855
- const { publicApiUrl } = getEnvUrls(this.host.env);
3856
- const { client, tab, request, visitor } = getUids(this.host.env);
3857
- navigator.sendBeacon(
3858
- `${publicApiUrl}/api/batchevents`,
3859
- JSON.stringify({
3860
- payload: {
3861
- events: this._batchedEvents
3862
- },
3863
- context: {
3864
- "x-uid-client": client,
3865
- "x-uid-tab": tab,
3866
- "x-uid-request": request,
3867
- "x-uid-visitor": visitor,
3868
- "x-reporting-metadata": getReportingMetadata(this.host.trackingSource)
3869
- }
3870
- })
3871
- );
3872
- this._batchedEvents = [];
3873
- };
3874
- this._streamEnded = () => {
3875
- if (this._currentlyPlayingVideo) {
3876
- const { id, key } = this._currentlyPlayingVideo;
3877
- if (this._streamLatestTime[key] > this._streamStartTime[key] + MINIMUM_SEND_THRESHOLD) {
3878
- this._createTrackingEvent("VIDEO_STREAMED", {
3879
- answerId: id,
3880
- streamStart: this._streamStartTime[key],
3881
- streamEnd: this._streamLatestTime[key]
3882
- });
3883
- }
3884
- delete this._streamStartTime[key];
3885
- delete this._streamLatestTime[key];
3886
- }
3887
- };
3888
- this._handleVouchLoaded = ({ detail: vouchId }) => {
3889
- if (!vouchId) {
3890
- return;
3891
- }
3892
- if (!this._hasLoaded[vouchId]) {
3893
- this._createTrackingEvent("VOUCH_LOADED", { vouchId });
3894
- this._hasLoaded[vouchId] = true;
3895
- }
3896
- };
3897
- this._handlePlay = () => {
3898
- if (!this._hasPlayed) {
3899
- this._createTrackingEvent("VIDEO_PLAYED", {
3900
- streamStart: this.host.currentTime
3901
- });
3902
- this._hasPlayed = true;
3903
- }
3904
- };
3905
- this._handleVideoPlay = ({ detail: { id, key } }) => {
3906
- if (!this._answersViewed[key]) {
3907
- this._createTrackingEvent("VOUCH_RESPONSE_VIEWED", {
3908
- answerId: id
3909
- });
3910
- this._answersViewed[key] = true;
3911
- }
3912
- };
3913
- this._handleVideoTimeUpdate = ({ detail: { id, key, node } }) => {
3914
- var _a, _b;
3915
- if (
3916
- // We only want to count any time that the video is actually playing
3917
- !this.host.paused && // Only update the latest time if this event fires for the currently active video
3918
- id === ((_b = (_a = this.host.scene) == null ? void 0 : _a.video) == null ? void 0 : _b.id)
3919
- ) {
3920
- this._currentlyPlayingVideo = { id, key, node };
3921
- this._streamLatestTime[key] = node.currentTime;
3922
- if (!this._streamStartTime[key]) {
3923
- this._streamStartTime[key] = node.currentTime;
3924
- this._streamLatestTime[key] = node.currentTime;
3925
- }
3926
- }
3927
- };
3928
- this._handleVideoPause = ({ detail: { id, key } }) => {
3929
- if (this._streamLatestTime[key] > this._streamStartTime[key] + MINIMUM_SEND_THRESHOLD) {
3930
- this._createTrackingEvent("VIDEO_STREAMED", {
3931
- answerId: id,
3932
- streamStart: this._streamStartTime[key],
3933
- streamEnd: this._streamLatestTime[key]
3934
- });
3935
- }
3936
- delete this._streamStartTime[key];
3937
- delete this._streamLatestTime[key];
3938
- };
3939
- this._pageUnloading = () => {
3940
- this._streamEnded();
3941
- this._sendTrackingEvent();
3942
- };
3943
- this._handleVisibilityChange = () => {
3944
- if (document.visibilityState === "hidden") {
3945
- this._pageUnloading();
3946
- }
3947
- };
3948
- this._handlePageHide = () => {
3949
- this._pageUnloading();
3950
- };
3951
- this.host = host;
3952
- host.addController(this);
3953
- }
3954
- hostConnected() {
3955
- requestAnimationFrame(() => {
3956
- var _a, _b, _c, _d;
3957
- if ("onvisibilitychange" in document) {
3958
- document.addEventListener("visibilitychange", this._handleVisibilityChange);
3959
- } else {
3960
- window.addEventListener("pagehide", this._handlePageHide);
3961
- }
3962
- this.host.addEventListener("vouch:loaded", this._handleVouchLoaded);
3963
- (_a = this.host.mediaPlayer) == null ? void 0 : _a.addEventListener("play", this._handlePlay);
3964
- (_b = this.host.mediaPlayer) == null ? void 0 : _b.addEventListener("video:play", this._handleVideoPlay);
3965
- (_c = this.host.mediaPlayer) == null ? void 0 : _c.addEventListener("video:pause", this._handleVideoPause);
3966
- (_d = this.host.mediaPlayer) == null ? void 0 : _d.addEventListener("video:timeupdate", this._handleVideoTimeUpdate);
3967
- });
3968
- }
3969
- hostDisconnected() {
3970
- var _a, _b, _c, _d;
3971
- this._pageUnloading();
3972
- if ("onvisibilitychange" in document) {
3973
- document.removeEventListener("visibilitychange", this._handleVisibilityChange);
3974
- } else {
3975
- window.removeEventListener("pagehide", this._handlePageHide);
3976
- }
3977
- this.host.removeEventListener("vouch:loaded", this._handleVouchLoaded);
3978
- (_a = this.host.mediaPlayer) == null ? void 0 : _a.removeEventListener("play", this._handlePlay);
3979
- (_b = this.host.mediaPlayer) == null ? void 0 : _b.removeEventListener("video:play", this._handleVideoPlay);
3980
- (_c = this.host.mediaPlayer) == null ? void 0 : _c.removeEventListener("video:pause", this._handleVideoPause);
3981
- (_d = this.host.mediaPlayer) == null ? void 0 : _d.removeEventListener("video:timeupdate", this._handleVideoTimeUpdate);
3982
- }
3983
- }
3984
- var __defProp$3 = Object.defineProperty;
3985
- var __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor;
3986
- var __decorateClass$3 = (decorators, target, key, kind) => {
3987
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$3(target, key) : target;
3988
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
3989
- if (decorator = decorators[i])
3990
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
3991
- if (kind && result)
3992
- __defProp$3(target, key, result);
3993
- return result;
3994
- };
3995
- let PlayerEmbed = class extends LitElement {
3996
- constructor() {
3997
- super(...arguments);
3998
- this.env = "prod";
3999
- this.apiKey = "";
4000
- this.disableTracking = false;
4001
- this.trackingSource = "embedded_player";
4002
- this.preload = "auto";
4003
- this.autoplay = false;
4004
- this.aspectRatio = 0;
4005
- this.eventController = new EventForwardController(this, [
4006
- "durationchange",
4007
- "ended",
4008
- "error",
4009
- "loadeddata",
4010
- "pause",
4011
- "stalled",
4012
- "play",
4013
- "playing",
4014
- "ratechange",
4015
- "scenechange",
4016
- "seeking",
4017
- "seeked",
4018
- "timeupdate",
4019
- "volumechange",
4020
- "waiting",
4021
- "video:loadeddata",
4022
- "video:seeking",
4023
- "video:seeked",
4024
- "video:play",
4025
- "video:playing",
4026
- "video:pause",
4027
- "video:stalled",
4028
- "video:timeupdate",
4029
- "video:ended",
4030
- "video:error"
4031
- ]);
4032
- this._fetcherController = new FetcherController(this);
4033
- this._trackingController = new TrackingController(this);
4034
- this._mediaPlayerRef = createRef();
4035
- }
4036
- get fetching() {
4037
- return this._fetcherController.fetching;
4038
- }
4039
- get waiting() {
4040
- var _a;
4041
- return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.waiting;
4042
- }
4043
- get initialised() {
4044
- var _a;
4045
- return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.initialised;
4046
- }
4047
- get seeking() {
4048
- var _a;
4049
- return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.seeking;
4050
- }
4051
- get paused() {
4052
- var _a;
4053
- return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.paused;
4054
- }
4055
- get captions() {
4056
- var _a;
4057
- return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.captions;
4058
- }
4059
- get fullscreen() {
4060
- var _a;
4061
- return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.fullscreen;
4062
- }
4063
- get duration() {
4064
- var _a;
4065
- return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.duration;
4066
- }
4067
- set currentTime(value) {
4068
- if (this._mediaPlayerRef.value) {
4069
- this._mediaPlayerRef.value.currentTime = value;
4070
- }
4071
- }
4072
- get currentTime() {
4073
- var _a;
4074
- return ((_a = this._mediaPlayerRef.value) == null ? void 0 : _a.currentTime) ?? 0;
4075
- }
4076
- set playbackRate(value) {
4077
- if (this._mediaPlayerRef.value) {
4078
- this._mediaPlayerRef.value.playbackRate = value;
4079
- }
4080
- }
4081
- get playbackRate() {
4082
- var _a;
4083
- return ((_a = this._mediaPlayerRef.value) == null ? void 0 : _a.playbackRate) ?? 1;
4084
- }
4085
- set volume(value) {
4086
- if (this._mediaPlayerRef.value) {
4087
- this._mediaPlayerRef.value.volume = value;
4088
- }
4089
- }
4090
- get volume() {
4091
- var _a;
4092
- return ((_a = this._mediaPlayerRef.value) == null ? void 0 : _a.volume) ?? 1;
4093
- }
4094
- set muted(value) {
4095
- if (this._mediaPlayerRef.value) {
4096
- this._mediaPlayerRef.value.muted = value;
4097
- }
4098
- }
4099
- get muted() {
4100
- var _a;
4101
- return ((_a = this._mediaPlayerRef.value) == null ? void 0 : _a.muted) ?? false;
4102
- }
4103
- get scene() {
4104
- var _a;
4105
- return ((_a = this._mediaPlayerRef.value) == null ? void 0 : _a.scene) ?? null;
4106
- }
4107
- get scenes() {
4108
- var _a;
4109
- return ((_a = this._mediaPlayerRef.value) == null ? void 0 : _a.scenes) ?? [];
4110
- }
4111
- get sceneConfig() {
4112
- var _a;
4113
- return ((_a = this._mediaPlayerRef.value) == null ? void 0 : _a.sceneConfig) ?? null;
4114
- }
4115
- get videoState() {
4116
- var _a;
4117
- return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.videoState;
4118
- }
4119
- get mediaPlayer() {
4120
- return this._mediaPlayerRef.value;
4121
- }
4122
- play() {
4123
- var _a;
4124
- (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.play();
4125
- }
4126
- pause() {
4127
- var _a;
4128
- (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.pause();
4129
- }
4130
- reset(time = 0, play = false) {
4131
- var _a;
4132
- (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.reset(time, play);
4133
- }
4134
- setScene(index) {
4135
- var _a;
4136
- (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.setScene(index);
4137
- }
4138
- _renderStyles() {
4139
- if (!this.aspectRatio) {
4140
- return html`
4141
- <style>
4142
- :host {
4143
- width: 100%;
4144
- height: 100%;
4145
- }
4146
- </style>
4147
- `;
4148
- }
4149
- if (typeof this.aspectRatio === "number") {
4150
- return html`
4151
- <style>
4152
- :host {
4153
- aspect-ratio: ${this.aspectRatio};
4154
- }
4155
- </style>
4156
- `;
4157
- }
4158
- return null;
4159
- }
4160
- render() {
4161
- return html`
4162
- ${this._renderStyles()}
4163
- <vmp-media-player
4164
- ${ref(this._mediaPlayerRef)}
4165
- ${this.eventController.register()}
4166
- ?autoplay=${this.autoplay}
4167
- ?loading=${this.fetching}
4168
- .data=${this.vouch}
4169
- .template=${this.template}
4170
- aspectRatio=${ifDefined(this.aspectRatio)}
4171
- preload=${ifDefined(this.preload)}
4172
- .controls=${this.controls}
4173
- ></vmp-media-player>
4174
- `;
4175
- }
4176
- };
4177
- PlayerEmbed.styles = [
4178
- css`
4179
- :host {
4180
- display: flex;
4181
- }
4182
- `
4183
- ];
4184
- __decorateClass$3([
4185
- property({ type: Object })
4186
- ], PlayerEmbed.prototype, "data", 2);
4187
- __decorateClass$3([
4188
- property({ type: String })
4189
- ], PlayerEmbed.prototype, "vouchId", 2);
4190
- __decorateClass$3([
4191
- property({ type: String })
4192
- ], PlayerEmbed.prototype, "templateId", 2);
4193
- __decorateClass$3([
4194
- property({ type: Array })
4195
- ], PlayerEmbed.prototype, "questions", 2);
4196
- __decorateClass$3([
4197
- property({ type: String })
4198
- ], PlayerEmbed.prototype, "env", 2);
4199
- __decorateClass$3([
4200
- property({ type: String })
4201
- ], PlayerEmbed.prototype, "apiKey", 2);
4202
- __decorateClass$3([
4203
- property({ type: Boolean })
4204
- ], PlayerEmbed.prototype, "disableTracking", 2);
4205
- __decorateClass$3([
4206
- property({ type: String })
4207
- ], PlayerEmbed.prototype, "trackingSource", 2);
4208
- __decorateClass$3([
4209
- property({ type: Array })
4210
- ], PlayerEmbed.prototype, "controls", 2);
4211
- __decorateClass$3([
4212
- property({ type: String })
4213
- ], PlayerEmbed.prototype, "preload", 2);
4214
- __decorateClass$3([
4215
- property({ type: Boolean })
4216
- ], PlayerEmbed.prototype, "autoplay", 2);
4217
- __decorateClass$3([
4218
- property({ type: Number })
4219
- ], PlayerEmbed.prototype, "aspectRatio", 2);
4220
- __decorateClass$3([
4221
- state()
4222
- ], PlayerEmbed.prototype, "vouch", 2);
4223
- __decorateClass$3([
4224
- state()
4225
- ], PlayerEmbed.prototype, "template", 2);
4226
- PlayerEmbed = __decorateClass$3([
4227
- customElement("vouch-embed-player")
4228
- ], PlayerEmbed);
4229
- var __defProp$2 = Object.defineProperty;
4230
- var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;
4231
- var __decorateClass$2 = (decorators, target, key, kind) => {
4232
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target;
4233
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
4234
- if (decorator = decorators[i])
4235
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
4236
- if (kind && result)
4237
- __defProp$2(target, key, result);
4238
- return result;
4239
- };
4240
- let DialogOverlay = class extends LitElement {
4241
- constructor() {
4242
- super(...arguments);
4243
- this.open = false;
4244
- this.aspectRatio = 0;
4245
- }
4246
- render() {
4247
- return html`
4248
- <div
4249
- class=${classMap({
4250
- container: true,
4251
- hidden: !this.open
4252
- })}
4253
- >
4254
- <div
4255
- class="background"
4256
- @click=${() => this.dispatchEvent(new CustomEvent("overlay:click", { bubbles: true, composed: true }))}
4257
- ></div>
4258
- <focus-trap>
4259
- <div
4260
- class=${classMap({
4261
- "video-frame": true,
4262
- grow: this.aspectRatio === 0
4263
- })}
4264
- style=${styleMap({
4265
- aspectRatio: this.aspectRatio
4266
- })}
4267
- >
4268
- <slot></slot>
4269
- <vmp-icon-button
4270
- icon="close"
4271
- rounded="full"
4272
- weight="heavy"
4273
- @click=${() => this.dispatchEvent(new CustomEvent("close:click", { bubbles: true, composed: true }))}
4274
- ></vmp-icon-button>
4275
- </div>
4276
- </focus-trap>
4277
- </div>
4278
- `;
4279
- }
4280
- };
4281
- DialogOverlay.styles = [
4282
- css`
4283
- :host {
4284
- --vouch-media-player-border-radius: var(--vu-media-player-border-radius, 12px);
4285
- --overlay-background-color: var(--vu-overlay-background-color, black);
4286
- --overlay-background-opacity: var(--vu-overlay-background-opacity, 0.4);
4287
-
4288
- --dialog-width: var(--vu-dialog-width, 890px);
4289
- --dialog-height: var(--vu-dialog-height, 500px);
4290
- }
4291
-
4292
- .container {
4293
- position: fixed;
4294
- display: flex;
4295
- inset: 0;
4296
- opacity: 1;
4297
- z-index: 2147483647;
4298
- align-items: center;
4299
- justify-content: center;
4300
- transition: opacity 100ms ease-in;
4301
- }
4302
-
4303
- .hidden {
4304
- opacity: 0;
4305
- pointer-events: none;
4306
- }
4307
-
4308
- .background {
4309
- position: absolute;
4310
- inset: 0;
4311
- opacity: var(--overlay-background-opacity);
4312
- background-color: var(--overlay-background-color);
4313
- }
4314
-
4315
- focus-trap {
4316
- display: flex;
4317
- align-items: center;
4318
- justify-content: center;
4319
- margin: 40px;
4320
- width: var(--dialog-width);
4321
- height: var(--dialog-height);
4322
- max-width: calc(100% - 80px);
4323
- max-height: calc(100% - 80px);
4324
- }
4325
-
4326
- .video-frame {
4327
- position: relative;
4328
- display: flex;
4329
- align-items: center;
4330
- justify-content: center;
4331
- max-width: 100%;
4332
- max-height: 100%;
4333
- }
4334
-
4335
- .video-frame.grow {
4336
- width: 100%;
4337
- height: 100%;
4338
- }
4339
-
4340
- vmp-icon-button {
4341
- position: absolute;
4342
- top: 0;
4343
- right: 0;
4344
- margin: 10px;
4345
- }
4346
- `
4347
- ];
4348
- __decorateClass$2([
4349
- property({ type: Boolean })
4350
- ], DialogOverlay.prototype, "open", 2);
4351
- __decorateClass$2([
4352
- property({ type: Number })
4353
- ], DialogOverlay.prototype, "aspectRatio", 2);
4354
- DialogOverlay = __decorateClass$2([
4355
- customElement("vouch-embed-dialog-overlay")
4356
- ], DialogOverlay);
4357
- var __defProp$1 = Object.defineProperty;
4358
- var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
4359
- var __decorateClass$1 = (decorators, target, key, kind) => {
4360
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target;
4361
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
4362
- if (decorator = decorators[i])
4363
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
4364
- if (kind && result)
4365
- __defProp$1(target, key, result);
4366
- return result;
4367
- };
4368
- let DialogPortal = class extends LitElement {
4369
- constructor() {
4370
- super(...arguments);
4371
- this.env = "prod";
4372
- this.apiKey = "";
4373
- this.disableTracking = false;
4374
- this.trackingSource = "embedded_player";
4375
- this.preload = "none";
4376
- this.disableAutoplay = false;
4377
- this.aspectRatio = 0;
4378
- this._mediaPlayerRef = createRef();
4379
- this.open = false;
4380
- this._handleToggle = ({ detail }) => {
4381
- var _a, _b, _c;
4382
- if (this.id === detail) {
4383
- this.open = !this.open;
4384
- if (this.open) {
4385
- if (!this.disableAutoplay && ((_a = this._mediaPlayerRef) == null ? void 0 : _a.value)) {
4386
- this._mediaPlayerRef.value.muted = false;
4387
- this._mediaPlayerRef.value.play();
4388
- }
4389
- } else {
4390
- (_c = (_b = this._mediaPlayerRef) == null ? void 0 : _b.value) == null ? void 0 : _c.pause();
4391
- }
4392
- }
4393
- };
4394
- this._handleClose = () => {
4395
- var _a, _b;
4396
- this.open = false;
4397
- (_b = (_a = this._mediaPlayerRef) == null ? void 0 : _a.value) == null ? void 0 : _b.pause();
4398
- };
4399
- this._handleDocumentKeyUp = (e) => {
4400
- if (e.key === "Escape") {
4401
- this._handleClose();
4402
- }
4403
- };
4404
- }
4405
- connectedCallback() {
4406
- super.connectedCallback();
4407
- document.addEventListener("dialogembed:click", this._handleToggle);
4408
- document.addEventListener("keyup", this._handleDocumentKeyUp);
4409
- document.addEventListener("close:click", this._handleClose);
4410
- document.addEventListener("overlay:click", this._handleClose);
4411
- }
4412
- disconnectedCallback() {
4413
- super.disconnectedCallback();
4414
- document.removeEventListener("dialogembed:click", this._handleToggle);
4415
- document.removeEventListener("keyup", this._handleDocumentKeyUp);
4416
- document.removeEventListener("close:click", this._handleClose);
4417
- document.removeEventListener("overlay:click", this._handleClose);
4418
- }
4419
- createRenderRoot() {
4420
- const newNode = document.createElement("div");
4421
- document.body.appendChild(newNode);
4422
- return newNode;
4423
- }
4424
- render() {
4425
- return html`
4426
- <vouch-embed-dialog-overlay ?open=${this.open} aspectRatio=${this.aspectRatio}>
4427
- <vouch-embed-player
4428
- ${ref(this._mediaPlayerRef)}
4429
- style=${styleMap({
4430
- maxWidth: "100%",
4431
- maxHeight: "100%"
4432
- })}
4433
- ?autoplay=${false}
4434
- vouchId=${ifDefined(this.vouchId)}
4435
- templateId=${ifDefined(this.templateId)}
4436
- .questions=${this.questions}
4437
- .controls=${this.controls}
4438
- env=${ifDefined(this.env)}
4439
- apiKey=${ifDefined(this.apiKey)}
4440
- ?disableTracking=${this.disableTracking}
4441
- trackingSource=${ifDefined(this.trackingSource)}
4442
- preload=${ifDefined(this.preload)}
4443
- aspectRatio=${this.aspectRatio}
4444
- ></vouch-embed-player>
4445
- </vouch-embed-dialog-overlay>
4446
- `;
4447
- }
4448
- };
4449
- __decorateClass$1([
4450
- property({ type: String })
4451
- ], DialogPortal.prototype, "vouchId", 2);
4452
- __decorateClass$1([
4453
- property({ type: String })
4454
- ], DialogPortal.prototype, "templateId", 2);
4455
- __decorateClass$1([
4456
- property({ type: Array })
4457
- ], DialogPortal.prototype, "questions", 2);
4458
- __decorateClass$1([
4459
- property({ type: String })
4460
- ], DialogPortal.prototype, "env", 2);
4461
- __decorateClass$1([
4462
- property({ type: String })
4463
- ], DialogPortal.prototype, "apiKey", 2);
4464
- __decorateClass$1([
4465
- property({ type: Boolean })
4466
- ], DialogPortal.prototype, "disableTracking", 2);
4467
- __decorateClass$1([
4468
- property({ type: String })
4469
- ], DialogPortal.prototype, "trackingSource", 2);
4470
- __decorateClass$1([
4471
- property({ type: Array })
4472
- ], DialogPortal.prototype, "controls", 2);
4473
- __decorateClass$1([
4474
- property({ type: String })
4475
- ], DialogPortal.prototype, "preload", 2);
4476
- __decorateClass$1([
4477
- property({ type: Boolean })
4478
- ], DialogPortal.prototype, "disableAutoplay", 2);
4479
- __decorateClass$1([
4480
- property({ type: Number })
4481
- ], DialogPortal.prototype, "aspectRatio", 2);
4482
- __decorateClass$1([
4483
- state()
4484
- ], DialogPortal.prototype, "open", 2);
4485
- DialogPortal = __decorateClass$1([
4486
- customElement("vouch-embed-dialog-portal")
4487
- ], DialogPortal);
4488
- var __defProp = Object.defineProperty;
4489
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4490
- var __decorateClass = (decorators, target, key, kind) => {
4491
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
4492
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
4493
- if (decorator = decorators[i])
4494
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
4495
- if (kind && result)
4496
- __defProp(target, key, result);
4497
- return result;
4498
- };
4499
- let DialogEmbed = class extends LitElement {
4500
- constructor() {
4501
- super(...arguments);
4502
- this.env = "prod";
4503
- this.apiKey = "";
4504
- this.disableTracking = false;
4505
- this.trackingSource = "embedded_player";
4506
- this.preload = "none";
4507
- this.disableAutoplay = false;
4508
- this.aspectRatio = 0;
4509
- this._id = v4();
4510
- this._handleRootClick = () => {
4511
- this.dispatchEvent(new CustomEvent("dialogembed:click", { detail: this._id, bubbles: true, composed: true }));
4512
- };
4513
- }
4514
- connectedCallback() {
4515
- super.connectedCallback();
4516
- this.addEventListener("click", this._handleRootClick);
4517
- }
4518
- disconnectedCallback() {
4519
- super.disconnectedCallback();
4520
- this.removeEventListener("click", this._handleRootClick);
4521
- }
4522
- render() {
4523
- return html`
4524
- <slot>
4525
- <vmp-button size="large">Play</vmp-button>
4526
- </slot>
4527
- <vouch-embed-dialog-portal
4528
- id=${this._id}
4529
- ?autoplay=${false}
4530
- vouchId=${ifDefined(this.vouchId)}
4531
- templateId=${ifDefined(this.templateId)}
4532
- .questions=${this.questions}
4533
- .controls=${this.controls}
4534
- env=${ifDefined(this.env)}
4535
- apiKey=${ifDefined(this.apiKey)}
4536
- ?disableTracking=${this.disableTracking}
4537
- trackingSource=${ifDefined(this.trackingSource)}
4538
- preload=${ifDefined(this.preload)}
4539
- aspectRatio=${this.aspectRatio}
4540
- ></vouch-embed-dialog-portal>
4541
- `;
4542
- }
4543
- };
4544
- DialogEmbed.styles = [
4545
- css`
4546
- :host {
4547
- --vu-button-padding: 10px 20px;
4548
- --vu-button-background: #287179;
4549
- --vu-button-background-hover: #4faab2;
4550
-
4551
- display: flex;
4552
- width: fit-content;
4553
- height: fit-content;
4554
- }
4555
- `
4556
- ];
4557
- __decorateClass([
4558
- property({ type: String })
4559
- ], DialogEmbed.prototype, "vouchId", 2);
4560
- __decorateClass([
4561
- property({ type: String })
4562
- ], DialogEmbed.prototype, "templateId", 2);
4563
- __decorateClass([
4564
- property({ type: Array })
4565
- ], DialogEmbed.prototype, "questions", 2);
4566
- __decorateClass([
4567
- property({ type: String })
4568
- ], DialogEmbed.prototype, "env", 2);
4569
- __decorateClass([
4570
- property({ type: String })
4571
- ], DialogEmbed.prototype, "apiKey", 2);
4572
- __decorateClass([
4573
- property({ type: Boolean })
4574
- ], DialogEmbed.prototype, "disableTracking", 2);
4575
- __decorateClass([
4576
- property({ type: String })
4577
- ], DialogEmbed.prototype, "trackingSource", 2);
4578
- __decorateClass([
4579
- property({ type: Array })
4580
- ], DialogEmbed.prototype, "controls", 2);
4581
- __decorateClass([
4582
- property({ type: String })
4583
- ], DialogEmbed.prototype, "preload", 2);
4584
- __decorateClass([
4585
- property({ type: Boolean })
4586
- ], DialogEmbed.prototype, "disableAutoplay", 2);
4587
- __decorateClass([
4588
- property({ type: Number })
4589
- ], DialogEmbed.prototype, "aspectRatio", 2);
4590
- DialogEmbed = __decorateClass([
4591
- customElement("vouch-embed-dialog")
4592
- ], DialogEmbed);
4593
- export {
4594
- DialogEmbed as D,
4595
- PlayerEmbed as P,
4596
- commonjsGlobal as c,
4597
- getDefaultExportFromCjs as g
4598
- };
4599
- //# sourceMappingURL=index-37e10211.js.map