@gcorevideo/player 2.28.16 → 2.28.17

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/dist/index.js CHANGED
@@ -12856,7 +12856,7 @@ var PlaybackEvents;
12856
12856
  // https://github.com/clappr/clappr/blob/8752995ea439321ac7ca3cd35e8c64de7a3c3d17/LICENSE
12857
12857
  const AUTO$1 = -1;
12858
12858
  const { now: now$2 } = Utils;
12859
- const T$e = 'playback.dash';
12859
+ const T$f = 'playback.dash';
12860
12860
  class DashPlayback extends BasePlayback {
12861
12861
  _levels = null;
12862
12862
  _currentLevel = null;
@@ -13130,7 +13130,7 @@ class DashPlayback extends BasePlayback {
13130
13130
  }
13131
13131
  _onPlaybackError = (event) => {
13132
13132
  // TODO
13133
- trace(`${T$e} _onPlaybackError`, { event });
13133
+ trace(`${T$f} _onPlaybackError`, { event });
13134
13134
  };
13135
13135
  _onDASHJSSError = (event) => {
13136
13136
  this._stopTimeUpdateTimer();
@@ -49961,7 +49961,7 @@ const AUTO = -1;
49961
49961
  const DEFAULT_RECOVER_ATTEMPTS = 16;
49962
49962
  Events$1.register('PLAYBACK_FRAGMENT_CHANGED');
49963
49963
  Events$1.register('PLAYBACK_FRAGMENT_PARSING_METADATA');
49964
- const T$d = 'playback.hls';
49964
+ const T$e = 'playback.hls';
49965
49965
  class HlsPlayback extends BasePlayback {
49966
49966
  _ccIsSetup = false;
49967
49967
  _ccTracksUpdated = false;
@@ -50285,7 +50285,7 @@ class HlsPlayback extends BasePlayback {
50285
50285
  }
50286
50286
  else {
50287
50287
  Log.error('hlsjs: failed to recover', { evt, data });
50288
- trace(`${T$d} _recover failed to recover`, {
50288
+ trace(`${T$e} _recover failed to recover`, {
50289
50289
  type: data.type,
50290
50290
  details: data.details,
50291
50291
  });
@@ -50371,7 +50371,7 @@ class HlsPlayback extends BasePlayback {
50371
50371
  this.trigger(Events$1.PLAYBACK_SETTINGSUPDATE);
50372
50372
  }
50373
50373
  _onHLSJSError(evt, data) {
50374
- trace(`${T$d} _onHLSJSError`, {
50374
+ trace(`${T$e} _onHLSJSError`, {
50375
50375
  fatal: data.fatal,
50376
50376
  type: data.type,
50377
50377
  details: data.details,
@@ -50419,7 +50419,7 @@ class HlsPlayback extends BasePlayback {
50419
50419
  evt,
50420
50420
  data,
50421
50421
  });
50422
- trace(`${T$d} _onHLSJSError trying to recover from network error`, {
50422
+ trace(`${T$e} _onHLSJSError trying to recover from network error`, {
50423
50423
  details: data.details,
50424
50424
  });
50425
50425
  error.level = PlayerError.Levels.WARN;
@@ -50432,7 +50432,7 @@ class HlsPlayback extends BasePlayback {
50432
50432
  evt,
50433
50433
  data,
50434
50434
  });
50435
- trace(`${T$d} _onHLSJSError trying to recover from media error`, {
50435
+ trace(`${T$e} _onHLSJSError trying to recover from media error`, {
50436
50436
  details: data.details,
50437
50437
  });
50438
50438
  error.level = PlayerError.Levels.WARN;
@@ -50462,7 +50462,7 @@ class HlsPlayback extends BasePlayback {
50462
50462
  return;
50463
50463
  }
50464
50464
  Log.warn('hlsjs: non-fatal error occurred', { evt, data });
50465
- trace(`${T$d} _onHLSJSError non-fatal error occurred`, {
50465
+ trace(`${T$e} _onHLSJSError non-fatal error occurred`, {
50466
50466
  type: data.type,
50467
50467
  details: data.details,
50468
50468
  });
@@ -50803,7 +50803,7 @@ class HlsPlayback extends BasePlayback {
50803
50803
  this.trigger(Events$1.PLAYBACK_AUDIO_AVAILABLE, data.audioTracks.map(toClapprTrack));
50804
50804
  }
50805
50805
  _onAudioTrackSwitched(_, data) {
50806
- trace(`${T$d} onAudioTrackSwitched`);
50806
+ trace(`${T$e} onAudioTrackSwitched`);
50807
50807
  // @ts-ignore
50808
50808
  const track = this._hls.audioTracks[data.id];
50809
50809
  this.trigger(Events$1.PLAYBACK_AUDIO_CHANGED, toClapprTrack(track));
@@ -50824,7 +50824,7 @@ function toClapprTrack(t) {
50824
50824
  };
50825
50825
  }
50826
50826
 
50827
- const T$c = 'playback.html5_video';
50827
+ const T$d = 'playback.html5_video';
50828
50828
  const STALL_TIMEOUT = 15000;
50829
50829
  class HTML5Video extends BasePlayback {
50830
50830
  stallTimerId = null;
@@ -50925,7 +50925,7 @@ class HTML5Video extends BasePlayback {
50925
50925
  switchAudioTrack(id) {
50926
50926
  const tracks = this.el.audioTracks;
50927
50927
  const supported = !!tracks;
50928
- trace(`${T$c} switchAudioTrack`, {
50928
+ trace(`${T$d} switchAudioTrack`, {
50929
50929
  supported,
50930
50930
  });
50931
50931
  if (supported) {
@@ -50944,7 +50944,7 @@ function registerPlaybacks() {
50944
50944
  Loader.registerPlayback(DashPlayback);
50945
50945
  }
50946
50946
 
50947
- const T$b = 'gplayer';
50947
+ const T$c = 'gplayer';
50948
50948
  const DEFAULT_OPTIONS = {
50949
50949
  autoPlay: false,
50950
50950
  debug: 'none',
@@ -51280,7 +51280,7 @@ class Player {
51280
51280
  }
51281
51281
  }
51282
51282
  triggerAutoPlay() {
51283
- trace(`${T$b} triggerAutoPlay`);
51283
+ trace(`${T$c} triggerAutoPlay`);
51284
51284
  setTimeout(() => {
51285
51285
  this.player?.play({
51286
51286
  autoPlay: true,
@@ -51298,7 +51298,7 @@ class Player {
51298
51298
  // TODO test
51299
51299
  events = {
51300
51300
  onReady: () => {
51301
- trace(`${T$b} onReady`, {
51301
+ trace(`${T$c} onReady`, {
51302
51302
  ready: this.ready,
51303
51303
  });
51304
51304
  if (this.ready) {
@@ -51332,7 +51332,7 @@ class Player {
51332
51332
  buildCoreOptions(rootNode) {
51333
51333
  const sources = this.buildMediaSourcesList();
51334
51334
  const source = sources[0];
51335
- trace(`${T$b} buildCoreOptions`, {
51335
+ trace(`${T$c} buildCoreOptions`, {
51336
51336
  source,
51337
51337
  sources,
51338
51338
  });
@@ -51409,7 +51409,7 @@ class Player {
51409
51409
  }
51410
51410
  }
51411
51411
 
51412
- var version$1 = "2.28.16";
51412
+ var version$1 = "2.28.17";
51413
51413
 
51414
51414
  var packages = {
51415
51415
  "node_modules/@clappr/core": {
@@ -51746,7 +51746,7 @@ const INITIAL_SETTINGS = {
51746
51746
  default: [],
51747
51747
  seekEnabled: false,
51748
51748
  };
51749
- const T$a = 'plugins.media_control';
51749
+ const T$b = 'plugins.media_control';
51750
51750
  /**
51751
51751
  * Extended events for the {@link MediaControl} plugin
51752
51752
  * @public
@@ -51982,8 +51982,8 @@ class MediaControl extends UICorePlugin {
51982
51982
  this.listenTo(this.core, Events$1.CORE_FULLSCREEN, this.show);
51983
51983
  this.listenTo(this.core, Events$1.CORE_OPTIONS_CHANGE, this.configure);
51984
51984
  this.listenTo(this.core, Events$1.CORE_RESIZE, this.playerResize);
51985
- this.listenTo(this.core, 'core:advertisement:start', this.onStartAd);
51986
- this.listenTo(this.core, 'core:advertisement:finish', this.onFinishAd);
51985
+ // this.listenTo(this.core, 'core:advertisement:start', this.onStartAd)
51986
+ // this.listenTo(this.core, 'core:advertisement:finish', this.onFinishAd)
51987
51987
  // const has360 = this.core?.getPlugin('video_360');
51988
51988
  // if (Browser.isiOS && has360) {
51989
51989
  // this.container?.el.addEventListener('click', e => {
@@ -52009,6 +52009,10 @@ class MediaControl extends UICorePlugin {
52009
52009
  this.listenTo(this.core.activeContainer, Events$1.CONTAINER_PAUSE, this.changeTogglePlay);
52010
52010
  this.listenTo(this.core.activeContainer, Events$1.CONTAINER_STOP, this.changeTogglePlay);
52011
52011
  this.listenTo(this.core.activeContainer, Events$1.CONTAINER_DBLCLICK, this.toggleFullscreen);
52012
+ const clk = clickaway(() => {
52013
+ this.resetUserKeepVisible();
52014
+ }, this.core.activeContainer.$el[0]);
52015
+ this.listenTo(this.core.activeContainer, Events$1.CONTAINER_CLICK, clk);
52012
52016
  this.listenTo(this.core.activeContainer, Events$1.CONTAINER_TIMEUPDATE, this.onTimeUpdate);
52013
52017
  this.listenTo(this.core.activeContainer, Events$1.CONTAINER_PROGRESS, this.updateProgressBar);
52014
52018
  this.listenTo(this.core.activeContainer, Events$1.CONTAINER_SETTINGSUPDATE, this.updateSettings);
@@ -52030,15 +52034,20 @@ class MediaControl extends UICorePlugin {
52030
52034
  * Hides the media control UI
52031
52035
  */
52032
52036
  disable() {
52037
+ trace(`${T$b} disable`);
52033
52038
  this.userDisabled = true; // TODO distinguish between user and system (e.g., unplayable) disabled?
52034
52039
  this.hide();
52035
52040
  this.unbindKeyEvents();
52036
- this.$el.hide(); // TODO why?
52041
+ this.$el.hide();
52037
52042
  }
52038
52043
  /**
52039
52044
  * Reenables the plugin disabled earlier with the {@link MediaControl.disable} method
52040
52045
  */
52041
52046
  enable() {
52047
+ trace(`${T$b} enable`, {
52048
+ chromeless: this.options.chromeless,
52049
+ userDisabled: this.userDisabled,
52050
+ });
52042
52051
  if (this.options.chromeless) {
52043
52052
  return;
52044
52053
  }
@@ -52192,7 +52201,7 @@ class MediaControl extends UICorePlugin {
52192
52201
  this.$el.removeClass('w370');
52193
52202
  this.$el.removeClass('w270');
52194
52203
  this.verticalVolume = false;
52195
- trace(`${T$a} playerResize`, {
52204
+ trace(`${T$b} playerResize`, {
52196
52205
  size,
52197
52206
  width: this.container.$el.width(),
52198
52207
  height: this.container.$el.height(),
@@ -52374,7 +52383,7 @@ class MediaControl extends UICorePlugin {
52374
52383
  else {
52375
52384
  this.hideVolumeId = setTimeout(() => {
52376
52385
  this.hideVolumeId = null;
52377
- trace(`${T$a} hideVolumeBar`, {
52386
+ trace(`${T$b} hideVolumeBar`, {
52378
52387
  volumeBarContainer: !!this.$volumeBarContainer,
52379
52388
  });
52380
52389
  this.$volumeBarContainer?.addClass('volume-bar-hide');
@@ -52446,15 +52455,26 @@ class MediaControl extends UICorePlugin {
52446
52455
  this.setSeekPercentage(pos);
52447
52456
  }
52448
52457
  setUserKeepVisible() {
52458
+ trace(`${T$b} setUserKeepVisible`, {
52459
+ userKeepVisible: this.userKeepVisible,
52460
+ });
52449
52461
  this.userKeepVisible = true;
52450
52462
  }
52451
52463
  resetUserKeepVisible() {
52464
+ trace(`${T$b} resetUserKeepVisible`, {
52465
+ userKeepVisible: this.userKeepVisible,
52466
+ });
52452
52467
  this.userKeepVisible = false;
52453
52468
  }
52454
52469
  isVisible() {
52455
52470
  return !this.$el.hasClass('media-control-hide');
52456
52471
  }
52457
52472
  show(event) {
52473
+ trace(`${T$b} show`, {
52474
+ disabled: this.disabled,
52475
+ disableControlPanel: this.options.disableControlPanel,
52476
+ event,
52477
+ });
52458
52478
  if (this.disabled || this.options.disableControlPanel) {
52459
52479
  return;
52460
52480
  }
@@ -52481,7 +52501,7 @@ class MediaControl extends UICorePlugin {
52481
52501
  this.updateCursorStyle(showing);
52482
52502
  }
52483
52503
  hide(delay = 0) {
52484
- trace(`${T$a} hide`, {
52504
+ trace(`${T$b} hide`, {
52485
52505
  delay,
52486
52506
  visible: this.isVisible(),
52487
52507
  disabled: this.disabled,
@@ -52893,23 +52913,6 @@ class MediaControl extends UICorePlugin {
52893
52913
  }
52894
52914
  this.resetUserKeepVisible();
52895
52915
  }
52896
- // TODO manage by the ads plugin
52897
- onStartAd() {
52898
- // this.advertisementPlaying = true
52899
- this.disable();
52900
- }
52901
- // TODO manage by the ads plugin
52902
- onFinishAd() {
52903
- // this.advertisementPlaying = false
52904
- this.enable();
52905
- }
52906
- // TODO remove
52907
- hideControllAds() {
52908
- if (this.container.advertisement &&
52909
- this.container.advertisement.type !== 'idle') {
52910
- this.hide();
52911
- }
52912
- }
52913
52916
  static getPageX(event) {
52914
52917
  return getPageX(event);
52915
52918
  }
@@ -52951,7 +52954,7 @@ class MediaControl extends UICorePlugin {
52951
52954
  }
52952
52955
  }
52953
52956
  delayHide(e) {
52954
- trace(`${T$a} delayHide`, {
52957
+ trace(`${T$b} delayHide`, {
52955
52958
  e,
52956
52959
  });
52957
52960
  this.hide(this.options.hideMediaControlDelay || DEFAULT_HIDE_DELAY);
@@ -52996,6 +52999,17 @@ function mergeElements(a, b) {
52996
52999
  return acc;
52997
53000
  }, a);
52998
53001
  }
53002
+ function clickaway(callback, element) {
53003
+ const handler = (event) => {
53004
+ if (!element.contains(event.target)) {
53005
+ callback();
53006
+ window.removeEventListener('click', handler);
53007
+ }
53008
+ };
53009
+ return () => {
53010
+ window.addEventListener('click', handler);
53011
+ };
53012
+ }
52999
53013
 
53000
53014
  const VERSION$7 = '2.22.4';
53001
53015
  // const T = 'plugins.audiotracks'
@@ -53192,7 +53206,7 @@ class AudioTracks extends UICorePlugin {
53192
53206
 
53193
53207
  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";
53194
53208
 
53195
- const T$9 = 'plugins.big_mute_button';
53209
+ const T$a = 'plugins.big_mute_button';
53196
53210
  // TODO rewrite as a container plugin
53197
53211
  /**
53198
53212
  * `PLUGIN` that displays a big mute button over the video when it's being played muted.
@@ -53255,7 +53269,7 @@ class BigMuteButton extends UICorePlugin {
53255
53269
  if (autoPlay) {
53256
53270
  this.autoPlay = true;
53257
53271
  }
53258
- trace(`${T$9} onPlay`, {
53272
+ trace(`${T$a} onPlay`, {
53259
53273
  autoPlay: this.autoPlay,
53260
53274
  wasMuted,
53261
53275
  volume,
@@ -53269,7 +53283,7 @@ class BigMuteButton extends UICorePlugin {
53269
53283
  }
53270
53284
  onStop(_, metadata) {
53271
53285
  const ui = metadata?.ui;
53272
- trace(`${T$9} onStop`, { ui });
53286
+ trace(`${T$a} onStop`, { ui });
53273
53287
  if (ui) {
53274
53288
  this.destroy();
53275
53289
  }
@@ -56077,11 +56091,13 @@ const initSpeedTest = (customMetrics) => {
56077
56091
  }
56078
56092
  }
56079
56093
  };
56080
- // getElementById('dlText').textContent = DEFAULT_DOWNLOAD_SPEED;
56081
- await fetch('https://iam.gcdn.co/info/json')
56094
+ const myinfoUrl = 'https://gcore.com/.well-known/cdn-debug/json';
56095
+ // await fetch('https://iam.gcdn.co/info/json')
56096
+ await fetch(myinfoUrl)
56082
56097
  .then(r => r.json())
56083
56098
  .then(data => {
56084
- const country = data['Server Country code'].toLowerCase();
56099
+ // const country = data['Server Country code'].toLowerCase();
56100
+ const country = getCountryCodeFromClientHeaders(data.client_headers);
56085
56101
  const server = serversList.find(s => s.country === country) || serversList[0];
56086
56102
  if (!server) {
56087
56103
  throw new Error('Failed to select a server');
@@ -56127,6 +56143,15 @@ function rankConnectionSpeed(dlSpeed) {
56127
56143
  }
56128
56144
  return 0;
56129
56145
  }
56146
+ function getCountryCodeFromClientHeaders(clientHeaders) {
56147
+ if (clientHeaders && clientHeaders['country']) {
56148
+ const m = clientHeaders['country'].match(/'code':\s*'([A-Za-z]{2})'/);
56149
+ if (m) {
56150
+ return m[1].toLowerCase();
56151
+ }
56152
+ }
56153
+ return 'lu';
56154
+ }
56130
56155
 
56131
56156
  const pluginHtml$4 = "<% general = metrics.general %>\n<% counters = metrics.counters %>\n<% timers = metrics.chrono %>\n<% extra = metrics.extra %>\n<% custom = metrics.custom %>\n\n<div class=\"stats-box\" id=\"nerd-stats-box\">\n <div class=\"stats-box-top\">\n <a class=\"close-button gplayer-lite-btn\" id=\"nerd-stats-close\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <g clip-path=\"url(#clip0_184_1489)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.41376 6.00013L13.7068 -0.292872C14.0978 -0.683872 14.0978 -1.31587 13.7068 -1.70687C13.3158 -2.09787 12.6838 -2.09787 12.2928 -1.70687L5.99976 4.58613L-0.293238 -1.70687C-0.684238 -2.09787 -1.31624 -2.09787 -1.70724 -1.70687C-2.09824 -1.31587 -2.09824 -0.683872 -1.70724 -0.292872L4.58576 6.00013L-1.70724 12.2931C-2.09824 12.6841 -2.09824 13.3161 -1.70724 13.7071C-1.51224 13.9021 -1.25624 14.0001 -1.00024 14.0001C-0.744238 14.0001 -0.488238 13.9021 -0.293238 13.7071L5.99976 7.41413L12.2928 13.7071C12.4878 13.9021 12.7438 14.0001 12.9998 14.0001C13.2558 14.0001 13.5118 13.9021 13.7068 13.7071C14.0978 13.3161 14.0978 12.6841 13.7068 12.2931L7.41376 6.00013Z\"\n fill=\"white\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_184_1489\">\n <rect width=\"12\" height=\"12\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n </a>\n </div>\n <div class=\"stats-box-main\">\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.general') %></span></li>\n <li>\n <%= i18n.t('stats.display_resolution') %>\n <div><span><span id=\"nerd-stats-resolution-width\"><%= general.resolution.width %></span>&times;<span id=\"nerd-stats-resolution-height\"><%= general.resolution.height %></span></span></div>\n </li>\n <li>\n <%= i18n.t('stats.volume') %>\n <div id=\"nerd-stats-volume\"><span><%= general.volume %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.connection_speed') %>\n <div><span id=\"nerd-stats-dl-text\"><%= custom.connectionSpeed %></span> <%= i18n.t('mbps') %></div>\n </li>\n <li class=\"canvas-wrapper\">\n <canvas id=\"nerd-stats-speed-test-canvas\" width=\"190\" height=\"20\"></canvas>\n </li>\n <li>\n <%= i18n.t('stats.ping') %>\n <div><span id=\"nerd-stats-ping-text\"><%= custom.ping %></span> <%= i18n.t('ms') %></div>\n </li>\n <li>\n <%= i18n.t('stats.jitter') %>\n <div><span id=\"nerd-stats-jitter-text\"><%= custom.jitter %></span> <%= i18n.t('ms') %></div>\n </li>\n </ul>\n\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.duration') %></span></li>\n <li>\n <%= i18n.t('stats.startup') %>\n <div><span id=\"nerd-stats-startup-time\"><%= timers.startup %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.watching') %>\n <div><span id=\"nerd-stats-watch-time\"><%= timers.watch %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.paused') %>\n <div><span id=\"nerd-stats-pause-time\"><%= timers.pause %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.buffering') %>\n <div><span id=\"nerd-stats-buffering-time\"><%= timers.buffering %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.session') %>\n <div><span id=\"nerd-stats-session-time\"><%= timers.session %></span></div>\n </li>\n </ul>\n\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.counters') %></span></li>\n <li>\n <%= i18n.t('stats.plays') %>\n <div><span id=\"nerd-stats-plays\"><%= counters.play %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.pauses') %>\n <div><span id=\"nerd-stats-pauses\"><%= counters.pause %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.errors') %>\n <div><span id=\"nerd-stats-errors\"><%= counters.error %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bufferings') %>\n <div><span id=\"nerd-stats-bufferings\"><%= counters.buffering %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.decoded_frames') %>\n <div><span id=\"nerd-stats-decoded-frames\"><%= counters.decodedFrames %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.dropped_frames') %>\n <div><span id=\"nerd-stats-dropped-frames\"><%= counters.droppedFrames %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.fps') %>\n <div><span id=\"nerd-stats-fps\"><%= counters.fps %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bitrate_changes') %>\n <div><span id=\"nerd-stats-bitrate-changes\"><%= counters.changeLevel %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.seeks') %>\n <div><span id=\"nerd-stats-seeks\"><%= counters.seek %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.fullscreen') %>\n <div><span id=\"nerd-stats-fullscreen\"><%= counters.fullscreen %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.dvr_seeks') %>\n <div><span id=\"nerd-stats-dvr-usage\"><%= counters.dvrUsage %></span></div>\n </li>\n </ul>\n\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.extra') %></span></li>\n <li>\n <%= i18n.t('stats.playback') %>\n <div><span id=\"nerd-stats-playback-name\"><%= extra.playbackName %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.playback_type') %>\n <div><span id=\"nerd-stats-playback-type\"><%= extra.playbackType %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.buffer_size') %>\n <div><span id=\"nerd-stats-buffer-size\"><%= extra.buffersize %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.video_duration') %>\n <div><span id=\"nerd-stats-video-duration\"><%= extra.duration %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.current_time') %>\n <div><span id=\"nerd-stats-current-time\"><%= extra.currentTime %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bitrate_weighted_mean') %>\n <div><span id=\"nerd-stats-bitrate-weighted-mean\"><%= extra.bitrateWeightedMean %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bitrate_most_used') %>\n <div><span id=\"nerd-stats-bitrate-most-used\"><%= extra.bitrateMostUsed %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.watched_percentage') %>\n <div><span id=\"nerd-stats-watched-percentage\"><%= extra.watchedPercentage %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.buffering_percentage') %>\n <div><span id=\"nerd-stats-buffering-percentage\"><%= extra.bufferingPercentage %></span></div>\n </li>\n </ul>\n </div>\n <div class=\"speedtest-summary\">\n <div class=\"speedtest-summary-header\"><%= i18n.t('stats.your_internet_quality_summary') %>:</div>\n <div class=\"speedtest-summary-block\">\n <div class=\"speedtest-summary-subblock\">\n <div class=\"speedtest-summary-subblock-content\">\n <div class=\"speedtest-quality\">\n <div class=\"speedtest-quality-header\"><%= i18n.t('vod') %>: \n <span id=\"nerd-stats-quality-vod-text\"><%= custom.vodQuality %></span></div>\n <div class=\"speedtest-quality-content\" data-streaming-type=\"vod\" id=\"nerd-stats-quality-vod\">\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"speedtest-summary-subblock\">\n <div class=\"speedtest-summary-subblock-content\">\n <div class=\"speedtest-quality\">\n <div class=\"speedtest-quality-header\"><%= i18n.t('live') %>: \n <span id=\"nerd-stats-quality-live-text\"><%= custom.liveQuality %></span></div>\n <div class=\"speedtest-quality-content\" data-streaming-type=\"live\" id=\"nerd-stats-quality-live\">\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"speedtest-footer\">\n <!-- <a class=\"speedtest-footer-about-link\" href=\"\" target=\"_blank\">I am not a nerd, what's this all about?</a>-->\n <button class=\"gplayer-lite-btn speedtest-btn speedtest-footer-refresh\" type=\"button\" id=\"nerd-stats-refresh\">\n <svg width=\"12\" height=\"10\" viewBox=\"0 0 12 10\" fill=\"none\">\n <path\n d=\"M6.03968 0.124998C3.64268 0.124998 1.67268 1.9565 1.48068 4.2915H1.00018C0.925833 4.29146 0.853156 4.31353 0.791378 4.35489C0.729601 4.39625 0.681511 4.45503 0.653218 4.52378C0.624925 4.59253 0.617705 4.66814 0.632476 4.74101C0.647248 4.81387 0.683343 4.88069 0.736177 4.933L1.57618 5.766C1.64641 5.83561 1.74129 5.87467 1.84018 5.87467C1.93906 5.87467 2.03395 5.83561 2.10418 5.766L2.94418 4.933C2.99701 4.88069 3.03311 4.81387 3.04788 4.74101C3.06265 4.66814 3.05543 4.59253 3.02714 4.52378C2.99884 4.45503 2.95075 4.39625 2.88898 4.35489C2.8272 4.31353 2.75452 4.29146 2.68018 4.2915H2.23368C2.42368 2.376 4.05268 0.874998 6.03968 0.874998C6.6948 0.873639 7.33932 1.04039 7.91158 1.35931C8.48384 1.67822 8.9647 2.13863 9.30818 2.6965C9.33331 2.73978 9.36686 2.7776 9.40684 2.80771C9.44682 2.83783 9.49243 2.85963 9.54097 2.87184C9.58951 2.88405 9.64001 2.88643 9.68948 2.87881C9.73895 2.8712 9.7864 2.85377 9.82902 2.82753C9.87165 2.80129 9.90859 2.76679 9.93767 2.72605C9.96675 2.68531 9.98739 2.63916 9.99835 2.59032C10.0093 2.54148 10.0104 2.49095 10.0015 2.44168C9.99264 2.39242 9.974 2.34544 9.94668 2.3035C9.53615 1.63664 8.96146 1.08621 8.27752 0.704805C7.59359 0.323402 6.82277 0.123774 6.03968 0.124998ZM10.4207 4.2335C10.3505 4.16419 10.2558 4.12532 10.1572 4.12532C10.0585 4.12532 9.96386 4.16419 9.89368 4.2335L9.05018 5.0665C8.9972 5.11874 8.96096 5.18557 8.94608 5.25847C8.93119 5.33137 8.93833 5.40705 8.96658 5.47588C8.99483 5.54472 9.04292 5.60359 9.10473 5.64501C9.16654 5.68644 9.23927 5.70853 9.31368 5.7085H9.76318C9.57218 7.6235 7.93768 9.125 5.94118 9.125C5.28399 9.12683 4.63729 8.96035 4.06269 8.64141C3.48808 8.32247 3.00473 7.86169 2.65868 7.303C2.63281 7.26107 2.59893 7.22465 2.55899 7.19582C2.51904 7.16699 2.47381 7.14631 2.42587 7.13495C2.37793 7.1236 2.32823 7.1218 2.27959 7.12966C2.23096 7.13752 2.18435 7.15488 2.14243 7.18075C2.05776 7.233 1.99731 7.31674 1.97438 7.41355C1.95146 7.51037 1.96793 7.61233 2.02018 7.697C2.43345 8.36457 3.01076 8.91521 3.69713 9.29647C4.38349 9.67772 5.15604 9.87689 5.94118 9.875C8.34518 9.875 10.3237 8.045 10.5162 5.7085H11.0002C11.0746 5.70853 11.1473 5.68644 11.2091 5.64501C11.2709 5.60359 11.319 5.54472 11.3473 5.47588C11.3755 5.40705 11.3827 5.33137 11.3678 5.25847C11.3529 5.18557 11.3167 5.11874 11.2637 5.0665L10.4207 4.2335Z\"\n fill=\"white\"/>\n </svg>\n <%= i18n.t('stats.refresh') %>\n </button>\n </div>\n</div>\n";
56132
56157
 
@@ -56206,7 +56231,7 @@ const PLAYBACK_NAMES = {
56206
56231
  hls: 'HLS.js',
56207
56232
  html5_video: 'Native',
56208
56233
  };
56209
- // const T = 'plugins.nerd_stats'
56234
+ const T$9 = 'plugins.nerd_stats';
56210
56235
  /**
56211
56236
  * `PLUGIN` that displays useful statistics regarding the playback as well as the network quality estimation.
56212
56237
  * @public
@@ -56343,6 +56368,9 @@ class NerdStats extends UICorePlugin {
56343
56368
  return super.destroy();
56344
56369
  }
56345
56370
  toggle = () => {
56371
+ trace(`${T$9} toggle`, {
56372
+ open: this.open,
56373
+ });
56346
56374
  if (this.open) {
56347
56375
  this.hide();
56348
56376
  }
@@ -56352,7 +56380,7 @@ class NerdStats extends UICorePlugin {
56352
56380
  };
56353
56381
  show() {
56354
56382
  this.$el.show();
56355
- this.statsBoxElem.scrollTop(this.statsBoxElem.scrollTop());
56383
+ this.statsBoxElem.scrollTop(this.statsBoxElem?.scrollTop());
56356
56384
  this.open = true;
56357
56385
  initSpeedTest(this.speedtestMetrics)
56358
56386
  .then(() => {
@@ -56360,10 +56388,14 @@ class NerdStats extends UICorePlugin {
56360
56388
  })
56361
56389
  .catch((e) => {
56362
56390
  reportError(e);
56391
+ trace(`${T$9} speedtest error`, {
56392
+ error: e,
56393
+ });
56363
56394
  this.disable();
56364
56395
  });
56365
56396
  }
56366
56397
  hide() {
56398
+ trace(`${T$9} hide`);
56367
56399
  this.$el.hide();
56368
56400
  this.open = false;
56369
56401
  stopSpeedtest();
@@ -1 +1 @@
1
- {"version":3,"file":"NerdStats.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-nerd-stats/NerdStats.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGZ,IAAI,EAGL,MAAM,cAAc,CAAA;AAuBrB,OAAO,0DAA0D,CAAA;AAiCjE;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,SAAS,CAAyB;IAE1C,OAAO,CAAC,gBAAgB,CAIvB;IAED,OAAO,CAAC,OAAO,CAAwB;IAEvC,OAAO,CAAC,IAAI,CAAQ;IAEpB,OAAO,CAAC,QAAQ,CAAU;IAE1B,OAAO,CAAC,YAAY,CAAc;IAElC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAuB;IAE7D;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAEvD;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACH,IAAa,MAAM;;;;MAMlB;IAED,OAAO,CAAC,OAAO;IAKf,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,sBAAsB,GAEjC;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,YAAY,GAEvB;gBAEW,IAAI,EAAE,IAAI;IAgBtB;;OAEG;IACM,UAAU;IAUnB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,wBAAwB;IAiChC;;OAEG;IACM,OAAO;IAKhB,OAAO,CAAC,MAAM,CAMb;IAED,OAAO,CAAC,IAAI;IAeZ,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,eAAe;IA6BvB,OAAO,CAAC,aAAa;IAkFrB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACM,MAAM;IAcf,OAAO,CAAC,MAAM;IAgBd,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,kBAAkB;CAU3B"}
1
+ {"version":3,"file":"NerdStats.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-nerd-stats/NerdStats.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGZ,IAAI,EAGL,MAAM,cAAc,CAAA;AAuBrB,OAAO,0DAA0D,CAAA;AAkCjE;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,SAAS,CAAyB;IAE1C,OAAO,CAAC,gBAAgB,CAIvB;IAED,OAAO,CAAC,OAAO,CAAwB;IAEvC,OAAO,CAAC,IAAI,CAAQ;IAEpB,OAAO,CAAC,QAAQ,CAAU;IAE1B,OAAO,CAAC,YAAY,CAAc;IAElC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAuB;IAE7D;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAEvD;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACH,IAAa,MAAM;;;;MAMlB;IAED,OAAO,CAAC,OAAO;IAKf,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,sBAAsB,GAEjC;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,YAAY,GAEvB;gBAEW,IAAI,EAAE,IAAI;IAgBtB;;OAEG;IACM,UAAU;IAUnB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,wBAAwB;IAiChC;;OAEG;IACM,OAAO;IAKhB,OAAO,CAAC,MAAM,CASb;IAED,OAAO,CAAC,IAAI;IAkBZ,OAAO,CAAC,IAAI;IAOZ,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,eAAe;IA6BvB,OAAO,CAAC,aAAa;IAkFrB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACM,MAAM;IAcf,OAAO,CAAC,MAAM;IAgBd,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,kBAAkB;CAU3B"}
@@ -14,12 +14,13 @@ import statsIcon from '../../../assets/icons/new/stats.svg';
14
14
  import { GearEvents } from '../bottom-gear/BottomGear.js';
15
15
  import { drawSummary, getPingQuality } from './utils.js';
16
16
  import { getDownloadQuality } from './utils.js';
17
+ import { trace } from '@gcorevideo/utils';
17
18
  const PLAYBACK_NAMES = {
18
19
  dash: 'DASH.js',
19
20
  hls: 'HLS.js',
20
21
  html5_video: 'Native',
21
22
  };
22
- // const T = 'plugins.nerd_stats'
23
+ const T = 'plugins.nerd_stats';
23
24
  /**
24
25
  * `PLUGIN` that displays useful statistics regarding the playback as well as the network quality estimation.
25
26
  * @public
@@ -156,6 +157,9 @@ export class NerdStats extends UICorePlugin {
156
157
  return super.destroy();
157
158
  }
158
159
  toggle = () => {
160
+ trace(`${T} toggle`, {
161
+ open: this.open,
162
+ });
159
163
  if (this.open) {
160
164
  this.hide();
161
165
  }
@@ -165,7 +169,7 @@ export class NerdStats extends UICorePlugin {
165
169
  };
166
170
  show() {
167
171
  this.$el.show();
168
- this.statsBoxElem.scrollTop(this.statsBoxElem.scrollTop());
172
+ this.statsBoxElem.scrollTop(this.statsBoxElem?.scrollTop());
169
173
  this.open = true;
170
174
  initSpeedTest(this.speedtestMetrics)
171
175
  .then(() => {
@@ -173,10 +177,14 @@ export class NerdStats extends UICorePlugin {
173
177
  })
174
178
  .catch((e) => {
175
179
  reportError(e);
180
+ trace(`${T} speedtest error`, {
181
+ error: e,
182
+ });
176
183
  this.disable();
177
184
  });
178
185
  }
179
186
  hide() {
187
+ trace(`${T} hide`);
180
188
  this.$el.hide();
181
189
  this.open = false;
182
190
  stopSpeedtest();
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/clappr-nerd-stats/speedtest/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAkC,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAqC9C,wBAAgB,oBAAoB,SAmBnC;AAID,eAAO,MAAM,aAAa,GAAI,eAAe,gBAAgB,KAAG,OAAO,CAAC,IAAI,CA+E3E,CAAC;AAEF,eAAO,MAAM,aAAa,YAIzB,CAAC;AAEF,eAAO,MAAM,cAAc,YAI1B,CAAC;AAEF,eAAO,MAAM,qBAAqB,YAEjC,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAGnD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/clappr-nerd-stats/speedtest/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAkC,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAqC9C,wBAAgB,oBAAoB,SAmBnC;AAID,eAAO,MAAM,aAAa,GAAI,eAAe,gBAAgB,KAAG,OAAO,CAAC,IAAI,CAiF3E,CAAC;AAEF,eAAO,MAAM,aAAa,YAIzB,CAAC;AAEF,eAAO,MAAM,cAAc,YAI1B,CAAC;AAEF,eAAO,MAAM,qBAAqB,YAEjC,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAGnD"}
@@ -102,11 +102,13 @@ export const initSpeedTest = (customMetrics) => {
102
102
  }
103
103
  }
104
104
  };
105
- // getElementById('dlText').textContent = DEFAULT_DOWNLOAD_SPEED;
106
- await fetch('https://iam.gcdn.co/info/json')
105
+ const myinfoUrl = 'https://gcore.com/.well-known/cdn-debug/json';
106
+ // await fetch('https://iam.gcdn.co/info/json')
107
+ await fetch(myinfoUrl)
107
108
  .then(r => r.json())
108
109
  .then(data => {
109
- const country = data['Server Country code'].toLowerCase();
110
+ // const country = data['Server Country code'].toLowerCase();
111
+ const country = getCountryCodeFromClientHeaders(data.client_headers);
110
112
  const server = serversList.find(s => s.country === country) || serversList[0];
111
113
  if (!server) {
112
114
  throw new Error('Failed to select a server');
@@ -152,3 +154,12 @@ function rankConnectionSpeed(dlSpeed) {
152
154
  }
153
155
  return 0;
154
156
  }
157
+ function getCountryCodeFromClientHeaders(clientHeaders) {
158
+ if (clientHeaders && clientHeaders['country']) {
159
+ const m = clientHeaders['country'].match(/'code':\s*'([A-Za-z]{2})'/);
160
+ if (m) {
161
+ return m[1].toLowerCase();
162
+ }
163
+ }
164
+ return 'lu';
165
+ }
@@ -360,9 +360,6 @@ export declare class MediaControl extends UICorePlugin {
360
360
  */
361
361
  render(): this;
362
362
  private handleFullScreenOnBtn;
363
- private onStartAd;
364
- private onFinishAd;
365
- private hideControllAds;
366
363
  private static getPageX;
367
364
  private static getPageY;
368
365
  private isSeekEnabledForHtml5Playback;
@@ -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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"}
@@ -285,8 +285,8 @@ export class MediaControl extends UICorePlugin {
285
285
  this.listenTo(this.core, Events.CORE_FULLSCREEN, this.show);
286
286
  this.listenTo(this.core, Events.CORE_OPTIONS_CHANGE, this.configure);
287
287
  this.listenTo(this.core, Events.CORE_RESIZE, this.playerResize);
288
- this.listenTo(this.core, 'core:advertisement:start', this.onStartAd);
289
- this.listenTo(this.core, 'core:advertisement:finish', this.onFinishAd);
288
+ // this.listenTo(this.core, 'core:advertisement:start', this.onStartAd)
289
+ // this.listenTo(this.core, 'core:advertisement:finish', this.onFinishAd)
290
290
  // const has360 = this.core?.getPlugin('video_360');
291
291
  // if (Browser.isiOS && has360) {
292
292
  // this.container?.el.addEventListener('click', e => {
@@ -312,6 +312,10 @@ export class MediaControl extends UICorePlugin {
312
312
  this.listenTo(this.core.activeContainer, Events.CONTAINER_PAUSE, this.changeTogglePlay);
313
313
  this.listenTo(this.core.activeContainer, Events.CONTAINER_STOP, this.changeTogglePlay);
314
314
  this.listenTo(this.core.activeContainer, Events.CONTAINER_DBLCLICK, this.toggleFullscreen);
315
+ const clk = clickaway(() => {
316
+ this.resetUserKeepVisible();
317
+ }, this.core.activeContainer.$el[0]);
318
+ this.listenTo(this.core.activeContainer, Events.CONTAINER_CLICK, clk);
315
319
  this.listenTo(this.core.activeContainer, Events.CONTAINER_TIMEUPDATE, this.onTimeUpdate);
316
320
  this.listenTo(this.core.activeContainer, Events.CONTAINER_PROGRESS, this.updateProgressBar);
317
321
  this.listenTo(this.core.activeContainer, Events.CONTAINER_SETTINGSUPDATE, this.updateSettings);
@@ -333,15 +337,20 @@ export class MediaControl extends UICorePlugin {
333
337
  * Hides the media control UI
334
338
  */
335
339
  disable() {
340
+ trace(`${T} disable`);
336
341
  this.userDisabled = true; // TODO distinguish between user and system (e.g., unplayable) disabled?
337
342
  this.hide();
338
343
  this.unbindKeyEvents();
339
- this.$el.hide(); // TODO why?
344
+ this.$el.hide();
340
345
  }
341
346
  /**
342
347
  * Reenables the plugin disabled earlier with the {@link MediaControl.disable} method
343
348
  */
344
349
  enable() {
350
+ trace(`${T} enable`, {
351
+ chromeless: this.options.chromeless,
352
+ userDisabled: this.userDisabled,
353
+ });
345
354
  if (this.options.chromeless) {
346
355
  return;
347
356
  }
@@ -749,15 +758,26 @@ export class MediaControl extends UICorePlugin {
749
758
  this.setSeekPercentage(pos);
750
759
  }
751
760
  setUserKeepVisible() {
761
+ trace(`${T} setUserKeepVisible`, {
762
+ userKeepVisible: this.userKeepVisible,
763
+ });
752
764
  this.userKeepVisible = true;
753
765
  }
754
766
  resetUserKeepVisible() {
767
+ trace(`${T} resetUserKeepVisible`, {
768
+ userKeepVisible: this.userKeepVisible,
769
+ });
755
770
  this.userKeepVisible = false;
756
771
  }
757
772
  isVisible() {
758
773
  return !this.$el.hasClass('media-control-hide');
759
774
  }
760
775
  show(event) {
776
+ trace(`${T} show`, {
777
+ disabled: this.disabled,
778
+ disableControlPanel: this.options.disableControlPanel,
779
+ event,
780
+ });
761
781
  if (this.disabled || this.options.disableControlPanel) {
762
782
  return;
763
783
  }
@@ -1196,23 +1216,6 @@ export class MediaControl extends UICorePlugin {
1196
1216
  }
1197
1217
  this.resetUserKeepVisible();
1198
1218
  }
1199
- // TODO manage by the ads plugin
1200
- onStartAd() {
1201
- // this.advertisementPlaying = true
1202
- this.disable();
1203
- }
1204
- // TODO manage by the ads plugin
1205
- onFinishAd() {
1206
- // this.advertisementPlaying = false
1207
- this.enable();
1208
- }
1209
- // TODO remove
1210
- hideControllAds() {
1211
- if (this.container.advertisement &&
1212
- this.container.advertisement.type !== 'idle') {
1213
- this.hide();
1214
- }
1215
- }
1216
1219
  static getPageX(event) {
1217
1220
  return getPageX(event);
1218
1221
  }
@@ -1299,3 +1302,14 @@ function mergeElements(a, b) {
1299
1302
  return acc;
1300
1303
  }, a);
1301
1304
  }
1305
+ function clickaway(callback, element) {
1306
+ const handler = (event) => {
1307
+ if (!element.contains(event.target)) {
1308
+ callback();
1309
+ window.removeEventListener('click', handler);
1310
+ }
1311
+ };
1312
+ return () => {
1313
+ window.addEventListener('click', handler);
1314
+ };
1315
+ }