unified-video-framework 1.4.2 → 1.4.4
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 +1 -1
- package/packages/web/dist/WebPlayer.d.ts.map +1 -1
- package/packages/web/dist/WebPlayer.js +196 -47
- package/packages/web/dist/WebPlayer.js.map +1 -1
- package/packages/web/dist/react/WebPlayerView.d.ts.map +1 -1
- package/packages/web/dist/react/WebPlayerView.js +10 -7
- package/packages/web/dist/react/WebPlayerView.js.map +1 -1
- package/packages/web/src/WebPlayer.ts +195 -47
- package/packages/web/src/react/WebPlayerView.tsx +15 -8
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "unified-video-framework",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.4",
|
|
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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"}
|
|
@@ -632,6 +632,10 @@ class WebPlayer extends core_1.BasePlayer {
|
|
|
632
632
|
--uvf-icon-color: #ffffff;
|
|
633
633
|
--uvf-text-primary: #ffffff;
|
|
634
634
|
--uvf-text-secondary: rgba(255,255,255,0.75);
|
|
635
|
+
/* Overlay variables (can be overridden by theme) */
|
|
636
|
+
--uvf-overlay-strong: rgba(0,0,0,0.95);
|
|
637
|
+
--uvf-overlay-medium: rgba(0,0,0,0.7);
|
|
638
|
+
--uvf-overlay-transparent: rgba(0,0,0,0);
|
|
635
639
|
/* Scrollbar design variables */
|
|
636
640
|
--uvf-scrollbar-width: 8px;
|
|
637
641
|
--uvf-scrollbar-thumb-start: rgba(255,0,0,0.35);
|
|
@@ -733,14 +737,14 @@ class WebPlayer extends core_1.BasePlayer {
|
|
|
733
737
|
.uvf-top-gradient {
|
|
734
738
|
top: 0;
|
|
735
739
|
height: 120px;
|
|
736
|
-
background: linear-gradient(to bottom,
|
|
740
|
+
background: linear-gradient(to bottom, var(--uvf-overlay-medium), var(--uvf-overlay-transparent));
|
|
737
741
|
z-index: 6;
|
|
738
742
|
}
|
|
739
743
|
|
|
740
744
|
.uvf-controls-gradient {
|
|
741
745
|
bottom: 0;
|
|
742
746
|
height: 150px;
|
|
743
|
-
background: linear-gradient(to top,
|
|
747
|
+
background: linear-gradient(to top, var(--uvf-overlay-strong), var(--uvf-overlay-transparent));
|
|
744
748
|
z-index: 9;
|
|
745
749
|
}
|
|
746
750
|
|
|
@@ -1490,30 +1494,74 @@ class WebPlayer extends core_1.BasePlayer {
|
|
|
1490
1494
|
|
|
1491
1495
|
.uvf-controls-bar {
|
|
1492
1496
|
padding: 12px 8px;
|
|
1497
|
+
background: linear-gradient(to top, var(--uvf-overlay-strong) 0%, var(--uvf-overlay-medium) 70%, var(--uvf-overlay-transparent) 100%);
|
|
1493
1498
|
}
|
|
1494
1499
|
|
|
1495
1500
|
.uvf-controls-row {
|
|
1496
|
-
gap:
|
|
1501
|
+
gap: 8px;
|
|
1502
|
+
flex-wrap: nowrap;
|
|
1503
|
+
align-items: center;
|
|
1504
|
+
justify-content: space-between;
|
|
1497
1505
|
}
|
|
1498
1506
|
|
|
1507
|
+
/* Mobile control sizing - 70% of desktop size */
|
|
1499
1508
|
.uvf-control-btn {
|
|
1500
|
-
width:
|
|
1501
|
-
height:
|
|
1502
|
-
min-width:
|
|
1503
|
-
min-height:
|
|
1509
|
+
width: 28px; /* 70% of 40px */
|
|
1510
|
+
height: 28px;
|
|
1511
|
+
min-width: 28px;
|
|
1512
|
+
min-height: 28px;
|
|
1504
1513
|
}
|
|
1505
1514
|
|
|
1506
1515
|
.uvf-control-btn.play-pause {
|
|
1507
|
-
width:
|
|
1508
|
-
height:
|
|
1509
|
-
min-width:
|
|
1510
|
-
min-height:
|
|
1516
|
+
width: 35px; /* 70% of 50px */
|
|
1517
|
+
height: 35px;
|
|
1518
|
+
min-width: 35px;
|
|
1519
|
+
min-height: 35px;
|
|
1520
|
+
}
|
|
1521
|
+
|
|
1522
|
+
.uvf-control-btn svg {
|
|
1523
|
+
width: 14px; /* 70% of 20px */
|
|
1524
|
+
height: 14px;
|
|
1525
|
+
}
|
|
1526
|
+
|
|
1527
|
+
.uvf-control-btn.play-pause svg {
|
|
1528
|
+
width: 17px; /* 70% of 24px */
|
|
1529
|
+
height: 17px;
|
|
1530
|
+
}
|
|
1531
|
+
|
|
1532
|
+
/* Skip buttons */
|
|
1533
|
+
#uvf-skip-back svg,
|
|
1534
|
+
#uvf-skip-forward svg {
|
|
1535
|
+
width: 15px; /* 70% of 22px */
|
|
1536
|
+
height: 15px;
|
|
1511
1537
|
}
|
|
1512
1538
|
|
|
1513
1539
|
.uvf-time-display {
|
|
1514
|
-
font-size:
|
|
1515
|
-
min-width:
|
|
1516
|
-
padding: 0
|
|
1540
|
+
font-size: 10px; /* 70% of 14px */
|
|
1541
|
+
min-width: 84px; /* 70% of 120px */
|
|
1542
|
+
padding: 0 7px; /* 70% of 10px */
|
|
1543
|
+
order: 4;
|
|
1544
|
+
}
|
|
1545
|
+
|
|
1546
|
+
/* Volume control mobile adjustments */
|
|
1547
|
+
.uvf-volume-control {
|
|
1548
|
+
order: 3;
|
|
1549
|
+
}
|
|
1550
|
+
|
|
1551
|
+
.uvf-volume-panel {
|
|
1552
|
+
left: -60px;
|
|
1553
|
+
width: 140px;
|
|
1554
|
+
}
|
|
1555
|
+
|
|
1556
|
+
.uvf-volume-slider {
|
|
1557
|
+
width: 80px; /* Reduced from 120px for mobile */
|
|
1558
|
+
}
|
|
1559
|
+
|
|
1560
|
+
/* Right controls mobile layout */
|
|
1561
|
+
.uvf-right-controls {
|
|
1562
|
+
order: 5;
|
|
1563
|
+
gap: 6px;
|
|
1564
|
+
margin-left: 4px;
|
|
1517
1565
|
}
|
|
1518
1566
|
|
|
1519
1567
|
.uvf-top-controls {
|
|
@@ -1523,10 +1571,15 @@ class WebPlayer extends core_1.BasePlayer {
|
|
|
1523
1571
|
}
|
|
1524
1572
|
|
|
1525
1573
|
.uvf-top-btn {
|
|
1526
|
-
width:
|
|
1527
|
-
height:
|
|
1528
|
-
min-width:
|
|
1529
|
-
min-height:
|
|
1574
|
+
width: 28px; /* 70% of 40px */
|
|
1575
|
+
height: 28px;
|
|
1576
|
+
min-width: 28px;
|
|
1577
|
+
min-height: 28px;
|
|
1578
|
+
}
|
|
1579
|
+
|
|
1580
|
+
.uvf-top-btn svg {
|
|
1581
|
+
width: 14px; /* 70% of 20px */
|
|
1582
|
+
height: 14px;
|
|
1530
1583
|
}
|
|
1531
1584
|
|
|
1532
1585
|
.uvf-title-bar {
|
|
@@ -1534,38 +1587,59 @@ class WebPlayer extends core_1.BasePlayer {
|
|
|
1534
1587
|
}
|
|
1535
1588
|
|
|
1536
1589
|
.uvf-video-title {
|
|
1537
|
-
font-size:
|
|
1590
|
+
font-size: 13px; /* 70% of 18px */
|
|
1538
1591
|
}
|
|
1539
1592
|
|
|
1540
1593
|
.uvf-video-subtitle {
|
|
1541
|
-
font-size:
|
|
1594
|
+
font-size: 9px; /* 70% of 13px */
|
|
1542
1595
|
}
|
|
1543
1596
|
|
|
1544
1597
|
.uvf-center-play-btn {
|
|
1545
|
-
width: 56px;
|
|
1598
|
+
width: 56px; /* 70% of 80px */
|
|
1546
1599
|
height: 56px;
|
|
1547
1600
|
}
|
|
1548
1601
|
|
|
1549
1602
|
.uvf-center-play-btn svg {
|
|
1550
|
-
width:
|
|
1551
|
-
height:
|
|
1603
|
+
width: 25px; /* 70% of 35px */
|
|
1604
|
+
height: 25px;
|
|
1552
1605
|
}
|
|
1553
1606
|
|
|
1554
1607
|
.uvf-progress-bar-wrapper {
|
|
1555
|
-
height:
|
|
1556
|
-
margin-bottom:
|
|
1608
|
+
height: 6px; /* Slightly reduced for mobile */
|
|
1609
|
+
margin-bottom: 8px;
|
|
1557
1610
|
}
|
|
1558
1611
|
|
|
1559
1612
|
.uvf-progress-handle {
|
|
1560
|
-
width:
|
|
1561
|
-
height:
|
|
1613
|
+
width: 14px; /* Slightly larger for touch */
|
|
1614
|
+
height: 14px;
|
|
1562
1615
|
}
|
|
1563
1616
|
|
|
1564
1617
|
.uvf-settings-menu {
|
|
1565
|
-
min-width:
|
|
1566
|
-
bottom:
|
|
1567
|
-
right:
|
|
1618
|
+
min-width: 140px;
|
|
1619
|
+
bottom: 30px;
|
|
1620
|
+
right: 8px;
|
|
1621
|
+
font-size: 12px;
|
|
1622
|
+
}
|
|
1623
|
+
|
|
1624
|
+
.uvf-settings-option {
|
|
1625
|
+
padding: 6px 12px;
|
|
1626
|
+
font-size: 12px;
|
|
1627
|
+
}
|
|
1628
|
+
|
|
1629
|
+
.uvf-quality-badge {
|
|
1630
|
+
font-size: 9px; /* 70% of 11px, but more readable at 9px */
|
|
1631
|
+
padding: 2px 4px;
|
|
1632
|
+
}
|
|
1633
|
+
|
|
1634
|
+
/* Ensure all controls remain visible and functional */
|
|
1635
|
+
.uvf-controls-row > * {
|
|
1636
|
+
flex-shrink: 0;
|
|
1568
1637
|
}
|
|
1638
|
+
|
|
1639
|
+
/* Mobile-specific control group ordering for better layout */
|
|
1640
|
+
.uvf-control-btn:nth-child(1) { order: 1; } /* play-pause */
|
|
1641
|
+
.uvf-control-btn:nth-child(2) { order: 2; } /* skip-back */
|
|
1642
|
+
.uvf-control-btn:nth-child(3) { order: 3; } /* skip-forward */
|
|
1569
1643
|
}
|
|
1570
1644
|
|
|
1571
1645
|
/* Mobile devices (landscape) */
|
|
@@ -1602,13 +1676,38 @@ class WebPlayer extends core_1.BasePlayer {
|
|
|
1602
1676
|
}
|
|
1603
1677
|
|
|
1604
1678
|
.uvf-control-btn {
|
|
1605
|
-
width:
|
|
1606
|
-
height:
|
|
1679
|
+
width: 28px; /* 70% sizing for landscape mobile */
|
|
1680
|
+
height: 28px;
|
|
1681
|
+
}
|
|
1682
|
+
|
|
1683
|
+
.uvf-control-btn svg {
|
|
1684
|
+
width: 14px;
|
|
1685
|
+
height: 14px;
|
|
1607
1686
|
}
|
|
1608
1687
|
|
|
1609
1688
|
.uvf-control-btn.play-pause {
|
|
1610
|
-
width:
|
|
1611
|
-
height:
|
|
1689
|
+
width: 35px; /* 70% of 50px */
|
|
1690
|
+
height: 35px;
|
|
1691
|
+
}
|
|
1692
|
+
|
|
1693
|
+
.uvf-control-btn.play-pause svg {
|
|
1694
|
+
width: 17px;
|
|
1695
|
+
height: 17px;
|
|
1696
|
+
}
|
|
1697
|
+
|
|
1698
|
+
.uvf-top-btn {
|
|
1699
|
+
width: 28px;
|
|
1700
|
+
height: 28px;
|
|
1701
|
+
}
|
|
1702
|
+
|
|
1703
|
+
.uvf-top-btn svg {
|
|
1704
|
+
width: 14px;
|
|
1705
|
+
height: 14px;
|
|
1706
|
+
}
|
|
1707
|
+
|
|
1708
|
+
.uvf-time-display {
|
|
1709
|
+
font-size: 10px;
|
|
1710
|
+
min-width: 80px;
|
|
1612
1711
|
}
|
|
1613
1712
|
}
|
|
1614
1713
|
|
|
@@ -1619,13 +1718,33 @@ class WebPlayer extends core_1.BasePlayer {
|
|
|
1619
1718
|
}
|
|
1620
1719
|
|
|
1621
1720
|
.uvf-control-btn {
|
|
1622
|
-
width:
|
|
1623
|
-
height:
|
|
1721
|
+
width: 36px; /* 90% of desktop size for tablets */
|
|
1722
|
+
height: 36px;
|
|
1723
|
+
}
|
|
1724
|
+
|
|
1725
|
+
.uvf-control-btn svg {
|
|
1726
|
+
width: 18px;
|
|
1727
|
+
height: 18px;
|
|
1624
1728
|
}
|
|
1625
1729
|
|
|
1626
1730
|
.uvf-control-btn.play-pause {
|
|
1627
|
-
width:
|
|
1628
|
-
height:
|
|
1731
|
+
width: 45px; /* 90% of 50px */
|
|
1732
|
+
height: 45px;
|
|
1733
|
+
}
|
|
1734
|
+
|
|
1735
|
+
.uvf-control-btn.play-pause svg {
|
|
1736
|
+
width: 22px; /* 90% of 24px */
|
|
1737
|
+
height: 22px;
|
|
1738
|
+
}
|
|
1739
|
+
|
|
1740
|
+
.uvf-top-btn {
|
|
1741
|
+
width: 36px;
|
|
1742
|
+
height: 36px;
|
|
1743
|
+
}
|
|
1744
|
+
|
|
1745
|
+
.uvf-top-btn svg {
|
|
1746
|
+
width: 18px;
|
|
1747
|
+
height: 18px;
|
|
1629
1748
|
}
|
|
1630
1749
|
|
|
1631
1750
|
.uvf-top-controls {
|
|
@@ -1637,9 +1756,27 @@ class WebPlayer extends core_1.BasePlayer {
|
|
|
1637
1756
|
padding: 15px;
|
|
1638
1757
|
}
|
|
1639
1758
|
|
|
1759
|
+
.uvf-video-title {
|
|
1760
|
+
font-size: 16px; /* 90% of 18px */
|
|
1761
|
+
}
|
|
1762
|
+
|
|
1763
|
+
.uvf-video-subtitle {
|
|
1764
|
+
font-size: 12px; /* 90% of 13px */
|
|
1765
|
+
}
|
|
1766
|
+
|
|
1767
|
+
.uvf-time-display {
|
|
1768
|
+
font-size: 13px; /* 90% of 14px */
|
|
1769
|
+
min-width: 108px; /* 90% of 120px */
|
|
1770
|
+
}
|
|
1771
|
+
|
|
1640
1772
|
.uvf-center-play-btn {
|
|
1641
|
-
width:
|
|
1642
|
-
height:
|
|
1773
|
+
width: 72px; /* 90% of 80px */
|
|
1774
|
+
height: 72px;
|
|
1775
|
+
}
|
|
1776
|
+
|
|
1777
|
+
.uvf-center-play-btn svg {
|
|
1778
|
+
width: 32px; /* 90% of 35px */
|
|
1779
|
+
height: 32px;
|
|
1643
1780
|
}
|
|
1644
1781
|
}
|
|
1645
1782
|
|
|
@@ -1650,6 +1787,13 @@ class WebPlayer extends core_1.BasePlayer {
|
|
|
1650
1787
|
}
|
|
1651
1788
|
}
|
|
1652
1789
|
|
|
1790
|
+
/* Define overlay variables late to allow theme overrides elsewhere if needed */
|
|
1791
|
+
.uvf-player-wrapper {
|
|
1792
|
+
--uvf-overlay-strong: var(--uvf-overlay-strong, rgba(0,0,0,0.95));
|
|
1793
|
+
--uvf-overlay-medium: var(--uvf-overlay-medium, rgba(0,0,0,0.7));
|
|
1794
|
+
--uvf-overlay-transparent: var(--uvf-overlay-transparent, rgba(0,0,0,0));
|
|
1795
|
+
}
|
|
1796
|
+
|
|
1653
1797
|
/* Touch device optimizations */
|
|
1654
1798
|
@media (hover: none) and (pointer: coarse) {
|
|
1655
1799
|
.uvf-control-btn {
|
|
@@ -1791,11 +1935,6 @@ class WebPlayer extends core_1.BasePlayer {
|
|
|
1791
1935
|
</svg>
|
|
1792
1936
|
<span>Stop Casting</span>
|
|
1793
1937
|
</button>
|
|
1794
|
-
<div class="uvf-top-btn" id="uvf-playlist-btn" title="Add to Playlist">
|
|
1795
|
-
<svg viewBox="0 0 24 24">
|
|
1796
|
-
<path d="M14 10H2v2h12v-2zm0-4H2v2h12V6zm4 8v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zM2 16h8v-2H2v2z"/>
|
|
1797
|
-
</svg>
|
|
1798
|
-
</div>
|
|
1799
1938
|
<div class="uvf-top-btn" id="uvf-share-btn" title="Share">
|
|
1800
1939
|
<svg viewBox="0 0 24 24">
|
|
1801
1940
|
<path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92 1.61 0 2.92-1.31 2.92-2.92s-1.31-2.92-2.92-2.92z"/>
|
|
@@ -2188,11 +2327,9 @@ class WebPlayer extends core_1.BasePlayer {
|
|
|
2188
2327
|
pipBtn?.addEventListener('click', () => this.togglePiP());
|
|
2189
2328
|
const castBtn = document.getElementById('uvf-cast-btn');
|
|
2190
2329
|
const stopCastBtn = document.getElementById('uvf-stop-cast-btn');
|
|
2191
|
-
const playlistBtn = document.getElementById('uvf-playlist-btn');
|
|
2192
2330
|
const shareBtn = document.getElementById('uvf-share-btn');
|
|
2193
2331
|
castBtn?.addEventListener('click', () => this.onCastButtonClick());
|
|
2194
2332
|
stopCastBtn?.addEventListener('click', () => this.stopCasting());
|
|
2195
|
-
playlistBtn?.addEventListener('click', () => this.showNotification('Added to playlist'));
|
|
2196
2333
|
shareBtn?.addEventListener('click', () => this.shareVideo());
|
|
2197
2334
|
document.addEventListener('click', (e) => {
|
|
2198
2335
|
if (!e.target.closest('#uvf-settings-btn') &&
|
|
@@ -2699,6 +2836,9 @@ class WebPlayer extends core_1.BasePlayer {
|
|
|
2699
2836
|
let iconColor = null;
|
|
2700
2837
|
let textPrimary = null;
|
|
2701
2838
|
let textSecondary = null;
|
|
2839
|
+
let overlayStrong = null;
|
|
2840
|
+
let overlayMedium = null;
|
|
2841
|
+
let overlayTransparent = null;
|
|
2702
2842
|
if (typeof theme === 'string') {
|
|
2703
2843
|
accent1 = theme;
|
|
2704
2844
|
}
|
|
@@ -2708,6 +2848,9 @@ class WebPlayer extends core_1.BasePlayer {
|
|
|
2708
2848
|
iconColor = theme.iconColor || null;
|
|
2709
2849
|
textPrimary = theme.textPrimary || null;
|
|
2710
2850
|
textSecondary = theme.textSecondary || null;
|
|
2851
|
+
overlayStrong = theme.overlayStrong || null;
|
|
2852
|
+
overlayMedium = theme.overlayMedium || null;
|
|
2853
|
+
overlayTransparent = theme.overlayTransparent || null;
|
|
2711
2854
|
}
|
|
2712
2855
|
if (accent1)
|
|
2713
2856
|
wrapper.style.setProperty('--uvf-accent-1', accent1);
|
|
@@ -2734,6 +2877,12 @@ class WebPlayer extends core_1.BasePlayer {
|
|
|
2734
2877
|
wrapper.style.setProperty('--uvf-text-primary', textPrimary);
|
|
2735
2878
|
if (textSecondary)
|
|
2736
2879
|
wrapper.style.setProperty('--uvf-text-secondary', textSecondary);
|
|
2880
|
+
if (overlayStrong)
|
|
2881
|
+
wrapper.style.setProperty('--uvf-overlay-strong', overlayStrong);
|
|
2882
|
+
if (overlayMedium)
|
|
2883
|
+
wrapper.style.setProperty('--uvf-overlay-medium', overlayMedium);
|
|
2884
|
+
if (overlayTransparent)
|
|
2885
|
+
wrapper.style.setProperty('--uvf-overlay-transparent', overlayTransparent);
|
|
2737
2886
|
}
|
|
2738
2887
|
catch (_) {
|
|
2739
2888
|
}
|