@gcorevideo/player 2.22.17 → 2.22.20

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 (120) hide show
  1. package/assets/audio-selector/track-selector.ejs +3 -3
  2. package/assets/bottom-gear/bottomgear.ejs +3 -3
  3. package/assets/clappr-nerd-stats/clappr-nerd-stats.ejs +76 -78
  4. package/assets/clappr-nerd-stats/clappr-nerd-stats.scss +10 -7
  5. package/assets/dvr-controls/dvr_controls.scss +0 -12
  6. package/dist/core.js +5 -7
  7. package/dist/index.css +1245 -1251
  8. package/dist/index.js +425 -261
  9. package/dist/player.d.ts +121 -108
  10. package/dist/plugins/index.css +577 -583
  11. package/dist/plugins/index.js +355 -187
  12. package/docs/api/player.bitratetrackrecord.md +20 -0
  13. package/docs/api/player.clapprstats.exportmetrics.md +2 -2
  14. package/docs/api/player.clapprstats.md +0 -4
  15. package/docs/api/player.clapprstatschronograph.md +115 -0
  16. package/docs/api/player.clapprstatscounter.md +211 -0
  17. package/docs/api/player.clapprstatsevents.md +51 -0
  18. package/docs/api/player.clapprstatsmetrics.md +52 -0
  19. package/docs/api/player.clipspluginsettings.md +1 -1
  20. package/docs/api/player.md +57 -2
  21. package/docs/api/player.nerdstats.md +3 -3
  22. package/docs/api/player.playerconfig.md +1 -1
  23. package/docs/api/player.playerconfig.playbacktype.md +6 -1
  24. package/docs/api/player.timeupdate.md +6 -3
  25. package/lib/playback/dash-playback/DashPlayback.d.ts +0 -1
  26. package/lib/playback/dash-playback/DashPlayback.d.ts.map +1 -1
  27. package/lib/playback/dash-playback/DashPlayback.js +4 -5
  28. package/lib/playback/hls-playback/HlsPlayback.d.ts +1 -1
  29. package/lib/playback/hls-playback/HlsPlayback.d.ts.map +1 -1
  30. package/lib/playback/hls-playback/HlsPlayback.js +0 -1
  31. package/lib/playback.types.d.ts +2 -3
  32. package/lib/playback.types.d.ts.map +1 -1
  33. package/lib/plugins/audio-selector/AudioSelector.d.ts +1 -1
  34. package/lib/plugins/audio-selector/AudioSelector.d.ts.map +1 -1
  35. package/lib/plugins/audio-selector/AudioSelector.js +15 -8
  36. package/lib/plugins/bottom-gear/BottomGear.d.ts +1 -1
  37. package/lib/plugins/bottom-gear/BottomGear.js +2 -2
  38. package/lib/plugins/clappr-nerd-stats/NerdStats.d.ts +17 -14
  39. package/lib/plugins/clappr-nerd-stats/NerdStats.d.ts.map +1 -1
  40. package/lib/plugins/clappr-nerd-stats/NerdStats.js +175 -124
  41. package/lib/plugins/clappr-nerd-stats/formatter.d.ts +5 -0
  42. package/lib/plugins/clappr-nerd-stats/formatter.d.ts.map +1 -1
  43. package/lib/plugins/clappr-nerd-stats/formatter.js +56 -24
  44. package/lib/plugins/clappr-nerd-stats/speedtest/index.d.ts +2 -2
  45. package/lib/plugins/clappr-nerd-stats/speedtest/index.d.ts.map +1 -1
  46. package/lib/plugins/clappr-nerd-stats/speedtest/types.d.ts +1 -1
  47. package/lib/plugins/clappr-nerd-stats/speedtest/types.d.ts.map +1 -1
  48. package/lib/plugins/clappr-nerd-stats/types.d.ts +3 -0
  49. package/lib/plugins/clappr-nerd-stats/types.d.ts.map +1 -1
  50. package/lib/plugins/clappr-nerd-stats/utils.d.ts +7 -0
  51. package/lib/plugins/clappr-nerd-stats/utils.d.ts.map +1 -0
  52. package/lib/plugins/clappr-nerd-stats/utils.js +67 -0
  53. package/lib/plugins/clappr-stats/ClapprStats.d.ts +5 -2
  54. package/lib/plugins/clappr-stats/ClapprStats.d.ts.map +1 -1
  55. package/lib/plugins/clappr-stats/ClapprStats.js +31 -33
  56. package/lib/plugins/clappr-stats/types.d.ts +21 -22
  57. package/lib/plugins/clappr-stats/types.d.ts.map +1 -1
  58. package/lib/plugins/clappr-stats/types.js +22 -22
  59. package/lib/plugins/clappr-stats/utils.d.ts +2 -2
  60. package/lib/plugins/clappr-stats/utils.d.ts.map +1 -1
  61. package/lib/plugins/clappr-stats/utils.js +0 -1
  62. package/lib/plugins/click-to-pause/ClickToPause.js +1 -1
  63. package/lib/plugins/clips/Clips.d.ts +1 -1
  64. package/lib/plugins/dvr-controls/DvrControls.d.ts +6 -2
  65. package/lib/plugins/dvr-controls/DvrControls.d.ts.map +1 -1
  66. package/lib/plugins/dvr-controls/DvrControls.js +39 -27
  67. package/lib/plugins/media-control/MediaControl.d.ts +6 -2
  68. package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
  69. package/lib/plugins/media-control/MediaControl.js +20 -9
  70. package/lib/plugins/picture-in-picture/PictureInPicture.js +1 -1
  71. package/lib/plugins/seek-time/SeekTime.d.ts +1 -1
  72. package/lib/plugins/seek-time/SeekTime.d.ts.map +1 -1
  73. package/lib/plugins/seek-time/SeekTime.js +3 -4
  74. package/lib/plugins/subtitles/ClosedCaptions.js +1 -1
  75. package/lib/plugins/vast-ads/VastAds.js +1 -1
  76. package/lib/plugins/vast-ads/rollmanager.js +1 -1
  77. package/lib/testUtils.d.ts.map +1 -1
  78. package/lib/testUtils.js +7 -4
  79. package/lib/types.d.ts +1 -1
  80. package/package.json +3 -3
  81. package/src/playback/__tests__/HTML5Video.test.ts +2 -2
  82. package/src/playback/dash-playback/DashPlayback.ts +5 -7
  83. package/src/playback/hls-playback/HlsPlayback.ts +2 -4
  84. package/src/playback.types.ts +2 -3
  85. package/src/plugins/audio-selector/AudioSelector.ts +14 -7
  86. package/src/plugins/audio-selector/__tests__/AudioSelector.test.ts +8 -8
  87. package/src/plugins/audio-selector/__tests__/__snapshots__/AudioSelector.test.ts.snap +15 -15
  88. package/src/plugins/bottom-gear/BottomGear.ts +2 -2
  89. package/src/plugins/bottom-gear/__tests__/BottomGear.test.ts +8 -5
  90. package/src/plugins/bottom-gear/__tests__/__snapshots__/BottomGear.test.ts.snap +3 -3
  91. package/src/plugins/clappr-nerd-stats/NerdStats.ts +216 -143
  92. package/src/plugins/clappr-nerd-stats/formatter.ts +91 -47
  93. package/src/plugins/clappr-nerd-stats/speedtest/index.ts +2 -2
  94. package/src/plugins/clappr-nerd-stats/speedtest/types.ts +1 -1
  95. package/src/plugins/clappr-nerd-stats/types.ts +43 -3
  96. package/src/plugins/clappr-nerd-stats/utils.ts +75 -0
  97. package/src/plugins/clappr-stats/ClapprStats.ts +41 -40
  98. package/src/plugins/clappr-stats/__tests__/ClapprStats.test.ts +12 -12
  99. package/src/plugins/clappr-stats/types.ts +43 -44
  100. package/src/plugins/clappr-stats/utils.ts +4 -5
  101. package/src/plugins/click-to-pause/ClickToPause.ts +1 -1
  102. package/src/plugins/clips/Clips.ts +1 -1
  103. package/src/plugins/clips/__tests__/Clips.test.ts +1 -1
  104. package/src/plugins/clips/__tests__/__snapshots__/Clips.test.ts.snap +1 -1
  105. package/src/plugins/dvr-controls/DvrControls.ts +51 -37
  106. package/src/plugins/dvr-controls/__tests__/DvrControls.test.ts +84 -26
  107. package/src/plugins/dvr-controls/__tests__/__snapshots__/DvrControls.test.ts.snap +0 -12
  108. package/src/plugins/media-control/MediaControl.ts +21 -9
  109. package/src/plugins/media-control/__tests__/MediaControl.test.ts +8 -5
  110. package/src/plugins/media-control/__tests__/__snapshots__/MediaControl.test.ts.snap +20 -20
  111. package/src/plugins/picture-in-picture/PictureInPicture.ts +1 -1
  112. package/src/plugins/seek-time/SeekTime.ts +4 -5
  113. package/src/plugins/subtitles/ClosedCaptions.ts +1 -1
  114. package/src/plugins/subtitles/__tests__/ClosedCaptions.test.ts +1 -1
  115. package/src/plugins/vast-ads/VastAds.ts +1 -1
  116. package/src/plugins/vast-ads/rollmanager.ts +1 -1
  117. package/src/testUtils.ts +11 -5
  118. package/src/types.ts +1 -1
  119. package/temp/player.api.json +630 -12
  120. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,67 @@
1
+ const qualityClasses = [
2
+ 'speedtest-quality-value-1',
3
+ 'speedtest-quality-value-2',
4
+ 'speedtest-quality-value-3',
5
+ 'speedtest-quality-value-4',
6
+ 'speedtest-quality-value-5',
7
+ ];
8
+ export const getDownloadQuality = (speedValue) => {
9
+ if (speedValue < 3) {
10
+ return 1;
11
+ }
12
+ else if (speedValue < 7) {
13
+ return 2;
14
+ }
15
+ else if (speedValue < 13) {
16
+ return 3;
17
+ }
18
+ else if (speedValue < 25) {
19
+ return 4;
20
+ }
21
+ else {
22
+ return 5;
23
+ }
24
+ };
25
+ export const getPingQuality = (pingValue) => {
26
+ if (pingValue < 20) {
27
+ return 5;
28
+ }
29
+ else if (pingValue < 50) {
30
+ return 4;
31
+ }
32
+ else if (pingValue < 100) {
33
+ return 3;
34
+ }
35
+ else if (pingValue < 150) {
36
+ return 2;
37
+ }
38
+ else {
39
+ return 1;
40
+ }
41
+ };
42
+ export const generateQualityHtml = (quality) => {
43
+ const html = [];
44
+ const qualityClassName = qualityClasses[quality - 1];
45
+ for (let i = 0; i < qualityClasses.length; i++) {
46
+ if (i < quality) {
47
+ html.push(`<div class="speedtest-quality-content-item ${qualityClassName}"></div>`);
48
+ }
49
+ else {
50
+ html.push('<div class="speedtest-quality-content-item"></div>');
51
+ }
52
+ }
53
+ return html.join('');
54
+ };
55
+ export const drawSummary = (customMetrics, vodContainer, liveContainer) => {
56
+ const { connectionSpeed, ping } = customMetrics;
57
+ if (!connectionSpeed || !ping) {
58
+ return;
59
+ }
60
+ const downloadQuality = getDownloadQuality(connectionSpeed);
61
+ const pingQuality = getPingQuality(ping);
62
+ const liveQuality = Math.min(downloadQuality, pingQuality);
63
+ const vodHtml = generateQualityHtml(downloadQuality);
64
+ const liveHtml = generateQualityHtml(liveQuality);
65
+ vodContainer.html(vodHtml);
66
+ liveContainer.html(liveHtml);
67
+ };
@@ -1,5 +1,6 @@
1
1
  import { Container, ContainerPlugin } from '@clappr/core';
2
- import type { Metrics } from './types.js';
2
+ import type { ClapprStatsMetrics } from './types.js';
3
+ export * from './types.js';
3
4
  export type ClapprStatsSettings = {
4
5
  /**
5
6
  * The interval in milliseconds of periodic measurements.
@@ -13,6 +14,8 @@ export type ClapprStatsSettings = {
13
14
  * @remarks
14
15
  * This plugin does not render anything and is supposed to be extended or used together with other plugins that actually render something.
15
16
  *
17
+ * @see {@link NerdStats} - a plugin that visualises the playback metrics
18
+ *
16
19
  * Configuration options - {@link ClapprStatsSettings}
17
20
  *
18
21
  * Events - {@link ClapprStatsEvents}
@@ -52,7 +55,7 @@ export declare class ClapprStats extends ContainerPlugin {
52
55
  * Returns the collected metrics.
53
56
  * @returns Measurements collected so far
54
57
  */
55
- exportMetrics(): Metrics;
58
+ exportMetrics(): ClapprStatsMetrics;
56
59
  private onBitrate;
57
60
  private stopReporting;
58
61
  private startTimers;
@@ -1 +1 @@
1
- {"version":3,"file":"ClapprStats.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-stats/ClapprStats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAwB,MAAM,cAAc,CAAA;AAU/E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAIzC,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED;;;;;;;;;GASG;AACH,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,OAAO,CAAuB;IAEtC,OAAO,CAAC,sBAAsB,CAAI;IAElC,OAAO,CAAC,OAAO,CAAwB;IAEvC,OAAO,CAAC,MAAM,CAMb;IAED,OAAO,CAAC,OAAO,CAAQ;IAEvB;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,CAAC,GAAG;IASX,OAAO,CAAC,GAAG;IAQX,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,IAAI;gBAKA,SAAS,EAAE,SAAS;IAKhC;;OAEG;IACM,UAAU;IAmDnB;;OAEG;IACM,OAAO;IAKhB;;;OAGG;IACH,aAAa;IAIb,OAAO,CAAC,SAAS;IAkBjB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,OAAO;IAgBf,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,YAAY;IA8BpB,OAAO,CAAC,6BAA6B;IAOrC,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,QAAQ;IAgBhB,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,aAAa;CA0BtB"}
1
+ {"version":3,"file":"ClapprStats.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-stats/ClapprStats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAwB,MAAM,cAAc,CAAA;AAU/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAMpD,cAAc,YAAY,CAAA;AAG1B,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,OAAO,CAAuB;IAEtC,OAAO,CAAC,sBAAsB,CAAI;IAElC,OAAO,CAAC,OAAO,CAAmC;IAElD,OAAO,CAAC,MAAM,CAMb;IAED,OAAO,CAAC,OAAO,CAAQ;IAEvB;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,CAAC,GAAG;IASX,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,IAAI;gBAIA,SAAS,EAAE,SAAS;IAKhC;;OAEG;IACM,UAAU;IAmDnB;;OAEG;IACM,OAAO;IAKhB;;;OAGG;IACH,aAAa;IAIb,OAAO,CAAC,SAAS;IAkBjB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,OAAO;IAgBf,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,YAAY;IA8BpB,OAAO,CAAC,6BAA6B;IAOrC,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,QAAQ;IAgBhB,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,aAAa;CA0BtB"}
@@ -1,6 +1,7 @@
1
1
  import { ContainerPlugin, Events as CoreEvents } from '@clappr/core';
2
2
  import { CLAPPR_VERSION } from '../../build.js';
3
- import { ClapprStatsEvents, Chronograph, Counter } from './types.js';
3
+ import { ClapprStatsEvents, ClapprStatsChronograph, ClapprStatsCounter, } from './types.js';
4
+ export * from './types.js';
4
5
  import { newMetrics } from './utils.js';
5
6
  /**
6
7
  * `PLUGIN` that measures data about playback, which can be useful for analyzing performance and UX.
@@ -8,6 +9,8 @@ import { newMetrics } from './utils.js';
8
9
  * @remarks
9
10
  * This plugin does not render anything and is supposed to be extended or used together with other plugins that actually render something.
10
11
  *
12
+ * @see {@link NerdStats} - a plugin that visualises the playback metrics
13
+ *
11
14
  * Configuration options - {@link ClapprStatsSettings}
12
15
  *
13
16
  * Events - {@link ClapprStatsEvents}
@@ -17,11 +20,11 @@ export class ClapprStats extends ContainerPlugin {
17
20
  lastDecodedFramesCount = 0;
18
21
  metrics = newMetrics();
19
22
  timers = {
20
- [Chronograph.Startup]: 0,
21
- [Chronograph.Watch]: 0,
22
- [Chronograph.Pause]: 0,
23
- [Chronograph.Buffering]: 0,
24
- [Chronograph.Session]: 0,
23
+ [ClapprStatsChronograph.Startup]: 0,
24
+ [ClapprStatsChronograph.Watch]: 0,
25
+ [ClapprStatsChronograph.Pause]: 0,
26
+ [ClapprStatsChronograph.Buffering]: 0,
27
+ [ClapprStatsChronograph.Session]: 0,
25
28
  };
26
29
  runEach;
27
30
  /**
@@ -51,15 +54,10 @@ export class ClapprStats extends ContainerPlugin {
51
54
  inc(counter) {
52
55
  this.metrics.counters[counter] += 1;
53
56
  }
54
- // _timerHasStarted(timer) {
55
- // return this[`_start${timer}`] !== undefined;
56
- // }
57
57
  start(timer) {
58
- // this[`_start${timer}`] = this._now();
59
58
  this.timers[timer] = this.now();
60
59
  }
61
60
  stop(timer) {
62
- // this._metrics.timers[timer] += this._now() - this[`_start${timer}`];
63
61
  this.metrics.chrono[timer] += this.now() - this.timers[timer];
64
62
  }
65
63
  constructor(container) {
@@ -79,10 +77,10 @@ export class ClapprStats extends ContainerPlugin {
79
77
  this.listenTo(this.container, CoreEvents.CONTAINER_PAUSE, this.onPause);
80
78
  this.listenToOnce(this.container, CoreEvents.CONTAINER_STATE_BUFFERING, this.onBuffering);
81
79
  this.listenTo(this.container, CoreEvents.CONTAINER_SEEK, this.onSeek);
82
- this.listenTo(this.container, CoreEvents.CONTAINER_ERROR, () => this.inc(Counter.Error));
83
- this.listenTo(this.container, CoreEvents.CONTAINER_FULLSCREEN, () => this.inc(Counter.Fullscreen));
80
+ this.listenTo(this.container, CoreEvents.CONTAINER_ERROR, () => this.inc(ClapprStatsCounter.Error));
81
+ this.listenTo(this.container, CoreEvents.CONTAINER_FULLSCREEN, () => this.inc(ClapprStatsCounter.Fullscreen));
84
82
  this.listenTo(this.container, CoreEvents.CONTAINER_PLAYBACKDVRSTATECHANGED, (dvrInUse) => {
85
- dvrInUse && this.inc(Counter.DvrUsage);
83
+ dvrInUse && this.inc(ClapprStatsCounter.DvrUsage);
86
84
  });
87
85
  this.listenTo(this.container.playback, CoreEvents.PLAYBACK_PROGRESS, this.onProgress);
88
86
  this.listenTo(this.container.playback, CoreEvents.PLAYBACK_TIMEUPDATE, this.onTimeUpdate);
@@ -110,7 +108,7 @@ export class ClapprStats extends ContainerPlugin {
110
108
  last.time = now - last.start;
111
109
  }
112
110
  this.metrics.extra.bitratesHistory.push({ start: this.now(), bitrate });
113
- this.inc(Counter.ChangeLevel);
111
+ this.inc(ClapprStatsCounter.ChangeLevel);
114
112
  }
115
113
  stopReporting() {
116
114
  this.buildReport();
@@ -121,31 +119,31 @@ export class ClapprStats extends ContainerPlugin {
121
119
  }
122
120
  startTimers() {
123
121
  this.timerId = setInterval(this.buildReport.bind(this), this.runEach);
124
- this.start(Chronograph.Session);
125
- this.start(Chronograph.Startup);
122
+ this.start(ClapprStatsChronograph.Session);
123
+ this.start(ClapprStatsChronograph.Startup);
126
124
  }
127
125
  onFirstPlaying() {
128
126
  this.listenTo(this.container, CoreEvents.CONTAINER_TIMEUPDATE, this.onContainerUpdateWhilePlaying);
129
- this.start(Chronograph.Watch);
130
- this.stop(Chronograph.Startup);
127
+ this.start(ClapprStatsChronograph.Watch);
128
+ this.stop(ClapprStatsChronograph.Startup);
131
129
  }
132
130
  playAfterPause() {
133
131
  this.listenTo(this.container, CoreEvents.CONTAINER_TIMEUPDATE, this.onContainerUpdateWhilePlaying);
134
- this.stop(Chronograph.Pause);
135
- this.start(Chronograph.Watch);
132
+ this.stop(ClapprStatsChronograph.Pause);
133
+ this.start(ClapprStatsChronograph.Watch);
136
134
  }
137
135
  onPlay() {
138
- this.inc(Counter.Play);
136
+ this.inc(ClapprStatsCounter.Play);
139
137
  }
140
138
  onPause() {
141
- this.stop(Chronograph.Watch);
142
- this.start(Chronograph.Pause);
143
- this.inc(Counter.Pause);
139
+ this.stop(ClapprStatsChronograph.Watch);
140
+ this.start(ClapprStatsChronograph.Pause);
141
+ this.inc(ClapprStatsCounter.Pause);
144
142
  this.listenToOnce(this.container, CoreEvents.CONTAINER_PLAY, this.playAfterPause);
145
143
  this.stopListening(this.container, CoreEvents.CONTAINER_TIMEUPDATE, this.onContainerUpdateWhilePlaying);
146
144
  }
147
145
  onSeek(e) {
148
- this.inc(Counter.Seek);
146
+ this.inc(ClapprStatsCounter.Seek);
149
147
  this.metrics.extra.watchHistory.push([e * 1000, e * 1000]);
150
148
  }
151
149
  onTimeUpdate(e) {
@@ -170,17 +168,17 @@ export class ClapprStats extends ContainerPlugin {
170
168
  }
171
169
  onContainerUpdateWhilePlaying() {
172
170
  if (this.container.playback.isPlaying()) {
173
- this.stop(Chronograph.Watch);
174
- this.start(Chronograph.Watch);
171
+ this.stop(ClapprStatsChronograph.Watch);
172
+ this.start(ClapprStatsChronograph.Watch);
175
173
  }
176
174
  }
177
175
  onBuffering() {
178
- this.inc(Counter.Buffering);
179
- this.start(Chronograph.Buffering);
176
+ this.inc(ClapprStatsCounter.Buffering);
177
+ this.start(ClapprStatsChronograph.Buffering);
180
178
  this.listenToOnce(this.container, CoreEvents.CONTAINER_STATE_BUFFERFULL, this.onBufferfull);
181
179
  }
182
180
  onBufferfull() {
183
- this.stop(Chronograph.Buffering);
181
+ this.stop(ClapprStatsChronograph.Buffering);
184
182
  this.listenToOnce(this.container, CoreEvents.CONTAINER_STATE_BUFFERING, this.onBuffering);
185
183
  }
186
184
  onProgress(progress) {
@@ -192,8 +190,8 @@ export class ClapprStats extends ContainerPlugin {
192
190
  // this.trigger(ClapprStatsEvents.PERCENTAGE, currentPercentage);
193
191
  }
194
192
  buildReport() {
195
- this.stop(Chronograph.Session);
196
- this.start(Chronograph.Session);
193
+ this.stop(ClapprStatsChronograph.Session);
194
+ this.start(ClapprStatsChronograph.Session);
197
195
  this.metrics.extra.playbackName = this.playbackName;
198
196
  this.metrics.extra.playbackType = this.playbackType;
199
197
  this.calcBitrates();
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @beta
3
3
  */
4
- export declare enum Chronograph {
4
+ export declare enum ClapprStatsChronograph {
5
5
  Startup = "startup",
6
6
  Watch = "watch",
7
7
  Pause = "pause",
@@ -11,7 +11,7 @@ export declare enum Chronograph {
11
11
  /**
12
12
  * @beta
13
13
  */
14
- export declare enum Counter {
14
+ export declare enum ClapprStatsCounter {
15
15
  Play = "play",
16
16
  Pause = "pause",
17
17
  Error = "error",
@@ -27,7 +27,7 @@ export declare enum Counter {
27
27
  /**
28
28
  * @beta
29
29
  */
30
- export type Metrics = {
30
+ export type ClapprStatsMetrics = {
31
31
  /**
32
32
  * Events count counters
33
33
  */
@@ -35,17 +35,17 @@ export type Metrics = {
35
35
  /**
36
36
  *
37
37
  */
38
- [Counter.Play]: number;
39
- [Counter.Pause]: number;
40
- [Counter.Error]: number;
41
- [Counter.Buffering]: number;
42
- [Counter.DecodedFrames]: number;
43
- [Counter.DroppedFrames]: number;
44
- [Counter.Fps]: number;
45
- [Counter.ChangeLevel]: number;
46
- [Counter.Seek]: number;
47
- [Counter.Fullscreen]: number;
48
- [Counter.DvrUsage]: number;
38
+ [ClapprStatsCounter.Play]: number;
39
+ [ClapprStatsCounter.Pause]: number;
40
+ [ClapprStatsCounter.Error]: number;
41
+ [ClapprStatsCounter.Buffering]: number;
42
+ [ClapprStatsCounter.DecodedFrames]: number;
43
+ [ClapprStatsCounter.DroppedFrames]: number;
44
+ [ClapprStatsCounter.Fps]: number;
45
+ [ClapprStatsCounter.ChangeLevel]: number;
46
+ [ClapprStatsCounter.Seek]: number;
47
+ [ClapprStatsCounter.Fullscreen]: number;
48
+ [ClapprStatsCounter.DvrUsage]: number;
49
49
  };
50
50
  /**
51
51
  * Time measurements - accumulated duration of time-based activities
@@ -54,22 +54,22 @@ export type Metrics = {
54
54
  /**
55
55
  * Time spent in the startup phase
56
56
  */
57
- [Chronograph.Startup]: number;
57
+ [ClapprStatsChronograph.Startup]: number;
58
58
  /**
59
59
  * Total time spent in the watch phase
60
60
  */
61
- [Chronograph.Watch]: number;
61
+ [ClapprStatsChronograph.Watch]: number;
62
62
  /**
63
63
  *
64
64
  */
65
- [Chronograph.Pause]: number;
66
- [Chronograph.Buffering]: number;
67
- [Chronograph.Session]: number;
65
+ [ClapprStatsChronograph.Pause]: number;
66
+ [ClapprStatsChronograph.Buffering]: number;
67
+ [ClapprStatsChronograph.Session]: number;
68
68
  };
69
69
  extra: {
70
70
  playbackName: string;
71
71
  playbackType: string;
72
- bitratesHistory: BitrateTrackRecord[];
72
+ bitratesHistory: ClapprStatsBitrateTrack[];
73
73
  bitrateWeightedMean: number;
74
74
  bitrateMostUsed: number;
75
75
  buffersize: number;
@@ -80,12 +80,11 @@ export type Metrics = {
80
80
  duration: number;
81
81
  currentTime: number;
82
82
  };
83
- custom: Record<string, unknown>;
84
83
  };
85
84
  /**
86
85
  * @beta
87
86
  */
88
- export type BitrateTrackRecord = {
87
+ export type ClapprStatsBitrateTrack = {
89
88
  start: number;
90
89
  end?: number;
91
90
  time?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-stats/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,OAAO,YAAY;CAEpB;AAED;;GAEG;AACH,oBAAY,OAAO;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,GAAG,QAAQ;IACX,WAAW,gBAAgB;IAC3B,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,QAAQ,aAAa;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB;;OAEG;IACH,QAAQ,EAAE;QACR;;WAEG;QACH,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QACxB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QACxB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAC5B,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAChC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAChC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QACtB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC7B,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF;;OAEG;IACH,MAAM,EAAE;QACN;;WAEG;QACH,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC9B;;WAEG;QACH,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAC5B;;WAEG;QACH,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAC5B,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAChC,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;KAE/B,CAAC;IACF,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,kBAAkB,EAAE,CAAC;QACtC,mBAAmB,EAAE,MAAM,CAAC;QAC5B,eAAe,EAAE,MAAM,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACtC,iBAAiB,EAAE,MAAM,CAAC;QAC1B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAA;AAED;;GAEG;AACH,oBAAY,iBAAiB;IAC3B;;OAEG;IACH,MAAM,wBAAwB;CAK/B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-stats/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,sBAAsB;IAChC,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,OAAO,YAAY;CAEpB;AAED;;GAEG;AACH,oBAAY,kBAAkB;IAC5B,IAAI,SAAS;IACb,KAAK,UAAU;IACf,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,GAAG,QAAQ;IACX,WAAW,gBAAgB;IAC3B,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,QAAQ,aAAa;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;OAEG;IACH,QAAQ,EAAE;QACR;;WAEG;QACH,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;QACjC,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;QAClC,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;QAClC,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;QACtC,CAAC,kBAAkB,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;QAC1C,CAAC,kBAAkB,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;QAC1C,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;QAChC,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;QACxC,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;QACjC,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;QACvC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KACtC,CAAA;IACD;;OAEG;IACH,MAAM,EAAE;QACN;;WAEG;QACH,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;QACxC;;WAEG;QACH,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;QACtC;;WAEG;QACH,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;QACtC,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;QAC1C,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAEzC,CAAA;IACD,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAA;QACpB,YAAY,EAAE,MAAM,CAAA;QACpB,eAAe,EAAE,uBAAuB,EAAE,CAAA;QAC1C,mBAAmB,EAAE,MAAM,CAAA;QAC3B,eAAe,EAAE,MAAM,CAAA;QACvB,UAAU,EAAE,MAAM,CAAA;QAClB,YAAY,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;QACrC,iBAAiB,EAAE,MAAM,CAAA;QACzB,mBAAmB,EAAE,MAAM,CAAA;QAC3B,SAAS,EAAE,MAAM,CAAA;QACjB,QAAQ,EAAE,MAAM,CAAA;QAChB,WAAW,EAAE,MAAM,CAAA;KACpB,CAAA;CACF,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED;;GAEG;AACH,oBAAY,iBAAiB;IAC3B;;OAEG;IACH,MAAM,wBAAwB;CAK/B"}
@@ -1,32 +1,32 @@
1
1
  /**
2
2
  * @beta
3
3
  */
4
- export var Chronograph;
5
- (function (Chronograph) {
6
- Chronograph["Startup"] = "startup";
7
- Chronograph["Watch"] = "watch";
8
- Chronograph["Pause"] = "pause";
9
- Chronograph["Buffering"] = "buffering";
10
- Chronograph["Session"] = "session";
4
+ export var ClapprStatsChronograph;
5
+ (function (ClapprStatsChronograph) {
6
+ ClapprStatsChronograph["Startup"] = "startup";
7
+ ClapprStatsChronograph["Watch"] = "watch";
8
+ ClapprStatsChronograph["Pause"] = "pause";
9
+ ClapprStatsChronograph["Buffering"] = "buffering";
10
+ ClapprStatsChronograph["Session"] = "session";
11
11
  // Latency = 'latency',
12
- })(Chronograph || (Chronograph = {}));
12
+ })(ClapprStatsChronograph || (ClapprStatsChronograph = {}));
13
13
  /**
14
14
  * @beta
15
15
  */
16
- export var Counter;
17
- (function (Counter) {
18
- Counter["Play"] = "play";
19
- Counter["Pause"] = "pause";
20
- Counter["Error"] = "error";
21
- Counter["Buffering"] = "buffering";
22
- Counter["DecodedFrames"] = "decodedFrames";
23
- Counter["DroppedFrames"] = "droppedFrames";
24
- Counter["Fps"] = "fps";
25
- Counter["ChangeLevel"] = "changeLevel";
26
- Counter["Seek"] = "seek";
27
- Counter["Fullscreen"] = "fullscreen";
28
- Counter["DvrUsage"] = "dvrUsage";
29
- })(Counter || (Counter = {}));
16
+ export var ClapprStatsCounter;
17
+ (function (ClapprStatsCounter) {
18
+ ClapprStatsCounter["Play"] = "play";
19
+ ClapprStatsCounter["Pause"] = "pause";
20
+ ClapprStatsCounter["Error"] = "error";
21
+ ClapprStatsCounter["Buffering"] = "buffering";
22
+ ClapprStatsCounter["DecodedFrames"] = "decodedFrames";
23
+ ClapprStatsCounter["DroppedFrames"] = "droppedFrames";
24
+ ClapprStatsCounter["Fps"] = "fps";
25
+ ClapprStatsCounter["ChangeLevel"] = "changeLevel";
26
+ ClapprStatsCounter["Seek"] = "seek";
27
+ ClapprStatsCounter["Fullscreen"] = "fullscreen";
28
+ ClapprStatsCounter["DvrUsage"] = "dvrUsage";
29
+ })(ClapprStatsCounter || (ClapprStatsCounter = {}));
30
30
  /**
31
31
  * @beta
32
32
  */
@@ -1,3 +1,3 @@
1
- import type { Metrics } from "./types";
2
- export declare function newMetrics(): Metrics;
1
+ import type { ClapprStatsMetrics } from './types';
2
+ export declare function newMetrics(): ClapprStatsMetrics;
3
3
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-stats/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,wBAAgB,UAAU,IAAI,OAAO,CAsCpC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-stats/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAEjD,wBAAgB,UAAU,IAAI,kBAAkB,CAqC/C"}
@@ -34,6 +34,5 @@ export function newMetrics() {
34
34
  duration: 0,
35
35
  currentTime: 0,
36
36
  },
37
- custom: {},
38
37
  };
39
38
  }
@@ -17,7 +17,7 @@ export class ClickToPause extends ContainerPlugin {
17
17
  * @internal
18
18
  */
19
19
  get name() {
20
- return 'click_to_pause_custom';
20
+ return 'click_to_pause';
21
21
  }
22
22
  /**
23
23
  * @internal
@@ -1,7 +1,7 @@
1
1
  import { UICorePlugin } from '@clappr/core';
2
2
  import '../../../assets/clips/clips.scss';
3
3
  /**
4
- * Configuration options for the {@link ClipsPlugin} plugin.
4
+ * Configuration options for the {@link Clips} plugin.
5
5
  * @beta
6
6
  */
7
7
  export interface ClipsPluginSettings {
@@ -43,12 +43,16 @@ export declare class DvrControls extends UICorePlugin {
43
43
  */
44
44
  bindEvents(): void;
45
45
  private onCoreReady;
46
- private bindContainerEvents;
46
+ private onActiveContainerChanged;
47
47
  private click;
48
- private shouldRender;
49
48
  /**
50
49
  * @internal
51
50
  */
52
51
  render(): this;
52
+ private onMediacontrolRendered;
53
+ private onMetadataLoaded;
54
+ private mount;
55
+ private onDvrStateChanged;
56
+ private toggleState;
53
57
  }
54
58
  //# sourceMappingURL=DvrControls.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DvrControls.d.ts","sourceRoot":"","sources":["../../../src/plugins/dvr-controls/DvrControls.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,YAAY,EAAY,MAAM,cAAc,CAAA;AAM7E,OAAO,gDAAgD,CAAA;AAMvD;;;;;;;;;;;;;GAaG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAEpD;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;IACH,IAAa,MAAM;;MAIlB;IAED;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACM,UAAU;IASnB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,KAAK;IAQb,OAAO,CAAC,YAAY;IAIpB;;OAEG;IACM,MAAM;CAyBhB"}
1
+ {"version":3,"file":"DvrControls.d.ts","sourceRoot":"","sources":["../../../src/plugins/dvr-controls/DvrControls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAY,MAAM,cAAc,CAAA;AAMvE,OAAO,gDAAgD,CAAA;AAMvD;;;;;;;;;;;;;GAaG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAEpD;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;IACH,IAAa,MAAM;;MAIlB;IAED;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACM,UAAU;IASnB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,KAAK;IAQb;;OAEG;IACM,MAAM;IAUf,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,KAAK;IAab,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,WAAW;CASpB"}
@@ -3,8 +3,7 @@ import assert from 'assert';
3
3
  import { CLAPPR_VERSION } from '../../build.js';
4
4
  import dvrHTML from '../../../assets/dvr-controls/index.ejs';
5
5
  import '../../../assets/dvr-controls/dvr_controls.scss';
6
- import { trace } from '@gcorevideo/utils';
7
- const T = 'plugins.dvr_controls';
6
+ // const T = 'plugins.dvr_controls'
8
7
  /**
9
8
  * `PLUGIN` that adds the DVR controls to the media control UI
10
9
  *
@@ -53,19 +52,17 @@ export class DvrControls extends UICorePlugin {
53
52
  * @internal
54
53
  */
55
54
  bindEvents() {
56
- this.listenTo(this.core, Events.CORE_READY, this.onCoreReady);
57
- this.listenTo(this.core, Events.CORE_ACTIVE_CONTAINER_CHANGED, this.bindContainerEvents);
55
+ this.listenToOnce(this.core, Events.CORE_READY, this.onCoreReady);
56
+ this.listenTo(this.core, Events.CORE_ACTIVE_CONTAINER_CHANGED, this.onActiveContainerChanged);
58
57
  }
59
58
  onCoreReady() {
60
59
  const mediaControl = this.core.getPlugin('media_control');
61
60
  assert(mediaControl, 'media_control plugin is required');
62
- this.listenTo(mediaControl, Events.MEDIACONTROL_RENDERED, this.render);
63
- // MediaControl has been rendered
64
- this.render();
61
+ this.listenTo(mediaControl, Events.MEDIACONTROL_RENDERED, this.mount);
65
62
  }
66
- bindContainerEvents() {
67
- trace(`${T} bindContainerEvents`);
68
- this.listenToOnce(this.core.activeContainer, Events.CONTAINER_TIMEUPDATE, this.render);
63
+ onActiveContainerChanged() {
64
+ this.listenTo(this.core.activeContainer, Events.CONTAINER_LOADEDMETADATA, this.onMetadataLoaded);
65
+ this.listenTo(this.core.activeContainer, Events.CONTAINER_PLAYBACKDVRSTATECHANGED, this.onDvrStateChanged);
69
66
  }
70
67
  click() {
71
68
  const container = this.core.activeContainer;
@@ -74,30 +71,45 @@ export class DvrControls extends UICorePlugin {
74
71
  }
75
72
  container.seek(container.getDuration());
76
73
  }
77
- shouldRender() {
78
- return this.core.getPlaybackType() === Playback.LIVE;
79
- }
80
74
  /**
81
75
  * @internal
82
76
  */
83
77
  render() {
84
- trace(`${T} render`, {
85
- dvrEnabled: this.core.activePlayback?.dvrEnabled,
86
- playbackType: this.core.getPlaybackType(),
87
- });
88
- const mediaControl = this.core.getPlugin('media_control');
89
- if (!mediaControl) {
90
- return this;
91
- }
92
- if (!this.shouldRender()) {
93
- return this;
94
- }
95
- mediaControl.toggleElement('duration', false);
96
- mediaControl.toggleElement('position', false);
97
78
  this.$el.html(DvrControls.template({
98
79
  i18n: this.core.i18n,
99
80
  }));
100
- mediaControl.putElement('dvr', this.$el);
101
81
  return this;
102
82
  }
83
+ onMediacontrolRendered() {
84
+ this.render();
85
+ }
86
+ onMetadataLoaded() {
87
+ this.mount();
88
+ this.toggleState(this.core.activeContainer.isDvrInUse());
89
+ }
90
+ mount() {
91
+ // TODO move mount point management logic to MediaControl
92
+ if (this.core.getPlaybackType() !== Playback.LIVE) {
93
+ return;
94
+ }
95
+ const mediaControl = this.core.getPlugin('media_control');
96
+ assert(mediaControl, 'media_control plugin is required');
97
+ // TODO -> to MediaControl
98
+ mediaControl.toggleElement('duration', false);
99
+ mediaControl.toggleElement('position', false);
100
+ mediaControl.mount('dvr', this.$el);
101
+ }
102
+ onDvrStateChanged(dvrInUse) {
103
+ this.toggleState(dvrInUse);
104
+ }
105
+ toggleState(dvrInUse) {
106
+ if (dvrInUse) {
107
+ this.$el.find('#media-control-back-to-live').show();
108
+ this.$el.find('#media-control-live').hide();
109
+ }
110
+ else {
111
+ this.$el.find('#media-control-back-to-live').hide();
112
+ this.$el.find('#media-control-live').show();
113
+ }
114
+ }
103
115
  }
@@ -232,7 +232,6 @@ export declare class MediaControl extends UICorePlugin {
232
232
  * Get a media control element DOM node
233
233
  * @param name - The name of the media control element
234
234
  * @returns The DOM node to render to or extend
235
- * @deprecated Use {@link MediaControl.putElement} instead
236
235
  * @remarks
237
236
  * Use this method to render custom media control UI in a plugin
238
237
  * @example
@@ -247,11 +246,16 @@ export declare class MediaControl extends UICorePlugin {
247
246
  * ```
248
247
  */
249
248
  mount(name: MediaControlElement, element: ZeptoResult): void;
249
+ /**
250
+ * @deprecated Use {@link MediaControl.mount} instead
251
+ * @param name
252
+ * @param element
253
+ */
250
254
  putElement(name: MediaControlElement, element: ZeptoResult): void;
251
255
  /**
252
256
  * Toggle the visibility of a media control element
253
257
  * @param name - The name of the media control element
254
- * @param show - Whether to show or hide the element
258
+ * @param show - Visibility state
255
259
  */
256
260
  toggleElement(area: MediaControlElement, show: boolean): void;
257
261
  private getRightPanel;
@@ -1 +1 @@
1
- {"version":3,"file":"MediaControl.d.ts","sourceRoot":"","sources":["../../../src/plugins/media-control/MediaControl.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,YAAY,EAMZ,IAAI,EACL,MAAM,cAAc,CAAA;AASrB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAI5C,OAAO,kDAAkD,CAAA;AAWzD;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAC/B,UAAU,GACV,UAAU,GACV,KAAK,GACL,WAAW,GACX,UAAU,GACV,UAAU,GACV,QAAQ,GACR,OAAO,CAAA;AAEX;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,SAAS,GAAG,kBAAkB,CAAA;AAErE;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAChC,aAAa,GACb,IAAI,GACJ,YAAY,GACZ,cAAc,GACd,MAAM,GACN,aAAa,GACb,KAAK,GACL,IAAI,CAAA;AAER;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAC3B,uBAAuB,GACvB,wBAAwB,GACxB,wBAAwB,CAAA;AAE5B;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,uBAAuB,EAAE,CAAA;IAC/B,KAAK,EAAE,wBAAwB,EAAE,CAAA;IACjC,OAAO,EAAE,wBAAwB,EAAE,CAAA;IACnC,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AAqDD;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAG5C,OAAO,CAAC,YAAY,CAAsB;IAE1C,OAAO,CAAC,oBAAoB,CAAY;IACxC,OAAO,CAAC,oBAAoB,CAAY;IACxC,OAAO,CAAC,wBAAwB,CAAI;IAEpC,OAAO,CAAC,qBAAqB,CAA0B;IACvD,OAAO,CAAC,iBAAiB,CAAsB;IAC/C,OAAO,CAAC,iBAAiB,CAAsB;IAC/C,OAAO,CAAC,0BAA0B,CAAsB;IAExD,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,iBAAiB,CAAQ;IAEjC,OAAO,CAAC,6BAA6B,CAAQ;IAE7C,OAAO,CAAC,MAAM,CAA6C;IAC3D,OAAO,CAAC,YAAY,CAA6C;IAEjE,OAAO,CAAC,cAAc,CAAM;IAE5B,OAAO,CAAC,WAAW,CAAQ;IAE3B,OAAO,CAAC,IAAI,CAAM;IAElB,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,UAAU,CAAI;IAEtB,OAAO,CAAC,cAAc,CAAQ;IAE9B,OAAO,CAAC,SAAS,CAAQ;IAEzB,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,aAAa,CAA6C;IAElE,OAAO,CAAC,QAAQ,CAAQ;IAExB,OAAO,CAAC,QAAQ,CAAyC;IAEzD,OAAO,CAAC,YAAY,CAAQ;IAE5B,OAAO,CAAC,eAAe,CAAQ;IAE/B,OAAO,CAAC,cAAc,CAAQ;IAE9B,OAAO,CAAC,SAAS,CAA2B;IAE5C,OAAO,CAAC,iBAAiB,CAA2B;IAEpD,OAAO,CAAC,oBAAoB,CAA2B;IAEvD,OAAO,CAAC,gBAAgB,CAA2B;IAEnD,OAAO,CAAC,eAAe,CAA2B;IAElD,OAAO,CAAC,SAAS,CAA2B;IAE5C,OAAO,CAAC,iBAAiB,CAA2B;IAEpD,OAAO,CAAC,aAAa,CAA2B;IAEhD,OAAO,CAAC,cAAc,CAA2B;IAEjD,OAAO,CAAC,gBAAgB,CAA2B;IAEnD,OAAO,CAAC,gBAAgB,CAA2B;IAEnD,OAAO,CAAC,mBAAmB,CAA2B;IAEtD,OAAO,CAAC,oBAAoB,CAA2B;IAEvD,OAAO,CAAC,cAAc,CAA2B;IAEjD,OAAO,CAAC,kBAAkB,CAA2B;IAErD,OAAO,CAAC,gBAAgB,CAA2B;IAEnD,OAAO,CAAC,WAAW,CAA2B;IAE9C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAE7D;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,OAAO,KAAK,QAAQ,GAMnB;IAED;;;OAGG;IACH,IAAI,SAAS,QAEZ;IAED;;;OAGG;IACH,IAAI,QAAQ,QAEX;IAED;;OAEG;IACH,IAAa,UAAU;;;MAKtB;IAED;;OAEG;IACH,IAAa,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;MA4BlB;IAED,IAAI,cAAc,WAEjB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAInB;IAED;;OAEG;IACH,IAAI,KAAK,YAER;gBAEW,IAAI,EAAE,IAAI;IAqBtB;;OAEG;IACM,oBAAoB;2BA0ZZ,MAAM;;;IAnZvB;;OAEG;IACM,UAAU;IAuCnB,OAAO,CAAC,mBAAmB;IA6E3B;;OAEG;IACM,OAAO;IAQhB;;OAEG;IACM,MAAM;IAUf;;OAEG;IACH,gBAAgB;IAOhB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,cAAc;IAwDtB,OAAO,CAAC,gBAAgB;IAsBxB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,YAAY;IA6BpB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,QAAQ,CAQf;IAED,OAAO,CAAC,UAAU,CAgBjB;IAED,OAAO,CAAC,oBAAoB;IAsB5B,OAAO,CAAC,UAAU;IAIlB;;;;;;OAMG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,UAAQ;IA+BhD,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,wBAAwB;IAqChC,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,uBAAuB;IAc/B,OAAO,CAAC,IAAI;IAkBZ,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,IAAI;IAgCZ,OAAO,CAAC,IAAI;IAmCZ,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,cAAc;IA8DtB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,oBAAoB;IAgC5B;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CAAC,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,WAAW;IAmBrD,UAAU,CAAC,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,WAAW;IAI1D;;;;OAIG;IACH,aAAa,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,OAAO;IAItD,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,aAAa;IA8CrB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,WAAW;IAiCnB,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACM,OAAO;IAUhB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACM,MAAM;IA4Ef,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,MAAM,CAAC,QAAQ;IAIvB,OAAO,CAAC,MAAM,CAAC,QAAQ;IAcvB;;OAEG;IACH,mBAAmB;IAMnB;;OAEG;IACH,qBAAqB;IAOrB,OAAO,CAAC,6BAA6B;IAQrC,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,iBAAiB;CAO1B"}
1
+ {"version":3,"file":"MediaControl.d.ts","sourceRoot":"","sources":["../../../src/plugins/media-control/MediaControl.ts"],"names":[],"mappings":"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"}