diff --git a/web/src/components/player/LivePlayer.tsx b/web/src/components/player/LivePlayer.tsx index f48a7d475..2e37f41a4 100644 --- a/web/src/components/player/LivePlayer.tsx +++ b/web/src/components/player/LivePlayer.tsx @@ -3,6 +3,7 @@ import { CameraConfig } from "@/types/frigateConfig"; import AutoUpdatingCameraImage from "../camera/AutoUpdatingCameraImage"; import ActivityIndicator from "../indicators/activity-indicator"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; +import { useResizeObserver } from "@/hooks/resize-observer"; import MSEPlayer from "./MsePlayer"; import JSMpegPlayer from "./JSMpegPlayer"; import { MdCircle } from "react-icons/md"; @@ -80,6 +81,7 @@ export default function LivePlayer({ const { t } = useTranslation(["components/player"]); const internalContainerRef = useRef(null); + const overlayRef = useRef(null); const cameraName = useCameraFriendlyName(cameraConfig); @@ -87,6 +89,10 @@ export default function LivePlayer({ const inDashboard = containerRef?.current == null; + const [overlayDimensions] = useResizeObserver(overlayRef); + const isCompact = + overlayDimensions.width > 0 && overlayDimensions.width < 280; + // stats const [stats, setStats] = useState({ @@ -317,7 +323,14 @@ export default function LivePlayer({ return (
{ + overlayRef.current = node; + if (cameraRef) { + cameraRef(node); + } else { + internalContainerRef.current = node; + } + }} data-camera={cameraConfig.name} className={cn( "relative flex w-full cursor-pointer justify-center outline", @@ -428,16 +441,18 @@ export default function LivePlayer({
{t("streamOffline.title")}
-

- - streamOffline.desc - -

+ {!isCompact && ( +

+ + streamOffline.desc + +

+ )}
@@ -448,16 +463,18 @@ export default function LivePlayer({

{t("streamOffline.title")}

-

- - streamOffline.desc - -

+ {!isCompact && ( +

+ + streamOffline.desc + +

+ )}
)}