import React, { useRef, useMemo } from 'react'; import { Collapse, Dropdown, Menu, Popconfirm, Switch } from 'antd'; import type { ILayer } from '../../typings'; import EditName from '../EditName'; import PointLayer from './PointLayer'; import LineLayer from './LineLayer'; import TripLayer from './TripLayer'; import PolygonLayer from './PolygonLayer'; import HexLayer from './HexLayer'; import HeatLayer from './HeatLayer'; import useDataset from '../../hooks/useDataset'; const { Panel } = Collapse; interface IProps { layer: ILayer; dragIcon: JSX.Element; onChange: (newLayer: Partial) => void; onEditName: (newName: string, layer: ILayer) => void; onCopy: (layer: ILayer) => void; onDelete: (layer: ILayer) => void; } const LayerItemConfig = ({ layer, onEditName, dragIcon, onChange, onDelete, onCopy, }: IProps) => { const dropdownRef = useRef(null); const { getDatasetMarkStyle } = useDataset(); const header = (
e.stopPropagation()} > {dragIcon} onEditName(newName, layer)} />
onChange({ id: layer.id, visible: newVisible, }) } /> onCopy(layer)}> 复制图层 onDelete(layer)} > 删除图层 } >
); const content = useMemo(() => { switch (layer.type) { case 'point': return ; case 'line': return ; case 'trip': return ; case 'polygon': return ; case 'hex': return ; case 'heat': return ; default: return <>; } }, [layer, onChange]); return ( <> {content} ); }; export default LayerItemConfig;