(props = {})
| 430 | * @returns {DropzoneState & DropzoneMethods} |
| 431 | */ |
| 432 | export function useDropzone(props = {}) { |
| 433 | const { |
| 434 | accept, |
| 435 | disabled, |
| 436 | getFilesFromEvent, |
| 437 | maxSize, |
| 438 | minSize, |
| 439 | multiple, |
| 440 | maxFiles, |
| 441 | onDragEnter, |
| 442 | onDragLeave, |
| 443 | onDragOver, |
| 444 | onDrop, |
| 445 | onDropAccepted, |
| 446 | onDropRejected, |
| 447 | onFileDialogCancel, |
| 448 | onFileDialogOpen, |
| 449 | useFsAccessApi, |
| 450 | autoFocus, |
| 451 | preventDropOnDocument, |
| 452 | noClick, |
| 453 | noKeyboard, |
| 454 | noDrag, |
| 455 | noDragEventsBubbling, |
| 456 | onError, |
| 457 | validator, |
| 458 | } = { |
| 459 | ...defaultProps, |
| 460 | ...props, |
| 461 | }; |
| 462 | |
| 463 | const acceptAttr = useMemo(() => acceptPropAsAcceptAttr(accept), [accept]); |
| 464 | const pickerTypes = useMemo(() => pickerOptionsFromAccept(accept), [accept]); |
| 465 | |
| 466 | const onFileDialogOpenCb = useMemo( |
| 467 | () => (typeof onFileDialogOpen === "function" ? onFileDialogOpen : noop), |
| 468 | [onFileDialogOpen] |
| 469 | ); |
| 470 | const onFileDialogCancelCb = useMemo( |
| 471 | () => |
| 472 | typeof onFileDialogCancel === "function" ? onFileDialogCancel : noop, |
| 473 | [onFileDialogCancel] |
| 474 | ); |
| 475 | |
| 476 | /** |
| 477 | * @constant |
| 478 | * @type {React.MutableRefObject<HTMLElement>} |
| 479 | */ |
| 480 | const rootRef = useRef(null); |
| 481 | |
| 482 | const inputRef = useRef(null); |
| 483 | |
| 484 | const [state, dispatch] = useReducer(reducer, initialState); |
| 485 | const { isFocused, isFileDialogActive } = state; |
| 486 | |
| 487 | const fsAccessApiWorksRef = useRef( |
| 488 | typeof window !== "undefined" && |
| 489 | window.isSecureContext && |
no test coverage detected
searching dependent graphs…