@vouchfor/embeds 0.0.0-experiment.2673197 → 0.0.0-experiment.276130e

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. package/dist/es/embeds.js +1144 -13
  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/src/components/PlayerEmbed/controllers/fetcher.d.ts +14 -0
  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 +75 -0
  11. package/dist/es/src/components/PlayerEmbed/tests/data.d.ts +4 -0
  12. package/dist/es/src/components/PlayerEmbed/tests/media-data.d.ts +19 -0
  13. package/dist/es/src/index.d.ts +2 -0
  14. package/dist/es/src/utils/env.d.ts +12 -0
  15. package/dist/es/src/utils/events.d.ts +2 -0
  16. package/dist/iife/dialog-embed/embed.iife.js +4045 -0
  17. package/dist/iife/dialog-embed/embed.iife.js.map +1 -0
  18. package/dist/iife/embeds.iife.js +3088 -394
  19. package/dist/iife/embeds.iife.js.map +1 -1
  20. package/dist/iife/player-embed/embed.iife.js +3907 -0
  21. package/dist/iife/player-embed/embed.iife.js.map +1 -0
  22. package/package.json +47 -32
  23. package/src/components/DialogEmbed/Dialog.stories.ts +91 -0
  24. package/src/components/DialogEmbed/DialogOverlay.ts +131 -0
  25. package/src/components/DialogEmbed/DialogPortal.ts +126 -0
  26. package/src/components/DialogEmbed/index.ts +97 -0
  27. package/src/components/PlayerEmbed/MultiEmbed.stories.ts +135 -0
  28. package/src/components/PlayerEmbed/PlayerEmbed.stories.ts +93 -0
  29. package/src/components/PlayerEmbed/controllers/event-forwarder.ts +48 -0
  30. package/src/components/PlayerEmbed/controllers/fetcher.ts +152 -0
  31. package/src/components/PlayerEmbed/controllers/tracking/index.ts +224 -0
  32. package/src/components/PlayerEmbed/controllers/tracking/utils.ts +95 -0
  33. package/src/components/PlayerEmbed/index.ts +262 -0
  34. package/src/components/PlayerEmbed/tests/PlayerEmbed.spec.ts +87 -0
  35. package/src/components/PlayerEmbed/tests/data.ts +227 -0
  36. package/src/components/PlayerEmbed/tests/media-data.ts +22 -0
  37. package/src/index.ts +2 -1
  38. package/src/utils/env.ts +64 -0
  39. package/src/utils/events.ts +13 -0
  40. package/dist/es/components/InlineEmbed/index.d.ts +0 -17
  41. package/dist/es/index.d.ts +0 -1
  42. package/src/components/InlineEmbed/InlineEmbed.stories.ts +0 -119
  43. package/src/components/InlineEmbed/index.ts +0 -24
@@ -0,0 +1,64 @@
1
+ type Environment = 'local' | 'dev' | 'staging' | 'prod';
2
+
3
+ type GetEnvUrlsReturn = {
4
+ videoUrl: string;
5
+ publicApiUrl: string;
6
+ embedApiUrl: string;
7
+ };
8
+
9
+ const devVideoUrl = 'https://d2rxhdlm2q91uk.cloudfront.net';
10
+ const stagingVideoUrl = 'https://d1ix11aj5kfygl.cloudfront.net';
11
+ const prodVideoUrl = 'https://d157jlwnudd93d.cloudfront.net';
12
+
13
+ const devPublicApiUrl = 'https://bshyfw4h5a.execute-api.ap-southeast-2.amazonaws.com/dev';
14
+ const stagingPublicApiUrl = 'https://gyzw7rpbq3.execute-api.ap-southeast-2.amazonaws.com/staging';
15
+ const prodPublicApiUrl = 'https://vfcjuim1l3.execute-api.ap-southeast-2.amazonaws.com/prod';
16
+
17
+ const localEmbedApiUrl = 'http://localhost:6060/v2';
18
+ const devEmbedApiUrl = 'https://embed-dev.vouchfor.com/v2';
19
+ const stagingEmbedApiUrl = 'https://embed-staging.vouchfor.com/v2';
20
+ const prodEmbedApiUrl = 'https://embed.vouchfor.com/v2';
21
+
22
+ // We are handling the case where env is an unknown string so the ts error is a lie
23
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
24
+ // @ts-ignore
25
+ function getEnvUrls(env: Environment): GetEnvUrlsReturn {
26
+ if (!['local', 'dev', 'staging', 'prod'].includes(env)) {
27
+ throw new Error(`Unknown environment: ${env}`);
28
+ }
29
+
30
+ if (env === 'local') {
31
+ return {
32
+ videoUrl: devVideoUrl,
33
+ publicApiUrl: devPublicApiUrl,
34
+ embedApiUrl: localEmbedApiUrl
35
+ };
36
+ }
37
+
38
+ if (env === 'dev') {
39
+ return {
40
+ videoUrl: devVideoUrl,
41
+ publicApiUrl: devPublicApiUrl,
42
+ embedApiUrl: devEmbedApiUrl
43
+ };
44
+ }
45
+
46
+ if (env === 'staging') {
47
+ return {
48
+ videoUrl: stagingVideoUrl,
49
+ publicApiUrl: stagingPublicApiUrl,
50
+ embedApiUrl: stagingEmbedApiUrl
51
+ };
52
+ }
53
+
54
+ if (env === 'prod') {
55
+ return {
56
+ videoUrl: prodVideoUrl,
57
+ publicApiUrl: prodPublicApiUrl,
58
+ embedApiUrl: prodEmbedApiUrl
59
+ };
60
+ }
61
+ }
62
+
63
+ export { devEmbedApiUrl, stagingEmbedApiUrl, prodEmbedApiUrl, getEnvUrls };
64
+ export type { Environment };
@@ -0,0 +1,13 @@
1
+ function forwardEvent(type: string, fromElement: HTMLElement, toElement: HTMLElement) {
2
+ function forwarder(event: Event) {
3
+ toElement.dispatchEvent(new CustomEvent(event.type, event));
4
+ }
5
+
6
+ fromElement.addEventListener(type, forwarder);
7
+
8
+ return () => {
9
+ fromElement.removeEventListener(type, forwarder);
10
+ };
11
+ }
12
+
13
+ export { forwardEvent };
@@ -1,17 +0,0 @@
1
- import { MediaPlayer } from '@vouchfor/media-player';
2
- import type { MediaPlayerProps } from '@vouchfor/media-player';
3
- type InlineEmbedProps = MediaPlayerProps;
4
- declare class InlineEmbed extends MediaPlayer {
5
- }
6
- declare global {
7
- interface HTMLElementTagNameMap {
8
- 'vembed-inline': InlineEmbed;
9
- }
10
- namespace JSX {
11
- interface IntrinsicElements {
12
- 'vembed-inline': InlineEmbed;
13
- }
14
- }
15
- }
16
- export { InlineEmbed };
17
- export type { InlineEmbedProps };
@@ -1 +0,0 @@
1
- export { InlineEmbed } from './components/InlineEmbed';
@@ -1,119 +0,0 @@
1
- import { html } from 'lit';
2
- import { ifDefined } from 'lit/directives/if-defined.js';
3
-
4
- import type { InlineEmbedProps } from './';
5
- import type { Meta, StoryObj } from '@storybook/web-components';
6
-
7
- import './';
8
-
9
- type InlineEmbedArgs = InlineEmbedProps & {
10
- showVouch?: boolean;
11
- };
12
-
13
- const _InlineEmbed = ({
14
- vouchHashId,
15
- preload,
16
- autoplay,
17
- env,
18
- apiKey,
19
- controls,
20
- enableTracking,
21
- trackingSource,
22
-
23
- // Template properties
24
- type,
25
- format,
26
- resolution,
27
- aspectRatio,
28
- headerShortName,
29
- headerSubtitle,
30
- headerBrandLogo
31
- }: InlineEmbedArgs) => {
32
- return html`
33
- <div style="height: 100vh">
34
- <vembed-inline
35
- env=${ifDefined(env)}
36
- apiKey=${ifDefined(apiKey)}
37
- ?autoplay=${autoplay}
38
- ?enableTracking=${enableTracking}
39
- .vouchHashId=${vouchHashId}
40
- resolution=${ifDefined(resolution)}
41
- aspectRatio=${ifDefined(aspectRatio)}
42
- preload=${ifDefined(preload)}
43
- type=${ifDefined(type)}
44
- .controls=${controls}
45
- trackingSource=${ifDefined(trackingSource)}
46
- format=${ifDefined(format)}
47
- ?headerShortName=${headerShortName}
48
- ?headerBrandLogo=${headerBrandLogo}
49
- headerSubtitle=${ifDefined(headerSubtitle)}
50
- ></vembed-inline>
51
- </div>
52
- `;
53
- };
54
-
55
- // More on how to set up stories at: https://storybook.js.org/docs/web-components/writing-stories/introduction
56
- const meta = {
57
- title: 'Embeds/Inline',
58
- tags: ['autodocs'],
59
- render: (args) => _InlineEmbed(args),
60
- component: 'vembed-inline'
61
- } satisfies Meta<InlineEmbedProps>;
62
-
63
- type Story = StoryObj<InlineEmbedArgs>;
64
-
65
- const InlineEmbed: Story = {
66
- args: {
67
- env: 'dev',
68
- apiKey: 'RtW1R7JYej-pymoGNEUCblZz0NTLZzsuC9xKxcsewIYpf3UEIePcGvtkRnd4K',
69
- vouchHashId: 'X526IKhw90',
70
- resolution: 1080,
71
- aspectRatio: 0,
72
- preload: 'none',
73
- autoplay: false,
74
- enableTracking: true,
75
- trackingSource: 'media_player_storybook',
76
-
77
- type: 'BASIC',
78
- format: 'letterbox',
79
- headerShortName: true,
80
- headerSubtitle: 'client',
81
- headerBrandLogo: false,
82
-
83
- showVouch: true
84
- },
85
- argTypes: {
86
- type: {
87
- control: 'radio',
88
- options: ['BARE', 'BASIC', 'INLINE', 'JUMBO', 'FOUNDIT', 'CISCO']
89
- },
90
- headerSubtitle: {
91
- control: 'radio',
92
- options: ['role', 'client']
93
- },
94
- headerShortName: {
95
- control: 'boolean'
96
- },
97
- headerBrandLogo: {
98
- control: 'boolean'
99
- },
100
- preload: {
101
- control: 'radio',
102
- options: ['auto', 'none']
103
- },
104
- format: {
105
- control: 'radio',
106
- options: ['letterbox', 'letterbox-video', 'crop', 'crop-top', 'squarebox']
107
- },
108
- env: {
109
- control: 'radio',
110
- options: ['prod', 'staging', 'dev']
111
- }
112
- },
113
- parameters: {
114
- layout: 'fullscreen'
115
- }
116
- };
117
-
118
- export default meta;
119
- export { InlineEmbed };
@@ -1,24 +0,0 @@
1
- import { MediaPlayer } from '@vouchfor/media-player';
2
- import { customElement } from 'lit/decorators.js';
3
-
4
- import type { MediaPlayerProps } from '@vouchfor/media-player';
5
-
6
- type InlineEmbedProps = MediaPlayerProps;
7
-
8
- @customElement('vembed-inline')
9
- class InlineEmbed extends MediaPlayer {}
10
-
11
- declare global {
12
- interface HTMLElementTagNameMap {
13
- 'vembed-inline': InlineEmbed;
14
- }
15
-
16
- namespace JSX {
17
- interface IntrinsicElements {
18
- 'vembed-inline': InlineEmbed;
19
- }
20
- }
21
- }
22
-
23
- export { InlineEmbed };
24
- export type { InlineEmbedProps };