@procore/core-react
Version:
React library of Procore Design Guidelines
68 lines (67 loc) • 1.94 kB
TypeScript
import type { Method } from 'axios';
export declare type UNSAFE_GetEndpoint = (file: File) => string;
export declare type GetMethod = (file: File) => Method;
export declare type GetPayload = (file: File) => FormData;
export declare type UNSAFE_GetPayloadKey = (file: File) => string;
export declare type GetHeaders = (file: File) => Record<string, string>;
declare type UploadTargetId = string | number;
declare type UploadTarget = {
id: UploadTargetId;
blob: File;
};
interface UploadFileCallbacks {
/**
* @since 10.19.0
*/
onProgress: (progress: number) => void;
/**
* @since 10.19.0
*/
onSuccess: (response: unknown) => void;
/**
* @since 10.19.0
*/
onError: (error: unknown) => void;
}
export interface UNSAFE_UploadFile {
(file: File, callbacks: UploadFileCallbacks): void;
}
export interface FileUploaderProps {
/**
* @since 10.19.0
*/
getEndpoint?: UNSAFE_GetEndpoint;
/**
* @since 10.19.0
*/
getMethod?: GetMethod;
/**
* @since 10.19.0
*/
getPayload?: GetPayload;
/**
* @since 10.19.0
*/
getPayloadKey?: UNSAFE_GetPayloadKey;
/**
* @since 10.19.0
*/
getHeaders?: GetHeaders;
/**
* @since 10.19.0
*/
uploadFile?: UNSAFE_UploadFile;
}
export interface FileUploader {
/**
* @since 10.19.0
*/
uploadFiles: (files: UploadTarget[], { onCompleteAll, onComplete, onError, onProgress, }: {
onCompleteAll?: () => void;
onComplete?: (fileId: UploadTargetId, response: unknown) => void;
onError?: (fileId: UploadTargetId, error: unknown) => void;
onProgress?: (fileId: UploadTargetId, progress: number) => void;
}) => void;
}
export declare function useFileUploader({ getEndpoint: externalGetEndpoint, getMethod, getPayload, getPayloadKey, getHeaders, uploadFile, }: FileUploaderProps): FileUploader;
export {};