File size: 1,044 Bytes
763be49 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
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,
};
};
|