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.
|
|
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:
|
|
1661
|
+
background: rgba(255, 255, 255, 0.15);
|
|
1662
|
+
border-radius: 6px;
|
|
1663
1663
|
cursor: pointer;
|
|
1664
|
-
padding:
|
|
1664
|
+
padding: 14px 0;
|
|
1665
1665
|
overflow: visible;
|
|
1666
|
-
transition:
|
|
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:
|
|
1679
|
-
|
|
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:
|
|
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:
|
|
1736
|
+
position: absolute;
|
|
1737
|
+
top: 0;
|
|
1738
|
+
left: 0;
|
|
1687
1739
|
height: 100%;
|
|
1688
|
-
background: linear-gradient(90deg,
|
|
1689
|
-
|
|
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:
|
|
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:
|
|
1698
|
-
height:
|
|
1699
|
-
background:
|
|
1700
|
-
|
|
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
|
-
|
|
1704
|
-
margin-left: -6px;
|
|
1705
|
-
transform: translateY(-50%);
|
|
1779
|
+
transform: translate(-50%, -50%) scale(0);
|
|
1706
1780
|
opacity: 0;
|
|
1707
|
-
transition: all 0.
|
|
1708
|
-
box-shadow:
|
|
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:
|
|
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:
|
|
1720
|
-
|
|
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:
|
|
1727
|
-
|
|
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:
|
|
1834
|
+
bottom: 32px;
|
|
1733
1835
|
left: 50%;
|
|
1734
|
-
transform: translateX(-50%);
|
|
1735
|
-
background:
|
|
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:
|
|
1738
|
-
border-radius:
|
|
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.
|
|
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:
|
|
1747
|
-
|
|
1748
|
-
|
|
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: -
|
|
1869
|
+
bottom: -10px;
|
|
1755
1870
|
left: 50%;
|
|
1756
1871
|
transform: translateX(-50%);
|
|
1757
1872
|
width: 0;
|
|
1758
1873
|
height: 0;
|
|
1759
|
-
border-left:
|
|
1760
|
-
border-right:
|
|
1761
|
-
border-top:
|
|
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: -
|
|
1883
|
+
bottom: -11px;
|
|
1768
1884
|
left: 50%;
|
|
1769
1885
|
transform: translateX(-50%);
|
|
1770
1886
|
width: 0;
|
|
1771
1887
|
height: 0;
|
|
1772
|
-
border-left:
|
|
1773
|
-
border-right:
|
|
1774
|
-
border-top:
|
|
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
|
-
|
|
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:
|
|
1787
|
-
height:
|
|
1788
|
-
|
|
1789
|
-
|
|
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:
|
|
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:
|
|
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
|
-
|
|
3689
|
-
|
|
3690
|
-
|
|
3691
|
-
|
|
3692
|
-
|
|
3693
|
-
|
|
3694
|
-
|
|
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
|
-
|
|
3985
|
-
|
|
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
|
|
4494
|
-
const
|
|
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
|
|
4613
|
-
const
|
|
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 =
|
|
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');
|