unified-video-framework 1.4.99 → 1.4.101

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.99",
3
+ "version": "1.4.101",
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":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAUjD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,GAAG,EAAE,GAAG,CAAC;QACT,MAAM,EAAE,GAAG,CAAC;QACZ,IAAI,CAAC,EAAE,GAAG,CAAC;QACX,MAAM,CAAC,EAAE,GAAG,CAAC;QACb,qBAAqB,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;KACxD;CACF;AAED,qBAAa,SAAU,SAAQ,UAAU;IACvC,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAChD,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,mBAAmB,CAAc;IACzC,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,iBAAiB,CAAiB;IAC1C,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,mBAAmB,CAA+B;IAC1D,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,kBAAkB,CAA6C;IACvE,OAAO,CAAC,kBAAkB,CAA6C;IACvE,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,aAAa,CAA4B;IAEjD,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,iBAAiB,CAAkB;IAG3C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,sBAAsB,CAAa;IAC3C,OAAO,CAAC,sBAAsB,CAAa;IAC3C,OAAO,CAAC,yBAAyB,CAAa;IAC9C,OAAO,CAAC,iBAAiB,CAAa;IAGtC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,mBAAmB,CAAiB;IAC5C,OAAO,CAAC,KAAK,CAAa;IAG1B,OAAO,CAAC,iBAAiB,CAAa;IAGtC,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,mBAAmB,CAAO;IAGlC,OAAO,CAAC,sBAAsB,CAAkB;IAChD,OAAO,CAAC,mBAAmB,CAAa;IAGxC,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,SAAS;cAOD,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IA+I5C,OAAO,CAAC,wBAAwB;IAsHhC,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,oBAAoB;IAYtB,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAwDtC,OAAO,CAAC,gBAAgB;YAcV,OAAO;IAyDrB,OAAO,CAAC,cAAc;YAyBR,QAAQ;IA4DtB,OAAO,CAAC,iBAAiB;YAQX,UAAU;IAMxB,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUhD,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,gBAAgB;IAOlB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA+C3B,KAAK,IAAI,IAAI;IAkBN,YAAY,IAAI,IAAI;IAO3B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAwBxB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM9B,IAAI,IAAI,IAAI;IAMZ,MAAM,IAAI,IAAI;IAOd,cAAc,IAAI,MAAM;IAOxB,YAAY,IAAI,GAAG,EAAE;IAIrB,iBAAiB,IAAI,GAAG;IAIxB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAW/B,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOnC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAkBhC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAwDhC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAwC/B,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAetC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3C,WAAW,IAAI,IAAI;IAUnB,iBAAiB,IAAI,IAAI;IAUzB,OAAO,CAAC,cAAc;YAmBR,0BAA0B;IAwCxC,OAAO,CAAC,eAAe;IAwCvB,uBAAuB,IAAI,IAAI;IA4D/B,OAAO,CAAC,4BAA4B;YAoEtB,gCAAgC;IAgBxC,+BAA+B,IAAI,OAAO,CAAC,IAAI,CAAC;IAkGtD,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAmC3C,4BAA4B,IAAI,IAAI;IA4D9B,gCAAgC,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;IA8DtE,0BAA0B,IAAI,IAAI;IAqK5B,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IA4C3C,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAc9C,SAAS,CAAC,eAAe,IAAI,IAAI;IASjC,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,eAAe;IA8lEvB,OAAO,CAAC,oBAAoB;IA4N5B,OAAO,CAAC,2BAA2B;IAsVnC,SAAS,CAAC,sBAAsB,IAAI,IAAI;IAoLxC,SAAS,CAAC,cAAc,IAAI,IAAI;IAiDzB,gBAAgB,CAAC,MAAM,EAAE,GAAG;IA2CnC,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,sBAAsB;IAsDvB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAetC,oBAAoB,IAAI,IAAI;IAO5B,kBAAkB,IAAI,IAAI;IAOjC,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,kBAAkB;IAyB1B,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,wBAAwB;IAuEhC,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,qBAAqB;IA8FtB,yBAAyB,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI;IAiBxE,0BAA0B,CAAC,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAwB1F,OAAO,CAAC,oCAAoC;IAqBrC,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IA2DjC,OAAO,CAAC,SAAS;IA8BjB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,iBAAiB;YAgCX,SAAS;IAYvB,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,gBAAgB;IA6BxB,OAAO,CAAC,uBAAuB;IAoB/B,OAAO,CAAC,wBAAwB;IAKhC,OAAO,CAAC,uBAAuB;IA6D/B,OAAO,CAAC,wBAAwB;IAoBhC,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,gBAAgB;IAgCxB,OAAO,CAAC,kBAAkB;IA4D1B,OAAO,CAAC,wBAAwB;IA+ChC,OAAO,CAAC,wBAAwB;IA6BhC,OAAO,CAAC,2BAA2B;IAmCnC,OAAO,CAAC,0BAA0B;IAgBlC,OAAO,CAAC,2BAA2B;IAWnC,OAAO,CAAC,sBAAsB;IA4B9B,OAAO,CAAC,WAAW;IAgCnB,OAAO,CAAC,uBAAuB;IAqB/B,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,WAAW;YAoBL,QAAQ;YAqGR,UAAU;IAqBxB,OAAO,CAAC,gBAAgB;IA2CxB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,YAAY;IA6BpB,OAAO,CAAC,sBAAsB;IA6B9B,OAAO,CAAC,sBAAsB;IAiF9B,OAAO,CAAC,uBAAuB;IAuB/B,OAAO,CAAC,4BAA4B;IAoDpC,OAAO,CAAC,oBAAoB;IA+BrB,aAAa,IAAI,IAAI;IAarB,aAAa,IAAI,IAAI;IAYrB,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAe9B,kBAAkB,IAAI,OAAO;YAKtB,OAAO;IAgBf,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CA2C/B"}
1
+ {"version":3,"file":"WebPlayer.d.ts","sourceRoot":"","sources":["../src/WebPlayer.ts"],"names":[],"mappings":"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"}
@@ -1543,14 +1543,24 @@ export class WebPlayer extends BasePlayer {
1543
1543
  to { transform: rotate(360deg); }
1544
1544
  }
1545
1545
 
1546
+ /* Center Play Button Container */
1547
+ .uvf-center-play-container {
1548
+ position: absolute;
1549
+ top: 0;
1550
+ left: 0;
1551
+ width: 100%;
1552
+ height: 100%;
1553
+ display: flex;
1554
+ align-items: center;
1555
+ justify-content: center;
1556
+ pointer-events: none;
1557
+ z-index: 8;
1558
+ }
1559
+
1546
1560
  /* Center Play Button */
1547
1561
  .uvf-center-play-btn {
1548
- position: absolute;
1549
- top: 50%;
1550
- left: 50%;
1551
- transform: translate(-50%, -50%);
1552
- width: clamp(64px, 14vw, 96px);
1553
- height: clamp(64px, 14vw, 96px);
1562
+ width: clamp(50px, 14vw, 96px);
1563
+ height: clamp(50px, 14vw, 96px);
1554
1564
  background: linear-gradient(135deg, var(--uvf-accent-1), var(--uvf-accent-2));
1555
1565
  border: 0;
1556
1566
  border-radius: 50%;
@@ -1558,15 +1568,15 @@ export class WebPlayer extends BasePlayer {
1558
1568
  align-items: center;
1559
1569
  justify-content: center;
1560
1570
  cursor: pointer;
1571
+ pointer-events: auto;
1561
1572
  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
1562
- z-index: 8;
1563
1573
  opacity: 1;
1564
1574
  visibility: visible;
1565
1575
  box-shadow: 0 8px 28px var(--uvf-accent-1-20);
1566
1576
  }
1567
1577
 
1568
1578
  .uvf-center-play-btn:hover {
1569
- transform: translate(-50%, -50%) scale(1.06);
1579
+ transform: scale(1.06);
1570
1580
  filter: saturate(1.08) brightness(1.05);
1571
1581
  box-shadow: 0 12px 36px var(--uvf-accent-1-20);
1572
1582
  }
@@ -1574,7 +1584,7 @@ export class WebPlayer extends BasePlayer {
1574
1584
  .uvf-center-play-btn.hidden {
1575
1585
  opacity: 0 !important;
1576
1586
  visibility: hidden !important;
1577
- transform: translate(-50%, -50%) scale(0.8) !important;
1587
+ transform: scale(0.8) !important;
1578
1588
  pointer-events: none !important;
1579
1589
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1580
1590
  }
@@ -1640,22 +1650,24 @@ export class WebPlayer extends BasePlayer {
1640
1650
 
1641
1651
  /* Progress Bar */
1642
1652
  .uvf-progress-section {
1653
+ width: 100%;
1643
1654
  margin-bottom: 15px;
1644
1655
  }
1645
1656
 
1646
1657
  .uvf-progress-bar-wrapper {
1647
- position: relative;
1648
1658
  width: 100%;
1649
- height: 6px;
1650
- background: rgba(255,255,255,0.1);
1651
- border-radius: 3px;
1659
+ height: 5px;
1660
+ position: relative;
1661
+ background: rgba(255,255,255,0.15);
1662
+ border-radius: 2px;
1652
1663
  cursor: pointer;
1664
+ padding: 12px 0;
1653
1665
  overflow: visible;
1654
- transition: transform 0.2s ease;
1666
+ transition: height 0.2s ease;
1655
1667
  }
1656
1668
 
1657
1669
  .uvf-progress-bar-wrapper:hover {
1658
- transform: scaleY(1.5);
1670
+ height: 7px;
1659
1671
  }
1660
1672
 
1661
1673
  .uvf-progress-buffered {
@@ -1663,39 +1675,106 @@ export class WebPlayer extends BasePlayer {
1663
1675
  top: 0;
1664
1676
  left: 0;
1665
1677
  height: 100%;
1666
- background: rgba(255,255,255,0.2);
1667
- border-radius: 3px;
1678
+ background: rgba(255,255,255,0.3);
1679
+ border-radius: 2px;
1668
1680
  pointer-events: none;
1681
+ transition: width 0.2s ease;
1682
+ z-index: 1;
1669
1683
  }
1670
1684
 
1671
1685
  .uvf-progress-filled {
1672
- position: absolute;
1673
- top: 0;
1674
- left: 0;
1686
+ position: relative;
1675
1687
  height: 100%;
1676
- background: linear-gradient(90deg, var(--uvf-accent-1), var(--uvf-accent-2));
1677
- border-radius: 3px;
1688
+ background: linear-gradient(90deg, #ff5722, #ff7043);
1689
+ border-radius: 2px;
1678
1690
  pointer-events: none;
1679
- box-shadow: 0 0 10px var(--uvf-accent-1-20);
1691
+ transition: width 0.2s ease;
1692
+ z-index: 2;
1680
1693
  }
1681
1694
 
1682
1695
  .uvf-progress-handle {
1683
1696
  position: absolute;
1684
- top: 50%;
1685
- transform: translate(-50%, -50%) scale(0);
1686
- width: 16px;
1687
- height: 16px;
1688
- background: #fff;
1697
+ width: 14px;
1698
+ height: 14px;
1699
+ background: #ffffff;
1700
+ border: 2px solid #ff5722;
1689
1701
  border-radius: 50%;
1690
- box-shadow: 0 0 15px rgba(255,255,255,0.5);
1691
- transition: transform 0.2s ease;
1692
- pointer-events: none;
1702
+ top: 50%;
1703
+ left: 100%;
1704
+ transform: translate(-50%, -50%) scale(0.8);
1705
+ opacity: 0;
1706
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1707
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.4);
1708
+ cursor: grab;
1709
+ z-index: 3;
1693
1710
  }
1694
1711
 
1695
1712
  .uvf-progress-bar-wrapper:hover .uvf-progress-handle {
1713
+ opacity: 1;
1696
1714
  transform: translate(-50%, -50%) scale(1);
1697
1715
  }
1698
1716
 
1717
+ .uvf-progress-handle:hover {
1718
+ transform: translate(-50%, -50%) scale(1.2);
1719
+ }
1720
+
1721
+ .uvf-progress-handle:active,
1722
+ .uvf-progress-handle.dragging {
1723
+ cursor: grabbing;
1724
+ transform: translate(-50%, -50%) scale(1.4);
1725
+ box-shadow: 0 4px 16px rgba(255, 87, 34, 0.6);
1726
+ }
1727
+
1728
+ .uvf-time-tooltip {
1729
+ position: absolute;
1730
+ bottom: 22px;
1731
+ left: 50%;
1732
+ transform: translateX(-50%);
1733
+ background: rgba(0, 0, 0, 0.92);
1734
+ color: #ffffff;
1735
+ padding: 6px 12px;
1736
+ border-radius: 6px;
1737
+ font-size: 13px;
1738
+ font-weight: 500;
1739
+ white-space: nowrap;
1740
+ opacity: 0;
1741
+ transition: opacity 0.2s ease;
1742
+ pointer-events: none;
1743
+ z-index: 4;
1744
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
1745
+ backdrop-filter: blur(10px);
1746
+ }
1747
+
1748
+ .uvf-time-tooltip::after {
1749
+ content: '';
1750
+ position: absolute;
1751
+ bottom: -5px;
1752
+ left: 50%;
1753
+ transform: translateX(-50%);
1754
+ width: 0;
1755
+ height: 0;
1756
+ border-left: 6px solid transparent;
1757
+ border-right: 6px solid transparent;
1758
+ border-top: 6px solid rgba(0, 0, 0, 0.92);
1759
+ }
1760
+
1761
+ .uvf-progress-bar-wrapper:hover .uvf-time-tooltip {
1762
+ opacity: 1;
1763
+ }
1764
+
1765
+ /* Mobile responsive handle sizing */
1766
+ @media (max-width: 768px) {
1767
+ .uvf-progress-handle {
1768
+ width: 18px;
1769
+ height: 18px;
1770
+ opacity: 0.8; /* Slightly visible always on mobile */
1771
+ }
1772
+
1773
+ .uvf-progress-bar-wrapper:hover .uvf-progress-handle,
1774
+ .uvf-progress-handle:active {
1775
+ opacity: 1;
1776
+ }
1777
+ }
1699
1778
  /* Controls Row */
1700
1779
  .uvf-controls-row {
1701
1780
  display: flex;
@@ -2675,7 +2754,7 @@ export class WebPlayer extends BasePlayer {
2675
2754
  }
2676
2755
 
2677
2756
  .uvf-center-play-btn:hover {
2678
- transform: translate(-50%, -50%) scale(1.06);
2757
+ transform: scale(1.06);
2679
2758
  filter: saturate(1.08) brightness(1.05);
2680
2759
  box-shadow: 0 14px 36px var(--uvf-accent-1-20);
2681
2760
  }
@@ -2974,7 +3053,7 @@ export class WebPlayer extends BasePlayer {
2974
3053
  }
2975
3054
 
2976
3055
  .uvf-center-play-btn:hover {
2977
- transform: translate(-50%, -50%) scale(1.06);
3056
+ transform: scale(1.06);
2978
3057
  filter: saturate(1.08) brightness(1.05);
2979
3058
  box-shadow: 0 12px 32px var(--uvf-accent-1-20);
2980
3059
  }
@@ -3146,7 +3225,7 @@ export class WebPlayer extends BasePlayer {
3146
3225
  }
3147
3226
 
3148
3227
  .uvf-center-play-btn:hover {
3149
- transform: translate(-50%, -50%) scale(1.06);
3228
+ transform: scale(1.06);
3150
3229
  filter: saturate(1.08) brightness(1.05);
3151
3230
  box-shadow: 0 12px 36px var(--uvf-accent-1-20);
3152
3231
  }
@@ -3242,15 +3321,15 @@ export class WebPlayer extends BasePlayer {
3242
3321
  }
3243
3322
 
3244
3323
  .uvf-center-play-btn {
3245
- width: clamp(90px, 14vw, 110px);
3246
- height: clamp(90px, 14vw, 110px);
3324
+ width: clamp(90px, 14vw, 60px);
3325
+ height: clamp(90px, 14vw, 60px);
3247
3326
  background: linear-gradient(135deg, var(--uvf-accent-1), var(--uvf-accent-2));
3248
3327
  border: 0;
3249
3328
  box-shadow: 0 10px 32px var(--uvf-accent-1-20);
3250
3329
  }
3251
3330
 
3252
3331
  .uvf-center-play-btn:hover {
3253
- transform: translate(-50%, -50%) scale(1.06);
3332
+ transform: scale(1.06);
3254
3333
  filter: saturate(1.08) brightness(1.05);
3255
3334
  box-shadow: 0 16px 40px var(--uvf-accent-1-20);
3256
3335
  }
@@ -3549,11 +3628,14 @@ export class WebPlayer extends BasePlayer {
3549
3628
  loadingContainer.id = 'uvf-loading';
3550
3629
  loadingContainer.innerHTML = '<div class="uvf-loading-spinner"></div>';
3551
3630
  container.appendChild(loadingContainer);
3631
+ const centerPlayContainer = document.createElement('div');
3632
+ centerPlayContainer.className = 'uvf-center-play-container';
3552
3633
  const centerPlayBtn = document.createElement('div');
3553
3634
  centerPlayBtn.className = 'uvf-center-play-btn uvf-pulse';
3554
3635
  centerPlayBtn.id = 'uvf-center-play';
3555
3636
  centerPlayBtn.innerHTML = '<svg viewBox="0 0 24 24"><path d="M8 5v14l11-7z"/></svg>';
3556
- container.appendChild(centerPlayBtn);
3637
+ centerPlayContainer.appendChild(centerPlayBtn);
3638
+ container.appendChild(centerPlayContainer);
3557
3639
  const shortcutIndicator = document.createElement('div');
3558
3640
  shortcutIndicator.className = 'uvf-shortcut-indicator';
3559
3641
  shortcutIndicator.id = 'uvf-shortcut-indicator';
@@ -3568,8 +3650,15 @@ export class WebPlayer extends BasePlayer {
3568
3650
  progressBar.id = 'uvf-progress-bar';
3569
3651
  progressBar.innerHTML = `
3570
3652
  <div class="uvf-progress-buffered" id="uvf-progress-buffered"></div>
3571
- <div class="uvf-progress-filled" id="uvf-progress-filled"></div>
3572
- <div class="uvf-progress-handle" id="uvf-progress-handle"></div>
3653
+ <div class="uvf-progress-filled" id="uvf-progress-filled">
3654
+ <div class="uvf-progress-handle" id="uvf-progress-handle"
3655
+ role="slider"
3656
+ tabindex="0"
3657
+ aria-label="Seek"
3658
+ aria-valuemin="0"
3659
+ aria-valuemax="100"
3660
+ aria-valuenow="0"></div>
3661
+ </div>
3573
3662
  <div class="uvf-time-tooltip" id="uvf-time-tooltip">00:00</div>
3574
3663
  `;
3575
3664
  progressSection.appendChild(progressBar);
@@ -3784,12 +3873,58 @@ export class WebPlayer extends BasePlayer {
3784
3873
  e.stopPropagation();
3785
3874
  this.handleVolumeChange(e);
3786
3875
  });
3876
+ const progressHandle = document.getElementById('uvf-progress-handle');
3877
+ const timeTooltip = document.getElementById('uvf-time-tooltip');
3878
+ progressBar?.addEventListener('click', (e) => {
3879
+ if (!this.isDragging) {
3880
+ this.handleProgressChange(e);
3881
+ }
3882
+ });
3883
+ progressHandle?.addEventListener('mousedown', (e) => {
3884
+ e.stopPropagation();
3885
+ this.isDragging = true;
3886
+ progressHandle.classList.add('dragging');
3887
+ });
3888
+ progressHandle?.addEventListener('keydown', (e) => {
3889
+ if (!this.video)
3890
+ return;
3891
+ const step = 5;
3892
+ let handled = false;
3893
+ switch (e.key) {
3894
+ case 'ArrowLeft':
3895
+ case 'ArrowDown':
3896
+ this.seek(Math.max(0, this.video.currentTime - step));
3897
+ handled = true;
3898
+ break;
3899
+ case 'ArrowRight':
3900
+ case 'ArrowUp':
3901
+ this.seek(Math.min(this.video.duration, this.video.currentTime + step));
3902
+ handled = true;
3903
+ break;
3904
+ }
3905
+ if (handled) {
3906
+ e.preventDefault();
3907
+ e.stopPropagation();
3908
+ }
3909
+ });
3910
+ progressBar?.addEventListener('mousedown', (e) => {
3911
+ if (e.target === progressHandle)
3912
+ return;
3913
+ this.isDragging = true;
3914
+ this.handleProgressChange(e);
3915
+ });
3916
+ progressBar?.addEventListener('mousemove', (e) => {
3917
+ if (!this.isDragging) {
3918
+ this.updateTimeTooltip(e);
3919
+ }
3920
+ });
3787
3921
  document.addEventListener('mousemove', (e) => {
3788
3922
  if (this.isVolumeSliding) {
3789
3923
  this.handleVolumeChange(e);
3790
3924
  }
3791
3925
  if (this.isDragging && progressBar) {
3792
3926
  this.handleProgressChange(e);
3927
+ this.updateProgressTooltip(e);
3793
3928
  }
3794
3929
  });
3795
3930
  document.addEventListener('mouseup', () => {
@@ -3801,18 +3936,20 @@ export class WebPlayer extends BasePlayer {
3801
3936
  }
3802
3937
  }, 2000);
3803
3938
  }
3804
- this.isDragging = false;
3939
+ if (this.isDragging) {
3940
+ this.isDragging = false;
3941
+ progressHandle?.classList.remove('dragging');
3942
+ }
3805
3943
  });
3806
- progressBar?.addEventListener('click', (e) => this.handleProgressChange(e));
3807
- progressBar?.addEventListener('mousedown', () => this.isDragging = true);
3808
3944
  this.video.addEventListener('timeupdate', () => {
3809
3945
  const progressFilled = document.getElementById('uvf-progress-filled');
3810
3946
  const progressHandle = document.getElementById('uvf-progress-handle');
3811
- const timeDisplay = document.getElementById('uvf-time-display');
3812
- if (this.video && progressFilled && progressHandle) {
3947
+ if (this.video && progressFilled) {
3813
3948
  const percent = (this.video.currentTime / this.video.duration) * 100;
3814
3949
  progressFilled.style.width = percent + '%';
3815
- progressHandle.style.left = percent + '%';
3950
+ if (progressHandle) {
3951
+ progressHandle.setAttribute('aria-valuenow', percent.toString());
3952
+ }
3816
3953
  }
3817
3954
  this.updateTimeDisplay();
3818
3955
  });
@@ -3913,8 +4050,6 @@ export class WebPlayer extends BasePlayer {
3913
4050
  this.scheduleHideControls();
3914
4051
  }
3915
4052
  });
3916
- progressBar?.addEventListener('mousemove', (e) => this.updateTimeTooltip(e));
3917
- progressBar?.addEventListener('mouseleave', () => this.hideTimeTooltip());
3918
4053
  const settingsMenu = document.getElementById('uvf-settings-menu');
3919
4054
  settingsBtn?.addEventListener('click', (e) => {
3920
4055
  e.stopPropagation();
@@ -4452,6 +4587,19 @@ export class WebPlayer extends BasePlayer {
4452
4587
  timeTooltip.style.opacity = '0';
4453
4588
  }
4454
4589
  }
4590
+ updateProgressTooltip(e) {
4591
+ const progressBar = document.getElementById('uvf-progress-bar');
4592
+ const timeTooltip = document.getElementById('uvf-time-tooltip');
4593
+ if (!progressBar || !timeTooltip || !this.video)
4594
+ return;
4595
+ const rect = progressBar.getBoundingClientRect();
4596
+ const position = Math.max(0, Math.min(e.clientX - rect.left, rect.width));
4597
+ const percent = (position / rect.width) * 100;
4598
+ const time = (percent / 100) * this.video.duration;
4599
+ timeTooltip.textContent = this.formatTime(time);
4600
+ timeTooltip.style.left = percent + '%';
4601
+ timeTooltip.style.opacity = '1';
4602
+ }
4455
4603
  showShortcutIndicator(text) {
4456
4604
  const el = document.getElementById('uvf-shortcut-indicator');
4457
4605
  this.debugLog('showShortcutIndicator called with:', text, 'element found:', !!el);