@gcorevideo/player 2.25.5 → 2.25.7

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 (30) hide show
  1. package/assets/audio-tracks/template.ejs +5 -4
  2. package/assets/bottom-gear/gear.scss +40 -39
  3. package/assets/media-control/media-control.scss +343 -284
  4. package/assets/media-control/width270.scss +2 -10
  5. package/assets/media-control/width370.scss +3 -41
  6. package/assets/multi-camera/style.scss +9 -19
  7. package/assets/picture-in-picture/style.scss +13 -0
  8. package/assets/subtitles/style.scss +108 -68
  9. package/dist/core.js +1 -1
  10. package/dist/index.css +1346 -1422
  11. package/dist/index.embed.js +47 -28
  12. package/dist/index.js +85 -66
  13. package/lib/plugins/audio-selector/AudioTracks.d.ts +4 -3
  14. package/lib/plugins/audio-selector/AudioTracks.d.ts.map +1 -1
  15. package/lib/plugins/audio-selector/AudioTracks.js +41 -23
  16. package/lib/plugins/media-control/MediaControl.js +1 -1
  17. package/lib/plugins/picture-in-picture/PictureInPicture.d.ts +1 -1
  18. package/lib/plugins/picture-in-picture/PictureInPicture.d.ts.map +1 -1
  19. package/lib/plugins/picture-in-picture/PictureInPicture.js +1 -1
  20. package/package.json +1 -1
  21. package/src/plugins/audio-selector/AudioTracks.ts +53 -29
  22. package/src/plugins/audio-selector/__tests__/AudioTracks.test.ts +60 -45
  23. package/src/plugins/audio-selector/__tests__/__snapshots__/AudioSelector.test.ts.snap +24 -24
  24. package/src/plugins/audio-selector/__tests__/__snapshots__/AudioTracks.test.ts.snap +21 -18
  25. package/src/plugins/media-control/MediaControl.ts +1 -1
  26. package/src/plugins/media-control/__tests__/__snapshots__/MediaControl.test.ts.snap +6 -6
  27. package/src/plugins/picture-in-picture/PictureInPicture.ts +1 -1
  28. package/tsconfig.tsbuildinfo +1 -1
  29. package/assets/audio-tracks/style.scss +0 -124
  30. package/assets/picture-in-picture/button.scss +0 -12
package/dist/index.js CHANGED
@@ -12680,7 +12680,7 @@ var PlaybackEvents;
12680
12680
  // https://github.com/clappr/clappr/blob/8752995ea439321ac7ca3cd35e8c64de7a3c3d17/LICENSE
12681
12681
  const AUTO$1 = -1;
12682
12682
  const { now: now$2 } = Utils;
12683
- const T$p = 'playback.dash';
12683
+ const T$o = 'playback.dash';
12684
12684
  class DashPlayback extends BasePlayback {
12685
12685
  _levels = null;
12686
12686
  _currentLevel = null;
@@ -12954,10 +12954,10 @@ class DashPlayback extends BasePlayback {
12954
12954
  }
12955
12955
  _onPlaybackError = (event) => {
12956
12956
  // TODO
12957
- trace(`${T$p} _onPlaybackError`, { event });
12957
+ trace(`${T$o} _onPlaybackError`, { event });
12958
12958
  };
12959
12959
  _onDASHJSSError = (event) => {
12960
- trace(`${T$p} _onDASHJSSError`, { event });
12960
+ trace(`${T$o} _onDASHJSSError`, { event });
12961
12961
  this._stopTimeUpdateTimer();
12962
12962
  // Note that the other error types are deprecated
12963
12963
  const e = event.error;
@@ -12992,7 +12992,7 @@ class DashPlayback extends BasePlayback {
12992
12992
  }
12993
12993
  };
12994
12994
  triggerError(error) {
12995
- trace(`${T$p} triggerError`, { error });
12995
+ trace(`${T$o} triggerError`, { error });
12996
12996
  // this triggers Events.ERROR to be handled by the UI
12997
12997
  this.trigger(Events$1.PLAYBACK_ERROR, this.createError(error, {
12998
12998
  useCodePrefix: false,
@@ -13031,10 +13031,10 @@ class DashPlayback extends BasePlayback {
13031
13031
  }
13032
13032
  get dvrEnabled() {
13033
13033
  if (!this._dash) {
13034
- trace(`${T$p} dvrEnable no dash player instance`);
13034
+ trace(`${T$o} dvrEnable no dash player instance`);
13035
13035
  return false;
13036
13036
  }
13037
- trace(`${T$p} get.dvrEnabled`, {
13037
+ trace(`${T$o} get.dvrEnabled`, {
13038
13038
  dvrWindowSize: this._dash?.getDVRWindowSize(),
13039
13039
  minDvrSize: this._minDvrSize,
13040
13040
  playbackType: this.getPlaybackType(),
@@ -13056,7 +13056,7 @@ class DashPlayback extends BasePlayback {
13056
13056
  this.trigger(Events$1.PLAYBACK_PROGRESS, progress, {});
13057
13057
  }
13058
13058
  play() {
13059
- trace(`${T$p} play`, { dash: !!this._dash });
13059
+ trace(`${T$o} play`, { dash: !!this._dash });
13060
13060
  !this._dash && this._setup();
13061
13061
  super.play();
13062
13062
  this._startTimeUpdateTimer();
@@ -13142,7 +13142,7 @@ class DashPlayback extends BasePlayback {
13142
13142
  }
13143
13143
  // @ts-expect-error
13144
13144
  get currentAudioTrack() {
13145
- trace(`${T$p} get currentAudioTrack`);
13145
+ trace(`${T$o} get currentAudioTrack`);
13146
13146
  assert.ok(this._dash, 'DASH.js MediaPlayer is not initialized');
13147
13147
  const t = this._dash.getCurrentTrackFor('audio');
13148
13148
  if (!t) {
@@ -41850,7 +41850,7 @@ const AUTO = -1;
41850
41850
  const DEFAULT_RECOVER_ATTEMPTS = 16;
41851
41851
  Events$1.register('PLAYBACK_FRAGMENT_CHANGED');
41852
41852
  Events$1.register('PLAYBACK_FRAGMENT_PARSING_METADATA');
41853
- const T$o = 'playback.hls';
41853
+ const T$n = 'playback.hls';
41854
41854
  class HlsPlayback extends BasePlayback {
41855
41855
  _ccIsSetup = false;
41856
41856
  _ccTracksUpdated = false;
@@ -42082,7 +42082,7 @@ class HlsPlayback extends BasePlayback {
42082
42082
  maxMaxBufferLength: 4,
42083
42083
  autoStartLoad: false,
42084
42084
  }, this.options.playback.hlsjsConfig);
42085
- trace(`${T$o} _createHLSInstance`, { config });
42085
+ trace(`${T$n} _createHLSInstance`, { config });
42086
42086
  this._hls = new Hls(config);
42087
42087
  }
42088
42088
  _attachHLSMedia() {
@@ -42175,7 +42175,7 @@ class HlsPlayback extends BasePlayback {
42175
42175
  }
42176
42176
  else {
42177
42177
  Log.error('hlsjs: failed to recover', { evt, data });
42178
- trace(`${T$o} _recover failed to recover`, {
42178
+ trace(`${T$n} _recover failed to recover`, {
42179
42179
  type: data.type,
42180
42180
  details: data.details,
42181
42181
  });
@@ -42261,7 +42261,7 @@ class HlsPlayback extends BasePlayback {
42261
42261
  this.trigger(Events$1.PLAYBACK_SETTINGSUPDATE);
42262
42262
  }
42263
42263
  _onHLSJSError(evt, data) {
42264
- trace(`${T$o} _onHLSJSError`, {
42264
+ trace(`${T$n} _onHLSJSError`, {
42265
42265
  fatal: data.fatal,
42266
42266
  type: data.type,
42267
42267
  details: data.details,
@@ -42309,7 +42309,7 @@ class HlsPlayback extends BasePlayback {
42309
42309
  evt,
42310
42310
  data,
42311
42311
  });
42312
- trace(`${T$o} _onHLSJSError trying to recover from network error`, {
42312
+ trace(`${T$n} _onHLSJSError trying to recover from network error`, {
42313
42313
  details: data.details,
42314
42314
  });
42315
42315
  error.level = PlayerError.Levels.WARN;
@@ -42322,7 +42322,7 @@ class HlsPlayback extends BasePlayback {
42322
42322
  evt,
42323
42323
  data,
42324
42324
  });
42325
- trace(`${T$o} _onHLSJSError trying to recover from media error`, {
42325
+ trace(`${T$n} _onHLSJSError trying to recover from media error`, {
42326
42326
  details: data.details,
42327
42327
  });
42328
42328
  error.level = PlayerError.Levels.WARN;
@@ -42352,7 +42352,7 @@ class HlsPlayback extends BasePlayback {
42352
42352
  return;
42353
42353
  }
42354
42354
  Log.warn('hlsjs: non-fatal error occurred', { evt, data });
42355
- trace(`${T$o} _onHLSJSError non-fatal error occurred`, {
42355
+ trace(`${T$n} _onHLSJSError non-fatal error occurred`, {
42356
42356
  type: data.type,
42357
42357
  details: data.details,
42358
42358
  });
@@ -42686,11 +42686,11 @@ class HlsPlayback extends BasePlayback {
42686
42686
  this._hls.audioTrack = Number(id); // TODO or find index by .id == id?
42687
42687
  }
42688
42688
  _onAudioTracksUpdated(_, data) {
42689
- trace(`${T$o} onAudioTracksUpdated`);
42689
+ trace(`${T$n} onAudioTracksUpdated`);
42690
42690
  this.trigger(Events$1.PLAYBACK_AUDIO_AVAILABLE, data.audioTracks.map(toClapprTrack));
42691
42691
  }
42692
42692
  _onAudioTrackSwitched(_, data) {
42693
- trace(`${T$o} onAudioTrackSwitched`);
42693
+ trace(`${T$n} onAudioTrackSwitched`);
42694
42694
  // @ts-ignore
42695
42695
  const track = this._hls.audioTracks[data.id];
42696
42696
  this.trigger(Events$1.PLAYBACK_AUDIO_CHANGED, toClapprTrack(track));
@@ -42711,7 +42711,7 @@ function toClapprTrack(t) {
42711
42711
  };
42712
42712
  }
42713
42713
 
42714
- const T$n = 'playback.html5_video';
42714
+ const T$m = 'playback.html5_video';
42715
42715
  const STALL_TIMEOUT = 15000;
42716
42716
  class HTML5Video extends BasePlayback {
42717
42717
  stallTimerId = null;
@@ -42719,7 +42719,7 @@ class HTML5Video extends BasePlayback {
42719
42719
  * @internal
42720
42720
  */
42721
42721
  createError(errorData, options) {
42722
- trace(`${T$n} createError`, {
42722
+ trace(`${T$m} createError`, {
42723
42723
  errorData: { ...errorData },
42724
42724
  });
42725
42725
  const i18n = this.i18n ||
@@ -42735,11 +42735,11 @@ class HTML5Video extends BasePlayback {
42735
42735
  return super.createError(errorData, { ...options, useCodePrefix: false });
42736
42736
  }
42737
42737
  _onWaiting() {
42738
- trace(`${T$n} _onWaiting`);
42738
+ trace(`${T$m} _onWaiting`);
42739
42739
  super._onWaiting();
42740
42740
  }
42741
42741
  _onEnded() {
42742
- trace(`${T$n} _onEnded`);
42742
+ trace(`${T$m} _onEnded`);
42743
42743
  if (this.stallTimerId) {
42744
42744
  clearTimeout(this.stallTimerId);
42745
42745
  this.stallTimerId = null;
@@ -42747,12 +42747,12 @@ class HTML5Video extends BasePlayback {
42747
42747
  super._onEnded();
42748
42748
  }
42749
42749
  _handleBufferingEvents() {
42750
- trace(`${T$n} _handleBufferingEvents`, {
42750
+ trace(`${T$m} _handleBufferingEvents`, {
42751
42751
  networkState: this.el.networkState,
42752
42752
  });
42753
42753
  if (!this.stallTimerId) {
42754
42754
  this.stallTimerId = setTimeout(() => {
42755
- trace(`${T$n} _handleBufferingEvents stall timeout`, {
42755
+ trace(`${T$m} _handleBufferingEvents stall timeout`, {
42756
42756
  buffering: this.buffering,
42757
42757
  ended: this.ended,
42758
42758
  });
@@ -42770,7 +42770,7 @@ class HTML5Video extends BasePlayback {
42770
42770
  super._handleBufferingEvents();
42771
42771
  }
42772
42772
  _onPlaying() {
42773
- trace(`${T$n} _onPlaying`);
42773
+ trace(`${T$m} _onPlaying`);
42774
42774
  if (this.stallTimerId) {
42775
42775
  clearTimeout(this.stallTimerId);
42776
42776
  this.stallTimerId = null;
@@ -42778,7 +42778,7 @@ class HTML5Video extends BasePlayback {
42778
42778
  super._onPlaying();
42779
42779
  }
42780
42780
  _onPause() {
42781
- trace(`${T$n} _onPause`);
42781
+ trace(`${T$m} _onPause`);
42782
42782
  super._onPause();
42783
42783
  if (this.stallTimerId) {
42784
42784
  clearTimeout(this.stallTimerId);
@@ -42788,7 +42788,7 @@ class HTML5Video extends BasePlayback {
42788
42788
  get audioTracks() {
42789
42789
  const tracks = this.el.audioTracks;
42790
42790
  const supported = !!tracks;
42791
- trace(`${T$n} get audioTracks`, { supported });
42791
+ trace(`${T$m} get audioTracks`, { supported });
42792
42792
  const retval = [];
42793
42793
  if (supported) {
42794
42794
  for (let i = 0; i < tracks.length; i++) {
@@ -42807,7 +42807,7 @@ class HTML5Video extends BasePlayback {
42807
42807
  get currentAudioTrack() {
42808
42808
  const tracks = this.el.audioTracks;
42809
42809
  const supported = !!tracks;
42810
- trace(`${T$n} get currentAudioTrack`, {
42810
+ trace(`${T$m} get currentAudioTrack`, {
42811
42811
  supported,
42812
42812
  });
42813
42813
  if (supported) {
@@ -42828,7 +42828,7 @@ class HTML5Video extends BasePlayback {
42828
42828
  switchAudioTrack(id) {
42829
42829
  const tracks = this.el.audioTracks;
42830
42830
  const supported = !!tracks;
42831
- trace(`${T$n} switchAudioTrack`, {
42831
+ trace(`${T$m} switchAudioTrack`, {
42832
42832
  supported,
42833
42833
  });
42834
42834
  if (supported) {
@@ -42847,7 +42847,7 @@ function registerPlaybacks() {
42847
42847
  Loader.registerPlayback(DashPlayback);
42848
42848
  }
42849
42849
 
42850
- const T$m = 'gplayer';
42850
+ const T$l = 'gplayer';
42851
42851
  const DEFAULT_OPTIONS = {
42852
42852
  autoPlay: false,
42853
42853
  debug: 'none',
@@ -42935,7 +42935,7 @@ class Player {
42935
42935
  * ```
42936
42936
  */
42937
42937
  attachTo(playerElement) {
42938
- trace(`${T$m} attachTo`, {
42938
+ trace(`${T$l} attachTo`, {
42939
42939
  player: !!this.player,
42940
42940
  });
42941
42941
  assert.ok(!this.player, 'Player already initialized');
@@ -42945,7 +42945,7 @@ class Player {
42945
42945
  }
42946
42946
  const coreOpts = this.buildCoreOptions(playerElement);
42947
42947
  const { core, container } = Player.getRegisteredPlugins();
42948
- trace(`${T$m} init`, {
42948
+ trace(`${T$l} init`, {
42949
42949
  registeredPlaybacks: Loader.registeredPlaybacks.map((p) => p.prototype.name),
42950
42950
  });
42951
42951
  coreOpts.plugins = {
@@ -42959,7 +42959,7 @@ class Player {
42959
42959
  * Destroys the player, releasing all resources and unmounting its UI from the DOM.
42960
42960
  */
42961
42961
  destroy() {
42962
- trace(`${T$m} destroy`, {
42962
+ trace(`${T$l} destroy`, {
42963
42963
  player: !!this.player,
42964
42964
  });
42965
42965
  if (this.player) {
@@ -43146,7 +43146,7 @@ class Player {
43146
43146
  this.config = $.extend(true, this.config, config);
43147
43147
  }
43148
43148
  initPlayer(coreOptions) {
43149
- trace(`${T$m} initPlayer`, {
43149
+ trace(`${T$l} initPlayer`, {
43150
43150
  autoPlay: coreOptions.autoPlay,
43151
43151
  sources: coreOptions.sources,
43152
43152
  player: !!this.player,
@@ -43171,7 +43171,7 @@ class Player {
43171
43171
  }
43172
43172
  }
43173
43173
  triggerAutoPlay() {
43174
- trace(`${T$m} triggerAutoPlay`);
43174
+ trace(`${T$l} triggerAutoPlay`);
43175
43175
  setTimeout(() => {
43176
43176
  this.player?.play({
43177
43177
  autoPlay: true,
@@ -43189,7 +43189,7 @@ class Player {
43189
43189
  // TODO test
43190
43190
  events = {
43191
43191
  onReady: () => {
43192
- trace(`${T$m} onReady`, {
43192
+ trace(`${T$l} onReady`, {
43193
43193
  ready: this.ready,
43194
43194
  });
43195
43195
  if (this.ready) {
@@ -43223,7 +43223,7 @@ class Player {
43223
43223
  buildCoreOptions(rootNode) {
43224
43224
  const sources = this.buildMediaSourcesList();
43225
43225
  const source = sources[0];
43226
- trace(`${T$m} buildCoreOptions`, {
43226
+ trace(`${T$l} buildCoreOptions`, {
43227
43227
  source,
43228
43228
  sources,
43229
43229
  });
@@ -43284,7 +43284,7 @@ class Player {
43284
43284
  assert.ok(this.player, 'Player is not initialized');
43285
43285
  const core = this.player.core;
43286
43286
  core.on(Events$1.CORE_SCREEN_ORIENTATION_CHANGED, ({ orientation }) => {
43287
- trace(`${T$m} on CORE_SCREEN_ORIENTATION_CHANGED`, {
43287
+ trace(`${T$l} on CORE_SCREEN_ORIENTATION_CHANGED`, {
43288
43288
  orientation,
43289
43289
  rootNode: {
43290
43290
  width: this.rootNode?.clientWidth,
@@ -43299,14 +43299,14 @@ class Player {
43299
43299
  }
43300
43300
  }, null);
43301
43301
  core.on(Events$1.CORE_RESIZE, ({ width, height }) => {
43302
- trace(`${T$m} on CORE_RESIZE`, {
43302
+ trace(`${T$l} on CORE_RESIZE`, {
43303
43303
  width,
43304
43304
  height,
43305
43305
  });
43306
43306
  this.safeTriggerEvent(PlayerEvent.Resize, { width, height });
43307
43307
  }, null);
43308
43308
  core.on(Events$1.CORE_FULLSCREEN, (isFullscreen) => {
43309
- trace(`${T$m} CORE_FULLSCREEN`, {
43309
+ trace(`${T$l} CORE_FULLSCREEN`, {
43310
43310
  isFullscreen,
43311
43311
  });
43312
43312
  this.safeTriggerEvent(PlayerEvent.Fullscreen, isFullscreen);
@@ -43314,7 +43314,7 @@ class Player {
43314
43314
  }
43315
43315
  }
43316
43316
 
43317
- var version$1 = "2.25.5";
43317
+ var version$1 = "2.25.7";
43318
43318
 
43319
43319
  var packages = {
43320
43320
  "node_modules/@clappr/core": {
@@ -43338,7 +43338,7 @@ function version() {
43338
43338
  };
43339
43339
  }
43340
43340
 
43341
- const pluginHtml$6 = "<button data-audiotracks-button class='gcore-skin-button-color' id=\"audiotracks-button\" aria-haspopup=\"menu\" aria-expanded=\"false\">\n <span class='audio-text'><%= title %></span> <span class=\"audio-arrow\"><%= icon %></span>\n</button>\n<ul class='gcore-skin-bg-color menu hidden' id=\"audiotracks-select\" role=\"menu\">\n <% for (const track of tracks) { %>\n <li>\n <a href=\"#\" class='gcore-skin-text-color' data-audiotracks-select=\"<%= track.id %>\" role=\"menuitemradio\" aria-checked=\"<%= track.id === current %>\">\n <%= track.label %>\n </a>\n </li>\n <% }; %>\n</ul>\n";
43341
+ const pluginHtml$6 = "<button class='gcore-skin-button-color media-control-dd' id=\"gplayer-audiotracks-button\" aria-haspopup=\"menu\" aria-expanded=\"false\">\n <span class=\"media-control-dd__text\" id=\"gplayer-audiotracks-button-text\"><%= title %></span>\n <span class=\"media-control-dd__arrow\"><%= icon %></span>\n</button>\n<ul class=\"gcore-skin-bg-color menu media-control-dd__popup\" id=\"gplayer-audiotracks-menu\" role=\"menu\">\n <% for (const track of tracks) { %>\n <li>\n <a href=\"#\" class=\"gcore-skin-text-color\" data-item=\"<%= track.id %>\" role=\"menuitemradio\" aria-checked=\"<%= track.id === current %>\">\n <%= track.label %>\n </a>\n </li>\n <% }; %>\n</ul>\n";
43342
43342
 
43343
43343
  const audioArrow = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg width=\"9px\" height=\"6px\" viewBox=\"0 0 9 6\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <!-- Generator: Sketch 49 (51002) - http://www.bohemiancoding.com/sketch -->\n <title>quality-arrow</title>\n <desc>Created with Sketch.</desc>\n <defs></defs>\n <g id=\"quality-arrow\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M5.07079194,5.78553848 C4.91457318,5.94277844 4.70551573,6.00941824 4.50028717,5.99893557 C4.2950586,6.00941824 4.08676693,5.94277844 3.92978239,5.78553848 L0.221118462,1.2997069 C-0.0737061539,1.00469478 -0.0737061539,0.526236029 0.221118462,0.231972666 C0.515177299,-0.0630394586 1.23500883,0.00734414472 1.64852907,0.00734414472 L7.77475484,0.00734414472 C8.21201421,0.00734414472 8.48539703,-0.0630394586 8.77945587,0.231972666 C9.07351471,0.526236029 9.07351471,1.00469478 8.77945587,1.2997069 L5.07079194,5.78553848 Z\"\n fill=\"#FFFFFE\"></path>\n </g>\n</svg>\n";
43344
43344
 
@@ -43649,7 +43649,7 @@ const INITIAL_SETTINGS = {
43649
43649
  default: [],
43650
43650
  seekEnabled: false,
43651
43651
  };
43652
- const T$l = 'plugins.media_control';
43652
+ const T$k = 'plugins.media_control';
43653
43653
  /**
43654
43654
  * Extended events for the {@link MediaControl} plugin
43655
43655
  * @beta
@@ -43931,7 +43931,7 @@ class MediaControl extends UICorePlugin {
43931
43931
  * Hides the media control UI
43932
43932
  */
43933
43933
  disable() {
43934
- trace(`${T$l} disable`);
43934
+ trace(`${T$k} disable`);
43935
43935
  this.userDisabled = true; // TODO distinguish between user and system (e.g., unplayable) disabled?
43936
43936
  this.hide();
43937
43937
  this.unbindKeyEvents();
@@ -43941,7 +43941,7 @@ class MediaControl extends UICorePlugin {
43941
43941
  * Reenables the plugin disabled earlier with the {@link MediaControl.disable} method
43942
43942
  */
43943
43943
  enable() {
43944
- trace(`${T$l} enable`);
43944
+ trace(`${T$k} enable`);
43945
43945
  if (this.options.chromeless) {
43946
43946
  return;
43947
43947
  }
@@ -44490,7 +44490,7 @@ class MediaControl extends UICorePlugin {
44490
44490
  const panel = this.getElementLocation(name);
44491
44491
  if (panel) {
44492
44492
  element.attr(`data-${name}`, '');
44493
- element.addClass('gplayer-mc-panel-item');
44493
+ element.addClass('media-control-item');
44494
44494
  mountTo(panel, element);
44495
44495
  }
44496
44496
  }
@@ -44871,7 +44871,7 @@ function mergeElements(a, b) {
44871
44871
  }
44872
44872
 
44873
44873
  const VERSION$7 = '2.22.4';
44874
- const T$k = 'plugins.audiotracks';
44874
+ // const T = 'plugins.audiotracks'
44875
44875
  /**
44876
44876
  * `PLUGIN` that makes possible to switch audio tracks via the media control UI.
44877
44877
  * @beta
@@ -44884,6 +44884,7 @@ const T$k = 'plugins.audiotracks';
44884
44884
  */
44885
44885
  class AudioTracks extends UICorePlugin {
44886
44886
  currentTrack = null;
44887
+ open = false;
44887
44888
  tracks = [];
44888
44889
  /**
44889
44890
  * @internal
@@ -44909,7 +44910,7 @@ class AudioTracks extends UICorePlugin {
44909
44910
  */
44910
44911
  get attributes() {
44911
44912
  return {
44912
- class: 'media-control-audiotracks',
44913
+ class: 'media-control-audiotracks media-control-dd__wrap',
44913
44914
  };
44914
44915
  }
44915
44916
  /**
@@ -44917,8 +44918,8 @@ class AudioTracks extends UICorePlugin {
44917
44918
  */
44918
44919
  get events() {
44919
44920
  return {
44920
- 'click [data-audiotracks-select]': 'onTrackSelect',
44921
- 'click #audiotracks-button': 'toggleMenu',
44921
+ 'click #gplayer-audiotracks-menu [data-item]': 'onTrackSelect',
44922
+ 'click #gplayer-audiotracks-button': 'toggleMenu',
44922
44923
  };
44923
44924
  }
44924
44925
  /**
@@ -44932,8 +44933,9 @@ class AudioTracks extends UICorePlugin {
44932
44933
  const mediaControl = this.core.getPlugin('media_control');
44933
44934
  assert(mediaControl, 'media_control plugin is required');
44934
44935
  this.listenTo(mediaControl, Events$1.MEDIACONTROL_RENDERED, () => {
44935
- mediaControl.slot('audiotracks', this.$el);
44936
+ this.mount();
44936
44937
  });
44938
+ // TODO when tracks change, re-render and re-attach
44937
44939
  this.listenTo(mediaControl, Events$1.MEDIACONTROL_HIDE, this.hideMenu);
44938
44940
  this.listenTo(mediaControl, ExtendedEvents.MEDIACONTROL_MENU_COLLAPSE, (from) => {
44939
44941
  if (from !== this.name) {
@@ -44948,6 +44950,7 @@ class AudioTracks extends UICorePlugin {
44948
44950
  tracks.find((track) => track.kind === 'main') ?? null; // TODO test
44949
44951
  this.tracks = tracks;
44950
44952
  this.render();
44953
+ this.mount();
44951
44954
  });
44952
44955
  this.listenTo(this.core.activeContainer, Events$1.CONTAINER_AUDIO_CHANGED, (track) => {
44953
44956
  this.currentTrack = track;
@@ -44955,6 +44958,10 @@ class AudioTracks extends UICorePlugin {
44955
44958
  this.buttonElement().removeClass('changing');
44956
44959
  this.updateText();
44957
44960
  });
44961
+ // TODO test
44962
+ this.listenTo(this.core.activeContainer, Events$1.CONTAINER_CLICK, () => {
44963
+ this.hideMenu();
44964
+ });
44958
44965
  }
44959
44966
  shouldRender() {
44960
44967
  // Render is called from the parent class constructor so tracks aren't available
@@ -44965,21 +44972,19 @@ class AudioTracks extends UICorePlugin {
44965
44972
  * @internal
44966
44973
  */
44967
44974
  render() {
44968
- if (!this.shouldRender()) {
44969
- return this;
44970
- }
44971
44975
  this.$el.html(AudioTracks.template({
44972
- tracks: this.tracks,
44976
+ tracks: this.tracks ?? [],
44973
44977
  title: this.getTitle(),
44974
44978
  icon: audioArrow,
44975
44979
  current: this.currentTrack?.id,
44976
44980
  }));
44981
+ this.$el.find('#gplayer-audiotracks-menu').hide();
44977
44982
  this.updateText();
44978
44983
  this.highlightCurrentTrack();
44979
44984
  return this;
44980
44985
  }
44981
44986
  onTrackSelect(event) {
44982
- const id = event.currentTarget?.dataset?.audiotracksSelect;
44987
+ const id = event.currentTarget?.dataset?.item;
44983
44988
  if (id) {
44984
44989
  this.selectAudioTrack(id);
44985
44990
  }
@@ -44993,25 +44998,34 @@ class AudioTracks extends UICorePlugin {
44993
44998
  this.updateText();
44994
44999
  }
44995
45000
  hideMenu() {
44996
- trace(`${T$k} hideMenu`);
44997
- this.$el.find('#audiotracks-select').addClass('hidden');
44998
- this.$el.find('#audiotracks-button').attr('aria-expanded', 'false');
45001
+ this.open = false;
45002
+ this.$el.find('#gplayer-audiotracks-menu').hide();
45003
+ this.$el.find('#gplayer-audiotracks-button').attr('aria-expanded', 'false');
44999
45004
  }
45000
45005
  toggleMenu() {
45001
- this.core.getPlugin('media_control').trigger(ExtendedEvents.MEDIACONTROL_MENU_COLLAPSE, this.name);
45002
- this.$el.find('#audiotracks-select').toggleClass('hidden'); // TODO use plain CSS display: none
45003
- const open = !this.$el.find('#audiotracks-select').hasClass('hidden'); // TODO hold state
45004
- this.$el.find('#audiotracks-button').attr('aria-expanded', open);
45006
+ this.open = !this.open;
45007
+ this.core
45008
+ .getPlugin('media_control')
45009
+ .trigger(ExtendedEvents.MEDIACONTROL_MENU_COLLAPSE, this.name);
45010
+ if (this.open) {
45011
+ this.$el.find('#gplayer-audiotracks-menu').show();
45012
+ }
45013
+ else {
45014
+ this.$el.find('#gplayer-audiotracks-menu').hide();
45015
+ }
45016
+ this.$el
45017
+ .find('#gplayer-audiotracks-button')
45018
+ .attr('aria-expanded', this.open);
45005
45019
  }
45006
45020
  buttonElement() {
45007
- return this.$('button');
45021
+ return this.$('#gplayer-audiotracks-button');
45008
45022
  }
45009
45023
  buttonElementText() {
45010
- return this.$('button .audio-text');
45024
+ return this.$el.find('#gplayer-audiotracks-button-text');
45011
45025
  }
45012
45026
  trackElement(id) {
45013
- return this.$('#audiotracks-select a' +
45014
- (id !== undefined ? `[data-audiotracks-select="${id}"]` : '')).parent();
45027
+ return this.$('#gplayer-audiotracks-menu a' +
45028
+ (id !== undefined ? `[data-item="${id}"]` : '')).parent();
45015
45029
  }
45016
45030
  getTitle() {
45017
45031
  if (!this.currentTrack) {
@@ -45042,6 +45056,11 @@ class AudioTracks extends UICorePlugin {
45042
45056
  .attr('aria-checked', 'true');
45043
45057
  }
45044
45058
  }
45059
+ mount() {
45060
+ if (this.shouldRender()) {
45061
+ this.core.getPlugin('media_control')?.slot('audiotracks', this.$el);
45062
+ }
45063
+ }
45045
45064
  }
45046
45065
 
45047
45066
  const templateHtml$2 = "<div class=\"big-mute-icon-wrapper\" data-big-mute id=\"gplayer-big-mute-button\">\n <div class=\"big-mute-icon gcore-skin-border-color\" data-big-mute-icon id=\"gplayer-big-mute-icon\"></div>\n</div>\n";
@@ -1,5 +1,4 @@
1
1
  import { UICorePlugin } from '@clappr/core';
2
- import '../../../assets/audio-tracks/style.scss';
3
2
  /**
4
3
  * `PLUGIN` that makes possible to switch audio tracks via the media control UI.
5
4
  * @beta
@@ -12,6 +11,7 @@ import '../../../assets/audio-tracks/style.scss';
12
11
  */
13
12
  export declare class AudioTracks extends UICorePlugin {
14
13
  private currentTrack;
14
+ private open;
15
15
  private tracks;
16
16
  /**
17
17
  * @internal
@@ -38,8 +38,8 @@ export declare class AudioTracks extends UICorePlugin {
38
38
  * @internal
39
39
  */
40
40
  get events(): {
41
- 'click [data-audiotracks-select]': string;
42
- 'click #audiotracks-button': string;
41
+ 'click #gplayer-audiotracks-menu [data-item]': string;
42
+ 'click #gplayer-audiotracks-button': string;
43
43
  };
44
44
  /**
45
45
  * @internal
@@ -63,5 +63,6 @@ export declare class AudioTracks extends UICorePlugin {
63
63
  private startTrackSwitching;
64
64
  private updateText;
65
65
  private highlightCurrentTrack;
66
+ private mount;
66
67
  }
67
68
  //# sourceMappingURL=AudioTracks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AudioTracks.d.ts","sourceRoot":"","sources":["../../../src/plugins/audio-selector/AudioTracks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAY,MAAM,cAAc,CAAA;AAO7D,OAAO,yCAAyC,CAAA;AAUhD;;;;;;;;;GASG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,YAAY,CAA0B;IAE9C,OAAO,CAAC,MAAM,CAAmB;IAEjC;;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,CAAuB;IAEvD;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACH,IAAa,MAAM;;;MAKlB;IAED;;OAEG;IACM,UAAU;IASnB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,wBAAwB;IAwBhC,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACM,MAAM;IAmBf,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,qBAAqB;CAe9B"}
1
+ {"version":3,"file":"AudioTracks.d.ts","sourceRoot":"","sources":["../../../src/plugins/audio-selector/AudioTracks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAY,MAAM,cAAc,CAAA;AAgB7D;;;;;;;;;GASG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,YAAY,CAA0B;IAE9C,OAAO,CAAC,IAAI,CAAQ;IAEpB,OAAO,CAAC,MAAM,CAAmB;IAEjC;;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,CAAuB;IAEvD;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACH,IAAa,MAAM;;;MAKlB;IAED;;OAEG;IACM,UAAU;IASnB,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,wBAAwB;IA6BhC,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACM,MAAM;IAgBf,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,qBAAqB;IAgB7B,OAAO,CAAC,KAAK;CAKd"}