@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 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.27";
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 { playerRef, initializePlayer, loadSource, destroyPlayer } = useShakePlayer({
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();