UNPKG

@clxrity/zip

Version:

A React zip utility library

64 lines (59 loc) 2.48 kB
import { ComponentProps, JSX } from 'react'; interface UnzipClientOptions { onEachFile?: (file: File) => void | Promise<void>; onComplete?: (files: File[]) => void | Promise<void>; } /** * Unzips a zip file in the client browser. * - It reads the zip file as a Blob, extracts its contents, * and returns an array of File objects. * @example * ```tsx * import { unzipFileClient } from "@clxrity/zip"; * * const handleZipFile = async (zipBlob: Blob) => { * const files = await unzipFileClient(zipBlob, { * onEachFile: (file) => { * console.log("Unzipped file:", file.name); * }, * onComplete: (files) => { * console.log("All files unzipped:", files); * }, * }); * console.log("Unzipped files:", files); * }; * ``` */ declare function unzipFileClient(blob: Blob, options?: UnzipClientOptions): Promise<File[]>; interface ZipClientOptions { onBeforeZip?: (files: File[]) => Promise<File[]> | File[]; onAfterZip?: (blob: Blob) => void | Promise<void>; } declare function zipFilesClient(files: File[], options?: ZipClientOptions): Promise<Blob>; interface FileUploadProps extends ComponentProps<'input'> { mode?: 'zip' | 'unzip'; onBeforeZip?: ZipClientOptions['onBeforeZip']; onAfterZip?: ZipClientOptions['onAfterZip']; onEachUnzippedFile?: UnzipClientOptions['onEachFile']; onUnzipComplete?: UnzipClientOptions['onComplete']; onError?: (error: unknown) => void; } /** * FileUpload component allows users to upload files for zipping or unzipping. * - In "zip" mode, it zips multiple files into a single zip file. * - In "unzip" mode, it unzips a single zip file and processes each file. * It provides callbacks for before and after zipping, processing each unzipped file, and handling errors. * @example * ```tsx * <FileUpload * mode="zip" * onBeforeZip={(files) => console.log("Zipping files:", files)} * onAfterZip={(zipFile) => console.log("Zipped file:", zipFile)} * onEachUnzippedFile={(file) => console.log("Unzipped file:", file)} * onUnzipComplete={(files) => console.log("Unzipping complete", files)} * onError={(error) => console.error("Error:", error)} * /> * ``` */ declare function FileUpload({ mode, onBeforeZip, onAfterZip, onEachUnzippedFile, onUnzipComplete, onError, ...props }: FileUploadProps): JSX.Element; export { FileUpload, type FileUploadProps, type UnzipClientOptions, type ZipClientOptions, unzipFileClient, zipFilesClient };