diff --git a/src/components/menubar/ViewMenu.tsx b/src/components/menubar/ViewMenu.tsx index dddc836..ced1aff 100644 --- a/src/components/menubar/ViewMenu.tsx +++ b/src/components/menubar/ViewMenu.tsx @@ -29,6 +29,9 @@ function ViewMenu() { Color Picker + + Blocks Replacer + Radius Changer diff --git a/src/components/tool-settings/Radius.tsx b/src/components/tool-settings/Radius.tsx index 1fc4610..54a036b 100644 --- a/src/components/tool-settings/Radius.tsx +++ b/src/components/tool-settings/Radius.tsx @@ -2,13 +2,13 @@ import { useContext } from "react"; import { ToolContext } from "@/context/Tool"; import { Input } from "@/components/ui/input"; -import { Label } from "../ui/label"; +import { Label } from "@/components/ui/label"; function Radius() { const { radius, setRadius } = useContext(ToolContext); return ( -
+
("hand"); + const [waitingId, setWaitingId] = useState(null); + const [block1, setBlock1] = useState(""); + const [block2, setBlock2] = useState(""); + + const onClickBlockButton = (id: number) => { + setWaitingId(id); + setOldTool(tool); + setTool("eyedropper"); + }; + + const onClickReplace = () => { + setBlocks((prevBlocks) => prevBlocks.map((block) => (block.name === block1 ? { ...block, name: block2 } : block))); + }; + + useEffect(() => { + if (!waitingId) return; + + if (waitingId == 1) { + setBlock1(selectedBlock); + } else if (waitingId == 2) { + setBlock2(selectedBlock); + } + + setTool(oldTool); + setWaitingId(null); + }, [selectedBlock]); + + return ( +
+ + + + + + +
+ +
+ ); +} + +export default Replace; diff --git a/src/components/tool-settings/index.tsx b/src/components/tool-settings/index.tsx index 7882d6d..9ee9466 100644 --- a/src/components/tool-settings/index.tsx +++ b/src/components/tool-settings/index.tsx @@ -6,6 +6,7 @@ import { Input } from "@/components/ui/input"; import { Separator } from "@/components/ui/separator"; import ColorPicker from "./ColorPicker"; +import Replace from "./Replace"; import Radius from "./Radius"; import SelectorBlocks from "./SelectorBlocks"; @@ -24,7 +25,7 @@ function ToolSettings() { return ( <> - {(settings.colorPicker || settings.radiusChanger || settings.blockSelector) && ( + {(settings.colorPicker || settings.blocksReplacer || settings.radiusChanger || settings.blockSelector) && (
{settings.colorPicker && ( <> @@ -33,6 +34,13 @@ function ToolSettings() { )} + {settings.blocksReplacer && ( + <> + + + + )} + {settings.radiusChanger && ( <> diff --git a/src/context/Settings.tsx b/src/context/Settings.tsx index 70045d1..775058a 100644 --- a/src/context/Settings.tsx +++ b/src/context/Settings.tsx @@ -13,6 +13,7 @@ const defaultSettings: Settings = { grid: true, canvasBorder: false, colorPicker: false, + blocksReplacer: true, radiusChanger: true, blockSelector: true, }; diff --git a/src/types.d.ts b/src/types.d.ts index 5e64484..0519ff1 100644 --- a/src/types.d.ts +++ b/src/types.d.ts @@ -27,6 +27,7 @@ interface Settings { grid: boolean; canvasBorder: boolean; colorPicker: boolean; + blocksReplacer: boolean; radiusChanger: boolean; blockSelector: boolean; }