unified-video-framework 1.4.124 → 1.4.126
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/core/dist/interfaces/IVideoPlayer.d.ts +5 -0
- package/packages/core/dist/interfaces/IVideoPlayer.d.ts.map +1 -1
- package/packages/core/src/interfaces/IVideoPlayer.ts +2 -0
- package/packages/web/dist/WebPlayer.d.ts.map +1 -1
- package/packages/web/dist/WebPlayer.js +141 -46
- package/packages/web/dist/WebPlayer.js.map +1 -1
- package/packages/web/src/WebPlayer.ts +163 -62
|
@@ -2431,13 +2431,14 @@ export class WebPlayer extends BasePlayer {
|
|
|
2431
2431
|
/* Framework Branding */
|
|
2432
2432
|
.uvf-framework-branding {
|
|
2433
2433
|
position: absolute;
|
|
2434
|
-
bottom:
|
|
2435
|
-
right:
|
|
2436
|
-
z-index:
|
|
2434
|
+
bottom: 140px;
|
|
2435
|
+
right: 15px;
|
|
2436
|
+
z-index: 10;
|
|
2437
2437
|
opacity: 0;
|
|
2438
2438
|
transform: translateY(10px);
|
|
2439
2439
|
transition: all 0.3s ease;
|
|
2440
|
-
pointer-events:
|
|
2440
|
+
pointer-events: auto;
|
|
2441
|
+
cursor: pointer;
|
|
2441
2442
|
}
|
|
2442
2443
|
|
|
2443
2444
|
.uvf-player-wrapper:hover .uvf-framework-branding,
|
|
@@ -2447,42 +2448,104 @@ export class WebPlayer extends BasePlayer {
|
|
|
2447
2448
|
}
|
|
2448
2449
|
|
|
2449
2450
|
.uvf-logo-svg {
|
|
2450
|
-
height:
|
|
2451
|
+
height: 18px;
|
|
2451
2452
|
width: auto;
|
|
2452
|
-
opacity: 0.
|
|
2453
|
-
filter: drop-shadow(0
|
|
2454
|
-
transition:
|
|
2453
|
+
opacity: 0.85;
|
|
2454
|
+
filter: drop-shadow(0 1px 3px rgba(0,0,0,0.4));
|
|
2455
|
+
transition: all 0.2s ease;
|
|
2455
2456
|
}
|
|
2456
2457
|
|
|
2457
2458
|
.uvf-framework-branding:hover .uvf-logo-svg {
|
|
2458
2459
|
opacity: 1;
|
|
2460
|
+
transform: scale(1.05);
|
|
2459
2461
|
}
|
|
2460
2462
|
|
|
2461
|
-
|
|
2462
|
-
.
|
|
2463
|
-
|
|
2464
|
-
|
|
2463
|
+
.uvf-framework-branding:active .uvf-logo-svg {
|
|
2464
|
+
transform: scale(0.95);
|
|
2465
|
+
}
|
|
2466
|
+
|
|
2467
|
+
/* Above seekbar section with time and branding */
|
|
2468
|
+
.uvf-above-seekbar-section {
|
|
2469
|
+
display: flex;
|
|
2470
|
+
align-items: center;
|
|
2471
|
+
justify-content: space-between;
|
|
2472
|
+
margin-bottom: 8px;
|
|
2473
|
+
opacity: 0;
|
|
2474
|
+
transform: translateY(10px);
|
|
2475
|
+
transition: all 0.3s ease;
|
|
2476
|
+
}
|
|
2477
|
+
|
|
2478
|
+
.uvf-player-wrapper:hover .uvf-above-seekbar-section,
|
|
2479
|
+
.uvf-player-wrapper.controls-visible .uvf-above-seekbar-section {
|
|
2480
|
+
opacity: 1;
|
|
2481
|
+
transform: translateY(0);
|
|
2482
|
+
}
|
|
2483
|
+
|
|
2484
|
+
.uvf-time-display.uvf-above-seekbar {
|
|
2485
|
+
position: static;
|
|
2486
|
+
font-size: 13px;
|
|
2487
|
+
font-weight: 500;
|
|
2488
|
+
color: var(--uvf-text-primary);
|
|
2489
|
+
text-shadow: 0 1px 3px rgba(0,0,0,0.7);
|
|
2490
|
+
background: rgba(0,0,0,0.3);
|
|
2491
|
+
padding: 4px 8px;
|
|
2492
|
+
border-radius: 12px;
|
|
2493
|
+
backdrop-filter: blur(4px);
|
|
2494
|
+
border: 1px solid rgba(255,255,255,0.1);
|
|
2495
|
+
}
|
|
2496
|
+
|
|
2497
|
+
.uvf-framework-branding {
|
|
2498
|
+
position: static;
|
|
2499
|
+
bottom: unset;
|
|
2500
|
+
right: unset;
|
|
2501
|
+
opacity: 1;
|
|
2502
|
+
transform: none;
|
|
2503
|
+
margin: 0;
|
|
2465
2504
|
}
|
|
2466
2505
|
|
|
2506
|
+
/* Show on mobile - positioned above seekbar */
|
|
2467
2507
|
@media (max-width: 768px) {
|
|
2468
|
-
.uvf-
|
|
2469
|
-
bottom:
|
|
2470
|
-
|
|
2508
|
+
.uvf-above-seekbar-section {
|
|
2509
|
+
margin-bottom: 6px;
|
|
2510
|
+
}
|
|
2511
|
+
|
|
2512
|
+
.uvf-time-display.uvf-above-seekbar {
|
|
2513
|
+
font-size: 12px;
|
|
2514
|
+
padding: 3px 6px;
|
|
2471
2515
|
}
|
|
2472
2516
|
|
|
2473
2517
|
.uvf-logo-svg {
|
|
2474
|
-
height:
|
|
2518
|
+
height: 16px;
|
|
2519
|
+
}
|
|
2520
|
+
}
|
|
2521
|
+
|
|
2522
|
+
@media (max-width: 480px) {
|
|
2523
|
+
.uvf-above-seekbar-section {
|
|
2524
|
+
margin-bottom: 5px;
|
|
2525
|
+
}
|
|
2526
|
+
|
|
2527
|
+
.uvf-time-display.uvf-above-seekbar {
|
|
2528
|
+
font-size: 11px;
|
|
2529
|
+
padding: 2px 5px;
|
|
2530
|
+
}
|
|
2531
|
+
|
|
2532
|
+
.uvf-logo-svg {
|
|
2533
|
+
height: 14px;
|
|
2475
2534
|
}
|
|
2476
2535
|
}
|
|
2477
2536
|
|
|
2478
2537
|
@media (max-height: 400px) {
|
|
2479
|
-
.uvf-
|
|
2480
|
-
bottom:
|
|
2481
|
-
|
|
2538
|
+
.uvf-above-seekbar-section {
|
|
2539
|
+
margin-bottom: 4px;
|
|
2540
|
+
}
|
|
2541
|
+
|
|
2542
|
+
.uvf-time-display.uvf-above-seekbar {
|
|
2543
|
+
font-size: 11px;
|
|
2544
|
+
padding: 2px 4px;
|
|
2482
2545
|
}
|
|
2483
2546
|
|
|
2484
2547
|
.uvf-logo-svg {
|
|
2485
|
-
height:
|
|
2548
|
+
height: 12px;
|
|
2486
2549
|
}
|
|
2487
2550
|
}
|
|
2488
2551
|
height: 16px;
|
|
@@ -3120,7 +3183,7 @@ export class WebPlayer extends BasePlayer {
|
|
|
3120
3183
|
order: 2;
|
|
3121
3184
|
}
|
|
3122
3185
|
|
|
3123
|
-
.uvf-controls-row .uvf-time-display {
|
|
3186
|
+
.uvf-controls-row .uvf-time-display:not(.uvf-above-seekbar) {
|
|
3124
3187
|
order: 3;
|
|
3125
3188
|
margin-left: auto;
|
|
3126
3189
|
margin-right: 8px;
|
|
@@ -3175,7 +3238,7 @@ export class WebPlayer extends BasePlayer {
|
|
|
3175
3238
|
}
|
|
3176
3239
|
|
|
3177
3240
|
/* Mobile time display - compact but readable */
|
|
3178
|
-
.uvf-time-display {
|
|
3241
|
+
.uvf-time-display:not(.uvf-above-seekbar) {
|
|
3179
3242
|
font-size: 12px;
|
|
3180
3243
|
font-weight: 600;
|
|
3181
3244
|
min-width: 85px;
|
|
@@ -3187,6 +3250,18 @@ export class WebPlayer extends BasePlayer {
|
|
|
3187
3250
|
flex-shrink: 0;
|
|
3188
3251
|
}
|
|
3189
3252
|
|
|
3253
|
+
/* Above-seekbar time display for mobile */
|
|
3254
|
+
.uvf-time-display.uvf-above-seekbar {
|
|
3255
|
+
font-size: 12px !important;
|
|
3256
|
+
font-weight: 500 !important;
|
|
3257
|
+
padding: 3px 6px !important;
|
|
3258
|
+
background: rgba(0,0,0,0.4) !important;
|
|
3259
|
+
border-radius: 10px !important;
|
|
3260
|
+
text-shadow: 0 1px 2px rgba(0,0,0,0.8) !important;
|
|
3261
|
+
backdrop-filter: blur(4px) !important;
|
|
3262
|
+
border: 1px solid rgba(255,255,255,0.1) !important;
|
|
3263
|
+
}
|
|
3264
|
+
|
|
3190
3265
|
/* Simplified volume control for mobile */
|
|
3191
3266
|
.uvf-volume-control {
|
|
3192
3267
|
order: 3;
|
|
@@ -4178,39 +4253,60 @@ export class WebPlayer extends BasePlayer {
|
|
|
4178
4253
|
/**
|
|
4179
4254
|
* Creates framework branding logo
|
|
4180
4255
|
*/
|
|
4181
|
-
|
|
4182
|
-
|
|
4183
|
-
|
|
4184
|
-
|
|
4185
|
-
|
|
4186
|
-
|
|
4187
|
-
|
|
4188
|
-
|
|
4189
|
-
|
|
4190
|
-
|
|
4191
|
-
|
|
4192
|
-
|
|
4193
|
-
|
|
4194
|
-
|
|
4195
|
-
|
|
4196
|
-
|
|
4197
|
-
|
|
4198
|
-
|
|
4199
|
-
|
|
4200
|
-
|
|
4201
|
-
|
|
4202
|
-
|
|
4203
|
-
|
|
4204
|
-
|
|
4205
|
-
|
|
4206
|
-
|
|
4207
|
-
|
|
4208
|
-
|
|
4209
|
-
|
|
4210
|
-
|
|
4211
|
-
|
|
4212
|
-
|
|
4213
|
-
|
|
4256
|
+
private createFrameworkBranding(container: HTMLElement): void {
|
|
4257
|
+
const brandingContainer = document.createElement('div');
|
|
4258
|
+
brandingContainer.className = 'uvf-framework-branding';
|
|
4259
|
+
brandingContainer.setAttribute('title', 'Powered by flicknexs');
|
|
4260
|
+
|
|
4261
|
+
const logoSvg = `
|
|
4262
|
+
<svg xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" id="Layer_1" viewBox="0 0 180 29" class="uvf-logo-svg">
|
|
4263
|
+
<defs>
|
|
4264
|
+
<style>.cls-1{fill:#0d5ef8;}.cls-2{fill:#ff0366;opacity:0.94;}.cls-3{fill:#fff;}</style>
|
|
4265
|
+
</defs>
|
|
4266
|
+
<title>flicknexs</title>
|
|
4267
|
+
<path class="cls-1" d="M45.93,1.53q-.87.15-3.18.48l-3.59.51c-1.26.16-2.42.3-3.51.42s-2.17.19-3.26.25q.7,4,1.17,10.68T34,25.67a22.58,22.58,0,0,0,2.73-.14,19.27,19.27,0,0,0,2.47-.45c.09-1.29.16-2.69.22-4.22s.1-3.16.14-4.9c.75-.09,1.54-.16,2.37-.2s1.76,0,2.77,0c0-1,0-1.89-.1-2.57a12,12,0,0,0-.35-2,20.14,20.14,0,0,0-2.34.13,18.77,18.77,0,0,0-2.38.4c0-.78,0-1.57,0-2.37s-.06-1.59-.1-2.37c.51,0,1.3-.11,2.39-.23l4.1-.42A10.41,10.41,0,0,0,46.13,5,8.75,8.75,0,0,0,46.21,4a10.85,10.85,0,0,0-.08-1.34,6.31,6.31,0,0,0-.2-1.08Z"/>
|
|
4268
|
+
<path class="cls-1" d="M61.11,21a20.41,20.41,0,0,0-3.07.25,26,26,0,0,0-3.25.7c-.14-.88-.25-1.94-.32-3.17s-.1-3.13-.1-5.67c0-1.76.05-3.42.14-5s.22-2.81.37-3.74a6.81,6.81,0,0,0-.74-.07l-.72,0a19.18,19.18,0,0,0-2.49.17A20.39,20.39,0,0,0,48.39,5c0,2.84.18,6.4.52,10.68s.75,7.81,1.2,10.6q3.78-.54,6.33-.73c1.69-.14,3.46-.2,5.32-.2a14.9,14.9,0,0,0-.21-2.26A15.21,15.21,0,0,0,61.11,21Z"/>
|
|
4269
|
+
<path class="cls-1" d="M69.2,4.25A10.1,10.1,0,0,0,67.86,4a11.09,11.09,0,0,0-1.36-.07,7.12,7.12,0,0,0-1.92.25,5.51,5.51,0,0,0-1.59.7q.51,3.83.76,8.62T64,24.16A20.88,20.88,0,0,0,66.51,24a14.38,14.38,0,0,0,2.15-.39q.28-3,.45-7.12t.17-8q0-1.2,0-2.28c0-.72,0-1.37,0-2Z"/>
|
|
4270
|
+
<path class="cls-1" d="M80.84,7.18a1.42,1.42,0,0,1,1.31,1,6.72,6.72,0,0,1,.46,2.8,15.48,15.48,0,0,0,2.7-.19,12.09,12.09,0,0,0,2.55-.84A7,7,0,0,0,86,5.42,5.65,5.65,0,0,0,81.8,3.81a8.68,8.68,0,0,0-7.07,3.51,13.28,13.28,0,0,0-2.81,8.61,8.82,8.82,0,0,0,2,6.15,7,7,0,0,0,5.45,2.16,8.74,8.74,0,0,0,5.8-1.78,6.86,6.86,0,0,0,2.34-5,4.63,4.63,0,0,0-1.84-.66,8.79,8.79,0,0,0-2.43-.13,4.83,4.83,0,0,1-.39,3,2.1,2.1,0,0,1-2,1.06,2.23,2.23,0,0,1-2-1.58,11.41,11.41,0,0,1-.72-4.56,15.42,15.42,0,0,1,.79-5.22c.52-1.44,1.18-2.16,2-2.16Z"/>
|
|
4271
|
+
<path class="cls-1" d="M99.82,14.22a24.24,24.24,0,0,0,3-3.4,36.6,36.6,0,0,0,2.75-4.29a11.67,11.67,0,0,0-2.17-2,8.72,8.72,0,0,0-2.35-1.16a51.71,51.71,0,0,1-2.76,5.54,24.14,24.14,0,0,1-2.79,3.84c.07-1.54.19-3.05.36-4.54s.38-2.93.65-4.34a11.73,11.73,0,0,0-1.29-.25,12.48,12.48,0,0,0-1.44-.08a8.38,8.38,0,0,0-2.07.25,5.37,5.37,0,0,0-1.69.7c-.07,1.12-.13,2.22-.17,3.29s0,2.1,0,3.11q0,3.89.32,7.57a67.32,67.32,0,0,0,1,7,22.86,22.86,0,0,0,2.71-.17,13.09,13.09,0,0,0,2.23-.39q-.25-1.84-.39-3.66c-.1-1.21-.15-2.39-.17-3.55a.77.77,0,0,0,.15-.1l.16-.1a35.18,35.18,0,0,1,3.53,4.28a39,39,0,0,1,2.9,5A11.7,11.7,0,0,0,105,25.1a9.65,9.65,0,0,0,2.08-2.23A47.65,47.65,0,0,0,103.63,18a33.51,33.51,0,0,0-3.81-3.82Z"/>
|
|
4272
|
+
<path class="cls-1" d="M124.86,1.87a17.07,17.07,0,0,0-2.83.24,22.53,22.53,0,0,0-2.9.69c.17,1.1.3,2.53.4,4.28s.14,3.74.14,6a50.57,50.57,0,0,0-2.37-5,55,55,0,0,0-3-4.79,14.37,14.37,0,0,0-3,.41,11.7,11.7,0,0,0-2.53.91l-.22.11a3,3,0,0,0-.31.2q0,3.48.27,8.49t.8,11.13a19.17,19.17,0,0,0,2.49-.17A12.81,12.81,0,0,0,114,24V14.4c0-.92,0-1.77,0-2.54a49.47,49.47,0,0,1,2.4,4.34q1.16,2.37,3,6.72c.71,0,1.44-.1,2.2-.18s1.72-.22,2.88-.41c.17-2.32.3-4.74.41-7.25s.15-4.93.15-7.23c0-.94,0-1.9,0-2.89s0-2-.11-3.09Z"/>
|
|
4273
|
+
<path class="cls-1" d="M142.27,19.19c-.89.17-2.19.36-3.93.57s-2.89.33-3.43.33c-.07-.73-.13-1.5-.17-2.3s-.06-1.63-.08-2.47q1.49-.18,3.06-.27c1.05-.07,2.1-.1,3.17-.1,0-.93,0-1.75-.11-2.44a18.5,18.5,0,0,0-.34-2,21.7,21.7,0,0,0-2.92.19,19.5,19.5,0,0,0-2.86.62c0-1.07,0-1.87.05-2.4s0-1,.09-1.42c1.21-.07,2.39-.13,3.51-.16s2.2-.06,3.25-.06A20.56,20.56,0,0,0,142,4.83a19.15,19.15,0,0,0,.13-2.2,55.58,55.58,0,0,0-6.25.35c-2.12.23-4.63.62-7.51,1.16q.06,4,.63,9.91c.39,4,.81,7.44,1.28,10.42,2,0,4.41-.12,7.34-.34a37,37,0,0,0,5.21-.59,19.88,19.88,0,0,0-.16-2.43,8.59,8.59,0,0,0-.37-1.92Z"/>
|
|
4274
|
+
<path class="cls-1" d="M157,11.89q1.72-2.16,2.95-3.82c.83-1.1,1.56-2.16,2.22-3.17A9.76,9.76,0,0,0,160.4,3a9.62,9.62,0,0,0-2.13-1.4c-.53,1-1.09,1.95-1.69,2.94s-1.27,2-2,3.15c-.71-1.14-1.44-2.28-2.19-3.4S150.85,2.08,150,1a15.86,15.86,0,0,0-2.71,1.35,19.56,19.56,0,0,0-2.57,1.88Q146.37,6,147.85,8c1,1.32,2,2.73,3,4.25-.58.79-1.19,1.58-1.83,2.39s-2.26,2.78-4.88,5.95a10.68,10.68,0,0,0,1.35,1.5A10.94,10.94,0,0,0,147,23.32q1.74-1.77,3.21-3.42c1-1.09,2-2.28,3.05-3.57.56,1,1.16,2.12,1.8,3.35s1.49,2.94,2.58,5.15A25.27,25.27,0,0,0,160,23.46a8.81,8.81,0,0,0,1.61-1.32c-.69-1.82-1.42-3.57-2.18-5.27s-1.6-3.35-2.48-5Z"/>
|
|
4275
|
+
<path class="cls-1" d="M175.73,13.66a8.41,8.41,0,0,0-1.1-1.26,20.35,20.35,0,0,0-2-1.66,11.73,11.73,0,0,1-2.47-2.27,3.19,3.19,0,0,1-.56-1.77,1.53,1.53,0,0,1,.38-1.08,1.33,1.33,0,0,1,1-.41,1.93,1.93,0,0,1,1.63.76,5.25,5.25,0,0,1,.84,2.5a14.43,14.43,0,0,0,2.73-.41A6.64,6.64,0,0,0,178,7.23a6.74,6.74,0,0,0-2.32-4.11A7.23,7.23,0,0,0,171,1.73a7.69,7.69,0,0,0-5.27,1.77,5.83,5.83,0,0,0-2,4.57a6.91,6.91,0,0,0,.34,2.21a7.42,7.42,0,0,0,1,2,10.78,10.78,0,0,0,1.15,1.26a26.14,26.14,0,0,0,2.07,1.71a12.65,12.65,0,0,1,2.43,2.2,2.71,2.71,0,0,1,.55,1.59,2.06,2.06,0,0,1-.53,1.5,2,2,0,0,1-1.52.55,2.42,2.42,0,0,1-2.17-1.31,6.43,6.43,0,0,1-.81-3.43a8.78,8.78,0,0,0-2.12.32,10.48,10.48,0,0,0-2.17.77a6.45,6.45,0,0,0,2.23,4.9,7.93,7.93,0,0,0,5.57,2.06,7.31,7.31,0,0,0,5.11-1.89A6.18,6.18,0,0,0,177,17.7a7.12,7.12,0,0,0-.31-2.15,6.71,6.71,0,0,0-1-1.89Z"/>
|
|
4276
|
+
<path class="cls-2" d="M24.28,12a1.43,1.43,0,0,1,.44,2.44l-8.11,6.84-8.1,6.85a1.43,1.43,0,0,1-2.33-.85L4.3,16.84,2.43,6.4A1.43,1.43,0,0,1,4.32,4.8l10,3.59Z"/>
|
|
4277
|
+
<path class="cls-1" d="M29.4,13.7a1.62,1.62,0,0,1,0,2.81L19,22.5l-10.39,6a1.62,1.62,0,0,1-2.43-1.4v-24a1.62,1.62,0,0,1,2.43-1.4L19,7.7Z"/>
|
|
4278
|
+
<path class="cls-3" d="M17.5,8.84l-2.33.74c-1.12.36-2,.63-2.63.82-.92.28-1.78.52-2.58.74s-1.61.41-2.41.59C8.22,13.68,9,16.3,9.72,19.6s1.37,6.23,1.79,8.8a18.88,18.88,0,0,0,2-.44,14.36,14.36,0,0,0,1.8-.64c-.08-1-.2-2-.34-3.2s-.31-2.38-.5-3.69c.55-.16,1.14-.3,1.76-.43s1.31-.26,2.07-.38q-.2-1.15-.39-1.92a8.8,8.8,0,0,0-.5-1.42,16.83,16.83,0,0,0-1.74.38,14.8,14.8,0,0,0-1.73.6c-.1-.59-.2-1.18-.32-1.78s-.24-1.18-.37-1.76L15,13.26l3-.82a8.59,8.59,0,0,0,0-1,6.88,6.88,0,0,0-.08-.83q-.09-.54-.21-1a6.18,6.18,0,0,0-.29-.78Z"/>
|
|
4279
|
+
</svg>
|
|
4280
|
+
`;
|
|
4281
|
+
|
|
4282
|
+
brandingContainer.innerHTML = logoSvg;
|
|
4283
|
+
|
|
4284
|
+
// Add click handler to redirect to flicknexs.com
|
|
4285
|
+
brandingContainer.addEventListener('click', (event) => {
|
|
4286
|
+
event.preventDefault();
|
|
4287
|
+
event.stopPropagation();
|
|
4288
|
+
|
|
4289
|
+
// Open flicknexs.com in a new tab/window
|
|
4290
|
+
const link = document.createElement('a');
|
|
4291
|
+
link.href = 'https://flicknexs.com/';
|
|
4292
|
+
link.target = '_blank';
|
|
4293
|
+
link.rel = 'noopener noreferrer';
|
|
4294
|
+
document.body.appendChild(link);
|
|
4295
|
+
link.click();
|
|
4296
|
+
document.body.removeChild(link);
|
|
4297
|
+
|
|
4298
|
+
// Emit analytics event
|
|
4299
|
+
this.emit('frameworkBrandingClick', {
|
|
4300
|
+
timestamp: Date.now(),
|
|
4301
|
+
url: 'https://flicknexs.com/',
|
|
4302
|
+
userAgent: navigator.userAgent
|
|
4303
|
+
});
|
|
4304
|
+
});
|
|
4305
|
+
|
|
4306
|
+
container.appendChild(brandingContainer);
|
|
4307
|
+
|
|
4308
|
+
this.debugLog('Framework branding added');
|
|
4309
|
+
}
|
|
4214
4310
|
|
|
4215
4311
|
private createCustomControls(container: HTMLElement): void {
|
|
4216
4312
|
// Add gradients
|
|
@@ -4289,6 +4385,17 @@ export class WebPlayer extends BasePlayer {
|
|
|
4289
4385
|
controlsBar.className = 'uvf-controls-bar';
|
|
4290
4386
|
controlsBar.id = 'uvf-controls';
|
|
4291
4387
|
|
|
4388
|
+
// Time and branding section above seekbar
|
|
4389
|
+
const aboveSeekbarSection = document.createElement('div');
|
|
4390
|
+
aboveSeekbarSection.className = 'uvf-above-seekbar-section';
|
|
4391
|
+
|
|
4392
|
+
// Time display (moved to above seekbar)
|
|
4393
|
+
const timeDisplay = document.createElement('div');
|
|
4394
|
+
timeDisplay.className = 'uvf-time-display uvf-above-seekbar';
|
|
4395
|
+
timeDisplay.id = 'uvf-time-display';
|
|
4396
|
+
timeDisplay.textContent = '00:00 / 00:00';
|
|
4397
|
+
aboveSeekbarSection.appendChild(timeDisplay);
|
|
4398
|
+
|
|
4292
4399
|
// Progress section
|
|
4293
4400
|
const progressSection = document.createElement('div');
|
|
4294
4401
|
progressSection.className = 'uvf-progress-section';
|
|
@@ -4360,13 +4467,6 @@ export class WebPlayer extends BasePlayer {
|
|
|
4360
4467
|
`;
|
|
4361
4468
|
controlsRow.appendChild(volumeControl);
|
|
4362
4469
|
|
|
4363
|
-
// Time display
|
|
4364
|
-
const timeDisplay = document.createElement('div');
|
|
4365
|
-
timeDisplay.className = 'uvf-time-display';
|
|
4366
|
-
timeDisplay.id = 'uvf-time-display';
|
|
4367
|
-
timeDisplay.textContent = '00:00 / 00:00';
|
|
4368
|
-
controlsRow.appendChild(timeDisplay);
|
|
4369
|
-
|
|
4370
4470
|
// Right controls
|
|
4371
4471
|
const rightControls = document.createElement('div');
|
|
4372
4472
|
rightControls.className = 'uvf-right-controls';
|
|
@@ -4430,6 +4530,7 @@ export class WebPlayer extends BasePlayer {
|
|
|
4430
4530
|
controlsRow.appendChild(rightControls);
|
|
4431
4531
|
|
|
4432
4532
|
// Assemble controls bar
|
|
4533
|
+
controlsBar.appendChild(aboveSeekbarSection);
|
|
4433
4534
|
controlsBar.appendChild(progressSection);
|
|
4434
4535
|
controlsBar.appendChild(controlsRow);
|
|
4435
4536
|
container.appendChild(controlsBar);
|