@eluvio/elv-player-js 2.0.44 → 2.0.46
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/.vite/manifest.json +15 -15
- package/dist/{dash.all.min-CAGVU549.js → dash.all.min-BqVrPg9p.js} +1 -1
- package/dist/{dash.all.min-DcN2DbEZ.mjs → dash.all.min-BrYxJcIB.mjs} +1 -1
- package/dist/elv-player-js.cjs.js +1 -1
- package/dist/elv-player-js.es.js +1 -1
- package/dist/{index---jn7V6s.mjs → index-B5H3Rli5.mjs} +10093 -10063
- package/dist/{index-CkPcE8ht.js → index-CPGsxEDl.js} +1 -1
- package/dist/{index-D6c2QbKI.mjs → index-CuhbRw90.mjs} +1 -1
- package/dist/{index-XoMPqzfs.js → index-DSwhgBHI.js} +90 -90
- package/lib/player/Player.js +24 -2
- package/lib/ui/Common.js +9 -3
- package/lib/ui/PlayerProfileForm.jsx +10 -1
- package/lib/ui/PlayerUI.jsx +22 -4
- package/package.json +1 -1
package/lib/player/Player.js
CHANGED
|
@@ -43,7 +43,7 @@ export class EluvioPlayer {
|
|
|
43
43
|
return () => this.__settingsListeners = this.__settingsListeners.filter(l => l !== listener);
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
constructor({target, video, parameters, SetErrorMessage}) {
|
|
46
|
+
constructor({target, video, parameters, Reload, UpdateParameters, SetErrorMessage}) {
|
|
47
47
|
this.latest = true;
|
|
48
48
|
this.loading = true;
|
|
49
49
|
this.target = target;
|
|
@@ -69,6 +69,9 @@ export class EluvioPlayer {
|
|
|
69
69
|
].includes(parameters.playerOptions.controls);
|
|
70
70
|
this.__error = undefined;
|
|
71
71
|
|
|
72
|
+
this.__ReloadComponent = Reload;
|
|
73
|
+
this.__UpdateParameters = UpdateParameters;
|
|
74
|
+
|
|
72
75
|
this.SetErrorMessage = (message, error) => {
|
|
73
76
|
SetErrorMessage(message);
|
|
74
77
|
this.__error = error;
|
|
@@ -634,7 +637,8 @@ export class EluvioPlayer {
|
|
|
634
637
|
|
|
635
638
|
// Increase maxBufferHole for channels
|
|
636
639
|
if(
|
|
637
|
-
this.sourceOptions.playoutParameters
|
|
640
|
+
this.sourceOptions.playoutParameters &&
|
|
641
|
+
this.sourceOptions.playoutParameters.channel &&
|
|
638
642
|
Object.keys(customProfileSettings).length === 0
|
|
639
643
|
) {
|
|
640
644
|
profileSettings.maxBufferHole = 4.2;
|
|
@@ -729,6 +733,19 @@ export class EluvioPlayer {
|
|
|
729
733
|
|
|
730
734
|
// TODO: Refactor this somewhere else
|
|
731
735
|
this.SetPlayerProfile = async ({profile, customHLSOptions={}}) => {
|
|
736
|
+
if(this.playoutUrl && this.playoutUrl.includes("hls-widevine")) {
|
|
737
|
+
// Chrome has an issue with widevine that requires fully recreating the video element
|
|
738
|
+
this.__UpdateParameters({
|
|
739
|
+
playerOptions: {
|
|
740
|
+
playerProfile: profile,
|
|
741
|
+
hlsjsOptions: customHLSOptions
|
|
742
|
+
}
|
|
743
|
+
});
|
|
744
|
+
|
|
745
|
+
this.__ReloadComponent();
|
|
746
|
+
return;
|
|
747
|
+
}
|
|
748
|
+
|
|
732
749
|
this.videoDuration = undefined;
|
|
733
750
|
this.playerOptions.playerProfile = profile;
|
|
734
751
|
this.customHLSOptions = customHLSOptions;
|
|
@@ -1197,6 +1214,11 @@ export class EluvioPlayer {
|
|
|
1197
1214
|
return;
|
|
1198
1215
|
}
|
|
1199
1216
|
|
|
1217
|
+
if(this.playoutUrl && this.playoutUrl.includes("hls-widevine")) {
|
|
1218
|
+
// Chrome has an issue with widevine that requires fully recreating the video element
|
|
1219
|
+
this.__ReloadComponent();
|
|
1220
|
+
}
|
|
1221
|
+
|
|
1200
1222
|
try {
|
|
1201
1223
|
if(error && this.playerOptions.restartCallback) {
|
|
1202
1224
|
try {
|
package/lib/ui/Common.js
CHANGED
|
@@ -191,11 +191,17 @@ export const ImageUrl = async ({player, pathOrUrl="", width}) => {
|
|
|
191
191
|
};
|
|
192
192
|
|
|
193
193
|
// Merge defaults with provided parameters. Any parameters not specified in defaults will be ignored.
|
|
194
|
-
export const MergeParameters = (defaults, parameters) => {
|
|
194
|
+
export const MergeParameters = (defaults, parameters, depth=1) => {
|
|
195
|
+
if(depth > 10) {
|
|
196
|
+
return {};
|
|
197
|
+
}
|
|
198
|
+
|
|
195
199
|
let merged = {};
|
|
196
200
|
Object.keys(defaults).forEach(key => {
|
|
197
|
-
if(
|
|
198
|
-
merged
|
|
201
|
+
if(key === "client") {
|
|
202
|
+
merged.client = defaults.client;
|
|
203
|
+
} else if(typeof defaults[key] === "object" && !Array.isArray(defaults[key])) {
|
|
204
|
+
merged[key] = MergeParameters(defaults[key], (parameters || {})[key], depth+1);
|
|
199
205
|
} else {
|
|
200
206
|
const value = (parameters || {})[key];
|
|
201
207
|
merged[key] = typeof value !== "undefined" ? value : defaults[key];
|
|
@@ -6,7 +6,8 @@ import {Spinner} from "./Components.jsx";
|
|
|
6
6
|
import {RegisterModal} from "./Observers.js";
|
|
7
7
|
|
|
8
8
|
const PlayerProfileForm = ({player, Close}) => {
|
|
9
|
-
const [playerOptions, setPlayerOptions] = useState(
|
|
9
|
+
const [playerOptions, setPlayerOptions] = useState(
|
|
10
|
+
);
|
|
10
11
|
const [submitting, setSubmitting] = useState(false);
|
|
11
12
|
const [errorMessage, setErrorMessage] = useState("");
|
|
12
13
|
|
|
@@ -20,6 +21,14 @@ const PlayerProfileForm = ({player, Close}) => {
|
|
|
20
21
|
return () => modalHandlerDisposer && modalHandlerDisposer();
|
|
21
22
|
}, [formRef]);
|
|
22
23
|
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
let options = {...(player.hlsOptions || {})};
|
|
26
|
+
delete options.drmSystems;
|
|
27
|
+
delete options.emeEnabled;
|
|
28
|
+
|
|
29
|
+
setPlayerOptions(JSON.stringify(options, null, 2));
|
|
30
|
+
}, []);
|
|
31
|
+
|
|
23
32
|
const Submit = async event => {
|
|
24
33
|
event.preventDefault();
|
|
25
34
|
|
package/lib/ui/PlayerUI.jsx
CHANGED
|
@@ -18,7 +18,7 @@ import TicketForm from "./TicketForm.jsx";
|
|
|
18
18
|
import {Copy, Spinner, SVG, UserActionIndicator} from "./Components.jsx";
|
|
19
19
|
import TVControls from "./TVControls.jsx";
|
|
20
20
|
import PlayerProfileForm from "./PlayerProfileForm.jsx";
|
|
21
|
-
import {ImageUrl, MergeDefaultParameters} from "./Common.js";
|
|
21
|
+
import {ImageUrl, MergeDefaultParameters, MergeParameters} from "./Common.js";
|
|
22
22
|
import {ChromecastIcon} from "../static/icons/Icons.js";
|
|
23
23
|
import * as Icons from "../static/icons/Icons";
|
|
24
24
|
|
|
@@ -48,7 +48,15 @@ const Poster = ({player}) => {
|
|
|
48
48
|
};
|
|
49
49
|
|
|
50
50
|
let clearInteractionTimeout;
|
|
51
|
-
const PlayerUI = ({
|
|
51
|
+
const PlayerUI = ({
|
|
52
|
+
target,
|
|
53
|
+
parameters,
|
|
54
|
+
InitCallback,
|
|
55
|
+
ErrorCallback,
|
|
56
|
+
Unmount,
|
|
57
|
+
Reset,
|
|
58
|
+
SetAdditionalParameters
|
|
59
|
+
}) => {
|
|
52
60
|
const [player, setPlayer] = useState(undefined);
|
|
53
61
|
const [client, setClient] = useState(undefined);
|
|
54
62
|
const [size, setSize] = useState("lg");
|
|
@@ -101,7 +109,11 @@ const PlayerUI = ({target, parameters, InitCallback, ErrorCallback, Unmount, Res
|
|
|
101
109
|
target,
|
|
102
110
|
video: videoRef.current,
|
|
103
111
|
parameters,
|
|
104
|
-
SetErrorMessage: setErrorMessage
|
|
112
|
+
SetErrorMessage: setErrorMessage,
|
|
113
|
+
Reload: Reset,
|
|
114
|
+
UpdateParameters: parameters => {
|
|
115
|
+
SetAdditionalParameters(parameters);
|
|
116
|
+
}
|
|
105
117
|
});
|
|
106
118
|
|
|
107
119
|
window.__elvPlayer = newPlayer;
|
|
@@ -294,12 +306,18 @@ const PlayerUI = ({target, parameters, InitCallback, ErrorCallback, Unmount, Res
|
|
|
294
306
|
);
|
|
295
307
|
};
|
|
296
308
|
|
|
297
|
-
const PlayerWrapper = (args) => {
|
|
309
|
+
const PlayerWrapper = ({parameters, ...args}) => {
|
|
298
310
|
const [playerKey, setPlayerKey] = useState(Math.random());
|
|
311
|
+
const [additionalParameters, setAdditionalParameters] = useState();
|
|
299
312
|
|
|
300
313
|
return (
|
|
301
314
|
<PlayerUI
|
|
302
315
|
{...args}
|
|
316
|
+
SetAdditionalParameters={setAdditionalParameters}
|
|
317
|
+
parameters={
|
|
318
|
+
!additionalParameters ? parameters :
|
|
319
|
+
MergeParameters(parameters, additionalParameters)
|
|
320
|
+
}
|
|
303
321
|
key={`player-${playerKey}`}
|
|
304
322
|
Reset={() => setPlayerKey(Math.random())}
|
|
305
323
|
/>
|