@gcorevideo/player 2.21.3 → 2.21.4

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.
Files changed (89) hide show
  1. package/assets/audio-selector/style.scss +1 -1
  2. package/assets/audio-selector/track-selector.ejs +3 -3
  3. package/assets/bottom-gear/bottomgear.ejs +2 -2
  4. package/assets/media-control/container.scss +1 -1
  5. package/assets/media-control/media-control.ejs +1 -6
  6. package/assets/media-control/media-control.scss +6 -4
  7. package/assets/media-control/width270.scss +1 -1
  8. package/assets/media-control/width370.scss +4 -4
  9. package/assets/playback-rate/button.ejs +2 -2
  10. package/assets/playback-rate/list.ejs +4 -4
  11. package/assets/subtitles/combobox.ejs +5 -5
  12. package/assets/subtitles/string.ejs +1 -1
  13. package/assets/subtitles/style.scss +2 -2
  14. package/dist/core.js +2 -1
  15. package/dist/index.css +972 -967
  16. package/dist/index.js +126 -106
  17. package/dist/player.d.ts +141 -119
  18. package/dist/plugins/index.css +801 -796
  19. package/dist/plugins/index.js +119 -104
  20. package/docs/api/player.bottomgear.getelement.md +2 -2
  21. package/docs/api/player.bottomgear.md +1 -1
  22. package/docs/api/{player.subtitles.hide.md → player.closedcaptions.hide.md} +2 -2
  23. package/docs/api/{player.subtitles.md → player.closedcaptions.md} +11 -11
  24. package/docs/api/{player.subtitles.show.md → player.closedcaptions.show.md} +2 -2
  25. package/docs/api/player.closedcaptionspluginsettings.md +13 -0
  26. package/docs/api/player.gearitemelement.md +6 -4
  27. package/docs/api/player.gearoptionsitem.md +16 -0
  28. package/docs/api/player.md +48 -12
  29. package/docs/api/player.mediacontrol.putelement.md +2 -2
  30. package/docs/api/player.mediacontrolelement.md +1 -1
  31. package/docs/api/player.playbackrate.md +1 -1
  32. package/docs/api/player.subtitlespluginsettings.md +18 -0
  33. package/docs/api/player.texttrackitem.id.md +11 -0
  34. package/docs/api/player.texttrackitem.md +87 -0
  35. package/docs/api/player.texttrackitem.name.md +11 -0
  36. package/docs/api/player.texttrackitem.track.md +11 -0
  37. package/lib/index.d.ts +1 -1
  38. package/lib/index.js +1 -1
  39. package/lib/index.plugins.d.ts +2 -1
  40. package/lib/index.plugins.d.ts.map +1 -1
  41. package/lib/index.plugins.js +2 -1
  42. package/lib/playback/dash-playback/DashPlayback.d.ts.map +1 -1
  43. package/lib/playback/dash-playback/DashPlayback.js +1 -0
  44. package/lib/plugins/audio-selector/AudioSelector.d.ts +2 -3
  45. package/lib/plugins/audio-selector/AudioSelector.d.ts.map +1 -1
  46. package/lib/plugins/audio-selector/AudioSelector.js +6 -7
  47. package/lib/plugins/bottom-gear/BottomGear.d.ts +6 -2
  48. package/lib/plugins/bottom-gear/BottomGear.d.ts.map +1 -1
  49. package/lib/plugins/bottom-gear/BottomGear.js +2 -1
  50. package/lib/plugins/media-control/MediaControl.d.ts +5 -5
  51. package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
  52. package/lib/plugins/media-control/MediaControl.js +46 -39
  53. package/lib/plugins/picture-in-picture/PictureInPicture.d.ts +1 -0
  54. package/lib/plugins/picture-in-picture/PictureInPicture.d.ts.map +1 -1
  55. package/lib/plugins/picture-in-picture/PictureInPicture.js +4 -4
  56. package/lib/plugins/playback-rate/PlaybackRate.d.ts +0 -1
  57. package/lib/plugins/playback-rate/PlaybackRate.d.ts.map +1 -1
  58. package/lib/plugins/playback-rate/PlaybackRate.js +23 -14
  59. package/lib/plugins/subtitles/ClosedCaptions.d.ts +118 -0
  60. package/lib/plugins/subtitles/ClosedCaptions.d.ts.map +1 -0
  61. package/lib/plugins/subtitles/ClosedCaptions.js +348 -0
  62. package/lib/plugins/subtitles/Subtitles.d.ts +12 -9
  63. package/lib/plugins/subtitles/Subtitles.d.ts.map +1 -1
  64. package/lib/plugins/subtitles/Subtitles.js +31 -32
  65. package/lib/testUtils.d.ts +22 -18
  66. package/lib/testUtils.d.ts.map +1 -1
  67. package/lib/testUtils.js +22 -36
  68. package/package.json +1 -1
  69. package/src/index.plugins.ts +2 -1
  70. package/src/index.ts +1 -1
  71. package/src/playback/dash-playback/DashPlayback.ts +1 -0
  72. package/src/plugins/audio-selector/AudioSelector.ts +9 -8
  73. package/src/plugins/bottom-gear/BottomGear.ts +11 -4
  74. package/src/plugins/bottom-gear/__tests__/BottomGear.test.ts +1 -1
  75. package/src/plugins/bottom-gear/__tests__/__snapshots__/BottomGear.test.ts.snap +2 -2
  76. package/src/plugins/media-control/MediaControl.ts +53 -46
  77. package/src/plugins/media-control/__tests__/MediaControl.test.ts +43 -0
  78. package/src/plugins/media-control/__tests__/__snapshots__/MediaControl.test.ts.snap +175 -0
  79. package/src/plugins/picture-in-picture/PictureInPicture.ts +5 -5
  80. package/src/plugins/playback-rate/PlaybackRate.ts +142 -100
  81. package/src/plugins/playback-rate/__tests__/PlaybackRate.test.ts +65 -0
  82. package/src/plugins/playback-rate/__tests__/__snapshots__/PlaybackRate.test.ts.snap +11 -0
  83. package/src/plugins/subtitles/{Subtitles.ts → ClosedCaptions.ts} +42 -34
  84. package/src/plugins/subtitles/__tests__/ClosedCaptions.test.ts +58 -0
  85. package/src/plugins/subtitles/__tests__/__snapshots__/ClosedCaptions.test.ts.snap +25 -0
  86. package/src/testUtils.ts +22 -36
  87. package/temp/player.api.json +269 -89
  88. package/tsconfig.tsbuildinfo +1 -1
  89. package/src/plugins/index.ts +0 -39
@@ -5,7 +5,7 @@ import '../../../assets/media-control/media-control.scss';
5
5
  * Media control elements, mount points for additional plugins
6
6
  * @beta
7
7
  */
8
- export type MediaControlElement = 'audioTracksSelector' | 'clipText' | 'gear' | 'pip' | 'playbackRate' | 'seekBarContainer' | 'subtitlesSelector';
8
+ export type MediaControlElement = 'audiotracks' | 'clipText' | 'gear' | 'pip' | 'playbackRate' | 'seekBarContainer' | 'cc';
9
9
  /**
10
10
  * Custom events emitted by the plugins to communicate with one another
11
11
  * @beta
@@ -23,7 +23,6 @@ export declare enum MediaControlEvents {
23
23
  * The methods exposed are to be used by the other plugins that extend the media control UI.
24
24
  */
25
25
  export declare class MediaControl extends UICorePlugin {
26
- private advertisementPlaying;
27
26
  private buttonsColor;
28
27
  private currentDurationValue;
29
28
  private currentPositionValue;
@@ -165,7 +164,7 @@ export declare class MediaControl extends UICorePlugin {
165
164
  */
166
165
  setInitialVolume(): void;
167
166
  private onVolumeChanged;
168
- private onLoadedMetadataOnVideoTag;
167
+ private onLoadedMetadata;
169
168
  private updateVolumeUI;
170
169
  private changeTogglePlay;
171
170
  private mousemoveOnSeekBar;
@@ -207,7 +206,7 @@ export declare class MediaControl extends UICorePlugin {
207
206
  private show;
208
207
  private hide;
209
208
  private updateCursorStyle;
210
- private settingsUpdate;
209
+ private updateSettings;
211
210
  private highDefinitionUpdate;
212
211
  private createCachedElements;
213
212
  /**
@@ -230,7 +229,7 @@ export declare class MediaControl extends UICorePlugin {
230
229
  * ```
231
230
  */
232
231
  getElement(name: MediaControlElement): ZeptoResult | null;
233
- putElement(name: MediaControlElement, element: ZeptoResult): void;
232
+ putElement(name: MediaControlElement, element: HTMLElement): void;
234
233
  /**
235
234
  * Get the right panel area to append custom elements to
236
235
  * @returns ZeptoSelector of the right panel element
@@ -275,5 +274,6 @@ export declare class MediaControl extends UICorePlugin {
275
274
  */
276
275
  disabledControlButton(): void;
277
276
  private isSeekEnabledForHtml5Playback;
277
+ private getElementLocation;
278
278
  }
279
279
  //# sourceMappingURL=MediaControl.d.ts.map
@@ -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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"}
@@ -53,7 +53,7 @@ function orderByOrderPattern(arr, order) {
53
53
  * The methods exposed are to be used by the other plugins that extend the media control UI.
54
54
  */
55
55
  export class MediaControl extends UICorePlugin {
56
- advertisementPlaying = false;
56
+ // private advertisementPlaying = false
57
57
  buttonsColor = null;
58
58
  currentDurationValue = 0;
59
59
  currentPositionValue = 0;
@@ -75,7 +75,7 @@ export class MediaControl extends UICorePlugin {
75
75
  lastMouseY = 0;
76
76
  persistConfig;
77
77
  rendered = false;
78
- settings = {};
78
+ settings = {}; // TODO & seekEnabled: boolean, ...
79
79
  userDisabled = false;
80
80
  userKeepVisible = false;
81
81
  verticalVolume = false;
@@ -256,18 +256,16 @@ export class MediaControl extends UICorePlugin {
256
256
  this.listenTo(this.core.activeContainer, Events.CONTAINER_DBLCLICK, this.toggleFullscreen);
257
257
  this.listenTo(this.core.activeContainer, Events.CONTAINER_TIMEUPDATE, this.onTimeUpdate);
258
258
  this.listenTo(this.core.activeContainer, Events.CONTAINER_PROGRESS, this.updateProgressBar);
259
- this.listenTo(this.core.activeContainer, Events.CONTAINER_SETTINGSUPDATE, this.settingsUpdate);
260
- this.listenTo(this.core.activeContainer, Events.CONTAINER_PLAYBACKDVRSTATECHANGED, this.settingsUpdate);
259
+ this.listenTo(this.core.activeContainer, Events.CONTAINER_SETTINGSUPDATE, this.updateSettings);
260
+ this.listenTo(this.core.activeContainer, Events.CONTAINER_PLAYBACKDVRSTATECHANGED, this.updateSettings);
261
261
  this.listenTo(this.core.activeContainer, Events.CONTAINER_HIGHDEFINITIONUPDATE, this.highDefinitionUpdate);
262
262
  this.listenTo(this.core.activeContainer, Events.CONTAINER_MEDIACONTROL_DISABLE, this.disable);
263
263
  this.listenTo(this.core.activeContainer, Events.CONTAINER_MEDIACONTROL_ENABLE, this.enable);
264
264
  this.listenTo(this.core.activeContainer, Events.CONTAINER_ENDED, this.ended);
265
265
  this.listenTo(this.core.activeContainer, Events.CONTAINER_VOLUME, this.onVolumeChanged);
266
266
  this.listenTo(this.core.activeContainer, Events.CONTAINER_OPTIONS_CHANGE, this.setInitialVolume);
267
- if (this.core.activePlayback.el.nodeName.toLowerCase() === 'video') {
268
- // wait until the metadata has loaded and then check if fullscreen on video tag is supported
269
- this.listenToOnce(this.core.activeContainer, Events.CONTAINER_LOADEDMETADATA, this.onLoadedMetadataOnVideoTag);
270
- }
267
+ // wait until the metadata has loaded and then check if fullscreen on video tag is supported
268
+ this.listenToOnce(this.core.activeContainer, Events.CONTAINER_LOADEDMETADATA, this.onLoadedMetadata);
271
269
  }
272
270
  /**
273
271
  * Hides the media control UI
@@ -302,13 +300,13 @@ export class MediaControl extends UICorePlugin {
302
300
  onVolumeChanged() {
303
301
  this.updateVolumeUI();
304
302
  }
305
- onLoadedMetadataOnVideoTag(event) {
303
+ onLoadedMetadata() {
306
304
  const video = this.core.activePlayback?.el;
307
305
  // video.webkitSupportsFullscreen is deprecated but iOS appears to only use this
308
306
  // see https://github.com/clappr/clappr/issues/1127
309
307
  if (!Fullscreen.fullscreenEnabled() && video.webkitSupportsFullscreen) {
310
308
  this.fullScreenOnVideoTagSupported = true;
311
- this.settingsUpdate();
309
+ this.updateSettings();
312
310
  }
313
311
  }
314
312
  updateVolumeUI() {
@@ -538,7 +536,7 @@ export class MediaControl extends UICorePlugin {
538
536
  this.setInitialVolume();
539
537
  this.changeTogglePlay();
540
538
  this.bindContainerEvents();
541
- this.settingsUpdate();
539
+ this.updateSettings();
542
540
  this.core.activeContainer.trigger(Events.CONTAINER_PLAYBACKDVRSTATECHANGED, this.core.activeContainer.isDvrInUse());
543
541
  // TODO test
544
542
  if (this.core.activeContainer.mediaControlDisabled) {
@@ -719,18 +717,19 @@ export class MediaControl extends UICorePlugin {
719
717
  this.core.$el.addClass('nocursor');
720
718
  }
721
719
  }
722
- settingsUpdate() {
720
+ updateSettings() {
723
721
  const newSettings = $.extend(true, {
724
722
  left: [],
725
723
  default: [],
726
724
  right: [],
727
- }, this.core.activeContainer?.settings);
725
+ }, this.core.activeContainer.settings);
728
726
  newSettings.left = orderByOrderPattern([...newSettings.left, 'clipsText', 'volume'], LEFT_ORDER);
727
+ // actual order of the items appear rendered is controlled by CSS
729
728
  newSettings.right = [
730
729
  'fullscreen',
731
730
  'pip',
732
- 'bottomgear',
733
- 'subtitles',
731
+ 'gear',
732
+ 'cc',
734
733
  'multicamera',
735
734
  'playbackrate',
736
735
  'vr',
@@ -739,7 +738,7 @@ export class MediaControl extends UICorePlugin {
739
738
  if ((!this.fullScreenOnVideoTagSupported &&
740
739
  !Fullscreen.fullscreenEnabled()) ||
741
740
  this.options.fullscreenDisable) {
742
- // remove fullscreen from settings if it is present
741
+ // remove fullscreen from settings if it is not available
743
742
  removeArrayItem(newSettings.default, 'fullscreen');
744
743
  removeArrayItem(newSettings.left, 'fullscreen');
745
744
  removeArrayItem(newSettings.right, 'fullscreen');
@@ -778,7 +777,7 @@ export class MediaControl extends UICorePlugin {
778
777
  this.$volumeBarScrubber = this.$el.find('.bar-scrubber[data-volume]');
779
778
  this.$playbackRate = this.$el.find('.media-control-playbackrate[data-playbackrate]');
780
779
  this.$multiCameraSelector = this.$el.find('.media-control-multicamera[data-multicamera]');
781
- this.$clipText = this.$el.find('.media-clip-text[data-clipstext]');
780
+ this.$clipText = this.$el.find('.media-clip-text[data-clipstext]'); // TODO
782
781
  this.$clipTextContainer = this.$el.find('.media-clip-container[data-clipstext]');
783
782
  this.resetIndicators();
784
783
  this.initializeIcons();
@@ -804,36 +803,32 @@ export class MediaControl extends UICorePlugin {
804
803
  */
805
804
  getElement(name) {
806
805
  switch (name) {
807
- case 'audioTracksSelector':
806
+ case 'audiotracks':
808
807
  return null;
809
808
  case 'clipText':
810
809
  return this.$clipText;
811
- case 'gear':
812
- return null;
813
- case 'pip':
814
- return null;
815
810
  case 'playbackRate':
816
811
  return this.$playbackRate;
817
812
  case 'seekBarContainer':
818
813
  return this.$seekBarContainer;
819
- case 'subtitlesSelector':
820
- return null;
821
814
  }
822
815
  }
823
816
  putElement(name, element) {
824
- switch (name) {
825
- case 'audioTracksSelector':
826
- this.getRightPanel().append(element);
827
- break;
828
- case 'gear':
829
- this.getRightPanel().append(element);
830
- break;
831
- case 'pip':
832
- this.getRightPanel().append(element);
833
- break;
834
- case 'subtitlesSelector':
835
- this.getRightPanel().append(element);
836
- break;
817
+ const panel = this.getElementLocation(name);
818
+ trace(`${T} putElement`, { name, panel: !!panel });
819
+ if (panel) {
820
+ const current = panel.find(`[data-${name}]`);
821
+ element.setAttribute(`data-${name}`, "");
822
+ // TODO test
823
+ if (current.length) {
824
+ if (current[0] === element) {
825
+ return;
826
+ }
827
+ current.replaceWith(element);
828
+ }
829
+ else {
830
+ panel.append(element);
831
+ }
837
832
  }
838
833
  }
839
834
  /**
@@ -1071,12 +1066,12 @@ export class MediaControl extends UICorePlugin {
1071
1066
  }
1072
1067
  // TODO manage by the ads plugin
1073
1068
  onStartAd() {
1074
- this.advertisementPlaying = true;
1069
+ // this.advertisementPlaying = true
1075
1070
  this.disable();
1076
1071
  }
1077
1072
  // TODO manage by the ads plugin
1078
1073
  onFinishAd() {
1079
- this.advertisementPlaying = false;
1074
+ // this.advertisementPlaying = false
1080
1075
  this.enable();
1081
1076
  }
1082
1077
  // TODO remove
@@ -1120,6 +1115,18 @@ export class MediaControl extends UICorePlugin {
1120
1115
  }
1121
1116
  return isFinite(this.core.activePlayback.getDuration());
1122
1117
  }
1118
+ getElementLocation(name) {
1119
+ if (this.settings.right?.includes(name)) {
1120
+ return this.getRightPanel();
1121
+ }
1122
+ if (this.settings.left?.includes(name)) {
1123
+ return this.getLeftPanel();
1124
+ }
1125
+ if (this.settings.default?.includes(name)) {
1126
+ return this.getCenterPanel();
1127
+ }
1128
+ return null;
1129
+ }
1123
1130
  }
1124
1131
  MediaControl.extend = function (properties) {
1125
1132
  return extend(MediaControl, properties);
@@ -25,6 +25,7 @@ export declare class PictureInPicture extends UICorePlugin {
25
25
  * @internal
26
26
  */
27
27
  static get version(): string;
28
+ private static buttonTemplate;
28
29
  /**
29
30
  * @internal
30
31
  */
@@ -1 +1 @@
1
- {"version":3,"file":"PictureInPicture.d.ts","sourceRoot":"","sources":["../../../src/plugins/picture-in-picture/PictureInPicture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoB,MAAM,cAAc,CAAC;AAO9D,OAAO,gDAAgD,CAAC;AAMxD;;;;;;;;;GASG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAChD;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;IACH,MAAM,KAAK,OAAO,WAEjB;IAED;;OAEG;IACH,IAAa,MAAM;;MAIlB;IAED,IAAa,UAAU;;MAItB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED;;OAEG;IACM,UAAU;IAInB,OAAO,CAAC,cAAc;IAStB;;OAEG;IACM,MAAM;IAiBf,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,oBAAoB;CAI7B"}
1
+ {"version":3,"file":"PictureInPicture.d.ts","sourceRoot":"","sources":["../../../src/plugins/picture-in-picture/PictureInPicture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoB,MAAM,cAAc,CAAC;AAO9D,OAAO,gDAAgD,CAAC;AAMxD;;;;;;;;;GASG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAChD;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;IACH,MAAM,KAAK,OAAO,WAEjB;IAED,OAAO,CAAC,MAAM,CAAC,cAAc,CAAwB;IAErD;;OAEG;IACH,IAAa,MAAM;;MAIlB;IAED,IAAa,UAAU;;MAItB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED;;OAEG;IACM,UAAU;IAInB,OAAO,CAAC,cAAc;IAStB;;OAEG;IACM,MAAM;IAef,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,oBAAoB;CAI7B"}
@@ -35,6 +35,7 @@ export class PictureInPicture extends UICorePlugin {
35
35
  static get version() {
36
36
  return VERSION;
37
37
  }
38
+ static buttonTemplate = template(buttonHtml);
38
39
  /**
39
40
  * @internal
40
41
  */
@@ -59,8 +60,8 @@ export class PictureInPicture extends UICorePlugin {
59
60
  }
60
61
  isPiPSupported() {
61
62
  trace(`${T} isPiPSupported`, {
62
- pictureInPictureEnabled: document.pictureInPictureEnabled,
63
- requestPictureInPicture: HTMLVideoElement.prototype.requestPictureInPicture,
63
+ pictureInPictureEnabled: !!document.pictureInPictureEnabled,
64
+ requestPictureInPicture: !!HTMLVideoElement.prototype.requestPictureInPicture,
64
65
  });
65
66
  return document.pictureInPictureEnabled && !!HTMLVideoElement.prototype.requestPictureInPicture;
66
67
  }
@@ -71,8 +72,7 @@ export class PictureInPicture extends UICorePlugin {
71
72
  if (!this.isPiPSupported()) {
72
73
  return this;
73
74
  }
74
- const t = template(buttonHtml);
75
- this.$el.html(t({ pipIcon }));
75
+ this.$el.html(PictureInPicture.buttonTemplate({ pipIcon }));
76
76
  const mediaControl = this.core.getPlugin('media_control');
77
77
  if (mediaControl) {
78
78
  mediaControl.putElement('pip', this.el);
@@ -36,7 +36,6 @@ export declare class PlaybackRate extends UICorePlugin {
36
36
  */
37
37
  get attributes(): {
38
38
  class: string;
39
- 'data-playback-rate-select': string;
40
39
  };
41
40
  /**
42
41
  * @internal
@@ -1 +1 @@
1
- {"version":3,"file":"PlaybackRate.d.ts","sourceRoot":"","sources":["../../../src/plugins/playback-rate/PlaybackRate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAsB,IAAI,EAAE,MAAM,cAAc,CAAC;AAoC9E;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,aAAa,CAAgD;IAGrE,OAAO,CAAC,gBAAgB,CAAqB;IAE7C,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,YAAY,CAAiC;IAErD;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAwB;IAE9D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAsB;gBAE9C,IAAI,EAAE,IAAI;IAMtB;;OAEG;IACH,IAAa,UAAU;;;MAKtB;IAED;;OAEG;IACH,IAAa,MAAM;;;;MAMlB;IAED;;OAEG;IACM,UAAU;IAKnB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,YAAY;IAYpB;;OAEG;IACM,MAAM;IA6Bf,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,MAAM;IAGd,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,oBAAoB;CAS7B"}
1
+ {"version":3,"file":"PlaybackRate.d.ts","sourceRoot":"","sources":["../../../src/plugins/playback-rate/PlaybackRate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAsB,IAAI,EAAE,MAAM,cAAc,CAAA;AAuC7E;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,aAAa,CAA+C;IAGpE,OAAO,CAAC,gBAAgB,CAAoB;IAE5C,OAAO,CAAC,QAAQ,CAAQ;IAExB,OAAO,CAAC,YAAY,CAAgC;IAEpD;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAuB;IAE7D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAqB;gBAE7C,IAAI,EAAE,IAAI;IAQtB;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACH,IAAa,MAAM;;;;MAMlB;IAED;;OAEG;IACM,UAAU;IASnB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,YAAY;IAepB;;OAEG;IACM,MAAM;IAgCf,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,oBAAoB;CAS7B"}
@@ -9,7 +9,7 @@ import arrowRightIcon from '../../../assets/icons/new/arrow-right.svg';
9
9
  import arrowLeftIcon from '../../../assets/icons/new/arrow-left.svg';
10
10
  import checkIcon from '../../../assets/icons/new/check.svg';
11
11
  import { PlaybackEvents } from '../../playback/types.js';
12
- import { MediaControlEvents } from '../media-control/MediaControl.js';
12
+ import { MediaControlEvents, } from '../media-control/MediaControl.js';
13
13
  const DEFAULT_PLAYBACK_RATES = [
14
14
  { value: '0.5', label: '0.5x' },
15
15
  { value: '0.75', label: '0.75x' },
@@ -17,7 +17,7 @@ const DEFAULT_PLAYBACK_RATES = [
17
17
  { value: '1.25', label: '1.25x' },
18
18
  { value: '1.5', label: '1.5x' },
19
19
  { value: '1.75', label: '1.75x' },
20
- { value: '2.0', label: '2x' }
20
+ { value: '2.0', label: '2x' },
21
21
  ];
22
22
  const DEFAULT_PLAYBACK_RATE = '1.0';
23
23
  const T = 'plugins.playback_rate';
@@ -57,16 +57,17 @@ export class PlaybackRate extends UICorePlugin {
57
57
  static listTemplate = template(listHtml);
58
58
  constructor(core) {
59
59
  super(core);
60
- this.playbackRates = core.options.playbackRate?.options || DEFAULT_PLAYBACK_RATES;
61
- this.selectedRate = core.options.playbackRate?.defaultValue || DEFAULT_PLAYBACK_RATE;
60
+ this.playbackRates =
61
+ core.options.playbackRate?.options || DEFAULT_PLAYBACK_RATES;
62
+ this.selectedRate =
63
+ core.options.playbackRate?.defaultValue || DEFAULT_PLAYBACK_RATE;
62
64
  }
63
65
  /**
64
66
  * @internal
65
67
  */
66
68
  get attributes() {
67
69
  return {
68
- 'class': this.name,
69
- 'data-playback-rate-select': ''
70
+ class: 'media-control-playbackrate',
70
71
  };
71
72
  }
72
73
  /**
@@ -87,6 +88,7 @@ export class PlaybackRate extends UICorePlugin {
87
88
  this.listenTo(this.core, Events.CORE_ACTIVE_CONTAINER_CHANGED, this.onActiveContainerChange);
88
89
  }
89
90
  onCoreReady() {
91
+ trace(`${T} onCoreReady`);
90
92
  const mediaControl = this.core.getPlugin('media_control');
91
93
  assert(mediaControl, 'media_control plugin is required');
92
94
  const gear = this.core.getPlugin('bottom_gear');
@@ -94,6 +96,7 @@ export class PlaybackRate extends UICorePlugin {
94
96
  this.listenTo(mediaControl, MediaControlEvents.MEDIACONTROL_GEAR_RENDERED, this.onGearRendered);
95
97
  }
96
98
  onActiveContainerChange() {
99
+ trace(`${T} onActiveContainerChange`);
97
100
  this.listenTo(this.core.activePlayback, Events.PLAYBACK_STOP, this.onStop);
98
101
  this.listenTo(this.core.activePlayback, Events.PLAYBACK_PLAY, this.onPlay);
99
102
  this.listenTo(this.core.activePlayback, PlaybackEvents.PLAYBACK_RATE_CHANGED, this.onPlaybackRateChange);
@@ -117,7 +120,7 @@ export class PlaybackRate extends UICorePlugin {
117
120
  allRateElements() {
118
121
  return this.$('ul.gear-sub-menu li');
119
122
  }
120
- rateElement(rate = "1") {
123
+ rateElement(rate = '1') {
121
124
  return this.$(`ul.gear-sub-menu a[data-rate="${rate}"]`).parent();
122
125
  }
123
126
  onPlaybackRateChange(playbackRate) {
@@ -132,10 +135,11 @@ export class PlaybackRate extends UICorePlugin {
132
135
  }
133
136
  }
134
137
  shouldRender() {
135
- if (!this.core.activeContainer) {
138
+ if (!this.core.activePlayback) {
136
139
  return false;
137
140
  }
138
- if (this.core.getPlaybackType() === Playback.LIVE && !this.core.activePlayback.dvrEnabled) {
141
+ if (this.core.activePlayback.getPlaybackType() === Playback.LIVE &&
142
+ !this.core.activePlayback.dvrEnabled) {
139
143
  return false;
140
144
  }
141
145
  return 'setPlaybackRate' in this.core.activePlayback;
@@ -158,9 +162,12 @@ export class PlaybackRate extends UICorePlugin {
158
162
  title: this.getTitle(),
159
163
  speedIcon,
160
164
  arrowRightIcon,
165
+ i18n: this.core.i18n,
161
166
  });
162
167
  this.$el.html(button);
163
- this.core.getPlugin('bottom_gear')?.getElement('rate')?.html(this.el);
168
+ this.core.getPlugin('bottom_gear')
169
+ ?.getElement('rate')
170
+ ?.html(this.el);
164
171
  this.rendered = true;
165
172
  return this;
166
173
  }
@@ -175,7 +182,8 @@ export class PlaybackRate extends UICorePlugin {
175
182
  }
176
183
  }
177
184
  onPlay() {
178
- if (this.core.getPlaybackType() === Playback.LIVE && !this.core.activePlayback.dvrEnabled) {
185
+ if (this.core.getPlaybackType() === Playback.LIVE &&
186
+ !this.core.activePlayback.dvrEnabled) {
179
187
  this.resetPlaybackRate();
180
188
  }
181
189
  else {
@@ -185,8 +193,7 @@ export class PlaybackRate extends UICorePlugin {
185
193
  resetPlaybackRate() {
186
194
  this.setSelectedRate(DEFAULT_PLAYBACK_RATE);
187
195
  }
188
- onStop() {
189
- }
196
+ onStop() { }
190
197
  onRateSelect(event) {
191
198
  event.stopPropagation();
192
199
  const rate = event.currentTarget.dataset.rate;
@@ -201,6 +208,7 @@ export class PlaybackRate extends UICorePlugin {
201
208
  playbackRates: this.playbackRates,
202
209
  arrowLeftIcon,
203
210
  checkIcon,
211
+ i18n: this.core.i18n,
204
212
  }));
205
213
  this.core.getPlugin('bottom_gear')?.setContent(this.el);
206
214
  this.highlightCurrentRate();
@@ -216,7 +224,8 @@ export class PlaybackRate extends UICorePlugin {
216
224
  this.selectedRate = rate;
217
225
  }
218
226
  getTitle() {
219
- return this.playbackRates.find((r) => r.value === this.selectedRate)?.label || this.selectedRate;
227
+ return (this.playbackRates.find((r) => r.value === this.selectedRate)?.label ||
228
+ this.selectedRate);
220
229
  }
221
230
  highlightCurrentRate() {
222
231
  this.allRateElements().removeClass('current');
@@ -0,0 +1,118 @@
1
+ import { UICorePlugin } from '@clappr/core';
2
+ import '../../../assets/subtitles/style.scss';
3
+ export type ClosedCaptionsPluginSettings = {
4
+ /**
5
+ * Initially selected subtitles language
6
+ */
7
+ language?: string;
8
+ };
9
+ /**
10
+ * @deprecated Use {@link ClosedCaptionsPluginSettings} instead.
11
+ */
12
+ export type SubtitlesPluginSettings = ClosedCaptionsPluginSettings;
13
+ /**
14
+ * `PLUGIN` that provides a UI to select the subtitles when available.
15
+ * @beta
16
+ *
17
+ * @remarks
18
+ * The plugin is activated when closed captions tracks are provided with the media source.
19
+ * It shows a familiar "CC" button with a dropdown menu to select the subtitles language.
20
+ *
21
+ * Depends on:
22
+ *
23
+ * - {@link MediaControl}
24
+ *
25
+ * Configuration options - {@link ClosedCaptionsPluginSettings}
26
+ * @example
27
+ * ```ts
28
+ * import { ClosedCaptions } from '@gcorevideo/player'
29
+ *
30
+ * Player.registerPlugin(ClosedCaptions)
31
+ *
32
+ * new Player({
33
+ * ...
34
+ * cc: {
35
+ * language: 'en',
36
+ * },
37
+ * })
38
+ * ```
39
+ */
40
+ export declare class ClosedCaptions extends UICorePlugin {
41
+ private isPreselectedApplied;
42
+ private isShowing;
43
+ private track;
44
+ private tracks;
45
+ private $line;
46
+ /**
47
+ * @internal
48
+ */
49
+ get name(): string;
50
+ /**
51
+ * @internal
52
+ */
53
+ get supportedVersion(): {
54
+ min: string;
55
+ };
56
+ /**
57
+ * @internal
58
+ */
59
+ static get version(): string;
60
+ private static readonly template;
61
+ private static readonly templateString;
62
+ /**
63
+ * @internal
64
+ */
65
+ get attributes(): {
66
+ class: string;
67
+ };
68
+ /**
69
+ * @internal
70
+ */
71
+ get events(): {
72
+ 'click [data-cc-select]': string;
73
+ 'click [data-cc-button]': string;
74
+ };
75
+ private get preselectedLanguage();
76
+ /**
77
+ * @internal
78
+ */
79
+ bindEvents(): void;
80
+ private onCoreReady;
81
+ private onContainerChanged;
82
+ private onSubtitleAvailable;
83
+ private onSubtitleChanged;
84
+ private applyTracks;
85
+ private onStartAd;
86
+ private onFinishAd;
87
+ private playerResize;
88
+ /**
89
+ * Hides the subtitles menu and the subtitles.
90
+ */
91
+ hide(): void;
92
+ /**
93
+ * Shows the subtitles menu and the subtitles.
94
+ */
95
+ show(): void;
96
+ private shouldRender;
97
+ private resizeFont;
98
+ /**
99
+ * @internal
100
+ */
101
+ render(): this;
102
+ private findById;
103
+ private selectItem;
104
+ private onItemSelect;
105
+ private applyPreselectedSubtitles;
106
+ private hideMenu;
107
+ private toggleMenu;
108
+ private itemElement;
109
+ private allItemElements;
110
+ private selectSubtitles;
111
+ private getSubtitleText;
112
+ private setSubtitleText;
113
+ private clearSubtitleText;
114
+ private updateSelection;
115
+ private highlightCurrentSubtitles;
116
+ private renderIcon;
117
+ }
118
+ //# sourceMappingURL=ClosedCaptions.d.ts.map
@@ -0,0 +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;AAe7C,MAAM,MAAM,4BAA4B,GAAG;IACzC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,4BAA4B,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,oBAAoB,CAAQ;IAEpC,OAAO,CAAC,SAAS,CAAQ;IAEzB,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,QAAQ,CAAyB;IAEzD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAuB;IAE7D;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACH,IAAa,MAAM;;;MAKlB;IAED,OAAO,KAAK,mBAAmB,GAE9B;IAED;;OAEG;IACM,UAAU;IAUnB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,kBAAkB;IAwC1B,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,iBAAiB;IA+BzB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,YAAY;IAqBpB;;OAEG;IACH,IAAI;IAWJ;;OAEG;IACH,IAAI;IAiBJ,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACM,MAAM;IA0Bf,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,yBAAyB;IAgBjC,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,yBAAyB;IAgBjC,OAAO,CAAC,UAAU;CAKnB"}