import { useNavigate, useParams } from 'react-router-dom'; import { Upload, Tooltip } from 'antd'; import { debounce } from 'lodash-es'; import { useRecoilState } from 'recoil'; import { PreviewLightColored, DownloadOutlined, PlusOutlined, BulbOutlined, SpotLightOutlined, DirectionalLightOutlined, } from '@easyv/react-icons'; import { ComponentTypeEnum, CreateComponentQuery } from '@easytwin/core'; import { BackButton, ContextMenuItem } from '@/components'; import { _globalLoadingInfo } from '@/pages/module'; import { NameEdit } from '@/pages/ProjectManage/components'; import { useProject } from '@/pages/ProjectManage/module'; import { useMutation, useQuery } from 'react-query'; import { ProjectApi } from '@/server'; import { ProjectEditorPageParams } from './module'; import { CardBotton } from './components'; import { queryClient } from '../../plugins/ReactQuery'; export interface HeaderProp { onUploadModelList: (value: any) => void; onCreateLight: (query: Pick) => void; onShowOfficialModelPopup: (value: boolean) => void; } export default function Header({ onUploadModelList, onCreateLight, onShowOfficialModelPopup, }: HeaderProp) { const navigate = useNavigate(); const { projectId } = useParams(); const { data: projectInfo } = useQuery('projectInfo', () => { if (projectId) { return ProjectApi.getProject({ id: projectId }); } throw Error('缺失 projectId'); }); const projectMutation = useMutation(ProjectApi.updateProject, { onSuccess: () => { queryClient.invalidateQueries('projectInfo'); }, }); const [, setLoadingInfo] = useRecoilState(_globalLoadingInfo); const { exportProject } = useProject(); return (
{/* left */}
navigate('/')} />
{ if (projectId) { projectMutation.mutate({ id: projectId, name: value }); } }} />
false} onChange={debounce(onUploadModelList, 100)}> } /> } onClick={() => { onShowOfficialModelPopup(true); }} />
}> } title="模型" /> } onClick={() => onCreateLight({ name: '点光源', type: ComponentTypeEnum.POINTLIGHT }) } /> } onClick={() => onCreateLight({ name: '平行光', type: ComponentTypeEnum.DIRECTLIGHT }) } />
}> } title="灯光" /> {/* right */}
} title="导出" onClick={async () => { if (projectId) { setLoadingInfo({ loading: true, tip: '正在导出文件...' }); await exportProject({ id: projectId }); setLoadingInfo({ loading: false, tip: null }); } }} /> } title="预览" onClick={() => navigate( `/project-preview/${projectId}?from=${window.location.hash.split('#').join('')}`, ) } />
); }