import { EmptyText, KEYS, PlainText, TBasicMarks, TCaptionProps, TComboboxInputElement, TCommentText, TElement, TFontMarks, TImageElement, TLineHeightProps, TLinkElement, TListProps, TMediaEmbedElement, TMentionElement, TResizableProps, TTableElement, TText, TTextAlignProps } from 'platejs'; export interface MyBlockElement extends TElement, TListProps { id?: string; } export interface MyTextBlockElement extends TElement, TLineHeightProps, TTextAlignProps { children: (MyLinkElement | MyMentionElement | MyMentionInputElement | RichText)[]; } export interface MyBlockquoteElement extends MyTextBlockElement { type: typeof KEYS.blockquote; } export interface MyCodeBlockElement extends MyBlockElement { children: MyCodeLineElement[]; type: typeof KEYS.codeBlock; } export interface MyCodeLineElement extends TElement { children: PlainText[]; type: typeof KEYS.codeLine; } export interface MyH1Element extends MyTextBlockElement { type: typeof KEYS.h1; } export interface MyH2Element extends MyTextBlockElement { type: typeof KEYS.h2; } /** 块属性 */ export interface MyH3Element extends MyTextBlockElement { type: typeof KEYS.h3; } export interface MyH4Element extends MyTextBlockElement { type: typeof KEYS.h4; } export interface MyH5Element extends MyTextBlockElement { type: typeof KEYS.h5; } export interface MyH6Element extends MyTextBlockElement { type: typeof KEYS.h6; } export interface MyHrElement extends MyBlockElement { children: [EmptyText]; type: typeof KEYS.hr; } export interface MyImageElement extends MyBlockElement, TCaptionProps, TImageElement, TResizableProps { children: [EmptyText]; type: typeof KEYS.img; } export interface MyLinkElement extends TLinkElement { children: RichText[]; type: typeof KEYS.link; } export interface MyMediaEmbedElement extends MyBlockElement, TCaptionProps, TMediaEmbedElement, TResizableProps { children: [EmptyText]; type: typeof KEYS.mediaEmbed; } export interface MyMentionElement extends TMentionElement { children: [EmptyText]; type: typeof KEYS.mention; } export interface MyMentionInputElement extends TComboboxInputElement { children: [PlainText]; type: typeof KEYS.mentionInput; } export type MyNestableBlock = MyParagraphElement; export interface MyParagraphElement extends MyTextBlockElement { type: typeof KEYS.p; } export interface MyTableCellElement extends TElement { children: MyNestableBlock[]; type: typeof KEYS.td; } export interface MyTableElement extends MyBlockElement, TTableElement { children: MyTableRowElement[]; type: typeof KEYS.table; } export interface MyTableRowElement extends TElement { children: MyTableCellElement[]; type: typeof KEYS.tr; } export interface MyToggleElement extends MyTextBlockElement { type: typeof KEYS.toggle; } export interface RichText extends TBasicMarks, TCommentText, TFontMarks, TText { kbd?: boolean; } export type MyValue = (MyBlockquoteElement | MyCodeBlockElement | MyH1Element | MyH2Element | MyH3Element | MyH4Element | MyH5Element | MyH6Element | MyHrElement | MyImageElement | MyMediaEmbedElement | MyParagraphElement | MyTableElement | MyToggleElement)[];