@atlaskit/editor-plugin-media
Version:
Media plugin for @atlaskit/editor-core
35 lines (34 loc) • 1.73 kB
TypeScript
import type { Node as PMNode } from '@atlaskit/editor-prosemirror/model';
import type { Selection } from '@atlaskit/editor-prosemirror/state';
import type { Mapping } from '@atlaskit/editor-prosemirror/transform';
import type { EditorView } from '@atlaskit/editor-prosemirror/view';
import type { MediaOptions } from '../types';
/** Keeps a media insertion point collapsed so a drop never replaces the current selection. */
export declare const mediaDropSelection: (doc: PMNode, pos: number) => Selection;
export declare const findMediaDropPosition: (view: EditorView, coords: {
left: number;
top: number;
}, fileTypes: string[], mediaOptions?: MediaOptions) => number | undefined;
export type MediaDropReplacement = {
media: PMNode;
pos: number;
};
/** Only a single image over a media card can replace it; captions and surrounding space insert. */
export declare const findMediaDropReplacement: (view: EditorView, event: DragEvent, fileTypes: string[]) => MediaDropReplacement | undefined;
/** Retains drop locations while uploads prepare and other edits change document positions. */
export declare class MediaDropTargets {
hover?: number;
hoverReplacement?: MediaDropReplacement;
private batches;
private files;
start(traceId: string, pos: number, replacement?: MediaDropReplacement): () => void;
register(traceId: string, fileIds: string[]): void;
positionFor(fileId: string): number | undefined;
replacementFor(fileId: string, doc: PMNode): MediaDropReplacement | undefined;
hoverReplacementFor(doc: PMNode): MediaDropReplacement | undefined;
clearHover(): void;
inserted(fileId: string): void;
map(mapping: Mapping): void;
clear(): void;
private prune;
}