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.
|
|
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(
|
|
1563
|
-
height: clamp(
|
|
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:
|
|
1660
|
-
|
|
1661
|
-
|
|
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:
|
|
1666
|
+
transition: height 0.2s ease;
|
|
1665
1667
|
}
|
|
1666
1668
|
|
|
1667
1669
|
.uvf-progress-bar-wrapper:hover {
|
|
1668
|
-
|
|
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.
|
|
1677
|
-
border-radius:
|
|
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:
|
|
1683
|
-
top: 0;
|
|
1684
|
-
left: 0;
|
|
1686
|
+
position: relative;
|
|
1685
1687
|
height: 100%;
|
|
1686
|
-
background: linear-gradient(90deg,
|
|
1687
|
-
border-radius:
|
|
1688
|
+
background: linear-gradient(90deg, #ff5722, #ff7043);
|
|
1689
|
+
border-radius: 2px;
|
|
1688
1690
|
pointer-events: none;
|
|
1689
|
-
|
|
1691
|
+
transition: width 0.2s ease;
|
|
1692
|
+
z-index: 2;
|
|
1690
1693
|
}
|
|
1691
1694
|
|
|
1692
1695
|
.uvf-progress-handle {
|
|
1693
1696
|
position: absolute;
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
background: #fff;
|
|
1697
|
+
width: 12px;
|
|
1698
|
+
height: 12px;
|
|
1699
|
+
background: #ffffff;
|
|
1700
|
+
border: 2px solid #ff5722;
|
|
1699
1701
|
border-radius: 50%;
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
3256
|
-
height: clamp(90px, 14vw,
|
|
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"
|
|
3585
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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);
|