Made fixes to the bugs.

This commit is contained in:
CrossPr0duct committed 2025-06-03 14:27:51 -04:00
1 parent d742c61390
commit 44c0dfd920
3 files changed
+17 -14

No files matched your search

@@ -158,7 +158,7 @@ export const Mirai = ({
strokeWidth: brushSize / stage.scaleX(),
draggable: true,
};
store.selectNode(null);
store.addLineNode(newLineNode);
setCurrentLineId(lineId);
setIsDrawing(true);
@@ -386,13 +386,11 @@ export const Mirai = ({
const handleNodeMouseLeave = (e: Konva.KonvaEventObject<MouseEvent>) => {
const container = e.target.getStage()?.container();
if (!container) return;
const defaultCursor = activeTool === 'draw'
? 'crosshair'
: activeTool === 'eraser'
? 'cell'
: activeTool === 'select'
? 'grab'
: 'default';
const defaultCursor = activeTool === 'draw' || activeTool === 'eraser'
? 'none'
: activeTool === 'select'
? 'grab'
: 'default';
container.style.cursor = defaultCursor;
};
@@ -467,17 +465,21 @@ export const Mirai = ({
const renderNode = (node: Node | LineNode) => {
// Node Callbacks
const handleNodeMouseDown = (e: Konva.KonvaEventObject<MouseEvent | TouchEvent>, nodeId: string) => {
// Don't select nodes when draw or erase tools are active
if (activeTool === 'draw' || activeTool === 'eraser') {
return;
}
// Check if Ctrl/Cmd key is pressed
const isMultiSelect = e.evt.ctrlKey || e.evt.metaKey;
// If clicking directly on the stage, clear selection
if (e.target === e.target.getStage()) {
store.selectNode(null);
return;
}
store.selectNode(nodeId,isMultiSelect);
store.selectNode(nodeId, isMultiSelect);
};
const handleNodeDragStart = (e: Konva.KonvaEventObject<DragEvent>, nodeId:string) => {
@@ -239,6 +239,7 @@ export const useSceneStore = create<SceneState>((set, get) => ({
draggable: true
});
get().addNode(node);
get().setActiveTool('select'); // Switch to select tool after creating
},
createCircle: (x: number, y: number, radius = 50, fill = '#f0f0f0') => {
@@ -255,6 +256,7 @@ export const useSceneStore = create<SceneState>((set, get) => ({
draggable: true
});
get().addNode(node);
get().setActiveTool('select'); // Switch to select tool after creating
},
createTriangle: (x: number, y: number, width = 100, height = 100, fill = '#d0d0d0') => {
@@ -271,6 +273,7 @@ export const useSceneStore = create<SceneState>((set, get) => ({
draggable: true
});
get().addNode(node);
get().setActiveTool('select'); // Switch to select tool after creating
},
// History management
@@ -62,11 +62,11 @@ const SideToolbar: React.FC<SideToolbarProps> = ({
onGenerateImage,
onUploadImage,
onDelete,
activeToolId,
className = "",
}) => {
/* ------------------------------------------------ state ---------- */
const [open, setOpen] = useState<string | null>(null);
const [selected, setSel] = useState<string>("select");
const [brushSize, setBrushSize] = useState(16);
const [brushHsva, setBrushHsva] = useState<HsvaColor>({ h:120,s:100,v:100,a:1 });
@@ -310,7 +310,7 @@ const SideToolbar: React.FC<SideToolbarProps> = ({
}
const { id, icon, onClick, popout, label } = tool;
const active = id === selected;
const active = id === activeToolId;
const btnStyle = active ? "bg-zinc-600 text-white" : "hover:bg-zinc-800 text-zinc-100";
return (
@@ -321,7 +321,6 @@ const SideToolbar: React.FC<SideToolbarProps> = ({
<button
onClick={() => {
onClick?.();
setSel(id);
setOpen(open === id ? null : id);
}}
className={`${baseBtn} ${btnStyle}`}
@@ -332,7 +331,6 @@ const SideToolbar: React.FC<SideToolbarProps> = ({
<button
onClick={() => {
onClick?.();
setSel(id);
}}
className={`${baseBtn} ${btnStyle}`}
>