saltfish 0.1.108 → 0.2.1
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/dist/managers/VideoControlsUI.d.ts +121 -0
- package/dist/managers/VideoControlsUI.d.ts.map +1 -0
- package/dist/managers/VideoManager.d.ts +17 -64
- package/dist/managers/VideoManager.d.ts.map +1 -1
- package/dist/player.js +2 -2
- package/dist/player.min.js +2 -2
- package/dist/saltfish-playlist-player.es.js +485 -386
- package/dist/saltfish-playlist-player.umd.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import type { DevicePlaybackHandler } from './DevicePlaybackHandler';
|
|
2
|
+
/**
|
|
3
|
+
* Callbacks for VideoControlsUI to communicate with VideoManager
|
|
4
|
+
*/
|
|
5
|
+
export interface VideoControlsCallbacks {
|
|
6
|
+
onSeek: (time: number) => void;
|
|
7
|
+
onMuteToggle: () => void;
|
|
8
|
+
on90PercentReached: () => void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Manages video player UI controls (progress bar, mute button, CC button)
|
|
12
|
+
* Handles all visual updates, user interactions, and progress tracking
|
|
13
|
+
*/
|
|
14
|
+
export declare class VideoControlsUI {
|
|
15
|
+
private container;
|
|
16
|
+
private controlsElement;
|
|
17
|
+
private progressBar;
|
|
18
|
+
private muteButton;
|
|
19
|
+
private ccButton;
|
|
20
|
+
private deviceHandler;
|
|
21
|
+
private callbacks;
|
|
22
|
+
private updateInterval;
|
|
23
|
+
private animationFrameId;
|
|
24
|
+
private lastTimeupdateEvent;
|
|
25
|
+
private videoElement;
|
|
26
|
+
private buttonsShownAt90Percent;
|
|
27
|
+
constructor(container: HTMLElement, deviceHandler: DevicePlaybackHandler, callbacks: VideoControlsCallbacks);
|
|
28
|
+
/**
|
|
29
|
+
* Creates all UI control elements
|
|
30
|
+
*/
|
|
31
|
+
create(videoElement: HTMLVideoElement): void;
|
|
32
|
+
/**
|
|
33
|
+
* Updates the video element reference (used when swapping videos)
|
|
34
|
+
*/
|
|
35
|
+
updateVideoElement(videoElement: HTMLVideoElement): void;
|
|
36
|
+
/**
|
|
37
|
+
* Resets controls for new video
|
|
38
|
+
*/
|
|
39
|
+
reset(): void;
|
|
40
|
+
/**
|
|
41
|
+
* Resets the 90% button trigger flag (called when loading new video)
|
|
42
|
+
*/
|
|
43
|
+
reset90PercentTrigger(): void;
|
|
44
|
+
/**
|
|
45
|
+
* Destroys controls and cleans up
|
|
46
|
+
*/
|
|
47
|
+
destroy(): void;
|
|
48
|
+
/**
|
|
49
|
+
* Starts progress tracking using RAF or setTimeout based on device
|
|
50
|
+
*/
|
|
51
|
+
startProgressTracking(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Stops progress tracking
|
|
54
|
+
*/
|
|
55
|
+
stopProgressTracking(): void;
|
|
56
|
+
/**
|
|
57
|
+
* Immediately updates progress bar to specific values (for pause/seek)
|
|
58
|
+
*/
|
|
59
|
+
updateProgressImmediate(currentTime: number, duration: number): void;
|
|
60
|
+
/**
|
|
61
|
+
* Updates the progress bar based on current playback position
|
|
62
|
+
*/
|
|
63
|
+
private updateProgress;
|
|
64
|
+
/**
|
|
65
|
+
* Handles detailed time updates for smooth progress bar and button visibility
|
|
66
|
+
*/
|
|
67
|
+
private handleDetailedTimeUpdate;
|
|
68
|
+
/**
|
|
69
|
+
* Handles seeking events to ensure smooth progress updates
|
|
70
|
+
*/
|
|
71
|
+
private handleSeeking;
|
|
72
|
+
/**
|
|
73
|
+
* Handles seeked events (seeking ended)
|
|
74
|
+
*/
|
|
75
|
+
private handleSeeked;
|
|
76
|
+
/**
|
|
77
|
+
* Handles click on the progress bar to seek
|
|
78
|
+
*/
|
|
79
|
+
private handleProgressBarClick;
|
|
80
|
+
/**
|
|
81
|
+
* Sets the muted state
|
|
82
|
+
*/
|
|
83
|
+
setMuted(muted: boolean): void;
|
|
84
|
+
/**
|
|
85
|
+
* Toggles the muted state
|
|
86
|
+
*/
|
|
87
|
+
private toggleMute;
|
|
88
|
+
/**
|
|
89
|
+
* Gets the current muted state
|
|
90
|
+
*/
|
|
91
|
+
getMuted(): boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Updates the mute button icon based on muted state
|
|
94
|
+
*/
|
|
95
|
+
private updateMuteButtonIcon;
|
|
96
|
+
/**
|
|
97
|
+
* Updates the CC button icon based on enabled state
|
|
98
|
+
*/
|
|
99
|
+
updateCCButtonIcon(isEnabled: boolean): void;
|
|
100
|
+
/**
|
|
101
|
+
* Shows the progress bar
|
|
102
|
+
*/
|
|
103
|
+
showProgressBar(): void;
|
|
104
|
+
/**
|
|
105
|
+
* Hides the progress bar
|
|
106
|
+
*/
|
|
107
|
+
hideProgressBar(): void;
|
|
108
|
+
/**
|
|
109
|
+
* Shows the mute button
|
|
110
|
+
*/
|
|
111
|
+
showMuteButton(): void;
|
|
112
|
+
/**
|
|
113
|
+
* Hides the mute button
|
|
114
|
+
*/
|
|
115
|
+
hideMuteButton(): void;
|
|
116
|
+
/**
|
|
117
|
+
* Gets the CC button element (for TranscriptManager)
|
|
118
|
+
*/
|
|
119
|
+
getCCButton(): HTMLElement | null;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=VideoControlsUI.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoControlsUI.d.ts","sourceRoot":"","sources":["../../src/managers/VideoControlsUI.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,kBAAkB,EAAE,MAAM,IAAI,CAAC;CAChC;AAED;;;GAGG;AACH,qBAAa,eAAe;IAE1B,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,QAAQ,CAA4B;IAG5C,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,SAAS,CAAyB;IAG1C,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,YAAY,CAAiC;IAGrD,OAAO,CAAC,uBAAuB,CAAkB;gBAG/C,SAAS,EAAE,WAAW,EACtB,aAAa,EAAE,qBAAqB,EACpC,SAAS,EAAE,sBAAsB;IAOnC;;OAEG;IACI,MAAM,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI;IA6EnD;;OAEG;IACI,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI;IAiB/D;;OAEG;IACI,KAAK,IAAI,IAAI;IAYpB;;OAEG;IACI,qBAAqB,IAAI,IAAI;IAIpC;;OAEG;IACI,OAAO,IAAI,IAAI;IA2BtB;;OAEG;IACI,qBAAqB,IAAI,IAAI;IA+BpC;;OAEG;IACI,oBAAoB,IAAI,IAAI;IAYnC;;OAEG;IACI,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQ3E;;OAEG;IACH,OAAO,CAAC,cAAc;IAgCtB;;OAEG;IACH,OAAO,CAAC,wBAAwB,CAkB9B;IAEF;;OAEG;IACH,OAAO,CAAC,aAAa,CAMnB;IAEF;;OAEG;IACH,OAAO,CAAC,YAAY,CAUlB;IAEF;;OAEG;IACH,OAAO,CAAC,sBAAsB,CAyB5B;IAEF;;OAEG;IACI,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAQrC;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACI,QAAQ,IAAI,OAAO;IAK1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuB5B;;OAEG;IACI,kBAAkB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAqBnD;;OAEG;IACI,eAAe,IAAI,IAAI;IA0B9B;;OAEG;IACI,eAAe,IAAI,IAAI;IAM9B;;OAEG;IACI,cAAc,IAAI,IAAI;IAM7B;;OAEG;IACI,cAAc,IAAI,IAAI;IAM7B;;OAEG;IACI,WAAW,IAAI,WAAW,GAAG,IAAI;CAGzC"}
|
|
@@ -13,14 +13,9 @@ export declare class VideoManager {
|
|
|
13
13
|
private nextVideo;
|
|
14
14
|
private activeVideoIndex;
|
|
15
15
|
private container;
|
|
16
|
-
private
|
|
17
|
-
private muteButton;
|
|
18
|
-
private ccButton;
|
|
16
|
+
private controls;
|
|
19
17
|
transcriptManager: TranscriptManager;
|
|
20
18
|
private preloadedVideos;
|
|
21
|
-
private updateInterval;
|
|
22
|
-
private animationFrameId;
|
|
23
|
-
private lastTimeupdateEvent;
|
|
24
19
|
private currentVideoUrl;
|
|
25
20
|
private nextVideoUrl;
|
|
26
21
|
private playbackPositions;
|
|
@@ -30,7 +25,6 @@ export declare class VideoManager {
|
|
|
30
25
|
private deviceChangeCleanup;
|
|
31
26
|
private hasUserInteracted;
|
|
32
27
|
private autoplayFallbackTimeout;
|
|
33
|
-
private buttonsShownAt90Percent;
|
|
34
28
|
constructor();
|
|
35
29
|
/**
|
|
36
30
|
* Gets current device information
|
|
@@ -126,40 +120,11 @@ export declare class VideoManager {
|
|
|
126
120
|
* Handles video error event
|
|
127
121
|
*/
|
|
128
122
|
private handleVideoError;
|
|
129
|
-
/**
|
|
130
|
-
* Starts updating the progress bar
|
|
131
|
-
*/
|
|
132
|
-
private startProgressUpdates;
|
|
133
|
-
/**
|
|
134
|
-
* Stops updating the progress bar
|
|
135
|
-
*/
|
|
136
|
-
private stopProgressUpdates;
|
|
137
|
-
/**
|
|
138
|
-
* Updates the progress bar based on current playback position
|
|
139
|
-
*/
|
|
140
|
-
private updateProgress;
|
|
141
|
-
/**
|
|
142
|
-
* Handles detailed time updates for smooth progress bar and button visibility
|
|
143
|
-
*/
|
|
144
|
-
private handleDetailedTimeUpdate;
|
|
145
|
-
/**
|
|
146
|
-
* Shows buttons with staggered animation when video reaches 90% progress
|
|
147
|
-
*/
|
|
148
|
-
private showButtonsAt90Percent;
|
|
149
123
|
/**
|
|
150
124
|
* Sets the muted state of both video elements
|
|
151
125
|
* @param muted - Whether to mute the video
|
|
152
126
|
*/
|
|
153
127
|
setMuted(muted: boolean): void;
|
|
154
|
-
/**
|
|
155
|
-
* Toggles the muted state of the video
|
|
156
|
-
* @param event - Optional mouse event
|
|
157
|
-
*/
|
|
158
|
-
private toggleMute;
|
|
159
|
-
/**
|
|
160
|
-
* Updates the mute button icon based on muted state
|
|
161
|
-
*/
|
|
162
|
-
private updateMuteButtonIcon;
|
|
163
128
|
/**
|
|
164
129
|
* Updates the CC button icon based on enabled state
|
|
165
130
|
*/
|
|
@@ -169,6 +134,22 @@ export declare class VideoManager {
|
|
|
169
134
|
* @returns Whether the video is muted
|
|
170
135
|
*/
|
|
171
136
|
isMuted(): boolean;
|
|
137
|
+
/**
|
|
138
|
+
* Shows the progress bar
|
|
139
|
+
*/
|
|
140
|
+
showProgressBar(): void;
|
|
141
|
+
/**
|
|
142
|
+
* Hides the progress bar
|
|
143
|
+
*/
|
|
144
|
+
hideProgressBar(): void;
|
|
145
|
+
/**
|
|
146
|
+
* Shows the mute button
|
|
147
|
+
*/
|
|
148
|
+
showMuteButton(): void;
|
|
149
|
+
/**
|
|
150
|
+
* Hides the mute button
|
|
151
|
+
*/
|
|
152
|
+
hideMuteButton(): void;
|
|
172
153
|
/**
|
|
173
154
|
* Sets the completion policy for the video
|
|
174
155
|
* @param policy - The completion policy to use
|
|
@@ -187,34 +168,6 @@ export declare class VideoManager {
|
|
|
187
168
|
* Handles video ended event for manual completion policy
|
|
188
169
|
*/
|
|
189
170
|
private handleManualVideoEnded;
|
|
190
|
-
/**
|
|
191
|
-
* Handles click on the progress bar to seek
|
|
192
|
-
*/
|
|
193
|
-
private handleProgressBarClick;
|
|
194
|
-
/**
|
|
195
|
-
* Handles seeking events to ensure smooth progress updates
|
|
196
|
-
*/
|
|
197
|
-
private handleSeeking;
|
|
198
|
-
/**
|
|
199
|
-
* Handles seeked events (seeking ended)
|
|
200
|
-
*/
|
|
201
|
-
private handleSeeked;
|
|
202
|
-
/**
|
|
203
|
-
* Hides the progress bar (used during autoplay fallback)
|
|
204
|
-
*/
|
|
205
|
-
hideProgressBar(): void;
|
|
206
|
-
/**
|
|
207
|
-
* Shows the progress bar and resets it to proper state
|
|
208
|
-
*/
|
|
209
|
-
showProgressBar(): void;
|
|
210
|
-
/**
|
|
211
|
-
* Hides the mute button (used during autoplay fallback)
|
|
212
|
-
*/
|
|
213
|
-
hideMuteButton(): void;
|
|
214
|
-
/**
|
|
215
|
-
* Shows the mute button
|
|
216
|
-
*/
|
|
217
|
-
showMuteButton(): void;
|
|
218
171
|
/**
|
|
219
172
|
* Marks that the user has interacted with the video player
|
|
220
173
|
* This is important for mobile autoplay policies
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VideoManager.d.ts","sourceRoot":"","sources":["../../src/managers/VideoManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"VideoManager.d.ts","sourceRoot":"","sources":["../../src/managers/VideoManager.ts"],"names":[],"mappings":"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"}
|