ts-video-player 0.1.0

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 (251) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +438 -0
  3. package/dist/cdn.d.ts +10 -0
  4. package/dist/cdn.d.ts.map +1 -0
  5. package/dist/cdn.min.js +1046 -0
  6. package/dist/cdn.min.js.map +54 -0
  7. package/dist/cdn.test.d.ts +2 -0
  8. package/dist/cdn.test.d.ts.map +1 -0
  9. package/dist/chunk-36x4yhjn.js +765 -0
  10. package/dist/chunk-36x4yhjn.js.map +12 -0
  11. package/dist/chunk-eajts2jv.js +4243 -0
  12. package/dist/chunk-eajts2jv.js.map +42 -0
  13. package/dist/chunk-z1ehbz9f.js +380 -0
  14. package/dist/chunk-z1ehbz9f.js.map +19 -0
  15. package/dist/config.d.ts +9 -0
  16. package/dist/config.d.ts.map +1 -0
  17. package/dist/core/audio-gain.d.ts +67 -0
  18. package/dist/core/audio-gain.d.ts.map +1 -0
  19. package/dist/core/caption-styles.d.ts +121 -0
  20. package/dist/core/caption-styles.d.ts.map +1 -0
  21. package/dist/core/chapters.d.ts +150 -0
  22. package/dist/core/chapters.d.ts.map +1 -0
  23. package/dist/core/error-overlay.d.ts +71 -0
  24. package/dist/core/error-overlay.d.ts.map +1 -0
  25. package/dist/core/events.d.ts +119 -0
  26. package/dist/core/events.d.ts.map +1 -0
  27. package/dist/core/features.d.ts +64 -0
  28. package/dist/core/features.d.ts.map +1 -0
  29. package/dist/core/i18n.d.ts +132 -0
  30. package/dist/core/i18n.d.ts.map +1 -0
  31. package/dist/core/index.d.ts +37 -0
  32. package/dist/core/index.d.ts.map +1 -0
  33. package/dist/core/live.d.ts +130 -0
  34. package/dist/core/live.d.ts.map +1 -0
  35. package/dist/core/media-session.d.ts +38 -0
  36. package/dist/core/media-session.d.ts.map +1 -0
  37. package/dist/core/orientation.d.ts +22 -0
  38. package/dist/core/orientation.d.ts.map +1 -0
  39. package/dist/core/popover.d.ts +42 -0
  40. package/dist/core/popover.d.ts.map +1 -0
  41. package/dist/core/remote-playback.d.ts +195 -0
  42. package/dist/core/remote-playback.d.ts.map +1 -0
  43. package/dist/core/settings-menu.d.ts +132 -0
  44. package/dist/core/settings-menu.d.ts.map +1 -0
  45. package/dist/core/spinner.d.ts +67 -0
  46. package/dist/core/spinner.d.ts.map +1 -0
  47. package/dist/core/state.d.ts +142 -0
  48. package/dist/core/state.d.ts.map +1 -0
  49. package/dist/core/text-tracks.d.ts +162 -0
  50. package/dist/core/text-tracks.d.ts.map +1 -0
  51. package/dist/core/themes.d.ts +213 -0
  52. package/dist/core/themes.d.ts.map +1 -0
  53. package/dist/core/thumbnails.d.ts +124 -0
  54. package/dist/core/thumbnails.d.ts.map +1 -0
  55. package/dist/core/tooltips.d.ts +100 -0
  56. package/dist/core/tooltips.d.ts.map +1 -0
  57. package/dist/elements/base.d.ts +3 -0
  58. package/dist/elements/base.d.ts.map +1 -0
  59. package/dist/elements/index.d.ts +33 -0
  60. package/dist/elements/index.d.ts.map +1 -0
  61. package/dist/elements/index.js +55 -0
  62. package/dist/elements/index.js.map +9 -0
  63. package/dist/elements/media-airplay-button.d.ts +13 -0
  64. package/dist/elements/media-airplay-button.d.ts.map +1 -0
  65. package/dist/elements/media-error-display.d.ts +13 -0
  66. package/dist/elements/media-error-display.d.ts.map +1 -0
  67. package/dist/elements/media-fullscreen-button.d.ts +13 -0
  68. package/dist/elements/media-fullscreen-button.d.ts.map +1 -0
  69. package/dist/elements/media-live-button.d.ts +13 -0
  70. package/dist/elements/media-live-button.d.ts.map +1 -0
  71. package/dist/elements/media-mute-button.d.ts +13 -0
  72. package/dist/elements/media-mute-button.d.ts.map +1 -0
  73. package/dist/elements/media-pip-button.d.ts +13 -0
  74. package/dist/elements/media-pip-button.d.ts.map +1 -0
  75. package/dist/elements/media-play-button.d.ts +14 -0
  76. package/dist/elements/media-play-button.d.ts.map +1 -0
  77. package/dist/elements/media-playback-rate-button.d.ts +10 -0
  78. package/dist/elements/media-playback-rate-button.d.ts.map +1 -0
  79. package/dist/elements/media-preview-time.d.ts +18 -0
  80. package/dist/elements/media-preview-time.d.ts.map +1 -0
  81. package/dist/elements/media-progress-bar.d.ts +16 -0
  82. package/dist/elements/media-progress-bar.d.ts.map +1 -0
  83. package/dist/elements/media-remote-playback-button.d.ts +16 -0
  84. package/dist/elements/media-remote-playback-button.d.ts.map +1 -0
  85. package/dist/elements/media-seek-button.d.ts +9 -0
  86. package/dist/elements/media-seek-button.d.ts.map +1 -0
  87. package/dist/elements/media-settings-menu.d.ts +32 -0
  88. package/dist/elements/media-settings-menu.d.ts.map +1 -0
  89. package/dist/elements/media-time-display.d.ts +21 -0
  90. package/dist/elements/media-time-display.d.ts.map +1 -0
  91. package/dist/elements/media-time-group.d.ts +22 -0
  92. package/dist/elements/media-time-group.d.ts.map +1 -0
  93. package/dist/elements/media-time-separator.d.ts +13 -0
  94. package/dist/elements/media-time-separator.d.ts.map +1 -0
  95. package/dist/elements/media-volume-slider.d.ts +16 -0
  96. package/dist/elements/media-volume-slider.d.ts.map +1 -0
  97. package/dist/elements/utils.d.ts +27 -0
  98. package/dist/elements/utils.d.ts.map +1 -0
  99. package/dist/elements/video-player.d.ts +23 -0
  100. package/dist/elements/video-player.d.ts.map +1 -0
  101. package/dist/elements/video-skin.d.ts +23 -0
  102. package/dist/elements/video-skin.d.ts.map +1 -0
  103. package/dist/features/captions.d.ts +8 -0
  104. package/dist/features/captions.d.ts.map +1 -0
  105. package/dist/features/create-player.d.ts +45 -0
  106. package/dist/features/create-player.d.ts.map +1 -0
  107. package/dist/features/fullscreen.d.ts +8 -0
  108. package/dist/features/fullscreen.d.ts.map +1 -0
  109. package/dist/features/gestures.d.ts +8 -0
  110. package/dist/features/gestures.d.ts.map +1 -0
  111. package/dist/features/index.d.ts +26 -0
  112. package/dist/features/index.d.ts.map +1 -0
  113. package/dist/features/index.js +31 -0
  114. package/dist/features/index.js.map +9 -0
  115. package/dist/features/keyboard.d.ts +8 -0
  116. package/dist/features/keyboard.d.ts.map +1 -0
  117. package/dist/features/pip.d.ts +8 -0
  118. package/dist/features/pip.d.ts.map +1 -0
  119. package/dist/features/playback.d.ts +8 -0
  120. package/dist/features/playback.d.ts.map +1 -0
  121. package/dist/features/quality.d.ts +8 -0
  122. package/dist/features/quality.d.ts.map +1 -0
  123. package/dist/features/types.d.ts +26 -0
  124. package/dist/features/types.d.ts.map +1 -0
  125. package/dist/features/volume.d.ts +8 -0
  126. package/dist/features/volume.d.ts.map +1 -0
  127. package/dist/index.d.ts +84 -0
  128. package/dist/index.d.ts.map +1 -0
  129. package/dist/index.js +8149 -0
  130. package/dist/index.js.map +31 -0
  131. package/dist/layouts/index.d.ts +58 -0
  132. package/dist/layouts/index.d.ts.map +1 -0
  133. package/dist/player.d.ts +90 -0
  134. package/dist/player.d.ts.map +1 -0
  135. package/dist/plugins/ads.d.ts +311 -0
  136. package/dist/plugins/ads.d.ts.map +1 -0
  137. package/dist/plugins/analytics.d.ts +203 -0
  138. package/dist/plugins/analytics.d.ts.map +1 -0
  139. package/dist/plugins/end-screen.d.ts +184 -0
  140. package/dist/plugins/end-screen.d.ts.map +1 -0
  141. package/dist/plugins/index.d.ts +13 -0
  142. package/dist/plugins/index.d.ts.map +1 -0
  143. package/dist/plugins/index.js +20 -0
  144. package/dist/plugins/index.js.map +9 -0
  145. package/dist/plugins/skip-segments.d.ts +159 -0
  146. package/dist/plugins/skip-segments.d.ts.map +1 -0
  147. package/dist/plugins/watermark.d.ts +157 -0
  148. package/dist/plugins/watermark.d.ts.map +1 -0
  149. package/dist/providers/base.d.ts +56 -0
  150. package/dist/providers/base.d.ts.map +1 -0
  151. package/dist/providers/dash.d.ts +94 -0
  152. package/dist/providers/dash.d.ts.map +1 -0
  153. package/dist/providers/hls.d.ts +182 -0
  154. package/dist/providers/hls.d.ts.map +1 -0
  155. package/dist/providers/html5.d.ts +64 -0
  156. package/dist/providers/html5.d.ts.map +1 -0
  157. package/dist/providers/index.d.ts +41 -0
  158. package/dist/providers/index.d.ts.map +1 -0
  159. package/dist/providers/vimeo.d.ts +157 -0
  160. package/dist/providers/vimeo.d.ts.map +1 -0
  161. package/dist/providers/youtube.d.ts +134 -0
  162. package/dist/providers/youtube.d.ts.map +1 -0
  163. package/dist/stx/index.d.ts +59 -0
  164. package/dist/stx/index.d.ts.map +1 -0
  165. package/dist/stx/index.js +480 -0
  166. package/dist/stx/index.js.map +11 -0
  167. package/dist/types.d.ts +724 -0
  168. package/dist/types.d.ts.map +1 -0
  169. package/dist/ui/components.d.ts +121 -0
  170. package/dist/ui/components.d.ts.map +1 -0
  171. package/dist/ui/index.d.ts +9 -0
  172. package/dist/ui/index.d.ts.map +1 -0
  173. package/dist/ui/index.js +16 -0
  174. package/dist/ui/index.js.map +9 -0
  175. package/package.json +109 -0
  176. package/src/cdn.test.ts +10 -0
  177. package/src/cdn.ts +60 -0
  178. package/src/config.ts +25 -0
  179. package/src/core/audio-gain.ts +171 -0
  180. package/src/core/caption-styles.ts +568 -0
  181. package/src/core/chapters.ts +551 -0
  182. package/src/core/error-overlay.ts +354 -0
  183. package/src/core/events.ts +552 -0
  184. package/src/core/features.ts +287 -0
  185. package/src/core/i18n.ts +590 -0
  186. package/src/core/index.ts +249 -0
  187. package/src/core/live.ts +472 -0
  188. package/src/core/media-session.ts +137 -0
  189. package/src/core/orientation.ts +57 -0
  190. package/src/core/popover.ts +143 -0
  191. package/src/core/remote-playback.ts +661 -0
  192. package/src/core/settings-menu.ts +630 -0
  193. package/src/core/spinner.ts +310 -0
  194. package/src/core/state.ts +476 -0
  195. package/src/core/text-tracks.ts +599 -0
  196. package/src/core/themes.ts +607 -0
  197. package/src/core/thumbnails.ts +457 -0
  198. package/src/core/tooltips.ts +370 -0
  199. package/src/elements/base.ts +2 -0
  200. package/src/elements/index.ts +82 -0
  201. package/src/elements/media-airplay-button.ts +78 -0
  202. package/src/elements/media-error-display.ts +47 -0
  203. package/src/elements/media-fullscreen-button.ts +72 -0
  204. package/src/elements/media-live-button.ts +65 -0
  205. package/src/elements/media-mute-button.ts +69 -0
  206. package/src/elements/media-pip-button.ts +66 -0
  207. package/src/elements/media-play-button.ts +69 -0
  208. package/src/elements/media-playback-rate-button.ts +59 -0
  209. package/src/elements/media-preview-time.ts +75 -0
  210. package/src/elements/media-progress-bar.ts +200 -0
  211. package/src/elements/media-remote-playback-button.ts +108 -0
  212. package/src/elements/media-seek-button.ts +50 -0
  213. package/src/elements/media-settings-menu.ts +302 -0
  214. package/src/elements/media-time-display.ts +99 -0
  215. package/src/elements/media-time-group.ts +41 -0
  216. package/src/elements/media-time-separator.ts +35 -0
  217. package/src/elements/media-volume-slider.ts +140 -0
  218. package/src/elements/utils.ts +82 -0
  219. package/src/elements/video-player.ts +175 -0
  220. package/src/elements/video-skin.ts +127 -0
  221. package/src/features/captions.ts +56 -0
  222. package/src/features/create-player.ts +91 -0
  223. package/src/features/fullscreen.ts +44 -0
  224. package/src/features/gestures.ts +44 -0
  225. package/src/features/index.ts +44 -0
  226. package/src/features/keyboard.ts +89 -0
  227. package/src/features/pip.ts +47 -0
  228. package/src/features/playback.ts +68 -0
  229. package/src/features/quality.ts +19 -0
  230. package/src/features/types.ts +28 -0
  231. package/src/features/volume.ts +46 -0
  232. package/src/index.ts +635 -0
  233. package/src/layouts/index.ts +672 -0
  234. package/src/player.ts +821 -0
  235. package/src/plugins/ads.ts +1045 -0
  236. package/src/plugins/analytics.ts +673 -0
  237. package/src/plugins/end-screen.ts +793 -0
  238. package/src/plugins/index.ts +61 -0
  239. package/src/plugins/skip-segments.ts +537 -0
  240. package/src/plugins/watermark.ts +537 -0
  241. package/src/providers/base.ts +197 -0
  242. package/src/providers/dash.ts +588 -0
  243. package/src/providers/hls.ts +624 -0
  244. package/src/providers/html5.ts +473 -0
  245. package/src/providers/index.ts +97 -0
  246. package/src/providers/vimeo.ts +533 -0
  247. package/src/providers/youtube.ts +542 -0
  248. package/src/stx/index.ts +606 -0
  249. package/src/types.ts +874 -0
  250. package/src/ui/components.ts +910 -0
  251. package/src/ui/index.ts +29 -0
package/src/index.ts ADDED
@@ -0,0 +1,635 @@
1
+ /**
2
+ * ts-video-player
3
+ *
4
+ * A modern, framework-agnostic video player with deep stx integration.
5
+ *
6
+ * @module ts-video-player
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { createPlayer } from 'ts-video-player'
11
+ *
12
+ * const player = createPlayer('#video-container', {
13
+ * src: 'https://example.com/video.mp4',
14
+ * poster: '/poster.jpg',
15
+ * autoplay: false,
16
+ * controls: true,
17
+ * })
18
+ *
19
+ * player.on('playing', () => console.log('Video is playing!'))
20
+ * player.on('ended', () => console.log('Video ended'))
21
+ *
22
+ * // Control playback
23
+ * await player.play()
24
+ * player.pause()
25
+ * player.seekTo(30)
26
+ *
27
+ * // Volume
28
+ * player.setVolume(0.5)
29
+ * player.toggleMute()
30
+ *
31
+ * // Fullscreen
32
+ * await player.toggleFullscreen()
33
+ * ```
34
+ */
35
+
36
+ // =============================================================================
37
+ // Core
38
+ // =============================================================================
39
+
40
+ export { Player, createPlayer, getPlayer } from './player'
41
+
42
+ // =============================================================================
43
+ // State Management
44
+ // =============================================================================
45
+
46
+ export {
47
+ StateStore,
48
+ createSignal,
49
+ computed,
50
+ shallowEqual,
51
+ createDefaultState,
52
+ loadPersistedState,
53
+ savePersistedState,
54
+ createStorageSync,
55
+ // Selectors
56
+ selectBufferedAmount,
57
+ selectProgress,
58
+ selectRemainingTime,
59
+ selectIsIdle,
60
+ selectIsLoading,
61
+ selectIsLive,
62
+ selectIsDVR,
63
+ selectCurrentQuality,
64
+ selectCurrentTextTrack,
65
+ selectCurrentAudioTrack,
66
+ } from './core/state'
67
+
68
+ // =============================================================================
69
+ // Events
70
+ // =============================================================================
71
+
72
+ export {
73
+ EventEmitter,
74
+ MediaEventsNormalizer,
75
+ onFullscreenChange,
76
+ onPiPChange,
77
+ DEFAULT_KEYBOARD_SHORTCUTS,
78
+ createKeyboardHandler,
79
+ createActivityDetector,
80
+ createGestureDetector,
81
+ } from './core/events'
82
+
83
+ // =============================================================================
84
+ // Audio Gain
85
+ // =============================================================================
86
+
87
+ export {
88
+ AudioGain,
89
+ createAudioGain,
90
+ GAIN_PRESETS,
91
+ GAIN_STEPS,
92
+ } from './core/audio-gain'
93
+
94
+ export type { AudioGainAdapter } from './core/audio-gain'
95
+
96
+ // =============================================================================
97
+ // Text Tracks
98
+ // =============================================================================
99
+
100
+ export {
101
+ TextTrackList,
102
+ TextTrackReadyState,
103
+ CaptionRenderer,
104
+ createTextTrackList,
105
+ createCaptionRenderer,
106
+ } from './core/text-tracks'
107
+
108
+ export type { TextTrackInit, VTTCueInit, CaptionRendererOptions } from './core/text-tracks'
109
+
110
+ // =============================================================================
111
+ // Themes
112
+ // =============================================================================
113
+
114
+ export {
115
+ defaultTheme,
116
+ darkTheme,
117
+ lightTheme,
118
+ minimalTheme,
119
+ netflixTheme,
120
+ youtubeTheme,
121
+ vimeoTheme,
122
+ presetThemes,
123
+ mergeThemes,
124
+ generateThemeCSS,
125
+ createThemeStyleElement,
126
+ applyTheme,
127
+ injectThemeStyles,
128
+ } from './core/themes'
129
+
130
+ export type {
131
+ Theme,
132
+ ThemeColors,
133
+ ThemeTypography,
134
+ ThemeSpacing,
135
+ ThemeBorderRadius,
136
+ ThemeShadows,
137
+ ThemeTransitions,
138
+ ThemeSlider,
139
+ ThemeControls,
140
+ ThemeMenu,
141
+ ThemeCaptions,
142
+ ThemeThumbnails,
143
+ ThemeLive,
144
+ PresetThemeName,
145
+ } from './core/themes'
146
+
147
+ // =============================================================================
148
+ // Thumbnails / Seek Preview
149
+ // =============================================================================
150
+
151
+ export {
152
+ Thumbnails,
153
+ createThumbnails,
154
+ parseThumbnailVTT,
155
+ generateSpriteCues,
156
+ } from './core/thumbnails'
157
+
158
+ export type {
159
+ ThumbnailSprite,
160
+ ThumbnailCue,
161
+ ThumbnailsConfig,
162
+ } from './core/thumbnails'
163
+
164
+ // =============================================================================
165
+ // Internationalization (i18n)
166
+ // =============================================================================
167
+
168
+ export {
169
+ I18n,
170
+ createI18n,
171
+ getI18n,
172
+ setI18n,
173
+ t,
174
+ englishStrings,
175
+ spanishStrings,
176
+ frenchStrings,
177
+ germanStrings,
178
+ japaneseStrings,
179
+ chineseStrings,
180
+ defaultTranslations,
181
+ } from './core/i18n'
182
+
183
+ export type {
184
+ TranslationStrings,
185
+ TranslationKey,
186
+ I18nConfig,
187
+ } from './core/i18n'
188
+
189
+ // =============================================================================
190
+ // Live Streaming
191
+ // =============================================================================
192
+
193
+ export {
194
+ LiveIndicator,
195
+ SeekToLiveButton,
196
+ LiveController,
197
+ createLiveIndicator,
198
+ createSeekToLiveButton,
199
+ createLiveController,
200
+ } from './core/live'
201
+
202
+ export type {
203
+ LiveConfig,
204
+ LiveState,
205
+ } from './core/live'
206
+
207
+ // =============================================================================
208
+ // Remote Playback (AirPlay / Google Cast)
209
+ // =============================================================================
210
+
211
+ export {
212
+ RemotePlaybackController,
213
+ AirPlayButton,
214
+ GoogleCastButton,
215
+ createRemotePlaybackController,
216
+ createAirPlayButton,
217
+ createGoogleCastButton,
218
+ isAirPlaySupported,
219
+ isAirPlayAvailable,
220
+ showAirPlayPicker,
221
+ isAirPlaying,
222
+ isGoogleCastSupported,
223
+ loadGoogleCastSDK,
224
+ initializeGoogleCast,
225
+ requestCastSession,
226
+ endCastSession,
227
+ isCasting,
228
+ getCastSession,
229
+ castMedia,
230
+ } from './core/remote-playback'
231
+
232
+ export type {
233
+ RemotePlaybackType,
234
+ RemotePlaybackState,
235
+ RemoteDevice,
236
+ RemotePlaybackConfig,
237
+ } from './core/remote-playback'
238
+
239
+ // =============================================================================
240
+ // Chapters
241
+ // =============================================================================
242
+
243
+ export {
244
+ ChaptersManager,
245
+ ChapterMenu,
246
+ createChaptersManager,
247
+ createChapterMenu,
248
+ parseChaptersVTT,
249
+ } from './core/chapters'
250
+
251
+ export type {
252
+ Chapter,
253
+ ChaptersConfig,
254
+ } from './core/chapters'
255
+
256
+ // =============================================================================
257
+ // Spinner / Buffering Indicator
258
+ // =============================================================================
259
+
260
+ export {
261
+ Spinner,
262
+ createSpinner,
263
+ SPINNER_STYLES,
264
+ } from './core/spinner'
265
+
266
+ export type { SpinnerConfig } from './core/spinner'
267
+
268
+ // =============================================================================
269
+ // Caption Styling
270
+ // =============================================================================
271
+
272
+ export {
273
+ CaptionStyleManager,
274
+ CaptionSettingsMenu,
275
+ createCaptionStyleManager,
276
+ createCaptionSettingsMenu,
277
+ defaultCaptionStyles,
278
+ captionPresets,
279
+ } from './core/caption-styles'
280
+
281
+ export type {
282
+ CaptionStyleOptions,
283
+ CaptionStylePreset,
284
+ } from './core/caption-styles'
285
+
286
+ // =============================================================================
287
+ // Tooltips
288
+ // =============================================================================
289
+
290
+ export {
291
+ Tooltip,
292
+ TooltipManager,
293
+ createTooltip,
294
+ createTooltipManager,
295
+ TOOLTIP_STYLES,
296
+ } from './core/tooltips'
297
+
298
+ export type {
299
+ TooltipPlacement,
300
+ TooltipConfig,
301
+ } from './core/tooltips'
302
+
303
+ // =============================================================================
304
+ // Error Overlay
305
+ // =============================================================================
306
+
307
+ export {
308
+ ErrorOverlay,
309
+ createErrorOverlay,
310
+ ERROR_OVERLAY_STYLES,
311
+ } from './core/error-overlay'
312
+
313
+ export type { ErrorOverlayConfig } from './core/error-overlay'
314
+
315
+ // =============================================================================
316
+ // Settings Menu
317
+ // =============================================================================
318
+
319
+ export {
320
+ SettingsMenu,
321
+ createSettingsMenu,
322
+ } from './core/settings-menu'
323
+
324
+ export type {
325
+ SettingsMenuConfig,
326
+ SettingsMenuState,
327
+ } from './core/settings-menu'
328
+
329
+ // =============================================================================
330
+ // Providers
331
+ // =============================================================================
332
+
333
+ export {
334
+ // Base
335
+ BaseProvider,
336
+ // HTML5
337
+ HTML5Provider,
338
+ html5Loader,
339
+ isHTML5Source,
340
+ // YouTube
341
+ YouTubeProvider,
342
+ youtubeLoader,
343
+ isYouTubeSource,
344
+ extractYouTubeId,
345
+ // Vimeo
346
+ VimeoProvider,
347
+ vimeoLoader,
348
+ isVimeoSource,
349
+ extractVimeoId,
350
+ extractVimeoHash,
351
+ // HLS
352
+ HLSProvider,
353
+ hlsLoader,
354
+ isHLSSource,
355
+ isNativeHLSSupported,
356
+ // DASH
357
+ DASHProvider,
358
+ dashLoader,
359
+ isDASHSource,
360
+ // Registry
361
+ defaultLoaders,
362
+ findLoader,
363
+ detectMediaType,
364
+ getPreconnectHints,
365
+ } from './providers'
366
+
367
+ export type { DRMConfig, DASHProviderConfig } from './providers'
368
+
369
+ // =============================================================================
370
+ // Layouts
371
+ // =============================================================================
372
+
373
+ export {
374
+ LayoutManager,
375
+ createLayoutManager,
376
+ getLayout,
377
+ registerLayout,
378
+ layouts,
379
+ defaultLayout,
380
+ minimalLayout,
381
+ cinemaLayout,
382
+ youtubeLayout,
383
+ vimeoLayout,
384
+ audioLayout,
385
+ } from './layouts'
386
+
387
+ export type { LayoutConfig, LayoutName } from './layouts'
388
+
389
+ // =============================================================================
390
+ // UI Components
391
+ // =============================================================================
392
+
393
+ export {
394
+ // Components
395
+ BaseComponent,
396
+ PlayButton,
397
+ MuteButton,
398
+ FullscreenButton,
399
+ PiPButton,
400
+ TimeDisplay,
401
+ Slider,
402
+ ProgressBar,
403
+ VolumeSlider,
404
+ Menu,
405
+ // Utilities
406
+ formatTime,
407
+ UI_STYLES,
408
+ } from './ui/components'
409
+
410
+ // =============================================================================
411
+ // Types
412
+ // =============================================================================
413
+
414
+ export type {
415
+ // Media source types
416
+ MediaType,
417
+ StreamType,
418
+ ProviderType,
419
+ MediaSource,
420
+ YouTubeSource,
421
+ VimeoSource,
422
+ HLSSource,
423
+ DASHSource,
424
+ Src,
425
+
426
+ // Player state
427
+ PreloadStrategy,
428
+ CrossOrigin,
429
+ LoadingState,
430
+ PlaybackState,
431
+ TimeRange,
432
+ VideoQuality,
433
+ AudioTrack,
434
+ TextTrack,
435
+ TextTrackCue,
436
+ PlayerState,
437
+
438
+ // Player options
439
+ PlayerOptions,
440
+ ControlsConfig,
441
+ CustomControl,
442
+ KeyboardConfig,
443
+ StorageConfig,
444
+
445
+ // Provider
446
+ Provider,
447
+ ProviderLoader,
448
+
449
+ // Events
450
+ MediaError,
451
+ ProviderEventMap,
452
+ PlayerEventMap,
453
+
454
+ // UI
455
+ UIComponent,
456
+ TooltipOptions,
457
+ MenuItem,
458
+ SliderOptions,
459
+
460
+ // stx integration
461
+ VideoComponentProps,
462
+ VideoDirectiveOptions,
463
+ VideoRenderResult,
464
+ } from './types'
465
+
466
+ // =============================================================================
467
+ // stx Integration
468
+ // =============================================================================
469
+
470
+ export {
471
+ renderVideoComponent,
472
+ parseVideoComponent,
473
+ createVideoDirective,
474
+ videoDirective,
475
+ registerVideoDirectives,
476
+ } from './stx'
477
+
478
+ // =============================================================================
479
+ // Plugins
480
+ // =============================================================================
481
+
482
+ export {
483
+ // Analytics
484
+ VideoAnalytics,
485
+ createVideoAnalytics,
486
+ analyticsPlugin,
487
+ // Ads (VAST/VPAID)
488
+ VASTParser,
489
+ AdsManager,
490
+ createAdsManager,
491
+ adsPlugin,
492
+ // Skip Segments
493
+ SkipSegmentsManager,
494
+ createSkipSegments,
495
+ skipSegmentsPlugin,
496
+ // End Screen
497
+ EndScreenManager,
498
+ createEndScreen,
499
+ endScreenPlugin,
500
+ // Watermarks
501
+ WatermarkManager,
502
+ createWatermarkManager,
503
+ watermarkPlugin,
504
+ } from './plugins'
505
+
506
+ export type {
507
+ // Analytics types
508
+ VideoEventName,
509
+ VideoAnalyticsConfig,
510
+ // Ads types
511
+ Ad,
512
+ AdMediaFile,
513
+ AdBreak,
514
+ AdConfig,
515
+ AdState,
516
+ // Skip Segments types
517
+ SegmentType,
518
+ SkipSegment,
519
+ SkipSegmentsConfig,
520
+ SkipSegmentsState,
521
+ // End Screen types
522
+ EndScreenRecommendation,
523
+ EndScreenConfig,
524
+ EndScreenState,
525
+ // Watermark types
526
+ WatermarkPosition,
527
+ WatermarkConfig,
528
+ WatermarkAnimation,
529
+ DynamicWatermark,
530
+ } from './plugins'
531
+
532
+ // =============================================================================
533
+ // Default Export
534
+ // =============================================================================
535
+
536
+ import { createPlayer } from './player'
537
+ export default createPlayer
538
+
539
+ // =============================================================================
540
+ // Feature Availability Detection
541
+ // =============================================================================
542
+
543
+ export {
544
+ isIOSSafari,
545
+ isSafari,
546
+ isStandalonePWA,
547
+ detectVolumeAvailability,
548
+ probeVolumeAvailability,
549
+ detectFullscreenAvailability,
550
+ isVideoOnlyFullscreen,
551
+ detectPipAvailability,
552
+ detectAllFeatures,
553
+ enterFullscreen,
554
+ exitFullscreen,
555
+ enterPiP,
556
+ exitPiP,
557
+ } from './core/features'
558
+
559
+ // =============================================================================
560
+ // Custom Elements
561
+ // =============================================================================
562
+
563
+ export {
564
+ VideoPlayerElement,
565
+ VideoSkin,
566
+ MediaPlayButton,
567
+ MediaMuteButton,
568
+ MediaFullscreenButton,
569
+ MediaPipButton,
570
+ MediaTimeDisplay,
571
+ MediaTimeGroup,
572
+ MediaTimeSeparator,
573
+ MediaPreviewTime,
574
+ MediaProgressBar,
575
+ MediaVolumeSlider,
576
+ MediaSettingsMenu,
577
+ registerElements,
578
+ formatTime as formatElementTime,
579
+ formatTimePhrase,
580
+ toISODuration,
581
+ } from './elements'
582
+
583
+ // =============================================================================
584
+ // Composable Features
585
+ // =============================================================================
586
+
587
+ export {
588
+ playback,
589
+ volume as volumeFeature,
590
+ fullscreen as fullscreenFeature,
591
+ pip as pipFeature,
592
+ captions as captionsFeature,
593
+ quality as qualityFeature,
594
+ keyboard as keyboardFeature,
595
+ gestures as gesturesFeature,
596
+ videoFeatures,
597
+ audioFeatures,
598
+ minimalFeatures,
599
+ createComposablePlayer,
600
+ } from './features'
601
+
602
+ export type { Feature, FeatureContext, ComposablePlayer, ComposablePlayerOptions } from './features'
603
+
604
+ // =============================================================================
605
+ // Media Session
606
+ // =============================================================================
607
+
608
+ export {
609
+ isMediaSessionSupported,
610
+ createMediaSession,
611
+ updateMetadata,
612
+ } from './core/media-session'
613
+
614
+ export type { MediaSessionOptions } from './core/media-session'
615
+
616
+ // =============================================================================
617
+ // Orientation Lock
618
+ // =============================================================================
619
+
620
+ export {
621
+ isOrientationLockSupported,
622
+ lockOrientation,
623
+ unlockOrientation,
624
+ } from './core/orientation'
625
+
626
+ // =============================================================================
627
+ // Popover Positioning
628
+ // =============================================================================
629
+
630
+ export {
631
+ computePosition,
632
+ applyPosition,
633
+ } from './core/popover'
634
+
635
+ export type { Rect, Placement, PositionOptions, PositionResult } from './core/popover'