@mottosports/motto-video-player 1.0.1-rc.27 → 1.0.1-rc.29
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/index.js +68 -71
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +71 -74
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1181,9 +1181,10 @@ var useShakePlayer = ({
|
|
|
1181
1181
|
shakaConfig,
|
|
1182
1182
|
drmConfig,
|
|
1183
1183
|
onError,
|
|
1184
|
-
onPlayerReady
|
|
1184
|
+
onPlayerReady,
|
|
1185
|
+
onBeforeLoad,
|
|
1186
|
+
playerRef
|
|
1185
1187
|
}) => {
|
|
1186
|
-
const playerRef = (0, import_react.useRef)(null);
|
|
1187
1188
|
const initializePlayer = (0, import_react.useCallback)(async (video) => {
|
|
1188
1189
|
try {
|
|
1189
1190
|
import_shaka_player.default.polyfill.installAll();
|
|
@@ -1196,6 +1197,55 @@ var useShakePlayer = ({
|
|
|
1196
1197
|
if (shakaConfig) {
|
|
1197
1198
|
player.configure(shakaConfig);
|
|
1198
1199
|
}
|
|
1200
|
+
let manifestUrl = src.url;
|
|
1201
|
+
const isDRM = Boolean(src.drm);
|
|
1202
|
+
let cert = null;
|
|
1203
|
+
if (isDRM) {
|
|
1204
|
+
const isPlayReady = isPlayReadySupported();
|
|
1205
|
+
const isFairPlay = isAppleDevice();
|
|
1206
|
+
if (isAppleDevice() && src.drm.fairplay?.certificate_url) {
|
|
1207
|
+
const req = await fetch(src.drm.fairplay.certificate_url);
|
|
1208
|
+
cert = await req.arrayBuffer();
|
|
1209
|
+
manifestUrl = src.drm.fairplay.playlist_url;
|
|
1210
|
+
} else if (isPlayReady && src.drm.playready?.license_url) {
|
|
1211
|
+
manifestUrl = src.drm.playready.playlist_url;
|
|
1212
|
+
} else {
|
|
1213
|
+
manifestUrl = src.drm?.widevine?.playlist_url || "";
|
|
1214
|
+
}
|
|
1215
|
+
player.configure({
|
|
1216
|
+
drm: {
|
|
1217
|
+
servers: {
|
|
1218
|
+
"com.widevine.alpha": src.drm.widevine?.license_url,
|
|
1219
|
+
"com.microsoft.playready": src.drm.playready?.license_url,
|
|
1220
|
+
"com.apple.fps": src.drm.fairplay?.license_url
|
|
1221
|
+
},
|
|
1222
|
+
...cert && {
|
|
1223
|
+
advanced: {
|
|
1224
|
+
"com.apple.fps": {
|
|
1225
|
+
serverCertificate: new Uint8Array(cert)
|
|
1226
|
+
}
|
|
1227
|
+
}
|
|
1228
|
+
}
|
|
1229
|
+
}
|
|
1230
|
+
});
|
|
1231
|
+
const netEngine = player.getNetworkingEngine();
|
|
1232
|
+
if (netEngine) {
|
|
1233
|
+
netEngine.registerRequestFilter((type, request) => {
|
|
1234
|
+
if (type === import_shaka_player.default.net.NetworkingEngine.RequestType.LICENSE) {
|
|
1235
|
+
request.headers["x-dt-custom-data"] = src.drm.token;
|
|
1236
|
+
}
|
|
1237
|
+
});
|
|
1238
|
+
netEngine.registerResponseFilter((type, response) => {
|
|
1239
|
+
if (type === import_shaka_player.default.net.NetworkingEngine.RequestType.LICENSE) {
|
|
1240
|
+
const ks = player.keySystem && player.keySystem();
|
|
1241
|
+
if (ks === "com.apple.fps") {
|
|
1242
|
+
const responseText = import_shaka_player.default.util.StringUtils.fromUTF8(response.data);
|
|
1243
|
+
response.data = import_shaka_player.default.util.Uint8ArrayUtils.fromBase64(responseText).buffer;
|
|
1244
|
+
}
|
|
1245
|
+
}
|
|
1246
|
+
});
|
|
1247
|
+
}
|
|
1248
|
+
}
|
|
1199
1249
|
player?.addEventListener("error", (event) => {
|
|
1200
1250
|
const error = event.detail;
|
|
1201
1251
|
if (error?.code === 7e3) {
|
|
@@ -1204,6 +1254,8 @@ var useShakePlayer = ({
|
|
|
1204
1254
|
console.error("Shaka Player Error:", error);
|
|
1205
1255
|
onError?.(new Error(`Shaka Player Error: ${error.message || "Unknown error"}`));
|
|
1206
1256
|
});
|
|
1257
|
+
onBeforeLoad?.();
|
|
1258
|
+
await player.load(manifestUrl);
|
|
1207
1259
|
onPlayerReady?.(player);
|
|
1208
1260
|
return player;
|
|
1209
1261
|
} catch (error) {
|
|
@@ -1214,61 +1266,7 @@ var useShakePlayer = ({
|
|
|
1214
1266
|
onError?.(error);
|
|
1215
1267
|
throw error;
|
|
1216
1268
|
}
|
|
1217
|
-
}, [shakaConfig, drmConfig, src, onError, onPlayerReady]);
|
|
1218
|
-
const loadSource = (0, import_react.useCallback)(async () => {
|
|
1219
|
-
const player = playerRef.current;
|
|
1220
|
-
if (!player) return;
|
|
1221
|
-
let manifestUrl = src.url;
|
|
1222
|
-
const isDRM = Boolean(src.drm);
|
|
1223
|
-
let cert = null;
|
|
1224
|
-
if (isDRM) {
|
|
1225
|
-
const isPlayReady = isPlayReadySupported();
|
|
1226
|
-
const isFairPlay = isAppleDevice();
|
|
1227
|
-
if (isFairPlay && src.drm.fairplay?.certificate_url) {
|
|
1228
|
-
const req = await fetch(src.drm.fairplay.certificate_url);
|
|
1229
|
-
cert = await req.arrayBuffer();
|
|
1230
|
-
manifestUrl = src.drm.fairplay.playlist_url;
|
|
1231
|
-
} else if (isPlayReady && src.drm.playready?.license_url) {
|
|
1232
|
-
manifestUrl = src.drm.playready.playlist_url;
|
|
1233
|
-
} else {
|
|
1234
|
-
manifestUrl = src.drm?.widevine?.playlist_url || "";
|
|
1235
|
-
}
|
|
1236
|
-
player.configure({
|
|
1237
|
-
drm: {
|
|
1238
|
-
servers: {
|
|
1239
|
-
"com.widevine.alpha": src.drm.widevine?.license_url,
|
|
1240
|
-
"com.microsoft.playready": src.drm.playready?.license_url,
|
|
1241
|
-
"com.apple.fps": src.drm.fairplay?.license_url
|
|
1242
|
-
},
|
|
1243
|
-
...cert && {
|
|
1244
|
-
advanced: {
|
|
1245
|
-
"com.apple.fps": {
|
|
1246
|
-
serverCertificate: new Uint8Array(cert)
|
|
1247
|
-
}
|
|
1248
|
-
}
|
|
1249
|
-
}
|
|
1250
|
-
}
|
|
1251
|
-
});
|
|
1252
|
-
const netEngine = player.getNetworkingEngine();
|
|
1253
|
-
if (netEngine) {
|
|
1254
|
-
netEngine.registerRequestFilter((type, request) => {
|
|
1255
|
-
if (type === import_shaka_player.default.net.NetworkingEngine.RequestType.LICENSE) {
|
|
1256
|
-
request.headers["x-dt-custom-data"] = src.drm.token;
|
|
1257
|
-
}
|
|
1258
|
-
});
|
|
1259
|
-
netEngine.registerResponseFilter((type, response) => {
|
|
1260
|
-
if (type === import_shaka_player.default.net.NetworkingEngine.RequestType.LICENSE) {
|
|
1261
|
-
const ks = player.keySystem && player.keySystem();
|
|
1262
|
-
if (ks === "com.apple.fps") {
|
|
1263
|
-
const responseText = import_shaka_player.default.util.StringUtils.fromUTF8(response.data);
|
|
1264
|
-
response.data = import_shaka_player.default.util.Uint8ArrayUtils.fromBase64(responseText).buffer;
|
|
1265
|
-
}
|
|
1266
|
-
}
|
|
1267
|
-
});
|
|
1268
|
-
}
|
|
1269
|
-
}
|
|
1270
|
-
await player.load(manifestUrl);
|
|
1271
|
-
}, [src]);
|
|
1269
|
+
}, [shakaConfig, drmConfig, src, onError, onPlayerReady, onBeforeLoad, playerRef]);
|
|
1272
1270
|
const destroyPlayer = (0, import_react.useCallback)(async () => {
|
|
1273
1271
|
if (playerRef.current) {
|
|
1274
1272
|
try {
|
|
@@ -1279,11 +1277,9 @@ var useShakePlayer = ({
|
|
|
1279
1277
|
playerRef.current = null;
|
|
1280
1278
|
}
|
|
1281
1279
|
}
|
|
1282
|
-
}, []);
|
|
1280
|
+
}, [playerRef]);
|
|
1283
1281
|
return {
|
|
1284
|
-
playerRef,
|
|
1285
1282
|
initializePlayer,
|
|
1286
|
-
loadSource,
|
|
1287
1283
|
destroyPlayer
|
|
1288
1284
|
};
|
|
1289
1285
|
};
|
|
@@ -1408,7 +1404,7 @@ var import_mux_data_shakaplayer = __toESM(require("@mux/mux-data-shakaplayer"));
|
|
|
1408
1404
|
var import_shaka_player2 = __toESM(require("shaka-player/dist/shaka-player.ui"));
|
|
1409
1405
|
|
|
1410
1406
|
// package.json
|
|
1411
|
-
var version = "1.0.1-rc.
|
|
1407
|
+
var version = "1.0.1-rc.29";
|
|
1412
1408
|
|
|
1413
1409
|
// src/hooks/useMuxAnalytics.ts
|
|
1414
1410
|
var useMuxAnalytics = (playerRef, muxConfig, onMuxReady, onMuxDataUpdate) => {
|
|
@@ -3313,12 +3309,21 @@ var Player = (0, import_react12.forwardRef)(
|
|
|
3313
3309
|
const containerRef = (0, import_react12.useRef)(null);
|
|
3314
3310
|
const adContainerRef = (0, import_react12.useRef)(null);
|
|
3315
3311
|
(0, import_react12.useImperativeHandle)(ref, () => videoRef.current, []);
|
|
3316
|
-
const
|
|
3312
|
+
const playerRef = (0, import_react12.useRef)(null);
|
|
3313
|
+
const {
|
|
3314
|
+
initializeMux,
|
|
3315
|
+
updateMuxData,
|
|
3316
|
+
handleMuxError,
|
|
3317
|
+
destroyMux
|
|
3318
|
+
} = useMuxAnalytics(playerRef, muxConfig, events?.onMuxReady, events?.onMuxDataUpdate);
|
|
3319
|
+
const { initializePlayer, destroyPlayer } = useShakePlayer({
|
|
3317
3320
|
src,
|
|
3318
3321
|
shakaConfig,
|
|
3319
3322
|
drmConfig,
|
|
3320
3323
|
onError: events?.onError,
|
|
3321
|
-
onPlayerReady: events?.onPlayerReady
|
|
3324
|
+
onPlayerReady: events?.onPlayerReady,
|
|
3325
|
+
onBeforeLoad: initializeMux,
|
|
3326
|
+
playerRef
|
|
3322
3327
|
});
|
|
3323
3328
|
const {
|
|
3324
3329
|
getAvailableQualities,
|
|
@@ -3337,12 +3342,6 @@ var Player = (0, import_react12.forwardRef)(
|
|
|
3337
3342
|
skipForward,
|
|
3338
3343
|
enabled: true
|
|
3339
3344
|
});
|
|
3340
|
-
const {
|
|
3341
|
-
initializeMux,
|
|
3342
|
-
updateMuxData,
|
|
3343
|
-
handleMuxError,
|
|
3344
|
-
destroyMux
|
|
3345
|
-
} = useMuxAnalytics(playerRef, muxConfig, events?.onMuxReady, events?.onMuxDataUpdate);
|
|
3346
3345
|
const { setupEventListeners, cleanupEventListeners } = useEventHandlers(videoRef, {
|
|
3347
3346
|
onPlay: events?.onPlay,
|
|
3348
3347
|
onPause: events?.onPause,
|
|
@@ -3421,8 +3420,6 @@ var Player = (0, import_react12.forwardRef)(
|
|
|
3421
3420
|
const initialize = async () => {
|
|
3422
3421
|
try {
|
|
3423
3422
|
await initializePlayer(video);
|
|
3424
|
-
initializeMux();
|
|
3425
|
-
await loadSource();
|
|
3426
3423
|
setupEventListeners();
|
|
3427
3424
|
const cleanupQuality = setupQualityTracking();
|
|
3428
3425
|
configureQuality();
|