diff options
Diffstat (limited to 'app/assets/javascripts/behaviors/markdown/marks/math.js')
-rw-r--r-- | app/assets/javascripts/behaviors/markdown/marks/math.js | 61 |
1 files changed, 25 insertions, 36 deletions
diff --git a/app/assets/javascripts/behaviors/markdown/marks/math.js b/app/assets/javascripts/behaviors/markdown/marks/math.js index ca25ff7d07d..a50a649b6eb 100644 --- a/app/assets/javascripts/behaviors/markdown/marks/math.js +++ b/app/assets/javascripts/behaviors/markdown/marks/math.js @@ -1,42 +1,31 @@ -/* eslint-disable class-methods-use-this */ - -import { Mark } from 'tiptap'; import { defaultMarkdownSerializer } from '~/lib/prosemirror_markdown_serializer'; import { HIGHER_PARSE_RULE_PRIORITY } from '../constants'; // Transforms generated HTML back to GFM for Banzai::Filter::MathFilter -export default class MathMark extends Mark { - get name() { - return 'math'; - } - - get schema() { - return { - parseDOM: [ - // Matches HTML generated by Banzai::Filter::MathFilter - { - tag: 'code.code.math[data-math-style=inline]', - priority: HIGHER_PARSE_RULE_PRIORITY, - }, - // Matches HTML after being transformed by app/assets/javascripts/behaviors/markdown/render_math.js - { - tag: 'span.katex', - contentElement: 'annotation[encoding="application/x-tex"]', - }, - ], - toDOM: () => ['code', { class: 'code math', 'data-math-style': 'inline' }, 0], - }; - } - - get toMarkdown() { - return { - escape: false, - open(state, mark, parent, index) { - return `$${defaultMarkdownSerializer.marks.code.open(state, mark, parent, index)}`; +export default () => ({ + name: 'math', + schema: { + parseDOM: [ + // Matches HTML generated by Banzai::Filter::MathFilter + { + tag: 'code.code.math[data-math-style=inline]', + priority: HIGHER_PARSE_RULE_PRIORITY, }, - close(state, mark, parent, index) { - return `${defaultMarkdownSerializer.marks.code.close(state, mark, parent, index)}$`; + // Matches HTML after being transformed by app/assets/javascripts/behaviors/markdown/render_math.js + { + tag: 'span.katex', + contentElement: 'annotation[encoding="application/x-tex"]', }, - }; - } -} + ], + toDOM: () => ['code', { class: 'code math', 'data-math-style': 'inline' }, 0], + }, + toMarkdown: { + escape: false, + open(state, mark, parent, index) { + return `$${defaultMarkdownSerializer.marks.code.open(state, mark, parent, index)}`; + }, + close(state, mark, parent, index) { + return `${defaultMarkdownSerializer.marks.code.close(state, mark, parent, index)}$`; + }, + }, +}); |