///
import { IImageOptions } from "../../commons/doc2docx";
import "./patch/intersection-observer";
import AttributeMap from 'quill-delta/dist/AttributeMap';
import { AuthMessage, AuthPermission } from "../../commons/auth-message";
import { TemplateValues } from "../../commons/template";
import { GetReferenceClientRect, Placement } from 'tippy.js';
import RichTextOperations from "./text/RichTextOperations";
import RichTextDocument from "./text/RichTextDocument";
import { DocComment, DocBlock, BlockLockInfo, EditorDoc, BlockBase, DocVersion, LinkDetails, TextAlign, OnProgress, EditorOp, Doc2MarkdownOptionalOptions } from "./ot/index";
import MenuItem from "./ui/MenuItem";
import FindDialog from "./find/FindDialog";
import { ICON_KEY } from "./utils/icons";
export { RichTextOperations, RichTextDocument };
export { MenuItem };
export { docData2Text } from "../../commons/doc2text";
export { markdown2Doc } from "../../commons/markdown2doc";
export { DocComment, DocBlock, BlockLockInfo, EditorDoc, TextAlign, DocVersion, LinkDetails, OnProgress, Op, EditorOp, EditorChangeSet, Doc2MarkdownOptionalOptions, } from "./ot/index";
export { getListNumber } from "../../commons/list-number";
export { IImageOptions };
declare global {
interface Element {
scrollIntoViewIfNeeded?: () => void;
}
interface Window {
disableVideo?: boolean;
disableAudio?: boolean;
}
interface CSSStyleDeclaration {
zoom: string;
}
}
export declare class AccessDeniedError extends Error {
constructor();
}
export declare class NotSupportError extends Error {
constructor(message?: string, code?: string);
}
export declare class InvalidParamError extends Error {
constructor(message?: string);
}
export declare type RichTextElement = HTMLElement & {
__neverUse: 'RichTextElement';
};
export declare type RootElement = HTMLDivElement & {
__neverUse: 'RootElement';
};
export declare type ContainerElement = HTMLDivElement & {
__neverUse: 'ContainerElement';
};
export declare type BlockElement = HTMLDivElement & {
__neverUse: 'BlockElement';
};
export declare type BlockContentElement = HTMLElement & {
__neverUse: 'BlockContentElement';
};
export declare type BlockToolsElement = HTMLDivElement & {
__neverUse: 'BlockToolsElement';
};
export declare type EmbedElement = HTMLElement & {
__neverUse: 'EmbedElement';
};
export declare type BoxElement = HTMLSpanElement & {
__neverUse: 'BoxElement';
};
export declare type TextAttributes = AttributeMap;
export declare enum BLOCK_ATTR {
NODE_TYPE = "data-node-type",
BLOCK_TYPE = "data-block-type",
BOX_TYPE = "data-box-type",
EMBED_TYPE = "data-embed-type"
}
export declare enum NODE_TYPE {
CONTAINER = "container",
BLOCK = "block",
BOX = "box",
EMBED = "embed"
}
export declare enum EDITOR_EVENT {
RESIZE = "resize",
THEME_MODE_CHANGE = "themeModeChange",
ELEMENT_REMOVE = "elementRemove"
}
export declare enum BLOCK_TYPE {
TEXT = "text",
HEADING = "heading",
LIST = "list",
TABLE = "table",
EMBED = "embed",
CODE_LINE = "code-line",
CODE = "code"
}
export declare enum BOX_TYPE {
FAKE_CARET = "fake-caret",
TAG = "tag",
WIKI_LINK = "wiki-link",
MENTION = "mention",
MATH = "math",
CALENDAR = "calendar",
LOADING = "loading",
INPUT = "input",
FILE = "file",
HISTORY_DELETED = "history-deleted",
BR = "br",
IMAGE = "image",
ANCHOR = "anchor"
}
export declare enum INPUT_DIALOG_CLASS {
Content = "dialog-input-content"
}
export declare enum EDITOR_CLASS {
AUTO_DARK_MODE = "auto-dark-mode",
DARK_MODE = "dark-mode",
AUTO_WRAP = "auto-wrap",
ACTIVE = "active",
HIDDEN = "editor-hidden",
READONLY = "editor-readonly",
ALERT = "alert",
ERROR = "error",
RETRY = "retry",
UPLOAD_ERROR = "upload-error",
BUTTON = "editor-button",
BUTTON_CANCEL = "editor-button-cancel",
ENTIRE_SELECTED = "editor-entire-selected",
SUB_ITEMS_ACTIVE = "sub-items-active",
BLOCK = "editor-block",
BLOCK_CONTENT = "block-content",
BLOCK_MENU_BUTTON = "block-menu-button",
BLOCK_TOOLS = "block-tools",
BLOCK_POSITION_MARKING_LINE = "block-position-marking-line",
BLOCK_ENTIRE_HOVER = "block-entire-hover",
BUTTON_CONTAINER = "editor-button-container",
BUTTON_SPLIT = "editor-toolbar-split-line",
POPOVER_DIALOG_CONTAINER = "editor-popover-dialog-container",
MENU_CONTAINER = "editor-menu-container",
MENU_SCROLL_CONTAINER = "editor-menu-scroll-container",
MENU_SPLIT = "menu-split",
MENU_FONT_COLOR = "menu-font-color",
COMMAND_ITEM = "editor-command-item",
CLICKABLE_ITEM = "clickable-item",
CHECKBOX = "editor-checkbox",
CHECKED = "editor-checked",
COMMENT = "comment",
COMMENT_IS_ACTIVE = "editor-comment-active",
COMMENT_IS_MINI = "editor-comment-mini",
COMMENT_ID = "comment-id",
COMMENT_EDITOR = "comment-editor",
COMMENT_READY = "comment-ready",
SHOW_MOBILE_COMMENT = "show-mobile-comments",
HIDE_SCROLLBAR = "hide-scrollbar",
COMPOSITION = "editor-composition",
COMPOSITING = "editor-compositing",
CONTAINER = "editor-container",
DISABLED = "disabled",
DIALOG_INPUT_CONTAINER = "dialog-input-container",
EDITOR_MAIN = "editor-main",
EMBED = "editor-embed",
EMBED_CONTAINER = "embed-container",
EMPTY_BLOCK = "empty-block",
FILE_CONTENT = "file-content",
FOCUSED = "focused",
HIDE_LINE_NUMBER = "editor-hide-line-number",
HOVER = "hover",
ICON_BUTTON = "editor-icon-button",
IGNORE = "editor-ignore",
IMAGE_LOADING = "image-loading",
IMAGE_ERROR = "image-error",
IMAGE_EMPTY = "image-empty",
NO_BORDER = "table-no-border",
LINK = "link",
TOC_LINK = "editor-toc-link",
LOCKED_BY_USER = "locked-by-user",
LOCKED_READONLY = "locked-readonly",
ROOT_CONTAINER = "root-container",
ROOT_CONTAINER_EXTEND = "root-container-extend",
ROOT_CONTAINER_CUSTOM = "root-container-custom",
SUB_ITEMS_CONTAINER = "editor-sub-items-container",
BLOCK_SCROLL_BAR = "editor-block-scrollbar",
BLOCK_LEFT_OVERFLOW = "editor-block-left-overflow",
TABLE_SELECTION_MASK = "table-selection-mask",
TABLE_CONTROL_BAR = "table-control-bar",
TABLE_TOOLBAR = "table-toolbar",
TABLE_TOOLBAR_ACTIVE = "table-toolbar-active",
TABLE_COL_GROUP = "table-col-group",
TABLE_RESIZE_TOOL = "table-resize-tool",
TEXT_BUTTON = "editor-text-button",
UNCHECKED = "editor-unchecked",
QUICK_EDITABLE_ELEMENT = "editor-quick-editable",
UNORDERED = "list-ul",
ORDERED = "list-ol",
SHOW_FULL_SCREEN_IFRAME = "show_full_screen_iframe",
FOCUS_MODE = "editor-focus-mode",
TYPEWRITER_MODE = "editor-typewriter-mode",
FULLSCREEN = "editor-fullscreen",
ALIGN_LEFT = "editor-align-left",
ALIGN_RIGHT = "editor-align-right",
ALIGN_CENTER = "editor-align-center",
ALIGN_JUSTIFY = "editor-align-justify",
FLASH = "editor-block-blink",
SLIDING_TOOLS = "block-siding-tools",
SLIDING_TOOLS_CONTAINER = "sliding-tool-view-window",
TOOLTIP = "editor-tooltip",
ON_DRAGGING = "on-dragging",
HISTORY = "history",
STRIPE_STYLE_TABLE = "stripe-style-table",
ROW_TITLE_TABLE = "row-title-table",
COL_TITLE_TABLE = "col-title-table",
COL_TITLE_ITEM = "col-title-item",
POPOVER_INPUT = "editor-popover-input",
POPOVER_BUTTON = "editor-popover-button",
POPOVER_CANCEL_BUTTON = "editor-popover-cancel-button"
}
export declare const FILL_CHAR = "\u200B";
export declare const FILL_CHAR_REG: RegExp;
export declare const SPACE_CHAR = "\u00A0";
export declare const SPACE_CHAR_REG: RegExp;
export declare const MARKER_TOOLBAR_HEIGHT = 44;
export declare const MARKER_WIDTH_EXPAND = 12;
export declare const MARKER_HEIGHT_EXPAND = 24;
export declare type BlockTypes = BLOCK_TYPE.TEXT | BLOCK_TYPE.HEADING | BLOCK_TYPE.LIST | BLOCK_TYPE.EMBED | BLOCK_TYPE.TABLE | BLOCK_TYPE.CODE | BLOCK_TYPE.CODE_LINE;
export interface BlockData extends BlockBase {
text?: RichTextDocument;
}
export interface BlockTemplateData {
[index: string]: any;
text?: RichTextDocument;
}
export interface CompositionData {
block: BlockElement | null;
complexBlock: BlockElement | null;
endTime: number | null;
}
export interface BoxData {
box: true;
id: string;
type: BOX_TYPE;
created: number;
fake?: boolean;
}
export interface InputBoxItem {
text: string;
value: string;
}
export interface QuickInsertMenuTrigger {
'/'?: boolean;
'、'?: boolean;
'+'?: boolean;
}
export interface BoxTemplateData {
[index: string]: string | boolean | number | InputBoxItem[] | undefined | string[];
}
export interface ImageBoxTemplateData extends BoxTemplateData {
src: string;
link?: string;
width: number | undefined;
height: number | undefined;
}
export interface ImageBoxData extends BoxData {
src: string;
link?: string;
width: number;
height: number | undefined;
}
export interface WikiLinkBoxTemplateData extends BoxTemplateData {
name: string;
secondaryName?: string;
linkId?: string;
blockId?: string;
}
export interface WikiLinkBoxData extends BoxData, WikiLinkBoxTemplateData {
}
export interface WikiLinkItem {
linkId: string;
name: string;
iconUrl?: string;
parts?: {
text: string;
highlight: boolean;
}[];
secondaryName?: string;
}
export interface InputBoxData extends BoxData {
label?: string;
inputId: string;
inputType: 'text' | 'select' | 'checkbox';
value?: string;
items?: InputBoxItem[];
width?: number;
classes?: string[];
checked?: boolean;
disabled?: boolean;
placeholder?: string;
customData?: string;
inlineStyle?: string;
}
export interface TextInputBoxTemplateData extends BoxTemplateData {
label?: string;
value?: string;
inputId: string;
width?: number;
classes?: string[];
disabled?: boolean;
customData?: string;
placeholder?: string;
}
export interface CheckInputBoxTemplateData extends BoxTemplateData {
label?: string;
value?: string;
inputId: string;
width?: number;
classes?: string[];
checked?: boolean;
disabled?: boolean;
customData?: string;
}
export interface SelectBoxTemplateData extends BoxTemplateData {
label?: string;
value?: string;
inputId: string;
width?: number;
classes?: string[];
items: InputBoxItem[];
disabled?: boolean;
customData?: string;
}
export interface ContainerData {
id: string;
blocks: BlockData[];
}
export interface CaretPosOneSide {
containerId: string;
blockId: string;
offset: number;
}
export interface BlockOptions {
textBlock?: boolean;
complexBlock?: boolean;
prefix?: string;
icon?: string;
disableQuickInput?: boolean;
}
export declare enum DialogInputType {
INPUT = "input",
TEXTAREA = "textarea"
}
export interface DialogOptions {
type: 'dialog';
content: HTMLElement;
data?: any;
mainClass?: string;
contentClass?: string;
onShown?: (data: any) => void;
onHidden?: (data: any) => void;
}
export interface PopoverDialogOptions extends Omit {
popoverOptions: Omit;
placementCenter?: boolean;
disableEscape?: boolean;
}
export interface StandardDialogOptions {
type: 'standard';
content: HTMLElement;
title: string;
data?: any;
containerClasses?: string[];
showCloseButton?: boolean;
onShown?: (data: any) => void;
onHidden?: (data: any) => void;
onOK: (data: any) => Promise;
onCancel: (data: any) => void;
}
export interface InputOptionsForDialog {
id: string;
defaultValue: string;
inputPlaceholder?: string;
inputType: DialogInputType;
inputDescription?: string;
inputDescriptionInfo?: string;
inputExtActions?: HTMLElement;
required?: boolean;
secondaryText?: HTMLElement;
secondaryTextOnTop?: boolean;
}
export interface InputSubmitValueForDialog {
options: InputOptionsForDialog;
value: string;
}
export interface StandardInputDialog {
type: 'input';
inputList: InputOptionsForDialog[];
title: string;
data?: any;
showCloseButton?: boolean;
containerClasses?: string[];
autoFocus?: boolean;
onShown?: (data: any) => void;
onHidden?: (data: any) => void;
onOK: (data: any, inputValue: InputSubmitValueForDialog[]) => Promise;
onCancel: (data: any) => void;
}
export interface StandardConfirmDialog {
type: 'confirm';
text: string;
title: string;
data?: any;
containerClasses?: string[];
onShown?: (data: any) => void;
onHidden?: (data: any) => void;
onOK: (data: any, ...args: any) => Promise;
onCancel: (data: any) => void;
}
export declare abstract class Dialog {
abstract restoreSelectionState(): void;
abstract show(options: DialogOptions): void;
abstract hide(): void;
abstract isVisible(): boolean;
}
export interface PopoverOptions {
commandTarget: Node;
popoverTarget: HTMLElement;
maskTarget: HTMLElement | null;
parentPopover: HTMLElement | null;
content: HTMLElement;
autoShow?: boolean;
autoHide?: boolean;
hideOnClick?: boolean;
interactive?: boolean;
interactiveBorder?: number;
delay?: number | [number | null, number | null];
placement?: Placement;
fallbackPlacements?: Placement[];
offset?: [number, number] | undefined;
arrow?: boolean;
theme?: string;
zIndex?: number;
showMask?: boolean;
trigger?: string;
getReferenceClientRect?: GetReferenceClientRect;
followCursor?: boolean;
maxWidth?: string | number;
refuseOverflow?: boolean;
overflowBoundary?: Element;
}
export declare abstract class Hidable {
abstract destroy(): void;
abstract hide(forcedToHide?: boolean): void;
abstract isVisible(): boolean;
abstract handleMouseMove(event: MouseEvent): boolean;
abstract on(event: 'hide' | 'show', callback: (...args: any[]) => void): void;
}
export declare abstract class Popover extends Hidable {
abstract create(options: PopoverOptions): void;
}
export declare abstract class Menu extends Hidable {
abstract createAutoHideMenu(commandTarget: Node, popoverTarget: HTMLElement, maskTarget: HTMLElement | null, items: CommandItemData[], options?: MenuOptions): void;
abstract createContextMenu(event: MouseEvent, commandTarget: HTMLElement, items: CommandItemData[]): void;
}
export declare abstract class BlockMenuButton {
abstract destroy(): void;
abstract show(block?: BlockElement): void;
abstract handleMouseMove(event: MouseEvent): boolean;
abstract handleSelectionChanged(detail: SelectionDetail): boolean;
abstract isShowMenu(): boolean;
abstract updatedXOffset(): void;
}
export interface ToolbarOptions {
placement?: Placement;
hideOnClicking?: boolean;
autoHide?: boolean;
offset?: [number, number] | undefined;
popoverOptions?: any;
arrow?: boolean;
}
export interface MenuOptions {
autoHide?: boolean;
autoShow?: boolean;
showMask?: boolean;
trigger?: string;
onShown?: (data: any) => void;
onHidden?: (data: any) => void;
}
export declare abstract class Toolbar extends Hidable {
abstract createAutoHideToolbar(commandTarget: Node, popoverTarget: HTMLElement, items: CommandItemData[]): void;
abstract createManualHideToolbar(commandTarget: Node, popoverTarget: HTMLElement, items: CommandItemData[], options: ToolbarOptions): void;
abstract updateStatus(editor: Editor, status: CommandStatus): void;
}
export declare abstract class TextToolbar extends Hidable {
abstract isVisibleForTextBlock(): boolean;
abstract isMyPopover(popover: Popover): boolean;
abstract update(editor: Editor, force: boolean, event: MouseEvent | null): void;
abstract updateStatus(editor: Editor, status: CommandStatus): void;
abstract updatePosition(): void;
}
export declare abstract class EditableToolbar extends Hidable {
}
export interface AutoSuggestData {
iconUrl: string;
text: string;
id: string;
data: any;
order?: number;
disabled?: boolean;
autoWrap?: boolean;
subText?: string;
className?: string;
parts?: {
text: string;
highlight: boolean;
}[];
placeholder?: boolean;
}
export interface AutoSuggestOptions {
target: HTMLElement;
keyword: string;
placeholder: string;
placeholderNoMatch: string;
customSuggest: boolean;
customSuggestTheme?: string;
customType?: string;
boxClass: Box;
getSuggest: (keyword: string) => Promise;
selectSuggest: (target: HTMLElement, autoSuggestData: AutoSuggestData) => void;
renderSuggestItem?: (editor: Editor, autoSuggestData: AutoSuggestData, options: AutoSuggestOptions) => HTMLElement;
renderSuggestHeader?: (editor: Editor, autoSuggestData: AutoSuggestData[], options: AutoSuggestOptions, renderOptions: {
loading: boolean;
}) => HTMLElement | null;
renderSuggestFooter?: (editor: Editor, autoSuggestData: AutoSuggestData[], options: AutoSuggestOptions, renderOptions: {
loading: boolean;
}) => HTMLElement | null;
renderLoading?: (editor: Editor, keywords: string, exitsContent: HTMLElement, autoSuggestData: AutoSuggestData[], options: AutoSuggestOptions) => HTMLElement | null;
enableSelectItem?: boolean;
onHidden?: (options: AutoSuggestOptions, data: any) => void;
onReturn: (options: AutoSuggestOptions) => boolean;
suggestMaxHeight?: number;
data?: any;
}
export declare abstract class AutoSuggest {
abstract destroy(): void;
abstract show(blockTools: BlockToolsElement, boxElement: BoxElement | null, options: AutoSuggestOptions, customData: any): void;
abstract updateKeyword(keyword: string): void;
abstract hide(): void;
abstract isVisible(): boolean;
abstract isInPopper(target: Node | null): boolean;
abstract isInBlock(block: BlockElement): boolean;
abstract rootElement(): HTMLElement | undefined;
abstract getCustomData(): any;
abstract handleKeydown(event: KeyboardEvent): boolean;
abstract handleMouseMove(event: MouseEvent): boolean;
abstract handleMouseDown(event: MouseEvent): boolean;
abstract handleMouseUp(event: MouseEvent): boolean;
abstract options(): AutoSuggestOptions;
}
export interface TooltipOptions {
getContent?: (target: Element, customData: any) => Element | string;
}
export declare abstract class Tooltip {
abstract destroy(): void;
abstract show(target: Element, options: TooltipOptions, customData: any): void;
abstract hide(): void;
abstract isVisible(): boolean;
abstract rootElement(): HTMLElement | undefined;
abstract handleMouseMove(event: MouseEvent, options: TooltipOptions): boolean;
}
export declare type StyleColor = 'style-color-0' | 'style-color-1' | 'style-color-2' | 'style-color-3' | 'style-color-4' | 'style-color-5' | 'style-color-6';
export declare type StyleBgColor = 'style-bg-color-0' | 'style-bg-color-1' | 'style-bg-color-2' | 'style-bg-color-3' | 'style-bg-color-4' | 'style-bg-color-5' | 'style-bg-color-6' | 'style-bg-color-7' | 'style-bg-color-8' | 'style-bg-color-9' | 'style-bg-color-10' | 'style-bg-color-11' | 'style-bg-color-12' | 'style-bg-color-13';
export interface CommandItemData {
id: string;
text: string;
infoText?: string;
icon?: string;
className?: string;
color?: StyleColor;
bgColor?: StyleBgColor;
data?: any;
shortCut?: string;
disabled?: boolean;
checked?: boolean;
subItemsType?: 'menu' | 'button';
subItems?: CommandItemData[];
subItemsArrow?: boolean;
element?: HTMLElement;
groupHeader?: boolean;
order?: number;
supportMarkdown?: boolean;
showIconAndText?: boolean;
onClick?: (event: Event, item: CommandItemData) => void;
updateStatus?: (editor: Editor, item: CommandItemData, status: CommandStatus) => void;
}
export declare const ITEM_SEP: CommandItemData;
export interface ItemElement {
updateStatus(editor: Editor, status: CommandStatus): void;
}
export declare abstract class ContextMenu {
abstract destroy(): void;
abstract handleContextMenu(event: MouseEvent, editor: Editor): boolean;
abstract isVisible(): boolean;
abstract hide(forcedToHide: boolean): void;
}
export declare abstract class FloatMenu {
popover?: Menu;
abstract destroy(): void;
abstract show(editor: Editor, commandTarget: Node, popoverTarget: HTMLElement, items: CommandItemData[], options: MenuOptions): void;
abstract hide(): void;
abstract isVisible(commandTarget: Node, popoverTarget: HTMLElement): boolean;
}
export declare type LANGS = 'zh-CN' | 'zh-TW' | 'en-US' | 'ja-JP';
export declare abstract class AgentSelector {
abstract isSelected(): boolean;
abstract isMultiSelected(): boolean;
abstract getSelectedSubContainers(): ContainerElement[];
abstract getSelectedBlocks(): BlockElement[];
abstract getSelectedBlock(): BlockElement;
abstract getContextMenuData(): CommandItemData[];
abstract getDetail(): any;
abstract handleMultiBlocksEvent(event: KeyboardEvent): boolean;
abstract updateSelection(complexBlock: BlockElement, selectIndex?: {
colIndex: number;
rowIndex: number;
}[]): boolean;
abstract getCurPopover(): Hidable | null;
abstract selectionToDoc(): EditorDoc;
abstract selectionToHtml(): string;
abstract selectBlock(block: BlockElement): boolean;
abstract isFullSelected(): boolean;
abstract isSelecting(): boolean;
abstract isMultiSelecting(): boolean;
abstract clearSelection(): void;
abstract deleteSelectedContents(): void;
abstract destroy(): void;
}
export declare type AgentSelectorRegister = (editor: Editor) => AgentSelector;
export interface MentionBoxData extends BoxData {
iconUrl: string;
text: string;
mentionId: string;
}
export declare enum FilePreviewType {
CARD = "card",
LINK = "link",
PREVIEW = "preview"
}
export declare enum ReservedMediaSrcType {
Empty = "empty",
Loading = "loading",
Progress = "progress",
Error = "error"
}
export declare function isReservedMediaSrc(src: string): boolean;
export interface MediaData {
src: string;
width?: number;
height?: number;
previewType?: FilePreviewType;
fileName: string;
fileSize: number;
fileType: string;
}
export interface FileBoxTemplateData extends BoxTemplateData {
src: string;
fileName: string;
fileSize: number;
fileType: string;
}
export interface FileBoxData extends BoxData, FileBoxTemplateData {
}
export interface SelectedBlock {
block: BlockElement;
start: number;
end: number;
}
export declare enum SelectionDetailType {
ONE_TEXT_BLOCK = "ONE_TEXT_BLOCK",
ONE_FULL_COMPLEX_BLOCK = "ONE_FULL_COMPLEX_BLOCK",
ONE_EMBED_BLOCK = "ONE_EMBED_BLOCK",
MULTI_BLOCKS = "MULTI_BLOCKS",
INVALID = "INVALID"
}
export interface CaretDetail {
atTop: boolean;
atBottom: boolean;
atHome: boolean;
atEnd: boolean;
homeOffset: number;
endOffset: number;
lineOffset: number;
previousLineHomeOffset?: number;
nextLineEndOffset?: number;
}
export interface RangeDetail {
range: Range;
type: SelectionDetailType;
collapsed: boolean;
startBlock?: BlockElement;
endBlock?: BlockElement;
startOffset?: number | undefined;
endOffset?: number | undefined;
startComplexBlock?: BlockElement;
endComplexBlock?: BlockElement;
direction: number;
noSel?: boolean;
focusedOnInput?: boolean;
}
export interface SelectionDetail extends RangeDetail {
selection: Selection;
}
export interface BasicCommandStatus {
[index: string]: boolean | number | 'enabled' | 'disabled' | BLOCK_TYPE | string;
}
export interface CommandStatus {
parentComplexBlock?: BasicCommandStatus;
[index: string]: boolean | number | 'enabled' | 'disabled' | BLOCK_TYPE | string | BasicCommandStatus | undefined;
}
export interface EditorDocTocNode {
title?: boolean;
blockId: string;
text: string;
children: EditorDocTocNode[];
level: number;
type: 'title' | BLOCK_TYPE;
start?: number;
startText?: string;
ordered?: boolean;
}
export declare type EditorDocToc = EditorDocTocNode[];
export interface OnlineUser {
userId: string;
displayName: string;
avatarUrl: string;
joinAt: number;
rainbowIndex: number;
userData?: string;
permission?: string;
}
export declare type OnlineUsers = OnlineUser[];
export interface OnlineUserChange {
reason: 'join' | 'leave';
userId: string;
}
export declare type ThemeModeType = 'light' | 'auto' | 'dark';
export declare type PreviewInfo = {
html?: string;
url?: string;
pageCount?: number;
iframeUrl?: string;
};
export interface WebPageEmbedType {
name: string;
type: string;
helpLink?: string;
helpHtml?: string;
icon: string;
}
export interface DocTemplate {
docId: string;
name: string;
token: string;
thumbnailUrl?: string;
isStarred?: boolean;
isCustom?: boolean;
}
export interface EditorOptions {
lang?: LANGS;
isMobile?: boolean;
isHistory?: boolean;
defaultRootElement?: Element | null;
defaultRootContainerExtendElement?: Element | null;
disableRootContainerCustom?: boolean;
disableAutoCreateDoc?: boolean;
custom?: unknown;
customLangText?: any;
serverUrl: string;
readonly?: boolean;
template?: Object;
templateValues?: TemplateValues;
docTemplates?: {
hideWhenReadOnly?: boolean;
templates: DocTemplate[];
showTemplateOperator: (maxCount: number, firstCard: HTMLElement) => {
showCreateTemplate: boolean;
showChooseTemplate: boolean;
createTemplateImageSrc?: string;
chooseTemplateImageSrc?: string;
};
placeHolderImageSrc?: string;
showTemplateTitleAttr?: boolean;
customizedMarkText?: string;
};
placeholder?: string;
titleInEditor?: boolean;
titlePlaceholder?: string;
readonlyTitlePlaceholder?: string;
contentPlaceholder?: string;
dialog?: Dialog;
autoSuggest?: AutoSuggest;
tooltip?: Tooltip;
textToolbar?: TextToolbar;
contextMenu?: ContextMenu;
floatMenu?: FloatMenu;
blockMenuButton?: BlockMenuButton;
hideBlockMenuButton?: boolean;
hideBlockCommentButton?: boolean;
hideBlockMenu?: boolean;
hideBlockIcon?: boolean;
hideTableToolbar?: boolean;
disableTableBorderBar?: boolean;
disableTableResize?: boolean;
showComplexBlockMenuButton?: boolean;
local?: boolean;
initLocalData?: EditorDoc;
initLocalDataOps?: EditorOp[];
playOps?: boolean;
playOpsSpeed?: number;
localNeedAuth?: boolean;
disableLogout?: boolean;
markdownOnly?: boolean;
codeTabSize?: number;
lineNumber?: boolean;
initTitle?: string;
hideComments?: boolean;
colors?: string[];
selectionColors?: string[];
officeType?: FilePreviewType;
allowDarkMode?: boolean;
themeMode?: ThemeModeType;
maxHeading?: number;
allowedFiles?: string[];
acceptAllOfficeFiles?: boolean;
acceptOfficeFilesMenuText?: string;
officeMenuIcon?: string;
debug?: boolean;
previewFiles?: string[];
disableListBulletClick?: boolean;
disableMarker?: boolean;
disableMindmap?: boolean;
disableMentions?: boolean;
disableCalendar?: boolean;
disableTex?: boolean;
disableVideo?: boolean;
disableAudio?: boolean;
disableOfficeDownload?: boolean;
disableContextMenu?: boolean;
tableExtendBoundary?: {
enable: boolean;
container?: HTMLElement;
left?: number;
right?: number;
rightIgnoreComments?: boolean;
};
disableRealTime?: boolean;
disableLazyLoading?: boolean;
scrollIntoViewIfNeeded?: boolean;
disableDragListChildren?: boolean;
strictList?: boolean;
maxLength?: number;
highlightMaxCodeLines?: number;
deleteChildComments?: boolean;
resourceProtocol?: string[];
insertEmptyImage?: boolean;
insertEmptyImageOnQuickInput?: boolean;
quickInsertMenuTrigger?: QuickInsertMenuTrigger;
allowedWebPages?: WebPageEmbedType[];
ignoreWebPages?: string[];
quickInsertMenus?: AutoSuggestData[];
blockMenuItems?: CommandItemData[];
disableDropOfficeFile?: boolean;
icons?: {
[key in ICON_KEY]?: string;
};
disableInsertAfterLastLockedBlock?: boolean;
defaultCellWidth?: number;
imageDefaultAlign?: TextAlign;
popover?: {
refuseOverflow?: boolean;
overflowBoundary?: Element;
};
findDialog?: {
popoverTarget?: HTMLElement;
getReferenceClientRect?: (popoverTarget: HTMLElement, dialog: HTMLElement) => DOMRect;
};
commentsOptions?: {
disableForReadonly?: boolean;
disableReply?: boolean;
disableQuickReply?: boolean;
disableEdit?: boolean;
pullThreshold?: number;
scrollContainerForMobile?: HTMLElement;
};
officeConverter?: {
convertList?: boolean;
convertFont?: boolean;
};
maxSize?: {
all?: number;
image?: number;
video?: number;
audio?: number;
office?: number;
};
unknownMediaToOffice?: boolean;
allowedMedias?: {
image?: string[];
video?: string[];
audio?: string[];
office?: string[];
};
zIndex?: {
popover?: number;
autoSuggest?: number;
popoverDialog?: number;
editableToolbar?: number;
menu?: number;
tooltip?: number;
};
cdn?: {
mathjax?: string;
prismCore?: string;
prismLoader?: string;
mermaid?: string;
flowchart?: string[];
pako?: string;
drawio?: string;
drawioIframe?: string;
chartjs?: string;
revealjs?: {
js: string[];
css: string[];
};
plantuml?: string;
};
xmind?: {
isBought: boolean;
isInstalled: boolean;
isExpired: boolean;
};
syncToHistoryOptions?: Record;
callbacks?: {
onLoad?: (editor: Editor, data: EditorDoc) => void;
onError?: (editor: Editor, error: Error) => void;
onSave?: (editor: Editor, data: EditorDoc) => void;
onChange?: (editor: Editor) => void;
onBuildUserAvatarUrl?: (editor: Editor, userId: string) => string;
onRemoteUserChanged?: (editor: Editor, users: OnlineUsers, change: OnlineUserChange) => void;
onStatusChanged?: (editor: Editor, isDirty: boolean) => void;
onReauth?: (userId: string, docId: string, permission: AuthPermission) => Promise;
onMentionCreateData?: (editor: Editor, item: AutoSuggestData) => BoxTemplateData | null;
onGetMentionItems?: (editor: Editor, keywords: string) => Promise;
onMentionInserted?: (editor: Editor, boxData: MentionBoxData, block: BlockElement, pos: number) => void;
onMentionClicked?: (editor: Editor, boxData: MentionBoxData, block: BlockElement) => void;
onCreateMentionPhoneOrEmail?: (editor: Editor, content: string) => Promise;
onMentionCreated?: (editor: Editor, boxData: MentionBoxData, box: BoxElement) => void;
onFileInserted?: (editor: Editor, boxData: FileBoxData, block: BlockElement, pos: number) => void;
onFileClicked?: (editor: Editor, boxData: FileBoxData, block: BlockElement, event: Event) => void;
onGetFileDownloadUrl?: (editor: Editor, boxData: FileBoxData) => Promise;
onGetTagItems?: (editor: Editor, keywords: string) => Promise;
onTagInserted?: (editor: Editor, tag: string, block: BlockElement, pos: number) => void;
onTagClicked?: (editor: Editor, tag: string) => void;
onGetWikiLinkItems?: (editor: Editor, keywords: string) => Promise;
onWikiLinkInserted?: (editor: Editor, data: WikiLinkBoxData, block: BlockElement, pos: number) => void;
onWikiLinkClicked?: (editor: Editor, data: WikiLinkBoxData, event: Event) => void;
onCreateWikiLinkId?: (editor: Editor, name: string) => Promise;
onGetWikiLinkName?: (editor: Editor, link: WikiLinkBoxData) => string | undefined;
onImageClicked?: (editor: Editor, block: BlockElement, src: string, allImageScr: {
src: string;
id: string;
}[], doubleClick: boolean, img: HTMLImageElement, event: MouseEvent, data: Record) => boolean | undefined;
onCommentInserted?: (editor: Editor, commentId: string, commentDocText: string, commentText: string, selectedBlock: SelectedBlock) => void;
onCommentReplied?: (editor: Editor, toUserId: string, orgCommentText: string, commentText: string) => void;
onRenderAutoSuggestItem?: (editor: Editor, suggestData: AutoSuggestData) => HTMLElement;
onGetBlockCommand?: (editor: Editor, block: BlockElement, detail: SelectionDetail, type: 'fixed' | 'hover' | 'menu', target: Node | null, editorMenuData: CommandItemData[]) => CommandItemData[];
onCommandStatusChanged?: (editor: Editor, status: CommandStatus) => void;
onCheckboxChanged?: (editor: Editor, text: string, blockData: BlockData, mentions: BoxData[], calendars: BoxData[]) => void;
onMarkerCreated?: (editor: Editor, text: string, blockData: BlockData) => void;
onQuickInput?: (editor: Editor, event: KeyboardEvent | null, block: BlockElement, text: string, offset: number) => boolean;
onUploadResource?: (editor: Editor, file: File, onProgress: OnProgress) => Promise;
onTitleChanged?: (editor: Editor, docId: string, title: string) => void;
onGetChartJsData?: (editor: Editor, data: string) => Promise;
onUpdateToc?: (editor: Editor, toc: EditorDocToc) => void;
onCustomMessage?: (editor: Editor, data: string) => void;
onBuildResourceUrl?: (editor: Editor, resourceName: string, fileName?: string) => string;
onBeforeUploadResource?: (editor: Editor, file: File) => Promise;
onCopyResourcesFromOtherServer?: (editor: Editor, apiServer: string, resourceName: string[], token: string) => Promise<{
[index: string]: string;
}>;
onGetListNumber?: (editor: Editor, level: number, start: number) => string;
onGetBlockToolbarOptions?(editor: Editor, block: BlockElement, detail: SelectionDetail, type: 'fixed' | 'hover'): CommandItemData[] | null;
onRecognizeLink?: (editor: Editor, text: string, block: BlockElement, options: {
offset: number;
count: number;
}) => Promise<{
text: string;
link: string;
processed?: boolean;
} | null>;
onRecognizeWebPageLink?: (editor: Editor, url: string) => Promise<{
type?: 'iframe' | 'video' | 'audio' | 'image';
providerName?: string;
url: string;
} | null>;
onBlockMouseEnter?: (editor: Editor, block: BlockElement, event: MouseEvent) => void;
onBlockMouseLeave?: (editor: Editor, block: BlockElement, event: MouseEvent) => void;
onBlockFocusChanged?: (editor: Editor, block: BlockElement, focused: boolean) => void;
onMediaUploadProgress?: (editor: Editor, block: BlockElement, percentage: number) => void;
onCreatePreviewUrl?: (editor: Editor, block: BlockElement, type: 'start' | 'end') => void;
onKeyDown?: (editor: Editor, event: KeyboardEvent) => boolean;
onBlur?: (editor: Editor, event: FocusEvent) => void;
onSelectionChanged?: (editor: Editor, detail: SelectionDetail, mouseDown: boolean) => void;
onTableSelectionChanged?: (editor: Editor, selection: any, rect: DOMRect | null) => void;
onReplaceAll?: (editor: Editor, count: number, from: string, to: string) => void;
onClickListNumber?: (editor: Editor, block: BlockElement, data: {
rect: DOMRect;
status: CommandStatus;
}) => void;
onRenderMediaPlayer?: (editor: Editor, parent: HTMLElement, data: EmbedData, type: 'audio' | 'video') => void;
onUpdateMediaSrc?: (editor: Editor, media: HTMLElement, src: string, data: MediaData) => void;
onAddMention?: (editor: Editor, block: BlockElement, detail: SelectionDetail) => void;
onSendComment?: (editor: Editor, comment: DocComment, data: DocBlock[]) => void;
onCancelComment?: (editor: Editor, comment?: DocComment, data?: DocBlock[]) => void;
onReplyComment?: (editor: Editor, comment: DocComment, data: DocBlock[]) => void;
onCreateReplyCommentMention?: (editor: Editor, replyUserId: string, displayName: string, avatarUrl: string) => BoxData;
onHoverImage?: (editor: Editor, block: BlockElement | null, image: HTMLImageElement | null) => void;
onSelectImage?: (editor: Editor, block: BlockElement | null, image: HTMLImageElement | null) => void;
onRevertVersion?: (editor: Editor, revertedBy: {
userId: string;
displayName: string;
}) => void;
onBlockMenuButtonClick?: (editor: Editor, block: BlockElement, event: MouseEvent) => void;
onUpdateLayout?: (editor: Editor, options: {
[index: string]: any;
}) => void;
onCopyToClipboard?: (editor: Editor, data: {
html: string;
text: string;
doc?: EditorDoc;
}) => {
html: string;
text: string;
} | null | undefined;
onFormatDate?: (editor: Editor, date: Date) => string;
onSelectFileUpload?: (editor: Editor, container: ContainerElement | null, index: number, embedType: EMBED_TYPE) => Promise;
onScrollIntoView?: (editor: Editor, scrollContainer: HTMLElement, dom: Element) => void;
onInputClicked?: (editor: Editor, inputBox: BoxData, event: Event) => void;
onImageError?: (editor: Editor, image: HTMLImageElement) => void;
onSaveImage?: (editor: Editor, image: HTMLImageElement) => void;
onBeforePaste?: (editor: Editor, event: ClipboardEvent) => boolean;
onBeforePasteInBlock?: (editor: Editor, block: BlockElement, options: {
doc?: EditorDoc;
text?: string;
html?: string;
fromEditor: boolean;
detail: SelectionDetail;
}) => Promise;
onBeforePasteDoc?: (editor: Editor, doc: EditorDoc) => Promise;
onAfterPaste?: (editor: Editor, event: ClipboardEvent) => void;
onCodeCopied?: (editor: Editor, code: string) => void;
onBeforeCutAction?: (editor: Editor, block: BlockElement) => boolean;
onBeforeCopyAction?: (editor: Editor, block: BlockElement) => boolean;
onDownloadImage?: (editor: Editor, src: string, origin: (src: string) => Promise) => Promise;
onInsertOfficeMenuClicked?: (editor: Editor, block: BlockElement, offset: number, source: 'BlockMenu' | 'QuickInsert') => void;
onEditOffice?: (editor: Editor, blockOrBox: BlockElement | BoxElement, data: MediaData, event: Event) => void;
onOpenOffice?: (editor: Editor, blockOrBox: BlockElement | BoxElement, data: MediaData, event: Event) => Promise;
onSaveOffice?: (editor: Editor, block: BlockElement, data: MediaData, event: Event) => void;
onPreviewOffice?: (editor: Editor, block: BlockElement, data: MediaData, type: 'open' | 'preview', event: Event) => Promise;
onGetPreviewInfo?: (editor: Editor, src: string, data: MediaData) => Promise;
onFileCardClicked?: (editor: Editor, src: string, data: MediaData) => boolean;
onRenderFileCardIcon?: (editor: Editor, mediaData: MediaData, iconContainer: HTMLElement) => Promise;
onExecutePaste?: (editor: Editor) => void;
onBeginInitDrawIo?: (editor: Editor, block: BlockElement) => void;
onEndInitDrawIo?: (editor: Editor, block: BlockElement) => void;
onCreateDrawIoFrame?: (editor: Editor) => Promise;
onCloseDrawIoFrame?: (editor: Editor, iframe: HTMLIFrameElement) => void;
onClickTocItem?: (editor: Editor, event: MouseEvent, block: BlockElement, a: HTMLAnchorElement) => void;
onClickLink?: (editor: Editor, event: MouseEvent, a: HTMLAnchorElement) => boolean;
onDocSnapshotClicked?: (editor: Editor, block: BlockElement, doc: EditorDoc, event: Event) => void;
onClickWebPageHelp?: (editor: Editor, type: string) => void;
onCreateTemplate?: (editor: Editor) => void;
onChooseTemplate?: (editor: Editor) => void;
onApplyTemplate?: (editor: Editor, template: DocTemplate) => Promise;
onTemplateChooserStatusChanged?: (editor: Editor, cardContainer: HTMLElement | null, status: 'visible' | 'hide') => void;
onQuickInsertClicked?: (editor: Editor, item: AutoSuggestData) => boolean;
onGetCurrentScale?: (editor: Editor) => number;
isSetScale?: (editor: Editor) => boolean;
onShowBlockMenu?: (editor: Editor, block: BlockElement, items: CommandItemData[]) => boolean | undefined;
onReadonlyChange?: (editor: Editor, readonly: boolean) => void;
onLoadBlocks?: (editor: Editor, container: ContainerElement, blocks: Array) => void;
onUpdateBlockText?: (editor: Editor, block: BlockElement, text: RichTextOperations) => void;
verifyUploadImage?: (image: File) => boolean;
};
}
export interface CaretPos {
containerId: string;
blockId: string;
offset: number;
attributes?: any;
}
export interface RemoteUserCaretPos extends CaretPos {
userId: string;
displayName: string;
avatarUrl: string;
lastUpdated: number;
color: string;
selectionColor: string;
caretType: 'start' | 'end';
}
export interface ContainerSelectedBlocks {
container: ContainerElement;
selectedBlocks: SelectedBlock[];
}
export declare enum EMBED_TYPE {
IMAGE = "image",
AUDIO = "audio",
VIDEO = "video",
DRAWIO = "drawio",
MERMAID = "mermaid",
FLOWCHART = "flowchart",
HR = "hr",
MATHJAX = "math",
OFFICE = "office",
WEBPAGE = "webpage",
CHARTJS = "chartjs",
TOC = "toc",
PLANTUML = "plantuml",
SNAPSHOT = "snapshot"
}
export declare type EMBED_MEDIA_TYPE = EMBED_TYPE.IMAGE | EMBED_TYPE.VIDEO | EMBED_TYPE.AUDIO | EMBED_TYPE.OFFICE;
export interface EmbedData {
[index: string]: unknown;
}
export interface EmbedBlockTemplateData extends BlockTemplateData {
embedType: EMBED_TYPE;
embedData: EmbedData;
}
export interface EmbedOptions {
menuItems: CommandItemData[];
editorHeight?: number;
}
export interface AdjustArrowResult {
block?: BlockElement;
offset?: number;
stop?: boolean;
moveToEnd?: boolean;
}
export interface Embed {
getEmbedOptions?: (editor: Editor) => EmbedOptions;
createElement(editor: Editor, embedContainer: BlockContentElement, data: EmbedData, blockData: BlockData): EmbedElement;
deleteElement?: (block: BlockElement, embed: EmbedElement) => void;
saveData(editor: Editor, embed: EmbedElement): EmbedData;
saveSelectionData?: (editor: Editor, embed: EmbedElement) => EmbedData;
clearSelection?: (editor: Editor, embed: EmbedElement) => boolean;
updateData(editor: Editor, embed: EmbedElement, data: EmbedData, blockData: BlockData): void;
getToolbarOptions?: (block: BlockElement) => CommandItemData[] | null;
notify?: (block: BlockElement, embed: EmbedElement, name: string, data: any) => void;
getAbstract?: (block: BlockElement, embed: EmbedElement) => string;
toMarkdown?: (doc: EditorDoc, containerId: string, blockIndex: number, blockData: DocBlock, embedData: EmbedData, options: Doc2MarkdownOptionalOptions) => string | undefined;
handleSelectChanged?: (block: BlockElement, detail: SelectionDetail) => void;
handleUnselectChanged?: (block: BlockElement, detail: SelectionDetail) => void;
handleEmbedClicked?: (block: BlockElement, embed: EmbedElement, event: MouseEvent) => boolean;
handleEmbedMouseDown?: (block: BlockElement, embed: EmbedElement, event: MouseEvent) => boolean;
handleEmbedMouseEnter?: (block: BlockElement, embed: EmbedElement, event: MouseEvent) => void;
handleEmbedMouseLeave?: (block: BlockElement, embed: EmbedElement, event: MouseEvent) => void;
handleEmbedInserted?: (block: BlockElement, embed: EmbedElement) => void;
removeComment?: (block: BlockElement, embed: EmbedElement, commentId: string) => void;
handleKeydownEvent?: (block: BlockElement, detail: SelectionDetail, event: KeyboardEvent) => boolean;
getContextMenuData?: (block: BlockElement, embed: EmbedElement, detail: SelectionDetail, target: Node) => CommandItemData[];
adjustArrowMove?: (editor: Editor, event: KeyboardEvent, detail: CaretDetail, block: BlockElement, blockOffset: number, direction: 'left' | 'right') => AdjustArrowResult | null;
toStandardDoc?: (editor: Editor, appId: string, docId: string, blockData: DocBlock) => Promise;
getBlockMenuOptions?: (editor: Editor, block: BlockElement) => Partial>;
handleSnapShotBlock?: (block: BlockElement) => HTMLElement | null;
}
export interface UndoState {
rememberCaretPos(): void;
lastCaretPos(): CaretPos;
reset(): void;
onUpdateBlockTextAction(container: ContainerElement, block: BlockElement, oldData: RichTextDocument): void;
onUpdateBlockDataAction(container: ContainerElement, block: BlockElement, oldData: BlockData): void;
onReplaceBlockAction(container: ContainerElement, blockId: string, oldData: BlockData, newData: BlockData): void;
onCreateBlockAction(container: ContainerElement, block: BlockElement, index: number, data: BlockData): void;
onDeleteBlockAction(container: ContainerElement, index: number): void;
beginGroup(): void;
endGroup(): void;
undo(): boolean;
redo(): boolean;
canUndo(): boolean;
canRedo(): boolean;
}
export declare const TextCommands: readonly ["style-bold", "style-italic", "style-underline", "style-strikethrough", "style-sub", "style-super", "style-code", "style-color-0", "style-color-1", "style-color-2", "style-color-3", "style-color-4", "style-color-5", "style-color-6", "style-bg-color-0", "style-bg-color-1", "style-bg-color-2", "style-bg-color-3", "style-bg-color-4", "style-bg-color-5", "style-bg-color-6", "style-bg-color-7", "style-bg-color-8", "style-bg-color-9", "style-bg-color-10", "style-bg-color-11", "style-bg-color-12", "style-bg-color-13", "link", "comment", "unlink", "inline-math", "insertComplexBlock", "selectAll", "clearFormat", "clearTextFormat", "clearColor", "clearBackground", "cut", "copy", "paste", "delete", "wiki-link", "tag"];
export declare const BlockCommands: readonly ["lock", "unlock", "toBodyText", "toHeading1", "toHeading2", "toHeading3", "toHeading4", "toHeading5", "toHeading6", "toHeading7", "toHeading8", "toQuoted", "toOrderedList", "toUnorderedList", "indent", "outdent", "toCheckbox", "list/indent", "list/outdent", "list/continueList", "list/restartList", "list/changeListStart", "list/remove", "cloneBlockAbove", "cloneBlockBelow", "moveBlockUp", "moveBlockDown", "alignLeft", "alignCenter", "alignRight", "alignJustify", "comment", "style", "padding", "table/mergeCells", "table/splitCell", "table/deleteSelectedRows", "table/deleteSelectedCols", "table/setCellBackground", "table/clearCellBackground", "table/insertRowAbove", "table/insertRowBelow", "table/insertColLeft", "table/insertColRight", "table/showBorder", "table/hideBorder", "table/delete", "webpage"];
export declare type TextCommand = typeof TextCommands[number];
export declare type BlockCommand = typeof BlockCommands[number];
export declare type CommandParams = {
[index: string]: any;
};
export interface CommentTextCommandParams {
commentId: string;
}
export declare type CommentData = DocComment;
export declare abstract class CommentsContainer {
abstract highlightCommentGroupById(id: string): void;
abstract isInCommentContainer(node: Node): boolean;
abstract showComments(comments: Array>): void;
abstract getComments(): any;
abstract getAllCommentTarget(commentId: string): Array;
abstract editComment(groupId: string, id: string): void;
abstract handleSelectImg(img: HTMLImageElement): void;
abstract reset(): void;
abstract rootElement(): HTMLElement;
abstract fixGroupsPosition(): void;
}
export interface DeleteBlockOptions {
fromUndo: boolean;
localAction: boolean;
withChildren?: boolean;
noFixEmptyContainer?: boolean;
}
export interface UpdateBlockData {
id: string;
[index: string]: any;
}
export interface ReplaceBlockOptions {
fromUndo: boolean;
focusToBlock: boolean;
}
export interface BreakTextBlockOptions {
breakText?: boolean;
}
export interface ActionOperatorOptions {
operator?: string;
}
export interface InsertBlockOptions extends BreakTextBlockOptions {
fromUndo: boolean;
focusToBlock: boolean;
localAction: boolean;
autoCorrectList?: boolean;
}
export interface UpdateBlockDataOptions {
fromUndo: boolean;
updateBlock: boolean;
partial: boolean;
}
export interface UpdateBlockTextOptions {
fromUndo: boolean;
updateBlock: boolean;
updateLocalOnly?: boolean;
}
export interface InsertBoxOptions {
deletePrefix?: boolean;
showAutoSuggest?: boolean;
disableAppendSpace?: boolean;
}
export interface SelectionState {
startCaret: CaretPos | null;
endCaret: CaretPos | null;
startOldData: BlockData | null;
endOldData: BlockData | null;
}
export interface CommandTargetInfo {
selectionState: SelectionState;
target: Node;
srcPopover: Popover;
}
export interface VersionDialogOptions {
hideActions?: boolean;
groupVersions?: boolean;
hideNonVersionedOps?: boolean;
hideOps?: boolean;
initSelectedVersion?: number | string;
useCreatedBy?: boolean;
syncFromEditorOptions?: Record;
onWillChangeVersion?: (mainEditor: Editor, version: DocVersion, isLatest: boolean, isOldest: boolean) => undefined | {
hideOps?: boolean;
};
onVersionChanged?: (mainEditor: Editor, versionEditor: Editor, version: DocVersion, isLatest: boolean, isOldest: boolean) => void;
onVersionsLoaded?: (mainEditor: Editor, versions: DocVersion[]) => void;
}
export interface VersionDialog {
hide: () => void;
setShowOps: (showOps: boolean) => void;
showVersion: (version: number | string) => void;
getCurrentVersion: () => DocVersion | null;
}
export interface HeadingBlockScrollListenerCallbackResult {
curHeadingBlock: BlockElement | null;
previousHeadingBlock: BlockElement | null;
nextHeadingBlock: BlockElement | null;
}
export interface Editor {
readonly undoState: UndoState;
readonly options: EditorOptions;
readonly commentsContainer: CommentsContainer;
readonly parentEditor: Editor | null;
readonly version: string;
readonly id: string;
readonly loaded: boolean;
readonly destroyed: boolean;
editorElement: HTMLElement;
autoSuggest: AutoSuggest;
tooltip: Tooltip | null;
rootElement: RootElement;
auth: AuthMessage;
textToolbar: TextToolbar;
editableToolbar: Hidable;
contextMenu: ContextMenu;
findDialog: FindDialog;
floatMenu: FloatMenu;
blockMenuButton?: BlockMenuButton;
themeMode: ThemeModeType;
lastEvent: MouseEvent | KeyboardEvent | null;
linkDialogShow: boolean;
mouseWheeled: boolean;
destroy(): void;
apiServer(): string;
editorServer(): string;
docId(): string;
data(): EditorDoc;
isDirty(): boolean;
isReadOnly(): boolean;
isLocal(): boolean;
isHistory(): boolean;
isMarkdownOnly(): boolean;
isCommentable(): boolean;
isWritable(): boolean;
isDragging(): boolean;
isMouseDown(): boolean;
isAllLoaded(): boolean;
setDragging(isDragging: boolean): void;
isChildEditor(): boolean;
mousePosition(): Position;
saveData(): void;
reload(): void;
setReadOnly(readonly: boolean): void;
isBlockWritable(block: BlockElement): boolean;
isBlockMarkerExpired(block: BlockElement): boolean;
setBlockMarkerExpired(block: BlockElement, status: boolean): void;
insertDoc(doc: EditorDoc, options?: {
block: BlockElement;
offset: number;
}): void;
insertMarkdown(markdown: string, options?: {
block: BlockElement;
offset: number;
}): void;
importDocx(file: File): Promise;
toHtml(): string;
selectionToDoc(options?: {
keepComments?: boolean;
}): EditorDoc;
selectionToHtml(): string;
toPlainText(options?: {
withoutTitle: boolean;
}): string;
toImage(width?: number, height?: number, download?: boolean): Promise;
print(): Promise;
toMarkdown(): string;
toDocx(template: Buffer | undefined, download?: boolean, backgroundImageOptions?: IImageOptions): Promise;
showVersions(container: HTMLElement | null, options?: VersionDialogOptions): VersionDialog;
showOps(ops: EditorOp[], options?: {
play: boolean;
speed?: number;
}): Promise;
getVersions(options?: {
groupVersions?: boolean;
}): Promise;
getVersion(ver: number): Promise;
getVersionOps(ver: number, from?: number): Promise<{
doc: EditorDoc;
ops: EditorOp[];
}>;
getChanges(): Element[];
highlightChanges(elem: Element, timeout: number): void;
getLatestVersion(): Promise;
createVersion(tag: string, publish: boolean): Promise;
revertVersion(ver: number): Promise;
meta(): {
[index: string]: any;
};
getOnlineUsers(): OnlineUsers;
updateTextToolbar(force: boolean): void;
fixSelection(options: {
autoScroll: boolean;
}): void;
loadLocalBlocks(blocks: DocBlock[]): void;
loadLocalData(data: EditorDoc): void;
getOnlineUserColor(userId: string, type: 'flag' | 'selection'): string;
getFixedUserColor(userId: string, type: 'flag' | 'selection'): string;
getUserAvatarUrl(avatarUrl: string, userId: string): string;
getAgentSelector(): AgentSelector;
getContainerById(id: string): ContainerElement | null;
getBlockById(id: string): BlockElement | null;
getBlockByIndex(container: ContainerElement, index: number): BlockElement;
getBlockContainer(block: BlockElement): ContainerElement;
getBlockIndex(block: BlockElement): number;
getBoxById(id: string): BoxElement | null;
getBoxData(id: string): BoxData;
replaceBoxToText(id: string, text: string): void;
updateBoxData(id: string, data: BoxTemplateData, updateLocalOnly?: boolean): void;
getWikiBoxDataByLinkId(linkId: string): WikiLinkBoxData | null;
getResourceBasePath(): string;
getResourceToken(): string | null;
resourceNameFromUrl(url: string): string;
buildResourceUrl(resourceName: string, fileName?: string, options?: {
withToken: boolean;
}): string;
getDocThumbImage(template: DocTemplate): string;
showFindDialog(): void;
showReplaceDialog(): void;
highlightText(text: string, options?: {
keepReplaceResult?: boolean;
}): void;
clearHighlight(options?: {
keepReplaceResult?: boolean;
}): void;
broadcastCaretPos(): void;
isPreviewEnabled(fileName: string): boolean;
getBlockData(block: BlockElement): BlockData;
getBlockDataFromDoc(block: BlockElement): BlockData;
getEmbedBlockEmbedData(block: BlockElement): EmbedData;
rootContainer(): ContainerElement;
isMainContainer(container: ContainerElement): boolean;
isInEditor(dom: Node): boolean;
createComment(commentGroupId: string | null, replyCommentId: string | null, doc: EditorDoc | null, abstract?: string): string;
updateCommentText(id: string, doc: EditorDoc): void;
deleteComment(id: string): void;
getCommentData(id: string): CommentData;
getGroupComments(groupId: string): CommentData[];
getComments(): CommentData[][];
refreshComments(options?: {
refreshNow: boolean;
}): void;
createChildContainer(parent: HTMLElement, id: string, blocks: any[]): ContainerElement;
createEmptyChildContainer(parent: HTMLElement, id: string): ContainerElement;
createEmptyChildContainerData(initBlocks?: BlockData[], id?: string): string;
createBlockData(type: BLOCK_TYPE, options?: any, id?: string): BlockData;
createEmbedBlockData(embedType: EMBED_TYPE, data: EmbedData, id?: string): BlockData;
getChildContainerData(containerId: string): DocBlock[];
updateBlockData(block: BlockElement, data: BlockTemplateData, options: UpdateBlockDataOptions): void;
updateBlockText(block: BlockElement, text: RichTextDocument, options: UpdateBlockTextOptions): void;
setBlockMarkerData(block: BlockElement, markerData: string, width: number, options: UpdateBlockDataOptions): void;
batchInsertBlocks(container: ContainerElement, insertPos: number, blocks: BlockData[]): BlockElement[];
canInsertBlockAt(container: ContainerElement, index: number): boolean;
insertBlock(container: ContainerElement | null, index: number, blockType: string, blockData: BlockData | null, options: InsertBlockOptions): BlockElement;
deleteBlock(block: BlockElement, options: DeleteBlockOptions): void;
replaceBlock(block: BlockElement, newBlockData: BlockData, options: ReplaceBlockOptions): BlockElement;
replaceContainerData(container: ContainerElement, blocks: DocBlock[]): void;
insertBox(type: BOX_TYPE, id: string | null, data: BoxTemplateData, options?: InsertBoxOptions): Promise;
insertEmptyBox(type: BOX_TYPE): Promise;
insertImageBox(src: string, width: number, height: number | null | 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;
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;
insertWikiLink(block: BlockElement | null, offset: number | undefined, id: string | null, data: WikiLinkBoxTemplateData): BoxData | null;
editBox(boxData: BoxData, block: BlockElement): void;
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): BlockElement;
insertMediaFile(container: ContainerElement | null, file: File, index: number, embedType: EMBED_MEDIA_TYPE, options?: BreakTextBlockOptions & ActionOperatorOptions, uploadedCallback?: (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 | string, index: number, options?: BreakTextBlockOptions): BlockElement;
insertWebpage(container: ContainerElement | null, url: string, index: number, customType?: string, options?: BreakTextBlockOptions): Promise;
insertMermaid(container: ContainerElement | null, index: number, text: string, options?: BreakTextBlockOptions): BlockElement;
insertDrawIO(container: ContainerElement | null, index: number, xml: string | null | undefined, options?: BreakTextBlockOptions): BlockElement;
insertHorizontalLine(container: ContainerElement | null, index: number, options?: BreakTextBlockOptions): BlockElement;
insertDocSnapshot(container: ContainerElement | null, doc: EditorDoc, index: number, options?: BreakTextBlockOptions): Promise;
insertChart(container: ContainerElement | null, index: number, srcOrData: string, options?: {
width?: number | string;
height?: number | string;
}): BlockElement;
insertTextBlock(container: ContainerElement | null, index: number, text: string | RichTextDocument, textBlockData?: any, options?: InsertBlockOptions): 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;
uploadResource(file: File, onProgress: OnProgress): Promise;
addResources(resources: string[]): Promise;
updateOffice(type: 'block' | 'box', id: string, file: File): Promise;
updateEmbedData(block: BlockElement, data: EmbedData, options?: UpdateBlockDataOptions): void;
deleteBlockText(block: BlockElement, from: number, to: number): void;
insertBlockText(block: BlockElement, pos: number, doc: RichTextDocument | string): void;
splitTextBlock(block: BlockElement, offset: number, options: {
keepFormat: boolean;
}): BlockElement;
closeAutoSuggest(): void;
getMediaBlockUrl(block: BlockElement): string;
getAllImages(): {
src: string;
id: string;
}[];
setFileDisplayType(fileBlockOrFileBox: BlockElement | BoxElement, type: FilePreviewType): void;
fullscreenPreviewFile(fileBlockOrFileBox: BlockElement | BoxElement): void;
setCommentsVisible(visible: boolean): void;
getLinkInfo(node: Node): {
text: string;
link: string;
};
setLinkInfo(node: Node, info: {
text?: string;
link?: string;
}): void;
formatDate(date: Date): string;
isHeadingBlockCollapsed(block: BlockElement): boolean;
expandHeadingBlock(block: BlockElement): void;
collapseHeadingBlock(block: BlockElement): void;
getBlockTocInfo(block: BlockElement): {
prevHeadingBlockId?: string;
nextHeadingBlockId?: string;
};
endComposition(): void;
isComposing(): boolean;
composingBlock(): BlockElement | null;
isLockedForComposition(): boolean;
isApplyingRemoteOpsForComposition(): boolean;
getWaitingCommand(): CommandParams | null;
addWaitingCommand(params: CommandParams): void;
clearWaitingCommand(): 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;
scrollToMiddleView(): void;
getSelectionDetail(): SelectionDetail;
getHoverBlock(): BlockElement | null;
getHoverImage(): HTMLImageElement | null;
getFocusedImage(): HTMLImageElement | null;
getEntireSelectedBlock(): BlockElement | null;
isSelectionWritable(detail: SelectionDetail): boolean;
getCaretPos(): CaretPos;
setCaretPos(pos: CaretPos): void;
getCurrentBlockIndex(): number;
getRemoteCaretPosesInBlock(blockId: string): RemoteUserCaretPos[];
getSelectedText(options?: {
visibleTextOnly?: boolean;
}): string;
getCommandStatus(): CommandStatus;
getBlockCommandStatus(block: BlockElement): CommandStatus;
getDetailCommandStatus(detail: SelectionDetail): CommandStatus;
getAllBlocks(options: {
deep: boolean;
}): BlockElement[];
getAllSelectedBlocks(options: {
deep: boolean;
}): BlockElement[];
getCurrentScale(): number;
isSetScale(): boolean;
saveSelectionState(): SelectionState;
restoreSelectionState(state: SelectionState): boolean;
saveCommandTarget(node: Node, popover: Popover): void;
executeBlockCommand(command: BlockCommand, block?: BlockElement, params?: CommandParams): any;
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;
cloneBlock(block: BlockElement, options: {
type: 'above' | 'below';
focusToNewBlock: boolean;
}): boolean;
moveBlock(block: BlockElement, options: {
type: 'up' | 'down';
}): boolean;
exclusiveBlock(block: BlockElement): void;
unexclusiveBlock(block: BlockElement): void;
isBlockExclusive(block: BlockElement): boolean;
isBlockQuoted(block: BlockElement): boolean;
setBlockQuoted(block: BlockElement, quoted: boolean): void;
addBlockInlineStyle(block: BlockElement, style: string): void;
getBlockInlineStyle(block: BlockElement): string | undefined;
isBlockLocked(block: BlockElement): boolean;
getBlockLockInfo(block: BlockElement): BlockLockInfo;
lockBlock(block: BlockElement): void;
unlockBlock(block: BlockElement): void;
setBlockLockPassword(block: BlockElement, password: string): void;
unlockBlockByPassword(block: BlockElement, password: string): void;
isBlockUnlockedByPassword(block: BlockElement): boolean;
indentBlock(block: BlockElement): void;
outdentBlock(block: BlockElement): void;
setBlockPadding(block: BlockElement, padding: number): void;
setBlockStyleState(block: BlockElement, style: string, enabled: boolean): void;
addBlockComment(block: BlockElement, text?: string): string;
addCommentToBlock(block: BlockElement, commentId: string, options?: {
noEditComment: boolean;
}): void;
commentImage(block: BlockElement, image: HTMLElement): string;
alignBlock(block: BlockElement, type?: TextAlign): void;
blinkBlock(block: BlockElement, delay: number): void;
isTitleBlock(block: BlockElement): boolean;
titleFromEditor(): string;
setTitle(title?: string): void;
handleCommentInserted(block: BlockElement, start: number, end: number, commentId: string): void;
createChildLocalEditor(elem: HTMLElement, permission: AuthPermission, options: EditorOptions, data?: EditorDoc): Editor;
showDialog(options: DialogOptions | StandardDialogOptions | StandardInputDialog | StandardConfirmDialog): Dialog;
focus(offset?: number): void;
fullscreen(): void;
addEventListener(eventType: EDITOR_EVENT, callback: (entries: readonly ResizeObserverEntry[]) => void): void;
removeEventListener(eventType: EDITOR_EVENT, callback: (entries: readonly ResizeObserverEntry[]) => void): void;
postCustomMessage(data: string): void;
request(options: string | any): Promise;
recognizeWebPageLink(url: string): Promise;
recognizeNormalLink(url: string, block: BlockElement, options: {
offset: number;
count: number;
}): Promise<{
text: string;
link: string;
} | null>;
setFocusMode(isFocusMode: boolean): void;
setTypewriterMode(isTypewriterMode: boolean): void;
setThemeMode(themeModeType?: ThemeModeType): void;
isFocusMode(): boolean;
isTypewriterMode(): boolean;
updateImageResizeTool(): void;
addTokenToResources(html: string): void;
adjustTextInputSize(): void;
animateScrollToBlock(block: BlockElement): void;
play(): void;
setBlockIconVisible(visible: boolean): void;
isInComment(element: Element): boolean;
setQuickInsertMenuTrigger(quickInsertMenuTrigger: QuickInsertMenuTrigger): void;
startHeadingBlockScrollListener(callback: (result: HeadingBlockScrollListenerCallbackResult) => void): void;
stopHeadingBlockScrollListener(): void;
signLinkDialog(show: boolean): void;
}
export interface Position {
x: number;
y: number;
}
export interface ClearSelectionOptions {
merge: boolean;
}
export interface ClipboardData {
text?: string;
doc?: EditorDoc;
html?: string;
pasteAsText?: boolean;
fromEditor?: boolean;
}
export interface Block {
getBlockOptions?: () => BlockOptions;
getBlockMenuItems?: (editor: Editor) => CommandItemData[];
getTextElement?: (block: BlockElement) => RichTextElement;
createBlockTemplateData: (editor: Editor, options: any) => BlockTemplateData;
createBlockContent: (editor: Editor, id: string, data: BlockData, blockElement: BlockElement) => BlockContentElement;
updateBlockData: (block: BlockElement, data: BlockData) => void;
updateBlockText?: (block: BlockElement, data: RichTextOperations) => void;
executeTextCommand?: (block: BlockElement, command: TextCommand, start: number, end: number, params?: CommandParams) => any;
executeBlockCommand?: (block: BlockElement, command: BlockCommand, params?: CommandParams) => any;
getBlockCommandStatus?: (block: BlockElement) => BasicCommandStatus;
getTextCommandStatus?: (block: BlockElement, offset: number, options: {
selectNext: boolean;
}) => TextAttributes;
saveData: (block: BlockElement) => BlockData;
saveSelectionData?: (block: BlockElement) => BlockData;
clearSelection?: (block: BlockElement) => boolean;
handleKeydownEvent?: (block: BlockElement, detail: SelectionDetail, event: KeyboardEvent) => boolean;
handlePaste?: (block: BlockElement, data: ClipboardData, detail: SelectionDetail) => boolean;
handleBlockTextChanged?: (block: BlockElement) => boolean;
handleBlockInserted?: (block: BlockElement, options: InsertBlockOptions) => void;
handleBlockLoaded?: (block: BlockElement) => void;
handleBlockDeleted?: (container: ContainerElement, index: number, blockData: BlockData, options: DeleteBlockOptions) => void;
handleBlockReload?: (container: ContainerElement, block: BlockElement) => void;
handleBlockClicked?: (block: BlockElement, event: MouseEvent) => boolean;
handleBlockMouseEnter?: (block: BlockElement, event: MouseEvent) => void;
handleBlockMouseLeave?: (block: BlockElement, event: MouseEvent) => void;
handleBlockMouseMove?: (block: BlockElement, event: MouseEvent) => boolean;
handleBlockMouseDown?: (block: BlockElement, event: MouseEvent) => boolean;
handleBlockFocusChanged?: (block: BlockElement, focused: boolean) => void;
handleChildBlockChanged?: (parent: BlockElement, child: BlockElement, type: 'text-change' | 'data-change' | 'insert' | 'delete') => void;
getChildContainersData?: (block: BlockElement) => ContainerData[];
getCaretPos: (block: BlockElement, node: Node, nodeOffset: number) => number;
createRange: (block: BlockElement, pos: number) => Range;
handleSelectionChanged?: (block: BlockElement, detail: SelectionDetail, lastEvent: MouseEvent | KeyboardEvent | null, lastPosition: Position) => boolean;
getSubContainerInComplexBlock?: (block: BlockElement, element: HTMLElement, type: 'top' | 'right' | 'bottom' | 'left') => ContainerElement | null;
getToolbarOptions?: (block: BlockElement, detail: SelectionDetail, type: 'fixed' | 'hover') => CommandItemData[] | null;
getTextToolbarOptions?: (block: BlockElement, target: Element) => CommandItemData[] | null;
getContextMenuData?: (block: BlockElement, detail: SelectionDetail, target: Node) => CommandItemData[];
notify?: (block: BlockElement, name: string, data: any) => void;
toText?: (block: BlockElement, startOffset?: number, endOffset?: number) => string;
toMarkdown?: (doc: EditorDoc, containerId: string, blockIndex: number, blockData: DocBlock, options: Doc2MarkdownOptionalOptions) => string | undefined;
replaceChildrenId?: (doc: EditorDoc, data: DocBlock) => void;
createSplittedBlockData?: (block: BlockElement) => BlockTemplateData;
accept?: (block: BlockElement, type: BOX_TYPE | BLOCK_TYPE) => boolean;
highlightText?: (block: BlockElement, text: string) => void;
toHtml?: (block: BlockElement) => string;
getAbstract?: (block: BlockElement) => string;
getContainerAlign?: (block: BlockElement, childBlock: BlockElement) => TextAlign | null;
removeComment?: (block: BlockElement, commentId: string) => void;
fixEmptyContainer?: (block: BlockElement, options: InsertBlockOptions) => boolean;
toStandardDoc?: (editor: Editor, appId: string, docId: string, blockData: DocBlock) => Promise;
}
export interface BoxChild {
type: 'text' | 'image' | 'a' | 'input' | 'br';
classes?: string[];
attributes?: {
[index: string]: string;
};
}
export interface BoxTextChild extends BoxChild {
text: string;
}
export interface BoxImageChild extends BoxChild {
src: string;
alt?: string;
}
export interface BoxAnchorChild extends BoxChild {
text: string;
href?: string;
id?: string;
download?: string;
}
export interface BoxInputChild extends BoxChild {
inputType: 'text' | 'select' | 'checkbox';
inputId: string;
value: string;
items?: InputBoxItem[];
checked?: boolean;
classes?: string[];
width?: number;
disabled?: boolean;
placeholder?: string;
inlineStyle?: string;
}
export interface BoxNode {
classes?: string[];
attributes?: {
[index: string]: string;
};
children?: BoxChild[];
}
export interface Box {
prefix?: string;
suggestPlaceholder?: string;
suggestPlaceholderNoMatch?: string;
customSuggest?: boolean;
customSuggestTheme?: string;
insertDefaultThenEdit?: boolean;
supportMarkdown?: boolean;
triggerMode?: 'normal' | 'any';
createNode: (editor: Editor, data: BoxData) => BoxNode;
available?: (editor: Editor) => boolean;
getItems?: (editor: Editor, keywords: string) => Promise;
createBoxDataFromItem?: (editor: Editor, item: AutoSuggestData) => BoxTemplateData;
createBoxData?: (editor: Editor) => Promise;
renderAutoSuggestItem?: (editor: Editor, suggestData: AutoSuggestData, options: AutoSuggestOptions) => HTMLElement;
renderAutoSuggestHeader?: (editor: Editor, suggestData: AutoSuggestData[], options: AutoSuggestOptions, renderOptions: {
loading: boolean;
}) => HTMLElement | null;
renderAutoSuggestFooter?: (editor: Editor, suggestData: AutoSuggestData[], options: AutoSuggestOptions, renderOptions: {
loading: boolean;
}) => HTMLElement | null;
renderAutoSuggestLoading?: (editor: Editor, keywords: string, existsContent: HTMLElement, autoSuggestData: AutoSuggestData[], options: AutoSuggestOptions) => HTMLElement | null;
enableAutoSuggestSelectItem?: boolean;
handleBoxInserted?: (editor: Editor, data: BoxData, block: BlockElement, pos: number) => void;
handleBoxClicked?: (editor: Editor, data: BoxData, block: BlockElement, event: Event) => void;
handleBoxItemSelected?: (editor: Editor, item: AutoSuggestData, options: AutoSuggestOptions) => void;
getToolbarOptions?: (editor: Editor, box: BoxElement) => CommandItemData[];
handleAutoSuggestHidden?: (editor: Editor, data?: BoxData) => void;
handleReturn?: (editor: Editor) => boolean;
isFullBox?: (editor: Editor, detail: SelectionDetail) => boolean;
updateBox?: (editor: Editor, box: BoxData, elem: BoxElement) => void;
autoSuggestMaxHeight?: number;
toStandardText?: (editor: Editor, boxData: BoxData) => Promise;
}
export declare function blockData2DocBlock(data: BlockData): DocBlock;
export declare function docData2BlockData(data: DocBlock): BlockData;
export declare function encodeResourceName(resourceName: string): string;
export declare function blockDataToDocBlock(data: BlockData): DocBlock;