import { useEffect, useRef } from "react"; import { Stage, Layer, Rect } from "react-konva"; import Konva from "konva"; import { useEditorStore } from "../store/editorStore"; import { useDrawingHandlers } from "./canvas/useDrawingHandlers"; import { useStageSize } from "./canvas/useStageSize"; import { useKeyboardMovement } from "./canvas/useKeyboardMovement"; import { useSelectionHandlers } from "./canvas/useSelectionHandlers"; import { useTransformHandlers } from "./canvas/useTransformHandlers"; import { useObjectHandlers } from "./canvas/useObjectHandlers"; import { useMaskGroupState } from "./canvas/useMaskGroupState"; import ObjectsLayer from "./canvas/ObjectsLayer"; import CellEditor from "@/components/CellEditor"; import ZoomControls from "./ZoomControls"; type EditorCanvasProps = { catalogSize?: string; }; const EditorCanvas = ({ catalogSize }: EditorCanvasProps) => { const stageRef = useRef(null); const layerRef = useRef(null); const { tool, objects, selectedObjectId, selectedObjectIds, selectedCellId, editingCell, setStageRef, setLayerRef, zoom, } = useEditorStore(); const { transformerRef, handleStageMouseDown, handleStageMouseMove, handleStageMouseUp } = useDrawingHandlers(); const stageSize = useStageSize(catalogSize); useKeyboardMovement(); const { handleSelect, handleCellClick, handleCellDblClick } = useSelectionHandlers(); const { handleObjectUpdate, handleGroupWithMask, handleUngroupFromMask, handleCellEditorSave, handleCellEditorCancel } = useObjectHandlers(); const { isGroupedWithMask, maskObject, canGroup, canUngroup, selectedObject } = useMaskGroupState(selectedObjectId); useTransformHandlers(transformerRef, layerRef); useEffect(() => { if (stageRef.current) { setStageRef(stageRef); } if (layerRef.current) { setLayerRef(layerRef); } }, [setStageRef, setLayerRef]); const finalScale = stageSize.scale * zoom; return (
{editingCell && ( )}
); }; export default EditorCanvas;