@gcorevideo/player 2.22.20 → 2.22.22
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.
- package/assets/clappr-nerd-stats/clappr-nerd-stats.ejs +30 -30
- package/assets/clappr-nerd-stats/clappr-nerd-stats.scss +21 -14
- package/assets/level-selector/button.ejs +1 -1
- package/dist/core.js +1 -1
- package/dist/index.css +696 -688
- package/dist/index.js +271 -247
- package/dist/player.d.ts +57 -27
- package/dist/plugins/index.css +335 -327
- package/dist/plugins/index.js +109 -89
- package/docs/api/{player.bitratetrackrecord.md → player.clapprstatsbitratetrack.md} +3 -3
- package/docs/api/player.clapprstatsmetrics.md +2 -2
- package/docs/api/player.extendedevents.md +45 -0
- package/docs/api/player.gearevents.md +1 -1
- package/docs/api/player.md +22 -2
- package/docs/api/player.mediacontrol.mount.md +0 -5
- package/docs/api/player.mediacontrol.putelement.md +5 -0
- package/docs/api/player.mediacontrol.toggleelement.md +1 -1
- package/docs/api/player.volumefade._constructor_.md +50 -0
- package/docs/api/player.volumefade.md +40 -1
- package/docs/api/player.volumefadesettings.md +18 -0
- package/lib/plugins/clappr-nerd-stats/NerdStats.d.ts +1 -0
- package/lib/plugins/clappr-nerd-stats/NerdStats.d.ts.map +1 -1
- package/lib/plugins/clappr-nerd-stats/NerdStats.js +13 -3
- package/lib/plugins/clappr-nerd-stats/speedtest/Speedtest.d.ts.map +1 -1
- package/lib/plugins/clappr-nerd-stats/speedtest/Speedtest.js +1 -0
- package/lib/plugins/clappr-nerd-stats/speedtest/index.js +1 -1
- package/lib/plugins/clappr-nerd-stats/utils.d.ts.map +1 -1
- package/lib/plugins/clappr-nerd-stats/utils.js +17 -15
- package/lib/plugins/clappr-stats/ClapprStats.d.ts +1 -0
- package/lib/plugins/clappr-stats/ClapprStats.d.ts.map +1 -1
- package/lib/plugins/clappr-stats/ClapprStats.js +3 -0
- package/lib/plugins/click-to-pause/ClickToPause.js +6 -7
- package/lib/plugins/media-control/MediaControl.d.ts +3 -0
- package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
- package/lib/plugins/media-control/MediaControl.js +6 -1
- package/lib/plugins/volume-fade/VolumeFade.d.ts +28 -11
- package/lib/plugins/volume-fade/VolumeFade.d.ts.map +1 -1
- package/lib/plugins/volume-fade/VolumeFade.js +66 -61
- package/package.json +1 -1
- package/src/plugins/clappr-nerd-stats/NerdStats.ts +21 -8
- package/src/plugins/clappr-nerd-stats/speedtest/Speedtest.ts +1 -0
- package/src/plugins/clappr-nerd-stats/speedtest/index.ts +1 -1
- package/src/plugins/clappr-nerd-stats/utils.ts +23 -13
- package/src/plugins/clappr-stats/ClapprStats.ts +4 -0
- package/src/plugins/click-to-pause/ClickToPause.ts +6 -6
- package/src/plugins/level-selector/__tests__/__snapshots__/QualityLevels.test.ts.snap +1 -1
- package/src/plugins/media-control/MediaControl.ts +6 -1
- package/src/plugins/volume-fade/VolumeFade.ts +96 -76
- package/temp/player.api.json +132 -34
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
|
2
|
+
|
|
3
|
+
[Home](./index.md) > [@gcorevideo/player](./player.md) > [VolumeFade](./player.volumefade.md) > [(constructor)](./player.volumefade._constructor_.md)
|
|
4
|
+
|
|
5
|
+
## VolumeFade.(constructor)
|
|
6
|
+
|
|
7
|
+
> This API is provided as a beta preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.
|
|
8
|
+
>
|
|
9
|
+
|
|
10
|
+
Constructs a new instance of the `VolumeFade` class
|
|
11
|
+
|
|
12
|
+
**Signature:**
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
constructor(core: Core);
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Parameters
|
|
19
|
+
|
|
20
|
+
<table><thead><tr><th>
|
|
21
|
+
|
|
22
|
+
Parameter
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
</th><th>
|
|
26
|
+
|
|
27
|
+
Type
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
</th><th>
|
|
31
|
+
|
|
32
|
+
Description
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
</th></tr></thead>
|
|
36
|
+
<tbody><tr><td>
|
|
37
|
+
|
|
38
|
+
core
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
</td><td>
|
|
42
|
+
|
|
43
|
+
Core
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
</td><td>
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
</td></tr>
|
|
50
|
+
</tbody></table>
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
> This API is provided as a beta preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.
|
|
8
8
|
>
|
|
9
9
|
|
|
10
|
-
`PLUGIN` that
|
|
10
|
+
`PLUGIN` that mutes the sound and fades it in when the mouse is over the player.
|
|
11
11
|
|
|
12
12
|
**Signature:**
|
|
13
13
|
|
|
@@ -16,3 +16,42 @@ export declare class VolumeFade extends UICorePlugin
|
|
|
16
16
|
```
|
|
17
17
|
**Extends:** UICorePlugin
|
|
18
18
|
|
|
19
|
+
## Remarks
|
|
20
|
+
|
|
21
|
+
When the user moves the mouse over and away from the player, the sound is unmuted and unmuted with a fade effect.
|
|
22
|
+
|
|
23
|
+
Depends on [MediaControl](./player.mediacontrol.md) plugin. Configuration options - [VolumeFadeSettings](./player.volumefadesettings.md)
|
|
24
|
+
|
|
25
|
+
## Constructors
|
|
26
|
+
|
|
27
|
+
<table><thead><tr><th>
|
|
28
|
+
|
|
29
|
+
Constructor
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
</th><th>
|
|
33
|
+
|
|
34
|
+
Modifiers
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
</th><th>
|
|
38
|
+
|
|
39
|
+
Description
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
</th></tr></thead>
|
|
43
|
+
<tbody><tr><td>
|
|
44
|
+
|
|
45
|
+
[(constructor)(core)](./player.volumefade._constructor_.md)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
</td><td>
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
</td><td>
|
|
52
|
+
|
|
53
|
+
**_(BETA)_** Constructs a new instance of the `VolumeFade` class
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
</td></tr>
|
|
57
|
+
</tbody></table>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
|
2
|
+
|
|
3
|
+
[Home](./index.md) > [@gcorevideo/player](./player.md) > [VolumeFadeSettings](./player.volumefadesettings.md)
|
|
4
|
+
|
|
5
|
+
## VolumeFadeSettings type
|
|
6
|
+
|
|
7
|
+
> This API is provided as a beta preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.
|
|
8
|
+
>
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
**Signature:**
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
export type VolumeFadeSettings = {
|
|
15
|
+
level?: number;
|
|
16
|
+
duration?: number;
|
|
17
|
+
};
|
|
18
|
+
```
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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,mBAAmB;IAM3B,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACM,MAAM;IAcf,OAAO,CAAC,MAAM;IAiBd,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,kBAAkB;CAU3B"}
|
|
@@ -225,8 +225,11 @@ export class NerdStats extends UICorePlugin {
|
|
|
225
225
|
}
|
|
226
226
|
updateMetrics(metrics) {
|
|
227
227
|
trace(`${T} updateMetrics`, { custom: this.speedtestMetrics });
|
|
228
|
-
Object.assign(this.metrics, metrics);
|
|
229
|
-
this.
|
|
228
|
+
Object.assign(this.metrics, metrics); // TODO no Object.assign
|
|
229
|
+
this.metrics.custom = {
|
|
230
|
+
...this.speedtestMetrics,
|
|
231
|
+
};
|
|
232
|
+
this.updateCustomMetrics();
|
|
230
233
|
this.$el
|
|
231
234
|
.find('#nerd-stats-current-time')
|
|
232
235
|
.text(Formatter.formatTime(this.metrics.extra.currentTime));
|
|
@@ -288,11 +291,16 @@ export class NerdStats extends UICorePlugin {
|
|
|
288
291
|
.text(Formatter.formatFps(this.metrics.counters.fps));
|
|
289
292
|
this.setStatsBoxSize();
|
|
290
293
|
drawSpeedTestResults();
|
|
291
|
-
|
|
294
|
+
this.updateEstimatedQuality();
|
|
292
295
|
if (!this.open) {
|
|
293
296
|
this.hide();
|
|
294
297
|
}
|
|
295
298
|
}
|
|
299
|
+
updateCustomMetrics() {
|
|
300
|
+
this.$el.find('#nerd-stats-dl-text').text(this.metrics.custom.connectionSpeed.toFixed(2));
|
|
301
|
+
this.$el.find('#nerd-stats-ping-text').text(this.metrics.custom.ping.toFixed(2));
|
|
302
|
+
this.$el.find('#nerd-stats-jitter-text').text(this.metrics.custom.jitter.toFixed(2));
|
|
303
|
+
}
|
|
296
304
|
updateEstimatedQuality() {
|
|
297
305
|
this.estimateQuality();
|
|
298
306
|
this.$el
|
|
@@ -301,6 +309,7 @@ export class NerdStats extends UICorePlugin {
|
|
|
301
309
|
this.$el
|
|
302
310
|
.find('#nerd-stats-quality-live-text')
|
|
303
311
|
.html(this.metrics.custom.liveQuality);
|
|
312
|
+
drawSummary(this.speedtestMetrics, this.$el.find('#nerd-stats-quality-vod'), this.$el.find('#nerd-stats-quality-live'));
|
|
304
313
|
}
|
|
305
314
|
setStatsBoxSize() {
|
|
306
315
|
if (this.playerWidth >= this.statsBoxWidthThreshold) {
|
|
@@ -345,6 +354,7 @@ export class NerdStats extends UICorePlugin {
|
|
|
345
354
|
this.speedtestMetrics.ping = 0;
|
|
346
355
|
this.speedtestMetrics.jitter = 0;
|
|
347
356
|
if (clapprStats) {
|
|
357
|
+
clapprStats.clearMetrics();
|
|
348
358
|
this.updateMetrics(clapprStats.exportMetrics());
|
|
349
359
|
}
|
|
350
360
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Speedtest.d.ts","sourceRoot":"","sources":["../../../../src/plugins/clappr-nerd-stats/speedtest/Speedtest.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAID,KAAK,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;AAE5C,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACrC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,CAAC,GAAG,CAAC,CAAA;IACjB,UAAU,EAAE,CAAC,GAAG,CAAC,CAAA;IACjB,YAAY,EAAE,CAAC,GAAG,CAAC,CAAA;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB,CAAA;AAED,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAA;AAEnD,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;AAIrD,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAsB;IAEpC,OAAO,CAAC,SAAS,CAAsB;IAEvC,OAAO,CAAC,mBAAmB,CAAQ;IAEnC,OAAO,CAAC,eAAe,CAAsB;IAE7C,OAAO,CAAC,WAAW,CAAe;IAElC,OAAO,CAAC,SAAS,CAAU;IAE3B,OAAO,CAAC,MAAM,CAAI;IAElB,OAAO,CAAC,OAAO,CAAuB;IAEtC,OAAO,CAAC,SAAS,CAA8B;IAE/C,OAAO,CAAC,cAAc,CAAK;IAE3B,KAAK,EAAE,UAAU,GAAG,IAAI,CAAO;IAE/B,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAO;IAErC,QAAQ;IAIR,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAY9C,sBAAsB,CAAC,MAAM,EAAE,MAAM;IAiCrC,YAAY,CAAC,MAAM,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"Speedtest.d.ts","sourceRoot":"","sources":["../../../../src/plugins/clappr-nerd-stats/speedtest/Speedtest.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAID,KAAK,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;AAE5C,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACrC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,CAAC,GAAG,CAAC,CAAA;IACjB,UAAU,EAAE,CAAC,GAAG,CAAC,CAAA;IACjB,YAAY,EAAE,CAAC,GAAG,CAAC,CAAA;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB,CAAA;AAED,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAA;AAEnD,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;AAIrD,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAsB;IAEpC,OAAO,CAAC,SAAS,CAAsB;IAEvC,OAAO,CAAC,mBAAmB,CAAQ;IAEnC,OAAO,CAAC,eAAe,CAAsB;IAE7C,OAAO,CAAC,WAAW,CAAe;IAElC,OAAO,CAAC,SAAS,CAAU;IAE3B,OAAO,CAAC,MAAM,CAAI;IAElB,OAAO,CAAC,OAAO,CAAuB;IAEtC,OAAO,CAAC,SAAS,CAA8B;IAE/C,OAAO,CAAC,cAAc,CAAK;IAE3B,KAAK,EAAE,UAAU,GAAG,IAAI,CAAO;IAE/B,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAO;IAErC,QAAQ;IAIR,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAY9C,sBAAsB,CAAC,MAAM,EAAE,MAAM;IAiCrC,YAAY,CAAC,MAAM,EAAE,MAAM;IAa3B,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE;IAM5B,iBAAiB;IAQjB,iBAAiB,CAAC,MAAM,EAAE,MAAM;IAShC,YAAY,CAAC,MAAM,EAAE,cAAc;IA0KnC,KAAK;IAsEL,KAAK;IASL,OAAO,CAAC,UAAU;CAUnB"}
|
|
@@ -30,7 +30,7 @@ const getColor = (speedValue) => {
|
|
|
30
30
|
}
|
|
31
31
|
};
|
|
32
32
|
export function drawSpeedTestResults() {
|
|
33
|
-
const canvas = document.getElementById('
|
|
33
|
+
const canvas = document.getElementById('nerd-stats-speed-test-canvas');
|
|
34
34
|
if (!canvas) {
|
|
35
35
|
return;
|
|
36
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-nerd-stats/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAUpD,eAAO,MAAM,kBAAkB,eAAgB,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/plugins/clappr-nerd-stats/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAUpD,eAAO,MAAM,kBAAkB,eAAgB,MAAM,KAAG,MAiBvD,CAAA;AAED,eAAO,MAAM,cAAc,cAAe,MAAM,KAAG,MAiBlD,CAAA;AAED,eAAO,MAAM,mBAAmB,YAAa,MAAM,KAAG,MAerD,CAAA;AAED,eAAO,MAAM,WAAW,kBACP,gBAAgB,gBACjB,WAAW,iBACV,WAAW,SAe3B,CAAA"}
|
|
@@ -6,38 +6,40 @@ const qualityClasses = [
|
|
|
6
6
|
'speedtest-quality-value-5',
|
|
7
7
|
];
|
|
8
8
|
export const getDownloadQuality = (speedValue) => {
|
|
9
|
+
if (!speedValue) {
|
|
10
|
+
return 0;
|
|
11
|
+
}
|
|
9
12
|
if (speedValue < 3) {
|
|
10
13
|
return 1;
|
|
11
14
|
}
|
|
12
|
-
|
|
15
|
+
if (speedValue < 7) {
|
|
13
16
|
return 2;
|
|
14
17
|
}
|
|
15
|
-
|
|
18
|
+
if (speedValue < 13) {
|
|
16
19
|
return 3;
|
|
17
20
|
}
|
|
18
|
-
|
|
21
|
+
if (speedValue < 25) {
|
|
19
22
|
return 4;
|
|
20
23
|
}
|
|
21
|
-
|
|
22
|
-
return 5;
|
|
23
|
-
}
|
|
24
|
+
return 5;
|
|
24
25
|
};
|
|
25
26
|
export const getPingQuality = (pingValue) => {
|
|
27
|
+
if (!pingValue) {
|
|
28
|
+
return 0;
|
|
29
|
+
}
|
|
26
30
|
if (pingValue < 20) {
|
|
27
31
|
return 5;
|
|
28
32
|
}
|
|
29
|
-
|
|
33
|
+
if (pingValue < 50) {
|
|
30
34
|
return 4;
|
|
31
35
|
}
|
|
32
|
-
|
|
36
|
+
if (pingValue < 100) {
|
|
33
37
|
return 3;
|
|
34
38
|
}
|
|
35
|
-
|
|
39
|
+
if (pingValue < 150) {
|
|
36
40
|
return 2;
|
|
37
41
|
}
|
|
38
|
-
|
|
39
|
-
return 1;
|
|
40
|
-
}
|
|
42
|
+
return 1;
|
|
41
43
|
};
|
|
42
44
|
export const generateQualityHtml = (quality) => {
|
|
43
45
|
const html = [];
|
|
@@ -54,9 +56,9 @@ export const generateQualityHtml = (quality) => {
|
|
|
54
56
|
};
|
|
55
57
|
export const drawSummary = (customMetrics, vodContainer, liveContainer) => {
|
|
56
58
|
const { connectionSpeed, ping } = customMetrics;
|
|
57
|
-
if (!connectionSpeed || !ping) {
|
|
58
|
-
|
|
59
|
-
}
|
|
59
|
+
// if (!connectionSpeed || !ping) {
|
|
60
|
+
// return
|
|
61
|
+
// }
|
|
60
62
|
const downloadQuality = getDownloadQuality(connectionSpeed);
|
|
61
63
|
const pingQuality = getPingQuality(ping);
|
|
62
64
|
const liveQuality = Math.min(downloadQuality, pingQuality);
|
|
@@ -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,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
|
+
{"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,YAAY;IAIZ,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"}
|
|
@@ -99,6 +99,9 @@ export class ClapprStats extends ContainerPlugin {
|
|
|
99
99
|
exportMetrics() {
|
|
100
100
|
return structuredClone(this.metrics);
|
|
101
101
|
}
|
|
102
|
+
clearMetrics() {
|
|
103
|
+
this.metrics = newMetrics();
|
|
104
|
+
}
|
|
102
105
|
onBitrate(newBitrate) {
|
|
103
106
|
const bitrate = newBitrate.bitrate;
|
|
104
107
|
const now = this.now();
|
|
@@ -41,14 +41,13 @@ export class ClickToPause extends ContainerPlugin {
|
|
|
41
41
|
});
|
|
42
42
|
if (isLivePlayback && !isDvrEnabled) {
|
|
43
43
|
this.togglePlay(true);
|
|
44
|
+
return;
|
|
44
45
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
this.timer =
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}, 300);
|
|
51
|
-
}
|
|
46
|
+
this.clearTimer();
|
|
47
|
+
this.timer = setTimeout(() => {
|
|
48
|
+
this.timer = null;
|
|
49
|
+
this.togglePlay(false);
|
|
50
|
+
}, 300);
|
|
52
51
|
}
|
|
53
52
|
settingsUpdate() {
|
|
54
53
|
const isLivePlayback = this.container.getPlaybackType() === Playback.LIVE;
|
|
@@ -32,6 +32,9 @@ export type MediaControlSettings = {
|
|
|
32
32
|
default: MediaControlLayerElement[];
|
|
33
33
|
seekEnabled: boolean;
|
|
34
34
|
};
|
|
35
|
+
export declare enum ExtendedEvents {
|
|
36
|
+
MEDIACONTROL_VOLUME = "mediacontrol:volume"
|
|
37
|
+
}
|
|
35
38
|
/**
|
|
36
39
|
* `PLUGIN` that provides basic playback controls UI and a foundation for developing custom UI.
|
|
37
40
|
* @beta
|
|
@@ -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;AAY5B;;;;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;
|
|
1
|
+
{"version":3,"file":"MediaControl.d.ts","sourceRoot":"","sources":["../../../src/plugins/media-control/MediaControl.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,6 +58,10 @@ const LEFT_ORDER = [
|
|
|
58
58
|
'duration',
|
|
59
59
|
'dvr',
|
|
60
60
|
];
|
|
61
|
+
export var ExtendedEvents;
|
|
62
|
+
(function (ExtendedEvents) {
|
|
63
|
+
ExtendedEvents["MEDIACONTROL_VOLUME"] = "mediacontrol:volume";
|
|
64
|
+
})(ExtendedEvents || (ExtendedEvents = {}));
|
|
61
65
|
const { Config, Fullscreen, formatTime, extend, removeArrayItem } = Utils;
|
|
62
66
|
function orderByOrderPattern(arr, order) {
|
|
63
67
|
const arrWithoutDuplicates = [...new Set(arr)];
|
|
@@ -538,14 +542,15 @@ export class MediaControl extends UICorePlugin {
|
|
|
538
542
|
// if the container is not ready etc
|
|
539
543
|
this.intendedVolume = value;
|
|
540
544
|
this.persistConfig && !isInitialVolume && Config.persist('volume', value);
|
|
541
|
-
// TODO
|
|
542
545
|
const setWhenContainerReady = () => {
|
|
543
546
|
if (this.core.activeContainer && this.core.activeContainer.isReady) {
|
|
544
547
|
this.core.activeContainer.setVolume(value);
|
|
548
|
+
this.trigger(ExtendedEvents.MEDIACONTROL_VOLUME, value);
|
|
545
549
|
}
|
|
546
550
|
else {
|
|
547
551
|
this.listenToOnce(this.core.activeContainer, Events.CONTAINER_READY, () => {
|
|
548
552
|
this.core.activeContainer.setVolume(value);
|
|
553
|
+
this.trigger(ExtendedEvents.MEDIACONTROL_VOLUME, value);
|
|
549
554
|
});
|
|
550
555
|
}
|
|
551
556
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { UICorePlugin } from '@clappr/core';
|
|
1
|
+
import { UICorePlugin, Core } from '@clappr/core';
|
|
2
2
|
/**
|
|
3
3
|
* Events emitted by the VolumeFade plugin.
|
|
4
4
|
* @beta
|
|
@@ -7,29 +7,46 @@ export declare enum VolumeFadeEvents {
|
|
|
7
7
|
FADE = "core:volume:fade"
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
|
-
* `PLUGIN` that applies fade effect to the player's volume change.
|
|
11
10
|
* @beta
|
|
12
11
|
*/
|
|
12
|
+
export type VolumeFadeSettings = {
|
|
13
|
+
/**
|
|
14
|
+
* Initial active volume level, effective until volume is changed via media control
|
|
15
|
+
*/
|
|
16
|
+
level?: number;
|
|
17
|
+
/**
|
|
18
|
+
* Fade duration, ms
|
|
19
|
+
*/
|
|
20
|
+
duration?: number;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* `PLUGIN` that mutes the sound and fades it in when the mouse is over the player.
|
|
24
|
+
* @beta
|
|
25
|
+
*
|
|
26
|
+
* @remarks
|
|
27
|
+
* When the user moves the mouse over and away from the player, the sound is unmuted and unmuted with a fade effect.
|
|
28
|
+
*
|
|
29
|
+
* Depends on {@link MediaControl} plugin.
|
|
30
|
+
* Configuration options - {@link VolumeFadeSettings}
|
|
31
|
+
*/
|
|
13
32
|
export declare class VolumeFade extends UICorePlugin {
|
|
14
|
-
private
|
|
15
|
-
private
|
|
16
|
-
private
|
|
17
|
-
private interval;
|
|
33
|
+
private activeVolume;
|
|
34
|
+
private duration;
|
|
35
|
+
private timerId;
|
|
18
36
|
/**
|
|
19
37
|
* @internal
|
|
20
38
|
*/
|
|
21
39
|
get name(): string;
|
|
40
|
+
constructor(core: Core);
|
|
22
41
|
/**
|
|
23
42
|
* @internal
|
|
24
43
|
*/
|
|
25
44
|
bindEvents(): void;
|
|
26
|
-
private unBindEvents;
|
|
27
|
-
private _onUserChangeVolume;
|
|
28
|
-
private _onVolumeConfig;
|
|
29
45
|
private onCoreReady;
|
|
46
|
+
private onVolumeChange;
|
|
30
47
|
private onEnter;
|
|
31
|
-
private numberTo;
|
|
32
|
-
private clearCurrentInterval;
|
|
33
48
|
private onLeave;
|
|
49
|
+
private fade;
|
|
50
|
+
private stopFade;
|
|
34
51
|
}
|
|
35
52
|
//# sourceMappingURL=VolumeFade.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VolumeFade.d.ts","sourceRoot":"","sources":["../../../src/plugins/volume-fade/VolumeFade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"VolumeFade.d.ts","sourceRoot":"","sources":["../../../src/plugins/volume-fade/VolumeFade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAsB,IAAI,EAAE,MAAM,cAAc,CAAA;AAMrE;;;GAGG;AACH,oBAAY,gBAAgB;IAC1B,IAAI,qBAAqB;CAC1B;AAOD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;;;;;;;;GASG;AACH,qBAAa,UAAW,SAAQ,YAAY;IAC1C,OAAO,CAAC,YAAY,CAAI;IAExB,OAAO,CAAC,QAAQ,CAAI;IAEpB,OAAO,CAAC,OAAO,CAAuB;IAEtC;;OAEG;IACH,IAAI,IAAI,WAEP;gBAEW,IAAI,EAAE,IAAI;IAOtB;;OAEG;IACM,UAAU;IAInB,OAAO,CAAC,WAAW;IA6BnB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,IAAI;IAqBZ,OAAO,CAAC,QAAQ;CAOjB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { UICorePlugin, Events, Browser, $ } from '@clappr/core';
|
|
2
|
-
import { reportError } from '@gcorevideo/utils';
|
|
2
|
+
import { reportError, trace } from '@gcorevideo/utils';
|
|
3
|
+
import { ExtendedEvents } from '../media-control/MediaControl.js';
|
|
3
4
|
/**
|
|
4
5
|
* Events emitted by the VolumeFade plugin.
|
|
5
6
|
* @beta
|
|
@@ -8,98 +9,102 @@ export var VolumeFadeEvents;
|
|
|
8
9
|
(function (VolumeFadeEvents) {
|
|
9
10
|
VolumeFadeEvents["FADE"] = "core:volume:fade";
|
|
10
11
|
})(VolumeFadeEvents || (VolumeFadeEvents = {}));
|
|
12
|
+
const T = 'plugins.volume_fade';
|
|
13
|
+
const DEFAULT_DURATION = 600;
|
|
14
|
+
const DEFAULT_VOLUME_LEVEL = 80;
|
|
11
15
|
/**
|
|
12
|
-
* `PLUGIN` that
|
|
16
|
+
* `PLUGIN` that mutes the sound and fades it in when the mouse is over the player.
|
|
13
17
|
* @beta
|
|
18
|
+
*
|
|
19
|
+
* @remarks
|
|
20
|
+
* When the user moves the mouse over and away from the player, the sound is unmuted and unmuted with a fade effect.
|
|
21
|
+
*
|
|
22
|
+
* Depends on {@link MediaControl} plugin.
|
|
23
|
+
* Configuration options - {@link VolumeFadeSettings}
|
|
14
24
|
*/
|
|
15
25
|
export class VolumeFade extends UICorePlugin {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
interval = null;
|
|
26
|
+
activeVolume = 0;
|
|
27
|
+
duration = 0;
|
|
28
|
+
timerId = null;
|
|
20
29
|
/**
|
|
21
30
|
* @internal
|
|
22
31
|
*/
|
|
23
32
|
get name() {
|
|
24
33
|
return 'volume_fade';
|
|
25
34
|
}
|
|
35
|
+
constructor(core) {
|
|
36
|
+
super(core);
|
|
37
|
+
if (typeof this.options.volumeFade?.level === 'number') {
|
|
38
|
+
this.activeVolume = this.options.volumeFade.level;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
26
41
|
/**
|
|
27
42
|
* @internal
|
|
28
43
|
*/
|
|
29
44
|
bindEvents() {
|
|
30
|
-
// TODO on container changed
|
|
31
45
|
this.listenTo(this.core, Events.CORE_READY, this.onCoreReady);
|
|
32
|
-
if (this.core.mediaControl) {
|
|
33
|
-
this.listenTo(this.core.mediaControl, 'mediacontrol:volume:user', this._onUserChangeVolume);
|
|
34
|
-
}
|
|
35
|
-
// this.listenTo(this.core, 'core:volume:config', this._onVolumeConfig);
|
|
36
|
-
}
|
|
37
|
-
unBindEvents() {
|
|
38
|
-
this.core.$el.off('mouseleave.volume');
|
|
39
|
-
this.core.$el.off('mouseenter.volume');
|
|
40
|
-
}
|
|
41
|
-
_onUserChangeVolume(volume) {
|
|
42
|
-
this._aboveBorderVolume = volume;
|
|
43
|
-
}
|
|
44
|
-
_onVolumeConfig(value) {
|
|
45
|
-
this._aboveBorderVolume = value;
|
|
46
|
-
this.container?.setVolume(0);
|
|
47
46
|
}
|
|
48
47
|
onCoreReady() {
|
|
49
|
-
this.
|
|
50
|
-
|
|
51
|
-
if (this.core && this.core.$el) {
|
|
52
|
-
// TODO find out why options.playerElement instead of this.core.$el or this.container.$el
|
|
53
|
-
$(this.options.playerElement).on('mouseenter.volume', () => {
|
|
54
|
-
this.onEnter();
|
|
55
|
-
});
|
|
56
|
-
$(this.options.playerElement).on('mouseleave.volume', () => {
|
|
57
|
-
this.onLeave();
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
if (!this._aboveBorderVolume) {
|
|
61
|
-
this._aboveBorderVolume = this.container?.volume && !isNaN(this.container.volume) ? this.container.volume : 80;
|
|
62
|
-
}
|
|
63
|
-
if (this.options.mute || Browser.isMobile) {
|
|
48
|
+
const mediaControl = this.core.getPlugin('media_control');
|
|
49
|
+
if (Browser.isMobile) {
|
|
64
50
|
this.destroy();
|
|
65
51
|
return;
|
|
66
52
|
}
|
|
67
|
-
|
|
68
|
-
|
|
53
|
+
if (mediaControl) {
|
|
54
|
+
this.listenTo(mediaControl, ExtendedEvents.MEDIACONTROL_VOLUME, this.onVolumeChange);
|
|
55
|
+
}
|
|
56
|
+
$(this.core.$el).on('mouseenter', () => this.onEnter());
|
|
57
|
+
$(this.core.$el).on('mouseleave', () => this.onLeave());
|
|
58
|
+
if (!this.activeVolume) {
|
|
59
|
+
this.activeVolume =
|
|
60
|
+
this.core.activeContainer?.volume &&
|
|
61
|
+
!isNaN(this.core.activeContainer.volume)
|
|
62
|
+
? this.core.activeContainer.volume
|
|
63
|
+
: DEFAULT_VOLUME_LEVEL;
|
|
64
|
+
}
|
|
65
|
+
this.duration = this.options.volumeFade?.duration || DEFAULT_DURATION;
|
|
66
|
+
// TODO check if `mute` must be respected
|
|
67
|
+
this.core.activeContainer?.setVolume(this.activeVolume);
|
|
68
|
+
this.core.activePlayback.volume(0);
|
|
69
|
+
}
|
|
70
|
+
onVolumeChange(volume) {
|
|
71
|
+
trace(`${T} onVolumeChange`, { volume });
|
|
72
|
+
this.activeVolume = volume;
|
|
69
73
|
}
|
|
70
74
|
onEnter() {
|
|
71
|
-
|
|
75
|
+
trace(`${T} onEnter`);
|
|
76
|
+
this.fade(this.duration, 1);
|
|
77
|
+
}
|
|
78
|
+
onLeave() {
|
|
79
|
+
trace(`${T} onLeave`);
|
|
80
|
+
this.fade(this.duration, 0);
|
|
72
81
|
}
|
|
73
|
-
|
|
74
|
-
this.
|
|
82
|
+
fade(duration, to) {
|
|
83
|
+
this.stopFade();
|
|
75
84
|
const start = new Date().getTime();
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
const
|
|
85
|
+
const from = 1 - to;
|
|
86
|
+
this.timerId = setInterval(() => {
|
|
87
|
+
const delta = new Date().getTime() - start;
|
|
88
|
+
const progress = Math.min(1, delta / duration);
|
|
89
|
+
const normVol = progress * to + (1 - progress) * from;
|
|
90
|
+
const volume = normVol * this.activeVolume;
|
|
91
|
+
this.core.activePlayback.volume(volume);
|
|
82
92
|
try {
|
|
83
|
-
this.
|
|
84
|
-
this.core.trigger(VolumeFadeEvents.FADE, progress * this._aboveBorderVolume);
|
|
93
|
+
this.core.trigger(VolumeFadeEvents.FADE, volume);
|
|
85
94
|
}
|
|
86
95
|
catch (error) {
|
|
87
|
-
// LogManager.exception(error);
|
|
88
96
|
reportError(error);
|
|
89
|
-
this.clearCurrentInterval();
|
|
90
97
|
}
|
|
91
|
-
if (progress >= 1
|
|
92
|
-
this.
|
|
98
|
+
if (progress >= 1) {
|
|
99
|
+
this.stopFade();
|
|
93
100
|
}
|
|
94
101
|
}, 10);
|
|
95
102
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
this.
|
|
103
|
+
stopFade() {
|
|
104
|
+
trace(`${T} stopFade`);
|
|
105
|
+
if (this.timerId !== null) {
|
|
106
|
+
clearInterval(this.timerId);
|
|
107
|
+
this.timerId = null;
|
|
100
108
|
}
|
|
101
109
|
}
|
|
102
|
-
onLeave() {
|
|
103
|
-
this.numberTo(this.delay, 1);
|
|
104
|
-
}
|
|
105
110
|
}
|