From 6940713054e03ed6577f900e2ad95dad718b5d82 Mon Sep 17 00:00:00 2001 From: ibs0d <53568938+ibs0d@users.noreply.github.com> Date: Mon, 9 Mar 2026 12:14:05 +1100 Subject: [PATCH] Fix grid live zoom so overlays stay anchored --- web/src/components/player/LivePlayer.tsx | 63 ++++++++----- web/src/views/live/DraggableGridLayout.tsx | 100 ++++++++++----------- 2 files changed, 88 insertions(+), 75 deletions(-) diff --git a/web/src/components/player/LivePlayer.tsx b/web/src/components/player/LivePlayer.tsx index fc2672b68..d89f59f72 100644 --- a/web/src/components/player/LivePlayer.tsx +++ b/web/src/components/player/LivePlayer.tsx @@ -51,6 +51,11 @@ type LivePlayerProps = { setFullResolution?: React.Dispatch>; onError?: (error: LivePlayerError) => void; onResetLiveMode?: () => void; + contentTransform?: { + scale: number; + positionX: number; + positionY: number; + }; }; export default function LivePlayer({ @@ -76,6 +81,7 @@ export default function LivePlayer({ setFullResolution, onError, onResetLiveMode, + contentTransform, }: LivePlayerProps) { const { t } = useTranslation(["components/player"]); @@ -371,7 +377,41 @@ export default function LivePlayer({ lowerClassName="md:rounded-2xl" /> )} - {player} +
+ {player} + +
+ +
+
+ {cameraEnabled && !offline && (!showStillWithoutActivity || isReEnabling) && @@ -429,27 +469,6 @@ export default function LivePlayer({ )} -
- -
- {offline && inDashboard && ( <>
diff --git a/web/src/views/live/DraggableGridLayout.tsx b/web/src/views/live/DraggableGridLayout.tsx index 819644fce..214cd88a8 100644 --- a/web/src/views/live/DraggableGridLayout.tsx +++ b/web/src/views/live/DraggableGridLayout.tsx @@ -514,7 +514,8 @@ export default function DraggableGridLayout({ cursorX, cursorY, ); - const content = event.currentTarget.firstElementChild as HTMLElement | null; + const content = event.currentTarget + .firstElementChild as HTMLElement | null; const persisted = toPersistedCameraZoomState(next, { viewportWidth: bounds.width, viewportHeight: bounds.height, @@ -787,59 +788,52 @@ export default function DraggableGridLayout({ }} onWheel={(event) => handleCardWheelZoom(camera.name, event)} > -
{ + !isEditMode && onSelectCamera(camera.name); }} - > - { - !isEditMode && onSelectCamera(camera.name); - }} - onError={(e) => { - setPreferredLiveModes((prevModes) => { - const newModes = { ...prevModes }; - if (e === "mse-decode") { - delete newModes[camera.name]; - } - return newModes; - }); - }} - onResetLiveMode={() => - resetPreferredLiveMode(camera.name) - } - playAudio={audioStates[camera.name]} - volume={volumeStates[camera.name]} - /> -
+ onError={(e) => { + setPreferredLiveModes((prevModes) => { + const newModes = { ...prevModes }; + if (e === "mse-decode") { + delete newModes[camera.name]; + } + return newModes; + }); + }} + onResetLiveMode={() => + resetPreferredLiveMode(camera.name) + } + playAudio={audioStates[camera.name]} + volume={volumeStates[camera.name]} + />
{isEditMode && showCircles && }