From 1243ce209808c020a94a11ee2cd0d7fcaf137cb6 Mon Sep 17 00:00:00 2001 From: Toba Ojo Date: Tue, 13 Jan 2026 16:10:05 +0000 Subject: [PATCH] Implemented brush size feature in camera feed settings --- package.json | 2 +- src/app/reducers/cameraFeedReducer.ts | 7 ++++ .../CameraSettings/RegionSelector.tsx | 17 ++++++++- .../components/Video/VideoFeedGridPainter.tsx | 38 ++++++++++--------- src/types/types.ts | 5 +++ 5 files changed, 50 insertions(+), 19 deletions(-) diff --git a/package.json b/package.json index fee22eb..f321676 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "bayiq-ui", "private": true, - "version": "1.0.5", + "version": "1.0.6", "type": "module", "scripts": { "dev": "vite", diff --git a/src/app/reducers/cameraFeedReducer.ts b/src/app/reducers/cameraFeedReducer.ts index f2d59a1..db77a9c 100644 --- a/src/app/reducers/cameraFeedReducer.ts +++ b/src/app/reducers/cameraFeedReducer.ts @@ -3,6 +3,7 @@ import { CAMERA_IDS, DEFAULT_REGIONS, type CameraID } from "../config/cameraConf export const initialState: CameraFeedState = { cameraFeedID: CAMERA_IDS[0], + brushSize: 1, paintedCells: CAMERA_IDS.reduce( (acc, id) => { acc[id] = new Map(); @@ -110,6 +111,12 @@ export function reducer(state: CameraFeedState, action: CameraFeedAction) { [action.payload.cameraFeedID]: action.payload.zoomLevel, }, }; + + case "SET_BRUSH_SIZE": + return { + ...state, + brushSize: action.payload.brushSize, + }; default: return state; } diff --git a/src/features/cameras/components/CameraSettings/RegionSelector.tsx b/src/features/cameras/components/CameraSettings/RegionSelector.tsx index f095ec5..417d9a7 100644 --- a/src/features/cameras/components/CameraSettings/RegionSelector.tsx +++ b/src/features/cameras/components/CameraSettings/RegionSelector.tsx @@ -7,6 +7,7 @@ import { toast } from "sonner"; import { useCameraFeedSocket } from "../../../../app/context/WebSocketContext"; import type { CameraID } from "../../../../app/config/cameraConfig"; import { useEffect } from "react"; +import SliderComponent from "../../../../ui/SliderComponent"; type RegionSelectorProps = { regions: Region[]; @@ -32,6 +33,7 @@ const RegionSelector = ({ const { state, dispatch } = useCameraFeedContext(); const { blackboardMutation } = useBlackBoard(); const paintedCells = state.paintedCells[cameraFeedID]; + const brushSize = state.brushSize; const cameraSocket = useCameraFeedSocket(); useEffect(() => { if (subTabIndex === 0) { @@ -171,7 +173,7 @@ const RegionSelector = ({

Tools

-
+
+
+ + {mode === "painter" ? "Brush" : "Eraser"} Size: {brushSize} + + dispatch({ type: "SET_BRUSH_SIZE", payload: { brushSize: value as number } })} + value={brushSize} + min={1} + max={5} + step={1} + /> +