@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.mjs CHANGED
@@ -1107,7 +1107,7 @@ import { forwardRef, useEffect as useEffect5, useRef as useRef8, useImperativeHa
1107
1107
  import shaka3 from "shaka-player/dist/shaka-player.ui";
1108
1108
 
1109
1109
  // src/hooks/useShakePlayer.ts
1110
- import { useRef, useCallback } from "react";
1110
+ import { useCallback } from "react";
1111
1111
  import shaka from "shaka-player/dist/shaka-player.ui";
1112
1112
 
1113
1113
  // src/utils/devices.ts
@@ -1140,9 +1140,10 @@ var useShakePlayer = ({
1140
1140
  shakaConfig,
1141
1141
  drmConfig,
1142
1142
  onError,
1143
- onPlayerReady
1143
+ onPlayerReady,
1144
+ onBeforeLoad,
1145
+ playerRef
1144
1146
  }) => {
1145
- const playerRef = useRef(null);
1146
1147
  const initializePlayer = useCallback(async (video) => {
1147
1148
  try {
1148
1149
  shaka.polyfill.installAll();
@@ -1155,6 +1156,55 @@ var useShakePlayer = ({
1155
1156
  if (shakaConfig) {
1156
1157
  player.configure(shakaConfig);
1157
1158
  }
1159
+ let manifestUrl = src.url;
1160
+ const isDRM = Boolean(src.drm);
1161
+ let cert = null;
1162
+ if (isDRM) {
1163
+ const isPlayReady = isPlayReadySupported();
1164
+ const isFairPlay = isAppleDevice();
1165
+ if (isAppleDevice() && src.drm.fairplay?.certificate_url) {
1166
+ const req = await fetch(src.drm.fairplay.certificate_url);
1167
+ cert = await req.arrayBuffer();
1168
+ manifestUrl = src.drm.fairplay.playlist_url;
1169
+ } else if (isPlayReady && src.drm.playready?.license_url) {
1170
+ manifestUrl = src.drm.playready.playlist_url;
1171
+ } else {
1172
+ manifestUrl = src.drm?.widevine?.playlist_url || "";
1173
+ }
1174
+ player.configure({
1175
+ drm: {
1176
+ servers: {
1177
+ "com.widevine.alpha": src.drm.widevine?.license_url,
1178
+ "com.microsoft.playready": src.drm.playready?.license_url,
1179
+ "com.apple.fps": src.drm.fairplay?.license_url
1180
+ },
1181
+ ...cert && {
1182
+ advanced: {
1183
+ "com.apple.fps": {
1184
+ serverCertificate: new Uint8Array(cert)
1185
+ }
1186
+ }
1187
+ }
1188
+ }
1189
+ });
1190
+ const netEngine = player.getNetworkingEngine();
1191
+ if (netEngine) {
1192
+ netEngine.registerRequestFilter((type, request) => {
1193
+ if (type === shaka.net.NetworkingEngine.RequestType.LICENSE) {
1194
+ request.headers["x-dt-custom-data"] = src.drm.token;
1195
+ }
1196
+ });
1197
+ netEngine.registerResponseFilter((type, response) => {
1198
+ if (type === shaka.net.NetworkingEngine.RequestType.LICENSE) {
1199
+ const ks = player.keySystem && player.keySystem();
1200
+ if (ks === "com.apple.fps") {
1201
+ const responseText = shaka.util.StringUtils.fromUTF8(response.data);
1202
+ response.data = shaka.util.Uint8ArrayUtils.fromBase64(responseText).buffer;
1203
+ }
1204
+ }
1205
+ });
1206
+ }
1207
+ }
1158
1208
  player?.addEventListener("error", (event) => {
1159
1209
  const error = event.detail;
1160
1210
  if (error?.code === 7e3) {
@@ -1163,6 +1213,8 @@ var useShakePlayer = ({
1163
1213
  console.error("Shaka Player Error:", error);
1164
1214
  onError?.(new Error(`Shaka Player Error: ${error.message || "Unknown error"}`));
1165
1215
  });
1216
+ onBeforeLoad?.();
1217
+ await player.load(manifestUrl);
1166
1218
  onPlayerReady?.(player);
1167
1219
  return player;
1168
1220
  } catch (error) {
@@ -1173,61 +1225,7 @@ var useShakePlayer = ({
1173
1225
  onError?.(error);
1174
1226
  throw error;
1175
1227
  }
1176
- }, [shakaConfig, drmConfig, src, onError, onPlayerReady]);
1177
- const loadSource = useCallback(async () => {
1178
- const player = playerRef.current;
1179
- if (!player) return;
1180
- let manifestUrl = src.url;
1181
- const isDRM = Boolean(src.drm);
1182
- let cert = null;
1183
- if (isDRM) {
1184
- const isPlayReady = isPlayReadySupported();
1185
- const isFairPlay = isAppleDevice();
1186
- if (isFairPlay && src.drm.fairplay?.certificate_url) {
1187
- const req = await fetch(src.drm.fairplay.certificate_url);
1188
- cert = await req.arrayBuffer();
1189
- manifestUrl = src.drm.fairplay.playlist_url;
1190
- } else if (isPlayReady && src.drm.playready?.license_url) {
1191
- manifestUrl = src.drm.playready.playlist_url;
1192
- } else {
1193
- manifestUrl = src.drm?.widevine?.playlist_url || "";
1194
- }
1195
- player.configure({
1196
- drm: {
1197
- servers: {
1198
- "com.widevine.alpha": src.drm.widevine?.license_url,
1199
- "com.microsoft.playready": src.drm.playready?.license_url,
1200
- "com.apple.fps": src.drm.fairplay?.license_url
1201
- },
1202
- ...cert && {
1203
- advanced: {
1204
- "com.apple.fps": {
1205
- serverCertificate: new Uint8Array(cert)
1206
- }
1207
- }
1208
- }
1209
- }
1210
- });
1211
- const netEngine = player.getNetworkingEngine();
1212
- if (netEngine) {
1213
- netEngine.registerRequestFilter((type, request) => {
1214
- if (type === shaka.net.NetworkingEngine.RequestType.LICENSE) {
1215
- request.headers["x-dt-custom-data"] = src.drm.token;
1216
- }
1217
- });
1218
- netEngine.registerResponseFilter((type, response) => {
1219
- if (type === shaka.net.NetworkingEngine.RequestType.LICENSE) {
1220
- const ks = player.keySystem && player.keySystem();
1221
- if (ks === "com.apple.fps") {
1222
- const responseText = shaka.util.StringUtils.fromUTF8(response.data);
1223
- response.data = shaka.util.Uint8ArrayUtils.fromBase64(responseText).buffer;
1224
- }
1225
- }
1226
- });
1227
- }
1228
- }
1229
- await player.load(manifestUrl);
1230
- }, [src]);
1228
+ }, [shakaConfig, drmConfig, src, onError, onPlayerReady, onBeforeLoad, playerRef]);
1231
1229
  const destroyPlayer = useCallback(async () => {
1232
1230
  if (playerRef.current) {
1233
1231
  try {
@@ -1238,11 +1236,9 @@ var useShakePlayer = ({
1238
1236
  playerRef.current = null;
1239
1237
  }
1240
1238
  }
1241
- }, []);
1239
+ }, [playerRef]);
1242
1240
  return {
1243
- playerRef,
1244
1241
  initializePlayer,
1245
- loadSource,
1246
1242
  destroyPlayer
1247
1243
  };
1248
1244
  };
@@ -1367,7 +1363,7 @@ import initShakaPlayerMux from "@mux/mux-data-shakaplayer";
1367
1363
  import shaka2 from "shaka-player/dist/shaka-player.ui";
1368
1364
 
1369
1365
  // package.json
1370
- var version = "1.0.1-rc.27";
1366
+ var version = "1.0.1-rc.29";
1371
1367
 
1372
1368
  // src/hooks/useMuxAnalytics.ts
1373
1369
  var useMuxAnalytics = (playerRef, muxConfig, onMuxReady, onMuxDataUpdate) => {
@@ -3272,12 +3268,21 @@ var Player = forwardRef(
3272
3268
  const containerRef = useRef8(null);
3273
3269
  const adContainerRef = useRef8(null);
3274
3270
  useImperativeHandle(ref, () => videoRef.current, []);
3275
- const { playerRef, initializePlayer, loadSource, destroyPlayer } = useShakePlayer({
3271
+ const playerRef = useRef8(null);
3272
+ const {
3273
+ initializeMux,
3274
+ updateMuxData,
3275
+ handleMuxError,
3276
+ destroyMux
3277
+ } = useMuxAnalytics(playerRef, muxConfig, events?.onMuxReady, events?.onMuxDataUpdate);
3278
+ const { initializePlayer, destroyPlayer } = useShakePlayer({
3276
3279
  src,
3277
3280
  shakaConfig,
3278
3281
  drmConfig,
3279
3282
  onError: events?.onError,
3280
- onPlayerReady: events?.onPlayerReady
3283
+ onPlayerReady: events?.onPlayerReady,
3284
+ onBeforeLoad: initializeMux,
3285
+ playerRef
3281
3286
  });
3282
3287
  const {
3283
3288
  getAvailableQualities,
@@ -3296,12 +3301,6 @@ var Player = forwardRef(
3296
3301
  skipForward,
3297
3302
  enabled: true
3298
3303
  });
3299
- const {
3300
- initializeMux,
3301
- updateMuxData,
3302
- handleMuxError,
3303
- destroyMux
3304
- } = useMuxAnalytics(playerRef, muxConfig, events?.onMuxReady, events?.onMuxDataUpdate);
3305
3304
  const { setupEventListeners, cleanupEventListeners } = useEventHandlers(videoRef, {
3306
3305
  onPlay: events?.onPlay,
3307
3306
  onPause: events?.onPause,
@@ -3380,8 +3379,6 @@ var Player = forwardRef(
3380
3379
  const initialize = async () => {
3381
3380
  try {
3382
3381
  await initializePlayer(video);
3383
- initializeMux();
3384
- await loadSource();
3385
3382
  setupEventListeners();
3386
3383
  const cleanupQuality = setupQualityTracking();
3387
3384
  configureQuality();
@@ -4053,7 +4050,7 @@ var Video = ({
4053
4050
  };
4054
4051
 
4055
4052
  // src/Event.tsx
4056
- import { useCallback as useCallback8, useEffect as useEffect8, useState as useState4 } from "react";
4053
+ import { useCallback as useCallback9, useEffect as useEffect8, useState as useState4 } from "react";
4057
4054
  import { twMerge as twMerge4 } from "tailwind-merge";
4058
4055
  import { useQuery as useQuery2 } from "@tanstack/react-query";
4059
4056
  import { Fragment, jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
@@ -4264,7 +4261,7 @@ function PreEvent({
4264
4261
  }, 1e3);
4265
4262
  return () => clearInterval(interval);
4266
4263
  }, [date, remainingTime]);
4267
- const renderCountdown = useCallback8(() => {
4264
+ const renderCountdown = useCallback9(() => {
4268
4265
  if (shouldBeStarted) {
4269
4266
  return /* @__PURE__ */ jsx10("span", { className: "text-base-content text-xl", children: t("EVENT_NOT_STARTED") });
4270
4267
  }