From 46dc8123df05490bb7f9bd64a3cd2a9a33e2664a Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Tue, 20 May 2025 10:34:24 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9E=84=EC=9D=98=EA=B7=B8=EB=A6=AC=EB=93=9C?= =?UTF-8?q?=20=EC=9D=B4=EB=B2=A4=ED=8A=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/useEvent.js | 34 +++++++++++++++++++++++++++++++++- src/hooks/useTempGrid.js | 32 ++------------------------------ 2 files changed, 35 insertions(+), 31 deletions(-) diff --git a/src/hooks/useEvent.js b/src/hooks/useEvent.js index 18e3907b..184bbe46 100644 --- a/src/hooks/useEvent.js +++ b/src/hooks/useEvent.js @@ -6,6 +6,8 @@ import { calculateDistance, calculateDistancePoint, calculateIntersection, dista import { useAdsorptionPoint } from '@/hooks/useAdsorptionPoint' import { useDotLineGrid } from '@/hooks/useDotLineGrid' import { useTempGrid } from '@/hooks/useTempGrid' +import { gridColorState } from '@/store/gridAtom' +import { gridDisplaySelector } from '@/store/settingAtom' export function useEvent() { const canvas = useRecoilValue(canvasState) @@ -13,10 +15,12 @@ export function useEvent() { const documentEventListeners = useRef([]) const mouseEventListeners = useRef([]) const setCanvasZoom = useSetRecoilState(canvasZoomState) + const gridColor = useRecoilValue(gridColorState) + const isGridDisplay = useRecoilValue(gridDisplaySelector) const { adsorptionPointAddMode, adsorptionPointMode, adsorptionRange, getAdsorptionPoints, adsorptionPointAddModeStateEvent } = useAdsorptionPoint() const { dotLineGridSetting, interval, getClosestLineGrid } = useDotLineGrid() - const { tempGridModeStateLeftClickEvent, tempGridMode, tempGridRightClickEvent } = useTempGrid() + const { tempGridModeStateLeftClickEvent, tempGridMode } = useTempGrid() const textMode = useRecoilValue(textModeState) @@ -249,6 +253,34 @@ export function useEvent() { }) } + const tempGridRightClickEvent = (e) => { + e.preventDefault() + e.stopPropagation() + //임의 그리드 모드일 경우 + let pointer = { x: e.offsetX, y: e.offsetY } + + const tempGrid = new fabric.Line([-1500, pointer.y, 2500, pointer.y], { + stroke: gridColor, + strokeWidth: 1, + selectable: true, + lockMovementX: true, + lockMovementY: true, + lockRotation: true, + lockScalingX: true, + lockScalingY: true, + strokeDashArray: [5, 2], + opacity: 0.3, + padding: 5, + name: 'tempGrid', + visible: isGridDisplay, + direction: 'horizontal', + }) + + canvas.add(tempGrid) + + canvas.renderAll() + } + const defaultKeyboardEvent = (e) => { if (e.key === 'Escape') { console.log('defaultKeyboardEvent') diff --git a/src/hooks/useTempGrid.js b/src/hooks/useTempGrid.js index d43a19c0..c875bcb3 100644 --- a/src/hooks/useTempGrid.js +++ b/src/hooks/useTempGrid.js @@ -7,8 +7,9 @@ const GRID_PADDING = 5 export function useTempGrid() { const canvas = useRecoilValue(canvasState) const gridColor = useRecoilValue(gridColorState) - const [tempGridMode, setTempGridMode] = useRecoilState(tempGridModeState) const isGridDisplay = useRecoilValue(gridDisplaySelector) + const [tempGridMode, setTempGridMode] = useRecoilState(tempGridModeState) + const tempGridModeStateLeftClickEvent = (e) => { //임의 그리드 모드일 경우 let pointer = canvas.getPointer(e.e) @@ -35,37 +36,8 @@ export function useTempGrid() { canvas.renderAll() } - const tempGridRightClickEvent = (e) => { - e.preventDefault() - e.stopPropagation() - //임의 그리드 모드일 경우 - let pointer = { x: e.offsetX, y: e.offsetY } - - const tempGrid = new fabric.Line([-1500, pointer.y, 2500, pointer.y], { - stroke: gridColor, - strokeWidth: 1, - selectable: true, - lockMovementX: true, - lockMovementY: true, - lockRotation: true, - lockScalingX: true, - lockScalingY: true, - strokeDashArray: [5, 2], - opacity: 0.3, - padding: GRID_PADDING, - name: 'tempGrid', - visible: isGridDisplay, - direction: 'horizontal', - }) - - canvas.add(tempGrid) - - canvas.renderAll() - } - return { tempGridModeStateLeftClickEvent, - tempGridRightClickEvent, tempGridMode, setTempGridMode, }