import React, { useState, useEffect, useCallback } from 'react'; import { Input, Form } from 'antd'; import { PlusCircleOutlined, DeleteOutlined } from '@easyv/react-icons'; import { ViewpointInfo, UpdateViewpointQuery } from '@easytwin/core'; import { CollapseBox, ProButton, SortableTabs } from '@/components'; type FromChangedValuesType = { name?: ViewpointInfo['name']; }; export interface ViewpointManageProp { dataSource: ViewpointInfo[]; selectKey?: string; onTabChange?: (key?: string) => void; onFlyTo?: () => void; onAdd?: () => void; onUpdate?: (state: Partial, showOkMsg?: boolean) => void; onRemove?: (key: string) => void; } export default function ViewpointManage({ dataSource, selectKey, onTabChange, onFlyTo, onAdd, onUpdate, onRemove, }: ViewpointManageProp) { const [form] = Form.useForm(); const [editData, setEditData] = useState(); useEffect(() => { const newEditData = dataSource.find((item) => item.id === selectKey); if (newEditData) { form.setFieldsValue(newEditData); setEditData(newEditData); } else { setEditData(undefined); } }, [form, dataSource, selectKey]); const handleViewpointDataFormChange = useCallback( (updateValues: FromChangedValuesType) => { if (editData) { onUpdate?.({ id: editData.id, ...updateValues, rank: 0, }); } }, [editData, onUpdate], ); const handleTagDrapChange = (dragKey: string, rank: number) => { onUpdate?.( { id: dragKey, rank, }, false, ); }; return ( { e.stopPropagation(); onAdd?.(); }} /> { e.stopPropagation(); if (editData) { onRemove?.(editData.id); } }} /> }> {dataSource.length ? (
{editData ? (
handleViewpointDataFormChange({})}>
更新镜头 聚焦镜头
) : (
可选择镜头预览视角
)}
) : (
未配置镜头,点击 { e.stopPropagation(); onAdd?.(); }} /> 创建
)}
); }