@smartimpact-it/modern-video-embed 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/README.md +1205 -0
  2. package/dist/components/VimeoEmbed.d.ts +143 -0
  3. package/dist/components/VimeoEmbed.d.ts.map +1 -0
  4. package/dist/components/VimeoEmbed.js +1176 -0
  5. package/dist/components/VimeoEmbed.js.map +1 -0
  6. package/dist/components/VimeoEmbed.min.js +1 -0
  7. package/dist/components/YouTubeEmbed.d.ts +225 -0
  8. package/dist/components/YouTubeEmbed.d.ts.map +1 -0
  9. package/dist/components/YouTubeEmbed.js +1354 -0
  10. package/dist/components/YouTubeEmbed.js.map +1 -0
  11. package/dist/components/YouTubeEmbed.min.js +1 -0
  12. package/dist/css/components.css +349 -0
  13. package/dist/css/components.css.map +1 -0
  14. package/dist/css/components.min.css +1 -0
  15. package/dist/css/main.css +12210 -0
  16. package/dist/css/main.css.map +1 -0
  17. package/dist/css/main.min.css +7 -0
  18. package/dist/index.d.ts +3 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +4 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/index.min.js +1 -0
  23. package/dist/types/index.d.ts +7 -0
  24. package/dist/types/index.d.ts.map +1 -0
  25. package/dist/types/index.js +5 -0
  26. package/dist/types/index.js.map +1 -0
  27. package/dist/vimeo-only.d.ts +7 -0
  28. package/dist/vimeo-only.d.ts.map +1 -0
  29. package/dist/vimeo-only.js +8 -0
  30. package/dist/vimeo-only.js.map +1 -0
  31. package/dist/vimeo-only.min.js +1 -0
  32. package/dist/youtube-only.d.ts +7 -0
  33. package/dist/youtube-only.d.ts.map +1 -0
  34. package/dist/youtube-only.js +8 -0
  35. package/dist/youtube-only.js.map +1 -0
  36. package/dist/youtube-only.min.js +1 -0
  37. package/package.json +75 -0
  38. package/src/components/VimeoEmbed.ts +1340 -0
  39. package/src/components/YouTubeEmbed.ts +1568 -0
  40. package/src/index.ts +3 -0
  41. package/src/styles/README.md +56 -0
  42. package/src/styles/components.scss +7 -0
  43. package/src/styles/main.scss +10 -0
  44. package/src/styles/vimeo-embed.scss +255 -0
  45. package/src/styles/youtube-embed.scss +261 -0
  46. package/src/types/common.d.ts +198 -0
  47. package/src/types/index.ts +7 -0
  48. package/src/types/vimeo-embed.d.ts +80 -0
  49. package/src/types/youtube-embed.d.ts +83 -0
  50. package/src/vimeo-only.ts +9 -0
  51. package/src/youtube-only.ts +9 -0
@@ -0,0 +1,143 @@
1
+ export declare class VimeoEmbed extends HTMLElement {
2
+ #private;
3
+ private iframe;
4
+ private player;
5
+ private static apiLoaded;
6
+ private static apiReady;
7
+ private static instanceCount;
8
+ private static DEBUG;
9
+ private playerReady;
10
+ private playPauseButton;
11
+ private initialized;
12
+ private setCustomControlState;
13
+ private updatingAttribute;
14
+ private updatingMutedState;
15
+ private posterClickHandler;
16
+ private keyboardHandler;
17
+ private ariaLiveRegion;
18
+ private apiLoadRetries;
19
+ private static readonly MAX_API_RETRIES;
20
+ private static readonly API_RETRY_DELAY;
21
+ private static readonly API_LOAD_TIMEOUT;
22
+ private intersectionObserver;
23
+ private hasLoadedVideo;
24
+ static get observedAttributes(): string[];
25
+ attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
26
+ get url(): string;
27
+ set url(value: string);
28
+ get videoId(): string;
29
+ set videoId(value: string);
30
+ get autoplay(): boolean;
31
+ set autoplay(value: boolean);
32
+ get controls(): boolean;
33
+ set controls(value: boolean);
34
+ get lazy(): boolean;
35
+ set lazy(value: boolean);
36
+ get muted(): boolean;
37
+ set muted(value: boolean);
38
+ get poster(): string;
39
+ set poster(value: string);
40
+ get playing(): boolean;
41
+ get background(): boolean;
42
+ set background(value: boolean);
43
+ get playerVars(): Record<string, string | number | boolean>;
44
+ set playerVars(vars: Record<string, string | number | boolean>);
45
+ private extractVideoId;
46
+ private log;
47
+ private warn;
48
+ private error;
49
+ private dispatchCustomEvent;
50
+ private isValidPosterUrl;
51
+ /**
52
+ * Setup fullscreen change event listener
53
+ */
54
+ private setupFullscreenListener;
55
+ /**
56
+ * Setup keyboard event handlers for accessibility
57
+ */
58
+ private setupKeyboardHandlers;
59
+ /**
60
+ * Announce message to screen readers
61
+ */
62
+ private announceToScreenReader;
63
+ /**
64
+ * Add preconnect and dns-prefetch hints for Vimeo domains
65
+ */
66
+ private addResourceHints;
67
+ /**
68
+ * Setup Intersection Observer for lazy loading
69
+ */
70
+ private setupIntersectionObserver;
71
+ /**
72
+ * Display error message to user with retry option
73
+ */
74
+ private showErrorMessage;
75
+ connectedCallback(): void;
76
+ disconnectedCallback(): void;
77
+ private reinitializePlayer;
78
+ private showPoster;
79
+ private initializePlayer;
80
+ private static loadVimeoAPI;
81
+ /**
82
+ * Load Vimeo API with retry mechanism
83
+ */
84
+ private static loadVimeoAPIWithRetry;
85
+ private addCustomControls;
86
+ play(): Promise<void>;
87
+ pause(): void;
88
+ stopVideo(): void;
89
+ mute(): void;
90
+ unmute(): void;
91
+ togglePlay(): void;
92
+ toggleMute(): void;
93
+ static toggleDebug(forceState?: boolean): void;
94
+ getPlayerState(): {
95
+ playing: boolean;
96
+ muted: boolean;
97
+ videoId: string;
98
+ ready: boolean;
99
+ initialized: boolean;
100
+ };
101
+ isPlaying(): boolean;
102
+ isMuted(): Promise<boolean>;
103
+ getCurrentTime(): Promise<number>;
104
+ /**
105
+ * Request fullscreen mode
106
+ */
107
+ enterFullscreen(): Promise<void>;
108
+ /**
109
+ * Exit fullscreen mode
110
+ */
111
+ exitFullscreen(): Promise<void>;
112
+ /**
113
+ * Toggle fullscreen mode
114
+ */
115
+ toggleFullscreen(): Promise<void>;
116
+ /**
117
+ * Check if currently in fullscreen mode
118
+ */
119
+ isFullscreen(): boolean;
120
+ /**
121
+ * Get available quality levels for the current video
122
+ * @returns Array of available quality levels
123
+ */
124
+ getAvailableQualities(): Promise<string[]>;
125
+ /**
126
+ * Get the current playback quality
127
+ * @returns Current quality level
128
+ */
129
+ getCurrentQuality(): Promise<string>;
130
+ /**
131
+ * Set the playback quality
132
+ * @param quality The desired quality level
133
+ */
134
+ setQuality(quality: string): Promise<void>;
135
+ loadVideo(videoIdOrUrl: string): void;
136
+ }
137
+ declare global {
138
+ interface Window {
139
+ Vimeo?: any;
140
+ }
141
+ }
142
+ export {};
143
+ //# sourceMappingURL=VimeoEmbed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VimeoEmbed.d.ts","sourceRoot":"","sources":["../../src/components/VimeoEmbed.ts"],"names":[],"mappings":"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"}