@gcorevideo/player 2.22.8 → 2.22.10

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.
@@ -13320,7 +13320,7 @@ class ClipsPlugin extends UICorePlugin {
13320
13320
 
13321
13321
  const templateHtml$1 = "<ul class=\"context-menu-list\">\n <% if(options) { %>\n <% for (var i = 0; i < options.length; i++) { %>\n <li class=\"context-menu-list-item <%= options[i].class %>\"\n data-<%= options[i].name %>><%= options[i].label %></li>\n <% } %>\n <% } %>\n</ul>\n";
13322
13322
 
13323
- var version$1 = "2.22.8";
13323
+ var version$1 = "2.22.10";
13324
13324
 
13325
13325
  var packages = {
13326
13326
  "node_modules/@clappr/core": {
@@ -16017,6 +16017,7 @@ class PlaybackRate extends UICorePlugin {
16017
16017
  // Saved when an ad starts to restore after it finishes
16018
16018
  // private prevSelectedRate: string | undefined
16019
16019
  selectedRate = DEFAULT_PLAYBACK_RATE;
16020
+ metadataLoaded = false;
16020
16021
  /**
16021
16022
  * @internal
16022
16023
  */
@@ -16073,8 +16074,10 @@ class PlaybackRate extends UICorePlugin {
16073
16074
  this.listenTo(gear, GearEvents.RENDERED, this.onGearRendered);
16074
16075
  }
16075
16076
  onActiveContainerChange() {
16077
+ this.metadataLoaded = false;
16076
16078
  this.listenTo(this.core.activePlayback, Events.PLAYBACK_STOP, this.onStop);
16077
16079
  this.listenTo(this.core.activePlayback, Events.PLAYBACK_PLAY, this.onPlay);
16080
+ this.listenTo(this.core.activePlayback, Events.PLAYBACK_SETTINGSUPDATE, this.onSettingsUpdate);
16078
16081
  this.listenTo(this.core.activePlayback, PlaybackEvents.PLAYBACK_RATE_CHANGED, this.onPlaybackRateChange);
16079
16082
  this.listenTo(this.core.activeContainer, Events.CONTAINER_LOADEDMETADATA, this.onMetaDataLoaded);
16080
16083
  }
@@ -16101,8 +16104,22 @@ class PlaybackRate extends UICorePlugin {
16101
16104
  i18n: this.core.i18n,
16102
16105
  })));
16103
16106
  }
16107
+ onSettingsUpdate() {
16108
+ trace(`${T$7} onSettingsUpdate`, {
16109
+ playbackType: this.core.activePlayback.getPlaybackType(),
16110
+ dvrEnabled: this.core.activePlayback.dvrEnabled,
16111
+ });
16112
+ // this.metadataLoaded = false
16113
+ }
16104
16114
  onMetaDataLoaded() {
16105
- this.render();
16115
+ trace(`${T$7} onMetaDataLoaded`, {
16116
+ playbackType: this.core.activePlayback.getPlaybackType(),
16117
+ dvrEnabled: this.core.activePlayback.dvrEnabled,
16118
+ });
16119
+ setTimeout(() => {
16120
+ this.metadataLoaded = true;
16121
+ this.render();
16122
+ }, 0);
16106
16123
  }
16107
16124
  allRateElements() {
16108
16125
  return this.$el.find('#playback-rate-menu li');
@@ -16122,7 +16139,11 @@ class PlaybackRate extends UICorePlugin {
16122
16139
  }
16123
16140
  }
16124
16141
  shouldMount() {
16125
- if (!this.core.activePlayback) {
16142
+ trace(`${T$7} shouldMount`, {
16143
+ playbackType: this.core.activePlayback?.getPlaybackType(),
16144
+ dvrEnabled: this.core.activePlayback?.dvrEnabled,
16145
+ });
16146
+ if (!this.core.activePlayback || !this.metadataLoaded) {
16126
16147
  return false;
16127
16148
  }
16128
16149
  if (this.core.activePlayback.getPlaybackType() === Playback.LIVE &&
package/lib/Player.js CHANGED
@@ -11,7 +11,7 @@ const DEFAULT_OPTIONS = {
11
11
  debug: 'none',
12
12
  loop: false,
13
13
  mute: false,
14
- playbackType: 'vod',
14
+ // playbackType: 'vod',
15
15
  priorityTransport: 'dash',
16
16
  sources: [],
17
17
  strings: {},
@@ -46,6 +46,7 @@ export type PlaybackRateSettings = {
46
46
  */
47
47
  export declare class PlaybackRate extends UICorePlugin {
48
48
  private selectedRate;
49
+ private metadataLoaded;
49
50
  /**
50
51
  * @internal
51
52
  */
@@ -82,6 +83,7 @@ export declare class PlaybackRate extends UICorePlugin {
82
83
  private onMediaControlRendered;
83
84
  private onGearRendered;
84
85
  private mount;
86
+ private onSettingsUpdate;
85
87
  private onMetaDataLoaded;
86
88
  private allRateElements;
87
89
  private rateElement;
@@ -1 +1 @@
1
- {"version":3,"file":"PlaybackRate.d.ts","sourceRoot":"","sources":["../../../src/plugins/playback-rate/PlaybackRate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAsB,IAAI,EAAK,MAAM,cAAc,CAAA;AAiBhF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAA;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAgBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAI5C,OAAO,CAAC,YAAY,CAAwB;IAE5C;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAuB;IAE7D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAqB;gBAE7C,IAAI,EAAE,IAAI;IAOtB,OAAO,KAAK,aAAa,GAExB;IAED;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACH,IAAa,MAAM;;;MAKlB;IAED;;OAEG;IACM,UAAU;IASnB,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,KAAK;IAsBb,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,WAAW;IAenB;;OAEG;IACM,MAAM;IAoCf,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,qBAAqB;CAM9B"}
1
+ {"version":3,"file":"PlaybackRate.d.ts","sourceRoot":"","sources":["../../../src/plugins/playback-rate/PlaybackRate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAsB,IAAI,EAAK,MAAM,cAAc,CAAA;AAiBhF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAA;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAgBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAI5C,OAAO,CAAC,YAAY,CAAwB;IAE5C,OAAO,CAAC,cAAc,CAAQ;IAE9B;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAuB;IAE7D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAqB;gBAE7C,IAAI,EAAE,IAAI;IAOtB,OAAO,KAAK,aAAa,GAExB;IAED;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACH,IAAa,MAAM;;;MAKlB;IAED;;OAEG;IACM,UAAU;IASnB,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,uBAAuB;IAsB/B,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,KAAK;IAsBb,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,WAAW;IAoBnB;;OAEG;IACM,MAAM;IAoCf,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,qBAAqB;CAM9B"}
@@ -56,6 +56,7 @@ export class PlaybackRate extends UICorePlugin {
56
56
  // Saved when an ad starts to restore after it finishes
57
57
  // private prevSelectedRate: string | undefined
58
58
  selectedRate = DEFAULT_PLAYBACK_RATE;
59
+ metadataLoaded = false;
59
60
  /**
60
61
  * @internal
61
62
  */
@@ -114,8 +115,10 @@ export class PlaybackRate extends UICorePlugin {
114
115
  }
115
116
  onActiveContainerChange() {
116
117
  trace(`${T} onActiveContainerChange`);
118
+ this.metadataLoaded = false;
117
119
  this.listenTo(this.core.activePlayback, Events.PLAYBACK_STOP, this.onStop);
118
120
  this.listenTo(this.core.activePlayback, Events.PLAYBACK_PLAY, this.onPlay);
121
+ this.listenTo(this.core.activePlayback, Events.PLAYBACK_SETTINGSUPDATE, this.onSettingsUpdate);
119
122
  this.listenTo(this.core.activePlayback, PlaybackEvents.PLAYBACK_RATE_CHANGED, this.onPlaybackRateChange);
120
123
  this.listenTo(this.core.activeContainer, Events.CONTAINER_LOADEDMETADATA, this.onMetaDataLoaded);
121
124
  }
@@ -144,9 +147,22 @@ export class PlaybackRate extends UICorePlugin {
144
147
  i18n: this.core.i18n,
145
148
  })));
146
149
  }
150
+ onSettingsUpdate() {
151
+ trace(`${T} onSettingsUpdate`, {
152
+ playbackType: this.core.activePlayback.getPlaybackType(),
153
+ dvrEnabled: this.core.activePlayback.dvrEnabled,
154
+ });
155
+ // this.metadataLoaded = false
156
+ }
147
157
  onMetaDataLoaded() {
148
- trace(`${T} onMetaDataLoaded`);
149
- this.render();
158
+ trace(`${T} onMetaDataLoaded`, {
159
+ playbackType: this.core.activePlayback.getPlaybackType(),
160
+ dvrEnabled: this.core.activePlayback.dvrEnabled,
161
+ });
162
+ setTimeout(() => {
163
+ this.metadataLoaded = true;
164
+ this.render();
165
+ }, 0);
150
166
  }
151
167
  allRateElements() {
152
168
  return this.$el.find('#playback-rate-menu li');
@@ -167,7 +183,11 @@ export class PlaybackRate extends UICorePlugin {
167
183
  }
168
184
  }
169
185
  shouldMount() {
170
- if (!this.core.activePlayback) {
186
+ trace(`${T} shouldMount`, {
187
+ playbackType: this.core.activePlayback?.getPlaybackType(),
188
+ dvrEnabled: this.core.activePlayback?.dvrEnabled,
189
+ });
190
+ if (!this.core.activePlayback || !this.metadataLoaded) {
171
191
  return false;
172
192
  }
173
193
  if (this.core.activePlayback.getPlaybackType() === Playback.LIVE &&
package/lib/types.d.ts CHANGED
@@ -144,9 +144,10 @@ export interface PlayerConfig extends Record<string, unknown> {
144
144
  */
145
145
  mute?: boolean;
146
146
  /**
147
- * The type of playback (live stream or video on demand).
148
- *
149
- * @defaultValue 'vod'
147
+ * Stream type.
148
+ * @remark
149
+ * Should only be set if known in advance, as it should not change once determined.
150
+ * Otherwise it might cause inconsistencies in the UI plugins behavior, for instance, glitches with rendering of the DVR controls or seek bar.
150
151
  */
151
152
  playbackType?: PlaybackType;
152
153
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gcorevideo/player",
3
- "version": "2.22.8",
3
+ "version": "2.22.10",
4
4
  "description": "Gcore JavaScript video player",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
package/src/Player.ts CHANGED
@@ -59,7 +59,7 @@ const DEFAULT_OPTIONS: PlayerConfig = {
59
59
  debug: 'none',
60
60
  loop: false,
61
61
  mute: false,
62
- playbackType: 'vod',
62
+ // playbackType: 'vod',
63
63
  priorityTransport: 'dash',
64
64
  sources: [],
65
65
  strings: {},
@@ -235,8 +235,5 @@ describe('MediaControl', () => {
235
235
  })
236
236
 
237
237
  function arraySubtract<T extends string>(arr1: T[], arr2: T[]) {
238
- // const ret = arr1.filter((item) => !arr2.includes(item))
239
238
  return arr1.filter((item) => !arr2.includes(item))
240
- // console.log('arraySubtract %s - %s: %s', arr1, arr2, ret)
241
- // return ret
242
239
  }
@@ -82,6 +82,8 @@ export class PlaybackRate extends UICorePlugin {
82
82
 
83
83
  private selectedRate = DEFAULT_PLAYBACK_RATE
84
84
 
85
+ private metadataLoaded = false
86
+
85
87
  /**
86
88
  * @internal
87
89
  */
@@ -159,8 +161,14 @@ export class PlaybackRate extends UICorePlugin {
159
161
 
160
162
  private onActiveContainerChange() {
161
163
  trace(`${T} onActiveContainerChange`)
164
+ this.metadataLoaded = false
162
165
  this.listenTo(this.core.activePlayback, Events.PLAYBACK_STOP, this.onStop)
163
166
  this.listenTo(this.core.activePlayback, Events.PLAYBACK_PLAY, this.onPlay)
167
+ this.listenTo(
168
+ this.core.activePlayback,
169
+ Events.PLAYBACK_SETTINGSUPDATE,
170
+ this.onSettingsUpdate,
171
+ )
164
172
  this.listenTo(
165
173
  this.core.activePlayback,
166
174
  PlaybackEvents.PLAYBACK_RATE_CHANGED,
@@ -205,9 +213,23 @@ export class PlaybackRate extends UICorePlugin {
205
213
  )
206
214
  }
207
215
 
216
+ private onSettingsUpdate() {
217
+ trace(`${T} onSettingsUpdate`, {
218
+ playbackType: this.core.activePlayback.getPlaybackType(),
219
+ dvrEnabled: this.core.activePlayback.dvrEnabled,
220
+ })
221
+ // this.metadataLoaded = false
222
+ }
223
+
208
224
  private onMetaDataLoaded() {
209
- trace(`${T} onMetaDataLoaded`)
210
- this.render()
225
+ trace(`${T} onMetaDataLoaded`, {
226
+ playbackType: this.core.activePlayback.getPlaybackType(),
227
+ dvrEnabled: this.core.activePlayback.dvrEnabled,
228
+ })
229
+ setTimeout(() => {
230
+ this.metadataLoaded = true
231
+ this.render()
232
+ }, 0)
211
233
  }
212
234
 
213
235
  private allRateElements(): ZeptoResult {
@@ -236,7 +258,12 @@ export class PlaybackRate extends UICorePlugin {
236
258
  }
237
259
 
238
260
  private shouldMount() {
239
- if (!this.core.activePlayback) {
261
+ trace(`${T} shouldMount`, {
262
+ playbackType: this.core.activePlayback?.getPlaybackType(),
263
+ dvrEnabled: this.core.activePlayback?.dvrEnabled,
264
+ })
265
+
266
+ if (!this.core.activePlayback || !this.metadataLoaded) {
240
267
  return false
241
268
  }
242
269
 
@@ -7,6 +7,7 @@ import {
7
7
  } from '../../../testUtils'
8
8
  import { Events } from '@clappr/core'
9
9
  import { GearEvents } from '../../bottom-gear/BottomGear'
10
+ import { PlaybackType } from '../../../types'
10
11
  // import { Logger, LogTracer, setTracer } from '@gcorevideo/utils'
11
12
 
12
13
  // Logger.enable('*')
@@ -19,6 +20,7 @@ describe('PlaybackRate', () => {
19
20
  let playbackRate: PlaybackRate
20
21
  beforeEach(() => {
21
22
  core = createMockCore()
23
+ setupPlaybackType(core, 'vod')
22
24
  mediaControl = createMockMediaControl(core)
23
25
  bottomGear = createMockBottomGear(core)
24
26
  core.getPlugin.mockImplementation((name: string) => {
@@ -36,11 +38,9 @@ describe('PlaybackRate', () => {
36
38
  playbackRate = new PlaybackRate(core)
37
39
  core.emit(Events.CORE_READY)
38
40
  mediaControl.trigger(Events.MEDIACONTROL_RENDERED)
39
- core.activePlayback.getPlaybackType.mockReturnValue('live')
40
- core.activeContainer.getPlaybackType.mockReturnValue('live')
41
- core.getPlaybackType.mockReturnValue('live')
42
- core.emit(Events.CORE_ACTIVE_CONTAINER_CHANGED)
43
41
  bottomGear.trigger(GearEvents.RENDERED)
42
+ setupPlaybackType(core, 'live')
43
+ core.emit(Events.CORE_ACTIVE_CONTAINER_CHANGED)
44
44
  })
45
45
  it('should render', () => {
46
46
  expect(playbackRate.el.innerHTML).toMatchSnapshot()
@@ -137,9 +137,7 @@ describe('PlaybackRate', () => {
137
137
  playbackRate = new PlaybackRate(core)
138
138
  core.emit(Events.CORE_READY)
139
139
  mediaControl.trigger(Events.MEDIACONTROL_RENDERED)
140
- core.activePlayback.getPlaybackType.mockReturnValue('live')
141
- core.activeContainer.getPlaybackType.mockReturnValue('live')
142
- core.getPlaybackType.mockReturnValue('live')
140
+ setupPlaybackType(core, 'live')
143
141
  core.emit(Events.CORE_ACTIVE_CONTAINER_CHANGED)
144
142
  bottomGear.trigger(GearEvents.RENDERED)
145
143
  core.activePlayback.dvrEnabled = true
@@ -180,3 +178,9 @@ expect.extend({
180
178
  }
181
179
  },
182
180
  })
181
+
182
+ function setupPlaybackType(core: any, type: PlaybackType) {
183
+ core.activePlayback.getPlaybackType.mockReturnValue(type)
184
+ core.activeContainer.getPlaybackType.mockReturnValue(type)
185
+ core.getPlaybackType.mockReturnValue(type)
186
+ }
package/src/types.ts CHANGED
@@ -162,9 +162,10 @@ export interface PlayerConfig extends Record<string, unknown> {
162
162
  mute?: boolean
163
163
 
164
164
  /**
165
- * The type of playback (live stream or video on demand).
166
- *
167
- * @defaultValue 'vod'
165
+ * Stream type.
166
+ * @remark
167
+ * Should only be set if known in advance, as it should not change once determined.
168
+ * Otherwise it might cause inconsistencies in the UI plugins behavior, for instance, glitches with rendering of the DVR controls or seek bar.
168
169
  */
169
170
  playbackType?: PlaybackType
170
171