Skip to content
This repository was archived by the owner on Mar 6, 2020. It is now read-only.

Commit ab99295

Browse files
author
René Kooi
committed
emoji-data: add core plugin for emoji info in dom
1 parent d761f5b commit ab99295

2 files changed

Lines changed: 43 additions & 0 deletions

File tree

src/ExtPlug.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ define(function (require, exports, module) {
1616
const ChatTypePlugin = require('./plugins/ChatTypePlugin');
1717
const MoreChatEventsPlugin = require('./plugins/MoreChatEventsPlugin');
1818
const UserClassesPlugin = require('./plugins/UserClassesPlugin');
19+
const EmojiDataPlugin = require('./plugins/EmojiDataPlugin');
1920
const TooltipsPlugin = require('./plugins/TooltipsPlugin');
2021
const GuestPlugin = require('./plugins/GuestPlugin');
2122

@@ -86,6 +87,7 @@ define(function (require, exports, module) {
8687
new MoreChatEventsPlugin('more-chat-events', this),
8788
new ChatTypePlugin('custom-chat-type', this),
8889
new UserClassesPlugin('user-classes', this),
90+
new EmojiDataPlugin('emoji-data', this),
8991
new TooltipsPlugin('tooltips', this)
9092
];
9193

src/plugins/EmojiDataPlugin.js

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
define(function (require, exports, module) {
2+
3+
const Plugin = require('../Plugin')
4+
const Events = require('plug/core/Events')
5+
const emoji = require('plug/util/emoji')
6+
const { around } = require('meld')
7+
8+
const EmojiDataPlugin = Plugin.extend({
9+
name: 'Emoji Data',
10+
description: 'Adds CSS classes and HTML5 data attributes to emoji images.',
11+
12+
enable() {
13+
this.advice = around(emoji, 'replacement', joinpoint => {
14+
let name = joinpoint.args[2]
15+
let html = joinpoint.proceed()
16+
return html.replace(
17+
' class="emoji-inner',
18+
` data-emoji-name="${name}" class="emoji-inner extplug-emoji-${name}`
19+
)
20+
})
21+
22+
this.listenTo(Events, 'chat:afterreceive', (msg, el) => {
23+
el.find('.gemoji-plug').each(function () {
24+
let inner = $(this)
25+
let emojiName = inner.attr('class').match(/gemoji-plug-(\S+)/)
26+
if (emojiName) {
27+
inner.attr('data-emoji-name', emojiName[1])
28+
.addClass(`extplug-emoji-${name}`)
29+
}
30+
})
31+
})
32+
},
33+
34+
disable() {
35+
this.advice.remove()
36+
}
37+
})
38+
39+
module.exports = EmojiDataPlugin
40+
41+
})

0 commit comments

Comments
 (0)