diff --git a/src/hooks/roofcover/useRoofShapeSetting.js b/src/hooks/roofcover/useRoofShapeSetting.js index f5c84f5b..5d4936b9 100644 --- a/src/hooks/roofcover/useRoofShapeSetting.js +++ b/src/hooks/roofcover/useRoofShapeSetting.js @@ -1,12 +1,13 @@ import { useEffect, useRef, useState } from 'react' import { useMessage } from '@/hooks/useMessage' -import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil' +import { useRecoilState, useRecoilValue, useResetRecoilState, useSetRecoilState } from 'recoil' import { ANGLE_TYPE, canvasState, currentAngleTypeSelector, currentMenuState, currentObjectState, pitchTextSelector } from '@/store/canvasAtom' import { LINE_TYPE, POLYGON_TYPE } from '@/common/common' import { usePolygon } from '@/hooks/usePolygon' import { useMode } from '@/hooks/useMode' import { useLine } from '@/hooks/useLine' -import { outerLineFixState } from '@/store/outerLineAtom' +import { outerLineFixState, pdfRoofShapeDescriptorState } from '@/store/outerLineAtom' +import { matchRoofShapePattern } from '@/common/roofShapePattern' import { useSwal } from '@/hooks/useSwal' import { usePopup } from '@/hooks/usePopup' import { getChonByDegree, getDegreeByChon } from '@/util/canvas-util' @@ -49,6 +50,8 @@ export function useRoofShapeSetting(id) { const setCurrentMenu = useSetRecoilState(currentMenuState) const outerLineFix = useRecoilValue(outerLineFixState) + const pdfRoofShapeDescriptor = useRecoilValue(pdfRoofShapeDescriptorState) + const resetPdfRoofShapeDescriptor = useResetRecoilState(pdfRoofShapeDescriptorState) const isFixRef = useRef(false) @@ -87,6 +90,14 @@ export function useRoofShapeSetting(id) { closePopup(id) return } + + // PDF 분석 지붕형상 descriptor 가 있으면 매칭 버튼을 pre-select 한다(자동 선택만 — handleSave 는 사용자 [적용]). + if (pdfRoofShapeDescriptor) { + const matched = matchRoofShapePattern(pdfRoofShapeDescriptor) + if (matched != null) setShapeNum(matched) + resetPdfRoofShapeDescriptor() // consume-once: 비-PDF 재진입 시 stale 적용 방지 + } + return () => { if (!isFixRef.current) { return