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,184 @@
1
+ /**
2
+ * End Screen Plugin
3
+ *
4
+ * Display recommendations and actions at video end.
5
+ *
6
+ * @module plugins/end-screen
7
+ */
8
+ import type { Player } from '../player';
9
+ export interface EndScreenConfig {
10
+ /** Show end screen on video end */
11
+ enabled?: boolean;
12
+ /** Auto-show delay after video ends (ms) */
13
+ showDelay?: number;
14
+ /** Recommendations */
15
+ recommendations?: EndScreenRecommendation[];
16
+ /** Custom actions */
17
+ actions?: EndScreenAction[];
18
+ /** Replay button */
19
+ showReplay?: boolean;
20
+ /** Share button */
21
+ showShare?: boolean;
22
+ /** Countdown to next video (0 = disabled) */
23
+ autoplayCountdown?: number;
24
+ /** Title text */
25
+ title?: string;
26
+ /** Custom template */
27
+ template?: string;
28
+ /** Background style */
29
+ backgroundStyle?: 'blur' | 'dark' | 'gradient' | 'none';
30
+ }
31
+ export interface EndScreenRecommendation {
32
+ /** Unique ID */
33
+ id: string;
34
+ /** Title */
35
+ title: string;
36
+ /** Description */
37
+ description?: string;
38
+ /** Thumbnail URL */
39
+ thumbnail: string;
40
+ /** Duration string (e.g., "12:34") */
41
+ duration?: string;
42
+ /** Video URL or callback */
43
+ url?: string;
44
+ /** Click handler */
45
+ onClick?: () => void;
46
+ /** Channel/creator name */
47
+ channel?: string;
48
+ /** View count */
49
+ views?: string;
50
+ /** Upload date */
51
+ date?: string;
52
+ }
53
+ export interface EndScreenAction {
54
+ /** Button text */
55
+ label: string;
56
+ /** Icon (SVG or emoji) */
57
+ icon?: string;
58
+ /** Click handler */
59
+ onClick: () => void;
60
+ /** Button style */
61
+ style?: 'primary' | 'secondary' | 'outline';
62
+ }
63
+ export interface EndScreenState {
64
+ /** Is visible */
65
+ visible: boolean;
66
+ /** Autoplay countdown */
67
+ countdown: number;
68
+ /** Is countdown active */
69
+ isCountingDown: boolean;
70
+ /** Selected recommendation index */
71
+ selectedIndex: number;
72
+ }
73
+ export declare class EndScreenManager {
74
+ private player;
75
+ private config;
76
+ private state;
77
+ private container;
78
+ private element;
79
+ private countdownTimer;
80
+ private showTimer;
81
+ private unsubscribers;
82
+ private onRecommendationClick;
83
+ private onReplay;
84
+ private onAutoplay;
85
+ private onShow;
86
+ private onHide;
87
+ constructor(config?: EndScreenConfig);
88
+ /**
89
+ * Attach to player
90
+ */
91
+ attach(player: Player, container: HTMLElement): void;
92
+ /**
93
+ * Create end screen element
94
+ */
95
+ private createElement;
96
+ /**
97
+ * Apply background style
98
+ */
99
+ private applyBackgroundStyle;
100
+ /**
101
+ * Render end screen content
102
+ */
103
+ private render;
104
+ /**
105
+ * Create recommendation card
106
+ */
107
+ private createRecommendationCard;
108
+ /**
109
+ * Create action button
110
+ */
111
+ private createActionButton;
112
+ /**
113
+ * Attach event listeners
114
+ */
115
+ private attachEventListeners;
116
+ /**
117
+ * Show end screen
118
+ */
119
+ show(): void;
120
+ /**
121
+ * Hide end screen
122
+ */
123
+ hide(): void;
124
+ /**
125
+ * Start autoplay countdown
126
+ */
127
+ private startAutoplayCountdown;
128
+ /**
129
+ * Cancel autoplay
130
+ */
131
+ cancelAutoplay(): void;
132
+ /**
133
+ * Play next video
134
+ */
135
+ private playNextVideo;
136
+ /**
137
+ * Select previous recommendation
138
+ */
139
+ private selectPrevious;
140
+ /**
141
+ * Select next recommendation
142
+ */
143
+ private selectNext;
144
+ /**
145
+ * Select current recommendation
146
+ */
147
+ private selectCurrent;
148
+ /**
149
+ * Replay video
150
+ */
151
+ private replay;
152
+ /**
153
+ * Share video
154
+ */
155
+ private share;
156
+ /**
157
+ * Update recommendations
158
+ */
159
+ setRecommendations(recommendations: EndScreenRecommendation[]): void;
160
+ /**
161
+ * Get state
162
+ */
163
+ getState(): EndScreenState;
164
+ /**
165
+ * Set event handlers
166
+ */
167
+ on(event: 'recommendationClick', handler: (rec: EndScreenRecommendation) => void): void;
168
+ on(event: 'replay', handler: () => void): void;
169
+ on(event: 'autoplay', handler: (rec: EndScreenRecommendation) => void): void;
170
+ on(event: 'show' | 'hide', handler: () => void): void;
171
+ /**
172
+ * Destroy
173
+ */
174
+ destroy(): void;
175
+ }
176
+ export declare function createEndScreen(config?: EndScreenConfig): EndScreenManager;
177
+ /**
178
+ * End screen plugin for Player
179
+ */
180
+ export declare function endScreenPlugin(config: EndScreenConfig): {
181
+ name: string;
182
+ install: (player: Player, container: HTMLElement) => () => void;
183
+ };
184
+ //# sourceMappingURL=end-screen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"end-screen.d.ts","sourceRoot":"","sources":["../../src/plugins/end-screen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Video Player Plugins
3
+ *
4
+ * Optional plugins for extended functionality.
5
+ *
6
+ * @module plugins
7
+ */
8
+ export { VideoAnalytics, createVideoAnalytics, analyticsPlugin, type VideoEventName, type VideoAnalyticsConfig, } from './analytics';
9
+ export { VASTParser, AdsManager, createAdsManager, adsPlugin, type Ad, type AdMediaFile, type AdBreak, type AdConfig, type AdState, } from './ads';
10
+ export { SkipSegmentsManager, createSkipSegments, skipSegmentsPlugin, type SegmentType, type SkipSegment, type SkipSegmentsConfig, type SkipSegmentsState, } from './skip-segments';
11
+ export { EndScreenManager, createEndScreen, endScreenPlugin, type EndScreenRecommendation, type EndScreenConfig, type EndScreenState, } from './end-screen';
12
+ export { WatermarkManager, createWatermarkManager, watermarkPlugin, type WatermarkPosition, type WatermarkConfig, type WatermarkAnimation, type DynamicWatermark, } from './watermark';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,oBAAoB,GAC1B,MAAM,aAAa,CAAA;AAGpB,OAAO,EACL,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,KAAK,EAAE,EACP,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,OAAO,GACb,MAAM,OAAO,CAAA;AAGd,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,aAAa,CAAA"}
@@ -0,0 +1,20 @@
1
+ export {
2
+ watermarkPlugin,
3
+ skipSegmentsPlugin,
4
+ endScreenPlugin,
5
+ createWatermarkManager,
6
+ createVideoAnalytics,
7
+ createSkipSegments,
8
+ createEndScreen,
9
+ createAdsManager,
10
+ analyticsPlugin,
11
+ adsPlugin,
12
+ WatermarkManager,
13
+ VideoAnalytics,
14
+ VASTParser,
15
+ SkipSegmentsManager,
16
+ EndScreenManager,
17
+ AdsManager
18
+ };
19
+
20
+ //# debugId=A3B32FA203220F8B64756E2164756E21
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "A3B32FA203220F8B64756E2164756E21",
8
+ "names": []
9
+ }
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Skip Segments Plugin
3
+ *
4
+ * Skip intro, outro, recap, and other segments.
5
+ *
6
+ * @module plugins/skip-segments
7
+ */
8
+ import type { Player } from '../player';
9
+ export type SegmentType = 'intro' | 'outro' | 'recap' | 'preview' | 'credits' | 'sponsor' | 'custom';
10
+ export interface SkipSegment {
11
+ /** Segment type */
12
+ type: SegmentType;
13
+ /** Start time in seconds */
14
+ startTime: number;
15
+ /** End time in seconds */
16
+ endTime: number;
17
+ /** Skip to time (defaults to endTime) */
18
+ skipTo?: number;
19
+ /** Button text */
20
+ buttonText?: string;
21
+ /** Auto-skip after delay (0 = no auto-skip) */
22
+ autoSkipDelay?: number;
23
+ /** Show countdown */
24
+ showCountdown?: boolean;
25
+ /** Custom data */
26
+ data?: Record<string, unknown>;
27
+ }
28
+ export interface SkipSegmentsConfig {
29
+ /** Skip segments */
30
+ segments: SkipSegment[];
31
+ /** Default button visibility duration (ms) */
32
+ buttonVisibleDuration?: number;
33
+ /** Default auto-skip delay (seconds) */
34
+ defaultAutoSkipDelay?: number;
35
+ /** Position of skip button */
36
+ buttonPosition?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';
37
+ /** Show progress bar markers */
38
+ showMarkers?: boolean;
39
+ /** Marker color */
40
+ markerColor?: string;
41
+ /** Enable keyboard shortcut (Enter to skip) */
42
+ keyboardShortcut?: boolean;
43
+ }
44
+ export interface SkipSegmentsState {
45
+ /** Current active segment */
46
+ activeSegment: SkipSegment | null;
47
+ /** Is button visible */
48
+ buttonVisible: boolean;
49
+ /** Auto-skip countdown */
50
+ countdown: number;
51
+ /** Is auto-skipping */
52
+ isAutoSkipping: boolean;
53
+ }
54
+ export declare class SkipSegmentsManager {
55
+ private player;
56
+ private config;
57
+ private state;
58
+ private container;
59
+ private button;
60
+ private markersContainer;
61
+ private countdownTimer;
62
+ private hideTimer;
63
+ private unsubscribers;
64
+ private onSkip;
65
+ private onSegmentEnter;
66
+ private onSegmentExit;
67
+ constructor(config: SkipSegmentsConfig);
68
+ /**
69
+ * Attach to player
70
+ */
71
+ attach(player: Player, container: HTMLElement): void;
72
+ /**
73
+ * Create skip button
74
+ */
75
+ private createButton;
76
+ /**
77
+ * Get position styles for button
78
+ */
79
+ private getPositionStyles;
80
+ /**
81
+ * Create progress bar markers
82
+ */
83
+ private createMarkers;
84
+ /**
85
+ * Get markers element for progress bar
86
+ */
87
+ getMarkersElement(duration: number): HTMLElement;
88
+ /**
89
+ * Attach event listeners
90
+ */
91
+ private attachEventListeners;
92
+ /**
93
+ * Check if current time is in any segment
94
+ */
95
+ private checkSegments;
96
+ /**
97
+ * Show skip button
98
+ */
99
+ private showButton;
100
+ /**
101
+ * Hide skip button
102
+ */
103
+ private hideButton;
104
+ /**
105
+ * Start auto-skip countdown
106
+ */
107
+ private startAutoSkip;
108
+ /**
109
+ * Update button text with countdown
110
+ */
111
+ private updateButtonText;
112
+ /**
113
+ * Skip current segment
114
+ */
115
+ skip(): void;
116
+ /**
117
+ * Add segment
118
+ */
119
+ addSegment(segment: SkipSegment): void;
120
+ /**
121
+ * Remove segment
122
+ */
123
+ removeSegment(type: SegmentType): void;
124
+ /**
125
+ * Clear all segments
126
+ */
127
+ clearSegments(): void;
128
+ /**
129
+ * Set segments
130
+ */
131
+ setSegments(segments: SkipSegment[]): void;
132
+ /**
133
+ * Get segments
134
+ */
135
+ getSegments(): SkipSegment[];
136
+ /**
137
+ * Get current state
138
+ */
139
+ getState(): SkipSegmentsState;
140
+ /**
141
+ * Set event handlers
142
+ */
143
+ on(event: 'skip', handler: (segment: SkipSegment) => void): void;
144
+ on(event: 'segmentEnter', handler: (segment: SkipSegment) => void): void;
145
+ on(event: 'segmentExit', handler: (segment: SkipSegment) => void): void;
146
+ /**
147
+ * Destroy
148
+ */
149
+ destroy(): void;
150
+ }
151
+ export declare function createSkipSegments(config: SkipSegmentsConfig): SkipSegmentsManager;
152
+ /**
153
+ * Skip segments plugin for Player
154
+ */
155
+ export declare function skipSegmentsPlugin(config: SkipSegmentsConfig): {
156
+ name: string;
157
+ install: (player: Player, container: HTMLElement) => () => void;
158
+ };
159
+ //# sourceMappingURL=skip-segments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skip-segments.d.ts","sourceRoot":"","sources":["../../src/plugins/skip-segments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * Watermark Plugin
3
+ *
4
+ * Display watermarks on video playback.
5
+ *
6
+ * @module plugins/watermark
7
+ */
8
+ import type { Player } from '../player';
9
+ export type WatermarkPosition = 'top-left' | 'top-center' | 'top-right' | 'center-left' | 'center' | 'center-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
10
+ export interface WatermarkConfig {
11
+ /** Image URL */
12
+ image?: string;
13
+ /** Text content */
14
+ text?: string;
15
+ /** HTML content */
16
+ html?: string;
17
+ /** Position */
18
+ position?: WatermarkPosition;
19
+ /** Opacity (0-1) */
20
+ opacity?: number;
21
+ /** Size (CSS value) */
22
+ size?: string;
23
+ /** Offset from edges */
24
+ offset?: {
25
+ x?: number | string;
26
+ y?: number | string;
27
+ };
28
+ /** Link URL */
29
+ url?: string;
30
+ /** Open link in new tab */
31
+ newTab?: boolean;
32
+ /** Show only during playback */
33
+ showOnlyDuringPlayback?: boolean;
34
+ /** Fade in duration (ms) */
35
+ fadeIn?: number;
36
+ /** Fade out duration (ms) */
37
+ fadeOut?: number;
38
+ /** Animation */
39
+ animation?: WatermarkAnimation;
40
+ /** Custom styles */
41
+ styles?: Partial<CSSStyleDeclaration>;
42
+ /** Rotate degrees */
43
+ rotate?: number;
44
+ }
45
+ export interface WatermarkAnimation {
46
+ /** Animation type */
47
+ type: 'fade' | 'slide' | 'bounce' | 'pulse' | 'none';
48
+ /** Animation duration (ms) */
49
+ duration?: number;
50
+ /** Animation delay (ms) */
51
+ delay?: number;
52
+ /** Repeat animation */
53
+ repeat?: boolean;
54
+ }
55
+ export interface DynamicWatermark {
56
+ /** User ID or session info */
57
+ userId?: string;
58
+ /** Timestamp */
59
+ showTimestamp?: boolean;
60
+ /** IP address (for forensic marking) */
61
+ showIp?: boolean;
62
+ /** Custom text */
63
+ customText?: string;
64
+ /** Update interval (ms) */
65
+ updateInterval?: number;
66
+ /** Position randomization */
67
+ randomizePosition?: boolean;
68
+ /** Move interval (ms) */
69
+ moveInterval?: number;
70
+ }
71
+ export declare class WatermarkManager {
72
+ private player;
73
+ private container;
74
+ private elements;
75
+ private dynamicTimers;
76
+ private unsubscribers;
77
+ constructor();
78
+ /**
79
+ * Attach to player
80
+ */
81
+ attach(player: Player, container: HTMLElement): void;
82
+ /**
83
+ * Add a watermark
84
+ */
85
+ add(id: string, config: WatermarkConfig): HTMLElement;
86
+ /**
87
+ * Create watermark element
88
+ */
89
+ private createElement;
90
+ /**
91
+ * Get position styles
92
+ */
93
+ private getPositionStyles;
94
+ /**
95
+ * Setup playback visibility
96
+ */
97
+ private setupPlaybackVisibility;
98
+ /**
99
+ * Apply animation to watermark
100
+ */
101
+ private applyAnimation;
102
+ /**
103
+ * Add dynamic watermark (forensic marking)
104
+ */
105
+ addDynamic(id: string, config: DynamicWatermark, baseConfig?: WatermarkConfig): HTMLElement;
106
+ /**
107
+ * Remove watermark
108
+ */
109
+ remove(id: string): void;
110
+ /**
111
+ * Remove all watermarks
112
+ */
113
+ removeAll(): void;
114
+ /**
115
+ * Update watermark
116
+ */
117
+ update(id: string, config: Partial<WatermarkConfig>): void;
118
+ /**
119
+ * Show watermark
120
+ */
121
+ show(id: string): void;
122
+ /**
123
+ * Hide watermark
124
+ */
125
+ hide(id: string): void;
126
+ /**
127
+ * Show all watermarks
128
+ */
129
+ showAll(): void;
130
+ /**
131
+ * Hide all watermarks
132
+ */
133
+ hideAll(): void;
134
+ /**
135
+ * Get watermark element
136
+ */
137
+ get(id: string): HTMLElement | undefined;
138
+ /**
139
+ * Get all watermark IDs
140
+ */
141
+ getAll(): string[];
142
+ /**
143
+ * Destroy manager
144
+ */
145
+ destroy(): void;
146
+ }
147
+ export declare function createWatermarkManager(): WatermarkManager;
148
+ /**
149
+ * Watermark plugin for Player
150
+ */
151
+ export declare function watermarkPlugin(watermarks: Array<{
152
+ id: string;
153
+ } & WatermarkConfig>): {
154
+ name: string;
155
+ install: (player: Player, container: HTMLElement) => () => void;
156
+ };
157
+ //# sourceMappingURL=watermark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watermark.d.ts","sourceRoot":"","sources":["../../src/plugins/watermark.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * ts-video-player Base Provider
3
+ *
4
+ * Abstract base class for media providers.
5
+ *
6
+ * @module providers/base
7
+ */
8
+ import type { Provider, ProviderType, Src, PlayerOptions, ProviderEventMap, VideoQuality, AudioTrack, TextTrack, FeatureAvailability } from '../types';
9
+ import { EventEmitter } from '../core/events';
10
+ /**
11
+ * Abstract base provider implementation
12
+ */
13
+ export declare abstract class BaseProvider implements Provider {
14
+ abstract readonly name: string;
15
+ abstract readonly type: ProviderType;
16
+ protected container: HTMLElement | null;
17
+ protected options: PlayerOptions;
18
+ protected events: EventEmitter<ProviderEventMap>;
19
+ protected _ready: boolean;
20
+ get mediaElement(): HTMLVideoElement | HTMLAudioElement | HTMLIFrameElement | null;
21
+ get ready(): boolean;
22
+ setup(container: HTMLElement, options: PlayerOptions): Promise<void>;
23
+ protected abstract initialize(): Promise<void>;
24
+ destroy(): void;
25
+ protected abstract cleanup(): void;
26
+ abstract load(src: Src | Src[]): Promise<void>;
27
+ abstract canPlay(src: Src): boolean;
28
+ abstract play(): Promise<void>;
29
+ abstract pause(): void;
30
+ stop(): void;
31
+ abstract seekTo(time: number): void;
32
+ abstract getCurrentTime(): number;
33
+ abstract getDuration(): number;
34
+ abstract setVolume(volume: number): void;
35
+ abstract getVolume(): number;
36
+ abstract setMuted(muted: boolean): void;
37
+ abstract getMuted(): boolean;
38
+ abstract setPlaybackRate(rate: number): void;
39
+ abstract getPlaybackRate(): number;
40
+ getQualities(): VideoQuality[];
41
+ setQuality(_quality: VideoQuality | 'auto'): void;
42
+ getTextTracks(): TextTrack[];
43
+ setTextTrackMode(_trackId: string, _mode: 'disabled' | 'hidden' | 'showing'): void;
44
+ getAudioTracks(): AudioTrack[];
45
+ setAudioTrack(_trackId: string): void;
46
+ getFeatureAvailability(feature: 'volume' | 'fullscreen' | 'pip'): FeatureAvailability;
47
+ enterFullscreen(): Promise<void>;
48
+ exitFullscreen(): Promise<void>;
49
+ protected getFullscreenElement(): HTMLElement | null;
50
+ enterPiP(): Promise<void>;
51
+ exitPiP(): Promise<void>;
52
+ on<K extends keyof ProviderEventMap>(event: K, handler: ProviderEventMap[K]): void;
53
+ off<K extends keyof ProviderEventMap>(event: K, handler: ProviderEventMap[K]): void;
54
+ protected emitError(code: number, message: string, details?: unknown): void;
55
+ }
56
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/providers/base.ts"],"names":[],"mappings":"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"}