@gcorevideo/player 2.22.13 → 2.22.14

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 (31) hide show
  1. package/assets/bottom-gear/gear.scss +20 -13
  2. package/assets/clappr-nerd-stats/button.ejs +2 -2
  3. package/assets/clappr-nerd-stats/clappr-nerd-stats.scss +0 -43
  4. package/assets/level-selector/button.ejs +3 -3
  5. package/assets/level-selector/style.scss +0 -5
  6. package/assets/playback-rate/button.ejs +2 -2
  7. package/dist/core.js +22 -1
  8. package/dist/index.css +599 -630
  9. package/dist/index.js +56 -40
  10. package/dist/plugins/index.css +1485 -1516
  11. package/dist/plugins/index.js +35 -40
  12. package/lib/playback/hls-playback/HlsPlayback.d.ts.map +1 -1
  13. package/lib/playback/hls-playback/HlsPlayback.js +21 -0
  14. package/lib/plugins/clappr-nerd-stats/ClapprNerdStats.d.ts.map +1 -1
  15. package/lib/plugins/media-control/MediaControl.d.ts +4 -1
  16. package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
  17. package/lib/plugins/media-control/MediaControl.js +30 -14
  18. package/lib/plugins/playback-rate/PlaybackRate.d.ts.map +1 -1
  19. package/lib/plugins/playback-rate/PlaybackRate.js +1 -22
  20. package/package.json +1 -1
  21. package/src/playback/hls-playback/HlsPlayback.ts +22 -0
  22. package/src/plugins/clappr-nerd-stats/ClapprNerdStats.ts +0 -1
  23. package/src/plugins/level-selector/__tests__/__snapshots__/QualityLevels.test.ts.snap +3 -3
  24. package/src/plugins/media-control/MediaControl.ts +36 -15
  25. package/src/plugins/media-control/__tests__/MediaControl.test.ts +43 -10
  26. package/src/plugins/media-control/__tests__/__snapshots__/MediaControl.test.ts.snap +20 -20
  27. package/src/plugins/playback-rate/PlaybackRate.ts +1 -24
  28. package/src/plugins/playback-rate/__tests__/PlaybackRate.test.ts +2 -1
  29. package/tsconfig.tsbuildinfo +1 -1
  30. package/assets/clappr-nerd-stats/options-list.ejs +0 -9
  31. package/assets/clappr-nerd-stats/settings.ejs +0 -12
@@ -12374,7 +12374,7 @@ function rankConnectionSpeed(dlSpeed) {
12374
12374
 
12375
12375
  const pluginHtml$4 = "<% general = metrics.general %>\n<% counters = metrics.counters %>\n<% timers = metrics.timers %>\n<% extra = metrics.extra %>\n<% custom = metrics.custom %>\n\n<div class=\"stats-box\">\n <div class=\"stats-box-top\">\n <a class=\"close-button gplayer-lite-btn\" data-close-button>\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>General</span></li>\n <li>\n Display resolution:\n <div><span><%= general.displayResolution %></span></div>\n </li>\n <li>\n Volume:\n <div><span><%= general.volume %></span></div>\n </li>\n <li>\n Connection speed:\n <div><span id=\"dlText\"><%= custom.connectionSpeed %></span> Mbps</div>\n </li>\n <li class=\"canvas-wrapper\">\n <canvas id=\"speedTestCanvas\" width=\"190\" height=\"20\"></canvas>\n </li>\n <li>\n Ping:\n <div><span id=\"pingText\"><%= custom.ping %></span> ms</div>\n </li>\n <li>\n Jitter:\n <div><span id=\"jitterText\"><%= custom.jitter %></span> ms</div>\n </li>\n </ul>\n\n <ul>\n <li class=\"title\"><span>Counters</span></li>\n <li>\n Plays:\n <div><span><%= counters.play %></span></div>\n </li>\n <li>\n Pauses:\n <div><span><%= counters.pause %></span></div>\n </li>\n <li>\n Errors:\n <div><span><%= counters.error %></span></div>\n </li>\n <li>\n Bufferings:\n <div><span><%= counters.buffering %></span></div>\n </li>\n <li>\n Decoded frames:\n <div><span><%= counters.decodedFrames %></span></div>\n </li>\n <li>\n Dropped frames:\n <div><span><%= counters.droppedFrames %></span></div>\n </li>\n <li>\n Frames per second:\n <div><span><%= counters.fps %></span></div>\n </li>\n <li>\n Bitrate changes:\n <div><span><%= counters.changeLevel %></span></div>\n </li>\n <li>\n Seeks:\n <div><span><%= counters.seek %></span></div>\n </li>\n <li>\n Fullscreen:\n <div><span><%= counters.fullscreen %></span></div>\n </li>\n <li>\n DVR seeks:\n <div><span><%= counters.dvrUsage %></span></div>\n </li>\n </ul>\n\n <ul>\n <li class=\"title\"><span>Timers</span></li>\n <li>\n Startup time:\n <div><span><%= timers.startup %></span></div>\n </li>\n <li>\n Watching time:\n <div><span><%= timers.watch %></span></div>\n </li>\n <li>\n Pause time:\n <div><span><%= timers.pause %></span></div>\n </li>\n <li>\n Buffering time:\n <div><span><%= timers.buffering %></span></div>\n </li>\n <li>\n Session time:\n <div><span><%= timers.session %></span></div>\n </li>\n <!-- <li>-->\n <!-- Latency:-->\n <!-- <div><span><%= timers.latency %></span></div>-->\n <!-- </li>-->\n </ul>\n\n <ul>\n <li class=\"title\"><span>Extra</span></li>\n <li>\n Playback:\n <div><span><%= extra.playbackName %></span></div>\n </li>\n <li>\n Playback type:\n <div><span><%= extra.playbackType %></span></div>\n </li>\n <li>\n Buffer size:\n <div><span><%= extra.buffersize %></span></div>\n </li>\n <li>\n Video duration:\n <div><span><%= extra.duration %></span></div>\n </li>\n <li>\n Current time:\n <div><span><%= extra.currentTime %></span></div>\n </li>\n <li>\n Bitrate weighted mean:\n <div><span><%= extra.bitrateWeightedMean %></span></div>\n </li>\n <li>\n Bitrate most used:\n <div><span><%= extra.bitrateMostUsed %></span></div>\n </li>\n <li>\n % Watched:\n <div><span><%= extra.watchedPercentage %></span></div>\n </li>\n <li>\n % Buffering:\n <div><span><%= extra.bufferingPercentage %></span></div>\n </li>\n </ul>\n </div>\n <div class=\"speedtest-summary\">\n <div class=\"speedtest-summary-header\">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\">VOD: <%= custom.vodQuality %></div>\n <div class=\"speedtest-quality-content\" data-streaming-type=\"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\">Live: <%= custom.liveQuality %></div>\n <div class=\"speedtest-quality-content\" data-streaming-type=\"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\" data-refresh-button type=\"button\">\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 Refresh\n </button>\n </div>\n</div>\n";
12376
12376
 
12377
- const buttonHtml$3 = "<button class='nerd-button gplayer-lite-btn gcore-skin-text-color gear-option' id=\"nerd-stats-button\">\n <span class=\"stats-icon\"><%= icon %></span>\n <span><%= i18n.t('statistics') %></span>\n</button>\n";
12377
+ const buttonHtml$3 = "<button class='nerd-button gplayer-lite-btn gcore-skin-text-color gear-option' id=\"nerd-stats-button\">\n <span class=\"gear-option_icon\"><%= icon %></span>\n <span class=\"gear-option_label\"><%= i18n.t('statistics') %></span>\n</button>\n";
12378
12378
 
12379
12379
  const statsIcon = "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9.16675 14.1667H10.8334V9.16666H9.16675V14.1667ZM10.0001 7.5C10.2362 7.5 10.4342 7.42 10.5942 7.26C10.7542 7.1 10.834 6.90222 10.8334 6.66666C10.8334 6.43055 10.7534 6.2325 10.5934 6.0725C10.4334 5.9125 10.2356 5.83278 10.0001 5.83333C9.76397 5.83333 9.56591 5.91333 9.40591 6.07333C9.24591 6.23333 9.16619 6.43111 9.16675 6.66666C9.16675 6.90278 9.24675 7.10083 9.40675 7.26083C9.56675 7.42083 9.76453 7.50055 10.0001 7.5ZM10.0001 18.3333C8.8473 18.3333 7.76397 18.1144 6.75008 17.6767C5.73619 17.2389 4.85425 16.6453 4.10425 15.8958C3.35425 15.1458 2.76064 14.2639 2.32341 13.25C1.88619 12.2361 1.6673 11.1528 1.66675 10C1.66675 8.84722 1.88564 7.76389 2.32341 6.75C2.76119 5.73611 3.3548 4.85416 4.10425 4.10416C4.85425 3.35416 5.73619 2.76055 6.75008 2.32333C7.76397 1.88611 8.8473 1.66722 10.0001 1.66666C11.1529 1.66666 12.2362 1.88555 13.2501 2.32333C14.264 2.76111 15.1459 3.35472 15.8959 4.10416C16.6459 4.85416 17.2398 5.73611 17.6776 6.75C18.1154 7.76389 18.334 8.84722 18.3334 10C18.3334 11.1528 18.1145 12.2361 17.6767 13.25C17.239 14.2639 16.6454 15.1458 15.8959 15.8958C15.1459 16.6458 14.264 17.2397 13.2501 17.6775C12.2362 18.1153 11.1529 18.3339 10.0001 18.3333ZM10.0001 16.6667C11.8612 16.6667 13.4376 16.0208 14.7292 14.7292C16.0209 13.4375 16.6667 11.8611 16.6667 10C16.6667 8.13889 16.0209 6.5625 14.7292 5.27083C13.4376 3.97916 11.8612 3.33333 10.0001 3.33333C8.13897 3.33333 6.56258 3.97916 5.27091 5.27083C3.97925 6.5625 3.33341 8.13889 3.33341 10C3.33341 11.8611 3.97925 13.4375 5.27091 14.7292C6.56258 16.0208 8.13897 16.6667 10.0001 16.6667Z\" fill=\"#FFFFFF\"/>\n</svg>\n";
12380
12380
 
@@ -13320,7 +13320,7 @@ class ClipsPlugin extends UICorePlugin {
13320
13320
 
13321
13321
  const templateHtml$1 = "<ul class=\"context-menu-list\">\n <% if(options) { %>\n <% for (var i = 0; i < options.length; i++) { %>\n <li class=\"context-menu-list-item <%= options[i].class %>\"\n data-<%= options[i].name %>><%= options[i].label %></li>\n <% } %>\n <% } %>\n</ul>\n";
13322
13322
 
13323
- var version$1 = "2.22.13";
13323
+ var version$1 = "2.22.14";
13324
13324
 
13325
13325
  var packages = {
13326
13326
  "node_modules/@clappr/core": {
@@ -14418,8 +14418,10 @@ class MediaControl extends UICorePlugin {
14418
14418
  kibo;
14419
14419
  lastMouseX = 0;
14420
14420
  lastMouseY = 0;
14421
- needsUpdate = false;
14421
+ metadataLoaded = false;
14422
+ hasUpdate = false;
14422
14423
  persistConfig;
14424
+ renderTimerId = null;
14423
14425
  rendered = false;
14424
14426
  settings = INITIAL_SETTINGS;
14425
14427
  userDisabled = false;
@@ -14605,8 +14607,10 @@ class MediaControl extends UICorePlugin {
14605
14607
  this.listenTo(this.core.activeContainer, Events.CONTAINER_ENDED, this.ended);
14606
14608
  this.listenTo(this.core.activeContainer, Events.CONTAINER_VOLUME, this.onVolumeChanged);
14607
14609
  this.listenTo(this.core.activeContainer, Events.CONTAINER_OPTIONS_CHANGE, this.setInitialVolume);
14608
- // wait until the metadata has loaded and then check if fullscreen on video tag is supported
14609
- this.listenToOnce(this.core.activeContainer, Events.CONTAINER_LOADEDMETADATA, this.onLoadedMetadata);
14610
+ this.listenTo(this.core.activeContainer, Events.CONTAINER_LOADEDMETADATA, this.onLoadedMetadata);
14611
+ this.listenTo(this.core, Events.CONTAINER_DESTROYED, () => {
14612
+ this.cancelRenderTimer();
14613
+ });
14610
14614
  }
14611
14615
  /**
14612
14616
  * Hides the media control UI
@@ -14647,13 +14651,17 @@ class MediaControl extends UICorePlugin {
14647
14651
  // TODO sort out, use single utility function
14648
14652
  this.fullScreenOnVideoTagSupported = true;
14649
14653
  }
14650
- this.updateSettings();
14651
- if (this.core.activeContainer.getPlaybackType() === Playback.LIVE) {
14652
- this.$el.addClass('live');
14653
- }
14654
- else {
14655
- this.$el.removeClass('live');
14656
- }
14654
+ this.renderTimerId = setTimeout(() => {
14655
+ this.renderTimerId = null;
14656
+ this.metadataLoaded = true;
14657
+ this.render();
14658
+ if (this.core.activeContainer.getPlaybackType() === Playback.LIVE) {
14659
+ this.$el.addClass('live');
14660
+ }
14661
+ else {
14662
+ this.$el.removeClass('live');
14663
+ }
14664
+ }, 25);
14657
14665
  }
14658
14666
  updateVolumeUI() {
14659
14667
  // this will be called after a render
@@ -14876,6 +14884,7 @@ class MediaControl extends UICorePlugin {
14876
14884
  }
14877
14885
  onActiveContainerChanged() {
14878
14886
  this.fullScreenOnVideoTagSupported = false;
14887
+ this.metadataLoaded = false;
14879
14888
  // set the new container to match the volume of the last one
14880
14889
  this.setInitialVolume();
14881
14890
  this.changeTogglePlay();
@@ -15095,7 +15104,7 @@ class MediaControl extends UICorePlugin {
15095
15104
  const settingsChanged = serializeSettings(this.settings) !== serializeSettings(newSettings);
15096
15105
  if (settingsChanged) {
15097
15106
  this.settings = newSettings;
15098
- this.needsUpdate = true;
15107
+ this.hasUpdate = true;
15099
15108
  this.render();
15100
15109
  }
15101
15110
  }
@@ -15323,6 +15332,7 @@ class MediaControl extends UICorePlugin {
15323
15332
  * @internal
15324
15333
  */
15325
15334
  destroy() {
15335
+ this.cancelRenderTimer();
15326
15336
  $(document).unbind('mouseup', this.stopDrag);
15327
15337
  $(document).unbind('mousemove', this.updateDrag);
15328
15338
  $(document).unbind('touchend', this.stopDrag);
@@ -15330,6 +15340,12 @@ class MediaControl extends UICorePlugin {
15330
15340
  this.unbindKeyEvents();
15331
15341
  return super.destroy();
15332
15342
  }
15343
+ cancelRenderTimer() {
15344
+ if (this.renderTimerId) {
15345
+ clearTimeout(this.renderTimerId);
15346
+ this.renderTimerId = null;
15347
+ }
15348
+ }
15333
15349
  configure() {
15334
15350
  this.trigger(Events.MEDIACONTROL_OPTIONS_CHANGE);
15335
15351
  }
@@ -15337,8 +15353,8 @@ class MediaControl extends UICorePlugin {
15337
15353
  * @internal
15338
15354
  */
15339
15355
  render() {
15340
- trace(`${T$a} render`, { needsUpdate: this.needsUpdate });
15341
- if (!this.needsUpdate) {
15356
+ trace(`${T$a} render`, { needsUpdate: this.hasUpdate, metadataLoaded: this.metadataLoaded });
15357
+ if (!this.hasUpdate || !this.metadataLoaded) {
15342
15358
  return this;
15343
15359
  }
15344
15360
  const timeout = this.options.hideMediaControlDelay || 2000;
@@ -15388,7 +15404,7 @@ class MediaControl extends UICorePlugin {
15388
15404
  this.core.$el.append(this.el);
15389
15405
  this.rendered = true;
15390
15406
  this.updateVolumeUI();
15391
- this.needsUpdate = false;
15407
+ this.hasUpdate = false;
15392
15408
  // TODO setTimeout?
15393
15409
  this.trigger(Events.MEDIACONTROL_RENDERED);
15394
15410
  return this;
@@ -15949,7 +15965,7 @@ class PictureInPicture extends UICorePlugin {
15949
15965
  }
15950
15966
  }
15951
15967
 
15952
- const buttonHtml$1 = "<button class='gplayer-lite-btn gcore-skin-text-color gear-option' id=\"playback-rate-button\">\n <span class=\"gear-option_speed-icon\"><%= speedIcon %></span>\n <span class=\"gear-option_label\"><%= i18n.t('playback_rate') %></span>\n <span class=\"gear-option_arrow-right-icon\"><%= arrowRightIcon %></span>\n <span class='gear-option_value'><%= title %></span>\n</button>\n";
15968
+ const buttonHtml$1 = "<button class='gplayer-lite-btn gcore-skin-text-color gear-option' id=\"playback-rate-button\">\n <span class=\"gear-option_speed-icon gear-option_icon\"><%= speedIcon %></span>\n <span class=\"gear-option_label\"><%= i18n.t('playback_rate') %></span>\n <span class='gear-option_value'><%= title %></span>\n <span class=\"gear-option_arrow-right-icon\"><%= arrowRightIcon %></span>\n</button>\n";
15953
15969
 
15954
15970
  const listHtml$1 = "<button class=\"gplayer-lite-btn go-back gcore-skin-text-color\" id=\"playback-rate-back-button\">\n <span class=\"arrow-left-icon\"><%= arrowLeftIcon %></span>\n <%= i18n.t('playback_rate') %>\n</button>\n<ul class=\"gear-sub-menu\" id=\"playback-rate-menu\">\n <% for (const item of playbackRates) { %>\n <li<%= item.value === current ? ' class=\"current\"' : '' %>>\n <a href=\"#\" class=\"gear-sub-menu_btn gcore-skin-text-color<%= item.value === current ? ' gcore-skin-active' : '' %>\" data-rate=\"<%= item.value %>\">\n <span class=\"check-icon\"><%= checkIcon %></span>\n <%= item.label %>\n </a>\n </li>\n <% } %>\n</ul>";
15955
15971
 
@@ -16018,7 +16034,6 @@ class PlaybackRate extends UICorePlugin {
16018
16034
  // private prevSelectedRate: string | undefined
16019
16035
  selectedRate = DEFAULT_PLAYBACK_RATE;
16020
16036
  metadataLoaded = false;
16021
- // private playbackSettingsUpdateReceived = false
16022
16037
  mountTimerId = null;
16023
16038
  /**
16024
16039
  * @internal
@@ -16077,14 +16092,8 @@ class PlaybackRate extends UICorePlugin {
16077
16092
  }
16078
16093
  onActiveContainerChange() {
16079
16094
  this.metadataLoaded = false;
16080
- // this.playbackSettingsUpdateReceived = false
16081
16095
  this.listenTo(this.core.activePlayback, Events.PLAYBACK_STOP, this.onStop);
16082
16096
  this.listenTo(this.core.activePlayback, Events.PLAYBACK_PLAY, this.onPlay);
16083
- // this.listenTo(
16084
- // this.core.activePlayback,
16085
- // Events.PLAYBACK_SETTINGSUPDATE,
16086
- // this.onSettingsUpdate,
16087
- // )
16088
16097
  this.listenTo(this.core.activePlayback, PlaybackEvents.PLAYBACK_RATE_CHANGED, this.onPlaybackRateChange);
16089
16098
  this.listenTo(this.core.activeContainer, Events.CONTAINER_LOADEDMETADATA, this.onMetaDataLoaded);
16090
16099
  }
@@ -16111,27 +16120,13 @@ class PlaybackRate extends UICorePlugin {
16111
16120
  i18n: this.core.i18n,
16112
16121
  })));
16113
16122
  }
16114
- // private onSettingsUpdate() {
16115
- // trace(`${T} onSettingsUpdate`, {
16116
- // playbackType: this.core.activePlayback.getPlaybackType(),
16117
- // dvrEnabled: this.core.activePlayback.dvrEnabled,
16118
- // })
16119
- // this.playbackSettingsUpdateReceived = true
16120
- // if (this.metadataLoaded) {
16121
- // if (this.mountTimerId) {
16122
- // clearTimeout(this.mountTimerId)
16123
- // this.mountTimerId = null
16124
- // }
16125
- // this.mount()
16126
- // }
16127
- // }
16128
16123
  onMetaDataLoaded() {
16129
16124
  trace(`${T$7} onMetaDataLoaded`, {
16130
16125
  playbackType: this.core.activePlayback.getPlaybackType(),
16131
16126
  dvrEnabled: this.core.activePlayback.dvrEnabled,
16132
16127
  });
16133
- this.metadataLoaded = true;
16134
16128
  this.mountTimerId = setTimeout(() => {
16129
+ this.metadataLoaded = true;
16135
16130
  this.mountTimerId = null;
16136
16131
  this.mount();
16137
16132
  }, 25);
@@ -16548,7 +16543,7 @@ class Poster extends UIContainerPlugin {
16548
16543
  }
16549
16544
  }
16550
16545
 
16551
- const buttonHtml = "<button class='gplayer-lite-btn gcore-skin-text-color gear-option' aria-haspopup=\"menu\">\n <span class=\"gear-option_hd-icon<%= isHd ? '' : ' hidden' %>\"><%= hdIcon %></span>\n <span><%= i18n.t('quality') %></span>\n <span class=\"gear-option_arrow-right-icon\"><%= arrowRightIcon %></span>\n <span class='gear-option_value'><%= currentText %></span>\n</button>\n";
16546
+ const buttonHtml = "<button class='gplayer-lite-btn gcore-skin-text-color gear-option' aria-haspopup=\"menu\">\n <span class=\"gear-option_icon<%= isHd ? '' : ' hidden' %>\"><%= hdIcon %></span>\n <span class=\"gear-option_label\"><%= i18n.t('quality') %></span>\n <span class='gear-option_value'><%= currentText %></span>\n <span class=\"gear-option_arrow-right-icon\"><%= arrowRightIcon %></span>\n</button>\n";
16552
16547
 
16553
16548
  const listHtml = "<button class=\"gplayer-lite-btn go-back gcore-skin-text-color\" id=\"level-selector-back-button\">\n <span class=\"arrow-left-icon\"><%= arrowLeftIcon %></span>\n <%= i18n.t('quality') %>\n</button>\n<ul class=\"gear-sub-menu quality-levels\" id=\"level-selector-menu\" role=\"menu\">\n <% if (!removeAuto) { %>\n <li>\n <a href=\"#\" class='gear-sub-menu_btn gcore-skin-text-color' data-id=\"-1\" id=\"level_selector_auto\">\n <span class=\"check-icon\"><%= checkIcon %></span>\n <%= i18n.t('auto') %>\n </a>\n </li>\n <% } %>\n <% for (const item of levels.slice().reverse()) {\n var disabled = maxLevel >= 0 && item.level > maxLevel\n var checked = item.level === current\n %>\n <li class=\"<%= disabled ? ' disabled' : ''%><%=checked ? ' current' : ''%>\">\n <a href=\"#\"\n class=\"gear-sub-menu_btn gcore-skin-text-color<%= checked ? ' gcore-skin-active' : '' %>\"\n data-id=\"<%= item.level %>\"\n data-disabled=\"<%= disabled %>\"\n data-checked=\"<%= checked %>\"\n role=\"menuitemradio\"\n id=\"level_selector_<%= item.width > item.height ? item.height : item.width %>\"\n >\n <span class=\"check-icon\"><%= checkIcon %></span>\n <%= labels[item.level] %>\n </a>\n </li>\n <% } %>\n</ul>\n";
16554
16549
 
@@ -1 +1 @@
1
- {"version":3,"file":"HlsPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/hls-playback/HlsPlayback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HlsPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/hls-playback/HlsPlayback.ts"],"names":[],"mappings":"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"}
@@ -386,6 +386,16 @@ export default class HlsPlayback extends BasePlayback {
386
386
  this.seek(seekTo);
387
387
  }
388
388
  seek(time) {
389
+ // trace(`${T} seek`, {
390
+ // time,
391
+ // duration: this._duration,
392
+ // startTime: this._startTime,
393
+ // currentTimestamp: this.currentTimestamp,
394
+ // playbackType: this.getPlaybackType(),
395
+ // dvrEnabled: this.dvrEnabled,
396
+ // durationExcludesAfterLiveSyncPoint: this._durationExcludesAfterLiveSyncPoint,
397
+ // minDvrSize: this._minDvrSize,
398
+ // })
389
399
  if (time < 0) {
390
400
  Log.warn('Attempt to seek to a negative time. Resetting to live point. Use seekToLivePoint() to seek to the live point.');
391
401
  time = this.getDuration();
@@ -537,6 +547,11 @@ export default class HlsPlayback extends BasePlayback {
537
547
  return;
538
548
  }
539
549
  this._lastTimeUpdate = update;
550
+ // trace(`${T} _onTimeUpdate`, {
551
+ // current: update.current,
552
+ // total: update.total,
553
+ // firstFragDateTime: update.firstFragDateTime,
554
+ // })
540
555
  this.trigger(Events.PLAYBACK_TIMEUPDATE, update, this.name);
541
556
  }
542
557
  _onDurationChange() {
@@ -808,6 +823,12 @@ export default class HlsPlayback extends BasePlayback {
808
823
  this.trigger(Events.PLAYBACK_LEVEL_SWITCH_END);
809
824
  }
810
825
  get dvrEnabled() {
826
+ // trace(`${T} dvrEnabled`, {
827
+ // durationExcludesAfterLiveSyncPoint: this._durationExcludesAfterLiveSyncPoint,
828
+ // duration: this._duration,
829
+ // minDvrSize: this._minDvrSize,
830
+ // playbackType: this.getPlaybackType(),
831
+ // })
811
832
  // enabled when:
812
833
  // - the duration does not include content after hlsjs's live sync point
813
834
  // - the playable region duration is longer than the configured duration to enable dvr after
@@ -1 +1 @@
1
- {"version":3,"file":"ClapprNerdStats.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-nerd-stats/ClapprNerdStats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoB,IAAI,EAAa,MAAM,cAAc,CAAA;AAsB9E,OAAO,0DAA0D,CAAA;AAgGjE;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,SAAS,CAAyB;IAE1C,OAAO,CAAC,aAAa,CAIpB;IAED,OAAO,CAAC,OAAO,CAAwB;IAEvC,OAAO,CAAC,OAAO,CAAQ;IAEvB,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;;;MAKtB;IAED;;OAEG;IACH,IAAa,MAAM;;;;MAMlB;IAED,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;IAInB,OAAO,CAAC,WAAW;IAiCnB,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,IAAI;IAeZ,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACM,MAAM;IASf,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,gBAAgB;CAWzB"}
1
+ {"version":3,"file":"ClapprNerdStats.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-nerd-stats/ClapprNerdStats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoB,IAAI,EAAa,MAAM,cAAc,CAAA;AAsB9E,OAAO,0DAA0D,CAAA;AA+FjE;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,SAAS,CAAyB;IAE1C,OAAO,CAAC,aAAa,CAIpB;IAED,OAAO,CAAC,OAAO,CAAwB;IAEvC,OAAO,CAAC,OAAO,CAAQ;IAEvB,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;;;MAKtB;IAED;;OAEG;IACH,IAAa,MAAM;;;;MAMlB;IAED,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;IAInB,OAAO,CAAC,WAAW;IAiCnB,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,IAAI;IAeZ,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACM,MAAM;IASf,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,gBAAgB;CAWzB"}
@@ -65,8 +65,10 @@ export declare class MediaControl extends UICorePlugin {
65
65
  private kibo;
66
66
  private lastMouseX;
67
67
  private lastMouseY;
68
- private needsUpdate;
68
+ private metadataLoaded;
69
+ private hasUpdate;
69
70
  private persistConfig;
71
+ private renderTimerId;
70
72
  private rendered;
71
73
  private settings;
72
74
  private userDisabled;
@@ -271,6 +273,7 @@ export declare class MediaControl extends UICorePlugin {
271
273
  * @internal
272
274
  */
273
275
  destroy(): import("@clappr/core").UIObject;
276
+ private cancelRenderTimer;
274
277
  private configure;
275
278
  /**
276
279
  * @internal
@@ -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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"}
@@ -94,8 +94,10 @@ export class MediaControl extends UICorePlugin {
94
94
  kibo;
95
95
  lastMouseX = 0;
96
96
  lastMouseY = 0;
97
- needsUpdate = false;
97
+ metadataLoaded = false;
98
+ hasUpdate = false;
98
99
  persistConfig;
100
+ renderTimerId = null;
99
101
  rendered = false;
100
102
  settings = INITIAL_SETTINGS;
101
103
  userDisabled = false;
@@ -281,8 +283,10 @@ export class MediaControl extends UICorePlugin {
281
283
  this.listenTo(this.core.activeContainer, Events.CONTAINER_ENDED, this.ended);
282
284
  this.listenTo(this.core.activeContainer, Events.CONTAINER_VOLUME, this.onVolumeChanged);
283
285
  this.listenTo(this.core.activeContainer, Events.CONTAINER_OPTIONS_CHANGE, this.setInitialVolume);
284
- // wait until the metadata has loaded and then check if fullscreen on video tag is supported
285
- this.listenToOnce(this.core.activeContainer, Events.CONTAINER_LOADEDMETADATA, this.onLoadedMetadata);
286
+ this.listenTo(this.core.activeContainer, Events.CONTAINER_LOADEDMETADATA, this.onLoadedMetadata);
287
+ this.listenTo(this.core, Events.CONTAINER_DESTROYED, () => {
288
+ this.cancelRenderTimer();
289
+ });
286
290
  }
287
291
  /**
288
292
  * Hides the media control UI
@@ -325,13 +329,17 @@ export class MediaControl extends UICorePlugin {
325
329
  // TODO sort out, use single utility function
326
330
  this.fullScreenOnVideoTagSupported = true;
327
331
  }
328
- this.updateSettings();
329
- if (this.core.activeContainer.getPlaybackType() === Playback.LIVE) {
330
- this.$el.addClass('live');
331
- }
332
- else {
333
- this.$el.removeClass('live');
334
- }
332
+ this.renderTimerId = setTimeout(() => {
333
+ this.renderTimerId = null;
334
+ this.metadataLoaded = true;
335
+ this.render();
336
+ if (this.core.activeContainer.getPlaybackType() === Playback.LIVE) {
337
+ this.$el.addClass('live');
338
+ }
339
+ else {
340
+ this.$el.removeClass('live');
341
+ }
342
+ }, 25);
335
343
  }
336
344
  updateVolumeUI() {
337
345
  // this will be called after a render
@@ -555,6 +563,7 @@ export class MediaControl extends UICorePlugin {
555
563
  }
556
564
  onActiveContainerChanged() {
557
565
  this.fullScreenOnVideoTagSupported = false;
566
+ this.metadataLoaded = false;
558
567
  // set the new container to match the volume of the last one
559
568
  this.setInitialVolume();
560
569
  this.changeTogglePlay();
@@ -776,7 +785,7 @@ export class MediaControl extends UICorePlugin {
776
785
  const settingsChanged = serializeSettings(this.settings) !== serializeSettings(newSettings);
777
786
  if (settingsChanged) {
778
787
  this.settings = newSettings;
779
- this.needsUpdate = true;
788
+ this.hasUpdate = true;
780
789
  this.render();
781
790
  }
782
791
  }
@@ -1005,6 +1014,7 @@ export class MediaControl extends UICorePlugin {
1005
1014
  * @internal
1006
1015
  */
1007
1016
  destroy() {
1017
+ this.cancelRenderTimer();
1008
1018
  $(document).unbind('mouseup', this.stopDrag);
1009
1019
  $(document).unbind('mousemove', this.updateDrag);
1010
1020
  $(document).unbind('touchend', this.stopDrag);
@@ -1012,6 +1022,12 @@ export class MediaControl extends UICorePlugin {
1012
1022
  this.unbindKeyEvents();
1013
1023
  return super.destroy();
1014
1024
  }
1025
+ cancelRenderTimer() {
1026
+ if (this.renderTimerId) {
1027
+ clearTimeout(this.renderTimerId);
1028
+ this.renderTimerId = null;
1029
+ }
1030
+ }
1015
1031
  configure() {
1016
1032
  this.trigger(Events.MEDIACONTROL_OPTIONS_CHANGE);
1017
1033
  }
@@ -1019,8 +1035,8 @@ export class MediaControl extends UICorePlugin {
1019
1035
  * @internal
1020
1036
  */
1021
1037
  render() {
1022
- trace(`${T} render`, { needsUpdate: this.needsUpdate });
1023
- if (!this.needsUpdate) {
1038
+ trace(`${T} render`, { needsUpdate: this.hasUpdate, metadataLoaded: this.metadataLoaded });
1039
+ if (!this.hasUpdate || !this.metadataLoaded) {
1024
1040
  return this;
1025
1041
  }
1026
1042
  const timeout = this.options.hideMediaControlDelay || 2000;
@@ -1070,7 +1086,7 @@ export class MediaControl extends UICorePlugin {
1070
1086
  this.core.$el.append(this.el);
1071
1087
  this.rendered = true;
1072
1088
  this.updateVolumeUI();
1073
- this.needsUpdate = false;
1089
+ this.hasUpdate = false;
1074
1090
  // TODO setTimeout?
1075
1091
  this.trigger(Events.MEDIACONTROL_RENDERED);
1076
1092
  return this;
@@ -1 +1 @@
1
- {"version":3,"file":"PlaybackRate.d.ts","sourceRoot":"","sources":["../../../src/plugins/playback-rate/PlaybackRate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAsB,IAAI,EAAK,MAAM,cAAc,CAAA;AAkBhF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAA;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAgBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAI5C,OAAO,CAAC,YAAY,CAAwB;IAE5C,OAAO,CAAC,cAAc,CAAQ;IAI9B,OAAO,CAAC,YAAY,CAAuB;IAE3C;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAuB;IAE7D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAqB;gBAE7C,IAAI,EAAE,IAAI;IAOtB,OAAO,KAAK,aAAa,GAExB;IAED;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACH,IAAa,MAAM;;;MAKlB;IAED;;OAEG;IACM,UAAU;IASnB,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,uBAAuB;IAuB/B,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,KAAK;IAqCb,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,WAAW;IAoBnB;;OAEG;IACM,MAAM;IAkBf;;OAEG;IACM,OAAO;IAwBhB,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,qBAAqB;CAM9B"}
1
+ {"version":3,"file":"PlaybackRate.d.ts","sourceRoot":"","sources":["../../../src/plugins/playback-rate/PlaybackRate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAsB,IAAI,EAAK,MAAM,cAAc,CAAA;AAkBhF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAA;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAgBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAI5C,OAAO,CAAC,YAAY,CAAwB;IAE5C,OAAO,CAAC,cAAc,CAAQ;IAE9B,OAAO,CAAC,YAAY,CAAuB;IAE3C;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAuB;IAE7D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAqB;gBAE7C,IAAI,EAAE,IAAI;IAOtB,OAAO,KAAK,aAAa,GAExB;IAED;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACH,IAAa,MAAM;;;MAKlB;IAED;;OAEG;IACM,UAAU;IASnB,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,KAAK;IAsBb,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,WAAW;IAoBnB;;OAEG;IACM,MAAM;IAkBf;;OAEG;IACM,OAAO;IAwBhB,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,qBAAqB;CAM9B"}
@@ -57,7 +57,6 @@ export class PlaybackRate extends UICorePlugin {
57
57
  // private prevSelectedRate: string | undefined
58
58
  selectedRate = DEFAULT_PLAYBACK_RATE;
59
59
  metadataLoaded = false;
60
- // private playbackSettingsUpdateReceived = false
61
60
  mountTimerId = null;
62
61
  /**
63
62
  * @internal
@@ -118,14 +117,8 @@ export class PlaybackRate extends UICorePlugin {
118
117
  onActiveContainerChange() {
119
118
  trace(`${T} onActiveContainerChange`);
120
119
  this.metadataLoaded = false;
121
- // this.playbackSettingsUpdateReceived = false
122
120
  this.listenTo(this.core.activePlayback, Events.PLAYBACK_STOP, this.onStop);
123
121
  this.listenTo(this.core.activePlayback, Events.PLAYBACK_PLAY, this.onPlay);
124
- // this.listenTo(
125
- // this.core.activePlayback,
126
- // Events.PLAYBACK_SETTINGSUPDATE,
127
- // this.onSettingsUpdate,
128
- // )
129
122
  this.listenTo(this.core.activePlayback, PlaybackEvents.PLAYBACK_RATE_CHANGED, this.onPlaybackRateChange);
130
123
  this.listenTo(this.core.activeContainer, Events.CONTAINER_LOADEDMETADATA, this.onMetaDataLoaded);
131
124
  }
@@ -154,27 +147,13 @@ export class PlaybackRate extends UICorePlugin {
154
147
  i18n: this.core.i18n,
155
148
  })));
156
149
  }
157
- // private onSettingsUpdate() {
158
- // trace(`${T} onSettingsUpdate`, {
159
- // playbackType: this.core.activePlayback.getPlaybackType(),
160
- // dvrEnabled: this.core.activePlayback.dvrEnabled,
161
- // })
162
- // this.playbackSettingsUpdateReceived = true
163
- // if (this.metadataLoaded) {
164
- // if (this.mountTimerId) {
165
- // clearTimeout(this.mountTimerId)
166
- // this.mountTimerId = null
167
- // }
168
- // this.mount()
169
- // }
170
- // }
171
150
  onMetaDataLoaded() {
172
151
  trace(`${T} onMetaDataLoaded`, {
173
152
  playbackType: this.core.activePlayback.getPlaybackType(),
174
153
  dvrEnabled: this.core.activePlayback.dvrEnabled,
175
154
  });
176
- this.metadataLoaded = true;
177
155
  this.mountTimerId = setTimeout(() => {
156
+ this.metadataLoaded = true;
178
157
  this.mountTimerId = null;
179
158
  this.mount();
180
159
  }, 25);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gcorevideo/player",
3
- "version": "2.22.13",
3
+ "version": "2.22.14",
4
4
  "description": "Gcore JavaScript video player",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -586,6 +586,17 @@ export default class HlsPlayback extends BasePlayback {
586
586
  }
587
587
 
588
588
  seek(time: number) {
589
+ // trace(`${T} seek`, {
590
+ // time,
591
+ // duration: this._duration,
592
+ // startTime: this._startTime,
593
+ // currentTimestamp: this.currentTimestamp,
594
+ // playbackType: this.getPlaybackType(),
595
+ // dvrEnabled: this.dvrEnabled,
596
+ // durationExcludesAfterLiveSyncPoint: this._durationExcludesAfterLiveSyncPoint,
597
+ // minDvrSize: this._minDvrSize,
598
+
599
+ // })
589
600
  if (time < 0) {
590
601
  Log.warn(
591
602
  'Attempt to seek to a negative time. Resetting to live point. Use seekToLivePoint() to seek to the live point.',
@@ -757,6 +768,11 @@ export default class HlsPlayback extends BasePlayback {
757
768
  return
758
769
  }
759
770
  this._lastTimeUpdate = update
771
+ // trace(`${T} _onTimeUpdate`, {
772
+ // current: update.current,
773
+ // total: update.total,
774
+ // firstFragDateTime: update.firstFragDateTime,
775
+ // })
760
776
  this.trigger(Events.PLAYBACK_TIMEUPDATE, update, this.name)
761
777
  }
762
778
 
@@ -1081,6 +1097,12 @@ export default class HlsPlayback extends BasePlayback {
1081
1097
  }
1082
1098
 
1083
1099
  get dvrEnabled() {
1100
+ // trace(`${T} dvrEnabled`, {
1101
+ // durationExcludesAfterLiveSyncPoint: this._durationExcludesAfterLiveSyncPoint,
1102
+ // duration: this._duration,
1103
+ // minDvrSize: this._minDvrSize,
1104
+ // playbackType: this.getPlaybackType(),
1105
+ // })
1084
1106
  // enabled when:
1085
1107
  // - the duration does not include content after hlsjs's live sync point
1086
1108
  // - the playable region duration is longer than the configured duration to enable dvr after
@@ -25,7 +25,6 @@ import pluginHtml from '../../../assets/clappr-nerd-stats/clappr-nerd-stats.ejs'
25
25
  import buttonHtml from '../../../assets/clappr-nerd-stats/button.ejs'
26
26
  import statsIcon from '../../../assets/icons/new/stats.svg'
27
27
  import { BottomGear, GearEvents } from '../bottom-gear/BottomGear.js'
28
- import { MediaControl } from '../media-control/MediaControl.js'
29
28
  import assert from 'assert'
30
29
 
31
30
  const qualityClasses = [
@@ -155,10 +155,10 @@ exports[`QualityLevels > options.restrictResolution > given vertical video forma
155
155
 
156
156
  exports[`QualityLevels > options.restrictResolution > initially > should render the restricted quality level label 1`] = `
157
157
  "<button class="gplayer-lite-btn gcore-skin-text-color gear-option" aria-haspopup="menu">
158
- <span class="gear-option_hd-icon hidden">/assets/icons/new/hd.svg</span>
159
- <span>quality</span>
160
- <span class="gear-option_arrow-right-icon">/assets/icons/new/arrow-right.svg</span>
158
+ <span class="gear-option_icon hidden">/assets/icons/new/hd.svg</span>
159
+ <span class="gear-option_label">quality</span>
161
160
  <span class="gear-option_value">360p</span>
161
+ <span class="gear-option_arrow-right-icon">/assets/icons/new/arrow-right.svg</span>
162
162
  </button>
163
163
  "
164
164
  `;