UNPKG

@atlaskit/editor-plugin-media

Version:

Media plugin for @atlaskit/editor-core

79 lines (78 loc) 4 kB
import type { MediaADFAttrs, RichMediaLayout as MediaSingleLayout } from '@atlaskit/adf-schema'; import type { InsertMediaVia } from '@atlaskit/editor-common/analytics'; import type { Dispatch } from '@atlaskit/editor-common/event-dispatcher'; import type { MediaProvider } from '@atlaskit/editor-common/provider-factory'; import type { Node as PMNode } from '@atlaskit/editor-prosemirror/model'; import type { EditorView } from '@atlaskit/editor-prosemirror/view'; import type { Identifier } from '@atlaskit/media-client'; import type { MediaClientConfig } from '@atlaskit/media-core'; import type { MediaOptions, MediaState, MediaStateEventSubscriber, ProsemirrorGetPosHandler } from '../types'; import type { MediaPluginOptions } from '../types/media-plugin-options'; import type PickerFacade from './picker-facade'; export interface MediaNodeWithPosHandler { getPos: ProsemirrorGetPosHandler; node: PMNode; } export interface MediaPluginState { addPendingTask: (promise: Promise<any>) => void; allowInlineImages?: boolean; allowsUploads: boolean; allUploadsFinished: boolean; clone: () => MediaPluginState; currentMaxWidth?: number; destroy: () => void; dispatch?: Dispatch; editingMediaSinglePos?: number; element?: HTMLElement; findMediaNode: (id: string) => MediaNodeWithPosHandler | null; getMediaOptions: () => MediaPluginOptions; handleDrag: (dragState: 'enter' | 'leave') => void; handleMediaGroupUpdate: (oldNodes: PMNode[], newNodes: PMNode[]) => void; handleMediaNodeMount: (node: PMNode, getPos: ProsemirrorGetPosHandler) => void; handleMediaNodeRemoval: (node: PMNode | undefined, getPos: ProsemirrorGetPosHandler) => void; handleMediaNodeUnmount: (oldNode: PMNode) => void; ignoreLinks: boolean; insertFile: (mediaState: MediaState, onMediaStateChanged: MediaStateEventSubscriber, pickerType?: string, insertMediaVia?: InsertMediaVia) => void; isFullscreen: boolean; isIdentifierInEditorScope: (identifier: Identifier) => boolean; isMediaViewerVisible?: boolean; isResizing: boolean; lastAddedMediaSingleFileIds: { id: string; selectionPosition: number; }[]; layout: MediaSingleLayout; mediaClientConfig?: MediaClientConfig; mediaNodes: MediaNodeWithPosHandler[]; mediaOptions?: MediaOptions; mediaProvider?: MediaProvider; mediaViewerSelectedMedia?: MediaADFAttrs; onPopupPickerClose: () => void; onPopupToggle: (onPopupToogleCallback: (isOpen: boolean) => void) => void; options: MediaPluginOptions; pickerPromises: Array<Promise<PickerFacade>>; pickers: PickerFacade[]; removeSelectedMediaContainer: () => boolean; resizingWidth: number; selectedMediaContainerNode: () => PMNode | undefined; setBrowseFn: (browseFn: () => void) => void; setIsResizing: (isResizing: boolean) => void; setMediaProvider: (mediaProvider?: Promise<MediaProvider>) => Promise<void>; setResizingWidth: (width: number) => void; setView: (view: EditorView) => void; showDropzone: boolean; showEditingDialog?: boolean; showMediaPicker: () => void; splitMediaGroup: () => boolean; subscribeToUploadInProgressState: (fn: (isUploading: boolean) => void) => void; trackOutOfScopeIdentifier: (identifier: Identifier) => void; unsubscribeFromUploadInProgressState: (fn: (isUploading: boolean) => void) => void; updateAndDispatch: (props: Partial<Pick<this, 'allowsUploads' | 'allUploadsFinished' | 'isFullscreen' | 'videoControlsWrapperRef'>>) => void; updateElement: () => void; updateMediaSingleNodeAttrs: (id: string, attrs: object) => undefined | boolean; uploadMediaClientConfig?: MediaClientConfig; videoControlsWrapperRef?: HTMLElement; waitForMediaUpload: boolean; waitForPendingTasks: (timeout?: number, lastTask?: Promise<MediaState | null>) => Promise<MediaState | null>; } export type EventInput = 'keyboard' | 'mouse' | 'floatingToolBar';