@gcorevideo/player 2.22.14 → 2.22.16

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 (80) hide show
  1. package/assets/clips/clips.ejs +1 -0
  2. package/assets/clips/clips.scss +23 -3
  3. package/assets/context-menu/context_menu.ejs +14 -6
  4. package/assets/context-menu/context_menu.scss +18 -4
  5. package/assets/level-selector/list.ejs +9 -3
  6. package/assets/media-control/media-control.ejs +1 -9
  7. package/assets/media-control/media-control.scss +0 -25
  8. package/assets/media-control/width370.scss +4 -4
  9. package/dist/core.js +5 -23
  10. package/dist/index.css +424 -412
  11. package/dist/index.js +294 -286
  12. package/dist/player.d.ts +211 -144
  13. package/dist/plugins/index.css +1513 -1501
  14. package/dist/plugins/index.js +224 -227
  15. package/docs/api/{player.audioselector.md → player.audiotracks.md} +3 -3
  16. package/docs/api/player.contextmenu.md +2 -0
  17. package/docs/api/player.contextmenupluginsettings.md +2 -40
  18. package/docs/api/{player.contextmenupluginsettings.label.md → player.contextmenupluginsettings.options.md} +3 -3
  19. package/docs/api/player.md +78 -23
  20. package/docs/api/player.mediacontrol.md +8 -14
  21. package/docs/api/player.mediacontrolelement.md +4 -2
  22. package/docs/api/{player.contextmenupluginsettings.preventshowcontextmenu.md → player.mediacontrollayerelement.md} +5 -3
  23. package/docs/api/player.mediacontrolleftelement.md +16 -0
  24. package/docs/api/player.mediacontrolrightelement.md +16 -0
  25. package/docs/api/player.mediacontrolsettings.md +23 -0
  26. package/docs/api/{player.contextmenupluginsettings.url.md → player.menuoption.md} +10 -3
  27. package/docs/api/player.playbackrate.md +1 -1
  28. package/docs/api/player.playerconfig.md +1 -1
  29. package/docs/api/player.playerconfig.playbacktype.md +1 -1
  30. package/docs/api/{player.levelselector.events.md → player.qualitylevels.events.md} +2 -2
  31. package/docs/api/{player.levelselector.md → player.qualitylevels.md} +6 -6
  32. package/docs/api/{player.levelselectorpluginsettings.labels.md → player.qualitylevelspluginsettings.labels.md} +2 -2
  33. package/docs/api/{player.levelselectorpluginsettings.md → player.qualitylevelspluginsettings.md} +6 -6
  34. package/docs/api/{player.levelselectorpluginsettings.restrictresolution.md → player.qualitylevelspluginsettings.restrictresolution.md} +2 -2
  35. package/lib/Player.d.ts.map +1 -1
  36. package/lib/Player.js +4 -1
  37. package/lib/playback/hls-playback/HlsPlayback.d.ts.map +1 -1
  38. package/lib/playback/hls-playback/HlsPlayback.js +0 -21
  39. package/lib/plugins/click-to-pause/ClickToPause.js +1 -1
  40. package/lib/plugins/clips/Clips.d.ts +21 -16
  41. package/lib/plugins/clips/Clips.d.ts.map +1 -1
  42. package/lib/plugins/clips/Clips.js +96 -98
  43. package/lib/plugins/clips/types.d.ts +19 -0
  44. package/lib/plugins/clips/types.d.ts.map +1 -0
  45. package/lib/plugins/clips/types.js +1 -0
  46. package/lib/plugins/clips/utils.d.ts +4 -0
  47. package/lib/plugins/clips/utils.d.ts.map +1 -0
  48. package/lib/plugins/clips/utils.js +36 -0
  49. package/lib/plugins/context-menu/ContextMenu.d.ts +33 -12
  50. package/lib/plugins/context-menu/ContextMenu.d.ts.map +1 -1
  51. package/lib/plugins/context-menu/ContextMenu.js +40 -37
  52. package/lib/plugins/media-control/MediaControl.d.ts +4 -7
  53. package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
  54. package/lib/plugins/media-control/MediaControl.js +19 -31
  55. package/lib/plugins/utils.d.ts +9 -1
  56. package/lib/plugins/utils.d.ts.map +1 -1
  57. package/lib/plugins/utils.js +9 -10
  58. package/lib/plugins/vast-ads/loaderxml.js +2 -2
  59. package/lib/testUtils.d.ts.map +1 -1
  60. package/lib/testUtils.js +2 -5
  61. package/package.json +1 -1
  62. package/src/Player.ts +4 -3
  63. package/src/playback/hls-playback/HlsPlayback.ts +0 -22
  64. package/src/plugins/click-to-pause/ClickToPause.ts +1 -1
  65. package/src/plugins/clips/Clips.ts +116 -135
  66. package/src/plugins/clips/__tests__/Clips.test.ts +72 -0
  67. package/src/plugins/clips/__tests__/__snapshots__/Clips.test.ts.snap +14 -0
  68. package/src/plugins/clips/types.ts +22 -0
  69. package/src/plugins/clips/utils.ts +54 -0
  70. package/src/plugins/context-menu/ContextMenu.ts +72 -56
  71. package/src/plugins/level-selector/__tests__/__snapshots__/QualityLevels.test.ts.snap +18 -18
  72. package/src/plugins/media-control/MediaControl.ts +31 -58
  73. package/src/plugins/media-control/__tests__/MediaControl.test.ts +66 -30
  74. package/src/plugins/media-control/__tests__/__snapshots__/MediaControl.test.ts.snap +7 -35
  75. package/src/plugins/utils.ts +9 -7
  76. package/src/plugins/vast-ads/loaderxml.ts +2 -2
  77. package/src/testUtils.ts +2 -5
  78. package/temp/player.api.json +332 -262
  79. package/tsconfig.tsbuildinfo +1 -1
  80. package/docs/api/player.mediacontrol.handlecustomarea.md +0 -52
@@ -1,18 +1,18 @@
1
- import { Events, template, $, UIContainerPlugin, } from '@clappr/core';
1
+ import { Events, template, $, UIContainerPlugin } from '@clappr/core';
2
2
  import { CLAPPR_VERSION } from '../../build.js';
3
3
  import '../../../assets/context-menu/context_menu.scss';
4
4
  import templateHtml from '../../../assets/context-menu/context_menu.ejs';
5
- import { version } from '../../version.js';
5
+ const T = 'plugins.context_menu';
6
6
  /**
7
7
  * `PLUGIN` that displays a small context menu when clicked on the player container.
8
8
  * @beta
9
9
  * @remarks
10
10
  * Configuration options - {@link ContextMenuPluginSettings}
11
+ *
12
+ * Should not be used together with {@link ClickToPause} plugin
11
13
  */
12
14
  export class ContextMenu extends UIContainerPlugin {
13
- _label = '';
14
- _url = '';
15
- menuOptions = [];
15
+ open = false;
16
16
  /**
17
17
  * @internal
18
18
  */
@@ -32,34 +32,16 @@ export class ContextMenu extends UIContainerPlugin {
32
32
  return { class: 'context-menu' };
33
33
  }
34
34
  static template = template(templateHtml);
35
- get label() {
36
- return this._label || 'Gcore player ver. ' + version().gplayer;
37
- }
38
- get url() {
39
- return this._url || 'https://gcore.com/';
40
- }
41
- get exposeVersion() {
42
- return {
43
- label: this.label,
44
- name: 'version',
45
- };
46
- }
47
35
  /**
48
36
  * @internal
49
37
  */
50
38
  get events() {
51
39
  return {
52
- 'click [data-version]': 'onOpenMainPage',
40
+ 'click [role="menuitem"]': 'runAction',
53
41
  };
54
42
  }
55
43
  constructor(container) {
56
44
  super(container);
57
- if (this.options.contextMenu && this.options.contextMenu.label) {
58
- this._label = this.options.contextMenu.label;
59
- }
60
- if (this.options.contextMenu && this.options.contextMenu.url) {
61
- this._url = this.options.contextMenu.url;
62
- }
63
45
  this.render();
64
46
  $('body').on('click', this.hideOnBodyClick);
65
47
  }
@@ -67,8 +49,8 @@ export class ContextMenu extends UIContainerPlugin {
67
49
  * @internal
68
50
  */
69
51
  bindEvents() {
70
- this.listenTo(this.container, Events.CONTAINER_CONTEXTMENU, this.toggleContextMenu);
71
- this.listenTo(this.container, Events.CONTAINER_CLICK, this.hide);
52
+ this.listenTo(this.container, Events.CONTAINER_CONTEXTMENU, this.onContextMenu);
53
+ this.listenTo(this.container, Events.CONTAINER_CLICK, this.onContainerClick);
72
54
  }
73
55
  /**
74
56
  * @internal
@@ -77,34 +59,55 @@ export class ContextMenu extends UIContainerPlugin {
77
59
  $('body').off('click', this.hideOnBodyClick);
78
60
  return super.destroy();
79
61
  }
80
- toggleContextMenu(event) {
62
+ onContainerClick() {
63
+ this.hide();
64
+ }
65
+ onContextMenu(event) {
66
+ if (!this.options.contextMenu?.options?.length) {
67
+ return;
68
+ }
81
69
  event.preventDefault();
70
+ event.stopPropagation();
82
71
  const offset = this.container?.$el.offset();
83
72
  this.show(event.pageY - offset.top, event.pageX - offset.left);
84
73
  }
85
74
  show(top, left) {
86
- this.hide();
87
- if (this.options.contextMenu &&
88
- this.options.contextMenu.preventShowContextMenu) {
89
- return;
90
- }
75
+ this.open = true;
91
76
  this.$el.css({ top, left });
92
77
  this.$el.show();
93
78
  }
94
79
  hide() {
80
+ this.open = false;
95
81
  this.$el.hide();
96
82
  }
97
- onOpenMainPage() {
98
- window.open(this.url, '_blank');
83
+ runAction(event) {
84
+ event.preventDefault();
85
+ event.stopPropagation();
86
+ const itemName = event.currentTarget.dataset.name;
87
+ if (!itemName) {
88
+ return;
89
+ }
90
+ const item = this.options.contextMenu?.options.find((option) => option.name === itemName);
91
+ if (item?.handler) {
92
+ item.handler();
93
+ }
94
+ this.hide();
99
95
  }
100
96
  /**
101
97
  * @internal
102
98
  */
103
99
  render() {
104
- this.menuOptions = [this.exposeVersion];
105
- this.$el.html(ContextMenu.template({ options: this.menuOptions }));
100
+ if (!this.options.contextMenu?.options?.length) {
101
+ return this;
102
+ }
103
+ const options = this.options.contextMenu.options;
104
+ this.$el.html(ContextMenu.template({
105
+ options,
106
+ i18n: this.container.i18n,
107
+ iconic: options.some((option) => option.icon),
108
+ }));
106
109
  this.container.$el.append(this.$el); // TODO append to the container, turn into a container plugin
107
- this.hide();
110
+ this.$el.hide();
108
111
  return this;
109
112
  }
110
113
  hideOnBodyClick = () => {
@@ -5,7 +5,7 @@ import '../../../assets/media-control/media-control.scss';
5
5
  * Media control elements that appear in the left area.
6
6
  * @beta
7
7
  */
8
- export type MediaControlLeftElement = 'clipText' | 'duration' | 'dvr' | 'playpause' | 'playstop' | 'position' | 'volume';
8
+ export type MediaControlLeftElement = 'clipText' | 'duration' | 'dvr' | 'playpause' | 'playstop' | 'position' | 'volume' | 'clips';
9
9
  /**
10
10
  * Media control elements that appear in main layer, spanning the entire width of the player.
11
11
  * @beta
@@ -74,8 +74,6 @@ export declare class MediaControl extends UICorePlugin {
74
74
  private userDisabled;
75
75
  private userKeepVisible;
76
76
  private verticalVolume;
77
- private $clipText;
78
- private $clipTextContainer;
79
77
  private $duration;
80
78
  private $fullscreenToggle;
81
79
  private $multiCameraSelector;
@@ -241,15 +239,14 @@ export declare class MediaControl extends UICorePlugin {
241
239
  * ```ts
242
240
  * class MyPlugin extends UICorePlugin {
243
241
  * override render() {
244
- * const mediaControl = this.core.getPlugin('media_control')
245
- * const clipText = mediaControl.getElement('clipText')
246
- * clipText?.el.text('Here we go')
242
+ * this.$el.html('<div data-clips>Here we go</div>')
243
+ * this.core.getPlugin('media_control').mount('clips', this.$el)
247
244
  * return this
248
245
  * }
249
246
  * }
250
247
  * ```
251
248
  */
252
- getElement(name: MediaControlElement): ZeptoResult | null;
249
+ mount(name: MediaControlElement, element: ZeptoResult): void;
253
250
  putElement(name: MediaControlElement, element: ZeptoResult): void;
254
251
  /**
255
252
  * Toggle the visibility of a media control element
@@ -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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"}
@@ -22,9 +22,7 @@ import fullscreenOffIcon from '../../../assets/icons/new/fullscreen-off.svg';
22
22
  import fullscreenOnIcon from '../../../assets/icons/new/fullscreen-on.svg';
23
23
  const DEFAULT_SETTINGS = {
24
24
  default: [],
25
- left: [
26
- 'dvr'
27
- ],
25
+ left: ['dvr'],
28
26
  right: [
29
27
  'audiotracks',
30
28
  'cc',
@@ -103,8 +101,6 @@ export class MediaControl extends UICorePlugin {
103
101
  userDisabled = false;
104
102
  userKeepVisible = false;
105
103
  verticalVolume = false;
106
- $clipText = null;
107
- $clipTextContainer = null;
108
104
  $duration = null;
109
105
  $fullscreenToggle = null;
110
106
  $multiCameraSelector = null;
@@ -296,7 +292,7 @@ export class MediaControl extends UICorePlugin {
296
292
  this.userDisabled = true; // TODO distinguish between user and system (e.g., unplayable) disabled?
297
293
  this.hide();
298
294
  this.unbindKeyEvents();
299
- this.$el.hide();
295
+ this.$el.hide(); // TODO why?
300
296
  }
301
297
  /**
302
298
  * Reenables the plugin disabled earlier with the {@link MediaControl.disable} method
@@ -755,16 +751,16 @@ export class MediaControl extends UICorePlugin {
755
751
  right: [],
756
752
  }, this.core.activeContainer.settings);
757
753
  trace(`${T} updateSettings`, { newSettings });
754
+ newSettings.left.push('clips'); // TODO
758
755
  // TODO make order controlled via CSS
759
- newSettings.left = orderByOrderPattern([...newSettings.left, 'clipsText', 'volume'], LEFT_ORDER);
756
+ newSettings.left = orderByOrderPattern([...newSettings.left, 'volume', 'clips'], LEFT_ORDER);
760
757
  if (this.core.activePlayback.getPlaybackType() === Playback.LIVE &&
761
758
  this.core.activePlayback.dvrEnabled) {
762
759
  newSettings.left.push('dvr');
763
760
  }
764
761
  // actual order of the items appear rendered is controlled by CSS
765
762
  newSettings.right = DEFAULT_SETTINGS.right; // TODO get from the options
766
- if ((!this.fullScreenOnVideoTagSupported &&
767
- !fullscreenEnabled()) ||
763
+ if ((!this.fullScreenOnVideoTagSupported && !fullscreenEnabled()) ||
768
764
  this.options.fullscreenDisable) {
769
765
  trace(`${T} updateSettings removing fullscreen`, {
770
766
  supported: this.fullScreenOnVideoTagSupported,
@@ -811,8 +807,6 @@ export class MediaControl extends UICorePlugin {
811
807
  this.$volumeBarFill = this.$el.find('.bar-fill-1[data-volume]');
812
808
  this.$volumeBarScrubber = this.$el.find('.bar-scrubber[data-volume]');
813
809
  this.$multiCameraSelector = this.$el.find('.media-control-multicamera[data-multicamera]');
814
- this.$clipText = this.$el.find('.media-clip-text[data-clipstext]'); // TODO
815
- this.$clipTextContainer = this.$el.find('.media-clip-container[data-clipstext]');
816
810
  this.resetIndicators();
817
811
  this.initializeIcons();
818
812
  }
@@ -827,25 +821,14 @@ export class MediaControl extends UICorePlugin {
827
821
  * ```ts
828
822
  * class MyPlugin extends UICorePlugin {
829
823
  * override render() {
830
- * const mediaControl = this.core.getPlugin('media_control')
831
- * const clipText = mediaControl.getElement('clipText')
832
- * clipText?.el.text('Here we go')
824
+ * this.$el.html('<div data-clips>Here we go</div>')
825
+ * this.core.getPlugin('media_control').mount('clips', this.$el)
833
826
  * return this
834
827
  * }
835
828
  * }
836
829
  * ```
837
830
  */
838
- getElement(name) {
839
- switch (name) {
840
- case 'audiotracks':
841
- return null;
842
- case 'clipText':
843
- return this.$clipText;
844
- case 'seekBarContainer':
845
- return this.$seekBarContainer;
846
- }
847
- }
848
- putElement(name, element) {
831
+ mount(name, element) {
849
832
  const panel = this.getElementLocation(name);
850
833
  trace(`${T} putElement`, { name, panel: !!panel });
851
834
  if (panel) {
@@ -864,6 +847,9 @@ export class MediaControl extends UICorePlugin {
864
847
  return;
865
848
  }
866
849
  }
850
+ putElement(name, element) {
851
+ this.mount(name, element);
852
+ }
867
853
  /**
868
854
  * Toggle the visibility of a media control element
869
855
  * @param name - The name of the media control element
@@ -913,11 +899,11 @@ export class MediaControl extends UICorePlugin {
913
899
  if (!this.settings.seekEnabled) {
914
900
  return;
915
901
  }
916
- const currentTime = this.container.getCurrentTime();
917
- const duration = this.container.getDuration();
902
+ const currentTime = this.core.activeContainer.getCurrentTime();
903
+ const duration = this.core.activeContainer.getDuration();
918
904
  let position = Math.min(Math.max(currentTime + delta, 0), duration);
919
905
  position = Math.min((position * 100) / duration, 100);
920
- this.container.seekPercentage(position);
906
+ this.core.activeContainer.seekPercentage(position);
921
907
  }
922
908
  bindKeyAndShow(key, callback) {
923
909
  // TODO or boolean return type
@@ -1035,7 +1021,10 @@ export class MediaControl extends UICorePlugin {
1035
1021
  * @internal
1036
1022
  */
1037
1023
  render() {
1038
- trace(`${T} render`, { needsUpdate: this.hasUpdate, metadataLoaded: this.metadataLoaded });
1024
+ trace(`${T} render`, {
1025
+ needsUpdate: this.hasUpdate,
1026
+ metadataLoaded: this.metadataLoaded,
1027
+ });
1039
1028
  if (!this.hasUpdate || !this.metadataLoaded) {
1040
1029
  return this;
1041
1030
  }
@@ -1191,8 +1180,7 @@ MediaControl.extend = function (properties) {
1191
1180
  return extend(MediaControl, properties);
1192
1181
  };
1193
1182
  function serializeSettings(s) {
1194
- return s.left
1195
- .slice()
1183
+ return s.left.slice()
1196
1184
  .sort()
1197
1185
  .concat(s.right.slice().sort())
1198
1186
  .concat(s.default.slice().sort())
@@ -1,4 +1,12 @@
1
1
  export declare function getLocation(href: string): HTMLAnchorElement;
2
- export declare function strtimeToMiliseconds(str: string): number;
2
+ /**
3
+ * Parse a time string in the format "hh:mm:ss" or "mm:ss" or "ss" to seconds.
4
+ * @param str - The time string to parse.
5
+ * @returns The time in seconds.
6
+ * @example "01:01:00" -> 3660
7
+ * @example "01:00" -> 60
8
+ * @example "33" -> 33
9
+ */
10
+ export declare function parseClipTime(str: string): number;
3
11
  export declare function getPageX(event: MouseEvent | TouchEvent): number;
4
12
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/plugins/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,qBAMvC;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAyBxD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,MAAM,CAU/D"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/plugins/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,qBAMvC;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAmBjD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,MAAM,CAU/D"}
@@ -3,7 +3,15 @@ export function getLocation(href) {
3
3
  l.href = href;
4
4
  return l;
5
5
  }
6
- export function strtimeToMiliseconds(str) {
6
+ /**
7
+ * Parse a time string in the format "hh:mm:ss" or "mm:ss" or "ss" to seconds.
8
+ * @param str - The time string to parse.
9
+ * @returns The time in seconds.
10
+ * @example "01:01:00" -> 3660
11
+ * @example "01:00" -> 60
12
+ * @example "33" -> 33
13
+ */
14
+ export function parseClipTime(str) {
7
15
  if (!str) {
8
16
  return 0;
9
17
  }
@@ -12,21 +20,12 @@ export function strtimeToMiliseconds(str) {
12
20
  if (arr.length >= 3) {
13
21
  h = parseInt(arr[arr.length - 3]) * 60 * 60;
14
22
  }
15
- else {
16
- h = 0;
17
- }
18
23
  if (arr.length >= 2) {
19
24
  m = parseInt(arr[arr.length - 2]) * 60;
20
25
  }
21
- else {
22
- m = 0;
23
- }
24
26
  if (arr.length >= 1) {
25
27
  s = parseInt(arr[arr.length - 1]);
26
28
  }
27
- else {
28
- s = 0;
29
- }
30
29
  return (h + m + s);
31
30
  }
32
31
  export function getPageX(event) {
@@ -2,7 +2,7 @@ import { reportError } from '@gcorevideo/utils';
2
2
  import assert from 'assert';
3
3
  import URLHandler from './urlhandler.js';
4
4
  import MergeVast from './xmlmerge.js';
5
- import { strtimeToMiliseconds } from '../utils.js';
5
+ import { parseClipTime } from '../utils.js';
6
6
  export default class LoaderXML {
7
7
  url;
8
8
  config = '';
@@ -91,7 +91,7 @@ export default class LoaderXML {
91
91
  this.removeTag('Tracking', 'event="progress"');
92
92
  }
93
93
  if (linearSkipOffset && linearSkipOffset.length > 1) {
94
- timeOffset = strtimeToMiliseconds(linearSkipOffset[1]);
94
+ timeOffset = parseClipTime(linearSkipOffset[1]);
95
95
  this.config = this.config.replace(/<Linear skipoffset="(\d+:\d+:\d+)".*?>/g, '<Linear>');
96
96
  }
97
97
  return { skipEvents, progressEvents, timeOffset };
@@ -1 +1 @@
1
- {"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../src/testUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,YAAY,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,MAAM,MAAM,eAAe,CAAA;AAElC;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,MAAM;IAErC,SAAS,CAAC,OAAO,EAAE,GAAG;IACtB,QAAQ,CAAC,IAAI,EAAE,GAAG;IAClB,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG;gBAFjB,OAAO,EAAE,GAAG,EACb,IAAI,EAAE,GAAG,EACR,WAAW,CAAC,EAAE,GAAG,YAAA;IAK7B,IAAI,IAAI,WAEP;IAED,OAAO;IAEP,IAAI;IAEJ,KAAK;IAEL,IAAI;IAEJ,OAAO;IAEP,IAAI;IAEJ,cAAc;IAEd,WAAW;IAIX,QAAQ;IAER,OAAO;IAEP,eAAe;IAIf,kBAAkB;IAIlB,cAAc;IAId,qBAAqB;IAIrB,IAAI;IAEJ,MAAM;IAEN,MAAM;IAEN,SAAS;IAET,eAAe;IAIf,WAAW;IAIX,QAAQ;IAIR,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;CAGtC;AAED,wBAAgB,cAAc,CAC5B,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,SAAS,GAAE,GAA2B;;;;;;;;;;;;;;;;EAqBvC;AAED,wBAAgB,gBAAgB;;;EAK/B;AAED,wBAAgB,mBAAmB;;;;;;EAKlC;AAED,wBAAgB,kBAAkB,CAAC,IAAI,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkC/C;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,GAAE,GAA0B;;;;;;;;;;;;;;EAkBvE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,gBAiB/C;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,OAY7C"}
1
+ {"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../src/testUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,YAAY,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,MAAM,MAAM,eAAe,CAAA;AAElC;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,MAAM;IAErC,SAAS,CAAC,OAAO,EAAE,GAAG;IACtB,QAAQ,CAAC,IAAI,EAAE,GAAG;IAClB,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG;gBAFjB,OAAO,EAAE,GAAG,EACb,IAAI,EAAE,GAAG,EACR,WAAW,CAAC,EAAE,GAAG,YAAA;IAK7B,IAAI,IAAI,WAEP;IAED,OAAO;IAEP,IAAI;IAEJ,KAAK;IAEL,IAAI;IAEJ,OAAO;IAEP,IAAI;IAEJ,cAAc;IAEd,WAAW;IAIX,QAAQ;IAER,OAAO;IAEP,eAAe;IAIf,kBAAkB;IAIlB,cAAc;IAId,qBAAqB;IAIrB,IAAI;IAEJ,MAAM;IAEN,MAAM;IAEN,SAAS;IAET,eAAe;IAIf,WAAW;IAIX,QAAQ;IAIR,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;CAGtC;AAED,wBAAgB,cAAc,CAC5B,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,SAAS,GAAE,GAA2B;;;;;;;;;;;;;;;;EAqBvC;AAED,wBAAgB,gBAAgB;;;EAK/B;AAED,wBAAgB,mBAAmB;;;;;;EAKlC;AAED,wBAAgB,kBAAkB,CAAC,IAAI,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkC/C;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,GAAE,GAA0B;;;;;;;;;;;;;;EAkBvE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,gBAc/C;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,OAY7C"}
package/lib/testUtils.js CHANGED
@@ -152,14 +152,11 @@ export function createMockMediaControl(core) {
152
152
  mediaControl.$el.html(`<div class="media-control-left-panel" data-media-control></div>
153
153
  <div class="media-control-right-panel" data-media-control></div>
154
154
  <div class="media-control-center-panel" data-media-control></div>`);
155
- const elements = {
156
- gear: $(document.createElement('div')),
157
- };
158
- // @ts-ignore
159
- mediaControl.getElement = vi.fn().mockImplementation((name) => elements[name]);
160
155
  // @ts-ignore
161
156
  mediaControl.putElement = vi.fn();
162
157
  // @ts-ignore
158
+ mediaControl.mount = vi.fn();
159
+ // @ts-ignore
163
160
  mediaControl.toggleElement = vi.fn();
164
161
  return mediaControl;
165
162
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gcorevideo/player",
3
- "version": "2.22.14",
3
+ "version": "2.22.16",
4
4
  "description": "Gcore JavaScript video player",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
package/src/Player.ts CHANGED
@@ -159,6 +159,9 @@ export class Player {
159
159
  * ```
160
160
  */
161
161
  attachTo(playerElement: HTMLElement): void {
162
+ trace(`${T} attachTo`, {
163
+ player: !!this.player,
164
+ })
162
165
  assert.ok(!this.player, 'Player already initialized')
163
166
  assert.ok(playerElement, 'Player container element is required')
164
167
  if (this.config.debug === 'all' || this.config.debug === 'clappr') {
@@ -398,11 +401,9 @@ export class Player {
398
401
  trace(`${T} initPlayer`, {
399
402
  autoPlay: coreOptions.autoPlay,
400
403
  sources: coreOptions.sources,
404
+ player: !!this.player,
401
405
  // TODO selected options
402
406
  })
403
-
404
- assert.ok(!this.player, 'Player already initialized')
405
-
406
407
  const player = new PlayerClappr(coreOptions)
407
408
  this.player = player
408
409
  this.bindCoreListeners()
@@ -586,17 +586,6 @@ export default class HlsPlayback extends BasePlayback {
586
586
  }
587
587
 
588
588
  seek(time: number) {
589
- // trace(`${T} seek`, {
590
- // time,
591
- // duration: this._duration,
592
- // startTime: this._startTime,
593
- // currentTimestamp: this.currentTimestamp,
594
- // playbackType: this.getPlaybackType(),
595
- // dvrEnabled: this.dvrEnabled,
596
- // durationExcludesAfterLiveSyncPoint: this._durationExcludesAfterLiveSyncPoint,
597
- // minDvrSize: this._minDvrSize,
598
-
599
- // })
600
589
  if (time < 0) {
601
590
  Log.warn(
602
591
  'Attempt to seek to a negative time. Resetting to live point. Use seekToLivePoint() to seek to the live point.',
@@ -768,11 +757,6 @@ export default class HlsPlayback extends BasePlayback {
768
757
  return
769
758
  }
770
759
  this._lastTimeUpdate = update
771
- // trace(`${T} _onTimeUpdate`, {
772
- // current: update.current,
773
- // total: update.total,
774
- // firstFragDateTime: update.firstFragDateTime,
775
- // })
776
760
  this.trigger(Events.PLAYBACK_TIMEUPDATE, update, this.name)
777
761
  }
778
762
 
@@ -1097,12 +1081,6 @@ export default class HlsPlayback extends BasePlayback {
1097
1081
  }
1098
1082
 
1099
1083
  get dvrEnabled() {
1100
- // trace(`${T} dvrEnabled`, {
1101
- // durationExcludesAfterLiveSyncPoint: this._durationExcludesAfterLiveSyncPoint,
1102
- // duration: this._duration,
1103
- // minDvrSize: this._minDvrSize,
1104
- // playbackType: this.getPlaybackType(),
1105
- // })
1106
1084
  // enabled when:
1107
1085
  // - the duration does not include content after hlsjs's live sync point
1108
1086
  // - the playable region duration is longer than the configured duration to enable dvr after
@@ -10,7 +10,7 @@ import { CLAPPR_VERSION } from '../../build.js'
10
10
 
11
11
  type Timer = ReturnType<typeof setTimeout>
12
12
 
13
- const T = 'plugins.click_to_pause_custom'
13
+ const T = 'plugins.click_to_pause'
14
14
 
15
15
  /**
16
16
  * A small `PLUGIN` that toggles the playback state on click over the video container