diff options
Diffstat (limited to 'app/assets/javascripts/content_editor/extensions/reference.js')
-rw-r--r-- | app/assets/javascripts/content_editor/extensions/reference.js | 41 |
1 files changed, 15 insertions, 26 deletions
diff --git a/app/assets/javascripts/content_editor/extensions/reference.js b/app/assets/javascripts/content_editor/extensions/reference.js index 5f4484af9c8..5e459e65de2 100644 --- a/app/assets/javascripts/content_editor/extensions/reference.js +++ b/app/assets/javascripts/content_editor/extensions/reference.js @@ -1,4 +1,10 @@ import { Node } from '@tiptap/core'; +import { PARSE_HTML_PRIORITY_HIGHEST } from '../constants'; + +const getAnchor = (element) => { + if (element.nodeName === 'A') return element; + return element.querySelector('a'); +}; export default Node.create({ name: 'reference', @@ -13,43 +19,23 @@ export default Node.create({ return { className: { default: null, - parseHTML: (element) => { - return { - className: element.className, - }; - }, + parseHTML: (element) => getAnchor(element).className, }, referenceType: { default: null, - parseHTML: (element) => { - return { - referenceType: element.dataset.referenceType, - }; - }, + parseHTML: (element) => getAnchor(element).dataset.referenceType, }, originalText: { default: null, - parseHTML: (element) => { - return { - originalText: element.dataset.original, - }; - }, + parseHTML: (element) => getAnchor(element).dataset.original, }, href: { default: null, - parseHTML: (element) => { - return { - href: element.getAttribute('href'), - }; - }, + parseHTML: (element) => getAnchor(element).getAttribute('href'), }, text: { default: null, - parseHTML: (element) => { - return { - text: element.textContent, - }; - }, + parseHTML: (element) => getAnchor(element).textContent, }, }; }, @@ -58,7 +44,10 @@ export default Node.create({ return [ { tag: 'a.gfm:not([data-link=true])', - priority: 51, + priority: PARSE_HTML_PRIORITY_HIGHEST, + }, + { + tag: 'span.gl-label', }, ]; }, |