import React from 'react'; import { AutoformatRule } from '@udecode/plate-autoformat'; import { ELEMENT_BLOCKQUOTE } from '@udecode/plate-block-quote'; import { ELEMENT_CODE_BLOCK, ELEMENT_CODE_LINE } from '@udecode/plate-code-block'; import { TCommentText } from '@udecode/plate-comments'; import { CreatePlateEditorOptions, Decorate, DecorateEntry, DOMHandler, EDescendant, EElement, EElementEntry, EElementOrText, EMarks, ENode, ENodeEntry, EText, ETextEntry, InjectComponent, InjectProps, KeyboardHandler, NoInfer, OnChange, OverrideByKey, PlateEditor, PlateId, PlatePlugin, PlatePluginComponent, PlatePluginInsertData, PlatePluginProps, PlateProps, PluginOptions, SerializeHtml, TElement, TNodeEntry, TReactEditor, TText, WithOverride } from '@udecode/plate-common'; import { ELEMENT_H1, ELEMENT_H2, ELEMENT_H3, ELEMENT_H4, ELEMENT_H5, ELEMENT_H6 } from '@udecode/plate-heading'; import { ELEMENT_HR } from '@udecode/plate-horizontal-rule'; import { ELEMENT_LINK, TLinkElement } from '@udecode/plate-link'; import { ELEMENT_LI, ELEMENT_OL, ELEMENT_TODO_LI, ELEMENT_UL, TTodoListItemElement } from '@udecode/plate-list'; import { ELEMENT_IMAGE, ELEMENT_MEDIA_EMBED, TImageElement, TMediaEmbedElement } from '@udecode/plate-media'; import { ELEMENT_MENTION, ELEMENT_MENTION_INPUT, TMentionElement, TMentionInputElement } from '@udecode/plate-mention'; import { ELEMENT_PARAGRAPH } from '@udecode/plate-paragraph'; import { ELEMENT_TABLE, ELEMENT_TD, ELEMENT_TR, TTableElement } from '@udecode/plate-table'; /** * Text */ export type EmptyText = { text: ''; }; export type PlainText = { text: string; }; export interface RichText extends TText, TCommentText { bold?: boolean; italic?: boolean; underline?: boolean; strikethrough?: boolean; code?: boolean; kbd?: boolean; subscript?: boolean; backgroundColor?: React.CSSProperties['backgroundColor']; fontFamily?: React.CSSProperties['fontFamily']; color?: React.CSSProperties['color']; fontSize?: React.CSSProperties['fontSize']; fontWeight?: React.CSSProperties['fontWeight']; } /** * Inline Elements */ export interface MyLinkElement extends TLinkElement { type: typeof ELEMENT_LINK; children: RichText[]; } export interface MyMentionInputElement extends TMentionInputElement { type: typeof ELEMENT_MENTION_INPUT; children: [PlainText]; } export interface MyMentionElement extends TMentionElement { type: typeof ELEMENT_MENTION; children: [EmptyText]; } export type MyInlineElement = MyLinkElement | MyMentionElement | MyMentionInputElement; export type MyInlineDescendant = MyInlineElement | RichText; export type MyInlineChildren = MyInlineDescendant[]; /** * Block props */ export interface MyIndentProps { indent?: number; } export interface MyIndentListProps extends MyIndentProps { listStart?: number; listRestart?: number; listStyleType?: string; } export interface MyLineHeightProps { lineHeight?: React.CSSProperties['lineHeight']; } export interface MyAlignProps { align?: React.CSSProperties['textAlign']; } export interface MyBlockElement extends TElement, MyIndentListProps, MyLineHeightProps { id?: PlateId; } /** * Blocks */ export interface MyParagraphElement extends MyBlockElement { type: typeof ELEMENT_PARAGRAPH; children: MyInlineChildren; } export interface MyH1Element extends MyBlockElement { type: typeof ELEMENT_H1; children: MyInlineChildren; } export interface MyH2Element extends MyBlockElement { type: typeof ELEMENT_H2; children: MyInlineChildren; } export interface MyH3Element extends MyBlockElement { type: typeof ELEMENT_H3; children: MyInlineChildren; } export interface MyH4Element extends MyBlockElement { type: typeof ELEMENT_H4; children: MyInlineChildren; } export interface MyH5Element extends MyBlockElement { type: typeof ELEMENT_H5; children: MyInlineChildren; } export interface MyH6Element extends MyBlockElement { type: typeof ELEMENT_H6; children: MyInlineChildren; } export interface MyBlockquoteElement extends MyBlockElement { type: typeof ELEMENT_BLOCKQUOTE; children: MyInlineChildren; } export interface MyCodeBlockElement extends MyBlockElement { type: typeof ELEMENT_CODE_BLOCK; children: MyCodeLineElement[]; } export interface MyCodeLineElement extends TElement { type: typeof ELEMENT_CODE_LINE; children: PlainText[]; } export interface MyTableElement extends TTableElement, MyBlockElement { type: typeof ELEMENT_TABLE; children: MyTableRowElement[]; } export interface MyTableRowElement extends TElement { type: typeof ELEMENT_TR; children: MyTableCellElement[]; } export interface MyTableCellElement extends TElement { type: typeof ELEMENT_TD; children: MyNestableBlock[]; } export interface MyBulletedListElement extends TElement, MyBlockElement { type: typeof ELEMENT_UL; children: MyListItemElement[]; } export interface MyNumberedListElement extends TElement, MyBlockElement { type: typeof ELEMENT_OL; children: MyListItemElement[]; } export interface MyListItemElement extends TElement, MyBlockElement { type: typeof ELEMENT_LI; children: MyInlineChildren; } export interface MyTodoListElement extends TTodoListItemElement, MyBlockElement { type: typeof ELEMENT_TODO_LI; children: MyInlineChildren; } export interface MyImageElement extends TImageElement, MyBlockElement { type: typeof ELEMENT_IMAGE; children: [EmptyText]; } export interface MyMediaEmbedElement extends TMediaEmbedElement, MyBlockElement { type: typeof ELEMENT_MEDIA_EMBED; children: [EmptyText]; } export interface MyHrElement extends MyBlockElement { type: typeof ELEMENT_HR; children: [EmptyText]; } export type MyNestableBlock = MyParagraphElement; export type MyBlock = Exclude; export type MyBlockEntry = TNodeEntry; export type MyRootBlock = MyParagraphElement | MyH1Element | MyH2Element | MyH3Element | MyH4Element | MyH5Element | MyH6Element | MyBlockquoteElement | MyCodeBlockElement | MyTableElement | MyBulletedListElement | MyNumberedListElement | MyTodoListElement | MyImageElement | MyMediaEmbedElement | MyHrElement; export type MyValue = MyRootBlock[]; /** * Editor types */ export type MyEditor = PlateEditor & { isDragging?: boolean; }; export type MyReactEditor = TReactEditor; export type MyNode = ENode; export type MyNodeEntry = ENodeEntry; export type MyElement = EElement; export type MyElementEntry = EElementEntry; export type MyText = EText; export type MyTextEntry = ETextEntry; export type MyElementOrText = EElementOrText; export type MyDescendant = EDescendant; export type MyMarks = EMarks; export type MyMark = keyof MyMarks; /** * Plate types */ export type MyDecorate

= Decorate; export type MyDecorateEntry = DecorateEntry; export type MyDOMHandler

= DOMHandler; export type MyInjectComponent = InjectComponent; export type MyInjectProps = InjectProps; export type MyKeyboardHandler

= KeyboardHandler; export type MyOnChange

= OnChange; export type MyOverrideByKey = OverrideByKey; export type MyPlatePlugin

= PlatePlugin; export type MyPlatePluginInsertData = PlatePluginInsertData; export type MyPlatePluginProps = PlatePluginProps; export type MyPlateProps = PlateProps; export type MySerializeHtml = SerializeHtml; export type MyWithOverride

= WithOverride; /** * Plate store, Slate context */ export declare const getMyEditor: (editor: MyEditor) => import("@udecode/plate-common").Modify>[]; isInline: (element: MyInlineElement | MyCodeLineElement | MyTableRowElement | MyTableCellElement | MyListItemElement | MyRootBlock) => boolean; isVoid: (element: MyInlineElement | MyCodeLineElement | MyTableRowElement | MyTableCellElement | MyListItemElement | MyRootBlock) => boolean; normalizeNode: (entry: TNodeEntry>) => void; apply: (operation: import("@udecode/plate-common").TOperation>) => void; getFragment: () => EElementOrText[]; insertFragment: (fragment: EElementOrText[]) => void; insertNode: (node: EElementOrText | EElementOrText[]) => void; }>; export declare const useMyEditorRef: () => MyEditor; export declare const useMyEditorState: () => MyEditor; export declare const useMyPlateEditorRef: (id?: PlateId) => MyEditor; export declare const useMyPlateEditorState: (id?: PlateId) => MyEditor; export declare const useMyPlateSelectors: (id?: PlateId) => import("@udecode/plate-common").GetRecord>; export declare const useMyPlateActions: (id?: PlateId) => import("@udecode/plate-common").SetRecord>; export declare const useMyPlateStates: (id?: PlateId) => import("@udecode/plate-common").UseRecord>; /** * Utils */ export declare const createMyEditor: () => MyEditor; export declare const createMyPlateEditor: (options?: CreatePlateEditorOptions) => any; export declare const createMyPluginFactory:

(defaultPlugin: PlatePlugin, MyValue, MyEditor>) => = PlateEditor>(override?: Partial, OV, OE>> | undefined, overrideByKey?: OverrideByKey | undefined) => PlatePlugin, OV, OE>; export declare const createMyPlugins: (plugins: MyPlatePlugin[], options?: { components?: Record; overrideByKey?: MyOverrideByKey; }) => PlatePlugin[]; export type MyAutoformatRule = AutoformatRule;