unified-video-framework 1.4.176 → 1.4.178
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.178",
|
|
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",
|
|
@@ -54,6 +54,21 @@ export declare class WebPlayer extends BasePlayer {
|
|
|
54
54
|
private hasTriedButtonFallback;
|
|
55
55
|
private lastUserInteraction;
|
|
56
56
|
private showTimeTooltip;
|
|
57
|
+
private tapStartTime;
|
|
58
|
+
private tapStartX;
|
|
59
|
+
private tapStartY;
|
|
60
|
+
private lastTapTime;
|
|
61
|
+
private lastTapX;
|
|
62
|
+
private tapCount;
|
|
63
|
+
private longPressTimer;
|
|
64
|
+
private isLongPressing;
|
|
65
|
+
private longPressPlaybackRate;
|
|
66
|
+
private tapResetTimer;
|
|
67
|
+
private fastBackwardInterval;
|
|
68
|
+
private handleSingleTap;
|
|
69
|
+
private handleDoubleTap;
|
|
70
|
+
private handleLongPress;
|
|
71
|
+
private handleLongPressEnd;
|
|
57
72
|
private autoplayCapabilities;
|
|
58
73
|
private autoplayRetryPending;
|
|
59
74
|
private autoplayRetryAttempts;
|
|
@@ -150,6 +165,9 @@ export declare class WebPlayer extends BasePlayer {
|
|
|
150
165
|
private showControls;
|
|
151
166
|
private hideControls;
|
|
152
167
|
private scheduleHideControls;
|
|
168
|
+
private setupAdvancedTapHandling;
|
|
169
|
+
private startFastBackward;
|
|
170
|
+
private stopFastBackward;
|
|
153
171
|
private isFullscreen;
|
|
154
172
|
private setupFullscreenListeners;
|
|
155
173
|
private showShortcutIndicator;
|
|
@@ -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,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;IAwJ5C,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;IAiDxC,OAAO,CAAC,kBAAkB;IAyC1B,OAAO,CAAC,eAAe;IAsIvB,OAAO,CAAC,eAAe;IAQvB,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;IA6mGrB,OAAO,CAAC,uBAAuB;IA4DjC,OAAO,CAAC,oBAAoB;IA+U5B,OAAO,CAAC,2BAA2B;
|
|
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;IAwJ5C,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;IAiDxC,OAAO,CAAC,kBAAkB;IAyC1B,OAAO,CAAC,eAAe;IAsIvB,OAAO,CAAC,eAAe;IAQvB,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;IA6mGrB,OAAO,CAAC,uBAAuB;IA4DjC,OAAO,CAAC,oBAAoB;IA+U5B,OAAO,CAAC,2BAA2B;IA8dnC,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;IAwNhC,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,wBAAwB;IAyEhC,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;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;CAqD/B"}
|
|
@@ -52,6 +52,21 @@ export class WebPlayer extends BasePlayer {
|
|
|
52
52
|
this.hasTriedButtonFallback = false;
|
|
53
53
|
this.lastUserInteraction = 0;
|
|
54
54
|
this.showTimeTooltip = false;
|
|
55
|
+
this.tapStartTime = 0;
|
|
56
|
+
this.tapStartX = 0;
|
|
57
|
+
this.tapStartY = 0;
|
|
58
|
+
this.lastTapTime = 0;
|
|
59
|
+
this.lastTapX = 0;
|
|
60
|
+
this.tapCount = 0;
|
|
61
|
+
this.longPressTimer = null;
|
|
62
|
+
this.isLongPressing = false;
|
|
63
|
+
this.longPressPlaybackRate = 1;
|
|
64
|
+
this.tapResetTimer = null;
|
|
65
|
+
this.fastBackwardInterval = null;
|
|
66
|
+
this.handleSingleTap = () => { };
|
|
67
|
+
this.handleDoubleTap = () => { };
|
|
68
|
+
this.handleLongPress = () => { };
|
|
69
|
+
this.handleLongPressEnd = () => { };
|
|
55
70
|
this.autoplayCapabilities = {
|
|
56
71
|
canAutoplay: false,
|
|
57
72
|
canAutoplayMuted: false,
|
|
@@ -5357,24 +5372,11 @@ export class WebPlayer extends BasePlayer {
|
|
|
5357
5372
|
});
|
|
5358
5373
|
centerPlay?.addEventListener('click', () => this.togglePlayPause());
|
|
5359
5374
|
playPauseBtn?.addEventListener('click', () => this.togglePlayPause());
|
|
5360
|
-
this.
|
|
5361
|
-
|
|
5362
|
-
e.stopPropagation();
|
|
5363
|
-
const wrapper = this.container?.querySelector('.uvf-player-wrapper');
|
|
5364
|
-
if (wrapper?.classList.contains('controls-visible')) {
|
|
5365
|
-
this.hideControls();
|
|
5366
|
-
}
|
|
5367
|
-
else {
|
|
5368
|
-
this.showControls();
|
|
5369
|
-
if (this.state.isPlaying) {
|
|
5370
|
-
this.scheduleHideControls();
|
|
5371
|
-
}
|
|
5372
|
-
}
|
|
5373
|
-
}
|
|
5374
|
-
else {
|
|
5375
|
+
if (!this.isMobileDevice()) {
|
|
5376
|
+
this.video.addEventListener('click', (e) => {
|
|
5375
5377
|
this.togglePlayPause();
|
|
5376
|
-
}
|
|
5377
|
-
}
|
|
5378
|
+
});
|
|
5379
|
+
}
|
|
5378
5380
|
this.video.addEventListener('play', () => {
|
|
5379
5381
|
const playIcon = document.getElementById('uvf-play-icon');
|
|
5380
5382
|
const pauseIcon = document.getElementById('uvf-pause-icon');
|
|
@@ -5851,19 +5853,7 @@ export class WebPlayer extends BasePlayer {
|
|
|
5851
5853
|
this.playerWrapper?.focus();
|
|
5852
5854
|
this.lastUserInteraction = Date.now();
|
|
5853
5855
|
});
|
|
5854
|
-
this.
|
|
5855
|
-
const target = e.target;
|
|
5856
|
-
if (!target.closest('.uvf-controls')) {
|
|
5857
|
-
e.preventDefault();
|
|
5858
|
-
this.debugLog('Double-click detected - attempting fullscreen');
|
|
5859
|
-
if (!document.fullscreenElement) {
|
|
5860
|
-
this.triggerFullscreenButton();
|
|
5861
|
-
}
|
|
5862
|
-
else {
|
|
5863
|
-
this.exitFullscreen();
|
|
5864
|
-
}
|
|
5865
|
-
}
|
|
5866
|
-
});
|
|
5856
|
+
this.setupAdvancedTapHandling();
|
|
5867
5857
|
}
|
|
5868
5858
|
if (this.video) {
|
|
5869
5859
|
this.video.addEventListener('keydown', handleKeydown);
|
|
@@ -6336,6 +6326,180 @@ export class WebPlayer extends BasePlayer {
|
|
|
6336
6326
|
}
|
|
6337
6327
|
}, timeout);
|
|
6338
6328
|
}
|
|
6329
|
+
setupAdvancedTapHandling() {
|
|
6330
|
+
if (!this.video || !this.playerWrapper)
|
|
6331
|
+
return;
|
|
6332
|
+
const DOUBLE_TAP_DELAY = 300;
|
|
6333
|
+
const LONG_PRESS_DELAY = 500;
|
|
6334
|
+
const TAP_MOVEMENT_THRESHOLD = 10;
|
|
6335
|
+
const SKIP_SECONDS = 10;
|
|
6336
|
+
const FAST_PLAYBACK_RATE = 2;
|
|
6337
|
+
let inDoubleTapWindow = false;
|
|
6338
|
+
const videoElement = this.video;
|
|
6339
|
+
const wrapper = this.playerWrapper;
|
|
6340
|
+
const handleTouchStart = (e) => {
|
|
6341
|
+
const target = e.target;
|
|
6342
|
+
if (target.closest('.uvf-controls')) {
|
|
6343
|
+
return;
|
|
6344
|
+
}
|
|
6345
|
+
const touch = e.touches[0];
|
|
6346
|
+
this.tapStartTime = Date.now();
|
|
6347
|
+
this.tapStartX = touch.clientX;
|
|
6348
|
+
this.tapStartY = touch.clientY;
|
|
6349
|
+
this.longPressTimer = setTimeout(() => {
|
|
6350
|
+
this.isLongPressing = true;
|
|
6351
|
+
this.handleLongPress(this.tapStartX);
|
|
6352
|
+
}, LONG_PRESS_DELAY);
|
|
6353
|
+
};
|
|
6354
|
+
const handleTouchMove = (e) => {
|
|
6355
|
+
const touch = e.touches[0];
|
|
6356
|
+
const deltaX = Math.abs(touch.clientX - this.tapStartX);
|
|
6357
|
+
const deltaY = Math.abs(touch.clientY - this.tapStartY);
|
|
6358
|
+
if (deltaX > TAP_MOVEMENT_THRESHOLD || deltaY > TAP_MOVEMENT_THRESHOLD) {
|
|
6359
|
+
if (this.longPressTimer) {
|
|
6360
|
+
clearTimeout(this.longPressTimer);
|
|
6361
|
+
this.longPressTimer = null;
|
|
6362
|
+
}
|
|
6363
|
+
}
|
|
6364
|
+
};
|
|
6365
|
+
const handleTouchEnd = (e) => {
|
|
6366
|
+
if (this.longPressTimer) {
|
|
6367
|
+
clearTimeout(this.longPressTimer);
|
|
6368
|
+
this.longPressTimer = null;
|
|
6369
|
+
}
|
|
6370
|
+
if (this.isLongPressing) {
|
|
6371
|
+
this.handleLongPressEnd();
|
|
6372
|
+
this.isLongPressing = false;
|
|
6373
|
+
return;
|
|
6374
|
+
}
|
|
6375
|
+
const target = e.target;
|
|
6376
|
+
if (target.closest('.uvf-controls')) {
|
|
6377
|
+
return;
|
|
6378
|
+
}
|
|
6379
|
+
const touch = e.changedTouches[0];
|
|
6380
|
+
const touchEndX = touch.clientX;
|
|
6381
|
+
const touchEndY = touch.clientY;
|
|
6382
|
+
const tapDuration = Date.now() - this.tapStartTime;
|
|
6383
|
+
const deltaX = Math.abs(touchEndX - this.tapStartX);
|
|
6384
|
+
const deltaY = Math.abs(touchEndY - this.tapStartY);
|
|
6385
|
+
if (deltaX > TAP_MOVEMENT_THRESHOLD || deltaY > TAP_MOVEMENT_THRESHOLD) {
|
|
6386
|
+
return;
|
|
6387
|
+
}
|
|
6388
|
+
if (tapDuration > LONG_PRESS_DELAY) {
|
|
6389
|
+
return;
|
|
6390
|
+
}
|
|
6391
|
+
const now = Date.now();
|
|
6392
|
+
const timeSinceLastTap = now - this.lastTapTime;
|
|
6393
|
+
if (timeSinceLastTap < DOUBLE_TAP_DELAY && Math.abs(touchEndX - this.lastTapX) < 100) {
|
|
6394
|
+
this.tapCount = 2;
|
|
6395
|
+
if (this.tapResetTimer) {
|
|
6396
|
+
clearTimeout(this.tapResetTimer);
|
|
6397
|
+
this.tapResetTimer = null;
|
|
6398
|
+
}
|
|
6399
|
+
inDoubleTapWindow = false;
|
|
6400
|
+
this.handleDoubleTap(touchEndX);
|
|
6401
|
+
}
|
|
6402
|
+
else {
|
|
6403
|
+
this.tapCount = 1;
|
|
6404
|
+
this.lastTapTime = now;
|
|
6405
|
+
this.lastTapX = touchEndX;
|
|
6406
|
+
inDoubleTapWindow = true;
|
|
6407
|
+
this.handleSingleTap();
|
|
6408
|
+
if (this.tapResetTimer) {
|
|
6409
|
+
clearTimeout(this.tapResetTimer);
|
|
6410
|
+
}
|
|
6411
|
+
this.tapResetTimer = setTimeout(() => {
|
|
6412
|
+
this.tapCount = 0;
|
|
6413
|
+
inDoubleTapWindow = false;
|
|
6414
|
+
}, DOUBLE_TAP_DELAY);
|
|
6415
|
+
}
|
|
6416
|
+
};
|
|
6417
|
+
const handleSingleTap = () => {
|
|
6418
|
+
this.debugLog('Single tap detected - toggling controls');
|
|
6419
|
+
const wrapper = this.container?.querySelector('.uvf-player-wrapper');
|
|
6420
|
+
if (wrapper?.classList.contains('controls-visible')) {
|
|
6421
|
+
this.hideControls();
|
|
6422
|
+
}
|
|
6423
|
+
else {
|
|
6424
|
+
this.showControls();
|
|
6425
|
+
if (this.state.isPlaying) {
|
|
6426
|
+
this.scheduleHideControls();
|
|
6427
|
+
}
|
|
6428
|
+
}
|
|
6429
|
+
};
|
|
6430
|
+
const handleDoubleTap = (tapX) => {
|
|
6431
|
+
if (!this.video || !wrapper)
|
|
6432
|
+
return;
|
|
6433
|
+
const wrapperRect = wrapper.getBoundingClientRect();
|
|
6434
|
+
const tapPosition = tapX - wrapperRect.left;
|
|
6435
|
+
const wrapperWidth = wrapperRect.width;
|
|
6436
|
+
const isLeftSide = tapPosition < wrapperWidth / 2;
|
|
6437
|
+
if (isLeftSide) {
|
|
6438
|
+
const newTime = Math.max(0, this.video.currentTime - SKIP_SECONDS);
|
|
6439
|
+
this.seek(newTime);
|
|
6440
|
+
this.showShortcutIndicator(`-${SKIP_SECONDS}s`);
|
|
6441
|
+
this.debugLog('Double tap left - skip backward');
|
|
6442
|
+
}
|
|
6443
|
+
else {
|
|
6444
|
+
const newTime = Math.min(this.video.duration, this.video.currentTime + SKIP_SECONDS);
|
|
6445
|
+
this.seek(newTime);
|
|
6446
|
+
this.showShortcutIndicator(`+${SKIP_SECONDS}s`);
|
|
6447
|
+
this.debugLog('Double tap right - skip forward');
|
|
6448
|
+
}
|
|
6449
|
+
};
|
|
6450
|
+
const handleLongPress = (tapX) => {
|
|
6451
|
+
if (!this.video || !wrapper)
|
|
6452
|
+
return;
|
|
6453
|
+
const wrapperRect = wrapper.getBoundingClientRect();
|
|
6454
|
+
const tapPosition = tapX - wrapperRect.left;
|
|
6455
|
+
const wrapperWidth = wrapperRect.width;
|
|
6456
|
+
const isLeftSide = tapPosition < wrapperWidth / 2;
|
|
6457
|
+
this.longPressPlaybackRate = this.video.playbackRate;
|
|
6458
|
+
if (isLeftSide) {
|
|
6459
|
+
const skipIcon = `<svg viewBox="0 0 24 24" style="width:24px;height:24px;display:inline-block;vertical-align:middle;margin-right:4px"><path d="M11 18V6l-8.5 6 8.5 6zm.5-6l8.5 6V6l-8.5 6z" stroke="currentColor" stroke-width="0.5" fill="currentColor"/></svg>`;
|
|
6460
|
+
this.showShortcutIndicator(skipIcon + '2x');
|
|
6461
|
+
this.debugLog('Long press left - fast backward');
|
|
6462
|
+
this.startFastBackward();
|
|
6463
|
+
}
|
|
6464
|
+
else {
|
|
6465
|
+
this.video.playbackRate = FAST_PLAYBACK_RATE;
|
|
6466
|
+
const skipIcon = `<svg viewBox="0 0 24 24" style="width:24px;height:24px;display:inline-block;vertical-align:middle;margin-right:4px;transform:scaleX(-1)"><path d="M11 18V6l-8.5 6 8.5 6zm.5-6l8.5 6V6l-8.5 6z" stroke="currentColor" stroke-width="0.5" fill="currentColor"/></svg>`;
|
|
6467
|
+
this.showShortcutIndicator(skipIcon + '2x');
|
|
6468
|
+
this.debugLog('Long press right - fast forward');
|
|
6469
|
+
}
|
|
6470
|
+
};
|
|
6471
|
+
const handleLongPressEnd = () => {
|
|
6472
|
+
if (!this.video)
|
|
6473
|
+
return;
|
|
6474
|
+
this.stopFastBackward();
|
|
6475
|
+
this.video.playbackRate = this.longPressPlaybackRate || 1;
|
|
6476
|
+
this.debugLog('Long press ended - restored playback rate');
|
|
6477
|
+
};
|
|
6478
|
+
this.handleSingleTap = handleSingleTap.bind(this);
|
|
6479
|
+
this.handleDoubleTap = handleDoubleTap.bind(this);
|
|
6480
|
+
this.handleLongPress = handleLongPress.bind(this);
|
|
6481
|
+
this.handleLongPressEnd = handleLongPressEnd.bind(this);
|
|
6482
|
+
videoElement.addEventListener('touchstart', handleTouchStart, { passive: true });
|
|
6483
|
+
videoElement.addEventListener('touchmove', handleTouchMove, { passive: true });
|
|
6484
|
+
videoElement.addEventListener('touchend', handleTouchEnd, { passive: true });
|
|
6485
|
+
this.debugLog('Advanced tap handling initialized');
|
|
6486
|
+
}
|
|
6487
|
+
startFastBackward() {
|
|
6488
|
+
if (!this.video || this.fastBackwardInterval)
|
|
6489
|
+
return;
|
|
6490
|
+
this.fastBackwardInterval = setInterval(() => {
|
|
6491
|
+
if (this.video) {
|
|
6492
|
+
const newTime = Math.max(0, this.video.currentTime - 0.1);
|
|
6493
|
+
this.video.currentTime = newTime;
|
|
6494
|
+
}
|
|
6495
|
+
}, 50);
|
|
6496
|
+
}
|
|
6497
|
+
stopFastBackward() {
|
|
6498
|
+
if (this.fastBackwardInterval) {
|
|
6499
|
+
clearInterval(this.fastBackwardInterval);
|
|
6500
|
+
this.fastBackwardInterval = null;
|
|
6501
|
+
}
|
|
6502
|
+
}
|
|
6339
6503
|
isFullscreen() {
|
|
6340
6504
|
return !!(document.fullscreenElement ||
|
|
6341
6505
|
document.webkitFullscreenElement ||
|