@mottosports/motto-video-player 1.0.1-rc.28 → 1.0.1-rc.30

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.mjs CHANGED
@@ -1134,13 +1134,22 @@ var isPlayReadySupported = () => {
1134
1134
  return isWindows || isXbox || isEdge || isIE;
1135
1135
  };
1136
1136
 
1137
+ // src/hooks/useShakePlayer.ts
1138
+ import initShakaPlayerMux from "@mux/mux-data-shakaplayer";
1139
+
1140
+ // package.json
1141
+ var version = "1.0.1-rc.30";
1142
+
1137
1143
  // src/hooks/useShakePlayer.ts
1138
1144
  var useShakePlayer = ({
1139
1145
  src,
1140
1146
  shakaConfig,
1141
1147
  drmConfig,
1142
1148
  onError,
1143
- onPlayerReady
1149
+ onPlayerReady,
1150
+ muxConfig,
1151
+ onMuxReady,
1152
+ onMuxDataUpdate
1144
1153
  }) => {
1145
1154
  const playerRef = useRef(null);
1146
1155
  const initializePlayer = useCallback(async (video) => {
@@ -1155,35 +1164,13 @@ var useShakePlayer = ({
1155
1164
  if (shakaConfig) {
1156
1165
  player.configure(shakaConfig);
1157
1166
  }
1158
- player?.addEventListener("error", (event) => {
1159
- const error = event.detail;
1160
- if (error?.code === 7e3) {
1161
- return;
1162
- }
1163
- console.error("Shaka Player Error:", error);
1164
- onError?.(new Error(`Shaka Player Error: ${error.message || "Unknown error"}`));
1165
- });
1166
- return player;
1167
- } catch (error) {
1168
- if (error?.code === 7e3) {
1169
- return;
1170
- }
1171
- console.error("Error initializing Shaka Player:", error);
1172
- onError?.(error);
1173
- throw error;
1174
- }
1175
- }, [shakaConfig, drmConfig, src, onError, onPlayerReady]);
1176
- const loadSource = useCallback(async () => {
1177
- const player = playerRef.current;
1178
- if (!player) return;
1179
- try {
1180
1167
  let manifestUrl = src.url;
1181
1168
  const isDRM = Boolean(src.drm);
1182
1169
  let cert = null;
1183
1170
  if (isDRM) {
1184
1171
  const isPlayReady = isPlayReadySupported();
1185
1172
  const isFairPlay = isAppleDevice();
1186
- if (isFairPlay && src.drm.fairplay?.certificate_url) {
1173
+ if (isAppleDevice() && src.drm.fairplay?.certificate_url) {
1187
1174
  const req = await fetch(src.drm.fairplay.certificate_url);
1188
1175
  cert = await req.arrayBuffer();
1189
1176
  manifestUrl = src.drm.fairplay.playlist_url;
@@ -1226,17 +1213,53 @@ var useShakePlayer = ({
1226
1213
  });
1227
1214
  }
1228
1215
  }
1216
+ player?.addEventListener("error", (event) => {
1217
+ const error = event.detail;
1218
+ if (error?.code === 7e3) {
1219
+ return;
1220
+ }
1221
+ console.error("Shaka Player Error:", error);
1222
+ onError?.(new Error(`Shaka Player Error: ${error.message || "Unknown error"}`));
1223
+ });
1224
+ if (muxConfig) {
1225
+ try {
1226
+ const playerInitTime = initShakaPlayerMux.utils.now();
1227
+ const muxOptions = {
1228
+ debug: muxConfig.debug || false,
1229
+ disableCookies: muxConfig.disableCookies || false,
1230
+ respectDoNotTrack: muxConfig.respectDoNotTrack || false,
1231
+ automaticErrorTracking: muxConfig.automaticErrorTracking !== false,
1232
+ ...muxConfig.beaconCollectionDomain && { beaconCollectionDomain: muxConfig.beaconCollectionDomain },
1233
+ ...muxConfig.errorTranslator && { errorTranslator: muxConfig.errorTranslator },
1234
+ data: {
1235
+ env_key: muxConfig.envKey,
1236
+ player_name: muxConfig?.metadata?.player_name,
1237
+ player_version: version,
1238
+ player_init_time: playerInitTime,
1239
+ video_title: muxConfig?.metadata?.video_title ?? "",
1240
+ video_id: muxConfig?.metadata?.video_id ?? "",
1241
+ viewer_user_id: muxConfig?.metadata?.viewer_user_id ?? "",
1242
+ ...muxConfig.metadata
1243
+ }
1244
+ };
1245
+ initShakaPlayerMux(player, muxOptions, shaka);
1246
+ onMuxReady?.();
1247
+ } catch (error) {
1248
+ console.error("Failed to initialize Mux Analytics:", error);
1249
+ }
1250
+ }
1229
1251
  await player.load(manifestUrl);
1230
1252
  onPlayerReady?.(player);
1253
+ return player;
1231
1254
  } catch (error) {
1232
1255
  if (error?.code === 7e3) {
1233
1256
  return;
1234
1257
  }
1235
- console.error("Error loading source:", error);
1258
+ console.error("Error initializing Shaka Player:", error);
1236
1259
  onError?.(error);
1237
1260
  throw error;
1238
1261
  }
1239
- }, [src, onError]);
1262
+ }, [shakaConfig, drmConfig, src, onError, onPlayerReady, muxConfig, onMuxReady]);
1240
1263
  const destroyPlayer = useCallback(async () => {
1241
1264
  if (playerRef.current) {
1242
1265
  try {
@@ -1247,11 +1270,10 @@ var useShakePlayer = ({
1247
1270
  playerRef.current = null;
1248
1271
  }
1249
1272
  }
1250
- }, []);
1273
+ }, [playerRef]);
1251
1274
  return {
1252
1275
  playerRef,
1253
1276
  initializePlayer,
1254
- loadSource,
1255
1277
  destroyPlayer
1256
1278
  };
1257
1279
  };
@@ -1372,19 +1394,14 @@ var useSkipControls = (videoRef, onSkipBack, onSkipForward) => {
1372
1394
 
1373
1395
  // src/hooks/useMuxAnalytics.ts
1374
1396
  import { useCallback as useCallback4, useRef as useRef3 } from "react";
1375
- import initShakaPlayerMux from "@mux/mux-data-shakaplayer";
1397
+ import initShakaPlayerMux2 from "@mux/mux-data-shakaplayer";
1376
1398
  import shaka2 from "shaka-player/dist/shaka-player.ui";
1377
-
1378
- // package.json
1379
- var version = "1.0.1-rc.28";
1380
-
1381
- // src/hooks/useMuxAnalytics.ts
1382
1399
  var useMuxAnalytics = (playerRef, muxConfig, onMuxReady, onMuxDataUpdate) => {
1383
1400
  const shakaPlayerMuxRef = useRef3(null);
1384
1401
  const initializeMux = useCallback4(() => {
1385
1402
  if (!muxConfig || !playerRef.current) return;
1386
1403
  try {
1387
- const playerInitTime = initShakaPlayerMux.utils.now();
1404
+ const playerInitTime = initShakaPlayerMux2.utils.now();
1388
1405
  const muxOptions = {
1389
1406
  debug: muxConfig.debug || false,
1390
1407
  disableCookies: muxConfig.disableCookies || false,
@@ -1403,7 +1420,7 @@ var useMuxAnalytics = (playerRef, muxConfig, onMuxReady, onMuxDataUpdate) => {
1403
1420
  ...muxConfig.metadata
1404
1421
  }
1405
1422
  };
1406
- shakaPlayerMuxRef.current = initShakaPlayerMux(playerRef.current, muxOptions, shaka2);
1423
+ shakaPlayerMuxRef.current = initShakaPlayerMux2(playerRef.current, muxOptions, shaka2);
1407
1424
  onMuxReady?.();
1408
1425
  } catch (error) {
1409
1426
  console.error("Failed to initialize Mux Analytics:", error);
@@ -3281,13 +3298,22 @@ var Player = forwardRef(
3281
3298
  const containerRef = useRef8(null);
3282
3299
  const adContainerRef = useRef8(null);
3283
3300
  useImperativeHandle(ref, () => videoRef.current, []);
3284
- const { playerRef, initializePlayer, loadSource, destroyPlayer } = useShakePlayer({
3301
+ const { playerRef, initializePlayer, destroyPlayer } = useShakePlayer({
3285
3302
  src,
3286
3303
  shakaConfig,
3287
3304
  drmConfig,
3288
3305
  onError: events?.onError,
3289
- onPlayerReady: events?.onPlayerReady
3306
+ onPlayerReady: events?.onPlayerReady,
3307
+ muxConfig,
3308
+ onMuxReady: events?.onMuxReady,
3309
+ onMuxDataUpdate: events?.onMuxDataUpdate
3290
3310
  });
3311
+ const {
3312
+ initializeMux,
3313
+ updateMuxData,
3314
+ handleMuxError,
3315
+ destroyMux
3316
+ } = useMuxAnalytics(playerRef, muxConfig, events?.onMuxReady, events?.onMuxDataUpdate);
3291
3317
  const {
3292
3318
  getAvailableQualities,
3293
3319
  setQuality,
@@ -3305,12 +3331,6 @@ var Player = forwardRef(
3305
3331
  skipForward,
3306
3332
  enabled: true
3307
3333
  });
3308
- const {
3309
- initializeMux,
3310
- updateMuxData,
3311
- handleMuxError,
3312
- destroyMux
3313
- } = useMuxAnalytics(playerRef, muxConfig, events?.onMuxReady, events?.onMuxDataUpdate);
3314
3334
  const { setupEventListeners, cleanupEventListeners } = useEventHandlers(videoRef, {
3315
3335
  onPlay: events?.onPlay,
3316
3336
  onPause: events?.onPause,
@@ -3389,8 +3409,6 @@ var Player = forwardRef(
3389
3409
  const initialize = async () => {
3390
3410
  try {
3391
3411
  await initializePlayer(video);
3392
- initializeMux();
3393
- await loadSource();
3394
3412
  setupEventListeners();
3395
3413
  const cleanupQuality = setupQualityTracking();
3396
3414
  configureQuality();
@@ -4062,7 +4080,7 @@ var Video = ({
4062
4080
  };
4063
4081
 
4064
4082
  // src/Event.tsx
4065
- import { useCallback as useCallback8, useEffect as useEffect8, useState as useState4 } from "react";
4083
+ import { useCallback as useCallback9, useEffect as useEffect8, useState as useState4 } from "react";
4066
4084
  import { twMerge as twMerge4 } from "tailwind-merge";
4067
4085
  import { useQuery as useQuery2 } from "@tanstack/react-query";
4068
4086
  import { Fragment, jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
@@ -4273,7 +4291,7 @@ function PreEvent({
4273
4291
  }, 1e3);
4274
4292
  return () => clearInterval(interval);
4275
4293
  }, [date, remainingTime]);
4276
- const renderCountdown = useCallback8(() => {
4294
+ const renderCountdown = useCallback9(() => {
4277
4295
  if (shouldBeStarted) {
4278
4296
  return /* @__PURE__ */ jsx10("span", { className: "text-base-content text-xl", children: t("EVENT_NOT_STARTED") });
4279
4297
  }