unified-video-framework 1.4.173 → 1.4.174

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.
@@ -4300,8 +4300,8 @@ export class WebPlayer extends BasePlayer {
4300
4300
  pointer-events: auto !important; /* Allow clicking on controls */
4301
4301
 
4302
4302
  /* Gradient mask */
4303
- -webkit-mask-image: linear-gradient(to top, black 80%, transparent 100%);
4304
- mask-image: linear-gradient(to top, black 80%, transparent 100%);
4303
+ -webkit-mask-image: linear-gradient(to top, black 50%, transparent 100%);
4304
+ mask-image: linear-gradient(to top, black 50%, transparent 100%);
4305
4305
  -webkit-mask-size: 100% 100%;
4306
4306
  mask-size: 100% 100%;
4307
4307
  -webkit-mask-repeat: no-repeat;
@@ -4321,8 +4321,7 @@ export class WebPlayer extends BasePlayer {
4321
4321
  content: '';
4322
4322
  position: absolute;
4323
4323
  inset: 0;
4324
- background: var(--uvf-surface-tint, rgba(255, 0, 0, 0.08));
4325
- border-radius: 28px 28px 0 0;
4324
+ background: var(--uvf-surface-tint, rgba(0, 0, 0, 0.08));
4326
4325
  pointer-events: none;
4327
4326
  z-index: -1;
4328
4327
  }
@@ -5918,7 +5917,26 @@ export class WebPlayer extends BasePlayer {
5918
5917
  // Play/Pause
5919
5918
  centerPlay?.addEventListener('click', () => this.togglePlayPause());
5920
5919
  playPauseBtn?.addEventListener('click', () => this.togglePlayPause());
5921
- this.video.addEventListener('click', () => this.togglePlayPause());
5920
+
5921
+ // Video click behavior - toggle controls on mobile, play/pause on desktop
5922
+ this.video.addEventListener('click', (e) => {
5923
+ if (this.isMobileDevice()) {
5924
+ // Mobile: toggle controls visibility
5925
+ e.stopPropagation();
5926
+ const wrapper = this.container?.querySelector('.uvf-player-wrapper');
5927
+ if (wrapper?.classList.contains('controls-visible')) {
5928
+ this.hideControls();
5929
+ } else {
5930
+ this.showControls();
5931
+ if (this.state.isPlaying) {
5932
+ this.scheduleHideControls();
5933
+ }
5934
+ }
5935
+ } else {
5936
+ // Desktop: toggle play/pause
5937
+ this.togglePlayPause();
5938
+ }
5939
+ });
5922
5940
 
5923
5941
  // Update play/pause icons
5924
5942
  this.video.addEventListener('play', () => {
@@ -8170,6 +8188,7 @@ export class WebPlayer extends BasePlayer {
8170
8188
  // Speed options
8171
8189
  settingsMenu.querySelectorAll('.speed-option').forEach(option => {
8172
8190
  option.addEventListener('click', (e) => {
8191
+ e.stopPropagation();
8173
8192
  const speed = parseFloat((e.target as HTMLElement).dataset.speed || '1');
8174
8193
  this.setPlaybackRateFromSettings(speed);
8175
8194
  this.updateAccordionAfterSelection('speed');
@@ -8179,6 +8198,7 @@ export class WebPlayer extends BasePlayer {
8179
8198
  // Quality options
8180
8199
  settingsMenu.querySelectorAll('.quality-option').forEach(option => {
8181
8200
  option.addEventListener('click', (e) => {
8201
+ e.stopPropagation();
8182
8202
  const quality = (e.target as HTMLElement).dataset.quality || 'auto';
8183
8203
  this.setQualityFromSettings(quality);
8184
8204
  this.updateAccordionAfterSelection('quality');
@@ -8188,6 +8208,7 @@ export class WebPlayer extends BasePlayer {
8188
8208
  // Subtitle options
8189
8209
  settingsMenu.querySelectorAll('.subtitle-option').forEach(option => {
8190
8210
  option.addEventListener('click', (e) => {
8211
+ e.stopPropagation();
8191
8212
  const subtitle = (e.target as HTMLElement).dataset.subtitle || 'off';
8192
8213
  this.setSubtitle(subtitle);
8193
8214
  this.updateAccordionAfterSelection('subtitles');
@@ -8245,13 +8266,26 @@ export class WebPlayer extends BasePlayer {
8245
8266
  * Update accordion after user makes a selection
8246
8267
  */
8247
8268
  private updateAccordionAfterSelection(section: string): void {
8248
- // Just update the current values without closing
8249
- // User can manually close or it will close when they click outside
8250
- setTimeout(() => {
8251
- // Refresh the menu to update current values
8252
- this.generateAccordionMenu();
8253
- this.setupSettingsEventListeners();
8254
- }, 100);
8269
+ // Close the accordion section after selection
8270
+ const settingsMenu = document.getElementById('uvf-settings-menu');
8271
+ if (settingsMenu) {
8272
+ settingsMenu.querySelectorAll('.uvf-accordion-item.expanded').forEach(item => {
8273
+ item.classList.remove('expanded');
8274
+ });
8275
+ }
8276
+
8277
+ // Auto-close settings menu on mobile after a short delay
8278
+ if (this.isMobileDevice()) {
8279
+ setTimeout(() => {
8280
+ this.hideSettingsMenu();
8281
+ }, 300);
8282
+ } else {
8283
+ // Desktop: just refresh the menu to update current values
8284
+ setTimeout(() => {
8285
+ this.generateAccordionMenu();
8286
+ this.setupSettingsEventListeners();
8287
+ }, 100);
8288
+ }
8255
8289
  }
8256
8290
 
8257
8291
  /**