@gcorevideo/player 2.19.12 → 2.19.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 (171) hide show
  1. package/dist/core.js +16 -11
  2. package/dist/index.css +1405 -1405
  3. package/dist/index.js +1239 -1088
  4. package/dist/player.d.ts +209 -45
  5. package/dist/plugins/index.css +1461 -1461
  6. package/dist/plugins/index.js +4005 -3858
  7. package/docs/api/player.bottomgear.md +3 -289
  8. package/docs/api/player.dvrcontrols._constructor_.md +3 -0
  9. package/docs/api/player.dvrcontrols.md +10 -201
  10. package/docs/api/player.levelselector.md +8 -140
  11. package/docs/api/player.md +9 -5
  12. package/docs/api/player.mediacontrol.disable.md +2 -0
  13. package/docs/api/player.mediacontrol.disabledcontrolbutton.md +1 -1
  14. package/docs/api/player.mediacontrol.enable.md +2 -0
  15. package/docs/api/player.mediacontrol.enablecontrolbutton.md +1 -1
  16. package/docs/api/player.mediacontrol.getelement.md +19 -1
  17. package/docs/api/player.mediacontrol.md +17 -281
  18. package/docs/api/player.mediacontrol.volume.md +2 -2
  19. package/docs/api/player.mediacontrolelement.md +2 -1
  20. package/docs/api/player.poster.disable.md +5 -0
  21. package/docs/api/player.poster.enable.md +5 -0
  22. package/docs/api/player.poster.md +25 -183
  23. package/lib/Player.d.ts +1 -0
  24. package/lib/Player.d.ts.map +1 -1
  25. package/lib/Player.js +15 -10
  26. package/lib/index.d.ts +1 -0
  27. package/lib/index.d.ts.map +1 -1
  28. package/lib/index.js +1 -0
  29. package/lib/plugins/audio-selector/AudioSelector.js +2 -2
  30. package/lib/plugins/big-mute-button/BigMuteButton.d.ts.map +1 -1
  31. package/lib/plugins/big-mute-button/BigMuteButton.js +2 -1
  32. package/lib/plugins/bottom-gear/BottomGear.d.ts +38 -7
  33. package/lib/plugins/bottom-gear/BottomGear.d.ts.map +1 -1
  34. package/lib/plugins/bottom-gear/BottomGear.js +53 -33
  35. package/lib/plugins/clappr-nerd-stats/ClapprNerdStats.d.ts +1 -1
  36. package/lib/plugins/clappr-nerd-stats/ClapprNerdStats.d.ts.map +1 -1
  37. package/lib/plugins/clappr-nerd-stats/ClapprNerdStats.js +20 -24
  38. package/lib/plugins/clappr-stats/ClapprStats.js +1 -1
  39. package/lib/plugins/click-to-pause/ClickToPause.js +1 -1
  40. package/lib/plugins/clips/Clips.js +2 -2
  41. package/lib/plugins/context-menu/ContextMenu.js +1 -1
  42. package/lib/plugins/disable-controls/DisableControls.js +1 -1
  43. package/lib/plugins/dvr-controls/DvrControls.d.ts +30 -4
  44. package/lib/plugins/dvr-controls/DvrControls.d.ts.map +1 -1
  45. package/lib/plugins/dvr-controls/DvrControls.js +39 -11
  46. package/lib/plugins/error-screen/ErrorScreen.d.ts.map +1 -1
  47. package/lib/plugins/error-screen/ErrorScreen.js +2 -1
  48. package/lib/plugins/favicon/Favicon.js +1 -1
  49. package/lib/plugins/google-analytics/GoogleAnalytics.js +1 -1
  50. package/lib/plugins/level-selector/LevelSelector.d.ts +25 -6
  51. package/lib/plugins/level-selector/LevelSelector.d.ts.map +1 -1
  52. package/lib/plugins/level-selector/LevelSelector.js +33 -12
  53. package/lib/plugins/logo/Logo.js +1 -1
  54. package/lib/plugins/media-control/MediaControl.d.ts +66 -22
  55. package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
  56. package/lib/plugins/media-control/MediaControl.js +72 -35
  57. package/lib/plugins/multi-camera/MultiCamera.js +3 -3
  58. package/lib/plugins/picture-in-picture/PictureInPicture.js +3 -3
  59. package/lib/plugins/playback-rate/PlaybackRate.d.ts.map +1 -1
  60. package/lib/plugins/playback-rate/PlaybackRate.js +3 -3
  61. package/lib/plugins/poster/Poster.d.ts +57 -3
  62. package/lib/plugins/poster/Poster.d.ts.map +1 -1
  63. package/lib/plugins/poster/Poster.js +57 -9
  64. package/lib/plugins/seek-time/SeekTime.js +2 -2
  65. package/lib/plugins/share/Share.js +2 -2
  66. package/lib/plugins/skip-time/SkipTime.js +1 -1
  67. package/lib/plugins/source-controller/SourceController.js +1 -1
  68. package/lib/plugins/spinner-three-bounce/SpinnerThreeBounce.js +1 -1
  69. package/lib/plugins/statistics/Statistics.js +1 -1
  70. package/lib/plugins/subtitles/Subtitles.js +3 -3
  71. package/lib/plugins/thumbnails/Thumbnails.js +3 -3
  72. package/lib/plugins/types.d.ts +1 -7
  73. package/lib/plugins/types.d.ts.map +1 -1
  74. package/lib/plugins/vast-ads/VastAds.d.ts +1 -0
  75. package/lib/plugins/vast-ads/VastAds.d.ts.map +1 -1
  76. package/lib/plugins/vast-ads/VastAds.js +6 -3
  77. package/package.json +2 -1
  78. package/src/Player.ts +15 -9
  79. package/src/__tests__/Player.test.ts +15 -76
  80. package/src/index.ts +1 -0
  81. package/src/plugins/audio-selector/AudioSelector.ts +2 -2
  82. package/src/plugins/big-mute-button/BigMuteButton.ts +2 -1
  83. package/src/plugins/bottom-gear/BottomGear.ts +67 -42
  84. package/src/plugins/clappr-nerd-stats/ClapprNerdStats.ts +21 -26
  85. package/src/plugins/clappr-stats/ClapprStats.ts +1 -1
  86. package/src/plugins/click-to-pause/ClickToPause.ts +1 -1
  87. package/src/plugins/clips/Clips.ts +2 -2
  88. package/src/plugins/context-menu/ContextMenu.ts +1 -1
  89. package/src/plugins/disable-controls/DisableControls.ts +1 -1
  90. package/src/plugins/dvr-controls/DvrControls.ts +42 -14
  91. package/src/plugins/error-screen/ErrorScreen.ts +2 -1
  92. package/src/plugins/favicon/Favicon.ts +1 -1
  93. package/src/plugins/google-analytics/GoogleAnalytics.ts +1 -1
  94. package/src/plugins/level-selector/LevelSelector.ts +34 -14
  95. package/src/plugins/level-selector/__tests__/LevelSelector.test.ts +22 -2
  96. package/src/plugins/logo/Logo.ts +1 -1
  97. package/src/plugins/media-control/MediaControl.ts +83 -44
  98. package/src/plugins/multi-camera/MultiCamera.ts +3 -3
  99. package/src/plugins/picture-in-picture/PictureInPicture.ts +3 -3
  100. package/src/plugins/playback-rate/PlaybackRate.ts +3 -4
  101. package/src/plugins/poster/Poster.ts +59 -12
  102. package/src/plugins/seek-time/SeekTime.ts +2 -2
  103. package/src/plugins/share/Share.ts +2 -2
  104. package/src/plugins/skip-time/SkipTime.ts +1 -1
  105. package/src/plugins/source-controller/SourceController.ts +1 -1
  106. package/src/plugins/source-controller/__tests__/SourceController.test.ts +5 -0
  107. package/src/plugins/spinner-three-bounce/SpinnerThreeBounce.ts +1 -1
  108. package/src/plugins/statistics/Statistics.ts +1 -1
  109. package/src/plugins/subtitles/Subtitles.ts +3 -3
  110. package/src/plugins/thumbnails/Thumbnails.ts +3 -3
  111. package/src/plugins/types.ts +1 -0
  112. package/src/plugins/vast-ads/VastAds.ts +6 -6
  113. package/temp/player.api.json +3301 -5030
  114. package/tsconfig.tsbuildinfo +1 -1
  115. package/docs/api/player.bottomgear.attributes.md +0 -17
  116. package/docs/api/player.bottomgear.bindevents.md +0 -18
  117. package/docs/api/player.bottomgear.container.md +0 -14
  118. package/docs/api/player.bottomgear.events.md +0 -16
  119. package/docs/api/player.bottomgear.hide.md +0 -18
  120. package/docs/api/player.bottomgear.name.md +0 -14
  121. package/docs/api/player.bottomgear.refresh.md +0 -18
  122. package/docs/api/player.bottomgear.reload.md +0 -18
  123. package/docs/api/player.bottomgear.render.md +0 -18
  124. package/docs/api/player.bottomgear.supportedversion.md +0 -16
  125. package/docs/api/player.bottomgear.template.md +0 -14
  126. package/docs/api/player.bottomgear.togglegearmenu.md +0 -18
  127. package/docs/api/player.bottomgear.unbindevents.md +0 -18
  128. package/docs/api/player.bottomgear.version.md +0 -14
  129. package/docs/api/player.dvrcontrols.attributes.md +0 -14
  130. package/docs/api/player.dvrcontrols.bindevents.md +0 -15
  131. package/docs/api/player.dvrcontrols.click.md +0 -15
  132. package/docs/api/player.dvrcontrols.events.md +0 -13
  133. package/docs/api/player.dvrcontrols.name.md +0 -11
  134. package/docs/api/player.dvrcontrols.render.md +0 -15
  135. package/docs/api/player.dvrcontrols.settingsupdate.md +0 -15
  136. package/docs/api/player.dvrcontrols.shouldrender.md +0 -15
  137. package/docs/api/player.dvrcontrols.supportedversion.md +0 -13
  138. package/docs/api/player.dvrcontrols.template.md +0 -11
  139. package/docs/api/player.levelselector.attributes.md +0 -17
  140. package/docs/api/player.levelselector.bindevents.md +0 -18
  141. package/docs/api/player.levelselector.name.md +0 -14
  142. package/docs/api/player.levelselector.render.md +0 -18
  143. package/docs/api/player.levelselector.supportedversion.md +0 -16
  144. package/docs/api/player.levelselector.version.md +0 -14
  145. package/docs/api/player.mediacontrol.attributes.md +0 -17
  146. package/docs/api/player.mediacontrol.bindcontainerevents.md +0 -18
  147. package/docs/api/player.mediacontrol.bindevents.md +0 -18
  148. package/docs/api/player.mediacontrol.container.md +0 -14
  149. package/docs/api/player.mediacontrol.destroy.md +0 -18
  150. package/docs/api/player.mediacontrol.disabled.md +0 -14
  151. package/docs/api/player.mediacontrol.events.md +0 -40
  152. package/docs/api/player.mediacontrol.getexternalinterface.md +0 -21
  153. package/docs/api/player.mediacontrol.name.md +0 -14
  154. package/docs/api/player.mediacontrol.pause.md +0 -20
  155. package/docs/api/player.mediacontrol.play.md +0 -20
  156. package/docs/api/player.mediacontrol.playback.md +0 -14
  157. package/docs/api/player.mediacontrol.render.md +0 -18
  158. package/docs/api/player.mediacontrol.setmuted.md +0 -52
  159. package/docs/api/player.mediacontrol.stop.md +0 -20
  160. package/docs/api/player.mediacontrol.supportedversion.md +0 -16
  161. package/docs/api/player.poster.attributes.md +0 -14
  162. package/docs/api/player.poster.bindevents.md +0 -15
  163. package/docs/api/player.poster.destroy.md +0 -15
  164. package/docs/api/player.poster.events.md +0 -13
  165. package/docs/api/player.poster.name.md +0 -11
  166. package/docs/api/player.poster.render.md +0 -15
  167. package/docs/api/player.poster.shouldrender.md +0 -11
  168. package/docs/api/player.poster.showonvideoend.md +0 -11
  169. package/docs/api/player.poster.supportedversion.md +0 -13
  170. package/docs/api/player.poster.template.md +0 -11
  171. package/src/plugins/build.ts +0 -1
@@ -3,45 +3,78 @@
3
3
  // license that can be found in the LICENSE file.
4
4
  import { Events, Playback, PlayerError, UIContainerPlugin, template, $, } from '@clappr/core';
5
5
  import { trace } from '@gcorevideo/utils';
6
- import { CLAPPR_VERSION } from '../build.js';
6
+ import { CLAPPR_VERSION } from '../../build.js';
7
7
  import '../../../assets/poster/poster.scss';
8
8
  import posterHTML from '../../../assets/poster/poster.ejs';
9
9
  import playIcon from '../../../assets/icons/new/play.svg';
10
10
  const T = 'plugins.poster_custom';
11
+ /**
12
+ * Displays a poster image in the background and a big play button on top when playback is stopped
13
+ * @beta
14
+ * @remarks
15
+ * When the playback is stopped, media control UI is disabled.
16
+ *
17
+ * Configuration options:
18
+ *
19
+ * - `poster.custom` - custom CSS background
20
+ *
21
+ * - `poster.showForNoOp` - whether to show the poster when the playback is not started
22
+ *
23
+ * - `poster.url` - the URL of the poster image
24
+ *
25
+ * - `poster.showOnVideoEnd` - whether to show the poster when the playback is ended
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * new Player({
30
+ * ...
31
+ * poster: {
32
+ * showForNoOp: true,
33
+ * url: 'https://via.placeholder.com/150.png',
34
+ * }
35
+ * })
36
+ * ```
37
+ */
11
38
  export class Poster extends UIContainerPlugin {
12
39
  hasFatalError = false;
13
40
  hasStartedPlaying = false;
14
41
  playRequested = false;
15
42
  $playButton = null;
16
43
  $playWrapper = null;
44
+ /**
45
+ * @internal
46
+ */
17
47
  get name() {
18
48
  return 'poster_custom';
19
49
  }
50
+ /**
51
+ * @internal
52
+ */
20
53
  get supportedVersion() {
21
54
  return { min: CLAPPR_VERSION };
22
55
  }
23
- get template() {
24
- return template(posterHTML);
25
- }
56
+ static template = template(posterHTML);
26
57
  get shouldRender() {
27
58
  if (!this.enabled) {
28
59
  return false;
29
60
  }
30
- // const showOnError = this.options.poster?.showOnError !== false
31
- trace(`${T} shouldRender`, {
32
- hasFatalError: this.hasFatalError,
33
- });
34
61
  const showForNoOp = !!this.options.poster?.showForNoOp;
35
62
  return (this.container.playback.name !== 'html_img' &&
36
63
  (this.container.playback.getPlaybackType() !== Playback.NO_OP ||
37
64
  showForNoOp));
38
65
  }
66
+ /**
67
+ * @internal
68
+ */
39
69
  get attributes() {
40
70
  return {
41
71
  class: 'player-poster',
42
72
  'data-poster': '',
43
73
  };
44
74
  }
75
+ /**
76
+ * @internal
77
+ */
45
78
  get events() {
46
79
  return {
47
80
  click: 'clicked',
@@ -50,6 +83,9 @@ export class Poster extends UIContainerPlugin {
50
83
  get showOnVideoEnd() {
51
84
  return this.options.poster?.showOnVideoEnd !== false;
52
85
  }
86
+ /**
87
+ * @internal
88
+ */
53
89
  bindEvents() {
54
90
  this.listenTo(this.container, Events.CONTAINER_STOP, this.onStop);
55
91
  this.listenTo(this.container, Events.CONTAINER_PLAY, this.onPlay);
@@ -62,11 +98,17 @@ export class Poster extends UIContainerPlugin {
62
98
  this.listenTo(this.container, Events.CONTAINER_READY, this.render);
63
99
  this.listenTo(this.container, Events.PLAYBACK_PLAY_INTENT, this.onPlayIntent);
64
100
  }
101
+ /**
102
+ * Reenables earlier disabled plugin
103
+ */
65
104
  enable() {
66
105
  super.enable();
67
106
  this.hasStartedPlaying = this.container.playback.isPlaying();
68
107
  this.update();
69
108
  }
109
+ /**
110
+ * Disables the plugin, unmounting it from the DOM
111
+ */
70
112
  disable() {
71
113
  trace(`${T} disable`);
72
114
  this.hasStartedPlaying = false;
@@ -197,11 +239,14 @@ export class Poster extends UIContainerPlugin {
197
239
  this.$el.hide();
198
240
  }
199
241
  }
242
+ /**
243
+ * @internal
244
+ */
200
245
  render() {
201
246
  if (!this.shouldRender) {
202
247
  return this;
203
248
  }
204
- this.$el.html(this.template());
249
+ this.$el.html(Poster.template());
205
250
  const isRegularPoster = this.options.poster && this.options.poster.custom === undefined;
206
251
  if (isRegularPoster) {
207
252
  const posterUrl = this.options.poster.url || this.options.poster;
@@ -225,6 +270,9 @@ export class Poster extends UIContainerPlugin {
225
270
  this.update();
226
271
  return this;
227
272
  }
273
+ /**
274
+ * @internal
275
+ */
228
276
  destroy() {
229
277
  this.container.$el.removeClass('container-with-poster-clickable');
230
278
  return this;
@@ -2,13 +2,13 @@
2
2
  // Use of this source code is governed by a BSD-style
3
3
  // license that can be found in the LICENSE file.
4
4
  import { Events, Playback, UICorePlugin, Utils, template } from '@clappr/core';
5
- import { CLAPPR_VERSION } from '../build.js';
5
+ import { CLAPPR_VERSION } from '../../build.js';
6
6
  import seekTimeHTML from '../../../assets/seek-time/seek-time.html';
7
7
  import '../../../assets/seek-time/seek-time.scss';
8
8
  const { formatTime } = Utils;
9
9
  export class SeekTime extends UICorePlugin {
10
10
  get name() {
11
- return 'seek_time';
11
+ return 'media_control_seek_time';
12
12
  }
13
13
  get supportedVersion() {
14
14
  return { min: CLAPPR_VERSION };
@@ -1,5 +1,5 @@
1
1
  import { Events, UICorePlugin, template } from '@clappr/core';
2
- import { CLAPPR_VERSION } from '../build.js';
2
+ import { CLAPPR_VERSION } from '../../build.js';
3
3
  import pluginHtml from '../../../assets/share/share.ejs';
4
4
  import '../../../assets/share/style.scss';
5
5
  import shareIcon from '../../../assets/icons/old/share.svg';
@@ -10,7 +10,7 @@ export class Share extends UICorePlugin {
10
10
  hide = false;
11
11
  container = null;
12
12
  get name() {
13
- return 'share';
13
+ return 'media_control_share';
14
14
  }
15
15
  get supportedVersion() {
16
16
  return { min: CLAPPR_VERSION };
@@ -1,5 +1,5 @@
1
1
  import { UICorePlugin as UICorePluginOriginal, Browser, Playback, Events, template } from '@clappr/core';
2
- import { CLAPPR_VERSION } from '../build.js';
2
+ import { CLAPPR_VERSION } from '../../build.js';
3
3
  import pluginHtml from '../../../assets/skip-time/skip-time.ejs';
4
4
  import '../../../assets/skip-time/style.scss';
5
5
  export class SkipTime extends UICorePluginOriginal {
@@ -1,7 +1,7 @@
1
1
  import { Events as ClapprEvents, CorePlugin, } from '@clappr/core';
2
2
  import { PlaybackErrorCode, } from '../../playback.types.js';
3
3
  import { trace } from '@gcorevideo/utils';
4
- import { CLAPPR_VERSION } from '../build';
4
+ import { CLAPPR_VERSION } from '../../build.js';
5
5
  const T = 'plugins.source_controller';
6
6
  const INITIAL_RETRY_DELAY = 1000;
7
7
  const MAX_RETRY_DELAY = 5000;
@@ -6,7 +6,7 @@ import { PlaybackErrorCode } from '../../playback.types.js';
6
6
  import { trace } from '@gcorevideo/utils';
7
7
  import spinnerHTML from '../../../assets/spinner-three-bounce/spinner.ejs';
8
8
  import '../../../assets/spinner-three-bounce/spinner.scss';
9
- import { CLAPPR_VERSION } from '../build.js';
9
+ import { CLAPPR_VERSION } from '../../build.js';
10
10
  const T = 'plugins.spinner';
11
11
  export class SpinnerThreeBounce extends UIContainerPlugin {
12
12
  get name() {
@@ -2,7 +2,7 @@
2
2
  import { ContainerPlugin, Events, Playback } from '@clappr/core';
3
3
  import { reportError } from '@gcorevideo/utils';
4
4
  import assert from 'assert';
5
- import { CLAPPR_VERSION } from '../build.js';
5
+ import { CLAPPR_VERSION } from '../../build.js';
6
6
  const CUSTOM_EVENTS_CONTAINER_START = 'container:start';
7
7
  const WATCH_CUTOFF = 5;
8
8
  const HEATMAP_INTERVAL = 10;
@@ -1,7 +1,7 @@
1
1
  import { Events, UICorePlugin, Browser, template, $, } from '@clappr/core';
2
2
  import { reportError } from '@gcorevideo/utils';
3
3
  import assert from 'assert';
4
- import { CLAPPR_VERSION } from '../build.js';
4
+ import { CLAPPR_VERSION } from '../../build.js';
5
5
  import '../../../assets/subtitles/style.scss';
6
6
  import subtitlesOffIcon from '../../../assets/icons/new/subtitles-off.svg';
7
7
  import subtitlesOnIcon from '../../../assets/icons/new/subtitles-on.svg';
@@ -10,7 +10,7 @@ import stringHTML from '../../../assets/subtitles/string.ejs';
10
10
  import { isFullscreen } from '../utils.js';
11
11
  const VERSION = '0.0.1';
12
12
  const LOCAL_STORAGE_SUBTITLES_ID = 'subtitles_select';
13
- const T = 'plugins.subtitles';
13
+ const T = 'plugins.media_control_subtitles';
14
14
  const NO_TRACK = { language: 'off' };
15
15
  export class Subtitles extends UICorePlugin {
16
16
  currentContainer;
@@ -20,7 +20,7 @@ export class Subtitles extends UICorePlugin {
20
20
  tracks;
21
21
  $string;
22
22
  get name() {
23
- return 'subtitles';
23
+ return 'media_control_subtitles';
24
24
  }
25
25
  get supportedVersion() {
26
26
  return { min: CLAPPR_VERSION };
@@ -1,11 +1,11 @@
1
1
  import { UICorePlugin, Events, template, $ } from '@clappr/core';
2
2
  import { reportError, trace } from '@gcorevideo/utils';
3
3
  import parseSRT from 'parse-srt';
4
- import { CLAPPR_VERSION } from '../build.js';
4
+ import { CLAPPR_VERSION } from '../../build.js';
5
5
  import pluginHtml from '../../../assets/thumbnails/scrub-thumbnails.ejs';
6
6
  import '../../../assets/thumbnails/style.scss';
7
7
  import { getPageX } from '../utils.js';
8
- const T = 'plugins.thumbnails';
8
+ const T = 'plugins.media_control_thumbnails';
9
9
  export class Thumbnails extends UICorePlugin {
10
10
  _$spotlight = null;
11
11
  _$backdrop = null;
@@ -21,7 +21,7 @@ export class Thumbnails extends UICorePlugin {
21
21
  _oldContainer = null;
22
22
  _thumbs = [];
23
23
  get name() {
24
- return 'thumbnails';
24
+ return 'media_control_thumbnails';
25
25
  }
26
26
  get supportedVersion() {
27
27
  return { min: CLAPPR_VERSION };
@@ -1,8 +1,2 @@
1
- import { $ } from "@clappr/core";
2
- export type ZeptoResult = ReturnType<typeof $>;
3
- export type TimePosition = {
4
- current: number;
5
- total: number;
6
- };
7
- export type TimerId = ReturnType<typeof setTimeout>;
1
+ export type TemplateFunction = (data: Record<string, unknown>) => string;
8
2
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAEjC,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AAE/C,MAAM,MAAM,YAAY,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAA"}
@@ -68,5 +68,6 @@ export declare class VastAds extends UICorePlugin {
68
68
  private destroyRoll;
69
69
  private _playVideoContent;
70
70
  render(): this;
71
+ private setMuted;
71
72
  }
72
73
  //# sourceMappingURL=VastAds.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VastAds.d.ts","sourceRoot":"","sources":["../../../src/plugins/vast-ads/VastAds.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,IAAI,EAIJ,QAAQ,EAER,YAAY,EAEb,MAAM,cAAc,CAAA;AAYrB,OAAO,qCAAqC,CAAA;AAQ5C,qBAAa,OAAQ,SAAQ,YAAY;IACvC,OAAO,CAAC,mBAAmB,CAAiC;IAE5D,OAAO,CAAC,qBAAqB,CAAwC;IAErE,OAAO,CAAC,oBAAoB,CAAwC;IAEpE,OAAO,CAAC,eAAe,CAAI;IAE3B,OAAO,CAAC,mBAAmB,CAAI;IAE/B,OAAO,CAAC,UAAU,CAAyB;IAE3C,OAAO,CAAC,SAAS,CAAyB;IAE1C,OAAO,CAAC,eAAe,CAA2B;IAElD,OAAO,CAAC,gBAAgB,CAAI;IAE5B,OAAO,CAAC,YAAY,CAAY;IAEhC,OAAO,CAAC,YAAY,CAAQ;IAE5B,OAAO,CAAC,cAAc,CAAQ;IAE9B,OAAO,CAAC,aAAa,CAAuB;IAE5C,OAAO,CAAC,SAAS,CAAwB;IAEzC,OAAO,CAAC,cAAc,CAAQ;IAE9B,OAAO,CAAC,mBAAmB,CAA2B;IAEtD,OAAO,CAAC,aAAa,CAAiC;IAEtD,OAAO,CAAC,gBAAgB,CAAI;IAE5B,OAAO,CAAC,IAAI,CAA2B;IAEvC,OAAO,CAAC,OAAO,CAAK;IAEpB,OAAO,CAAC,uBAAuB,CAAI;IAEnC,OAAO,CAAC,0BAA0B,CAAI;IAEtC,OAAO,CAAC,YAAY,CAAoB;IAExC,OAAO,CAAC,OAAO,CAA2B;IAE1C,OAAO,CAAC,SAAS,CAA2B;IAE5C,OAAO,CAAC,UAAU,CAA2B;IAE7C,OAAO,CAAC,aAAa,CAA2B;IAEhD,OAAO,CAAC,YAAY,CAA2B;IAE/C,IAAI,IAAI,WAEP;IAED,IAAI,gBAAgB;;MAEnB;IAED,MAAM,KAAK,OAAO,WAEjB;IAED,IAAI,YAAY,QAEf;IAED,IAAa,UAAU;;;MAKtB;gBAEW,IAAI,EAAE,IAAI;IAqEb,UAAU;IA8FnB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,oBAAoB;IAkE5B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,qBAAqB;IAwD7B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,uBAAuB;IAuC/B,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,mBAAmB;IAiD3B,YAAY;IASZ,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;IA6BpB,IAAI,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAG3B;IAED,IAAI,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAE9B;IAED,OAAO,CAAC,kBAAkB;IAU1B,gBAAgB,CAAC,CAAC,EAAE,MAAM;IAQ1B,cAAc;IAsBd,eAAe;IAkBf,WAAW;IAiBX,OAAO,CAAC,UAAU;IA+ClB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,iBAAiB;IAiHhB,MAAM;CAwBhB"}
1
+ {"version":3,"file":"VastAds.d.ts","sourceRoot":"","sources":["../../../src/plugins/vast-ads/VastAds.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,IAAI,EAIJ,QAAQ,EAER,YAAY,EAEb,MAAM,cAAc,CAAA;AAYrB,OAAO,qCAAqC,CAAA;AAQ5C,qBAAa,OAAQ,SAAQ,YAAY;IACvC,OAAO,CAAC,mBAAmB,CAAiC;IAE5D,OAAO,CAAC,qBAAqB,CAAwC;IAErE,OAAO,CAAC,oBAAoB,CAAwC;IAEpE,OAAO,CAAC,eAAe,CAAI;IAE3B,OAAO,CAAC,mBAAmB,CAAI;IAE/B,OAAO,CAAC,UAAU,CAAyB;IAE3C,OAAO,CAAC,SAAS,CAAyB;IAE1C,OAAO,CAAC,eAAe,CAA2B;IAElD,OAAO,CAAC,gBAAgB,CAAI;IAE5B,OAAO,CAAC,YAAY,CAAY;IAEhC,OAAO,CAAC,YAAY,CAAQ;IAE5B,OAAO,CAAC,cAAc,CAAQ;IAE9B,OAAO,CAAC,aAAa,CAAuB;IAE5C,OAAO,CAAC,SAAS,CAAwB;IAEzC,OAAO,CAAC,cAAc,CAAQ;IAE9B,OAAO,CAAC,mBAAmB,CAA2B;IAEtD,OAAO,CAAC,aAAa,CAAiC;IAEtD,OAAO,CAAC,gBAAgB,CAAI;IAE5B,OAAO,CAAC,IAAI,CAA2B;IAEvC,OAAO,CAAC,OAAO,CAAK;IAEpB,OAAO,CAAC,uBAAuB,CAAI;IAEnC,OAAO,CAAC,0BAA0B,CAAI;IAEtC,OAAO,CAAC,YAAY,CAAoB;IAExC,OAAO,CAAC,OAAO,CAA2B;IAE1C,OAAO,CAAC,SAAS,CAA2B;IAE5C,OAAO,CAAC,UAAU,CAA2B;IAE7C,OAAO,CAAC,aAAa,CAA2B;IAEhD,OAAO,CAAC,YAAY,CAA2B;IAE/C,IAAI,IAAI,WAEP;IAED,IAAI,gBAAgB;;MAEnB;IAED,MAAM,KAAK,OAAO,WAEjB;IAED,IAAI,YAAY,QAEf;IAED,IAAa,UAAU;;;MAKtB;gBAEW,IAAI,EAAE,IAAI;IAqEb,UAAU;IA8FnB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,oBAAoB;IAkE5B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,qBAAqB;IAwD7B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,uBAAuB;IAuC/B,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,mBAAmB;IAiD3B,YAAY;IASZ,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;IA6BpB,IAAI,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAG3B;IAED,IAAI,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAE9B;IAED,OAAO,CAAC,kBAAkB;IAU1B,gBAAgB,CAAC,CAAC,EAAE,MAAM;IAQ1B,cAAc;IAsBd,eAAe;IAkBf,WAAW;IAiBX,OAAO,CAAC,UAAU;IA+ClB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,iBAAiB;IAiHhB,MAAM;IAqBf,OAAO,CAAC,QAAQ;CAGjB"}
@@ -1,7 +1,7 @@
1
1
  import { $, Browser, Events, HTML5Video, Log, UICorePlugin, Utils, } from '@clappr/core';
2
2
  import { reportError } from '@gcorevideo/utils';
3
3
  import assert from 'assert';
4
- import { CLAPPR_VERSION } from '../build.js';
4
+ import { CLAPPR_VERSION } from '../../build.js';
5
5
  import RollManager from './rollmanager.js';
6
6
  import SCTEManager from './sctemanager.js';
7
7
  import { VolumeFadeEvents } from '../volume-fade/VolumeFade.js';
@@ -604,7 +604,7 @@ export class VastAds extends UICorePlugin {
604
604
  setTimeout(async () => {
605
605
  if (currentRoll === 'scteroll') {
606
606
  this.options.mute = this.core.options.mute;
607
- this.core.mediaControl.setMuted(this.core.options.mute);
607
+ this.setMuted(this.core.options.mute);
608
608
  this.core.mediaControl.setInitialVolume();
609
609
  }
610
610
  // this.adTemplates = null;
@@ -659,7 +659,7 @@ export class VastAds extends UICorePlugin {
659
659
  }
660
660
  await this.playback?.play();
661
661
  this.options.mute = this.core.options.mute;
662
- this.core.mediaControl.setMuted(this.core.options.mute);
662
+ this.setMuted(this.core.options.mute);
663
663
  this.core.mediaControl.setInitialVolume();
664
664
  }
665
665
  }, 0);
@@ -683,4 +683,7 @@ export class VastAds extends UICorePlugin {
683
683
  this._adContainer = this._$adContainer[0];
684
684
  return this;
685
685
  }
686
+ setMuted(muted) {
687
+ this.core.activeContainer.options.mute = muted;
688
+ }
686
689
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gcorevideo/player",
3
- "version": "2.19.12",
3
+ "version": "2.19.14",
4
4
  "description": "Gcore JavaScript video player",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -36,6 +36,7 @@
36
36
  "@rollup/plugin-json": "^6.1.0",
37
37
  "@rollup/plugin-node-resolve": "^15.3.0",
38
38
  "@sinonjs/fake-timers": "^14.0.0",
39
+ "@types/assert": "^1.5.11",
39
40
  "@types/human-format": "^1.0.3",
40
41
  "@types/mousetrap": "^1.6.15",
41
42
  "@types/node": "^22.10.1",
package/src/Player.ts CHANGED
@@ -353,6 +353,8 @@ export class Player {
353
353
 
354
354
  private initPlayer(coreOptions: CoreOptions): void {
355
355
  trace(`${T} initPlayer`, {
356
+ autoPlay: coreOptions.autoPlay,
357
+ sources: coreOptions.sources,
356
358
  // TODO selected options
357
359
  })
358
360
 
@@ -372,12 +374,7 @@ export class Player {
372
374
  null,
373
375
  )
374
376
  if (this.config.autoPlay) {
375
- trace(`${T} autoPlay`)
376
- setTimeout(() => {
377
- this.player?.play({
378
- autoPlay: true,
379
- })
380
- }, 0)
377
+ this.triggerAutoPlay()
381
378
  }
382
379
  try {
383
380
  this.emitter.emit(PlayerEvent.Ready)
@@ -386,6 +383,15 @@ export class Player {
386
383
  }
387
384
  }
388
385
 
386
+ private triggerAutoPlay() {
387
+ trace(`${T} triggerAutoPlay`)
388
+ setTimeout(() => {
389
+ this.player?.play({
390
+ autoPlay: true,
391
+ })
392
+ }, 0)
393
+ }
394
+
389
395
  private safeTriggerEvent<E extends PlayerEvent>(event: E, ...args: PlayerEventParams<E>) {
390
396
  try {
391
397
  this.emitter.emit(event, ...args)
@@ -456,10 +462,10 @@ export class Player {
456
462
  },
457
463
  parent: rootNode,
458
464
  width: rootNode.clientWidth,
459
- source: source ? source.source : undefined,
460
- mimeType: source ? source.mimeType : undefined,
461
465
  }, this.config, {
462
- autoPlay: false, // TODO write a test to check it's reset to false
466
+ autoPlay: false,
467
+ mimeType: source ? source.mimeType : undefined,
468
+ source: source ? source.source : undefined,
463
469
  sources,
464
470
  })
465
471
  return coreOptions
@@ -146,86 +146,25 @@ describe('Player', () => {
146
146
  expect(PlayerClappr).toHaveBeenCalledWith(
147
147
  expect.objectContaining({
148
148
  source,
149
+ // TODO sources
149
150
  }),
150
151
  )
151
152
  })
152
153
  },
153
154
  )
154
155
  })
156
+ describe('autoPlay', () => {
157
+ describe('initially', () => {
158
+ it('should reset to false', () => {
159
+ const player = new Player({autoPlay: true, sources: []})
160
+ const node = document.createElement('div')
161
+ player.attachTo(node)
162
+ expect(PlayerClappr).toHaveBeenCalledWith(
163
+ expect.objectContaining({
164
+ autoPlay: false,
165
+ }),
166
+ )
167
+ })
168
+ })
169
+ })
155
170
  })
156
-
157
- class MockPlayback extends EventLite {
158
- constructor(
159
- protected options: any,
160
- readonly i18n: any,
161
- protected playerError?: any,
162
- ) {
163
- super()
164
- }
165
-
166
- get name() {
167
- return 'mock'
168
- }
169
-
170
- consent() {}
171
-
172
- play() {}
173
-
174
- pause() {}
175
-
176
- stop() {}
177
-
178
- destroy() {}
179
-
180
- seek() {}
181
-
182
- seekPercentage() {}
183
-
184
- getDuration() {
185
- return 100
186
- }
187
-
188
- enterPiP() {}
189
-
190
- exitPiP() {}
191
-
192
- getPlaybackType() {
193
- return 'live'
194
- }
195
-
196
- getStartTimeOffset() {
197
- return 0
198
- }
199
-
200
- getCurrentTime() {
201
- return 0
202
- }
203
-
204
- isHighDefinitionInUse() {
205
- return false
206
- }
207
-
208
- mute() {}
209
-
210
- unmute() {}
211
-
212
- volume() {}
213
-
214
- configure() {}
215
-
216
- attemptAutoPlay() {
217
- return true
218
- }
219
-
220
- canAutoPlay() {
221
- return true
222
- }
223
-
224
- onResize() {
225
- return true
226
- }
227
-
228
- trigger(event: string, ...args: any[]) {
229
- this.emit(event, ...args)
230
- }
231
- }
package/src/index.ts CHANGED
@@ -4,6 +4,7 @@
4
4
  * @remarks
5
5
  * This package provides a video player for the Gcore streaming platform.
6
6
  * It is built on top of the Clappr library and provides a framework for building custom integrations.
7
+ * Start with {@link Player} for more information.
7
8
  *
8
9
  * @packageDocumentation
9
10
  */
@@ -6,7 +6,7 @@ import {
6
6
  Events as HlsEvents,
7
7
  } from 'hls.js';
8
8
 
9
- import { CLAPPR_VERSION } from '../build.js';
9
+ import { CLAPPR_VERSION } from '../../build.js';
10
10
 
11
11
  import pluginHtml from '../../../assets/audio-selector/track-selector.ejs';
12
12
  import '../../../assets/audio-selector/style.scss';
@@ -49,7 +49,7 @@ export class AudioSelector extends UICorePlugin {
49
49
  private tracks: AudioTrackItem[] = [];
50
50
 
51
51
  get name() {
52
- return 'audio_selector';
52
+ return 'media_control_audio_selector';
53
53
  }
54
54
 
55
55
  get supportedVersion() {
@@ -1,7 +1,7 @@
1
1
  import { Events, template, UICorePlugin, Utils } from '@clappr/core';
2
2
  import { trace } from '@gcorevideo/utils';
3
3
 
4
- import { CLAPPR_VERSION } from '../build.js';
4
+ import { CLAPPR_VERSION } from '../../build.js';
5
5
  import { ZeptoResult } from "../../utils/types.js";
6
6
 
7
7
  import volumeMuteIcon from '../../../assets/icons/new/volume-off.svg';
@@ -183,6 +183,7 @@ export class BigMuteButton extends UICorePlugin {
183
183
  const localVolume = Utils.Config.restore('volume');
184
184
  const volume = !isNaN(localVolume) ? localVolume : 100;
185
185
 
186
+ // TODO use container.setVolume() instead
186
187
  this.core.mediaControl.setVolume(volume === 0 ? 100 : volume);
187
188
 
188
189
  this.destroyBigMuteBtn(e);