import { ToastParams } from '@sanity/ui'; import { Observable, Subscription } from 'rxjs'; import { ImageAsset, AssetFromSource, Image as BaseImage, ImageSchemaType, Marker, ObjectField, Path } from '@sanity/types'; import React from 'react'; import { FormFieldPresence } from '@sanity/base/presence'; import { ResolvedUploader, Uploader, UploadOptions } from '../../../sanity/uploads/types'; import PatchEvent from '../../../PatchEvent'; import { ImageUrlBuilder, InternalAssetSource, UploadState } from '../types'; export interface Image extends Partial { _upload?: UploadState; } export declare type Props = { value?: Image; compareValue?: Image; type: ImageSchemaType; level: number; onChange: (event: PatchEvent) => void; observeAsset: (documentId: string) => Observable; onBlur: () => void; onFocus: (path: Path) => void; readOnly: boolean | null; focusPath: Path; directUploads?: boolean; assetSources: InternalAssetSource[]; markers: Marker[]; presence: FormFieldPresence[]; imageUrlBuilder: ImageUrlBuilder; getValuePath: () => Path; }; declare type FileInfo = { type: string; kind: string; }; declare type ImageInputState = { isUploading: boolean; selectedAssetSource: InternalAssetSource | null; hoveringFiles: FileInfo[]; isStale: boolean; isMenuOpen: boolean; }; declare type Focusable = { focus: () => void; offsetHeight: number; }; interface FieldGroups { asset: ObjectField[]; imagetool: ObjectField[]; highlighted: ObjectField[]; dialog: ObjectField[]; imageToolAndDialog: ObjectField[]; } export default class ImageInput extends React.PureComponent { _inputId: string; _assetElementRef: null | Focusable; _fieldGroupsMemo: null | FieldGroups; uploadSubscription: null | Subscription; state: ImageInputState; toast: { push: (params: ToastParams) => void; } | null; focus(): void; setFocusElement: (el: HTMLElement | null) => void; isImageToolEnabled(): boolean; clearUploadStatus(): void; cancelUpload(): void; getUploadOptions: (file: File) => ResolvedUploader[]; uploadFirstAccepted(files: File[]): void; uploadWith: (uploader: Uploader, file: File, assetDocumentProps?: UploadOptions) => void; handleRemoveButtonClick: () => void; handleFieldChange: (event: PatchEvent) => void; eventIsUnsettingLastFilledField: (event: PatchEvent) => boolean; valueIsArrayElement: () => boolean; handleOpenDialog: () => void; handleCloseDialog: () => void; handleSelectAssetFromSource: (assetFromSource: AssetFromSource) => void; hasFileTargetFocus(): boolean; handleFileTargetFocus: () => void; handleFileTargetBlur: () => void; handleFilesOver: (hoveringFiles: FileInfo[]) => void; handleFilesOut: () => void; handleCancelUpload: () => void; handleClearUploadState: () => void; handleStaleUpload: () => void; handleClearField: () => void; handleSelectFiles: (files: File[]) => void; handleSelectImageFromAssetSource: (source: InternalAssetSource) => void; handleAssetSourceClosed: () => void; renderDialogFields(fields: ObjectField[]): React.JSX.Element; renderPreview: () => React.JSX.Element; renderFields(fields: ObjectField[]): React.JSX.Element[]; renderField(field: ObjectField): React.JSX.Element; renderAssetMenu(): React.JSX.Element; renderBrowser(): React.JSX.Element; renderUploadPlaceholder(): React.JSX.Element; renderUploadState(uploadState: UploadState): React.JSX.Element; renderAssetSource(): React.JSX.Element; setToast: (toast: { push: (params: ToastParams) => void; }) => void; getGroupedFields(type: ImageSchemaType): FieldGroups; componentDidUpdate(prevProps: Props): void; componentWillUnmount(): void; hasChangeInFields(fields: ObjectField[]): boolean; render(): React.JSX.Element; } export {}; //# sourceMappingURL=ImageInput.d.ts.map