import { HTMLAttributes, TextareaHTMLAttributes } from 'react';
import { ReactEditor } from 'slate-react';
import { slate } from "./index";
declare global {
export module slateNodes {
interface Text {
text: string;
bold?: boolean;
code?: boolean;
italic?: boolean;
through?: boolean;
underline?: boolean;
sup?: boolean;
sub?: boolean;
}
}
}
export interface IEditor extends ReactEditor {
getHtml: () => string;
setHtml: (html: string) => void;
getText: () => string;
getSelectionText: () => string;
getParentNode: (node: slate.Node) => slate.Ancestor | null;
isEmpty: () => boolean;
clear: () => void;
focus: (isEnd?: boolean) => void;
blur: () => void;
destroy: () => void;
enable: () => void;
disable: () => void;
isDisabled: () => boolean;
toDOMNode: (node: slate.Node) => HTMLElement;
getNodeType(node: slate.Node): string;
checkNodeType(node: slate.Node, type: string): boolean;
getSelectedElems(editor: IEditor): slate.Element[];
getSelectedNodeByType(type: string): slate.Node | null;
getEditableContainer: () => globalThis.Element;
isSelectionAtLineEnd(editor: IEditor, path: slate.Path): boolean;
isEmptyParagraph: (slateElement: slate.Element) => boolean;
insetEmptyParagraph: () => void;
genEmptyParagraph: () => slate.Element;
move: (distance: number, reverse?: boolean) => void;
moveReverse: (distance: number) => void;
select: (at: slate.Location) => void;
deselect: () => void;
onKeyDown: (event: React.KeyboardEvent) => void;
undo?: () => void;
redo?: () => void;
}
export interface IEditorProps extends TextareaHTMLAttributes {
placeholder?: string;
readOnly?: boolean;
maxLength?: number;
define?: IDefine;
}
export interface IToolbarProps extends HTMLAttributes {
ignore?: string[];
define?: string[];
}
export interface IDefine {
tipsbar: Record;
leftbar: Record;
}