import { Mark } from 'tiptap' import { updateMark, markInputRule, markPasteRule } from 'tiptap-commands' export default class TextColor extends Mark { get name() { return 'textcolor' } get schema() { return { attrs: { color: { default: 'black' } }, parseDOM: [ { tag: 'span', getAttrs: dom => { return { color: dom.style.color } } } ], toDOM: (node) => { return ['span', { style: `color:${node.attrs.color}` }, 0] } } } keys({ type }) { return { 'Mod-c': updateMark(type), } } commands({ type }) { return attrs => updateMark(type, attrs); } inputRules({ type }) { return [ markInputRule(/(?:\*\*|__)([^*_]+)(?:\*\*|__)$/, type), ] } pasteRules({ type }) { return [ markPasteRule(/(?:\*\*|__)([^*_]+)(?:\*\*|__)/g, type), ] } }