import { Command, Node, mergeAttributes } from '@tiptap/core' export interface ParagraphOptions { HTMLAttributes: { [key: string]: any }, } declare module '@tiptap/core' { interface AllCommands { paragraph: { /** * Toggle a paragraph */ setParagraph: () => Command, } } } export const Paragraph = Node.create({ name: 'paragraph', defaultOptions: { HTMLAttributes: {}, }, group: 'block', content: 'inline*', parseHTML() { return [ { tag: 'p' }, ] }, renderHTML({ HTMLAttributes }) { return ['p', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0] }, addCommands() { return { setParagraph: () => ({ commands }) => { return commands.toggleNode('paragraph', 'paragraph') }, } }, addKeyboardShortcuts() { return { 'Mod-Alt-0': () => this.editor.commands.setParagraph(), } }, })