Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | 63x 1452x 68x 9x 1x | import { mergeAttributes, Node } from '@tiptap/core'; import { VueNodeViewRenderer } from '@tiptap/vue-2'; import FootnoteDefinitionWrapper from '../components/wrappers/footnote_definition.vue'; import { PARSE_HTML_PRIORITY_HIGHEST } from '../constants'; const extractFootnoteIdentifier = (idAttribute) => /^fn-(\w+)-\d+$/.exec(idAttribute)?.[1]; export default Node.create({ name: 'footnoteDefinition', content: 'paragraph', group: 'block', isolating: true, addAttributes() { return { identifier: { default: null, parseHTML: (element) => extractFootnoteIdentifier(element.getAttribute('id')), }, label: { default: null, parseHTML: (element) => extractFootnoteIdentifier(element.getAttribute('id')), }, }; }, parseHTML() { return [ { tag: 'section.footnotes li' }, { tag: '.footnote-backref', priority: PARSE_HTML_PRIORITY_HIGHEST, ignore: true }, ]; }, renderHTML({ label, ...HTMLAttributes }) { return ['div', mergeAttributes(HTMLAttributes), 0]; }, addNodeView() { return new VueNodeViewRenderer(FootnoteDefinitionWrapper); }, }); |