@atlaskit/editor-plugin-media
Version:
Media plugin for @atlaskit/editor-core
48 lines (47 loc) • 2.86 kB
TypeScript
import { jsx } from '@emotion/react';
import type { DispatchAnalyticsEvent } from '@atlaskit/editor-common/analytics';
import type { EventDispatcher } from '@atlaskit/editor-common/event-dispatcher';
import type { PortalProviderAPI } from '@atlaskit/editor-common/portal';
import type { ContextIdentifierProvider, MediaProvider, ProviderFactory } from '@atlaskit/editor-common/provider-factory';
import { SelectionBasedNodeView } from '@atlaskit/editor-common/selection-based-node-view';
import type { ExtractInjectionAPI } from '@atlaskit/editor-common/types';
import type { Node as PMNode } from '@atlaskit/editor-prosemirror/model';
import type { EditorView, NodeView } from '@atlaskit/editor-prosemirror/view';
import type { FileIdentifier } from '@atlaskit/media-client';
import type { MediaClientConfig } from '@atlaskit/media-core/auth';
import type { MediaNextEditorPluginType } from '../mediaPluginType';
import type { getPosHandler, getPosHandler as ProsemirrorGetPosHandler } from '../types';
export interface MediaInlineProps {
addPendingTask: (promise: Promise<any>) => void;
allowInlineImages?: boolean;
contextIdentifierProvider?: Promise<ContextIdentifierProvider>;
dispatchAnalyticsEvent?: DispatchAnalyticsEvent;
editorViewMode?: boolean;
fallbackMediaNameFetcher?: (id: string) => Promise<string>;
getPos: ProsemirrorGetPosHandler;
handleMediaNodeMount: (node: PMNode, getPos: ProsemirrorGetPosHandler) => void;
handleMediaNodeUnmount: (node: PMNode) => void;
identifier: FileIdentifier;
isSelected: boolean;
mediaClientConfig: MediaClientConfig;
mediaProvider: Promise<MediaProvider>;
node: PMNode;
selectedMediaContainerNode: () => PMNode | undefined;
view: EditorView;
}
export declare const handleNewNode: (props: MediaInlineProps) => void;
export declare const MediaInline: (props: MediaInlineProps) => jsx.JSX.Element;
interface MediaInlineNodeViewProps {
api: ExtractInjectionAPI<MediaNextEditorPluginType> | undefined;
dispatchAnalyticsEvent?: DispatchAnalyticsEvent;
fallbackMediaNameFetcher?: (id: string) => Promise<string>;
providerFactory: ProviderFactory;
}
export declare class MediaInlineNodeView extends SelectionBasedNodeView<MediaInlineNodeViewProps> {
createDomRef(): HTMLSpanElement;
ignoreMutation(): boolean;
viewShouldUpdate(nextNode: PMNode): boolean;
render(props: MediaInlineNodeViewProps): jsx.JSX.Element;
}
export declare const ReactMediaInlineNode: (portalProviderAPI: PortalProviderAPI, eventDispatcher: EventDispatcher, providerFactory: ProviderFactory, api: ExtractInjectionAPI<MediaNextEditorPluginType> | undefined, dispatchAnalyticsEvent?: DispatchAnalyticsEvent, fallbackMediaNameFetcher?: (id: string) => Promise<string>) => (node: PMNode, view: EditorView, getPos: getPosHandler) => NodeView;
export {};