import { DOMOutputSpec, Mark as ProseMirrorMark, MarkSpec, MarkType } from '@tiptap/pm/model'; import { Plugin, Transaction } from '@tiptap/pm/state'; import { MarkConfig } from '.'; import { Editor } from './Editor'; import { InputRule } from './InputRule'; import { Node } from './Node'; import { PasteRule } from './PasteRule'; import { Attributes, Extensions, GlobalAttributes, KeyboardShortcutCommand, ParentConfig, RawCommands } from './types'; declare module '@tiptap/core' { interface MarkConfig { [key: string]: any; /** * Name */ name: string; /** * Priority */ priority?: number; /** * Default options */ defaultOptions?: Options; /** * Default Options */ addOptions?: (this: { name: string; parent: Exclude>['addOptions'], undefined>; }) => Options; /** * Default Storage */ addStorage?: (this: { name: string; options: Options; parent: Exclude>['addStorage'], undefined>; }) => Storage; /** * Global attributes */ addGlobalAttributes?: (this: { name: string; options: Options; storage: Storage; parent: ParentConfig>['addGlobalAttributes']; }) => GlobalAttributes | {}; /** * Raw */ addCommands?: (this: { name: string; options: Options; storage: Storage; editor: Editor; type: MarkType; parent: ParentConfig>['addCommands']; }) => Partial; /** * Keyboard shortcuts */ addKeyboardShortcuts?: (this: { name: string; options: Options; storage: Storage; editor: Editor; type: MarkType; parent: ParentConfig>['addKeyboardShortcuts']; }) => { [key: string]: KeyboardShortcutCommand; }; /** * Input rules */ addInputRules?: (this: { name: string; options: Options; storage: Storage; editor: Editor; type: MarkType; parent: ParentConfig>['addInputRules']; }) => InputRule[]; /** * Paste rules */ addPasteRules?: (this: { name: string; options: Options; storage: Storage; editor: Editor; type: MarkType; parent: ParentConfig>['addPasteRules']; }) => PasteRule[]; /** * ProseMirror plugins */ addProseMirrorPlugins?: (this: { name: string; options: Options; storage: Storage; editor: Editor; type: MarkType; parent: ParentConfig>['addProseMirrorPlugins']; }) => Plugin[]; /** * Extensions */ addExtensions?: (this: { name: string; options: Options; storage: Storage; parent: ParentConfig>['addExtensions']; }) => Extensions; /** * Extend Node Schema */ extendNodeSchema?: ((this: { name: string; options: Options; storage: Storage; parent: ParentConfig>['extendNodeSchema']; }, extension: Node) => Record) | null; /** * Extend Mark Schema */ extendMarkSchema?: ((this: { name: string; options: Options; storage: Storage; parent: ParentConfig>['extendMarkSchema']; }, extension: Mark) => Record) | null; /** * The editor is not ready yet. */ onBeforeCreate?: ((this: { name: string; options: Options; storage: Storage; editor: Editor; type: MarkType; parent: ParentConfig>['onBeforeCreate']; }) => void) | null; /** * The editor is ready. */ onCreate?: ((this: { name: string; options: Options; storage: Storage; editor: Editor; type: MarkType; parent: ParentConfig>['onCreate']; }) => void) | null; /** * The content has changed. */ onUpdate?: ((this: { name: string; options: Options; storage: Storage; editor: Editor; type: MarkType; parent: ParentConfig>['onUpdate']; }) => void) | null; /** * The selection has changed. */ onSelectionUpdate?: ((this: { name: string; options: Options; storage: Storage; editor: Editor; type: MarkType; parent: ParentConfig>['onSelectionUpdate']; }) => void) | null; /** * The editor state has changed. */ onTransaction?: ((this: { name: string; options: Options; storage: Storage; editor: Editor; type: MarkType; parent: ParentConfig>['onTransaction']; }, props: { transaction: Transaction; }) => void) | null; /** * The editor is focused. */ onFocus?: ((this: { name: string; options: Options; storage: Storage; editor: Editor; type: MarkType; parent: ParentConfig>['onFocus']; }, props: { event: FocusEvent; }) => void) | null; /** * The editor isn’t focused anymore. */ onBlur?: ((this: { name: string; options: Options; storage: Storage; editor: Editor; type: MarkType; parent: ParentConfig>['onBlur']; }, props: { event: FocusEvent; }) => void) | null; /** * The editor is destroyed. */ onDestroy?: ((this: { name: string; options: Options; storage: Storage; editor: Editor; type: MarkType; parent: ParentConfig>['onDestroy']; }) => void) | null; /** * Keep mark after split node */ keepOnSplit?: boolean | (() => boolean); /** * Inclusive */ inclusive?: MarkSpec['inclusive'] | ((this: { name: string; options: Options; storage: Storage; parent: ParentConfig>['inclusive']; editor?: Editor; }) => MarkSpec['inclusive']); /** * Excludes */ excludes?: MarkSpec['excludes'] | ((this: { name: string; options: Options; storage: Storage; parent: ParentConfig>['excludes']; editor?: Editor; }) => MarkSpec['excludes']); /** * Marks this Mark as exitable */ exitable?: boolean | (() => boolean); /** * Group */ group?: MarkSpec['group'] | ((this: { name: string; options: Options; storage: Storage; parent: ParentConfig>['group']; editor?: Editor; }) => MarkSpec['group']); /** * Spanning */ spanning?: MarkSpec['spanning'] | ((this: { name: string; options: Options; storage: Storage; parent: ParentConfig>['spanning']; editor?: Editor; }) => MarkSpec['spanning']); /** * Code */ code?: boolean | ((this: { name: string; options: Options; storage: Storage; parent: ParentConfig>['code']; editor?: Editor; }) => boolean); /** * Parse HTML */ parseHTML?: (this: { name: string; options: Options; storage: Storage; parent: ParentConfig>['parseHTML']; editor?: Editor; }) => MarkSpec['parseDOM']; /** * Render HTML */ renderHTML?: ((this: { name: string; options: Options; storage: Storage; parent: ParentConfig>['renderHTML']; editor?: Editor; }, props: { mark: ProseMirrorMark; HTMLAttributes: Record; }) => DOMOutputSpec) | null; /** * Attributes */ addAttributes?: (this: { name: string; options: Options; storage: Storage; parent: ParentConfig>['addAttributes']; editor?: Editor; }) => Attributes | {}; } } export declare class Mark { type: string; name: string; parent: Mark | null; child: Mark | null; options: Options; storage: Storage; config: MarkConfig; constructor(config?: Partial>); static create(config?: Partial>): Mark; configure(options?: Partial): Mark; extend(extendedConfig?: Partial>): Mark; static handleExit({ editor, mark }: { editor: Editor; mark: Mark; }): boolean; }