Advertisement
Haytham_Shalabi

Vue taptip Mark

Jul 13th, 2020
840
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { Mark } from 'tiptap';
  2. import { toggleMark, markInputRule, markPasteRule } from 'tiptap-commands';
  3.  
  4. export default class MarkNode extends Mark {
  5.   get name() {
  6.     return 'mark';
  7.   }
  8.  
  9.   get schema() {
  10.     return {
  11.       attrs: {
  12.         id: {
  13.           default: null
  14.         },
  15.         class: {
  16.           default: null
  17.         }
  18.       },
  19.       selectable: false,
  20.       parseDOM: [
  21.         {
  22.           tag: 'mark',
  23.           getAttrs: function(dom) {
  24.             return {
  25.               id: dom.getAttribute('id'),
  26.               class: dom.getAttribute('class')
  27.             };
  28.           }
  29.         }
  30.       ],
  31.       toDOM: function(node) {
  32.         return [
  33.           'mark',
  34.           {
  35.             id: node.attrs.id,
  36.             class: node.attrs.class
  37.           }
  38.         ];
  39.       }
  40.     };
  41.   }
  42.  
  43.   keys({ type }) {
  44.     return {
  45.       'Mod-mark': toggleMark(type)
  46.     };
  47.   }
  48.  
  49.   commands({ type }) {
  50.     return () => toggleMark(type);
  51.   }
  52.  
  53.   inputRules({ type }) {
  54.     return [markInputRule(/(?:\*\*|__)([^*_]+)(?:\*\*|__)$/, type)];
  55.   }
  56.  
  57.   pasteRules({ type }) {
  58.     return [markPasteRule(/(?:\*\*|__)([^*_]+)(?:\*\*|__)/g, type)];
  59.   }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement