@promptbook/openai
Version:
Promptbook: Turn your company's scattered knowledge into AI ready books
58 lines (57 loc) • 2.15 kB
TypeScript
import type { editor } from 'monaco-editor';
import type { Promisable } from 'type-fest';
type MonacoEditor = typeof import('monaco-editor');
type UploadStatus = 'queued' | 'uploading' | 'paused' | 'completed' | 'failed';
export type UploadItem = {
readonly id: string;
readonly fileName: string;
readonly fileSize: number;
readonly status: UploadStatus;
readonly progress: number;
readonly loadedBytes: number;
readonly totalBytes: number;
readonly startedAt: number | null;
readonly completedAt: number | null;
readonly errorMessage?: string;
};
export type UploadStats = {
readonly totalFiles: number;
readonly queuedFiles: number;
readonly uploadingFiles: number;
readonly pausedFiles: number;
readonly failedFiles: number;
readonly completedFiles: number;
readonly totalBytes: number;
readonly uploadedBytes: number;
readonly progress: number;
readonly elapsedMs: number;
readonly speedBytesPerSecond: number;
};
type BookEditorMonacoUploadProgressCallback = (progress: number, stats?: {
loadedBytes: number;
totalBytes: number;
}) => void;
type BookEditorMonacoUploadOptions = {
readonly onProgress?: BookEditorMonacoUploadProgressCallback;
readonly abortSignal?: AbortSignal;
};
type BookEditorMonacoOnFileUpload = (file: File, options?: BookEditorMonacoUploadOptions | BookEditorMonacoUploadProgressCallback) => Promisable<string>;
type UseBookEditorMonacoUploadsProps = {
readonly editor: editor.IStandaloneCodeEditor | null;
readonly monaco: MonacoEditor | null;
readonly onFileUpload?: BookEditorMonacoOnFileUpload;
};
/**
* Handles file uploads and placeholder rendering inside `BookEditorMonaco`.
*
* @private function of BookEditorMonaco
*/
export declare function useBookEditorMonacoUploads({ editor, monaco, onFileUpload }: UseBookEditorMonacoUploadsProps): {
activeUploadItems: UploadItem[];
uploadItems: UploadItem[];
uploadStats: UploadStats;
handleFiles: (files: File[]) => Promise<void>;
pauseUpload: (uploadId: string) => void;
resumeUpload: (uploadId: string) => void;
};
export {};