unified-video-framework 1.4.196 → 1.4.198
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.198",
|
|
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",
|
|
@@ -101,6 +101,8 @@ export declare class WebPlayer extends BasePlayer {
|
|
|
101
101
|
private setupAutoplayRetry;
|
|
102
102
|
private showPlayOverlay;
|
|
103
103
|
private hidePlayOverlay;
|
|
104
|
+
private showUnmuteButton;
|
|
105
|
+
private hideUnmuteButton;
|
|
104
106
|
private updateTimeTooltip;
|
|
105
107
|
private hideTimeTooltip;
|
|
106
108
|
private setupUserInteractionTracking;
|
|
@@ -226,6 +228,7 @@ export declare class WebPlayer extends BasePlayer {
|
|
|
226
228
|
private setSubtitle;
|
|
227
229
|
private _updateCastActiveTracks;
|
|
228
230
|
private onCastButtonClick;
|
|
231
|
+
private showAirPlayPicker;
|
|
229
232
|
private stopCasting;
|
|
230
233
|
private initCast;
|
|
231
234
|
private shareVideo;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebPlayer.d.ts","sourceRoot":"","sources":["../src/WebPlayer.ts"],"names":[],"mappings":"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
|
|
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,wBAAwB;IAmIhC,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,oBAAoB;IAYtB,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAwDtC,OAAO,CAAC,gBAAgB;YAcV,OAAO;IAuErB,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;IAmDxC,OAAO,CAAC,kBAAkB;IAyC1B,OAAO,CAAC,eAAe;IAsIvB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,gBAAgB;IAgHxB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,4BAA4B;IAsB9B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAyD3B,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;IA6GhC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAkF/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;IAmjFrB,OAAO,CAAC,uBAAuB;IA4DjC,OAAO,CAAC,oBAAoB;IAqV5B,OAAO,CAAC,2BAA2B;IA2enC,SAAS,CAAC,sBAAsB,IAAI,IAAI;IAsKxC,SAAS,CAAC,cAAc,IAAI,IAAI;IAmKzB,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;IAexB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,qBAAqB;YAYf,wBAAwB;YAuCxB,iBAAiB;IAmB/B,OAAO,CAAC,kBAAkB;IAyB1B,OAAO,CAAC,oBAAoB;IA4B5B,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,wBAAwB;IAiOhC,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,wBAAwB;IA4EhC,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;IAuB5C,OAAO,CAAC,mBAAmB;IAoF3B,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,wBAAwB;IAqBhC,OAAO,CAAC,gBAAgB;IAiBX,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBpD,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBrD,iBAAiB,IAAI,YAAY,GAAG,IAAI;IAWxC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAYtC,WAAW,IAAI,YAAY,EAAE;IAW7B,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAW5D,WAAW,IAAI,OAAO;IAOtB,WAAW,IAAI,aAAa,GAAG,IAAI;IAOnC,eAAe,IAAI,OAAO,EAAE;IAO5B,eAAe,IAAI,cAAc,EAAE;IAOnC,qBAAqB,IAAI,OAAO,GAAG,IAAI;IAOvC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAgBtC,cAAc,IAAI,OAAO,GAAG,IAAI;IAUhC,kBAAkB,IAAI,OAAO,GAAG,IAAI;IAQpC,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;IAyB1B,OAAO,CAAC,qBAAqB;IAoH7B,OAAO,CAAC,wBAAwB;IA+ChC,OAAO,CAAC,wBAAwB;IA6BhC,OAAO,CAAC,2BAA2B;IAqDnC,OAAO,CAAC,sBAAsB;IAwB9B,OAAO,CAAC,gBAAgB;IAsBxB,OAAO,CAAC,6BAA6B;IA0BrC,OAAO,CAAC,0BAA0B;IAgBlC,OAAO,CAAC,2BAA2B;IAWnC,OAAO,CAAC,sBAAsB;IA4B9B,OAAO,CAAC,WAAW;IAgCnB,OAAO,CAAC,uBAAuB;IAqB/B,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,iBAAiB;IAsBzB,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;CAqD/B"}
|
|
@@ -159,6 +159,8 @@ export class WebPlayer extends BasePlayer {
|
|
|
159
159
|
this.video.loop = this.config.loop ?? false;
|
|
160
160
|
this.video.playsInline = this.config.playsInline ?? true;
|
|
161
161
|
this.video.preload = this.config.preload ?? 'metadata';
|
|
162
|
+
this.video.webkitAllowsAirPlay = true;
|
|
163
|
+
this.video.setAttribute('x-webkit-airplay', 'allow');
|
|
162
164
|
if (this.config.crossOrigin) {
|
|
163
165
|
this.video.crossOrigin = this.config.crossOrigin;
|
|
164
166
|
}
|
|
@@ -712,6 +714,7 @@ export class WebPlayer extends BasePlayer {
|
|
|
712
714
|
try {
|
|
713
715
|
await this.play();
|
|
714
716
|
this.debugLog('✅ Muted autoplay successful');
|
|
717
|
+
this.showUnmuteButton();
|
|
715
718
|
return true;
|
|
716
719
|
}
|
|
717
720
|
catch (error) {
|
|
@@ -874,6 +877,110 @@ export class WebPlayer extends BasePlayer {
|
|
|
874
877
|
overlay.remove();
|
|
875
878
|
}
|
|
876
879
|
}
|
|
880
|
+
showUnmuteButton() {
|
|
881
|
+
this.hideUnmuteButton();
|
|
882
|
+
this.debugLog('🔇 Showing unmute button - video autoplaying muted');
|
|
883
|
+
const unmuteBtn = document.createElement('button');
|
|
884
|
+
unmuteBtn.id = 'uvf-unmute-btn';
|
|
885
|
+
unmuteBtn.className = 'uvf-unmute-btn';
|
|
886
|
+
unmuteBtn.setAttribute('aria-label', 'Tap to unmute');
|
|
887
|
+
unmuteBtn.innerHTML = `
|
|
888
|
+
<svg viewBox="0 0 24 24" class="uvf-unmute-icon">
|
|
889
|
+
<path d="M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z"/>
|
|
890
|
+
</svg>
|
|
891
|
+
<span class="uvf-unmute-text">Tap to unmute</span>
|
|
892
|
+
`;
|
|
893
|
+
unmuteBtn.addEventListener('click', (e) => {
|
|
894
|
+
e.stopPropagation();
|
|
895
|
+
if (this.video) {
|
|
896
|
+
this.video.muted = false;
|
|
897
|
+
this.debugLog('🔊 Video unmuted by user');
|
|
898
|
+
this.hideUnmuteButton();
|
|
899
|
+
}
|
|
900
|
+
});
|
|
901
|
+
const style = document.createElement('style');
|
|
902
|
+
style.textContent = `
|
|
903
|
+
.uvf-unmute-btn {
|
|
904
|
+
position: absolute !important;
|
|
905
|
+
bottom: 80px !important;
|
|
906
|
+
left: 20px !important;
|
|
907
|
+
z-index: 1000 !important;
|
|
908
|
+
display: flex !important;
|
|
909
|
+
align-items: center !important;
|
|
910
|
+
gap: 8px !important;
|
|
911
|
+
padding: 12px 16px !important;
|
|
912
|
+
background: rgba(0, 0, 0, 0.8) !important;
|
|
913
|
+
border: none !important;
|
|
914
|
+
border-radius: 4px !important;
|
|
915
|
+
color: white !important;
|
|
916
|
+
font-size: 14px !important;
|
|
917
|
+
font-weight: 500 !important;
|
|
918
|
+
cursor: pointer !important;
|
|
919
|
+
transition: all 0.2s ease !important;
|
|
920
|
+
backdrop-filter: blur(10px) !important;
|
|
921
|
+
-webkit-backdrop-filter: blur(10px) !important;
|
|
922
|
+
animation: uvf-unmute-pulse 2s ease-in-out infinite !important;
|
|
923
|
+
}
|
|
924
|
+
|
|
925
|
+
.uvf-unmute-btn:hover {
|
|
926
|
+
background: rgba(0, 0, 0, 0.9) !important;
|
|
927
|
+
transform: scale(1.05) !important;
|
|
928
|
+
}
|
|
929
|
+
|
|
930
|
+
.uvf-unmute-btn:active {
|
|
931
|
+
transform: scale(0.95) !important;
|
|
932
|
+
}
|
|
933
|
+
|
|
934
|
+
.uvf-unmute-icon {
|
|
935
|
+
width: 20px !important;
|
|
936
|
+
height: 20px !important;
|
|
937
|
+
fill: white !important;
|
|
938
|
+
}
|
|
939
|
+
|
|
940
|
+
.uvf-unmute-text {
|
|
941
|
+
white-space: nowrap !important;
|
|
942
|
+
}
|
|
943
|
+
|
|
944
|
+
@keyframes uvf-unmute-pulse {
|
|
945
|
+
0%, 100% {
|
|
946
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3) !important;
|
|
947
|
+
}
|
|
948
|
+
50% {
|
|
949
|
+
box-shadow: 0 2px 16px rgba(255, 255, 255, 0.2) !important;
|
|
950
|
+
}
|
|
951
|
+
}
|
|
952
|
+
|
|
953
|
+
/* Mobile responsive */
|
|
954
|
+
@media (max-width: 767px) {
|
|
955
|
+
.uvf-unmute-btn {
|
|
956
|
+
bottom: 70px !important;
|
|
957
|
+
left: 50% !important;
|
|
958
|
+
transform: translateX(-50%) !important;
|
|
959
|
+
padding: 10px 14px !important;
|
|
960
|
+
font-size: 13px !important;
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
.uvf-unmute-btn:hover {
|
|
964
|
+
transform: translateX(-50%) scale(1.05) !important;
|
|
965
|
+
}
|
|
966
|
+
}
|
|
967
|
+
`;
|
|
968
|
+
if (!document.getElementById('uvf-unmute-styles')) {
|
|
969
|
+
style.id = 'uvf-unmute-styles';
|
|
970
|
+
document.head.appendChild(style);
|
|
971
|
+
}
|
|
972
|
+
if (this.playerWrapper) {
|
|
973
|
+
this.playerWrapper.appendChild(unmuteBtn);
|
|
974
|
+
this.debugLog('✅ Unmute button added to player');
|
|
975
|
+
}
|
|
976
|
+
}
|
|
977
|
+
hideUnmuteButton() {
|
|
978
|
+
const unmuteBtn = document.getElementById('uvf-unmute-btn');
|
|
979
|
+
if (unmuteBtn) {
|
|
980
|
+
unmuteBtn.remove();
|
|
981
|
+
this.debugLog('Unmute button removed');
|
|
982
|
+
}
|
|
983
|
+
}
|
|
877
984
|
updateTimeTooltip(e) {
|
|
878
985
|
const progressBar = document.getElementById('uvf-progress-bar');
|
|
879
986
|
const tooltip = document.getElementById('uvf-time-tooltip');
|
|
@@ -3371,9 +3478,19 @@ export class WebPlayer extends BasePlayer {
|
|
|
3371
3478
|
}
|
|
3372
3479
|
|
|
3373
3480
|
.uvf-top-btn:hover {
|
|
3481
|
+
width: 40px;
|
|
3482
|
+
height: 40px;
|
|
3483
|
+
backdrop-filter: blur(10px);
|
|
3484
|
+
border: 1px solid rgba(255,255,255,0.2);
|
|
3485
|
+
border-radius: 50%;
|
|
3374
3486
|
background: rgba(255,255,255,0.2);
|
|
3375
3487
|
transform: scale(1.1);
|
|
3376
3488
|
box-shadow: 0 0 20px rgba(255,255,255,0.3);
|
|
3489
|
+
cursor: pointer;
|
|
3490
|
+
display: flex;
|
|
3491
|
+
align-items: center;
|
|
3492
|
+
justify-content: center;
|
|
3493
|
+
transition: all 0.3s ease;
|
|
3377
3494
|
}
|
|
3378
3495
|
|
|
3379
3496
|
.uvf-top-btn.cast-grey {
|
|
@@ -3638,18 +3755,6 @@ export class WebPlayer extends BasePlayer {
|
|
|
3638
3755
|
height: 24px;
|
|
3639
3756
|
}
|
|
3640
3757
|
|
|
3641
|
-
.uvf-player-wrapper.uvf-fullscreen .uvf-top-btn {
|
|
3642
|
-
width: 40px;
|
|
3643
|
-
height: 40px;
|
|
3644
|
-
min-width: 40px;
|
|
3645
|
-
min-height: 40px;
|
|
3646
|
-
}
|
|
3647
|
-
|
|
3648
|
-
.uvf-player-wrapper.uvf-fullscreen .uvf-top-btn svg {
|
|
3649
|
-
width: 20px;
|
|
3650
|
-
height: 20px;
|
|
3651
|
-
}
|
|
3652
|
-
|
|
3653
3758
|
.uvf-player-wrapper.uvf-fullscreen .uvf-time-display {
|
|
3654
3759
|
font-size: 14px;
|
|
3655
3760
|
padding: 0 10px;
|
|
@@ -3766,11 +3871,6 @@ export class WebPlayer extends BasePlayer {
|
|
|
3766
3871
|
display: flex !important;
|
|
3767
3872
|
}
|
|
3768
3873
|
|
|
3769
|
-
.uvf-top-btn {
|
|
3770
|
-
display: flex !important;
|
|
3771
|
-
border-radius: 50% !important;
|
|
3772
|
-
}
|
|
3773
|
-
|
|
3774
3874
|
/* Show top bar when controls are visible or on hover */
|
|
3775
3875
|
.uvf-player-wrapper:hover .uvf-top-bar,
|
|
3776
3876
|
.uvf-player-wrapper.controls-visible .uvf-top-bar {
|
|
@@ -3874,18 +3974,6 @@ export class WebPlayer extends BasePlayer {
|
|
|
3874
3974
|
gap: 6px !important;
|
|
3875
3975
|
}
|
|
3876
3976
|
|
|
3877
|
-
.uvf-top-btn {
|
|
3878
|
-
width: 40px;
|
|
3879
|
-
height: 40px;
|
|
3880
|
-
min-width: 40px;
|
|
3881
|
-
min-height: 40px;
|
|
3882
|
-
}
|
|
3883
|
-
|
|
3884
|
-
.uvf-top-btn svg {
|
|
3885
|
-
width: 18px;
|
|
3886
|
-
height: 18px;
|
|
3887
|
-
}
|
|
3888
|
-
|
|
3889
3977
|
/* Title bar within top bar - landscape */
|
|
3890
3978
|
.uvf-top-bar .uvf-title-bar {
|
|
3891
3979
|
padding: 0;
|
|
@@ -3971,19 +4059,6 @@ export class WebPlayer extends BasePlayer {
|
|
|
3971
4059
|
height: 23px;
|
|
3972
4060
|
}
|
|
3973
4061
|
|
|
3974
|
-
/* Tablet top controls */
|
|
3975
|
-
.uvf-top-btn {
|
|
3976
|
-
width: 42px;
|
|
3977
|
-
height: 42px;
|
|
3978
|
-
min-width: 42px;
|
|
3979
|
-
min-height: 42px;
|
|
3980
|
-
}
|
|
3981
|
-
|
|
3982
|
-
.uvf-top-btn svg {
|
|
3983
|
-
width: 19px;
|
|
3984
|
-
height: 19px;
|
|
3985
|
-
}
|
|
3986
|
-
|
|
3987
4062
|
/* Top bar for tablet */
|
|
3988
4063
|
.uvf-top-bar {
|
|
3989
4064
|
padding: 16px;
|
|
@@ -4122,23 +4197,6 @@ export class WebPlayer extends BasePlayer {
|
|
|
4122
4197
|
height: 24px;
|
|
4123
4198
|
}
|
|
4124
4199
|
|
|
4125
|
-
/* Enhanced top controls */
|
|
4126
|
-
.uvf-top-btn {
|
|
4127
|
-
width: 40px;
|
|
4128
|
-
height: 40px;
|
|
4129
|
-
transition: all 0.2s cubic-bezier(0.4, 0.0, 0.2, 1);
|
|
4130
|
-
}
|
|
4131
|
-
|
|
4132
|
-
.uvf-top-btn:hover {
|
|
4133
|
-
transform: scale(1.1);
|
|
4134
|
-
background: var(--uvf-overlay-medium);
|
|
4135
|
-
}
|
|
4136
|
-
|
|
4137
|
-
.uvf-top-btn svg {
|
|
4138
|
-
width: 20px;
|
|
4139
|
-
height: 20px;
|
|
4140
|
-
}
|
|
4141
|
-
|
|
4142
4200
|
/* Top bar for desktop 1024px+ */
|
|
4143
4201
|
.uvf-top-bar {
|
|
4144
4202
|
padding: 20px;
|
|
@@ -4258,16 +4316,6 @@ export class WebPlayer extends BasePlayer {
|
|
|
4258
4316
|
height: 28px;
|
|
4259
4317
|
}
|
|
4260
4318
|
|
|
4261
|
-
.uvf-top-btn {
|
|
4262
|
-
width: 44px;
|
|
4263
|
-
height: 44px;
|
|
4264
|
-
}
|
|
4265
|
-
|
|
4266
|
-
.uvf-top-btn svg {
|
|
4267
|
-
width: 22px;
|
|
4268
|
-
height: 22px;
|
|
4269
|
-
}
|
|
4270
|
-
|
|
4271
4319
|
.uvf-center-play-btn {
|
|
4272
4320
|
width: clamp(64px, 10vw, 76px);
|
|
4273
4321
|
height: clamp(64px, 10vw, 76px);
|
|
@@ -4308,8 +4356,7 @@ export class WebPlayer extends BasePlayer {
|
|
|
4308
4356
|
/* High-DPI display optimizations */
|
|
4309
4357
|
@media screen and (-webkit-min-device-pixel-ratio: 2),
|
|
4310
4358
|
screen and (min-resolution: 192dpi) {
|
|
4311
|
-
.uvf-control-btn
|
|
4312
|
-
.uvf-top-btn {
|
|
4359
|
+
.uvf-control-btn {
|
|
4313
4360
|
image-rendering: -webkit-optimize-contrast;
|
|
4314
4361
|
image-rendering: crisp-edges;
|
|
4315
4362
|
}
|
|
@@ -4326,7 +4373,6 @@ export class WebPlayer extends BasePlayer {
|
|
|
4326
4373
|
/* Reduced motion accessibility */
|
|
4327
4374
|
@media (prefers-reduced-motion: reduce) {
|
|
4328
4375
|
.uvf-control-btn,
|
|
4329
|
-
.uvf-top-btn,
|
|
4330
4376
|
.uvf-center-play-btn,
|
|
4331
4377
|
.uvf-progress-handle,
|
|
4332
4378
|
.uvf-volume-slider,
|
|
@@ -4335,7 +4381,6 @@ export class WebPlayer extends BasePlayer {
|
|
|
4335
4381
|
}
|
|
4336
4382
|
|
|
4337
4383
|
.uvf-control-btn:hover,
|
|
4338
|
-
.uvf-top-btn:hover,
|
|
4339
4384
|
.uvf-center-play-btn:hover {
|
|
4340
4385
|
transform: none !important;
|
|
4341
4386
|
}
|
|
@@ -4361,11 +4406,6 @@ export class WebPlayer extends BasePlayer {
|
|
|
4361
4406
|
border-radius: 50%
|
|
4362
4407
|
}
|
|
4363
4408
|
|
|
4364
|
-
.uvf-top-btn {
|
|
4365
|
-
min-width: 44px;
|
|
4366
|
-
min-height: 44px;
|
|
4367
|
-
}
|
|
4368
|
-
|
|
4369
4409
|
.uvf-progress-bar {
|
|
4370
4410
|
height: 3px;
|
|
4371
4411
|
}
|
|
@@ -4384,22 +4424,21 @@ export class WebPlayer extends BasePlayer {
|
|
|
4384
4424
|
background: var(--uvf-overlay-medium);
|
|
4385
4425
|
transform: scale(0.95);
|
|
4386
4426
|
}
|
|
4387
|
-
|
|
4388
|
-
.uvf-top-btn:active {
|
|
4389
|
-
background: var(--uvf-overlay-medium);
|
|
4390
|
-
transform: scale(0.95);
|
|
4391
|
-
}
|
|
4392
4427
|
}
|
|
4393
4428
|
|
|
4394
4429
|
/* Keyboard navigation and accessibility */
|
|
4395
4430
|
.uvf-control-btn:focus-visible,
|
|
4396
|
-
.uvf-top-btn:focus-visible,
|
|
4397
4431
|
.uvf-center-play-btn:focus-visible {
|
|
4398
4432
|
outline: 2px solid var(--uvf-primary-color, #007bff);
|
|
4399
4433
|
outline-offset: 2px;
|
|
4400
4434
|
background: var(--uvf-overlay-medium);
|
|
4401
4435
|
}
|
|
4402
4436
|
|
|
4437
|
+
.uvf-top-btn:focus-visible {
|
|
4438
|
+
outline: 2px solid var(--uvf-primary-color, #007bff);
|
|
4439
|
+
outline-offset: 2px;
|
|
4440
|
+
}
|
|
4441
|
+
|
|
4403
4442
|
.uvf-progress-bar-wrapper:focus-visible {
|
|
4404
4443
|
outline: 2px solid var(--uvf-primary-color, #007bff);
|
|
4405
4444
|
outline-offset: 2px;
|
|
@@ -4431,7 +4470,10 @@ export class WebPlayer extends BasePlayer {
|
|
|
4431
4470
|
|
|
4432
4471
|
/* High contrast mode support */
|
|
4433
4472
|
@media (prefers-contrast: high) {
|
|
4434
|
-
.uvf-control-btn
|
|
4473
|
+
.uvf-control-btn {
|
|
4474
|
+
border: 1px solid;
|
|
4475
|
+
}
|
|
4476
|
+
|
|
4435
4477
|
.uvf-top-btn {
|
|
4436
4478
|
border: 1px solid;
|
|
4437
4479
|
}
|
|
@@ -5069,6 +5111,7 @@ export class WebPlayer extends BasePlayer {
|
|
|
5069
5111
|
else {
|
|
5070
5112
|
volumeIcon.style.display = 'block';
|
|
5071
5113
|
muteIcon.style.display = 'none';
|
|
5114
|
+
this.hideUnmuteButton();
|
|
5072
5115
|
}
|
|
5073
5116
|
}
|
|
5074
5117
|
});
|
|
@@ -5206,6 +5249,15 @@ export class WebPlayer extends BasePlayer {
|
|
|
5206
5249
|
const castBtn = document.getElementById('uvf-cast-btn');
|
|
5207
5250
|
const stopCastBtn = document.getElementById('uvf-stop-cast-btn');
|
|
5208
5251
|
const shareBtn = document.getElementById('uvf-share-btn');
|
|
5252
|
+
if (this.isIOSDevice() && castBtn) {
|
|
5253
|
+
castBtn.innerHTML = `
|
|
5254
|
+
<svg viewBox="0 0 24 24">
|
|
5255
|
+
<path d="M1 18h6v-2H1v2zm0-4h12v-2H1v2zm16.5 4.5c-1.25 0-2.45-.5-3.35-1.41L12 18.5l2.09 2.09c1.8 1.8 4.72 1.8 6.52 0 1.8-1.8 1.8-4.72 0-6.52L12 5.5 3.39 14.11c-1.8 1.8-1.8 4.72 0 6.52.9.9 2.1 1.41 3.35 1.41l6.76-6.76M12 7.91l6.89 6.89c.78.78.78 2.05 0 2.83-.78.78-2.05.78-2.83 0L12 13.57 7.94 17.63c-.78.78-2.05.78-2.83 0-.78-.78-.78-2.05 0-2.83L12 7.91z"/>
|
|
5256
|
+
</svg>
|
|
5257
|
+
`;
|
|
5258
|
+
castBtn.setAttribute('title', 'AirPlay');
|
|
5259
|
+
castBtn.setAttribute('aria-label', 'AirPlay');
|
|
5260
|
+
}
|
|
5209
5261
|
castBtn?.addEventListener('click', () => this.onCastButtonClick());
|
|
5210
5262
|
stopCastBtn?.addEventListener('click', () => this.stopCasting());
|
|
5211
5263
|
shareBtn?.addEventListener('click', () => this.shareVideo());
|
|
@@ -7156,6 +7208,10 @@ export class WebPlayer extends BasePlayer {
|
|
|
7156
7208
|
catch (_) { }
|
|
7157
7209
|
}
|
|
7158
7210
|
onCastButtonClick() {
|
|
7211
|
+
if (this.isIOSDevice()) {
|
|
7212
|
+
this.showAirPlayPicker();
|
|
7213
|
+
return;
|
|
7214
|
+
}
|
|
7159
7215
|
try {
|
|
7160
7216
|
const castNs = window.cast;
|
|
7161
7217
|
if (this.isCasting && castNs && castNs.framework) {
|
|
@@ -7167,6 +7223,27 @@ export class WebPlayer extends BasePlayer {
|
|
|
7167
7223
|
catch (_) { }
|
|
7168
7224
|
this.initCast();
|
|
7169
7225
|
}
|
|
7226
|
+
showAirPlayPicker() {
|
|
7227
|
+
if (!this.video) {
|
|
7228
|
+
this.showNotification('Video not ready');
|
|
7229
|
+
return;
|
|
7230
|
+
}
|
|
7231
|
+
const videoElement = this.video;
|
|
7232
|
+
if (typeof videoElement.webkitShowPlaybackTargetPicker === 'function') {
|
|
7233
|
+
try {
|
|
7234
|
+
videoElement.webkitShowPlaybackTargetPicker();
|
|
7235
|
+
this.debugLog('AirPlay picker shown');
|
|
7236
|
+
}
|
|
7237
|
+
catch (error) {
|
|
7238
|
+
this.debugWarn('Failed to show AirPlay picker:', error.message);
|
|
7239
|
+
this.showNotification('AirPlay not available');
|
|
7240
|
+
}
|
|
7241
|
+
}
|
|
7242
|
+
else {
|
|
7243
|
+
this.debugWarn('AirPlay not supported on this device');
|
|
7244
|
+
this.showNotification('AirPlay not supported');
|
|
7245
|
+
}
|
|
7246
|
+
}
|
|
7170
7247
|
stopCasting() {
|
|
7171
7248
|
try {
|
|
7172
7249
|
const castNs = window.cast;
|