@gcorevideo/player 2.28.29 → 2.28.35

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.
@@ -11,5 +11,6 @@ Configuration options for the [ClosedCaptions](./player.closedcaptions.md) plugi
11
11
  ```typescript
12
12
  export type ClosedCaptionsPluginSettings = {
13
13
  language?: string;
14
+ mode?: 'native' | 'custom';
14
15
  };
15
16
  ```
@@ -1163,6 +1163,15 @@ Preferred streaming media delivery protocol
1163
1163
 
1164
1164
 
1165
1165
 
1166
+ </td></tr>
1167
+ <tr><td>
1168
+
1169
+ [VTTCueInfo](./player.vttcueinfo.md)
1170
+
1171
+
1172
+ </td><td>
1173
+
1174
+
1166
1175
  </td></tr>
1167
1176
  <tr><td>
1168
1177
 
@@ -274,6 +274,22 @@ Mounts a media control element at a specific location
274
274
  Set the initial volume, which is preserved when playback is interrupted by an advertisement
275
275
 
276
276
 
277
+ </td></tr>
278
+ <tr><td>
279
+
280
+ [setKeepVisible(keepVisible)](./player.mediacontrol.setkeepvisible.md)
281
+
282
+
283
+ </td><td>
284
+
285
+
286
+ </td><td>
287
+
288
+ Set or reset the keep visibility state
289
+
290
+ Keep visibility state controls whether the media control is hidden automatically after a delay, which is a default behaviour.
291
+
292
+
277
293
  </td></tr>
278
294
  <tr><td>
279
295
 
@@ -15,7 +15,7 @@ export declare class Thumbnails extends UICorePlugin
15
15
 
16
16
  ## Remarks
17
17
 
18
- The plugin needs specially crafted VTT file with a thumbnail sprite sheet to work. The VTT consist of timestamp records followed by a thumbnail area
18
+ The plugin needs specially crafted VTT file with a thumbnail sprite sheet to work. The VTT cues refer to a thumbnail, an area within the sprite sheet, to associate with a time span.
19
19
 
20
20
  Configuration options - [ThumbnailsPluginSettings](./player.thumbnailspluginsettings.md)
21
21
 
@@ -1 +1 @@
1
- {"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../src/Player.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../src/Player.ts"],"names":[],"mappings":"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"}
@@ -190,8 +190,6 @@ export declare class MediaControl extends UICorePlugin {
190
190
  'touchmove .bar-container[data-seekbar]': string;
191
191
  'mouseleave .bar-container[data-seekbar]': string;
192
192
  'touchend .bar-container[data-seekbar]': string;
193
- 'mouseenter .media-control-layer[data-controls]': string;
194
- 'mouseleave .media-control-layer[data-controls]': string;
195
193
  };
196
194
  get currentSeekPos(): number;
197
195
  /**
@@ -249,6 +247,9 @@ export declare class MediaControl extends UICorePlugin {
249
247
  private mousemoveOnVolumeBar;
250
248
  private playerResize;
251
249
  private togglePlayPause;
250
+ private play;
251
+ private pause;
252
+ private stop;
252
253
  private togglePlayStop;
253
254
  private startSeekDrag;
254
255
  private startVolumeDrag;
@@ -274,8 +275,6 @@ export declare class MediaControl extends UICorePlugin {
274
275
  private renderSeekBar;
275
276
  private drawDurationAndPosition;
276
277
  private seek;
277
- private setUserKeepVisible;
278
- private resetUserKeepVisible;
279
278
  private isVisible;
280
279
  private show;
281
280
  private hide;
@@ -334,8 +333,7 @@ export declare class MediaControl extends UICorePlugin {
334
333
  /**
335
334
  * Set or reset the keep visibility state
336
335
  *
337
- * Keep visibility state controls whether the media control is hidden automatically after a delay.
338
- * Keep visibility prevents the the auto-hide behaviour
336
+ * Keep visibility state controls whether the media control is hidden automatically after a delay, which is a default behaviour.
339
337
  *
340
338
  * @param keepVisible - The state
341
339
  */
@@ -363,6 +361,7 @@ export declare class MediaControl extends UICorePlugin {
363
361
  * @internal
364
362
  */
365
363
  destroy(): import("@clappr/core").UIObject;
364
+ private cancelTimers;
366
365
  private cancelRenderTimer;
367
366
  private configure;
368
367
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"MediaControl.d.ts","sourceRoot":"","sources":["../../../src/plugins/media-control/MediaControl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MediaControl.d.ts","sourceRoot":"","sources":["../../../src/plugins/media-control/MediaControl.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,8 @@ import { Kibo } from '../kibo/index.js';
11
11
  import { CLAPPR_VERSION } from '../../build.js';
12
12
  import { getPageX } from '../utils.js';
13
13
  import { fullscreenEnabled, isFullscreen } from '../utils/fullscreen.js';
14
+ import { isMobile } from '../utils/mobile.js';
15
+ import { mediaControlClickaway } from '../../utils/clickaway.js';
14
16
  import '../../../assets/media-control/media-control.scss';
15
17
  import mediaControlHTML from '../../../assets/media-control/media-control.ejs';
16
18
  import playIcon from '../../../assets/icons/new/play.svg';
@@ -20,7 +22,6 @@ import volumeMaxIcon from '../../../assets/icons/new/volume-max.svg';
20
22
  import volumeOffIcon from '../../../assets/icons/new/volume-off.svg';
21
23
  import fullscreenOffIcon from '../../../assets/icons/new/fullscreen-off.svg';
22
24
  import fullscreenOnIcon from '../../../assets/icons/new/fullscreen-on.svg';
23
- import { mediaControlClickaway } from '../../utils/clickaway.js';
24
25
  const STANDARD_MEDIA_CONTROL_ELEMENTS = [
25
26
  'duration',
26
27
  'fullscreen',
@@ -231,8 +232,6 @@ export class MediaControl extends UICorePlugin {
231
232
  'touchmove .bar-container[data-seekbar]': 'mousemoveOnSeekBar',
232
233
  'mouseleave .bar-container[data-seekbar]': 'mouseleaveOnSeekBar',
233
234
  'touchend .bar-container[data-seekbar]': 'mouseleaveOnSeekBar',
234
- 'mouseenter .media-control-layer[data-controls]': 'setUserKeepVisible',
235
- 'mouseleave .media-control-layer[data-controls]': 'resetUserKeepVisible',
236
235
  };
237
236
  }
238
237
  get currentSeekPos() {
@@ -314,7 +313,6 @@ export class MediaControl extends UICorePlugin {
314
313
  this.listenTo(this.core.activeContainer, Events.CONTAINER_PAUSE, this.changeTogglePlay);
315
314
  this.listenTo(this.core.activeContainer, Events.CONTAINER_STOP, this.changeTogglePlay);
316
315
  this.listenTo(this.core.activeContainer, Events.CONTAINER_DBLCLICK, this.toggleFullscreen);
317
- this.listenTo(this.core.activeContainer, Events.CONTAINER_CLICK, () => this.clickaway(this.core.activeContainer.$el[0]));
318
316
  this.listenTo(this.core.activeContainer, Events.CONTAINER_TIMEUPDATE, this.onTimeUpdate);
319
317
  this.listenTo(this.core.activeContainer, Events.CONTAINER_PROGRESS, this.updateProgressBar);
320
318
  this.listenTo(this.core.activeContainer, Events.CONTAINER_SETTINGSUPDATE, this.updateSettings);
@@ -328,12 +326,10 @@ export class MediaControl extends UICorePlugin {
328
326
  this.listenTo(this.core.activeContainer, Events.CONTAINER_LOADEDMETADATA, this.onLoadedMetadata);
329
327
  this.listenTo(this.core, Events.CONTAINER_DESTROYED, () => {
330
328
  this.cancelRenderTimer();
329
+ this.setKeepVisible(false);
331
330
  });
332
331
  this.listenTo(this.core.activeContainer, Events.CONTAINER_MOUSE_ENTER, this.show);
333
332
  this.listenTo(this.core.activeContainer, Events.CONTAINER_MOUSE_LEAVE, this.delayHide);
334
- this.listenTo(this.core.activeContainer, Events.CONTAINER_DESTROYED, () => {
335
- this.clickaway(null);
336
- });
337
333
  }
338
334
  /**
339
335
  * Hides the media control UI
@@ -464,7 +460,7 @@ export class MediaControl extends UICorePlugin {
464
460
  this.$playPauseToggle?.append(playIcon);
465
461
  this.$playStopToggle?.append(playIcon);
466
462
  this.trigger(Events.MEDIACONTROL_NOTPLAYING);
467
- if (Browser.isMobile) {
463
+ if (isMobile()) {
468
464
  this.show();
469
465
  }
470
466
  }
@@ -510,14 +506,14 @@ export class MediaControl extends UICorePlugin {
510
506
  width: this.container.$el.width(),
511
507
  height: this.container.$el.height(),
512
508
  hideVolumeBar: this.options.hideVolumeBar,
513
- isMobile: Browser.isMobile,
509
+ isMobile: isMobile(),
514
510
  });
515
511
  try {
516
512
  const skinWidth = this.container.$el.width() || size.width;
517
513
  if (skinWidth <= 370 || this.options.hideVolumeBar) {
518
514
  this.$el.addClass('w370');
519
515
  }
520
- if (skinWidth <= 270 && !Browser.isMobile) {
516
+ if (skinWidth <= 270 && !isMobile()) {
521
517
  this.verticalVolume = true;
522
518
  this.$el.addClass('w270');
523
519
  }
@@ -530,6 +526,15 @@ export class MediaControl extends UICorePlugin {
530
526
  this.container.isPlaying() ? this.container.pause() : this.container.play();
531
527
  return false;
532
528
  }
529
+ play() {
530
+ this.container && this.container.play();
531
+ }
532
+ pause() {
533
+ this.container && this.container.pause();
534
+ }
535
+ stop() {
536
+ this.container && this.container.stop();
537
+ }
533
538
  togglePlayStop() {
534
539
  this.container.isPlaying()
535
540
  ? this.container.stop({ ui: true })
@@ -630,11 +635,11 @@ export class MediaControl extends UICorePlugin {
630
635
  }
631
636
  }
632
637
  toggleFullscreen() {
633
- if (!Browser.isMobile) {
638
+ if (!isMobile()) {
634
639
  this.trigger(Events.MEDIACONTROL_FULLSCREEN, this.name);
635
640
  this.core.activeContainer.fullscreen();
636
641
  this.core.toggleFullscreen();
637
- this.resetUserKeepVisible();
642
+ // this.resetUserKeepVisible()
638
643
  }
639
644
  }
640
645
  onActiveContainerChanged() {
@@ -755,13 +760,6 @@ export class MediaControl extends UICorePlugin {
755
760
  this.core.activeContainer && this.core.activeContainer.seekPercentage(pos);
756
761
  this.setSeekPercentage(pos);
757
762
  }
758
- setUserKeepVisible(e) {
759
- this.userKeepVisible = true;
760
- this.clickaway(this.core.activeContainer.$el[0]);
761
- }
762
- resetUserKeepVisible = (e) => {
763
- this.userKeepVisible = false;
764
- };
765
763
  isVisible() {
766
764
  return !this.$el.hasClass('media-control-hide');
767
765
  }
@@ -769,7 +767,6 @@ export class MediaControl extends UICorePlugin {
769
767
  if (this.disabled || this.options.disableControlPanel) {
770
768
  return;
771
769
  }
772
- const timeout = DEFAULT_HIDE_DELAY;
773
770
  const mousePointerMoved = event &&
774
771
  event.clientX !== this.lastMouseX &&
775
772
  event.clientY !== this.lastMouseY;
@@ -778,26 +775,25 @@ export class MediaControl extends UICorePlugin {
778
775
  clearTimeout(this.hideId);
779
776
  this.hideId = null;
780
777
  }
778
+ this.hideId = setTimeout(() => this.hide(), DEFAULT_HIDE_DELAY);
781
779
  this.$el.show();
782
780
  this.trigger(Events.MEDIACONTROL_SHOW, this.name);
783
781
  this.core.activeContainer?.trigger(Events.CONTAINER_MEDIACONTROL_SHOW, this.name);
784
782
  this.$el.removeClass('media-control-hide');
785
- this.hideId = setTimeout(() => this.hide(), timeout);
786
783
  if (event) {
787
784
  this.lastMouseX = event.clientX;
788
785
  this.lastMouseY = event.clientY;
789
786
  }
790
787
  }
791
- const showing = true;
792
- this.updateCursorStyle(showing);
788
+ this.updateCursorStyle(true);
793
789
  }
794
790
  hide(delay = 0) {
795
791
  if (!this.isVisible()) {
796
792
  return;
797
793
  }
798
- const timeout = delay || 2000;
799
794
  if (this.hideId !== null) {
800
795
  clearTimeout(this.hideId);
796
+ this.hideId = null;
801
797
  }
802
798
  if (!this.disabled && this.options.hideMediaControl === false) {
803
799
  return;
@@ -806,7 +802,7 @@ export class MediaControl extends UICorePlugin {
806
802
  const hasDraggingAction = this.draggingSeekBar || this.draggingVolumeBar;
807
803
  if (!this.disabled &&
808
804
  (delay || hasKeepVisibleRequested || hasDraggingAction)) {
809
- this.hideId = setTimeout(() => this.hide(), timeout);
805
+ this.hideId = setTimeout(() => this.hide(), delay || 2000);
810
806
  }
811
807
  else {
812
808
  if (!this.options.controlsDontHide || isFullscreen(this.container.el)) {
@@ -941,19 +937,13 @@ export class MediaControl extends UICorePlugin {
941
937
  /**
942
938
  * Set or reset the keep visibility state
943
939
  *
944
- * Keep visibility state controls whether the media control is hidden automatically after a delay.
945
- * Keep visibility prevents the the auto-hide behaviour
940
+ * Keep visibility state controls whether the media control is hidden automatically after a delay, which is a default behaviour.
946
941
  *
947
942
  * @param keepVisible - The state
948
943
  */
949
944
  setKeepVisible(keepVisible) {
950
945
  this.keepVisible = keepVisible;
951
- if (keepVisible) {
952
- this.clickaway(this.core.activeContainer.$el[0]);
953
- }
954
- else {
955
- this.clickaway(null);
956
- }
946
+ this.clickaway(keepVisible ? this.core.activeContainer.$el[0] : null);
957
947
  }
958
948
  getMountParent(name) {
959
949
  switch (name) {
@@ -1034,7 +1024,7 @@ export class MediaControl extends UICorePlugin {
1034
1024
  });
1035
1025
  }
1036
1026
  bindKeyEvents() {
1037
- if (Browser.isMobile || this.options.disableKeyboardShortcuts) {
1027
+ if (isMobile() || this.options.disableKeyboardShortcuts) {
1038
1028
  return;
1039
1029
  }
1040
1030
  this.unbindKeyEvents();
@@ -1121,6 +1111,7 @@ export class MediaControl extends UICorePlugin {
1121
1111
  * @internal
1122
1112
  */
1123
1113
  destroy() {
1114
+ this.cancelTimers();
1124
1115
  this.cancelRenderTimer();
1125
1116
  $(document).unbind('mouseup', this.stopDrag);
1126
1117
  $(document).unbind('mousemove', this.updateDrag);
@@ -1129,6 +1120,17 @@ export class MediaControl extends UICorePlugin {
1129
1120
  this.unbindKeyEvents();
1130
1121
  return super.destroy();
1131
1122
  }
1123
+ cancelTimers() {
1124
+ if (this.hideId !== null) {
1125
+ clearTimeout(this.hideId);
1126
+ this.hideId = null;
1127
+ }
1128
+ if (this.hideVolumeId !== null) {
1129
+ clearTimeout(this.hideVolumeId);
1130
+ this.hideVolumeId = null;
1131
+ }
1132
+ this.cancelRenderTimer();
1133
+ }
1132
1134
  cancelRenderTimer() {
1133
1135
  if (this.renderTimerId) {
1134
1136
  clearTimeout(this.renderTimerId);
@@ -1158,7 +1160,7 @@ export class MediaControl extends UICorePlugin {
1158
1160
  }
1159
1161
  // Video volume cannot be changed with Safari on mobile devices
1160
1162
  // Display mute/unmute icon only if Safari version >= 10
1161
- if (Browser.isSafari && Browser.isMobile) {
1163
+ if (Browser.isSafari && isMobile()) {
1162
1164
  if (Browser.version < 10) {
1163
1165
  this.$volumeContainer?.css({ display: 'none' });
1164
1166
  }
@@ -1175,7 +1177,7 @@ export class MediaControl extends UICorePlugin {
1175
1177
  setTimeout(() => {
1176
1178
  !this.settings.seekEnabled &&
1177
1179
  this.$seekBarContainer?.addClass('seek-disabled');
1178
- !Browser.isMobile &&
1180
+ !isMobile() &&
1179
1181
  !this.options.disableKeyboardShortcuts &&
1180
1182
  this.bindKeyEvents();
1181
1183
  this.playerResize({
@@ -1199,6 +1201,7 @@ export class MediaControl extends UICorePlugin {
1199
1201
  this.container.fullscreen();
1200
1202
  // TODO: fix after it full screen will be fixed on iOS
1201
1203
  if (Browser.isiOS) {
1204
+ // TODO use isFullscreen utility function
1202
1205
  if (this.core.isFullscreen()) {
1203
1206
  Fullscreen.cancelFullscreen(this.core.el);
1204
1207
  }
@@ -1209,7 +1212,6 @@ export class MediaControl extends UICorePlugin {
1209
1212
  else {
1210
1213
  this.core.toggleFullscreen();
1211
1214
  }
1212
- this.resetUserKeepVisible();
1213
1215
  }
1214
1216
  static getPageX(event) {
1215
1217
  return getPageX(event);
@@ -1254,7 +1256,7 @@ export class MediaControl extends UICorePlugin {
1254
1256
  delayHide() {
1255
1257
  this.hide(this.options.hideMediaControlDelay || DEFAULT_HIDE_DELAY);
1256
1258
  }
1257
- clickaway = mediaControlClickaway(() => this.resetUserKeepVisible());
1259
+ clickaway = mediaControlClickaway(() => this.setKeepVisible(false));
1258
1260
  }
1259
1261
  MediaControl.extend = function (properties) {
1260
1262
  return extend(MediaControl, properties);
@@ -11,6 +11,9 @@ export type ClosedCaptionsPluginSettings = {
11
11
  language?: string;
12
12
  /**
13
13
  * Whether to use builtin subtitles.
14
+ *
15
+ * native: video player element renders the subtitles
16
+ * custom: plugin manages the subtitles rendition
14
17
  */
15
18
  mode?: 'native' | 'custom';
16
19
  };
@@ -50,9 +53,10 @@ export type ClosedCaptionsPluginSettings = {
50
53
  * ```
51
54
  */
52
55
  export declare class ClosedCaptions extends UICorePlugin {
53
- private isPreselectedApplied;
56
+ private isSelectedApplied;
54
57
  private active;
55
58
  private open;
59
+ private userSelectedItemId;
56
60
  private track;
57
61
  private tracks;
58
62
  private $line;
@@ -116,7 +120,7 @@ export declare class ClosedCaptions extends UICorePlugin {
116
120
  private findById;
117
121
  private selectItem;
118
122
  private onItemSelect;
119
- private applyPreselectedSubtitles;
123
+ private applySelectedSubtitles;
120
124
  private hideMenu;
121
125
  private toggleMenu;
122
126
  private setKeepVisible;
@@ -1 +1 @@
1
- {"version":3,"file":"ClosedCaptions.d.ts","sourceRoot":"","sources":["../../../src/plugins/subtitles/ClosedCaptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAwB,MAAM,cAAc,CAAA;AAOzE,OAAO,sCAAsC,CAAA;AAkB7C;;;GAGG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAC3B,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,oBAAoB,CAAQ;IAEpC,OAAO,CAAC,MAAM,CAAQ;IAEtB,OAAO,CAAC,IAAI,CAAQ;IAEpB,OAAO,CAAC,KAAK,CAA6B;IAE1C,OAAO,CAAC,MAAM,CAAsB;IAEpC,OAAO,CAAC,KAAK,CAA2B;IAExC;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;IACH,MAAM,KAAK,OAAO,WAEjB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAyB;IAEhE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAuB;IAE3D;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACH,IAAa,MAAM;;;MAKlB;IAED,OAAO,KAAK,mBAAmB,GAI9B;IAED,OAAO,CAAC,qBAAqB;IAO7B;;OAEG;IACM,UAAU;IAWnB,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,kBAAkB;IAiD1B,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,aAAa;IAmCrB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,iBAAiB;IAqBzB;;OAEG;IACH,IAAI;IAYJ;;OAEG;IACH,IAAI;IAiBJ,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACM,MAAM;IA+Bf,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,yBAAyB;IAejC,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,yBAAyB;IAiBjC,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,KAAK;IAOb,OAAO,KAAK,kBAAkB,GAO7B;IAED,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,YAAY,QAEvB;IAED,OAAO,KAAK,aAAa,QAMxB;IAED,OAAO,CAAC,SAAS,CAA+C;CACjE"}
1
+ {"version":3,"file":"ClosedCaptions.d.ts","sourceRoot":"","sources":["../../../src/plugins/subtitles/ClosedCaptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAwB,MAAM,cAAc,CAAA;AAOzE,OAAO,sCAAsC,CAAA;AAmB7C;;;GAGG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAC3B,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,iBAAiB,CAAQ;IAEjC,OAAO,CAAC,MAAM,CAAQ;IAEtB,OAAO,CAAC,IAAI,CAAQ;IAEpB,OAAO,CAAC,kBAAkB,CAAa;IAEvC,OAAO,CAAC,KAAK,CAA6B;IAE1C,OAAO,CAAC,MAAM,CAAsB;IAEpC,OAAO,CAAC,KAAK,CAA2B;IAExC;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;IACH,MAAM,KAAK,OAAO,WAEjB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAyB;IAEhE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAuB;IAE3D;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACH,IAAa,MAAM;;;MAKlB;IAED,OAAO,KAAK,mBAAmB,GAI9B;IAED,OAAO,CAAC,qBAAqB;IAO7B;;OAEG;IACM,UAAU;IAWnB,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,kBAAkB;IAiD1B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,aAAa;IAmCrB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,iBAAiB;IAqBzB;;OAEG;IACH,IAAI;IAYJ;;OAEG;IACH,IAAI;IAiBJ,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACM,MAAM;IA+Bf,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,sBAAsB;IAuB9B,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,yBAAyB;IAiBjC,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,KAAK;IAOb,OAAO,KAAK,kBAAkB,GAO7B;IAED,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,YAAY,QAEvB;IAED,OAAO,KAAK,aAAa,QAMxB;IAED,OAAO,CAAC,SAAS,CAA+C;CACjE"}
@@ -1,5 +1,5 @@
1
1
  import { Events, UICorePlugin, Browser, template, $ } from '@clappr/core';
2
- import { reportError, trace } from '@gcorevideo/utils';
2
+ import { reportError } from '@gcorevideo/utils';
3
3
  import assert from 'assert';
4
4
  import { CLAPPR_VERSION } from '../../build.js';
5
5
  import '../../../assets/subtitles/style.scss';
@@ -11,7 +11,8 @@ import { isFullscreen } from '../utils/fullscreen.js';
11
11
  import { ExtendedEvents } from '../media-control/MediaControl.js';
12
12
  import { mediaControlClickaway } from '../../utils/clickaway.js';
13
13
  const VERSION = '2.19.14';
14
- const LOCAL_STORAGE_CC_ID = 'gplayer.plugins.cc.selected';
14
+ // TODO review
15
+ // const LOCAL_STORAGE_CC_ID = 'gplayer.plugins.cc.selected'
15
16
  const T = 'plugins.cc';
16
17
  /**
17
18
  * `PLUGIN` that provides a UI to select the subtitles when available.
@@ -49,9 +50,10 @@ const T = 'plugins.cc';
49
50
  * ```
50
51
  */
51
52
  export class ClosedCaptions extends UICorePlugin {
52
- isPreselectedApplied = false;
53
+ isSelectedApplied = false;
53
54
  active = false;
54
55
  open = false;
56
+ userSelectedItemId = -1;
55
57
  track = null;
56
58
  tracks = [];
57
59
  $line = null;
@@ -149,10 +151,9 @@ export class ClosedCaptions extends UICorePlugin {
149
151
  video.classList.remove('ios-fullscreen');
150
152
  }
151
153
  });
152
- this.isPreselectedApplied = false;
154
+ this.isSelectedApplied = false;
153
155
  }
154
156
  onPlaybackReady() {
155
- trace(`${T} onPlaybackReady`);
156
157
  this.core.activePlayback.oncueenter = (e) => {
157
158
  this.setSubtitleText(e.text);
158
159
  };
@@ -173,7 +174,7 @@ export class ClosedCaptions extends UICorePlugin {
173
174
  this.activateTrack(id);
174
175
  }
175
176
  activateTrack(id) {
176
- if (['dash', 'hls'].includes(this.core.activePlayback?.name)) {
177
+ if (this.core.activePlayback && ['dash', 'hls'].includes(this.core.activePlayback.name)) {
177
178
  this.core.activePlayback.setTextTrack(id);
178
179
  return;
179
180
  }
@@ -211,7 +212,7 @@ export class ClosedCaptions extends UICorePlugin {
211
212
  try {
212
213
  // TODO ensure to apply only once
213
214
  this.currentTracks = this.core.activePlayback.closedCaptionsTracks;
214
- this.applyPreselectedSubtitles();
215
+ this.applySelectedSubtitles();
215
216
  this.render();
216
217
  }
217
218
  catch (error) {
@@ -318,22 +319,36 @@ export class ClosedCaptions extends UICorePlugin {
318
319
  }
319
320
  onItemSelect(event) {
320
321
  // event.target does not exist for some reason in tests
321
- const id = (event.target ?? event.currentTarget).dataset?.item ??
322
- '-1';
323
- localStorage.setItem(LOCAL_STORAGE_CC_ID, id); // TODO store language instead?
324
- this.selectItem(this.findById(Number(id)));
322
+ const id = Number((event.target ?? event.currentTarget).dataset?.item ??
323
+ '-1');
324
+ // TODO review, make configurable, and emit event in addition
325
+ // localStorage.setItem(LOCAL_STORAGE_CC_ID, id) // TODO store language instead?
326
+ this.userSelectedItemId = id;
327
+ this.selectItem(this.findById(id));
325
328
  this.hideMenu();
326
329
  return false;
327
330
  }
328
- applyPreselectedSubtitles() {
329
- if (!this.isPreselectedApplied) {
330
- this.isPreselectedApplied = true;
331
- // if the language is undefined, then let the engine decide
332
- // to hide the subtitles forcefully, set the language to 'none'
333
- setTimeout(() => {
334
- this.selectItem(this.tracks.find((t) => this.isPreselectedLanguage(t.track.language)) ?? null);
335
- }, 0);
331
+ applySelectedSubtitles() {
332
+ if (this.isSelectedApplied) {
333
+ return;
334
+ }
335
+ this.isSelectedApplied = true;
336
+ // If user selected a language, activate that
337
+ // Otherwise, if there is no configured language, then let the engine decide
338
+ // To hide the subtitles initially forcefully, set the language to 'none'
339
+ let matcher;
340
+ if (this.userSelectedItemId !== -1) {
341
+ matcher = (track) => track.id === this.userSelectedItemId;
342
+ }
343
+ else if (this.preselectedLanguage) {
344
+ matcher = (track) => this.isPreselectedLanguage(track.track.language);
345
+ }
346
+ else {
347
+ return;
336
348
  }
349
+ setTimeout(() => {
350
+ this.selectItem(this.tracks.find(matcher) ?? null);
351
+ }, 0);
337
352
  }
338
353
  hideMenu() {
339
354
  this.open = false;
@@ -367,10 +382,9 @@ export class ClosedCaptions extends UICorePlugin {
367
382
  return this.$el.find('#gplayer-cc-menu li'); // TODO fix semantically
368
383
  }
369
384
  selectSubtitles() {
370
- const trackId = this.currentTrack?.id ?? -1;
371
- // TODO find out if this is needed
372
- this.core.activePlayback.closedCaptionsTrackId = trackId;
373
- // this.core.activePlayback.closedCaptionsTrackId = -1
385
+ if (this.currentTrack) {
386
+ this.core.activePlayback.closedCaptionsTrackId = this.currentTrack.id;
387
+ }
374
388
  }
375
389
  getSubtitleText(track) {
376
390
  const currentTime = this.core.activePlayback?.getCurrentTime() ?? 0;
@@ -0,0 +1,2 @@
1
+ export declare function isMobile(): boolean;
2
+ //# sourceMappingURL=mobile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobile.d.ts","sourceRoot":"","sources":["../../../src/plugins/utils/mobile.ts"],"names":[],"mappings":"AAEA,wBAAgB,QAAQ,YAEvB"}
@@ -0,0 +1,4 @@
1
+ import { Browser } from '@clappr/core';
2
+ export function isMobile() {
3
+ return Browser.isMobile;
4
+ }
@@ -15,6 +15,7 @@ export declare function createMockCore(options?: Record<string, unknown>, contai
15
15
  configure: import("vitest").Mock<(...args: any[]) => any>;
16
16
  getPlaybackType: import("vitest").Mock<(...args: any[]) => any>;
17
17
  getPlugin: import("vitest").Mock<(...args: any[]) => any>;
18
+ isFullscreen: import("vitest").Mock<(...args: any[]) => any>;
18
19
  load: import("vitest").Mock<(...args: any[]) => any>;
19
20
  trigger: <T extends string | symbol>(event: T, ...args: any[]) => boolean;
20
21
  };
@@ -1 +1 @@
1
- {"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../src/testUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,MAAM,MAAM,eAAe,CAAA;AAGlC,wBAAgB,cAAc,CAC5B,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,SAAS,GAAE,GAAkC;;;;;;;;;;;;;;;;;EAsB9C;AAED,wBAAgB,gBAAgB;;;EAK/B;AAED,wBAAgB,mBAAmB;;;;;;EAKlC;AAED,wBAAgB,kBAAkB,CAChC,IAAI,SAAS,EACb,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuCtC;AAED,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,QAAQ,GAAE,GAAgD;;;;;;;;;;;;;;;;;;;;;;;;;EA8B3D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,gBAyB/C;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,OAe7C"}
1
+ {"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../src/testUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,MAAM,MAAM,eAAe,CAAA;AAGlC,wBAAgB,cAAc,CAC5B,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,SAAS,GAAE,GAAkC;;;;;;;;;;;;;;;;;;EAuB9C;AAED,wBAAgB,gBAAgB;;;EAK/B;AAED,wBAAgB,mBAAmB;;;;;;EAKlC;AAED,wBAAgB,kBAAkB,CAChC,IAAI,SAAS,EACb,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuCtC;AAED,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,QAAQ,GAAE,GAAgD;;;;;;;;;;;;;;;;;;;;;;;;;EA8B3D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,gBAyB/C;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,OAe7C"}
package/lib/testUtils.js CHANGED
@@ -19,6 +19,7 @@ export function createMockCore(options = {}, container = createMockContainer(opt
19
19
  configure: vi.fn(),
20
20
  getPlaybackType: vi.fn(),
21
21
  getPlugin: vi.fn(),
22
+ isFullscreen: vi.fn().mockReturnValue(false),
22
23
  load: vi.fn(),
23
24
  trigger: emitter.emit,
24
25
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gcorevideo/player",
3
- "version": "2.28.29",
3
+ "version": "2.28.35",
4
4
  "description": "Gcore JavaScript video player",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -66,5 +66,8 @@
66
66
  "human-format": "^1.2.1",
67
67
  "mousetrap": "^1.6.5",
68
68
  "videojs-vtt.js": "^0.15.5"
69
+ },
70
+ "overrides": {
71
+ "ua-parser-js": "^1.0.0"
69
72
  }
70
73
  }
package/src/Player.ts CHANGED
@@ -32,18 +32,18 @@ import { SourceController } from './plugins/source-controller/SourceController.j
32
32
  */
33
33
  export type PlayerEventParams<E extends PlayerEvent> =
34
34
  E extends PlayerEvent.Seek
35
- ? [number]
36
- : E extends PlayerEvent.VolumeUpdate
37
- ? [number]
38
- : E extends PlayerEvent.TimeUpdate
39
- ? [TimePosition]
40
- : E extends PlayerEvent.Resize
41
- ? [{ width: number; height: number }]
42
- : E extends PlayerEvent.Fullscreen
43
- ? [boolean]
44
- : E extends PlayerEvent.Error
45
- ? [PlaybackError]
46
- : []
35
+ ? [number]
36
+ : E extends PlayerEvent.VolumeUpdate
37
+ ? [number]
38
+ : E extends PlayerEvent.TimeUpdate
39
+ ? [TimePosition]
40
+ : E extends PlayerEvent.Resize
41
+ ? [{ width: number; height: number }]
42
+ : E extends PlayerEvent.Fullscreen
43
+ ? [boolean]
44
+ : E extends PlayerEvent.Error
45
+ ? [PlaybackError]
46
+ : []
47
47
 
48
48
  /**
49
49
  * Type of a listener callback function for a player event.