import { Box, Flex, HoverCard } from "@mantine/core" import { ArrowBigRightDashIcon, MinusCircleIcon } from "lucide-react" import { useCallback } from "react" import { useBottomToolsStore } from "../useBottomToolsStore" import { useDescToolsStore } from "../useDescToolsStore" import { useTopToolsStore } from "../useTopToolsStore" const MetaOperationTool = () => { const { metaOperation, metaData } = useDescToolsStore() const { activeImage } = useBottomToolsStore() const currentImageData = metaData.get(activeImage) || [] const HoverContent = useCallback( (index?: number) => { if (!metaOperation) return <> const { sub_attributes_describe } = metaOperation return ( 子属性选择 {sub_attributes_describe.length ? ( {sub_attributes_describe.map((subDesc) => ( {subDesc.chinese_name} {subDesc.optional_item.map((option) => ( { e.currentTarget.style.backgroundColor = "var(--mantine-color-gray-1)" }} onMouseLeave={(e) => { e.currentTarget.style.backgroundColor = "transparent" }} onClick={() => { const map = useDescToolsStore.getState().metaData if (map.has(activeImage)) { let arr = map.get(activeImage) || [] if (index || index === 0) arr[index] = option else arr.push(option) map.set(activeImage, arr) } else { map.set(activeImage, [option]) } useDescToolsStore.getState().setMetaData(map) }}> {option} ))} ))} ) : ( )} ) }, [activeImage, metaOperation] ) const handleDelete = (index: number) => { const map = useDescToolsStore.getState().metaData let arr = (map.get(activeImage) || []).filter((_v, i) => i !== index) map.set(activeImage, arr) useDescToolsStore.getState().setMetaData(map) } return ( {currentImageData.map((text, index) => !useTopToolsStore.getState().isView ? ( {/* Replaced Popover with HoverCard for better hover interaction */} {text} { e.stopPropagation() handleDelete(index) }}> {HoverContent(index)} {index < currentImageData.length - 1 ? ( ) : null} ) : ( {text} {index < currentImageData.length - 1 ? ( ) : null} ) )} {!useTopToolsStore.getState().isView ? ( {/* Replaced Popover with HoverCard */} 新增 {HoverContent()} ) : null} ) } export default MetaOperationTool