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,142 @@
1
+ /**
2
+ * ts-video-player State Management
3
+ *
4
+ * Simple reactive state system for the video player.
5
+ *
6
+ * @module core/state
7
+ */
8
+ import type { PlayerState } from '../types';
9
+ /**
10
+ * Shallow equality comparison for plain objects.
11
+ * Returns true if both objects have the same keys with === equal values.
12
+ * Used to optimize selector subscriptions — skip notifications when
13
+ * derived state hasn't meaningfully changed.
14
+ */
15
+ export declare function shallowEqual<T extends Record<string, unknown>>(a: T, b: T): boolean;
16
+ type Unsubscribe = () => void;
17
+ /**
18
+ * Create a reactive signal
19
+ */
20
+ export declare function createSignal<T>(initial: T): [() => T, (value: T | ((prev: T) => T)) => void];
21
+ /**
22
+ * Create a computed value from signals
23
+ */
24
+ export declare function computed<T>(fn: () => T, deps: Array<() => unknown>): () => T;
25
+ /**
26
+ * Default player state
27
+ */
28
+ export declare function createDefaultState(): PlayerState;
29
+ /**
30
+ * State store for the player
31
+ *
32
+ * Uses microtask-coalesced notifications: multiple rapid set() calls within
33
+ * the same microtask are batched into a single notification cycle. This prevents
34
+ * redundant re-renders when many state fields change in quick succession
35
+ * (e.g., timeupdate + progress + buffered all firing together).
36
+ */
37
+ export declare class StateStore {
38
+ private state;
39
+ private listeners;
40
+ private _pendingKeys;
41
+ private _flushScheduled;
42
+ constructor(initial?: Partial<PlayerState>);
43
+ /**
44
+ * Get the current state
45
+ */
46
+ getState(): Readonly<PlayerState>;
47
+ /**
48
+ * Get a specific state value
49
+ */
50
+ get<K extends keyof PlayerState>(key: K): PlayerState[K];
51
+ /**
52
+ * Set a single state value. Notifications are coalesced via microtask.
53
+ */
54
+ set<K extends keyof PlayerState>(key: K, value: PlayerState[K]): void;
55
+ /**
56
+ * Batch update multiple state values. Notifications are coalesced via microtask.
57
+ */
58
+ batch(updates: Partial<PlayerState>): void;
59
+ /**
60
+ * Subscribe to state changes
61
+ */
62
+ subscribe(keyOrListener: keyof PlayerState | '*' | ((_state: PlayerState, _key?: keyof PlayerState) => void), listener?: (_state: PlayerState, _key?: keyof PlayerState) => void): Unsubscribe;
63
+ /**
64
+ * Reset state to defaults
65
+ */
66
+ reset(): void;
67
+ /**
68
+ * Force synchronous flush of pending notifications.
69
+ * Useful in tests or when immediate consistency is required.
70
+ */
71
+ flush(): void;
72
+ private scheduleNotify;
73
+ private notifyKey;
74
+ private notifyAll;
75
+ }
76
+ /**
77
+ * Calculate buffered percentage
78
+ */
79
+ export declare function selectBufferedAmount(state: PlayerState): number;
80
+ /**
81
+ * Calculate progress percentage
82
+ */
83
+ export declare function selectProgress(state: PlayerState): number;
84
+ /**
85
+ * Get remaining time
86
+ */
87
+ export declare function selectRemainingTime(state: PlayerState): number;
88
+ /**
89
+ * Check if player is in idle state
90
+ */
91
+ export declare function selectIsIdle(state: PlayerState): boolean;
92
+ /**
93
+ * Check if player is loading
94
+ */
95
+ export declare function selectIsLoading(state: PlayerState): boolean;
96
+ /**
97
+ * Check if live stream
98
+ */
99
+ export declare function selectIsLive(state: PlayerState): boolean;
100
+ /**
101
+ * Check if DVR enabled
102
+ */
103
+ export declare function selectIsDVR(state: PlayerState): boolean;
104
+ /**
105
+ * Get current quality
106
+ */
107
+ export declare function selectCurrentQuality(state: PlayerState): string | null;
108
+ /**
109
+ * Get current text track
110
+ */
111
+ export declare function selectCurrentTextTrack(state: PlayerState): string | null;
112
+ /**
113
+ * Get current audio track
114
+ */
115
+ export declare function selectCurrentAudioTrack(state: PlayerState): string | null;
116
+ /** @deprecated Use `state.fullscreenAvailability === 'available'` instead */
117
+ export declare function selectCanFullscreen(state: PlayerState): boolean;
118
+ /** @deprecated Use `state.pipAvailability === 'available'` instead */
119
+ export declare function selectCanPiP(state: PlayerState): boolean;
120
+ /** @deprecated Use `state.volumeAvailability === 'available'` instead */
121
+ export declare function selectCanSetVolume(state: PlayerState): boolean;
122
+ interface StoredState {
123
+ volume: number;
124
+ muted: boolean;
125
+ playbackRate: number;
126
+ captions: boolean;
127
+ quality: string;
128
+ }
129
+ /**
130
+ * Load persisted state from storage
131
+ */
132
+ export declare function loadPersistedState(storage?: Storage): Partial<StoredState>;
133
+ /**
134
+ * Save state to storage
135
+ */
136
+ export declare function savePersistedState(state: Partial<StoredState>, storage?: Storage): void;
137
+ /**
138
+ * Create storage sync for state store
139
+ */
140
+ export declare function createStorageSync(store: StateStore, keys?: (keyof StoredState)[], storage?: Storage): Unsubscribe;
141
+ export {};
142
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * ts-video-player Text Tracks
3
+ *
4
+ * Comprehensive text track management for captions and subtitles.
5
+ * Supports VTT, SRT, and external track loading.
6
+ *
7
+ * @module core/text-tracks
8
+ */
9
+ import type { TextTrack, TextTrackCue } from '../types';
10
+ /**
11
+ * Text track ready state
12
+ */
13
+ export declare enum TextTrackReadyState {
14
+ /** Not loaded */
15
+ NotLoaded = 0,
16
+ /** Loading */
17
+ Loading = 1,
18
+ /** Ready */
19
+ Ready = 2,
20
+ /** Error */
21
+ Error = 3
22
+ }
23
+ /**
24
+ * Text track init options
25
+ */
26
+ export interface TextTrackInit {
27
+ /** Track kind */
28
+ kind: TextTrack['kind'];
29
+ /** Track label */
30
+ label: string;
31
+ /** Track language (BCP 47) */
32
+ language: string;
33
+ /** Track source URL */
34
+ src?: string;
35
+ /** Whether this is the default track */
36
+ default?: boolean;
37
+ /** Track content (VTT/SRT string) */
38
+ content?: string;
39
+ }
40
+ /**
41
+ * VTT cue init options
42
+ */
43
+ export interface VTTCueInit {
44
+ /** Cue ID */
45
+ id?: string;
46
+ /** Start time in seconds */
47
+ startTime: number;
48
+ /** End time in seconds */
49
+ endTime: number;
50
+ /** Cue text */
51
+ text: string;
52
+ /** Vertical setting */
53
+ vertical?: '' | 'rl' | 'lr';
54
+ /** Line position */
55
+ line?: number | 'auto';
56
+ /** Line alignment */
57
+ lineAlign?: 'start' | 'center' | 'end';
58
+ /** Position */
59
+ position?: number | 'auto';
60
+ /** Position alignment */
61
+ positionAlign?: 'line-left' | 'center' | 'line-right' | 'auto';
62
+ /** Size (percentage) */
63
+ size?: number;
64
+ /** Alignment */
65
+ align?: 'start' | 'center' | 'end' | 'left' | 'right';
66
+ }
67
+ /**
68
+ * Manages a list of text tracks
69
+ */
70
+ export declare class TextTrackList {
71
+ private tracks;
72
+ private listeners;
73
+ private video;
74
+ constructor(video?: HTMLVideoElement);
75
+ /**
76
+ * Get all tracks
77
+ */
78
+ getAll(): TextTrack[];
79
+ /**
80
+ * Get track by ID
81
+ */
82
+ get(id: string): TextTrack | null;
83
+ /**
84
+ * Get currently showing track
85
+ */
86
+ getShowing(): TextTrack | null;
87
+ /**
88
+ * Add a new text track
89
+ */
90
+ add(init: TextTrackInit): Promise<TextTrack>;
91
+ /**
92
+ * Remove a text track
93
+ */
94
+ remove(id: string): void;
95
+ /**
96
+ * Set track mode
97
+ */
98
+ setMode(id: string, mode: TextTrack['mode']): void;
99
+ /**
100
+ * Get active cues at a specific time
101
+ */
102
+ getActiveCues(time: number): TextTrackCue[];
103
+ /**
104
+ * Subscribe to track changes
105
+ */
106
+ subscribe(listener: (tracks: TextTrack[]) => void): () => void;
107
+ /**
108
+ * Clear all tracks
109
+ */
110
+ clear(): void;
111
+ private addToVideo;
112
+ private notify;
113
+ }
114
+ export interface CaptionRendererOptions {
115
+ /** Container element */
116
+ container: HTMLElement;
117
+ /** Font size */
118
+ fontSize?: number;
119
+ /** Font family */
120
+ fontFamily?: string;
121
+ /** Text color */
122
+ color?: string;
123
+ /** Background color */
124
+ backgroundColor?: string;
125
+ /** Background opacity */
126
+ backgroundOpacity?: number;
127
+ /** Text shadow */
128
+ textShadow?: boolean;
129
+ }
130
+ /**
131
+ * Render captions on screen
132
+ */
133
+ export declare class CaptionRenderer {
134
+ private container;
135
+ private element;
136
+ private options;
137
+ constructor(options: CaptionRendererOptions);
138
+ private createCaptionElement;
139
+ private applyStyles;
140
+ /**
141
+ * Update the displayed text
142
+ */
143
+ setText(text: string): void;
144
+ /**
145
+ * Update renderer options
146
+ */
147
+ setOptions(options: Partial<Omit<CaptionRendererOptions, 'container'>>): void;
148
+ /**
149
+ * Destroy the renderer
150
+ */
151
+ destroy(): void;
152
+ private hexToRgba;
153
+ }
154
+ /**
155
+ * Create a new text track list
156
+ */
157
+ export declare function createTextTrackList(video?: HTMLVideoElement): TextTrackList;
158
+ /**
159
+ * Create a caption renderer
160
+ */
161
+ export declare function createCaptionRenderer(options: CaptionRendererOptions): CaptionRenderer;
162
+ //# sourceMappingURL=text-tracks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-tracks.d.ts","sourceRoot":"","sources":["../../src/core/text-tracks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,213 @@
1
+ /**
2
+ * CSS Variables / Theming System
3
+ *
4
+ * Provides a comprehensive theming system using CSS custom properties.
5
+ *
6
+ * @module core/themes
7
+ */
8
+ export interface ThemeColors {
9
+ /** Primary brand color (default: #00a8ff) */
10
+ primary?: string;
11
+ /** Secondary accent color */
12
+ secondary?: string;
13
+ /** Background color */
14
+ background?: string;
15
+ /** Text color */
16
+ text?: string;
17
+ /** Text color on primary background */
18
+ textOnPrimary?: string;
19
+ /** Border color */
20
+ border?: string;
21
+ /** Focus ring color */
22
+ focus?: string;
23
+ /** Error/danger color */
24
+ error?: string;
25
+ /** Success color */
26
+ success?: string;
27
+ /** Warning color */
28
+ warning?: string;
29
+ }
30
+ export interface ThemeTypography {
31
+ /** Font family for UI elements */
32
+ fontFamily?: string;
33
+ /** Base font size */
34
+ fontSize?: string;
35
+ /** Small font size */
36
+ fontSizeSmall?: string;
37
+ /** Large font size */
38
+ fontSizeLarge?: string;
39
+ /** Font weight */
40
+ fontWeight?: string;
41
+ /** Bold font weight */
42
+ fontWeightBold?: string;
43
+ /** Line height */
44
+ lineHeight?: string;
45
+ }
46
+ export interface ThemeSpacing {
47
+ /** Extra small spacing (4px) */
48
+ xs?: string;
49
+ /** Small spacing (8px) */
50
+ sm?: string;
51
+ /** Medium spacing (12px) */
52
+ md?: string;
53
+ /** Large spacing (16px) */
54
+ lg?: string;
55
+ /** Extra large spacing (24px) */
56
+ xl?: string;
57
+ }
58
+ export interface ThemeBorderRadius {
59
+ /** Small border radius */
60
+ sm?: string;
61
+ /** Medium border radius */
62
+ md?: string;
63
+ /** Large border radius */
64
+ lg?: string;
65
+ /** Full/round border radius */
66
+ full?: string;
67
+ }
68
+ export interface ThemeShadows {
69
+ /** Small shadow */
70
+ sm?: string;
71
+ /** Medium shadow */
72
+ md?: string;
73
+ /** Large shadow */
74
+ lg?: string;
75
+ }
76
+ export interface ThemeTransitions {
77
+ /** Fast transition duration */
78
+ fast?: string;
79
+ /** Normal transition duration */
80
+ normal?: string;
81
+ /** Slow transition duration */
82
+ slow?: string;
83
+ /** Default easing function */
84
+ easing?: string;
85
+ }
86
+ export interface ThemeSlider {
87
+ /** Slider track height */
88
+ trackHeight?: string;
89
+ /** Slider thumb size */
90
+ thumbSize?: string;
91
+ /** Slider track background */
92
+ trackBg?: string;
93
+ /** Slider track fill background */
94
+ trackFillBg?: string;
95
+ /** Slider buffered background */
96
+ bufferedBg?: string;
97
+ /** Slider thumb background */
98
+ thumbBg?: string;
99
+ /** Slider thumb border */
100
+ thumbBorder?: string;
101
+ }
102
+ export interface ThemeControls {
103
+ /** Controls bar height */
104
+ height?: string;
105
+ /** Controls background */
106
+ background?: string;
107
+ /** Controls padding */
108
+ padding?: string;
109
+ /** Button size */
110
+ buttonSize?: string;
111
+ /** Icon size */
112
+ iconSize?: string;
113
+ /** Tooltip background */
114
+ tooltipBg?: string;
115
+ /** Tooltip text color */
116
+ tooltipText?: string;
117
+ }
118
+ export interface ThemeMenu {
119
+ /** Menu background */
120
+ background?: string;
121
+ /** Menu border radius */
122
+ borderRadius?: string;
123
+ /** Menu shadow */
124
+ shadow?: string;
125
+ /** Menu item height */
126
+ itemHeight?: string;
127
+ /** Menu item hover background */
128
+ itemHoverBg?: string;
129
+ /** Menu item active background */
130
+ itemActiveBg?: string;
131
+ }
132
+ export interface ThemeCaptions {
133
+ /** Caption font family */
134
+ fontFamily?: string;
135
+ /** Caption font size */
136
+ fontSize?: string;
137
+ /** Caption text color */
138
+ textColor?: string;
139
+ /** Caption background */
140
+ background?: string;
141
+ /** Caption text shadow */
142
+ textShadow?: string;
143
+ /** Caption border radius */
144
+ borderRadius?: string;
145
+ /** Caption padding */
146
+ padding?: string;
147
+ }
148
+ export interface ThemeThumbnails {
149
+ /** Thumbnail width */
150
+ width?: string;
151
+ /** Thumbnail height */
152
+ height?: string;
153
+ /** Thumbnail border radius */
154
+ borderRadius?: string;
155
+ /** Thumbnail border */
156
+ border?: string;
157
+ /** Thumbnail shadow */
158
+ shadow?: string;
159
+ }
160
+ export interface ThemeLive {
161
+ /** Live indicator color */
162
+ indicatorColor?: string;
163
+ /** Live indicator size */
164
+ indicatorSize?: string;
165
+ /** Live badge background */
166
+ badgeBg?: string;
167
+ /** Live badge text color */
168
+ badgeText?: string;
169
+ }
170
+ export interface Theme {
171
+ colors?: ThemeColors;
172
+ typography?: ThemeTypography;
173
+ spacing?: ThemeSpacing;
174
+ borderRadius?: ThemeBorderRadius;
175
+ shadows?: ThemeShadows;
176
+ transitions?: ThemeTransitions;
177
+ slider?: ThemeSlider;
178
+ controls?: ThemeControls;
179
+ menu?: ThemeMenu;
180
+ captions?: ThemeCaptions;
181
+ thumbnails?: ThemeThumbnails;
182
+ live?: ThemeLive;
183
+ }
184
+ export declare const defaultTheme: Required<Theme>;
185
+ export declare const darkTheme: Theme;
186
+ export declare const lightTheme: Theme;
187
+ export declare const minimalTheme: Theme;
188
+ export declare const netflixTheme: Theme;
189
+ export declare const youtubeTheme: Theme;
190
+ export declare const vimeoTheme: Theme;
191
+ export declare const presetThemes: Record<string, Theme>;
192
+ export type PresetThemeName = keyof typeof presetThemes;
193
+ /**
194
+ * Deep merge two theme objects
195
+ */
196
+ export declare function mergeThemes(base: Theme, override: Theme): Theme;
197
+ /**
198
+ * Generate CSS custom properties from a theme
199
+ */
200
+ export declare function generateThemeCSS(theme: Theme, prefix?: string): string;
201
+ /**
202
+ * Create a style element with theme CSS
203
+ */
204
+ export declare function createThemeStyleElement(theme: Theme, selector?: string): HTMLStyleElement;
205
+ /**
206
+ * Apply theme to a player element
207
+ */
208
+ export declare function applyTheme(element: HTMLElement, theme: Theme | PresetThemeName): void;
209
+ /**
210
+ * Inject global theme styles
211
+ */
212
+ export declare function injectThemeStyles(theme?: Theme | PresetThemeName, selector?: string): void;
213
+ //# sourceMappingURL=themes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../../src/core/themes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,WAAW;IAC1B,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uBAAuB;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iBAAiB;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,uCAAuC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mBAAmB;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,sBAAsB;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,sBAAsB;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,uBAAuB;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,0BAA0B;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,4BAA4B;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,2BAA2B;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,iCAAiC;IACjC,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,iBAAiB;IAChC,0BAA0B;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,2BAA2B;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,0BAA0B;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,mBAAmB;IACnB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,oBAAoB;IACpB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,mBAAmB;IACnB,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0BAA0B;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,sBAAsB;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,yBAAyB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,uBAAuB;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yBAAyB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,0BAA0B;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4BAA4B;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,8BAA8B;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,2BAA2B;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,0BAA0B;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,KAAK;IACpB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,YAAY,CAAC,EAAE,iBAAiB,CAAA;IAChC,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,WAAW,CAAC,EAAE,gBAAgB,CAAA;IAC9B,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,QAAQ,CAAC,EAAE,aAAa,CAAA;IACxB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,QAAQ,CAAC,EAAE,aAAa,CAAA;IACxB,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB;AAMD,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,KAAK,CA8FxC,CAAA;AAMD,eAAO,MAAM,SAAS,EAAE,KAMvB,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAsBxB,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAa1B,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAY1B,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAiB1B,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAQxB,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAO9C,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,YAAY,CAAA;AAMvD;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,KAAK,CAmB/D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,GAAG,MAAM,CA0HtE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,SAAiB,GAAG,gBAAgB,CASjG;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,GAAG,eAAe,GAAG,IAAI,CASrF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,GAAE,KAAK,GAAG,eAAoB,EAAE,QAAQ,SAAiB,GAAG,IAAI,CActG"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Thumbnail Sprites / Seek Preview
3
+ *
4
+ * Provides thumbnail preview functionality during seeking.
5
+ *
6
+ * @module core/thumbnails
7
+ */
8
+ export interface ThumbnailSprite {
9
+ /** URL to the sprite image */
10
+ url: string;
11
+ /** Width of each thumbnail in pixels */
12
+ width: number;
13
+ /** Height of each thumbnail in pixels */
14
+ height: number;
15
+ /** Number of columns in the sprite */
16
+ cols: number;
17
+ /** Number of rows in the sprite */
18
+ rows: number;
19
+ /** Duration each thumbnail represents in seconds */
20
+ interval: number;
21
+ /** Starting time offset in seconds */
22
+ startTime?: number;
23
+ }
24
+ export interface ThumbnailCue {
25
+ /** Start time in seconds */
26
+ startTime: number;
27
+ /** End time in seconds */
28
+ endTime: number;
29
+ /** URL to the thumbnail image (or sprite) */
30
+ url: string;
31
+ /** X position in sprite (if using sprite) */
32
+ x?: number;
33
+ /** Y position in sprite (if using sprite) */
34
+ y?: number;
35
+ /** Width of thumbnail */
36
+ width: number;
37
+ /** Height of thumbnail */
38
+ height: number;
39
+ }
40
+ export interface ThumbnailsConfig {
41
+ /** Source for thumbnails - URL to VTT file or sprite config */
42
+ src?: string | ThumbnailSprite | ThumbnailCue[];
43
+ /** Whether to preload thumbnail images */
44
+ preload?: boolean;
45
+ /** Custom thumbnail renderer */
46
+ renderer?: (cue: ThumbnailCue, container: HTMLElement) => void;
47
+ }
48
+ /**
49
+ * Parse a WebVTT file containing thumbnail cues
50
+ *
51
+ * VTT format for thumbnails:
52
+ * ```
53
+ * WEBVTT
54
+ *
55
+ * 00:00:00.000 --> 00:00:05.000
56
+ * sprite.jpg#xywh=0,0,160,90
57
+ *
58
+ * 00:00:05.000 --> 00:00:10.000
59
+ * sprite.jpg#xywh=160,0,160,90
60
+ * ```
61
+ */
62
+ export declare function parseThumbnailVTT(url: string): Promise<ThumbnailCue[]>;
63
+ /**
64
+ * Generate thumbnail cues from a sprite configuration
65
+ */
66
+ export declare function generateSpriteCues(sprite: ThumbnailSprite, duration: number): ThumbnailCue[];
67
+ export declare class Thumbnails {
68
+ private cues;
69
+ private preloadedImages;
70
+ private container;
71
+ private _currentCue;
72
+ private config;
73
+ constructor(config?: ThumbnailsConfig);
74
+ /**
75
+ * Initialize thumbnails from config
76
+ */
77
+ initialize(duration: number): Promise<void>;
78
+ /**
79
+ * Preload all unique thumbnail images
80
+ */
81
+ private preloadImages;
82
+ /**
83
+ * Get thumbnail cue for a specific time
84
+ */
85
+ getCueForTime(time: number): ThumbnailCue | null;
86
+ /**
87
+ * Create thumbnail preview element
88
+ */
89
+ createPreviewElement(): HTMLElement;
90
+ /**
91
+ * Update thumbnail preview for a specific time
92
+ */
93
+ updatePreview(time: number, position?: number): void;
94
+ /**
95
+ * Show thumbnail preview
96
+ */
97
+ show(): void;
98
+ /**
99
+ * Hide thumbnail preview
100
+ */
101
+ hide(): void;
102
+ /**
103
+ * Get all cues
104
+ */
105
+ getCues(): ThumbnailCue[];
106
+ /**
107
+ * Add cues manually
108
+ */
109
+ addCues(cues: ThumbnailCue[]): void;
110
+ /**
111
+ * Get current cue
112
+ */
113
+ getCurrentCue(): ThumbnailCue | null;
114
+ /**
115
+ * Clear all cues
116
+ */
117
+ clear(): void;
118
+ /**
119
+ * Destroy thumbnails instance
120
+ */
121
+ destroy(): void;
122
+ }
123
+ export declare function createThumbnails(config?: ThumbnailsConfig): Thumbnails;
124
+ //# sourceMappingURL=thumbnails.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thumbnails.d.ts","sourceRoot":"","sources":["../../src/core/thumbnails.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAA;IACd,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAA;IAChB,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAA;IACX,6CAA6C;IAC7C,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,6CAA6C;IAC7C,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,YAAY,EAAE,CAAA;IAC/C,0CAA0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,KAAK,IAAI,CAAA;CAC/D;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAyC5E;AAyDD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CA2B5F;AAMD,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,eAAe,CAAsC;IAC7D,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,GAAE,gBAAqB;IAIzC;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBjD;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAShD;;OAEG;IACH,oBAAoB,IAAI,WAAW;IAmDnC;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IA8CpD;;OAEG;IACH,IAAI,IAAI,IAAI;IAMZ;;OAEG;IACH,IAAI,IAAI,IAAI;IAMZ;;OAEG;IACH,OAAO,IAAI,YAAY,EAAE;IAIzB;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,IAAI;IAInC;;OAEG;IACH,aAAa,IAAI,YAAY,GAAG,IAAI;IAIpC;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,OAAO,IAAI,IAAI;CAOhB;AAMD,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,UAAU,CAEtE"}