diff --git a/src/components/DrawingShapes.jsx b/src/components/DrawingShapes.jsx index 182b943..91e1a5c 100644 --- a/src/components/DrawingShapes.jsx +++ b/src/components/DrawingShapes.jsx @@ -4,6 +4,7 @@ import circleImg from "../assets/images/circle.svg"; import triangleImg from "../assets/images/triangle.svg"; import lineImg from "../assets/images/line.svg"; import { GiPencilBrush } from "react-icons/gi"; + const DrawingShapes = ({ brushWidth, selectedColor, @@ -15,22 +16,22 @@ const DrawingShapes = ({ const [isDrawing, setIsDrawing] = useState(false); const [prevMouseX, setPrevMouseX] = useState(0); const [prevMouseY, setPrevMouseY] = useState(0); - const [snapshot, setSnapshot] = useState(null); const [isDropdownOpen, setIsDropdownOpen] = useState(false); + const [currentToolName, setCurrentToolName] = useState(); const shapeDropRef = useRef(null); - const handleoutsideClick = (event) => { + const handleOutsideClick = (event) => { if (shapeDropRef.current && !shapeDropRef.current.contains(event.target)) { setIsDropdownOpen(false); } }; useEffect(() => { - document.addEventListener("mousedown", handleoutsideClick); + document.addEventListener("mousedown", handleOutsideClick); return () => { - document.removeEventListener("mousedown", handleoutsideClick); + document.removeEventListener("mousedown", handleOutsideClick); }; }, [isDropdownOpen]); @@ -56,7 +57,8 @@ const DrawingShapes = ({ ctx.putImageData(snapshot, 0, 0); ctx.beginPath(); const radius = Math.sqrt( - Math.pow(prevMouseX - e.offsetX, 2) + Math.pow(prevMouseY - e.offsetY, 2) + Math.pow(prevMouseX - e.offsetX, 2) + + Math.pow(prevMouseY - e.offsetY, 2) ); ctx.arc(prevMouseX, prevMouseY, radius, 0, 2 * Math.PI); fillColor ? ctx.fill() : ctx.stroke(); @@ -95,7 +97,15 @@ const DrawingShapes = ({ ctx.translate(prevMouseX, prevMouseY); ctx.rotate(angle); ctx.beginPath(); - ctx.rect(0, -brushWidth / 2, Math.sqrt(Math.pow(e.offsetX - prevMouseX, 2) + Math.pow(e.offsetY - prevMouseY, 2)), brushWidth); + ctx.rect( + 0, + -brushWidth / 2, + Math.sqrt( + Math.pow(e.offsetX - prevMouseX, 2) + + Math.pow(e.offsetY - prevMouseY, 2) + ), + brushWidth + ); ctx.fillStyle = selectedColor; ctx.fill(); ctx.restore(); @@ -171,7 +181,17 @@ const DrawingShapes = ({ canvas.removeEventListener("mouseup", stopDrawing); canvas.removeEventListener("mouseout", stopDrawing); }; - }, [brushWidth, fillColor, selectedTool, selectedColor, snapshot, canvasRef, isDrawing, prevMouseX, prevMouseY]); + }, [ + brushWidth, + fillColor, + selectedTool, + selectedColor, + snapshot, + canvasRef, + isDrawing, + prevMouseX, + prevMouseY, + ]); function toggleDropDown() { setIsDropdownOpen(!isDropdownOpen); @@ -201,50 +221,56 @@ const DrawingShapes = ({ const [lower, setLower] = useState(false); - const handleBrushSelect = (brush) => { + const handleBrushSelect = (brush, brushName) => { setSelectedTool(brush); + setCurrentToolName(brushName); setIsDropdownOpen(false); // Close dropdown after selection }; return ( <> -
+
- {lower && ( -
-
handleBrushSelect("rounded")} - className="hover:bg-gray-400 p-2 cursor-pointer" - > -

Rounded Brush

-
-
handleBrushSelect("flat")} - className="hover:bg-gray-400 p-2 cursor-pointer" - > -

Flat Brush

-
-
handleBrushSelect("watercolor")} - className="hover:bg-gray-400 p-2 cursor-pointer" - > -

Watercolor Brush

-
-
handleBrushSelect("blur")} - className="hover:bg-gray-400 p-2 cursor-pointer" - > -

Blur Brush

-
-
- )} + Brush
+ {lower && ( +
+
handleBrushSelect("rounded", "Rounded Brush")} + className="hover:bg-gray-400 p-2 cursor-pointer relative group tooltip" + > +

Rounded Brush

+ Rounded Brush +
+
handleBrushSelect("flat", "Flat Brush")} + className="hover:bg-gray-400 p-2 cursor-pointer relative group tooltip" + > +

Flat Brush

+ Flat Brush +
+
handleBrushSelect("watercolor", "Watercolor Brush")} + className="hover:bg-gray-400 p-2 cursor-pointer relative group tooltip" + > +

Watercolor Brush

+ Watercolor Brush +
+
handleBrushSelect("blur", "Blur Brush")} + className="hover:bg-gray-400 p-2 cursor-pointer relative group tooltip" + > +

Blur Brush

+ Blur Brush +
+
+ )}
+
+ {currentToolName} +
    {isDropdownOpen ? ( <>
  • { - setSelectedTool("rectangle"); - setIsDropdownOpen(false); + handleBrushSelect("rectangle", "Rectangle"); }} > Rectangle + Rectangle
  • { - setSelectedTool("circle"); - setIsDropdownOpen(false); + handleBrushSelect("circle", "Circle"); }} > Circle + Circle
  • { - setSelectedTool("triangle"); - setIsDropdownOpen(false); + handleBrushSelect("triangle", "Triangle"); }} > Triangle + Triangle
  • { - setSelectedTool("line"); - setIsDropdownOpen(false); + handleBrushSelect("line", "Line"); }} > Line + Line
  • ) : ( diff --git a/src/components/Footer.jsx b/src/components/Footer.jsx index 017fb37..2dcf563 100644 --- a/src/components/Footer.jsx +++ b/src/components/Footer.jsx @@ -1,50 +1,37 @@ import React from "react"; import { - AiOutlineInfoCircle, - AiOutlineMessage, - AiOutlineTeam, -} from "react-icons/ai"; -import { - FaNewspaper, FaLinkedin, FaTwitter, + FaGithub, + FaNewspaper, FaInstagram, FaYoutube, - FaGithub, } from "react-icons/fa"; +import { + AiOutlineInfoCircle, + AiOutlineMessage, + AiOutlineTeam, +} from "react-icons/ai"; const Footer = () => { return ( -