import { Plugin, Transaction } from '@tiptap/pm/state'; import { ExtensionConfig } from '.'; import { Editor } from './Editor'; import { InputRule } from './InputRule'; import { Mark } from './Mark'; import { Node } from './Node'; import { PasteRule } from './PasteRule'; import { Extensions, GlobalAttributes, KeyboardShortcutCommand, ParentConfig, RawCommands } from './types'; declare module '@tiptap/core' { interface ExtensionConfig { [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; parent: ParentConfig>['addCommands']; }) => Partial; /** * Keyboard shortcuts */ addKeyboardShortcuts?: (this: { name: string; options: Options; storage: Storage; editor: Editor; parent: ParentConfig>['addKeyboardShortcuts']; }) => { [key: string]: KeyboardShortcutCommand; }; /** * Input rules */ addInputRules?: (this: { name: string; options: Options; storage: Storage; editor: Editor; parent: ParentConfig>['addInputRules']; }) => InputRule[]; /** * Paste rules */ addPasteRules?: (this: { name: string; options: Options; storage: Storage; editor: Editor; parent: ParentConfig>['addPasteRules']; }) => PasteRule[]; /** * ProseMirror plugins */ addProseMirrorPlugins?: (this: { name: string; options: Options; storage: Storage; editor: Editor; 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; parent: ParentConfig>['onBeforeCreate']; }) => void) | null; /** * The editor is ready. */ onCreate?: ((this: { name: string; options: Options; storage: Storage; editor: Editor; parent: ParentConfig>['onCreate']; }) => void) | null; /** * The content has changed. */ onUpdate?: ((this: { name: string; options: Options; storage: Storage; editor: Editor; parent: ParentConfig>['onUpdate']; }) => void) | null; /** * The selection has changed. */ onSelectionUpdate?: ((this: { name: string; options: Options; storage: Storage; editor: Editor; parent: ParentConfig>['onSelectionUpdate']; }) => void) | null; /** * The editor state has changed. */ onTransaction?: ((this: { name: string; options: Options; storage: Storage; editor: Editor; parent: ParentConfig>['onTransaction']; }, props: { transaction: Transaction; }) => void) | null; /** * The editor is focused. */ onFocus?: ((this: { name: string; options: Options; storage: Storage; editor: Editor; parent: ParentConfig>['onFocus']; }, props: { event: FocusEvent; }) => void) | null; /** * The editor isn’t focused anymore. */ onBlur?: ((this: { name: string; options: Options; storage: Storage; editor: Editor; parent: ParentConfig>['onBlur']; }, props: { event: FocusEvent; }) => void) | null; /** * The editor is destroyed. */ onDestroy?: ((this: { name: string; options: Options; storage: Storage; editor: Editor; parent: ParentConfig>['onDestroy']; }) => void) | null; } } export declare class Extension { type: string; name: string; parent: Extension | null; child: Extension | null; options: Options; storage: Storage; config: ExtensionConfig; constructor(config?: Partial>); static create(config?: Partial>): Extension; configure(options?: Partial): Extension; extend(extendedConfig?: Partial>): Extension; }