xpaintdev / hooks /useDrawingTools.ts
suisuyy
Initialize xpaintai project with core files and basic structure
763be49
import { useState } from 'react';
import { DEFAULT_PEN_COLOR, DEFAULT_PEN_SIZE } from '../constants';
export interface DrawingToolsHook {
penColor: string;
setPenColor: React.Dispatch<React.SetStateAction<string>>;
penSize: number;
setPenSize: React.Dispatch<React.SetStateAction<number>>;
isEraserMode: boolean;
setIsEraserMode: React.Dispatch<React.SetStateAction<boolean>>;
toggleEraserMode: () => void;
effectivePenColor: string;
}
export const useDrawingTools = (): DrawingToolsHook => {
const [penColor, setPenColor] = useState<string>(DEFAULT_PEN_COLOR);
const [penSize, setPenSize] = useState<number>(DEFAULT_PEN_SIZE);
const [isEraserMode, setIsEraserMode] = useState<boolean>(false);
const toggleEraserMode = () => setIsEraserMode(prev => !prev);
const effectivePenColor = isEraserMode ? '#FFFFFF' : penColor; // Eraser uses white to clear
return {
penColor,
setPenColor,
penSize,
setPenSize,
isEraserMode,
setIsEraserMode,
toggleEraserMode,
effectivePenColor,
};
};