///
///
import { AuthMessage, AuthPermission } from "../../../commons/auth-message";
import { EventEmitter } from 'events';
import OTClient, { DocContainer, Op, DocBlock, BlockLockInfo, DocVersion, TextAlign, OnProgress } from "../ot/index";
import UndoState from "../undo/index";
import RemoteCaretPos from "../blocks/remote-carets/RemoteCaretPos";
import { EditorDoc, RootElement, ContainerElement, BlockElement, BoxElement, EditorOptions, Editor, CaretPos, BLOCK_TYPE, BlockData, BlockTypes, Block, RemoteUserCaretPos, BoxData, BoxTemplateData, TextCommand, BlockCommand, CommandParams, SelectionDetail, Position, DeleteBlockOptions, EmbedData, EMBED_TYPE, TextToolbar, ContextMenu, InsertBlockOptions, ReplaceBlockOptions, UpdateBlockDataOptions, UpdateBlockTextOptions, BlockTemplateData, DialogOptions, StandardDialogOptions, StandardInputDialog, StandardConfirmDialog, AgentSelector, AutoSuggest, Tooltip, BOX_TYPE, InsertBoxOptions, Dialog, CommentData, SelectionState, CommandTargetInfo, Popover, CommandStatus, LinkDetails, OnlineUsers, OnlineUserChange, EditableToolbar, BreakTextBlockOptions, ActionOperatorOptions, FileBoxTemplateData, FilePreviewType, EditorOp, ThemeModeType, TextInputBoxTemplateData, CheckInputBoxTemplateData, SelectBoxTemplateData, EDITOR_EVENT, FloatMenu, WikiLinkBoxTemplateData, VersionDialogOptions, QuickInsertMenuTrigger, EMBED_MEDIA_TYPE, ImageBoxData, DocTemplate, CompositionData, HeadingBlockScrollListenerCallbackResult, IImageOptions, WikiLinkBoxData } from "../interface";
import '../static/css/variables.css';
import '../static/css/editor.css';
import '../static/css/editorDarkPatch.css';
import '../static/css/editorFullscreen.css';
import RichTextOperations from "../text/RichTextOperations";
import RichTextDocument from "../text/RichTextDocument";
import EditorBlockMenuButton from "../ui/BlockMenuButton";
import FindDialog from "../find/FindDialog";
import EditorCommentsContainer from "../comment/CommentsContainer";
import "../blocks/box/TagBox";
import "../blocks/box/WikiLinkBox";
import "../blocks/box/MentionBox";
import "../blocks/box/MathBox";
import "../blocks/box/CalendarBox";
import "../blocks/box/LoadingBox";
import "../blocks/box/FileBox";
import "../blocks/box/InputBox";
import "../blocks/box/BrBox";
import "../blocks/box/ImageBox";
import "../blocks/box/AnchorBox";
import "../blocks/box/QuickInsertBox";
import EditorVersionDialog from "../version/VersionDialog";
import { EditorBlockCommentButton } from "../ui/BlockCommentButton";
import { BlockInfoForComposition } from "./apply-remote-ops-for-composition";
interface RemoteCaretPosMessage {
type: 'remoteCaretPos';
userId: string;
caretPos: CaretPos;
endCaretPos: CaretPos;
keyPressed: boolean;
}
interface ExclusiveBlockMessage {
type: 'exclusiveBlock';
userId: string;
displayName: string;
blockIds: string[];
exclusive: boolean;
}
export default class EditorImpl implements Editor {
editorElement: HTMLElement;
rootElement: RootElement;
rootContainerElement: ContainerElement;
loader: HTMLElement;
static editors: Map;
static commandTarget: CommandTargetInfo | null;
themeMode: ThemeModeType;
otClient: OTClient;
doc: DocContainer | null;
undoState: UndoState;
remoteCaretPos: RemoteCaretPos;
options: EditorOptions;
lastCaretPos: CaretPos;
lastEndCaretPos: CaretPos;
lastDragBlock: BlockElement | null;
broadcastCaretMessage: import("lodash").DebouncedFunc<(message: RemoteCaretPosMessage) => void>;
compositing: boolean;
compositionData: CompositionData;
waitingCommand: CommandParams | null;
lastEvent: MouseEvent | KeyboardEvent | null;
lastEventDateTime: number;
lastPosition: Position;
isLastRangeInEditor: boolean;
lastSelectionDetail: SelectionDetail | null;
autoSuggest: AutoSuggest;
tooltip: Tooltip | null;
textToolbar: TextToolbar;
editableToolbar: EditableToolbar;
contextMenu: ContextMenu;
contextMenuTime: number;
floatMenu: FloatMenu;
blockMenuButton?: EditorBlockMenuButton;
blockCommentButton?: EditorBlockCommentButton;
mouseDown: boolean;
keyPressed: boolean;
dirty: boolean;
agentSelector: AgentSelector;
exclusiveBlocks: Set;
exclusiveBlockTimer: number;
auth: AuthMessage;
parentEditor: Editor | null;
updateComments: import("lodash").DebouncedFunc<() => void>;
updateCommentsPosition: import("lodash").DebouncedFunc<() => void>;
updateCommandStatus: import("lodash").DebouncedFunc<() => void>;
readonly: boolean;
readonlyBeforeFullscreen: boolean;
commentsContainer: EditorCommentsContainer;
events: EventEmitter;
elementRemoveListener: MutationObserver | null;
loaded: boolean;
dragging: boolean;
boxDataMap: Map;
hoverBlock: BlockElement | null;
hoverComplexBlock: BlockElement | null;
entireSelectedBlock: BlockElement | null;
selectEntireBlockTime: number;
hoverImage: HTMLImageElement | null;
focusedImage: HTMLImageElement | null;
focusedBlock: BlockElement | null;
findDialog: FindDialog;
versionDialog: EditorVersionDialog;
onChange: import("lodash").DebouncedFunc<() => void>;
onlineUsers: OnlineUsers;
rangeFromMouseDown: Range | null;
private lastSelectionState;
private updateSelectionCounter;
private unlockedBlocksByPassword;
private mediaQueryList;
private pendingExclusiveMessages;
private headingBlockScrollListener?;
mouseWheeled: boolean;
linkDialogShow: boolean;
signLinkDialog(show: boolean): void;
constructor(editorElement: HTMLElement, options: EditorOptions, auth: AuthMessage, parentEditor?: Editor);
get destroyed(): boolean;
setThemeMode(themeModeType?: ThemeModeType): void;
formatDate(date: Date): string;
scrollToBottomView: import("lodash").DebouncedFunc<() => void>;
scrollToMiddleView(): void;
isTypewriterMode(): boolean;
setTypewriterMode(mode: boolean): void;
isFocusMode(): boolean;
setFocusMode(isFocusMode: boolean): void;
isCommentsVisible(): boolean;
setCommentsVisible(visible: boolean): void;
clearEditorPlugin(): void;
resetContent(logout: boolean): void;
destroy(): void;
get id(): string;
get version(): string;
docId(): string;
data(): EditorDoc;
applyOps(ops: any): void;
meta(): {
[index: string]: any;
};
reload(): void;
loadLocalBlocks(blocks: DocBlock[]): void;
loadLocalData(data: EditorDoc): void;
handleWebSocketOpen: (event: any) => void;
handleWriteConflictError: (error: Error) => void;
handleRequestReloadError: (error: Error) => Promise;
handleAssertionFailure: (err: Error) => void;
handleMaxUserError: () => void;
handleWebSocketClose: (event: any) => void;
handleWebSocketError: (err: any) => void;
isLocal(): boolean;
isHistory(): boolean;
isMarkdownOnly(): boolean;
isDirty(): boolean;
isReadOnly(): boolean;
setReadOnly(readonly: boolean): void;
isCommentable(): boolean;
isChildEditor(): boolean;
isWritable(): boolean;
isDragging(): boolean;
setDragging(isDragging: boolean): void;
isMouseDown(): boolean;
isAllLoaded(): boolean;
onChangeCore(): void;
onDirty(): void;
onClean(): void;
getAgentSelector(): AgentSelector;
rootContainer(): ContainerElement;
getContainerById(id: string): ContainerElement | null;
getBlockByIndex(container: ContainerElement, index: number): BlockElement;
getBlockContainer(block: BlockElement): ContainerElement;
getBlockIndex(block: BlockElement): number;
getBlockById(id: string): BlockElement | null;
getBoxById(id: string): BoxElement | null;
replaceBoxToText(id: string, text: string): void;
getBoxData(id: string): BoxData;
setBoxData(id: string, data: BoxData): void;
handleReauth: () => Promise;
loadDocument(): Promise;
handleWebsocketMessage: (obj: any) => void;
getOnlineUsers(): OnlineUsers;
getOnlineUserColor(userId: string, type: 'flag' | 'selection'): string;
getFixedUserColor(userId: string, type: 'flag' | 'selection'): string;
getUserAvatarUrl(avatarUrl: string, userId: string): string;
isComposing(): boolean;
composingBlock(): BlockElement | null;
isInEditor(dom: Node | null): boolean;
isValid(): boolean;
showFindDialog(): void;
showReplaceDialog(): void;
highlightText(text: string, options?: {
keepReplaceResult?: boolean;
}): void;
clearHighlight(options?: {
keepReplaceResult?: boolean;
}): void;
getWaitingCommand(): CommandParams | null;
addWaitingCommand(params: CommandParams): void;
clearWaitingCommand(): void;
endComposition(): void;
getRemoteCaretPosesInBlock(blockId: string): RemoteUserCaretPos[];
handleBlur: (event: FocusEvent) => void;
handleCompositionStart: (event: Event) => void;
handleCompositionEndCore: (event: Event) => void;
handleCompositionEnd: (event: Event) => void;
handleClick: (event: MouseEvent) => void;
mousePosition(): Position;
handleMouseDown: (event: MouseEvent) => void;
handleMouseMove: (event: MouseEvent) => void;
handleMouseUp: (event: MouseEvent) => void;
handleDragStart: (event: Event) => void;
handleDragEnter: (event: DragEvent) => void;
handleDrop: (event: DragEvent) => void;
handleCopy: (event: ClipboardEvent | null) => void;
handleCut: (event: ClipboardEvent | null) => void;
clearSelectedContents(): void;
handlePaste: (event: ClipboardEvent) => Promise;
handleMediaQueryListChange: () => void;
handleResize: () => void;
handleContextMenu: (event: MouseEvent) => void;
handleWheel: (event: WheelEvent) => void;
handleKeydown: (event: KeyboardEvent) => void;
handleRemoteCaretPosChanged: (blockIds: string[], flashUserId: string | null) => void;
setImageSelected(block: BlockElement | null, image: HTMLImageElement | null): void;
handleRemoteUserChanged: (users: OnlineUsers, change: OnlineUserChange) => void;
updateTextToolbar(force: boolean): void;
handleSelectionChanged: () => void;
handleFullscreenChange: () => void;
updateBlockToolsFixedButton(block: BlockElement): void;
updateCommandStatusCore(): void;
broadcastCaretMessageCore(message: RemoteCaretPosMessage): void;
broadcastCaretPos(): void;
broadcastExclusiveBlockMessage(blocks: BlockElement[], exclusive: boolean): void;
handleRemoteExclusiveBlockMessage(message: ExclusiveBlockMessage): void;
isPreviewEnabled(fileName: string): boolean;
setFileDisplayType(fileBlockOrFileBox: BlockElement | BoxElement, type: FilePreviewType): void;
fullscreenPreviewFile(fileBlockOrFileBox: BlockElement | BoxElement): void;
getBlockData(block: BlockElement): BlockData;
getBlockDataFromDoc(block: BlockElement): BlockData;
saveData(): void;
cloneBlock(block: BlockElement, options: {
type: 'above' | 'below';
focusToNewBlock: boolean;
}): boolean;
moveBlock(block: BlockElement, options: {
type: 'up' | 'down';
}): boolean;
checkCommentable(): void;
executeBlockCommand(command: BlockCommand, block?: BlockElement, params?: CommandParams): any;
editComment(commentId: string): void;
executeTextCommand(command: TextCommand, params?: CommandParams): any;
applyTextCustomStyle(style: string, enable?: boolean): void;
undo(): boolean;
redo(): boolean;
beginUndoGroup(): void;
endUndoGroup(): void;
beginUpdateSelection(): void;
endUpdateSelection(): void;
isUpdatingSelection(): boolean;
exclusiveBlock(block: BlockElement): void;
isTitleBlock(block: BlockElement): boolean;
titleFromEditor(): string;
setTitle(title?: string): void;
isBlockLocked(block: BlockElement): boolean;
isParentBlockLocked(block: BlockElement): boolean;
isBlockWritable(block: BlockElement): boolean;
isBlockMarkerExpired(block: BlockElement): boolean;
setBlockMarkerExpired(block: BlockElement, status: boolean): void;
getBlockLockInfo(block: BlockElement): BlockLockInfo;
lockBlock(block: BlockElement): void;
static setCursor(type: string | null): void;
setBlockMarkerData(block: BlockElement, markerData: string, width: number, options: UpdateBlockDataOptions): void;
setBlockPadding(block: BlockElement, padding: number): void;
setBlockStyleState(block: BlockElement, style: string, enabled: boolean): void;
indentBlock(block: BlockElement): void;
outdentBlock(block: BlockElement): void;
unlockBlock(block: BlockElement): void;
unlockBlockByPassword(block: BlockElement, password: string): void;
isBlockUnlockedByPassword(block: BlockElement): boolean;
setBlockLockPassword(block: BlockElement, password: string): void;
unexclusiveBlock(block: BlockElement): void;
isBlockExclusive(block: BlockElement): boolean;
startExclusiveBlockTimer(): void;
stopExclusiveBlockTimer(): void;
alignBlock(block: BlockElement, align?: TextAlign): void;
blinkBlock(block: BlockElement, delay: number): void;
isMainContainer(containerOrBlock: ContainerElement): boolean;
createEmptyContainerBlockData(): BlockData[];
insertDoc(doc: EditorDoc, options?: {
block: BlockElement;
offset: number;
}): void;
insertMarkdown(markdown: string, options?: {
block: BlockElement;
offset: number;
}): void;
importDocx(file: File): Promise;
batchInsertBlocks(container: ContainerElement, insertPos: number, blocksData: BlockData[]): BlockElement[];
canInsertBlockAt(container: ContainerElement, index: number): boolean;
insertBlock(container: ContainerElement | null, insertPos: number, type: BlockTypes, blockData: BlockData | null, options: InsertBlockOptions): BlockElement;
insertTextBlock(container: ContainerElement | null, index: number, text: string | RichTextDocument, textBlockData?: any, options?: InsertBlockOptions): BlockElement;
splitTextBlock(block: BlockElement, offset: number, options: {
keepFormat: boolean;
}): BlockElement;
insertCheckbox(container: ContainerElement | null, index: number, checked: boolean, text: string): BlockElement;
replaceBlockToText(block: BlockElement, text: string): BlockElement;
insertTable(index: number, cols: number, rows: number, params?: BlockTemplateData): BlockElement;
insertCode(index: number, code: string, language?: string, params?: BlockTemplateData): BlockElement;
insertLayout(index: number, cols: number): BlockElement;
getAccepts(type: EMBED_TYPE.AUDIO | EMBED_TYPE.VIDEO | EMBED_TYPE.IMAGE | EMBED_TYPE.OFFICE): string;
insertEmbed(container: ContainerElement | null, index: number, embedType: EMBED_TYPE, embedData: EmbedData, insertOptions?: BreakTextBlockOptions): BlockElement;
insertMermaid(container: ContainerElement | null, index: number, mermaidText: string, options?: BreakTextBlockOptions): BlockElement;
insertDrawIO(container: ContainerElement | null, index: number, xml: string | null | undefined, options?: BreakTextBlockOptions): BlockElement;
insertDocSnapshot(container: ContainerElement | null, doc: EditorDoc, index: number, options?: BreakTextBlockOptions): Promise;
insertHorizontalLine(container: ContainerElement | null, index: number, options?: BreakTextBlockOptions): BlockElement;
insertChart(container: ContainerElement | null, index: number, srcOrData: string, options?: {
width?: number | string;
height?: number | string;
}): BlockElement;
addResources(resources: string[]): Promise;
uploadDocThumbnail(file: File): Promise;
uploadResource(file: File, onProgress: OnProgress): Promise;
createBlockData(type: BLOCK_TYPE, options?: any, id?: string): BlockData;
createEmbedBlockData(embedType: EMBED_TYPE, data: EmbedData, id?: string): BlockData;
updateBoxData(boxId: string, boxData: BoxTemplateData, updateLocalOnly?: boolean): void;
updateEmbedData(block: BlockElement, data: EmbedData, options?: UpdateBlockDataOptions): void;
getResourceToken(): string | null;
getResourceBasePath(): string;
resourceNameFromUrl(url: string): string;
buildResourceUrl(resourceName: string, fileName?: string, options?: {
withToken: boolean;
}): string;
getDocThumbImage(template: DocTemplate): string;
apiServer(): string;
editorServer(): string;
verifyUploadFile(file: File, embedType: EMBED_MEDIA_TYPE): EMBED_MEDIA_TYPE;
insertMediaFile(container: ContainerElement | null, file: File | string, index: number, embedType: EMBED_MEDIA_TYPE, options?: BreakTextBlockOptions & ActionOperatorOptions, callback?: (block: BlockElement, embedData: EmbedData) => void): BlockElement;
insertImage(container: ContainerElement | null, file: File | string, index: number, options?: BreakTextBlockOptions, title?: string, link?: string): BlockElement;
insertAudio(container: ContainerElement | null, file: File | string, index: number, options?: BreakTextBlockOptions): BlockElement;
insertVideo(container: ContainerElement | null, file: File | string, index: number, options?: BreakTextBlockOptions): BlockElement;
insertOffice(container: ContainerElement | null, file: File, index: number): BlockElement;
updateOffice(type: 'block' | 'box', id: string, file: File): Promise;
insertWebpage(container: ContainerElement | null, url: string, index: number, customType?: string, options?: BreakTextBlockOptions): Promise;
hasFocus(): boolean | undefined;
deleteBlock(block: BlockElement, options: DeleteBlockOptions): void;
insertBox(type: BOX_TYPE, id: string | null, data: BoxTemplateData, options?: InsertBoxOptions): Promise;
insertEmptyBox(type: BOX_TYPE): Promise;
getBoxInsertTarget(block: BlockElement | null, offset: number | undefined): {
targetBlock: null;
targetOffset: undefined;
} | {
targetBlock: BlockElement;
targetOffset: number | undefined;
};
insertImageBox(src: string, width: number | undefined, height: number | undefined, block: BlockElement | null, offset: number | undefined): ImageBoxData | null;
insertAnchorBox(block: BlockElement | null, offset: number | undefined): BoxData | null;
insertFileBox(block: BlockElement | null, offset: number | undefined, id: string | null, data: FileBoxTemplateData): BoxData | null;
insertWikiLink(block: BlockElement | null, offset: number | undefined, id: string | null, data: WikiLinkBoxTemplateData): BoxData | null;
insertInput(block: BlockElement | null, offset: number | undefined, id: string | null, inputType: 'select' | 'text' | 'checkbox', data: BoxTemplateData): BoxData | null;
insertTextInput(block: BlockElement | null, offset: number | undefined, id: string | null, data: TextInputBoxTemplateData): BoxData | null;
insertCheckInput(block: BlockElement | null, offset: number | undefined, id: string | null, data: CheckInputBoxTemplateData): BoxData | null;
insertSelect(block: BlockElement | null, offset: number | undefined, id: string | null, data: SelectBoxTemplateData): BoxData | null;
editBox(boxData: BoxData, block: BlockElement): void;
closeAutoSuggest(): void;
getEmbedBlockEmbedData(block: BlockElement): EmbedData;
getMediaBlockUrl(block: BlockElement): string;
getAllImages(): {
src: string;
id: string;
}[];
updatePlaceholder(): void;
getLinkInfo(node: Node): {
text: string;
link: string;
};
setLinkInfo(node: Node, info: {
text?: string;
link?: string;
}): void;
isHeadingBlockCollapsed(block: BlockElement): boolean;
expandHeadingBlock(block: BlockElement): void;
collapseHeadingBlock(block: BlockElement): void;
getBlockTocInfo(block: BlockElement): {
prevHeadingBlockId?: string;
nextHeadingBlockId?: string;
};
createChildContainer(parent: HTMLElement, id: string, blocks: any[]): ContainerElement;
createEmptyChildContainer(parent: HTMLElement, id: string): ContainerElement;
createEmptyChildContainerData(initBlocks?: BlockData[], id?: string): string;
getChildContainerData(containerId: string): DocBlock[];
createComment(commentGroupId: string | null, replyCommentId: string | null, doc: EditorDoc | null, abstract?: string): string;
addBlockComment(block: BlockElement, text?: string): string;
addCommentToBlock(block: BlockElement, commentId: string, options?: {
noEditComment: boolean;
}): void;
commentImage(block: BlockElement, image: HTMLElement): string;
updateCommentText(id: string, doc: EditorDoc): void;
deleteComment(id: string): void;
handleCommentInserted(block: BlockElement, start: number, end: number, commentId: string): void;
getCommentData(id: string): CommentData;
getGroupComments(groupId: string): CommentData[];
getComments(): CommentData[][];
getChildEditorData(id: string): DocBlock[];
replaceBlock(block: BlockElement, newBlockData: BlockData, options: ReplaceBlockOptions): BlockElement;
replaceContainerData(container: ContainerElement, blocks: DocBlock[]): void;
updateBlockData(block: BlockElement, data: BlockTemplateData, options: UpdateBlockDataOptions): void;
updateBlockText(block: BlockElement, text: RichTextDocument, options: UpdateBlockTextOptions): void;
deleteBlockText(block: BlockElement, from: number, to: number): void;
insertBlockText(block: BlockElement, pos: number, doc: RichTextDocument | string): void;
static fixTextData(data: BlockData): DocBlock;
fixTextBlockAtContainerEnd(block: BlockElement): BlockElement | null;
getRootObjectName(container: ContainerElement): string;
submitInsertContainerAction(id: string, data: BlockData[]): void;
submitInsertBlockAction(container: ContainerElement, block: BlockElement, index: number, data: BlockData): void;
submitDeleteBlockAction(block: BlockElement, fromUndo?: boolean): void;
submitUpdateBlockDataAction(container: ContainerElement, index: number, id: string, data: BlockData, options: {
fromUndo: boolean;
}): void;
submitReplaceBlockAction(container: ContainerElement, index: number, data: BlockData, fromUndo?: boolean): void;
submitBlockTextChanges(block: BlockElement, oldText: RichTextDocument, newText: RichTextDocument, data: RichTextOperations, fromUndo?: boolean): void;
compositionLockData: {
doc: EditorDoc;
inputEvent: InputEvent[];
info: BlockInfoForComposition;
selectionStatus: SelectionState;
remoteOps: Op[][];
reason: 'table' | 'sogou';
} | null;
applyingRemoteOpsForComposition: boolean;
isLockedForComposition(): boolean;
lockForComposition(reason: 'table' | 'sogou'): void;
unlockComposition(): boolean;
isApplyingRemoteOpsForComposition(): boolean;
updateDocumentByRemoteOps(ops: Op[], source: boolean): void;
selectBlock(block: BlockElement, start: number, end?: number | undefined): void;
moveCaretTo(x: number, y: number): void;
selectBox(block: BlockElement, boxElement: BoxElement): void;
isBlockEntireSelected(block: BlockElement): boolean;
selectEntireBlock(block: BlockElement): void;
getEntireSelectedBlock(): BlockElement | null;
getSelectionDetail(): SelectionDetail;
getHoverBlock(): BlockElement | null;
getHoverImage(): HTMLImageElement | null;
getFocusedImage(): HTMLImageElement | null;
isSelectionWritable(detail: SelectionDetail): boolean;
getSelectedText(options?: {
visibleTextOnly?: boolean;
}): string;
getAllBlocks(options: {
deep: boolean;
}): BlockElement[];
getAllSelectedBlocks(options: {
deep: boolean;
}): BlockElement[];
getCurrentScale(): number;
isSetScale(): boolean;
getCaretPos(): CaretPos;
fixSelection(options: {
autoScroll: boolean;
}): void;
getCommandStatus(): CommandStatus;
getBlockCommandStatus(block: BlockElement): CommandStatus;
getDetailCommandStatus(detail: SelectionDetail): CommandStatus;
saveCommandTarget(target: Node, popover: Popover): void;
saveSelectionState(): SelectionState;
restoreSelectionState(state: SelectionState): boolean;
setCaretPos(pos: CaretPos): void;
getCurrentBlockIndex(): number;
createChildLocalEditor(elem: HTMLElement, permission: AuthPermission, options: EditorOptions, data?: EditorDoc): Editor;
updateImageResizeTool(): void;
addTokenToResources(html: string): void;
adjustTextInputSize(): void;
updateCommentsCore(): void;
refreshComments(options?: {
refreshNow: boolean;
}): void;
updateCommentsPositionCore(): void;
showDialog(options: DialogOptions | StandardDialogOptions | StandardInputDialog | StandardConfirmDialog): Dialog;
showVersions(container: HTMLElement | null, options?: VersionDialogOptions): EditorVersionDialog;
showOps(ops: EditorOp[], options?: {
play: boolean;
speed?: number;
}): Promise;
getVersions(options?: {
groupVersions?: boolean;
}): Promise;
getChanges(): Element[];
highlightChanges(elem: Element, timeout: number): void;
getVersion(ver: number): Promise;
getVersionOps(ver: number, from?: number): Promise<{
doc: EditorDoc;
ops: EditorOp[];
}>;
getLatestVersion(): Promise;
createVersion(tag: string, publish: boolean): Promise;
revertVersion(ver: number): Promise;
focus(offset?: number): void;
fullscreen(): void;
isBlockQuoted(block: BlockElement): boolean;
setBlockQuoted(block: BlockElement, quoted: boolean): void;
addBlockInlineStyle(block: BlockElement, style: string): void;
getBlockInlineStyle(block: BlockElement): string | undefined;
addEventListener(type: EDITOR_EVENT, callback: (...args: any[]) => void): void;
removeEventListener(type: EDITOR_EVENT, callback: (...args: any[]) => void): void;
handleRootContainerResize: (entry: ResizeObserverEntry) => void;
static registerBlockType(type: BlockTypes, blockClass: Block): void;
static getEditorById(id: string): Editor;
static getEditor(elem: Node): Editor;
static getRootEditor(elem: Node): Editor;
request(options: string | any): Promise;
postCustomMessage(data: string): void;
recognizeWebPageLink(url: string): Promise;
recognizeNormalLink(url: string, block: BlockElement, options: {
offset: number;
count: number;
}): Promise<{
text: string;
link: string;
} | null>;
wrapHtml(blocksHtml: string): string;
toHtml(): string;
selectionToDoc(options?: {
keepComments?: boolean;
}): EditorDoc;
selectionToHtml(): string;
toPlainText(options?: {
withoutTitle: boolean;
}): string;
toImage(width?: number, height?: number, download?: boolean): Promise;
updateDocThumbnail(width: number, height: number): Promise;
print(): Promise;
toMarkdown(options?: {
keepImageSize?: boolean;
keepComments?: boolean;
}): string;
toDocx(template: Buffer | undefined, download?: boolean, backgroundImageOptions?: IImageOptions): Promise;
updateToc(): void;
play(): void;
animateScrollToBlock(elem: BlockElement): void;
setBlockIconVisible(visible: boolean): void;
isInComment(element: Element): boolean;
setQuickInsertMenuTrigger(quickInsertMenuTrigger: QuickInsertMenuTrigger): void;
startHeadingBlockScrollListener(callback: (result: HeadingBlockScrollListenerCallbackResult) => void): void;
stopHeadingBlockScrollListener(): void;
static registerCurrentCommandTarget(commandTarget: CommandTargetInfo | null): void;
static getCurrentCommandTarget(): CommandTargetInfo | null;
static getCurrentCommandEditor(): Editor;
static getCurrentCommandBlock(): BlockElement;
static getVisiblePopover(): Popover | null;
static hideCurPopover(): void;
static selectCurrentCommandTargetBlock(): void;
getWikiBoxDataByLinkId(linkId: string): WikiLinkBoxData | null;
}
export {};