Download hooks/useDrawingTools.ts from im1111/xpaintdev: direct link, hf CLI and curl.
- Browser
- Download file 1.04 kB
-
https://huggingface.co/spaces/im1111/xpaintdev/resolve/main/hooks/useDrawingTools.ts
- Command line
-
hf download hf://spaces/im1111/xpaintdev/hooks/useDrawingTools.ts
-
curl -L -o useDrawingTools.ts https://huggingface.co/spaces/im1111/xpaintdev/resolve/main/hooks/useDrawingTools.ts
1.04 kB
| 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, | |
| }; | |
| }; | |