@gcorevideo/player 2.22.17 → 2.22.18

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 (52) hide show
  1. package/assets/clappr-nerd-stats/clappr-nerd-stats.ejs +76 -78
  2. package/assets/clappr-nerd-stats/clappr-nerd-stats.scss +10 -7
  3. package/dist/core.js +5 -7
  4. package/dist/index.css +1350 -1349
  5. package/dist/index.js +234 -89
  6. package/dist/plugins/index.css +666 -665
  7. package/dist/plugins/index.js +231 -83
  8. package/lib/playback/dash-playback/DashPlayback.d.ts +0 -1
  9. package/lib/playback/dash-playback/DashPlayback.d.ts.map +1 -1
  10. package/lib/playback/dash-playback/DashPlayback.js +4 -5
  11. package/lib/playback/hls-playback/HlsPlayback.d.ts +1 -1
  12. package/lib/playback/hls-playback/HlsPlayback.d.ts.map +1 -1
  13. package/lib/playback/hls-playback/HlsPlayback.js +0 -1
  14. package/lib/playback.types.d.ts +2 -3
  15. package/lib/playback.types.d.ts.map +1 -1
  16. package/lib/plugins/clappr-nerd-stats/NerdStats.d.ts +13 -10
  17. package/lib/plugins/clappr-nerd-stats/NerdStats.d.ts.map +1 -1
  18. package/lib/plugins/clappr-nerd-stats/NerdStats.js +171 -120
  19. package/lib/plugins/clappr-nerd-stats/formatter.d.ts +5 -0
  20. package/lib/plugins/clappr-nerd-stats/formatter.d.ts.map +1 -1
  21. package/lib/plugins/clappr-nerd-stats/formatter.js +56 -24
  22. package/lib/plugins/clappr-nerd-stats/speedtest/index.d.ts +2 -2
  23. package/lib/plugins/clappr-nerd-stats/speedtest/index.d.ts.map +1 -1
  24. package/lib/plugins/clappr-nerd-stats/speedtest/types.d.ts +1 -1
  25. package/lib/plugins/clappr-nerd-stats/speedtest/types.d.ts.map +1 -1
  26. package/lib/plugins/clappr-nerd-stats/types.d.ts +3 -0
  27. package/lib/plugins/clappr-nerd-stats/types.d.ts.map +1 -1
  28. package/lib/plugins/clappr-nerd-stats/utils.d.ts +7 -0
  29. package/lib/plugins/clappr-nerd-stats/utils.d.ts.map +1 -0
  30. package/lib/plugins/clappr-nerd-stats/utils.js +67 -0
  31. package/lib/plugins/clappr-stats/types.d.ts +0 -1
  32. package/lib/plugins/clappr-stats/types.d.ts.map +1 -1
  33. package/lib/plugins/clappr-stats/utils.d.ts +1 -1
  34. package/lib/plugins/clappr-stats/utils.d.ts.map +1 -1
  35. package/lib/plugins/clappr-stats/utils.js +0 -1
  36. package/lib/plugins/seek-time/SeekTime.d.ts +1 -1
  37. package/lib/plugins/seek-time/SeekTime.d.ts.map +1 -1
  38. package/lib/plugins/seek-time/SeekTime.js +3 -4
  39. package/package.json +1 -1
  40. package/src/playback/dash-playback/DashPlayback.ts +5 -7
  41. package/src/playback/hls-playback/HlsPlayback.ts +2 -4
  42. package/src/playback.types.ts +2 -3
  43. package/src/plugins/clappr-nerd-stats/NerdStats.ts +212 -139
  44. package/src/plugins/clappr-nerd-stats/formatter.ts +91 -47
  45. package/src/plugins/clappr-nerd-stats/speedtest/index.ts +2 -2
  46. package/src/plugins/clappr-nerd-stats/speedtest/types.ts +1 -1
  47. package/src/plugins/clappr-nerd-stats/types.ts +43 -3
  48. package/src/plugins/clappr-nerd-stats/utils.ts +75 -0
  49. package/src/plugins/clappr-stats/types.ts +39 -40
  50. package/src/plugins/clappr-stats/utils.ts +3 -4
  51. package/src/plugins/seek-time/SeekTime.ts +4 -5
  52. package/tsconfig.tsbuildinfo +1 -1
@@ -45,7 +45,6 @@ export default class DashPlayback extends BasePlayback {
45
45
  private _setupSrc;
46
46
  _startTimeUpdateTimer(): void;
47
47
  _stopTimeUpdateTimer(): void;
48
- getProgramDateTime(): number;
49
48
  getDuration(): TimeValue;
50
49
  getCurrentTime(): TimeValue;
51
50
  getStartTimeOffset(): TimeValue;
@@ -1 +1 @@
1
- {"version":3,"file":"DashPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/dash-playback/DashPlayback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DashPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/dash-playback/DashPlayback.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,6 @@ export default class DashPlayback extends BasePlayback {
35
35
  _playbackType = Playback.VOD;
36
36
  // #EXT-X-PLAYLIST-TYPE
37
37
  _playlistType = null;
38
- // #EXT-X-PROGRAM-DATE-TIME
39
38
  _programDateTime = 0;
40
39
  _dash = null;
41
40
  _extrapolatedWindowDuration = 0;
@@ -223,9 +222,9 @@ export default class DashPlayback extends BasePlayback {
223
222
  clearInterval(this._timeUpdateTimer);
224
223
  }
225
224
  }
226
- getProgramDateTime() {
227
- return this._programDateTime;
228
- }
225
+ // getProgramDateTime() {
226
+ // return this._programDateTime
227
+ // }
229
228
  // the duration on the video element itself should not be used
230
229
  // as this does not necesarily represent the duration of the stream
231
230
  // https://github.com/clappr/clappr/issues/668#issuecomment-157036678
@@ -344,7 +343,7 @@ export default class DashPlayback extends BasePlayback {
344
343
  const update = {
345
344
  current: this.getCurrentTime(),
346
345
  total: this.getDuration(),
347
- firstFragDateTime: this.getProgramDateTime(),
346
+ // firstFragDateTime: this.getProgramDateTime(), // TODO figure out if needed
348
347
  };
349
348
  const isSame = this._lastTimeUpdate &&
350
349
  update.current === this._lastTimeUpdate.current &&
@@ -80,7 +80,7 @@ export default class HlsPlayback extends BasePlayback {
80
80
  private _updateSettings;
81
81
  private _onHLSJSError;
82
82
  private _keyIsDenied;
83
- private _onTimeUpdate;
83
+ _onTimeUpdate(): void;
84
84
  _onDurationChange(): void;
85
85
  _onProgress(): void;
86
86
  load(url: string): void;
@@ -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":"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"}
@@ -528,7 +528,6 @@ export default class HlsPlayback extends BasePlayback {
528
528
  const update = {
529
529
  current: this.getCurrentTime(),
530
530
  total: this.getDuration(),
531
- firstFragDateTime: this.getProgramDateTime(),
532
531
  };
533
532
  const isSame = this._lastTimeUpdate &&
534
533
  update.current === this._lastTimeUpdate.current &&
@@ -39,10 +39,9 @@ export type TimeProgress = {
39
39
  /**
40
40
  * For the plugin development
41
41
  * @beta
42
+ * @deprecated Use TimePosition instead
42
43
  */
43
- export type TimeUpdate = TimePosition & {
44
- firstFragDateTime: number;
45
- };
44
+ export type TimeUpdate = TimePosition;
46
45
  /**
47
46
  * A level of quality within a media source/representation.
48
47
  * @public
@@ -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,WAAW,YAAY;IAC3B;;OAEG;IACH,OAAO,EAAE,SAAS,CAAA;IAClB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;CACjB;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;IAChB;;OAEG;IACH,OAAO,EAAE,SAAS,CAAA;IAClB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG;IACtC,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;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,kBAAkB;IACzB;;OAEG;IACH,sBAAsB,6BAA6B;IACnD;;OAEG;IACH,uBAAuB,+BAA+B;CACvD;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;IAE1B;;OAEG;IACH,EAAE,CAAC,EAAE;QACH,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;CACF"}
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,WAAW,YAAY;IAC3B;;OAEG;IACH,OAAO,EAAE,SAAS,CAAA;IAClB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;CACjB;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;IAChB;;OAEG;IACH,OAAO,EAAE,SAAS,CAAA;IAClB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,YAAY,CAAA;AAErC;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;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,kBAAkB;IACzB;;OAEG;IACH,sBAAsB,6BAA6B;IACnD;;OAEG;IACH,uBAAuB,+BAA+B;CACvD;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;IAE1B;;OAEG;IACH,EAAE,CAAC,EAAE;QACH,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;CACF"}
@@ -18,9 +18,9 @@ import '../../../assets/clappr-nerd-stats/clappr-nerd-stats.scss';
18
18
  */
19
19
  export declare class NerdStats extends UICorePlugin {
20
20
  private container;
21
- private customMetrics;
21
+ private speedtestMetrics;
22
22
  private metrics;
23
- private showing;
23
+ private open;
24
24
  private shortcut;
25
25
  private iconPosition;
26
26
  private static readonly buttonTemplate;
@@ -39,17 +39,17 @@ export declare class NerdStats extends UICorePlugin {
39
39
  * @internal
40
40
  */
41
41
  get attributes(): {
42
- 'data-clappr-nerd-stats': string;
43
42
  class: string;
44
43
  };
45
44
  /**
46
45
  * @internal
47
46
  */
48
47
  get events(): {
49
- 'click [data-show-stats-button]': string;
50
- 'click [data-close-button]': string;
51
- 'click [data-refresh-button]': string;
48
+ click: string;
49
+ 'click #nerd-stats-close': string;
50
+ 'click #nerd-stats-refresh': string;
52
51
  };
52
+ private clicked;
53
53
  private get statsBoxElem();
54
54
  private get statsBoxWidthThreshold();
55
55
  private get playerWidth();
@@ -60,6 +60,7 @@ export declare class NerdStats extends UICorePlugin {
60
60
  */
61
61
  bindEvents(): void;
62
62
  private onCoreReady;
63
+ private onActiveContainerChanged;
63
64
  /**
64
65
  * @internal
65
66
  */
@@ -68,16 +69,18 @@ export declare class NerdStats extends UICorePlugin {
68
69
  private show;
69
70
  private hide;
70
71
  private onPlayerResize;
71
- private addGeneralMetrics;
72
- private addCustomMetrics;
72
+ private updateResolution;
73
+ private estimateQuality;
73
74
  private updateMetrics;
75
+ private updateEstimatedQuality;
74
76
  private setStatsBoxSize;
75
77
  /**
76
78
  * @internal
77
79
  */
78
80
  render(): this;
79
- private addToBottomGear;
80
- private clearCustomMetrics;
81
+ private attach;
82
+ private clearSpeedtestMetrics;
81
83
  private refreshSpeedTest;
84
+ private formatPlaybackName;
82
85
  }
83
86
  //# sourceMappingURL=NerdStats.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NerdStats.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-nerd-stats/NerdStats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoB,IAAI,EAAa,MAAM,cAAc,CAAA;AAuB9E,OAAO,0DAA0D,CAAA;AA8FjE;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,SAAS,CAAyB;IAE1C,OAAO,CAAC,aAAa,CAIpB;IAED,OAAO,CAAC,OAAO,CAAwB;IAEvC,OAAO,CAAC,OAAO,CAAQ;IAEvB,OAAO,CAAC,QAAQ,CAAU;IAE1B,OAAO,CAAC,YAAY,CAAc;IAElC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAuB;IAE7D;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAEvD;;OAEG;IACH,IAAa,UAAU;;;MAKtB;IAED;;OAEG;IACH,IAAa,MAAM;;;;MAMlB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,sBAAsB,GAEjC;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,YAAY,GAEvB;gBAEW,IAAI,EAAE,IAAI;IAgBtB;;OAEG;IACM,UAAU;IAInB,OAAO,CAAC,WAAW;IAoBnB;;OAEG;IACM,OAAO;IAKhB,OAAO,CAAC,MAAM,CAMb;IAED,OAAO,CAAC,IAAI;IAeZ,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACM,MAAM;IASf,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,gBAAgB;CAWzB"}
1
+ {"version":3,"file":"NerdStats.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-nerd-stats/NerdStats.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGZ,IAAI,EAGL,MAAM,cAAc,CAAA;AAuBrB,OAAO,0DAA0D,CAAA;AAiCjE;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,SAAS,CAAyB;IAE1C,OAAO,CAAC,gBAAgB,CAIvB;IAED,OAAO,CAAC,OAAO,CAAwB;IAEvC,OAAO,CAAC,IAAI,CAAQ;IAEpB,OAAO,CAAC,QAAQ,CAAU;IAE1B,OAAO,CAAC,YAAY,CAAc;IAElC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAuB;IAE7D;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAEvD;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACH,IAAa,MAAM;;;;MAMlB;IAED,OAAO,CAAC,OAAO;IAKf,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,sBAAsB,GAEjC;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,YAAY,GAEvB;gBAEW,IAAI,EAAE,IAAI;IAgBtB;;OAEG;IACM,UAAU;IAUnB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,wBAAwB;IAiChC;;OAEG;IACM,OAAO;IAKhB,OAAO,CAAC,MAAM,CAMb;IAED,OAAO,CAAC,IAAI;IAgBZ,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,aAAa;IAmFrB,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACM,MAAM;IAcf,OAAO,CAAC,MAAM;IAiBd,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,kBAAkB;CAU3B"}
@@ -1,4 +1,4 @@
1
- import { UICorePlugin, Events, template } from '@clappr/core';
1
+ import { UICorePlugin, Events, template, Playback, } from '@clappr/core';
2
2
  import { reportError, trace } from '@gcorevideo/utils';
3
3
  import Mousetrap from 'mousetrap';
4
4
  import assert from 'assert';
@@ -12,72 +12,12 @@ import pluginHtml from '../../../assets/clappr-nerd-stats/clappr-nerd-stats.ejs'
12
12
  import buttonHtml from '../../../assets/clappr-nerd-stats/button.ejs';
13
13
  import statsIcon from '../../../assets/icons/new/stats.svg';
14
14
  import { GearEvents } from '../bottom-gear/BottomGear.js';
15
- const qualityClasses = [
16
- 'speedtest-quality-value-1',
17
- 'speedtest-quality-value-2',
18
- 'speedtest-quality-value-3',
19
- 'speedtest-quality-value-4',
20
- 'speedtest-quality-value-5',
21
- ];
22
- const getDownloadQuality = (speedValue) => {
23
- if (speedValue < 3) {
24
- return 1;
25
- }
26
- else if (speedValue < 7) {
27
- return 2;
28
- }
29
- else if (speedValue < 13) {
30
- return 3;
31
- }
32
- else if (speedValue < 25) {
33
- return 4;
34
- }
35
- else {
36
- return 5;
37
- }
38
- };
39
- const getPingQuality = (pingValue) => {
40
- if (pingValue < 20) {
41
- return 5;
42
- }
43
- else if (pingValue < 50) {
44
- return 4;
45
- }
46
- else if (pingValue < 100) {
47
- return 3;
48
- }
49
- else if (pingValue < 150) {
50
- return 2;
51
- }
52
- else {
53
- return 1;
54
- }
55
- };
56
- const generateQualityHtml = (quality) => {
57
- const html = [];
58
- const qualityClassName = qualityClasses[quality - 1];
59
- for (let i = 0; i < qualityClasses.length; i++) {
60
- if (i < quality) {
61
- html.push(`<div class="speedtest-quality-content-item ${qualityClassName}"></div>`);
62
- }
63
- else {
64
- html.push('<div class="speedtest-quality-content-item"></div>');
65
- }
66
- }
67
- return html.join('');
68
- };
69
- const drawSummary = (customMetrics, vodContainer, liveContainer) => {
70
- const { connectionSpeed, ping } = customMetrics;
71
- if (!connectionSpeed || !ping) {
72
- return;
73
- }
74
- const downloadQuality = getDownloadQuality(connectionSpeed);
75
- const pingQuality = getPingQuality(ping);
76
- const liveQuality = Math.min(downloadQuality, pingQuality);
77
- const vodHtml = generateQualityHtml(downloadQuality);
78
- const liveHtml = generateQualityHtml(liveQuality);
79
- vodContainer.html(vodHtml);
80
- liveContainer.html(liveHtml);
15
+ import { drawSummary, getPingQuality } from './utils.js';
16
+ import { getDownloadQuality } from './utils.js';
17
+ const PLAYBACK_NAMES = {
18
+ dash: 'DASH.js',
19
+ hls: 'HLS.js',
20
+ html5_video: 'Native',
81
21
  };
82
22
  const T = 'plugins.nerd_stats';
83
23
  /**
@@ -98,13 +38,13 @@ const T = 'plugins.nerd_stats';
98
38
  */
99
39
  export class NerdStats extends UICorePlugin {
100
40
  container = null;
101
- customMetrics = {
41
+ speedtestMetrics = {
102
42
  connectionSpeed: 0,
103
43
  ping: 0,
104
44
  jitter: 0,
105
45
  };
106
46
  metrics = newMetrics();
107
- showing = false;
47
+ open = false;
108
48
  shortcut;
109
49
  iconPosition;
110
50
  static buttonTemplate = template(buttonHtml);
@@ -126,7 +66,6 @@ export class NerdStats extends UICorePlugin {
126
66
  */
127
67
  get attributes() {
128
68
  return {
129
- 'data-clappr-nerd-stats': '',
130
69
  class: 'clappr-nerd-stats',
131
70
  };
132
71
  }
@@ -135,13 +74,17 @@ export class NerdStats extends UICorePlugin {
135
74
  */
136
75
  get events() {
137
76
  return {
138
- 'click [data-show-stats-button]': 'showOrHide',
139
- 'click [data-close-button]': 'hide',
140
- 'click [data-refresh-button]': 'refreshSpeedTest',
77
+ click: 'clicked',
78
+ 'click #nerd-stats-close': 'hide',
79
+ 'click #nerd-stats-refresh': 'refreshSpeedTest',
141
80
  };
142
81
  }
82
+ clicked(e) {
83
+ e.stopPropagation();
84
+ e.preventDefault();
85
+ }
143
86
  get statsBoxElem() {
144
- return '.clappr-nerd-stats[data-clappr-nerd-stats] .stats-box';
87
+ return this.$el.find('#nerd-stats-box');
145
88
  }
146
89
  get statsBoxWidthThreshold() {
147
90
  return 720;
@@ -160,7 +103,7 @@ export class NerdStats extends UICorePlugin {
160
103
  ];
161
104
  this.iconPosition =
162
105
  core.options.clapprNerdStats?.iconPosition ?? 'bottom-right';
163
- this.customMetrics = {
106
+ this.speedtestMetrics = {
164
107
  connectionSpeed: 0,
165
108
  ping: 0,
166
109
  jitter: 0,
@@ -172,20 +115,38 @@ export class NerdStats extends UICorePlugin {
172
115
  */
173
116
  bindEvents() {
174
117
  this.listenToOnce(this.core, Events.CORE_READY, this.onCoreReady);
118
+ this.listenTo(this.core, Events.CORE_RESIZE, this.onPlayerResize);
119
+ this.listenTo(this.core, Events.CORE_ACTIVE_CONTAINER_CHANGED, this.onActiveContainerChanged);
175
120
  }
176
121
  onCoreReady() {
177
122
  const bottomGear = this.core.getPlugin('bottom_gear');
178
123
  assert(bottomGear, 'bottom_gear plugin is required');
179
- this.listenTo(bottomGear, GearEvents.RENDERED, this.addToBottomGear);
124
+ this.listenTo(bottomGear, GearEvents.RENDERED, this.attach);
125
+ Mousetrap.bind(this.shortcut, this.toggle);
126
+ this.updateResolution();
127
+ }
128
+ onActiveContainerChanged() {
180
129
  this.container = this.core.activeContainer;
181
130
  const clapprStats = this.container?.getPlugin('clappr_stats');
182
131
  assert(clapprStats, 'clappr-stats not available. Please, include it as a plugin of your Clappr instance.\n' +
183
132
  'For more info, visit: https://github.com/clappr/clappr-stats.');
184
- Mousetrap.bind(this.shortcut, this.toggle);
185
- this.listenTo(this.core, Events.CORE_RESIZE, this.onPlayerResize);
186
133
  this.listenTo(clapprStats, ClapprStatsEvents.REPORT, this.updateMetrics);
134
+ this.listenTo(this.core.activeContainer, Events.CONTAINER_VOLUME, () => {
135
+ this.metrics.general.volume = this.container?.volume ?? 0;
136
+ this.$el
137
+ .find('#nerd-stats-volume')
138
+ .text(Formatter.formatVolume(this.metrics.general.volume));
139
+ });
140
+ this.listenTo(this.core.activePlayback, Events.PLAYBACK_LOADEDMETADATA, () => {
141
+ this.$el
142
+ .find('#nerd-stats-playback-type')
143
+ .text(this.formatPlaybackName(this.core.activePlayback.getPlaybackType()));
144
+ });
187
145
  this.updateMetrics(clapprStats.exportMetrics());
188
- this.render();
146
+ this.$el
147
+ .find('#nerd-stats-playback-name')
148
+ .text(PLAYBACK_NAMES[this.core.activePlayback.name] ?? '-');
149
+ this.core.activeContainer.$el.append(this.$el);
189
150
  }
190
151
  /**
191
152
  * @internal
@@ -195,7 +156,7 @@ export class NerdStats extends UICorePlugin {
195
156
  return super.destroy();
196
157
  }
197
158
  toggle = () => {
198
- if (this.showing) {
159
+ if (this.open) {
199
160
  this.hide();
200
161
  }
201
162
  else {
@@ -203,10 +164,11 @@ export class NerdStats extends UICorePlugin {
203
164
  }
204
165
  };
205
166
  show() {
206
- this.core.$el.find(this.statsBoxElem).show();
207
- this.showing = true;
167
+ this.$el.show();
168
+ this.statsBoxElem.scrollTop(this.statsBoxElem.scrollTop());
169
+ this.open = true;
208
170
  this.refreshSpeedTest();
209
- initSpeedTest(this.customMetrics)
171
+ initSpeedTest(this.speedtestMetrics)
210
172
  .then(() => {
211
173
  startSpeedtest();
212
174
  })
@@ -216,21 +178,28 @@ export class NerdStats extends UICorePlugin {
216
178
  });
217
179
  }
218
180
  hide() {
219
- this.core.$el.find(this.statsBoxElem).hide();
220
- this.showing = false;
181
+ this.$el.hide();
182
+ this.open = false;
221
183
  stopSpeedtest();
222
184
  }
223
185
  onPlayerResize() {
224
186
  this.setStatsBoxSize();
187
+ this.updateResolution();
225
188
  }
226
- addGeneralMetrics() {
227
- this.metrics.general = {
228
- displayResolution: this.playerWidth + 'x' + this.playerHeight,
229
- volume: this.container?.volume,
189
+ updateResolution() {
190
+ this.metrics.general.resolution = {
191
+ width: this.playerWidth,
192
+ height: this.playerHeight,
230
193
  };
231
- }
232
- addCustomMetrics() {
233
- this.metrics.custom = this.customMetrics;
194
+ this.$el
195
+ .find('#nerd-stats-resolution-width')
196
+ .text(this.metrics.general.resolution.width);
197
+ this.$el
198
+ .find('#nerd-stats-resolution-height')
199
+ .text(this.metrics.general.resolution.height);
200
+ }
201
+ estimateQuality() {
202
+ trace(`${T} estimateQuality`);
234
203
  const videoQualityNames = [
235
204
  'SD (480p)',
236
205
  'HD (720p)',
@@ -238,9 +207,9 @@ export class NerdStats extends UICorePlugin {
238
207
  '2K (1440p)',
239
208
  '4K (2160p)',
240
209
  ];
241
- const { connectionSpeed, ping } = this.customMetrics;
210
+ const { connectionSpeed, ping } = this.speedtestMetrics;
242
211
  if (!connectionSpeed || !ping) {
243
- const calculatingText = 'Calculating... Please wait.';
212
+ const calculatingText = this.core.i18n.t('stats.calculating');
244
213
  this.metrics.custom.vodQuality = calculatingText;
245
214
  this.metrics.custom.liveQuality = calculatingText;
246
215
  return;
@@ -255,44 +224,109 @@ export class NerdStats extends UICorePlugin {
255
224
  prefix + videoQualityNames[liveQuality - 1];
256
225
  }
257
226
  updateMetrics(metrics) {
227
+ trace(`${T} updateMetrics`, { custom: this.speedtestMetrics });
258
228
  Object.assign(this.metrics, metrics);
259
- this.addGeneralMetrics();
260
- this.addCustomMetrics();
261
- const scrollTop = this.core.$el.find(this.statsBoxElem).scrollTop();
262
- this.$el.html(NerdStats.template({
263
- metrics: Formatter.format(this.metrics),
264
- iconPosition: this.iconPosition,
265
- }));
229
+ this.updateEstimatedQuality();
230
+ this.$el
231
+ .find('#nerd-stats-current-time')
232
+ .text(Formatter.formatTime(this.metrics.extra.currentTime));
233
+ this.$el
234
+ .find('#nerd-stats-video-duration')
235
+ .text(Formatter.formatTime(this.metrics.extra.duration));
236
+ this.$el
237
+ .find('#nerd-stats-buffer-size')
238
+ .text(Formatter.formatTime(this.metrics.extra.buffersize));
239
+ this.$el
240
+ .find('#nerd-stats-bitrate-weighted-mean')
241
+ .text(Formatter.formatBitrate(this.metrics.extra.bitrateWeightedMean));
242
+ this.$el
243
+ .find('#nerd-stats-bitrate-most-used')
244
+ .text(Formatter.formatBitrate(this.metrics.extra.bitrateMostUsed));
245
+ this.$el
246
+ .find('#nerd-stats-watched-percentage')
247
+ .text(Formatter.formatPercentage(this.metrics.extra.watchedPercentage));
248
+ this.$el
249
+ .find('#nerd-stats-buffering-percentage')
250
+ .text(Formatter.formatPercentage(this.metrics.extra.bufferingPercentage));
251
+ this.$el
252
+ .find('#nerd-stats-startup-time')
253
+ .text(Formatter.formatTime(this.metrics.chrono.startup));
254
+ this.$el
255
+ .find('#nerd-stats-watch-time')
256
+ .text(Formatter.formatTime(this.metrics.chrono.watch));
257
+ this.$el
258
+ .find('#nerd-stats-pause-time')
259
+ .text(Formatter.formatTime(this.metrics.chrono.pause));
260
+ this.$el
261
+ .find('#nerd-stats-buffering-time')
262
+ .text(Formatter.formatTime(this.metrics.chrono.buffering));
263
+ this.$el
264
+ .find('#nerd-stats-session-time')
265
+ .text(Formatter.formatTime(this.metrics.chrono.session));
266
+ this.$el.find('#nerd-stats-plays').text(this.metrics.counters.play);
267
+ this.$el.find('#nerd-stats-pauses').text(this.metrics.counters.pause);
268
+ this.$el.find('#nerd-stats-errors').text(this.metrics.counters.error);
269
+ this.$el
270
+ .find('#nerd-stats-bufferings')
271
+ .text(this.metrics.counters.buffering);
272
+ this.$el
273
+ .find('#nerd-stats-decoded-frames')
274
+ .text(this.metrics.counters.decodedFrames);
275
+ this.$el
276
+ .find('#nerd-stats-dropped-frames')
277
+ .text(this.metrics.counters.droppedFrames);
278
+ this.$el
279
+ .find('#nerd-stats-bitrate-changes')
280
+ .text(this.metrics.counters.changeLevel);
281
+ this.$el.find('#nerd-stats-seeks').text(this.metrics.counters.seek);
282
+ this.$el
283
+ .find('#nerd-stats-fullscreen')
284
+ .text(this.metrics.counters.fullscreen);
285
+ this.$el.find('#nerd-stats-dvr-usage').text(this.metrics.counters.dvrUsage);
286
+ this.$el
287
+ .find('#nerd-stats-fps')
288
+ .text(Formatter.formatFps(this.metrics.counters.fps));
266
289
  this.setStatsBoxSize();
267
290
  drawSpeedTestResults();
268
- drawSummary(this.metrics?.custom, this.$el.find('.speedtest-quality-content[data-streaming-type="vod"]'), this.$el.find('.speedtest-quality-content[data-streaming-type="live"]'));
269
- this.core.$el.find(this.statsBoxElem).scrollTop(scrollTop);
270
- if (!this.showing) {
291
+ drawSummary(this.speedtestMetrics, this.$el.find('#nerd-stats-quality-vod'), this.$el.find('#nerd-stats-quality-live'));
292
+ if (!this.open) {
271
293
  this.hide();
272
294
  }
273
295
  }
296
+ updateEstimatedQuality() {
297
+ this.estimateQuality();
298
+ this.$el
299
+ .find('#nerd-stats-quality-vod-text')
300
+ .html(this.metrics.custom.vodQuality);
301
+ this.$el
302
+ .find('#nerd-stats-quality-live-text')
303
+ .html(this.metrics.custom.liveQuality);
304
+ }
274
305
  setStatsBoxSize() {
275
306
  if (this.playerWidth >= this.statsBoxWidthThreshold) {
276
- this.$el.find(this.statsBoxElem).addClass('wide');
277
- this.$el.find(this.statsBoxElem).removeClass('narrow');
307
+ this.statsBoxElem.addClass('wide');
308
+ this.statsBoxElem.removeClass('narrow');
278
309
  }
279
310
  else {
280
- this.$el.find(this.statsBoxElem).removeClass('wide');
281
- this.$el.find(this.statsBoxElem).addClass('narrow');
311
+ this.statsBoxElem.removeClass('wide');
312
+ this.statsBoxElem.addClass('narrow');
282
313
  }
283
314
  }
284
315
  /**
285
316
  * @internal
286
317
  */
287
318
  render() {
288
- trace(`${T} render`);
289
- // TODO append to the container
290
- this.core.$el.append(this.$el[0]);
291
- this.hide();
319
+ this.$el
320
+ .html(NerdStats.template({
321
+ metrics: Formatter.format(this.metrics ?? newMetrics()),
322
+ iconPosition: this.iconPosition,
323
+ i18n: this.core.i18n,
324
+ }))
325
+ .hide();
292
326
  return this;
293
327
  }
294
- addToBottomGear() {
295
- trace(`${T} addToBottomGear`);
328
+ attach() {
329
+ trace(`${T} attach`);
296
330
  const gear = this.core.getPlugin('bottom_gear');
297
331
  gear
298
332
  .addItem('nerd_stats')
@@ -305,11 +339,11 @@ export class NerdStats extends UICorePlugin {
305
339
  this.toggle();
306
340
  });
307
341
  }
308
- clearCustomMetrics() {
342
+ clearSpeedtestMetrics() {
309
343
  const clapprStats = this.container?.getPlugin('clappr_stats');
310
- this.customMetrics.connectionSpeed = 0;
311
- this.customMetrics.ping = 0;
312
- this.customMetrics.jitter = 0;
344
+ this.speedtestMetrics.connectionSpeed = 0;
345
+ this.speedtestMetrics.ping = 0;
346
+ this.speedtestMetrics.jitter = 0;
313
347
  if (clapprStats) {
314
348
  this.updateMetrics(clapprStats.exportMetrics());
315
349
  }
@@ -317,7 +351,7 @@ export class NerdStats extends UICorePlugin {
317
351
  refreshSpeedTest() {
318
352
  stopSpeedtest();
319
353
  setTimeout(() => {
320
- this.clearCustomMetrics();
354
+ this.clearSpeedtestMetrics();
321
355
  clearSpeedTestResults();
322
356
  drawSpeedTestResults();
323
357
  }, 200);
@@ -325,11 +359,28 @@ export class NerdStats extends UICorePlugin {
325
359
  startSpeedtest();
326
360
  }, 800);
327
361
  }
362
+ formatPlaybackName(playbackType) {
363
+ switch (playbackType) {
364
+ case Playback.VOD:
365
+ return this.core.i18n.t('vod');
366
+ case Playback.LIVE:
367
+ return this.core.i18n.t('live');
368
+ default:
369
+ return '-';
370
+ }
371
+ }
328
372
  }
329
373
  function newMetrics() {
330
374
  return {
331
375
  ...newBaseMetrics(),
332
- general: {},
376
+ general: {
377
+ displayResolution: '',
378
+ resolution: {
379
+ width: 0,
380
+ height: 0,
381
+ },
382
+ volume: 0,
383
+ },
333
384
  custom: {
334
385
  connectionSpeed: 0,
335
386
  ping: 0,
@@ -3,6 +3,11 @@ type MetricsValue = number | string;
3
3
  type Metrics = Partial<Record<MetricsKind, Partial<Record<MetricsType, MetricsValue>>>>;
4
4
  export default class Formatter {
5
5
  static format(metrics: Metrics): Metrics;
6
+ static formatVolume(volume: number): string;
7
+ static formatTime(time: number): string;
8
+ static formatFps(fps: number): string;
9
+ static formatPercentage(percentage: number): string;
10
+ static formatBitrate(bitrate: number): string;
6
11
  }
7
12
  export {};
8
13
  //# sourceMappingURL=formatter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-nerd-stats/formatter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAyExD,KAAK,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AACpC,KAAK,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAExF,MAAM,CAAC,OAAO,OAAO,SAAS;IAC5B,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;CA8BzC"}
1
+ {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-nerd-stats/formatter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAsFnE,KAAK,YAAY,GAAG,MAAM,GAAG,MAAM,CAAA;AACnC,KAAK,OAAO,GAAG,OAAO,CACpB,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,CAChE,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,SAAS;IAC5B,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAkCxC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI3C,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAMvC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIrC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAMnD,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAK9C"}