import React, { ChangeEvent, FC, useCallback, useRef, DragEvent } from 'react' import { is } from '@gm-common/tool' import classNames from 'classnames' import { UploaderFile, UploaderProps } from './types' import DefaultContainer from './default_container' const Uploader: FC = ({ onUpload, accept, multiple, className, children, disabled, ...rest }) => { const refInput = useRef(null) const handleClick = useCallback((): void => { if (disabled) { return } refInput.current!.click() }, [disabled]) const handleUpload = useCallback( (event: ChangeEvent | DragEvent) => { event.preventDefault() const uploadFiles = (event as DragEvent).dataTransfer ? (event as DragEvent).dataTransfer.files : (event as ChangeEvent).target.files! const files: UploaderFile[] = Array.from(uploadFiles).map((file) => Object.assign(file, { preview: window.URL.createObjectURL(file) }) ) onUpload(files, event) // @ts-ignore event.target.value = '' }, [onUpload] ) return (
{children ?? }
) } export default Uploader