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
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Live Streaming UI
3
+ *
4
+ * Components and utilities for live streaming playback.
5
+ *
6
+ * @module core/live
7
+ */
8
+ import type { StateStore } from './state';
9
+ export interface LiveConfig {
10
+ /** Threshold in seconds to consider "at live edge" (default: 10) */
11
+ liveEdgeThreshold?: number;
12
+ /** Auto-sync to live when seeking within threshold (default: true) */
13
+ autoSyncToLive?: boolean;
14
+ /** Show live indicator badge (default: true) */
15
+ showLiveIndicator?: boolean;
16
+ /** Show time behind live (default: true) */
17
+ showTimeBehind?: boolean;
18
+ }
19
+ export interface LiveState {
20
+ /** Whether the stream is live */
21
+ isLive: boolean;
22
+ /** Whether currently at the live edge */
23
+ isAtLiveEdge: boolean;
24
+ /** Seconds behind the live edge */
25
+ secondsBehindLive: number;
26
+ /** Whether DVR (seeking) is available */
27
+ isDVR: boolean;
28
+ /** The live edge time (seekable end) */
29
+ liveEdgeTime: number;
30
+ }
31
+ export declare class LiveIndicator {
32
+ private container;
33
+ private dot;
34
+ private label;
35
+ private timeBehind;
36
+ private state;
37
+ private config;
38
+ constructor(config?: LiveConfig);
39
+ /**
40
+ * Apply default styles
41
+ */
42
+ private applyStyles;
43
+ /**
44
+ * Get the element
45
+ */
46
+ getElement(): HTMLElement;
47
+ /**
48
+ * Update live state
49
+ */
50
+ update(state: Partial<LiveState>): void;
51
+ /**
52
+ * Show indicator
53
+ */
54
+ show(): void;
55
+ /**
56
+ * Hide indicator
57
+ */
58
+ hide(): void;
59
+ /**
60
+ * Set click handler (for seeking to live)
61
+ */
62
+ onClick(handler: () => void): void;
63
+ /**
64
+ * Get current state
65
+ */
66
+ getState(): LiveState;
67
+ /**
68
+ * Destroy component
69
+ */
70
+ destroy(): void;
71
+ }
72
+ export declare class SeekToLiveButton {
73
+ private button;
74
+ private icon;
75
+ private label;
76
+ private visible;
77
+ constructor();
78
+ private applyStyles;
79
+ getElement(): HTMLButtonElement;
80
+ show(): void;
81
+ hide(): void;
82
+ isVisible(): boolean;
83
+ onClick(handler: () => void): void;
84
+ destroy(): void;
85
+ }
86
+ export declare class LiveController {
87
+ private indicator;
88
+ private seekToLiveButton;
89
+ private store;
90
+ private config;
91
+ private unsubscribe;
92
+ private onSeekToLive;
93
+ constructor(store: StateStore, config?: LiveConfig);
94
+ /**
95
+ * Update from player state
96
+ */
97
+ private updateFromState;
98
+ /**
99
+ * Seek to live edge
100
+ */
101
+ seekToLive(): void;
102
+ /**
103
+ * Set seek to live callback
104
+ */
105
+ setSeekToLiveHandler(handler: () => void): void;
106
+ /**
107
+ * Get live indicator element
108
+ */
109
+ getIndicator(): HTMLElement;
110
+ /**
111
+ * Get seek to live button element
112
+ */
113
+ getSeekToLiveButton(): HTMLElement;
114
+ /**
115
+ * Get current live state
116
+ */
117
+ getState(): LiveState;
118
+ /**
119
+ * Check if at live edge
120
+ */
121
+ isAtLiveEdge(): boolean;
122
+ /**
123
+ * Destroy controller
124
+ */
125
+ destroy(): void;
126
+ }
127
+ export declare function createLiveIndicator(config?: LiveConfig): LiveIndicator;
128
+ export declare function createSeekToLiveButton(): SeekToLiveButton;
129
+ export declare function createLiveController(store: StateStore, config?: LiveConfig): LiveController;
130
+ //# sourceMappingURL=live.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../src/core/live.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAMzC,MAAM,WAAW,UAAU;IACzB,oEAAoE;IACpE,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,sEAAsE;IACtE,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,4CAA4C;IAC5C,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,iCAAiC;IACjC,MAAM,EAAE,OAAO,CAAA;IACf,yCAAyC;IACzC,YAAY,EAAE,OAAO,CAAA;IACrB,mCAAmC;IACnC,iBAAiB,EAAE,MAAM,CAAA;IACzB,yCAAyC;IACzC,KAAK,EAAE,OAAO,CAAA;IACd,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAA;CACrB;AAMD,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,KAAK,CAMZ;IAED,OAAO,CAAC,MAAM,CAAsB;gBAExB,MAAM,GAAE,UAAe;IAoCnC;;OAEG;IACH,OAAO,CAAC,WAAW;IAkEnB;;OAEG;IACH,UAAU,IAAI,WAAW;IAIzB;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI;IAgCvC;;OAEG;IACH,IAAI,IAAI,IAAI;IAMZ;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAIlC;;OAEG;IACH,QAAQ,IAAI,SAAS;IAIrB;;OAEG;IACH,OAAO,IAAI,IAAI;CAGhB;AAMD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,OAAO,CAAQ;;IA2BvB,OAAO,CAAC,WAAW;IAuBnB,UAAU,IAAI,iBAAiB;IAI/B,IAAI,IAAI,IAAI;IAKZ,IAAI,IAAI,IAAI;IAKZ,SAAS,IAAI,OAAO;IAIpB,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAIlC,OAAO,IAAI,IAAI;CAGhB;AAMD,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,YAAY,CAA4B;gBAEpC,KAAK,EAAE,UAAU,EAAE,MAAM,GAAE,UAAe;IA4BtD;;OAEG;IACH,OAAO,CAAC,eAAe;IA+BvB;;OAEG;IACH,UAAU,IAAI,IAAI;IAMlB;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAI/C;;OAEG;IACH,YAAY,IAAI,WAAW;IAI3B;;OAEG;IACH,mBAAmB,IAAI,WAAW;IAIlC;;OAEG;IACH,QAAQ,IAAI,SAAS;IAIrB;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,OAAO,IAAI,IAAI;CAOhB;AAMD,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,aAAa,CAEtE;AAED,wBAAgB,sBAAsB,IAAI,gBAAgB,CAEzD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,cAAc,CAE3F"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * ts-video-player Media Session API Integration
3
+ *
4
+ * Provides lock screen / notification controls via navigator.mediaSession.
5
+ *
6
+ * @module core/media-session
7
+ */
8
+ import type { StateStore } from './state';
9
+ export interface MediaSessionOptions {
10
+ /** Title to display */
11
+ title?: string;
12
+ /** Artist name */
13
+ artist?: string;
14
+ /** Album name */
15
+ album?: string;
16
+ /** Artwork images for lock screen */
17
+ artwork?: MediaImage[];
18
+ }
19
+ /**
20
+ * Check if Media Session API is available
21
+ */
22
+ export declare function isMediaSessionSupported(): boolean;
23
+ /**
24
+ * Create a Media Session controller that syncs player state to the browser's
25
+ * media session (lock screen controls, notification area, etc.)
26
+ */
27
+ export declare function createMediaSession(store: StateStore, actions: {
28
+ play: () => void;
29
+ pause: () => void;
30
+ seekTo: (time: number) => void;
31
+ seekBy: (offset: number) => void;
32
+ stop: () => void;
33
+ }, options?: MediaSessionOptions): () => void;
34
+ /**
35
+ * Update media session metadata
36
+ */
37
+ export declare function updateMetadata(options: MediaSessionOptions): void;
38
+ //# sourceMappingURL=media-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-session.d.ts","sourceRoot":"","sources":["../../src/core/media-session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,MAAM,WAAW,mBAAmB;IAClC,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qCAAqC;IACrC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAA;CACvB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE;IACP,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,IAAI,EAAE,MAAM,IAAI,CAAA;CACjB,EACD,OAAO,CAAC,EAAE,mBAAmB,GAC5B,MAAM,IAAI,CAiFZ;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAQjE"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * ts-video-player Orientation Lock
3
+ *
4
+ * Auto-lock screen orientation to landscape when entering fullscreen on mobile.
5
+ *
6
+ * @module core/orientation
7
+ */
8
+ type OrientationType = 'landscape' | 'portrait' | 'any';
9
+ /**
10
+ * Check if Screen Orientation API is available
11
+ */
12
+ export declare function isOrientationLockSupported(): boolean;
13
+ /**
14
+ * Lock the screen orientation (best-effort, silently fails if unsupported)
15
+ */
16
+ export declare function lockOrientation(type: OrientationType): void;
17
+ /**
18
+ * Unlock the screen orientation
19
+ */
20
+ export declare function unlockOrientation(): void;
21
+ export {};
22
+ //# sourceMappingURL=orientation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orientation.d.ts","sourceRoot":"","sources":["../../src/core/orientation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,KAAK,eAAe,GAAG,WAAW,GAAG,UAAU,GAAG,KAAK,CAAA;AAOvD;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,OAAO,CAMpD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAc3D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAQxC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * ts-video-player Popover Positioning
3
+ *
4
+ * Collision-aware positioning for menus and tooltips.
5
+ *
6
+ * @module core/popover
7
+ */
8
+ export interface Rect {
9
+ top: number;
10
+ left: number;
11
+ bottom: number;
12
+ right: number;
13
+ width: number;
14
+ height: number;
15
+ }
16
+ export type Placement = 'top' | 'bottom' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end';
17
+ export interface PositionOptions {
18
+ /** Preferred placement */
19
+ placement?: Placement;
20
+ /** Gap between anchor and popover in px */
21
+ offset?: number;
22
+ /** Boundary element (defaults to viewport) */
23
+ boundary?: HTMLElement | null;
24
+ /** Minimum distance from boundary edges in px */
25
+ padding?: number;
26
+ }
27
+ export interface PositionResult {
28
+ top: number;
29
+ left: number;
30
+ placement: Placement;
31
+ }
32
+ /**
33
+ * Calculate the position of a popover relative to an anchor element,
34
+ * flipping when it would overflow the boundary.
35
+ */
36
+ export declare function computePosition(anchor: HTMLElement, popover: HTMLElement, options?: PositionOptions): PositionResult;
37
+ /**
38
+ * Apply computed position to a popover element using absolute positioning
39
+ * relative to an offset parent.
40
+ */
41
+ export declare function applyPosition(anchor: HTMLElement, popover: HTMLElement, options?: PositionOptions): Placement;
42
+ //# sourceMappingURL=popover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../src/core/popover.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,IAAI;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,cAAc,GAAG,YAAY,CAAA;AAElG,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;IAC7B,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,SAAS,CAAA;CACrB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,WAAW,EACpB,OAAO,GAAE,eAAoB,GAC5B,cAAc,CAkEhB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,WAAW,EACpB,OAAO,GAAE,eAAoB,GAC5B,SAAS,CAsBX"}
@@ -0,0 +1,195 @@
1
+ /**
2
+ * Remote Playback (AirPlay & Google Cast)
3
+ *
4
+ * Provides support for remote playback via AirPlay and Google Cast.
5
+ *
6
+ * @module core/remote-playback
7
+ */
8
+ export type RemotePlaybackType = 'airplay' | 'googlecast' | 'none';
9
+ export type RemotePlaybackState = 'disconnected' | 'connecting' | 'connected';
10
+ export interface RemoteDevice {
11
+ /** Device name */
12
+ name: string;
13
+ /** Device type */
14
+ type: RemotePlaybackType;
15
+ /** Device ID (if available) */
16
+ id?: string;
17
+ }
18
+ export interface RemotePlaybackConfig {
19
+ /** Enable AirPlay (default: true on Safari) */
20
+ airPlay?: boolean;
21
+ /** Enable Google Cast (default: true) */
22
+ googleCast?: boolean;
23
+ /** Google Cast application ID (default: Chrome default receiver) */
24
+ castApplicationId?: string;
25
+ /** Callback when device availability changes */
26
+ onAvailabilityChange?: (type: RemotePlaybackType, available: boolean) => void;
27
+ /** Callback when connection state changes */
28
+ onStateChange?: (state: RemotePlaybackState, device?: RemoteDevice) => void;
29
+ }
30
+ /**
31
+ * Check if AirPlay is supported
32
+ */
33
+ export declare function isAirPlaySupported(): boolean;
34
+ /**
35
+ * Check if an element has AirPlay available
36
+ */
37
+ export declare function isAirPlayAvailable(video: HTMLVideoElement): boolean;
38
+ /**
39
+ * Show AirPlay picker
40
+ */
41
+ export declare function showAirPlayPicker(video: HTMLVideoElement): void;
42
+ /**
43
+ * Check if currently playing via AirPlay
44
+ */
45
+ export declare function isAirPlaying(video: HTMLVideoElement): boolean;
46
+ declare global {
47
+ interface Window {
48
+ chrome?: {
49
+ cast?: any;
50
+ };
51
+ __onGCastApiAvailable?: (isAvailable: boolean) => void;
52
+ }
53
+ }
54
+ /**
55
+ * Check if Google Cast is supported
56
+ */
57
+ export declare function isGoogleCastSupported(): boolean;
58
+ /**
59
+ * Load the Google Cast SDK
60
+ */
61
+ export declare function loadGoogleCastSDK(): Promise<void>;
62
+ /**
63
+ * Initialize Google Cast
64
+ */
65
+ export declare function initializeGoogleCast(applicationId?: string): Promise<void>;
66
+ /**
67
+ * Request a Google Cast session
68
+ */
69
+ export declare function requestCastSession(): Promise<any>;
70
+ /**
71
+ * End Google Cast session
72
+ */
73
+ export declare function endCastSession(): void;
74
+ /**
75
+ * Check if currently casting
76
+ */
77
+ export declare function isCasting(): boolean;
78
+ /**
79
+ * Get current cast session
80
+ */
81
+ export declare function getCastSession(): any;
82
+ /**
83
+ * Cast media to connected device
84
+ */
85
+ export declare function castMedia(url: string, contentType: string, metadata?: {
86
+ title?: string;
87
+ subtitle?: string;
88
+ images?: string[];
89
+ }): Promise<void>;
90
+ export declare class RemotePlaybackController {
91
+ private video;
92
+ private config;
93
+ private state;
94
+ private connectedDevice;
95
+ private airPlayAvailable;
96
+ private googleCastAvailable;
97
+ private listeners;
98
+ constructor(config?: RemotePlaybackConfig);
99
+ /**
100
+ * Attach to a video element
101
+ */
102
+ attach(video: HTMLVideoElement): Promise<void>;
103
+ /**
104
+ * Setup AirPlay event listeners
105
+ */
106
+ private setupAirPlay;
107
+ /**
108
+ * Setup Google Cast event listeners
109
+ */
110
+ private setupGoogleCast;
111
+ /**
112
+ * Show remote playback picker
113
+ */
114
+ showPicker(type?: RemotePlaybackType): Promise<void>;
115
+ /**
116
+ * Disconnect from remote device
117
+ */
118
+ disconnect(): void;
119
+ /**
120
+ * Check if AirPlay is available
121
+ */
122
+ isAirPlayAvailable(): boolean;
123
+ /**
124
+ * Check if Google Cast is available
125
+ */
126
+ isGoogleCastAvailable(): boolean;
127
+ /**
128
+ * Check if any remote playback is available
129
+ */
130
+ isRemotePlaybackAvailable(): boolean;
131
+ /**
132
+ * Get current state
133
+ */
134
+ getState(): RemotePlaybackState;
135
+ /**
136
+ * Get connected device
137
+ */
138
+ getConnectedDevice(): RemoteDevice | null;
139
+ /**
140
+ * Check if currently connected to a remote device
141
+ */
142
+ isConnected(): boolean;
143
+ /**
144
+ * Add event listener
145
+ */
146
+ on(event: string, handler: (...args: any[]) => void): void;
147
+ /**
148
+ * Remove event listener
149
+ */
150
+ off(event: string, handler: (...args: any[]) => void): void;
151
+ /**
152
+ * Emit event
153
+ */
154
+ private emit;
155
+ /**
156
+ * Detach from video element
157
+ */
158
+ detach(): void;
159
+ /**
160
+ * Destroy controller
161
+ */
162
+ destroy(): void;
163
+ }
164
+ export declare class AirPlayButton {
165
+ private button;
166
+ private _available;
167
+ constructor();
168
+ private applyStyles;
169
+ getElement(): HTMLButtonElement;
170
+ setAvailable(available: boolean): void;
171
+ isAvailable(): boolean;
172
+ show(): void;
173
+ hide(): void;
174
+ setActive(active: boolean): void;
175
+ onClick(handler: () => void): void;
176
+ destroy(): void;
177
+ }
178
+ export declare class GoogleCastButton {
179
+ private button;
180
+ private _available;
181
+ constructor();
182
+ private applyStyles;
183
+ getElement(): HTMLButtonElement;
184
+ setAvailable(available: boolean): void;
185
+ isAvailable(): boolean;
186
+ show(): void;
187
+ hide(): void;
188
+ setActive(active: boolean): void;
189
+ onClick(handler: () => void): void;
190
+ destroy(): void;
191
+ }
192
+ export declare function createRemotePlaybackController(config?: RemotePlaybackConfig): RemotePlaybackController;
193
+ export declare function createAirPlayButton(): AirPlayButton;
194
+ export declare function createGoogleCastButton(): GoogleCastButton;
195
+ //# sourceMappingURL=remote-playback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-playback.d.ts","sourceRoot":"","sources":["../../src/core/remote-playback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Settings Menu
3
+ *
4
+ * Unified settings menu for quality, speed, captions, and audio.
5
+ *
6
+ * @module core/settings-menu
7
+ */
8
+ import type { VideoQuality, AudioTrack, TextTrack } from '../types';
9
+ export interface SettingsMenuConfig {
10
+ /** Show quality options */
11
+ quality?: boolean;
12
+ /** Show playback speed options */
13
+ speed?: boolean;
14
+ /** Show captions options */
15
+ captions?: boolean;
16
+ /** Show audio track options */
17
+ audioTracks?: boolean;
18
+ /** Show audio boost options */
19
+ audioBoost?: boolean;
20
+ /** Custom speed values */
21
+ speedValues?: number[];
22
+ /** Custom boost values */
23
+ boostValues?: number[];
24
+ }
25
+ export interface SettingsMenuState {
26
+ qualities: VideoQuality[];
27
+ currentQuality: VideoQuality | null;
28
+ isAutoQuality: boolean;
29
+ speeds: number[];
30
+ currentSpeed: number;
31
+ textTracks: TextTrack[];
32
+ currentTextTrack: TextTrack | null;
33
+ audioTracks: AudioTrack[];
34
+ currentAudioTrack: AudioTrack | null;
35
+ audioBoost: number;
36
+ }
37
+ export declare class SettingsMenu {
38
+ private container;
39
+ private config;
40
+ private state;
41
+ private currentView;
42
+ private visible;
43
+ private onQualityChange;
44
+ private onSpeedChange;
45
+ private onTextTrackChange;
46
+ private onAudioTrackChange;
47
+ private onBoostChange;
48
+ constructor(config?: SettingsMenuConfig);
49
+ private applyStyles;
50
+ /**
51
+ * Update state
52
+ */
53
+ updateState(state: Partial<SettingsMenuState>): void;
54
+ /**
55
+ * Render menu
56
+ */
57
+ private render;
58
+ /**
59
+ * Render main menu
60
+ */
61
+ private renderMainMenu;
62
+ /**
63
+ * Render quality submenu
64
+ */
65
+ private renderQualityMenu;
66
+ /**
67
+ * Render speed submenu
68
+ */
69
+ private renderSpeedMenu;
70
+ /**
71
+ * Render captions submenu
72
+ */
73
+ private renderCaptionsMenu;
74
+ /**
75
+ * Render audio submenu
76
+ */
77
+ private renderAudioMenu;
78
+ /**
79
+ * Render audio boost submenu
80
+ */
81
+ private renderBoostMenu;
82
+ /**
83
+ * Add menu item with value
84
+ */
85
+ private addMenuItem;
86
+ /**
87
+ * Add radio item
88
+ */
89
+ private addRadioItem;
90
+ /**
91
+ * Add back button
92
+ */
93
+ private addBackButton;
94
+ /**
95
+ * Go back to main menu
96
+ */
97
+ private goBack;
98
+ /**
99
+ * Show menu
100
+ */
101
+ show(): void;
102
+ /**
103
+ * Hide menu
104
+ */
105
+ hide(): void;
106
+ /**
107
+ * Toggle menu
108
+ */
109
+ toggle(): void;
110
+ /**
111
+ * Check if visible
112
+ */
113
+ isVisible(): boolean;
114
+ /**
115
+ * Set event handlers
116
+ */
117
+ onQuality(handler: (quality: VideoQuality | 'auto') => void): void;
118
+ onSpeed(handler: (speed: number) => void): void;
119
+ onTextTrack(handler: (track: TextTrack | null) => void): void;
120
+ onAudioTrack(handler: (track: AudioTrack) => void): void;
121
+ onBoost(handler: (boost: number) => void): void;
122
+ /**
123
+ * Get element
124
+ */
125
+ getElement(): HTMLElement;
126
+ /**
127
+ * Destroy
128
+ */
129
+ destroy(): void;
130
+ }
131
+ export declare function createSettingsMenu(config?: SettingsMenuConfig): SettingsMenu;
132
+ //# sourceMappingURL=settings-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-menu.d.ts","sourceRoot":"","sources":["../../src/core/settings-menu.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Buffering Spinner
3
+ *
4
+ * Loading indicator for buffering states.
5
+ *
6
+ * @module core/spinner
7
+ */
8
+ export interface SpinnerConfig {
9
+ /** Spinner size in pixels */
10
+ size?: number;
11
+ /** Track width */
12
+ trackWidth?: number;
13
+ /** Track color */
14
+ trackColor?: string;
15
+ /** Fill color */
16
+ fillColor?: string;
17
+ /** Animation duration in ms */
18
+ duration?: number;
19
+ /** Show/hide delay in ms */
20
+ delay?: number;
21
+ }
22
+ export declare class Spinner {
23
+ private container;
24
+ private svg;
25
+ private track;
26
+ private fill;
27
+ private config;
28
+ private visible;
29
+ private showTimeout;
30
+ constructor(config?: SpinnerConfig);
31
+ private applyStyles;
32
+ /**
33
+ * Get the element
34
+ */
35
+ getElement(): HTMLElement;
36
+ /**
37
+ * Show spinner (with optional delay)
38
+ */
39
+ show(immediate?: boolean): void;
40
+ /**
41
+ * Hide spinner
42
+ */
43
+ hide(): void;
44
+ /**
45
+ * Check if visible
46
+ */
47
+ isVisible(): boolean;
48
+ /**
49
+ * Set fill percentage (0-100)
50
+ */
51
+ setProgress(percent: number): void;
52
+ /**
53
+ * Reset to indeterminate
54
+ */
55
+ resetProgress(): void;
56
+ /**
57
+ * Update config
58
+ */
59
+ updateConfig(config: Partial<SpinnerConfig>): void;
60
+ /**
61
+ * Destroy
62
+ */
63
+ destroy(): void;
64
+ }
65
+ export declare function createSpinner(config?: SpinnerConfig): Spinner;
66
+ export declare const SPINNER_STYLES = "\n.tsvp-spinner {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n z-index: 5;\n pointer-events: none;\n}\n\n.tsvp-spinner svg {\n animation: tsvp-spinner-rotate 1s linear infinite;\n}\n\n@keyframes tsvp-spinner-rotate {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n";
67
+ //# sourceMappingURL=spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/core/spinner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,aAAa;IAC5B,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAMD,qBAAa,OAAO;IAClB,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,GAAG,CAAe;IAC1B,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,WAAW,CAA6C;gBAEpD,MAAM,GAAE,aAAkB;IAuDtC,OAAO,CAAC,WAAW;IA8CnB;;OAEG;IACH,UAAU,IAAI,WAAW;IAIzB;;OAEG;IACH,IAAI,CAAC,SAAS,UAAQ,GAAG,IAAI;IAsB7B;;OAEG;IACH,IAAI,IAAI,IAAI;IAuBZ;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IASlC;;OAEG;IACH,aAAa,IAAI,IAAI;IAQrB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAoClD;;OAEG;IACH,OAAO,IAAI,IAAI;CAMhB;AAMD,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAE7D;AAMD,eAAO,MAAM,cAAc,2VAkB1B,CAAA"}