diff options
Diffstat (limited to 'app/assets/javascripts/behaviors/markdown/nodes/emoji.js')
-rw-r--r-- | app/assets/javascripts/behaviors/markdown/nodes/emoji.js | 84 |
1 files changed, 37 insertions, 47 deletions
diff --git a/app/assets/javascripts/behaviors/markdown/nodes/emoji.js b/app/assets/javascripts/behaviors/markdown/nodes/emoji.js index 9d0890aa1b4..086c277bad4 100644 --- a/app/assets/javascripts/behaviors/markdown/nodes/emoji.js +++ b/app/assets/javascripts/behaviors/markdown/nodes/emoji.js @@ -1,53 +1,43 @@ -/* eslint-disable class-methods-use-this */ - -import { Node } from 'tiptap'; - // Transforms generated HTML back to GFM for Banzai::Filter::EmojiFilter -export default class Emoji extends Node { - get name() { - return 'emoji'; - } - - get schema() { - return { - inline: true, - group: 'inline', - attrs: { - name: {}, - title: {}, - moji: {}, +export default () => ({ + name: 'emoji', + schema: { + inline: true, + group: 'inline', + attrs: { + name: {}, + title: {}, + moji: {}, + }, + parseDOM: [ + { + tag: 'gl-emoji', + getAttrs: (el) => ({ + name: el.dataset.name, + title: el.getAttribute('title'), + moji: el.textContent, + }), }, - parseDOM: [ - { - tag: 'gl-emoji', - getAttrs: (el) => ({ - name: el.dataset.name, - title: el.getAttribute('title'), - moji: el.textContent, - }), - }, - { - tag: 'img.emoji', - getAttrs: (el) => { - const name = el.getAttribute('title').replace(/^:|:$/g, ''); + { + tag: 'img.emoji', + getAttrs: (el) => { + const name = el.getAttribute('title').replace(/^:|:$/g, ''); - return { - name, - title: name, - moji: name, - }; - }, + return { + name, + title: name, + moji: name, + }; }, - ], - toDOM: (node) => [ - 'gl-emoji', - { 'data-name': node.attrs.name, title: node.attrs.title }, - node.attrs.moji, - ], - }; - } - + }, + ], + toDOM: (node) => [ + 'gl-emoji', + { 'data-name': node.attrs.name, title: node.attrs.title }, + node.attrs.moji, + ], + }, toMarkdown(state, node) { state.write(`:${node.attrs.name}:`); - } -} + }, +}); |