import { Button } from 'antd' import { useEffect, useState } from 'react' import { metas, labels, images } from './board' import { BoardType, BoardTypeDesc } from 'store' import { SelectMap, SelectFuse } from './modal' import style from './style.module.scss' import type { ShapeType, Board } from './board' import type { RefObject } from 'react' type SliderProps = { board: RefObject type: BoardType caseId: number } export const DfSlider = ({ board, type, caseId }: SliderProps) => { const [selectMode, setSelectMode] = useState(false) const [currentShape, setCurrentShape] = useState() const getEle = (shapeType: ShapeType) => (
setCurrentShape(shapeType)} >

{metas[shapeType].desc}

) const setBoardImage = async (blob: Blob) => { const url = URL.createObjectURL(blob) board.current?.setImage(url) } const SelectImage = type === BoardType.map ? SelectMap : SelectFuse const renderSelect = selectMode && setSelectMode(false)} onSave={setBoardImage} /> useEffect(() => { const boardRef = board.current if (currentShape && boardRef) { const clickHandler = (ev: MouseEvent) => { const pos = boardRef.getPosByScreen({ x: ev.offsetX, y: ev.offsetY }) boardRef.addShape(currentShape, pos) setCurrentShape(void 0) } const keyupHandler = (ev: KeyboardEvent) => { if (ev.key === 'Escape') { setCurrentShape(void 0) } } boardRef.el.addEventListener('click', clickHandler) document.documentElement.addEventListener('keyup', keyupHandler) return () => { boardRef.el.removeEventListener('click', clickHandler) document.documentElement.removeEventListener('keyup', keyupHandler) } } }, [currentShape, board]) return (
{ renderSelect }

户型图

标注

{ labels.map(getEle) }

图例

{ images.map(getEle) }
) } export default DfSlider