unified-video-framework 1.4.189 → 1.4.190
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.
|
@@ -3651,25 +3651,35 @@ export class WebPlayer extends BasePlayer {
|
|
|
3651
3651
|
margin-left: 10px;
|
|
3652
3652
|
}
|
|
3653
3653
|
|
|
3654
|
-
/*
|
|
3655
|
-
.uvf-
|
|
3654
|
+
/* Top Bar Container - Contains Title (left) and Controls (right) */
|
|
3655
|
+
.uvf-top-bar {
|
|
3656
3656
|
position: absolute;
|
|
3657
3657
|
top: 0;
|
|
3658
3658
|
left: 0;
|
|
3659
3659
|
right: 0;
|
|
3660
3660
|
padding: 20px;
|
|
3661
3661
|
z-index: 7;
|
|
3662
|
+
display: flex;
|
|
3663
|
+
justify-content: space-between;
|
|
3664
|
+
align-items: flex-start;
|
|
3665
|
+
gap: 20px;
|
|
3662
3666
|
opacity: 0;
|
|
3663
3667
|
transform: translateY(-10px);
|
|
3664
3668
|
transition: all 0.3s ease;
|
|
3665
3669
|
}
|
|
3666
3670
|
|
|
3667
|
-
.uvf-player-wrapper:hover .uvf-
|
|
3668
|
-
.uvf-player-wrapper.controls-visible .uvf-
|
|
3671
|
+
.uvf-player-wrapper:hover .uvf-top-bar,
|
|
3672
|
+
.uvf-player-wrapper.controls-visible .uvf-top-bar {
|
|
3669
3673
|
opacity: 1;
|
|
3670
3674
|
transform: translateY(0);
|
|
3671
3675
|
}
|
|
3672
3676
|
|
|
3677
|
+
/* Title Bar - Left side of top bar */
|
|
3678
|
+
.uvf-title-bar {
|
|
3679
|
+
flex: 0 1 auto;
|
|
3680
|
+
max-width: 60%;
|
|
3681
|
+
}
|
|
3682
|
+
|
|
3673
3683
|
.uvf-title-content {
|
|
3674
3684
|
display: flex;
|
|
3675
3685
|
align-items: center;
|
|
@@ -3811,22 +3821,13 @@ export class WebPlayer extends BasePlayer {
|
|
|
3811
3821
|
}
|
|
3812
3822
|
}
|
|
3813
3823
|
|
|
3814
|
-
/* Top Controls -
|
|
3824
|
+
/* Top Controls - Right side of top bar */
|
|
3815
3825
|
.uvf-top-controls {
|
|
3816
3826
|
display: flex;
|
|
3817
3827
|
align-items: center;
|
|
3818
3828
|
justify-content: flex-end;
|
|
3819
3829
|
gap: 12px;
|
|
3820
|
-
|
|
3821
|
-
transform: translateY(-10px);
|
|
3822
|
-
transition: all 0.3s ease;
|
|
3823
|
-
}
|
|
3824
|
-
|
|
3825
|
-
.uvf-player-wrapper:hover .uvf-top-controls,
|
|
3826
|
-
.uvf-player-wrapper.controls-visible .uvf-top-controls,
|
|
3827
|
-
.uvf-player-wrapper.uvf-casting .uvf-top-controls {
|
|
3828
|
-
opacity: 1;
|
|
3829
|
-
transform: translateY(0);
|
|
3830
|
+
flex-shrink: 0;
|
|
3830
3831
|
}
|
|
3831
3832
|
|
|
3832
3833
|
.uvf-top-btn {
|
|
@@ -4053,9 +4054,8 @@ export class WebPlayer extends BasePlayer {
|
|
|
4053
4054
|
100% { opacity: 0; transform: translate(-50%, -50%) scale(0.8); }
|
|
4054
4055
|
}
|
|
4055
4056
|
|
|
4056
|
-
/* Hide top
|
|
4057
|
-
.uvf-player-wrapper.no-cursor .uvf-
|
|
4058
|
-
.uvf-player-wrapper.no-cursor .uvf-top-controls {
|
|
4057
|
+
/* Hide top bar when no cursor */
|
|
4058
|
+
.uvf-player-wrapper.no-cursor .uvf-top-bar {
|
|
4059
4059
|
opacity: 0 !important;
|
|
4060
4060
|
transform: translateY(-10px) !important;
|
|
4061
4061
|
pointer-events: none;
|
|
@@ -4140,8 +4140,7 @@ export class WebPlayer extends BasePlayer {
|
|
|
4140
4140
|
}
|
|
4141
4141
|
|
|
4142
4142
|
/* Ensure overlays remain visible in fullscreen with consistent spacing */
|
|
4143
|
-
.uvf-player-wrapper.uvf-fullscreen .uvf-
|
|
4144
|
-
.uvf-player-wrapper.uvf-fullscreen .uvf-top-controls,
|
|
4143
|
+
.uvf-player-wrapper.uvf-fullscreen .uvf-top-bar,
|
|
4145
4144
|
.uvf-player-wrapper.uvf-fullscreen .uvf-controls-bar,
|
|
4146
4145
|
.uvf-player-wrapper.uvf-fullscreen .uvf-top-gradient,
|
|
4147
4146
|
.uvf-player-wrapper.uvf-fullscreen .uvf-controls-gradient {
|
|
@@ -4156,19 +4155,13 @@ export class WebPlayer extends BasePlayer {
|
|
|
4156
4155
|
gap: 15px; /* Consistent gap in fullscreen */
|
|
4157
4156
|
}
|
|
4158
4157
|
|
|
4159
|
-
.uvf-player-wrapper.uvf-fullscreen .uvf-
|
|
4158
|
+
.uvf-player-wrapper.uvf-fullscreen .uvf-top-bar {
|
|
4160
4159
|
padding: 20px 30px;
|
|
4161
4160
|
}
|
|
4162
4161
|
|
|
4163
|
-
.uvf-player-wrapper.uvf-fullscreen .uvf-top-controls {
|
|
4164
|
-
gap: 10px;
|
|
4165
|
-
}
|
|
4166
|
-
|
|
4167
4162
|
/* Fullscreen hover and visibility states */
|
|
4168
|
-
.uvf-player-wrapper.uvf-fullscreen:hover .uvf-
|
|
4169
|
-
.uvf-player-wrapper.uvf-fullscreen
|
|
4170
|
-
.uvf-player-wrapper.uvf-fullscreen.controls-visible .uvf-title-bar,
|
|
4171
|
-
.uvf-player-wrapper.uvf-fullscreen.controls-visible .uvf-top-controls {
|
|
4163
|
+
.uvf-player-wrapper.uvf-fullscreen:hover .uvf-top-bar,
|
|
4164
|
+
.uvf-player-wrapper.uvf-fullscreen.controls-visible .uvf-top-bar {
|
|
4172
4165
|
opacity: 1;
|
|
4173
4166
|
transform: translateY(0);
|
|
4174
4167
|
}
|
|
@@ -4492,42 +4485,53 @@ export class WebPlayer extends BasePlayer {
|
|
|
4492
4485
|
display: none !important;
|
|
4493
4486
|
}
|
|
4494
4487
|
|
|
4495
|
-
/*
|
|
4496
|
-
.uvf-video-container .uvf-
|
|
4497
|
-
.uvf-responsive-container .uvf-video-container .uvf-
|
|
4498
|
-
display: flex !important;
|
|
4488
|
+
/* Top bar container - Mobile portrait uses separate positioning */
|
|
4489
|
+
.uvf-video-container .uvf-top-bar,
|
|
4490
|
+
.uvf-responsive-container .uvf-video-container .uvf-top-bar {
|
|
4499
4491
|
position: absolute !important;
|
|
4500
4492
|
top: 12px !important;
|
|
4501
4493
|
left: 16px !important;
|
|
4502
|
-
right:
|
|
4503
|
-
width: auto !important;
|
|
4504
|
-
max-width: 50% !important;
|
|
4505
|
-
height: auto !important;
|
|
4494
|
+
right: 16px !important;
|
|
4506
4495
|
padding: 0 !important;
|
|
4507
|
-
background: transparent !important;
|
|
4508
4496
|
z-index: 10 !important;
|
|
4509
4497
|
opacity: 0 !important;
|
|
4510
4498
|
transform: translateY(-10px) !important;
|
|
4511
4499
|
transition: opacity 0.3s ease, transform 0.3s ease !important;
|
|
4512
|
-
|
|
4513
|
-
justify-content:
|
|
4500
|
+
display: flex !important;
|
|
4501
|
+
justify-content: space-between !important;
|
|
4514
4502
|
align-items: flex-start !important;
|
|
4503
|
+
gap: 12px !important;
|
|
4515
4504
|
}
|
|
4516
4505
|
|
|
4517
|
-
/* Show
|
|
4518
|
-
.uvf-player-wrapper:hover .uvf-
|
|
4519
|
-
.uvf-player-wrapper.controls-visible .uvf-
|
|
4506
|
+
/* Show top bar when controls are visible or on hover */
|
|
4507
|
+
.uvf-player-wrapper:hover .uvf-top-bar,
|
|
4508
|
+
.uvf-player-wrapper.controls-visible .uvf-top-bar {
|
|
4520
4509
|
opacity: 1 !important;
|
|
4521
4510
|
transform: translateY(0) !important;
|
|
4522
4511
|
}
|
|
4523
4512
|
|
|
4524
|
-
/* Hide
|
|
4525
|
-
.uvf-player-wrapper.no-cursor .uvf-
|
|
4513
|
+
/* Hide top bar when controls are hidden (no-cursor class) */
|
|
4514
|
+
.uvf-player-wrapper.no-cursor .uvf-top-bar {
|
|
4526
4515
|
opacity: 0 !important;
|
|
4527
4516
|
transform: translateY(-10px) !important;
|
|
4528
4517
|
pointer-events: none !important;
|
|
4529
4518
|
}
|
|
4530
4519
|
|
|
4520
|
+
/* Title bar within top bar - mobile portrait */
|
|
4521
|
+
.uvf-video-container .uvf-top-bar .uvf-title-bar,
|
|
4522
|
+
.uvf-responsive-container .uvf-video-container .uvf-top-bar .uvf-title-bar {
|
|
4523
|
+
display: flex !important;
|
|
4524
|
+
width: auto !important;
|
|
4525
|
+
max-width: 50% !important;
|
|
4526
|
+
height: auto !important;
|
|
4527
|
+
padding: 0 !important;
|
|
4528
|
+
background: transparent !important;
|
|
4529
|
+
flex-direction: column !important;
|
|
4530
|
+
justify-content: flex-start !important;
|
|
4531
|
+
align-items: flex-start !important;
|
|
4532
|
+
position: relative !important;
|
|
4533
|
+
}
|
|
4534
|
+
|
|
4531
4535
|
/* Title content layout */
|
|
4532
4536
|
.uvf-title-bar .uvf-title-content {
|
|
4533
4537
|
display: flex !important;
|
|
@@ -4581,35 +4585,23 @@ export class WebPlayer extends BasePlayer {
|
|
|
4581
4585
|
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) !important;
|
|
4582
4586
|
}
|
|
4583
4587
|
|
|
4584
|
-
/* Top controls
|
|
4585
|
-
.uvf-video-container .uvf-top-controls,
|
|
4586
|
-
.uvf-responsive-container .uvf-video-container .uvf-top-controls {
|
|
4588
|
+
/* Top controls within top bar - mobile portrait */
|
|
4589
|
+
.uvf-video-container .uvf-top-bar .uvf-top-controls,
|
|
4590
|
+
.uvf-responsive-container .uvf-video-container .uvf-top-bar .uvf-top-controls {
|
|
4587
4591
|
display: flex !important;
|
|
4588
|
-
opacity: 0 !important;
|
|
4589
|
-
transform: translateY(-10px) !important;
|
|
4590
|
-
transition: opacity 0.3s ease, transform 0.3s ease !important;
|
|
4591
4592
|
gap: 12px !important;
|
|
4592
4593
|
align-items: flex-start !important;
|
|
4593
4594
|
justify-content: flex-end !important;
|
|
4594
4595
|
flex-direction: row !important;
|
|
4596
|
+
position: relative !important;
|
|
4595
4597
|
}
|
|
4596
4598
|
|
|
4597
|
-
/*
|
|
4598
|
-
.uvf-player-wrapper
|
|
4599
|
-
.uvf-player-wrapper.controls-visible .uvf-top-controls,
|
|
4600
|
-
.uvf-player-wrapper.uvf-casting .uvf-top-controls {
|
|
4599
|
+
/* Keep top bar visible when casting */
|
|
4600
|
+
.uvf-player-wrapper.uvf-casting .uvf-top-bar {
|
|
4601
4601
|
opacity: 1 !important;
|
|
4602
4602
|
transform: translateY(0) !important;
|
|
4603
4603
|
}
|
|
4604
4604
|
|
|
4605
|
-
/* Hide top controls when controls are hidden (no-cursor class) */
|
|
4606
|
-
/* Exception: Keep visible when casting */
|
|
4607
|
-
.uvf-player-wrapper.no-cursor:not(.uvf-casting) .uvf-top-controls {
|
|
4608
|
-
opacity: 0 !important;
|
|
4609
|
-
transform: translateY(-10px) !important;
|
|
4610
|
-
pointer-events: none !important;
|
|
4611
|
-
}
|
|
4612
|
-
|
|
4613
4605
|
/* Material You top buttons (cast & share) */
|
|
4614
4606
|
.uvf-top-controls .uvf-top-btn {
|
|
4615
4607
|
width: 48px !important;
|
|
@@ -4841,21 +4833,17 @@ export class WebPlayer extends BasePlayer {
|
|
|
4841
4833
|
height: 22px;
|
|
4842
4834
|
}
|
|
4843
4835
|
|
|
4844
|
-
/*
|
|
4845
|
-
.uvf-top-
|
|
4846
|
-
.uvf-video-container .uvf-top-
|
|
4847
|
-
.uvf-responsive-container .uvf-video-container .uvf-top-
|
|
4848
|
-
|
|
4836
|
+
/* Top bar for landscape - compact padding */
|
|
4837
|
+
.uvf-top-bar,
|
|
4838
|
+
.uvf-video-container .uvf-top-bar,
|
|
4839
|
+
.uvf-responsive-container .uvf-video-container .uvf-top-bar {
|
|
4840
|
+
padding: 8px 12px !important;
|
|
4841
|
+
padding-top: calc(8px + var(--uvf-safe-area-top)) !important;
|
|
4842
|
+
padding-left: calc(12px + var(--uvf-safe-area-left)) !important;
|
|
4843
|
+
padding-right: calc(12px + var(--uvf-safe-area-right)) !important;
|
|
4849
4844
|
gap: 6px !important;
|
|
4850
4845
|
}
|
|
4851
4846
|
|
|
4852
|
-
.uvf-title-bar {
|
|
4853
|
-
padding: 8px 12px;
|
|
4854
|
-
padding-top: calc(8px + var(--uvf-safe-area-top));
|
|
4855
|
-
padding-left: calc(12px + var(--uvf-safe-area-left));
|
|
4856
|
-
padding-right: calc(12px + var(--uvf-safe-area-right));
|
|
4857
|
-
}
|
|
4858
|
-
|
|
4859
4847
|
.uvf-top-btn {
|
|
4860
4848
|
width: 40px;
|
|
4861
4849
|
height: 40px;
|
|
@@ -4868,8 +4856,9 @@ export class WebPlayer extends BasePlayer {
|
|
|
4868
4856
|
height: 18px;
|
|
4869
4857
|
}
|
|
4870
4858
|
|
|
4871
|
-
|
|
4872
|
-
|
|
4859
|
+
/* Title bar within top bar - landscape */
|
|
4860
|
+
.uvf-top-bar .uvf-title-bar {
|
|
4861
|
+
padding: 0;
|
|
4873
4862
|
}
|
|
4874
4863
|
|
|
4875
4864
|
.uvf-video-title {
|
|
@@ -4901,12 +4890,11 @@ export class WebPlayer extends BasePlayer {
|
|
|
4901
4890
|
height: 16px;
|
|
4902
4891
|
}
|
|
4903
4892
|
|
|
4904
|
-
/* Top
|
|
4905
|
-
.uvf-player-wrapper.uvf-fullscreen .uvf-top-
|
|
4906
|
-
.uvf-player-wrapper.uvf-fullscreen .uvf-video-container .uvf-top-
|
|
4907
|
-
.uvf-responsive-container .uvf-player-wrapper.uvf-fullscreen .uvf-top-
|
|
4908
|
-
.uvf-responsive-container .uvf-player-wrapper.uvf-fullscreen .uvf-video-container .uvf-top-
|
|
4909
|
-
justify-content: flex-end !important;
|
|
4893
|
+
/* Top bar in fullscreen landscape */
|
|
4894
|
+
.uvf-player-wrapper.uvf-fullscreen .uvf-top-bar,
|
|
4895
|
+
.uvf-player-wrapper.uvf-fullscreen .uvf-video-container .uvf-top-bar,
|
|
4896
|
+
.uvf-responsive-container .uvf-player-wrapper.uvf-fullscreen .uvf-top-bar,
|
|
4897
|
+
.uvf-responsive-container .uvf-player-wrapper.uvf-fullscreen .uvf-video-container .uvf-top-bar {
|
|
4910
4898
|
display: flex !important;
|
|
4911
4899
|
}
|
|
4912
4900
|
}
|
|
@@ -4966,13 +4954,14 @@ export class WebPlayer extends BasePlayer {
|
|
|
4966
4954
|
height: 19px;
|
|
4967
4955
|
}
|
|
4968
4956
|
|
|
4969
|
-
|
|
4970
|
-
|
|
4971
|
-
|
|
4957
|
+
/* Top bar for tablet */
|
|
4958
|
+
.uvf-top-bar {
|
|
4959
|
+
padding: 16px;
|
|
4960
|
+
gap: 12px;
|
|
4972
4961
|
}
|
|
4973
4962
|
|
|
4974
|
-
.uvf-
|
|
4975
|
-
|
|
4963
|
+
.uvf-top-controls {
|
|
4964
|
+
gap: 8px;
|
|
4976
4965
|
}
|
|
4977
4966
|
|
|
4978
4967
|
.uvf-video-title {
|
|
@@ -5124,18 +5113,14 @@ export class WebPlayer extends BasePlayer {
|
|
|
5124
5113
|
height: 20px;
|
|
5125
5114
|
}
|
|
5126
5115
|
|
|
5127
|
-
|
|
5128
|
-
|
|
5129
|
-
|
|
5130
|
-
|
|
5131
|
-
display: flex;
|
|
5132
|
-
align-items: center;
|
|
5133
|
-
gap: 12px;
|
|
5134
|
-
z-index: 10;
|
|
5116
|
+
/* Top bar for desktop 1024px+ */
|
|
5117
|
+
.uvf-top-bar {
|
|
5118
|
+
padding: 20px;
|
|
5119
|
+
gap: 20px;
|
|
5135
5120
|
}
|
|
5136
5121
|
|
|
5137
|
-
.uvf-
|
|
5138
|
-
|
|
5122
|
+
.uvf-top-controls {
|
|
5123
|
+
gap: 12px;
|
|
5139
5124
|
}
|
|
5140
5125
|
|
|
5141
5126
|
.uvf-video-title {
|
|
@@ -5597,7 +5582,11 @@ export class WebPlayer extends BasePlayer {
|
|
|
5597
5582
|
controlsGradient.className = 'uvf-controls-gradient';
|
|
5598
5583
|
container.appendChild(controlsGradient);
|
|
5599
5584
|
|
|
5600
|
-
//
|
|
5585
|
+
// Combined top bar: title on left, controls on right
|
|
5586
|
+
const topBar = document.createElement('div');
|
|
5587
|
+
topBar.className = 'uvf-top-bar';
|
|
5588
|
+
|
|
5589
|
+
// Title bar (left side)
|
|
5601
5590
|
const titleBar = document.createElement('div');
|
|
5602
5591
|
titleBar.className = 'uvf-title-bar';
|
|
5603
5592
|
titleBar.innerHTML = `
|
|
@@ -5609,9 +5598,9 @@ export class WebPlayer extends BasePlayer {
|
|
|
5609
5598
|
</div>
|
|
5610
5599
|
</div>
|
|
5611
5600
|
`;
|
|
5612
|
-
|
|
5601
|
+
topBar.appendChild(titleBar);
|
|
5613
5602
|
|
|
5614
|
-
//
|
|
5603
|
+
// Top controls (right side - Cast and Share buttons)
|
|
5615
5604
|
const topControls = document.createElement('div');
|
|
5616
5605
|
topControls.className = 'uvf-top-controls';
|
|
5617
5606
|
topControls.innerHTML = `
|
|
@@ -5632,7 +5621,9 @@ export class WebPlayer extends BasePlayer {
|
|
|
5632
5621
|
</svg>
|
|
5633
5622
|
</div>
|
|
5634
5623
|
`;
|
|
5635
|
-
|
|
5624
|
+
topBar.appendChild(topControls);
|
|
5625
|
+
|
|
5626
|
+
container.appendChild(topBar);
|
|
5636
5627
|
|
|
5637
5628
|
// Add loading spinner
|
|
5638
5629
|
const loadingContainer = document.createElement('div');
|