@gcorevideo/player 2.25.9 → 2.26.0

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 (177) hide show
  1. package/dist/core.js +23 -78
  2. package/dist/index.css +1193 -1193
  3. package/dist/index.embed.js +89 -153
  4. package/dist/index.js +112 -249
  5. package/dist/player.d.ts +2798 -2785
  6. package/docs/api/player.bigmutebutton.md +0 -3
  7. package/docs/api/player.bottomgear.additem.md +0 -3
  8. package/docs/api/player.bottomgear.md +2 -5
  9. package/docs/api/player.bottomgear.refresh.md +0 -3
  10. package/docs/api/player.clapprstats._constructor_.md +0 -3
  11. package/docs/api/player.clapprstats.clearmetrics.md +0 -3
  12. package/docs/api/player.clapprstats.exportmetrics.md +1 -4
  13. package/docs/api/player.clapprstats.md +2 -7
  14. package/docs/api/player.clapprstatsbitratetrack.md +0 -3
  15. package/docs/api/player.clapprstatschronograph.md +0 -13
  16. package/docs/api/player.clapprstatscounter.md +0 -25
  17. package/docs/api/player.clapprstatsevents.md +1 -4
  18. package/docs/api/player.clapprstatsmetrics.md +0 -3
  19. package/docs/api/player.clapprstatssettings.md +1 -4
  20. package/docs/api/player.clapprstatssettings.runeach.md +0 -3
  21. package/docs/api/player.clicktopause.md +0 -3
  22. package/docs/api/player.clips.destroy.md +0 -3
  23. package/docs/api/player.clips.disable.md +0 -3
  24. package/docs/api/player.clips.enable.md +0 -3
  25. package/docs/api/player.clips.gettext.md +0 -3
  26. package/docs/api/player.clips.md +1 -16
  27. package/docs/api/player.clips.render.md +0 -3
  28. package/docs/api/player.clips.supportedversion.md +0 -3
  29. package/docs/api/player.clips.version.md +0 -3
  30. package/docs/api/player.clipspluginsettings.md +1 -4
  31. package/docs/api/player.clipspluginsettings.text.md +0 -3
  32. package/docs/api/player.closedcaptions.hide.md +0 -3
  33. package/docs/api/player.closedcaptions.md +6 -5
  34. package/docs/api/player.closedcaptions.show.md +0 -3
  35. package/docs/api/player.closedcaptionspluginsettings.md +0 -3
  36. package/docs/api/player.cmcdconfig._constructor_.md +0 -3
  37. package/docs/api/player.cmcdconfig.exportids.md +0 -3
  38. package/docs/api/player.cmcdconfig.md +2 -5
  39. package/docs/api/player.cmcdconfigoptions.contentid.md +0 -3
  40. package/docs/api/player.cmcdconfigoptions.md +2 -5
  41. package/docs/api/player.cmcdconfigoptions.sessionid.md +0 -3
  42. package/docs/api/player.dvrcontrols.md +0 -3
  43. package/docs/api/player.extendedevents.md +0 -7
  44. package/docs/api/player.favicon.md +0 -3
  45. package/docs/api/player.faviconpluginsettings.faviconcolor.md +0 -3
  46. package/docs/api/player.faviconpluginsettings.md +1 -4
  47. package/docs/api/player.gearevents.md +1 -4
  48. package/docs/api/player.md +24 -43
  49. package/docs/api/player.mediacontrol.defaultsettings.md +5 -1
  50. package/docs/api/player.mediacontrol.getavailablepopupheight.md +20 -0
  51. package/docs/api/player.mediacontrol.md +14 -0
  52. package/docs/api/player.menuoption.md +0 -3
  53. package/docs/api/player.nerdstats._constructor_.md +0 -3
  54. package/docs/api/player.nerdstats.md +1 -4
  55. package/docs/api/player.pictureinpicture.attributes.md +0 -3
  56. package/docs/api/player.pictureinpicture.md +2 -7
  57. package/docs/api/player.playbackrateoption.md +0 -3
  58. package/docs/api/player.playbackratesettings.md +0 -3
  59. package/docs/api/player.poster.disable.md +0 -3
  60. package/docs/api/player.poster.enable.md +0 -3
  61. package/docs/api/player.poster.md +2 -5
  62. package/docs/api/player.posterpluginsettings.custom.md +0 -3
  63. package/docs/api/player.posterpluginsettings.md +4 -7
  64. package/docs/api/player.posterpluginsettings.showfornoop.md +0 -3
  65. package/docs/api/player.posterpluginsettings.showonvideoend.md +0 -3
  66. package/docs/api/player.posterpluginsettings.url.md +0 -3
  67. package/docs/api/player.qualitylevels.events.md +0 -3
  68. package/docs/api/player.qualitylevels.md +0 -5
  69. package/docs/api/player.qualitylevelspluginsettings.labels.md +0 -3
  70. package/docs/api/player.qualitylevelspluginsettings.md +2 -5
  71. package/docs/api/player.qualitylevelspluginsettings.restrictresolution.md +0 -3
  72. package/docs/api/player.skiptime.container.md +0 -3
  73. package/docs/api/player.skiptime.md +0 -9
  74. package/docs/api/player.skiptime.name.md +0 -3
  75. package/docs/api/player.skiptime.supportedversion.md +0 -3
  76. package/docs/api/player.volumefadeevents.md +0 -5
  77. package/docs/api/player.volumefadesettings.md +0 -3
  78. package/docs/api/player.zeptoresult.md +0 -3
  79. package/lib/Player.d.ts.map +1 -1
  80. package/lib/Player.js +0 -29
  81. package/lib/playback/HTML5Video.d.ts.map +1 -1
  82. package/lib/playback/HTML5Video.js +0 -18
  83. package/lib/playback/dash-playback/DashPlayback.d.ts.map +1 -1
  84. package/lib/playback/dash-playback/DashPlayback.js +0 -10
  85. package/lib/playback/hls-playback/HlsPlayback.d.ts +0 -1
  86. package/lib/playback/hls-playback/HlsPlayback.d.ts.map +1 -1
  87. package/lib/playback/hls-playback/HlsPlayback.js +22 -20
  88. package/lib/plugins/big-mute-button/BigMuteButton.d.ts +1 -1
  89. package/lib/plugins/big-mute-button/BigMuteButton.d.ts.map +1 -1
  90. package/lib/plugins/big-mute-button/BigMuteButton.js +1 -3
  91. package/lib/plugins/bottom-gear/BottomGear.d.ts +2 -2
  92. package/lib/plugins/bottom-gear/BottomGear.d.ts.map +1 -1
  93. package/lib/plugins/bottom-gear/BottomGear.js +4 -8
  94. package/lib/plugins/clappr-nerd-stats/NerdStats.d.ts +1 -1
  95. package/lib/plugins/clappr-nerd-stats/NerdStats.d.ts.map +1 -1
  96. package/lib/plugins/clappr-nerd-stats/NerdStats.js +3 -5
  97. package/lib/plugins/clappr-stats/ClapprStats.d.ts +3 -3
  98. package/lib/plugins/clappr-stats/ClapprStats.js +2 -2
  99. package/lib/plugins/clappr-stats/types.d.ts +5 -5
  100. package/lib/plugins/clappr-stats/types.js +3 -3
  101. package/lib/plugins/click-to-pause/ClickToPause.d.ts +1 -1
  102. package/lib/plugins/click-to-pause/ClickToPause.d.ts.map +1 -1
  103. package/lib/plugins/click-to-pause/ClickToPause.js +3 -7
  104. package/lib/plugins/clips/Clips.d.ts +2 -2
  105. package/lib/plugins/clips/Clips.d.ts.map +1 -1
  106. package/lib/plugins/clips/Clips.js +2 -6
  107. package/lib/plugins/cmcd-config/CmcdConfig.d.ts +2 -2
  108. package/lib/plugins/cmcd-config/CmcdConfig.js +1 -1
  109. package/lib/plugins/context-menu/ContextMenu.d.ts +1 -1
  110. package/lib/plugins/dvr-controls/DvrControls.d.ts +1 -1
  111. package/lib/plugins/dvr-controls/DvrControls.d.ts.map +1 -1
  112. package/lib/plugins/dvr-controls/DvrControls.js +3 -4
  113. package/lib/plugins/error-screen/ErrorScreen.d.ts.map +1 -1
  114. package/lib/plugins/error-screen/ErrorScreen.js +0 -3
  115. package/lib/plugins/favicon/Favicon.d.ts +2 -2
  116. package/lib/plugins/favicon/Favicon.js +1 -1
  117. package/lib/plugins/level-selector/QualityLevels.d.ts +2 -2
  118. package/lib/plugins/level-selector/QualityLevels.d.ts.map +1 -1
  119. package/lib/plugins/level-selector/QualityLevels.js +3 -11
  120. package/lib/plugins/media-control/MediaControl.d.ts +2 -5
  121. package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
  122. package/lib/plugins/media-control/MediaControl.js +4 -6
  123. package/lib/plugins/picture-in-picture/PictureInPicture.d.ts +3 -3
  124. package/lib/plugins/picture-in-picture/PictureInPicture.js +3 -3
  125. package/lib/plugins/playback-rate/PlaybackRate.d.ts +2 -2
  126. package/lib/plugins/playback-rate/PlaybackRate.d.ts.map +1 -1
  127. package/lib/plugins/playback-rate/PlaybackRate.js +0 -10
  128. package/lib/plugins/poster/Poster.d.ts +2 -2
  129. package/lib/plugins/poster/Poster.d.ts.map +1 -1
  130. package/lib/plugins/poster/Poster.js +3 -19
  131. package/lib/plugins/seek-time/SeekTime.d.ts.map +1 -1
  132. package/lib/plugins/seek-time/SeekTime.js +1 -6
  133. package/lib/plugins/skip-time/SkipTime.d.ts +1 -1
  134. package/lib/plugins/skip-time/SkipTime.d.ts.map +1 -1
  135. package/lib/plugins/skip-time/SkipTime.js +3 -15
  136. package/lib/plugins/source-controller/SourceController.d.ts.map +1 -1
  137. package/lib/plugins/source-controller/SourceController.js +0 -5
  138. package/lib/plugins/spinner-three-bounce/SpinnerThreeBounce.d.ts.map +1 -1
  139. package/lib/plugins/spinner-three-bounce/SpinnerThreeBounce.js +2 -18
  140. package/lib/plugins/subtitles/ClosedCaptions.d.ts +10 -2
  141. package/lib/plugins/subtitles/ClosedCaptions.d.ts.map +1 -1
  142. package/lib/plugins/subtitles/ClosedCaptions.js +12 -2
  143. package/lib/plugins/volume-fade/VolumeFade.d.ts +2 -2
  144. package/lib/plugins/volume-fade/VolumeFade.js +1 -1
  145. package/lib/types.d.ts +1 -1
  146. package/package.json +1 -1
  147. package/src/Player.ts +0 -30
  148. package/src/playback/HTML5Video.ts +0 -18
  149. package/src/playback/dash-playback/DashPlayback.ts +0 -11
  150. package/src/playback/hls-playback/HlsPlayback.ts +22 -29
  151. package/src/plugins/big-mute-button/BigMuteButton.ts +1 -4
  152. package/src/plugins/bottom-gear/BottomGear.ts +4 -8
  153. package/src/plugins/clappr-nerd-stats/NerdStats.ts +3 -5
  154. package/src/plugins/clappr-stats/ClapprStats.ts +3 -3
  155. package/src/plugins/clappr-stats/types.ts +5 -5
  156. package/src/plugins/click-to-pause/ClickToPause.ts +3 -8
  157. package/src/plugins/clips/Clips.ts +4 -7
  158. package/src/plugins/cmcd-config/CmcdConfig.ts +2 -2
  159. package/src/plugins/context-menu/ContextMenu.ts +1 -1
  160. package/src/plugins/dvr-controls/DvrControls.ts +3 -4
  161. package/src/plugins/error-screen/ErrorScreen.ts +0 -3
  162. package/src/plugins/favicon/Favicon.ts +2 -2
  163. package/src/plugins/level-selector/QualityLevels.ts +4 -12
  164. package/src/plugins/media-control/MediaControl.ts +4 -10
  165. package/src/plugins/picture-in-picture/PictureInPicture.ts +3 -3
  166. package/src/plugins/playback-rate/PlaybackRate.ts +2 -14
  167. package/src/plugins/poster/Poster.ts +4 -21
  168. package/src/plugins/seek-time/SeekTime.ts +2 -6
  169. package/src/plugins/skip-time/SkipTime.ts +3 -15
  170. package/src/plugins/source-controller/SourceController.ts +0 -5
  171. package/src/plugins/spinner-three-bounce/SpinnerThreeBounce.ts +2 -18
  172. package/src/plugins/subtitles/ClosedCaptions.ts +13 -3
  173. package/src/plugins/volume-fade/VolumeFade.ts +2 -2
  174. package/src/types.ts +1 -1
  175. package/temp/player.api.json +157 -152
  176. package/tsconfig.tsbuildinfo +1 -1
  177. package/docs/api/player.mediacontrolpluginsettings.md +0 -13
@@ -12524,7 +12524,6 @@ var PlaybackEvents;
12524
12524
  // https://github.com/clappr/clappr/blob/8752995ea439321ac7ca3cd35e8c64de7a3c3d17/LICENSE
12525
12525
  const AUTO$1 = -1;
12526
12526
  const { now: now$2 } = Utils;
12527
- const T$d = 'playback.dash';
12528
12527
  class DashPlayback extends BasePlayback {
12529
12528
  _levels = null;
12530
12529
  _currentLevel = null;
@@ -12873,11 +12872,6 @@ class DashPlayback extends BasePlayback {
12873
12872
  if (!this._dash) {
12874
12873
  return false;
12875
12874
  }
12876
- trace(`${T$d} get.dvrEnabled`, {
12877
- dvrWindowSize: this._dash?.getDVRWindowSize(),
12878
- minDvrSize: this._minDvrSize,
12879
- playbackType: this.getPlaybackType(),
12880
- });
12881
12875
  return (this._dash?.getDVRWindowSize() >= this._minDvrSize &&
12882
12876
  this.getPlaybackType() === Playback.LIVE);
12883
12877
  }
@@ -12895,7 +12889,6 @@ class DashPlayback extends BasePlayback {
12895
12889
  this.trigger(Events$1.PLAYBACK_PROGRESS, progress, {});
12896
12890
  }
12897
12891
  play() {
12898
- trace(`${T$d} play`, { dash: !!this._dash });
12899
12892
  !this._dash && this._setup();
12900
12893
  super.play();
12901
12894
  this._startTimeUpdateTimer();
@@ -41688,7 +41681,7 @@ const AUTO = -1;
41688
41681
  const DEFAULT_RECOVER_ATTEMPTS = 16;
41689
41682
  Events$1.register('PLAYBACK_FRAGMENT_CHANGED');
41690
41683
  Events$1.register('PLAYBACK_FRAGMENT_PARSING_METADATA');
41691
- const T$c = 'playback.hls';
41684
+ const T$6 = 'playback.hls';
41692
41685
  class HlsPlayback extends BasePlayback {
41693
41686
  _ccIsSetup = false;
41694
41687
  _ccTracksUpdated = false;
@@ -41961,9 +41954,9 @@ class HlsPlayback extends BasePlayback {
41961
41954
  this._hls.on(Hls.Events.FRAG_LOADED, (evt, data) => this._onFragmentLoaded(evt, data));
41962
41955
  this._hls.on(Hls.Events.FRAG_PARSING_METADATA, (evt, data) => this._onFragmentParsingMetadata(evt, data));
41963
41956
  this._hls.on(Hls.Events.ERROR, (evt, data) => this._onHLSJSError(evt, data));
41964
- // this._hls.on(HLSJS.Events.SUBTITLE_TRACK_LOADED, (evt, data) => this._onSubtitleLoaded(evt, data));
41965
- this._hls.on(Hls.Events.SUBTITLE_TRACK_LOADED, () => this._onSubtitleLoaded());
41966
- this._hls.on(Hls.Events.SUBTITLE_TRACKS_UPDATED, () => (this._ccTracksUpdated = true));
41957
+ // this._hls.on(HLSJS.Events.SUBTITLE_TRACK_LOADED, () =>
41958
+ // this._onSubtitleLoaded(),
41959
+ // )
41967
41960
  this._hls.on(Events.AUDIO_TRACKS_UPDATED, (evt, data) => this._onAudioTracksUpdated(evt, data));
41968
41961
  this._hls.on(Events.AUDIO_TRACK_SWITCHED, (evt, data) => this._onAudioTrackSwitched(evt, data));
41969
41962
  this.bindCustomListeners();
@@ -42012,7 +42005,7 @@ class HlsPlayback extends BasePlayback {
42012
42005
  }
42013
42006
  else {
42014
42007
  Log.error('hlsjs: failed to recover', { evt, data });
42015
- trace(`${T$c} _recover failed to recover`, {
42008
+ trace(`${T$6} _recover failed to recover`, {
42016
42009
  type: data.type,
42017
42010
  details: data.details,
42018
42011
  });
@@ -42098,7 +42091,7 @@ class HlsPlayback extends BasePlayback {
42098
42091
  this.trigger(Events$1.PLAYBACK_SETTINGSUPDATE);
42099
42092
  }
42100
42093
  _onHLSJSError(evt, data) {
42101
- trace(`${T$c} _onHLSJSError`, {
42094
+ trace(`${T$6} _onHLSJSError`, {
42102
42095
  fatal: data.fatal,
42103
42096
  type: data.type,
42104
42097
  details: data.details,
@@ -42146,7 +42139,7 @@ class HlsPlayback extends BasePlayback {
42146
42139
  evt,
42147
42140
  data,
42148
42141
  });
42149
- trace(`${T$c} _onHLSJSError trying to recover from network error`, {
42142
+ trace(`${T$6} _onHLSJSError trying to recover from network error`, {
42150
42143
  details: data.details,
42151
42144
  });
42152
42145
  error.level = PlayerError.Levels.WARN;
@@ -42159,7 +42152,7 @@ class HlsPlayback extends BasePlayback {
42159
42152
  evt,
42160
42153
  data,
42161
42154
  });
42162
- trace(`${T$c} _onHLSJSError trying to recover from media error`, {
42155
+ trace(`${T$6} _onHLSJSError trying to recover from media error`, {
42163
42156
  details: data.details,
42164
42157
  });
42165
42158
  error.level = PlayerError.Levels.WARN;
@@ -42189,7 +42182,7 @@ class HlsPlayback extends BasePlayback {
42189
42182
  return;
42190
42183
  }
42191
42184
  Log.warn('hlsjs: non-fatal error occurred', { evt, data });
42192
- trace(`${T$c} _onHLSJSError non-fatal error occurred`, {
42185
+ trace(`${T$6} _onHLSJSError non-fatal error occurred`, {
42193
42186
  type: data.type,
42194
42187
  details: data.details,
42195
42188
  });
@@ -42293,11 +42286,13 @@ class HlsPlayback extends BasePlayback {
42293
42286
  this._playbackType = (data.details.live ? Playback.LIVE : Playback.VOD);
42294
42287
  this._onLevelUpdated(evt, data);
42295
42288
  // Live stream subtitle tracks detection hack (may not immediately available)
42296
- if (this._ccTracksUpdated &&
42297
- this._playbackType === Playback.LIVE &&
42298
- this.hasClosedCaptionsTracks) {
42299
- this._onSubtitleLoaded();
42300
- }
42289
+ // if (
42290
+ // this._ccTracksUpdated &&
42291
+ // this._playbackType === Playback.LIVE &&
42292
+ // this.hasClosedCaptionsTracks
42293
+ // ) {
42294
+ // this._onSubtitleLoaded()
42295
+ // }
42301
42296
  if (prevPlaybackType !== this._playbackType) {
42302
42297
  this._updateSettings();
42303
42298
  }
@@ -42450,16 +42445,18 @@ class HlsPlayback extends BasePlayback {
42450
42445
  _onFragmentLoaded(evt, data) {
42451
42446
  this.trigger(Events$1.PLAYBACK_FRAGMENT_LOADED, data);
42452
42447
  }
42453
- _onSubtitleLoaded() {
42454
- // This event may be triggered multiple times
42455
- // Setup CC only once (disable CC by default)
42456
- if (!this._ccIsSetup) {
42457
- this.trigger(Events$1.PLAYBACK_SUBTITLE_AVAILABLE);
42458
- const trackId = this._playbackType === Playback.LIVE ? -1 : this.closedCaptionsTrackId;
42459
- this.closedCaptionsTrackId = trackId;
42460
- this._ccIsSetup = true;
42461
- }
42462
- }
42448
+ // _onSubtitleLoaded() {
42449
+ // trace(`${T} _onSubtitleLoaded`)
42450
+ // // This event may be triggered multiple times
42451
+ // // Setup CC only once (disable CC by default)
42452
+ // if (!this._ccIsSetup) {
42453
+ // this.trigger(Events.PLAYBACK_SUBTITLE_AVAILABLE)
42454
+ // const trackId =
42455
+ // this._playbackType === Playback.LIVE ? -1 : this.closedCaptionsTrackId
42456
+ // this.closedCaptionsTrackId = trackId
42457
+ // this._ccIsSetup = true
42458
+ // }
42459
+ // }
42463
42460
  _onLevelSwitch(evt, data) {
42464
42461
  if (!this.levels.length) {
42465
42462
  this._fillLevels();
@@ -42546,7 +42543,6 @@ function toClapprTrack(t) {
42546
42543
  };
42547
42544
  }
42548
42545
 
42549
- const T$b = 'playback.html5_video';
42550
42546
  const STALL_TIMEOUT = 15000;
42551
42547
  class HTML5Video extends BasePlayback {
42552
42548
  stallTimerId = null;
@@ -42554,9 +42550,6 @@ class HTML5Video extends BasePlayback {
42554
42550
  * @internal
42555
42551
  */
42556
42552
  createError(errorData, options) {
42557
- trace(`${T$b} createError`, {
42558
- errorData: { ...errorData },
42559
- });
42560
42553
  const i18n = this.i18n ||
42561
42554
  // @ts-ignore
42562
42555
  (this.core && this.core.i18n) ||
@@ -42580,15 +42573,8 @@ class HTML5Video extends BasePlayback {
42580
42573
  super._onEnded();
42581
42574
  }
42582
42575
  _handleBufferingEvents() {
42583
- trace(`${T$b} _handleBufferingEvents`, {
42584
- networkState: this.el.networkState,
42585
- });
42586
42576
  if (!this.stallTimerId) {
42587
42577
  this.stallTimerId = setTimeout(() => {
42588
- trace(`${T$b} _handleBufferingEvents stall timeout`, {
42589
- buffering: this.buffering,
42590
- ended: this.ended,
42591
- });
42592
42578
  this.stallTimerId = null;
42593
42579
  const error = this.createError({
42594
42580
  code: PlaybackErrorCode.MediaSourceUnavailable,
@@ -42671,7 +42657,7 @@ function registerPlaybacks() {
42671
42657
  Loader.registerPlayback(DashPlayback);
42672
42658
  }
42673
42659
 
42674
- const T$a = 'gplayer';
42660
+ const T$5 = 'gplayer';
42675
42661
  const DEFAULT_OPTIONS = {
42676
42662
  autoPlay: false,
42677
42663
  debug: 'none',
@@ -42759,9 +42745,6 @@ class Player {
42759
42745
  * ```
42760
42746
  */
42761
42747
  attachTo(playerElement) {
42762
- trace(`${T$a} attachTo`, {
42763
- player: !!this.player,
42764
- });
42765
42748
  assert.ok(!this.player, 'Player already initialized');
42766
42749
  assert.ok(playerElement, 'Player container element is required');
42767
42750
  if (this.config.debug === 'all' || this.config.debug === 'clappr') {
@@ -42769,9 +42752,6 @@ class Player {
42769
42752
  }
42770
42753
  const coreOpts = this.buildCoreOptions(playerElement);
42771
42754
  const { core, container } = Player.getRegisteredPlugins();
42772
- trace(`${T$a} init`, {
42773
- registeredPlaybacks: Loader.registeredPlaybacks.map((p) => p.prototype.name),
42774
- });
42775
42755
  coreOpts.plugins = {
42776
42756
  core: Object.values(core),
42777
42757
  container: Object.values(container),
@@ -42783,9 +42763,6 @@ class Player {
42783
42763
  * Destroys the player, releasing all resources and unmounting its UI from the DOM.
42784
42764
  */
42785
42765
  destroy() {
42786
- trace(`${T$a} destroy`, {
42787
- player: !!this.player,
42788
- });
42789
42766
  if (this.player) {
42790
42767
  this.player.destroy();
42791
42768
  this.player = null;
@@ -42970,12 +42947,6 @@ class Player {
42970
42947
  this.config = $.extend(true, this.config, config);
42971
42948
  }
42972
42949
  initPlayer(coreOptions) {
42973
- trace(`${T$a} initPlayer`, {
42974
- autoPlay: coreOptions.autoPlay,
42975
- sources: coreOptions.sources,
42976
- player: !!this.player,
42977
- // TODO selected options
42978
- });
42979
42950
  const player = new Player$1(coreOptions);
42980
42951
  this.player = player;
42981
42952
  this.bindCoreListeners();
@@ -43010,7 +42981,7 @@ class Player {
43010
42981
  // TODO test
43011
42982
  events = {
43012
42983
  onReady: () => {
43013
- trace(`${T$a} onReady`, {
42984
+ trace(`${T$5} onReady`, {
43014
42985
  ready: this.ready,
43015
42986
  });
43016
42987
  if (this.ready) {
@@ -43100,12 +43071,6 @@ class Player {
43100
43071
  assert.ok(this.player, 'Player is not initialized');
43101
43072
  const core = this.player.core;
43102
43073
  core.on(Events$1.CORE_SCREEN_ORIENTATION_CHANGED, ({ orientation }) => {
43103
- trace(`${T$a} on CORE_SCREEN_ORIENTATION_CHANGED`, {
43104
- rootNode: {
43105
- width: this.rootNode?.clientWidth,
43106
- height: this.rootNode?.clientHeight,
43107
- },
43108
- });
43109
43074
  if (Browser.isiOS && this.rootNode) {
43110
43075
  core?.resize({
43111
43076
  width: this.rootNode.clientWidth,
@@ -43447,9 +43412,10 @@ const INITIAL_SETTINGS = {
43447
43412
  default: [],
43448
43413
  seekEnabled: false,
43449
43414
  };
43415
+ // const T = 'plugins.media_control'
43450
43416
  /**
43451
43417
  * Extended events for the {@link MediaControl} plugin
43452
- * @beta
43418
+ * @public
43453
43419
  */
43454
43420
  var ExtendedEvents;
43455
43421
  (function (ExtendedEvents) {
@@ -43533,7 +43499,7 @@ class MediaControl extends UICorePlugin {
43533
43499
  }
43534
43500
  /**
43535
43501
  * @returns Default media control layout settings
43536
- * @remark
43502
+ * @remarks
43537
43503
  * The method can be used to change the default dashboard layout, for example, removing the standard UI elements
43538
43504
  * @example
43539
43505
  * ```ts
@@ -44867,11 +44833,11 @@ const templateHtml$2 = "<div class=\"big-mute-icon-wrapper\" data-big-mute id=\"
44867
44833
 
44868
44834
  insertStyle(".big-mute-icon-wrapper[data-big-mute] {\n position: absolute;\n z-index: 9998;\n background-color: transparent;\n display: flex;\n justify-content: center;\n width: 100%;\n height: calc(100% - 50px);\n margin: 0 auto;\n opacity: 0.75;\n transition: opacity 0.1s ease;\n pointer-events: auto;\n}\n.big-mute-icon-wrapper[data-big-mute].hide {\n display: none;\n}\n.big-mute-icon-wrapper[data-big-mute]:hover {\n cursor: pointer;\n}\n\n.big-mute-icon[data-big-mute-icon] {\n display: flex;\n align-items: center;\n justify-content: center;\n align-self: center;\n width: 120px;\n height: 120px;\n border: 2px solid white;\n border-radius: 50%;\n filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)\";\n filter: alpha(opacity=60);\n opacity: 1;\n box-shadow: 0 0 1px 0 white;\n background: rgba(240, 243, 247, 0.9411764706);\n z-index: 10000;\n}\n.big-mute-icon[data-big-mute-icon] svg {\n margin-left: 5px;\n width: 80px;\n height: 80px;\n}\n.big-mute-icon[data-big-mute-icon] svg path {\n fill: #1f1e1e !important;\n}\n.big-mute-icon[data-big-mute-icon]:hover {\n background: rgba(240, 243, 247, 0.8784313725);\n}\n.big-mute-icon[data-big-mute-icon]:hover svg path {\n fill: #151515 !important;\n}");
44869
44835
 
44870
- const T$9 = 'plugins.big_mute_button';
44836
+ const T$4 = 'plugins.big_mute_button';
44871
44837
  // TODO rewrite as a container plugin
44872
44838
  /**
44873
44839
  * `PLUGIN` that displays a big mute button over the video when it's being played muted.
44874
- * @beta
44840
+ * @public
44875
44841
  * @remarks
44876
44842
  * When pressed, it unmutes the video.
44877
44843
  * @example
@@ -44930,7 +44896,7 @@ class BigMuteButton extends UICorePlugin {
44930
44896
  if (autoPlay) {
44931
44897
  this.autoPlay = true;
44932
44898
  }
44933
- trace(`${T$9} onPlay`, {
44899
+ trace(`${T$4} onPlay`, {
44934
44900
  autoPlay: this.autoPlay});
44935
44901
  if (this.autoPlay && !wasMuted && volume === 0) {
44936
44902
  this.mount();
@@ -45013,10 +44979,11 @@ const gearIcon = "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"n
45013
44979
  const gearHdIcon = "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_28_1567)\">\n <path\n d=\"M19.14 12.94C19.18 12.64 19.2 12.33 19.2 12C19.2 11.68 19.18 11.36 19.13 11.06L21.16 9.47999C21.34 9.33999 21.39 9.06999 21.28 8.86999L19.36 5.54999C19.24 5.32999 18.99 5.25999 18.77 5.32999L16.38 6.28999C15.88 5.90999 15.35 5.58999 14.76 5.34999L14.4 2.80999C14.36 2.56999 14.16 2.39999 13.92 2.39999H10.08C9.83999 2.39999 9.64999 2.56999 9.60999 2.80999L9.24999 5.34999C8.65999 5.58999 8.11999 5.91999 7.62999 6.28999L5.23999 5.32999C5.01999 5.24999 4.76999 5.32999 4.64999 5.54999L2.73999 8.86999C2.61999 9.07999 2.65999 9.33999 2.85999 9.47999L4.88999 11.06C4.83999 11.36 4.79999 11.69 4.79999 12C4.79999 12.31 4.81999 12.64 4.86999 12.94L2.83999 14.52C2.65999 14.66 2.60999 14.93 2.71999 15.13L4.63999 18.45C4.75999 18.67 5.00999 18.74 5.22999 18.67L7.61999 17.71C8.11999 18.09 8.64999 18.41 9.23999 18.65L9.59999 21.19C9.64999 21.43 9.83999 21.6 10.08 21.6H13.92C14.16 21.6 14.36 21.43 14.39 21.19L14.75 18.65C15.34 18.41 15.88 18.09 16.37 17.71L18.76 18.67C18.98 18.75 19.23 18.67 19.35 18.45L21.27 15.13C21.39 14.91 21.34 14.66 21.15 14.52L19.14 12.94ZM12 15.6C10.02 15.6 8.39999 13.98 8.39999 12C8.39999 10.02 10.02 8.39999 12 8.39999C13.98 8.39999 15.6 10.02 15.6 12C15.6 13.98 13.98 15.6 12 15.6Z\"\n fill=\"#C9C9C9\"/>\n <rect x=\"13\" width=\"11\" height=\"7\" rx=\"1\" fill=\"#F6413B\"/>\n <path\n d=\"M14.6962 6V1.63636H15.3546V3.53267H17.53V1.63636H18.1905V6H17.53V4.0973H15.3546V6H14.6962ZM20.562 6H19.1493V1.63636H20.6067C21.0343 1.63636 21.4015 1.72372 21.7083 1.89844C22.0151 2.07173 22.2502 2.32102 22.4135 2.64631C22.5783 2.97017 22.6607 3.35866 22.6607 3.81179C22.6607 4.26634 22.5776 4.65696 22.4114 4.98366C22.2466 5.31037 22.008 5.56179 21.6955 5.73793C21.383 5.91264 21.0051 6 20.562 6ZM19.8077 5.42472H20.5257C20.8581 5.42472 21.1344 5.36222 21.3546 5.23722C21.5748 5.1108 21.7395 4.92827 21.8489 4.68963C21.9583 4.44957 22.013 4.15696 22.013 3.81179C22.013 3.46946 21.9583 3.17898 21.8489 2.94034C21.7409 2.7017 21.5797 2.5206 21.3652 2.39702C21.1507 2.27344 20.8844 2.21165 20.5662 2.21165H19.8077V5.42472Z\"\n fill=\"#C9C9C9\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_28_1567\">\n <rect width=\"24\" height=\"24\" fill=\"white\"/>\n </clipPath>\n </defs>\n</svg>\n";
45014
44980
 
45015
44981
  const VERSION$5 = '2.19.12';
44982
+ // const T = 'plugins.bottom_gear'
45016
44983
  const MENU_BACKLINK_HEIGHT = 44;
45017
44984
  /**
45018
44985
  * Events triggered by the plugin
45019
- * @beta
44986
+ * @public
45020
44987
  */
45021
44988
  var GearEvents;
45022
44989
  (function (GearEvents) {
@@ -45027,7 +44994,7 @@ var GearEvents;
45027
44994
  })(GearEvents || (GearEvents = {}));
45028
44995
  /**
45029
44996
  * `PLUGIN` that adds a button to extend the media controls UI with extra options.
45030
- * @beta
44997
+ * @public
45031
44998
  * @remarks
45032
44999
  * The plugin renders small gear icon to the right of the media controls.
45033
45000
  * It provides a base for attaching custom settings UI in the gear menu
@@ -45281,7 +45248,7 @@ class BottomGear extends UICorePlugin {
45281
45248
  }
45282
45249
 
45283
45250
  /**
45284
- * @beta
45251
+ * @public
45285
45252
  */
45286
45253
  var ClapprStatsChronograph;
45287
45254
  (function (ClapprStatsChronograph) {
@@ -45293,7 +45260,7 @@ var ClapprStatsChronograph;
45293
45260
  // Latency = 'latency',
45294
45261
  })(ClapprStatsChronograph || (ClapprStatsChronograph = {}));
45295
45262
  /**
45296
- * @beta
45263
+ * @public
45297
45264
  */
45298
45265
  var ClapprStatsCounter;
45299
45266
  (function (ClapprStatsCounter) {
@@ -45310,7 +45277,7 @@ var ClapprStatsCounter;
45310
45277
  ClapprStatsCounter["DvrUsage"] = "dvrUsage";
45311
45278
  })(ClapprStatsCounter || (ClapprStatsCounter = {}));
45312
45279
  /**
45313
- * @beta
45280
+ * @public
45314
45281
  */
45315
45282
  var ClapprStatsEvents;
45316
45283
  (function (ClapprStatsEvents) {
@@ -45390,7 +45357,7 @@ const CMCD_KEYS = [
45390
45357
  // const T = 'plugins.cmcd'
45391
45358
  /**
45392
45359
  * A `PLUGIN` that configures {@link https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf | CMCD} for playback
45393
- * @beta
45360
+ * @public
45394
45361
  * @remarks
45395
45362
  * Configuration options - {@link CmcdConfigOptions}.
45396
45363
  * @example
@@ -47605,9 +47572,10 @@ const PLAYBACK_NAMES = {
47605
47572
  hls: 'HLS.js',
47606
47573
  html5_video: 'Native',
47607
47574
  };
47575
+ // const T = 'plugins.nerd_stats'
47608
47576
  /**
47609
47577
  * `PLUGIN` that displays useful statistics regarding the playback as well as the network quality estimation.
47610
- * @beta
47578
+ * @public
47611
47579
  *
47612
47580
  * @remarks
47613
47581
  * Depends on:
@@ -47989,9 +47957,10 @@ function newMetrics() {
47989
47957
  // Copyright 2014 Globo.com Player authors. All rights reserved.
47990
47958
  // Use of this source code is governed by a BSD-style
47991
47959
  // license that can be found at https://github.com/clappr/clappr-plugins/blob/master/LICENSE.
47960
+ // const T = 'plugins.click_to_pause'
47992
47961
  /**
47993
47962
  * A small `PLUGIN` that toggles the playback state on click over the video container
47994
- * @beta
47963
+ * @public
47995
47964
  */
47996
47965
  class ClickToPause extends ContainerPlugin {
47997
47966
  pointerEnabled = false;
@@ -48100,7 +48069,7 @@ const CLAPPR_VERSION = '0.11.4';
48100
48069
  const COMPACT_WIDTH = 495;
48101
48070
  /**
48102
48071
  * `PLUGIN` that allows marking up the timeline of the video
48103
- * @beta
48072
+ * @public
48104
48073
  * @remarks
48105
48074
  * The plugin decorates the seekbar with notches to indicate the clips of the video and displays current clip text in the left panel
48106
48075
  *
@@ -48383,10 +48352,11 @@ const dvrHTML = "<div class=\"live-info\" id=\"gplayer-mc-live\"><%= i18n.t('liv
48383
48352
 
48384
48353
  insertStyle(".dvr-controls {\n --disabled-opacity: 0.3;\n --circle-radius: 5px;\n display: flex;\n align-items: center;\n color: var(--player-dvr-color);\n font-size: 10px;\n font-weight: 500;\n height: var(--bottom-panel);\n line-height: var(--bottom-panel);\n margin-left: 0;\n}\n.dvr-controls .live-info,\n.dvr-controls .live-button {\n font-size: 14px;\n font-weight: 500;\n margin-left: 20px;\n letter-spacing: 0.8px;\n text-transform: uppercase;\n}\n.dvr-controls .live-info::before,\n.dvr-controls .live-button::before {\n margin-right: 8px;\n content: \"\";\n display: inline-block;\n position: relative;\n width: calc(var(--circle-radius) * 2);\n height: calc(var(--circle-radius) * 2);\n border-radius: var(--circle-radius);\n background-color: var(--player-dvr-color);\n}\n.dvr-controls.disabled {\n opacity: var(--disabled-opacity);\n}\n.dvr-controls.disabled:before {\n background-color: var(--player-dvr-color);\n}\n.dvr-controls .live-info {\n text-transform: uppercase;\n color: #fffffe;\n}\n.dvr-controls .live-info::before {\n background-color: #ed4f4a;\n}\n.dvr-controls .live-button {\n cursor: pointer;\n outline: none;\n border: 0;\n color: var(--player-dvr-color);\n background-color: transparent;\n padding: 0;\n opacity: 0.7;\n transition: all 0.1s ease;\n}\n.dvr-controls .live-button:hover {\n opacity: 1;\n text-shadow: rgba(255, 255, 255, 0.75) 0 0 5px;\n}");
48385
48354
 
48355
+ // const T = 'plugins.dvr_controls'
48386
48356
  /**
48387
48357
  * `PLUGIN` that adds the DVR controls to the media control UI
48388
48358
  *
48389
- * @beta
48359
+ * @public
48390
48360
  *
48391
48361
  * @remarks
48392
48362
  * Depends on:
@@ -48499,7 +48469,6 @@ const templateHtml = "<div class=\"player-error-screen__content\" data-error-scr
48499
48469
 
48500
48470
  insertStyle("div.player-error-screen, [data-player] div.player-error-screen {\n color: #CCCACA;\n position: absolute;\n top: 0;\n height: 100%;\n width: 100%;\n background-color: rgba(0, 0, 0, 0.7);\n z-index: 2000;\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\ndiv.player-error-screen__content[data-error-screen], [data-player] div.player-error-screen__content[data-error-screen] {\n font-size: 14px;\n color: #CCCACA;\n margin-top: 45px;\n}\ndiv.player-error-screen__title[data-error-screen], [data-player] div.player-error-screen__title[data-error-screen] {\n font-weight: bold;\n line-height: 30px;\n font-size: 18px;\n}\ndiv.player-error-screen__message[data-error-screen], [data-player] div.player-error-screen__message[data-error-screen] {\n width: 90%;\n margin: 0 auto;\n}\ndiv.player-error-screen__code[data-error-screen], [data-player] div.player-error-screen__code[data-error-screen] {\n font-size: 13px;\n margin-top: 15px;\n}\ndiv.player-error-screen__reload, [data-player] div.player-error-screen__reload {\n cursor: pointer;\n width: 30px;\n margin: 15px auto 0;\n}");
48501
48471
 
48502
- const T$8 = 'plugins.error_screen';
48503
48472
  /**
48504
48473
  * `PLUGIN` that displays fatal errors nicely in the overlay on top of the player.
48505
48474
  * @public
@@ -48575,9 +48544,6 @@ class ErrorScreen extends UICorePlugin {
48575
48544
  }, 0);
48576
48545
  }
48577
48546
  onActiveContainerChanged() {
48578
- trace(`${T$8} onActiveContainerChanged`, {
48579
- reloading: this.core.options.reloading,
48580
- });
48581
48547
  this.err = null;
48582
48548
  this.listenTo(this.core.activeContainer.playback, Events$1.PLAYBACK_PLAY, this.onPlay);
48583
48549
  if (this.core.options.reloading) {
@@ -48634,16 +48600,16 @@ const buttonHtml$2 = "<button class=\"gplayer-lite-btn gcore-skin-button-color\"
48634
48600
  insertStyle(".media-control-skin-1 .media-control-item.media-control-pip {\n order: 95;\n}\n.media-control-skin-1 .media-control-item.media-control-pip button {\n height: 20px;\n}\n.media-control-skin-1 .media-control-item.media-control-pip button svg {\n height: 20px;\n}");
48635
48601
 
48636
48602
  const VERSION$3 = '0.0.1';
48637
- const T$7 = `plugins.pip`;
48603
+ const T$3 = `plugins.pip`;
48638
48604
  /**
48639
- * `PLUGIN` that enables picture in picture mode.
48640
- * @beta
48605
+ * `PLUGIN` that enables picture-in-picture mode.
48606
+ * @public
48641
48607
  * @remarks
48642
48608
  * Depends on:
48643
48609
  *
48644
48610
  * - {@link MediaControl}
48645
48611
  *
48646
- * It renders a button to toggle picture in picture mode in the media control UI.
48612
+ * It renders a button to toggle picture-in-picture mode in the media control UI.
48647
48613
  */
48648
48614
  class PictureInPicture extends UICorePlugin {
48649
48615
  /**
@@ -48717,7 +48683,7 @@ class PictureInPicture extends UICorePlugin {
48717
48683
  }
48718
48684
  }
48719
48685
  requestPictureInPicture() {
48720
- trace(`${T$7} requestPictureInPicture`, {
48686
+ trace(`${T$3} requestPictureInPicture`, {
48721
48687
  videoElement: !!this.videoElement,
48722
48688
  });
48723
48689
  this.videoElement.requestPictureInPicture();
@@ -48749,7 +48715,7 @@ const DEFAULT_PLAYBACK_RATES = [
48749
48715
  { value: 2.0, label: '2x' },
48750
48716
  ];
48751
48717
  const DEFAULT_PLAYBACK_RATE = 1;
48752
- const T$6 = 'plugins.playback_rate';
48718
+ const T$2 = 'plugins.playback_rate';
48753
48719
  /**
48754
48720
  * `PLUGIN` that allows changing the playback speed of the video.
48755
48721
  * @beta
@@ -48856,7 +48822,7 @@ class PlaybackRate extends UICorePlugin {
48856
48822
  this.mount();
48857
48823
  }
48858
48824
  mount() {
48859
- trace(`${T$6} mount`, {
48825
+ trace(`${T$2} mount`, {
48860
48826
  shouldMount: this.shouldMount(),
48861
48827
  });
48862
48828
  if (!this.shouldMount()) {
@@ -48873,7 +48839,7 @@ class PlaybackRate extends UICorePlugin {
48873
48839
  })));
48874
48840
  }
48875
48841
  onMetaDataLoaded() {
48876
- trace(`${T$6} onMetaDataLoaded`, {
48842
+ trace(`${T$2} onMetaDataLoaded`, {
48877
48843
  playbackType: this.core.activePlayback.getPlaybackType(),
48878
48844
  dvrEnabled: this.core.activePlayback.dvrEnabled,
48879
48845
  });
@@ -48895,16 +48861,12 @@ class PlaybackRate extends UICorePlugin {
48895
48861
  this.core.activePlayback?.setPlaybackRate(this.selectedRate);
48896
48862
  }
48897
48863
  else {
48898
- trace(`${T$6} onPlaybackRateChange not steering to the selected rate, it is seemingly a catchup algorithm working`, {
48864
+ trace(`${T$2} onPlaybackRateChange not steering to the selected rate, it is seemingly a catchup algorithm working`, {
48899
48865
  selectedRate: this.selectedRate,
48900
48866
  });
48901
48867
  }
48902
48868
  }
48903
48869
  shouldMount() {
48904
- trace(`${T$6} shouldMount`, {
48905
- playbackType: this.core.activePlayback?.getPlaybackType(),
48906
- dvrEnabled: this.core.activePlayback?.dvrEnabled,
48907
- });
48908
48870
  if (!this.core.activePlayback || !this.metadataLoaded) {
48909
48871
  return false;
48910
48872
  }
@@ -48918,9 +48880,6 @@ class PlaybackRate extends UICorePlugin {
48918
48880
  * @internal
48919
48881
  */
48920
48882
  render() {
48921
- trace(`${T$6} render`, {
48922
- shouldMount: this.shouldMount(),
48923
- });
48924
48883
  this.$el.html(PlaybackRate.listTemplate({
48925
48884
  arrowLeftIcon,
48926
48885
  checkIcon,
@@ -48964,13 +48923,13 @@ class PlaybackRate extends UICorePlugin {
48964
48923
  }
48965
48924
  }
48966
48925
  syncRate() {
48967
- trace(`${T$6} syncRate`, {
48926
+ trace(`${T$2} syncRate`, {
48968
48927
  selectedRate: this.selectedRate,
48969
48928
  });
48970
48929
  this.core.activePlayback?.setPlaybackRate(this.selectedRate);
48971
48930
  }
48972
48931
  resetPlaybackRate() {
48973
- trace(`${T$6} resetPlaybackRate`, {
48932
+ trace(`${T$2} resetPlaybackRate`, {
48974
48933
  selectedRate: this.selectedRate,
48975
48934
  });
48976
48935
  this.core.activePlayback?.setPlaybackRate(DEFAULT_PLAYBACK_RATE);
@@ -49005,7 +48964,7 @@ class PlaybackRate extends UICorePlugin {
49005
48964
  ?.label || `x${rate}`);
49006
48965
  }
49007
48966
  highlightCurrentRate() {
49008
- trace(`${T$6} highlightCurrentRate`, {
48967
+ trace(`${T$2} highlightCurrentRate`, {
49009
48968
  selectedRate: this.selectedRate,
49010
48969
  });
49011
48970
  this.allRateElements().removeClass('current');
@@ -49016,9 +48975,6 @@ class PlaybackRate extends UICorePlugin {
49016
48975
  .addClass('gcore-skin-active');
49017
48976
  }
49018
48977
  updateGearOptionLabel() {
49019
- trace(`${T$6} updateGearOptionLabel`, {
49020
- selectedRate: this.selectedRate,
49021
- });
49022
48978
  this.mount();
49023
48979
  }
49024
48980
  }
@@ -49030,10 +48986,10 @@ const posterHTML = "<div class=\"play-wrapper\" id=\"gplayer-poster\">\n <div
49030
48986
  //Copyright 2014 Globo.com Player authors. All rights reserved.
49031
48987
  // Use of this source code is governed by a BSD-style
49032
48988
  // license that can be found in the LICENSE file.
49033
- const T$5 = 'plugins.poster';
48989
+ // const T = 'plugins.poster'
49034
48990
  /**
49035
48991
  * `PLUGIN` that displays a poster image in the background and a big play button on top when playback is stopped
49036
- * @beta
48992
+ * @public
49037
48993
  * @remarks
49038
48994
  * When the playback is stopped or not yet started, the media control UI is disabled and hidden.
49039
48995
  * Media control gets activated once the metadata is loaded after playback is initiated.
@@ -49134,9 +49090,6 @@ class Poster extends UIContainerPlugin {
49134
49090
  super.disable();
49135
49091
  }
49136
49092
  onError(error) {
49137
- trace(`${T$5} onError`, {
49138
- enabled: this.enabled,
49139
- });
49140
49093
  if (this.hasFatalError) {
49141
49094
  return;
49142
49095
  }
@@ -49267,11 +49220,11 @@ const hdIcon = "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"non
49267
49220
 
49268
49221
  insertStyle(".quality-levels li.disabled {\n opacity: 0.5;\n pointer-events: none;\n}\n.quality-levels li.current {\n background-color: #000;\n}");
49269
49222
 
49270
- const T$4 = 'plugins.quality_levels';
49223
+ // const T = 'plugins.quality_levels'
49271
49224
  const VERSION$2 = 'v2.22.5';
49272
49225
  /**
49273
49226
  * `PLUGIN` that provides a UI to select the desired quality level of the playback.
49274
- * @beta
49227
+ * @public
49275
49228
  *
49276
49229
  * @remarks
49277
49230
  * Depends on:
@@ -49510,9 +49463,6 @@ class QualityLevels extends UICorePlugin {
49510
49463
  this.highlightCurrentLevel();
49511
49464
  }
49512
49465
  highlightCurrentLevel() {
49513
- trace(`${T$4} highlightCurrentLevel`, {
49514
- selectedLevelId: this.selectedLevelId,
49515
- });
49516
49466
  this.allLevelElements()
49517
49467
  .removeClass('current')
49518
49468
  .find('a')
@@ -49538,7 +49488,7 @@ insertStyle(".seek-time {\n position: absolute;\n white-space: nowrap;\n heig
49538
49488
  // Use of this source code is governed by a BSD-style
49539
49489
  // license that can be found at https://github.com/clappr/clappr-plugins/blob/master/LICENSE
49540
49490
  const { formatTime } = Utils;
49541
- const T$3 = 'plugins.seek_time';
49491
+ // const T = 'plugins.seek_time'
49542
49492
  /**
49543
49493
  * `PLUGIN` that adds a seek time indicator when the mouse pointer is over the seek bar.
49544
49494
  * @beta
@@ -49597,9 +49547,6 @@ class SeekTime extends UICorePlugin {
49597
49547
  showTime(event) {
49598
49548
  this.hoveringOverSeekBar = true;
49599
49549
  this.calculateHoverPosition(event);
49600
- trace(`${T$3} showTime`, {
49601
- hoverPosition: this.hoverPosition,
49602
- });
49603
49550
  this.update();
49604
49551
  }
49605
49552
  hideTime() {
@@ -49684,10 +49631,10 @@ const pluginHtml$1 = "<div class=\"skip-container\" id=\"mc-skip-container\">\n
49684
49631
 
49685
49632
  insertStyle(".container-with-poster-clickable .mc-skip-time {\n height: 0;\n}\n\n.mc-skip-time {\n position: absolute;\n width: 100%;\n height: calc(100% - 50px);\n z-index: 9998;\n background-color: transparent;\n font-family: Roboto, \"Open Sans\", Arial, sans-serif;\n}\n.mc-skip-time .skip-container {\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: space-between;\n}\n.mc-skip-time .skip-container .skip-item {\n flex: 1 0 0px;\n height: 100%;\n}");
49686
49633
 
49687
- const T$2 = 'plugins.skip_time';
49634
+ // const T = 'plugins.skip_time'
49688
49635
  /**
49689
49636
  * `PLUGIN` that allows skipping time by tapping on the left or right side of the video.
49690
- * @beta
49637
+ * @public
49691
49638
  */
49692
49639
  class SkipTime extends UICorePlugin {
49693
49640
  get name() {
@@ -49734,9 +49681,6 @@ class SkipTime extends UICorePlugin {
49734
49681
  this.position = 'left';
49735
49682
  }
49736
49683
  handleRewindClicks() {
49737
- trace(`${T$2} handleRewindClicks`, {
49738
- position: this.position,
49739
- });
49740
49684
  if (this.core.getPlaybackType() === Playback.LIVE &&
49741
49685
  !this.container.isDvrEnabled()) {
49742
49686
  this.toggleFullscreen();
@@ -49745,9 +49689,6 @@ class SkipTime extends UICorePlugin {
49745
49689
  this.handleSkip();
49746
49690
  }
49747
49691
  handleSkip() {
49748
- trace(`${T$2} handleSkip`, {
49749
- position: this.position,
49750
- });
49751
49692
  if (Browser.isMobile) {
49752
49693
  if (this.position === 'left') {
49753
49694
  const seekPos = this.container.getCurrentTime() - 10;
@@ -49800,7 +49741,7 @@ insertStyle(".spinner-three-bounce[data-spinner] {\n position: absolute;\n wid
49800
49741
  // Use of this source code is governed by a BSD-style
49801
49742
  // license that can be found in the LICENSE file.
49802
49743
  // https://github.com/clappr/clappr-plugins/blob/ffaa9d27005fa5a8a7c243ffc47eb5655b84b371/LICENSE
49803
- const T$1 = 'plugins.spinner';
49744
+ // const T = 'plugins.spinner'
49804
49745
  /**
49805
49746
  * Custom events emitted by the plugin
49806
49747
  * @public
@@ -49873,17 +49814,10 @@ class SpinnerThreeBounce extends UIContainerPlugin {
49873
49814
  this._hide();
49874
49815
  }
49875
49816
  onStop() {
49876
- trace(`${T$1} onStop`, {
49877
- hasFatalError: this.hasFatalError,
49878
- });
49879
49817
  this._hide();
49880
49818
  }
49881
49819
  onError(e) {
49882
49820
  this.hasFatalError = e.code === PlaybackErrorCode.MediaSourceUnavailable;
49883
- trace(`${T$1} onError`, {
49884
- hasFatalError: this.hasFatalError,
49885
- error: e.code,
49886
- });
49887
49821
  this._hide();
49888
49822
  }
49889
49823
  /**
@@ -49913,9 +49847,6 @@ class SpinnerThreeBounce extends UIContainerPlugin {
49913
49847
  }
49914
49848
  }
49915
49849
  _hide() {
49916
- trace(`${T$1} _hide`, {
49917
- userShown: this.userShown,
49918
- });
49919
49850
  if (this.userShown) {
49920
49851
  return;
49921
49852
  }
@@ -49930,9 +49861,6 @@ class SpinnerThreeBounce extends UIContainerPlugin {
49930
49861
  * @internal
49931
49862
  */
49932
49863
  render() {
49933
- trace(`${T$1} render`, {
49934
- buffering: this.container.buffering,
49935
- });
49936
49864
  this.$el.html(this.template());
49937
49865
  this.el.firstElementChild?.addEventListener('animationiteration', () => {
49938
49866
  this.trigger(SpinnerEvents.SYNC);
@@ -49948,7 +49876,7 @@ class SpinnerThreeBounce extends UIContainerPlugin {
49948
49876
  }
49949
49877
  }
49950
49878
 
49951
- const T = 'plugins.source_controller';
49879
+ const T$1 = 'plugins.source_controller';
49952
49880
  const INITIAL_RETRY_DELAY = 1000;
49953
49881
  const MAX_RETRY_DELAY = 5000;
49954
49882
  const RETRY_DELAY_BLUR = 500;
@@ -50094,10 +50022,6 @@ class SourceController extends CorePlugin {
50094
50022
  this.core.getPlugin('error_screen')?.disable(); // TODO test
50095
50023
  }
50096
50024
  onActiveContainerChanged() {
50097
- trace(`${T} onActiveContainerChanged`, {
50098
- retrying: this.active,
50099
- currentSource: this.sourcesList[this.currentSourceIndex],
50100
- });
50101
50025
  const spinner = this.core.activeContainer?.getPlugin('spinner');
50102
50026
  if (spinner) {
50103
50027
  this.sync = (cb) => {
@@ -50115,7 +50039,7 @@ class SourceController extends CorePlugin {
50115
50039
  }
50116
50040
  bindContainerEventListeners() {
50117
50041
  this.core.activePlayback.on(Events$1.PLAYBACK_ERROR, (error) => {
50118
- trace(`${T} on PLAYBACK_ERROR`, {
50042
+ trace(`${T$1} on PLAYBACK_ERROR`, {
50119
50043
  error: {
50120
50044
  code: error?.code,
50121
50045
  description: error?.description,
@@ -50139,7 +50063,7 @@ class SourceController extends CorePlugin {
50139
50063
  }
50140
50064
  });
50141
50065
  this.core.activePlayback.on(Events$1.PLAYBACK_PLAY, () => {
50142
- trace(`${T} on PLAYBACK_PLAY`, {
50066
+ trace(`${T$1} on PLAYBACK_PLAY`, {
50143
50067
  currentSource: this.sourcesList[this.currentSourceIndex],
50144
50068
  retrying: this.active,
50145
50069
  });
@@ -50158,7 +50082,7 @@ class SourceController extends CorePlugin {
50158
50082
  this.sourcesDelay = {};
50159
50083
  }
50160
50084
  retryPlayback() {
50161
- trace(`${T} retryPlayback enter`, {
50085
+ trace(`${T$1} retryPlayback enter`, {
50162
50086
  currentSourceIndex: this.currentSourceIndex,
50163
50087
  currentSource: this.sourcesList[this.currentSourceIndex],
50164
50088
  });
@@ -50171,7 +50095,7 @@ class SourceController extends CorePlugin {
50171
50095
  this.switching = false;
50172
50096
  this.core.load(nextSource.source, nextSource.mimeType);
50173
50097
  setTimeout(() => {
50174
- trace(`${T} retryPlayback playing`, {
50098
+ trace(`${T$1} retryPlayback playing`, {
50175
50099
  autoPlay: this.autoPlay,
50176
50100
  });
50177
50101
  this.core.activeContainer.play({
@@ -50211,9 +50135,10 @@ const stringHTML = "<div class=\"gplayer-cc-line\" id=\"gplayer-cc-line\">\n <p
50211
50135
 
50212
50136
  const VERSION = '2.19.14';
50213
50137
  const LOCAL_STORAGE_CC_ID = 'gplayer.plugins.cc.selected';
50138
+ const T = 'plugins.cc';
50214
50139
  /**
50215
50140
  * `PLUGIN` that provides a UI to select the subtitles when available.
50216
- * @beta
50141
+ * @public
50217
50142
  *
50218
50143
  * @remarks
50219
50144
  * The plugin is activated when closed captions tracks are detected in the media source.
@@ -50224,6 +50149,14 @@ const LOCAL_STORAGE_CC_ID = 'gplayer.plugins.cc.selected';
50224
50149
  * - {@link MediaControl}
50225
50150
  *
50226
50151
  * Configuration options - {@link ClosedCaptionsPluginSettings}
50152
+ *
50153
+ * Known issues:
50154
+ *
50155
+ * 1. When media source changes, the subtitles tracks aren't reloaded. Possible solution: use `playback.recycleVideo = false`
50156
+ * {@link PlayerConfig | main config option}, which will force new video element creation every time media source changes.
50157
+ * However, this may lead to other issues, such as autoplay not working (after media source has been changed).
50158
+ * {@link https://github.com/video-dev/hls.js/issues/2198 | related discussion}
50159
+ *
50227
50160
  * @example
50228
50161
  * ```ts
50229
50162
  * import { ClosedCaptions } from '@gcorevideo/player'
@@ -50332,6 +50265,9 @@ class ClosedCaptions extends UICorePlugin {
50332
50265
  });
50333
50266
  }
50334
50267
  onSubtitleAvailable() {
50268
+ trace(`${T} onSubtitleAvailable`, {
50269
+ tracks: this.core.activePlayback.closedCaptionsTracks.length,
50270
+ });
50335
50271
  this.applyTracks();
50336
50272
  this.mount();
50337
50273
  }
@@ -51080,7 +51016,7 @@ class Thumbnails extends UICorePlugin {
51080
51016
 
51081
51017
  /**
51082
51018
  * Events emitted by the VolumeFade plugin.
51083
- * @beta
51019
+ * @public
51084
51020
  */
51085
51021
  var VolumeFadeEvents;
51086
51022
  (function (VolumeFadeEvents) {