import React, { useCallback, useState } from 'react'; import { ReactElement } from 'react'; import Dropzone from 'react-dropzone'; import PropTypes from 'prop-types'; import classNames from 'classnames'; import DicomFileUploader from '../../utils/DicomFileUploader'; import DicomUploadProgress from './DicomUploadProgress'; import { Button } from '@ohif/ui'; import './DicomUpload.css'; type DicomUploadProps = { dataSource; onComplete: () => void; onStarted: () => void; }; function DicomUpload({ dataSource, onComplete, onStarted, }: DicomUploadProps): ReactElement { const baseClassNames = 'min-h-[480px] flex flex-col bg-black select-none'; const [dicomFileUploaderArr, setDicomFileUploaderArr] = useState([]); const onDrop = useCallback(async acceptedFiles => { onStarted(); setDicomFileUploaderArr( acceptedFiles.map(file => new DicomFileUploader(file, dataSource)) ); }, []); const getDropZoneComponent = (): ReactElement => { return ( { onDrop(acceptedFiles); }} noClick > {({ getRootProps }) => (
{({ getRootProps, getInputProps }) => (
)}
{({ getRootProps, getInputProps }) => (
)}
or drag images or folders here
(DICOM files supported)
)}
); }; return ( <> {dicomFileUploaderArr.length ? (
) : (
{getDropZoneComponent()}
)} ); } DicomUpload.propTypes = { dataSource: PropTypes.object.isRequired, onComplete: PropTypes.func.isRequired, onStarted: PropTypes.func.isRequired, }; export default DicomUpload;