@gcorevideo/player 2.22.26 → 2.22.28

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.
@@ -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,mBAAmB;IAY3B,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"}
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;IAeZ,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,eAAe;IA6BvB,OAAO,CAAC,aAAa;IAkFrB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACM,MAAM;IAcf,OAAO,CAAC,MAAM;IAiBd,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,kBAAkB;CAU3B"}
@@ -167,7 +167,6 @@ export class NerdStats extends UICorePlugin {
167
167
  this.$el.show();
168
168
  this.statsBoxElem.scrollTop(this.statsBoxElem.scrollTop());
169
169
  this.open = true;
170
- this.refreshSpeedTest();
171
170
  initSpeedTest(this.speedtestMetrics)
172
171
  .then(() => {
173
172
  startSpeedtest();
@@ -199,7 +198,6 @@ export class NerdStats extends UICorePlugin {
199
198
  .text(this.metrics.general.resolution.height);
200
199
  }
201
200
  estimateQuality() {
202
- trace(`${T} estimateQuality`);
203
201
  const videoQualityNames = [
204
202
  'SD (480p)',
205
203
  'HD (720p)',
@@ -224,7 +222,6 @@ export class NerdStats extends UICorePlugin {
224
222
  prefix + videoQualityNames[liveQuality - 1];
225
223
  }
226
224
  updateMetrics(metrics) {
227
- trace(`${T} updateMetrics`, { custom: this.speedtestMetrics });
228
225
  Object.assign(this.metrics, metrics);
229
226
  this.metrics.custom = {
230
227
  ...this.speedtestMetrics,
@@ -355,6 +352,7 @@ export class NerdStats extends UICorePlugin {
355
352
  });
356
353
  }
357
354
  clearSpeedtestMetrics() {
355
+ trace(`${T} clearSpeedtestMetrics`);
358
356
  const clapprStats = this.container?.getPlugin('clappr_stats');
359
357
  this.speedtestMetrics.connectionSpeed = 0;
360
358
  this.speedtestMetrics.ping = 0;
@@ -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;IAY3B,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE;IAM5B,iBAAiB;IAQjB,iBAAiB,CAAC,MAAM,EAAE,MAAM;IAShC,YAAY,CAAC,MAAM,EAAE,cAAc;IA0KnC,KAAK;IAuEL,KAAK;IASL,OAAO,CAAC,UAAU;CAUnB"}
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;IAY3B,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"}
@@ -255,9 +255,7 @@ export class Speedtest {
255
255
  if (e.data === this._prevData) {
256
256
  return;
257
257
  }
258
- else {
259
- this._prevData = e.data;
260
- }
258
+ this._prevData = e.data;
261
259
  const data = e.data;
262
260
  try {
263
261
  if (this.onupdate) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/clappr-nerd-stats/speedtest/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAkC,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAqC9C,wBAAgB,oBAAoB,SAoBnC;AAID,eAAO,MAAM,aAAa,kBAAmB,gBAAgB,KAAG,OAAO,CAAC,IAAI,CAmF3E,CAAC;AAEF,eAAO,MAAM,aAAa,YAIzB,CAAC;AAEF,eAAO,MAAM,cAAc,YAI1B,CAAC;AAEF,eAAO,MAAM,qBAAqB,YAGjC,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAGnD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/clappr-nerd-stats/speedtest/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAkC,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAqC9C,wBAAgB,oBAAoB,SAmBnC;AAID,eAAO,MAAM,aAAa,kBAAmB,gBAAgB,KAAG,OAAO,CAAC,IAAI,CA+E3E,CAAC;AAEF,eAAO,MAAM,aAAa,YAIzB,CAAC;AAEF,eAAO,MAAM,cAAc,YAI1B,CAAC;AAEF,eAAO,MAAM,qBAAqB,YAEjC,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAGnD"}
@@ -1,9 +1,8 @@
1
- import { trace } from '@gcorevideo/utils';
2
1
  import { Speedtest } from './Speedtest.js';
3
2
  const DIGITS_THRESHOLD = 99999;
4
3
  const DEFAULT_DOWNLOAD_SPEED = '0.00';
5
4
  const DRAW_SIZE = 5;
6
- const T = 'plugins.clappr_nerd_stats.speedtest';
5
+ // const T = 'plugins.clappr_nerd_stats.speedtest';
7
6
  function limitDigits(value) {
8
7
  return value > DIGITS_THRESHOLD ? '> ' + DIGITS_THRESHOLD : value.toFixed(2);
9
8
  }
@@ -31,7 +30,6 @@ const getColor = (speedValue) => {
31
30
  }
32
31
  };
33
32
  export function drawSpeedTestResults() {
34
- trace(`${T} drawSpeedTestResults`);
35
33
  const canvas = document.getElementById('nerd-stats-speed-test-canvas');
36
34
  if (!canvas) {
37
35
  return;
@@ -54,7 +52,6 @@ export const initSpeedTest = (customMetrics) => {
54
52
  return inited;
55
53
  }
56
54
  inited = (async () => {
57
- trace(`${T} initSpeedTest run`);
58
55
  // TODO: fix server selection
59
56
  // const response = await fetch('https://iam.gcdn.co/info/json');
60
57
  // const data = await response.json();
@@ -109,7 +106,6 @@ export const initSpeedTest = (customMetrics) => {
109
106
  await fetch('https://iam.gcdn.co/info/json')
110
107
  .then(r => r.json())
111
108
  .then(data => {
112
- trace(`${T} initSpeedTest fetched`);
113
109
  const country = data['Server Country code'].toLowerCase();
114
110
  const server = serversList.find(s => s.country === country) || serversList[0];
115
111
  if (!server) {
@@ -117,7 +113,6 @@ export const initSpeedTest = (customMetrics) => {
117
113
  }
118
114
  speedTest.addTestPoint(server);
119
115
  speedTest.setSelectedServer(server);
120
- trace(`${T} initSpeedTest done`);
121
116
  });
122
117
  })();
123
118
  return inited;
@@ -133,7 +128,6 @@ export const startSpeedtest = () => {
133
128
  }
134
129
  };
135
130
  export const clearSpeedTestResults = () => {
136
- trace(`${T} clearSpeedTestResults`);
137
131
  speedtestResults.splice(0, speedtestResults.length);
138
132
  };
139
133
  export function configureSpeedTest(servers) {
@@ -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,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"}
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;AAM1B,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;IAqDnB;;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;IAMd,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"}
@@ -3,6 +3,7 @@ import { CLAPPR_VERSION } from '../../build.js';
3
3
  import { ClapprStatsEvents, ClapprStatsChronograph, ClapprStatsCounter, } from './types.js';
4
4
  export * from './types.js';
5
5
  import { newMetrics } from './utils.js';
6
+ import { isFullscreen } from '../utils/fullscreen.js';
6
7
  /**
7
8
  * `PLUGIN` that measures data about playback, which can be useful for analyzing performance and UX.
8
9
  * @beta
@@ -78,7 +79,11 @@ export class ClapprStats extends ContainerPlugin {
78
79
  this.listenToOnce(this.container, CoreEvents.CONTAINER_STATE_BUFFERING, this.onBuffering);
79
80
  this.listenTo(this.container, CoreEvents.CONTAINER_SEEK, this.onSeek);
80
81
  this.listenTo(this.container, CoreEvents.CONTAINER_ERROR, () => this.inc(ClapprStatsCounter.Error));
81
- this.listenTo(this.container, CoreEvents.CONTAINER_FULLSCREEN, () => this.inc(ClapprStatsCounter.Fullscreen));
82
+ this.listenTo(this.container, CoreEvents.CONTAINER_FULLSCREEN, () => {
83
+ if (isFullscreen(this.container.el)) {
84
+ this.inc(ClapprStatsCounter.Fullscreen);
85
+ }
86
+ });
82
87
  this.listenTo(this.container, CoreEvents.CONTAINER_PLAYBACKDVRSTATECHANGED, (dvrInUse) => {
83
88
  dvrInUse && this.inc(ClapprStatsCounter.DvrUsage);
84
89
  });
@@ -146,8 +151,9 @@ export class ClapprStats extends ContainerPlugin {
146
151
  this.stopListening(this.container, CoreEvents.CONTAINER_TIMEUPDATE, this.onContainerUpdateWhilePlaying);
147
152
  }
148
153
  onSeek(e) {
154
+ const ms = e * 1000;
149
155
  this.inc(ClapprStatsCounter.Seek);
150
- this.metrics.extra.watchHistory.push([e * 1000, e * 1000]);
156
+ this.metrics.extra.watchHistory.push([ms, ms]);
151
157
  }
152
158
  onTimeUpdate(e) {
153
159
  const current = e.current * 1000, total = e.total * 1000, l = this.metrics.extra.watchHistory.length;
@@ -134,7 +134,6 @@ export declare class MediaControl extends UICorePlugin {
134
134
  'click [data-stop]': string;
135
135
  'click [data-playstop]': string;
136
136
  'click [data-fullscreen]': string;
137
- 'click .bar-container[data-seekbar]': string;
138
137
  'click .bar-container[data-volume]': string;
139
138
  'click .drawer-icon[data-volume]': string;
140
139
  'mouseenter .drawer-container[data-volume]': string;
@@ -1 +1 @@
1
- {"version":3,"file":"MediaControl.d.ts","sourceRoot":"","sources":["../../../src/plugins/media-control/MediaControl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MediaControl.d.ts","sourceRoot":"","sources":["../../../src/plugins/media-control/MediaControl.ts"],"names":[],"mappings":"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"}
@@ -182,7 +182,7 @@ export class MediaControl extends UICorePlugin {
182
182
  'click [data-stop]': 'stop',
183
183
  'click [data-playstop]': 'togglePlayStop',
184
184
  'click [data-fullscreen]': 'handleFullScreenOnBtn',
185
- 'click .bar-container[data-seekbar]': 'seek',
185
+ // 'click .bar-container[data-seekbar]': 'seek', // This together with global window.bind causes duplicate seeks events
186
186
  'click .bar-container[data-volume]': 'onVolumeClick',
187
187
  'click .drawer-icon[data-volume]': 'toggleMute',
188
188
  'mouseenter .drawer-container[data-volume]': 'showVolumeBar',
@@ -489,12 +489,14 @@ export class MediaControl extends UICorePlugin {
489
489
  event && event.preventDefault();
490
490
  }
491
491
  stopDrag = (event) => {
492
- this.draggingSeekBar && this.seek(event);
492
+ if (this.draggingSeekBar) {
493
+ this.draggingSeekBar = false;
494
+ this.seek(event);
495
+ }
493
496
  this.$el.removeClass('dragging');
494
497
  this.$seekBarLoaded?.removeClass('media-control-notransition');
495
498
  this.$seekBarPosition?.removeClass('media-control-notransition');
496
499
  this.$seekBarScrubber?.removeClass('media-control-notransition dragging');
497
- this.draggingSeekBar = false;
498
500
  this.draggingVolumeBar = false;
499
501
  };
500
502
  updateDrag = (event) => {
@@ -506,8 +508,9 @@ export class MediaControl extends UICorePlugin {
506
508
  let pos = (offsetX / this.$seekBarContainer.width()) * 100;
507
509
  pos = Math.min(100, Math.max(pos, 0));
508
510
  this.setSeekPercentage(pos);
511
+ return;
509
512
  }
510
- else if (this.draggingVolumeBar) {
513
+ if (this.draggingVolumeBar) {
511
514
  event.preventDefault();
512
515
  this.setVolume(this.getVolumeFromUIEvent(event));
513
516
  }
@@ -677,13 +680,13 @@ export class MediaControl extends UICorePlugin {
677
680
  if (!this.settings.seekEnabled) {
678
681
  return;
679
682
  }
683
+ // TODO prevent double seek
680
684
  assert.ok(this.$seekBarContainer, 'seek bar container must be present');
681
685
  const offsetX = MediaControl.getPageX(event) - this.$seekBarContainer.offset().left;
682
686
  let pos = (offsetX / this.$seekBarContainer.width()) * 100;
683
687
  pos = Math.min(100, Math.max(pos, 0));
684
688
  this.core.activeContainer && this.core.activeContainer.seekPercentage(pos);
685
689
  this.setSeekPercentage(pos);
686
- return false;
687
690
  }
688
691
  setUserKeepVisible() {
689
692
  this.userKeepVisible = true;
@@ -756,13 +759,11 @@ export class MediaControl extends UICorePlugin {
756
759
  }
757
760
  }
758
761
  updateSettings() {
759
- trace(`${T} updateSettings`, { settings: this.settings });
760
762
  const newSettings = $.extend(true, {
761
763
  left: [],
762
764
  default: [],
763
765
  right: [],
764
766
  }, this.core.activeContainer.settings);
765
- trace(`${T} updateSettings`, { newSettings });
766
767
  newSettings.left.push('clips'); // TODO settings
767
768
  // TODO make order controlled via CSS
768
769
  newSettings.left = orderByOrderPattern([...newSettings.left, 'volume', 'clips'], LEFT_ORDER);
@@ -774,11 +775,6 @@ export class MediaControl extends UICorePlugin {
774
775
  newSettings.right = DEFAULT_SETTINGS.right; // TODO get from the options
775
776
  if ((!this.fullScreenOnVideoTagSupported && !fullscreenEnabled()) ||
776
777
  this.options.fullscreenDisable) {
777
- trace(`${T} updateSettings removing fullscreen`, {
778
- supported: this.fullScreenOnVideoTagSupported,
779
- enabled: Fullscreen.fullscreenEnabled(),
780
- optionsDisable: this.options.fullscreenDisable,
781
- });
782
778
  // remove fullscreen from settings if it is not available
783
779
  removeArrayItem(newSettings.default, 'fullscreen');
784
780
  removeArrayItem(newSettings.left, 'fullscreen');
@@ -841,7 +837,6 @@ export class MediaControl extends UICorePlugin {
841
837
  */
842
838
  mount(name, element) {
843
839
  const panel = this.getElementLocation(name);
844
- trace(`${T} mount`, { name, panel: !!panel });
845
840
  if (panel) {
846
841
  const current = panel.find(`[data-${name}]`);
847
842
  element.attr(`data-${name}`, '');
@@ -1037,14 +1032,11 @@ export class MediaControl extends UICorePlugin {
1037
1032
  * @internal
1038
1033
  */
1039
1034
  render() {
1040
- trace(`${T} render`, {
1041
- needsUpdate: this.hasUpdate,
1042
- metadataLoaded: this.metadataLoaded,
1043
- });
1044
1035
  if (!this.hasUpdate || !this.metadataLoaded) {
1045
1036
  return this;
1046
1037
  }
1047
1038
  const timeout = this.options.hideMediaControlDelay || 2000;
1039
+ trace(`${T} render`, { settings: this.settings });
1048
1040
  this.$el.html(MediaControl.template({ settings: this.settings }));
1049
1041
  // const style = Styler.getStyleFor(mediaControlStyle, { baseUrl: this.options.baseUrl });
1050
1042
  // this.$el.append(style[0]);
@@ -1167,12 +1159,6 @@ export class MediaControl extends UICorePlugin {
1167
1159
  return isFinite(this.core.activePlayback.getDuration());
1168
1160
  }
1169
1161
  getElementLocation(name) {
1170
- trace(`${T} getElementLocation`, {
1171
- name,
1172
- right: this.settings.right,
1173
- left: this.settings.left,
1174
- default: this.settings.default,
1175
- });
1176
1162
  if (this.settings.right?.includes(name)) {
1177
1163
  return this.getRightPanel();
1178
1164
  }
@@ -107,6 +107,7 @@ export declare function createMockContainer(options?: Record<string, unknown>, p
107
107
  isPlaying: import("vitest").Mock<(...args: any[]) => any>;
108
108
  play: import("vitest").Mock<(...args: any[]) => any>;
109
109
  seek: import("vitest").Mock<(...args: any[]) => any>;
110
+ seekPercentage: import("vitest").Mock<(...args: any[]) => any>;
110
111
  switchAudioTrack: import("vitest").Mock<(...args: any[]) => any>;
111
112
  trigger: <T extends string | symbol>(event: T, ...args: any[]) => boolean;
112
113
  };
@@ -1 +1 @@
1
- {"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../src/testUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,YAAY,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,MAAM,MAAM,eAAe,CAAA;AAElC;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,MAAM;IAErC,SAAS,CAAC,OAAO,EAAE,GAAG;IACtB,QAAQ,CAAC,IAAI,EAAE,GAAG;IAClB,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG;gBAFjB,OAAO,EAAE,GAAG,EACb,IAAI,EAAE,GAAG,EACR,WAAW,CAAC,EAAE,GAAG,YAAA;IAK7B,IAAI,IAAI,WAEP;IAED,OAAO;IAEP,IAAI;IAEJ,KAAK;IAEL,IAAI;IAEJ,OAAO;IAEP,IAAI;IAEJ,cAAc;IAEd,WAAW;IAIX,QAAQ;IAER,OAAO;IAEP,eAAe;IAIf,kBAAkB;IAIlB,cAAc;IAId,qBAAqB;IAIrB,IAAI;IAEJ,MAAM;IAEN,MAAM;IAEN,SAAS;IAET,eAAe;IAIf,WAAW;IAIX,QAAQ;IAIR,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;CAGtC;AAED,wBAAgB,cAAc,CAC5B,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,SAAS,GAAE,GAAkC;;;;;;;;;;;;;;;;EAqB9C;AAED,wBAAgB,gBAAgB;;;EAK/B;AAED,wBAAgB,mBAAmB;;;;;;EAKlC;AAED,wBAAgB,kBAAkB,CAAC,IAAI,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkC/C;AAED,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,QAAQ,GAAE,GAA0B;;;;;;;;;;;;;;;EAoBrC;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,gBAe/C;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,OAe7C"}
1
+ {"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../src/testUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,YAAY,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,MAAM,MAAM,eAAe,CAAA;AAElC;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,MAAM;IAErC,SAAS,CAAC,OAAO,EAAE,GAAG;IACtB,QAAQ,CAAC,IAAI,EAAE,GAAG;IAClB,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG;gBAFjB,OAAO,EAAE,GAAG,EACb,IAAI,EAAE,GAAG,EACR,WAAW,CAAC,EAAE,GAAG,YAAA;IAK7B,IAAI,IAAI,WAEP;IAED,OAAO;IAEP,IAAI;IAEJ,KAAK;IAEL,IAAI;IAEJ,OAAO;IAEP,IAAI;IAEJ,cAAc;IAEd,WAAW;IAIX,QAAQ;IAER,OAAO;IAEP,eAAe;IAIf,kBAAkB;IAIlB,cAAc;IAId,qBAAqB;IAIrB,IAAI;IAEJ,MAAM;IAEN,MAAM;IAEN,SAAS;IAET,eAAe;IAIf,WAAW;IAIX,QAAQ;IAIR,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;CAGtC;AAED,wBAAgB,cAAc,CAC5B,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,SAAS,GAAE,GAAkC;;;;;;;;;;;;;;;;EAqB9C;AAED,wBAAgB,gBAAgB;;;EAK/B;AAED,wBAAgB,mBAAmB;;;;;;EAKlC;AAED,wBAAgB,kBAAkB,CAAC,IAAI,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkC/C;AAED,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,QAAQ,GAAE,GAA0B;;;;;;;;;;;;;;;;EAqBrC;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,gBAe/C;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,OAe7C"}
package/lib/testUtils.js CHANGED
@@ -144,6 +144,7 @@ export function createMockContainer(options = {}, playback = createMockPlayback(
144
144
  isPlaying: vi.fn().mockReturnValue(false),
145
145
  play: vi.fn(),
146
146
  seek: vi.fn(),
147
+ seekPercentage: vi.fn(),
147
148
  switchAudioTrack: vi.fn(),
148
149
  trigger: emitter.emit,
149
150
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gcorevideo/player",
3
- "version": "2.22.26",
3
+ "version": "2.22.28",
4
4
  "description": "Gcore JavaScript video player",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -245,7 +245,6 @@ export class NerdStats extends UICorePlugin {
245
245
  this.statsBoxElem.scrollTop(this.statsBoxElem.scrollTop())
246
246
  this.open = true
247
247
 
248
- this.refreshSpeedTest()
249
248
  initSpeedTest(this.speedtestMetrics)
250
249
  .then(() => {
251
250
  startSpeedtest()
@@ -281,7 +280,6 @@ export class NerdStats extends UICorePlugin {
281
280
  }
282
281
 
283
282
  private estimateQuality() {
284
- trace(`${T} estimateQuality`)
285
283
  const videoQualityNames = [
286
284
  'SD (480p)',
287
285
  'HD (720p)',
@@ -311,7 +309,6 @@ export class NerdStats extends UICorePlugin {
311
309
  }
312
310
 
313
311
  private updateMetrics(metrics: PerfMetrics) {
314
- trace(`${T} updateMetrics`, { custom: this.speedtestMetrics })
315
312
  Object.assign(this.metrics, metrics)
316
313
  this.metrics.custom = {
317
314
  ...this.speedtestMetrics,
@@ -466,6 +463,7 @@ export class NerdStats extends UICorePlugin {
466
463
  }
467
464
 
468
465
  private clearSpeedtestMetrics() {
466
+ trace(`${T} clearSpeedtestMetrics`);
469
467
  const clapprStats = this.container?.getPlugin('clappr_stats')
470
468
 
471
469
  this.speedtestMetrics.connectionSpeed = 0
@@ -328,9 +328,8 @@ export class Speedtest {
328
328
  this.worker.onmessage = (e: MessageEvent) => {
329
329
  if (e.data === this._prevData) {
330
330
  return
331
- } else {
332
- this._prevData = e.data
333
331
  }
332
+ this._prevData = e.data
334
333
  const data = e.data
335
334
 
336
335
  try {
@@ -1,4 +1,3 @@
1
- import { trace } from '@gcorevideo/utils';
2
1
  import { type Server, type TestStatusInfo, Speedtest } from './Speedtest.js';
3
2
  import { SpeedtestMetrics } from './types.js';
4
3
 
@@ -7,7 +6,7 @@ const DEFAULT_DOWNLOAD_SPEED = '0.00';
7
6
 
8
7
  const DRAW_SIZE = 5;
9
8
 
10
- const T = 'plugins.clappr_nerd_stats.speedtest';
9
+ // const T = 'plugins.clappr_nerd_stats.speedtest';
11
10
 
12
11
  function limitDigits(value: number): string {
13
12
  return value > DIGITS_THRESHOLD ? '> ' + DIGITS_THRESHOLD : value.toFixed(2);
@@ -38,7 +37,6 @@ const getColor = (speedValue: number): string => {
38
37
  };
39
38
 
40
39
  export function drawSpeedTestResults() {
41
- trace(`${T} drawSpeedTestResults`);
42
40
  const canvas = document.getElementById('nerd-stats-speed-test-canvas');
43
41
  if (!canvas) {
44
42
  return;
@@ -66,7 +64,6 @@ export const initSpeedTest = (customMetrics: SpeedtestMetrics): Promise<void> =>
66
64
  return inited;
67
65
  }
68
66
  inited = (async () => {
69
- trace(`${T} initSpeedTest run`);
70
67
  // TODO: fix server selection
71
68
  // const response = await fetch('https://iam.gcdn.co/info/json');
72
69
  // const data = await response.json();
@@ -130,8 +127,6 @@ export const initSpeedTest = (customMetrics: SpeedtestMetrics): Promise<void> =>
130
127
  await fetch('https://iam.gcdn.co/info/json')
131
128
  .then(r => r.json())
132
129
  .then(data => {
133
- trace(`${T} initSpeedTest fetched`);
134
-
135
130
  const country = data['Server Country code'].toLowerCase();
136
131
  const server = serversList.find(s => s.country === country) || serversList[0];
137
132
  if (!server) {
@@ -139,7 +134,6 @@ export const initSpeedTest = (customMetrics: SpeedtestMetrics): Promise<void> =>
139
134
  }
140
135
  speedTest.addTestPoint(server);
141
136
  speedTest.setSelectedServer(server);
142
- trace(`${T} initSpeedTest done`);
143
137
  });
144
138
  })();
145
139
 
@@ -159,7 +153,6 @@ export const startSpeedtest = () => {
159
153
  };
160
154
 
161
155
  export const clearSpeedTestResults = () => {
162
- trace(`${T} clearSpeedTestResults`);
163
156
  speedtestResults.splice(0, speedtestResults.length);
164
157
  };
165
158
 
@@ -16,6 +16,9 @@ import {
16
16
  } from './types.js'
17
17
  export * from './types.js'
18
18
  import { newMetrics } from './utils.js'
19
+ import { isFullscreen } from '../utils/fullscreen.js'
20
+
21
+ // const T = 'plugins.clappr_stats'
19
22
 
20
23
  export type ClapprStatsSettings = {
21
24
  /**
@@ -134,9 +137,11 @@ export class ClapprStats extends ContainerPlugin {
134
137
  this.listenTo(this.container, CoreEvents.CONTAINER_ERROR, () =>
135
138
  this.inc(ClapprStatsCounter.Error),
136
139
  )
137
- this.listenTo(this.container, CoreEvents.CONTAINER_FULLSCREEN, () =>
138
- this.inc(ClapprStatsCounter.Fullscreen),
139
- )
140
+ this.listenTo(this.container, CoreEvents.CONTAINER_FULLSCREEN, () => {
141
+ if (isFullscreen(this.container.el)) {
142
+ this.inc(ClapprStatsCounter.Fullscreen)
143
+ }
144
+ })
140
145
  this.listenTo(
141
146
  this.container,
142
147
  CoreEvents.CONTAINER_PLAYBACKDVRSTATECHANGED,
@@ -251,8 +256,9 @@ export class ClapprStats extends ContainerPlugin {
251
256
  }
252
257
 
253
258
  private onSeek(e: number) {
259
+ const ms = e * 1000
254
260
  this.inc(ClapprStatsCounter.Seek)
255
- this.metrics.extra.watchHistory.push([e * 1000, e * 1000])
261
+ this.metrics.extra.watchHistory.push([ms, ms])
256
262
  }
257
263
 
258
264
  private onTimeUpdate(e: TimePosition) {
@@ -315,7 +315,7 @@ export class MediaControl extends UICorePlugin {
315
315
  'click [data-stop]': 'stop',
316
316
  'click [data-playstop]': 'togglePlayStop',
317
317
  'click [data-fullscreen]': 'handleFullScreenOnBtn',
318
- 'click .bar-container[data-seekbar]': 'seek',
318
+ // 'click .bar-container[data-seekbar]': 'seek', // This together with global window.bind causes duplicate seeks events
319
319
  'click .bar-container[data-volume]': 'onVolumeClick',
320
320
  'click .drawer-icon[data-volume]': 'toggleMute',
321
321
  'mouseenter .drawer-container[data-volume]': 'showVolumeBar',
@@ -731,12 +731,14 @@ export class MediaControl extends UICorePlugin {
731
731
  }
732
732
 
733
733
  private stopDrag = (event: MouseEvent) => {
734
- this.draggingSeekBar && this.seek(event)
734
+ if (this.draggingSeekBar) {
735
+ this.draggingSeekBar = false
736
+ this.seek(event)
737
+ }
735
738
  this.$el.removeClass('dragging')
736
739
  this.$seekBarLoaded?.removeClass('media-control-notransition')
737
740
  this.$seekBarPosition?.removeClass('media-control-notransition')
738
741
  this.$seekBarScrubber?.removeClass('media-control-notransition dragging')
739
- this.draggingSeekBar = false
740
742
  this.draggingVolumeBar = false
741
743
  }
742
744
 
@@ -752,7 +754,9 @@ export class MediaControl extends UICorePlugin {
752
754
  pos = Math.min(100, Math.max(pos, 0))
753
755
 
754
756
  this.setSeekPercentage(pos)
755
- } else if (this.draggingVolumeBar) {
757
+ return
758
+ }
759
+ if (this.draggingVolumeBar) {
756
760
  event.preventDefault()
757
761
  this.setVolume(this.getVolumeFromUIEvent(event))
758
762
  }
@@ -966,6 +970,7 @@ export class MediaControl extends UICorePlugin {
966
970
  if (!this.settings.seekEnabled) {
967
971
  return
968
972
  }
973
+ // TODO prevent double seek
969
974
 
970
975
  assert.ok(this.$seekBarContainer, 'seek bar container must be present')
971
976
  const offsetX =
@@ -976,8 +981,6 @@ export class MediaControl extends UICorePlugin {
976
981
  this.core.activeContainer && this.core.activeContainer.seekPercentage(pos)
977
982
 
978
983
  this.setSeekPercentage(pos)
979
-
980
- return false
981
984
  }
982
985
 
983
986
  private setUserKeepVisible() {
@@ -1010,7 +1013,10 @@ export class MediaControl extends UICorePlugin {
1010
1013
  }
1011
1014
  this.$el.show()
1012
1015
  this.trigger(Events.MEDIACONTROL_SHOW, this.name)
1013
- this.core.activeContainer?.trigger(Events.CONTAINER_MEDIACONTROL_SHOW, this.name)
1016
+ this.core.activeContainer?.trigger(
1017
+ Events.CONTAINER_MEDIACONTROL_SHOW,
1018
+ this.name,
1019
+ )
1014
1020
  this.$el.removeClass('media-control-hide')
1015
1021
  this.hideId = setTimeout(() => this.hide(), timeout)
1016
1022
  if (event) {
@@ -1067,7 +1073,6 @@ export class MediaControl extends UICorePlugin {
1067
1073
  }
1068
1074
 
1069
1075
  private updateSettings() {
1070
- trace(`${T} updateSettings`, { settings: this.settings })
1071
1076
  const newSettings = $.extend(
1072
1077
  true,
1073
1078
  {
@@ -1077,7 +1082,6 @@ export class MediaControl extends UICorePlugin {
1077
1082
  },
1078
1083
  this.core.activeContainer.settings,
1079
1084
  )
1080
- trace(`${T} updateSettings`, { newSettings })
1081
1085
 
1082
1086
  newSettings.left.push('clips') // TODO settings
1083
1087
  // TODO make order controlled via CSS
@@ -1099,11 +1103,6 @@ export class MediaControl extends UICorePlugin {
1099
1103
  (!this.fullScreenOnVideoTagSupported && !fullscreenEnabled()) ||
1100
1104
  this.options.fullscreenDisable
1101
1105
  ) {
1102
- trace(`${T} updateSettings removing fullscreen`, {
1103
- supported: this.fullScreenOnVideoTagSupported,
1104
- enabled: Fullscreen.fullscreenEnabled(),
1105
- optionsDisable: this.options.fullscreenDisable,
1106
- })
1107
1106
  // remove fullscreen from settings if it is not available
1108
1107
  removeArrayItem(newSettings.default, 'fullscreen')
1109
1108
  removeArrayItem(newSettings.left, 'fullscreen')
@@ -1183,7 +1182,6 @@ export class MediaControl extends UICorePlugin {
1183
1182
  */
1184
1183
  mount(name: MediaControlElement, element: ZeptoResult) {
1185
1184
  const panel = this.getElementLocation(name)
1186
- trace(`${T} mount`, { name, panel: !!panel })
1187
1185
  if (panel) {
1188
1186
  const current = panel.find(`[data-${name}]`)
1189
1187
  element.attr(`data-${name}`, '')
@@ -1415,15 +1413,12 @@ export class MediaControl extends UICorePlugin {
1415
1413
  * @internal
1416
1414
  */
1417
1415
  override render() {
1418
- trace(`${T} render`, {
1419
- needsUpdate: this.hasUpdate,
1420
- metadataLoaded: this.metadataLoaded,
1421
- })
1422
1416
  if (!this.hasUpdate || !this.metadataLoaded) {
1423
1417
  return this
1424
1418
  }
1425
1419
  const timeout = this.options.hideMediaControlDelay || 2000
1426
1420
 
1421
+ trace(`${T} render`, { settings: this.settings })
1427
1422
  this.$el.html(MediaControl.template({ settings: this.settings }))
1428
1423
  // const style = Styler.getStyleFor(mediaControlStyle, { baseUrl: this.options.baseUrl });
1429
1424
  // this.$el.append(style[0]);
@@ -1575,12 +1570,6 @@ export class MediaControl extends UICorePlugin {
1575
1570
  }
1576
1571
 
1577
1572
  private getElementLocation(name: MediaControlElement) {
1578
- trace(`${T} getElementLocation`, {
1579
- name,
1580
- right: this.settings.right,
1581
- left: this.settings.left,
1582
- default: this.settings.default,
1583
- })
1584
1573
  if (this.settings.right?.includes(name as MediaControlRightElement)) {
1585
1574
  return this.getRightPanel()
1586
1575
  }
@@ -298,6 +298,22 @@ describe('MediaControl', () => {
298
298
  })
299
299
  })
300
300
  })
301
+ describe('seekbar', () => {
302
+ beforeEach(async () => {
303
+ mediaControl = new MediaControl(core)
304
+ core.emit(Events.CORE_READY)
305
+ core.activeContainer.settings = {
306
+ seekEnabled: true,
307
+ default: ['seekbar'],
308
+ }
309
+ core.emit(Events.CORE_ACTIVE_CONTAINER_CHANGED, core.activeContainer)
310
+ await runMetadataLoaded(core)
311
+ core.activeContainer.emit(Events.CONTAINER_SETTINGSUPDATE)
312
+ })
313
+ it('should render', () => {
314
+ expect(mediaControl.el.innerHTML).toMatchSnapshot()
315
+ })
316
+ })
301
317
  })
302
318
 
303
319
  function arraySubtract<T extends string>(arr1: T[], arr2: T[]) {