@vouchfor/embeds 0.0.0-experiment.f4df018 → 0.0.0-experiment.f59de3c

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. package/dist/es/embeds.js +1014 -1362
  2. package/dist/es/embeds.js.map +1 -1
  3. package/dist/es/src/components/DialogEmbed/DialogOverlay.d.ts +20 -0
  4. package/dist/es/src/components/DialogEmbed/DialogPortal.d.ts +36 -0
  5. package/dist/es/src/components/DialogEmbed/index.d.ts +38 -0
  6. package/dist/es/src/components/PlayerEmbed/controllers/event-forwarder.d.ts +15 -0
  7. package/dist/es/{components/Embed → src/components/PlayerEmbed}/controllers/fetcher.d.ts +5 -4
  8. package/dist/es/src/components/PlayerEmbed/controllers/tracking/index.d.ts +36 -0
  9. package/dist/es/src/components/PlayerEmbed/controllers/tracking/utils.d.ts +17 -0
  10. package/dist/es/src/components/PlayerEmbed/index.d.ts +77 -0
  11. package/dist/es/src/components/PlayerEmbed/tests/data.d.ts +3 -0
  12. package/dist/es/src/index.d.ts +2 -0
  13. package/dist/iife/dialog-embed/embed.iife.js +1757 -0
  14. package/dist/iife/dialog-embed/embed.iife.js.map +1 -0
  15. package/dist/iife/embeds.iife.js +769 -442
  16. package/dist/iife/embeds.iife.js.map +1 -1
  17. package/dist/iife/player-embed/embed.iife.js +1619 -0
  18. package/dist/iife/player-embed/embed.iife.js.map +1 -0
  19. package/package.json +44 -31
  20. package/src/components/DialogEmbed/Dialog.stories.ts +91 -0
  21. package/src/components/DialogEmbed/DialogOverlay.ts +131 -0
  22. package/src/components/DialogEmbed/DialogPortal.ts +126 -0
  23. package/src/components/DialogEmbed/index.ts +97 -0
  24. package/src/components/PlayerEmbed/MultiEmbed.stories.ts +135 -0
  25. package/src/components/{Embed/Embed.stories.ts → PlayerEmbed/PlayerEmbed.stories.ts} +42 -15
  26. package/src/components/{Embed → PlayerEmbed}/controllers/event-forwarder.ts +6 -5
  27. package/src/components/PlayerEmbed/controllers/fetcher.ts +152 -0
  28. package/src/components/PlayerEmbed/controllers/tracking/index.ts +224 -0
  29. package/src/components/PlayerEmbed/controllers/tracking/utils.ts +95 -0
  30. package/src/components/{Embed → PlayerEmbed}/index.ts +93 -27
  31. package/src/components/PlayerEmbed/tests/PlayerEmbed.spec.ts +80 -0
  32. package/src/components/PlayerEmbed/tests/data.ts +183 -0
  33. package/src/index.ts +2 -1
  34. package/dist/es/components/Embed/controllers/tracking.d.ts +0 -28
  35. package/dist/es/components/Embed/index.d.ts +0 -64
  36. package/dist/es/index.d.ts +0 -1
  37. package/src/components/Embed/controllers/fetcher.ts +0 -113
  38. package/src/components/Embed/controllers/tracking.ts +0 -261
  39. /package/dist/es/{utils → src/utils}/env.d.ts +0 -0
  40. /package/dist/es/{utils → src/utils}/events.d.ts +0 -0
package/dist/es/embeds.js CHANGED
@@ -1,1339 +1,555 @@
1
- import { property as v, state as zt, customElement as he } from "lit/decorators.js";
2
- import { ifDefined as ft } from "lit/directives/if-defined.js";
3
- import { createRef as jt, ref as Bt } from "lit/directives/ref.js";
4
- import { Task as ae } from "@lit/task";
5
- import { v4 as N } from "uuid";
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 { TEMPLATE_VERSION } from "@vouchfor/canvas-video";
6
8
  import "@vouchfor/media-player";
7
- /**
8
- * @license
9
- * Copyright 2019 Google LLC
10
- * SPDX-License-Identifier: BSD-3-Clause
11
- */
12
- const X = globalThis, _t = X.ShadowRoot && (X.ShadyCSS === void 0 || X.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, Wt = Symbol(), gt = /* @__PURE__ */ new WeakMap();
13
- let le = class {
14
- constructor(t, e, s) {
15
- if (this._$cssResult$ = !0, s !== Wt)
16
- throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
17
- this.cssText = t, this.t = e;
18
- }
19
- get styleSheet() {
20
- let t = this.o;
21
- const e = this.t;
22
- if (_t && t === void 0) {
23
- const s = e !== void 0 && e.length === 1;
24
- s && (t = gt.get(e)), t === void 0 && ((this.o = t = new CSSStyleSheet()).replaceSync(this.cssText), s && gt.set(e, t));
25
- }
26
- return t;
27
- }
28
- toString() {
29
- return this.cssText;
30
- }
31
- };
32
- const de = (r) => new le(typeof r == "string" ? r : r + "", void 0, Wt), ce = (r, t) => {
33
- if (_t)
34
- r.adoptedStyleSheets = t.map((e) => e instanceof CSSStyleSheet ? e : e.styleSheet);
35
- else
36
- for (const e of t) {
37
- const s = document.createElement("style"), i = X.litNonce;
38
- i !== void 0 && s.setAttribute("nonce", i), s.textContent = e.cssText, r.appendChild(s);
39
- }
40
- }, vt = _t ? (r) => r : (r) => r instanceof CSSStyleSheet ? ((t) => {
41
- let e = "";
42
- for (const s of t.cssRules)
43
- e += s.cssText;
44
- return de(e);
45
- })(r) : r;
46
- /**
47
- * @license
48
- * Copyright 2017 Google LLC
49
- * SPDX-License-Identifier: BSD-3-Clause
50
- */
51
- const { is: pe, defineProperty: ue, getOwnPropertyDescriptor: _e, getOwnPropertyNames: $e, getOwnPropertySymbols: me, getPrototypeOf: fe } = Object, E = globalThis, yt = E.trustedTypes, ge = yt ? yt.emptyScript : "", rt = E.reactiveElementPolyfillSupport, L = (r, t) => r, ct = { toAttribute(r, t) {
52
- switch (t) {
53
- case Boolean:
54
- r = r ? ge : null;
55
- break;
56
- case Object:
57
- case Array:
58
- r = r == null ? r : JSON.stringify(r);
59
- }
60
- return r;
61
- }, fromAttribute(r, t) {
62
- let e = r;
63
- switch (t) {
64
- case Boolean:
65
- e = r !== null;
66
- break;
67
- case Number:
68
- e = r === null ? null : Number(r);
69
- break;
70
- case Object:
71
- case Array:
72
- try {
73
- e = JSON.parse(r);
74
- } catch {
75
- e = null;
76
- }
77
- }
78
- return e;
79
- } }, qt = (r, t) => !pe(r, t), At = { attribute: !0, type: String, converter: ct, reflect: !1, hasChanged: qt };
80
- Symbol.metadata ?? (Symbol.metadata = Symbol("metadata")), E.litPropertyMetadata ?? (E.litPropertyMetadata = /* @__PURE__ */ new WeakMap());
81
- let M = class extends HTMLElement {
82
- static addInitializer(t) {
83
- this._$Ei(), (this.l ?? (this.l = [])).push(t);
84
- }
85
- static get observedAttributes() {
86
- return this.finalize(), this._$Eh && [...this._$Eh.keys()];
87
- }
88
- static createProperty(t, e = At) {
89
- if (e.state && (e.attribute = !1), this._$Ei(), this.elementProperties.set(t, e), !e.noAccessor) {
90
- const s = Symbol(), i = this.getPropertyDescriptor(t, s, e);
91
- i !== void 0 && ue(this.prototype, t, i);
92
- }
93
- }
94
- static getPropertyDescriptor(t, e, s) {
95
- const { get: i, set: n } = _e(this.prototype, t) ?? { get() {
96
- return this[e];
97
- }, set(o) {
98
- this[e] = o;
99
- } };
100
- return { get() {
101
- return i == null ? void 0 : i.call(this);
102
- }, set(o) {
103
- const l = i == null ? void 0 : i.call(this);
104
- n.call(this, o), this.requestUpdate(t, l, s);
105
- }, configurable: !0, enumerable: !0 };
106
- }
107
- static getPropertyOptions(t) {
108
- return this.elementProperties.get(t) ?? At;
109
- }
110
- static _$Ei() {
111
- if (this.hasOwnProperty(L("elementProperties")))
112
- return;
113
- const t = fe(this);
114
- t.finalize(), t.l !== void 0 && (this.l = [...t.l]), this.elementProperties = new Map(t.elementProperties);
115
- }
116
- static finalize() {
117
- if (this.hasOwnProperty(L("finalized")))
118
- return;
119
- if (this.finalized = !0, this._$Ei(), this.hasOwnProperty(L("properties"))) {
120
- const e = this.properties, s = [...$e(e), ...me(e)];
121
- for (const i of s)
122
- this.createProperty(i, e[i]);
123
- }
124
- const t = this[Symbol.metadata];
125
- if (t !== null) {
126
- const e = litPropertyMetadata.get(t);
127
- if (e !== void 0)
128
- for (const [s, i] of e)
129
- this.elementProperties.set(s, i);
130
- }
131
- this._$Eh = /* @__PURE__ */ new Map();
132
- for (const [e, s] of this.elementProperties) {
133
- const i = this._$Eu(e, s);
134
- i !== void 0 && this._$Eh.set(i, e);
135
- }
136
- this.elementStyles = this.finalizeStyles(this.styles);
137
- }
138
- static finalizeStyles(t) {
139
- const e = [];
140
- if (Array.isArray(t)) {
141
- const s = new Set(t.flat(1 / 0).reverse());
142
- for (const i of s)
143
- e.unshift(vt(i));
144
- } else
145
- t !== void 0 && e.push(vt(t));
146
- return e;
147
- }
148
- static _$Eu(t, e) {
149
- const s = e.attribute;
150
- return s === !1 ? void 0 : typeof s == "string" ? s : typeof t == "string" ? t.toLowerCase() : void 0;
151
- }
152
- constructor() {
153
- super(), this._$Ep = void 0, this.isUpdatePending = !1, this.hasUpdated = !1, this._$Em = null, this._$Ev();
154
- }
155
- _$Ev() {
156
- var t;
157
- this._$Eg = new Promise((e) => this.enableUpdating = e), this._$AL = /* @__PURE__ */ new Map(), this._$ES(), this.requestUpdate(), (t = this.constructor.l) == null || t.forEach((e) => e(this));
158
- }
159
- addController(t) {
160
- var e;
161
- (this._$E_ ?? (this._$E_ = /* @__PURE__ */ new Set())).add(t), this.renderRoot !== void 0 && this.isConnected && ((e = t.hostConnected) == null || e.call(t));
162
- }
163
- removeController(t) {
164
- var e;
165
- (e = this._$E_) == null || e.delete(t);
166
- }
167
- _$ES() {
168
- const t = /* @__PURE__ */ new Map(), e = this.constructor.elementProperties;
169
- for (const s of e.keys())
170
- this.hasOwnProperty(s) && (t.set(s, this[s]), delete this[s]);
171
- t.size > 0 && (this._$Ep = t);
172
- }
173
- createRenderRoot() {
174
- const t = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);
175
- return ce(t, this.constructor.elementStyles), t;
176
- }
177
- connectedCallback() {
178
- var t;
179
- this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this.enableUpdating(!0), (t = this._$E_) == null || t.forEach((e) => {
180
- var s;
181
- return (s = e.hostConnected) == null ? void 0 : s.call(e);
182
- });
183
- }
184
- enableUpdating(t) {
185
- }
186
- disconnectedCallback() {
187
- var t;
188
- (t = this._$E_) == null || t.forEach((e) => {
189
- var s;
190
- return (s = e.hostDisconnected) == null ? void 0 : s.call(e);
191
- });
192
- }
193
- attributeChangedCallback(t, e, s) {
194
- this._$AK(t, s);
195
- }
196
- _$EO(t, e) {
197
- var n;
198
- const s = this.constructor.elementProperties.get(t), i = this.constructor._$Eu(t, s);
199
- if (i !== void 0 && s.reflect === !0) {
200
- const o = (((n = s.converter) == null ? void 0 : n.toAttribute) !== void 0 ? s.converter : ct).toAttribute(e, s.type);
201
- this._$Em = t, o == null ? this.removeAttribute(i) : this.setAttribute(i, o), this._$Em = null;
202
- }
203
- }
204
- _$AK(t, e) {
205
- var n;
206
- const s = this.constructor, i = s._$Eh.get(t);
207
- if (i !== void 0 && this._$Em !== i) {
208
- const o = s.getPropertyOptions(i), l = typeof o.converter == "function" ? { fromAttribute: o.converter } : ((n = o.converter) == null ? void 0 : n.fromAttribute) !== void 0 ? o.converter : ct;
209
- this._$Em = i, this[i] = l.fromAttribute(e, o.type), this._$Em = null;
210
- }
211
- }
212
- requestUpdate(t, e, s, i = !1, n) {
213
- if (t !== void 0) {
214
- if (s ?? (s = this.constructor.getPropertyOptions(t)), !(s.hasChanged ?? qt)(i ? n : this[t], e))
215
- return;
216
- this.C(t, e, s);
217
- }
218
- this.isUpdatePending === !1 && (this._$Eg = this._$EP());
219
- }
220
- C(t, e, s) {
221
- this._$AL.has(t) || this._$AL.set(t, e), s.reflect === !0 && this._$Em !== t && (this._$Ej ?? (this._$Ej = /* @__PURE__ */ new Set())).add(t);
222
- }
223
- async _$EP() {
224
- this.isUpdatePending = !0;
225
- try {
226
- await this._$Eg;
227
- } catch (e) {
228
- Promise.reject(e);
229
- }
230
- const t = this.scheduleUpdate();
231
- return t != null && await t, !this.isUpdatePending;
232
- }
233
- scheduleUpdate() {
234
- return this.performUpdate();
235
- }
236
- performUpdate() {
237
- var s;
238
- if (!this.isUpdatePending)
239
- return;
240
- if (!this.hasUpdated) {
241
- if (this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this._$Ep) {
242
- for (const [n, o] of this._$Ep)
243
- this[n] = o;
244
- this._$Ep = void 0;
245
- }
246
- const i = this.constructor.elementProperties;
247
- if (i.size > 0)
248
- for (const [n, o] of i)
249
- o.wrapped !== !0 || this._$AL.has(n) || this[n] === void 0 || this.C(n, this[n], o);
250
- }
251
- let t = !1;
252
- const e = this._$AL;
253
- try {
254
- t = this.shouldUpdate(e), t ? (this.willUpdate(e), (s = this._$E_) == null || s.forEach((i) => {
255
- var n;
256
- return (n = i.hostUpdate) == null ? void 0 : n.call(i);
257
- }), this.update(e)) : this._$ET();
258
- } catch (i) {
259
- throw t = !1, this._$ET(), i;
260
- }
261
- t && this._$AE(e);
262
- }
263
- willUpdate(t) {
264
- }
265
- _$AE(t) {
266
- var e;
267
- (e = this._$E_) == null || e.forEach((s) => {
268
- var i;
269
- return (i = s.hostUpdated) == null ? void 0 : i.call(s);
270
- }), this.hasUpdated || (this.hasUpdated = !0, this.firstUpdated(t)), this.updated(t);
271
- }
272
- _$ET() {
273
- this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = !1;
274
- }
275
- get updateComplete() {
276
- return this.getUpdateComplete();
277
- }
278
- getUpdateComplete() {
279
- return this._$Eg;
280
- }
281
- shouldUpdate(t) {
282
- return !0;
283
- }
284
- update(t) {
285
- this._$Ej && (this._$Ej = this._$Ej.forEach((e) => this._$EO(e, this[e]))), this._$ET();
286
- }
287
- updated(t) {
288
- }
289
- firstUpdated(t) {
290
- }
291
- };
292
- M.elementStyles = [], M.shadowRootOptions = { mode: "open" }, M[L("elementProperties")] = /* @__PURE__ */ new Map(), M[L("finalized")] = /* @__PURE__ */ new Map(), rt == null || rt({ ReactiveElement: M }), (E.reactiveElementVersions ?? (E.reactiveElementVersions = [])).push("2.0.2");
293
- /**
294
- * @license
295
- * Copyright 2017 Google LLC
296
- * SPDX-License-Identifier: BSD-3-Clause
297
- */
298
- const V = globalThis, Y = V.trustedTypes, Et = Y ? Y.createPolicy("lit-html", { createHTML: (r) => r }) : void 0, Kt = "$lit$", y = `lit$${(Math.random() + "").slice(9)}$`, Jt = "?" + y, ve = `<${Jt}>`, U = document, Q = () => U.createComment(""), B = (r) => r === null || typeof r != "object" && typeof r != "function", Ft = Array.isArray, ye = (r) => Ft(r) || typeof (r == null ? void 0 : r[Symbol.iterator]) == "function", nt = `[
299
- \f\r]`, I = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, St = /-->/g, bt = />/g, b = RegExp(`>|${nt}(?:([^\\s"'>=/]+)(${nt}*=${nt}*(?:[^
300
- \f\r"'\`<>=]|("|')|))|$)`, "g"), wt = /'/g, Pt = /"/g, Gt = /^(?:script|style|textarea|title)$/i, W = Symbol.for("lit-noChange"), _ = Symbol.for("lit-nothing"), Ct = /* @__PURE__ */ new WeakMap(), P = U.createTreeWalker(U, 129);
301
- function Xt(r, t) {
302
- if (!Array.isArray(r) || !r.hasOwnProperty("raw"))
303
- throw Error("invalid template strings array");
304
- return Et !== void 0 ? Et.createHTML(t) : t;
305
- }
306
- const Ae = (r, t) => {
307
- const e = r.length - 1, s = [];
308
- let i, n = t === 2 ? "<svg>" : "", o = I;
309
- for (let l = 0; l < e; l++) {
310
- const h = r[l];
311
- let d, c, a = -1, p = 0;
312
- for (; p < h.length && (o.lastIndex = p, c = o.exec(h), c !== null); )
313
- p = o.lastIndex, o === I ? c[1] === "!--" ? o = St : c[1] !== void 0 ? o = bt : c[2] !== void 0 ? (Gt.test(c[2]) && (i = RegExp("</" + c[2], "g")), o = b) : c[3] !== void 0 && (o = b) : o === b ? c[0] === ">" ? (o = i ?? I, a = -1) : c[1] === void 0 ? a = -2 : (a = o.lastIndex - c[2].length, d = c[1], o = c[3] === void 0 ? b : c[3] === '"' ? Pt : wt) : o === Pt || o === wt ? o = b : o === St || o === bt ? o = I : (o = b, i = void 0);
314
- const u = o === b && r[l + 1].startsWith("/>") ? " " : "";
315
- n += o === I ? h + ve : a >= 0 ? (s.push(d), h.slice(0, a) + Kt + h.slice(a) + y + u) : h + y + (a === -2 ? l : u);
316
- }
317
- return [Xt(r, n + (r[e] || "<?>") + (t === 2 ? "</svg>" : "")), s];
318
- };
319
- let pt = class Zt {
320
- constructor({ strings: t, _$litType$: e }, s) {
321
- let i;
322
- this.parts = [];
323
- let n = 0, o = 0;
324
- const l = t.length - 1, h = this.parts, [d, c] = Ae(t, e);
325
- if (this.el = Zt.createElement(d, s), P.currentNode = this.el.content, e === 2) {
326
- const a = this.el.content.firstChild;
327
- a.replaceWith(...a.childNodes);
328
- }
329
- for (; (i = P.nextNode()) !== null && h.length < l; ) {
330
- if (i.nodeType === 1) {
331
- if (i.hasAttributes())
332
- for (const a of i.getAttributeNames())
333
- if (a.endsWith(Kt)) {
334
- const p = c[o++], u = i.getAttribute(a).split(y), g = /([.?@])?(.*)/.exec(p);
335
- h.push({ type: 1, index: n, name: g[2], strings: u, ctor: g[1] === "." ? Se : g[1] === "?" ? be : g[1] === "@" ? we : st }), i.removeAttribute(a);
336
- } else
337
- a.startsWith(y) && (h.push({ type: 6, index: n }), i.removeAttribute(a));
338
- if (Gt.test(i.tagName)) {
339
- const a = i.textContent.split(y), p = a.length - 1;
340
- if (p > 0) {
341
- i.textContent = Y ? Y.emptyScript : "";
342
- for (let u = 0; u < p; u++)
343
- i.append(a[u], Q()), P.nextNode(), h.push({ type: 2, index: ++n });
344
- i.append(a[p], Q());
345
- }
346
- }
347
- } else if (i.nodeType === 8)
348
- if (i.data === Jt)
349
- h.push({ type: 2, index: n });
350
- else {
351
- let a = -1;
352
- for (; (a = i.data.indexOf(y, a + 1)) !== -1; )
353
- h.push({ type: 7, index: n }), a += y.length - 1;
354
- }
355
- n++;
356
- }
357
- }
358
- static createElement(t, e) {
359
- const s = U.createElement("template");
360
- return s.innerHTML = t, s;
361
- }
362
- };
363
- function x(r, t, e = r, s) {
364
- var o, l;
365
- if (t === W)
366
- return t;
367
- let i = s !== void 0 ? (o = e._$Co) == null ? void 0 : o[s] : e._$Cl;
368
- const n = B(t) ? void 0 : t._$litDirective$;
369
- return (i == null ? void 0 : i.constructor) !== n && ((l = i == null ? void 0 : i._$AO) == null || l.call(i, !1), n === void 0 ? i = void 0 : (i = new n(r), i._$AT(r, e, s)), s !== void 0 ? (e._$Co ?? (e._$Co = []))[s] = i : e._$Cl = i), i !== void 0 && (t = x(r, i._$AS(r, t.values), i, s)), t;
370
- }
371
- let Ee = class {
372
- constructor(t, e) {
373
- this._$AV = [], this._$AN = void 0, this._$AD = t, this._$AM = e;
374
- }
375
- get parentNode() {
376
- return this._$AM.parentNode;
377
- }
378
- get _$AU() {
379
- return this._$AM._$AU;
380
- }
381
- u(t) {
382
- const { el: { content: e }, parts: s } = this._$AD, i = ((t == null ? void 0 : t.creationScope) ?? U).importNode(e, !0);
383
- P.currentNode = i;
384
- let n = P.nextNode(), o = 0, l = 0, h = s[0];
385
- for (; h !== void 0; ) {
386
- if (o === h.index) {
387
- let d;
388
- h.type === 2 ? d = new Yt(n, n.nextSibling, this, t) : h.type === 1 ? d = new h.ctor(n, h.name, h.strings, this, t) : h.type === 6 && (d = new Pe(n, this, t)), this._$AV.push(d), h = s[++l];
389
- }
390
- o !== (h == null ? void 0 : h.index) && (n = P.nextNode(), o++);
391
- }
392
- return P.currentNode = U, i;
393
- }
394
- p(t) {
395
- let e = 0;
396
- for (const s of this._$AV)
397
- s !== void 0 && (s.strings !== void 0 ? (s._$AI(t, s, e), e += s.strings.length - 2) : s._$AI(t[e])), e++;
398
- }
399
- }, Yt = class Qt {
400
- get _$AU() {
401
- var t;
402
- return ((t = this._$AM) == null ? void 0 : t._$AU) ?? this._$Cv;
403
- }
404
- constructor(t, e, s, i) {
405
- this.type = 2, this._$AH = _, this._$AN = void 0, this._$AA = t, this._$AB = e, this._$AM = s, this.options = i, this._$Cv = (i == null ? void 0 : i.isConnected) ?? !0;
406
- }
407
- get parentNode() {
408
- let t = this._$AA.parentNode;
409
- const e = this._$AM;
410
- return e !== void 0 && (t == null ? void 0 : t.nodeType) === 11 && (t = e.parentNode), t;
411
- }
412
- get startNode() {
413
- return this._$AA;
414
- }
415
- get endNode() {
416
- return this._$AB;
417
- }
418
- _$AI(t, e = this) {
419
- t = x(this, t, e), B(t) ? t === _ || t == null || t === "" ? (this._$AH !== _ && this._$AR(), this._$AH = _) : t !== this._$AH && t !== W && this._(t) : t._$litType$ !== void 0 ? this.g(t) : t.nodeType !== void 0 ? this.$(t) : ye(t) ? this.T(t) : this._(t);
420
- }
421
- k(t) {
422
- return this._$AA.parentNode.insertBefore(t, this._$AB);
423
- }
424
- $(t) {
425
- this._$AH !== t && (this._$AR(), this._$AH = this.k(t));
426
- }
427
- _(t) {
428
- this._$AH !== _ && B(this._$AH) ? this._$AA.nextSibling.data = t : this.$(U.createTextNode(t)), this._$AH = t;
429
- }
430
- g(t) {
431
- var n;
432
- const { values: e, _$litType$: s } = t, i = typeof s == "number" ? this._$AC(t) : (s.el === void 0 && (s.el = pt.createElement(Xt(s.h, s.h[0]), this.options)), s);
433
- if (((n = this._$AH) == null ? void 0 : n._$AD) === i)
434
- this._$AH.p(e);
435
- else {
436
- const o = new Ee(i, this), l = o.u(this.options);
437
- o.p(e), this.$(l), this._$AH = o;
438
- }
439
- }
440
- _$AC(t) {
441
- let e = Ct.get(t.strings);
442
- return e === void 0 && Ct.set(t.strings, e = new pt(t)), e;
443
- }
444
- T(t) {
445
- Ft(this._$AH) || (this._$AH = [], this._$AR());
446
- const e = this._$AH;
447
- let s, i = 0;
448
- for (const n of t)
449
- i === e.length ? e.push(s = new Qt(this.k(Q()), this.k(Q()), this, this.options)) : s = e[i], s._$AI(n), i++;
450
- i < e.length && (this._$AR(s && s._$AB.nextSibling, i), e.length = i);
451
- }
452
- _$AR(t = this._$AA.nextSibling, e) {
453
- var s;
454
- for ((s = this._$AP) == null ? void 0 : s.call(this, !1, !0, e); t && t !== this._$AB; ) {
455
- const i = t.nextSibling;
456
- t.remove(), t = i;
457
- }
458
- }
459
- setConnected(t) {
460
- var e;
461
- this._$AM === void 0 && (this._$Cv = t, (e = this._$AP) == null || e.call(this, t));
462
- }
463
- }, st = class {
464
- get tagName() {
465
- return this.element.tagName;
466
- }
467
- get _$AU() {
468
- return this._$AM._$AU;
469
- }
470
- constructor(t, e, s, i, n) {
471
- this.type = 1, this._$AH = _, this._$AN = void 0, this.element = t, this.name = e, this._$AM = i, this.options = n, s.length > 2 || s[0] !== "" || s[1] !== "" ? (this._$AH = Array(s.length - 1).fill(new String()), this.strings = s) : this._$AH = _;
472
- }
473
- _$AI(t, e = this, s, i) {
474
- const n = this.strings;
475
- let o = !1;
476
- if (n === void 0)
477
- t = x(this, t, e, 0), o = !B(t) || t !== this._$AH && t !== W, o && (this._$AH = t);
478
- else {
479
- const l = t;
480
- let h, d;
481
- for (t = n[0], h = 0; h < n.length - 1; h++)
482
- d = x(this, l[s + h], e, h), d === W && (d = this._$AH[h]), o || (o = !B(d) || d !== this._$AH[h]), d === _ ? t = _ : t !== _ && (t += (d ?? "") + n[h + 1]), this._$AH[h] = d;
483
- }
484
- o && !i && this.O(t);
485
- }
486
- O(t) {
487
- t === _ ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t ?? "");
488
- }
489
- }, Se = class extends st {
490
- constructor() {
491
- super(...arguments), this.type = 3;
492
- }
493
- O(t) {
494
- this.element[this.name] = t === _ ? void 0 : t;
495
- }
496
- }, be = class extends st {
497
- constructor() {
498
- super(...arguments), this.type = 4;
499
- }
500
- O(t) {
501
- this.element.toggleAttribute(this.name, !!t && t !== _);
502
- }
503
- }, we = class extends st {
504
- constructor(t, e, s, i, n) {
505
- super(t, e, s, i, n), this.type = 5;
506
- }
507
- _$AI(t, e = this) {
508
- if ((t = x(this, t, e, 0) ?? _) === W)
509
- return;
510
- const s = this._$AH, i = t === _ && s !== _ || t.capture !== s.capture || t.once !== s.once || t.passive !== s.passive, n = t !== _ && (s === _ || i);
511
- i && this.element.removeEventListener(this.name, this, s), n && this.element.addEventListener(this.name, this, t), this._$AH = t;
512
- }
513
- handleEvent(t) {
514
- var e;
515
- typeof this._$AH == "function" ? this._$AH.call(((e = this.options) == null ? void 0 : e.host) ?? this.element, t) : this._$AH.handleEvent(t);
516
- }
517
- }, Pe = class {
518
- constructor(t, e, s) {
519
- this.element = t, this.type = 6, this._$AN = void 0, this._$AM = e, this.options = s;
520
- }
521
- get _$AU() {
522
- return this._$AM._$AU;
523
- }
524
- _$AI(t) {
525
- x(this, t);
526
- }
527
- };
528
- const ot = V.litHtmlPolyfillSupport;
529
- ot == null || ot(pt, Yt), (V.litHtmlVersions ?? (V.litHtmlVersions = [])).push("3.1.0");
530
- /**
531
- * @license
532
- * Copyright 2019 Google LLC
533
- * SPDX-License-Identifier: BSD-3-Clause
534
- */
535
- const Z = globalThis, $t = Z.ShadowRoot && (Z.ShadyCSS === void 0 || Z.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, te = Symbol(), Ut = /* @__PURE__ */ new WeakMap();
536
- let Ce = class {
537
- constructor(t, e, s) {
538
- if (this._$cssResult$ = !0, s !== te)
539
- throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
540
- this.cssText = t, this.t = e;
541
- }
542
- get styleSheet() {
543
- let t = this.o;
544
- const e = this.t;
545
- if ($t && t === void 0) {
546
- const s = e !== void 0 && e.length === 1;
547
- s && (t = Ut.get(e)), t === void 0 && ((this.o = t = new CSSStyleSheet()).replaceSync(this.cssText), s && Ut.set(e, t));
548
- }
549
- return t;
550
- }
551
- toString() {
552
- return this.cssText;
553
- }
554
- };
555
- const Ue = (r) => new Ce(typeof r == "string" ? r : r + "", void 0, te), Te = (r, t) => {
556
- if ($t)
557
- r.adoptedStyleSheets = t.map((e) => e instanceof CSSStyleSheet ? e : e.styleSheet);
558
- else
559
- for (const e of t) {
560
- const s = document.createElement("style"), i = Z.litNonce;
561
- i !== void 0 && s.setAttribute("nonce", i), s.textContent = e.cssText, r.appendChild(s);
562
- }
563
- }, Tt = $t ? (r) => r : (r) => r instanceof CSSStyleSheet ? ((t) => {
564
- let e = "";
565
- for (const s of t.cssRules)
566
- e += s.cssText;
567
- return Ue(e);
568
- })(r) : r;
569
- /**
570
- * @license
571
- * Copyright 2017 Google LLC
572
- * SPDX-License-Identifier: BSD-3-Clause
573
- */
574
- const { is: Re, defineProperty: xe, getOwnPropertyDescriptor: He, getOwnPropertyNames: Oe, getOwnPropertySymbols: Ne, getPrototypeOf: Me } = Object, S = globalThis, Rt = S.trustedTypes, Ie = Rt ? Rt.emptyScript : "", ht = S.reactiveElementPolyfillSupport, D = (r, t) => r, ut = { toAttribute(r, t) {
575
- switch (t) {
576
- case Boolean:
577
- r = r ? Ie : null;
578
- break;
579
- case Object:
580
- case Array:
581
- r = r == null ? r : JSON.stringify(r);
582
- }
583
- return r;
584
- }, fromAttribute(r, t) {
585
- let e = r;
586
- switch (t) {
587
- case Boolean:
588
- e = r !== null;
589
- break;
590
- case Number:
591
- e = r === null ? null : Number(r);
592
- break;
593
- case Object:
594
- case Array:
595
- try {
596
- e = JSON.parse(r);
597
- } catch {
598
- e = null;
599
- }
600
- }
601
- return e;
602
- } }, ee = (r, t) => !Re(r, t), xt = { attribute: !0, type: String, converter: ut, reflect: !1, hasChanged: ee };
603
- Symbol.metadata ?? (Symbol.metadata = Symbol("metadata")), S.litPropertyMetadata ?? (S.litPropertyMetadata = /* @__PURE__ */ new WeakMap());
604
- class R extends HTMLElement {
605
- static addInitializer(t) {
606
- this._$Ei(), (this.l ?? (this.l = [])).push(t);
607
- }
608
- static get observedAttributes() {
609
- return this.finalize(), this._$Eh && [...this._$Eh.keys()];
610
- }
611
- static createProperty(t, e = xt) {
612
- if (e.state && (e.attribute = !1), this._$Ei(), this.elementProperties.set(t, e), !e.noAccessor) {
613
- const s = Symbol(), i = this.getPropertyDescriptor(t, s, e);
614
- i !== void 0 && xe(this.prototype, t, i);
615
- }
616
- }
617
- static getPropertyDescriptor(t, e, s) {
618
- const { get: i, set: n } = He(this.prototype, t) ?? { get() {
619
- return this[e];
620
- }, set(o) {
621
- this[e] = o;
622
- } };
623
- return { get() {
624
- return i == null ? void 0 : i.call(this);
625
- }, set(o) {
626
- const l = i == null ? void 0 : i.call(this);
627
- n.call(this, o), this.requestUpdate(t, l, s);
628
- }, configurable: !0, enumerable: !0 };
629
- }
630
- static getPropertyOptions(t) {
631
- return this.elementProperties.get(t) ?? xt;
632
- }
633
- static _$Ei() {
634
- if (this.hasOwnProperty(D("elementProperties")))
635
- return;
636
- const t = Me(this);
637
- t.finalize(), t.l !== void 0 && (this.l = [...t.l]), this.elementProperties = new Map(t.elementProperties);
638
- }
639
- static finalize() {
640
- if (this.hasOwnProperty(D("finalized")))
641
- return;
642
- if (this.finalized = !0, this._$Ei(), this.hasOwnProperty(D("properties"))) {
643
- const e = this.properties, s = [...Oe(e), ...Ne(e)];
644
- for (const i of s)
645
- this.createProperty(i, e[i]);
646
- }
647
- const t = this[Symbol.metadata];
648
- if (t !== null) {
649
- const e = litPropertyMetadata.get(t);
650
- if (e !== void 0)
651
- for (const [s, i] of e)
652
- this.elementProperties.set(s, i);
653
- }
654
- this._$Eh = /* @__PURE__ */ new Map();
655
- for (const [e, s] of this.elementProperties) {
656
- const i = this._$Eu(e, s);
657
- i !== void 0 && this._$Eh.set(i, e);
658
- }
659
- this.elementStyles = this.finalizeStyles(this.styles);
660
- }
661
- static finalizeStyles(t) {
662
- const e = [];
663
- if (Array.isArray(t)) {
664
- const s = new Set(t.flat(1 / 0).reverse());
665
- for (const i of s)
666
- e.unshift(Tt(i));
667
- } else
668
- t !== void 0 && e.push(Tt(t));
669
- return e;
670
- }
671
- static _$Eu(t, e) {
672
- const s = e.attribute;
673
- return s === !1 ? void 0 : typeof s == "string" ? s : typeof t == "string" ? t.toLowerCase() : void 0;
674
- }
675
- constructor() {
676
- super(), this._$Ep = void 0, this.isUpdatePending = !1, this.hasUpdated = !1, this._$Em = null, this._$Ev();
677
- }
678
- _$Ev() {
679
- var t;
680
- this._$Eg = new Promise((e) => this.enableUpdating = e), this._$AL = /* @__PURE__ */ new Map(), this._$ES(), this.requestUpdate(), (t = this.constructor.l) == null || t.forEach((e) => e(this));
681
- }
682
- addController(t) {
683
- var e;
684
- (this._$E_ ?? (this._$E_ = /* @__PURE__ */ new Set())).add(t), this.renderRoot !== void 0 && this.isConnected && ((e = t.hostConnected) == null || e.call(t));
685
- }
686
- removeController(t) {
687
- var e;
688
- (e = this._$E_) == null || e.delete(t);
689
- }
690
- _$ES() {
691
- const t = /* @__PURE__ */ new Map(), e = this.constructor.elementProperties;
692
- for (const s of e.keys())
693
- this.hasOwnProperty(s) && (t.set(s, this[s]), delete this[s]);
694
- t.size > 0 && (this._$Ep = t);
695
- }
696
- createRenderRoot() {
697
- const t = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);
698
- return Te(t, this.constructor.elementStyles), t;
699
- }
700
- connectedCallback() {
701
- var t;
702
- this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this.enableUpdating(!0), (t = this._$E_) == null || t.forEach((e) => {
703
- var s;
704
- return (s = e.hostConnected) == null ? void 0 : s.call(e);
705
- });
706
- }
707
- enableUpdating(t) {
708
- }
709
- disconnectedCallback() {
710
- var t;
711
- (t = this._$E_) == null || t.forEach((e) => {
712
- var s;
713
- return (s = e.hostDisconnected) == null ? void 0 : s.call(e);
714
- });
715
- }
716
- attributeChangedCallback(t, e, s) {
717
- this._$AK(t, s);
718
- }
719
- _$EO(t, e) {
720
- var n;
721
- const s = this.constructor.elementProperties.get(t), i = this.constructor._$Eu(t, s);
722
- if (i !== void 0 && s.reflect === !0) {
723
- const o = (((n = s.converter) == null ? void 0 : n.toAttribute) !== void 0 ? s.converter : ut).toAttribute(e, s.type);
724
- this._$Em = t, o == null ? this.removeAttribute(i) : this.setAttribute(i, o), this._$Em = null;
725
- }
726
- }
727
- _$AK(t, e) {
728
- var n;
729
- const s = this.constructor, i = s._$Eh.get(t);
730
- if (i !== void 0 && this._$Em !== i) {
731
- const o = s.getPropertyOptions(i), l = typeof o.converter == "function" ? { fromAttribute: o.converter } : ((n = o.converter) == null ? void 0 : n.fromAttribute) !== void 0 ? o.converter : ut;
732
- this._$Em = i, this[i] = l.fromAttribute(e, o.type), this._$Em = null;
733
- }
734
- }
735
- requestUpdate(t, e, s, i = !1, n) {
736
- if (t !== void 0) {
737
- if (s ?? (s = this.constructor.getPropertyOptions(t)), !(s.hasChanged ?? ee)(i ? n : this[t], e))
738
- return;
739
- this.C(t, e, s);
740
- }
741
- this.isUpdatePending === !1 && (this._$Eg = this._$EP());
742
- }
743
- C(t, e, s) {
744
- this._$AL.has(t) || this._$AL.set(t, e), s.reflect === !0 && this._$Em !== t && (this._$Ej ?? (this._$Ej = /* @__PURE__ */ new Set())).add(t);
745
- }
746
- async _$EP() {
747
- this.isUpdatePending = !0;
748
- try {
749
- await this._$Eg;
750
- } catch (e) {
751
- Promise.reject(e);
752
- }
753
- const t = this.scheduleUpdate();
754
- return t != null && await t, !this.isUpdatePending;
755
- }
756
- scheduleUpdate() {
757
- return this.performUpdate();
758
- }
759
- performUpdate() {
760
- var s;
761
- if (!this.isUpdatePending)
762
- return;
763
- if (!this.hasUpdated) {
764
- if (this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this._$Ep) {
765
- for (const [n, o] of this._$Ep)
766
- this[n] = o;
767
- this._$Ep = void 0;
768
- }
769
- const i = this.constructor.elementProperties;
770
- if (i.size > 0)
771
- for (const [n, o] of i)
772
- o.wrapped !== !0 || this._$AL.has(n) || this[n] === void 0 || this.C(n, this[n], o);
773
- }
774
- let t = !1;
775
- const e = this._$AL;
776
- try {
777
- t = this.shouldUpdate(e), t ? (this.willUpdate(e), (s = this._$E_) == null || s.forEach((i) => {
778
- var n;
779
- return (n = i.hostUpdate) == null ? void 0 : n.call(i);
780
- }), this.update(e)) : this._$ET();
781
- } catch (i) {
782
- throw t = !1, this._$ET(), i;
783
- }
784
- t && this._$AE(e);
785
- }
786
- willUpdate(t) {
787
- }
788
- _$AE(t) {
789
- var e;
790
- (e = this._$E_) == null || e.forEach((s) => {
791
- var i;
792
- return (i = s.hostUpdated) == null ? void 0 : i.call(s);
793
- }), this.hasUpdated || (this.hasUpdated = !0, this.firstUpdated(t)), this.updated(t);
794
- }
795
- _$ET() {
796
- this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = !1;
797
- }
798
- get updateComplete() {
799
- return this.getUpdateComplete();
800
- }
801
- getUpdateComplete() {
802
- return this._$Eg;
803
- }
804
- shouldUpdate(t) {
805
- return !0;
806
- }
807
- update(t) {
808
- this._$Ej && (this._$Ej = this._$Ej.forEach((e) => this._$EO(e, this[e]))), this._$ET();
809
- }
810
- updated(t) {
811
- }
812
- firstUpdated(t) {
813
- }
814
- }
815
- R.elementStyles = [], R.shadowRootOptions = { mode: "open" }, R[D("elementProperties")] = /* @__PURE__ */ new Map(), R[D("finalized")] = /* @__PURE__ */ new Map(), ht == null || ht({ ReactiveElement: R }), (S.reactiveElementVersions ?? (S.reactiveElementVersions = [])).push("2.0.2");
816
- /**
817
- * @license
818
- * Copyright 2017 Google LLC
819
- * SPDX-License-Identifier: BSD-3-Clause
820
- */
821
- const z = globalThis, tt = z.trustedTypes, Ht = tt ? tt.createPolicy("lit-html", { createHTML: (r) => r }) : void 0, se = "$lit$", A = `lit$${(Math.random() + "").slice(9)}$`, ie = "?" + A, ke = `<${ie}>`, T = document, q = () => T.createComment(""), K = (r) => r === null || typeof r != "object" && typeof r != "function", re = Array.isArray, Le = (r) => re(r) || typeof (r == null ? void 0 : r[Symbol.iterator]) == "function", at = `[
822
- \f\r]`, k = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, Ot = /-->/g, Nt = />/g, w = RegExp(`>|${at}(?:([^\\s"'>=/]+)(${at}*=${at}*(?:[^
823
- \f\r"'\`<>=]|("|')|))|$)`, "g"), Mt = /'/g, It = /"/g, ne = /^(?:script|style|textarea|title)$/i, Ve = (r) => (t, ...e) => ({ _$litType$: r, strings: t, values: e }), De = Ve(1), H = Symbol.for("lit-noChange"), $ = Symbol.for("lit-nothing"), kt = /* @__PURE__ */ new WeakMap(), C = T.createTreeWalker(T, 129);
824
- function oe(r, t) {
825
- if (!Array.isArray(r) || !r.hasOwnProperty("raw"))
826
- throw Error("invalid template strings array");
827
- return Ht !== void 0 ? Ht.createHTML(t) : t;
828
- }
829
- const ze = (r, t) => {
830
- const e = r.length - 1, s = [];
831
- let i, n = t === 2 ? "<svg>" : "", o = k;
832
- for (let l = 0; l < e; l++) {
833
- const h = r[l];
834
- let d, c, a = -1, p = 0;
835
- for (; p < h.length && (o.lastIndex = p, c = o.exec(h), c !== null); )
836
- p = o.lastIndex, o === k ? c[1] === "!--" ? o = Ot : c[1] !== void 0 ? o = Nt : c[2] !== void 0 ? (ne.test(c[2]) && (i = RegExp("</" + c[2], "g")), o = w) : c[3] !== void 0 && (o = w) : o === w ? c[0] === ">" ? (o = i ?? k, a = -1) : c[1] === void 0 ? a = -2 : (a = o.lastIndex - c[2].length, d = c[1], o = c[3] === void 0 ? w : c[3] === '"' ? It : Mt) : o === It || o === Mt ? o = w : o === Ot || o === Nt ? o = k : (o = w, i = void 0);
837
- const u = o === w && r[l + 1].startsWith("/>") ? " " : "";
838
- n += o === k ? h + ke : a >= 0 ? (s.push(d), h.slice(0, a) + se + h.slice(a) + A + u) : h + A + (a === -2 ? l : u);
839
- }
840
- return [oe(r, n + (r[e] || "<?>") + (t === 2 ? "</svg>" : "")), s];
841
- };
842
- class J {
843
- constructor({ strings: t, _$litType$: e }, s) {
844
- let i;
845
- this.parts = [];
846
- let n = 0, o = 0;
847
- const l = t.length - 1, h = this.parts, [d, c] = ze(t, e);
848
- if (this.el = J.createElement(d, s), C.currentNode = this.el.content, e === 2) {
849
- const a = this.el.content.firstChild;
850
- a.replaceWith(...a.childNodes);
851
- }
852
- for (; (i = C.nextNode()) !== null && h.length < l; ) {
853
- if (i.nodeType === 1) {
854
- if (i.hasAttributes())
855
- for (const a of i.getAttributeNames())
856
- if (a.endsWith(se)) {
857
- const p = c[o++], u = i.getAttribute(a).split(A), g = /([.?@])?(.*)/.exec(p);
858
- h.push({ type: 1, index: n, name: g[2], strings: u, ctor: g[1] === "." ? Be : g[1] === "?" ? We : g[1] === "@" ? qe : it }), i.removeAttribute(a);
859
- } else
860
- a.startsWith(A) && (h.push({ type: 6, index: n }), i.removeAttribute(a));
861
- if (ne.test(i.tagName)) {
862
- const a = i.textContent.split(A), p = a.length - 1;
863
- if (p > 0) {
864
- i.textContent = tt ? tt.emptyScript : "";
865
- for (let u = 0; u < p; u++)
866
- i.append(a[u], q()), C.nextNode(), h.push({ type: 2, index: ++n });
867
- i.append(a[p], q());
868
- }
869
- }
870
- } else if (i.nodeType === 8)
871
- if (i.data === ie)
872
- h.push({ type: 2, index: n });
873
- else {
874
- let a = -1;
875
- for (; (a = i.data.indexOf(A, a + 1)) !== -1; )
876
- h.push({ type: 7, index: n }), a += A.length - 1;
877
- }
878
- n++;
879
- }
880
- }
881
- static createElement(t, e) {
882
- const s = T.createElement("template");
883
- return s.innerHTML = t, s;
884
- }
885
- }
886
- function O(r, t, e = r, s) {
887
- var o, l;
888
- if (t === H)
889
- return t;
890
- let i = s !== void 0 ? (o = e._$Co) == null ? void 0 : o[s] : e._$Cl;
891
- const n = K(t) ? void 0 : t._$litDirective$;
892
- return (i == null ? void 0 : i.constructor) !== n && ((l = i == null ? void 0 : i._$AO) == null || l.call(i, !1), n === void 0 ? i = void 0 : (i = new n(r), i._$AT(r, e, s)), s !== void 0 ? (e._$Co ?? (e._$Co = []))[s] = i : e._$Cl = i), i !== void 0 && (t = O(r, i._$AS(r, t.values), i, s)), t;
893
- }
894
- class je {
895
- constructor(t, e) {
896
- this._$AV = [], this._$AN = void 0, this._$AD = t, this._$AM = e;
897
- }
898
- get parentNode() {
899
- return this._$AM.parentNode;
900
- }
901
- get _$AU() {
902
- return this._$AM._$AU;
903
- }
904
- u(t) {
905
- const { el: { content: e }, parts: s } = this._$AD, i = ((t == null ? void 0 : t.creationScope) ?? T).importNode(e, !0);
906
- C.currentNode = i;
907
- let n = C.nextNode(), o = 0, l = 0, h = s[0];
908
- for (; h !== void 0; ) {
909
- if (o === h.index) {
910
- let d;
911
- h.type === 2 ? d = new F(n, n.nextSibling, this, t) : h.type === 1 ? d = new h.ctor(n, h.name, h.strings, this, t) : h.type === 6 && (d = new Ke(n, this, t)), this._$AV.push(d), h = s[++l];
912
- }
913
- o !== (h == null ? void 0 : h.index) && (n = C.nextNode(), o++);
914
- }
915
- return C.currentNode = T, i;
916
- }
917
- p(t) {
918
- let e = 0;
919
- for (const s of this._$AV)
920
- s !== void 0 && (s.strings !== void 0 ? (s._$AI(t, s, e), e += s.strings.length - 2) : s._$AI(t[e])), e++;
921
- }
922
- }
923
- class F {
924
- get _$AU() {
925
- var t;
926
- return ((t = this._$AM) == null ? void 0 : t._$AU) ?? this._$Cv;
927
- }
928
- constructor(t, e, s, i) {
929
- this.type = 2, this._$AH = $, this._$AN = void 0, this._$AA = t, this._$AB = e, this._$AM = s, this.options = i, this._$Cv = (i == null ? void 0 : i.isConnected) ?? !0;
930
- }
931
- get parentNode() {
932
- let t = this._$AA.parentNode;
933
- const e = this._$AM;
934
- return e !== void 0 && (t == null ? void 0 : t.nodeType) === 11 && (t = e.parentNode), t;
935
- }
936
- get startNode() {
937
- return this._$AA;
938
- }
939
- get endNode() {
940
- return this._$AB;
941
- }
942
- _$AI(t, e = this) {
943
- t = O(this, t, e), K(t) ? t === $ || t == null || t === "" ? (this._$AH !== $ && this._$AR(), this._$AH = $) : t !== this._$AH && t !== H && this._(t) : t._$litType$ !== void 0 ? this.g(t) : t.nodeType !== void 0 ? this.$(t) : Le(t) ? this.T(t) : this._(t);
944
- }
945
- k(t) {
946
- return this._$AA.parentNode.insertBefore(t, this._$AB);
947
- }
948
- $(t) {
949
- this._$AH !== t && (this._$AR(), this._$AH = this.k(t));
950
- }
951
- _(t) {
952
- this._$AH !== $ && K(this._$AH) ? this._$AA.nextSibling.data = t : this.$(T.createTextNode(t)), this._$AH = t;
953
- }
954
- g(t) {
955
- var n;
956
- const { values: e, _$litType$: s } = t, i = typeof s == "number" ? this._$AC(t) : (s.el === void 0 && (s.el = J.createElement(oe(s.h, s.h[0]), this.options)), s);
957
- if (((n = this._$AH) == null ? void 0 : n._$AD) === i)
958
- this._$AH.p(e);
959
- else {
960
- const o = new je(i, this), l = o.u(this.options);
961
- o.p(e), this.$(l), this._$AH = o;
962
- }
963
- }
964
- _$AC(t) {
965
- let e = kt.get(t.strings);
966
- return e === void 0 && kt.set(t.strings, e = new J(t)), e;
967
- }
968
- T(t) {
969
- re(this._$AH) || (this._$AH = [], this._$AR());
970
- const e = this._$AH;
971
- let s, i = 0;
972
- for (const n of t)
973
- i === e.length ? e.push(s = new F(this.k(q()), this.k(q()), this, this.options)) : s = e[i], s._$AI(n), i++;
974
- i < e.length && (this._$AR(s && s._$AB.nextSibling, i), e.length = i);
975
- }
976
- _$AR(t = this._$AA.nextSibling, e) {
977
- var s;
978
- for ((s = this._$AP) == null ? void 0 : s.call(this, !1, !0, e); t && t !== this._$AB; ) {
979
- const i = t.nextSibling;
980
- t.remove(), t = i;
981
- }
982
- }
983
- setConnected(t) {
984
- var e;
985
- this._$AM === void 0 && (this._$Cv = t, (e = this._$AP) == null || e.call(this, t));
986
- }
987
- }
988
- class it {
989
- get tagName() {
990
- return this.element.tagName;
991
- }
992
- get _$AU() {
993
- return this._$AM._$AU;
994
- }
995
- constructor(t, e, s, i, n) {
996
- this.type = 1, this._$AH = $, this._$AN = void 0, this.element = t, this.name = e, this._$AM = i, this.options = n, s.length > 2 || s[0] !== "" || s[1] !== "" ? (this._$AH = Array(s.length - 1).fill(new String()), this.strings = s) : this._$AH = $;
997
- }
998
- _$AI(t, e = this, s, i) {
999
- const n = this.strings;
1000
- let o = !1;
1001
- if (n === void 0)
1002
- t = O(this, t, e, 0), o = !K(t) || t !== this._$AH && t !== H, o && (this._$AH = t);
1003
- else {
1004
- const l = t;
1005
- let h, d;
1006
- for (t = n[0], h = 0; h < n.length - 1; h++)
1007
- d = O(this, l[s + h], e, h), d === H && (d = this._$AH[h]), o || (o = !K(d) || d !== this._$AH[h]), d === $ ? t = $ : t !== $ && (t += (d ?? "") + n[h + 1]), this._$AH[h] = d;
1008
- }
1009
- o && !i && this.O(t);
1010
- }
1011
- O(t) {
1012
- t === $ ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t ?? "");
1013
- }
1014
- }
1015
- class Be extends it {
1016
- constructor() {
1017
- super(...arguments), this.type = 3;
1018
- }
1019
- O(t) {
1020
- this.element[this.name] = t === $ ? void 0 : t;
1021
- }
1022
- }
1023
- class We extends it {
1024
- constructor() {
1025
- super(...arguments), this.type = 4;
1026
- }
1027
- O(t) {
1028
- this.element.toggleAttribute(this.name, !!t && t !== $);
1029
- }
1030
- }
1031
- class qe extends it {
1032
- constructor(t, e, s, i, n) {
1033
- super(t, e, s, i, n), this.type = 5;
1034
- }
1035
- _$AI(t, e = this) {
1036
- if ((t = O(this, t, e, 0) ?? $) === H)
1037
- return;
1038
- const s = this._$AH, i = t === $ && s !== $ || t.capture !== s.capture || t.once !== s.once || t.passive !== s.passive, n = t !== $ && (s === $ || i);
1039
- i && this.element.removeEventListener(this.name, this, s), n && this.element.addEventListener(this.name, this, t), this._$AH = t;
1040
- }
1041
- handleEvent(t) {
1042
- var e;
1043
- typeof this._$AH == "function" ? this._$AH.call(((e = this.options) == null ? void 0 : e.host) ?? this.element, t) : this._$AH.handleEvent(t);
1044
- }
1045
- }
1046
- class Ke {
1047
- constructor(t, e, s) {
1048
- this.element = t, this.type = 6, this._$AN = void 0, this._$AM = e, this.options = s;
1049
- }
1050
- get _$AU() {
1051
- return this._$AM._$AU;
1052
- }
1053
- _$AI(t) {
1054
- O(this, t);
1055
- }
1056
- }
1057
- const lt = z.litHtmlPolyfillSupport;
1058
- lt == null || lt(J, F), (z.litHtmlVersions ?? (z.litHtmlVersions = [])).push("3.1.0");
1059
- const Je = (r, t, e) => {
1060
- const s = (e == null ? void 0 : e.renderBefore) ?? t;
1061
- let i = s._$litPart$;
1062
- if (i === void 0) {
1063
- const n = (e == null ? void 0 : e.renderBefore) ?? null;
1064
- s._$litPart$ = i = new F(t.insertBefore(q(), n), n, void 0, e ?? {});
1065
- }
1066
- return i._$AI(r), i;
1067
- };
1068
- /**
1069
- * @license
1070
- * Copyright 2017 Google LLC
1071
- * SPDX-License-Identifier: BSD-3-Clause
1072
- */
1073
- class j extends R {
1074
- constructor() {
1075
- super(...arguments), this.renderOptions = { host: this }, this._$Do = void 0;
1076
- }
1077
- createRenderRoot() {
1078
- var e;
1079
- const t = super.createRenderRoot();
1080
- return (e = this.renderOptions).renderBefore ?? (e.renderBefore = t.firstChild), t;
1081
- }
1082
- update(t) {
1083
- const e = this.render();
1084
- this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t), this._$Do = Je(e, this.renderRoot, this.renderOptions);
1085
- }
1086
- connectedCallback() {
1087
- var t;
1088
- super.connectedCallback(), (t = this._$Do) == null || t.setConnected(!0);
1089
- }
1090
- disconnectedCallback() {
1091
- var t;
1092
- super.disconnectedCallback(), (t = this._$Do) == null || t.setConnected(!1);
1093
- }
1094
- render() {
1095
- return H;
1096
- }
1097
- }
1098
- var Dt;
1099
- j._$litElement$ = !0, j.finalized = !0, (Dt = globalThis.litElementHydrateSupport) == null || Dt.call(globalThis, { LitElement: j });
1100
- const dt = globalThis.litElementPolyfillSupport;
1101
- dt == null || dt({ LitElement: j });
1102
- (globalThis.litElementVersions ?? (globalThis.litElementVersions = [])).push("4.0.2");
1103
- function Fe(r, t, e) {
1104
- function s(i) {
1105
- e.dispatchEvent(new CustomEvent(i.type, i));
1106
- }
1107
- return t.addEventListener(r, s), () => {
1108
- t.removeEventListener(r, s);
9
+ import { styleMap } from "lit/directives/style-map.js";
10
+ import { classMap } from "lit/directives/class-map.js";
11
+ import "@a11y/focus-trap";
12
+ function forwardEvent(type2, fromElement, toElement) {
13
+ function forwarder(event) {
14
+ toElement.dispatchEvent(new CustomEvent(event.type, event));
15
+ }
16
+ fromElement.addEventListener(type2, forwarder);
17
+ return () => {
18
+ fromElement.removeEventListener(type2, forwarder);
1109
19
  };
1110
20
  }
1111
- class Ge {
1112
- constructor(t, e) {
1113
- this._events = [], this._cleanup = [], this._forwardElementRef = jt(), this.host = t, this._events = e, t.addController(this);
21
+ class EventForwardController {
22
+ constructor(host, events) {
23
+ this._events = [];
24
+ this._cleanup = [];
25
+ this._forwardElementRef = createRef();
26
+ this.host = host;
27
+ this._events = events;
28
+ host.addController(this);
1114
29
  }
1115
30
  register() {
1116
- return Bt(this._forwardElementRef);
31
+ return ref(this._forwardElementRef);
1117
32
  }
1118
33
  hostConnected() {
1119
34
  requestAnimationFrame(() => {
1120
- this._events.forEach((t) => {
1121
- this._forwardElementRef.value && this._cleanup.push(Fe(t, this._forwardElementRef.value, this.host));
35
+ this._events.forEach((event) => {
36
+ if (this._forwardElementRef.value) {
37
+ this._cleanup.push(forwardEvent(event, this._forwardElementRef.value, this.host));
38
+ }
1122
39
  });
1123
40
  });
1124
41
  }
1125
42
  hostDisconnected() {
1126
- this._cleanup.forEach((t) => {
1127
- t();
1128
- }), this._cleanup = [];
43
+ this._cleanup.forEach((fn) => {
44
+ fn();
45
+ });
46
+ this._cleanup = [];
1129
47
  }
1130
48
  }
1131
- const Lt = "https://d2rxhdlm2q91uk.cloudfront.net", Xe = "https://d1ix11aj5kfygl.cloudfront.net", Ze = "https://d157jlwnudd93d.cloudfront.net", Vt = "https://bshyfw4h5a.execute-api.ap-southeast-2.amazonaws.com/dev", Ye = "https://gyzw7rpbq3.execute-api.ap-southeast-2.amazonaws.com/staging", Qe = "https://vfcjuim1l3.execute-api.ap-southeast-2.amazonaws.com/prod", ts = "http://localhost:6060/v2", es = "https://embed-dev.vouchfor.com/v2", ss = "https://embed-staging.vouchfor.com/v2", is = "https://embed.vouchfor.com/v2";
1132
- function et(r) {
1133
- if (!["local", "dev", "staging", "prod"].includes(r))
1134
- throw new Error(`Unknown environment: ${r}`);
1135
- if (r === "local")
49
+ const devVideoUrl = "https://d2rxhdlm2q91uk.cloudfront.net";
50
+ const stagingVideoUrl = "https://d1ix11aj5kfygl.cloudfront.net";
51
+ const prodVideoUrl = "https://d157jlwnudd93d.cloudfront.net";
52
+ const devPublicApiUrl = "https://bshyfw4h5a.execute-api.ap-southeast-2.amazonaws.com/dev";
53
+ const stagingPublicApiUrl = "https://gyzw7rpbq3.execute-api.ap-southeast-2.amazonaws.com/staging";
54
+ const prodPublicApiUrl = "https://vfcjuim1l3.execute-api.ap-southeast-2.amazonaws.com/prod";
55
+ const localEmbedApiUrl = "http://localhost:6060/v2";
56
+ const devEmbedApiUrl = "https://embed-dev.vouchfor.com/v2";
57
+ const stagingEmbedApiUrl = "https://embed-staging.vouchfor.com/v2";
58
+ const prodEmbedApiUrl = "https://embed.vouchfor.com/v2";
59
+ function getEnvUrls(env) {
60
+ if (!["local", "dev", "staging", "prod"].includes(env)) {
61
+ throw new Error(`Unknown environment: ${env}`);
62
+ }
63
+ if (env === "local") {
1136
64
  return {
1137
- videoUrl: Lt,
1138
- publicApiUrl: Vt,
1139
- embedApiUrl: ts
65
+ videoUrl: devVideoUrl,
66
+ publicApiUrl: devPublicApiUrl,
67
+ embedApiUrl: localEmbedApiUrl
1140
68
  };
1141
- if (r === "dev")
69
+ }
70
+ if (env === "dev") {
1142
71
  return {
1143
- videoUrl: Lt,
1144
- publicApiUrl: Vt,
1145
- embedApiUrl: es
72
+ videoUrl: devVideoUrl,
73
+ publicApiUrl: devPublicApiUrl,
74
+ embedApiUrl: devEmbedApiUrl
1146
75
  };
1147
- if (r === "staging")
76
+ }
77
+ if (env === "staging") {
1148
78
  return {
1149
- videoUrl: Xe,
1150
- publicApiUrl: Ye,
1151
- embedApiUrl: ss
79
+ videoUrl: stagingVideoUrl,
80
+ publicApiUrl: stagingPublicApiUrl,
81
+ embedApiUrl: stagingEmbedApiUrl
1152
82
  };
1153
- if (r === "prod")
83
+ }
84
+ if (env === "prod") {
1154
85
  return {
1155
- videoUrl: Ze,
1156
- publicApiUrl: Qe,
1157
- embedApiUrl: is
86
+ videoUrl: prodVideoUrl,
87
+ publicApiUrl: prodPublicApiUrl,
88
+ embedApiUrl: prodEmbedApiUrl
1158
89
  };
90
+ }
1159
91
  }
1160
- class rs {
1161
- constructor(t) {
1162
- this._fetching = !1, this.getVouch = async (e, s, i) => {
1163
- const { embedApiUrl: n } = et(e), o = await fetch(`${n}/vouches/${i}`, {
1164
- method: "GET",
1165
- headers: [["X-Api-Key", s]]
1166
- }).then((l) => (this.host.dispatchEvent(new CustomEvent("vouch:loaded", { detail: i })), l.json()));
1167
- return fetch(`${n}/vouches/${i}`, {
92
+ class FetcherController {
93
+ constructor(host) {
94
+ this._fetching = false;
95
+ this.getVouch = async (env, apiKey, vouchId) => {
96
+ var _a;
97
+ const { embedApiUrl } = getEnvUrls(env);
98
+ const cacheCheck = v4();
99
+ const res = await fetch(`${embedApiUrl}/vouches/${vouchId}`, {
1168
100
  method: "GET",
1169
101
  headers: [
1170
- ["X-Api-Key", s],
1171
- ["Cache-Control", "max-age=0"]
102
+ ["X-Api-Key", apiKey],
103
+ ["X-Cache-Check", cacheCheck]
1172
104
  ]
1173
- }), o;
1174
- }, this.getTemplate = async (e, s, i) => {
1175
- const { embedApiUrl: n } = et(e), o = await fetch(`${n}/templates/${i}`, {
1176
- method: "GET",
1177
- headers: [["X-Api-Key", s]]
1178
- }).then((l) => l.json());
1179
- return fetch(`${n}/templates/${i}`, {
105
+ });
106
+ const vouch = await res.json();
107
+ this.host.dispatchEvent(new CustomEvent("vouch:loaded", { detail: vouch == null ? void 0 : vouch.id }));
108
+ const resCacheCheck = (_a = res == null ? void 0 : res.headers) == null ? void 0 : _a.get("X-Cache-Check");
109
+ if (resCacheCheck !== cacheCheck) {
110
+ fetch(`${embedApiUrl}/vouches/${vouchId}`, {
111
+ method: "GET",
112
+ headers: [
113
+ ["X-Api-Key", apiKey],
114
+ ["Cache-Control", "max-age=0"]
115
+ ]
116
+ });
117
+ }
118
+ return vouch;
119
+ };
120
+ this.getTemplate = async (env, apiKey, templateId) => {
121
+ var _a;
122
+ const { embedApiUrl } = getEnvUrls(env);
123
+ const cacheCheck = v4();
124
+ const res = await fetch(`${embedApiUrl}/templates/${templateId}`, {
1180
125
  method: "GET",
1181
126
  headers: [
1182
- ["X-Api-Key", s],
1183
- ["Cache-Control", "max-age=0"]
127
+ ["X-Api-Key", apiKey],
128
+ ["X-Cache-Check", cacheCheck]
1184
129
  ]
1185
- }), o;
1186
- }, this.host = t, new ae(
130
+ });
131
+ const template = await res.json();
132
+ const resCacheCheck = (_a = res == null ? void 0 : res.headers) == null ? void 0 : _a.get("X-Cache-Check");
133
+ if (resCacheCheck !== cacheCheck) {
134
+ fetch(`${embedApiUrl}/templates/${templateId}`, {
135
+ method: "GET",
136
+ headers: [
137
+ ["X-Api-Key", apiKey],
138
+ ["Cache-Control", "max-age=0"]
139
+ ]
140
+ });
141
+ }
142
+ return template;
143
+ };
144
+ this.host = host;
145
+ new Task(
1187
146
  this.host,
1188
- async ([e, s, i, n, o]) => {
1189
- var l, h, d, c;
147
+ async ([env, apiKey, data, vouchId, templateId]) => {
148
+ var _a, _b, _c, _d;
1190
149
  try {
1191
- if (t.vouch = void 0, t.template = void 0, i) {
1192
- let a;
1193
- o && (this.fetching = !0, a = await this.getTemplate(e, s, o)), t.vouch = i, t.template = a ?? ((h = (l = i == null ? void 0 : i.settings) == null ? void 0 : l.template) == null ? void 0 : h.instance);
1194
- } else if (n) {
1195
- this.fetching = !0;
1196
- const [a, p] = await Promise.all([
1197
- this.getVouch(e, s, n),
1198
- o ? this.getTemplate(e, s, o) : null
150
+ host.vouch = void 0;
151
+ host.template = void 0;
152
+ if (data) {
153
+ let template;
154
+ if (templateId) {
155
+ this.fetching = true;
156
+ template = await this.getTemplate(env, apiKey, templateId);
157
+ }
158
+ this._vouch = data;
159
+ host.template = template ?? ((_b = (_a = data == null ? void 0 : data.settings) == null ? void 0 : _a.template) == null ? void 0 : _b.instance);
160
+ } else if (vouchId) {
161
+ this.fetching = true;
162
+ const [vouch, template] = await Promise.all([
163
+ this.getVouch(env, apiKey, vouchId),
164
+ templateId ? this.getTemplate(env, apiKey, templateId) : null
1199
165
  ]);
1200
- t.vouch = a, t.template = p ?? ((c = (d = a == null ? void 0 : a.settings) == null ? void 0 : d.template) == null ? void 0 : c.instance);
166
+ this._vouch = vouch;
167
+ host.template = template ?? ((_d = (_c = vouch == null ? void 0 : vouch.settings) == null ? void 0 : _c.template) == null ? void 0 : _d.instance);
1201
168
  }
1202
169
  } finally {
1203
- this.fetching = !1;
170
+ this.fetching = false;
1204
171
  }
1205
172
  },
1206
- () => [t.env, t.apiKey, t.data, t.vouchId, t.templateId]
173
+ () => [host.env, host.apiKey, host.data, host.vouchId, host.templateId]
174
+ );
175
+ new Task(
176
+ this.host,
177
+ ([vouch, questions]) => {
178
+ host.vouch = vouch ? {
179
+ ...vouch,
180
+ questions: {
181
+ items: vouch == null ? void 0 : vouch.questions.items.filter((_, index) => !(questions == null ? void 0 : questions.length) || (questions == null ? void 0 : questions.includes(index + 1)))
182
+ }
183
+ } : void 0;
184
+ },
185
+ () => [this._vouch, host.questions]
1207
186
  );
1208
187
  }
1209
- set fetching(t) {
1210
- this._fetching !== t && (this._fetching = t, this.host.requestUpdate());
188
+ set fetching(value) {
189
+ if (this._fetching !== value) {
190
+ this._fetching = value;
191
+ this.host.requestUpdate();
192
+ }
1211
193
  }
1212
194
  get fetching() {
1213
195
  return this._fetching;
1214
196
  }
1215
197
  }
1216
- const ns = 2e3;
1217
- class os {
1218
- constructor(t) {
1219
- this._tabId = void 0, this._clientId = void 0, this._visitorId = void 0, this._hasPlayed = !1, this._hasLoaded = {}, this._answersViewed = {}, this._streamedTime = {}, this._streamedPrevTimestamp = {}, this._createVisitor = (e) => {
1220
- var i, n;
1221
- const { publicApiUrl: s } = et(this.host.env);
1222
- return (n = (i = window.localStorage) == null ? void 0 : i.setItem) == null || n.call(i, "vouch-uid-visitor", e), navigator.sendBeacon(`${s}/api/visitor`, JSON.stringify({ visitorId: e })), e;
1223
- }, this._getReportingMetadata = () => {
1224
- var n, o;
1225
- const [e, s] = ((o = (n = Intl.DateTimeFormat().resolvedOptions().timeZone) == null ? void 0 : n.split) == null ? void 0 : o.call(n, "/")) ?? [], i = {};
1226
- return [...new URLSearchParams(location.search).entries()].forEach(([l, h]) => {
1227
- if (/utm/.test(l)) {
1228
- const d = l.toLowerCase().replace(/[-_][a-z0-9]/g, (c) => c.slice(-1).toUpperCase());
1229
- i[d] = h;
198
+ const name = "@vouchfor/embeds";
199
+ const version = "0.0.0-experiment.f59de3c";
200
+ const license = "MIT";
201
+ const author = "Aaron Williams";
202
+ const main = "dist/es/embeds.js";
203
+ const module = "dist/es/embeds.js";
204
+ const type = "module";
205
+ const types = "dist/es/src/index.d.ts";
206
+ const exports = {
207
+ ".": "./dist/es/embeds.js"
208
+ };
209
+ const files = [
210
+ "dist",
211
+ "src"
212
+ ];
213
+ const publishConfig = {
214
+ tag: "experiment",
215
+ access: "public"
216
+ };
217
+ const engines = {
218
+ node: ">=18.18.0"
219
+ };
220
+ const scripts = {
221
+ build: "rm -rf dist && tsc && yarn build:self",
222
+ "build:deps": "yarn --cwd ../media-player build",
223
+ "build:self": "vite build --mode iife && vite build --mode es && node scripts/build.cjs",
224
+ "build:package": "yarn build",
225
+ "build:storybook": "yarn prebuild && storybook build",
226
+ "generate:manifest": "wca src --outFile custom-elements.json",
227
+ lint: "eslint . --quiet",
228
+ "lint:fix": "eslint . --fix",
229
+ "lint:staged": "lint-staged",
230
+ prepublishOnly: "yarn build",
231
+ size: "size-limit",
232
+ storybook: "yarn prebuild && storybook dev -p 6007",
233
+ prebuild: "yarn build:deps && yarn generate:manifest",
234
+ test: "rm -rf test/lib && yarn prebuild && vite build --mode test && web-test-runner",
235
+ "test:ci": "yarn test --config web-test-runner.ci.config.js",
236
+ "test:watch": "yarn test --watch"
237
+ };
238
+ const dependencies = {
239
+ "@a11y/focus-trap": "^1.0.5",
240
+ "@lit/task": "^1.0.0",
241
+ "@vouchfor/canvas-video": "0.0.0-experiment.f59de3c",
242
+ "@vouchfor/media-player": "0.0.0-experiment.f59de3c",
243
+ uuid: "^9.0.1"
244
+ };
245
+ const peerDependencies = {
246
+ lit: "^3.1.2"
247
+ };
248
+ const devDependencies = {
249
+ "@esm-bundle/chai": "^4.3.4-fix.0",
250
+ "@open-wc/testing": "^4.0.0",
251
+ "@storybook/addon-essentials": "^8.0.4",
252
+ "@storybook/addon-links": "^8.0.4",
253
+ "@storybook/blocks": "^8.0.4",
254
+ "@storybook/web-components": "^8.0.4",
255
+ "@storybook/web-components-vite": "^8.0.4",
256
+ "@svgr/core": "^8.1.0",
257
+ "@types/flat": "^5.0.5",
258
+ "@types/mocha": "^10.0.6",
259
+ "@vouchfor/eslint-config": "^1.0.1",
260
+ "@vouchfor/prettier-config": "^1.0.1",
261
+ "@vouchfor/video-utils": "0.0.0-experiment.f59de3c",
262
+ "@web/dev-server-esbuild": "^1.0.2",
263
+ "@web/test-runner": "^0.18.1",
264
+ "@web/test-runner-browserstack": "^0.7.1",
265
+ "@web/test-runner-mocha": "^0.9.0",
266
+ "@web/test-runner-playwright": "^0.11.0",
267
+ glob: "^10.3.10",
268
+ "lint-staged": "^15.2.2",
269
+ lit: "^3.1.2",
270
+ lodash: "^4.17.21",
271
+ react: "^18.2.0",
272
+ "react-dom": "^18.2.0",
273
+ "rollup-plugin-tla": "^0.0.2",
274
+ sinon: "^17.0.1",
275
+ storybook: "^8.0.4",
276
+ svgson: "^5.3.1",
277
+ typescript: "^5.4.3",
278
+ vite: "^5.2.2",
279
+ "vite-plugin-commonjs": "^0.10.1",
280
+ "vite-plugin-dts": "^3.7.3",
281
+ "web-component-analyzer": "^2.0.0"
282
+ };
283
+ const packageJson = {
284
+ name,
285
+ version,
286
+ license,
287
+ author,
288
+ main,
289
+ module,
290
+ type,
291
+ types,
292
+ exports,
293
+ files,
294
+ publishConfig,
295
+ engines,
296
+ scripts,
297
+ "lint-staged": {
298
+ "**/*.{ts,tsx,js}": "eslint --fix --quiet",
299
+ "**/*.{md,json,yml}": "prettier --write"
300
+ },
301
+ dependencies,
302
+ peerDependencies,
303
+ devDependencies
304
+ };
305
+ function createVisitor(env) {
306
+ const { publicApiUrl } = getEnvUrls(env);
307
+ const visitorId = v4();
308
+ navigator.sendBeacon(`${publicApiUrl}/api/visitor`, JSON.stringify({ visitorId }));
309
+ return visitorId;
310
+ }
311
+ function getUids(env) {
312
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
313
+ if (typeof window === "undefined") {
314
+ return {
315
+ client: null,
316
+ tab: null,
317
+ request: v4()
318
+ };
319
+ }
320
+ let visitorId = (_b = (_a = window.localStorage) == null ? void 0 : _a.getItem) == null ? void 0 : _b.call(_a, "vouch-uid-visitor");
321
+ let clientId = (_d = (_c = window.localStorage) == null ? void 0 : _c.getItem) == null ? void 0 : _d.call(_c, "vouch-uid-client");
322
+ let tabId = (_f = (_e = window.sessionStorage) == null ? void 0 : _e.getItem) == null ? void 0 : _f.call(_e, "vouch-uid-tab");
323
+ const requestId = v4();
324
+ if (!visitorId) {
325
+ visitorId = createVisitor(env);
326
+ (_h = (_g = window.localStorage) == null ? void 0 : _g.setItem) == null ? void 0 : _h.call(_g, "vouch-uid-visitor", visitorId);
327
+ }
328
+ if (!clientId) {
329
+ clientId = v4();
330
+ (_j = (_i = window.localStorage) == null ? void 0 : _i.setItem) == null ? void 0 : _j.call(_i, "vouch-uid-client", clientId);
331
+ }
332
+ if (!tabId) {
333
+ tabId = v4();
334
+ (_l = (_k = window.sessionStorage) == null ? void 0 : _k.setItem) == null ? void 0 : _l.call(_k, "vouch-uid-tab", tabId);
335
+ }
336
+ return {
337
+ client: clientId,
338
+ tab: tabId,
339
+ request: requestId,
340
+ visitor: visitorId
341
+ };
342
+ }
343
+ function findVouchId(payload, vouch) {
344
+ if (payload && "vouchId" in payload) {
345
+ return payload.vouchId;
346
+ }
347
+ return (vouch == null ? void 0 : vouch.id) ?? null;
348
+ }
349
+ function getReportingMetadata(source = "embedded_player") {
350
+ var _a, _b;
351
+ const [country, region] = ((_b = (_a = Intl.DateTimeFormat().resolvedOptions().timeZone) == null ? void 0 : _a.split) == null ? void 0 : _b.call(_a, "/")) ?? [];
352
+ const utmParams = {};
353
+ [...new URLSearchParams(location.search).entries()].forEach(([key, value]) => {
354
+ if (/utm/.test(key)) {
355
+ const param = key.toLowerCase().replace(/[-_][a-z0-9]/g, (group) => group.slice(-1).toUpperCase());
356
+ utmParams[param] = value;
357
+ }
358
+ });
359
+ return {
360
+ source,
361
+ time: /* @__PURE__ */ new Date(),
362
+ region,
363
+ country,
364
+ screenHeight: window.screen.height,
365
+ screenWidth: window.screen.width,
366
+ referrer: document.referrer,
367
+ currentUrl: location.href,
368
+ embedType: "media-player-embed",
369
+ embedVersion: packageJson.version,
370
+ templateVersion: TEMPLATE_VERSION,
371
+ ...utmParams
372
+ };
373
+ }
374
+ const MINIMUM_SEND_THRESHOLD = 1;
375
+ class TrackingController {
376
+ constructor(host) {
377
+ this._batchedEvents = [];
378
+ this._hasPlayed = false;
379
+ this._hasLoaded = {};
380
+ this._answersViewed = {};
381
+ this._streamStartTime = {};
382
+ this._streamLatestTime = {};
383
+ this._currentlyPlayingVideo = null;
384
+ this._createTrackingEvent = (event, payload) => {
385
+ const vouchId = findVouchId(payload, this.host.vouch);
386
+ if (!vouchId || this.host.disableTracking) {
387
+ return;
388
+ }
389
+ this._batchedEvents.push({
390
+ event,
391
+ payload: {
392
+ ...payload,
393
+ vouchId,
394
+ time: (/* @__PURE__ */ new Date()).toISOString()
1230
395
  }
1231
- }), {
1232
- source: this.host.trackingSource,
1233
- time: /* @__PURE__ */ new Date(),
1234
- region: s,
1235
- country: e,
1236
- screenHeight: window.screen.height,
1237
- screenWidth: window.screen.width,
1238
- referrer: document.referrer,
1239
- currentUrl: location.href,
1240
- ...i
1241
- };
1242
- }, this._sendTrackingEvent = (e, s) => {
1243
- const { publicApiUrl: i } = et(this.host.env), { client: n, tab: o, request: l, visitor: h } = this._getUids();
396
+ });
397
+ };
398
+ this._sendTrackingEvent = () => {
399
+ if (this._batchedEvents.length <= 0) {
400
+ return;
401
+ }
402
+ const { publicApiUrl } = getEnvUrls(this.host.env);
403
+ const { client, tab, request, visitor } = getUids(this.host.env);
1244
404
  navigator.sendBeacon(
1245
- `${i}/api/events`,
405
+ `${publicApiUrl}/api/batchevents`,
1246
406
  JSON.stringify({
1247
- event: e,
1248
- payload: s,
407
+ payload: {
408
+ events: this._batchedEvents
409
+ },
1249
410
  context: {
1250
- "x-uid-client": n,
1251
- "x-uid-tab": o,
1252
- "x-uid-request": l,
1253
- "x-uid-visitor": h,
1254
- "x-reporting-metadata": this._getReportingMetadata()
411
+ "x-uid-client": client,
412
+ "x-uid-tab": tab,
413
+ "x-uid-request": request,
414
+ "x-uid-visitor": visitor,
415
+ "x-reporting-metadata": getReportingMetadata(this.host.trackingSource)
1255
416
  }
1256
417
  })
1257
418
  );
1258
- }, this._handleVouchLoaded = ({ detail: e }) => {
1259
- e && (this._hasLoaded[e] || (this._sendTrackingEvent("VOUCH_LOADED", {
1260
- vouchId: e
1261
- }), this._hasLoaded[e] = !0));
1262
- }, this._handlePlay = () => {
1263
- const e = this._findVouchId();
1264
- e && (this._hasPlayed || (this._sendTrackingEvent("VIDEO_PLAYED", {
1265
- vouchId: e,
1266
- streamStart: this.host.currentTime
1267
- }), this._hasPlayed = !0));
1268
- }, this._handleVideoPlay = ({ detail: { id: e, node: s } }) => {
1269
- const i = this._findVouchId();
1270
- i && (this._answersViewed[e] || (this._sendTrackingEvent("VOUCH_RESPONSE_VIEWED", {
1271
- vouchId: i,
1272
- answerId: e
1273
- }), this._answersViewed[e] = !0), this._streamedTime[e] = s.currentTime, this._streamedPrevTimestamp[e] = Date.now());
1274
- }, this._handleVideoTimeUpdate = ({ detail: { id: e, node: s } }) => {
1275
- var o, l;
1276
- const i = this._findVouchId();
1277
- if (!i)
419
+ this._batchedEvents = [];
420
+ };
421
+ this._streamEnded = () => {
422
+ if (this._currentlyPlayingVideo) {
423
+ const { id, key } = this._currentlyPlayingVideo;
424
+ if (this._streamLatestTime[key] > this._streamStartTime[key] + MINIMUM_SEND_THRESHOLD) {
425
+ this._createTrackingEvent("VIDEO_STREAMED", {
426
+ answerId: id,
427
+ streamStart: this._streamStartTime[key],
428
+ streamEnd: this._streamLatestTime[key]
429
+ });
430
+ }
431
+ delete this._streamStartTime[key];
432
+ delete this._streamLatestTime[key];
433
+ }
434
+ };
435
+ this._handleVouchLoaded = ({ detail: vouchId }) => {
436
+ if (!vouchId) {
1278
437
  return;
1279
- const n = Date.now();
1280
- !this.host.paused && // Only fire the video seeked event when this video is the active one
1281
- e === ((l = (o = this.host.scene) == null ? void 0 : o.video) == null ? void 0 : l.id) && // Throttle the frequency that we send streamed events while playing
1282
- n - this._streamedPrevTimestamp[e] > ns && (this._sendTrackingEvent("VIDEO_STREAMED", {
1283
- vouchId: i,
1284
- answerId: e,
1285
- streamStart: this._streamedTime[e],
1286
- streamEnd: s.currentTime
1287
- }), this._streamedTime[e] = s.currentTime, this._streamedPrevTimestamp[e] = n);
1288
- }, this._handleVideoPause = ({ detail: { id: e, node: s } }) => {
1289
- const i = this._findVouchId();
1290
- i && (this._sendTrackingEvent("VIDEO_STREAMED", {
1291
- vouchId: i,
1292
- answerId: e,
1293
- streamStart: this._streamedTime[e],
1294
- streamEnd: s.currentTime
1295
- }), delete this._streamedTime[e], delete this._streamedPrevTimestamp[e]);
1296
- }, this.host = t, t.addController(this);
1297
- }
1298
- _findVouchId() {
1299
- if (this.host.data)
1300
- return "uuid" in this.host.data ? this.host.data.uuid : this.host.data.id;
1301
- }
1302
- _getUids() {
1303
- var n, o, l, h, d, c, a, p, u, g, G, mt;
1304
- if (typeof window > "u")
1305
- return {
1306
- client: null,
1307
- tab: null,
1308
- request: N()
1309
- };
1310
- const t = this._visitorId || ((o = (n = window.localStorage) == null ? void 0 : n.getItem) == null ? void 0 : o.call(n, "vouch-uid-visitor")) || this._createVisitor(N()), e = this._clientId || ((h = (l = window.localStorage) == null ? void 0 : l.getItem) == null ? void 0 : h.call(l, "vouch-uid-client")) || N(), s = this._tabId || ((c = (d = window.sessionStorage) == null ? void 0 : d.getItem) == null ? void 0 : c.call(d, "vouch-uid-tab")) || N(), i = N();
1311
- return t !== this._visitorId && (this._visitorId = t, (p = (a = window.localStorage) == null ? void 0 : a.setItem) == null || p.call(a, "vouch-uid-visitor", t)), e !== this._clientId && (this._clientId = e, (g = (u = window.localStorage) == null ? void 0 : u.setItem) == null || g.call(u, "vouch-uid-client", e)), s !== this._tabId && (this._tabId = s, (mt = (G = window.sessionStorage) == null ? void 0 : G.setItem) == null || mt.call(G, "vouch-uid-tab", s)), {
1312
- client: e,
1313
- tab: s,
1314
- request: i,
1315
- visitor: t
438
+ }
439
+ if (!this._hasLoaded[vouchId]) {
440
+ this._createTrackingEvent("VOUCH_LOADED", { vouchId });
441
+ this._hasLoaded[vouchId] = true;
442
+ }
443
+ };
444
+ this._handlePlay = () => {
445
+ if (!this._hasPlayed) {
446
+ this._createTrackingEvent("VIDEO_PLAYED", {
447
+ streamStart: this.host.currentTime
448
+ });
449
+ this._hasPlayed = true;
450
+ }
451
+ };
452
+ this._handleVideoPlay = ({ detail: { id, key } }) => {
453
+ if (!this._answersViewed[key]) {
454
+ this._createTrackingEvent("VOUCH_RESPONSE_VIEWED", {
455
+ answerId: id
456
+ });
457
+ this._answersViewed[key] = true;
458
+ }
459
+ };
460
+ this._handleVideoTimeUpdate = ({ detail: { id, key, node } }) => {
461
+ var _a, _b;
462
+ if (
463
+ // We only want to count any time that the video is actually playing
464
+ !this.host.paused && // Only update the latest time if this event fires for the currently active video
465
+ id === ((_b = (_a = this.host.scene) == null ? void 0 : _a.video) == null ? void 0 : _b.id)
466
+ ) {
467
+ this._currentlyPlayingVideo = { id, key, node };
468
+ this._streamLatestTime[key] = node.currentTime;
469
+ if (!this._streamStartTime[key]) {
470
+ this._streamStartTime[key] = node.currentTime;
471
+ this._streamLatestTime[key] = node.currentTime;
472
+ }
473
+ }
474
+ };
475
+ this._handleVideoPause = ({ detail: { id, key } }) => {
476
+ if (this._streamLatestTime[key] > this._streamStartTime[key] + MINIMUM_SEND_THRESHOLD) {
477
+ this._createTrackingEvent("VIDEO_STREAMED", {
478
+ answerId: id,
479
+ streamStart: this._streamStartTime[key],
480
+ streamEnd: this._streamLatestTime[key]
481
+ });
482
+ }
483
+ delete this._streamStartTime[key];
484
+ delete this._streamLatestTime[key];
485
+ };
486
+ this._pageUnloading = () => {
487
+ this._streamEnded();
488
+ this._sendTrackingEvent();
489
+ };
490
+ this._handleVisibilityChange = () => {
491
+ if (document.visibilityState === "hidden") {
492
+ this._pageUnloading();
493
+ }
494
+ };
495
+ this._handlePageHide = () => {
496
+ this._pageUnloading();
1316
497
  };
498
+ this.host = host;
499
+ host.addController(this);
1317
500
  }
1318
501
  hostConnected() {
1319
502
  requestAnimationFrame(() => {
1320
- var t, e, s, i;
1321
- this.host.addEventListener("vouch:loaded", this._handleVouchLoaded), (t = this.host.mediaPlayer) == null || t.addEventListener("play", this._handlePlay), (e = this.host.mediaPlayer) == null || e.addEventListener("video:play", this._handleVideoPlay), (s = this.host.mediaPlayer) == null || s.addEventListener("video:pause", this._handleVideoPause), (i = this.host.mediaPlayer) == null || i.addEventListener("video:timeupdate", this._handleVideoTimeUpdate);
503
+ var _a, _b, _c, _d;
504
+ if ("onvisibilitychange" in document) {
505
+ document.addEventListener("visibilitychange", this._handleVisibilityChange);
506
+ } else {
507
+ window.addEventListener("pagehide", this._handlePageHide);
508
+ }
509
+ this.host.addEventListener("vouch:loaded", this._handleVouchLoaded);
510
+ (_a = this.host.mediaPlayer) == null ? void 0 : _a.addEventListener("play", this._handlePlay);
511
+ (_b = this.host.mediaPlayer) == null ? void 0 : _b.addEventListener("video:play", this._handleVideoPlay);
512
+ (_c = this.host.mediaPlayer) == null ? void 0 : _c.addEventListener("video:pause", this._handleVideoPause);
513
+ (_d = this.host.mediaPlayer) == null ? void 0 : _d.addEventListener("video:timeupdate", this._handleVideoTimeUpdate);
1322
514
  });
1323
515
  }
1324
516
  hostDisconnected() {
1325
- var t, e, s, i;
1326
- this.host.removeEventListener("vouch:loaded", this._handleVouchLoaded), (t = this.host.mediaPlayer) == null || t.removeEventListener("play", this._handlePlay), (e = this.host.mediaPlayer) == null || e.removeEventListener("video:play", this._handleVideoPlay), (s = this.host.mediaPlayer) == null || s.removeEventListener("video:pause", this._handleVideoPause), (i = this.host.mediaPlayer) == null || i.removeEventListener("video:timeupdate", this._handleVideoTimeUpdate);
517
+ var _a, _b, _c, _d;
518
+ this._pageUnloading();
519
+ if ("onvisibilitychange" in document) {
520
+ document.removeEventListener("visibilitychange", this._handleVisibilityChange);
521
+ } else {
522
+ window.removeEventListener("pagehide", this._handlePageHide);
523
+ }
524
+ this.host.removeEventListener("vouch:loaded", this._handleVouchLoaded);
525
+ (_a = this.host.mediaPlayer) == null ? void 0 : _a.removeEventListener("play", this._handlePlay);
526
+ (_b = this.host.mediaPlayer) == null ? void 0 : _b.removeEventListener("video:play", this._handleVideoPlay);
527
+ (_c = this.host.mediaPlayer) == null ? void 0 : _c.removeEventListener("video:pause", this._handleVideoPause);
528
+ (_d = this.host.mediaPlayer) == null ? void 0 : _d.removeEventListener("video:timeupdate", this._handleVideoTimeUpdate);
1327
529
  }
1328
530
  }
1329
- var hs = Object.defineProperty, as = Object.getOwnPropertyDescriptor, f = (r, t, e, s) => {
1330
- for (var i = s > 1 ? void 0 : s ? as(t, e) : t, n = r.length - 1, o; n >= 0; n--)
1331
- (o = r[n]) && (i = (s ? o(t, e, i) : o(i)) || i);
1332
- return s && i && hs(t, e, i), i;
531
+ var __defProp$3 = Object.defineProperty;
532
+ var __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor;
533
+ var __decorateClass$3 = (decorators, target, key, kind) => {
534
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$3(target, key) : target;
535
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
536
+ if (decorator = decorators[i])
537
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
538
+ if (kind && result)
539
+ __defProp$3(target, key, result);
540
+ return result;
1333
541
  };
1334
- let m = class extends j {
542
+ let PlayerEmbed = class extends LitElement {
1335
543
  constructor() {
1336
- super(...arguments), this._mediaPlayerRef = jt(), this.env = "prod", this.apiKey = "", this.trackingSource = "embed", this.preload = "auto", this.autoplay = !1, this.aspectRatio = 0, this.eventController = new Ge(this, [
544
+ super(...arguments);
545
+ this.env = "prod";
546
+ this.apiKey = "";
547
+ this.disableTracking = false;
548
+ this.trackingSource = "embedded_player";
549
+ this.preload = "auto";
550
+ this.autoplay = false;
551
+ this.aspectRatio = 0;
552
+ this.eventController = new EventForwardController(this, [
1337
553
  "durationchange",
1338
554
  "ended",
1339
555
  "error",
@@ -1344,12 +560,15 @@ let m = class extends j {
1344
560
  "playing",
1345
561
  "ratechange",
1346
562
  "scenechange",
563
+ "scenesupdate",
1347
564
  "seeking",
1348
565
  "seeked",
1349
566
  "timeupdate",
1350
567
  "volumechange",
568
+ "processing",
1351
569
  "waiting",
1352
570
  "video:loadeddata",
571
+ "video:seeking",
1353
572
  "video:seeked",
1354
573
  "video:play",
1355
574
  "video:playing",
@@ -1358,146 +577,579 @@ let m = class extends j {
1358
577
  "video:timeupdate",
1359
578
  "video:ended",
1360
579
  "video:error"
1361
- ]), this._fetcherController = new rs(this), this._trackingController = new os(this);
580
+ ]);
581
+ this._fetcherController = new FetcherController(this);
582
+ this._trackingController = new TrackingController(this);
583
+ this._mediaPlayerRef = createRef();
1362
584
  }
1363
585
  get fetching() {
1364
586
  return this._fetcherController.fetching;
1365
587
  }
1366
588
  get waiting() {
1367
- var r;
1368
- return (r = this._mediaPlayerRef.value) == null ? void 0 : r.waiting;
589
+ var _a;
590
+ return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.waiting;
591
+ }
592
+ get initialised() {
593
+ var _a;
594
+ return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.initialised;
1369
595
  }
1370
596
  get seeking() {
1371
- var r;
1372
- return (r = this._mediaPlayerRef.value) == null ? void 0 : r.seeking;
597
+ var _a;
598
+ return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.seeking;
1373
599
  }
1374
600
  get paused() {
1375
- var r;
1376
- return (r = this._mediaPlayerRef.value) == null ? void 0 : r.paused;
601
+ var _a;
602
+ return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.paused;
1377
603
  }
1378
604
  get captions() {
1379
- var r;
1380
- return (r = this._mediaPlayerRef.value) == null ? void 0 : r.captions;
605
+ var _a;
606
+ return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.captions;
1381
607
  }
1382
608
  get fullscreen() {
1383
- var r;
1384
- return (r = this._mediaPlayerRef.value) == null ? void 0 : r.fullscreen;
609
+ var _a;
610
+ return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.fullscreen;
1385
611
  }
1386
612
  get duration() {
1387
- var r;
1388
- return (r = this._mediaPlayerRef.value) == null ? void 0 : r.duration;
613
+ var _a;
614
+ return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.duration;
1389
615
  }
1390
- set currentTime(r) {
1391
- this._mediaPlayerRef.value && (this._mediaPlayerRef.value.currentTime = r);
616
+ set currentTime(value) {
617
+ if (this._mediaPlayerRef.value) {
618
+ this._mediaPlayerRef.value.currentTime = value;
619
+ }
1392
620
  }
1393
621
  get currentTime() {
1394
- var r;
1395
- return ((r = this._mediaPlayerRef.value) == null ? void 0 : r.currentTime) ?? 0;
622
+ var _a;
623
+ return ((_a = this._mediaPlayerRef.value) == null ? void 0 : _a.currentTime) ?? 0;
1396
624
  }
1397
- set playbackRate(r) {
1398
- this._mediaPlayerRef.value && (this._mediaPlayerRef.value.playbackRate = r);
625
+ set playbackRate(value) {
626
+ if (this._mediaPlayerRef.value) {
627
+ this._mediaPlayerRef.value.playbackRate = value;
628
+ }
1399
629
  }
1400
630
  get playbackRate() {
1401
- var r;
1402
- return ((r = this._mediaPlayerRef.value) == null ? void 0 : r.playbackRate) ?? 1;
631
+ var _a;
632
+ return ((_a = this._mediaPlayerRef.value) == null ? void 0 : _a.playbackRate) ?? 1;
1403
633
  }
1404
- set volume(r) {
1405
- this._mediaPlayerRef.value && (this._mediaPlayerRef.value.volume = r);
634
+ set volume(value) {
635
+ if (this._mediaPlayerRef.value) {
636
+ this._mediaPlayerRef.value.volume = value;
637
+ }
1406
638
  }
1407
639
  get volume() {
1408
- var r;
1409
- return ((r = this._mediaPlayerRef.value) == null ? void 0 : r.volume) ?? 1;
640
+ var _a;
641
+ return ((_a = this._mediaPlayerRef.value) == null ? void 0 : _a.volume) ?? 1;
1410
642
  }
1411
- set muted(r) {
1412
- this._mediaPlayerRef.value && (this._mediaPlayerRef.value.muted = r);
643
+ set muted(value) {
644
+ if (this._mediaPlayerRef.value) {
645
+ this._mediaPlayerRef.value.muted = value;
646
+ }
1413
647
  }
1414
648
  get muted() {
1415
- var r;
1416
- return ((r = this._mediaPlayerRef.value) == null ? void 0 : r.muted) ?? !1;
649
+ var _a;
650
+ return ((_a = this._mediaPlayerRef.value) == null ? void 0 : _a.muted) ?? false;
1417
651
  }
1418
652
  get scene() {
1419
- var r;
1420
- return ((r = this._mediaPlayerRef.value) == null ? void 0 : r.scene) ?? null;
653
+ var _a;
654
+ return ((_a = this._mediaPlayerRef.value) == null ? void 0 : _a.scene) ?? null;
1421
655
  }
1422
656
  get scenes() {
1423
- var r;
1424
- return ((r = this._mediaPlayerRef.value) == null ? void 0 : r.scenes) ?? [];
657
+ var _a;
658
+ return ((_a = this._mediaPlayerRef.value) == null ? void 0 : _a.scenes) ?? [];
659
+ }
660
+ get sceneConfig() {
661
+ var _a;
662
+ return ((_a = this._mediaPlayerRef.value) == null ? void 0 : _a.sceneConfig) ?? null;
1425
663
  }
1426
664
  get videoState() {
1427
- var r;
1428
- return (r = this._mediaPlayerRef.value) == null ? void 0 : r.videoState;
665
+ var _a;
666
+ return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.videoState;
1429
667
  }
1430
668
  get mediaPlayer() {
1431
669
  return this._mediaPlayerRef.value;
1432
670
  }
1433
671
  play() {
1434
- var r;
1435
- (r = this._mediaPlayerRef.value) == null || r.play();
672
+ var _a;
673
+ (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.play();
1436
674
  }
1437
675
  pause() {
1438
- var r;
1439
- (r = this._mediaPlayerRef.value) == null || r.pause();
676
+ var _a;
677
+ (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.pause();
678
+ }
679
+ reset(time = 0, play = false) {
680
+ var _a;
681
+ (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.reset(time, play);
682
+ }
683
+ setScene(index) {
684
+ var _a;
685
+ (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.setScene(index);
686
+ }
687
+ _renderStyles() {
688
+ if (!this.aspectRatio) {
689
+ return html`
690
+ <style>
691
+ :host {
692
+ width: 100%;
693
+ height: 100%;
694
+ }
695
+ </style>
696
+ `;
697
+ }
698
+ if (typeof this.aspectRatio === "number") {
699
+ return html`
700
+ <style>
701
+ :host {
702
+ aspect-ratio: ${this.aspectRatio};
703
+ }
704
+ </style>
705
+ `;
706
+ }
707
+ return null;
1440
708
  }
1441
- setScene(r) {
1442
- var t;
1443
- (t = this._mediaPlayerRef.value) == null || t.setScene(r);
709
+ willUpdate(changedProperties) {
710
+ if (changedProperties.has("vouchId") && this.vouchId !== changedProperties.get("vouchId")) {
711
+ this.reset(0, false);
712
+ }
1444
713
  }
1445
714
  render() {
1446
- return De`
1447
- <vmp-new-media-player
1448
- ${Bt(this._mediaPlayerRef)}
715
+ return html`
716
+ ${this._renderStyles()}
717
+ <vmp-media-player
718
+ ${ref(this._mediaPlayerRef)}
1449
719
  ${this.eventController.register()}
1450
720
  ?autoplay=${this.autoplay}
1451
721
  ?loading=${this.fetching}
1452
722
  .data=${this.vouch}
1453
723
  .template=${this.template}
1454
- aspectRatio=${ft(this.aspectRatio)}
1455
- preload=${ft(this.preload)}
724
+ aspectRatio=${ifDefined(this.aspectRatio)}
725
+ preload=${ifDefined(this.preload)}
726
+ language=${ifDefined(this.language)}
1456
727
  .controls=${this.controls}
1457
- ></vmp-new-media-player>
728
+ ></vmp-media-player>
1458
729
  `;
1459
730
  }
1460
731
  };
1461
- f([
1462
- v({ type: Object, attribute: "data" })
1463
- ], m.prototype, "data", 2);
1464
- f([
1465
- v({ type: String })
1466
- ], m.prototype, "vouchId", 2);
1467
- f([
1468
- v({ type: String })
1469
- ], m.prototype, "templateId", 2);
1470
- f([
1471
- v({ type: String })
1472
- ], m.prototype, "env", 2);
1473
- f([
1474
- v({ type: String })
1475
- ], m.prototype, "apiKey", 2);
1476
- f([
1477
- v({ type: String })
1478
- ], m.prototype, "trackingSource", 2);
1479
- f([
1480
- v({ type: Array })
1481
- ], m.prototype, "controls", 2);
1482
- f([
1483
- v({ type: String })
1484
- ], m.prototype, "preload", 2);
1485
- f([
1486
- v({ type: Boolean })
1487
- ], m.prototype, "autoplay", 2);
1488
- f([
1489
- v({ type: Number })
1490
- ], m.prototype, "aspectRatio", 2);
1491
- f([
1492
- zt()
1493
- ], m.prototype, "vouch", 2);
1494
- f([
1495
- zt()
1496
- ], m.prototype, "template", 2);
1497
- m = f([
1498
- he("vouch-embed")
1499
- ], m);
732
+ PlayerEmbed.styles = [
733
+ css`
734
+ :host {
735
+ display: flex;
736
+ }
737
+ `
738
+ ];
739
+ __decorateClass$3([
740
+ property({ type: Object })
741
+ ], PlayerEmbed.prototype, "data", 2);
742
+ __decorateClass$3([
743
+ property({ type: String })
744
+ ], PlayerEmbed.prototype, "vouchId", 2);
745
+ __decorateClass$3([
746
+ property({ type: String })
747
+ ], PlayerEmbed.prototype, "templateId", 2);
748
+ __decorateClass$3([
749
+ property({ type: Array })
750
+ ], PlayerEmbed.prototype, "questions", 2);
751
+ __decorateClass$3([
752
+ property({ type: String })
753
+ ], PlayerEmbed.prototype, "env", 2);
754
+ __decorateClass$3([
755
+ property({ type: String })
756
+ ], PlayerEmbed.prototype, "apiKey", 2);
757
+ __decorateClass$3([
758
+ property({ type: Boolean })
759
+ ], PlayerEmbed.prototype, "disableTracking", 2);
760
+ __decorateClass$3([
761
+ property({ type: String })
762
+ ], PlayerEmbed.prototype, "trackingSource", 2);
763
+ __decorateClass$3([
764
+ property({ type: Array })
765
+ ], PlayerEmbed.prototype, "controls", 2);
766
+ __decorateClass$3([
767
+ property({ type: String })
768
+ ], PlayerEmbed.prototype, "preload", 2);
769
+ __decorateClass$3([
770
+ property({ type: Boolean })
771
+ ], PlayerEmbed.prototype, "autoplay", 2);
772
+ __decorateClass$3([
773
+ property({ type: Number })
774
+ ], PlayerEmbed.prototype, "aspectRatio", 2);
775
+ __decorateClass$3([
776
+ property({ type: String })
777
+ ], PlayerEmbed.prototype, "language", 2);
778
+ __decorateClass$3([
779
+ state()
780
+ ], PlayerEmbed.prototype, "vouch", 2);
781
+ __decorateClass$3([
782
+ state()
783
+ ], PlayerEmbed.prototype, "template", 2);
784
+ PlayerEmbed = __decorateClass$3([
785
+ customElement("vouch-embed-player")
786
+ ], PlayerEmbed);
787
+ var __defProp$2 = Object.defineProperty;
788
+ var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;
789
+ var __decorateClass$2 = (decorators, target, key, kind) => {
790
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target;
791
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
792
+ if (decorator = decorators[i])
793
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
794
+ if (kind && result)
795
+ __defProp$2(target, key, result);
796
+ return result;
797
+ };
798
+ let DialogOverlay = class extends LitElement {
799
+ constructor() {
800
+ super(...arguments);
801
+ this.open = false;
802
+ this.aspectRatio = 0;
803
+ }
804
+ render() {
805
+ return html`
806
+ <div
807
+ class=${classMap({
808
+ container: true,
809
+ hidden: !this.open
810
+ })}
811
+ >
812
+ <div
813
+ class="background"
814
+ @click=${() => this.dispatchEvent(new CustomEvent("overlay:click", { bubbles: true, composed: true }))}
815
+ ></div>
816
+ <focus-trap>
817
+ <div
818
+ class=${classMap({
819
+ "video-frame": true,
820
+ grow: this.aspectRatio === 0
821
+ })}
822
+ style=${styleMap({
823
+ aspectRatio: this.aspectRatio
824
+ })}
825
+ >
826
+ <slot></slot>
827
+ <vmp-icon-button
828
+ icon="close"
829
+ rounded="full"
830
+ weight="heavy"
831
+ @click=${() => this.dispatchEvent(new CustomEvent("close:click", { bubbles: true, composed: true }))}
832
+ ></vmp-icon-button>
833
+ </div>
834
+ </focus-trap>
835
+ </div>
836
+ `;
837
+ }
838
+ };
839
+ DialogOverlay.styles = [
840
+ css`
841
+ :host {
842
+ --vouch-media-player-border-radius: var(--vu-media-player-border-radius, 12px);
843
+ --overlay-background-color: var(--vu-overlay-background-color, black);
844
+ --overlay-background-opacity: var(--vu-overlay-background-opacity, 0.4);
845
+
846
+ --dialog-width: var(--vu-dialog-width, 890px);
847
+ --dialog-height: var(--vu-dialog-height, 500px);
848
+ }
849
+
850
+ .container {
851
+ position: fixed;
852
+ display: flex;
853
+ inset: 0;
854
+ opacity: 1;
855
+ z-index: 2147483647;
856
+ align-items: center;
857
+ justify-content: center;
858
+ transition: opacity 100ms ease-in;
859
+ }
860
+
861
+ .hidden {
862
+ opacity: 0;
863
+ pointer-events: none;
864
+ }
865
+
866
+ .background {
867
+ position: absolute;
868
+ inset: 0;
869
+ opacity: var(--overlay-background-opacity);
870
+ background-color: var(--overlay-background-color);
871
+ }
872
+
873
+ focus-trap {
874
+ display: flex;
875
+ align-items: center;
876
+ justify-content: center;
877
+ margin: 40px;
878
+ width: var(--dialog-width);
879
+ height: var(--dialog-height);
880
+ max-width: calc(100% - 80px);
881
+ max-height: calc(100% - 80px);
882
+ }
883
+
884
+ .video-frame {
885
+ position: relative;
886
+ display: flex;
887
+ align-items: center;
888
+ justify-content: center;
889
+ max-width: 100%;
890
+ max-height: 100%;
891
+ }
892
+
893
+ .video-frame.grow {
894
+ width: 100%;
895
+ height: 100%;
896
+ }
897
+
898
+ vmp-icon-button {
899
+ position: absolute;
900
+ top: 0;
901
+ right: 0;
902
+ margin: 10px;
903
+ }
904
+ `
905
+ ];
906
+ __decorateClass$2([
907
+ property({ type: Boolean })
908
+ ], DialogOverlay.prototype, "open", 2);
909
+ __decorateClass$2([
910
+ property({ type: Number })
911
+ ], DialogOverlay.prototype, "aspectRatio", 2);
912
+ DialogOverlay = __decorateClass$2([
913
+ customElement("vouch-embed-dialog-overlay")
914
+ ], DialogOverlay);
915
+ var __defProp$1 = Object.defineProperty;
916
+ var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
917
+ var __decorateClass$1 = (decorators, target, key, kind) => {
918
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target;
919
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
920
+ if (decorator = decorators[i])
921
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
922
+ if (kind && result)
923
+ __defProp$1(target, key, result);
924
+ return result;
925
+ };
926
+ let DialogPortal = class extends LitElement {
927
+ constructor() {
928
+ super(...arguments);
929
+ this.env = "prod";
930
+ this.apiKey = "";
931
+ this.disableTracking = false;
932
+ this.trackingSource = "embedded_player";
933
+ this.preload = "none";
934
+ this.disableAutoplay = false;
935
+ this.aspectRatio = 0;
936
+ this._mediaPlayerRef = createRef();
937
+ this.open = false;
938
+ this._handleToggle = ({ detail }) => {
939
+ var _a, _b, _c;
940
+ if (this.id === detail) {
941
+ this.open = !this.open;
942
+ if (this.open) {
943
+ if (!this.disableAutoplay && ((_a = this._mediaPlayerRef) == null ? void 0 : _a.value)) {
944
+ this._mediaPlayerRef.value.muted = false;
945
+ this._mediaPlayerRef.value.play();
946
+ }
947
+ } else {
948
+ (_c = (_b = this._mediaPlayerRef) == null ? void 0 : _b.value) == null ? void 0 : _c.pause();
949
+ }
950
+ }
951
+ };
952
+ this._handleClose = () => {
953
+ var _a, _b;
954
+ this.open = false;
955
+ (_b = (_a = this._mediaPlayerRef) == null ? void 0 : _a.value) == null ? void 0 : _b.pause();
956
+ };
957
+ this._handleDocumentKeyUp = (e) => {
958
+ if (e.key === "Escape") {
959
+ this._handleClose();
960
+ }
961
+ };
962
+ }
963
+ connectedCallback() {
964
+ super.connectedCallback();
965
+ document.addEventListener("dialogembed:click", this._handleToggle);
966
+ document.addEventListener("keyup", this._handleDocumentKeyUp);
967
+ document.addEventListener("close:click", this._handleClose);
968
+ document.addEventListener("overlay:click", this._handleClose);
969
+ }
970
+ disconnectedCallback() {
971
+ super.disconnectedCallback();
972
+ document.removeEventListener("dialogembed:click", this._handleToggle);
973
+ document.removeEventListener("keyup", this._handleDocumentKeyUp);
974
+ document.removeEventListener("close:click", this._handleClose);
975
+ document.removeEventListener("overlay:click", this._handleClose);
976
+ }
977
+ createRenderRoot() {
978
+ const newNode = document.createElement("div");
979
+ document.body.appendChild(newNode);
980
+ return newNode;
981
+ }
982
+ render() {
983
+ return html`
984
+ <vouch-embed-dialog-overlay ?open=${this.open} aspectRatio=${this.aspectRatio}>
985
+ <vouch-embed-player
986
+ ${ref(this._mediaPlayerRef)}
987
+ style=${styleMap({
988
+ maxWidth: "100%",
989
+ maxHeight: "100%"
990
+ })}
991
+ ?autoplay=${false}
992
+ vouchId=${ifDefined(this.vouchId)}
993
+ templateId=${ifDefined(this.templateId)}
994
+ .questions=${this.questions}
995
+ .controls=${this.controls}
996
+ env=${ifDefined(this.env)}
997
+ apiKey=${ifDefined(this.apiKey)}
998
+ ?disableTracking=${this.disableTracking}
999
+ trackingSource=${ifDefined(this.trackingSource)}
1000
+ preload=${ifDefined(this.preload)}
1001
+ aspectRatio=${this.aspectRatio}
1002
+ ></vouch-embed-player>
1003
+ </vouch-embed-dialog-overlay>
1004
+ `;
1005
+ }
1006
+ };
1007
+ __decorateClass$1([
1008
+ property({ type: String })
1009
+ ], DialogPortal.prototype, "vouchId", 2);
1010
+ __decorateClass$1([
1011
+ property({ type: String })
1012
+ ], DialogPortal.prototype, "templateId", 2);
1013
+ __decorateClass$1([
1014
+ property({ type: Array })
1015
+ ], DialogPortal.prototype, "questions", 2);
1016
+ __decorateClass$1([
1017
+ property({ type: String })
1018
+ ], DialogPortal.prototype, "env", 2);
1019
+ __decorateClass$1([
1020
+ property({ type: String })
1021
+ ], DialogPortal.prototype, "apiKey", 2);
1022
+ __decorateClass$1([
1023
+ property({ type: Boolean })
1024
+ ], DialogPortal.prototype, "disableTracking", 2);
1025
+ __decorateClass$1([
1026
+ property({ type: String })
1027
+ ], DialogPortal.prototype, "trackingSource", 2);
1028
+ __decorateClass$1([
1029
+ property({ type: Array })
1030
+ ], DialogPortal.prototype, "controls", 2);
1031
+ __decorateClass$1([
1032
+ property({ type: String })
1033
+ ], DialogPortal.prototype, "preload", 2);
1034
+ __decorateClass$1([
1035
+ property({ type: Boolean })
1036
+ ], DialogPortal.prototype, "disableAutoplay", 2);
1037
+ __decorateClass$1([
1038
+ property({ type: Number })
1039
+ ], DialogPortal.prototype, "aspectRatio", 2);
1040
+ __decorateClass$1([
1041
+ state()
1042
+ ], DialogPortal.prototype, "open", 2);
1043
+ DialogPortal = __decorateClass$1([
1044
+ customElement("vouch-embed-dialog-portal")
1045
+ ], DialogPortal);
1046
+ var __defProp = Object.defineProperty;
1047
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
1048
+ var __decorateClass = (decorators, target, key, kind) => {
1049
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
1050
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
1051
+ if (decorator = decorators[i])
1052
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
1053
+ if (kind && result)
1054
+ __defProp(target, key, result);
1055
+ return result;
1056
+ };
1057
+ let DialogEmbed = class extends LitElement {
1058
+ constructor() {
1059
+ super(...arguments);
1060
+ this.env = "prod";
1061
+ this.apiKey = "";
1062
+ this.disableTracking = false;
1063
+ this.trackingSource = "embedded_player";
1064
+ this.preload = "none";
1065
+ this.disableAutoplay = false;
1066
+ this.aspectRatio = 0;
1067
+ this._id = v4();
1068
+ this._handleRootClick = () => {
1069
+ this.dispatchEvent(new CustomEvent("dialogembed:click", { detail: this._id, bubbles: true, composed: true }));
1070
+ };
1071
+ }
1072
+ connectedCallback() {
1073
+ super.connectedCallback();
1074
+ this.addEventListener("click", this._handleRootClick);
1075
+ }
1076
+ disconnectedCallback() {
1077
+ super.disconnectedCallback();
1078
+ this.removeEventListener("click", this._handleRootClick);
1079
+ }
1080
+ render() {
1081
+ return html`
1082
+ <slot>
1083
+ <vmp-button size="large">Play</vmp-button>
1084
+ </slot>
1085
+ <vouch-embed-dialog-portal
1086
+ id=${this._id}
1087
+ ?autoplay=${false}
1088
+ vouchId=${ifDefined(this.vouchId)}
1089
+ templateId=${ifDefined(this.templateId)}
1090
+ .questions=${this.questions}
1091
+ .controls=${this.controls}
1092
+ env=${ifDefined(this.env)}
1093
+ apiKey=${ifDefined(this.apiKey)}
1094
+ ?disableTracking=${this.disableTracking}
1095
+ trackingSource=${ifDefined(this.trackingSource)}
1096
+ preload=${ifDefined(this.preload)}
1097
+ aspectRatio=${this.aspectRatio}
1098
+ ></vouch-embed-dialog-portal>
1099
+ `;
1100
+ }
1101
+ };
1102
+ DialogEmbed.styles = [
1103
+ css`
1104
+ :host {
1105
+ --vu-button-padding: 10px 20px;
1106
+ --vu-button-background: #287179;
1107
+ --vu-button-background-hover: #4faab2;
1108
+
1109
+ display: flex;
1110
+ width: fit-content;
1111
+ height: fit-content;
1112
+ }
1113
+ `
1114
+ ];
1115
+ __decorateClass([
1116
+ property({ type: String })
1117
+ ], DialogEmbed.prototype, "vouchId", 2);
1118
+ __decorateClass([
1119
+ property({ type: String })
1120
+ ], DialogEmbed.prototype, "templateId", 2);
1121
+ __decorateClass([
1122
+ property({ type: Array })
1123
+ ], DialogEmbed.prototype, "questions", 2);
1124
+ __decorateClass([
1125
+ property({ type: String })
1126
+ ], DialogEmbed.prototype, "env", 2);
1127
+ __decorateClass([
1128
+ property({ type: String })
1129
+ ], DialogEmbed.prototype, "apiKey", 2);
1130
+ __decorateClass([
1131
+ property({ type: Boolean })
1132
+ ], DialogEmbed.prototype, "disableTracking", 2);
1133
+ __decorateClass([
1134
+ property({ type: String })
1135
+ ], DialogEmbed.prototype, "trackingSource", 2);
1136
+ __decorateClass([
1137
+ property({ type: Array })
1138
+ ], DialogEmbed.prototype, "controls", 2);
1139
+ __decorateClass([
1140
+ property({ type: String })
1141
+ ], DialogEmbed.prototype, "preload", 2);
1142
+ __decorateClass([
1143
+ property({ type: Boolean })
1144
+ ], DialogEmbed.prototype, "disableAutoplay", 2);
1145
+ __decorateClass([
1146
+ property({ type: Number })
1147
+ ], DialogEmbed.prototype, "aspectRatio", 2);
1148
+ DialogEmbed = __decorateClass([
1149
+ customElement("vouch-embed-dialog")
1150
+ ], DialogEmbed);
1500
1151
  export {
1501
- m as Embed
1152
+ DialogEmbed,
1153
+ PlayerEmbed
1502
1154
  };
1503
1155
  //# sourceMappingURL=embeds.js.map