'use client' import { useRecoilValue } from 'recoil' import Image from 'next/image' import { useMessage } from '@/hooks/useMessage' import WithDraggable from '@/components/common/draggable/WithDraggable' import { usePopup } from '@/hooks/usePopup' import { contextPopupPositionState } from '@/store/popupAtom' import { useEffect, useRef, useState } from 'react' import { useObjectBatch } from '@/hooks/object/useObjectBatch' import { BATCH_TYPE, POLYGON_TYPE } from '@/common/common' import { useSurfaceShapeBatch } from '@/hooks/surface/useSurfaceShapeBatch' import { CalculatorInput } from '@/components/common/input/CalcInput' import { useSwal } from '@/hooks/useSwal' export default function SizeSetting(props) { const contextPopupPosition = useRecoilValue(contextPopupPositionState) const [settingTarget, setSettingTarget] = useState(props.side || 1) const { id, pos = contextPopupPosition, target, initialPlacement = false } = props const { getMessage } = useMessage() const { closePopup } = usePopup() const { resizeObjectBatch } = useObjectBatch({}) const { resizeSurfaceShapeBatch } = useSurfaceShapeBatch({}) const { swalFire } = useSwal() const widthRef = useRef(null) const heightRef = useRef(null) const [width, setWidth] = useState(target?.width ? (target.width * 10).toFixed() : 0) const [height, setHeight] = useState(target?.height ? (target.height * 10) : 0) const [useCalcPad, setUseCalcPad] = useState(false) const disableKeypad = !useCalcPad // const { initEvent } = useEvent() // const { initEvent } = useContext(EventContext) // useEffect(() => { // initEvent() // }, []) useEffect(() => { if (target?.width !== undefined) { setWidth((target.width * 10).toFixed()); } if (target?.height !== undefined) { setHeight((target.height * 10).toFixed()); } }, [target]); const handleReSizeObject = () => { const width = widthRef.current.value const height = heightRef.current.value // [OPENING-MIN-SIZE 2026-05-08] 0/빈값 입력 시 적용 차단. 0,0 으로 확정되면 4정점 동일 // 0-dim 객체가 plan 에 저장되어 모듈배치 단계에서 turf throw → 화면 크래시. if (target.name === BATCH_TYPE.OPENING || target.name === BATCH_TYPE.SHADOW) { if (width === '' || height === '' || Number(width) <= 0 || Number(height) <= 0) { swalFire({ text: getMessage('common.canvas.validate.size'), icon: 'error' }) return } } if (target.name === BATCH_TYPE.OPENING || target.name === BATCH_TYPE.SHADOW) { resizeObjectBatch(settingTarget, target, width, height, id, initialPlacement) } else if (target.name === POLYGON_TYPE.ROOF) { resizeSurfaceShapeBatch(settingTarget, target, width, height, id) } } return ( closePopup(id)} />
setWidth(e.target.value)} readOnly={true} /> mm
{/**/} setWidth(value)} disableKeypad={disableKeypad} options={{ allowNegative: false, allowDecimal: false }} /> mm
setHeight(e.target.value)} readOnly={true} /> mm
{/**/} setHeight(value)} disableKeypad={disableKeypad} options={{ allowNegative: false, allowDecimal: false }} /> mm
) }