@gcorevideo/player 2.19.11 → 2.19.13

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 (167) hide show
  1. package/dist/core.js +16 -11
  2. package/dist/index.css +684 -684
  3. package/dist/index.js +301 -151
  4. package/dist/player.d.ts +208 -45
  5. package/dist/plugins/index.css +941 -941
  6. package/dist/plugins/index.js +3227 -3080
  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 +8 -4
  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/plugins/audio-selector/AudioSelector.js +2 -2
  27. package/lib/plugins/big-mute-button/BigMuteButton.d.ts.map +1 -1
  28. package/lib/plugins/big-mute-button/BigMuteButton.js +2 -1
  29. package/lib/plugins/bottom-gear/BottomGear.d.ts +28 -7
  30. package/lib/plugins/bottom-gear/BottomGear.d.ts.map +1 -1
  31. package/lib/plugins/bottom-gear/BottomGear.js +44 -31
  32. package/lib/plugins/clappr-nerd-stats/ClapprNerdStats.d.ts.map +1 -1
  33. package/lib/plugins/clappr-nerd-stats/ClapprNerdStats.js +3 -2
  34. package/lib/plugins/clappr-stats/ClapprStats.js +1 -1
  35. package/lib/plugins/click-to-pause/ClickToPause.js +1 -1
  36. package/lib/plugins/clips/Clips.js +2 -2
  37. package/lib/plugins/context-menu/ContextMenu.js +1 -1
  38. package/lib/plugins/disable-controls/DisableControls.js +1 -1
  39. package/lib/plugins/dvr-controls/DvrControls.d.ts +30 -4
  40. package/lib/plugins/dvr-controls/DvrControls.d.ts.map +1 -1
  41. package/lib/plugins/dvr-controls/DvrControls.js +39 -11
  42. package/lib/plugins/error-screen/ErrorScreen.d.ts.map +1 -1
  43. package/lib/plugins/error-screen/ErrorScreen.js +2 -1
  44. package/lib/plugins/favicon/Favicon.js +1 -1
  45. package/lib/plugins/google-analytics/GoogleAnalytics.js +1 -1
  46. package/lib/plugins/level-selector/LevelSelector.d.ts +25 -6
  47. package/lib/plugins/level-selector/LevelSelector.d.ts.map +1 -1
  48. package/lib/plugins/level-selector/LevelSelector.js +33 -12
  49. package/lib/plugins/logo/Logo.js +1 -1
  50. package/lib/plugins/media-control/MediaControl.d.ts +66 -22
  51. package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
  52. package/lib/plugins/media-control/MediaControl.js +71 -34
  53. package/lib/plugins/multi-camera/MultiCamera.js +3 -3
  54. package/lib/plugins/picture-in-picture/PictureInPicture.js +3 -3
  55. package/lib/plugins/playback-rate/PlaybackRate.d.ts.map +1 -1
  56. package/lib/plugins/playback-rate/PlaybackRate.js +3 -3
  57. package/lib/plugins/poster/Poster.d.ts +57 -3
  58. package/lib/plugins/poster/Poster.d.ts.map +1 -1
  59. package/lib/plugins/poster/Poster.js +57 -9
  60. package/lib/plugins/seek-time/SeekTime.js +2 -2
  61. package/lib/plugins/share/Share.js +2 -2
  62. package/lib/plugins/skip-time/SkipTime.js +1 -1
  63. package/lib/plugins/source-controller/SourceController.d.ts.map +1 -1
  64. package/lib/plugins/source-controller/SourceController.js +1 -2
  65. package/lib/plugins/spinner-three-bounce/SpinnerThreeBounce.js +1 -1
  66. package/lib/plugins/statistics/Statistics.js +1 -1
  67. package/lib/plugins/subtitles/Subtitles.js +3 -3
  68. package/lib/plugins/thumbnails/Thumbnails.js +3 -3
  69. package/lib/plugins/types.d.ts +1 -7
  70. package/lib/plugins/types.d.ts.map +1 -1
  71. package/lib/plugins/vast-ads/VastAds.d.ts +1 -0
  72. package/lib/plugins/vast-ads/VastAds.d.ts.map +1 -1
  73. package/lib/plugins/vast-ads/VastAds.js +6 -3
  74. package/package.json +2 -1
  75. package/src/Player.ts +15 -9
  76. package/src/__tests__/Player.test.ts +15 -76
  77. package/src/plugins/audio-selector/AudioSelector.ts +2 -2
  78. package/src/plugins/big-mute-button/BigMuteButton.ts +2 -1
  79. package/src/plugins/bottom-gear/BottomGear.ts +50 -39
  80. package/src/plugins/clappr-nerd-stats/ClapprNerdStats.ts +3 -2
  81. package/src/plugins/clappr-stats/ClapprStats.ts +1 -1
  82. package/src/plugins/click-to-pause/ClickToPause.ts +1 -1
  83. package/src/plugins/clips/Clips.ts +2 -2
  84. package/src/plugins/context-menu/ContextMenu.ts +1 -1
  85. package/src/plugins/disable-controls/DisableControls.ts +1 -1
  86. package/src/plugins/dvr-controls/DvrControls.ts +42 -14
  87. package/src/plugins/error-screen/ErrorScreen.ts +2 -1
  88. package/src/plugins/favicon/Favicon.ts +1 -1
  89. package/src/plugins/google-analytics/GoogleAnalytics.ts +1 -1
  90. package/src/plugins/level-selector/LevelSelector.ts +34 -14
  91. package/src/plugins/level-selector/__tests__/LevelSelector.test.ts +22 -2
  92. package/src/plugins/logo/Logo.ts +1 -1
  93. package/src/plugins/media-control/MediaControl.ts +82 -44
  94. package/src/plugins/multi-camera/MultiCamera.ts +3 -3
  95. package/src/plugins/picture-in-picture/PictureInPicture.ts +3 -3
  96. package/src/plugins/playback-rate/PlaybackRate.ts +3 -4
  97. package/src/plugins/poster/Poster.ts +59 -12
  98. package/src/plugins/seek-time/SeekTime.ts +2 -2
  99. package/src/plugins/share/Share.ts +2 -2
  100. package/src/plugins/skip-time/SkipTime.ts +1 -1
  101. package/src/plugins/source-controller/SourceController.ts +1 -2
  102. package/src/plugins/source-controller/__tests__/SourceController.test.ts +5 -0
  103. package/src/plugins/spinner-three-bounce/SpinnerThreeBounce.ts +1 -1
  104. package/src/plugins/statistics/Statistics.ts +1 -1
  105. package/src/plugins/subtitles/Subtitles.ts +3 -3
  106. package/src/plugins/thumbnails/Thumbnails.ts +3 -3
  107. package/src/plugins/types.ts +1 -0
  108. package/src/plugins/vast-ads/VastAds.ts +6 -6
  109. package/temp/player.api.json +3300 -5029
  110. package/tsconfig.tsbuildinfo +1 -1
  111. package/docs/api/player.bottomgear.attributes.md +0 -17
  112. package/docs/api/player.bottomgear.bindevents.md +0 -18
  113. package/docs/api/player.bottomgear.container.md +0 -14
  114. package/docs/api/player.bottomgear.events.md +0 -16
  115. package/docs/api/player.bottomgear.hide.md +0 -18
  116. package/docs/api/player.bottomgear.name.md +0 -14
  117. package/docs/api/player.bottomgear.refresh.md +0 -18
  118. package/docs/api/player.bottomgear.reload.md +0 -18
  119. package/docs/api/player.bottomgear.render.md +0 -18
  120. package/docs/api/player.bottomgear.supportedversion.md +0 -16
  121. package/docs/api/player.bottomgear.template.md +0 -14
  122. package/docs/api/player.bottomgear.togglegearmenu.md +0 -18
  123. package/docs/api/player.bottomgear.unbindevents.md +0 -18
  124. package/docs/api/player.bottomgear.version.md +0 -14
  125. package/docs/api/player.dvrcontrols.attributes.md +0 -14
  126. package/docs/api/player.dvrcontrols.bindevents.md +0 -15
  127. package/docs/api/player.dvrcontrols.click.md +0 -15
  128. package/docs/api/player.dvrcontrols.events.md +0 -13
  129. package/docs/api/player.dvrcontrols.name.md +0 -11
  130. package/docs/api/player.dvrcontrols.render.md +0 -15
  131. package/docs/api/player.dvrcontrols.settingsupdate.md +0 -15
  132. package/docs/api/player.dvrcontrols.shouldrender.md +0 -15
  133. package/docs/api/player.dvrcontrols.supportedversion.md +0 -13
  134. package/docs/api/player.dvrcontrols.template.md +0 -11
  135. package/docs/api/player.levelselector.attributes.md +0 -17
  136. package/docs/api/player.levelselector.bindevents.md +0 -18
  137. package/docs/api/player.levelselector.name.md +0 -14
  138. package/docs/api/player.levelselector.render.md +0 -18
  139. package/docs/api/player.levelselector.supportedversion.md +0 -16
  140. package/docs/api/player.levelselector.version.md +0 -14
  141. package/docs/api/player.mediacontrol.attributes.md +0 -17
  142. package/docs/api/player.mediacontrol.bindcontainerevents.md +0 -18
  143. package/docs/api/player.mediacontrol.bindevents.md +0 -18
  144. package/docs/api/player.mediacontrol.container.md +0 -14
  145. package/docs/api/player.mediacontrol.destroy.md +0 -18
  146. package/docs/api/player.mediacontrol.disabled.md +0 -14
  147. package/docs/api/player.mediacontrol.events.md +0 -40
  148. package/docs/api/player.mediacontrol.getexternalinterface.md +0 -21
  149. package/docs/api/player.mediacontrol.name.md +0 -14
  150. package/docs/api/player.mediacontrol.pause.md +0 -20
  151. package/docs/api/player.mediacontrol.play.md +0 -20
  152. package/docs/api/player.mediacontrol.playback.md +0 -14
  153. package/docs/api/player.mediacontrol.render.md +0 -18
  154. package/docs/api/player.mediacontrol.setmuted.md +0 -52
  155. package/docs/api/player.mediacontrol.stop.md +0 -20
  156. package/docs/api/player.mediacontrol.supportedversion.md +0 -16
  157. package/docs/api/player.poster.attributes.md +0 -14
  158. package/docs/api/player.poster.bindevents.md +0 -15
  159. package/docs/api/player.poster.destroy.md +0 -15
  160. package/docs/api/player.poster.events.md +0 -13
  161. package/docs/api/player.poster.name.md +0 -11
  162. package/docs/api/player.poster.render.md +0 -15
  163. package/docs/api/player.poster.shouldrender.md +0 -11
  164. package/docs/api/player.poster.showonvideoend.md +0 -11
  165. package/docs/api/player.poster.supportedversion.md +0 -13
  166. package/docs/api/player.poster.template.md +0 -11
  167. package/src/plugins/build.ts +0 -1
@@ -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.11",
3
+ "version": "2.19.13",
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)
@@ -441,7 +447,6 @@ export class Player {
441
447
 
442
448
  const coreOptions: CoreOptions & PluginOptions = $.extend(true, {
443
449
  allowUserInteraction: true,
444
- autoPlay: false,
445
450
  debug: 'none',
446
451
  events: this.events,
447
452
  height: rootNode.clientHeight,
@@ -457,9 +462,10 @@ export class Player {
457
462
  },
458
463
  parent: rootNode,
459
464
  width: rootNode.clientWidth,
460
- source: source ? source.source : undefined,
461
- mimeType: source ? source.mimeType : undefined,
462
465
  }, this.config, {
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
- }
@@ -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);
@@ -1,7 +1,8 @@
1
1
  import { UICorePlugin, template, Events } from '@clappr/core';
2
2
  import { trace } from '@gcorevideo/utils';
3
+ import assert from 'assert';
3
4
 
4
- import { CLAPPR_VERSION } from '../build.js';
5
+ import { CLAPPR_VERSION } from '../../build.js';
5
6
 
6
7
  import pluginHtml from '../../../assets/bottom-gear/bottomgear.ejs';
7
8
  import '../../../assets/bottom-gear/gear.scss';
@@ -9,30 +10,45 @@ import '../../../assets/bottom-gear/gear-sub-menu.scss';
9
10
  import gearIcon from '../../../assets/icons/new/gear.svg';
10
11
  import gearHdIcon from '../../../assets/icons/new/gear-hd.svg';
11
12
 
12
- const VERSION = '0.0.1';
13
+ const VERSION = '2.19.12';
14
+
15
+ const T = 'plugins.media_control_gear';
13
16
 
14
17
  /**
18
+ * Adds the gear button that triggers extra options menu on the right side of the {@link MediaControl | media control} UI
15
19
  * @beta
20
+ * @remarks
21
+ * The plugins provides a base for attaching custom settings UI in the gear menu
16
22
  */
17
23
  export class BottomGear extends UICorePlugin {
18
24
  private isHd = false;
19
25
 
26
+ /**
27
+ * @internal
28
+ */
20
29
  get name() {
21
- return 'gear';
30
+ return 'media_control_gear';
22
31
  }
23
32
 
33
+ /**
34
+ * @internal
35
+ */
24
36
  get supportedVersion() {
25
37
  return { min: CLAPPR_VERSION };
26
38
  }
27
39
 
40
+ /**
41
+ * @internal
42
+ */
28
43
  static get version() {
29
44
  return VERSION;
30
45
  }
31
46
 
32
- get template() {
33
- return template(pluginHtml);
34
- }
47
+ private static readonly template = template(pluginHtml)
35
48
 
49
+ /**
50
+ * @internal
51
+ */
36
52
  override get attributes() {
37
53
  return {
38
54
  'class': this.name,
@@ -40,47 +56,37 @@ export class BottomGear extends UICorePlugin {
40
56
  };
41
57
  }
42
58
 
59
+ /**
60
+ * @internal
61
+ */
43
62
  override get events() {
44
63
  return {
45
64
  'click .button-gear': 'toggleGearMenu',
46
65
  };
47
66
  }
48
67
 
49
- get container() {
50
- return this.core && this.core.activeContainer;
51
- }
52
-
68
+ /**
69
+ * @internal
70
+ */
53
71
  override bindEvents() {
72
+ const mediaControl = this.core.getPlugin('media_control');
73
+ assert(mediaControl, 'media_control plugin is required');
74
+
54
75
  this.listenTo(this.core, Events.CORE_ACTIVE_CONTAINER_CHANGED, this.onActiveContainerChanged);
55
- this.listenTo(this.core, 'gear:refresh', this.refresh);
56
- this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.reload);
57
- this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_RENDERED, this.render);
58
- this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_HIDE, this.hide);
76
+ this.listenTo(this.core, 'gear:refresh', this.refresh); // TODO use direct plugin method call
77
+ // this.listenTo(mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.reload);
78
+ this.listenTo(mediaControl, Events.MEDIACONTROL_RENDERED, this.render);
79
+ this.listenTo(mediaControl, Events.MEDIACONTROL_HIDE, this.hide); // TODO mediacontrol show as well
59
80
  this.bindContainerEvents();
60
81
  }
61
82
 
62
- unBindEvents() {
63
- this.stopListening(this.core, Events.CORE_ACTIVE_CONTAINER_CHANGED, this.onActiveContainerChanged);
64
- this.stopListening(this.core.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.reload);
65
- this.stopListening(this.core.mediaControl, Events.MEDIACONTROL_RENDERED, this.render);
66
- this.stopListening(this.core.mediaControl, Events.MEDIACONTROL_HIDE, this.hide);
67
- }
68
-
69
83
  private onActiveContainerChanged() {
70
- this.bindEvents();
71
84
  this.bindContainerEvents();
72
85
  }
73
86
 
74
87
  private bindContainerEvents() {
75
- if (!this.container) {
76
- return;
77
- }
78
- this.listenTo(this.container, Events.CONTAINER_HIGHDEFINITIONUPDATE, this.highDefinitionUpdate);
79
- }
80
-
81
- reload() {
82
- this.unBindEvents();
83
- this.bindEvents();
88
+ trace(`${T} bindContainerEvents`);
89
+ this.listenTo(this.core.activeContainer, Events.CONTAINER_HIGHDEFINITIONUPDATE, this.highDefinitionUpdate);
84
90
  }
85
91
 
86
92
  private highDefinitionUpdate(isHd: boolean) {
@@ -93,33 +99,38 @@ export class BottomGear extends UICorePlugin {
93
99
  }
94
100
  }
95
101
 
102
+ /**
103
+ * @internal
104
+ */
96
105
  override render() {
106
+ const mediaControl = this.core.getPlugin('media_control');
107
+ assert(mediaControl, 'media_control plugin is required');
108
+
109
+ // TODO use options.mediaControl.gear.items
97
110
  const items = [
98
111
  'quality',
99
112
  'rate',
100
113
  'nerd',
101
114
  ];
102
-
103
115
  const icon = this.isHd ? gearHdIcon : gearIcon;
116
+ this.$el.html(BottomGear.template({ icon, items }));
104
117
 
105
- this.$el.html(this.template({ icon, items }));
106
-
107
- this.core.mediaControl.$bottomGear?.html(this.el);
108
- this.core.trigger('gear:rendered');
118
+ mediaControl.getElement('bottomGear')?.html(this.el);
119
+ this.core.trigger('gear:rendered'); // TODO trigger on mediaControl instead
109
120
 
110
121
  return this;
111
122
  }
112
123
 
113
- refresh() {
124
+ private refresh() {
114
125
  this.render();
115
126
  this.$el.find('.gear-wrapper').show();
116
127
  }
117
128
 
118
- toggleGearMenu() {
129
+ private toggleGearMenu() {
119
130
  this.$el.find('.gear-wrapper').toggle();
120
131
  }
121
132
 
122
- hide() {
133
+ private hide() {
123
134
  this.$el.find('.gear-wrapper').hide();
124
135
  }
125
136
  }
@@ -2,7 +2,7 @@ import { UICorePlugin, Events, template, Core, Container } from '@clappr/core';
2
2
  import { reportError } from '@gcorevideo/utils';
3
3
  import Mousetrap from 'mousetrap';
4
4
 
5
- import { CLAPPR_VERSION } from '../build.js';
5
+ import { CLAPPR_VERSION } from '../../build.js';
6
6
  import { ClapprStatsEvents, Metrics as BaseMetrics } from '../clappr-stats/types.js';
7
7
  import { newMetrics as newBaseMetrics } from '../clappr-stats/utils.js';
8
8
  import Formatter from './formatter.js';
@@ -125,7 +125,7 @@ export class ClapprNerdStats extends UICorePlugin {
125
125
  private iconPosition: IconPosition;
126
126
 
127
127
  get name() {
128
- return 'clappr_nerd_stats';
128
+ return 'media_control_nerd_stats';
129
129
  }
130
130
 
131
131
  get supportedVersion() {
@@ -181,6 +181,7 @@ export class ClapprNerdStats extends UICorePlugin {
181
181
 
182
182
  override bindEvents() {
183
183
  this.listenToOnce(this.core, Events.CORE_READY, this.init);
184
+ // TODO trigger on mediaControl instead
184
185
  this.listenTo(this.core, 'gear:rendered', this.addToBottomGear);
185
186
  }
186
187
 
@@ -2,7 +2,7 @@ import { Container, ContainerPlugin, Events as CoreEvents, Log } from '@clappr/c
2
2
  import type { QualityLevel, TimePosition, TimeProgress } from '../../playback.types.js';
3
3
  import assert from 'assert';
4
4
 
5
- import { CLAPPR_VERSION } from '../build.js';
5
+ import { CLAPPR_VERSION } from '../../build.js';
6
6
  import { TimerId } from '../../utils/types.js';
7
7
  import type { Metrics, MetricsUpdateFn } from './types.js';
8
8
  import { ClapprStatsEvents } from './types.js';
@@ -5,7 +5,7 @@
5
5
  import { ContainerPlugin, Events, Playback } from '@clappr/core';
6
6
  import { trace } from '@gcorevideo/utils';
7
7
 
8
- import { CLAPPR_VERSION } from '../build.js';
8
+ import { CLAPPR_VERSION } from '../../build.js';
9
9
 
10
10
  // const VERSION = '0.0.1';
11
11
 
@@ -29,7 +29,7 @@ export class ClipsPlugin extends UICorePlugin {
29
29
  private svgMask: ZeptoResult | null = null;
30
30
 
31
31
  get name() {
32
- return 'clips';
32
+ return 'media_control_clips';
33
33
  }
34
34
 
35
35
  override get attributes() {
@@ -154,7 +154,7 @@ export class ClipsPlugin extends UICorePlugin {
154
154
  }
155
155
 
156
156
  private setSVGMask(svg: string) {
157
- this.core.mediaControl.setSVGMask(svg);
157
+ // this.core.mediaControl.setSVGMask(svg);
158
158
  if (this.svgMask) {
159
159
  this.svgMask.remove()
160
160
  }
@@ -1,6 +1,6 @@
1
1
  import { UICorePlugin, Events, template, $, Core, Container } from '@clappr/core';
2
2
 
3
- import { CLAPPR_VERSION } from '../build.js';
3
+ import { CLAPPR_VERSION } from '../../build.js';
4
4
 
5
5
  import '../../../assets/context-menu/context_menu.scss';
6
6
  import templateHtml from '../../../assets/context-menu/context_menu.ejs';
@@ -1,6 +1,6 @@
1
1
  import { UICorePlugin, Events } from '@clappr/core';
2
2
 
3
- import { CLAPPR_VERSION } from '../build.js';
3
+ import { CLAPPR_VERSION } from '../../build.js';
4
4
 
5
5
  export class DisableControls extends UICorePlugin {
6
6
  get name() {