vidply 1.0.8 → 1.0.10
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/dist/vidply.css +154 -52
- package/dist/vidply.esm.js +1867 -731
- package/dist/vidply.esm.js.map +3 -3
- package/dist/vidply.esm.min.js +3 -3
- package/dist/vidply.esm.min.meta.json +28 -10
- package/dist/vidply.js +1867 -731
- package/dist/vidply.js.map +3 -3
- package/dist/vidply.min.css +1 -1
- package/dist/vidply.min.js +3 -3
- package/dist/vidply.min.meta.json +27 -9
- package/package.json +1 -1
- package/src/controls/ControlBar.js +24 -14
- package/src/controls/TranscriptManager.js +658 -591
- package/src/core/Player.js +831 -331
- package/src/i18n/translations.js +55 -5
- package/src/icons/Icons.js +2 -2
- package/src/styles/vidply.css +154 -52
- package/src/utils/DraggableResizable.js +771 -0
package/dist/vidply.css
CHANGED
|
@@ -41,27 +41,32 @@
|
|
|
41
41
|
--vidply-border-hover: var(--vidply-white-30);
|
|
42
42
|
--vidply-border-light: var(--vidply-white-10);
|
|
43
43
|
--vidply-focus-outline: 2px solid var(--vidply-primary);
|
|
44
|
+
--vidply-focus-outline-player: 3px solid var(--vidply-primary-light);
|
|
44
45
|
--vidply-focus-outline-white: 2px solid var(--vidply-primary-light);
|
|
45
46
|
--vidply-hover-bg: var(--vidply-white-10);
|
|
46
47
|
--vidply-primary: #0a406e;
|
|
47
48
|
--vidply-primary-10: rgb(var(--vidply-primary-rgb), 0.1);
|
|
48
49
|
--vidply-primary-15: rgb(var(--vidply-primary-rgb), 0.15);
|
|
49
|
-
|
|
50
|
-
/* Black Color Variations */
|
|
51
50
|
--vidply-primary-20: rgb(var(--vidply-primary-rgb), 0.2);
|
|
52
51
|
--vidply-primary-25: rgb(var(--vidply-primary-rgb), 0.25);
|
|
53
52
|
--vidply-primary-30: rgb(var(--vidply-primary-rgb), 0.3);
|
|
54
53
|
--vidply-primary-40: rgb(var(--vidply-primary-rgb), 0.4);
|
|
55
54
|
--vidply-primary-50: rgb(var(--vidply-primary-rgb), 0.5);
|
|
55
|
+
|
|
56
|
+
/* Black Color Variations */
|
|
56
57
|
--vidply-primary-60: rgb(var(--vidply-primary-rgb), 0.6);
|
|
57
58
|
--vidply-primary-70: rgb(var(--vidply-primary-rgb), 0.7);
|
|
58
59
|
--vidply-primary-80: rgb(var(--vidply-primary-rgb), 0.8);
|
|
59
60
|
--vidply-primary-dark: #083358;
|
|
60
|
-
|
|
61
|
-
/* UI Background Colors */
|
|
62
61
|
--vidply-primary-dark-rgb: 8, 51, 88;
|
|
63
62
|
--vidply-primary-light: #71b7e2;
|
|
64
63
|
--vidply-primary-rgb: 10, 64, 110;
|
|
64
|
+
--vidply-scrollbar-thumb: var(--vidply-white);
|
|
65
|
+
--vidply-scrollbar-thumb-hover: var(--vidply-white-90);
|
|
66
|
+
|
|
67
|
+
/* UI Background Colors */
|
|
68
|
+
--vidply-scrollbar-track: #404040;
|
|
69
|
+
--vidply-scrollbar-track-transcript: #555;
|
|
65
70
|
--vidply-shadow-lg: 0 12px 48px var(--vidply-black-80);
|
|
66
71
|
--vidply-shadow-md: 0 4px 12px var(--vidply-black-40);
|
|
67
72
|
--vidply-shadow-sm: 0 2px 4px var(--vidply-black-30);
|
|
@@ -70,6 +75,7 @@
|
|
|
70
75
|
--vidply-text-primary: var(--vidply-white);
|
|
71
76
|
--vidply-text-secondary: var(--vidply-white-90);
|
|
72
77
|
--vidply-text-subtle: var(--vidply-white-50);
|
|
78
|
+
--vidply-transition-default: all 0.2s ease;
|
|
73
79
|
|
|
74
80
|
/* Border Colors */
|
|
75
81
|
--vidply-white: #fff;
|
|
@@ -116,16 +122,11 @@
|
|
|
116
122
|
|
|
117
123
|
/* Player Focus Outline */
|
|
118
124
|
.vidply-player:focus {
|
|
119
|
-
outline: 3px solid var(--vidply-primary-light);
|
|
120
|
-
outline-offset: 4px;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
.vidply-player:focus:not(:focus-visible) {
|
|
124
125
|
outline: none;
|
|
125
126
|
}
|
|
126
127
|
|
|
127
128
|
.vidply-player:focus-visible {
|
|
128
|
-
outline:
|
|
129
|
+
outline: var(--vidply-focus-outline-player);
|
|
129
130
|
outline-offset: 4px;
|
|
130
131
|
}
|
|
131
132
|
|
|
@@ -198,6 +199,17 @@
|
|
|
198
199
|
z-index: 1; /* Base video layer */
|
|
199
200
|
}
|
|
200
201
|
|
|
202
|
+
.vidply-video-wrapper.vidply-forced-poster {
|
|
203
|
+
background-image: var(--vidply-poster-image);
|
|
204
|
+
background-position: center;
|
|
205
|
+
background-repeat: no-repeat;
|
|
206
|
+
background-size: cover;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.vidply-video-wrapper.vidply-forced-poster > video {
|
|
210
|
+
opacity: 0;
|
|
211
|
+
}
|
|
212
|
+
|
|
201
213
|
/* Mobile: Simplify video wrapper */
|
|
202
214
|
@media (width <= 640px) {
|
|
203
215
|
.vidply-video-wrapper {
|
|
@@ -317,9 +329,6 @@
|
|
|
317
329
|
.vidply-progress-container:hover,
|
|
318
330
|
.vidply-progress-container:focus {
|
|
319
331
|
height: 8px;
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
.vidply-progress-container:focus {
|
|
323
332
|
outline: var(--vidply-focus-outline-white);
|
|
324
333
|
outline-offset: 2px;
|
|
325
334
|
}
|
|
@@ -427,10 +436,6 @@
|
|
|
427
436
|
outline-offset: 2px;
|
|
428
437
|
}
|
|
429
438
|
|
|
430
|
-
.vidply-button:focus:not(:focus-visible) {
|
|
431
|
-
outline: none;
|
|
432
|
-
}
|
|
433
|
-
|
|
434
439
|
.vidply-button:disabled {
|
|
435
440
|
cursor: not-allowed;
|
|
436
441
|
opacity: 0.5;
|
|
@@ -1316,12 +1321,16 @@
|
|
|
1316
1321
|
}
|
|
1317
1322
|
}
|
|
1318
1323
|
|
|
1319
|
-
/* Focus Visible
|
|
1320
|
-
.vidply-player :focus
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
.vidply-player :
|
|
1324
|
+
/* Focus Visible */
|
|
1325
|
+
.vidply-player :focus-visible,
|
|
1326
|
+
.vidply-player button:hover,
|
|
1327
|
+
.vidply-player a:hover,
|
|
1328
|
+
.vidply-player input:hover,
|
|
1329
|
+
.vidply-player select:hover,
|
|
1330
|
+
.vidply-player textarea:hover,
|
|
1331
|
+
.vidply-player [role="button"]:hover,
|
|
1332
|
+
.vidply-player [role="link"]:hover,
|
|
1333
|
+
.vidply-player [tabindex]:not([tabindex="-1"]):hover {
|
|
1325
1334
|
outline: var(--vidply-focus-outline-white);
|
|
1326
1335
|
outline-offset: 2px;
|
|
1327
1336
|
}
|
|
@@ -1408,7 +1417,7 @@
|
|
|
1408
1417
|
gap: 12px;
|
|
1409
1418
|
padding: 12px 16px;
|
|
1410
1419
|
position: relative;
|
|
1411
|
-
transition:
|
|
1420
|
+
transition: var(--vidply-transition-default);
|
|
1412
1421
|
}
|
|
1413
1422
|
|
|
1414
1423
|
.vidply-playlist-item:hover {
|
|
@@ -1419,19 +1428,14 @@
|
|
|
1419
1428
|
.vidply-playlist-item:focus {
|
|
1420
1429
|
background: var(--vidply-white-08);
|
|
1421
1430
|
border-left-color: var(--vidply-primary);
|
|
1422
|
-
outline: 2px solid var(--vidply-primary-light);
|
|
1423
|
-
outline-offset: -2px;
|
|
1424
|
-
z-index: 1;
|
|
1425
|
-
}
|
|
1426
|
-
|
|
1427
|
-
.vidply-playlist-item:focus:not(:focus-visible) {
|
|
1428
1431
|
outline: none;
|
|
1432
|
+
z-index: 1;
|
|
1429
1433
|
}
|
|
1430
1434
|
|
|
1431
1435
|
.vidply-playlist-item:focus-visible {
|
|
1432
1436
|
background: var(--vidply-white-08);
|
|
1433
1437
|
border-left-color: var(--vidply-primary);
|
|
1434
|
-
outline:
|
|
1438
|
+
outline: var(--vidply-focus-outline-white);
|
|
1435
1439
|
outline-offset: -2px;
|
|
1436
1440
|
z-index: 1;
|
|
1437
1441
|
}
|
|
@@ -1445,10 +1449,14 @@
|
|
|
1445
1449
|
background: var(--vidply-primary-20);
|
|
1446
1450
|
}
|
|
1447
1451
|
|
|
1448
|
-
.vidply-playlist-item-active:focus
|
|
1452
|
+
.vidply-playlist-item-active:focus {
|
|
1453
|
+
background: var(--vidply-primary-20);
|
|
1454
|
+
outline: none;
|
|
1455
|
+
}
|
|
1456
|
+
|
|
1449
1457
|
.vidply-playlist-item-active:focus-visible {
|
|
1450
1458
|
background: var(--vidply-primary-20);
|
|
1451
|
-
outline:
|
|
1459
|
+
outline: var(--vidply-focus-outline-white);
|
|
1452
1460
|
outline-offset: -2px;
|
|
1453
1461
|
}
|
|
1454
1462
|
|
|
@@ -1470,7 +1478,7 @@
|
|
|
1470
1478
|
.vidply-playlist-thumbnail-icon {
|
|
1471
1479
|
color: var(--vidply-text-subtle);
|
|
1472
1480
|
height: 32px;
|
|
1473
|
-
transition:
|
|
1481
|
+
transition: var(--vidply-transition-default);
|
|
1474
1482
|
width: 32px;
|
|
1475
1483
|
}
|
|
1476
1484
|
|
|
@@ -1531,21 +1539,26 @@
|
|
|
1531
1539
|
}
|
|
1532
1540
|
|
|
1533
1541
|
/* Playlist Scrollbar */
|
|
1542
|
+
.vidply-playlist-panel {
|
|
1543
|
+
scrollbar-color: var(--vidply-scrollbar-thumb) var(--vidply-scrollbar-track);
|
|
1544
|
+
scrollbar-width: thin;
|
|
1545
|
+
}
|
|
1546
|
+
|
|
1534
1547
|
.vidply-playlist-panel::-webkit-scrollbar {
|
|
1535
1548
|
width: 8px;
|
|
1536
1549
|
}
|
|
1537
1550
|
|
|
1538
1551
|
.vidply-playlist-panel::-webkit-scrollbar-track {
|
|
1539
|
-
background: var(--vidply-
|
|
1552
|
+
background: var(--vidply-scrollbar-track);
|
|
1540
1553
|
}
|
|
1541
1554
|
|
|
1542
1555
|
.vidply-playlist-panel::-webkit-scrollbar-thumb {
|
|
1543
|
-
background: var(--vidply-
|
|
1556
|
+
background: var(--vidply-scrollbar-thumb);
|
|
1544
1557
|
border-radius: 4px;
|
|
1545
1558
|
}
|
|
1546
1559
|
|
|
1547
1560
|
.vidply-playlist-panel::-webkit-scrollbar-thumb:hover {
|
|
1548
|
-
background: var(--vidply-
|
|
1561
|
+
background: var(--vidply-scrollbar-thumb-hover);
|
|
1549
1562
|
}
|
|
1550
1563
|
|
|
1551
1564
|
/* Audio Player with Playlist */
|
|
@@ -1576,7 +1589,7 @@
|
|
|
1576
1589
|
flex-direction: column;
|
|
1577
1590
|
max-width: 400px;
|
|
1578
1591
|
order: 4; /* After video-wrapper (1), track-info (2), and playlist-panel (3) */
|
|
1579
|
-
position:
|
|
1592
|
+
position: fixed;
|
|
1580
1593
|
top: 0;
|
|
1581
1594
|
width: 400px;
|
|
1582
1595
|
z-index: 5;
|
|
@@ -1589,7 +1602,7 @@
|
|
|
1589
1602
|
|
|
1590
1603
|
.vidply-transcript-header {
|
|
1591
1604
|
align-items: center;
|
|
1592
|
-
background:
|
|
1605
|
+
background: #282828;
|
|
1593
1606
|
border-bottom: 1px solid var(--vidply-border-light);
|
|
1594
1607
|
border-radius: 8px 8px 0 0;
|
|
1595
1608
|
cursor: move;
|
|
@@ -1599,11 +1612,24 @@
|
|
|
1599
1612
|
user-select: none;
|
|
1600
1613
|
}
|
|
1601
1614
|
|
|
1615
|
+
.vidply-transcript-header:focus,
|
|
1616
|
+
.vidply-transcript-header:focus-visible {
|
|
1617
|
+
box-shadow: 0 0 0 4px rgb(91 144 255 / 35%);
|
|
1618
|
+
outline: 3px solid var(--vidply-primary-light);
|
|
1619
|
+
outline-offset: 2px;
|
|
1620
|
+
}
|
|
1621
|
+
|
|
1602
1622
|
.vidply-transcript-header h3 {
|
|
1623
|
+
/* Visually hidden but accessible to screen readers */
|
|
1603
1624
|
color: var(--vidply-white);
|
|
1604
1625
|
font-size: 16px;
|
|
1605
1626
|
font-weight: 600;
|
|
1627
|
+
height: 1px;
|
|
1628
|
+
left: -10000px;
|
|
1606
1629
|
margin: 0;
|
|
1630
|
+
overflow: hidden;
|
|
1631
|
+
position: absolute;
|
|
1632
|
+
width: 1px;
|
|
1607
1633
|
}
|
|
1608
1634
|
|
|
1609
1635
|
.vidply-transcript-close {
|
|
@@ -1617,7 +1643,7 @@
|
|
|
1617
1643
|
height: 28px;
|
|
1618
1644
|
justify-content: center;
|
|
1619
1645
|
padding: 4px;
|
|
1620
|
-
transition:
|
|
1646
|
+
transition: var(--vidply-transition-default);
|
|
1621
1647
|
width: 28px;
|
|
1622
1648
|
}
|
|
1623
1649
|
|
|
@@ -1720,31 +1746,92 @@
|
|
|
1720
1746
|
}
|
|
1721
1747
|
|
|
1722
1748
|
/* Transcript Scrollbar */
|
|
1749
|
+
.vidply-transcript-content {
|
|
1750
|
+
scrollbar-color: var(--vidply-scrollbar-thumb) var(--vidply-scrollbar-track-transcript);
|
|
1751
|
+
scrollbar-width: thin;
|
|
1752
|
+
}
|
|
1753
|
+
|
|
1723
1754
|
.vidply-transcript-content::-webkit-scrollbar {
|
|
1724
1755
|
width: 8px;
|
|
1725
1756
|
}
|
|
1726
1757
|
|
|
1727
1758
|
.vidply-transcript-content::-webkit-scrollbar-track {
|
|
1728
|
-
background: var(--vidply-
|
|
1759
|
+
background: var(--vidply-scrollbar-track-transcript);
|
|
1729
1760
|
}
|
|
1730
1761
|
|
|
1731
1762
|
.vidply-transcript-content::-webkit-scrollbar-thumb {
|
|
1732
|
-
background: var(--vidply-
|
|
1763
|
+
background: var(--vidply-scrollbar-thumb);
|
|
1733
1764
|
border-radius: 4px;
|
|
1734
1765
|
}
|
|
1735
1766
|
|
|
1736
1767
|
.vidply-transcript-content::-webkit-scrollbar-thumb:hover {
|
|
1737
|
-
background: var(--vidply-
|
|
1768
|
+
background: var(--vidply-scrollbar-thumb-hover);
|
|
1738
1769
|
}
|
|
1739
1770
|
|
|
1740
1771
|
/* Transcript Header Left Side (Settings Button + Title) */
|
|
1741
1772
|
.vidply-transcript-header-left {
|
|
1742
1773
|
align-items: center;
|
|
1743
1774
|
display: flex;
|
|
1744
|
-
gap:
|
|
1775
|
+
gap: 16px;
|
|
1745
1776
|
position: relative;
|
|
1746
1777
|
}
|
|
1747
1778
|
|
|
1779
|
+
/* Transcript Autoscroll Checkbox */
|
|
1780
|
+
.vidply-transcript-autoscroll-label {
|
|
1781
|
+
align-items: center;
|
|
1782
|
+
cursor: pointer;
|
|
1783
|
+
display: flex;
|
|
1784
|
+
gap: 6px;
|
|
1785
|
+
user-select: none;
|
|
1786
|
+
white-space: nowrap;
|
|
1787
|
+
}
|
|
1788
|
+
|
|
1789
|
+
.vidply-transcript-autoscroll-label input[type="checkbox"] {
|
|
1790
|
+
cursor: pointer;
|
|
1791
|
+
height: 16px;
|
|
1792
|
+
margin: 0;
|
|
1793
|
+
width: 16px;
|
|
1794
|
+
}
|
|
1795
|
+
|
|
1796
|
+
.vidply-transcript-autoscroll-text {
|
|
1797
|
+
color: var(--vidply-text-muted);
|
|
1798
|
+
font-size: 13px;
|
|
1799
|
+
transition: color 0.2s ease;
|
|
1800
|
+
}
|
|
1801
|
+
|
|
1802
|
+
.vidply-transcript-autoscroll-label:hover .vidply-transcript-autoscroll-text {
|
|
1803
|
+
color: var(--vidply-white);
|
|
1804
|
+
}
|
|
1805
|
+
|
|
1806
|
+
/* Transcript Language Selector */
|
|
1807
|
+
.vidply-transcript-language-select {
|
|
1808
|
+
background: var(--vidply-white-10);
|
|
1809
|
+
border: 1px solid var(--vidply-white-20);
|
|
1810
|
+
border-radius: 4px;
|
|
1811
|
+
color: var(--vidply-white);
|
|
1812
|
+
cursor: pointer;
|
|
1813
|
+
font-size: 13px;
|
|
1814
|
+
padding: 4px 8px;
|
|
1815
|
+
transition: var(--vidply-transition-default);
|
|
1816
|
+
}
|
|
1817
|
+
|
|
1818
|
+
.vidply-transcript-language-select:hover {
|
|
1819
|
+
background: var(--vidply-white-15);
|
|
1820
|
+
border-color: var(--vidply-border-hover);
|
|
1821
|
+
}
|
|
1822
|
+
|
|
1823
|
+
.vidply-transcript-language-select:focus {
|
|
1824
|
+
background: var(--vidply-white-15);
|
|
1825
|
+
border-color: var(--vidply-border-focus);
|
|
1826
|
+
box-shadow: 0 0 0 3px var(--vidply-primary-20);
|
|
1827
|
+
outline: none;
|
|
1828
|
+
}
|
|
1829
|
+
|
|
1830
|
+
.vidply-transcript-language-select option {
|
|
1831
|
+
background: #1a1a1a;
|
|
1832
|
+
color: var(--vidply-white);
|
|
1833
|
+
}
|
|
1834
|
+
|
|
1748
1835
|
/* Transcript Settings Button */
|
|
1749
1836
|
.vidply-transcript-settings {
|
|
1750
1837
|
align-items: center;
|
|
@@ -1758,7 +1845,7 @@
|
|
|
1758
1845
|
justify-content: center;
|
|
1759
1846
|
padding: 4px;
|
|
1760
1847
|
position: relative;
|
|
1761
|
-
transition:
|
|
1848
|
+
transition: var(--vidply-transition-default);
|
|
1762
1849
|
width: 28px;
|
|
1763
1850
|
}
|
|
1764
1851
|
|
|
@@ -1768,7 +1855,7 @@
|
|
|
1768
1855
|
}
|
|
1769
1856
|
|
|
1770
1857
|
.vidply-transcript-settings:focus {
|
|
1771
|
-
outline:
|
|
1858
|
+
outline: var(--vidply-focus-outline-white);
|
|
1772
1859
|
outline-offset: 2px;
|
|
1773
1860
|
}
|
|
1774
1861
|
|
|
@@ -2012,6 +2099,22 @@
|
|
|
2012
2099
|
z-index: 1000;
|
|
2013
2100
|
}
|
|
2014
2101
|
|
|
2102
|
+
.vidply-transcript-resize-tooltip {
|
|
2103
|
+
animation: fadeInDown 0.3s ease;
|
|
2104
|
+
background: var(--vidply-primary);
|
|
2105
|
+
border-radius: 4px;
|
|
2106
|
+
color: var(--vidply-white);
|
|
2107
|
+
font-size: 12px;
|
|
2108
|
+
left: 50%;
|
|
2109
|
+
padding: 6px 12px;
|
|
2110
|
+
position: absolute;
|
|
2111
|
+
text-align: center;
|
|
2112
|
+
top: 100%;
|
|
2113
|
+
transform: translateX(-50%);
|
|
2114
|
+
white-space: nowrap;
|
|
2115
|
+
z-index: 1000;
|
|
2116
|
+
}
|
|
2117
|
+
|
|
2015
2118
|
@keyframes fadeInDown {
|
|
2016
2119
|
from {
|
|
2017
2120
|
opacity: 0;
|
|
@@ -2090,7 +2193,7 @@
|
|
|
2090
2193
|
font-size: 13px;
|
|
2091
2194
|
outline: none;
|
|
2092
2195
|
padding: 6px 10px;
|
|
2093
|
-
transition:
|
|
2196
|
+
transition: var(--vidply-transition-default);
|
|
2094
2197
|
width: 100%;
|
|
2095
2198
|
}
|
|
2096
2199
|
|
|
@@ -2118,7 +2221,7 @@
|
|
|
2118
2221
|
height: 32px;
|
|
2119
2222
|
outline: none;
|
|
2120
2223
|
padding: 4px;
|
|
2121
|
-
transition:
|
|
2224
|
+
transition: var(--vidply-transition-default);
|
|
2122
2225
|
width: 100%;
|
|
2123
2226
|
}
|
|
2124
2227
|
|
|
@@ -2202,7 +2305,7 @@
|
|
|
2202
2305
|
font-weight: 600;
|
|
2203
2306
|
margin-top: 12px;
|
|
2204
2307
|
padding: 8px 16px;
|
|
2205
|
-
transition:
|
|
2308
|
+
transition: var(--vidply-transition-default);
|
|
2206
2309
|
width: 100%;
|
|
2207
2310
|
}
|
|
2208
2311
|
|
|
@@ -2224,9 +2327,8 @@
|
|
|
2224
2327
|
.vidply-sign-language-wrapper {
|
|
2225
2328
|
background: transparent;
|
|
2226
2329
|
height: auto;
|
|
2227
|
-
max-width:
|
|
2330
|
+
max-width: none;
|
|
2228
2331
|
min-height: 100px;
|
|
2229
|
-
min-width: 150px;
|
|
2230
2332
|
position: absolute;
|
|
2231
2333
|
transition: opacity 0.3s ease;
|
|
2232
2334
|
width: 280px;
|
|
@@ -2234,7 +2336,7 @@
|
|
|
2234
2336
|
}
|
|
2235
2337
|
|
|
2236
2338
|
.vidply-fullscreen .vidply-sign-language-wrapper {
|
|
2237
|
-
max-width:
|
|
2339
|
+
max-width: none;
|
|
2238
2340
|
}
|
|
2239
2341
|
|
|
2240
2342
|
.vidply-sign-language-wrapper:focus {
|