import WallLineSetting from '@/components/floor-plan/modal/outerlinesetting/WallLineSetting'
import RoofShapeSetting from '@/components/floor-plan/modal/roofShape/RoofShapeSetting'
import RoofShapePassivitySetting from '@/components/floor-plan/modal/roofShape/RoofShapePassivitySetting'
import AuxiliaryDrawing from '@/components/floor-plan/modal/auxiliary/AuxiliaryDrawing'
import EavesGableEdit from '@/components/floor-plan/modal/eavesGable/EavesGableEdit'
import MovementSetting from '@/components/floor-plan/modal/movement/MovementSetting'
import WallLineOffsetSetting from '@/components/floor-plan/modal/wallLineOffset/WallLineOffsetSetting'
import RoofAllocationSetting from '@/components/floor-plan/modal/roofAllocation/RoofAllocationSetting'
import PlacementShapeDrawing from '@/components/floor-plan/modal/placementShape/PlacementShapeDrawing'
import PlacementSurfaceSetting from '@/components/floor-plan/modal/placementSurface/PlacementSurfaceSetting'
import ObjectSetting from '@/components/floor-plan/modal/object/ObjectSetting'
import BasicSetting from '@/components/floor-plan/modal/basic/BasicSetting'
import CircuitTrestleSetting from '@/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting'
import { usePopup } from '@/hooks/usePopup'
import { useState } from 'react'
import { v4 as uuidv4 } from 'uuid'
import { useSurfaceShapeBatch } from '@/hooks/surface/useSurfaceShapeBatch'
import { useRecoilState, useRecoilValue } from 'recoil'
import { canvasState, currentMenuState } from '@/store/canvasAtom'
import { MENU } from '@/common/common'
import { useTrestle } from '@/hooks/module/useTrestle'
import { useOrientation } from '@/hooks/module/useOrientation'
import { corridorDimensionSelector } from '@/store/settingAtom'
/**
* 메뉴 처리 훅
* @returns
*/
export default function useMenu() {
const menus = []
const currentMenu = useRecoilValue(currentMenuState)
const canvas = useRecoilValue(canvasState)
const [popupId, setPopupId] = useState(uuidv4())
const { addPopup, closeAll } = usePopup()
const { deleteAllSurfacesAndObjects } = useSurfaceShapeBatch({})
const { clear: trestleClear, setAllModuleSurfaceIsComplete } = useTrestle()
const { nextStep } = useOrientation()
const [corridorDimension, setCorridorDimension] = useRecoilState(corridorDimensionSelector)
const handleMenu = (type) => {
closeAll()
if (type === 'outline') {
// 지붕 덮개 메뉴의 경우는 복도치수로 적용한다.
setCorridorDimension(0)
switch (currentMenu) {
case MENU.ROOF_COVERING.EXTERIOR_WALL_LINE:
addPopup(popupId, 1, )
break
case MENU.ROOF_COVERING.ROOF_SHAPE_SETTINGS:
addPopup(popupId, 1, )
break
case MENU.ROOF_COVERING.ROOF_SHAPE_PASSIVITY_SETTINGS:
addPopup(popupId, 1, )
break
case MENU.ROOF_COVERING.HELP_LINE_DRAWING:
addPopup(popupId, 1, )
break
case MENU.ROOF_COVERING.EAVES_KERAVA_EDIT:
addPopup(popupId, 1, )
break
case MENU.ROOF_COVERING.MOVEMENT_SHAPE_UPDOWN:
addPopup(popupId, 1, )
break
case MENU.ROOF_COVERING.OUTLINE_EDIT_OFFSET:
addPopup(popupId, 1, )
break
case MENU.ROOF_COVERING.ROOF_SHAPE_ALLOC:
addPopup(popupId, 1, )
break
case MENU.ROOF_COVERING.ALL_REMOVE:
deleteAllSurfacesAndObjects()
break
}
}
if (type === 'surface') {
// 배치면 메뉴의 경우는 실치수로 적용한다.
setCorridorDimension(1)
switch (currentMenu) {
// case MENU.BATCH_CANVAS.SLOPE_SETTING:
// addPopup(popupId, 1, )
// break
case MENU.BATCH_CANVAS.BATCH_DRAWING:
addPopup(popupId, 1, )
break
case MENU.BATCH_CANVAS.SURFACE_SHAPE_BATCH:
addPopup(popupId, 1, )
break
case MENU.BATCH_CANVAS.OBJECT_BATCH:
addPopup(popupId, 1, )
break
case MENU.BATCH_CANVAS.ALL_REMOVE:
deleteAllSurfacesAndObjects()
break
}
}
if (type === 'module') {
// 모듈,회로 구성 메뉴의 경우는 실치수로 적용한다.
setCorridorDimension(1)
switch (currentMenu) {
case MENU.MODULE_CIRCUIT_SETTING.BASIC_SETTING:
trestleClear()
setAllModuleSurfaceIsComplete(false)
addPopup(popupId, 1, )
break
case MENU.MODULE_CIRCUIT_SETTING.CIRCUIT_TRESTLE_SETTING:
const hasModules = canvas.getObjects().some((obj) => obj.name === 'module')
if (hasModules) {
nextStep()
}
addPopup(popupId, 1, )
break
}
}
}
return {
menus,
handleMenu,
}
}