import { Node } from '@tiptap/core' import { chainCommands, exitCode } from 'prosemirror-commands' declare module '@tiptap/core/src/Editor' { interface Editor { hardBreak(): Editor, } } export default new Node() .name('hardBreak') .schema(() => ({ inline: true, group: 'inline', selectable: false, parseDOM: [ { tag: 'br' }, ], toDOM: () => ['br'], })) // .commands(({ editor, type }) => ({ // hardBreak: next => () => { // const { state, view } = editor // const { dispatch } = view // chainCommands(exitCode, () => { // dispatch(state.tr.replaceSelectionWith(type.create()).scrollIntoView()) // return true // })(state, dispatch, view) // next() // }, // })) .keys(({ editor }) => ({ 'Mod-Enter': () => editor.hardBreak(), 'Shift-Enter': () => editor.hardBreak(), })) .create()