UNPKG

solidjs-dropzone

Version:

Dropzone Adapter For SOlidJS

65 lines (62 loc) 2.63 kB
import * as solid_js from 'solid-js'; import { ComponentProps, JSX } from 'solid-js'; type ErrorCode = "file-invalid-type" | "file-too-large" | "file-too-small" | "too-many-files" | (string & {}); type FileError = { code: ErrorCode; message: string; }; type FileRejection = { file: File; errors: FileError[]; }; type DropEvent = InputEvent | DragEvent | Event; type OnDropHandler = <T extends File>(acceptedFiles: T[], fileRejections: FileRejection[], event: DropEvent | null) => void; type RemoveBoundEventHandlers<TProps extends Record<string, any>> = { [Key in keyof TProps]: NonNullable<TProps[Key]> extends JSX.EventHandlerUnion<infer Element, infer Event> ? JSX.EventHandler<Element, Event> : TProps[Key]; }; type DropzoneRootProps = RemoveBoundEventHandlers<ComponentProps<"div">> & { refKey?: string; }; type DropzoneInputProps = RemoveBoundEventHandlers<ComponentProps<"input">> & { refKey?: string; }; type CreateDropzoneProps = RemoveBoundEventHandlers<Pick<ComponentProps<"input">, "multiple" | "onDragEnter" | "onDragOver" | "onDragLeave">> & { minSize?: number; maxSize?: number; maxFiles?: number; preventDropOnDocument?: boolean; noClick?: boolean; noKeyboard?: boolean; noDrag?: boolean; noDragEventsBubbling?: boolean; disabled?: boolean; autoFocus?: boolean; onDrop?: OnDropHandler; getFilesFromEvent?: (event: DropEvent) => Promise<Array<File | DataTransferItem>>; onFileDialogCancel?: () => void; onFileDialogOpen?: () => void; validator?: <T extends File>(file: T) => FileError | FileError[] | null; onError?: (error: unknown) => void; } & ({ useFsAccessApi: true; accept?: Record<string, string[]>; } | { useFsAccessApi?: false; accept?: string | string[]; }); type CreateDropzoneResult = ReturnType<typeof createDropzone>; declare const createDropzone: (_props?: CreateDropzoneProps) => { isFocused: boolean; isFileDialogActive: boolean; isDragActive: boolean; isDragAccept: boolean; isDragReject: boolean; acceptedFiles: File[]; fileRejections: FileRejection[]; getInputProps: (_overrides?: DropzoneInputProps) => ComponentProps<"input">; getRootProps: (_overrides?: DropzoneRootProps) => ComponentProps<"div">; rootRef: solid_js.Setter<HTMLElement | null | undefined>; inputRef: solid_js.Setter<HTMLInputElement | null | undefined>; open: (() => void) | (() => void); }; export { CreateDropzoneProps, CreateDropzoneResult, DropEvent, DropzoneInputProps, DropzoneRootProps, ErrorCode, FileError, FileRejection, OnDropHandler, createDropzone };