import { Mark, markInputRule, markPasteRule } from '@tiptap/core' declare module '@tiptap/core/src/Editor' { interface Editor { code(): Editor, } } export const inputRegex = /(?:^|\s)((?:`)((?:[^`]+))(?:`))$/gm export const pasteRegex = /(?:^|\s)((?:`)((?:[^`]+))(?:`))/gm export default new Mark() .name('code') .schema(() => ({ excludes: '_', parseDOM: [ { tag: 'code' }, ], toDOM: () => ['code', 0], })) // .commands(({ editor, name }) => ({ // code: next => () => { // editor.toggleMark(name) // next() // }, // })) .keys(({ editor }) => ({ 'Mod-`': () => editor.code() })) .inputRules(({ type }) => [ markInputRule(inputRegex, type) ]) .pasteRules(({ type }) => [ markPasteRule(inputRegex, type) ]) .create()