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