@gcorevideo/player 2.22.30 → 2.22.31

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 (49) hide show
  1. package/assets/media-control/container.scss +2 -3
  2. package/assets/poster/poster.ejs +3 -1
  3. package/assets/poster/poster.scss +3 -3
  4. package/assets/style/main.scss +1 -1
  5. package/dist/core.js +1 -1
  6. package/dist/index.css +670 -671
  7. package/dist/index.js +68 -98
  8. package/dist/player.d.ts +63 -33
  9. package/docs/api/{player.seektime.bindevents.md → player.clapprstats.clearmetrics.md} +3 -3
  10. package/docs/api/player.clapprstats.md +14 -0
  11. package/docs/api/player.extendedevents.md +14 -0
  12. package/docs/api/player.md +13 -2
  13. package/docs/api/player.seektime.attributes.md +0 -1
  14. package/docs/api/player.seektime.md +6 -197
  15. package/docs/api/{player.seektime.render.md → player.seektimesettings.md} +7 -7
  16. package/docs/api/player.skiptime.md +3 -184
  17. package/lib/plugins/poster/Poster.d.ts +24 -14
  18. package/lib/plugins/poster/Poster.d.ts.map +1 -1
  19. package/lib/plugins/poster/Poster.js +67 -97
  20. package/lib/testUtils.d.ts +13 -39
  21. package/lib/testUtils.d.ts.map +1 -1
  22. package/lib/testUtils.js +14 -65
  23. package/package.json +1 -1
  24. package/src/plugins/media-control/__tests__/__snapshots__/MediaControl.test.ts.snap +1 -1
  25. package/src/plugins/poster/Poster.ts +91 -110
  26. package/src/plugins/poster/__tests__/Poster.test.ts +119 -0
  27. package/src/plugins/poster/__tests__/__snapshots__/Poster.test.ts.snap +8 -0
  28. package/src/plugins/source-controller/__tests__/SourceController.test.ts +1 -2
  29. package/src/testUtils.ts +14 -86
  30. package/temp/player.api.json +295 -829
  31. package/tsconfig.tsbuildinfo +1 -1
  32. package/docs/api/player.seektime.durationshown.md +0 -14
  33. package/docs/api/player.seektime.getseektime.md +0 -20
  34. package/docs/api/player.seektime.islivestreamwithdvr.md +0 -14
  35. package/docs/api/player.seektime.mediacontrol.md +0 -14
  36. package/docs/api/player.seektime.mediacontrolcontainer.md +0 -14
  37. package/docs/api/player.seektime.shouldbevisible.md +0 -18
  38. package/docs/api/player.seektime.template.md +0 -14
  39. package/docs/api/player.seektime.update.md +0 -18
  40. package/docs/api/player.skiptime.attributes.md +0 -17
  41. package/docs/api/player.skiptime.bindevents.md +0 -18
  42. package/docs/api/player.skiptime.events.md +0 -18
  43. package/docs/api/player.skiptime.handlerewindclicks.md +0 -18
  44. package/docs/api/player.skiptime.render.md +0 -18
  45. package/docs/api/player.skiptime.setback.md +0 -18
  46. package/docs/api/player.skiptime.setforward.md +0 -18
  47. package/docs/api/player.skiptime.setmidclick.md +0 -18
  48. package/docs/api/player.skiptime.template.md +0 -14
  49. package/docs/api/player.skiptime.togglefullscreen.md +0 -18
package/dist/index.js CHANGED
@@ -43303,7 +43303,7 @@ class Player {
43303
43303
  }
43304
43304
  }
43305
43305
 
43306
- var version$1 = "2.22.30";
43306
+ var version$1 = "2.22.31";
43307
43307
 
43308
43308
  var packages = {
43309
43309
  "node_modules/@clappr/core": {
@@ -50001,7 +50001,7 @@ class PlaybackRate extends UICorePlugin {
50001
50001
  }
50002
50002
  }
50003
50003
 
50004
- const posterHTML = "<div class=\"play-wrapper\" data-poster></div>\n";
50004
+ const posterHTML = "<div class=\"play-wrapper\" id=\"gplayer-poster\">\n <div class='circle-poster gcore-skin-button-color gcore-skin-border-color' id='poster-play'></div>\n</div>\n";
50005
50005
 
50006
50006
  //Copyright 2014 Globo.com Player authors. All rights reserved.
50007
50007
  // Use of this source code is governed by a BSD-style
@@ -50011,19 +50011,13 @@ const T$8 = 'plugins.poster';
50011
50011
  * `PLUGIN` that displays a poster image in the background and a big play button on top when playback is stopped
50012
50012
  * @beta
50013
50013
  * @remarks
50014
- * When the playback is stopped, media control UI is disabled.
50014
+ * When the playback is stopped or not yet started, the media control UI is disabled and hidden.
50015
+ * Media control gets activated once the metadata is loaded after playback is initiated.
50016
+ * This plugin displays a big play button on top of the poster image to allow user to start playback.
50015
50017
  * Note that the poster image, if specified via the player config, will be used to update video element's poster attribute by the
50016
50018
  * HTML5-video-based playback module.
50017
50019
  *
50018
- * Configuration options:
50019
- *
50020
- * - `poster.custom` - custom CSS background
50021
- *
50022
- * - `poster.showForNoOp` - whether to show the poster when the playback is not started
50023
- *
50024
- * - `poster.url` - the URL of the poster image
50025
- *
50026
- * - `poster.showOnVideoEnd` - whether to show the poster when the playback is ended
50020
+ * Configuration options - {@link PosterPluginSettings}
50027
50021
  *
50028
50022
  * @example
50029
50023
  * ```ts
@@ -50039,10 +50033,9 @@ const T$8 = 'plugins.poster';
50039
50033
  class Poster extends UIContainerPlugin {
50040
50034
  // TODO merge non-poster related functionality into the ClickToPause plugin
50041
50035
  hasFatalError = false;
50042
- hasStartedPlaying = false;
50036
+ playing = false;
50043
50037
  playRequested = false;
50044
50038
  $playButton = null;
50045
- $playWrapper = null;
50046
50039
  /**
50047
50040
  * @internal
50048
50041
  */
@@ -50062,8 +50055,10 @@ class Poster extends UIContainerPlugin {
50062
50055
  }
50063
50056
  const showForNoOp = !!this.options.poster?.showForNoOp;
50064
50057
  return (this.container.playback.name !== 'html_img' &&
50065
- (this.container.playback.getPlaybackType() !== Playback.NO_OP ||
50066
- showForNoOp));
50058
+ (!this.isNoOp || showForNoOp));
50059
+ }
50060
+ get isNoOp() {
50061
+ return this.container.playback.getPlaybackType() === Playback.NO_OP;
50067
50062
  }
50068
50063
  /**
50069
50064
  * @internal
@@ -50071,7 +50066,6 @@ class Poster extends UIContainerPlugin {
50071
50066
  get attributes() {
50072
50067
  return {
50073
50068
  class: 'player-poster',
50074
- 'data-poster': '',
50075
50069
  };
50076
50070
  }
50077
50071
  /**
@@ -50082,9 +50076,6 @@ class Poster extends UIContainerPlugin {
50082
50076
  click: 'clicked',
50083
50077
  };
50084
50078
  }
50085
- get showOnVideoEnd() {
50086
- return this.options.poster?.showOnVideoEnd !== false;
50087
- }
50088
50079
  /**
50089
50080
  * @internal
50090
50081
  */
@@ -50093,19 +50084,22 @@ class Poster extends UIContainerPlugin {
50093
50084
  this.listenTo(this.container, Events$1.CONTAINER_PLAY, this.onPlay);
50094
50085
  this.listenTo(this.container, Events$1.CONTAINER_STATE_BUFFERING, this.update);
50095
50086
  this.listenTo(this.container, Events$1.CONTAINER_STATE_BUFFERFULL, this.update);
50096
- this.listenTo(this.container, Events$1.CONTAINER_OPTIONS_CHANGE, this.render);
50087
+ this.listenTo(this.container, Events$1.CONTAINER_OPTIONS_CHANGE, this.update);
50097
50088
  this.listenTo(this.container, Events$1.CONTAINER_ERROR, this.onError);
50098
- this.showOnVideoEnd &&
50089
+ // TODO check if this event is always accompanied with the CONTAINER_STOP
50090
+ if (this.options.poster?.showOnVideoEnd !== false) {
50099
50091
  this.listenTo(this.container, Events$1.CONTAINER_ENDED, this.onStop);
50092
+ }
50100
50093
  this.listenTo(this.container, Events$1.CONTAINER_READY, this.render);
50101
- this.listenTo(this.container, Events$1.PLAYBACK_PLAY_INTENT, this.onPlayIntent);
50094
+ this.listenTo(this.container.playback, Events$1.PLAYBACK_PLAY_INTENT, this.onPlayIntent);
50102
50095
  }
50103
50096
  /**
50104
50097
  * Reenables earlier disabled plugin
50105
50098
  */
50106
50099
  enable() {
50100
+ trace(`${T$8} enable`);
50107
50101
  super.enable();
50108
- this.hasStartedPlaying = this.container.playback.isPlaying();
50102
+ this.playing = this.container.playback.isPlaying();
50109
50103
  this.update();
50110
50104
  }
50111
50105
  /**
@@ -50113,7 +50107,7 @@ class Poster extends UIContainerPlugin {
50113
50107
  */
50114
50108
  disable() {
50115
50109
  trace(`${T$8} disable`);
50116
- this.hasStartedPlaying = false;
50110
+ this.playing = false;
50117
50111
  this.playRequested = false;
50118
50112
  super.disable();
50119
50113
  }
@@ -50122,17 +50116,15 @@ class Poster extends UIContainerPlugin {
50122
50116
  error,
50123
50117
  enabled: this.enabled,
50124
50118
  });
50125
- this.hasFatalError = error.level === PlayerError.Levels.FATAL;
50126
50119
  if (this.hasFatalError) {
50127
- this.hasStartedPlaying = false;
50128
- if (!this.playRequested) {
50129
- this.showPlayButton();
50130
- }
50120
+ return;
50131
50121
  }
50122
+ this.hasFatalError = error.level === PlayerError.Levels.FATAL;
50123
+ // this.hasFatalError is reset on container recreate
50132
50124
  }
50133
50125
  onPlay() {
50134
50126
  trace(`${T$8} onPlay`);
50135
- this.hasStartedPlaying = true;
50127
+ this.playing = true;
50136
50128
  this.playRequested = false;
50137
50129
  this.update();
50138
50130
  }
@@ -50142,21 +50134,21 @@ class Poster extends UIContainerPlugin {
50142
50134
  this.update();
50143
50135
  }
50144
50136
  onStop() {
50145
- trace(`${T$8} onStop`, {
50146
- enabled: this.enabled,
50147
- });
50148
- this.hasStartedPlaying = false;
50137
+ trace(`${T$8} onStop`);
50138
+ this.playing = false;
50149
50139
  this.playRequested = false;
50150
50140
  this.update();
50151
50141
  }
50152
- updatePlayButton(show) {
50153
- trace(`${T$8} updatePlayButton`, {
50154
- show,
50155
- chromeless: this.options.chromeless,
50156
- allowUserInteraction: this.options.allowUserInteraction,
50157
- });
50158
- if (show &&
50159
- (!this.options.chromeless || this.options.allowUserInteraction)) {
50142
+ updatePlayButton() {
50143
+ trace(`${T$8} updatePlayButton`);
50144
+ const show = !this.isNoOp &&
50145
+ !(this.options.chromeless && !this.options.allowUserInteraction) &&
50146
+ !this.playRequested &&
50147
+ !this.playing &&
50148
+ !this.container.buffering &&
50149
+ !this.hasFatalError &&
50150
+ !this.options.disableMediaControl;
50151
+ if (show) {
50160
50152
  this.showPlayButton();
50161
50153
  }
50162
50154
  else {
@@ -50164,59 +50156,42 @@ class Poster extends UIContainerPlugin {
50164
50156
  }
50165
50157
  }
50166
50158
  showPlayButton() {
50167
- if (this.options.disableMediaControl) {
50168
- return;
50169
- }
50170
- if (this.hasFatalError && !this.options.disableErrorScreen) {
50171
- return;
50172
- }
50173
- this.$playButton?.show();
50159
+ trace(`${T$8} showPlayButton`);
50160
+ this.$el.find('#poster-play').show();
50174
50161
  this.$el.addClass('clickable');
50175
50162
  this.container.$el.addClass('container-with-poster-clickable');
50176
50163
  }
50177
50164
  hidePlayButton() {
50178
- this.$playButton.hide();
50165
+ trace(`${T$8} hidePlayButton`);
50166
+ this.$el.find('#poster-play').hide();
50179
50167
  this.$el.removeClass('clickable');
50180
50168
  }
50181
- clicked() {
50182
- trace(`${T$8} clicked`, {
50183
- hasStartedPlaying: this.hasStartedPlaying,
50184
- chromeless: this.options.chromeless,
50185
- allowUserInteraction: this.options.allowUserInteraction,
50186
- });
50169
+ clicked(e) {
50170
+ trace(`${T$8} clicked`);
50171
+ e.preventDefault();
50172
+ e.stopPropagation();
50173
+ if (this.options.chromeless && !this.options.allowUserInteraction) {
50174
+ return;
50175
+ }
50187
50176
  // Let "click_to_pause" plugin handle click event if media has started playing
50188
- if (!this.hasStartedPlaying) {
50189
- if (!this.options.chromeless || this.options.allowUserInteraction) {
50190
- this.playRequested = true;
50191
- this.update();
50192
- this.container.playback.consent();
50193
- this.container.playback.play();
50194
- }
50177
+ if (!this.playing) {
50178
+ this.playRequested = true;
50179
+ this.update();
50180
+ this.container.play();
50195
50181
  }
50196
- return false;
50197
50182
  }
50198
50183
  shouldHideOnPlay() {
50199
50184
  // Audio broadcasts should keep the poster up; video should hide poster while playing.
50200
50185
  return !this.container.playback.isAudioOnly;
50201
50186
  }
50202
50187
  update() {
50203
- trace(`${T$8} update`, {
50204
- shouldRender: this.shouldRender,
50205
- });
50206
- if (!this.shouldRender) {
50207
- return;
50208
- }
50209
- const showPlayButton = !this.playRequested &&
50210
- !this.hasStartedPlaying &&
50211
- !this.container.buffering;
50212
- this.updatePlayButton(showPlayButton);
50188
+ trace(`${T$8} update`);
50189
+ this.updatePlayButton();
50213
50190
  this.updatePoster();
50214
50191
  }
50215
50192
  updatePoster() {
50216
- trace(`${T$8} updatePoster`, {
50217
- hasStartedPlaying: this.hasStartedPlaying,
50218
- });
50219
- if (!this.hasStartedPlaying) {
50193
+ trace(`${T$8} updatePoster`);
50194
+ if (!this.playing) {
50220
50195
  this.showPoster();
50221
50196
  }
50222
50197
  else {
@@ -50228,9 +50203,7 @@ class Poster extends UIContainerPlugin {
50228
50203
  this.$el.show();
50229
50204
  }
50230
50205
  hidePoster() {
50231
- trace(`${T$8} hidePoster`, {
50232
- shouldHideOnPlay: this.shouldHideOnPlay(),
50233
- });
50206
+ trace(`${T$8} hidePoster`);
50234
50207
  if (!this.options.disableMediaControl) {
50235
50208
  this.container.enableMediaControl();
50236
50209
  }
@@ -50246,27 +50219,24 @@ class Poster extends UIContainerPlugin {
50246
50219
  return this;
50247
50220
  }
50248
50221
  this.$el.html(Poster.template());
50249
- const isRegularPoster = this.options.poster && this.options.poster.custom === undefined;
50250
- if (isRegularPoster) {
50251
- const posterUrl = this.options.poster.url || this.options.poster;
50252
- this.$el.css({ 'background-image': 'url(' + posterUrl + ')' });
50253
- }
50254
- else if (this.options.poster) {
50222
+ const isCustomPoster = this.options.poster?.custom !== undefined;
50223
+ if (isCustomPoster) {
50255
50224
  this.$el.css({ background: this.options.poster.custom });
50256
50225
  }
50226
+ else {
50227
+ const posterUrl = typeof this.options.poster === 'string'
50228
+ ? this.options.poster
50229
+ : this.options.poster?.url;
50230
+ if (posterUrl) {
50231
+ this.$el.css({ 'background-image': 'url(' + posterUrl + ')' });
50232
+ }
50233
+ }
50257
50234
  this.container.$el.removeClass('container-with-poster-clickable');
50258
50235
  this.container.$el.append(this.el);
50259
- this.$playWrapper = this.$el.find('.play-wrapper');
50260
- this.$playWrapper.addClass('control-need-disable');
50261
- this.$playButton = $("<div class='circle-poster gcore-skin-button-color gcore-skin-border-color'></div>");
50262
- this.$playWrapper.append(this.$playButton);
50263
- this.$playButton.append(playIcon);
50264
- if (this.options.autoPlay) {
50265
- this.$playButton.hide();
50236
+ this.$el.find('#poster-play').append(playIcon);
50237
+ if (this.options.autoPlay || this.isNoOp) {
50238
+ this.$el.find('#poster-play').hide();
50266
50239
  }
50267
- this.$playButton.addClass('poster-icon');
50268
- this.$playButton.attr('data-poster', '');
50269
- this.update();
50270
50240
  return this;
50271
50241
  }
50272
50242
  /**
package/dist/player.d.ts CHANGED
@@ -96,7 +96,7 @@ declare class AudioTracks extends UICorePlugin {
96
96
  private onTrackSelect;
97
97
  private selectAudioTrack;
98
98
  private hideMenu;
99
- private toggleContextMenu;
99
+ private toggleMenu;
100
100
  private buttonElement;
101
101
  private buttonElementText;
102
102
  private trackElement;
@@ -227,7 +227,7 @@ export declare class BigMuteButton extends UICorePlugin {
227
227
  * ```
228
228
  */
229
229
  export declare class BottomGear extends UICorePlugin {
230
- private isHd;
230
+ private hd;
231
231
  /**
232
232
  * @internal
233
233
  */
@@ -349,6 +349,7 @@ export declare class ClapprStats extends ContainerPlugin {
349
349
  * @returns Measurements collected so far
350
350
  */
351
351
  exportMetrics(): ClapprStatsMetrics;
352
+ clearMetrics(): void;
352
353
  private onBitrate;
353
354
  private stopReporting;
354
355
  private startTimers;
@@ -603,7 +604,7 @@ export declare interface ClipsPluginSettings {
603
604
  */
604
605
  declare class ClosedCaptions extends UICorePlugin {
605
606
  private isPreselectedApplied;
606
- private isShowing;
607
+ private active;
607
608
  private track;
608
609
  private tracks;
609
610
  private $line;
@@ -633,8 +634,8 @@ declare class ClosedCaptions extends UICorePlugin {
633
634
  * @internal
634
635
  */
635
636
  get events(): {
636
- 'click [data-cc-select]': string;
637
- 'click [data-cc-button]': string;
637
+ 'click #cc-select li a': string;
638
+ 'click #cc-button': string;
638
639
  };
639
640
  private get preselectedLanguage();
640
641
  /**
@@ -932,7 +933,8 @@ export declare type ErrorScreenSettings = {
932
933
  };
933
934
 
934
935
  export declare enum ExtendedEvents {
935
- MEDIACONTROL_VOLUME = "mediacontrol:volume"
936
+ MEDIACONTROL_VOLUME = "mediacontrol:volume",
937
+ MEDIACONTROL_MENU_COLLAPSE = "mediacontrol:menu:collapse"
936
938
  }
937
939
 
938
940
  /**
@@ -1182,7 +1184,6 @@ export declare class MediaControl extends UICorePlugin {
1182
1184
  'click [data-stop]': string;
1183
1185
  'click [data-playstop]': string;
1184
1186
  'click [data-fullscreen]': string;
1185
- 'click .bar-container[data-seekbar]': string;
1186
1187
  'click .bar-container[data-volume]': string;
1187
1188
  'click .drawer-icon[data-volume]': string;
1188
1189
  'mouseenter .drawer-container[data-volume]': string;
@@ -1538,6 +1539,7 @@ declare class NerdStats extends UICorePlugin {
1538
1539
  private updateResolution;
1539
1540
  private estimateQuality;
1540
1541
  private updateMetrics;
1542
+ private updateCustomMetrics;
1541
1543
  private updateEstimatedQuality;
1542
1544
  private setStatsBoxSize;
1543
1545
  /**
@@ -2446,45 +2448,59 @@ export declare interface QualityLevelsPluginSettings {
2446
2448
  export { reportError_2 as reportError }
2447
2449
 
2448
2450
  /**
2449
- * `PLUGIN` that adds a seek time indicator to the media control UI.
2451
+ * `PLUGIN` that adds a seek time indicator when the mouse pointer is over the seek bar.
2450
2452
  * @beta
2453
+ * @remarks
2454
+ * Configuration options - {@link SeekTimeSettings}
2451
2455
  */
2452
2456
  export declare class SeekTime extends UICorePlugin {
2453
2457
  get name(): string;
2454
2458
  get supportedVersion(): {
2455
2459
  min: string;
2456
2460
  };
2457
- get template(): any;
2461
+ private static readonly template;
2458
2462
  get attributes(): {
2459
2463
  class: string;
2460
- 'data-seek-time': string;
2461
2464
  };
2462
- get mediaControl(): any;
2463
- get mediaControlContainer(): any;
2464
- get isLiveStreamWithDvr(): any;
2465
- get durationShown(): boolean;
2465
+ private get isLiveStreamWithDvr();
2466
+ private get showDuration();
2466
2467
  private hoveringOverSeekBar;
2467
2468
  private hoverPosition;
2468
2469
  private displayedDuration;
2469
2470
  private displayedSeekTime;
2470
2471
  private duration;
2471
- private rendered;
2472
- private $durationEl;
2473
- private $seekTimeEl;
2472
+ /**
2473
+ * @internal
2474
+ */
2474
2475
  bindEvents(): void;
2476
+ private onCoreReady;
2475
2477
  private onContainerChanged;
2476
2478
  private onTimeUpdate;
2477
2479
  private showTime;
2478
2480
  private hideTime;
2479
2481
  private calculateHoverPosition;
2480
- getSeekTime(): {
2481
- seekTime: number;
2482
- };
2483
- update(): void;
2484
- shouldBeVisible(): any;
2482
+ private getSeekTime;
2483
+ private update;
2484
+ private shouldBeVisible;
2485
+ /**
2486
+ * @internal
2487
+ */
2485
2488
  render(): this;
2489
+ private mount;
2486
2490
  }
2487
2491
 
2492
+ /**
2493
+ * Configuration options for the SeekTime plugin.
2494
+ * @beta
2495
+ */
2496
+ export declare type SeekTimeSettings = {
2497
+ /**
2498
+ * Whether to show the duration of the video. Applies only to the VOD streams.
2499
+ * @beta
2500
+ */
2501
+ duration?: boolean;
2502
+ };
2503
+
2488
2504
  export { SentryTracer }
2489
2505
 
2490
2506
  export { setTracer }
@@ -2530,7 +2546,7 @@ export declare class Share extends UICorePlugin {
2530
2546
  }
2531
2547
 
2532
2548
  /**
2533
- * `PLUGIN` that adds skip controls to the media control UI.
2549
+ * `PLUGIN` that allows skipping time by tapping on the left or right side of the video.
2534
2550
  * @beta
2535
2551
  */
2536
2552
  export declare class SkipTime extends UICorePlugin {
@@ -2539,24 +2555,38 @@ export declare class SkipTime extends UICorePlugin {
2539
2555
  min: string;
2540
2556
  };
2541
2557
  get container(): any;
2542
- get template(): any;
2558
+ private static readonly template;
2559
+ /**
2560
+ * @internal
2561
+ */
2543
2562
  get attributes(): {
2544
2563
  class: string;
2545
- 'data-skip-time': string;
2546
2564
  };
2547
2565
  private position;
2566
+ /**
2567
+ * @internal
2568
+ */
2548
2569
  get events(): {
2549
- 'click [data-skip-left]': string;
2550
- 'click [data-skip-mid]': string;
2551
- 'click [data-skip-right]': string;
2570
+ 'click #mc-skip-left': string;
2571
+ 'click #mc-skip-mid': string;
2572
+ 'click #mc-skip-right': string;
2552
2573
  };
2574
+ /**
2575
+ * @internal
2576
+ */
2553
2577
  bindEvents(): void;
2554
- setBack(): void;
2555
- handleRewindClicks(): void;
2556
- setMidClick(): void;
2557
- setForward(): void;
2558
- toggleFullscreen(): void;
2578
+ private onContainerChanged;
2579
+ private setBack;
2580
+ private handleRewindClicks;
2581
+ private handleSkip;
2582
+ private setMidClick;
2583
+ private setForward;
2584
+ private toggleFullscreen;
2585
+ /**
2586
+ * @internal
2587
+ */
2559
2588
  render(): this;
2589
+ private mount;
2560
2590
  }
2561
2591
 
2562
2592
  /**
@@ -1,8 +1,8 @@
1
1
  <!-- Do not edit this file. It is automatically generated by API Documenter. -->
2
2
 
3
- [Home](./index.md) &gt; [@gcorevideo/player](./player.md) &gt; [SeekTime](./player.seektime.md) &gt; [bindEvents](./player.seektime.bindevents.md)
3
+ [Home](./index.md) &gt; [@gcorevideo/player](./player.md) &gt; [ClapprStats](./player.clapprstats.md) &gt; [clearMetrics](./player.clapprstats.clearmetrics.md)
4
4
 
5
- ## SeekTime.bindEvents() method
5
+ ## ClapprStats.clearMetrics() method
6
6
 
7
7
  > This API is provided as a beta preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.
8
8
  >
@@ -10,7 +10,7 @@
10
10
  **Signature:**
11
11
 
12
12
  ```typescript
13
- bindEvents(): void;
13
+ clearMetrics(): void;
14
14
  ```
15
15
  **Returns:**
16
16
 
@@ -74,6 +74,20 @@ Description
74
74
  </th></tr></thead>
75
75
  <tbody><tr><td>
76
76
 
77
+ [clearMetrics()](./player.clapprstats.clearmetrics.md)
78
+
79
+
80
+ </td><td>
81
+
82
+
83
+ </td><td>
84
+
85
+ **_(BETA)_**
86
+
87
+
88
+ </td></tr>
89
+ <tr><td>
90
+
77
91
  [exportMetrics()](./player.clapprstats.exportmetrics.md)
78
92
 
79
93
 
@@ -30,6 +30,20 @@ Description
30
30
  </th></tr></thead>
31
31
  <tbody><tr><td>
32
32
 
33
+ MEDIACONTROL\_MENU\_COLLAPSE
34
+
35
+
36
+ </td><td>
37
+
38
+ `"mediacontrol:menu:collapse"`
39
+
40
+
41
+ </td><td>
42
+
43
+
44
+ </td></tr>
45
+ <tr><td>
46
+
33
47
  MEDIACONTROL\_VOLUME
34
48
 
35
49
 
@@ -281,7 +281,7 @@ Description
281
281
 
282
282
  </td><td>
283
283
 
284
- **_(BETA)_** `PLUGIN` that adds a seek time indicator to the media control UI.
284
+ **_(BETA)_** `PLUGIN` that adds a seek time indicator when the mouse pointer is over the seek bar.
285
285
 
286
286
 
287
287
  </td></tr>
@@ -303,7 +303,7 @@ Description
303
303
 
304
304
  </td><td>
305
305
 
306
- **_(BETA)_** `PLUGIN` that adds skip controls to the media control UI.
306
+ **_(BETA)_** `PLUGIN` that allows skipping time by tapping on the left or right side of the video.
307
307
 
308
308
 
309
309
  </td></tr>
@@ -1016,6 +1016,17 @@ A media source to fetch the media data from
1016
1016
 
1017
1017
 
1018
1018
 
1019
+ </td></tr>
1020
+ <tr><td>
1021
+
1022
+ [SeekTimeSettings](./player.seektimesettings.md)
1023
+
1024
+
1025
+ </td><td>
1026
+
1027
+ **_(BETA)_** Configuration options for the SeekTime plugin.
1028
+
1029
+
1019
1030
  </td></tr>
1020
1031
  <tr><td>
1021
1032
 
@@ -12,6 +12,5 @@
12
12
  ```typescript
13
13
  get attributes(): {
14
14
  class: string;
15
- 'data-seek-time': string;
16
15
  };
17
16
  ```