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; }