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.
@@ -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 progressBar;
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":"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"}
1
+ {"version":3,"file":"VideoManager.d.ts","sourceRoot":"","sources":["../../src/managers/VideoManager.ts"],"names":[],"mappings":"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"}