import React from 'react'; import { Observable, Subscription } from 'rxjs'; import { AssetFromSource, File as BaseFile, FileAsset, FileSchemaType, Marker, Path, SchemaType } from '@sanity/types'; import { ToastParams } from '@sanity/ui'; import { FormFieldPresence } from '@sanity/base/presence'; import { Uploader, UploaderResolver, UploadOptions } from '../../../sanity/uploads/types'; import PatchEvent from '../../../PatchEvent'; import { FileInfo } from '../common/styles'; import { InternalAssetSource, UploadState } from '../types'; declare type Field = { name: string; type: SchemaType; }; declare type DOMFile = globalThis.File; export interface File extends Partial { _upload?: UploadState; } export declare type Props = { value?: File; compareValue?: File; type: FileSchemaType; level: number; onChange: (event: PatchEvent) => void; resolveUploader: UploaderResolver; observeAsset: (documentId: string) => Observable; onBlur: () => void; onFocus: (path: Path) => void; readOnly: boolean | null; focusPath: Path; directUploads?: boolean; assetSources: InternalAssetSource[]; markers: Marker[]; presence: FormFieldPresence[]; getValuePath: () => Path; }; declare type FileInputState = { isUploading: boolean; selectedAssetSource: InternalAssetSource | null; hoveringFiles: FileInfo[]; isStale: boolean; isMenuOpen: boolean; }; declare type Focusable = { focus: () => void; }; export default class FileInput extends React.PureComponent { _inputId: string; dialogId: string; _focusRef: Focusable | null; uploadSubscription: Subscription | null; state: FileInputState; toast: { push: (params: ToastParams) => void; } | null; handleRemoveButtonClick: () => void; clearUploadStatus(): void; cancelUpload(): void; handleCancelUpload: () => void; handleClearUploadState: () => void; handleStaleUpload: () => void; handleClearField: () => void; handleSelectFiles: (files: DOMFile[]) => void; handleSelectFileFromAssetSource: (source: InternalAssetSource) => void; handleAssetSourceClosed: () => void; uploadFirstAccepted(files: DOMFile[]): void; uploadWith: (uploader: Uploader, file: DOMFile, assetDocumentProps?: UploadOptions) => void; renderUploadState(uploadState: UploadState): React.JSX.Element; renderAssetSource(): React.JSX.Element; handleFieldChange: (event: PatchEvent) => void; eventIsUnsettingLastFilledField: (event: PatchEvent) => boolean; valueIsArrayElement: () => boolean; handleOpenDialog: () => void; handleStopAdvancedEdit: () => void; renderAdvancedEdit(fields: Field[]): React.JSX.Element; renderFields(fields: Field[]): React.JSX.Element[]; handleSelectAssetFromSource: (assetFromSource: AssetFromSource) => void; hasFileTargetFocus(): boolean; handleFileTargetFocus: (event: any) => void; handleFileTargetBlur: () => void; handleFilesOver: (fileInfo: FileInfo[]) => void; handleFilesOut: () => void; renderField(field: Field): React.JSX.Element; renderAsset(hasAdvancedFields: boolean): React.JSX.Element; renderAssetMenu(tone: any): React.JSX.Element; renderBrowser(): React.JSX.Element; renderUploadPlaceholder(): React.JSX.Element; focus(): void; setFocusInput: (ref: Focusable | null) => void; handleUpload: ({ file, uploader }: { file: DOMFile; uploader: Uploader; }) => void; setToast: (toast: { push: (params: ToastParams) => void; }) => void; render(): React.JSX.Element; } export {}; //# sourceMappingURL=FileInput.d.ts.map