@gcorevideo/player 2.22.18 → 2.22.21

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 (94) hide show
  1. package/assets/audio-selector/track-selector.ejs +3 -3
  2. package/assets/bottom-gear/bottomgear.ejs +3 -3
  3. package/assets/dvr-controls/dvr_controls.scss +0 -12
  4. package/assets/level-selector/button.ejs +1 -1
  5. package/dist/core.js +1 -1
  6. package/dist/index.css +664 -671
  7. package/dist/index.js +285 -260
  8. package/dist/player.d.ts +144 -123
  9. package/dist/plugins/index.css +758 -765
  10. package/dist/plugins/index.js +194 -172
  11. package/docs/api/player.clapprstats.exportmetrics.md +2 -2
  12. package/docs/api/player.clapprstats.md +0 -4
  13. package/docs/api/player.clapprstatsbitratetrack.md +20 -0
  14. package/docs/api/player.clapprstatschronograph.md +115 -0
  15. package/docs/api/player.clapprstatscounter.md +211 -0
  16. package/docs/api/player.clapprstatsevents.md +51 -0
  17. package/docs/api/player.clapprstatsmetrics.md +52 -0
  18. package/docs/api/player.clipspluginsettings.md +1 -1
  19. package/docs/api/player.gearevents.md +1 -1
  20. package/docs/api/player.md +57 -2
  21. package/docs/api/player.mediacontrol.mount.md +0 -5
  22. package/docs/api/player.mediacontrol.putelement.md +5 -0
  23. package/docs/api/player.mediacontrol.toggleelement.md +1 -1
  24. package/docs/api/player.nerdstats.md +3 -3
  25. package/docs/api/player.playerconfig.md +1 -1
  26. package/docs/api/player.playerconfig.playbacktype.md +6 -1
  27. package/docs/api/player.timeupdate.md +6 -3
  28. package/lib/plugins/audio-selector/AudioSelector.d.ts +1 -1
  29. package/lib/plugins/audio-selector/AudioSelector.d.ts.map +1 -1
  30. package/lib/plugins/audio-selector/AudioSelector.js +15 -8
  31. package/lib/plugins/bottom-gear/BottomGear.d.ts +1 -1
  32. package/lib/plugins/bottom-gear/BottomGear.js +2 -2
  33. package/lib/plugins/clappr-nerd-stats/NerdStats.d.ts +4 -4
  34. package/lib/plugins/clappr-nerd-stats/NerdStats.js +4 -4
  35. package/lib/plugins/clappr-stats/ClapprStats.d.ts +5 -2
  36. package/lib/plugins/clappr-stats/ClapprStats.d.ts.map +1 -1
  37. package/lib/plugins/clappr-stats/ClapprStats.js +31 -33
  38. package/lib/plugins/clappr-stats/types.d.ts +21 -21
  39. package/lib/plugins/clappr-stats/types.d.ts.map +1 -1
  40. package/lib/plugins/clappr-stats/types.js +22 -22
  41. package/lib/plugins/clappr-stats/utils.d.ts +2 -2
  42. package/lib/plugins/clappr-stats/utils.d.ts.map +1 -1
  43. package/lib/plugins/click-to-pause/ClickToPause.js +1 -1
  44. package/lib/plugins/clips/Clips.d.ts +1 -1
  45. package/lib/plugins/dvr-controls/DvrControls.d.ts +6 -2
  46. package/lib/plugins/dvr-controls/DvrControls.d.ts.map +1 -1
  47. package/lib/plugins/dvr-controls/DvrControls.js +39 -27
  48. package/lib/plugins/media-control/MediaControl.d.ts +9 -2
  49. package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
  50. package/lib/plugins/media-control/MediaControl.js +26 -10
  51. package/lib/plugins/picture-in-picture/PictureInPicture.js +1 -1
  52. package/lib/plugins/subtitles/ClosedCaptions.js +1 -1
  53. package/lib/plugins/vast-ads/VastAds.js +1 -1
  54. package/lib/plugins/vast-ads/rollmanager.js +1 -1
  55. package/lib/plugins/volume-fade/VolumeFade.d.ts +25 -10
  56. package/lib/plugins/volume-fade/VolumeFade.d.ts.map +1 -1
  57. package/lib/plugins/volume-fade/VolumeFade.js +62 -60
  58. package/lib/testUtils.d.ts.map +1 -1
  59. package/lib/testUtils.js +7 -4
  60. package/lib/types.d.ts +1 -1
  61. package/package.json +3 -3
  62. package/src/playback/__tests__/HTML5Video.test.ts +2 -2
  63. package/src/plugins/audio-selector/AudioSelector.ts +14 -7
  64. package/src/plugins/audio-selector/__tests__/AudioSelector.test.ts +8 -8
  65. package/src/plugins/audio-selector/__tests__/__snapshots__/AudioSelector.test.ts.snap +15 -15
  66. package/src/plugins/bottom-gear/BottomGear.ts +2 -2
  67. package/src/plugins/bottom-gear/__tests__/BottomGear.test.ts +8 -5
  68. package/src/plugins/bottom-gear/__tests__/__snapshots__/BottomGear.test.ts.snap +3 -3
  69. package/src/plugins/clappr-nerd-stats/NerdStats.ts +5 -5
  70. package/src/plugins/clappr-stats/ClapprStats.ts +41 -40
  71. package/src/plugins/clappr-stats/__tests__/ClapprStats.test.ts +12 -12
  72. package/src/plugins/clappr-stats/types.ts +21 -21
  73. package/src/plugins/clappr-stats/utils.ts +2 -2
  74. package/src/plugins/click-to-pause/ClickToPause.ts +1 -1
  75. package/src/plugins/clips/Clips.ts +1 -1
  76. package/src/plugins/clips/__tests__/Clips.test.ts +1 -1
  77. package/src/plugins/clips/__tests__/__snapshots__/Clips.test.ts.snap +1 -1
  78. package/src/plugins/dvr-controls/DvrControls.ts +51 -37
  79. package/src/plugins/dvr-controls/__tests__/DvrControls.test.ts +84 -26
  80. package/src/plugins/dvr-controls/__tests__/__snapshots__/DvrControls.test.ts.snap +0 -12
  81. package/src/plugins/level-selector/__tests__/__snapshots__/QualityLevels.test.ts.snap +1 -1
  82. package/src/plugins/media-control/MediaControl.ts +27 -10
  83. package/src/plugins/media-control/__tests__/MediaControl.test.ts +8 -5
  84. package/src/plugins/media-control/__tests__/__snapshots__/MediaControl.test.ts.snap +20 -20
  85. package/src/plugins/picture-in-picture/PictureInPicture.ts +1 -1
  86. package/src/plugins/subtitles/ClosedCaptions.ts +1 -1
  87. package/src/plugins/subtitles/__tests__/ClosedCaptions.test.ts +1 -1
  88. package/src/plugins/vast-ads/VastAds.ts +1 -1
  89. package/src/plugins/vast-ads/rollmanager.ts +1 -1
  90. package/src/plugins/volume-fade/VolumeFade.ts +92 -75
  91. package/src/testUtils.ts +11 -5
  92. package/src/types.ts +1 -1
  93. package/temp/player.api.json +634 -16
  94. package/tsconfig.tsbuildinfo +1 -1
package/dist/player.d.ts CHANGED
@@ -101,7 +101,7 @@ declare class AudioTracks extends UICorePlugin {
101
101
  private buttonElementText;
102
102
  private trackElement;
103
103
  private getTitle;
104
- private startTrackSwitch;
104
+ private startTrackSwitching;
105
105
  private updateText;
106
106
  private highlightCurrentTrack;
107
107
  }
@@ -158,16 +158,6 @@ export declare class BigMuteButton extends UICorePlugin {
158
158
  private handleBigMuteBtnClick;
159
159
  }
160
160
 
161
- /**
162
- * @beta
163
- */
164
- declare type BitrateTrackRecord = {
165
- start: number;
166
- end?: number;
167
- time?: number;
168
- bitrate: number;
169
- };
170
-
171
161
  /**
172
162
  * `PLUGIN` that adds a button to extend the media controls UI with extra options.
173
163
  * @beta
@@ -311,23 +301,14 @@ export declare class BottomGear extends UICorePlugin {
311
301
  private onMediaControlRendered;
312
302
  }
313
303
 
314
- /**
315
- * @beta
316
- */
317
- declare enum Chronograph {
318
- Startup = "startup",
319
- Watch = "watch",
320
- Pause = "pause",
321
- Buffering = "buffering",
322
- Session = "session"
323
- }
324
-
325
304
  /**
326
305
  * `PLUGIN` that measures data about playback, which can be useful for analyzing performance and UX.
327
306
  * @beta
328
307
  * @remarks
329
308
  * This plugin does not render anything and is supposed to be extended or used together with other plugins that actually render something.
330
309
  *
310
+ * @see {@link NerdStats} - a plugin that visualises the playback metrics
311
+ *
331
312
  * Configuration options - {@link ClapprStatsSettings}
332
313
  *
333
314
  * Events - {@link ClapprStatsEvents}
@@ -367,7 +348,7 @@ export declare class ClapprStats extends ContainerPlugin {
367
348
  * Returns the collected metrics.
368
349
  * @returns Measurements collected so far
369
350
  */
370
- exportMetrics(): Metrics;
351
+ exportMetrics(): ClapprStatsMetrics;
371
352
  private onBitrate;
372
353
  private stopReporting;
373
354
  private startTimers;
@@ -389,6 +370,112 @@ export declare class ClapprStats extends ContainerPlugin {
389
370
  private html5FetchFPS;
390
371
  }
391
372
 
373
+ /**
374
+ * @beta
375
+ */
376
+ export declare type ClapprStatsBitrateTrack = {
377
+ start: number;
378
+ end?: number;
379
+ time?: number;
380
+ bitrate: number;
381
+ };
382
+
383
+ /**
384
+ * @beta
385
+ */
386
+ export declare enum ClapprStatsChronograph {
387
+ Startup = "startup",
388
+ Watch = "watch",
389
+ Pause = "pause",
390
+ Buffering = "buffering",
391
+ Session = "session"
392
+ }
393
+
394
+ /**
395
+ * @beta
396
+ */
397
+ export declare enum ClapprStatsCounter {
398
+ Play = "play",
399
+ Pause = "pause",
400
+ Error = "error",
401
+ Buffering = "buffering",
402
+ DecodedFrames = "decodedFrames",
403
+ DroppedFrames = "droppedFrames",
404
+ Fps = "fps",
405
+ ChangeLevel = "changeLevel",
406
+ Seek = "seek",
407
+ Fullscreen = "fullscreen",
408
+ DvrUsage = "dvrUsage"
409
+ }
410
+
411
+ /**
412
+ * @beta
413
+ */
414
+ export declare enum ClapprStatsEvents {
415
+ /**
416
+ * Emitted periodically with current measurements.
417
+ */
418
+ REPORT = "clappr:stats:report"
419
+ }
420
+
421
+ /**
422
+ * @beta
423
+ */
424
+ export declare type ClapprStatsMetrics = {
425
+ /**
426
+ * Events count counters
427
+ */
428
+ counters: {
429
+ /**
430
+ *
431
+ */
432
+ [ClapprStatsCounter.Play]: number;
433
+ [ClapprStatsCounter.Pause]: number;
434
+ [ClapprStatsCounter.Error]: number;
435
+ [ClapprStatsCounter.Buffering]: number;
436
+ [ClapprStatsCounter.DecodedFrames]: number;
437
+ [ClapprStatsCounter.DroppedFrames]: number;
438
+ [ClapprStatsCounter.Fps]: number;
439
+ [ClapprStatsCounter.ChangeLevel]: number;
440
+ [ClapprStatsCounter.Seek]: number;
441
+ [ClapprStatsCounter.Fullscreen]: number;
442
+ [ClapprStatsCounter.DvrUsage]: number;
443
+ };
444
+ /**
445
+ * Time measurements - accumulated duration of time-based activities
446
+ */
447
+ chrono: {
448
+ /**
449
+ * Time spent in the startup phase
450
+ */
451
+ [ClapprStatsChronograph.Startup]: number;
452
+ /**
453
+ * Total time spent in the watch phase
454
+ */
455
+ [ClapprStatsChronograph.Watch]: number;
456
+ /**
457
+ *
458
+ */
459
+ [ClapprStatsChronograph.Pause]: number;
460
+ [ClapprStatsChronograph.Buffering]: number;
461
+ [ClapprStatsChronograph.Session]: number;
462
+ };
463
+ extra: {
464
+ playbackName: string;
465
+ playbackType: string;
466
+ bitratesHistory: ClapprStatsBitrateTrack[];
467
+ bitrateWeightedMean: number;
468
+ bitrateMostUsed: number;
469
+ buffersize: number;
470
+ watchHistory: Array<[number, number]>;
471
+ watchedPercentage: number;
472
+ bufferingPercentage: number;
473
+ bandwidth: number;
474
+ duration: number;
475
+ currentTime: number;
476
+ };
477
+ };
478
+
392
479
  export declare type ClapprStatsSettings = {
393
480
  /**
394
481
  * The interval in milliseconds of periodic measurements.
@@ -476,7 +563,7 @@ export declare class Clips extends UICorePlugin {
476
563
  }
477
564
 
478
565
  /**
479
- * Configuration options for the {@link ClipsPlugin} plugin.
566
+ * Configuration options for the {@link Clips} plugin.
480
567
  * @beta
481
568
  */
482
569
  export declare interface ClipsPluginSettings {
@@ -693,23 +780,6 @@ export declare type CorePluginConstructor = {
693
780
  type: string;
694
781
  };
695
782
 
696
- /**
697
- * @beta
698
- */
699
- declare enum Counter {
700
- Play = "play",
701
- Pause = "pause",
702
- Error = "error",
703
- Buffering = "buffering",
704
- DecodedFrames = "decodedFrames",
705
- DroppedFrames = "droppedFrames",
706
- Fps = "fps",
707
- ChangeLevel = "changeLevel",
708
- Seek = "seek",
709
- Fullscreen = "fullscreen",
710
- DvrUsage = "dvrUsage"
711
- }
712
-
713
783
  /**
714
784
  * A plain JS object that must conform to the DASH.js settings schema.
715
785
  * @public
@@ -760,13 +830,17 @@ export declare class DvrControls extends UICorePlugin {
760
830
  */
761
831
  bindEvents(): void;
762
832
  private onCoreReady;
763
- private bindContainerEvents;
833
+ private onActiveContainerChanged;
764
834
  private click;
765
- private shouldRender;
766
835
  /**
767
836
  * @internal
768
837
  */
769
838
  render(): this;
839
+ private onMediacontrolRendered;
840
+ private onMetadataLoaded;
841
+ private mount;
842
+ private onDvrStateChanged;
843
+ private toggleState;
770
844
  }
771
845
 
772
846
  /**
@@ -918,7 +992,7 @@ export declare interface FaviconPluginSettings {
918
992
  */
919
993
  export declare enum GearEvents {
920
994
  /**
921
- * Use this event to accurately attach an item to the gear menu
995
+ * Subscribe to this event to accurately attach an item to the gear menu
922
996
  */
923
997
  RENDERED = "rendered"
924
998
  }
@@ -1206,7 +1280,6 @@ export declare class MediaControl extends UICorePlugin {
1206
1280
  * Get a media control element DOM node
1207
1281
  * @param name - The name of the media control element
1208
1282
  * @returns The DOM node to render to or extend
1209
- * @deprecated Use {@link MediaControl.putElement} instead
1210
1283
  * @remarks
1211
1284
  * Use this method to render custom media control UI in a plugin
1212
1285
  * @example
@@ -1221,11 +1294,16 @@ export declare class MediaControl extends UICorePlugin {
1221
1294
  * ```
1222
1295
  */
1223
1296
  mount(name: MediaControlElement, element: ZeptoResult): void;
1297
+ /**
1298
+ * @deprecated Use {@link MediaControl.mount} instead
1299
+ * @param name
1300
+ * @param element
1301
+ */
1224
1302
  putElement(name: MediaControlElement, element: ZeptoResult): void;
1225
1303
  /**
1226
1304
  * Toggle the visibility of a media control element
1227
1305
  * @param name - The name of the media control element
1228
- * @param show - Whether to show or hide the element
1306
+ * @param show - Visibility state
1229
1307
  */
1230
1308
  toggleElement(area: MediaControlElement, show: boolean): void;
1231
1309
  private getRightPanel;
@@ -1331,65 +1409,6 @@ export declare type MenuOption = {
1331
1409
  icon?: string;
1332
1410
  };
1333
1411
 
1334
- /**
1335
- * @beta
1336
- */
1337
- declare type Metrics = {
1338
- /**
1339
- * Events count counters
1340
- */
1341
- counters: {
1342
- /**
1343
- *
1344
- */
1345
- [Counter.Play]: number;
1346
- [Counter.Pause]: number;
1347
- [Counter.Error]: number;
1348
- [Counter.Buffering]: number;
1349
- [Counter.DecodedFrames]: number;
1350
- [Counter.DroppedFrames]: number;
1351
- [Counter.Fps]: number;
1352
- [Counter.ChangeLevel]: number;
1353
- [Counter.Seek]: number;
1354
- [Counter.Fullscreen]: number;
1355
- [Counter.DvrUsage]: number;
1356
- };
1357
- /**
1358
- * Time measurements - accumulated duration of time-based activities
1359
- */
1360
- chrono: {
1361
- /**
1362
- * Time spent in the startup phase
1363
- */
1364
- [Chronograph.Startup]: number;
1365
- /**
1366
- * Total time spent in the watch phase
1367
- */
1368
- [Chronograph.Watch]: number;
1369
- /**
1370
- *
1371
- */
1372
- [Chronograph.Pause]: number;
1373
- [Chronograph.Buffering]: number;
1374
- [Chronograph.Session]: number;
1375
- };
1376
- extra: {
1377
- playbackName: string;
1378
- playbackType: string;
1379
- bitratesHistory: BitrateTrackRecord[];
1380
- bitrateWeightedMean: number;
1381
- bitrateMostUsed: number;
1382
- buffersize: number;
1383
- watchHistory: Array<[number, number]>;
1384
- watchedPercentage: number;
1385
- bufferingPercentage: number;
1386
- bandwidth: number;
1387
- duration: number;
1388
- currentTime: number;
1389
- };
1390
- custom: Record<string, unknown>;
1391
- };
1392
-
1393
1412
  /**
1394
1413
  * `PLUGIN` that adds support for loading multiple streams and switching between them using the media control UI.
1395
1414
  * @beta
@@ -1444,15 +1463,15 @@ export declare class MultiCamera extends UICorePlugin {
1444
1463
  }
1445
1464
 
1446
1465
  /**
1447
- * `PLUGIN` that displays useful network-related statistics.
1466
+ * `PLUGIN` that displays useful statistics regarding the playback as well as the network quality estimation.
1448
1467
  * @beta
1449
1468
  *
1450
1469
  * @remarks
1451
1470
  * Depends on:
1452
1471
  *
1453
- * - {@link BottomGear}
1472
+ * - {@link BottomGear} - where the button is attached
1454
1473
  *
1455
- * - {@link ClapprStats}
1474
+ * - {@link ClapprStats} - to get the metrics from
1456
1475
  *
1457
1476
  * The plugin is rendered as an item in the gear menu.
1458
1477
  *
@@ -1461,9 +1480,9 @@ export declare class MultiCamera extends UICorePlugin {
1461
1480
  */
1462
1481
  declare class NerdStats extends UICorePlugin {
1463
1482
  private container;
1464
- private customMetrics;
1483
+ private speedtestMetrics;
1465
1484
  private metrics;
1466
- private showing;
1485
+ private open;
1467
1486
  private shortcut;
1468
1487
  private iconPosition;
1469
1488
  private static readonly buttonTemplate;
@@ -1482,17 +1501,17 @@ declare class NerdStats extends UICorePlugin {
1482
1501
  * @internal
1483
1502
  */
1484
1503
  get attributes(): {
1485
- 'data-clappr-nerd-stats': string;
1486
1504
  class: string;
1487
1505
  };
1488
1506
  /**
1489
1507
  * @internal
1490
1508
  */
1491
1509
  get events(): {
1492
- 'click [data-show-stats-button]': string;
1493
- 'click [data-close-button]': string;
1494
- 'click [data-refresh-button]': string;
1510
+ click: string;
1511
+ 'click #nerd-stats-close': string;
1512
+ 'click #nerd-stats-refresh': string;
1495
1513
  };
1514
+ private clicked;
1496
1515
  private get statsBoxElem();
1497
1516
  private get statsBoxWidthThreshold();
1498
1517
  private get playerWidth();
@@ -1503,6 +1522,7 @@ declare class NerdStats extends UICorePlugin {
1503
1522
  */
1504
1523
  bindEvents(): void;
1505
1524
  private onCoreReady;
1525
+ private onActiveContainerChanged;
1506
1526
  /**
1507
1527
  * @internal
1508
1528
  */
@@ -1511,17 +1531,19 @@ declare class NerdStats extends UICorePlugin {
1511
1531
  private show;
1512
1532
  private hide;
1513
1533
  private onPlayerResize;
1514
- private addGeneralMetrics;
1515
- private addCustomMetrics;
1534
+ private updateResolution;
1535
+ private estimateQuality;
1516
1536
  private updateMetrics;
1537
+ private updateEstimatedQuality;
1517
1538
  private setStatsBoxSize;
1518
1539
  /**
1519
1540
  * @internal
1520
1541
  */
1521
1542
  render(): this;
1522
- private addToBottomGear;
1523
- private clearCustomMetrics;
1543
+ private attach;
1544
+ private clearSpeedtestMetrics;
1524
1545
  private refreshSpeedTest;
1546
+ private formatPlaybackName;
1525
1547
  }
1526
1548
  export { NerdStats as ClapprNerdStats }
1527
1549
  export { NerdStats }
@@ -2041,7 +2063,7 @@ export declare interface PlayerConfig extends Record<string, unknown> {
2041
2063
  mute?: boolean;
2042
2064
  /**
2043
2065
  * Stream type.
2044
- * @remark
2066
+ * @remarks
2045
2067
  * Should only be set if known in advance, as it should not change once determined.
2046
2068
  * Otherwise it might cause inconsistencies in the UI plugins behavior, for instance, glitches with rendering of the DVR controls or seek bar.
2047
2069
  */
@@ -2447,7 +2469,7 @@ export declare class SeekTime extends UICorePlugin {
2447
2469
  private $seekTimeEl;
2448
2470
  bindEvents(): void;
2449
2471
  private onContainerChanged;
2450
- private updateDuration;
2472
+ private onTimeUpdate;
2451
2473
  private showTime;
2452
2474
  private hideTime;
2453
2475
  private calculateHoverPosition;
@@ -2966,10 +2988,9 @@ export declare type TimeProgress = {
2966
2988
  /**
2967
2989
  * For the plugin development
2968
2990
  * @beta
2991
+ * @deprecated Use TimePosition instead
2969
2992
  */
2970
- export declare type TimeUpdate = TimePosition & {
2971
- firstFragDateTime: number;
2972
- };
2993
+ export declare type TimeUpdate = TimePosition;
2973
2994
 
2974
2995
  /**
2975
2996
  * Playback time position in seconds since the beginning of the stream.