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.
- package/LICENSE.md +21 -0
- package/README.md +438 -0
- package/dist/cdn.d.ts +10 -0
- package/dist/cdn.d.ts.map +1 -0
- package/dist/cdn.min.js +1046 -0
- package/dist/cdn.min.js.map +54 -0
- package/dist/cdn.test.d.ts +2 -0
- package/dist/cdn.test.d.ts.map +1 -0
- package/dist/chunk-36x4yhjn.js +765 -0
- package/dist/chunk-36x4yhjn.js.map +12 -0
- package/dist/chunk-eajts2jv.js +4243 -0
- package/dist/chunk-eajts2jv.js.map +42 -0
- package/dist/chunk-z1ehbz9f.js +380 -0
- package/dist/chunk-z1ehbz9f.js.map +19 -0
- package/dist/config.d.ts +9 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/core/audio-gain.d.ts +67 -0
- package/dist/core/audio-gain.d.ts.map +1 -0
- package/dist/core/caption-styles.d.ts +121 -0
- package/dist/core/caption-styles.d.ts.map +1 -0
- package/dist/core/chapters.d.ts +150 -0
- package/dist/core/chapters.d.ts.map +1 -0
- package/dist/core/error-overlay.d.ts +71 -0
- package/dist/core/error-overlay.d.ts.map +1 -0
- package/dist/core/events.d.ts +119 -0
- package/dist/core/events.d.ts.map +1 -0
- package/dist/core/features.d.ts +64 -0
- package/dist/core/features.d.ts.map +1 -0
- package/dist/core/i18n.d.ts +132 -0
- package/dist/core/i18n.d.ts.map +1 -0
- package/dist/core/index.d.ts +37 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/live.d.ts +130 -0
- package/dist/core/live.d.ts.map +1 -0
- package/dist/core/media-session.d.ts +38 -0
- package/dist/core/media-session.d.ts.map +1 -0
- package/dist/core/orientation.d.ts +22 -0
- package/dist/core/orientation.d.ts.map +1 -0
- package/dist/core/popover.d.ts +42 -0
- package/dist/core/popover.d.ts.map +1 -0
- package/dist/core/remote-playback.d.ts +195 -0
- package/dist/core/remote-playback.d.ts.map +1 -0
- package/dist/core/settings-menu.d.ts +132 -0
- package/dist/core/settings-menu.d.ts.map +1 -0
- package/dist/core/spinner.d.ts +67 -0
- package/dist/core/spinner.d.ts.map +1 -0
- package/dist/core/state.d.ts +142 -0
- package/dist/core/state.d.ts.map +1 -0
- package/dist/core/text-tracks.d.ts +162 -0
- package/dist/core/text-tracks.d.ts.map +1 -0
- package/dist/core/themes.d.ts +213 -0
- package/dist/core/themes.d.ts.map +1 -0
- package/dist/core/thumbnails.d.ts +124 -0
- package/dist/core/thumbnails.d.ts.map +1 -0
- package/dist/core/tooltips.d.ts +100 -0
- package/dist/core/tooltips.d.ts.map +1 -0
- package/dist/elements/base.d.ts +3 -0
- package/dist/elements/base.d.ts.map +1 -0
- package/dist/elements/index.d.ts +33 -0
- package/dist/elements/index.d.ts.map +1 -0
- package/dist/elements/index.js +55 -0
- package/dist/elements/index.js.map +9 -0
- package/dist/elements/media-airplay-button.d.ts +13 -0
- package/dist/elements/media-airplay-button.d.ts.map +1 -0
- package/dist/elements/media-error-display.d.ts +13 -0
- package/dist/elements/media-error-display.d.ts.map +1 -0
- package/dist/elements/media-fullscreen-button.d.ts +13 -0
- package/dist/elements/media-fullscreen-button.d.ts.map +1 -0
- package/dist/elements/media-live-button.d.ts +13 -0
- package/dist/elements/media-live-button.d.ts.map +1 -0
- package/dist/elements/media-mute-button.d.ts +13 -0
- package/dist/elements/media-mute-button.d.ts.map +1 -0
- package/dist/elements/media-pip-button.d.ts +13 -0
- package/dist/elements/media-pip-button.d.ts.map +1 -0
- package/dist/elements/media-play-button.d.ts +14 -0
- package/dist/elements/media-play-button.d.ts.map +1 -0
- package/dist/elements/media-playback-rate-button.d.ts +10 -0
- package/dist/elements/media-playback-rate-button.d.ts.map +1 -0
- package/dist/elements/media-preview-time.d.ts +18 -0
- package/dist/elements/media-preview-time.d.ts.map +1 -0
- package/dist/elements/media-progress-bar.d.ts +16 -0
- package/dist/elements/media-progress-bar.d.ts.map +1 -0
- package/dist/elements/media-remote-playback-button.d.ts +16 -0
- package/dist/elements/media-remote-playback-button.d.ts.map +1 -0
- package/dist/elements/media-seek-button.d.ts +9 -0
- package/dist/elements/media-seek-button.d.ts.map +1 -0
- package/dist/elements/media-settings-menu.d.ts +32 -0
- package/dist/elements/media-settings-menu.d.ts.map +1 -0
- package/dist/elements/media-time-display.d.ts +21 -0
- package/dist/elements/media-time-display.d.ts.map +1 -0
- package/dist/elements/media-time-group.d.ts +22 -0
- package/dist/elements/media-time-group.d.ts.map +1 -0
- package/dist/elements/media-time-separator.d.ts +13 -0
- package/dist/elements/media-time-separator.d.ts.map +1 -0
- package/dist/elements/media-volume-slider.d.ts +16 -0
- package/dist/elements/media-volume-slider.d.ts.map +1 -0
- package/dist/elements/utils.d.ts +27 -0
- package/dist/elements/utils.d.ts.map +1 -0
- package/dist/elements/video-player.d.ts +23 -0
- package/dist/elements/video-player.d.ts.map +1 -0
- package/dist/elements/video-skin.d.ts +23 -0
- package/dist/elements/video-skin.d.ts.map +1 -0
- package/dist/features/captions.d.ts +8 -0
- package/dist/features/captions.d.ts.map +1 -0
- package/dist/features/create-player.d.ts +45 -0
- package/dist/features/create-player.d.ts.map +1 -0
- package/dist/features/fullscreen.d.ts +8 -0
- package/dist/features/fullscreen.d.ts.map +1 -0
- package/dist/features/gestures.d.ts +8 -0
- package/dist/features/gestures.d.ts.map +1 -0
- package/dist/features/index.d.ts +26 -0
- package/dist/features/index.d.ts.map +1 -0
- package/dist/features/index.js +31 -0
- package/dist/features/index.js.map +9 -0
- package/dist/features/keyboard.d.ts +8 -0
- package/dist/features/keyboard.d.ts.map +1 -0
- package/dist/features/pip.d.ts +8 -0
- package/dist/features/pip.d.ts.map +1 -0
- package/dist/features/playback.d.ts +8 -0
- package/dist/features/playback.d.ts.map +1 -0
- package/dist/features/quality.d.ts +8 -0
- package/dist/features/quality.d.ts.map +1 -0
- package/dist/features/types.d.ts +26 -0
- package/dist/features/types.d.ts.map +1 -0
- package/dist/features/volume.d.ts +8 -0
- package/dist/features/volume.d.ts.map +1 -0
- package/dist/index.d.ts +84 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8149 -0
- package/dist/index.js.map +31 -0
- package/dist/layouts/index.d.ts +58 -0
- package/dist/layouts/index.d.ts.map +1 -0
- package/dist/player.d.ts +90 -0
- package/dist/player.d.ts.map +1 -0
- package/dist/plugins/ads.d.ts +311 -0
- package/dist/plugins/ads.d.ts.map +1 -0
- package/dist/plugins/analytics.d.ts +203 -0
- package/dist/plugins/analytics.d.ts.map +1 -0
- package/dist/plugins/end-screen.d.ts +184 -0
- package/dist/plugins/end-screen.d.ts.map +1 -0
- package/dist/plugins/index.d.ts +13 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +20 -0
- package/dist/plugins/index.js.map +9 -0
- package/dist/plugins/skip-segments.d.ts +159 -0
- package/dist/plugins/skip-segments.d.ts.map +1 -0
- package/dist/plugins/watermark.d.ts +157 -0
- package/dist/plugins/watermark.d.ts.map +1 -0
- package/dist/providers/base.d.ts +56 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/dash.d.ts +94 -0
- package/dist/providers/dash.d.ts.map +1 -0
- package/dist/providers/hls.d.ts +182 -0
- package/dist/providers/hls.d.ts.map +1 -0
- package/dist/providers/html5.d.ts +64 -0
- package/dist/providers/html5.d.ts.map +1 -0
- package/dist/providers/index.d.ts +41 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/vimeo.d.ts +157 -0
- package/dist/providers/vimeo.d.ts.map +1 -0
- package/dist/providers/youtube.d.ts +134 -0
- package/dist/providers/youtube.d.ts.map +1 -0
- package/dist/stx/index.d.ts +59 -0
- package/dist/stx/index.d.ts.map +1 -0
- package/dist/stx/index.js +480 -0
- package/dist/stx/index.js.map +11 -0
- package/dist/types.d.ts +724 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/ui/components.d.ts +121 -0
- package/dist/ui/components.d.ts.map +1 -0
- package/dist/ui/index.d.ts +9 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +16 -0
- package/dist/ui/index.js.map +9 -0
- package/package.json +109 -0
- package/src/cdn.test.ts +10 -0
- package/src/cdn.ts +60 -0
- package/src/config.ts +25 -0
- package/src/core/audio-gain.ts +171 -0
- package/src/core/caption-styles.ts +568 -0
- package/src/core/chapters.ts +551 -0
- package/src/core/error-overlay.ts +354 -0
- package/src/core/events.ts +552 -0
- package/src/core/features.ts +287 -0
- package/src/core/i18n.ts +590 -0
- package/src/core/index.ts +249 -0
- package/src/core/live.ts +472 -0
- package/src/core/media-session.ts +137 -0
- package/src/core/orientation.ts +57 -0
- package/src/core/popover.ts +143 -0
- package/src/core/remote-playback.ts +661 -0
- package/src/core/settings-menu.ts +630 -0
- package/src/core/spinner.ts +310 -0
- package/src/core/state.ts +476 -0
- package/src/core/text-tracks.ts +599 -0
- package/src/core/themes.ts +607 -0
- package/src/core/thumbnails.ts +457 -0
- package/src/core/tooltips.ts +370 -0
- package/src/elements/base.ts +2 -0
- package/src/elements/index.ts +82 -0
- package/src/elements/media-airplay-button.ts +78 -0
- package/src/elements/media-error-display.ts +47 -0
- package/src/elements/media-fullscreen-button.ts +72 -0
- package/src/elements/media-live-button.ts +65 -0
- package/src/elements/media-mute-button.ts +69 -0
- package/src/elements/media-pip-button.ts +66 -0
- package/src/elements/media-play-button.ts +69 -0
- package/src/elements/media-playback-rate-button.ts +59 -0
- package/src/elements/media-preview-time.ts +75 -0
- package/src/elements/media-progress-bar.ts +200 -0
- package/src/elements/media-remote-playback-button.ts +108 -0
- package/src/elements/media-seek-button.ts +50 -0
- package/src/elements/media-settings-menu.ts +302 -0
- package/src/elements/media-time-display.ts +99 -0
- package/src/elements/media-time-group.ts +41 -0
- package/src/elements/media-time-separator.ts +35 -0
- package/src/elements/media-volume-slider.ts +140 -0
- package/src/elements/utils.ts +82 -0
- package/src/elements/video-player.ts +175 -0
- package/src/elements/video-skin.ts +127 -0
- package/src/features/captions.ts +56 -0
- package/src/features/create-player.ts +91 -0
- package/src/features/fullscreen.ts +44 -0
- package/src/features/gestures.ts +44 -0
- package/src/features/index.ts +44 -0
- package/src/features/keyboard.ts +89 -0
- package/src/features/pip.ts +47 -0
- package/src/features/playback.ts +68 -0
- package/src/features/quality.ts +19 -0
- package/src/features/types.ts +28 -0
- package/src/features/volume.ts +46 -0
- package/src/index.ts +635 -0
- package/src/layouts/index.ts +672 -0
- package/src/player.ts +821 -0
- package/src/plugins/ads.ts +1045 -0
- package/src/plugins/analytics.ts +673 -0
- package/src/plugins/end-screen.ts +793 -0
- package/src/plugins/index.ts +61 -0
- package/src/plugins/skip-segments.ts +537 -0
- package/src/plugins/watermark.ts +537 -0
- package/src/providers/base.ts +197 -0
- package/src/providers/dash.ts +588 -0
- package/src/providers/hls.ts +624 -0
- package/src/providers/html5.ts +473 -0
- package/src/providers/index.ts +97 -0
- package/src/providers/vimeo.ts +533 -0
- package/src/providers/youtube.ts +542 -0
- package/src/stx/index.ts +606 -0
- package/src/types.ts +874 -0
- package/src/ui/components.ts +910 -0
- 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":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAM3C;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAcnF;AAQD,KAAK,WAAW,GAAG,MAAM,IAAI,CAAA;AAE7B;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAqB5F;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,GAAG,MAAM,CAAC,CAoB5E;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,CAwEhD;AAED;;;;;;;GAOG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,SAAS,CAAiG;IAClH,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,eAAe,CAAQ;gBAEnB,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAI1C;;OAEG;IACH,QAAQ,IAAI,QAAQ,CAAC,WAAW,CAAC;IAIjC;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAIxD;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAOrE;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;IAS1C;;OAEG;IACH,SAAS,CAEP,aAAa,EAAE,MAAM,WAAW,GAAG,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,MAAM,WAAW,KAAK,IAAI,CAAC,EAElG,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,MAAM,WAAW,KAAK,IAAI,GACjE,WAAW;IAsBd;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;;OAGG;IACH,KAAK,IAAI,IAAI;IAYb,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,SAAS;CAGlB;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAQ/D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAGzD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAE9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAExD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAE3D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAExD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAEvD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAItE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAGxE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAGzE;AAMD,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAE/D;AAED,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAExD;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAE9D;AAQD,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,OAAsB,GAAG,OAAO,CAAC,WAAW,CAAC,CAUxF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,GAAE,OAAsB,GAAG,IAAI,CAOrG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,EACjB,IAAI,GAAE,CAAC,MAAM,WAAW,CAAC,EAAwC,EACjE,OAAO,GAAE,OAAsB,GAC9B,WAAW,CAgBb"}
|
|
@@ -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":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAMvD;;GAEG;AACH,oBAAY,mBAAmB;IAC7B,iBAAiB;IACjB,SAAS,IAAI;IACb,cAAc;IACd,OAAO,IAAI;IACX,YAAY;IACZ,KAAK,IAAI;IACT,YAAY;IACZ,KAAK,IAAI;CACV;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iBAAiB;IACjB,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;IACvB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,uBAAuB;IACvB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,wCAAwC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,aAAa;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,eAAe;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,uBAAuB;IACvB,QAAQ,CAAC,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA;IAC3B,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,qBAAqB;IACrB,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAA;IACtC,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,yBAAyB;IACzB,aAAa,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,YAAY,GAAG,MAAM,CAAA;IAC9D,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,gBAAgB;IAChB,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAA;CACtD;AAMD;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,SAAS,CAA2C;IAC5D,OAAO,CAAC,KAAK,CAAgC;gBAEjC,KAAK,CAAC,EAAE,gBAAgB;IAIpC;;OAEG;IACH,MAAM,IAAI,SAAS,EAAE;IAIrB;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAKjC;;OAEG;IACH,UAAU,IAAI,SAAS,GAAG,IAAI;IAK9B;;OAEG;IACG,GAAG,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;IAyBlD;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAUxB;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI;IAiBlD;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE;IAO3C;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI;IAK9D;;OAEG;IACH,KAAK,IAAI,IAAI;IAQb,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,MAAM;CAIf;AAwPD,MAAM,WAAW,sBAAsB;IACrC,wBAAwB;IACxB,SAAS,EAAE,WAAW,CAAA;IACtB,gBAAgB;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,uBAAuB;IACvB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,yBAAyB;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kBAAkB;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,OAAO,CAAqD;gBAExD,OAAO,EAAE,sBAAsB;IAc3C,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,WAAW;IA0BnB;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAW3B;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,WAAW,CAAC,CAAC,GAAG,IAAI;IAK7E;;OAEG;IACH,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,SAAS;CAMlB;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,EAAE,gBAAgB,GAAG,aAAa,CAE3E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CAEtF"}
|
|
@@ -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":"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"}
|
|
@@ -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"}
|