unified-video-framework 1.4.454 → 1.4.456
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/package.json +1 -1
- package/packages/core/dist/version.d.ts +1 -1
- package/packages/core/dist/version.js +1 -1
- package/packages/core/src/version.ts +1 -1
- package/packages/web/dist/WebPlayer.d.ts +1 -0
- package/packages/web/dist/WebPlayer.d.ts.map +1 -1
- package/packages/web/dist/WebPlayer.js +63 -4
- package/packages/web/dist/WebPlayer.js.map +1 -1
- package/packages/web/src/WebPlayer.ts +74 -4
|
@@ -216,6 +216,9 @@ export class WebPlayer extends BasePlayer {
|
|
|
216
216
|
private currentThumbnailUrl: string | null = null;
|
|
217
217
|
private thumbnailPreviewEnabled: boolean = false;
|
|
218
218
|
|
|
219
|
+
// YouTube custom controls mode tracking
|
|
220
|
+
private isYouTubeCustomControlsMode: boolean = false;
|
|
221
|
+
|
|
219
222
|
// Debug logging helper
|
|
220
223
|
private debugLog(message: string, ...args: any[]): void {
|
|
221
224
|
if (this.config.debug) {
|
|
@@ -1646,6 +1649,9 @@ export class WebPlayer extends BasePlayer {
|
|
|
1646
1649
|
|
|
1647
1650
|
private async loadYouTube(url: string, source: any): Promise<void> {
|
|
1648
1651
|
try {
|
|
1652
|
+
// Reset YouTube custom controls mode flag when loading new video
|
|
1653
|
+
this.isYouTubeCustomControlsMode = false;
|
|
1654
|
+
|
|
1649
1655
|
this.debugLog('Loading YouTube video:', url);
|
|
1650
1656
|
|
|
1651
1657
|
// Extract video ID and fetch metadata
|
|
@@ -1897,7 +1903,13 @@ export class WebPlayer extends BasePlayer {
|
|
|
1897
1903
|
this.debugLog('[YouTube] Custom controls only mode - showing custom controls, hiding YouTube native controls');
|
|
1898
1904
|
this.playerWrapper.classList.remove('youtube-native-controls-mode');
|
|
1899
1905
|
this.playerWrapper.classList.add('youtube-custom-controls-mode');
|
|
1906
|
+
this.playerWrapper.classList.add('controls-visible');
|
|
1907
|
+
|
|
1908
|
+
// Prevent auto-hide from interfering
|
|
1909
|
+
this.isYouTubeCustomControlsMode = true;
|
|
1910
|
+
|
|
1900
1911
|
this.showCustomControls();
|
|
1912
|
+
this.debugLog('[YouTube] Auto-hide disabled for custom controls');
|
|
1901
1913
|
} else if (!this.youtubeNativeControls && !this.useCustomControls && this.playerWrapper) {
|
|
1902
1914
|
// No controls mode - both YouTube native and custom controls are hidden
|
|
1903
1915
|
this.debugLog('[YouTube] No controls mode - all controls hidden');
|
|
@@ -5668,8 +5680,8 @@ export class WebPlayer extends BasePlayer {
|
|
|
5668
5680
|
|
|
5669
5681
|
.uvf-player-wrapper:hover .uvf-controls-bar,
|
|
5670
5682
|
.uvf-player-wrapper.controls-visible .uvf-controls-bar {
|
|
5671
|
-
opacity: 1;
|
|
5672
|
-
transform: translateY(0);
|
|
5683
|
+
opacity: 1 !important;
|
|
5684
|
+
transform: translateY(0) !important;
|
|
5673
5685
|
}
|
|
5674
5686
|
|
|
5675
5687
|
.uvf-player-wrapper.no-cursor {
|
|
@@ -7124,8 +7136,8 @@ export class WebPlayer extends BasePlayer {
|
|
|
7124
7136
|
|
|
7125
7137
|
.uvf-player-wrapper:hover .uvf-top-bar,
|
|
7126
7138
|
.uvf-player-wrapper.controls-visible .uvf-top-bar {
|
|
7127
|
-
opacity: 1;
|
|
7128
|
-
transform: translateY(0);
|
|
7139
|
+
opacity: 1 !important;
|
|
7140
|
+
transform: translateY(0) !important;
|
|
7129
7141
|
}
|
|
7130
7142
|
|
|
7131
7143
|
/* Title Bar - After navigation buttons */
|
|
@@ -8842,18 +8854,66 @@ export class WebPlayer extends BasePlayer {
|
|
|
8842
8854
|
display: flex !important;
|
|
8843
8855
|
visibility: visible !important;
|
|
8844
8856
|
pointer-events: auto !important;
|
|
8857
|
+
opacity: 1 !important;
|
|
8858
|
+
transform: translateY(0) !important;
|
|
8859
|
+
}
|
|
8860
|
+
|
|
8861
|
+
.uvf-player-wrapper.youtube-custom-controls-mode .uvf-top-bar {
|
|
8862
|
+
display: flex !important;
|
|
8863
|
+
visibility: visible !important;
|
|
8864
|
+
pointer-events: auto !important;
|
|
8865
|
+
opacity: 1 !important;
|
|
8866
|
+
transform: translateY(0) !important;
|
|
8867
|
+
}
|
|
8868
|
+
|
|
8869
|
+
.uvf-player-wrapper.youtube-custom-controls-mode .uvf-center-play-container {
|
|
8870
|
+
display: flex !important;
|
|
8871
|
+
visibility: visible !important;
|
|
8872
|
+
pointer-events: auto !important;
|
|
8873
|
+
opacity: 1 !important;
|
|
8874
|
+
transform: scale(1) !important;
|
|
8875
|
+
}
|
|
8876
|
+
|
|
8877
|
+
/* Force YouTube custom controls visible even with no-cursor class */
|
|
8878
|
+
.uvf-player-wrapper.youtube-custom-controls-mode.no-cursor .uvf-controls-bar,
|
|
8879
|
+
.uvf-player-wrapper.youtube-custom-controls-mode .uvf-controls-bar {
|
|
8880
|
+
display: flex !important;
|
|
8881
|
+
visibility: visible !important;
|
|
8882
|
+
pointer-events: auto !important;
|
|
8883
|
+
opacity: 1 !important;
|
|
8884
|
+
transform: translateY(0) !important;
|
|
8845
8885
|
}
|
|
8846
8886
|
|
|
8887
|
+
.uvf-player-wrapper.youtube-custom-controls-mode.no-cursor .uvf-top-bar,
|
|
8847
8888
|
.uvf-player-wrapper.youtube-custom-controls-mode .uvf-top-bar {
|
|
8848
8889
|
display: flex !important;
|
|
8849
8890
|
visibility: visible !important;
|
|
8850
8891
|
pointer-events: auto !important;
|
|
8892
|
+
opacity: 1 !important;
|
|
8893
|
+
transform: translateY(0) !important;
|
|
8851
8894
|
}
|
|
8852
8895
|
|
|
8896
|
+
.uvf-player-wrapper.youtube-custom-controls-mode.no-cursor .uvf-top-gradient,
|
|
8897
|
+
.uvf-player-wrapper.youtube-custom-controls-mode .uvf-top-gradient {
|
|
8898
|
+
opacity: 1 !important;
|
|
8899
|
+
}
|
|
8900
|
+
|
|
8901
|
+
.uvf-player-wrapper.youtube-custom-controls-mode.no-cursor .uvf-controls-gradient,
|
|
8902
|
+
.uvf-player-wrapper.youtube-custom-controls-mode .uvf-controls-gradient {
|
|
8903
|
+
opacity: 1 !important;
|
|
8904
|
+
}
|
|
8905
|
+
|
|
8906
|
+
.uvf-player-wrapper.youtube-custom-controls-mode.no-cursor .uvf-center-play-container,
|
|
8853
8907
|
.uvf-player-wrapper.youtube-custom-controls-mode .uvf-center-play-container {
|
|
8854
8908
|
display: flex !important;
|
|
8855
8909
|
visibility: visible !important;
|
|
8856
8910
|
pointer-events: auto !important;
|
|
8911
|
+
opacity: 1 !important;
|
|
8912
|
+
transform: scale(1) !important;
|
|
8913
|
+
}
|
|
8914
|
+
|
|
8915
|
+
.uvf-player-wrapper.youtube-custom-controls-mode.no-cursor {
|
|
8916
|
+
cursor: default !important;
|
|
8857
8917
|
}
|
|
8858
8918
|
|
|
8859
8919
|
/* Override any inline styles */
|
|
@@ -10748,6 +10808,11 @@ export class WebPlayer extends BasePlayer {
|
|
|
10748
10808
|
private hideControls(): void {
|
|
10749
10809
|
if (!this.state.isPlaying) return;
|
|
10750
10810
|
|
|
10811
|
+
// Don't hide controls in YouTube custom mode
|
|
10812
|
+
if (this.isYouTubeCustomControlsMode) {
|
|
10813
|
+
return;
|
|
10814
|
+
}
|
|
10815
|
+
|
|
10751
10816
|
const wrapper = this.container?.querySelector('.uvf-player-wrapper');
|
|
10752
10817
|
if (wrapper) {
|
|
10753
10818
|
wrapper.classList.remove('controls-visible');
|
|
@@ -10758,6 +10823,11 @@ export class WebPlayer extends BasePlayer {
|
|
|
10758
10823
|
private scheduleHideControls(): void {
|
|
10759
10824
|
if (!this.state.isPlaying) return;
|
|
10760
10825
|
|
|
10826
|
+
// Don't auto-hide in YouTube custom controls mode
|
|
10827
|
+
if (this.isYouTubeCustomControlsMode) {
|
|
10828
|
+
return;
|
|
10829
|
+
}
|
|
10830
|
+
|
|
10761
10831
|
if (this.hideControlsTimeout) clearTimeout(this.hideControlsTimeout);
|
|
10762
10832
|
// Use longer timeout in fullscreen for better UX
|
|
10763
10833
|
const timeout = this.isFullscreen() ? 4000 : 3000;
|