24 lines
851 B
JavaScript
Executable file
24 lines
851 B
JavaScript
Executable file
// Highlights messages that @mention you. "@john" matches anyone whose name starts with "john".
|
|
(function () {
|
|
var box = document.getElementById('chat');
|
|
var nameInput = box && box.querySelector('[name="chat_name"]');
|
|
if (!nameInput) return;
|
|
|
|
function mark() {
|
|
var m = nameInput.value.match(/[\p{L}\p{N}_]+/u);
|
|
var key = m ? m[0].toLowerCase() : '';
|
|
box.querySelectorAll('.chat-msg').forEach(function (msg) {
|
|
var hit = false;
|
|
if (key) {
|
|
msg.querySelectorAll('.chat-mention').forEach(function (el) {
|
|
if (el.dataset.mention.toLowerCase() === key) hit = true;
|
|
});
|
|
}
|
|
['bg-warning-subtle', 'rounded', 'px-1'].forEach(function (c) { msg.classList.toggle(c, hit); });
|
|
});
|
|
}
|
|
|
|
box.addEventListener('chat:updated', mark);
|
|
nameInput.addEventListener('input', mark);
|
|
mark();
|
|
})();
|