@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.
- package/dist/core.js +2 -2
- package/dist/index.css +733 -733
- package/dist/index.js +25 -5
- package/dist/plugins/index.css +1244 -1244
- package/dist/plugins/index.js +24 -3
- package/lib/Player.js +1 -1
- package/lib/plugins/playback-rate/PlaybackRate.d.ts +2 -0
- package/lib/plugins/playback-rate/PlaybackRate.d.ts.map +1 -1
- package/lib/plugins/playback-rate/PlaybackRate.js +23 -3
- package/lib/types.d.ts +4 -3
- package/lib/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/Player.ts +1 -1
- package/src/plugins/media-control/__tests__/MediaControl.test.ts +0 -3
- package/src/plugins/playback-rate/PlaybackRate.ts +30 -3
- package/src/plugins/playback-rate/__tests__/PlaybackRate.test.ts +11 -7
- package/src/types.ts +4 -3
- package/tsconfig.tsbuildinfo +1 -1
package/dist/plugins/index.js
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
@@ -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;
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
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
|
/**
|
package/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAElD;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,qBAAqB,CAAA;AAE9D;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;AAEvE;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG,OAAO,CAAA;AAE1D;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,CAAA;AAEzC;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,KAAK,CAAA;AAEhD;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,qBAAqB,GAAG,0BAA0B,CAAA;AAExF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,IAAI,EAAE,IAAI,GAAG,YAAY,CAAA;IAC9B,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,SAAS,EAAE,SAAS,GAAG,YAAY,CAAA;IACxC,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3D;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;;;OAIG;IACH,IAAI,CAAC,EAAE,YAAY,CAAA;IAEnB;;;OAGG;IACH,KAAK,CAAC,EAAE,mBAAmB,CAAA;IAE3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IAEd;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IAEd
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/Player.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
*
|
|
166
|
-
*
|
|
167
|
-
*
|
|
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
|
|