import WithDraggable from '@/components/common/draggable/WithDraggable' import { useMessage } from '@/hooks/useMessage' import { usePopup } from '@/hooks/usePopup' import { useRecoilState, useRecoilValue } from 'recoil' import { contextPopupPositionState } from '@/store/popupAtom' import { canvasState, currentObjectState } from '@/store/canvasAtom' import { useEffect, useState } from 'react' import { useSwal } from '@/hooks/useSwal' import { normalizeDigits } from '@/util/input-utils' export default function GridMove(props) { const contextPopupPosition = useRecoilValue(contextPopupPositionState) const { id, pos = contextPopupPosition } = props const canvas = useRecoilValue(canvasState) const { getMessage } = useMessage() const { closePopup } = usePopup() const { swalFire } = useSwal() const [currentObject, setCurrentObject] = useRecoilState(currentObjectState) const [isAll, setIsAll] = useState(false) const [verticalSize, setVerticalSize] = useState('0') const [horizonSize, setHorizonSize] = useState('0') const [arrow1, setArrow1] = useState(null) const [arrow2, setArrow2] = useState(null) useEffect(() => { if (currentObject?.direction === 'vertical') { setArrow1(null) setVerticalSize('0') } else { setArrow2(null) setHorizonSize('0') } }, [currentObject]) const handleApply = () => { if (currentObject?.direction === 'vertical') { if (!horizonSize || !arrow2) { swalFire({ title: getMessage('length.direction.is.required'), type: 'alert' }) return } } else { if (!verticalSize || !arrow1) { swalFire({ title: getMessage('length.direction.is.required'), type: 'alert' }) } } if (isAll) { canvas .getObjects() .filter((obj) => ['lineGrid', 'tempGrid', 'dotGrid'].includes(obj.name)) .forEach((grid) => { move( grid, arrow2 === '←' ? (Number(normalizeDigits(horizonSize)) * -1) / 10 : Number(normalizeDigits(horizonSize)) / 10, arrow1 === '↑' ? (Number(normalizeDigits(verticalSize)) * -1) / 10 : Number(normalizeDigits(verticalSize)) / 10, ) }) } else { move( currentObject, arrow2 === '←' ? (Number(normalizeDigits(horizonSize)) * -1) / 10 : Number(normalizeDigits(horizonSize)) / 10, arrow1 === '↑' ? (Number(normalizeDigits(verticalSize)) * -1) / 10 : Number(normalizeDigits(verticalSize)) / 10, ) } canvas.renderAll() handleClose() } const move = (object, x, y) => { object.set({ ...object, x1: object.direction === 'vertical' ? object.x1 + x : object.x1, x2: object.direction === 'vertical' ? object.x1 + x : object.x2, y1: object.direction === 'vertical' ? object.y1 : object.y1 + y, y2: object.direction === 'vertical' ? object.y2 : object.y1 + y, }) } const handleClose = () => { closePopup(id) } return ( handleClose()} />
{getMessage('modal.grid.move.info')}
setIsAll(!isAll)} />

{getMessage('modal.grid.move.length')}

setVerticalSize(normalizeDigits(e.target.value))} readOnly={!isAll && currentObject?.direction === 'vertical'} />
mm
setHorizonSize(normalizeDigits(e.target.value))} readOnly={!isAll && currentObject?.direction === 'horizontal'} />
mm
) }