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,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chapters Support
|
|
3
|
+
*
|
|
4
|
+
* VTT chapters parsing and chapter markers for the progress bar.
|
|
5
|
+
*
|
|
6
|
+
* @module core/chapters
|
|
7
|
+
*/
|
|
8
|
+
export interface Chapter {
|
|
9
|
+
/** Chapter ID */
|
|
10
|
+
id: string;
|
|
11
|
+
/** Start time in seconds */
|
|
12
|
+
startTime: number;
|
|
13
|
+
/** End time in seconds */
|
|
14
|
+
endTime: number;
|
|
15
|
+
/** Chapter title */
|
|
16
|
+
title: string;
|
|
17
|
+
/** Optional thumbnail URL */
|
|
18
|
+
thumbnail?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface ChaptersConfig {
|
|
21
|
+
/** VTT chapters URL or array of chapters */
|
|
22
|
+
src?: string | Chapter[];
|
|
23
|
+
/** Show chapter markers on progress bar */
|
|
24
|
+
showMarkers?: boolean;
|
|
25
|
+
/** Show chapter title on hover */
|
|
26
|
+
showTitles?: boolean;
|
|
27
|
+
/** Marker color */
|
|
28
|
+
markerColor?: string;
|
|
29
|
+
/** Active marker color */
|
|
30
|
+
activeMarkerColor?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Parse VTT file for chapters
|
|
34
|
+
*/
|
|
35
|
+
export declare function parseChaptersVTT(url: string): Promise<Chapter[]>;
|
|
36
|
+
export declare class ChaptersManager {
|
|
37
|
+
private chapters;
|
|
38
|
+
private config;
|
|
39
|
+
private markersContainer;
|
|
40
|
+
private titleElement;
|
|
41
|
+
private currentChapter;
|
|
42
|
+
private duration;
|
|
43
|
+
constructor(config?: ChaptersConfig);
|
|
44
|
+
/**
|
|
45
|
+
* Initialize chapters
|
|
46
|
+
*/
|
|
47
|
+
initialize(duration: number): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Get all chapters
|
|
50
|
+
*/
|
|
51
|
+
getChapters(): Chapter[];
|
|
52
|
+
/**
|
|
53
|
+
* Get chapter at specific time
|
|
54
|
+
*/
|
|
55
|
+
getChapterAtTime(time: number): Chapter | null;
|
|
56
|
+
/**
|
|
57
|
+
* Get current chapter
|
|
58
|
+
*/
|
|
59
|
+
getCurrentChapter(): Chapter | null;
|
|
60
|
+
/**
|
|
61
|
+
* Update current time and chapter
|
|
62
|
+
*/
|
|
63
|
+
updateTime(time: number): Chapter | null;
|
|
64
|
+
/**
|
|
65
|
+
* Seek to chapter by ID
|
|
66
|
+
*/
|
|
67
|
+
seekToChapter(id: string): number | null;
|
|
68
|
+
/**
|
|
69
|
+
* Get next chapter
|
|
70
|
+
*/
|
|
71
|
+
getNextChapter(currentTime: number): Chapter | null;
|
|
72
|
+
/**
|
|
73
|
+
* Get previous chapter
|
|
74
|
+
*/
|
|
75
|
+
getPreviousChapter(currentTime: number): Chapter | null;
|
|
76
|
+
/**
|
|
77
|
+
* Create chapter markers element for progress bar
|
|
78
|
+
*/
|
|
79
|
+
createMarkersElement(): HTMLElement;
|
|
80
|
+
/**
|
|
81
|
+
* Render chapter markers
|
|
82
|
+
*/
|
|
83
|
+
private renderMarkers;
|
|
84
|
+
/**
|
|
85
|
+
* Update active marker styling
|
|
86
|
+
*/
|
|
87
|
+
private updateActiveMarker;
|
|
88
|
+
/**
|
|
89
|
+
* Create chapter title element
|
|
90
|
+
*/
|
|
91
|
+
createTitleElement(): HTMLElement;
|
|
92
|
+
/**
|
|
93
|
+
* Show chapter title
|
|
94
|
+
*/
|
|
95
|
+
showTitle(chapter: Chapter): void;
|
|
96
|
+
/**
|
|
97
|
+
* Hide chapter title
|
|
98
|
+
*/
|
|
99
|
+
hideTitle(): void;
|
|
100
|
+
/**
|
|
101
|
+
* Get chapter at position (for hover preview)
|
|
102
|
+
*/
|
|
103
|
+
getChapterAtPosition(percent: number): Chapter | null;
|
|
104
|
+
/**
|
|
105
|
+
* Add chapters
|
|
106
|
+
*/
|
|
107
|
+
addChapters(chapters: Chapter[]): void;
|
|
108
|
+
/**
|
|
109
|
+
* Clear all chapters
|
|
110
|
+
*/
|
|
111
|
+
clear(): void;
|
|
112
|
+
/**
|
|
113
|
+
* Destroy
|
|
114
|
+
*/
|
|
115
|
+
destroy(): void;
|
|
116
|
+
}
|
|
117
|
+
export declare class ChapterMenu {
|
|
118
|
+
private container;
|
|
119
|
+
private chapters;
|
|
120
|
+
private onSelect;
|
|
121
|
+
constructor();
|
|
122
|
+
private applyStyles;
|
|
123
|
+
/**
|
|
124
|
+
* Set chapters
|
|
125
|
+
*/
|
|
126
|
+
setChapters(chapters: Chapter[]): void;
|
|
127
|
+
/**
|
|
128
|
+
* Render chapter list
|
|
129
|
+
*/
|
|
130
|
+
private render;
|
|
131
|
+
/**
|
|
132
|
+
* Set select handler
|
|
133
|
+
*/
|
|
134
|
+
onChapterSelect(handler: (chapter: Chapter) => void): void;
|
|
135
|
+
/**
|
|
136
|
+
* Get element
|
|
137
|
+
*/
|
|
138
|
+
getElement(): HTMLElement;
|
|
139
|
+
/**
|
|
140
|
+
* Highlight current chapter
|
|
141
|
+
*/
|
|
142
|
+
setActiveChapter(id: string): void;
|
|
143
|
+
/**
|
|
144
|
+
* Destroy
|
|
145
|
+
*/
|
|
146
|
+
destroy(): void;
|
|
147
|
+
}
|
|
148
|
+
export declare function createChaptersManager(config?: ChaptersConfig): ChaptersManager;
|
|
149
|
+
export declare function createChapterMenu(): ChapterMenu;
|
|
150
|
+
//# sourceMappingURL=chapters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chapters.d.ts","sourceRoot":"","sources":["../../src/core/chapters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Overlay
|
|
3
|
+
*
|
|
4
|
+
* Visual error display with retry functionality.
|
|
5
|
+
*
|
|
6
|
+
* @module core/error-overlay
|
|
7
|
+
*/
|
|
8
|
+
import type { MediaError } from '../types';
|
|
9
|
+
export interface ErrorOverlayConfig {
|
|
10
|
+
/** Show retry button */
|
|
11
|
+
showRetry?: boolean;
|
|
12
|
+
/** Retry button text */
|
|
13
|
+
retryText?: string;
|
|
14
|
+
/** Custom error messages by code */
|
|
15
|
+
messages?: Record<number, string>;
|
|
16
|
+
/** Show error details (for debugging) */
|
|
17
|
+
showDetails?: boolean;
|
|
18
|
+
/** Auto-hide delay (0 = no auto-hide) */
|
|
19
|
+
autoHideDelay?: number;
|
|
20
|
+
/** Custom icon SVG */
|
|
21
|
+
icon?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare class ErrorOverlay {
|
|
24
|
+
private container;
|
|
25
|
+
private config;
|
|
26
|
+
private currentError;
|
|
27
|
+
private onRetry;
|
|
28
|
+
private autoHideTimeout;
|
|
29
|
+
constructor(config?: ErrorOverlayConfig);
|
|
30
|
+
private applyStyles;
|
|
31
|
+
private getDefaultIcon;
|
|
32
|
+
/**
|
|
33
|
+
* Get error message
|
|
34
|
+
*/
|
|
35
|
+
private getMessage;
|
|
36
|
+
/**
|
|
37
|
+
* Render error content
|
|
38
|
+
*/
|
|
39
|
+
private render;
|
|
40
|
+
/**
|
|
41
|
+
* Show error
|
|
42
|
+
*/
|
|
43
|
+
show(error: MediaError): void;
|
|
44
|
+
/**
|
|
45
|
+
* Hide error overlay
|
|
46
|
+
*/
|
|
47
|
+
hide(): void;
|
|
48
|
+
/**
|
|
49
|
+
* Set retry handler
|
|
50
|
+
*/
|
|
51
|
+
setRetryHandler(handler: () => void): void;
|
|
52
|
+
/**
|
|
53
|
+
* Get element
|
|
54
|
+
*/
|
|
55
|
+
getElement(): HTMLElement;
|
|
56
|
+
/**
|
|
57
|
+
* Check if visible
|
|
58
|
+
*/
|
|
59
|
+
isVisible(): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Get current error
|
|
62
|
+
*/
|
|
63
|
+
getError(): MediaError | null;
|
|
64
|
+
/**
|
|
65
|
+
* Destroy
|
|
66
|
+
*/
|
|
67
|
+
destroy(): void;
|
|
68
|
+
}
|
|
69
|
+
export declare function createErrorOverlay(config?: ErrorOverlayConfig): ErrorOverlay;
|
|
70
|
+
export declare const ERROR_OVERLAY_STYLES = "\n.tsvp-error-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 16px;\n background: rgba(0, 0, 0, 0.85);\n color: var(--tsvp-color-text, #ffffff);\n font-family: var(--tsvp-font-family, sans-serif);\n z-index: 20;\n padding: 24px;\n text-align: center;\n}\n\n.tsvp-error-icon {\n color: var(--tsvp-color-error, #ff4757);\n}\n\n.tsvp-error-title {\n margin: 0;\n font-size: var(--tsvp-font-size-lg, 18px);\n font-weight: var(--tsvp-font-weight-bold, 600);\n}\n\n.tsvp-error-message {\n margin: 0;\n opacity: 0.8;\n max-width: 400px;\n}\n\n.tsvp-error-retry {\n padding: 10px 24px;\n border: none;\n border-radius: var(--tsvp-radius-full, 9999px);\n background: var(--tsvp-color-primary, #00a8ff);\n color: var(--tsvp-color-text-on-primary, #ffffff);\n font-weight: var(--tsvp-font-weight-bold, 600);\n cursor: pointer;\n transition: transform 150ms ease;\n}\n\n.tsvp-error-retry:hover {\n transform: scale(1.05);\n}\n";
|
|
71
|
+
//# sourceMappingURL=error-overlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-overlay.d.ts","sourceRoot":"","sources":["../../src/core/error-overlay.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAM1C,MAAM,WAAW,kBAAkB;IACjC,wBAAwB;IACxB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,yCAAyC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,yCAAyC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAiBD,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,eAAe,CAA6C;gBAExD,MAAM,GAAE,kBAAuB;IAmB3C,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,cAAc;IAQtB;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,OAAO,CAAC,MAAM;IA2Gd;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAuB7B;;OAEG;IACH,IAAI,IAAI,IAAI;IAaZ;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAI1C;;OAEG;IACH,UAAU,IAAI,WAAW;IAIzB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,QAAQ,IAAI,UAAU,GAAG,IAAI;IAI7B;;OAEG;IACH,OAAO,IAAI,IAAI;CAMhB;AAMD,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,YAAY,CAE5E;AAMD,eAAO,MAAM,oBAAoB,ohCA+ChC,CAAA"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ts-video-player Event System
|
|
3
|
+
*
|
|
4
|
+
* Event emitter and media event normalization.
|
|
5
|
+
*
|
|
6
|
+
* @module core/events
|
|
7
|
+
*/
|
|
8
|
+
import type { ProviderEventMap } from '../types';
|
|
9
|
+
/**
|
|
10
|
+
* Type-safe event emitter
|
|
11
|
+
*/
|
|
12
|
+
export declare class EventEmitter<T extends {
|
|
13
|
+
[K in keyof T]: (...args: any[]) => void;
|
|
14
|
+
}> {
|
|
15
|
+
private listeners;
|
|
16
|
+
private onceListeners;
|
|
17
|
+
/**
|
|
18
|
+
* Add an event listener
|
|
19
|
+
*/
|
|
20
|
+
on<K extends keyof T>(event: K, handler: T[K]): () => void;
|
|
21
|
+
/**
|
|
22
|
+
* Add a one-time event listener
|
|
23
|
+
*/
|
|
24
|
+
once<K extends keyof T>(event: K, handler: T[K]): () => void;
|
|
25
|
+
/**
|
|
26
|
+
* Remove an event listener
|
|
27
|
+
*/
|
|
28
|
+
off<K extends keyof T>(event: K, handler: T[K]): void;
|
|
29
|
+
/**
|
|
30
|
+
* Emit an event
|
|
31
|
+
*/
|
|
32
|
+
emit<K extends keyof T>(event: K, ...args: Parameters<T[K]>): void;
|
|
33
|
+
/**
|
|
34
|
+
* Remove all listeners for an event (or all events)
|
|
35
|
+
*/
|
|
36
|
+
removeAllListeners(event?: keyof T): void;
|
|
37
|
+
/**
|
|
38
|
+
* Get listener count for an event
|
|
39
|
+
*/
|
|
40
|
+
listenerCount(event: keyof T): number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Normalize HTMLMediaElement events to our event system
|
|
44
|
+
*/
|
|
45
|
+
export declare class MediaEventsNormalizer {
|
|
46
|
+
private media;
|
|
47
|
+
private emitter;
|
|
48
|
+
private listeners;
|
|
49
|
+
constructor(media: HTMLMediaElement, emitter: EventEmitter<ProviderEventMap>);
|
|
50
|
+
private attachListeners;
|
|
51
|
+
private getTimeRanges;
|
|
52
|
+
private normalizeError;
|
|
53
|
+
/**
|
|
54
|
+
* Destroy the normalizer
|
|
55
|
+
*/
|
|
56
|
+
destroy(): void;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Normalize fullscreen change events
|
|
60
|
+
*/
|
|
61
|
+
export declare function onFullscreenChange(handler: (fullscreen: boolean) => void): () => void;
|
|
62
|
+
/**
|
|
63
|
+
* Normalize PiP change events
|
|
64
|
+
*/
|
|
65
|
+
export declare function onPiPChange(video: HTMLVideoElement, handler: (pip: boolean) => void): () => void;
|
|
66
|
+
/**
|
|
67
|
+
* Default keyboard shortcuts
|
|
68
|
+
*/
|
|
69
|
+
export declare const DEFAULT_KEYBOARD_SHORTCUTS: Record<string, string>;
|
|
70
|
+
/**
|
|
71
|
+
* Action handlers for keyboard shortcuts
|
|
72
|
+
*/
|
|
73
|
+
export interface KeyboardActions {
|
|
74
|
+
togglePlay(): void;
|
|
75
|
+
toggleMute(): void;
|
|
76
|
+
toggleFullscreen(): void;
|
|
77
|
+
togglePiP(): void;
|
|
78
|
+
toggleCaptions(): void;
|
|
79
|
+
seekBackward(): void;
|
|
80
|
+
seekForward(): void;
|
|
81
|
+
volumeUp(): void;
|
|
82
|
+
volumeDown(): void;
|
|
83
|
+
speedUp(): void;
|
|
84
|
+
speedDown(): void;
|
|
85
|
+
seekStart(): void;
|
|
86
|
+
seekEnd(): void;
|
|
87
|
+
seekPercent(percent: number): void;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Create keyboard event handler
|
|
91
|
+
*/
|
|
92
|
+
export declare function createKeyboardHandler(actions: KeyboardActions, options?: {
|
|
93
|
+
seekStep?: number;
|
|
94
|
+
volumeStep?: number;
|
|
95
|
+
speedStep?: number;
|
|
96
|
+
}): (event: KeyboardEvent) => void;
|
|
97
|
+
/**
|
|
98
|
+
* Create user activity detector
|
|
99
|
+
*/
|
|
100
|
+
export declare function createActivityDetector(element: HTMLElement, options?: {
|
|
101
|
+
timeout?: number;
|
|
102
|
+
onActive?: () => void;
|
|
103
|
+
onInactive?: () => void;
|
|
104
|
+
}): () => void;
|
|
105
|
+
export interface GestureHandlers {
|
|
106
|
+
onTap?: (x: number, y: number) => void;
|
|
107
|
+
onDoubleTap?: (x: number, y: number) => void;
|
|
108
|
+
onSwipeLeft?: () => void;
|
|
109
|
+
onSwipeRight?: () => void;
|
|
110
|
+
onSwipeUp?: () => void;
|
|
111
|
+
onSwipeDown?: () => void;
|
|
112
|
+
onScrub?: (progress: number) => void;
|
|
113
|
+
onScrubEnd?: () => void;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Create touch gesture detector
|
|
117
|
+
*/
|
|
118
|
+
export declare function createGestureDetector(element: HTMLElement, handlers: GestureHandlers): () => void;
|
|
119
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/core/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ts-video-player Feature Availability Detection
|
|
3
|
+
*
|
|
4
|
+
* Detects platform capabilities for volume, fullscreen, and PiP.
|
|
5
|
+
*
|
|
6
|
+
* @module core/features
|
|
7
|
+
*/
|
|
8
|
+
import type { FeatureAvailability } from '../types';
|
|
9
|
+
/**
|
|
10
|
+
* Detect iOS Safari (including iPadOS Safari)
|
|
11
|
+
*/
|
|
12
|
+
export declare function isIOSSafari(): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Detect Safari browser (desktop or mobile)
|
|
15
|
+
*/
|
|
16
|
+
export declare function isSafari(): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Detect standalone PWA mode
|
|
19
|
+
*/
|
|
20
|
+
export declare function isStandalonePWA(): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Detect volume control availability.
|
|
23
|
+
* iOS Safari silently ignores programmatic volume changes on media elements.
|
|
24
|
+
*/
|
|
25
|
+
export declare function detectVolumeAvailability(media?: HTMLMediaElement | null): FeatureAvailability;
|
|
26
|
+
/**
|
|
27
|
+
* Async volume probe: attempts to set volume and reads it back.
|
|
28
|
+
* This is the authoritative check - the sync check is a fast heuristic.
|
|
29
|
+
*/
|
|
30
|
+
export declare function probeVolumeAvailability(media: HTMLMediaElement): Promise<FeatureAvailability>;
|
|
31
|
+
/**
|
|
32
|
+
* Detect fullscreen API availability.
|
|
33
|
+
*/
|
|
34
|
+
export declare function detectFullscreenAvailability(container?: HTMLElement | null, videoElement?: HTMLVideoElement | null): FeatureAvailability;
|
|
35
|
+
/**
|
|
36
|
+
* Whether this environment only supports video-element fullscreen (iOS Safari),
|
|
37
|
+
* not container-level fullscreen.
|
|
38
|
+
*/
|
|
39
|
+
export declare function isVideoOnlyFullscreen(): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Enter fullscreen with cross-browser support including iOS Safari.
|
|
42
|
+
*/
|
|
43
|
+
export declare function enterFullscreen(container: HTMLElement | null, media: HTMLMediaElement | null): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Exit fullscreen with cross-browser support.
|
|
46
|
+
*/
|
|
47
|
+
export declare function exitFullscreen(media?: HTMLMediaElement | null): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Detect Picture-in-Picture availability.
|
|
50
|
+
*/
|
|
51
|
+
export declare function detectPipAvailability(videoElement?: HTMLVideoElement | null): FeatureAvailability;
|
|
52
|
+
/**
|
|
53
|
+
* Enter Picture-in-Picture with cross-browser support.
|
|
54
|
+
*/
|
|
55
|
+
export declare function enterPiP(media: HTMLMediaElement): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Exit Picture-in-Picture with cross-browser support.
|
|
58
|
+
*/
|
|
59
|
+
export declare function exitPiP(media?: HTMLMediaElement | null): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Detect all feature availabilities at once.
|
|
62
|
+
*/
|
|
63
|
+
export declare function detectAllFeatures(container?: HTMLElement | null, videoElement?: HTMLVideoElement | null, mediaElement?: HTMLMediaElement | null): Record<'volume' | 'fullscreen' | 'pip', FeatureAvailability>;
|
|
64
|
+
//# sourceMappingURL=features.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../src/core/features.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAMnD;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAQrC;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAGlC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAIzC;AAMD;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,CAAC,EAAE,gBAAgB,GAAG,IAAI,GAC9B,mBAAmB,CAIrB;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,mBAAmB,CAAC,CAc9B;AA8BD;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,CAAC,EAAE,WAAW,GAAG,IAAI,EAC9B,YAAY,CAAC,EAAE,gBAAgB,GAAG,IAAI,GACrC,mBAAmB,CAkBrB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAM/C;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,WAAW,GAAG,IAAI,EAC7B,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,CAAC,EAAE,gBAAgB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAYnF;AAMD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,CAAC,EAAE,gBAAgB,GAAG,IAAI,GACrC,mBAAmB,CA0BrB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAarE;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,KAAK,CAAC,EAAE,gBAAgB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAe5E;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,CAAC,EAAE,WAAW,GAAG,IAAI,EAC9B,YAAY,CAAC,EAAE,gBAAgB,GAAG,IAAI,EACtC,YAAY,CAAC,EAAE,gBAAgB,GAAG,IAAI,GACrC,MAAM,CAAC,QAAQ,GAAG,YAAY,GAAG,KAAK,EAAE,mBAAmB,CAAC,CAM9D"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internationalization (i18n) System
|
|
3
|
+
*
|
|
4
|
+
* Provides translation support for all player UI strings.
|
|
5
|
+
*
|
|
6
|
+
* @module core/i18n
|
|
7
|
+
*/
|
|
8
|
+
export interface TranslationStrings {
|
|
9
|
+
play: string;
|
|
10
|
+
pause: string;
|
|
11
|
+
replay: string;
|
|
12
|
+
mute: string;
|
|
13
|
+
unmute: string;
|
|
14
|
+
volume: string;
|
|
15
|
+
seekBackward: string;
|
|
16
|
+
seekForward: string;
|
|
17
|
+
seekTo: string;
|
|
18
|
+
duration: string;
|
|
19
|
+
currentTime: string;
|
|
20
|
+
played: string;
|
|
21
|
+
buffered: string;
|
|
22
|
+
enterFullscreen: string;
|
|
23
|
+
exitFullscreen: string;
|
|
24
|
+
enterPiP: string;
|
|
25
|
+
exitPiP: string;
|
|
26
|
+
enableCaptions: string;
|
|
27
|
+
disableCaptions: string;
|
|
28
|
+
captions: string;
|
|
29
|
+
captionsOff: string;
|
|
30
|
+
settings: string;
|
|
31
|
+
quality: string;
|
|
32
|
+
auto: string;
|
|
33
|
+
speed: string;
|
|
34
|
+
normal: string;
|
|
35
|
+
loop: string;
|
|
36
|
+
loopEnabled: string;
|
|
37
|
+
loopDisabled: string;
|
|
38
|
+
audioBoost: string;
|
|
39
|
+
audioTrack: string;
|
|
40
|
+
live: string;
|
|
41
|
+
liveEdge: string;
|
|
42
|
+
seekToLive: string;
|
|
43
|
+
behindLive: string;
|
|
44
|
+
networkError: string;
|
|
45
|
+
mediaError: string;
|
|
46
|
+
unknownError: string;
|
|
47
|
+
loading: string;
|
|
48
|
+
buffering: string;
|
|
49
|
+
chapters: string;
|
|
50
|
+
airPlay: string;
|
|
51
|
+
googleCast: string;
|
|
52
|
+
casting: string;
|
|
53
|
+
download: string;
|
|
54
|
+
share: string;
|
|
55
|
+
close: string;
|
|
56
|
+
menu: string;
|
|
57
|
+
back: string;
|
|
58
|
+
}
|
|
59
|
+
export type TranslationKey = keyof TranslationStrings;
|
|
60
|
+
export interface I18nConfig {
|
|
61
|
+
/** Current language code */
|
|
62
|
+
language?: string;
|
|
63
|
+
/** Fallback language code */
|
|
64
|
+
fallbackLanguage?: string;
|
|
65
|
+
/** Custom translations */
|
|
66
|
+
translations?: Partial<Record<string, Partial<TranslationStrings>>>;
|
|
67
|
+
/** Interpolation pattern (default: {key}) */
|
|
68
|
+
interpolationPattern?: RegExp;
|
|
69
|
+
}
|
|
70
|
+
export declare const englishStrings: TranslationStrings;
|
|
71
|
+
export declare const spanishStrings: TranslationStrings;
|
|
72
|
+
export declare const frenchStrings: TranslationStrings;
|
|
73
|
+
export declare const germanStrings: TranslationStrings;
|
|
74
|
+
export declare const japaneseStrings: TranslationStrings;
|
|
75
|
+
export declare const chineseStrings: TranslationStrings;
|
|
76
|
+
export declare const defaultTranslations: Record<string, TranslationStrings>;
|
|
77
|
+
export declare class I18n {
|
|
78
|
+
private language;
|
|
79
|
+
private fallbackLanguage;
|
|
80
|
+
private translations;
|
|
81
|
+
private interpolationPattern;
|
|
82
|
+
constructor(config?: I18nConfig);
|
|
83
|
+
/**
|
|
84
|
+
* Detect browser language
|
|
85
|
+
*/
|
|
86
|
+
private detectLanguage;
|
|
87
|
+
/**
|
|
88
|
+
* Get current language
|
|
89
|
+
*/
|
|
90
|
+
getLanguage(): string;
|
|
91
|
+
/**
|
|
92
|
+
* Set current language
|
|
93
|
+
*/
|
|
94
|
+
setLanguage(language: string): void;
|
|
95
|
+
/**
|
|
96
|
+
* Get translation for a key
|
|
97
|
+
*/
|
|
98
|
+
t(key: TranslationKey, params?: Record<string, string | number>): string;
|
|
99
|
+
/**
|
|
100
|
+
* Add or update translations for a language
|
|
101
|
+
*/
|
|
102
|
+
addTranslations(language: string, strings: Partial<TranslationStrings>): void;
|
|
103
|
+
/**
|
|
104
|
+
* Get all translations for a language
|
|
105
|
+
*/
|
|
106
|
+
getTranslations(language: string): Partial<TranslationStrings> | undefined;
|
|
107
|
+
/**
|
|
108
|
+
* Get all available languages
|
|
109
|
+
*/
|
|
110
|
+
getAvailableLanguages(): string[];
|
|
111
|
+
/**
|
|
112
|
+
* Check if a language is available
|
|
113
|
+
*/
|
|
114
|
+
hasLanguage(language: string): boolean;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Create an I18n instance
|
|
118
|
+
*/
|
|
119
|
+
export declare function createI18n(config?: I18nConfig): I18n;
|
|
120
|
+
/**
|
|
121
|
+
* Get or create global I18n instance
|
|
122
|
+
*/
|
|
123
|
+
export declare function getI18n(config?: I18nConfig): I18n;
|
|
124
|
+
/**
|
|
125
|
+
* Set global I18n instance
|
|
126
|
+
*/
|
|
127
|
+
export declare function setI18n(i18n: I18n): void;
|
|
128
|
+
/**
|
|
129
|
+
* Quick translation helper using global instance
|
|
130
|
+
*/
|
|
131
|
+
export declare function t(key: TranslationKey, params?: Record<string, string | number>): string;
|
|
132
|
+
//# sourceMappingURL=i18n.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/core/i18n.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ts-video-player Core
|
|
3
|
+
*
|
|
4
|
+
* Core utilities and systems.
|
|
5
|
+
*
|
|
6
|
+
* @module core
|
|
7
|
+
*/
|
|
8
|
+
export { StateStore, createSignal, computed, createDefaultState, loadPersistedState, savePersistedState, createStorageSync, selectBufferedAmount, selectProgress, selectRemainingTime, selectIsIdle, selectIsLoading, selectIsLive, selectIsDVR, selectCurrentQuality, selectCurrentTextTrack, selectCurrentAudioTrack, } from './state';
|
|
9
|
+
export { EventEmitter, MediaEventsNormalizer, onFullscreenChange, onPiPChange, DEFAULT_KEYBOARD_SHORTCUTS, createKeyboardHandler, createActivityDetector, createGestureDetector, } from './events';
|
|
10
|
+
export type { KeyboardActions, GestureHandlers } from './events';
|
|
11
|
+
export { AudioGain, createAudioGain, GAIN_PRESETS, GAIN_STEPS, } from './audio-gain';
|
|
12
|
+
export type { AudioGainAdapter } from './audio-gain';
|
|
13
|
+
export { TextTrackList, TextTrackReadyState, CaptionRenderer, createTextTrackList, createCaptionRenderer, } from './text-tracks';
|
|
14
|
+
export type { TextTrackInit, VTTCueInit, CaptionRendererOptions } from './text-tracks';
|
|
15
|
+
export { defaultTheme, darkTheme, lightTheme, minimalTheme, netflixTheme, youtubeTheme, vimeoTheme, presetThemes, mergeThemes, generateThemeCSS, createThemeStyleElement, applyTheme, injectThemeStyles, } from './themes';
|
|
16
|
+
export type { Theme, ThemeColors, ThemeTypography, ThemeSpacing, ThemeBorderRadius, ThemeShadows, ThemeTransitions, ThemeSlider, ThemeControls, ThemeMenu, ThemeCaptions, ThemeThumbnails, ThemeLive, PresetThemeName, } from './themes';
|
|
17
|
+
export { Thumbnails, createThumbnails, parseThumbnailVTT, generateSpriteCues, } from './thumbnails';
|
|
18
|
+
export type { ThumbnailSprite, ThumbnailCue, ThumbnailsConfig, } from './thumbnails';
|
|
19
|
+
export { I18n, createI18n, getI18n, setI18n, t, englishStrings, spanishStrings, frenchStrings, germanStrings, japaneseStrings, chineseStrings, defaultTranslations, } from './i18n';
|
|
20
|
+
export type { TranslationStrings, TranslationKey, I18nConfig, } from './i18n';
|
|
21
|
+
export { LiveIndicator, SeekToLiveButton, LiveController, createLiveIndicator, createSeekToLiveButton, createLiveController, } from './live';
|
|
22
|
+
export type { LiveConfig, LiveState, } from './live';
|
|
23
|
+
export { RemotePlaybackController, AirPlayButton, GoogleCastButton, createRemotePlaybackController, createAirPlayButton, createGoogleCastButton, isAirPlaySupported, isAirPlayAvailable, showAirPlayPicker, isAirPlaying, isGoogleCastSupported, loadGoogleCastSDK, initializeGoogleCast, requestCastSession, endCastSession, isCasting, getCastSession, castMedia, } from './remote-playback';
|
|
24
|
+
export type { RemotePlaybackType, RemotePlaybackState, RemoteDevice, RemotePlaybackConfig, } from './remote-playback';
|
|
25
|
+
export { ChaptersManager, ChapterMenu, createChaptersManager, createChapterMenu, parseChaptersVTT, } from './chapters';
|
|
26
|
+
export type { Chapter, ChaptersConfig, } from './chapters';
|
|
27
|
+
export { Spinner, createSpinner, SPINNER_STYLES, } from './spinner';
|
|
28
|
+
export type { SpinnerConfig } from './spinner';
|
|
29
|
+
export { CaptionStyleManager, CaptionSettingsMenu, createCaptionStyleManager, createCaptionSettingsMenu, defaultCaptionStyles, captionPresets, } from './caption-styles';
|
|
30
|
+
export type { CaptionStyleOptions, CaptionStylePreset, } from './caption-styles';
|
|
31
|
+
export { Tooltip, TooltipManager, createTooltip, createTooltipManager, TOOLTIP_STYLES, } from './tooltips';
|
|
32
|
+
export type { TooltipPlacement, TooltipConfig, } from './tooltips';
|
|
33
|
+
export { ErrorOverlay, createErrorOverlay, ERROR_OVERLAY_STYLES, } from './error-overlay';
|
|
34
|
+
export type { ErrorOverlayConfig } from './error-overlay';
|
|
35
|
+
export { SettingsMenu, createSettingsMenu, } from './settings-menu';
|
|
36
|
+
export type { SettingsMenuConfig, SettingsMenuState, } from './settings-menu';
|
|
37
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
|