myetv-player 1.3.0 → 1.5.0
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/README.md +1 -1
- package/css/myetv-player.css +118 -170
- package/css/myetv-player.min.css +1 -1
- package/dist/myetv-player.js +291 -160
- package/dist/myetv-player.min.js +214 -111
- package/package.json +3 -1
- package/plugins/soundcloud/myetv-player-soundcloud-plugin.js +927 -0
- package/plugins/soundcloud/readme.md +89 -0
- package/plugins/youtube/myetv-player-youtube-plugin.js +83 -125
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[](https://github.com/OskarCosimo/myetv-video-player-opensource/actions/workflows/codeql.yml) [](https://github.com/OskarCosimo/myetv-video-player-opensource/actions/workflows/npm-publish.yml)
|
|
1
|
+
[](https://github.com/OskarCosimo/myetv-video-player-opensource/actions/workflows/codeql.yml) [](https://github.com/OskarCosimo/myetv-video-player-opensource/actions/workflows/npm-publish.yml) [](https://opensource.org/licenses/MIT)
|
|
2
2
|
|
|
3
3
|
# MYETV Audio/Video Player Open Source
|
|
4
4
|
|
package/css/myetv-player.css
CHANGED
|
@@ -115,8 +115,13 @@ body {
|
|
|
115
115
|
height: auto;
|
|
116
116
|
display: block;
|
|
117
117
|
min-height: 300px;
|
|
118
|
-
|
|
119
|
-
|
|
118
|
+
-webkit-transform: translateZ(0);
|
|
119
|
+
transform: translateZ(0);
|
|
120
|
+
-webkit-backface-visibility: hidden;
|
|
121
|
+
backface-visibility: hidden;
|
|
122
|
+
will-change: transform;
|
|
123
|
+
visibility: visible;
|
|
124
|
+
opacity: 1;
|
|
120
125
|
position: relative;
|
|
121
126
|
z-index: 1;
|
|
122
127
|
transition: none;
|
|
@@ -1233,12 +1238,21 @@ body {
|
|
|
1233
1238
|
}
|
|
1234
1239
|
|
|
1235
1240
|
/* CONTROL MENUS */
|
|
1236
|
-
|
|
1237
|
-
.quality-control
|
|
1238
|
-
.subtitles-control {
|
|
1241
|
+
/* show quality menu in the controlbar */
|
|
1242
|
+
.quality-control {
|
|
1239
1243
|
position: relative;
|
|
1240
1244
|
}
|
|
1241
1245
|
|
|
1246
|
+
/* Hide individual subtitle button - it's now inside settings menu */
|
|
1247
|
+
.subtitles-control {
|
|
1248
|
+
display: none !important;
|
|
1249
|
+
}
|
|
1250
|
+
|
|
1251
|
+
/* Hide individual speed control button - it's now inside settings menu */
|
|
1252
|
+
.speed-control {
|
|
1253
|
+
display: none !important;
|
|
1254
|
+
}
|
|
1255
|
+
|
|
1242
1256
|
.speed-menu,
|
|
1243
1257
|
.quality-menu,
|
|
1244
1258
|
.subtitles-menu {
|
|
@@ -1352,10 +1366,12 @@ body {
|
|
|
1352
1366
|
color: var(--player-primary-color);
|
|
1353
1367
|
}
|
|
1354
1368
|
|
|
1355
|
-
/*
|
|
1369
|
+
/* ========================================
|
|
1370
|
+
SETTINGS DROPDOWN MENU - ALWAYS VISIBLE
|
|
1371
|
+
======================================== */
|
|
1356
1372
|
.settings-control {
|
|
1357
1373
|
position: relative;
|
|
1358
|
-
display:
|
|
1374
|
+
display: block !important;
|
|
1359
1375
|
}
|
|
1360
1376
|
|
|
1361
1377
|
.settings-btn {
|
|
@@ -1387,11 +1403,7 @@ body {
|
|
|
1387
1403
|
background: var(--player-button-active);
|
|
1388
1404
|
}
|
|
1389
1405
|
|
|
1390
|
-
|
|
1391
|
-
content: "⚙️";
|
|
1392
|
-
font-size: 16px;
|
|
1393
|
-
}
|
|
1394
|
-
|
|
1406
|
+
/* SETTINGS MENU CONTAINER */
|
|
1395
1407
|
.settings-menu {
|
|
1396
1408
|
position: absolute;
|
|
1397
1409
|
bottom: 100%;
|
|
@@ -1408,15 +1420,44 @@ body {
|
|
|
1408
1420
|
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
1409
1421
|
z-index: 100;
|
|
1410
1422
|
box-shadow: var(--player-shadow-menu);
|
|
1423
|
+
max-height: 200px;
|
|
1424
|
+
overflow-y: auto;
|
|
1425
|
+
overflow-x: hidden;
|
|
1426
|
+
/* Custom scrollbar styling - Firefox */
|
|
1427
|
+
scrollbar-width: thin;
|
|
1428
|
+
scrollbar-color: var(--player-primary-color) rgba(255, 255, 255, 0.05);
|
|
1411
1429
|
}
|
|
1412
1430
|
|
|
1413
|
-
/*
|
|
1431
|
+
/* Settings menu opens ONLY with .active (CLICK) */
|
|
1414
1432
|
.settings-menu.active {
|
|
1415
1433
|
opacity: 1 !important;
|
|
1416
1434
|
visibility: visible !important;
|
|
1417
1435
|
pointer-events: all !important;
|
|
1418
1436
|
}
|
|
1419
1437
|
|
|
1438
|
+
/* Custom scrollbar styling - Webkit browsers (Chrome, Safari, Edge) */
|
|
1439
|
+
.settings-menu::-webkit-scrollbar {
|
|
1440
|
+
width: 8px;
|
|
1441
|
+
}
|
|
1442
|
+
|
|
1443
|
+
.settings-menu::-webkit-scrollbar-track {
|
|
1444
|
+
background: rgba(255, 255, 255, 0.05);
|
|
1445
|
+
border-radius: 10px;
|
|
1446
|
+
}
|
|
1447
|
+
|
|
1448
|
+
.settings-menu::-webkit-scrollbar-thumb {
|
|
1449
|
+
background: var(--player-primary-color);
|
|
1450
|
+
border-radius: 10px;
|
|
1451
|
+
border: 2px solid transparent;
|
|
1452
|
+
background-clip: content-box;
|
|
1453
|
+
}
|
|
1454
|
+
|
|
1455
|
+
.settings-menu::-webkit-scrollbar-thumb:hover {
|
|
1456
|
+
background: var(--player-primary-hover, var(--player-primary-color));
|
|
1457
|
+
background-clip: content-box;
|
|
1458
|
+
}
|
|
1459
|
+
|
|
1460
|
+
/* SETTINGS OPTIONS */
|
|
1420
1461
|
.settings-option {
|
|
1421
1462
|
padding: 8px 16px;
|
|
1422
1463
|
color: var(--player-text-color);
|
|
@@ -1452,196 +1493,115 @@ body {
|
|
|
1452
1493
|
opacity: 0.8;
|
|
1453
1494
|
}
|
|
1454
1495
|
|
|
1455
|
-
/*
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
.
|
|
1459
|
-
position:
|
|
1460
|
-
|
|
1461
|
-
right: 100%;
|
|
1462
|
-
background: var(--player-bg-menu);
|
|
1463
|
-
backdrop-filter: blur(10px);
|
|
1464
|
-
border-radius: 8px;
|
|
1465
|
-
padding: 8px 0;
|
|
1466
|
-
margin-right: 5px;
|
|
1467
|
-
opacity: 0;
|
|
1468
|
-
visibility: hidden;
|
|
1469
|
-
transition: all var(--player-transition-fast);
|
|
1470
|
-
min-width: 150px;
|
|
1471
|
-
max-width: 180px;
|
|
1472
|
-
max-height: 250px;
|
|
1473
|
-
overflow-y: auto;
|
|
1474
|
-
overflow-x: hidden;
|
|
1475
|
-
white-space: nowrap;
|
|
1476
|
-
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
1477
|
-
z-index: 101;
|
|
1478
|
-
box-shadow: var(--player-shadow-menu);
|
|
1479
|
-
pointer-events: none;
|
|
1496
|
+
/* ========================================
|
|
1497
|
+
EXPANDABLE WRAPPER - For Speed, Subtitles
|
|
1498
|
+
======================================== */
|
|
1499
|
+
.settings-expandable-wrapper {
|
|
1500
|
+
position: relative;
|
|
1501
|
+
display: block;
|
|
1480
1502
|
}
|
|
1481
1503
|
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1504
|
+
.settings-option.expandable-trigger {
|
|
1505
|
+
display: flex;
|
|
1506
|
+
justify-content: space-between;
|
|
1507
|
+
align-items: center;
|
|
1508
|
+
cursor: pointer;
|
|
1509
|
+
}
|
|
1510
|
+
.settings-option.expandable-trigger .settings-option-label {
|
|
1511
|
+
font-size: 14px;
|
|
1512
|
+
}
|
|
1513
|
+
.settings-option.expandable-trigger .expand-arrow {
|
|
1514
|
+
font-size: 12px;
|
|
1515
|
+
transition: transform 0.2s ease;
|
|
1516
|
+
margin-left: 8px;
|
|
1490
1517
|
}
|
|
1491
1518
|
|
|
1492
|
-
.settings-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1519
|
+
.settings-option.expandable-trigger:hover {
|
|
1520
|
+
background: rgba(255, 255, 255, 0.1);
|
|
1521
|
+
}
|
|
1522
|
+
|
|
1523
|
+
/* EXPANDABLE CONTENT - THE SUBMENU - HIDDEN BY DEFAULT */
|
|
1524
|
+
.settings-expandable-content {
|
|
1525
|
+
padding-left: 15px;
|
|
1526
|
+
margin-top: 4px;
|
|
1527
|
+
display: none;
|
|
1528
|
+
background: rgba(0, 0, 0, 0.3);
|
|
1529
|
+
border-left: 3px solid var(--player-primary-color);
|
|
1530
|
+
}
|
|
1531
|
+
|
|
1532
|
+
.settings-expandable-content.active {
|
|
1533
|
+
display: block;
|
|
1500
1534
|
}
|
|
1501
1535
|
|
|
1536
|
+
/* SUBOPTIONS (velocità, tracce sottotitoli) */
|
|
1502
1537
|
.settings-suboption {
|
|
1503
|
-
padding: 8px
|
|
1504
|
-
color: var(--player-text-color);
|
|
1538
|
+
padding: 8px 12px;
|
|
1505
1539
|
cursor: pointer;
|
|
1506
|
-
|
|
1540
|
+
color: white;
|
|
1507
1541
|
font-size: 13px;
|
|
1542
|
+
white-space: normal;
|
|
1543
|
+
word-wrap: break-word;
|
|
1544
|
+
opacity: 0.8;
|
|
1545
|
+
transition: opacity 0.2s;
|
|
1508
1546
|
display: flex;
|
|
1509
1547
|
align-items: center;
|
|
1510
1548
|
justify-content: space-between;
|
|
1511
1549
|
}
|
|
1512
1550
|
|
|
1513
1551
|
.settings-suboption:hover {
|
|
1552
|
+
opacity: 1;
|
|
1514
1553
|
background: rgba(255, 255, 255, 0.1);
|
|
1515
|
-
color: var(--player-primary-color);
|
|
1516
1554
|
}
|
|
1517
1555
|
|
|
1518
1556
|
.settings-suboption.active {
|
|
1557
|
+
opacity: 1;
|
|
1558
|
+
font-weight: bold;
|
|
1519
1559
|
color: var(--player-primary-color);
|
|
1520
|
-
font-weight: 600;
|
|
1521
|
-
background: rgba(255, 255, 255, 0.05);
|
|
1522
1560
|
}
|
|
1523
1561
|
|
|
1524
1562
|
.settings-suboption.active::after {
|
|
1525
1563
|
content: "✓";
|
|
1526
1564
|
font-size: 12px;
|
|
1527
|
-
color: var(--player-primary-color);
|
|
1528
|
-
}
|
|
1529
|
-
|
|
1530
|
-
/* Visual indicator for options with submenus */
|
|
1531
|
-
.settings-option:has(.settings-submenu, .quality-submenu, .speed-submenu)::after {
|
|
1532
|
-
content: "▶";
|
|
1533
|
-
font-size: 10px;
|
|
1534
|
-
color: var(--player-text-secondary);
|
|
1535
|
-
margin-left: 8px;
|
|
1536
|
-
}
|
|
1537
|
-
|
|
1538
|
-
.settings-option:hover::after {
|
|
1539
|
-
color: var(--player-primary-color);
|
|
1540
1565
|
}
|
|
1541
1566
|
|
|
1542
|
-
/*
|
|
1567
|
+
/* ========================================
|
|
1568
|
+
RESPONSIVE ADJUSTMENTS
|
|
1569
|
+
======================================== */
|
|
1543
1570
|
@media (max-width: 768px) {
|
|
1544
1571
|
.settings-menu > .settings-option {
|
|
1545
|
-
font-size:
|
|
1546
|
-
}
|
|
1547
|
-
.settings-submenu,
|
|
1548
|
-
.quality-submenu,
|
|
1549
|
-
.speed-submenu {
|
|
1550
|
-
max-width: min(140px, 100vw - 180px) !important;
|
|
1572
|
+
font-size: 13px;
|
|
1551
1573
|
}
|
|
1552
|
-
.settings-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
padding: 7px 8px !important;
|
|
1556
|
-
font-size: 11px !important;
|
|
1574
|
+
.settings-suboption {
|
|
1575
|
+
font-size: 12px;
|
|
1576
|
+
padding: 7px 10px;
|
|
1557
1577
|
}
|
|
1558
1578
|
}
|
|
1559
1579
|
@media (max-width: 600px) {
|
|
1560
1580
|
.settings-menu > .settings-option {
|
|
1561
|
-
font-size:
|
|
1562
|
-
}
|
|
1563
|
-
.settings-submenu,
|
|
1564
|
-
.quality-submenu,
|
|
1565
|
-
.speed-submenu {
|
|
1566
|
-
max-width: min(120px, 100vw - 160px) !important;
|
|
1581
|
+
font-size: 12px;
|
|
1567
1582
|
}
|
|
1568
|
-
.settings-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
padding: 6px 7px !important;
|
|
1572
|
-
font-size: 10px !important;
|
|
1583
|
+
.settings-suboption {
|
|
1584
|
+
font-size: 11px;
|
|
1585
|
+
padding: 6px 8px;
|
|
1573
1586
|
}
|
|
1574
1587
|
}
|
|
1575
1588
|
@media (max-width: 450px) {
|
|
1576
1589
|
.settings-menu > .settings-option {
|
|
1577
|
-
font-size:
|
|
1578
|
-
}
|
|
1579
|
-
.settings-submenu,
|
|
1580
|
-
.quality-submenu,
|
|
1581
|
-
.speed-submenu {
|
|
1582
|
-
max-width: min(100px, 100vw - 140px) !important;
|
|
1590
|
+
font-size: 11px;
|
|
1583
1591
|
}
|
|
1584
|
-
.settings-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
padding: 5px 6px !important;
|
|
1588
|
-
font-size: 9px !important;
|
|
1592
|
+
.settings-suboption {
|
|
1593
|
+
font-size: 10px;
|
|
1594
|
+
padding: 5px 6px;
|
|
1589
1595
|
}
|
|
1590
1596
|
}
|
|
1591
1597
|
@media (max-width: 350px) {
|
|
1592
1598
|
.settings-control {
|
|
1593
1599
|
display: block !important;
|
|
1594
1600
|
}
|
|
1595
|
-
.pip-btn
|
|
1596
|
-
.speed-control,
|
|
1597
|
-
.subtitles-control {
|
|
1601
|
+
.pip-btn {
|
|
1598
1602
|
display: none !important;
|
|
1599
1603
|
}
|
|
1600
1604
|
}
|
|
1601
|
-
.settings-expandable-wrapper {
|
|
1602
|
-
position: relative;
|
|
1603
|
-
display: block;
|
|
1604
|
-
}
|
|
1605
|
-
|
|
1606
|
-
.settings-option.expandable-trigger {
|
|
1607
|
-
display: flex;
|
|
1608
|
-
justify-content: space-between;
|
|
1609
|
-
align-items: center;
|
|
1610
|
-
cursor: pointer;
|
|
1611
|
-
font-size: 10px !important;
|
|
1612
|
-
}
|
|
1613
|
-
.settings-option.expandable-trigger .settings-option-label {
|
|
1614
|
-
font-size: 10px !important;
|
|
1615
|
-
}
|
|
1616
|
-
.settings-option.expandable-trigger .expand-arrow {
|
|
1617
|
-
font-size: 8px;
|
|
1618
|
-
transition: transform 0.2s ease;
|
|
1619
|
-
margin-left: 8px;
|
|
1620
|
-
}
|
|
1621
|
-
|
|
1622
|
-
.settings-expandable-content {
|
|
1623
|
-
padding-left: 15px;
|
|
1624
|
-
margin-top: 4px;
|
|
1625
|
-
}
|
|
1626
|
-
.settings-expandable-content .settings-suboption {
|
|
1627
|
-
padding: 6px 12px;
|
|
1628
|
-
cursor: pointer;
|
|
1629
|
-
color: white;
|
|
1630
|
-
font-size: 10px;
|
|
1631
|
-
white-space: normal;
|
|
1632
|
-
word-wrap: break-word;
|
|
1633
|
-
opacity: 0.8;
|
|
1634
|
-
transition: opacity 0.2s;
|
|
1635
|
-
}
|
|
1636
|
-
.settings-expandable-content .settings-suboption.active {
|
|
1637
|
-
opacity: 1;
|
|
1638
|
-
font-weight: bold;
|
|
1639
|
-
}
|
|
1640
|
-
.settings-expandable-content .settings-suboption:hover {
|
|
1641
|
-
opacity: 1;
|
|
1642
|
-
background: rgba(255, 255, 255, 0.1);
|
|
1643
|
-
}
|
|
1644
|
-
|
|
1645
1605
|
.audio-player {
|
|
1646
1606
|
width: 320px;
|
|
1647
1607
|
height: 80px;
|
|
@@ -1897,19 +1857,8 @@ body {
|
|
|
1897
1857
|
margin-right: 5px;
|
|
1898
1858
|
}
|
|
1899
1859
|
}
|
|
1900
|
-
/*
|
|
1860
|
+
/* MENU SETTINGS DROPDOWN */
|
|
1901
1861
|
@media (max-width: 350px) {
|
|
1902
|
-
/* Mostra il menu Settings solo su schermi molto piccoli */
|
|
1903
|
-
.settings-control {
|
|
1904
|
-
display: block !important;
|
|
1905
|
-
}
|
|
1906
|
-
/* Nascondi i controlli individuali e spostali nel menu */
|
|
1907
|
-
.pip-btn,
|
|
1908
|
-
.speed-control,
|
|
1909
|
-
.subtitles-control {
|
|
1910
|
-
display: none !important;
|
|
1911
|
-
}
|
|
1912
|
-
/* Riduci ulteriormente gli spazi */
|
|
1913
1862
|
.controls-left,
|
|
1914
1863
|
.controls-right {
|
|
1915
1864
|
gap: 4px;
|
|
@@ -1936,9 +1885,9 @@ body {
|
|
|
1936
1885
|
margin-right: 3px;
|
|
1937
1886
|
}
|
|
1938
1887
|
.volume-slider {
|
|
1939
|
-
width: 30px;
|
|
1888
|
+
width: 30px;
|
|
1940
1889
|
}
|
|
1941
|
-
/*
|
|
1890
|
+
/* screen small */
|
|
1942
1891
|
.settings-menu {
|
|
1943
1892
|
min-width: 160px;
|
|
1944
1893
|
font-size: 12px;
|
|
@@ -1985,7 +1934,6 @@ body {
|
|
|
1985
1934
|
.volume-slider {
|
|
1986
1935
|
width: 25px;
|
|
1987
1936
|
}
|
|
1988
|
-
/* Menu settings ultra-compatto */
|
|
1989
1937
|
.settings-menu {
|
|
1990
1938
|
min-width: 140px;
|
|
1991
1939
|
font-size: 11px;
|
|
@@ -2002,7 +1950,7 @@ body {
|
|
|
2002
1950
|
font-size: 10px;
|
|
2003
1951
|
}
|
|
2004
1952
|
}
|
|
2005
|
-
/* OVERFLOW HANDLING
|
|
1953
|
+
/* OVERFLOW HANDLING */
|
|
2006
1954
|
@media (max-width: 600px) {
|
|
2007
1955
|
.controls-main {
|
|
2008
1956
|
/* Allow horizontal scrolling if absolutely necessary */
|