@gcorevideo/player 2.24.1 → 2.24.3

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 (68) hide show
  1. package/assets/big-mute-button/big-mute-button.ejs +2 -2
  2. package/assets/bottom-gear/gear-sub-menu.scss +1 -0
  3. package/dist/core.js +1 -1
  4. package/dist/index.css +754 -753
  5. package/dist/index.js +151 -130
  6. package/dist/player.d.ts +72 -21
  7. package/docs/api/player.bigmutebutton.md +13 -1
  8. package/docs/api/player.clapprstatssettings.md +51 -4
  9. package/docs/api/player.clapprstatssettings.runeach.md +16 -0
  10. package/docs/api/player.clipspluginsettings.md +1 -1
  11. package/docs/api/player.clipspluginsettings.text.md +1 -1
  12. package/docs/api/player.cmcdconfig.exportids.md +4 -0
  13. package/docs/api/player.cmcdconfig.md +19 -105
  14. package/docs/api/{player.cmcdconfig.version.md → player.cmcdconfigoptions.contentid.md} +5 -3
  15. package/docs/api/player.cmcdconfigoptions.md +79 -0
  16. package/docs/api/{player.cmcdconfigpluginsettings.md → player.cmcdconfigoptions.sessionid.md} +4 -6
  17. package/docs/api/player.extendedevents.md +9 -0
  18. package/docs/api/player.md +37 -31
  19. package/docs/api/player.mediacontrol.getavailableheight.md +24 -0
  20. package/docs/api/player.mediacontrol.md +14 -0
  21. package/docs/api/{player.cmcdconfig.name.md → player.posterpluginsettings.custom.md} +4 -3
  22. package/docs/api/player.posterpluginsettings.md +108 -7
  23. package/docs/api/player.posterpluginsettings.showfornoop.md +16 -0
  24. package/docs/api/player.posterpluginsettings.showonvideoend.md +16 -0
  25. package/docs/api/{player.cmcdconfig.bindevents.md → player.posterpluginsettings.url.md} +4 -7
  26. package/lib/plugins/big-mute-button/BigMuteButton.d.ts +15 -13
  27. package/lib/plugins/big-mute-button/BigMuteButton.d.ts.map +1 -1
  28. package/lib/plugins/big-mute-button/BigMuteButton.js +68 -83
  29. package/lib/plugins/bottom-gear/BottomGear.d.ts +1 -0
  30. package/lib/plugins/bottom-gear/BottomGear.d.ts.map +1 -1
  31. package/lib/plugins/bottom-gear/BottomGear.js +17 -17
  32. package/lib/plugins/clappr-stats/ClapprStats.d.ts +6 -2
  33. package/lib/plugins/clappr-stats/ClapprStats.d.ts.map +1 -1
  34. package/lib/plugins/clips/Clips.d.ts +1 -1
  35. package/lib/plugins/clips/Clips.d.ts.map +1 -1
  36. package/lib/plugins/clips/Clips.js +2 -1
  37. package/lib/plugins/cmcd-config/CmcdConfig.d.ts +34 -11
  38. package/lib/plugins/cmcd-config/CmcdConfig.d.ts.map +1 -1
  39. package/lib/plugins/cmcd-config/CmcdConfig.js +28 -18
  40. package/lib/plugins/media-control/MediaControl.d.ts +11 -0
  41. package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
  42. package/lib/plugins/media-control/MediaControl.js +19 -5
  43. package/lib/plugins/poster/Poster.d.ts +7 -3
  44. package/lib/plugins/poster/Poster.d.ts.map +1 -1
  45. package/lib/plugins/source-controller/SourceController.d.ts +1 -0
  46. package/lib/plugins/source-controller/SourceController.d.ts.map +1 -1
  47. package/lib/plugins/source-controller/SourceController.js +20 -9
  48. package/lib/testUtils.d.ts +1 -0
  49. package/lib/testUtils.d.ts.map +1 -1
  50. package/lib/testUtils.js +3 -0
  51. package/package.json +1 -1
  52. package/src/plugins/big-mute-button/BigMuteButton.ts +75 -110
  53. package/src/plugins/big-mute-button/__tests__/BigMuteButton.test.ts +38 -0
  54. package/src/plugins/big-mute-button/__tests__/__snapshots__/BigMuteButton.test.ts.snap +8 -0
  55. package/src/plugins/bottom-gear/BottomGear.ts +40 -28
  56. package/src/plugins/bottom-gear/__tests__/BottomGear.test.ts +34 -7
  57. package/src/plugins/bottom-gear/__tests__/__snapshots__/BottomGear.test.ts.snap +5 -2
  58. package/src/plugins/clappr-stats/ClapprStats.ts +5 -1
  59. package/src/plugins/clips/Clips.ts +3 -2
  60. package/src/plugins/cmcd-config/CmcdConfig.ts +33 -27
  61. package/src/plugins/media-control/MediaControl.ts +23 -6
  62. package/src/plugins/poster/Poster.ts +6 -2
  63. package/src/plugins/source-controller/SourceController.ts +25 -9
  64. package/src/plugins/source-controller/__tests__/SourceController.test.ts +28 -8
  65. package/src/testUtils.ts +3 -0
  66. package/temp/player.api.json +229 -154
  67. package/tsconfig.tsbuildinfo +1 -1
  68. package/docs/api/player.cmcdconfig.supportedversion.md +0 -14
@@ -1,4 +1,4 @@
1
- import { UICorePlugin, template, Events as ClapprEvents, $ } from '@clappr/core';
1
+ import { UICorePlugin, template, Events as ClapprEvents, $, } from '@clappr/core';
2
2
  import { trace } from '@gcorevideo/utils';
3
3
  import assert from 'assert';
4
4
  import { CLAPPR_VERSION } from '../../build.js';
@@ -10,6 +10,8 @@ import gearHdIcon from '../../../assets/icons/new/gear-hd.svg';
10
10
  import { ExtendedEvents } from '../media-control/MediaControl.js';
11
11
  const VERSION = '2.19.12';
12
12
  const T = 'plugins.bottom_gear';
13
+ const MENU_VMARGIN = 12;
14
+ const MENU_BACKLINK_HEIGHT = 44;
13
15
  /**
14
16
  * Events triggered by the plugin
15
17
  * @beta
@@ -21,7 +23,6 @@ export var GearEvents;
21
23
  */
22
24
  GearEvents["RENDERED"] = "rendered";
23
25
  })(GearEvents || (GearEvents = {}));
24
- // TODO disabled if no items added
25
26
  /**
26
27
  * `PLUGIN` that adds a button to extend the media controls UI with extra options.
27
28
  * @beta
@@ -158,7 +159,7 @@ export class BottomGear extends UICorePlugin {
158
159
  * ```
159
160
  */
160
161
  addItem(name, $subMenu) {
161
- const $existingItem = this.$el.find(`#gear-options li[data-${name}`);
162
+ const $existingItem = this.$el.find(`#gear-options li[data-${name}]`);
162
163
  if ($existingItem.length) {
163
164
  trace(`${T} addItem already exists`, { name });
164
165
  return $existingItem;
@@ -173,20 +174,17 @@ export class BottomGear extends UICorePlugin {
173
174
  .hide()
174
175
  .appendTo(this.$el.find('#gear-options-wrapper'));
175
176
  $item.on('click', (e) => {
176
- trace(`${T} addItem submenu clicked`, { name });
177
177
  e.stopPropagation();
178
+ this.alignSubmenu($subMenu);
178
179
  $subMenu.show();
179
180
  this.$el.find('#gear-options').hide();
180
181
  });
181
182
  }
182
183
  this.numItems++;
183
- if (this.numItems > 0) {
184
- this.$el.show();
185
- }
184
+ this.$el.show();
186
185
  return $item;
187
186
  }
188
187
  bindContainerEvents(container) {
189
- trace(`${T} bindContainerEvents`);
190
188
  this.listenTo(container, ClapprEvents.CONTAINER_HIGHDEFINITIONUPDATE, this.highDefinitionUpdate);
191
189
  this.listenTo(container, ClapprEvents.CONTAINER_CLICK, () => {
192
190
  this.collapse();
@@ -201,7 +199,6 @@ export class BottomGear extends UICorePlugin {
201
199
  * @internal
202
200
  */
203
201
  render() {
204
- trace(`${T} render`);
205
202
  const mediaControl = this.core.getPlugin('media_control');
206
203
  if (!mediaControl) {
207
204
  return this; // TODO test
@@ -242,11 +239,11 @@ export class BottomGear extends UICorePlugin {
242
239
  else {
243
240
  this.$el.find('#gear-options-wrapper').show();
244
241
  }
245
- this.$el.find('#gear-button').attr('aria-expanded', (!this.collapsed).toString());
246
- trace(`${T} toggleMenu`, { hidden: this.collapsed });
242
+ this.$el
243
+ .find('#gear-button')
244
+ .attr('aria-expanded', (!this.collapsed).toString());
247
245
  }
248
246
  collapse() {
249
- trace(`${T} collapse`);
250
247
  this.collapsed = true;
251
248
  this.$el.find('#gear-options-wrapper').hide();
252
249
  this.$el.find('#gear-button').attr('aria-expanded', 'false');
@@ -254,7 +251,6 @@ export class BottomGear extends UICorePlugin {
254
251
  this.collapseSubmenus();
255
252
  }
256
253
  onCoreReady() {
257
- trace(`${T} onCoreReady`);
258
254
  const mediaControl = this.core.getPlugin('media_control');
259
255
  assert(mediaControl, 'media_control plugin is required');
260
256
  this.listenTo(mediaControl, ClapprEvents.MEDIACONTROL_RENDERED, this.onMediaControlRendered);
@@ -270,14 +266,18 @@ export class BottomGear extends UICorePlugin {
270
266
  this.bindContainerEvents(mediaControl.container);
271
267
  }
272
268
  onMediaControlRendered() {
273
- trace(`${T} onMediaControlRendered`);
274
269
  this.mount();
275
270
  }
276
271
  mount() {
277
- trace(`${T} mount`, {
278
- numItems: this.numItems,
279
- });
280
272
  const mediaControl = this.core.getPlugin('media_control');
281
273
  mediaControl.mount('gear', this.$el);
282
274
  }
275
+ alignSubmenu($subMenu) {
276
+ const availableHeight = this.core.getPlugin('media_control').getAvailableHeight() -
277
+ MENU_VMARGIN * 2;
278
+ $subMenu.css('max-height', `${availableHeight}px`);
279
+ $subMenu
280
+ .find('.gear-sub-menu')
281
+ .css('max-height', `${availableHeight - MENU_BACKLINK_HEIGHT}px`);
282
+ }
283
283
  }
@@ -1,13 +1,17 @@
1
1
  import { Container, ContainerPlugin } from '@clappr/core';
2
2
  import type { ClapprStatsMetrics } from './types.js';
3
3
  export * from './types.js';
4
- export type ClapprStatsSettings = {
4
+ /**
5
+ * Config options for the {@link ClapprStats} plugin
6
+ * @beta
7
+ */
8
+ export interface ClapprStatsSettings {
5
9
  /**
6
10
  * The interval in milliseconds of periodic measurements.
7
11
  * The plugin will emit a {@link ClapprStatsEvents.REPORT} event with the collected metrics at the specified interval.
8
12
  */
9
13
  runEach?: number;
10
- };
14
+ }
11
15
  /**
12
16
  * `PLUGIN` that measures data about playback, which can be useful for analyzing performance and UX.
13
17
  * @beta
@@ -1 +1 @@
1
- {"version":3,"file":"ClapprStats.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-stats/ClapprStats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAwB,MAAM,cAAc,CAAA;AAU/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAMpD,cAAc,YAAY,CAAA;AAM1B,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,OAAO,CAAuB;IAEtC,OAAO,CAAC,sBAAsB,CAAI;IAElC,OAAO,CAAC,OAAO,CAAmC;IAElD,OAAO,CAAC,MAAM,CAMb;IAED,OAAO,CAAC,OAAO,CAAQ;IAEvB;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,CAAC,GAAG;IASX,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,IAAI;gBAIA,SAAS,EAAE,SAAS;IAKhC;;OAEG;IACM,UAAU;IAqDnB;;OAEG;IACM,OAAO;IAKhB;;;OAGG;IACH,aAAa;IAIb,YAAY;IAIZ,OAAO,CAAC,SAAS;IAkBjB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,OAAO;IAgBf,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,YAAY;IA8BpB,OAAO,CAAC,6BAA6B;IAOrC,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,QAAQ;IAgBhB,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,aAAa;CA0BtB"}
1
+ {"version":3,"file":"ClapprStats.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-stats/ClapprStats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAwB,MAAM,cAAc,CAAA;AAU/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAMpD,cAAc,YAAY,CAAA;AAM1B;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,OAAO,CAAuB;IAEtC,OAAO,CAAC,sBAAsB,CAAI;IAElC,OAAO,CAAC,OAAO,CAAmC;IAElD,OAAO,CAAC,MAAM,CAMb;IAED,OAAO,CAAC,OAAO,CAAQ;IAEvB;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,CAAC,GAAG;IASX,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,IAAI;gBAIA,SAAS,EAAE,SAAS;IAKhC;;OAEG;IACM,UAAU;IAqDnB;;OAEG;IACM,OAAO;IAKhB;;;OAGG;IACH,aAAa;IAIb,YAAY;IAIZ,OAAO,CAAC,SAAS;IAkBjB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,OAAO;IAgBf,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,YAAY;IA8BpB,OAAO,CAAC,6BAA6B;IAOrC,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,QAAQ;IAgBhB,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,aAAa;CA0BtB"}
@@ -7,7 +7,7 @@ import '../../../assets/clips/clips.scss';
7
7
  */
8
8
  export interface ClipsPluginSettings {
9
9
  /**
10
- * The compiled text of the clips description, one clip per line in format :
10
+ * The compiled text of the clips description, one clip per line in format:
11
11
  * `HH:MM:SS text` or `MM:SS text` or `SS text`
12
12
  */
13
13
  text: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Clips.d.ts","sourceRoot":"","sources":["../../../src/plugins/clips/Clips.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,YAAY,EAAe,MAAM,cAAc,CAAA;AAI3E,OAAO,EAAgB,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAEjE,OAAO,kCAAkC,CAAA;AAOzC;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAA;CACb;AAKD;;;;;;;;;;;GAWG;AACH,qBAAa,KAAM,SAAQ,YAAY;IACrC,OAAO,CAAC,QAAQ,CAAgC;IAEhD,OAAO,CAAC,KAAK,CAAiB;IAE9B,OAAO,CAAC,YAAY,CAAuB;IAE3C,OAAO,CAAC,OAAO,CAA2B;IAE1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAEtD;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED,IAAI,OAAO,WAEV;IAED,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;IACM,UAAU;IAUV,MAAM;IAUN,OAAO;IAQP,OAAO;IAQP,MAAM;IAKf;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS;IAI5C,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,WAAW;CAOpB"}
1
+ {"version":3,"file":"Clips.d.ts","sourceRoot":"","sources":["../../../src/plugins/clips/Clips.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,YAAY,EAAe,MAAM,cAAc,CAAA;AAI3E,OAAO,EAAgB,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAEjE,OAAO,kCAAkC,CAAA;AAOzC;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAA;CACb;AAKD;;;;;;;;;;;GAWG;AACH,qBAAa,KAAM,SAAQ,YAAY;IACrC,OAAO,CAAC,QAAQ,CAAgC;IAEhD,OAAO,CAAC,KAAK,CAAiB;IAE9B,OAAO,CAAC,YAAY,CAAuB;IAE3C,OAAO,CAAC,OAAO,CAA2B;IAE1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAEtD;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED,IAAI,OAAO,WAEV;IAED,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;IACM,UAAU;IAUV,MAAM;IAUN,OAAO;IAQP,OAAO;IAQP,MAAM;IAKf;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS;IAK5C,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,WAAW;CAOpB"}
@@ -86,7 +86,8 @@ export class Clips extends UICorePlugin {
86
86
  * @returns The text of the clip at the given time
87
87
  */
88
88
  getText(time) {
89
- return this.clips.find((clip) => clip.start <= time && clip.end >= time)?.text;
89
+ return this.clips.find((clip) => clip.start <= time && clip.end >= time)
90
+ ?.text;
90
91
  }
91
92
  onCoreReady() {
92
93
  trace(`${T} onCoreReady`);
@@ -1,45 +1,68 @@
1
1
  import { Core, CorePlugin } from '@clappr/core';
2
2
  /**
3
+ * Config options for the {@link CmcdConfig} plugin
3
4
  * @beta
4
5
  */
5
- export type CmcdConfigPluginSettings = {
6
+ export interface CmcdConfigOptions {
6
7
  /**
7
- * Session ID. If ommitted, a random UUID will be generated
8
+ * `sid` value. If ommitted, a random UUID will be generated
8
9
  */
9
- sessionId: string;
10
+ sessionId?: string;
10
11
  /**
11
- * Content ID,
12
+ * `cid` value.
12
13
  * If ommitted, the pathname part of the first source URL will be used
13
14
  */
14
15
  contentId?: string;
15
- };
16
+ }
16
17
  /**
17
- * A `PLUGIN` that configures CMCD for playback
18
+ * A `PLUGIN` that configures {@link https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf | CMCD} for playback
18
19
  * @beta
19
20
  * @remarks
20
- * Configuration options
21
- * `cmcd`: {@link CmcdConfigPluginSettings}
21
+ * Configuration options - {@link CmcdConfigOptions}.
22
+ * @example
23
+ * ```ts
24
+ * import { CmcdConfig } from '@gcorevideo/player'
25
+ * Player.registerPlugin(CmcdConfig)
26
+ *
27
+ * const player = new Player({
28
+ * source: 'https://example.com/video.mp4',
29
+ * cmcd: {
30
+ * sessionId: '1234567890',
31
+ * contentId: 'f572d396fae9206628714fb2ce00f72e94f2258f',
32
+ * },
33
+ * })
34
+ * ```
22
35
  */
23
36
  export declare class CmcdConfig extends CorePlugin {
24
37
  private sid;
25
38
  private cid;
26
39
  /**
27
- * @inheritdocs
40
+ * @internal
28
41
  */
29
42
  get name(): string;
43
+ /**
44
+ * @internal
45
+ */
30
46
  get version(): string;
47
+ /**
48
+ * @internal
49
+ */
31
50
  get supportedVersion(): string;
32
51
  constructor(core: Core);
33
52
  /**
34
- * @inheritdocs
53
+ * @internal
35
54
  */
36
55
  bindEvents(): void;
56
+ /**
57
+ * Returns the current `sid` and `cid` values.
58
+ * Useful when the auto-generated values need to be known.
59
+ * @returns `sid` and `cid` values
60
+ */
37
61
  exportIds(): {
38
62
  sid: string;
39
63
  cid: string;
40
64
  };
41
65
  private updateSettings;
42
- private updateHlsjsSettings;
43
66
  private generateContentId;
44
67
  }
45
68
  //# sourceMappingURL=CmcdConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CmcdConfig.d.ts","sourceRoot":"","sources":["../../../src/plugins/cmcd-config/CmcdConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,IAAI,EAAE,UAAU,EAAU,MAAM,cAAc,CAAA;AA6BrE;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAID;;;;;;GAMG;AACH,qBAAa,UAAW,SAAQ,UAAU;IACxC,OAAO,CAAC,GAAG,CAAQ;IAEnB,OAAO,CAAC,GAAG,CAAK;IAEhB;;OAEG;IACH,IAAI,IAAI,WAEP;IAED,IAAI,OAAO,WAEV;IAED,IAAI,gBAAgB,WAEnB;gBAEW,IAAI,EAAE,IAAI;IAMtB;;OAEG;IACM,UAAU;IAMnB,SAAS,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;YAO3B,cAAc;IA8B5B,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,iBAAiB;CAK1B"}
1
+ {"version":3,"file":"CmcdConfig.d.ts","sourceRoot":"","sources":["../../../src/plugins/cmcd-config/CmcdConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,IAAI,EAAE,UAAU,EAAU,MAAM,cAAc,CAAA;AA4BrE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAID;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,UAAW,SAAQ,UAAU;IACxC,OAAO,CAAC,GAAG,CAAQ;IAEnB,OAAO,CAAC,GAAG,CAAK;IAEhB;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,OAAO,WAEV;IAED;;OAEG;IACH,IAAI,gBAAgB,WAEnB;gBAEW,IAAI,EAAE,IAAI;IAMtB;;OAEG;IACM,UAAU;IAMnB;;;;OAIG;IACH,SAAS,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;YAO3B,cAAc;IA8B5B,OAAO,CAAC,iBAAiB;CAK1B"}
@@ -24,24 +24,42 @@ const CMCD_KEYS = [
24
24
  ];
25
25
  // const T = 'plugins.cmcd'
26
26
  /**
27
- * A `PLUGIN` that configures CMCD for playback
27
+ * A `PLUGIN` that configures {@link https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf | CMCD} for playback
28
28
  * @beta
29
29
  * @remarks
30
- * Configuration options
31
- * `cmcd`: {@link CmcdConfigPluginSettings}
30
+ * Configuration options - {@link CmcdConfigOptions}.
31
+ * @example
32
+ * ```ts
33
+ * import { CmcdConfig } from '@gcorevideo/player'
34
+ * Player.registerPlugin(CmcdConfig)
35
+ *
36
+ * const player = new Player({
37
+ * source: 'https://example.com/video.mp4',
38
+ * cmcd: {
39
+ * sessionId: '1234567890',
40
+ * contentId: 'f572d396fae9206628714fb2ce00f72e94f2258f',
41
+ * },
42
+ * })
43
+ * ```
32
44
  */
33
45
  export class CmcdConfig extends CorePlugin {
34
46
  sid;
35
47
  cid = '';
36
48
  /**
37
- * @inheritdocs
49
+ * @internal
38
50
  */
39
51
  get name() {
40
52
  return 'cmcd';
41
53
  }
54
+ /**
55
+ * @internal
56
+ */
42
57
  get version() {
43
58
  return '0.1.0';
44
59
  }
60
+ /**
61
+ * @internal
62
+ */
45
63
  get supportedVersion() {
46
64
  return CLAPPR_VERSION;
47
65
  }
@@ -51,11 +69,16 @@ export class CmcdConfig extends CorePlugin {
51
69
  this.cid = this.options.cmcd?.contentId ?? this.generateContentId();
52
70
  }
53
71
  /**
54
- * @inheritdocs
72
+ * @internal
55
73
  */
56
74
  bindEvents() {
57
75
  this.listenTo(this.core, Events.CORE_CONTAINERS_CREATED, () => this.updateSettings(this.core.containers[0]));
58
76
  }
77
+ /**
78
+ * Returns the current `sid` and `cid` values.
79
+ * Useful when the auto-generated values need to be known.
80
+ * @returns `sid` and `cid` values
81
+ */
59
82
  exportIds() {
60
83
  return {
61
84
  sid: this.sid,
@@ -91,19 +114,6 @@ export class CmcdConfig extends CorePlugin {
91
114
  break;
92
115
  }
93
116
  }
94
- updateHlsjsSettings(options, { cid, sid }) {
95
- $.extend(true, options, {
96
- playback: {
97
- hlsjsConfig: {
98
- cmcd: {
99
- includeKeys: CMCD_KEYS,
100
- sessionId: sid,
101
- contentId: cid,
102
- },
103
- },
104
- },
105
- });
106
- }
107
117
  generateContentId() {
108
118
  return new URL(this.core.options.source ?? this.core.options.sources[0].source).pathname.slice(0, 64);
109
119
  }
@@ -32,6 +32,10 @@ export type MediaControlSettings = {
32
32
  default: MediaControlLayerElement[];
33
33
  seekEnabled: boolean;
34
34
  };
35
+ /**
36
+ * Extended events for the {@link MediaControl} plugin
37
+ * @beta
38
+ */
35
39
  export declare enum ExtendedEvents {
36
40
  MEDIACONTROL_VOLUME = "mediacontrol:volume",
37
41
  MEDIACONTROL_MENU_COLLAPSE = "mediacontrol:menu:collapse"
@@ -183,6 +187,13 @@ export declare class MediaControl extends UICorePlugin {
183
187
  * Reenables the plugin disabled earlier with the {@link MediaControl.disable} method
184
188
  */
185
189
  enable(): void;
190
+ /**
191
+ *
192
+ * @returns Vertical space available to render something on top of the container.
193
+ * @remarks
194
+ * This takes into account the container height and excludes the height of the controls bar
195
+ */
196
+ getAvailableHeight(): number;
186
197
  /**
187
198
  * Set the initial volume, which is preserved when playback is interrupted by an advertisement
188
199
  */
@@ -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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"}
@@ -58,6 +58,10 @@ const LEFT_ORDER = [
58
58
  'duration',
59
59
  'dvr',
60
60
  ];
61
+ /**
62
+ * Extended events for the {@link MediaControl} plugin
63
+ * @beta
64
+ */
61
65
  export var ExtendedEvents;
62
66
  (function (ExtendedEvents) {
63
67
  ExtendedEvents["MEDIACONTROL_VOLUME"] = "mediacontrol:volume";
@@ -318,6 +322,15 @@ export class MediaControl extends UICorePlugin {
318
322
  this.bindKeyEvents();
319
323
  this.show();
320
324
  }
325
+ /**
326
+ *
327
+ * @returns Vertical space available to render something on top of the container.
328
+ * @remarks
329
+ * This takes into account the container height and excludes the height of the controls bar
330
+ */
331
+ getAvailableHeight() {
332
+ return (this.core.$el.height() - this.$el.find('.media-control-layer').height());
333
+ }
321
334
  /**
322
335
  * Set the initial volume, which is preserved when playback is interrupted by an advertisement
323
336
  */
@@ -329,6 +342,7 @@ export class MediaControl extends UICorePlugin {
329
342
  onVolumeChanged() {
330
343
  this.updateVolumeUI();
331
344
  }
345
+ // TODO check if CONTAINER_SETTINGSUPDATE handler is sufficient
332
346
  onLoadedMetadata() {
333
347
  const video = this.core.activePlayback?.el;
334
348
  // video.webkitSupportsFullscreen is deprecated but iOS appears to only use this
@@ -417,11 +431,11 @@ export class MediaControl extends UICorePlugin {
417
431
  this.applyButtonStyle(this.$playStopToggle);
418
432
  }
419
433
  mousemoveOnSeekBar(event) {
420
- const offset = MediaControl.getPageX(event) -
421
- (this.$seekBarContainer.offset().left ?? 0); // TODO check if the result can be negative
422
- const hoverOffset = offset -
423
- (this.$seekBarHover.width() ?? 0) / 2;
424
- const pos = offset ? Math.min(1, Math.max(offset / this.$seekBarContainer.width(), 0)) : 0;
434
+ const offset = MediaControl.getPageX(event) - (this.$seekBarContainer.offset().left ?? 0); // TODO check if the result can be negative
435
+ const hoverOffset = offset - (this.$seekBarHover.width() ?? 0) / 2;
436
+ const pos = offset
437
+ ? Math.min(1, Math.max(offset / this.$seekBarContainer.width(), 0))
438
+ : 0;
425
439
  if (this.settings.seekEnabled) {
426
440
  // TODO test that it works when the element does not exist
427
441
  this.$seekBarHover.css({ left: hoverOffset });
@@ -1,6 +1,10 @@
1
1
  import { UIContainerPlugin } from '@clappr/core';
2
2
  import '../../../assets/poster/poster.scss';
3
- export type PosterPluginSettings = {
3
+ /**
4
+ * Config options for the {@link Poster} plugin
5
+ * @beta
6
+ */
7
+ export interface PosterPluginSettings {
4
8
  /**
5
9
  * Custom CSS background
6
10
  */
@@ -14,10 +18,10 @@ export type PosterPluginSettings = {
14
18
  */
15
19
  url?: string;
16
20
  /**
17
- * Whether to show the poster after playback has ended @default true
21
+ * Whether to show the poster after playback has ended, by default `true`
18
22
  */
19
23
  showOnVideoEnd?: boolean;
20
- };
24
+ }
21
25
  /**
22
26
  * `PLUGIN` that displays a poster image in the background and a big play button on top when playback is stopped
23
27
  * @beta
@@ -1 +1 @@
1
- {"version":3,"file":"Poster.d.ts","sourceRoot":"","sources":["../../../src/plugins/poster/Poster.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,iBAAiB,EAElB,MAAM,cAAc,CAAA;AAMrB,OAAO,oCAAoC,CAAA;AAK3C,MAAM,MAAM,oBAAoB,GAAG;IACjC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAID;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,MAAO,SAAQ,iBAAiB;IAG3C,OAAO,CAAC,aAAa,CAAQ;IAE7B,OAAO,CAAC,OAAO,CAAQ;IAEvB,OAAO,CAAC,aAAa,CAAQ;IAE7B,OAAO,CAAC,WAAW,CAA2B;IAE9C;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAEvD,OAAO,KAAK,YAAY,GASvB;IAED,OAAO,KAAK,MAAM,GAEjB;IAED;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACH,IAAa,MAAM;;MAIlB;IAED;;OAEG;IACM,UAAU;IAuBnB;;OAEG;IACM,MAAM;IAOf;;OAEG;IACM,OAAO;IAOhB,OAAO,CAAC,OAAO;IAYf,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,OAAO;IAef,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACM,MAAM;IAgCf;;OAEG;IACM,OAAO;CAIjB"}
1
+ {"version":3,"file":"Poster.d.ts","sourceRoot":"","sources":["../../../src/plugins/poster/Poster.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,iBAAiB,EAElB,MAAM,cAAc,CAAA;AAMrB,OAAO,oCAAoC,CAAA;AAK3C;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAID;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,MAAO,SAAQ,iBAAiB;IAG3C,OAAO,CAAC,aAAa,CAAQ;IAE7B,OAAO,CAAC,OAAO,CAAQ;IAEvB,OAAO,CAAC,aAAa,CAAQ;IAE7B,OAAO,CAAC,WAAW,CAA2B;IAE9C;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAEvD,OAAO,KAAK,YAAY,GASvB;IAED,OAAO,KAAK,MAAM,GAEjB;IAED;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACH,IAAa,MAAM;;MAIlB;IAED;;OAEG;IACM,UAAU;IAuBnB;;OAEG;IACM,MAAM;IAOf;;OAEG;IACM,OAAO;IAOhB,OAAO,CAAC,OAAO;IAYf,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,OAAO;IAef,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACM,MAAM;IAgCf;;OAEG;IACM,OAAO;CAIjB"}
@@ -57,6 +57,7 @@ export declare class SourceController extends CorePlugin {
57
57
  private currentSourceIndex;
58
58
  private sourcesDelay;
59
59
  private active;
60
+ private autoPlay;
60
61
  private switching;
61
62
  private sync;
62
63
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"SourceController.d.ts","sourceRoot":"","sources":["../../../src/plugins/source-controller/SourceController.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACV,KAAK,IAAI,IAAI,UAAU,EACxB,MAAM,cAAc,CAAA;AAwBrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAwC9C,OAAO,CAAC,WAAW,CAA8B;IAEjD,OAAO,CAAC,kBAAkB,CAAI;IAE9B,OAAO,CAAC,YAAY,CAA6B;IAEjD,OAAO,CAAC,MAAM,CAAQ;IAEtB,OAAO,CAAC,SAAS,CAAQ;IAEzB,OAAO,CAAC,IAAI,CAAiB;IAE7B;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;gBACS,IAAI,EAAE,UAAU;IAW5B;;OAEG;IACM,UAAU;IAWnB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,wBAAwB;IAoBhC,OAAO,CAAC,2BAA2B;IAwCnC,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,kBAAkB;IAe1B;;OAEG;IACH,MAAM,KAAK,OAAO,WAEjB;CACF"}
1
+ {"version":3,"file":"SourceController.d.ts","sourceRoot":"","sources":["../../../src/plugins/source-controller/SourceController.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACV,KAAK,IAAI,IAAI,UAAU,EACxB,MAAM,cAAc,CAAA;AAwBrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAwC9C,OAAO,CAAC,WAAW,CAA8B;IAEjD,OAAO,CAAC,kBAAkB,CAAI;IAE9B,OAAO,CAAC,YAAY,CAA6B;IAEjD,OAAO,CAAC,MAAM,CAAQ;IAEtB,OAAO,CAAC,QAAQ,CAAQ;IAExB,OAAO,CAAC,SAAS,CAAQ;IAEzB,OAAO,CAAC,IAAI,CAAiB;IAE7B;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;gBACS,IAAI,EAAE,UAAU;IAW5B;;OAEG;IACM,UAAU;IAWnB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,wBAAwB;IAoBhC,OAAO,CAAC,2BAA2B;IAmDnC,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,aAAa;IA+BrB,OAAO,CAAC,kBAAkB;IAe1B;;OAEG;IACH,MAAM,KAAK,OAAO,WAEjB;CACF"}
@@ -1,4 +1,4 @@
1
- import { Events as ClapprEvents, CorePlugin, } from '@clappr/core';
1
+ import { Events as Events, CorePlugin, } from '@clappr/core';
2
2
  import { PlaybackErrorCode } from '../../playback.types.js';
3
3
  import { trace } from '@gcorevideo/utils';
4
4
  import { SpinnerEvents } from '../spinner-three-bounce/SpinnerThreeBounce.js';
@@ -108,6 +108,7 @@ export class SourceController extends CorePlugin {
108
108
  currentSourceIndex = 0;
109
109
  sourcesDelay = {};
110
110
  active = false;
111
+ autoPlay = false;
111
112
  switching = false;
112
113
  sync = noSync;
113
114
  /**
@@ -141,8 +142,8 @@ export class SourceController extends CorePlugin {
141
142
  */
142
143
  bindEvents() {
143
144
  super.bindEvents();
144
- this.listenTo(this.core, ClapprEvents.CORE_READY, this.onCoreReady);
145
- this.listenTo(this.core, ClapprEvents.CORE_ACTIVE_CONTAINER_CHANGED, this.onActiveContainerChanged);
145
+ this.listenTo(this.core, Events.CORE_READY, this.onCoreReady);
146
+ this.listenTo(this.core, Events.CORE_ACTIVE_CONTAINER_CHANGED, this.onActiveContainerChanged);
146
147
  }
147
148
  onCoreReady() {
148
149
  trace(`${T} onCoreReady`);
@@ -169,7 +170,7 @@ export class SourceController extends CorePlugin {
169
170
  }
170
171
  }
171
172
  bindContainerEventListeners() {
172
- this.core.activePlayback.on(ClapprEvents.PLAYBACK_ERROR, (error) => {
173
+ this.core.activePlayback.on(Events.PLAYBACK_ERROR, (error) => {
173
174
  trace(`${T} on PLAYBACK_ERROR`, {
174
175
  error: {
175
176
  code: error?.code,
@@ -183,6 +184,7 @@ export class SourceController extends CorePlugin {
183
184
  if (this.switching) {
184
185
  return;
185
186
  }
187
+ this.autoPlay = !!this.core.activeContainer.actionsMetadata.playEvent?.autoPlay;
186
188
  switch (error.code) {
187
189
  case PlaybackErrorCode.MediaSourceUnavailable:
188
190
  this.core.activeContainer?.getPlugin('poster')?.disable();
@@ -192,7 +194,7 @@ export class SourceController extends CorePlugin {
192
194
  break;
193
195
  }
194
196
  });
195
- this.core.activePlayback.on(ClapprEvents.PLAYBACK_PLAY, () => {
197
+ this.core.activePlayback.on(Events.PLAYBACK_PLAY, () => {
196
198
  trace(`${T} on PLAYBACK_PLAY`, {
197
199
  currentSource: this.sourcesList[this.currentSourceIndex],
198
200
  retrying: this.active,
@@ -203,6 +205,12 @@ export class SourceController extends CorePlugin {
203
205
  this.core.activeContainer?.getPlugin('spinner')?.hide();
204
206
  }
205
207
  });
208
+ this.listenTo(this.core.activeContainer, Events.CONTAINER_PLAY, (_, { autoPlay }) => {
209
+ trace(`${T} onContainerPlay`, {
210
+ autoPlay,
211
+ });
212
+ this.autoPlay = !!autoPlay;
213
+ });
206
214
  }
207
215
  reset() {
208
216
  this.active = false;
@@ -220,17 +228,20 @@ export class SourceController extends CorePlugin {
220
228
  trace(`${T} retryPlayback syncing...`, {
221
229
  nextSource,
222
230
  });
223
- const rnd = RETRY_DELAY_BLUR * Math.random();
231
+ const rnd = Math.round(RETRY_DELAY_BLUR * Math.random());
224
232
  this.sync(() => {
225
- trace(`${T} retryPlayback loading...`);
226
233
  this.switching = false;
227
234
  this.core.load(nextSource.source, nextSource.mimeType);
228
235
  trace(`${T} retryPlayback loaded`, {
229
236
  nextSource,
230
237
  });
231
238
  setTimeout(() => {
232
- this.core.activePlayback.play();
233
- trace(`${T} retryPlayback playing`);
239
+ trace(`${T} retryPlayback playing`, {
240
+ autoPlay: this.autoPlay,
241
+ });
242
+ this.core.activeContainer.play({
243
+ autoPlay: this.autoPlay,
244
+ });
234
245
  }, rnd);
235
246
  });
236
247
  });
@@ -66,6 +66,7 @@ export declare function createMockPlayback(name?: string, options?: Record<strin
66
66
  trigger: <T extends string | symbol>(event: T, ...args: any[]) => boolean;
67
67
  };
68
68
  export declare function createMockContainer(options?: Record<string, unknown>, playback?: any): Events<string | symbol, any> & {
69
+ actionsMetadata: {};
69
70
  el: any;
70
71
  playback: any;
71
72
  options: {
@@ -1 +1 @@
1
- {"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../src/testUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,MAAM,MAAM,eAAe,CAAA;AAGlC,wBAAgB,cAAc,CAC5B,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,SAAS,GAAE,GAAkC;;;;;;;;;;;;;;;;;EAsB9C;AAED,wBAAgB,gBAAgB;;;EAK/B;AAED,wBAAgB,mBAAmB;;;;;;EAKlC;AAED,wBAAgB,kBAAkB,CAAC,IAAI,SAAS,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoCtF;AAED,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,QAAQ,GAAE,GAAgD;;;;;;;;;;;;;;;;;;;;;;;;EA6B3D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,gBAiB/C;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,OAe7C"}
1
+ {"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../src/testUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,MAAM,MAAM,eAAe,CAAA;AAGlC,wBAAgB,cAAc,CAC5B,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,SAAS,GAAE,GAAkC;;;;;;;;;;;;;;;;;EAsB9C;AAED,wBAAgB,gBAAgB;;;EAK/B;AAED,wBAAgB,mBAAmB;;;;;;EAKlC;AAED,wBAAgB,kBAAkB,CAAC,IAAI,SAAS,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoCtF;AAED,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,QAAQ,GAAE,GAAgD;;;;;;;;;;;;;;;;;;;;;;;;;EA8B3D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,gBAmB/C;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,OAe7C"}
package/lib/testUtils.js CHANGED
@@ -76,6 +76,7 @@ export function createMockContainer(options = {}, playback = createMockPlayback(
76
76
  const el = playback.el;
77
77
  const emitter = new Events();
78
78
  return Object.assign(emitter, {
79
+ actionsMetadata: {},
79
80
  el,
80
81
  playback,
81
82
  options: {
@@ -112,6 +113,8 @@ export function createMockMediaControl(core) {
112
113
  // @ts-ignore
113
114
  mediaControl.container = core.activeContainer;
114
115
  // @ts-ignore
116
+ mediaControl.getAvailableHeight = vi.fn().mockReturnValue(300);
117
+ // @ts-ignore
115
118
  mediaControl.toggleElement = vi.fn();
116
119
  vi.spyOn(mediaControl, 'trigger');
117
120
  core.$el.append(mediaControl.$el);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gcorevideo/player",
3
- "version": "2.24.1",
3
+ "version": "2.24.3",
4
4
  "description": "Gcore JavaScript video player",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",