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,
  };
};