2019-03-02 22:35:43 +05:30
|
|
|
/* 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: {},
|
|
|
|
},
|
|
|
|
parseDOM: [
|
|
|
|
{
|
|
|
|
tag: 'gl-emoji',
|
2021-03-08 18:12:59 +05:30
|
|
|
getAttrs: (el) => ({
|
2019-03-02 22:35:43 +05:30
|
|
|
name: el.dataset.name,
|
|
|
|
title: el.getAttribute('title'),
|
|
|
|
moji: el.textContent,
|
|
|
|
}),
|
|
|
|
},
|
|
|
|
],
|
2021-03-08 18:12:59 +05:30
|
|
|
toDOM: (node) => [
|
2019-03-02 22:35:43 +05:30
|
|
|
'gl-emoji',
|
|
|
|
{ 'data-name': node.attrs.name, title: node.attrs.title },
|
|
|
|
node.attrs.moji,
|
|
|
|
],
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
toMarkdown(state, node) {
|
|
|
|
state.write(`:${node.attrs.name}:`);
|
|
|
|
}
|
|
|
|
}
|