@gcorevideo/player 2.22.21 → 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/dist/core.js +1 -1
- package/dist/index.css +686 -678
- package/dist/index.js +49 -31
- package/dist/player.d.ts +32 -10
- package/dist/plugins/index.css +612 -604
- package/dist/plugins/index.js +48 -30
- package/docs/api/player.extendedevents.md +45 -0
- package/docs/api/player.md +21 -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/volume-fade/VolumeFade.d.ts +3 -1
- package/lib/plugins/volume-fade/VolumeFade.d.ts.map +1 -1
- package/lib/plugins/volume-fade/VolumeFade.js +6 -3
- 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/volume-fade/VolumeFade.ts +6 -3
- package/temp/player.api.json +100 -2
- package/tsconfig.tsbuildinfo +1 -1
package/dist/index.js
CHANGED
|
@@ -43303,7 +43303,7 @@ class Player {
|
|
|
43303
43303
|
}
|
|
43304
43304
|
}
|
|
43305
43305
|
|
|
43306
|
-
var version$1 = "2.22.
|
|
43306
|
+
var version$1 = "2.22.22";
|
|
43307
43307
|
|
|
43308
43308
|
var packages = {
|
|
43309
43309
|
"node_modules/@clappr/core": {
|
|
@@ -44067,6 +44067,9 @@ class ClapprStats extends ContainerPlugin {
|
|
|
44067
44067
|
exportMetrics() {
|
|
44068
44068
|
return structuredClone(this.metrics);
|
|
44069
44069
|
}
|
|
44070
|
+
clearMetrics() {
|
|
44071
|
+
this.metrics = newMetrics$1();
|
|
44072
|
+
}
|
|
44070
44073
|
onBitrate(newBitrate) {
|
|
44071
44074
|
const bitrate = newBitrate.bitrate;
|
|
44072
44075
|
const now = this.now();
|
|
@@ -45840,6 +45843,7 @@ class Speedtest {
|
|
|
45840
45843
|
}
|
|
45841
45844
|
addTestPoint(server) {
|
|
45842
45845
|
this._checkServerDefinition(server);
|
|
45846
|
+
console.log('Speedtest addTestPoint %o', server);
|
|
45843
45847
|
if (this._state === 0) {
|
|
45844
45848
|
this._state = 1;
|
|
45845
45849
|
}
|
|
@@ -46144,7 +46148,7 @@ const getColor = (speedValue) => {
|
|
|
46144
46148
|
}
|
|
46145
46149
|
};
|
|
46146
46150
|
function drawSpeedTestResults() {
|
|
46147
|
-
const canvas = document.getElementById('
|
|
46151
|
+
const canvas = document.getElementById('nerd-stats-speed-test-canvas');
|
|
46148
46152
|
if (!canvas) {
|
|
46149
46153
|
return;
|
|
46150
46154
|
}
|
|
@@ -46267,7 +46271,7 @@ function rankConnectionSpeed(dlSpeed) {
|
|
|
46267
46271
|
return 0;
|
|
46268
46272
|
}
|
|
46269
46273
|
|
|
46270
|
-
const pluginHtml$4 = "<% general = metrics.general %>\n<% counters = metrics.counters %>\n<% timers = metrics.chrono %>\n<% extra = metrics.extra %>\n<% custom = metrics.custom %>\n\n<div class=\"stats-box\" id=\"nerd-stats-box\">\n <div class=\"stats-box-top\">\n <a class=\"close-button gplayer-lite-btn\" id=\"nerd-stats-close\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <g clip-path=\"url(#clip0_184_1489)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.41376 6.00013L13.7068 -0.292872C14.0978 -0.683872 14.0978 -1.31587 13.7068 -1.70687C13.3158 -2.09787 12.6838 -2.09787 12.2928 -1.70687L5.99976 4.58613L-0.293238 -1.70687C-0.684238 -2.09787 -1.31624 -2.09787 -1.70724 -1.70687C-2.09824 -1.31587 -2.09824 -0.683872 -1.70724 -0.292872L4.58576 6.00013L-1.70724 12.2931C-2.09824 12.6841 -2.09824 13.3161 -1.70724 13.7071C-1.51224 13.9021 -1.25624 14.0001 -1.00024 14.0001C-0.744238 14.0001 -0.488238 13.9021 -0.293238 13.7071L5.99976 7.41413L12.2928 13.7071C12.4878 13.9021 12.7438 14.0001 12.9998 14.0001C13.2558 14.0001 13.5118 13.9021 13.7068 13.7071C14.0978 13.3161 14.0978 12.6841 13.7068 12.2931L7.41376 6.00013Z\"\n fill=\"white\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_184_1489\">\n <rect width=\"12\" height=\"12\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n </a>\n </div>\n <div class=\"stats-box-main\">\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.general') %></span></li>\n <li>\n <%= i18n.t('stats.display_resolution') %>\n <div><span><span id=\"nerd-stats-resolution-width\"><%= general.resolution.width %></span>×<span id=\"nerd-stats-resolution-height\"><%= general.resolution.height %></span></span></div>\n </li>\n <li>\n <%= i18n.t('stats.volume') %>\n <div id=\"nerd-stats-volume\"><span><%= general.volume %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.connection_speed') %>\n <div><span id=\"dlText\"><%= custom.connectionSpeed %></span> <%= i18n.t('mbps') %></div>\n </li>\n <li class=\"canvas-wrapper\">\n <canvas id=\"speedTestCanvas\" width=\"190\" height=\"20\"></canvas>\n </li>\n <li>\n <%= i18n.t('stats.ping') %>\n <div><span id=\"pingText\"><%= custom.ping %></span> <%= i18n.t('ms') %></div>\n </li>\n <li>\n <%= i18n.t('stats.jitter') %>\n <div><span id=\"jitterText\"><%= custom.jitter %></span> <%= i18n.t('ms') %></div>\n </li>\n </ul>\n\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.counters') %></span></li>\n <li>\n <%= i18n.t('stats.plays') %>\n <div><span id=\"nerd-stats-plays\"><%= counters.play %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.pauses') %>\n <div><span id=\"nerd-stats-pauses\"><%= counters.pause %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.errors') %>\n <div><span id=\"nerd-stats-errors\"><%= counters.error %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bufferings') %>\n <div><span id=\"nerd-stats-bufferings\"><%= counters.buffering %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.decoded_frames') %>\n <div><span id=\"nerd-stats-decoded-frames\"><%= counters.decodedFrames %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.dropped_frames') %>\n <div><span id=\"nerd-stats-dropped-frames\"><%= counters.droppedFrames %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.fps') %>\n <div><span id=\"nerd-stats-fps\"><%= counters.fps %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bitrate_changes') %>\n <div><span id=\"nerd-stats-bitrate-changes\"><%= counters.changeLevel %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.seeks') %>\n <div><span id=\"nerd-stats-seeks\"><%= counters.seek %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.fullscreen') %>\n <div><span id=\"nerd-stats-fullscreen\"><%= counters.fullscreen %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.dvr_seeks') %>\n <div><span id=\"nerd-stats-dvr-usage\"><%= counters.dvrUsage %></span></div>\n </li>\n </ul>\n\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.duration') %></span></li>\n <li>\n <%= i18n.t('stats.startup') %>\n <div><span id=\"nerd-stats-startup-time\"><%= timers.startup %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.watching') %>\n <div><span id=\"nerd-stats-watch-time\"><%= timers.watch %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.paused') %>\n <div><span id=\"nerd-stats-pause-time\"><%= timers.pause %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.buffering') %>\n <div><span id=\"nerd-stats-buffering-time\"><%= timers.buffering %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.session') %>\n <div><span id=\"nerd-stats-session-time\"><%= timers.session %></span></div>\n </li>\n </ul>\n\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.extra') %></span></li>\n <li>\n <%= i18n.t('stats.playback') %>\n <div><span id=\"nerd-stats-playback-name\"><%= extra.playbackName %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.playback_type') %>\n <div><span id=\"nerd-stats-playback-type\"><%= extra.playbackType %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.buffer_size') %>\n <div><span id=\"nerd-stats-buffer-size\"><%= extra.buffersize %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.video_duration') %>\n <div><span id=\"nerd-stats-video-duration\"><%= extra.duration %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.current_time') %>\n <div><span id=\"nerd-stats-current-time\"><%= extra.currentTime %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bitrate_weighted_mean') %>\n <div><span id=\"nerd-stats-bitrate-weighted-mean\"><%= extra.bitrateWeightedMean %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bitrate_most_used') %>\n <div><span id=\"nerd-stats-bitrate-most-used\"><%= extra.bitrateMostUsed %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.watched_percentage') %>\n <div><span id=\"nerd-stats-watched-percentage\"><%= extra.watchedPercentage %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.buffering_percentage') %>\n <div><span id=\"nerd-stats-buffering-percentage\"><%= extra.bufferingPercentage %></span></div>\n </li>\n </ul>\n </div>\n <div class=\"speedtest-summary\">\n <div class=\"speedtest-summary-header\"><%= i18n.t('stats.your_internet_quality_summary') %>:</div>\n <div class=\"speedtest-summary-block\">\n <div class=\"speedtest-summary-subblock\">\n <div class=\"speedtest-summary-subblock-content\">\n <div class=\"speedtest-quality\">\n <div class=\"speedtest-quality-header\"><%= i18n.t('vod') %>: \n <span id=\"nerd-stats-quality-vod-text\"><%= custom.vodQuality %></span></div>\n <div class=\"speedtest-quality-content\" data-streaming-type=\"vod\" id=\"nerd-stats-quality-vod\">\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"speedtest-summary-subblock\">\n <div class=\"speedtest-summary-subblock-content\">\n <div class=\"speedtest-quality\">\n <div class=\"speedtest-quality-header\"><%= i18n.t('live') %>: \n <span id=\"nerd-stats-quality-live-text\"><%= custom.liveQuality %></span></div>\n <div class=\"speedtest-quality-content\" data-streaming-type=\"live\" id=\"nerd-stats-quality-live\">\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"speedtest-footer\">\n <!-- <a class=\"speedtest-footer-about-link\" href=\"\" target=\"_blank\">I am not a nerd, what's this all about?</a>-->\n <button class=\"gplayer-lite-btn speedtest-btn speedtest-footer-refresh\" type=\"button\" id=\"nerd-stats-refresh\">\n <svg width=\"12\" height=\"10\" viewBox=\"0 0 12 10\" fill=\"none\">\n <path\n d=\"M6.03968 0.124998C3.64268 0.124998 1.67268 1.9565 1.48068 4.2915H1.00018C0.925833 4.29146 0.853156 4.31353 0.791378 4.35489C0.729601 4.39625 0.681511 4.45503 0.653218 4.52378C0.624925 4.59253 0.617705 4.66814 0.632476 4.74101C0.647248 4.81387 0.683343 4.88069 0.736177 4.933L1.57618 5.766C1.64641 5.83561 1.74129 5.87467 1.84018 5.87467C1.93906 5.87467 2.03395 5.83561 2.10418 5.766L2.94418 4.933C2.99701 4.88069 3.03311 4.81387 3.04788 4.74101C3.06265 4.66814 3.05543 4.59253 3.02714 4.52378C2.99884 4.45503 2.95075 4.39625 2.88898 4.35489C2.8272 4.31353 2.75452 4.29146 2.68018 4.2915H2.23368C2.42368 2.376 4.05268 0.874998 6.03968 0.874998C6.6948 0.873639 7.33932 1.04039 7.91158 1.35931C8.48384 1.67822 8.9647 2.13863 9.30818 2.6965C9.33331 2.73978 9.36686 2.7776 9.40684 2.80771C9.44682 2.83783 9.49243 2.85963 9.54097 2.87184C9.58951 2.88405 9.64001 2.88643 9.68948 2.87881C9.73895 2.8712 9.7864 2.85377 9.82902 2.82753C9.87165 2.80129 9.90859 2.76679 9.93767 2.72605C9.96675 2.68531 9.98739 2.63916 9.99835 2.59032C10.0093 2.54148 10.0104 2.49095 10.0015 2.44168C9.99264 2.39242 9.974 2.34544 9.94668 2.3035C9.53615 1.63664 8.96146 1.08621 8.27752 0.704805C7.59359 0.323402 6.82277 0.123774 6.03968 0.124998ZM10.4207 4.2335C10.3505 4.16419 10.2558 4.12532 10.1572 4.12532C10.0585 4.12532 9.96386 4.16419 9.89368 4.2335L9.05018 5.0665C8.9972 5.11874 8.96096 5.18557 8.94608 5.25847C8.93119 5.33137 8.93833 5.40705 8.96658 5.47588C8.99483 5.54472 9.04292 5.60359 9.10473 5.64501C9.16654 5.68644 9.23927 5.70853 9.31368 5.7085H9.76318C9.57218 7.6235 7.93768 9.125 5.94118 9.125C5.28399 9.12683 4.63729 8.96035 4.06269 8.64141C3.48808 8.32247 3.00473 7.86169 2.65868 7.303C2.63281 7.26107 2.59893 7.22465 2.55899 7.19582C2.51904 7.16699 2.47381 7.14631 2.42587 7.13495C2.37793 7.1236 2.32823 7.1218 2.27959 7.12966C2.23096 7.13752 2.18435 7.15488 2.14243 7.18075C2.05776 7.233 1.99731 7.31674 1.97438 7.41355C1.95146 7.51037 1.96793 7.61233 2.02018 7.697C2.43345 8.36457 3.01076 8.91521 3.69713 9.29647C4.38349 9.67772 5.15604 9.87689 5.94118 9.875C8.34518 9.875 10.3237 8.045 10.5162 5.7085H11.0002C11.0746 5.70853 11.1473 5.68644 11.2091 5.64501C11.2709 5.60359 11.319 5.54472 11.3473 5.47588C11.3755 5.40705 11.3827 5.33137 11.3678 5.25847C11.3529 5.18557 11.3167 5.11874 11.2637 5.0665L10.4207 4.2335Z\"\n fill=\"white\"/>\n </svg>\n <%= i18n.t('stats.refresh') %>\n </button>\n </div>\n</div>\n";
|
|
46274
|
+
const pluginHtml$4 = "<% general = metrics.general %>\n<% counters = metrics.counters %>\n<% timers = metrics.chrono %>\n<% extra = metrics.extra %>\n<% custom = metrics.custom %>\n\n<div class=\"stats-box\" id=\"nerd-stats-box\">\n <div class=\"stats-box-top\">\n <a class=\"close-button gplayer-lite-btn\" id=\"nerd-stats-close\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <g clip-path=\"url(#clip0_184_1489)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.41376 6.00013L13.7068 -0.292872C14.0978 -0.683872 14.0978 -1.31587 13.7068 -1.70687C13.3158 -2.09787 12.6838 -2.09787 12.2928 -1.70687L5.99976 4.58613L-0.293238 -1.70687C-0.684238 -2.09787 -1.31624 -2.09787 -1.70724 -1.70687C-2.09824 -1.31587 -2.09824 -0.683872 -1.70724 -0.292872L4.58576 6.00013L-1.70724 12.2931C-2.09824 12.6841 -2.09824 13.3161 -1.70724 13.7071C-1.51224 13.9021 -1.25624 14.0001 -1.00024 14.0001C-0.744238 14.0001 -0.488238 13.9021 -0.293238 13.7071L5.99976 7.41413L12.2928 13.7071C12.4878 13.9021 12.7438 14.0001 12.9998 14.0001C13.2558 14.0001 13.5118 13.9021 13.7068 13.7071C14.0978 13.3161 14.0978 12.6841 13.7068 12.2931L7.41376 6.00013Z\"\n fill=\"white\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_184_1489\">\n <rect width=\"12\" height=\"12\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n </a>\n </div>\n <div class=\"stats-box-main\">\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.general') %></span></li>\n <li>\n <%= i18n.t('stats.display_resolution') %>\n <div><span><span id=\"nerd-stats-resolution-width\"><%= general.resolution.width %></span>×<span id=\"nerd-stats-resolution-height\"><%= general.resolution.height %></span></span></div>\n </li>\n <li>\n <%= i18n.t('stats.volume') %>\n <div id=\"nerd-stats-volume\"><span><%= general.volume %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.connection_speed') %>\n <div><span id=\"nerd-stats-dl-text\"><%= custom.connectionSpeed %></span> <%= i18n.t('mbps') %></div>\n </li>\n <li class=\"canvas-wrapper\">\n <canvas id=\"nerd-stats-speed-test-canvas\" width=\"190\" height=\"20\"></canvas>\n </li>\n <li>\n <%= i18n.t('stats.ping') %>\n <div><span id=\"nerd-stats-ping-text\"><%= custom.ping %></span> <%= i18n.t('ms') %></div>\n </li>\n <li>\n <%= i18n.t('stats.jitter') %>\n <div><span id=\"nerd-stats-jitter-text\"><%= custom.jitter %></span> <%= i18n.t('ms') %></div>\n </li>\n </ul>\n\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.duration') %></span></li>\n <li>\n <%= i18n.t('stats.startup') %>\n <div><span id=\"nerd-stats-startup-time\"><%= timers.startup %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.watching') %>\n <div><span id=\"nerd-stats-watch-time\"><%= timers.watch %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.paused') %>\n <div><span id=\"nerd-stats-pause-time\"><%= timers.pause %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.buffering') %>\n <div><span id=\"nerd-stats-buffering-time\"><%= timers.buffering %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.session') %>\n <div><span id=\"nerd-stats-session-time\"><%= timers.session %></span></div>\n </li>\n </ul>\n\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.counters') %></span></li>\n <li>\n <%= i18n.t('stats.plays') %>\n <div><span id=\"nerd-stats-plays\"><%= counters.play %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.pauses') %>\n <div><span id=\"nerd-stats-pauses\"><%= counters.pause %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.errors') %>\n <div><span id=\"nerd-stats-errors\"><%= counters.error %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bufferings') %>\n <div><span id=\"nerd-stats-bufferings\"><%= counters.buffering %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.decoded_frames') %>\n <div><span id=\"nerd-stats-decoded-frames\"><%= counters.decodedFrames %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.dropped_frames') %>\n <div><span id=\"nerd-stats-dropped-frames\"><%= counters.droppedFrames %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.fps') %>\n <div><span id=\"nerd-stats-fps\"><%= counters.fps %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bitrate_changes') %>\n <div><span id=\"nerd-stats-bitrate-changes\"><%= counters.changeLevel %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.seeks') %>\n <div><span id=\"nerd-stats-seeks\"><%= counters.seek %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.fullscreen') %>\n <div><span id=\"nerd-stats-fullscreen\"><%= counters.fullscreen %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.dvr_seeks') %>\n <div><span id=\"nerd-stats-dvr-usage\"><%= counters.dvrUsage %></span></div>\n </li>\n </ul>\n\n <ul>\n <li class=\"title\"><span><%= i18n.t('stats.extra') %></span></li>\n <li>\n <%= i18n.t('stats.playback') %>\n <div><span id=\"nerd-stats-playback-name\"><%= extra.playbackName %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.playback_type') %>\n <div><span id=\"nerd-stats-playback-type\"><%= extra.playbackType %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.buffer_size') %>\n <div><span id=\"nerd-stats-buffer-size\"><%= extra.buffersize %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.video_duration') %>\n <div><span id=\"nerd-stats-video-duration\"><%= extra.duration %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.current_time') %>\n <div><span id=\"nerd-stats-current-time\"><%= extra.currentTime %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bitrate_weighted_mean') %>\n <div><span id=\"nerd-stats-bitrate-weighted-mean\"><%= extra.bitrateWeightedMean %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.bitrate_most_used') %>\n <div><span id=\"nerd-stats-bitrate-most-used\"><%= extra.bitrateMostUsed %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.watched_percentage') %>\n <div><span id=\"nerd-stats-watched-percentage\"><%= extra.watchedPercentage %></span></div>\n </li>\n <li>\n <%= i18n.t('stats.buffering_percentage') %>\n <div><span id=\"nerd-stats-buffering-percentage\"><%= extra.bufferingPercentage %></span></div>\n </li>\n </ul>\n </div>\n <div class=\"speedtest-summary\">\n <div class=\"speedtest-summary-header\"><%= i18n.t('stats.your_internet_quality_summary') %>:</div>\n <div class=\"speedtest-summary-block\">\n <div class=\"speedtest-summary-subblock\">\n <div class=\"speedtest-summary-subblock-content\">\n <div class=\"speedtest-quality\">\n <div class=\"speedtest-quality-header\"><%= i18n.t('vod') %>: \n <span id=\"nerd-stats-quality-vod-text\"><%= custom.vodQuality %></span></div>\n <div class=\"speedtest-quality-content\" data-streaming-type=\"vod\" id=\"nerd-stats-quality-vod\">\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"speedtest-summary-subblock\">\n <div class=\"speedtest-summary-subblock-content\">\n <div class=\"speedtest-quality\">\n <div class=\"speedtest-quality-header\"><%= i18n.t('live') %>: \n <span id=\"nerd-stats-quality-live-text\"><%= custom.liveQuality %></span></div>\n <div class=\"speedtest-quality-content\" data-streaming-type=\"live\" id=\"nerd-stats-quality-live\">\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n <div class=\"speedtest-quality-content-item\"></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"speedtest-footer\">\n <!-- <a class=\"speedtest-footer-about-link\" href=\"\" target=\"_blank\">I am not a nerd, what's this all about?</a>-->\n <button class=\"gplayer-lite-btn speedtest-btn speedtest-footer-refresh\" type=\"button\" id=\"nerd-stats-refresh\">\n <svg width=\"12\" height=\"10\" viewBox=\"0 0 12 10\" fill=\"none\">\n <path\n d=\"M6.03968 0.124998C3.64268 0.124998 1.67268 1.9565 1.48068 4.2915H1.00018C0.925833 4.29146 0.853156 4.31353 0.791378 4.35489C0.729601 4.39625 0.681511 4.45503 0.653218 4.52378C0.624925 4.59253 0.617705 4.66814 0.632476 4.74101C0.647248 4.81387 0.683343 4.88069 0.736177 4.933L1.57618 5.766C1.64641 5.83561 1.74129 5.87467 1.84018 5.87467C1.93906 5.87467 2.03395 5.83561 2.10418 5.766L2.94418 4.933C2.99701 4.88069 3.03311 4.81387 3.04788 4.74101C3.06265 4.66814 3.05543 4.59253 3.02714 4.52378C2.99884 4.45503 2.95075 4.39625 2.88898 4.35489C2.8272 4.31353 2.75452 4.29146 2.68018 4.2915H2.23368C2.42368 2.376 4.05268 0.874998 6.03968 0.874998C6.6948 0.873639 7.33932 1.04039 7.91158 1.35931C8.48384 1.67822 8.9647 2.13863 9.30818 2.6965C9.33331 2.73978 9.36686 2.7776 9.40684 2.80771C9.44682 2.83783 9.49243 2.85963 9.54097 2.87184C9.58951 2.88405 9.64001 2.88643 9.68948 2.87881C9.73895 2.8712 9.7864 2.85377 9.82902 2.82753C9.87165 2.80129 9.90859 2.76679 9.93767 2.72605C9.96675 2.68531 9.98739 2.63916 9.99835 2.59032C10.0093 2.54148 10.0104 2.49095 10.0015 2.44168C9.99264 2.39242 9.974 2.34544 9.94668 2.3035C9.53615 1.63664 8.96146 1.08621 8.27752 0.704805C7.59359 0.323402 6.82277 0.123774 6.03968 0.124998ZM10.4207 4.2335C10.3505 4.16419 10.2558 4.12532 10.1572 4.12532C10.0585 4.12532 9.96386 4.16419 9.89368 4.2335L9.05018 5.0665C8.9972 5.11874 8.96096 5.18557 8.94608 5.25847C8.93119 5.33137 8.93833 5.40705 8.96658 5.47588C8.99483 5.54472 9.04292 5.60359 9.10473 5.64501C9.16654 5.68644 9.23927 5.70853 9.31368 5.7085H9.76318C9.57218 7.6235 7.93768 9.125 5.94118 9.125C5.28399 9.12683 4.63729 8.96035 4.06269 8.64141C3.48808 8.32247 3.00473 7.86169 2.65868 7.303C2.63281 7.26107 2.59893 7.22465 2.55899 7.19582C2.51904 7.16699 2.47381 7.14631 2.42587 7.13495C2.37793 7.1236 2.32823 7.1218 2.27959 7.12966C2.23096 7.13752 2.18435 7.15488 2.14243 7.18075C2.05776 7.233 1.99731 7.31674 1.97438 7.41355C1.95146 7.51037 1.96793 7.61233 2.02018 7.697C2.43345 8.36457 3.01076 8.91521 3.69713 9.29647C4.38349 9.67772 5.15604 9.87689 5.94118 9.875C8.34518 9.875 10.3237 8.045 10.5162 5.7085H11.0002C11.0746 5.70853 11.1473 5.68644 11.2091 5.64501C11.2709 5.60359 11.319 5.54472 11.3473 5.47588C11.3755 5.40705 11.3827 5.33137 11.3678 5.25847C11.3529 5.18557 11.3167 5.11874 11.2637 5.0665L10.4207 4.2335Z\"\n fill=\"white\"/>\n </svg>\n <%= i18n.t('stats.refresh') %>\n </button>\n </div>\n</div>\n";
|
|
46271
46275
|
|
|
46272
46276
|
const buttonHtml$3 = "<button class='nerd-button gplayer-lite-btn gcore-skin-text-color gear-option' id=\"nerd-stats-button\">\n <span class=\"gear-option_icon\"><%= icon %></span>\n <span class=\"gear-option_label\"><%= i18n.t('statistics') %></span>\n</button>\n";
|
|
46273
46277
|
|
|
@@ -46281,38 +46285,40 @@ const qualityClasses = [
|
|
|
46281
46285
|
'speedtest-quality-value-5',
|
|
46282
46286
|
];
|
|
46283
46287
|
const getDownloadQuality = (speedValue) => {
|
|
46288
|
+
if (!speedValue) {
|
|
46289
|
+
return 0;
|
|
46290
|
+
}
|
|
46284
46291
|
if (speedValue < 3) {
|
|
46285
46292
|
return 1;
|
|
46286
46293
|
}
|
|
46287
|
-
|
|
46294
|
+
if (speedValue < 7) {
|
|
46288
46295
|
return 2;
|
|
46289
46296
|
}
|
|
46290
|
-
|
|
46297
|
+
if (speedValue < 13) {
|
|
46291
46298
|
return 3;
|
|
46292
46299
|
}
|
|
46293
|
-
|
|
46300
|
+
if (speedValue < 25) {
|
|
46294
46301
|
return 4;
|
|
46295
46302
|
}
|
|
46296
|
-
|
|
46297
|
-
return 5;
|
|
46298
|
-
}
|
|
46303
|
+
return 5;
|
|
46299
46304
|
};
|
|
46300
46305
|
const getPingQuality = (pingValue) => {
|
|
46306
|
+
if (!pingValue) {
|
|
46307
|
+
return 0;
|
|
46308
|
+
}
|
|
46301
46309
|
if (pingValue < 20) {
|
|
46302
46310
|
return 5;
|
|
46303
46311
|
}
|
|
46304
|
-
|
|
46312
|
+
if (pingValue < 50) {
|
|
46305
46313
|
return 4;
|
|
46306
46314
|
}
|
|
46307
|
-
|
|
46315
|
+
if (pingValue < 100) {
|
|
46308
46316
|
return 3;
|
|
46309
46317
|
}
|
|
46310
|
-
|
|
46318
|
+
if (pingValue < 150) {
|
|
46311
46319
|
return 2;
|
|
46312
46320
|
}
|
|
46313
|
-
|
|
46314
|
-
return 1;
|
|
46315
|
-
}
|
|
46321
|
+
return 1;
|
|
46316
46322
|
};
|
|
46317
46323
|
const generateQualityHtml = (quality) => {
|
|
46318
46324
|
const html = [];
|
|
@@ -46329,9 +46335,9 @@ const generateQualityHtml = (quality) => {
|
|
|
46329
46335
|
};
|
|
46330
46336
|
const drawSummary = (customMetrics, vodContainer, liveContainer) => {
|
|
46331
46337
|
const { connectionSpeed, ping } = customMetrics;
|
|
46332
|
-
if (!connectionSpeed || !ping) {
|
|
46333
|
-
|
|
46334
|
-
}
|
|
46338
|
+
// if (!connectionSpeed || !ping) {
|
|
46339
|
+
// return
|
|
46340
|
+
// }
|
|
46335
46341
|
const downloadQuality = getDownloadQuality(connectionSpeed);
|
|
46336
46342
|
const pingQuality = getPingQuality(ping);
|
|
46337
46343
|
const liveQuality = Math.min(downloadQuality, pingQuality);
|
|
@@ -46552,8 +46558,11 @@ class NerdStats extends UICorePlugin {
|
|
|
46552
46558
|
}
|
|
46553
46559
|
updateMetrics(metrics) {
|
|
46554
46560
|
trace(`${T$f} updateMetrics`, { custom: this.speedtestMetrics });
|
|
46555
|
-
Object.assign(this.metrics, metrics);
|
|
46556
|
-
this.
|
|
46561
|
+
Object.assign(this.metrics, metrics); // TODO no Object.assign
|
|
46562
|
+
this.metrics.custom = {
|
|
46563
|
+
...this.speedtestMetrics,
|
|
46564
|
+
};
|
|
46565
|
+
this.updateCustomMetrics();
|
|
46557
46566
|
this.$el
|
|
46558
46567
|
.find('#nerd-stats-current-time')
|
|
46559
46568
|
.text(Formatter.formatTime(this.metrics.extra.currentTime));
|
|
@@ -46615,11 +46624,16 @@ class NerdStats extends UICorePlugin {
|
|
|
46615
46624
|
.text(Formatter.formatFps(this.metrics.counters.fps));
|
|
46616
46625
|
this.setStatsBoxSize();
|
|
46617
46626
|
drawSpeedTestResults();
|
|
46618
|
-
|
|
46627
|
+
this.updateEstimatedQuality();
|
|
46619
46628
|
if (!this.open) {
|
|
46620
46629
|
this.hide();
|
|
46621
46630
|
}
|
|
46622
46631
|
}
|
|
46632
|
+
updateCustomMetrics() {
|
|
46633
|
+
this.$el.find('#nerd-stats-dl-text').text(this.metrics.custom.connectionSpeed.toFixed(2));
|
|
46634
|
+
this.$el.find('#nerd-stats-ping-text').text(this.metrics.custom.ping.toFixed(2));
|
|
46635
|
+
this.$el.find('#nerd-stats-jitter-text').text(this.metrics.custom.jitter.toFixed(2));
|
|
46636
|
+
}
|
|
46623
46637
|
updateEstimatedQuality() {
|
|
46624
46638
|
this.estimateQuality();
|
|
46625
46639
|
this.$el
|
|
@@ -46628,6 +46642,7 @@ class NerdStats extends UICorePlugin {
|
|
|
46628
46642
|
this.$el
|
|
46629
46643
|
.find('#nerd-stats-quality-live-text')
|
|
46630
46644
|
.html(this.metrics.custom.liveQuality);
|
|
46645
|
+
drawSummary(this.speedtestMetrics, this.$el.find('#nerd-stats-quality-vod'), this.$el.find('#nerd-stats-quality-live'));
|
|
46631
46646
|
}
|
|
46632
46647
|
setStatsBoxSize() {
|
|
46633
46648
|
if (this.playerWidth >= this.statsBoxWidthThreshold) {
|
|
@@ -46672,6 +46687,7 @@ class NerdStats extends UICorePlugin {
|
|
|
46672
46687
|
this.speedtestMetrics.ping = 0;
|
|
46673
46688
|
this.speedtestMetrics.jitter = 0;
|
|
46674
46689
|
if (clapprStats) {
|
|
46690
|
+
clapprStats.clearMetrics();
|
|
46675
46691
|
this.updateMetrics(clapprStats.exportMetrics());
|
|
46676
46692
|
}
|
|
46677
46693
|
}
|
|
@@ -46756,14 +46772,13 @@ class ClickToPause extends ContainerPlugin {
|
|
|
46756
46772
|
});
|
|
46757
46773
|
if (isLivePlayback && !isDvrEnabled) {
|
|
46758
46774
|
this.togglePlay(true);
|
|
46775
|
+
return;
|
|
46759
46776
|
}
|
|
46760
|
-
|
|
46761
|
-
|
|
46762
|
-
this.timer =
|
|
46763
|
-
|
|
46764
|
-
|
|
46765
|
-
}, 300);
|
|
46766
|
-
}
|
|
46777
|
+
this.clearTimer();
|
|
46778
|
+
this.timer = setTimeout(() => {
|
|
46779
|
+
this.timer = null;
|
|
46780
|
+
this.togglePlay(false);
|
|
46781
|
+
}, 300);
|
|
46767
46782
|
}
|
|
46768
46783
|
settingsUpdate() {
|
|
46769
46784
|
const isLivePlayback = this.container.getPlaybackType() === Playback.LIVE;
|
|
@@ -52401,11 +52416,14 @@ var VolumeFadeEvents;
|
|
|
52401
52416
|
})(VolumeFadeEvents || (VolumeFadeEvents = {}));
|
|
52402
52417
|
const T = 'plugins.volume_fade';
|
|
52403
52418
|
const DEFAULT_DURATION = 600;
|
|
52419
|
+
const DEFAULT_VOLUME_LEVEL = 80;
|
|
52404
52420
|
/**
|
|
52405
|
-
* `PLUGIN` that
|
|
52421
|
+
* `PLUGIN` that mutes the sound and fades it in when the mouse is over the player.
|
|
52406
52422
|
* @beta
|
|
52407
52423
|
*
|
|
52408
52424
|
* @remarks
|
|
52425
|
+
* When the user moves the mouse over and away from the player, the sound is unmuted and unmuted with a fade effect.
|
|
52426
|
+
*
|
|
52409
52427
|
* Depends on {@link MediaControl} plugin.
|
|
52410
52428
|
* Configuration options - {@link VolumeFadeSettings}
|
|
52411
52429
|
*/
|
|
@@ -52447,10 +52465,10 @@ class VolumeFade extends UICorePlugin {
|
|
|
52447
52465
|
this.core.activeContainer?.volume &&
|
|
52448
52466
|
!isNaN(this.core.activeContainer.volume)
|
|
52449
52467
|
? this.core.activeContainer.volume
|
|
52450
|
-
:
|
|
52468
|
+
: DEFAULT_VOLUME_LEVEL;
|
|
52451
52469
|
}
|
|
52452
52470
|
this.duration = this.options.volumeFade?.duration || DEFAULT_DURATION;
|
|
52453
|
-
// TODO check if mute must be respected
|
|
52471
|
+
// TODO check if `mute` must be respected
|
|
52454
52472
|
this.core.activeContainer?.setVolume(this.activeVolume);
|
|
52455
52473
|
this.core.activePlayback.volume(0);
|
|
52456
52474
|
}
|
package/dist/player.d.ts
CHANGED
|
@@ -931,6 +931,10 @@ export declare type ErrorScreenSettings = {
|
|
|
931
931
|
noReload?: boolean;
|
|
932
932
|
};
|
|
933
933
|
|
|
934
|
+
export declare enum ExtendedEvents {
|
|
935
|
+
MEDIACONTROL_VOLUME = "mediacontrol:volume"
|
|
936
|
+
}
|
|
937
|
+
|
|
934
938
|
/**
|
|
935
939
|
* `PLUGIN` that changes the favicon according to the player's state.
|
|
936
940
|
* @beta
|
|
@@ -3051,30 +3055,34 @@ export declare function version(): {
|
|
|
3051
3055
|
};
|
|
3052
3056
|
|
|
3053
3057
|
/**
|
|
3054
|
-
* `PLUGIN` that
|
|
3058
|
+
* `PLUGIN` that mutes the sound and fades it in when the mouse is over the player.
|
|
3055
3059
|
* @beta
|
|
3060
|
+
*
|
|
3061
|
+
* @remarks
|
|
3062
|
+
* When the user moves the mouse over and away from the player, the sound is unmuted and unmuted with a fade effect.
|
|
3063
|
+
*
|
|
3064
|
+
* Depends on {@link MediaControl} plugin.
|
|
3065
|
+
* Configuration options - {@link VolumeFadeSettings}
|
|
3056
3066
|
*/
|
|
3057
3067
|
export declare class VolumeFade extends UICorePlugin {
|
|
3058
|
-
private
|
|
3059
|
-
private
|
|
3060
|
-
private
|
|
3061
|
-
private interval;
|
|
3068
|
+
private activeVolume;
|
|
3069
|
+
private duration;
|
|
3070
|
+
private timerId;
|
|
3062
3071
|
/**
|
|
3063
3072
|
* @internal
|
|
3064
3073
|
*/
|
|
3065
3074
|
get name(): string;
|
|
3075
|
+
constructor(core: Core);
|
|
3066
3076
|
/**
|
|
3067
3077
|
* @internal
|
|
3068
3078
|
*/
|
|
3069
3079
|
bindEvents(): void;
|
|
3070
|
-
private unBindEvents;
|
|
3071
|
-
private _onUserChangeVolume;
|
|
3072
|
-
private _onVolumeConfig;
|
|
3073
3080
|
private onCoreReady;
|
|
3081
|
+
private onVolumeChange;
|
|
3074
3082
|
private onEnter;
|
|
3075
|
-
private numberTo;
|
|
3076
|
-
private clearCurrentInterval;
|
|
3077
3083
|
private onLeave;
|
|
3084
|
+
private fade;
|
|
3085
|
+
private stopFade;
|
|
3078
3086
|
}
|
|
3079
3087
|
|
|
3080
3088
|
/**
|
|
@@ -3085,6 +3093,20 @@ export declare enum VolumeFadeEvents {
|
|
|
3085
3093
|
FADE = "core:volume:fade"
|
|
3086
3094
|
}
|
|
3087
3095
|
|
|
3096
|
+
/**
|
|
3097
|
+
* @beta
|
|
3098
|
+
*/
|
|
3099
|
+
export declare type VolumeFadeSettings = {
|
|
3100
|
+
/**
|
|
3101
|
+
* Initial active volume level, effective until volume is changed via media control
|
|
3102
|
+
*/
|
|
3103
|
+
level?: number;
|
|
3104
|
+
/**
|
|
3105
|
+
* Fade duration, ms
|
|
3106
|
+
*/
|
|
3107
|
+
duration?: number;
|
|
3108
|
+
};
|
|
3109
|
+
|
|
3088
3110
|
/**
|
|
3089
3111
|
* Telemetry watch event data
|
|
3090
3112
|
* @beta
|