@atlaskit/editor-plugin-media
Version:
Media plugin for @atlaskit/editor-core
79 lines (78 loc) • 4 kB
TypeScript
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';