unified-video-framework 1.4.102 → 1.4.104

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.102",
3
+ "version": "1.4.104",
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",
@@ -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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"}
@@ -1658,16 +1658,20 @@ export class WebPlayer extends BasePlayer {
1658
1658
  width: 100%;
1659
1659
  height: 4px;
1660
1660
  position: relative;
1661
- background: rgba(255,255,255,0.15);
1662
- border-radius: 2px;
1661
+ background: rgba(255, 255, 255, 0.15);
1662
+ border-radius: 6px;
1663
1663
  cursor: pointer;
1664
- padding: 12px 0;
1664
+ padding: 14px 0;
1665
1665
  overflow: visible;
1666
- transition: height 0.2s ease;
1666
+ transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
1667
+ backdrop-filter: blur(4px);
1667
1668
  }
1668
1669
 
1669
1670
  .uvf-progress-bar-wrapper:hover {
1670
1671
  height: 6px;
1672
+ background: rgba(255, 255, 255, 0.2);
1673
+ border-radius: 8px;
1674
+ transform: scaleY(1.1);
1671
1675
  }
1672
1676
 
1673
1677
  .uvf-progress-buffered {
@@ -1675,132 +1679,289 @@ export class WebPlayer extends BasePlayer {
1675
1679
  top: 0;
1676
1680
  left: 0;
1677
1681
  height: 100%;
1678
- background: rgba(255,255,255,0.35);
1679
- border-radius: 2px;
1682
+ background: linear-gradient(90deg,
1683
+ rgba(255, 255, 255, 0.25) 0%,
1684
+ rgba(255, 255, 255, 0.35) 30%,
1685
+ rgba(255, 255, 255, 0.4) 50%,
1686
+ rgba(255, 255, 255, 0.35) 70%,
1687
+ rgba(255, 255, 255, 0.3) 100%
1688
+ );
1689
+ border-radius: 6px;
1680
1690
  pointer-events: none;
1681
- transition: width 0.2s ease;
1691
+ transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
1682
1692
  z-index: 1;
1693
+ position: relative;
1694
+ overflow: hidden;
1695
+ }
1696
+
1697
+ /* Buffered progress loading shimmer effect */
1698
+ .uvf-progress-buffered::before {
1699
+ content: '';
1700
+ position: absolute;
1701
+ top: 0;
1702
+ left: -100%;
1703
+ width: 100%;
1704
+ height: 100%;
1705
+ background: linear-gradient(90deg,
1706
+ transparent 0%,
1707
+ rgba(255, 255, 255, 0.15) 50%,
1708
+ transparent 100%
1709
+ );
1710
+ animation: bufferShimmer 2s infinite;
1711
+ border-radius: 6px;
1712
+ }
1713
+
1714
+ @keyframes bufferShimmer {
1715
+ 0% { left: -100%; }
1716
+ 100% { left: 100%; }
1717
+ }
1718
+
1719
+ .uvf-progress-bar-wrapper:hover .uvf-progress-buffered {
1720
+ border-radius: 8px;
1721
+ background: linear-gradient(90deg,
1722
+ rgba(255, 255, 255, 0.3) 0%,
1723
+ rgba(255, 255, 255, 0.4) 30%,
1724
+ rgba(255, 255, 255, 0.5) 50%,
1725
+ rgba(255, 255, 255, 0.4) 70%,
1726
+ rgba(255, 255, 255, 0.35) 100%
1727
+ );
1728
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
1729
+ }
1730
+
1731
+ .uvf-progress-bar-wrapper:hover .uvf-progress-buffered::before {
1732
+ border-radius: 8px;
1683
1733
  }
1684
1734
 
1685
1735
  .uvf-progress-filled {
1686
- position: relative;
1736
+ position: absolute;
1737
+ top: 0;
1738
+ left: 0;
1687
1739
  height: 100%;
1688
- background: linear-gradient(90deg, #ff5722, #ff7043);
1689
- border-radius: 2px;
1740
+ background: linear-gradient(90deg,
1741
+ #ff4500 0%,
1742
+ #ff5722 25%,
1743
+ #ff6b35 50%,
1744
+ #ff7043 75%,
1745
+ #ff8c69 100%
1746
+ );
1747
+ border-radius: 6px;
1690
1748
  pointer-events: none;
1691
- transition: width 0.2s ease;
1749
+ transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
1692
1750
  z-index: 2;
1751
+ box-shadow: 0 0 12px rgba(255, 87, 34, 0.3);
1752
+ }
1753
+
1754
+ .uvf-progress-bar-wrapper:hover .uvf-progress-filled {
1755
+ border-radius: 8px;
1756
+ background: linear-gradient(90deg,
1757
+ #ff4500 0%,
1758
+ #ff5722 20%,
1759
+ #ff6b35 40%,
1760
+ #ff7043 60%,
1761
+ #ff8c69 80%,
1762
+ #ffa500 100%
1763
+ );
1764
+ box-shadow: 0 0 20px rgba(255, 87, 34, 0.5);
1693
1765
  }
1694
1766
 
1695
1767
  .uvf-progress-handle {
1696
1768
  position: absolute;
1697
- width: 12px;
1698
- height: 12px;
1699
- background: #ffffff;
1700
- border: 2px solid #ff5722;
1769
+ width: 14px;
1770
+ height: 14px;
1771
+ background: radial-gradient(circle,
1772
+ rgba(255, 255, 255, 0.95) 0%,
1773
+ rgba(255, 255, 255, 0.9) 70%,
1774
+ rgba(255, 255, 255, 0.85) 100%
1775
+ );
1776
+ border: 2px solid rgba(255, 87, 34, 0.8);
1701
1777
  border-radius: 50%;
1702
1778
  top: 50%;
1703
- left: 100%;
1704
- margin-left: -6px;
1705
- transform: translateY(-50%);
1779
+ transform: translate(-50%, -50%) scale(0);
1706
1780
  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);
1781
+ transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
1782
+ box-shadow:
1783
+ 0 0 0 0 rgba(255, 87, 34, 0.4),
1784
+ 0 4px 12px rgba(0, 0, 0, 0.25),
1785
+ inset 0 1px 0 rgba(255, 255, 255, 0.4);
1709
1786
  cursor: grab;
1710
1787
  z-index: 3;
1788
+ pointer-events: all;
1789
+ backdrop-filter: blur(8px);
1711
1790
  }
1712
1791
 
1713
1792
  .uvf-progress-bar-wrapper:hover .uvf-progress-handle {
1714
1793
  opacity: 1;
1715
- transform: translateY(-50%) scale(1);
1794
+ transform: translate(-50%, -50%) scale(1);
1795
+ box-shadow:
1796
+ 0 0 0 4px rgba(255, 87, 34, 0.2),
1797
+ 0 6px 20px rgba(0, 0, 0, 0.3),
1798
+ inset 0 1px 0 rgba(255, 255, 255, 0.6);
1716
1799
  }
1717
1800
 
1718
1801
  .uvf-progress-handle:hover {
1719
- transform: translateY(-50%) scale(1.15);
1720
- box-shadow: 0 3px 12px rgba(255, 87, 34, 0.4);
1802
+ transform: translate(-50%, -50%) scale(1.25);
1803
+ background: radial-gradient(circle,
1804
+ rgba(255, 255, 255, 1) 0%,
1805
+ rgba(255, 255, 255, 0.95) 70%,
1806
+ rgba(255, 255, 255, 0.9) 100%
1807
+ );
1808
+ border-color: rgba(255, 87, 34, 1);
1809
+ box-shadow:
1810
+ 0 0 0 6px rgba(255, 87, 34, 0.3),
1811
+ 0 8px 25px rgba(255, 87, 34, 0.4),
1812
+ inset 0 1px 0 rgba(255, 255, 255, 0.8);
1721
1813
  }
1722
1814
 
1723
1815
  .uvf-progress-handle:active,
1724
1816
  .uvf-progress-handle.dragging {
1725
1817
  cursor: grabbing;
1726
- transform: translateY(-50%) scale(1.3);
1727
- box-shadow: 0 4px 16px rgba(255, 87, 34, 0.6);
1818
+ transform: translate(-50%, -50%) scale(1.4);
1819
+ background: radial-gradient(circle,
1820
+ rgba(255, 255, 255, 1) 0%,
1821
+ rgba(255, 255, 255, 0.98) 50%,
1822
+ rgba(255, 255, 255, 0.95) 100%
1823
+ );
1824
+ border-color: #ff4500;
1825
+ box-shadow:
1826
+ 0 0 0 8px rgba(255, 87, 34, 0.4),
1827
+ 0 12px 35px rgba(255, 69, 0, 0.5),
1828
+ inset 0 2px 0 rgba(255, 255, 255, 0.9);
1829
+ transition: all 0.2s cubic-bezier(0.25, 0.8, 0.25, 1);
1728
1830
  }
1729
1831
 
1730
1832
  .uvf-time-tooltip {
1731
1833
  position: absolute;
1732
- bottom: 24px;
1834
+ bottom: 32px;
1733
1835
  left: 50%;
1734
- transform: translateX(-50%);
1735
- background: rgba(0, 0, 0, 0.95);
1836
+ transform: translateX(-50%) translateY(8px) scale(0.9);
1837
+ background: linear-gradient(135deg,
1838
+ rgba(0, 0, 0, 0.95) 0%,
1839
+ rgba(20, 20, 20, 0.92) 50%,
1840
+ rgba(0, 0, 0, 0.98) 100%
1841
+ );
1736
1842
  color: #ffffff;
1737
- padding: 8px 14px;
1738
- border-radius: 8px;
1843
+ padding: 10px 16px;
1844
+ border-radius: 12px;
1739
1845
  font-size: 13px;
1740
1846
  font-weight: 600;
1847
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
1848
+ letter-spacing: 0.5px;
1741
1849
  white-space: nowrap;
1742
1850
  opacity: 0;
1743
- transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
1851
+ transition: all 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);
1744
1852
  pointer-events: none;
1745
1853
  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);
1854
+ box-shadow:
1855
+ 0 0 0 1px rgba(255, 255, 255, 0.05),
1856
+ 0 8px 32px rgba(0, 0, 0, 0.6),
1857
+ 0 2px 8px rgba(0, 0, 0, 0.3),
1858
+ inset 0 1px 0 rgba(255, 255, 255, 0.1);
1859
+ backdrop-filter: blur(20px) saturate(1.5);
1860
+ border: 1px solid rgba(255, 255, 255, 0.08);
1861
+ min-width: 52px;
1862
+ text-align: center;
1749
1863
  }
1750
1864
 
1865
+ /* Glass morphism tooltip arrow with multiple layers */
1751
1866
  .uvf-time-tooltip::after {
1752
1867
  content: '';
1753
1868
  position: absolute;
1754
- bottom: -8px;
1869
+ bottom: -10px;
1755
1870
  left: 50%;
1756
1871
  transform: translateX(-50%);
1757
1872
  width: 0;
1758
1873
  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);
1874
+ border-left: 10px solid transparent;
1875
+ border-right: 10px solid transparent;
1876
+ border-top: 10px solid rgba(0, 0, 0, 0.95);
1877
+ filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.2));
1762
1878
  }
1763
1879
 
1764
1880
  .uvf-time-tooltip::before {
1765
1881
  content: '';
1766
1882
  position: absolute;
1767
- bottom: -9px;
1883
+ bottom: -11px;
1768
1884
  left: 50%;
1769
1885
  transform: translateX(-50%);
1770
1886
  width: 0;
1771
1887
  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);
1888
+ border-left: 11px solid transparent;
1889
+ border-right: 11px solid transparent;
1890
+ border-top: 11px solid rgba(255, 255, 255, 0.08);
1775
1891
  z-index: -1;
1776
1892
  }
1777
1893
 
1894
+ /* Enhanced tooltip animations */
1778
1895
  .uvf-progress-bar-wrapper:hover .uvf-time-tooltip {
1779
1896
  opacity: 1;
1780
- transform: translateX(-50%) translateY(-2px);
1897
+ transform: translateX(-50%) translateY(-2px) scale(1);
1898
+ }
1899
+
1900
+ /* Tooltip pulse animation on first hover */
1901
+ @keyframes tooltipPulse {
1902
+ 0% { transform: translateX(-50%) translateY(-2px) scale(1); }
1903
+ 50% { transform: translateX(-50%) translateY(-4px) scale(1.05); }
1904
+ 100% { transform: translateX(-50%) translateY(-2px) scale(1); }
1781
1905
  }
1782
1906
 
1783
- /* Mobile responsive handle sizing */
1907
+ .uvf-time-tooltip.pulse {
1908
+ animation: tooltipPulse 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) once;
1909
+ }
1910
+
1911
+ /* Mobile responsive design with enhanced touch targets */
1784
1912
  @media (max-width: 768px) {
1913
+ .uvf-progress-bar-wrapper {
1914
+ padding: 20px 0; /* Larger touch area */
1915
+ height: 6px; /* Slightly thicker on mobile */
1916
+ }
1917
+
1918
+ .uvf-progress-bar-wrapper:hover {
1919
+ height: 8px;
1920
+ }
1921
+
1785
1922
  .uvf-progress-handle {
1786
- width: 16px;
1787
- height: 16px;
1788
- margin-left: -8px;
1789
- opacity: 0.7; /* Slightly visible always on mobile */
1923
+ width: 18px;
1924
+ height: 18px;
1925
+ opacity: 0.8; /* More visible on mobile for discoverability */
1926
+ border-width: 3px;
1927
+ box-shadow:
1928
+ 0 0 0 2px rgba(255, 87, 34, 0.3),
1929
+ 0 6px 16px rgba(0, 0, 0, 0.3),
1930
+ inset 0 1px 0 rgba(255, 255, 255, 0.5);
1790
1931
  }
1791
1932
 
1792
1933
  .uvf-progress-bar-wrapper:hover .uvf-progress-handle,
1793
1934
  .uvf-progress-handle:active {
1794
1935
  opacity: 1;
1936
+ transform: translate(-50%, -50%) scale(1);
1795
1937
  }
1796
1938
 
1797
1939
  .uvf-progress-handle:hover {
1798
- transform: translateY(-50%) scale(1.1);
1940
+ transform: translate(-50%, -50%) scale(1.15);
1941
+ box-shadow:
1942
+ 0 0 0 4px rgba(255, 87, 34, 0.4),
1943
+ 0 8px 20px rgba(255, 87, 34, 0.35),
1944
+ inset 0 2px 0 rgba(255, 255, 255, 0.7);
1799
1945
  }
1800
1946
 
1801
1947
  .uvf-progress-handle:active,
1802
1948
  .uvf-progress-handle.dragging {
1803
- transform: translateY(-50%) scale(1.25);
1949
+ transform: translate(-50%, -50%) scale(1.3);
1950
+ box-shadow:
1951
+ 0 0 0 6px rgba(255, 87, 34, 0.5),
1952
+ 0 10px 25px rgba(255, 69, 0, 0.4),
1953
+ inset 0 2px 0 rgba(255, 255, 255, 0.8);
1954
+ }
1955
+ }
1956
+
1957
+ /* High DPI displays optimization */
1958
+ @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
1959
+ .uvf-progress-handle {
1960
+ background: radial-gradient(circle,
1961
+ rgba(255, 255, 255, 0.98) 0%,
1962
+ rgba(255, 255, 255, 0.92) 70%,
1963
+ rgba(255, 255, 255, 0.88) 100%
1964
+ );
1804
1965
  }
1805
1966
  }
1806
1967
  /* Controls Row */
@@ -3684,15 +3845,14 @@ export class WebPlayer extends BasePlayer {
3684
3845
  progressBar.id = 'uvf-progress-bar';
3685
3846
  progressBar.innerHTML = `
3686
3847
  <div class="uvf-progress-buffered" id="uvf-progress-buffered"></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>
3848
+ <div class="uvf-progress-filled" id="uvf-progress-filled"></div>
3849
+ <div class="uvf-progress-handle" id="uvf-progress-handle"
3850
+ role="slider"
3851
+ tabindex="0"
3852
+ aria-label="Seek"
3853
+ aria-valuemin="0"
3854
+ aria-valuemax="100"
3855
+ aria-valuenow="0"></div>
3696
3856
  <div class="uvf-time-tooltip" id="uvf-time-tooltip">00:00</div>
3697
3857
  `;
3698
3858
  progressSection.appendChild(progressBar);
@@ -3978,12 +4138,11 @@ export class WebPlayer extends BasePlayer {
3978
4138
  this.video.addEventListener('timeupdate', () => {
3979
4139
  const progressFilled = document.getElementById('uvf-progress-filled');
3980
4140
  const progressHandle = document.getElementById('uvf-progress-handle');
3981
- if (this.video && progressFilled) {
4141
+ if (this.video && progressFilled && progressHandle) {
3982
4142
  const percent = (this.video.currentTime / this.video.duration) * 100;
3983
4143
  progressFilled.style.width = percent + '%';
3984
- if (progressHandle) {
3985
- progressHandle.setAttribute('aria-valuenow', percent.toString());
3986
- }
4144
+ progressHandle.style.left = percent + '%';
4145
+ progressHandle.setAttribute('aria-valuenow', percent.toString());
3987
4146
  }
3988
4147
  this.updateTimeDisplay();
3989
4148
  });
@@ -4487,11 +4646,20 @@ export class WebPlayer extends BasePlayer {
4487
4646
  }
4488
4647
  handleProgressChange(e) {
4489
4648
  const progressBar = document.getElementById('uvf-progress-bar');
4649
+ const progressFilled = document.getElementById('uvf-progress-filled');
4650
+ const progressHandle = document.getElementById('uvf-progress-handle');
4490
4651
  if (!progressBar || !this.video)
4491
4652
  return;
4492
4653
  const rect = progressBar.getBoundingClientRect();
4493
- const percent = (e.clientX - rect.left) / rect.width;
4494
- const time = percent * this.video.duration;
4654
+ const x = Math.max(0, Math.min(e.clientX - rect.left, rect.width));
4655
+ const percent = (x / rect.width) * 100;
4656
+ const time = (percent / 100) * this.video.duration;
4657
+ if (progressFilled) {
4658
+ progressFilled.style.width = percent + '%';
4659
+ }
4660
+ if (progressHandle) {
4661
+ progressHandle.style.left = percent + '%';
4662
+ }
4495
4663
  this.seek(time);
4496
4664
  }
4497
4665
  formatTime(seconds) {
@@ -4609,11 +4777,18 @@ export class WebPlayer extends BasePlayer {
4609
4777
  if (!progressBar || !timeTooltip || !this.video)
4610
4778
  return;
4611
4779
  const rect = progressBar.getBoundingClientRect();
4612
- const percent = (e.clientX - rect.left) / rect.width;
4613
- const time = percent * this.video.duration;
4780
+ const x = Math.max(0, Math.min(e.clientX - rect.left, rect.width));
4781
+ const percent = (x / rect.width) * 100;
4782
+ const time = (percent / 100) * this.video.duration;
4614
4783
  timeTooltip.textContent = this.formatTime(time);
4615
- timeTooltip.style.left = `${e.clientX - rect.left}px`;
4784
+ timeTooltip.style.left = percent + '%';
4616
4785
  timeTooltip.style.opacity = '1';
4786
+ if (!timeTooltip.classList.contains('pulse') && timeTooltip.style.opacity === '1') {
4787
+ timeTooltip.classList.add('pulse');
4788
+ setTimeout(() => {
4789
+ timeTooltip.classList.remove('pulse');
4790
+ }, 600);
4791
+ }
4617
4792
  }
4618
4793
  hideTimeTooltip() {
4619
4794
  const timeTooltip = document.getElementById('uvf-time-tooltip');
@@ -4624,6 +4799,7 @@ export class WebPlayer extends BasePlayer {
4624
4799
  updateProgressTooltip(e) {
4625
4800
  const progressBar = document.getElementById('uvf-progress-bar');
4626
4801
  const timeTooltip = document.getElementById('uvf-time-tooltip');
4802
+ const progressHandle = document.getElementById('uvf-progress-handle');
4627
4803
  if (!progressBar || !timeTooltip || !this.video)
4628
4804
  return;
4629
4805
  const rect = progressBar.getBoundingClientRect();
@@ -4633,6 +4809,10 @@ export class WebPlayer extends BasePlayer {
4633
4809
  timeTooltip.textContent = this.formatTime(time);
4634
4810
  timeTooltip.style.left = percent + '%';
4635
4811
  timeTooltip.style.opacity = '1';
4812
+ if (progressHandle && this.isDragging) {
4813
+ progressHandle.style.transform = 'translate(-50%, -50%) scale(1.4)';
4814
+ progressHandle.classList.add('dragging');
4815
+ }
4636
4816
  }
4637
4817
  showShortcutIndicator(text) {
4638
4818
  const el = document.getElementById('uvf-shortcut-indicator');