unified-video-framework 1.4.100 → 1.4.102

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unified-video-framework",
3
- "version": "1.4.100",
3
+ "version": "1.4.102",
4
4
  "description": "Cross-platform video player framework supporting iOS, Android, Web, Smart TVs (Samsung/LG), Roku, and more",
5
5
  "main": "packages/core/dist/index.js",
6
6
  "types": "packages/core/dist/index.d.ts",
@@ -124,6 +124,7 @@ export declare class WebPlayer extends BasePlayer {
124
124
  private setupFullscreenListeners;
125
125
  private updateTimeTooltip;
126
126
  private hideTimeTooltip;
127
+ private updateProgressTooltip;
127
128
  private showShortcutIndicator;
128
129
  setSettingsScrollbarStyle(mode: 'default' | 'compact' | 'overlay'): void;
129
130
  setSettingsScrollbarConfig(options: {
@@ -1 +1 @@
1
- {"version":3,"file":"WebPlayer.d.ts","sourceRoot":"","sources":["../src/WebPlayer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebPlayer.d.ts","sourceRoot":"","sources":["../src/WebPlayer.ts"],"names":[],"mappings":"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"}
@@ -1559,8 +1559,8 @@ export class WebPlayer extends BasePlayer {
1559
1559
 
1560
1560
  /* Center Play Button */
1561
1561
  .uvf-center-play-btn {
1562
- width: clamp(64px, 14vw, 96px);
1563
- height: clamp(64px, 14vw, 96px);
1562
+ width: clamp(50px, 14vw, 96px);
1563
+ height: clamp(50px, 14vw, 96px);
1564
1564
  background: linear-gradient(135deg, var(--uvf-accent-1), var(--uvf-accent-2));
1565
1565
  border: 0;
1566
1566
  border-radius: 50%;
@@ -1650,22 +1650,24 @@ export class WebPlayer extends BasePlayer {
1650
1650
 
1651
1651
  /* Progress Bar */
1652
1652
  .uvf-progress-section {
1653
+ width: 100%;
1653
1654
  margin-bottom: 15px;
1654
1655
  }
1655
1656
 
1656
1657
  .uvf-progress-bar-wrapper {
1657
- position: relative;
1658
1658
  width: 100%;
1659
- height: 6px;
1660
- background: rgba(255,255,255,0.1);
1661
- border-radius: 3px;
1659
+ height: 4px;
1660
+ position: relative;
1661
+ background: rgba(255,255,255,0.15);
1662
+ border-radius: 2px;
1662
1663
  cursor: pointer;
1664
+ padding: 12px 0;
1663
1665
  overflow: visible;
1664
- transition: transform 0.2s ease;
1666
+ transition: height 0.2s ease;
1665
1667
  }
1666
1668
 
1667
1669
  .uvf-progress-bar-wrapper:hover {
1668
- transform: scaleY(1.5);
1670
+ height: 6px;
1669
1671
  }
1670
1672
 
1671
1673
  .uvf-progress-buffered {
@@ -1673,39 +1675,134 @@ export class WebPlayer extends BasePlayer {
1673
1675
  top: 0;
1674
1676
  left: 0;
1675
1677
  height: 100%;
1676
- background: rgba(255,255,255,0.2);
1677
- border-radius: 3px;
1678
+ background: rgba(255,255,255,0.35);
1679
+ border-radius: 2px;
1678
1680
  pointer-events: none;
1681
+ transition: width 0.2s ease;
1682
+ z-index: 1;
1679
1683
  }
1680
1684
 
1681
1685
  .uvf-progress-filled {
1682
- position: absolute;
1683
- top: 0;
1684
- left: 0;
1686
+ position: relative;
1685
1687
  height: 100%;
1686
- background: linear-gradient(90deg, var(--uvf-accent-1), var(--uvf-accent-2));
1687
- border-radius: 3px;
1688
+ background: linear-gradient(90deg, #ff5722, #ff7043);
1689
+ border-radius: 2px;
1688
1690
  pointer-events: none;
1689
- box-shadow: 0 0 10px var(--uvf-accent-1-20);
1691
+ transition: width 0.2s ease;
1692
+ z-index: 2;
1690
1693
  }
1691
1694
 
1692
1695
  .uvf-progress-handle {
1693
1696
  position: absolute;
1694
- top: 50%;
1695
- transform: translate(-50%, -50%) scale(0);
1696
- width: 16px;
1697
- height: 16px;
1698
- background: #fff;
1697
+ width: 12px;
1698
+ height: 12px;
1699
+ background: #ffffff;
1700
+ border: 2px solid #ff5722;
1699
1701
  border-radius: 50%;
1700
- box-shadow: 0 0 15px rgba(255,255,255,0.5);
1701
- transition: transform 0.2s ease;
1702
- pointer-events: none;
1702
+ top: 50%;
1703
+ left: 100%;
1704
+ margin-left: -6px;
1705
+ transform: translateY(-50%);
1706
+ opacity: 0;
1707
+ transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
1708
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
1709
+ cursor: grab;
1710
+ z-index: 3;
1703
1711
  }
1704
1712
 
1705
1713
  .uvf-progress-bar-wrapper:hover .uvf-progress-handle {
1706
- transform: translate(-50%, -50%) scale(1);
1714
+ opacity: 1;
1715
+ transform: translateY(-50%) scale(1);
1716
+ }
1717
+
1718
+ .uvf-progress-handle:hover {
1719
+ transform: translateY(-50%) scale(1.15);
1720
+ box-shadow: 0 3px 12px rgba(255, 87, 34, 0.4);
1707
1721
  }
1708
1722
 
1723
+ .uvf-progress-handle:active,
1724
+ .uvf-progress-handle.dragging {
1725
+ cursor: grabbing;
1726
+ transform: translateY(-50%) scale(1.3);
1727
+ box-shadow: 0 4px 16px rgba(255, 87, 34, 0.6);
1728
+ }
1729
+
1730
+ .uvf-time-tooltip {
1731
+ position: absolute;
1732
+ bottom: 24px;
1733
+ left: 50%;
1734
+ transform: translateX(-50%);
1735
+ background: rgba(0, 0, 0, 0.95);
1736
+ color: #ffffff;
1737
+ padding: 8px 14px;
1738
+ border-radius: 8px;
1739
+ font-size: 13px;
1740
+ font-weight: 600;
1741
+ white-space: nowrap;
1742
+ opacity: 0;
1743
+ transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
1744
+ pointer-events: none;
1745
+ z-index: 4;
1746
+ box-shadow: 0 6px 20px rgba(0, 0, 0, 0.4);
1747
+ backdrop-filter: blur(12px);
1748
+ border: 1px solid rgba(255, 255, 255, 0.1);
1749
+ }
1750
+
1751
+ .uvf-time-tooltip::after {
1752
+ content: '';
1753
+ position: absolute;
1754
+ bottom: -8px;
1755
+ left: 50%;
1756
+ transform: translateX(-50%);
1757
+ width: 0;
1758
+ height: 0;
1759
+ border-left: 8px solid transparent;
1760
+ border-right: 8px solid transparent;
1761
+ border-top: 8px solid rgba(0, 0, 0, 0.95);
1762
+ }
1763
+
1764
+ .uvf-time-tooltip::before {
1765
+ content: '';
1766
+ position: absolute;
1767
+ bottom: -9px;
1768
+ left: 50%;
1769
+ transform: translateX(-50%);
1770
+ width: 0;
1771
+ height: 0;
1772
+ border-left: 9px solid transparent;
1773
+ border-right: 9px solid transparent;
1774
+ border-top: 9px solid rgba(255, 255, 255, 0.1);
1775
+ z-index: -1;
1776
+ }
1777
+
1778
+ .uvf-progress-bar-wrapper:hover .uvf-time-tooltip {
1779
+ opacity: 1;
1780
+ transform: translateX(-50%) translateY(-2px);
1781
+ }
1782
+
1783
+ /* Mobile responsive handle sizing */
1784
+ @media (max-width: 768px) {
1785
+ .uvf-progress-handle {
1786
+ width: 16px;
1787
+ height: 16px;
1788
+ margin-left: -8px;
1789
+ opacity: 0.7; /* Slightly visible always on mobile */
1790
+ }
1791
+
1792
+ .uvf-progress-bar-wrapper:hover .uvf-progress-handle,
1793
+ .uvf-progress-handle:active {
1794
+ opacity: 1;
1795
+ }
1796
+
1797
+ .uvf-progress-handle:hover {
1798
+ transform: translateY(-50%) scale(1.1);
1799
+ }
1800
+
1801
+ .uvf-progress-handle:active,
1802
+ .uvf-progress-handle.dragging {
1803
+ transform: translateY(-50%) scale(1.25);
1804
+ }
1805
+ }
1709
1806
  /* Controls Row */
1710
1807
  .uvf-controls-row {
1711
1808
  display: flex;
@@ -2021,7 +2118,8 @@ export class WebPlayer extends BasePlayer {
2021
2118
  right: 20px;
2022
2119
  z-index: 10;
2023
2120
  display: flex;
2024
- gap: 10px;
2121
+ align-items: center;
2122
+ gap: 12px;
2025
2123
  opacity: 0;
2026
2124
  transform: translateY(-10px);
2027
2125
  transition: all 0.3s ease;
@@ -2120,6 +2218,11 @@ export class WebPlayer extends BasePlayer {
2120
2218
  padding: 4px 8px;
2121
2219
  border-radius: 4px;
2122
2220
  text-transform: uppercase;
2221
+ display: none; /* Hidden by default, only shown when quality info is available */
2222
+ }
2223
+
2224
+ .uvf-quality-badge.active {
2225
+ display: inline-block;
2123
2226
  }
2124
2227
 
2125
2228
  /* Time Tooltip */
@@ -3252,8 +3355,8 @@ export class WebPlayer extends BasePlayer {
3252
3355
  }
3253
3356
 
3254
3357
  .uvf-center-play-btn {
3255
- width: clamp(90px, 14vw, 110px);
3256
- height: clamp(90px, 14vw, 110px);
3358
+ width: clamp(90px, 14vw, 60px);
3359
+ height: clamp(90px, 14vw, 60px);
3257
3360
  background: linear-gradient(135deg, var(--uvf-accent-1), var(--uvf-accent-2));
3258
3361
  border: 0;
3259
3362
  box-shadow: 0 10px 32px var(--uvf-accent-1-20);
@@ -3581,8 +3684,15 @@ export class WebPlayer extends BasePlayer {
3581
3684
  progressBar.id = 'uvf-progress-bar';
3582
3685
  progressBar.innerHTML = `
3583
3686
  <div class="uvf-progress-buffered" id="uvf-progress-buffered"></div>
3584
- <div class="uvf-progress-filled" id="uvf-progress-filled"></div>
3585
- <div class="uvf-progress-handle" id="uvf-progress-handle"></div>
3687
+ <div class="uvf-progress-filled" id="uvf-progress-filled">
3688
+ <div class="uvf-progress-handle" id="uvf-progress-handle"
3689
+ role="slider"
3690
+ tabindex="0"
3691
+ aria-label="Seek"
3692
+ aria-valuemin="0"
3693
+ aria-valuemax="100"
3694
+ aria-valuenow="0"></div>
3695
+ </div>
3586
3696
  <div class="uvf-time-tooltip" id="uvf-time-tooltip">00:00</div>
3587
3697
  `;
3588
3698
  progressSection.appendChild(progressBar);
@@ -3797,12 +3907,58 @@ export class WebPlayer extends BasePlayer {
3797
3907
  e.stopPropagation();
3798
3908
  this.handleVolumeChange(e);
3799
3909
  });
3910
+ const progressHandle = document.getElementById('uvf-progress-handle');
3911
+ const timeTooltip = document.getElementById('uvf-time-tooltip');
3912
+ progressBar?.addEventListener('click', (e) => {
3913
+ if (!this.isDragging) {
3914
+ this.handleProgressChange(e);
3915
+ }
3916
+ });
3917
+ progressHandle?.addEventListener('mousedown', (e) => {
3918
+ e.stopPropagation();
3919
+ this.isDragging = true;
3920
+ progressHandle.classList.add('dragging');
3921
+ });
3922
+ progressHandle?.addEventListener('keydown', (e) => {
3923
+ if (!this.video)
3924
+ return;
3925
+ const step = 5;
3926
+ let handled = false;
3927
+ switch (e.key) {
3928
+ case 'ArrowLeft':
3929
+ case 'ArrowDown':
3930
+ this.seek(Math.max(0, this.video.currentTime - step));
3931
+ handled = true;
3932
+ break;
3933
+ case 'ArrowRight':
3934
+ case 'ArrowUp':
3935
+ this.seek(Math.min(this.video.duration, this.video.currentTime + step));
3936
+ handled = true;
3937
+ break;
3938
+ }
3939
+ if (handled) {
3940
+ e.preventDefault();
3941
+ e.stopPropagation();
3942
+ }
3943
+ });
3944
+ progressBar?.addEventListener('mousedown', (e) => {
3945
+ if (e.target === progressHandle)
3946
+ return;
3947
+ this.isDragging = true;
3948
+ this.handleProgressChange(e);
3949
+ });
3950
+ progressBar?.addEventListener('mousemove', (e) => {
3951
+ if (!this.isDragging) {
3952
+ this.updateTimeTooltip(e);
3953
+ }
3954
+ });
3800
3955
  document.addEventListener('mousemove', (e) => {
3801
3956
  if (this.isVolumeSliding) {
3802
3957
  this.handleVolumeChange(e);
3803
3958
  }
3804
3959
  if (this.isDragging && progressBar) {
3805
3960
  this.handleProgressChange(e);
3961
+ this.updateProgressTooltip(e);
3806
3962
  }
3807
3963
  });
3808
3964
  document.addEventListener('mouseup', () => {
@@ -3814,18 +3970,20 @@ export class WebPlayer extends BasePlayer {
3814
3970
  }
3815
3971
  }, 2000);
3816
3972
  }
3817
- this.isDragging = false;
3973
+ if (this.isDragging) {
3974
+ this.isDragging = false;
3975
+ progressHandle?.classList.remove('dragging');
3976
+ }
3818
3977
  });
3819
- progressBar?.addEventListener('click', (e) => this.handleProgressChange(e));
3820
- progressBar?.addEventListener('mousedown', () => this.isDragging = true);
3821
3978
  this.video.addEventListener('timeupdate', () => {
3822
3979
  const progressFilled = document.getElementById('uvf-progress-filled');
3823
3980
  const progressHandle = document.getElementById('uvf-progress-handle');
3824
- const timeDisplay = document.getElementById('uvf-time-display');
3825
- if (this.video && progressFilled && progressHandle) {
3981
+ if (this.video && progressFilled) {
3826
3982
  const percent = (this.video.currentTime / this.video.duration) * 100;
3827
3983
  progressFilled.style.width = percent + '%';
3828
- progressHandle.style.left = percent + '%';
3984
+ if (progressHandle) {
3985
+ progressHandle.setAttribute('aria-valuenow', percent.toString());
3986
+ }
3829
3987
  }
3830
3988
  this.updateTimeDisplay();
3831
3989
  });
@@ -3926,8 +4084,6 @@ export class WebPlayer extends BasePlayer {
3926
4084
  this.scheduleHideControls();
3927
4085
  }
3928
4086
  });
3929
- progressBar?.addEventListener('mousemove', (e) => this.updateTimeTooltip(e));
3930
- progressBar?.addEventListener('mouseleave', () => this.hideTimeTooltip());
3931
4087
  const settingsMenu = document.getElementById('uvf-settings-menu');
3932
4088
  settingsBtn?.addEventListener('click', (e) => {
3933
4089
  e.stopPropagation();
@@ -4465,6 +4621,19 @@ export class WebPlayer extends BasePlayer {
4465
4621
  timeTooltip.style.opacity = '0';
4466
4622
  }
4467
4623
  }
4624
+ updateProgressTooltip(e) {
4625
+ const progressBar = document.getElementById('uvf-progress-bar');
4626
+ const timeTooltip = document.getElementById('uvf-time-tooltip');
4627
+ if (!progressBar || !timeTooltip || !this.video)
4628
+ return;
4629
+ const rect = progressBar.getBoundingClientRect();
4630
+ const position = Math.max(0, Math.min(e.clientX - rect.left, rect.width));
4631
+ const percent = (position / rect.width) * 100;
4632
+ const time = (percent / 100) * this.video.duration;
4633
+ timeTooltip.textContent = this.formatTime(time);
4634
+ timeTooltip.style.left = percent + '%';
4635
+ timeTooltip.style.opacity = '1';
4636
+ }
4468
4637
  showShortcutIndicator(text) {
4469
4638
  const el = document.getElementById('uvf-shortcut-indicator');
4470
4639
  this.debugLog('showShortcutIndicator called with:', text, 'element found:', !!el);