@yamada-ui/react
Version:
React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion
110 lines (106 loc) • 3.64 kB
JavaScript
"use client";
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
const require_ref = require('../../utils/ref.cjs');
const require_utils_index = require('../../utils/index.cjs');
const require_use_field_props = require('../field/use-field-props.cjs');
let react = require("react");
react = require_rolldown_runtime.__toESM(react);
let file_selector = require("file-selector");
file_selector = require_rolldown_runtime.__toESM(file_selector);
let react_dropzone = require("react-dropzone");
react_dropzone = require_rolldown_runtime.__toESM(react_dropzone);
//#region src/components/dropzone/use-dropzone.ts
const useDropzone = (props = {}) => {
const { props: { id, name, accept, autoFocus = false, disabled, getFilesFromEvent = file_selector.fromEvent, loading, maxFiles = 0, maxSize = Infinity, minSize = 0, multiple = false, noClick = false, noDrag = false, noDragEventsBubbling = false, noKeyboard = false, openRef, preventDropOnDocument = true, readOnly, useFsAccessApi = false, validator, onDragEnter, onDragLeave, onDragOver, onDrop, onDropAccepted, onDropRejected, onError, onFileDialogCancel, onFileDialogOpen,...rest }, ariaProps, dataProps, eventProps } = require_use_field_props.useFieldProps(props);
const labelledbyId = (0, react.useId)();
const interactive = !(loading || readOnly || disabled);
const { acceptedFiles, fileRejections, isDragAccept: dragAccept, isDragActive: dragActive, isDragReject: dragReject, isFocused: focused, open, getInputProps: getOriginalInputProps, getRootProps: getOriginalRootProps } = (0, react_dropzone.useDropzone)({
accept: (0, require_utils_index.utils_exports.isArray)(accept) ? accept.reduce((prev, current) => ({
...prev,
[current]: []
}), {}) : accept,
autoFocus,
disabled: !interactive,
getFilesFromEvent,
maxFiles,
maxSize,
minSize,
multiple,
noClick,
noDrag,
noDragEventsBubbling,
noKeyboard,
preventDropOnDocument,
useFsAccessApi,
validator,
onDragEnter,
onDragLeave,
onDragOver,
onDrop,
onDropAccepted,
onDropRejected,
onError,
onFileDialogCancel,
onFileDialogOpen
});
const dragIdle = !dragAccept && !dragReject;
require_ref.assignRef(openRef, open);
const getRootProps = (0, react.useCallback)(({ ref,...props$1 } = {}) => getOriginalRootProps({
id: labelledbyId,
...dataProps,
...eventProps,
"aria-disabled": (0, require_utils_index.utils_exports.ariaAttr)(!interactive),
"data-accept": (0, require_utils_index.utils_exports.dataAttr)(dragAccept),
"data-idle": (0, require_utils_index.utils_exports.dataAttr)(dragIdle),
"data-loading": (0, require_utils_index.utils_exports.dataAttr)(loading),
"data-reject": (0, require_utils_index.utils_exports.dataAttr)(dragReject),
...rest,
...props$1,
ref: require_ref.mergeRefs(ref, rest.ref)
}), [
getOriginalRootProps,
labelledbyId,
dataProps,
eventProps,
interactive,
dragAccept,
dragIdle,
loading,
dragReject,
rest
]);
return {
acceptedFiles,
dragAccept,
dragActive,
dragIdle,
dragReject,
fileRejections,
focused,
loading,
open,
getInputProps: (0, react.useCallback)(({ "aria-labelledby": ariaLabelledby,...props$1 } = {}) => getOriginalInputProps({
id,
name,
disabled,
readOnly,
...ariaProps,
...dataProps,
...props$1,
"aria-labelledby": (0, require_utils_index.utils_exports.cx)(ariaLabelledby, labelledbyId)
}), [
getOriginalInputProps,
id,
name,
disabled,
readOnly,
ariaProps,
dataProps,
labelledbyId
]),
getRootProps
};
};
//#endregion
exports.useDropzone = useDropzone;
//# sourceMappingURL=use-dropzone.cjs.map