unified-video-framework 1.4.211 → 1.4.213
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.
|
|
3
|
+
"version": "1.4.213",
|
|
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",
|
|
@@ -110,6 +110,7 @@ export declare class WebPlayer extends BasePlayer {
|
|
|
110
110
|
play(): Promise<void>;
|
|
111
111
|
pause(): void;
|
|
112
112
|
requestPause(): void;
|
|
113
|
+
private safeSetCurrentTime;
|
|
113
114
|
seek(time: number): void;
|
|
114
115
|
setVolume(level: number): void;
|
|
115
116
|
mute(): void;
|
|
@@ -164,7 +165,7 @@ export declare class WebPlayer extends BasePlayer {
|
|
|
164
165
|
private lockOrientationLandscape;
|
|
165
166
|
private unlockOrientation;
|
|
166
167
|
private handleVolumeChange;
|
|
167
|
-
private
|
|
168
|
+
private seekToPosition;
|
|
168
169
|
private formatTime;
|
|
169
170
|
private updateTimeDisplay;
|
|
170
171
|
private showControls;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebPlayer.d.ts","sourceRoot":"","sources":["../src/WebPlayer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAOL,OAAO,EACP,cAAc,EACf,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,EAEb,MAAM,+BAA+B,CAAC;AAGvC,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;IAGpC,OAAO,CAAC,cAAc,CAKpB;IACF,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,eAAe,CAAkB;IAGzC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,qBAAqB,CAAa;IAC1C,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,oBAAoB,CAA+B;IAC3D,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,kBAAkB,CAAwB;IAGlD,OAAO,CAAC,oBAAoB,CAU1B;IACF,OAAO,CAAC,oBAAoB,CAAkB;IAC9C,OAAO,CAAC,qBAAqB,CAAa;IAC1C,OAAO,CAAC,kBAAkB,CAAa;IAGvC,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,kBAAkB,CAAmC;IAC7D,OAAO,CAAC,aAAa,CAAqC;IAG1D,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,SAAS;IAOX,UAAU,CAAC,SAAS,EAAE,WAAW,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;cAsD9D,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IA4J5C,OAAO,CAAC,iBAAiB,CAAkB;IAE3C,OAAO,CAAC,wBAAwB;IAkJhC,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,oBAAoB;IAYtB,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IA2DtC,OAAO,CAAC,gBAAgB;YAcV,OAAO;IAsDrB,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;IAOxB,OAAO,CAAC,0BAA0B;YAsBpB,0BAA0B;IAmExC,OAAO,CAAC,iBAAiB;YAmBX,0BAA0B;IAuExC,OAAO,CAAC,kBAAkB;IA6C1B,OAAO,CAAC,gBAAgB;IAmHxB,OAAO,CAAC,kBAAkB;IA4C1B,OAAO,CAAC,oBAAoB,CAA0C;IAEtE,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,4BAA4B;IAsB9B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2D3B,KAAK,IAAI,IAAI;IAkBN,YAAY,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"WebPlayer.d.ts","sourceRoot":"","sources":["../src/WebPlayer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1022,26 +1022,57 @@ export class WebPlayer extends BasePlayer {
|
|
|
1022
1022
|
catch (_) { }
|
|
1023
1023
|
}
|
|
1024
1024
|
}
|
|
1025
|
+
safeSetCurrentTime(time) {
|
|
1026
|
+
if (!this.video) {
|
|
1027
|
+
this.debugWarn('Cannot set currentTime: video element not available');
|
|
1028
|
+
return false;
|
|
1029
|
+
}
|
|
1030
|
+
if (!isFinite(time) || isNaN(time)) {
|
|
1031
|
+
this.debugWarn('Attempted to set invalid currentTime value:', time);
|
|
1032
|
+
return false;
|
|
1033
|
+
}
|
|
1034
|
+
const safeTime = Math.max(0, time);
|
|
1035
|
+
const duration = this.video.duration;
|
|
1036
|
+
if (isFinite(duration) && duration > 0) {
|
|
1037
|
+
const clampedTime = Math.min(safeTime, duration);
|
|
1038
|
+
try {
|
|
1039
|
+
this.video.currentTime = clampedTime;
|
|
1040
|
+
return true;
|
|
1041
|
+
}
|
|
1042
|
+
catch (error) {
|
|
1043
|
+
this.debugError('Error setting currentTime:', error);
|
|
1044
|
+
return false;
|
|
1045
|
+
}
|
|
1046
|
+
}
|
|
1047
|
+
else {
|
|
1048
|
+
try {
|
|
1049
|
+
this.video.currentTime = safeTime;
|
|
1050
|
+
return true;
|
|
1051
|
+
}
|
|
1052
|
+
catch (error) {
|
|
1053
|
+
this.debugError('Error setting currentTime:', error);
|
|
1054
|
+
return false;
|
|
1055
|
+
}
|
|
1056
|
+
}
|
|
1057
|
+
}
|
|
1025
1058
|
seek(time) {
|
|
1026
1059
|
if (!this.video)
|
|
1027
1060
|
return;
|
|
1061
|
+
if (!isFinite(time) || isNaN(time)) {
|
|
1062
|
+
this.debugWarn('Invalid seek time:', time);
|
|
1063
|
+
return;
|
|
1064
|
+
}
|
|
1028
1065
|
const freeDuration = Number(this.config.freeDuration || 0);
|
|
1029
1066
|
if (freeDuration > 0 && !this.paymentSuccessful) {
|
|
1030
1067
|
const requestedTime = Math.max(0, Math.min(time, this.video.duration || time));
|
|
1031
1068
|
if (requestedTime >= freeDuration) {
|
|
1032
1069
|
this.debugWarn('Seek blocked - beyond free preview limit');
|
|
1033
1070
|
this.enforcePaywallSecurity();
|
|
1034
|
-
this.
|
|
1071
|
+
this.safeSetCurrentTime(freeDuration - 1);
|
|
1035
1072
|
return;
|
|
1036
1073
|
}
|
|
1037
1074
|
}
|
|
1038
|
-
|
|
1039
|
-
if (typeof d === 'number' && isFinite(d) && d > 0) {
|
|
1040
|
-
this.video.currentTime = Math.max(0, Math.min(time, d));
|
|
1041
|
-
}
|
|
1042
|
-
else {
|
|
1043
|
-
this.video.currentTime = Math.max(0, time);
|
|
1044
|
-
}
|
|
1075
|
+
this.safeSetCurrentTime(time);
|
|
1045
1076
|
}
|
|
1046
1077
|
setVolume(level) {
|
|
1047
1078
|
if (!this.video)
|
|
@@ -2889,6 +2920,99 @@ export class WebPlayer extends BasePlayer {
|
|
|
2889
2920
|
filter: drop-shadow(0 2px 4px rgba(0,0,0,0.4));
|
|
2890
2921
|
}
|
|
2891
2922
|
|
|
2923
|
+
/* Cast Button Specific Styling */
|
|
2924
|
+
#uvf-cast-btn {
|
|
2925
|
+
background: var(--uvf-button-bg);
|
|
2926
|
+
border: 1px solid var(--uvf-button-border);
|
|
2927
|
+
position: relative;
|
|
2928
|
+
z-index: 10;
|
|
2929
|
+
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
2930
|
+
}
|
|
2931
|
+
|
|
2932
|
+
#uvf-cast-btn:hover {
|
|
2933
|
+
transform: scale(1.08);
|
|
2934
|
+
box-shadow: 0 4px 12px var(--uvf-button-shadow);
|
|
2935
|
+
}
|
|
2936
|
+
|
|
2937
|
+
#uvf-cast-btn:active {
|
|
2938
|
+
transform: scale(0.95);
|
|
2939
|
+
transition: all 0.1s ease;
|
|
2940
|
+
}
|
|
2941
|
+
|
|
2942
|
+
#uvf-cast-btn svg {
|
|
2943
|
+
opacity: 0.9;
|
|
2944
|
+
transition: all 0.3s ease;
|
|
2945
|
+
filter: drop-shadow(0 1px 2px rgba(0,0,0,0.3));
|
|
2946
|
+
}
|
|
2947
|
+
|
|
2948
|
+
#uvf-cast-btn:hover svg {
|
|
2949
|
+
opacity: 1;
|
|
2950
|
+
transform: scale(1.05);
|
|
2951
|
+
filter: drop-shadow(0 2px 4px rgba(0,0,0,0.4));
|
|
2952
|
+
}
|
|
2953
|
+
|
|
2954
|
+
/* Share Button Specific Styling */
|
|
2955
|
+
#uvf-share-btn {
|
|
2956
|
+
background: var(--uvf-button-bg);
|
|
2957
|
+
border: 1px solid var(--uvf-button-border);
|
|
2958
|
+
position: relative;
|
|
2959
|
+
z-index: 10;
|
|
2960
|
+
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
2961
|
+
}
|
|
2962
|
+
|
|
2963
|
+
#uvf-share-btn:hover {
|
|
2964
|
+
transform: scale(1.08);
|
|
2965
|
+
box-shadow: 0 4px 12px var(--uvf-button-shadow);
|
|
2966
|
+
}
|
|
2967
|
+
|
|
2968
|
+
#uvf-share-btn:active {
|
|
2969
|
+
transform: scale(0.95);
|
|
2970
|
+
transition: all 0.1s ease;
|
|
2971
|
+
}
|
|
2972
|
+
|
|
2973
|
+
#uvf-share-btn svg {
|
|
2974
|
+
opacity: 0.9;
|
|
2975
|
+
transition: all 0.3s ease;
|
|
2976
|
+
filter: drop-shadow(0 1px 2px rgba(0,0,0,0.3));
|
|
2977
|
+
}
|
|
2978
|
+
|
|
2979
|
+
#uvf-share-btn:hover svg {
|
|
2980
|
+
opacity: 1;
|
|
2981
|
+
transform: scale(1.05);
|
|
2982
|
+
filter: drop-shadow(0 2px 4px rgba(0,0,0,0.4));
|
|
2983
|
+
}
|
|
2984
|
+
|
|
2985
|
+
/* EPG Button Specific Styling */
|
|
2986
|
+
#uvf-epg-btn {
|
|
2987
|
+
background: var(--uvf-button-bg);
|
|
2988
|
+
border: 1px solid var(--uvf-button-border);
|
|
2989
|
+
position: relative;
|
|
2990
|
+
z-index: 10;
|
|
2991
|
+
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
2992
|
+
}
|
|
2993
|
+
|
|
2994
|
+
#uvf-epg-btn:hover {
|
|
2995
|
+
transform: scale(1.08);
|
|
2996
|
+
box-shadow: 0 4px 12px var(--uvf-button-shadow);
|
|
2997
|
+
}
|
|
2998
|
+
|
|
2999
|
+
#uvf-epg-btn:active {
|
|
3000
|
+
transform: scale(0.95);
|
|
3001
|
+
transition: all 0.1s ease;
|
|
3002
|
+
}
|
|
3003
|
+
|
|
3004
|
+
#uvf-epg-btn svg {
|
|
3005
|
+
opacity: 0.9;
|
|
3006
|
+
transition: all 0.3s ease;
|
|
3007
|
+
filter: drop-shadow(0 1px 2px rgba(0,0,0,0.3));
|
|
3008
|
+
}
|
|
3009
|
+
|
|
3010
|
+
#uvf-epg-btn:hover svg {
|
|
3011
|
+
opacity: 1;
|
|
3012
|
+
transform: scale(1.05);
|
|
3013
|
+
filter: drop-shadow(0 2px 4px rgba(0,0,0,0.4));
|
|
3014
|
+
}
|
|
3015
|
+
|
|
2892
3016
|
.uvf-control-btn.play-pause {
|
|
2893
3017
|
width: 50px;
|
|
2894
3018
|
height: 50px;
|
|
@@ -3287,68 +3411,50 @@ export class WebPlayer extends BasePlayer {
|
|
|
3287
3411
|
flex-shrink: 0;
|
|
3288
3412
|
}
|
|
3289
3413
|
|
|
3290
|
-
/* Navigation button styles */
|
|
3414
|
+
/* Navigation button styles - Follow theme like skip/volume buttons */
|
|
3291
3415
|
.uvf-nav-btn {
|
|
3292
3416
|
width: 40px;
|
|
3293
3417
|
height: 40px;
|
|
3294
3418
|
min-width: 40px;
|
|
3295
3419
|
min-height: 40px;
|
|
3296
3420
|
border-radius: 50%;
|
|
3297
|
-
background:
|
|
3298
|
-
border: 1px solid
|
|
3421
|
+
background: var(--uvf-button-bg);
|
|
3422
|
+
border: 1px solid var(--uvf-button-border);
|
|
3299
3423
|
color: white;
|
|
3300
3424
|
cursor: pointer;
|
|
3301
3425
|
display: flex;
|
|
3302
3426
|
align-items: center;
|
|
3303
3427
|
justify-content: center;
|
|
3304
3428
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
3305
|
-
backdrop-filter: blur(
|
|
3429
|
+
backdrop-filter: blur(10px);
|
|
3306
3430
|
position: relative;
|
|
3307
3431
|
overflow: hidden;
|
|
3432
|
+
z-index: 10;
|
|
3308
3433
|
}
|
|
3309
3434
|
|
|
3310
3435
|
.uvf-nav-btn:hover {
|
|
3311
|
-
|
|
3312
|
-
|
|
3313
|
-
transform: scale(1.05);
|
|
3314
|
-
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
|
|
3436
|
+
transform: scale(1.08);
|
|
3437
|
+
box-shadow: 0 4px 12px var(--uvf-button-shadow);
|
|
3315
3438
|
}
|
|
3316
3439
|
|
|
3317
3440
|
.uvf-nav-btn:active {
|
|
3318
3441
|
transform: scale(0.95);
|
|
3442
|
+
transition: all 0.1s ease;
|
|
3319
3443
|
}
|
|
3320
3444
|
|
|
3321
3445
|
.uvf-nav-btn svg {
|
|
3322
3446
|
width: 20px;
|
|
3323
3447
|
height: 20px;
|
|
3324
3448
|
fill: currentColor;
|
|
3325
|
-
|
|
3449
|
+
opacity: 0.9;
|
|
3450
|
+
transition: all 0.3s ease;
|
|
3451
|
+
filter: drop-shadow(0 1px 2px rgba(0,0,0,0.3));
|
|
3326
3452
|
}
|
|
3327
3453
|
|
|
3328
3454
|
.uvf-nav-btn:hover svg {
|
|
3329
|
-
|
|
3330
|
-
|
|
3331
|
-
|
|
3332
|
-
/* Back button specific styles */
|
|
3333
|
-
#uvf-back-btn {
|
|
3334
|
-
background: rgba(0, 0, 0, 0.7);
|
|
3335
|
-
}
|
|
3336
|
-
|
|
3337
|
-
#uvf-back-btn:hover {
|
|
3338
|
-
background: rgba(255, 255, 255, 0.2);
|
|
3339
|
-
border-color: var(--uvf-accent-1, #ff0000);
|
|
3340
|
-
}
|
|
3341
|
-
|
|
3342
|
-
/* Close button specific styles */
|
|
3343
|
-
#uvf-close-btn {
|
|
3344
|
-
background: rgba(220, 53, 69, 0.8);
|
|
3345
|
-
border-color: rgba(220, 53, 69, 0.6);
|
|
3346
|
-
}
|
|
3347
|
-
|
|
3348
|
-
#uvf-close-btn:hover {
|
|
3349
|
-
background: rgba(220, 53, 69, 1);
|
|
3350
|
-
border-color: rgba(220, 53, 69, 1);
|
|
3351
|
-
box-shadow: 0 4px 12px rgba(220, 53, 69, 0.4);
|
|
3455
|
+
opacity: 1;
|
|
3456
|
+
transform: scale(1.05);
|
|
3457
|
+
filter: drop-shadow(0 2px 4px rgba(0,0,0,0.4));
|
|
3352
3458
|
}
|
|
3353
3459
|
|
|
3354
3460
|
.uvf-player-wrapper:hover .uvf-top-bar,
|
|
@@ -3804,6 +3910,83 @@ export class WebPlayer extends BasePlayer {
|
|
|
3804
3910
|
100% { opacity: 0; transform: translate(-50%, -50%) scale(0.8); }
|
|
3805
3911
|
}
|
|
3806
3912
|
|
|
3913
|
+
/* Responsive shortcut/volume indicator for mobile and tablet */
|
|
3914
|
+
@media screen and (max-width: 767px) {
|
|
3915
|
+
.uvf-shortcut-indicator {
|
|
3916
|
+
padding: 16px 24px;
|
|
3917
|
+
font-size: 20px;
|
|
3918
|
+
max-width: calc(100vw - 40px);
|
|
3919
|
+
border-radius: 12px;
|
|
3920
|
+
backdrop-filter: blur(10px);
|
|
3921
|
+
}
|
|
3922
|
+
|
|
3923
|
+
/* Volume indicator - more compact on mobile */
|
|
3924
|
+
.uvf-shortcut-indicator .uvf-ki-volume {
|
|
3925
|
+
flex-direction: column;
|
|
3926
|
+
gap: 12px;
|
|
3927
|
+
}
|
|
3928
|
+
|
|
3929
|
+
.uvf-shortcut-indicator .uvf-ki-vol-icon svg {
|
|
3930
|
+
width: 32px;
|
|
3931
|
+
height: 32px;
|
|
3932
|
+
}
|
|
3933
|
+
|
|
3934
|
+
.uvf-shortcut-indicator .uvf-ki-vol-bar {
|
|
3935
|
+
width: clamp(200px, 70vw, 280px);
|
|
3936
|
+
height: 10px;
|
|
3937
|
+
border-radius: 5px;
|
|
3938
|
+
}
|
|
3939
|
+
|
|
3940
|
+
.uvf-shortcut-indicator .uvf-ki-vol-text {
|
|
3941
|
+
font-size: 22px;
|
|
3942
|
+
font-weight: 700;
|
|
3943
|
+
min-width: auto;
|
|
3944
|
+
text-align: center;
|
|
3945
|
+
width: 100%;
|
|
3946
|
+
}
|
|
3947
|
+
|
|
3948
|
+
/* Skip indicators - slightly smaller */
|
|
3949
|
+
.uvf-shortcut-indicator .uvf-ki-skip {
|
|
3950
|
+
width: 90px;
|
|
3951
|
+
height: 90px;
|
|
3952
|
+
}
|
|
3953
|
+
|
|
3954
|
+
.uvf-shortcut-indicator .uvf-ki-skip svg {
|
|
3955
|
+
width: 90px;
|
|
3956
|
+
height: 90px;
|
|
3957
|
+
}
|
|
3958
|
+
|
|
3959
|
+
.uvf-shortcut-indicator .uvf-ki-skip .uvf-ki-skip-num {
|
|
3960
|
+
font-size: 19px;
|
|
3961
|
+
}
|
|
3962
|
+
|
|
3963
|
+
/* Icon indicators */
|
|
3964
|
+
.uvf-shortcut-indicator .uvf-ki svg {
|
|
3965
|
+
width: 56px;
|
|
3966
|
+
height: 56px;
|
|
3967
|
+
}
|
|
3968
|
+
|
|
3969
|
+
.uvf-shortcut-indicator .uvf-ki-text {
|
|
3970
|
+
font-size: 16px;
|
|
3971
|
+
}
|
|
3972
|
+
}
|
|
3973
|
+
|
|
3974
|
+
@media screen and (min-width: 768px) and (max-width: 1023px) {
|
|
3975
|
+
/* Tablet optimization */
|
|
3976
|
+
.uvf-shortcut-indicator .uvf-ki-vol-bar {
|
|
3977
|
+
width: 160px;
|
|
3978
|
+
}
|
|
3979
|
+
|
|
3980
|
+
.uvf-shortcut-indicator .uvf-ki-vol-icon svg {
|
|
3981
|
+
width: 34px;
|
|
3982
|
+
height: 34px;
|
|
3983
|
+
}
|
|
3984
|
+
|
|
3985
|
+
.uvf-shortcut-indicator .uvf-ki-vol-text {
|
|
3986
|
+
font-size: 15px;
|
|
3987
|
+
}
|
|
3988
|
+
}
|
|
3989
|
+
|
|
3807
3990
|
/* Hide top bar when no cursor */
|
|
3808
3991
|
.uvf-player-wrapper.no-cursor .uvf-top-bar {
|
|
3809
3992
|
opacity: 0 !important;
|
|
@@ -5274,8 +5457,16 @@ export class WebPlayer extends BasePlayer {
|
|
|
5274
5457
|
this.debugLog('Center play button shown - video ended');
|
|
5275
5458
|
}
|
|
5276
5459
|
});
|
|
5277
|
-
skipBackBtn?.addEventListener('click', () =>
|
|
5278
|
-
|
|
5460
|
+
skipBackBtn?.addEventListener('click', () => {
|
|
5461
|
+
if (this.video && !isNaN(this.video.duration)) {
|
|
5462
|
+
this.seek(Math.max(0, this.video.currentTime - 10));
|
|
5463
|
+
}
|
|
5464
|
+
});
|
|
5465
|
+
skipForwardBtn?.addEventListener('click', () => {
|
|
5466
|
+
if (this.video && !isNaN(this.video.duration)) {
|
|
5467
|
+
this.seek(Math.min(this.video.duration, this.video.currentTime + 10));
|
|
5468
|
+
}
|
|
5469
|
+
});
|
|
5279
5470
|
volumeBtn?.addEventListener('click', (e) => {
|
|
5280
5471
|
e.stopPropagation();
|
|
5281
5472
|
this.toggleMuteAction();
|
|
@@ -5317,12 +5508,12 @@ export class WebPlayer extends BasePlayer {
|
|
|
5317
5508
|
this.handleVolumeChange(e);
|
|
5318
5509
|
});
|
|
5319
5510
|
progressBar?.addEventListener('click', (e) => {
|
|
5320
|
-
this.
|
|
5511
|
+
this.seekToPosition(e);
|
|
5321
5512
|
});
|
|
5322
5513
|
progressBar?.addEventListener('mousedown', (e) => {
|
|
5323
5514
|
this.isDragging = true;
|
|
5324
5515
|
this.showTimeTooltip = true;
|
|
5325
|
-
this.
|
|
5516
|
+
this.seekToPosition(e);
|
|
5326
5517
|
this.updateTimeTooltip(e);
|
|
5327
5518
|
});
|
|
5328
5519
|
progressBar?.addEventListener('mouseenter', () => {
|
|
@@ -5343,14 +5534,18 @@ export class WebPlayer extends BasePlayer {
|
|
|
5343
5534
|
e.preventDefault();
|
|
5344
5535
|
this.isDragging = true;
|
|
5345
5536
|
const touch = e.touches[0];
|
|
5346
|
-
|
|
5537
|
+
const mouseEvent = new MouseEvent('mousedown', {
|
|
5538
|
+
clientX: touch.clientX,
|
|
5539
|
+
clientY: touch.clientY
|
|
5540
|
+
});
|
|
5541
|
+
this.seekToPosition(mouseEvent);
|
|
5347
5542
|
}, { passive: false });
|
|
5348
5543
|
document.addEventListener('mousemove', (e) => {
|
|
5349
5544
|
if (this.isVolumeSliding) {
|
|
5350
5545
|
this.handleVolumeChange(e);
|
|
5351
5546
|
}
|
|
5352
5547
|
if (this.isDragging && progressBar) {
|
|
5353
|
-
this.
|
|
5548
|
+
this.seekToPosition(e);
|
|
5354
5549
|
this.updateTimeTooltip(e);
|
|
5355
5550
|
}
|
|
5356
5551
|
});
|
|
@@ -5358,7 +5553,11 @@ export class WebPlayer extends BasePlayer {
|
|
|
5358
5553
|
if (this.isDragging && progressBar) {
|
|
5359
5554
|
e.preventDefault();
|
|
5360
5555
|
const touch = e.touches[0];
|
|
5361
|
-
|
|
5556
|
+
const mouseEvent = new MouseEvent('mousemove', {
|
|
5557
|
+
clientX: touch.clientX,
|
|
5558
|
+
clientY: touch.clientY
|
|
5559
|
+
});
|
|
5560
|
+
this.seekToPosition(mouseEvent);
|
|
5362
5561
|
}
|
|
5363
5562
|
}, { passive: false });
|
|
5364
5563
|
document.addEventListener('mouseup', () => {
|
|
@@ -5617,14 +5816,18 @@ export class WebPlayer extends BasePlayer {
|
|
|
5617
5816
|
case 'ArrowLeft':
|
|
5618
5817
|
e.preventDefault();
|
|
5619
5818
|
e.stopImmediatePropagation();
|
|
5620
|
-
this.
|
|
5621
|
-
|
|
5819
|
+
if (this.video && !isNaN(this.video.duration)) {
|
|
5820
|
+
this.seek(Math.max(0, this.video.currentTime - 10));
|
|
5821
|
+
shortcutText = '-10s';
|
|
5822
|
+
}
|
|
5622
5823
|
break;
|
|
5623
5824
|
case 'ArrowRight':
|
|
5624
5825
|
e.preventDefault();
|
|
5625
5826
|
e.stopImmediatePropagation();
|
|
5626
|
-
|
|
5627
|
-
|
|
5827
|
+
if (this.video && !isNaN(this.video.duration)) {
|
|
5828
|
+
this.seek(Math.min(this.video.duration, this.video.currentTime + 10));
|
|
5829
|
+
shortcutText = '+10s';
|
|
5830
|
+
}
|
|
5628
5831
|
break;
|
|
5629
5832
|
case 'ArrowUp':
|
|
5630
5833
|
e.preventDefault();
|
|
@@ -5690,8 +5893,8 @@ export class WebPlayer extends BasePlayer {
|
|
|
5690
5893
|
case '8':
|
|
5691
5894
|
case '9':
|
|
5692
5895
|
e.preventDefault();
|
|
5693
|
-
|
|
5694
|
-
|
|
5896
|
+
if (this.video && !isNaN(this.video.duration) && this.video.duration > 0) {
|
|
5897
|
+
const percent = parseInt(e.key) * 10;
|
|
5695
5898
|
this.video.currentTime = (this.video.duration * percent) / 100;
|
|
5696
5899
|
shortcutText = `${percent}%`;
|
|
5697
5900
|
}
|
|
@@ -5963,7 +6166,7 @@ export class WebPlayer extends BasePlayer {
|
|
|
5963
6166
|
try {
|
|
5964
6167
|
this.requestPause();
|
|
5965
6168
|
if (fromSeek || ((this.video.currentTime || 0) > lim)) {
|
|
5966
|
-
this.
|
|
6169
|
+
this.safeSetCurrentTime(lim - 0.1);
|
|
5967
6170
|
}
|
|
5968
6171
|
}
|
|
5969
6172
|
catch (_) { }
|
|
@@ -6117,16 +6320,25 @@ export class WebPlayer extends BasePlayer {
|
|
|
6117
6320
|
this.video.muted = false;
|
|
6118
6321
|
}
|
|
6119
6322
|
}
|
|
6120
|
-
|
|
6121
|
-
const progressBar = document.
|
|
6323
|
+
seekToPosition(e) {
|
|
6324
|
+
const progressBar = document.querySelector('.uvf-progress-bar');
|
|
6122
6325
|
const progressFilled = document.getElementById('uvf-progress-filled');
|
|
6123
6326
|
const progressHandle = document.getElementById('uvf-progress-handle');
|
|
6124
6327
|
if (!progressBar || !this.video)
|
|
6125
6328
|
return;
|
|
6329
|
+
const duration = this.video.duration;
|
|
6330
|
+
if (!isFinite(duration) || isNaN(duration) || duration <= 0) {
|
|
6331
|
+
this.debugWarn('Invalid video duration, cannot seek via progress bar');
|
|
6332
|
+
return;
|
|
6333
|
+
}
|
|
6126
6334
|
const rect = progressBar.getBoundingClientRect();
|
|
6127
6335
|
const x = Math.max(0, Math.min(e.clientX - rect.left, rect.width));
|
|
6128
6336
|
const percent = (x / rect.width) * 100;
|
|
6129
|
-
const time = (percent / 100) *
|
|
6337
|
+
const time = (percent / 100) * duration;
|
|
6338
|
+
if (!isFinite(time) || isNaN(time)) {
|
|
6339
|
+
this.debugWarn('Calculated seek time is invalid:', time);
|
|
6340
|
+
return;
|
|
6341
|
+
}
|
|
6130
6342
|
if (progressFilled) {
|
|
6131
6343
|
progressFilled.style.width = percent + '%';
|
|
6132
6344
|
}
|
|
@@ -6305,14 +6517,20 @@ export class WebPlayer extends BasePlayer {
|
|
|
6305
6517
|
const tapPosition = tapX - wrapperRect.left;
|
|
6306
6518
|
const wrapperWidth = wrapperRect.width;
|
|
6307
6519
|
const isLeftSide = tapPosition < wrapperWidth / 2;
|
|
6520
|
+
const currentTime = this.video.currentTime;
|
|
6521
|
+
const duration = this.video.duration;
|
|
6522
|
+
if (!isFinite(currentTime) || isNaN(currentTime) || !isFinite(duration) || isNaN(duration)) {
|
|
6523
|
+
this.debugWarn('Invalid video time values, skipping double-tap action');
|
|
6524
|
+
return;
|
|
6525
|
+
}
|
|
6308
6526
|
if (isLeftSide) {
|
|
6309
|
-
const newTime = Math.max(0,
|
|
6527
|
+
const newTime = Math.max(0, currentTime - SKIP_SECONDS);
|
|
6310
6528
|
this.seek(newTime);
|
|
6311
6529
|
this.showShortcutIndicator(`-${SKIP_SECONDS}s`);
|
|
6312
6530
|
this.debugLog('Double tap left - skip backward');
|
|
6313
6531
|
}
|
|
6314
6532
|
else {
|
|
6315
|
-
const newTime = Math.min(
|
|
6533
|
+
const newTime = Math.min(duration, currentTime + SKIP_SECONDS);
|
|
6316
6534
|
this.seek(newTime);
|
|
6317
6535
|
this.showShortcutIndicator(`+${SKIP_SECONDS}s`);
|
|
6318
6536
|
this.debugLog('Double tap right - skip forward');
|
|
@@ -6360,8 +6578,11 @@ export class WebPlayer extends BasePlayer {
|
|
|
6360
6578
|
return;
|
|
6361
6579
|
this.fastBackwardInterval = setInterval(() => {
|
|
6362
6580
|
if (this.video) {
|
|
6363
|
-
const
|
|
6364
|
-
|
|
6581
|
+
const currentTime = this.video.currentTime;
|
|
6582
|
+
if (isFinite(currentTime) && !isNaN(currentTime)) {
|
|
6583
|
+
const newTime = Math.max(0, currentTime - 0.1);
|
|
6584
|
+
this.safeSetCurrentTime(newTime);
|
|
6585
|
+
}
|
|
6365
6586
|
}
|
|
6366
6587
|
}, 50);
|
|
6367
6588
|
}
|
|
@@ -6767,8 +6988,8 @@ export class WebPlayer extends BasePlayer {
|
|
|
6767
6988
|
return;
|
|
6768
6989
|
}
|
|
6769
6990
|
const chapter = this.coreChapterManager.seekToChapter(chapterId);
|
|
6770
|
-
if (chapter) {
|
|
6771
|
-
this.
|
|
6991
|
+
if (chapter && isFinite(chapter.startTime) && !isNaN(chapter.startTime)) {
|
|
6992
|
+
this.safeSetCurrentTime(chapter.startTime);
|
|
6772
6993
|
this.debugLog('Seeked to chapter:', chapter.title);
|
|
6773
6994
|
}
|
|
6774
6995
|
}
|
|
@@ -7420,17 +7641,9 @@ export class WebPlayer extends BasePlayer {
|
|
|
7420
7641
|
item.classList.remove('expanded');
|
|
7421
7642
|
});
|
|
7422
7643
|
}
|
|
7423
|
-
|
|
7424
|
-
|
|
7425
|
-
|
|
7426
|
-
}, 300);
|
|
7427
|
-
}
|
|
7428
|
-
else {
|
|
7429
|
-
setTimeout(() => {
|
|
7430
|
-
this.generateAccordionMenu();
|
|
7431
|
-
this.setupSettingsEventListeners();
|
|
7432
|
-
}, 100);
|
|
7433
|
-
}
|
|
7644
|
+
setTimeout(() => {
|
|
7645
|
+
this.hideSettingsMenu();
|
|
7646
|
+
}, 200);
|
|
7434
7647
|
}
|
|
7435
7648
|
updateSettingsActiveStates(className, activeElement) {
|
|
7436
7649
|
const settingsMenu = document.getElementById('uvf-settings-menu');
|
|
@@ -7955,12 +8168,12 @@ export class WebPlayer extends BasePlayer {
|
|
|
7955
8168
|
}
|
|
7956
8169
|
}
|
|
7957
8170
|
if (this.video && !this.video.paused && !this.paymentSuccessful) {
|
|
7958
|
-
this.debugWarn('Unauthorized
|
|
8171
|
+
this.debugWarn('Unauthorized playback detected, pausing video');
|
|
7959
8172
|
try {
|
|
7960
8173
|
this.video.pause();
|
|
7961
8174
|
const freeDuration = Number(this.config.freeDuration || 0);
|
|
7962
|
-
if (freeDuration > 0) {
|
|
7963
|
-
this.
|
|
8175
|
+
if (freeDuration > 0 && isFinite(freeDuration)) {
|
|
8176
|
+
this.safeSetCurrentTime(freeDuration - 1);
|
|
7964
8177
|
}
|
|
7965
8178
|
}
|
|
7966
8179
|
catch (_) { }
|
|
@@ -7971,7 +8184,7 @@ export class WebPlayer extends BasePlayer {
|
|
|
7971
8184
|
this.debugError('Security violation detected - disabling video');
|
|
7972
8185
|
if (this.video) {
|
|
7973
8186
|
this.video.pause();
|
|
7974
|
-
this.
|
|
8187
|
+
this.safeSetCurrentTime(0);
|
|
7975
8188
|
this.video.src = '';
|
|
7976
8189
|
this.video.style.display = 'none';
|
|
7977
8190
|
}
|