@mottosports/motto-video-player 1.0.1-rc.81 → 1.0.1-rc.82

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
@@ -393,7 +393,7 @@ html[dir=rtl] .shaka-overflow-menu .shaka-overflow-button .material-svg-icon:fir
393
393
  `);
394
394
 
395
395
  // src/Player.tsx
396
- import { forwardRef, useEffect as useEffect4, useRef as useRef8, useImperativeHandle, useCallback as useCallback9, useState as useState3 } from "react";
396
+ import { forwardRef, useEffect as useEffect4, useRef as useRef9, useImperativeHandle, useCallback as useCallback9, useState as useState3 } from "react";
397
397
  import shaka3 from "shaka-player/dist/shaka-player.ui";
398
398
 
399
399
  // src/hooks/useShakaPlayer.ts
@@ -449,7 +449,7 @@ var supportsWidevinePersistentLicenses = () => {
449
449
  import initShakaPlayerMux from "@mux/mux-data-shakaplayer";
450
450
 
451
451
  // package.json
452
- var version = "1.0.1-rc.81";
452
+ var version = "1.0.1-rc.82";
453
453
 
454
454
  // src/utils/licenseCache.ts
455
455
  var PERSISTENT_LICENSE_PREFIX = "motto_lic_";
@@ -1569,18 +1569,44 @@ var useShakaUI = (playerRef, containerRef, videoRef, controls, chromecastConfig,
1569
1569
  };
1570
1570
 
1571
1571
  // src/hooks/useEventHandlers.ts
1572
- import { useCallback as useCallback6 } from "react";
1573
- var useEventHandlers = (videoRef, handlers) => {
1572
+ import { useCallback as useCallback6, useRef as useRef5 } from "react";
1573
+ var useEventHandlers = (videoRef, playerRef, handlers) => {
1574
+ const timeUpdateHandlerRef = useRef5(null);
1574
1575
  const setupEventListeners = useCallback6(() => {
1575
1576
  const video = videoRef.current;
1576
1577
  if (!video) return;
1577
- const { onPlay, onPause, onEnded, onLoadStart, onCanPlay } = handlers;
1578
+ const { onPlay, onPause, onEnded, onLoadStart, onCanPlay, onTimeUpdate } = handlers;
1578
1579
  if (onPlay) video.addEventListener("play", onPlay);
1579
1580
  if (onPause) video.addEventListener("pause", onPause);
1580
1581
  if (onEnded) video.addEventListener("ended", onEnded);
1581
1582
  if (onLoadStart) video.addEventListener("loadstart", onLoadStart);
1582
1583
  if (onCanPlay) video.addEventListener("canplay", onCanPlay);
1583
- }, [videoRef, handlers]);
1584
+ if (onTimeUpdate) {
1585
+ const handleTimeUpdate = () => {
1586
+ const player = playerRef.current;
1587
+ const currentTime = video.currentTime;
1588
+ const duration = video.duration;
1589
+ const isLive = player && typeof player.isLive === "function" ? player.isLive() : false;
1590
+ const timeData = {
1591
+ currentTime,
1592
+ duration,
1593
+ isLive
1594
+ };
1595
+ if (isLive && player && typeof player.seekRange === "function") {
1596
+ const seekRange = player.seekRange();
1597
+ if (seekRange && seekRange.end !== void 0) {
1598
+ timeData.liveEdge = seekRange.end;
1599
+ timeData.timeBehindLive = seekRange.end - currentTime;
1600
+ }
1601
+ } else if (duration && isFinite(duration) && duration > 0) {
1602
+ timeData.progress = currentTime / duration * 100;
1603
+ }
1604
+ onTimeUpdate(timeData);
1605
+ };
1606
+ timeUpdateHandlerRef.current = handleTimeUpdate;
1607
+ video.addEventListener("timeupdate", handleTimeUpdate);
1608
+ }
1609
+ }, [videoRef, playerRef, handlers]);
1584
1610
  const cleanupEventListeners = useCallback6(() => {
1585
1611
  const video = videoRef.current;
1586
1612
  if (!video) return;
@@ -1590,6 +1616,10 @@ var useEventHandlers = (videoRef, handlers) => {
1590
1616
  if (onEnded) video.removeEventListener("ended", onEnded);
1591
1617
  if (onLoadStart) video.removeEventListener("loadstart", onLoadStart);
1592
1618
  if (onCanPlay) video.removeEventListener("canplay", onCanPlay);
1619
+ if (timeUpdateHandlerRef.current) {
1620
+ video.removeEventListener("timeupdate", timeUpdateHandlerRef.current);
1621
+ timeUpdateHandlerRef.current = null;
1622
+ }
1593
1623
  }, [videoRef, handlers]);
1594
1624
  return {
1595
1625
  setupEventListeners,
@@ -1601,11 +1631,11 @@ var useEventHandlers = (videoRef, handlers) => {
1601
1631
  import { useEffect, useState as useState2 } from "react";
1602
1632
 
1603
1633
  // src/hooks/useLiveIndicator.ts
1604
- import { useEffect as useEffect2, useRef as useRef6 } from "react";
1634
+ import { useEffect as useEffect2, useRef as useRef7 } from "react";
1605
1635
  var useLiveIndicator = (containerRef, playerRef, options = {}) => {
1606
- const observerRef = useRef6(null);
1607
- const intervalRef = useRef6(null);
1608
- const lastStatusRef = useRef6(null);
1636
+ const observerRef = useRef7(null);
1637
+ const intervalRef = useRef7(null);
1638
+ const lastStatusRef = useRef7(null);
1609
1639
  const {
1610
1640
  enabled = true,
1611
1641
  indicatorColor = "#ff0000",
@@ -1826,9 +1856,9 @@ var useKeyboardControls = (videoRef, options = {}) => {
1826
1856
  };
1827
1857
 
1828
1858
  // src/hooks/useAdEvents.ts
1829
- import { useCallback as useCallback8, useRef as useRef7 } from "react";
1859
+ import { useCallback as useCallback8, useRef as useRef8 } from "react";
1830
1860
  var useAdEvents = (playerRef, handlers) => {
1831
- const listenersRef = useRef7([]);
1861
+ const listenersRef = useRef8([]);
1832
1862
  const setupAdEventListeners = useCallback8(() => {
1833
1863
  const player = playerRef.current;
1834
1864
  if (!player) return;
@@ -2145,8 +2175,8 @@ var Player = forwardRef(
2145
2175
  auth,
2146
2176
  ...videoProps
2147
2177
  }, ref) => {
2148
- const videoRef = useRef8(null);
2149
- const containerRef = useRef8(null);
2178
+ const videoRef = useRef9(null);
2179
+ const containerRef = useRef9(null);
2150
2180
  const [isScriptsLoaded, setIsScriptsLoaded] = useState3(false);
2151
2181
  const [isInitialLoading, setIsInitialLoading] = useState3(true);
2152
2182
  const [bfResetKey, setBfResetKey] = useState3(0);
@@ -2190,12 +2220,13 @@ var Player = forwardRef(
2190
2220
  skipForward,
2191
2221
  enabled: true
2192
2222
  });
2193
- const { setupEventListeners, cleanupEventListeners } = useEventHandlers(videoRef, {
2223
+ const { setupEventListeners, cleanupEventListeners } = useEventHandlers(videoRef, playerRef, {
2194
2224
  onPlay: events?.onPlay,
2195
2225
  onPause: events?.onPause,
2196
2226
  onEnded: events?.onEnded,
2197
2227
  onLoadStart: events?.onLoadStart,
2198
- onCanPlay: events?.onCanPlay
2228
+ onCanPlay: events?.onCanPlay,
2229
+ onTimeUpdate: events?.onTimeUpdate
2199
2230
  });
2200
2231
  const { uiRef, initializeUI, destroyUI } = useShakaUI(
2201
2232
  playerRef,