UNPKG

@tiptap/extension-paragraph

Version:

paragraph extension for tiptap

67 lines (55 loc) 1.23 kB
import { mergeAttributes, Node } from '@tiptap/core' export interface ParagraphOptions { /** * The HTML attributes for a paragraph node. * @default {} * @example { class: 'foo' } */ HTMLAttributes: Record<string, any>, } declare module '@tiptap/core' { interface Commands<ReturnType> { paragraph: { /** * Toggle a paragraph * @example editor.commands.toggleParagraph() */ setParagraph: () => ReturnType, } } } /** * This extension allows you to create paragraphs. * @see https://www.tiptap.dev/api/nodes/paragraph */ export const Paragraph = Node.create<ParagraphOptions>({ name: 'paragraph', priority: 1000, addOptions() { return { 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.setNode(this.name) }, } }, addKeyboardShortcuts() { return { 'Mod-Alt-0': () => this.editor.commands.setParagraph(), } }, })