@gcorevideo/player 2.17.0 → 2.18.0

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 (69) hide show
  1. package/dist/index.js +182 -109
  2. package/dist/player.d.ts +150 -24
  3. package/docs/api/player.containersize.md +19 -0
  4. package/docs/api/player.dashsettings.md +2 -0
  5. package/docs/api/player.errorlevel.md +1 -0
  6. package/docs/api/player.langtag.md +6 -0
  7. package/docs/api/player.md +57 -22
  8. package/docs/api/player.mediatransport.md +1 -0
  9. package/docs/api/player.playbackerror.code.md +2 -0
  10. package/docs/api/player.playbackerror.description.md +2 -0
  11. package/docs/api/player.playbackerror.level.md +2 -0
  12. package/docs/api/player.playbackerror.md +43 -4
  13. package/docs/api/player.playbackerror.message.md +2 -0
  14. package/docs/api/player.playbackerror.origin.md +21 -0
  15. package/docs/api/player.playbackerror.scope.md +16 -0
  16. package/docs/api/player.playbackerrorcode.md +4 -3
  17. package/docs/api/player.playbackmodule.md +1 -0
  18. package/docs/api/player.player.isdvrinuse.md +24 -0
  19. package/docs/api/player.player.isplaying.md +1 -1
  20. package/docs/api/player.player.md +15 -1
  21. package/docs/api/player.player.off.md +4 -4
  22. package/docs/api/player.player.on.md +5 -5
  23. package/docs/api/player.player.resize.md +3 -6
  24. package/docs/api/player.playercomponenttype.md +16 -0
  25. package/docs/api/player.playerdebugsettings.md +1 -1
  26. package/docs/api/player.playerdebugtag.md +1 -0
  27. package/docs/api/player.playerevent.md +96 -0
  28. package/docs/api/player.playereventhandler.md +3 -2
  29. package/docs/api/player.playereventparams.md +20 -0
  30. package/docs/api/player.playermediasourcedesc.md +1 -1
  31. package/docs/api/player.playermediasourcedesc.mimetype.md +1 -1
  32. package/docs/api/player.qualitylevel.bitrate.md +16 -0
  33. package/docs/api/player.qualitylevel.height.md +16 -0
  34. package/docs/api/player.qualitylevel.level.md +16 -0
  35. package/docs/api/player.qualitylevel.md +104 -7
  36. package/docs/api/player.qualitylevel.width.md +16 -0
  37. package/docs/api/player.timeposition.current.md +16 -0
  38. package/docs/api/player.timeposition.md +65 -7
  39. package/docs/api/player.timeposition.total.md +16 -0
  40. package/docs/api/player.timevalue.md +1 -1
  41. package/docs/api/player.translationsettings.md +7 -1
  42. package/docs/api/player.transportpreference.md +1 -0
  43. package/lib/Player.d.ts +30 -14
  44. package/lib/Player.d.ts.map +1 -1
  45. package/lib/Player.js +72 -65
  46. package/lib/internal.types.d.ts +3 -5
  47. package/lib/internal.types.d.ts.map +1 -1
  48. package/lib/playback/dash-playback/DashPlayback.d.ts +2 -0
  49. package/lib/playback/dash-playback/DashPlayback.d.ts.map +1 -1
  50. package/lib/playback/dash-playback/DashPlayback.js +37 -25
  51. package/lib/playback/hls-playback/HlsPlayback.d.ts +3 -0
  52. package/lib/playback/hls-playback/HlsPlayback.d.ts.map +1 -1
  53. package/lib/playback/hls-playback/HlsPlayback.js +33 -18
  54. package/lib/playback.types.d.ts +65 -6
  55. package/lib/playback.types.d.ts.map +1 -1
  56. package/lib/playback.types.js +10 -0
  57. package/lib/types.d.ts +54 -5
  58. package/lib/types.d.ts.map +1 -1
  59. package/lib/types.js +31 -2
  60. package/package.json +1 -1
  61. package/src/Player.ts +109 -78
  62. package/src/internal.types.ts +3 -2
  63. package/src/playback/dash-playback/DashPlayback.ts +64 -35
  64. package/src/playback/hls-playback/HlsPlayback.ts +46 -22
  65. package/src/playback.types.ts +65 -5
  66. package/src/types.ts +56 -6
  67. package/temp/player.api.json +611 -87
  68. package/tsconfig.tsbuildinfo +1 -1
  69. package/dist/DashPlayback-BRJzl8D8.js +0 -901
@@ -66,8 +66,10 @@ export default class DashPlayback extends HTML5Video {
66
66
  _updatePlaybackType(): void;
67
67
  _fillLevels(levels: DashBitrateInfo[]): void;
68
68
  private onLevelSwitch;
69
+ private onLevelSwitchEnd;
69
70
  getPlaybackType(): string;
70
71
  isSeekEnabled(): boolean;
72
+ private getLevel;
71
73
  }
72
74
  export {};
73
75
  //# sourceMappingURL=DashPlayback.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DashPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/dash-playback/DashPlayback.ts"],"names":[],"mappings":"AAIA,OAAO,EAAU,UAAU,EAAO,QAAQ,EAAsB,MAAM,cAAc,CAAA;AAGpF,OAAO,MAAM,EAAE,EAIb,KAAK,WAAW,IAAI,eAAe,EAEnC,aAAa,EACd,MAAM,QAAQ,CAAA;AAEf,OAAO,EAAoC,YAAY,EAAE,YAAY,EAAc,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAO7H,KAAK,YAAY,GACb,OAAO,QAAQ,CAAC,GAAG,GACnB,OAAO,QAAQ,CAAC,IAAI,GACpB,OAAO,QAAQ,CAAC,GAAG,GACnB,OAAO,QAAQ,CAAC,KAAK,CAAA;AAEzB,KAAK,YAAY,GAAG,MAAM,CAAA;AAE1B,KAAK,oBAAoB,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAKD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,UAAU;IAClD,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAO;IAErC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAO;IAKnC,mCAAmC,EAAE,OAAO,CAAQ;IAEpD,aAAa,EAAE,OAAO,CAAQ;IAI9B,uBAAuB,EAAE,MAAM,CAAI;IASnC,wBAAwB,EAAE,MAAM,CAAI;IAEpC,aAAa,EAAE,YAAY,CAAe;IAG1C,aAAa,EAAE,YAAY,GAAG,IAAI,CAAO;IAGzC,gBAAgB,EAAE,SAAS,CAAI;IAE/B,KAAK,EAAE,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAO;IAE5C,2BAA2B,EAAE,MAAM,CAAI;IAEvC,aAAa,EAAE,SAAS,GAAG,IAAI,CAAO;IAEtC,eAAe,EAAE,YAAY,CAA2B;IAIxD,0BAA0B,EAAE,oBAAoB,GAAG,IAAI,CAAO;IAI9D,wBAAwB,EAAE,oBAAoB,GAAG,IAAI,CAAO;IAE5D,kBAAkB,UAAQ;IAE1B,YAAY,EAAE,aAAa,GAAG,IAAI,CAAO;IAEzC,gBAAgB,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,IAAI,CAAO;IAE9D,IAAI,IAAI,WAEP;IAED,IAAI,MAAM,IAAI,YAAY,EAAE,CAE3B;IAED,IAAI,YAAY,IAAI,MAAM,CAMzB;IAED,IAAI,OAAO,YAEV;IAED,IAAI,YAAY,CAAC,EAAE,EAAE,MAAM,EAkC1B;IAED,IAAI,UAAU,WASb;IAED,IAAI,IAAI,WAEP;IAID,IAAI,sBAAsB,WAczB;IAID,IAAI,oBAAoB,WAgBvB;IAED,IAAI,SAAS,WAKZ;gBAEW,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,GAAG;IAOzD,MAAM;IAyEN,MAAM;IAMN,MAAM;YAMW,SAAS;IAI1B,qBAAqB;IAQrB,oBAAoB;IAMpB,kBAAkB;IAOlB,WAAW,IAAI,SAAS;IAQxB,cAAc,IAAI,SAAS;IAO3B,kBAAkB,IAAI,SAAS;IAI/B,cAAc,CAAC,UAAU,EAAE,MAAM;IAejC,IAAI,CAAC,IAAI,EAAE,SAAS;IAgBpB,eAAe;IAIf,UAAU,CAAC,MAAM,EAAE,OAAO;IAKjB,eAAe;IAgBxB,OAAO,CAAC,gBAAgB,CAGvB;IAED,OAAO,CAAC,eAAe,CAoCtB;IAED,OAAO,CAAC,YAAY;IAUpB,aAAa;IAqBb,iBAAiB;IAWjB,IAAI,UAAU,YASb;IAED,WAAW;IAmBX,IAAI;IAUJ,KAAK;IAWL,IAAI;IASJ,OAAO;IAkBP,mBAAmB;IAYnB,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE;IAarC,OAAO,CAAC,aAAa;IASrB,eAAe;IAIf,aAAa;CAGd"}
1
+ {"version":3,"file":"DashPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/dash-playback/DashPlayback.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,UAAU,EAEV,QAAQ,EAIT,MAAM,cAAc,CAAA;AAGrB,OAAO,MAAM,EAAE,EAIb,KAAK,WAAW,IAAI,eAAe,EAEnC,aAAa,EACd,MAAM,QAAQ,CAAA;AAEf,OAAO,EAIL,YAAY,EACZ,YAAY,EAEZ,SAAS,EACV,MAAM,yBAAyB,CAAA;AAOhC,KAAK,YAAY,GACb,OAAO,QAAQ,CAAC,GAAG,GACnB,OAAO,QAAQ,CAAC,IAAI,GACpB,OAAO,QAAQ,CAAC,GAAG,GACnB,OAAO,QAAQ,CAAC,KAAK,CAAA;AAEzB,KAAK,YAAY,GAAG,MAAM,CAAA;AAE1B,KAAK,oBAAoB,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAKD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,UAAU;IAClD,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAO;IAErC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAO;IAKnC,mCAAmC,EAAE,OAAO,CAAQ;IAEpD,aAAa,EAAE,OAAO,CAAQ;IAI9B,uBAAuB,EAAE,MAAM,CAAI;IASnC,wBAAwB,EAAE,MAAM,CAAI;IAEpC,aAAa,EAAE,YAAY,CAAe;IAG1C,aAAa,EAAE,YAAY,GAAG,IAAI,CAAO;IAGzC,gBAAgB,EAAE,SAAS,CAAI;IAE/B,KAAK,EAAE,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAO;IAE5C,2BAA2B,EAAE,MAAM,CAAI;IAEvC,aAAa,EAAE,SAAS,GAAG,IAAI,CAAO;IAEtC,eAAe,EAAE,YAAY,CAA2B;IAIxD,0BAA0B,EAAE,oBAAoB,GAAG,IAAI,CAAO;IAI9D,wBAAwB,EAAE,oBAAoB,GAAG,IAAI,CAAO;IAE5D,kBAAkB,UAAQ;IAE1B,YAAY,EAAE,aAAa,GAAG,IAAI,CAAO;IAEzC,gBAAgB,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,IAAI,CAAO;IAE9D,IAAI,IAAI,WAEP;IAED,IAAI,MAAM,IAAI,YAAY,EAAE,CAE3B;IAED,IAAI,YAAY,IAAI,MAAM,CAMzB;IAED,IAAI,OAAO,YAEV;IAED,IAAI,YAAY,CAAC,EAAE,EAAE,MAAM,EAoC1B;IAED,IAAI,UAAU,WASb;IAED,IAAI,IAAI,WAEP;IAID,IAAI,sBAAsB,WAczB;IAID,IAAI,oBAAoB,WAgBvB;IAED,IAAI,SAAS,WAKZ;gBAEW,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,GAAG;IAOzD,MAAM;IAqEN,MAAM;IAMN,MAAM;YAMW,SAAS;IAI1B,qBAAqB;IAQrB,oBAAoB;IAMpB,kBAAkB;IAOlB,WAAW,IAAI,SAAS;IAQxB,cAAc,IAAI,SAAS;IAO3B,kBAAkB,IAAI,SAAS;IAI/B,cAAc,CAAC,UAAU,EAAE,MAAM;IAejC,IAAI,CAAC,IAAI,EAAE,SAAS;IAgBpB,eAAe;IAIf,UAAU,CAAC,MAAM,EAAE,OAAO;IAKjB,eAAe;IAgBxB,OAAO,CAAC,gBAAgB,CAGvB;IAED,OAAO,CAAC,eAAe,CAmCtB;IAED,OAAO,CAAC,YAAY;IAgBpB,aAAa;IAqBb,iBAAiB;IAWjB,IAAI,UAAU,YASb;IAED,WAAW;IAmBX,IAAI;IAUJ,KAAK;IAWL,IAAI;IASJ,OAAO;IAkBP,mBAAmB;IAYnB,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE;IAarC,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,gBAAgB;IAQxB,eAAe;IAIf,aAAa;IAIb,OAAO,CAAC,QAAQ;CAKjB"}
@@ -1,11 +1,11 @@
1
1
  // Copyright 2014 Globo.com Player authors. All rights reserved.
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
- import { Events, HTML5Video, Log, Playback, PlayerError, Utils } from '@clappr/core';
4
+ import { Events, HTML5Video, Log, Playback, PlayerError, Utils, $, } from '@clappr/core';
5
5
  import { trace } from '@gcorevideo/utils';
6
6
  import assert from 'assert';
7
7
  import DASHJS from 'dashjs';
8
- import { PlaybackErrorCode } from '../../playback.types.js';
8
+ import { PlaybackErrorCode, } from '../../playback.types.js';
9
9
  import { isDashSource } from '../../utils/mediaSources.js';
10
10
  const AUTO = -1;
11
11
  const { now } = Utils;
@@ -69,13 +69,15 @@ export default class DashPlayback extends HTML5Video {
69
69
  this.trigger(Events.PLAYBACK_LEVEL_SWITCH_START);
70
70
  assert.ok(this._dash, 'An instance of dashjs MediaPlayer is required to switch levels');
71
71
  const dash = this._dash;
72
- // TODO use $.extend
73
- const settings = this.options.dash ? structuredClone(this.options.dash) : {};
74
- settings.streaming = settings.streaming || {};
75
- settings.streaming.abr = settings.streaming.abr || {};
76
- settings.streaming.abr.autoSwitchBitrate =
77
- settings.streaming.abr.autoSwitchBitrate || {};
78
- settings.streaming.abr.autoSwitchBitrate.video = id === -1;
72
+ const settings = $.extend(true, {}, this.options.dash, {
73
+ streaming: {
74
+ abr: {
75
+ autoSwitchBitrate: {
76
+ video: id === -1,
77
+ },
78
+ },
79
+ },
80
+ });
79
81
  dash.updateSettings(settings);
80
82
  if (id !== -1) {
81
83
  this._dash.setQualityFor('video', id);
@@ -143,16 +145,14 @@ export default class DashPlayback extends HTML5Video {
143
145
  this._dash.initialize();
144
146
  if (this.options.dash) {
145
147
  // TODO use $.extend
146
- const settings = structuredClone(this.options.dash);
147
- if (!settings.streaming) {
148
- settings.streaming = {};
149
- }
150
- if (!settings.streaming.text) {
151
- settings.streaming.text = {
152
- defaultEnabled: false,
153
- };
154
- }
155
- this._dash.updateSettings(this.options.dash);
148
+ const settings = $.extend({}, this.options.dash, {
149
+ streaming: {
150
+ text: {
151
+ defaultEnabled: false,
152
+ },
153
+ },
154
+ });
155
+ this._dash.updateSettings(settings);
156
156
  }
157
157
  this._dash.attachView(this.el);
158
158
  this._dash.setAutoPlay(false);
@@ -164,13 +164,14 @@ export default class DashPlayback extends HTML5Video {
164
164
  this._updatePlaybackType();
165
165
  this._fillLevels(bitrates);
166
166
  dash.on(DASHJS.MediaPlayer.events.QUALITY_CHANGE_REQUESTED, (evt) => {
167
- // TODO
168
- assert.ok(this._levels, 'An array of levels is required to change quality');
169
- const newLevel = this._levels.find((level) => level.level === evt.newQuality); // TODO or simply this._levels[evt.newQuality]?
170
- assert.ok(newLevel, 'A valid level is required to change quality');
167
+ const newLevel = this.getLevel(evt.newQuality);
171
168
  this.onLevelSwitch(newLevel);
172
169
  });
173
170
  });
171
+ this._dash.on(DASHJS.MediaPlayer.events.QUALITY_CHANGE_RENDERED, (evt) => {
172
+ const currentLevel = this.getLevel(evt.newQuality);
173
+ this.onLevelSwitchEnd(currentLevel);
174
+ });
174
175
  this._dash.on(DASHJS.MediaPlayer.events.METRIC_ADDED, (e) => {
175
176
  // Listen for the first manifest request in order to update player UI
176
177
  if (e.metric === 'DVRInfo') {
@@ -314,7 +315,11 @@ export default class DashPlayback extends HTML5Video {
314
315
  };
315
316
  triggerError(error) {
316
317
  trace(`${T} triggerError`, { error });
317
- this.trigger(Events.PLAYBACK_ERROR, error);
318
+ this.trigger(Events.PLAYBACK_ERROR, {
319
+ ...error,
320
+ origin: this.name,
321
+ scope: DashPlayback.type,
322
+ });
318
323
  // only reset the dash player in 10ms async, so that the rest of the
319
324
  // calling function finishes
320
325
  setTimeout(() => {
@@ -429,8 +434,10 @@ export default class DashPlayback extends HTML5Video {
429
434
  onLevelSwitch(currentLevel) {
430
435
  // TODO check the two below
431
436
  this.trigger(Events.PLAYBACK_LEVEL_SWITCH, currentLevel);
437
+ }
438
+ onLevelSwitchEnd(currentLevel) {
432
439
  this.trigger(Events.PLAYBACK_LEVEL_SWITCH_END);
433
- const isHD = (currentLevel.height >= 720 || (currentLevel.bitrate / 1000) >= 2000);
440
+ const isHD = currentLevel.height >= 720 || currentLevel.bitrate / 1000 >= 2000;
434
441
  this.trigger(Events.PLAYBACK_HIGHDEFINITIONUPDATE, isHD);
435
442
  this.trigger(Events.PLAYBACK_BITRATE, currentLevel);
436
443
  }
@@ -440,6 +447,11 @@ export default class DashPlayback extends HTML5Video {
440
447
  isSeekEnabled() {
441
448
  return this._playbackType === Playback.VOD || this.dvrEnabled;
442
449
  }
450
+ getLevel(quality) {
451
+ const ret = this.levels.find((level) => level.level === quality);
452
+ assert.ok(ret, 'Invalid quality level');
453
+ return ret;
454
+ }
443
455
  }
444
456
  DashPlayback.canPlay = function (resource, mimeType) {
445
457
  if (!isDashSource(resource, mimeType)) {
@@ -94,6 +94,9 @@ export default class HlsPlayback extends HTML5Video {
94
94
  _onFragmentLoaded(evt: HlsEvents.FRAG_LOADED, data: FragLoadedData): void;
95
95
  _onSubtitleLoaded(): void;
96
96
  _onLevelSwitch(evt: HlsEvents.LEVEL_SWITCHING, data: LevelSwitchingData): void;
97
+ _onLevelSwitched(evt: HlsEvents.LEVEL_SWITCHED, data: {
98
+ level: number;
99
+ }): void;
97
100
  get dvrEnabled(): boolean;
98
101
  getPlaybackType(): PlaybackType;
99
102
  isSeekEnabled(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"HlsPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/hls-playback/HlsPlayback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HlsPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/hls-playback/HlsPlayback.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,UAAU,EAKX,MAAM,cAAc,CAAA;AAGrB,OAAO,KAAK,EAAE,EACZ,MAAM,IAAI,SAAS,EAEnB,KAAK,SAAS,IAAI,YAAY,EAE9B,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAG5B,KAAK,kBAAkB,EACxB,MAAM,QAAQ,CAAA;AAEf,OAAO,EACL,aAAa,EAGb,YAAY,EAGb,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AA4C7C,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,UAAU;IACjD,OAAO,CAAC,UAAU,CAAQ;IAE1B,OAAO,CAAC,gBAAgB,CAAQ;IAEhC,OAAO,CAAC,gBAAgB,CAAwB;IAEhD,OAAO,CAAC,aAAa,CAAsB;IAE3C,OAAO,CAAC,mCAAmC,CAAQ;IAEnD,OAAO,CAAC,8BAA8B,CAAI;IAE1C,OAAO,CAAC,cAAc,CAAQ;IAE9B,OAAO,CAAC,IAAI,CAAqB;IAEjC,OAAO,CAAC,aAAa,CAAQ;IAE7B,OAAO,CAAC,aAAa,CAAsB;IAE3C,OAAO,CAAC,eAAe,CAA4B;IAEnD,OAAO,CAAC,OAAO,CAA8B;IAE7C,OAAO,CAAC,0BAA0B,CAA+B;IAEjE,OAAO,CAAC,wBAAwB,CAA+B;IAE/D,OAAO,CAAC,eAAe,CAAQ;IAE/B,OAAO,CAAC,uBAAuB,CAAI;IAEnC,OAAO,CAAC,aAAa,CAA6C;IAElE,OAAO,CAAC,aAAa,CAA4B;IAEjD,OAAO,CAAC,wBAAwB,CAAI;IAEpC,OAAO,CAAC,gBAAgB,CAAsB;IAE9C,OAAO,CAAC,yBAAyB,CAAI;IAErC,OAAO,CAAC,yBAAyB,CAAQ;IAEzC,OAAO,CAAC,uBAAuB,CAAQ;IAEvC,OAAO,CAAC,sBAAsB,CAAsB;IAEpD,OAAO,CAAC,gBAAgB,CAAuB;IAE/C,IAAI,IAAI,WAEP;IAED,IAAI,gBAAgB;;MAEnB;IAED,IAAI,MAAM,mBAET;IAED,IAAI,YAAY,IAQK,MAAM,CAN1B;IAED,IAAI,OAAO,YAEV;IAED,IAAI,YAAY,CAAC,EAAE,EAAE,MAAM,EAS1B;IAED,IAAI,OAAO,WAGV;IAED,IAAI,sBAAsB,SAIzB;IAED,IAAI,UAAU,WASb;IAED,IAAI,IAAI,WAEP;IAID,IAAI,sBAAsB,WAczB;IAID,IAAI,oBAAoB,WAevB;IAED,IAAI,SAAS,WAEZ;IAmBD,IAAI,2BAA2B,WAM9B;IAED,IAAI,iBAAiB,kBAEpB;IAED,IAAI,cAAc;;MAEjB;IAED,IAAI,eAAe,QAKlB;IAED,IAAI,WAAW,QAEd;IAED,IAAI,gBAAgB,kBAcnB;IAED,MAAM,KAAK,KAAK,iBAEf;gBAEW,GAAG,IAAI,EAAE,GAAG,EAAE;IAU1B,gBAAgB;IAmDhB,MAAM;IAON,mBAAmB;IAYnB,kBAAkB;IAUlB,eAAe;IAOf,gBAAgB;IA0EhB,mBAAmB;IAUnB,qBAAqB;IASrB,0BAA0B,CACxB,GAAG,EAAE,SAAS,CAAC,qBAAqB,EACpC,IAAI,EAAE,uBAAuB;IAS/B,MAAM;IAMN,MAAM;IASN,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa;cAsBpD,SAAS,CAAC,MAAM,EAAE,MAAM;IAE3C,qBAAqB;IAUrB,oBAAoB;IAQpB,kBAAkB;IAOlB,WAAW;IAIX,cAAc;IAad,kBAAkB;IAIlB,cAAc,CAAC,UAAU,EAAE,MAAM;IAOjC,IAAI,CAAC,IAAI,EAAE,MAAM;IAajB,eAAe;IAIf,UAAU,CAAC,MAAM,EAAE,OAAO;IAK1B,eAAe;IAiBf,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY;IA4GtD,YAAY,CAAC,IAAI,EAAE,YAAY;IAU/B,aAAa;IAkBb,iBAAiB;IAUjB,WAAW;IAwCX,IAAI,CAAC,GAAG,EAAE,MAAM;IAMhB,IAAI;IAUJ,KAAK;IAUL,IAAI;IAQJ,OAAO;IAMP,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,eAAe;IAkJvB,kBAAkB,CAAC,GAAG,EAAE,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,eAAe;IAMrE,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,cAAc;IAIlE,iBAAiB;IAajB,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,kBAAkB;IAOvE,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE;IAmBvE,IAAI,UAAU,YAUb;IAED,eAAe;IAIf,aAAa;IAIb,OAAO,CAAC,YAAY;CAIrB"}
@@ -274,6 +274,7 @@ export default class HlsPlayback extends HTML5Video {
274
274
  this._hls.on(HLSJS.Events.LEVEL_LOADED, (evt, data) => this._updatePlaybackType(evt, data));
275
275
  this._hls.on(HLSJS.Events.LEVEL_UPDATED, (evt, data) => this._onLevelUpdated(evt, data));
276
276
  this._hls.on(HLSJS.Events.LEVEL_SWITCHING, (evt, data) => this._onLevelSwitch(evt, data));
277
+ this._hls.on(HLSJS.Events.LEVEL_SWITCHED, (evt, data) => this._onLevelSwitched(evt, data));
277
278
  this._hls.on(HLSJS.Events.FRAG_CHANGED, (evt, data) => this._onFragmentChanged(evt, data));
278
279
  this._hls.on(HLSJS.Events.FRAG_LOADED, (evt, data) => this._onFragmentLoaded(evt, data));
279
280
  this._hls.on(HLSJS.Events.FRAG_PARSING_METADATA, (evt, data) => this._onFragmentParsingMetadata(evt, data));
@@ -331,7 +332,10 @@ export default class HlsPlayback extends HTML5Video {
331
332
  }
332
333
  else {
333
334
  Log.error('hlsjs: failed to recover', { evt, data });
334
- trace(`${T} _recover failed to recover`, { type: data.type, details: data.details });
335
+ trace(`${T} _recover failed to recover`, {
336
+ type: data.type,
337
+ details: data.details,
338
+ });
335
339
  error.level = PlayerError.Levels.FATAL;
336
340
  this.triggerError(error);
337
341
  }
@@ -414,12 +418,18 @@ export default class HlsPlayback extends HTML5Video {
414
418
  this.trigger(Events.PLAYBACK_SETTINGSUPDATE);
415
419
  }
416
420
  _onHLSJSError(evt, data) {
417
- trace(`${T} _onHLSJSError`, { fatal: data.fatal, type: data.type, details: data.details });
421
+ trace(`${T} _onHLSJSError`, {
422
+ fatal: data.fatal,
423
+ type: data.type,
424
+ details: data.details,
425
+ });
418
426
  const error = {
419
427
  code: PlaybackErrorCode.Generic,
420
428
  description: `${this.name} error: type: ${data.type}, details: ${data.details} fatal: ${data.fatal}`,
421
429
  level: data.fatal ? PlayerError.Levels.FATAL : PlayerError.Levels.WARN,
422
430
  message: `${this.name} error: type: ${data.type}, details: ${data.details}`,
431
+ origin: this.name,
432
+ scope: HlsPlayback.type,
423
433
  };
424
434
  if (data.response) {
425
435
  error.description += `, response: ${JSON.stringify(data.response)}`;
@@ -499,7 +509,10 @@ export default class HlsPlayback extends HTML5Video {
499
509
  return;
500
510
  }
501
511
  Log.warn('hlsjs: non-fatal error occurred', { evt, data });
502
- trace(`${T} _onHLSJSError non-fatal error occurred`, { type: data.type, details: data.details });
512
+ trace(`${T} _onHLSJSError non-fatal error occurred`, {
513
+ type: data.type,
514
+ details: data.details,
515
+ });
503
516
  }
504
517
  }
505
518
  _keyIsDenied(data) {
@@ -773,22 +786,24 @@ export default class HlsPlayback extends HTML5Video {
773
786
  if (!this.levels.length) {
774
787
  this._fillLevels();
775
788
  }
776
- this.trigger(Events.PLAYBACK_LEVEL_SWITCH_END);
777
789
  this.trigger(Events.PLAYBACK_LEVEL_SWITCH, data);
778
- assert(this._hls, 'Hls.js instance is not available');
779
- const currentLevel = this._hls.levels[data.level];
780
- if (currentLevel) {
781
- // TODO should highDefinition be private and maybe have a read only accessor if it's used somewhere
782
- this.highDefinition =
783
- currentLevel.height >= 720 || currentLevel.bitrate / 1000 >= 2000;
784
- this.trigger(Events.PLAYBACK_HIGHDEFINITIONUPDATE, this.highDefinition);
785
- this.trigger(Events.PLAYBACK_BITRATE, {
786
- height: currentLevel.height,
787
- width: currentLevel.width,
788
- bitrate: currentLevel.bitrate,
789
- level: data.level,
790
- });
791
- }
790
+ }
791
+ _onLevelSwitched(evt, data) {
792
+ // @ts-ignore
793
+ const currentLevel = this._hls.levels[data.level]; // TODO or find by .id == level?
794
+ assert.ok(currentLevel, 'Invalid quality level');
795
+ this._currentLevel = data.level;
796
+ // TODO should highDefinition be private and maybe have a read only accessor if it's used somewhere
797
+ this.highDefinition =
798
+ currentLevel.height >= 720 || currentLevel.bitrate / 1000 >= 2000;
799
+ this.trigger(Events.PLAYBACK_HIGHDEFINITIONUPDATE, this.highDefinition);
800
+ this.trigger(Events.PLAYBACK_BITRATE, {
801
+ height: currentLevel.height,
802
+ width: currentLevel.width,
803
+ bitrate: currentLevel.bitrate,
804
+ level: data.level,
805
+ });
806
+ this.trigger(Events.PLAYBACK_LEVEL_SWITCH_END);
792
807
  }
793
808
  get dvrEnabled() {
794
809
  // enabled when:
@@ -1,17 +1,22 @@
1
1
  /**
2
2
  * Playback time in seconds since the beginning of the stream (or a segment for the live streams)
3
- * For the plugin development
4
3
  * @beta
5
4
  */
6
5
  export type TimeValue = number;
7
6
  /**
8
- * For the plugin development
7
+ * Current playback time and total duration of the media.
9
8
  * @beta
10
9
  */
11
- export type TimePosition = {
10
+ export interface TimePosition {
11
+ /**
12
+ * Current playback time, 0..duration, seconds.
13
+ */
12
14
  current: TimeValue;
15
+ /**
16
+ * Total duration of the media, seconds.
17
+ */
13
18
  total: TimeValue;
14
- };
19
+ }
15
20
  /**
16
21
  * For the plugin development
17
22
  * @beta
@@ -27,33 +32,87 @@ export type TimeUpdate = TimePosition & {
27
32
  firstFragDateTime: number;
28
33
  };
29
34
  /**
35
+ * A level of quality within a media source.
30
36
  * @beta
31
37
  */
32
- export type QualityLevel = {
38
+ export interface QualityLevel {
39
+ /**
40
+ * Zero-based index of the quality level.
41
+ */
33
42
  level: number;
43
+ /**
44
+ * Width of the video, pixels.
45
+ */
34
46
  width: number;
47
+ /**
48
+ * Height of the video, pixels.
49
+ */
35
50
  height: number;
51
+ /**
52
+ * Bitrate of the video, bps.
53
+ */
36
54
  bitrate: number;
37
- };
55
+ }
38
56
  /**
57
+ * Codes of errors occurring within the playback component.
39
58
  * @beta
40
59
  */
41
60
  export declare enum PlaybackErrorCode {
61
+ /**
62
+ * An unknown or uncategorised error.
63
+ */
42
64
  Generic = 0,
65
+ /**
66
+ * The media source is not available. Typically a network error.
67
+ */
43
68
  MediaSourceUnavailable = 1,
69
+ /**
70
+ * The media source is not accessible due to some protection policy.
71
+ */
44
72
  MediaSourceAccessDenied = 3
45
73
  }
46
74
  /**
75
+ * Levels of severity of errors. Non-fatal errors usually can be ignored.
47
76
  * @beta
48
77
  */
49
78
  export type ErrorLevel = 'FATAL' | 'WARN' | 'INFO';
50
79
  /**
80
+ * Subsystems of a player component.
81
+ * @beta
82
+ */
83
+ export type PlayerComponentType = 'container' | 'core' | 'playback';
84
+ /**
85
+ * An error occurred during the playback.
51
86
  * @beta
52
87
  */
53
88
  export interface PlaybackError {
89
+ /**
90
+ * Error code.
91
+ */
54
92
  code: PlaybackErrorCode;
93
+ /**
94
+ * Detailed description of the error.
95
+ */
55
96
  description: string;
97
+ /**
98
+ * Level of severity of the error.
99
+ */
56
100
  level: ErrorLevel;
101
+ /**
102
+ * Error message. Non-fatal usually can be ignored.
103
+ */
57
104
  message: string;
105
+ /**
106
+ * Exact component that originated the error.
107
+ * @example
108
+ * - 'core'
109
+ * - 'dash'
110
+ * - 'media_control'
111
+ */
112
+ origin: string;
113
+ /**
114
+ * Component subsystem of the error origin
115
+ */
116
+ scope: PlayerComponentType;
58
117
  }
59
118
  //# sourceMappingURL=playback.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"playback.types.d.ts","sourceRoot":"","sources":["../src/playback.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAE9B;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,SAAS,CAAA;IAClB,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3D;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG;IACtC,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED;;GAEG;AACH,oBAAY,iBAAiB;IAC3B,OAAO,IAAI;IACX,sBAAsB,IAAI;IAC1B,uBAAuB,IAAI;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAElD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,iBAAiB,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,UAAU,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB"}
1
+ {"version":3,"file":"playback.types.d.ts","sourceRoot":"","sources":["../src/playback.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAE9B;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,OAAO,EAAE,SAAS,CAAA;IAClB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;CACjB;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3D;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG;IACtC,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;GAGG;AACH,oBAAY,iBAAiB;IAC3B;;OAEG;IACH,OAAO,IAAI;IACX;;OAEG;IACH,sBAAsB,IAAI;IAC1B;;OAEG;IACH,uBAAuB,IAAI;CAC5B;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAElD;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,CAAA;AAEnE;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,IAAI,EAAE,iBAAiB,CAAA;IACvB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,KAAK,EAAE,UAAU,CAAA;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,KAAK,EAAE,mBAAmB,CAAA;CAC3B"}
@@ -1,9 +1,19 @@
1
1
  /**
2
+ * Codes of errors occurring within the playback component.
2
3
  * @beta
3
4
  */
4
5
  export var PlaybackErrorCode;
5
6
  (function (PlaybackErrorCode) {
7
+ /**
8
+ * An unknown or uncategorised error.
9
+ */
6
10
  PlaybackErrorCode[PlaybackErrorCode["Generic"] = 0] = "Generic";
11
+ /**
12
+ * The media source is not available. Typically a network error.
13
+ */
7
14
  PlaybackErrorCode[PlaybackErrorCode["MediaSourceUnavailable"] = 1] = "MediaSourceUnavailable";
15
+ /**
16
+ * The media source is not accessible due to some protection policy.
17
+ */
8
18
  PlaybackErrorCode[PlaybackErrorCode["MediaSourceAccessDenied"] = 3] = "MediaSourceAccessDenied";
9
19
  })(PlaybackErrorCode || (PlaybackErrorCode = {}));
package/lib/types.d.ts CHANGED
@@ -8,7 +8,8 @@
8
8
  */
9
9
  export interface PlayerMediaSourceDesc {
10
10
  /**
11
- * The MIME type of the media source (e.g. "video/mp4", "application/x-mpegURL")
11
+ * The MIME type of the media source (e.g. `"video/mp4"`, `"application/x-mpegURL"`).
12
+ * Necessary if the type cannot be detected from file extension of the source URL.
12
13
  */
13
14
  mimeType?: string;
14
15
  /**
@@ -22,11 +23,12 @@ export interface PlayerMediaSourceDesc {
22
23
  */
23
24
  export type PlayerMediaSource = string | PlayerMediaSourceDesc;
24
25
  /**
26
+ * Debug output category selector
25
27
  * @beta
26
28
  */
27
29
  export type PlayerDebugTag = 'all' | 'clappr' | 'dash' | 'hls' | 'none';
28
30
  /**
29
- * @remarks true is equivalent to 'all', false is equivalent to 'none'
31
+ * @remarks `true` is equivalent to `'all'`, `false` is equivalent to `'none'`
30
32
  * @beta
31
33
  */
32
34
  export type PlayerDebugSettings = PlayerDebugTag | boolean;
@@ -36,10 +38,12 @@ export type PlayerDebugSettings = PlayerDebugTag | boolean;
36
38
  */
37
39
  export type PlaybackType = 'live' | 'vod';
38
40
  /**
41
+ * Media delivery protocol
39
42
  * @beta
40
43
  */
41
44
  export type MediaTransport = 'dash' | 'hls';
42
45
  /**
46
+ * Preferred media delivery protocol
43
47
  * @beta
44
48
  */
45
49
  export type TransportPreference = MediaTransport;
@@ -146,6 +150,8 @@ export interface PlayerConfig extends Record<string, unknown> {
146
150
  strings?: TranslationSettings;
147
151
  }
148
152
  /**
153
+ * An ISO 639-1 language code.
154
+ * @example `pt`
149
155
  * @beta
150
156
  */
151
157
  export type LangTag = string;
@@ -154,12 +160,18 @@ export type LangTag = string;
154
160
  */
155
161
  export type TranslationKey = string;
156
162
  /**
163
+ * A plain JS object that must conform to the DASH.js settings schema.
157
164
  * @beta
158
165
  * {@link https://cdn.dashjs.org/latest/jsdoc/module-Settings.html | DASH.js settings}
159
166
  */
160
167
  export type DashSettings = Record<string, unknown>;
161
168
  /**
162
- * [language][key] =\> string
169
+ * Localization strings for the player UI.
170
+ * @remarks
171
+ * The keys are language codes, and the values are objects with keys being the translation keys and values being the translations.
172
+ *
173
+ * This dictionary is used to localize the player UI, including the error messages and is shared across all the player components (including the plugins).
174
+ *
163
175
  * @example
164
176
  * ```
165
177
  * {
@@ -178,11 +190,33 @@ export type DashSettings = Record<string, unknown>;
178
190
  * @beta
179
191
  */
180
192
  export type TranslationSettings = Partial<Record<LangTag, Record<TranslationKey, string>>>;
193
+ /**
194
+ * Dimensions of the player container DOM element.
195
+ * @beta
196
+ */
197
+ export type ContainerSize = {
198
+ width: number;
199
+ height: number;
200
+ };
181
201
  /**
182
202
  * A top-level event on the player object
183
203
  * @beta
184
204
  */
185
205
  export declare enum PlayerEvent {
206
+ /**
207
+ * Playback has reached the end of the media.
208
+ */
209
+ Ended = "ended",
210
+ /**
211
+ * An error occurred.
212
+ * Parameters: {@link PlaybackError}
213
+ */
214
+ Error = "error",
215
+ /**
216
+ * The player has switched to or from the fullscreen mode.
217
+ * Parameters:`boolean` isFullscreen
218
+ */
219
+ Fullscreen = "fullscreen",
186
220
  /**
187
221
  * The player is ready to use.
188
222
  */
@@ -195,13 +229,28 @@ export declare enum PlayerEvent {
195
229
  * Playback has been paused.
196
230
  */
197
231
  Pause = "pause",
232
+ /**
233
+ * The player's container has been resized.
234
+ * Parameters: {@link ContainerSize}
235
+ */
236
+ Resize = "resize",
237
+ /**
238
+ * The player is seeking to a new position.
239
+ */
240
+ Seek = "seek",
198
241
  /**
199
242
  * Playback has been stopped.
200
243
  */
201
244
  Stop = "stop",
202
245
  /**
203
- * Playback has reached the end of the media.
246
+ * The current playback time has changed.
247
+ * Parameters: {@link TimePosition}
248
+ */
249
+ TimeUpdate = "timeupdate",
250
+ /**
251
+ * The volume has changed.
252
+ * Parameters: `number` volume in the range 0..1
204
253
  */
205
- Ended = "ended"
254
+ VolumeUpdate = "volumeupdate"
206
255
  }
207
256
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,qBAAqB,CAAA;AAE9D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;AAEvE;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG,OAAO,CAAA;AAE1D;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,CAAA;AAEzC;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,CAAA;AAE3C;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAA;AAEhD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3D;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;;;OAIG;IACH,IAAI,CAAC,EAAE,YAAY,CAAA;IAEnB;;;OAGG;IACH,KAAK,CAAC,EAAE,mBAAmB,CAAA;IAE3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IAEd;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IAEd;;;;OAIG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAE3B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,mBAAmB,CAAA;IAEvC;;OAEG;IACH,OAAO,EAAE,iBAAiB,EAAE,CAAA;IAE5B;;OAEG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAA;CAC9B;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAA;AAE5B;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAA;AAEnC;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAElD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,CACvC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAChD,CAAA;AAED;;;GAGG;AACH,oBAAY,WAAW;IACrB;;OAEG;IACH,KAAK,UAAU;IACf;;OAEG;IACH,IAAI,SAAS;IACb;;OAEG;IACH,KAAK,UAAU;IACf;;OAEG;IACH,IAAI,SAAS;IACb;;OAEG;IACH,KAAK,UAAU;CAChB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,qBAAqB,CAAA;AAE9D;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;AAEvE;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG,OAAO,CAAA;AAE1D;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,CAAA;AAEzC;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,CAAA;AAE3C;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAA;AAEhD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3D;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;;;OAIG;IACH,IAAI,CAAC,EAAE,YAAY,CAAA;IAEnB;;;OAGG;IACH,KAAK,CAAC,EAAE,mBAAmB,CAAA;IAE3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IAEd;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IAEd;;;;OAIG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAE3B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,mBAAmB,CAAA;IAEvC;;OAEG;IACH,OAAO,EAAE,iBAAiB,EAAE,CAAA;IAE5B;;OAEG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAA;CAC9B;AAED;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAA;AAE5B;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAA;AAEnC;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAElD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,CACvC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAChD,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED;;;GAGG;AACH,oBAAY,WAAW;IACrB;;OAEG;IACH,KAAK,UAAU;IACf;;;OAGG;IACH,KAAK,UAAU;IACf;;;OAGG;IACH,UAAU,eAAe;IACzB;;OAEG;IACH,KAAK,UAAU;IACf;;OAEG;IACH,IAAI,SAAS;IACb;;OAEG;IACH,KAAK,UAAU;IACf;;;OAGG;IACH,MAAM,WAAW;IACjB;;OAEG;IACH,IAAI,SAAS;IACb;;OAEG;IACH,IAAI,SAAS;IACb;;;OAGG;IACH,UAAU,eAAe;IACzB;;;OAGG;IACH,YAAY,iBAAiB;CAC9B"}
package/lib/types.js CHANGED
@@ -4,6 +4,20 @@
4
4
  */
5
5
  export var PlayerEvent;
6
6
  (function (PlayerEvent) {
7
+ /**
8
+ * Playback has reached the end of the media.
9
+ */
10
+ PlayerEvent["Ended"] = "ended";
11
+ /**
12
+ * An error occurred.
13
+ * Parameters: {@link PlaybackError}
14
+ */
15
+ PlayerEvent["Error"] = "error";
16
+ /**
17
+ * The player has switched to or from the fullscreen mode.
18
+ * Parameters:`boolean` isFullscreen
19
+ */
20
+ PlayerEvent["Fullscreen"] = "fullscreen";
7
21
  /**
8
22
  * The player is ready to use.
9
23
  */
@@ -16,12 +30,27 @@ export var PlayerEvent;
16
30
  * Playback has been paused.
17
31
  */
18
32
  PlayerEvent["Pause"] = "pause";
33
+ /**
34
+ * The player's container has been resized.
35
+ * Parameters: {@link ContainerSize}
36
+ */
37
+ PlayerEvent["Resize"] = "resize";
38
+ /**
39
+ * The player is seeking to a new position.
40
+ */
41
+ PlayerEvent["Seek"] = "seek";
19
42
  /**
20
43
  * Playback has been stopped.
21
44
  */
22
45
  PlayerEvent["Stop"] = "stop";
23
46
  /**
24
- * Playback has reached the end of the media.
47
+ * The current playback time has changed.
48
+ * Parameters: {@link TimePosition}
25
49
  */
26
- PlayerEvent["Ended"] = "ended";
50
+ PlayerEvent["TimeUpdate"] = "timeupdate";
51
+ /**
52
+ * The volume has changed.
53
+ * Parameters: `number` volume in the range 0..1
54
+ */
55
+ PlayerEvent["VolumeUpdate"] = "volumeupdate";
27
56
  })(PlayerEvent || (PlayerEvent = {}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gcorevideo/player",
3
- "version": "2.17.0",
3
+ "version": "2.18.0",
4
4
  "description": "Gcore JavaScript video player",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",