@vouchfor/embeds 1.4.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. package/dist/es/embeds.js +1138 -11
  2. package/dist/es/embeds.js.map +1 -1
  3. package/dist/es/src/components/DialogEmbed/DialogOverlay.d.ts +2 -1
  4. package/dist/es/src/components/DialogEmbed/DialogPortal.d.ts +2 -1
  5. package/dist/es/src/components/DialogEmbed/index.d.ts +3 -1
  6. package/dist/es/src/components/PlayerEmbed/controllers/tracking/utils.d.ts +1 -1
  7. package/dist/es/src/components/PlayerEmbed/index.d.ts +3 -2
  8. package/dist/es/src/components/PlayerEmbed/tests/data.d.ts +1 -1
  9. package/dist/iife/dialog-embed/embed.iife.js +376 -347
  10. package/dist/iife/dialog-embed/embed.iife.js.map +1 -1
  11. package/dist/iife/embeds.iife.js +375 -346
  12. package/dist/iife/embeds.iife.js.map +1 -1
  13. package/dist/iife/player-embed/embed.iife.js +335 -306
  14. package/dist/iife/player-embed/embed.iife.js.map +1 -1
  15. package/package.json +34 -30
  16. package/src/components/PlayerEmbed/PlayerEmbed.stories.ts +15 -1
  17. package/src/components/PlayerEmbed/controllers/tracking/utils.ts +1 -1
  18. package/src/components/PlayerEmbed/tests/data.ts +24 -24
  19. package/dist/es/browser-f8654733.js +0 -733
  20. package/dist/es/browser-f8654733.js.map +0 -1
  21. package/dist/es/index-65006a92.js +0 -4602
  22. package/dist/es/index-65006a92.js.map +0 -1
  23. package/dist/iife/dialog-embed/browser-b36b6e3e.js +0 -433
  24. package/dist/iife/dialog-embed/browser-b36b6e3e.js.map +0 -1
  25. package/dist/iife/dialog-embed/embed.js +0 -5
  26. package/dist/iife/dialog-embed/embed.js.map +0 -1
  27. package/dist/iife/dialog-embed/index-72887ffc.js +0 -27167
  28. package/dist/iife/dialog-embed/index-72887ffc.js.map +0 -1
  29. package/dist/iife/dialog-embed/src/components/DialogEmbed/DialogOverlay.d.ts +0 -19
  30. package/dist/iife/dialog-embed/src/components/DialogEmbed/DialogPortal.d.ts +0 -35
  31. package/dist/iife/dialog-embed/src/components/DialogEmbed/index.d.ts +0 -36
  32. package/dist/iife/dialog-embed/src/components/PlayerEmbed/controllers/event-forwarder.d.ts +0 -15
  33. package/dist/iife/dialog-embed/src/components/PlayerEmbed/controllers/fetcher.d.ts +0 -14
  34. package/dist/iife/dialog-embed/src/components/PlayerEmbed/controllers/tracking/index.d.ts +0 -36
  35. package/dist/iife/dialog-embed/src/components/PlayerEmbed/controllers/tracking/utils.d.ts +0 -17
  36. package/dist/iife/dialog-embed/src/components/PlayerEmbed/index.d.ts +0 -73
  37. package/dist/iife/dialog-embed/src/components/PlayerEmbed/tests/data.d.ts +0 -3
  38. package/dist/iife/dialog-embed/src/index.d.ts +0 -2
  39. package/dist/iife/dialog-embed/src/utils/env.d.ts +0 -12
  40. package/dist/iife/dialog-embed/src/utils/events.d.ts +0 -2
  41. package/dist/iife/player-embed/browser-69a47b14.js +0 -433
  42. package/dist/iife/player-embed/browser-69a47b14.js.map +0 -1
  43. package/dist/iife/player-embed/embed.js +0 -5
  44. package/dist/iife/player-embed/embed.js.map +0 -1
  45. package/dist/iife/player-embed/index-854590ba.js +0 -26722
  46. package/dist/iife/player-embed/index-854590ba.js.map +0 -1
  47. package/dist/iife/player-embed/src/components/DialogEmbed/DialogOverlay.d.ts +0 -19
  48. package/dist/iife/player-embed/src/components/DialogEmbed/DialogPortal.d.ts +0 -35
  49. package/dist/iife/player-embed/src/components/DialogEmbed/index.d.ts +0 -36
  50. package/dist/iife/player-embed/src/components/PlayerEmbed/controllers/event-forwarder.d.ts +0 -15
  51. package/dist/iife/player-embed/src/components/PlayerEmbed/controllers/fetcher.d.ts +0 -14
  52. package/dist/iife/player-embed/src/components/PlayerEmbed/controllers/tracking/index.d.ts +0 -36
  53. package/dist/iife/player-embed/src/components/PlayerEmbed/controllers/tracking/utils.d.ts +0 -17
  54. package/dist/iife/player-embed/src/components/PlayerEmbed/index.d.ts +0 -73
  55. package/dist/iife/player-embed/src/components/PlayerEmbed/tests/data.d.ts +0 -3
  56. package/dist/iife/player-embed/src/index.d.ts +0 -2
  57. package/dist/iife/player-embed/src/utils/env.d.ts +0 -12
  58. package/dist/iife/player-embed/src/utils/events.d.ts +0 -2
package/dist/es/embeds.js CHANGED
@@ -1,16 +1,1143 @@
1
- import { D, P } from "./index-65006a92.js";
2
- import "lit";
3
- import "lit/decorators.js";
4
- import "lit/directives/if-defined.js";
5
- import "lit/directives/ref.js";
6
- import "@lit/task";
7
- import "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";
8
8
  import "@vouchfor/media-player";
9
- import "lit/directives/style-map.js";
10
- import "lit/directives/class-map.js";
9
+ import { styleMap } from "lit/directives/style-map.js";
10
+ import { classMap } from "lit/directives/class-map.js";
11
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);
19
+ };
20
+ }
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);
29
+ }
30
+ register() {
31
+ return ref(this._forwardElementRef);
32
+ }
33
+ hostConnected() {
34
+ requestAnimationFrame(() => {
35
+ this._events.forEach((event) => {
36
+ if (this._forwardElementRef.value) {
37
+ this._cleanup.push(forwardEvent(event, this._forwardElementRef.value, this.host));
38
+ }
39
+ });
40
+ });
41
+ }
42
+ hostDisconnected() {
43
+ this._cleanup.forEach((fn) => {
44
+ fn();
45
+ });
46
+ this._cleanup = [];
47
+ }
48
+ }
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") {
64
+ return {
65
+ videoUrl: devVideoUrl,
66
+ publicApiUrl: devPublicApiUrl,
67
+ embedApiUrl: localEmbedApiUrl
68
+ };
69
+ }
70
+ if (env === "dev") {
71
+ return {
72
+ videoUrl: devVideoUrl,
73
+ publicApiUrl: devPublicApiUrl,
74
+ embedApiUrl: devEmbedApiUrl
75
+ };
76
+ }
77
+ if (env === "staging") {
78
+ return {
79
+ videoUrl: stagingVideoUrl,
80
+ publicApiUrl: stagingPublicApiUrl,
81
+ embedApiUrl: stagingEmbedApiUrl
82
+ };
83
+ }
84
+ if (env === "prod") {
85
+ return {
86
+ videoUrl: prodVideoUrl,
87
+ publicApiUrl: prodPublicApiUrl,
88
+ embedApiUrl: prodEmbedApiUrl
89
+ };
90
+ }
91
+ }
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}`, {
100
+ method: "GET",
101
+ headers: [
102
+ ["X-Api-Key", apiKey],
103
+ ["X-Cache-Check", cacheCheck]
104
+ ]
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}`, {
125
+ method: "GET",
126
+ headers: [
127
+ ["X-Api-Key", apiKey],
128
+ ["X-Cache-Check", cacheCheck]
129
+ ]
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(
146
+ this.host,
147
+ async ([env, apiKey, data, vouchId, templateId]) => {
148
+ var _a, _b, _c, _d;
149
+ try {
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
165
+ ]);
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);
168
+ }
169
+ } finally {
170
+ this.fetching = false;
171
+ }
172
+ },
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]
186
+ );
187
+ }
188
+ set fetching(value) {
189
+ if (this._fetching !== value) {
190
+ this._fetching = value;
191
+ this.host.requestUpdate();
192
+ }
193
+ }
194
+ get fetching() {
195
+ return this._fetching;
196
+ }
197
+ }
198
+ const name = "@vouchfor/embeds";
199
+ const version = "2.0.1";
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: "latest",
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
+ };
237
+ const dependencies = {
238
+ "@a11y/focus-trap": "^1.0.5",
239
+ "@lit/task": "^1.0.0",
240
+ "@vouchfor/canvas-video": "^8.0.0",
241
+ "@vouchfor/media-player": "^3.0.1",
242
+ uuid: "^9.0.1"
243
+ };
244
+ const peerDependencies = {
245
+ lit: "^3.1.2"
246
+ };
247
+ const devDependencies = {
248
+ "@esm-bundle/chai": "^4.3.4-fix.0",
249
+ "@open-wc/testing": "^4.0.0",
250
+ "@storybook/addon-essentials": "^8.0.4",
251
+ "@storybook/addon-links": "^8.0.4",
252
+ "@storybook/blocks": "^8.0.4",
253
+ "@storybook/web-components": "^8.0.4",
254
+ "@storybook/web-components-vite": "^8.0.4",
255
+ "@svgr/core": "^8.1.0",
256
+ "@types/flat": "^5.0.5",
257
+ "@types/mocha": "^10.0.6",
258
+ "@vouchfor/eslint-config": "^1.0.1",
259
+ "@vouchfor/prettier-config": "^1.0.1",
260
+ "@vouchfor/video-utils": "^1.0.1",
261
+ "@web/dev-server-esbuild": "^1.0.2",
262
+ "@web/test-runner": "^0.18.1",
263
+ "@web/test-runner-browserstack": "^0.7.1",
264
+ "@web/test-runner-mocha": "^0.9.0",
265
+ "@web/test-runner-playwright": "^0.11.0",
266
+ glob: "^10.3.10",
267
+ "lint-staged": "^15.2.2",
268
+ lit: "^3.1.2",
269
+ lodash: "^4.17.21",
270
+ react: "^18.2.0",
271
+ "react-dom": "^18.2.0",
272
+ "rollup-plugin-tla": "^0.0.2",
273
+ sinon: "^17.0.1",
274
+ storybook: "^8.0.4",
275
+ svgson: "^5.3.1",
276
+ typescript: "^5.4.3",
277
+ vite: "^5.2.2",
278
+ "vite-plugin-commonjs": "^0.10.1",
279
+ "vite-plugin-dts": "^3.7.3",
280
+ "web-component-analyzer": "^2.0.0"
281
+ };
282
+ const packageJson = {
283
+ name,
284
+ version,
285
+ license,
286
+ author,
287
+ main,
288
+ module,
289
+ type,
290
+ types,
291
+ exports,
292
+ files,
293
+ publishConfig,
294
+ engines,
295
+ scripts,
296
+ "lint-staged": {
297
+ "**/*.{ts,tsx,js}": "eslint --fix --quiet",
298
+ "**/*.{md,json,yml}": "prettier --write"
299
+ },
300
+ dependencies,
301
+ peerDependencies,
302
+ devDependencies
303
+ };
304
+ function createVisitor(env) {
305
+ const { publicApiUrl } = getEnvUrls(env);
306
+ const visitorId = v4();
307
+ navigator.sendBeacon(`${publicApiUrl}/api/visitor`, JSON.stringify({ visitorId }));
308
+ return visitorId;
309
+ }
310
+ function getUids(env) {
311
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
312
+ if (typeof window === "undefined") {
313
+ return {
314
+ client: null,
315
+ tab: null,
316
+ request: v4()
317
+ };
318
+ }
319
+ let visitorId = (_b = (_a = window.localStorage) == null ? void 0 : _a.getItem) == null ? void 0 : _b.call(_a, "vouch-uid-visitor");
320
+ let clientId = (_d = (_c = window.localStorage) == null ? void 0 : _c.getItem) == null ? void 0 : _d.call(_c, "vouch-uid-client");
321
+ let tabId = (_f = (_e = window.sessionStorage) == null ? void 0 : _e.getItem) == null ? void 0 : _f.call(_e, "vouch-uid-tab");
322
+ const requestId = v4();
323
+ if (!visitorId) {
324
+ visitorId = createVisitor(env);
325
+ (_h = (_g = window.localStorage) == null ? void 0 : _g.setItem) == null ? void 0 : _h.call(_g, "vouch-uid-visitor", visitorId);
326
+ }
327
+ if (!clientId) {
328
+ clientId = v4();
329
+ (_j = (_i = window.localStorage) == null ? void 0 : _i.setItem) == null ? void 0 : _j.call(_i, "vouch-uid-client", clientId);
330
+ }
331
+ if (!tabId) {
332
+ tabId = v4();
333
+ (_l = (_k = window.sessionStorage) == null ? void 0 : _k.setItem) == null ? void 0 : _l.call(_k, "vouch-uid-tab", tabId);
334
+ }
335
+ return {
336
+ client: clientId,
337
+ tab: tabId,
338
+ request: requestId,
339
+ visitor: visitorId
340
+ };
341
+ }
342
+ function findVouchId(payload, vouch) {
343
+ if (payload && "vouchId" in payload) {
344
+ return payload.vouchId;
345
+ }
346
+ return (vouch == null ? void 0 : vouch.id) ?? null;
347
+ }
348
+ function getReportingMetadata(source = "embedded_player") {
349
+ var _a, _b;
350
+ const [country, region] = ((_b = (_a = Intl.DateTimeFormat().resolvedOptions().timeZone) == null ? void 0 : _a.split) == null ? void 0 : _b.call(_a, "/")) ?? [];
351
+ const utmParams = {};
352
+ [...new URLSearchParams(location.search).entries()].forEach(([key, value]) => {
353
+ if (/utm/.test(key)) {
354
+ const param = key.toLowerCase().replace(/[-_][a-z0-9]/g, (group) => group.slice(-1).toUpperCase());
355
+ utmParams[param] = value;
356
+ }
357
+ });
358
+ return {
359
+ source,
360
+ time: /* @__PURE__ */ new Date(),
361
+ region,
362
+ country,
363
+ screenHeight: window.screen.height,
364
+ screenWidth: window.screen.width,
365
+ referrer: document.referrer,
366
+ currentUrl: location.href,
367
+ embedType: "media-player-embed",
368
+ embedVersion: packageJson.version,
369
+ templateVersion: TEMPLATE_VERSION,
370
+ ...utmParams
371
+ };
372
+ }
373
+ const MINIMUM_SEND_THRESHOLD = 1;
374
+ class TrackingController {
375
+ constructor(host) {
376
+ this._batchedEvents = [];
377
+ this._hasPlayed = false;
378
+ this._hasLoaded = {};
379
+ this._answersViewed = {};
380
+ this._streamStartTime = {};
381
+ this._streamLatestTime = {};
382
+ this._currentlyPlayingVideo = null;
383
+ this._createTrackingEvent = (event, payload) => {
384
+ const vouchId = findVouchId(payload, this.host.vouch);
385
+ if (!vouchId || this.host.disableTracking) {
386
+ return;
387
+ }
388
+ this._batchedEvents.push({
389
+ event,
390
+ payload: {
391
+ ...payload,
392
+ vouchId,
393
+ time: (/* @__PURE__ */ new Date()).toISOString()
394
+ }
395
+ });
396
+ };
397
+ this._sendTrackingEvent = () => {
398
+ if (this._batchedEvents.length <= 0) {
399
+ return;
400
+ }
401
+ const { publicApiUrl } = getEnvUrls(this.host.env);
402
+ const { client, tab, request, visitor } = getUids(this.host.env);
403
+ navigator.sendBeacon(
404
+ `${publicApiUrl}/api/batchevents`,
405
+ JSON.stringify({
406
+ payload: {
407
+ events: this._batchedEvents
408
+ },
409
+ context: {
410
+ "x-uid-client": client,
411
+ "x-uid-tab": tab,
412
+ "x-uid-request": request,
413
+ "x-uid-visitor": visitor,
414
+ "x-reporting-metadata": getReportingMetadata(this.host.trackingSource)
415
+ }
416
+ })
417
+ );
418
+ this._batchedEvents = [];
419
+ };
420
+ this._streamEnded = () => {
421
+ if (this._currentlyPlayingVideo) {
422
+ const { id, key } = this._currentlyPlayingVideo;
423
+ if (this._streamLatestTime[key] > this._streamStartTime[key] + MINIMUM_SEND_THRESHOLD) {
424
+ this._createTrackingEvent("VIDEO_STREAMED", {
425
+ answerId: id,
426
+ streamStart: this._streamStartTime[key],
427
+ streamEnd: this._streamLatestTime[key]
428
+ });
429
+ }
430
+ delete this._streamStartTime[key];
431
+ delete this._streamLatestTime[key];
432
+ }
433
+ };
434
+ this._handleVouchLoaded = ({ detail: vouchId }) => {
435
+ if (!vouchId) {
436
+ return;
437
+ }
438
+ if (!this._hasLoaded[vouchId]) {
439
+ this._createTrackingEvent("VOUCH_LOADED", { vouchId });
440
+ this._hasLoaded[vouchId] = true;
441
+ }
442
+ };
443
+ this._handlePlay = () => {
444
+ if (!this._hasPlayed) {
445
+ this._createTrackingEvent("VIDEO_PLAYED", {
446
+ streamStart: this.host.currentTime
447
+ });
448
+ this._hasPlayed = true;
449
+ }
450
+ };
451
+ this._handleVideoPlay = ({ detail: { id, key } }) => {
452
+ if (!this._answersViewed[key]) {
453
+ this._createTrackingEvent("VOUCH_RESPONSE_VIEWED", {
454
+ answerId: id
455
+ });
456
+ this._answersViewed[key] = true;
457
+ }
458
+ };
459
+ this._handleVideoTimeUpdate = ({ detail: { id, key, node } }) => {
460
+ var _a, _b;
461
+ if (
462
+ // We only want to count any time that the video is actually playing
463
+ !this.host.paused && // Only update the latest time if this event fires for the currently active video
464
+ id === ((_b = (_a = this.host.scene) == null ? void 0 : _a.video) == null ? void 0 : _b.id)
465
+ ) {
466
+ this._currentlyPlayingVideo = { id, key, node };
467
+ this._streamLatestTime[key] = node.currentTime;
468
+ if (!this._streamStartTime[key]) {
469
+ this._streamStartTime[key] = node.currentTime;
470
+ this._streamLatestTime[key] = node.currentTime;
471
+ }
472
+ }
473
+ };
474
+ this._handleVideoPause = ({ detail: { id, key } }) => {
475
+ if (this._streamLatestTime[key] > this._streamStartTime[key] + MINIMUM_SEND_THRESHOLD) {
476
+ this._createTrackingEvent("VIDEO_STREAMED", {
477
+ answerId: id,
478
+ streamStart: this._streamStartTime[key],
479
+ streamEnd: this._streamLatestTime[key]
480
+ });
481
+ }
482
+ delete this._streamStartTime[key];
483
+ delete this._streamLatestTime[key];
484
+ };
485
+ this._pageUnloading = () => {
486
+ this._streamEnded();
487
+ this._sendTrackingEvent();
488
+ };
489
+ this._handleVisibilityChange = () => {
490
+ if (document.visibilityState === "hidden") {
491
+ this._pageUnloading();
492
+ }
493
+ };
494
+ this._handlePageHide = () => {
495
+ this._pageUnloading();
496
+ };
497
+ this.host = host;
498
+ host.addController(this);
499
+ }
500
+ hostConnected() {
501
+ requestAnimationFrame(() => {
502
+ var _a, _b, _c, _d;
503
+ if ("onvisibilitychange" in document) {
504
+ document.addEventListener("visibilitychange", this._handleVisibilityChange);
505
+ } else {
506
+ window.addEventListener("pagehide", this._handlePageHide);
507
+ }
508
+ this.host.addEventListener("vouch:loaded", this._handleVouchLoaded);
509
+ (_a = this.host.mediaPlayer) == null ? void 0 : _a.addEventListener("play", this._handlePlay);
510
+ (_b = this.host.mediaPlayer) == null ? void 0 : _b.addEventListener("video:play", this._handleVideoPlay);
511
+ (_c = this.host.mediaPlayer) == null ? void 0 : _c.addEventListener("video:pause", this._handleVideoPause);
512
+ (_d = this.host.mediaPlayer) == null ? void 0 : _d.addEventListener("video:timeupdate", this._handleVideoTimeUpdate);
513
+ });
514
+ }
515
+ hostDisconnected() {
516
+ var _a, _b, _c, _d;
517
+ this._pageUnloading();
518
+ if ("onvisibilitychange" in document) {
519
+ document.removeEventListener("visibilitychange", this._handleVisibilityChange);
520
+ } else {
521
+ window.removeEventListener("pagehide", this._handlePageHide);
522
+ }
523
+ this.host.removeEventListener("vouch:loaded", this._handleVouchLoaded);
524
+ (_a = this.host.mediaPlayer) == null ? void 0 : _a.removeEventListener("play", this._handlePlay);
525
+ (_b = this.host.mediaPlayer) == null ? void 0 : _b.removeEventListener("video:play", this._handleVideoPlay);
526
+ (_c = this.host.mediaPlayer) == null ? void 0 : _c.removeEventListener("video:pause", this._handleVideoPause);
527
+ (_d = this.host.mediaPlayer) == null ? void 0 : _d.removeEventListener("video:timeupdate", this._handleVideoTimeUpdate);
528
+ }
529
+ }
530
+ var __defProp$3 = Object.defineProperty;
531
+ var __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor;
532
+ var __decorateClass$3 = (decorators, target, key, kind) => {
533
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$3(target, key) : target;
534
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
535
+ if (decorator = decorators[i])
536
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
537
+ if (kind && result)
538
+ __defProp$3(target, key, result);
539
+ return result;
540
+ };
541
+ let PlayerEmbed = class extends LitElement {
542
+ constructor() {
543
+ super(...arguments);
544
+ this.env = "prod";
545
+ this.apiKey = "";
546
+ this.disableTracking = false;
547
+ this.trackingSource = "embedded_player";
548
+ this.preload = "auto";
549
+ this.autoplay = false;
550
+ this.aspectRatio = 0;
551
+ this.eventController = new EventForwardController(this, [
552
+ "durationchange",
553
+ "ended",
554
+ "error",
555
+ "loadeddata",
556
+ "pause",
557
+ "stalled",
558
+ "play",
559
+ "playing",
560
+ "ratechange",
561
+ "scenechange",
562
+ "seeking",
563
+ "seeked",
564
+ "timeupdate",
565
+ "volumechange",
566
+ "waiting",
567
+ "video:loadeddata",
568
+ "video:seeking",
569
+ "video:seeked",
570
+ "video:play",
571
+ "video:playing",
572
+ "video:pause",
573
+ "video:stalled",
574
+ "video:timeupdate",
575
+ "video:ended",
576
+ "video:error"
577
+ ]);
578
+ this._fetcherController = new FetcherController(this);
579
+ this._trackingController = new TrackingController(this);
580
+ this._mediaPlayerRef = createRef();
581
+ }
582
+ get fetching() {
583
+ return this._fetcherController.fetching;
584
+ }
585
+ get waiting() {
586
+ var _a;
587
+ return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.waiting;
588
+ }
589
+ get initialised() {
590
+ var _a;
591
+ return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.initialised;
592
+ }
593
+ get seeking() {
594
+ var _a;
595
+ return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.seeking;
596
+ }
597
+ get paused() {
598
+ var _a;
599
+ return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.paused;
600
+ }
601
+ get captions() {
602
+ var _a;
603
+ return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.captions;
604
+ }
605
+ get fullscreen() {
606
+ var _a;
607
+ return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.fullscreen;
608
+ }
609
+ get duration() {
610
+ var _a;
611
+ return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.duration;
612
+ }
613
+ set currentTime(value) {
614
+ if (this._mediaPlayerRef.value) {
615
+ this._mediaPlayerRef.value.currentTime = value;
616
+ }
617
+ }
618
+ get currentTime() {
619
+ var _a;
620
+ return ((_a = this._mediaPlayerRef.value) == null ? void 0 : _a.currentTime) ?? 0;
621
+ }
622
+ set playbackRate(value) {
623
+ if (this._mediaPlayerRef.value) {
624
+ this._mediaPlayerRef.value.playbackRate = value;
625
+ }
626
+ }
627
+ get playbackRate() {
628
+ var _a;
629
+ return ((_a = this._mediaPlayerRef.value) == null ? void 0 : _a.playbackRate) ?? 1;
630
+ }
631
+ set volume(value) {
632
+ if (this._mediaPlayerRef.value) {
633
+ this._mediaPlayerRef.value.volume = value;
634
+ }
635
+ }
636
+ get volume() {
637
+ var _a;
638
+ return ((_a = this._mediaPlayerRef.value) == null ? void 0 : _a.volume) ?? 1;
639
+ }
640
+ set muted(value) {
641
+ if (this._mediaPlayerRef.value) {
642
+ this._mediaPlayerRef.value.muted = value;
643
+ }
644
+ }
645
+ get muted() {
646
+ var _a;
647
+ return ((_a = this._mediaPlayerRef.value) == null ? void 0 : _a.muted) ?? false;
648
+ }
649
+ get scene() {
650
+ var _a;
651
+ return ((_a = this._mediaPlayerRef.value) == null ? void 0 : _a.scene) ?? null;
652
+ }
653
+ get scenes() {
654
+ var _a;
655
+ return ((_a = this._mediaPlayerRef.value) == null ? void 0 : _a.scenes) ?? [];
656
+ }
657
+ get sceneConfig() {
658
+ var _a;
659
+ return ((_a = this._mediaPlayerRef.value) == null ? void 0 : _a.sceneConfig) ?? null;
660
+ }
661
+ get videoState() {
662
+ var _a;
663
+ return (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.videoState;
664
+ }
665
+ get mediaPlayer() {
666
+ return this._mediaPlayerRef.value;
667
+ }
668
+ play() {
669
+ var _a;
670
+ (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.play();
671
+ }
672
+ pause() {
673
+ var _a;
674
+ (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.pause();
675
+ }
676
+ reset(time = 0, play = false) {
677
+ var _a;
678
+ (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.reset(time, play);
679
+ }
680
+ setScene(index) {
681
+ var _a;
682
+ (_a = this._mediaPlayerRef.value) == null ? void 0 : _a.setScene(index);
683
+ }
684
+ _renderStyles() {
685
+ if (!this.aspectRatio) {
686
+ return html`
687
+ <style>
688
+ :host {
689
+ width: 100%;
690
+ height: 100%;
691
+ }
692
+ </style>
693
+ `;
694
+ }
695
+ if (typeof this.aspectRatio === "number") {
696
+ return html`
697
+ <style>
698
+ :host {
699
+ aspect-ratio: ${this.aspectRatio};
700
+ }
701
+ </style>
702
+ `;
703
+ }
704
+ return null;
705
+ }
706
+ render() {
707
+ return html`
708
+ ${this._renderStyles()}
709
+ <vmp-media-player
710
+ ${ref(this._mediaPlayerRef)}
711
+ ${this.eventController.register()}
712
+ ?autoplay=${this.autoplay}
713
+ ?loading=${this.fetching}
714
+ .data=${this.vouch}
715
+ .template=${this.template}
716
+ aspectRatio=${ifDefined(this.aspectRatio)}
717
+ preload=${ifDefined(this.preload)}
718
+ .controls=${this.controls}
719
+ ></vmp-media-player>
720
+ `;
721
+ }
722
+ };
723
+ PlayerEmbed.styles = [
724
+ css`
725
+ :host {
726
+ display: flex;
727
+ }
728
+ `
729
+ ];
730
+ __decorateClass$3([
731
+ property({ type: Object })
732
+ ], PlayerEmbed.prototype, "data", 2);
733
+ __decorateClass$3([
734
+ property({ type: String })
735
+ ], PlayerEmbed.prototype, "vouchId", 2);
736
+ __decorateClass$3([
737
+ property({ type: String })
738
+ ], PlayerEmbed.prototype, "templateId", 2);
739
+ __decorateClass$3([
740
+ property({ type: Array })
741
+ ], PlayerEmbed.prototype, "questions", 2);
742
+ __decorateClass$3([
743
+ property({ type: String })
744
+ ], PlayerEmbed.prototype, "env", 2);
745
+ __decorateClass$3([
746
+ property({ type: String })
747
+ ], PlayerEmbed.prototype, "apiKey", 2);
748
+ __decorateClass$3([
749
+ property({ type: Boolean })
750
+ ], PlayerEmbed.prototype, "disableTracking", 2);
751
+ __decorateClass$3([
752
+ property({ type: String })
753
+ ], PlayerEmbed.prototype, "trackingSource", 2);
754
+ __decorateClass$3([
755
+ property({ type: Array })
756
+ ], PlayerEmbed.prototype, "controls", 2);
757
+ __decorateClass$3([
758
+ property({ type: String })
759
+ ], PlayerEmbed.prototype, "preload", 2);
760
+ __decorateClass$3([
761
+ property({ type: Boolean })
762
+ ], PlayerEmbed.prototype, "autoplay", 2);
763
+ __decorateClass$3([
764
+ property({ type: Number })
765
+ ], PlayerEmbed.prototype, "aspectRatio", 2);
766
+ __decorateClass$3([
767
+ state()
768
+ ], PlayerEmbed.prototype, "vouch", 2);
769
+ __decorateClass$3([
770
+ state()
771
+ ], PlayerEmbed.prototype, "template", 2);
772
+ PlayerEmbed = __decorateClass$3([
773
+ customElement("vouch-embed-player")
774
+ ], PlayerEmbed);
775
+ var __defProp$2 = Object.defineProperty;
776
+ var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;
777
+ var __decorateClass$2 = (decorators, target, key, kind) => {
778
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target;
779
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
780
+ if (decorator = decorators[i])
781
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
782
+ if (kind && result)
783
+ __defProp$2(target, key, result);
784
+ return result;
785
+ };
786
+ let DialogOverlay = class extends LitElement {
787
+ constructor() {
788
+ super(...arguments);
789
+ this.open = false;
790
+ this.aspectRatio = 0;
791
+ }
792
+ render() {
793
+ return html`
794
+ <div
795
+ class=${classMap({
796
+ container: true,
797
+ hidden: !this.open
798
+ })}
799
+ >
800
+ <div
801
+ class="background"
802
+ @click=${() => this.dispatchEvent(new CustomEvent("overlay:click", { bubbles: true, composed: true }))}
803
+ ></div>
804
+ <focus-trap>
805
+ <div
806
+ class=${classMap({
807
+ "video-frame": true,
808
+ grow: this.aspectRatio === 0
809
+ })}
810
+ style=${styleMap({
811
+ aspectRatio: this.aspectRatio
812
+ })}
813
+ >
814
+ <slot></slot>
815
+ <vmp-icon-button
816
+ icon="close"
817
+ rounded="full"
818
+ weight="heavy"
819
+ @click=${() => this.dispatchEvent(new CustomEvent("close:click", { bubbles: true, composed: true }))}
820
+ ></vmp-icon-button>
821
+ </div>
822
+ </focus-trap>
823
+ </div>
824
+ `;
825
+ }
826
+ };
827
+ DialogOverlay.styles = [
828
+ css`
829
+ :host {
830
+ --vouch-media-player-border-radius: var(--vu-media-player-border-radius, 12px);
831
+ --overlay-background-color: var(--vu-overlay-background-color, black);
832
+ --overlay-background-opacity: var(--vu-overlay-background-opacity, 0.4);
833
+
834
+ --dialog-width: var(--vu-dialog-width, 890px);
835
+ --dialog-height: var(--vu-dialog-height, 500px);
836
+ }
837
+
838
+ .container {
839
+ position: fixed;
840
+ display: flex;
841
+ inset: 0;
842
+ opacity: 1;
843
+ z-index: 2147483647;
844
+ align-items: center;
845
+ justify-content: center;
846
+ transition: opacity 100ms ease-in;
847
+ }
848
+
849
+ .hidden {
850
+ opacity: 0;
851
+ pointer-events: none;
852
+ }
853
+
854
+ .background {
855
+ position: absolute;
856
+ inset: 0;
857
+ opacity: var(--overlay-background-opacity);
858
+ background-color: var(--overlay-background-color);
859
+ }
860
+
861
+ focus-trap {
862
+ display: flex;
863
+ align-items: center;
864
+ justify-content: center;
865
+ margin: 40px;
866
+ width: var(--dialog-width);
867
+ height: var(--dialog-height);
868
+ max-width: calc(100% - 80px);
869
+ max-height: calc(100% - 80px);
870
+ }
871
+
872
+ .video-frame {
873
+ position: relative;
874
+ display: flex;
875
+ align-items: center;
876
+ justify-content: center;
877
+ max-width: 100%;
878
+ max-height: 100%;
879
+ }
880
+
881
+ .video-frame.grow {
882
+ width: 100%;
883
+ height: 100%;
884
+ }
885
+
886
+ vmp-icon-button {
887
+ position: absolute;
888
+ top: 0;
889
+ right: 0;
890
+ margin: 10px;
891
+ }
892
+ `
893
+ ];
894
+ __decorateClass$2([
895
+ property({ type: Boolean })
896
+ ], DialogOverlay.prototype, "open", 2);
897
+ __decorateClass$2([
898
+ property({ type: Number })
899
+ ], DialogOverlay.prototype, "aspectRatio", 2);
900
+ DialogOverlay = __decorateClass$2([
901
+ customElement("vouch-embed-dialog-overlay")
902
+ ], DialogOverlay);
903
+ var __defProp$1 = Object.defineProperty;
904
+ var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
905
+ var __decorateClass$1 = (decorators, target, key, kind) => {
906
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target;
907
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
908
+ if (decorator = decorators[i])
909
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
910
+ if (kind && result)
911
+ __defProp$1(target, key, result);
912
+ return result;
913
+ };
914
+ let DialogPortal = class extends LitElement {
915
+ constructor() {
916
+ super(...arguments);
917
+ this.env = "prod";
918
+ this.apiKey = "";
919
+ this.disableTracking = false;
920
+ this.trackingSource = "embedded_player";
921
+ this.preload = "none";
922
+ this.disableAutoplay = false;
923
+ this.aspectRatio = 0;
924
+ this._mediaPlayerRef = createRef();
925
+ this.open = false;
926
+ this._handleToggle = ({ detail }) => {
927
+ var _a, _b, _c;
928
+ if (this.id === detail) {
929
+ this.open = !this.open;
930
+ if (this.open) {
931
+ if (!this.disableAutoplay && ((_a = this._mediaPlayerRef) == null ? void 0 : _a.value)) {
932
+ this._mediaPlayerRef.value.muted = false;
933
+ this._mediaPlayerRef.value.play();
934
+ }
935
+ } else {
936
+ (_c = (_b = this._mediaPlayerRef) == null ? void 0 : _b.value) == null ? void 0 : _c.pause();
937
+ }
938
+ }
939
+ };
940
+ this._handleClose = () => {
941
+ var _a, _b;
942
+ this.open = false;
943
+ (_b = (_a = this._mediaPlayerRef) == null ? void 0 : _a.value) == null ? void 0 : _b.pause();
944
+ };
945
+ this._handleDocumentKeyUp = (e) => {
946
+ if (e.key === "Escape") {
947
+ this._handleClose();
948
+ }
949
+ };
950
+ }
951
+ connectedCallback() {
952
+ super.connectedCallback();
953
+ document.addEventListener("dialogembed:click", this._handleToggle);
954
+ document.addEventListener("keyup", this._handleDocumentKeyUp);
955
+ document.addEventListener("close:click", this._handleClose);
956
+ document.addEventListener("overlay:click", this._handleClose);
957
+ }
958
+ disconnectedCallback() {
959
+ super.disconnectedCallback();
960
+ document.removeEventListener("dialogembed:click", this._handleToggle);
961
+ document.removeEventListener("keyup", this._handleDocumentKeyUp);
962
+ document.removeEventListener("close:click", this._handleClose);
963
+ document.removeEventListener("overlay:click", this._handleClose);
964
+ }
965
+ createRenderRoot() {
966
+ const newNode = document.createElement("div");
967
+ document.body.appendChild(newNode);
968
+ return newNode;
969
+ }
970
+ render() {
971
+ return html`
972
+ <vouch-embed-dialog-overlay ?open=${this.open} aspectRatio=${this.aspectRatio}>
973
+ <vouch-embed-player
974
+ ${ref(this._mediaPlayerRef)}
975
+ style=${styleMap({
976
+ maxWidth: "100%",
977
+ maxHeight: "100%"
978
+ })}
979
+ ?autoplay=${false}
980
+ vouchId=${ifDefined(this.vouchId)}
981
+ templateId=${ifDefined(this.templateId)}
982
+ .questions=${this.questions}
983
+ .controls=${this.controls}
984
+ env=${ifDefined(this.env)}
985
+ apiKey=${ifDefined(this.apiKey)}
986
+ ?disableTracking=${this.disableTracking}
987
+ trackingSource=${ifDefined(this.trackingSource)}
988
+ preload=${ifDefined(this.preload)}
989
+ aspectRatio=${this.aspectRatio}
990
+ ></vouch-embed-player>
991
+ </vouch-embed-dialog-overlay>
992
+ `;
993
+ }
994
+ };
995
+ __decorateClass$1([
996
+ property({ type: String })
997
+ ], DialogPortal.prototype, "vouchId", 2);
998
+ __decorateClass$1([
999
+ property({ type: String })
1000
+ ], DialogPortal.prototype, "templateId", 2);
1001
+ __decorateClass$1([
1002
+ property({ type: Array })
1003
+ ], DialogPortal.prototype, "questions", 2);
1004
+ __decorateClass$1([
1005
+ property({ type: String })
1006
+ ], DialogPortal.prototype, "env", 2);
1007
+ __decorateClass$1([
1008
+ property({ type: String })
1009
+ ], DialogPortal.prototype, "apiKey", 2);
1010
+ __decorateClass$1([
1011
+ property({ type: Boolean })
1012
+ ], DialogPortal.prototype, "disableTracking", 2);
1013
+ __decorateClass$1([
1014
+ property({ type: String })
1015
+ ], DialogPortal.prototype, "trackingSource", 2);
1016
+ __decorateClass$1([
1017
+ property({ type: Array })
1018
+ ], DialogPortal.prototype, "controls", 2);
1019
+ __decorateClass$1([
1020
+ property({ type: String })
1021
+ ], DialogPortal.prototype, "preload", 2);
1022
+ __decorateClass$1([
1023
+ property({ type: Boolean })
1024
+ ], DialogPortal.prototype, "disableAutoplay", 2);
1025
+ __decorateClass$1([
1026
+ property({ type: Number })
1027
+ ], DialogPortal.prototype, "aspectRatio", 2);
1028
+ __decorateClass$1([
1029
+ state()
1030
+ ], DialogPortal.prototype, "open", 2);
1031
+ DialogPortal = __decorateClass$1([
1032
+ customElement("vouch-embed-dialog-portal")
1033
+ ], DialogPortal);
1034
+ var __defProp = Object.defineProperty;
1035
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
1036
+ var __decorateClass = (decorators, target, key, kind) => {
1037
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
1038
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
1039
+ if (decorator = decorators[i])
1040
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
1041
+ if (kind && result)
1042
+ __defProp(target, key, result);
1043
+ return result;
1044
+ };
1045
+ let DialogEmbed = class extends LitElement {
1046
+ constructor() {
1047
+ super(...arguments);
1048
+ this.env = "prod";
1049
+ this.apiKey = "";
1050
+ this.disableTracking = false;
1051
+ this.trackingSource = "embedded_player";
1052
+ this.preload = "none";
1053
+ this.disableAutoplay = false;
1054
+ this.aspectRatio = 0;
1055
+ this._id = v4();
1056
+ this._handleRootClick = () => {
1057
+ this.dispatchEvent(new CustomEvent("dialogembed:click", { detail: this._id, bubbles: true, composed: true }));
1058
+ };
1059
+ }
1060
+ connectedCallback() {
1061
+ super.connectedCallback();
1062
+ this.addEventListener("click", this._handleRootClick);
1063
+ }
1064
+ disconnectedCallback() {
1065
+ super.disconnectedCallback();
1066
+ this.removeEventListener("click", this._handleRootClick);
1067
+ }
1068
+ render() {
1069
+ return html`
1070
+ <slot>
1071
+ <vmp-button size="large">Play</vmp-button>
1072
+ </slot>
1073
+ <vouch-embed-dialog-portal
1074
+ id=${this._id}
1075
+ ?autoplay=${false}
1076
+ vouchId=${ifDefined(this.vouchId)}
1077
+ templateId=${ifDefined(this.templateId)}
1078
+ .questions=${this.questions}
1079
+ .controls=${this.controls}
1080
+ env=${ifDefined(this.env)}
1081
+ apiKey=${ifDefined(this.apiKey)}
1082
+ ?disableTracking=${this.disableTracking}
1083
+ trackingSource=${ifDefined(this.trackingSource)}
1084
+ preload=${ifDefined(this.preload)}
1085
+ aspectRatio=${this.aspectRatio}
1086
+ ></vouch-embed-dialog-portal>
1087
+ `;
1088
+ }
1089
+ };
1090
+ DialogEmbed.styles = [
1091
+ css`
1092
+ :host {
1093
+ --vu-button-padding: 10px 20px;
1094
+ --vu-button-background: #287179;
1095
+ --vu-button-background-hover: #4faab2;
1096
+
1097
+ display: flex;
1098
+ width: fit-content;
1099
+ height: fit-content;
1100
+ }
1101
+ `
1102
+ ];
1103
+ __decorateClass([
1104
+ property({ type: String })
1105
+ ], DialogEmbed.prototype, "vouchId", 2);
1106
+ __decorateClass([
1107
+ property({ type: String })
1108
+ ], DialogEmbed.prototype, "templateId", 2);
1109
+ __decorateClass([
1110
+ property({ type: Array })
1111
+ ], DialogEmbed.prototype, "questions", 2);
1112
+ __decorateClass([
1113
+ property({ type: String })
1114
+ ], DialogEmbed.prototype, "env", 2);
1115
+ __decorateClass([
1116
+ property({ type: String })
1117
+ ], DialogEmbed.prototype, "apiKey", 2);
1118
+ __decorateClass([
1119
+ property({ type: Boolean })
1120
+ ], DialogEmbed.prototype, "disableTracking", 2);
1121
+ __decorateClass([
1122
+ property({ type: String })
1123
+ ], DialogEmbed.prototype, "trackingSource", 2);
1124
+ __decorateClass([
1125
+ property({ type: Array })
1126
+ ], DialogEmbed.prototype, "controls", 2);
1127
+ __decorateClass([
1128
+ property({ type: String })
1129
+ ], DialogEmbed.prototype, "preload", 2);
1130
+ __decorateClass([
1131
+ property({ type: Boolean })
1132
+ ], DialogEmbed.prototype, "disableAutoplay", 2);
1133
+ __decorateClass([
1134
+ property({ type: Number })
1135
+ ], DialogEmbed.prototype, "aspectRatio", 2);
1136
+ DialogEmbed = __decorateClass([
1137
+ customElement("vouch-embed-dialog")
1138
+ ], DialogEmbed);
12
1139
  export {
13
- D as DialogEmbed,
14
- P as PlayerEmbed
1140
+ DialogEmbed,
1141
+ PlayerEmbed
15
1142
  };
16
1143
  //# sourceMappingURL=embeds.js.map