forked from webaverse/app
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmessages.js
58 lines (49 loc) · 1.43 KB
/
messages.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
throw new Error('lol');
import * as THREE from 'three';
import {appManager, scene, camera, dolly} from './renderer.js';
const maxMessages = 8;
const chatMessagesEl = document.getElementById('chat-messages');
class Messages extends EventTarget {
constructor({maxMessages}) {
super();
this.maxMessages = maxMessages;
}
addMessage(username, text, {/*timeout = 10000, */update = true} = {}) {
const message = document.createElement('div');
message.classList.add('message');
message.innerHTML = `\
<div class=name></div>
<div class=text></div>
`;
const nameEl = message.querySelector('.name');
nameEl.innerText = `${username}: `;
const textEl = message.querySelector('.text');
textEl.innerText = text;
chatMessagesEl.appendChild(message);
while (chatMessagesEl.childNodes.length > this.maxMessages) {
chatMessagesEl.removeChild(chatMessagesEl.childNodes[0]);
}
/* message.destroy = () => {
clearTimeout(localTimeout);
};
const localTimeout = setTimeout(() => {
message.parentNode.removeChild(message);
}, timeout); */
if (update) {
this.dispatchEvent(new MessageEvent('messageadd', {
data: {
username,
text,
},
}));
}
}
removeMessage(message) {
message.parentNode.removeChild(message);
// message.destroy();
}
}
const messages = new Messages({
maxMessages,
});
export default messages;