UNPKG

@ozen-ui/kit

Version:

React component library

27 lines (26 loc) 3.28 kB
import { __assign, __rest } from "tslib"; import React from 'react'; import { useThemeProps } from '../../hooks/useThemeProps'; import { cn } from '../../utils/classname'; import { polymorphicComponentWithRef } from '../../utils/polymorphicComponentWithRef'; import { Stack } from '../Stack'; import { FileUploaderHint } from './components'; import { FILE_UPLOADER_DEFAULT_ALLOW_DROP, FILE_UPLOADER_DEFAULT_MULTIPLE, FILE_UPLOADER_DEFAULT_ON_DROP, FILE_UPLOADER_DEFAULT_SIZE, FILE_UPLOADER_DEFAULT_TAG, FILE_UPLOADER_DEFAULT_VALIDATE, FILE_UPLOADER_DEFAULT_VARIANT, } from './constants'; import { FileUploaderProvider } from './context'; import { FileUploaderInput } from './modules'; export var cnFileUploader = cn('FileUploader'); export var FileUploader = polymorphicComponentWithRef(function (inProps, ref) { var props = useThemeProps({ props: inProps, name: 'FileUploader', }); var _a = props.as, Tag = _a === void 0 ? FILE_UPLOADER_DEFAULT_TAG : _a, prepareFiles = props.prepareFiles, children = props.children, _b = props.size, size = _b === void 0 ? FILE_UPLOADER_DEFAULT_SIZE : _b, files = props.files, defaultFiles = props.defaultFiles, _c = props.multiple, multiple = _c === void 0 ? FILE_UPLOADER_DEFAULT_MULTIPLE : _c, onChange = props.onChange, className = props.className, onDelete = props.onDelete, onDraggingStart = props.onDraggingStart, onDraggingEnd = props.onDraggingEnd, status = props.status, drop = props.drop, _d = props.variant, variant = _d === void 0 ? FILE_UPLOADER_DEFAULT_VARIANT : _d, inputProp = props.input, accept = props.accept, hint = props.hint, _e = props.validate, validate = _e === void 0 ? FILE_UPLOADER_DEFAULT_VALIDATE : _e, _f = props.allow, allow = _f === void 0 ? FILE_UPLOADER_DEFAULT_ALLOW_DROP : _f, onAllowDropChange = props.onAllowDropChange, onAllowUploadChange = props.onAllowUploadChange, _g = props.onDrop, onDrop = _g === void 0 ? FILE_UPLOADER_DEFAULT_ON_DROP : _g, other = __rest(props, ["as", "prepareFiles", "children", "size", "files", "defaultFiles", "multiple", "onChange", "className", "onDelete", "onDraggingStart", "onDraggingEnd", "status", "drop", "variant", "input", "accept", "hint", "validate", "allow", "onAllowDropChange", "onAllowUploadChange", "onDrop"]); var input = inputProp !== null && inputProp !== void 0 ? inputProp : React.createElement(FileUploaderInput, null); return (React.createElement(FileUploaderProvider, { prepareFiles: prepareFiles, size: size, files: files, defaultFiles: defaultFiles, multiple: multiple, onChange: onChange, onDelete: onDelete, onDraggingStart: onDraggingStart, onDraggingEnd: onDraggingEnd, status: status, variant: variant, accept: accept, validate: validate, allow: allow, onAllowDropChange: onAllowDropChange, onAllowUploadChange: onAllowUploadChange, onDrop: onDrop }, React.createElement(Tag, __assign({}, other, { ref: ref, className: cnFileUploader({ status: status }, [className]) }), input, drop, children && (React.createElement(Stack, { gap: "s", className: cnFileUploader('Content'), direction: "column" }, children)), hint && (React.createElement(FileUploaderHint, { className: cnFileUploader('Hint') }, hint))))); }); FileUploader.displayName = 'FileUploader';