Telegram Web K with changes to work inside I2P
https://web.telegram.i2p/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.3 KiB
51 lines
1.3 KiB
import type ChatInput from "./input"; |
|
import { appendEmoji, getEmojiFromElement } from "../emoticonsDropdown/tabs/emoji"; |
|
import { ScrollableX } from "../scrollable"; |
|
import AutocompleteHelper from "./autocompleteHelper"; |
|
|
|
export default class EmojiHelper extends AutocompleteHelper { |
|
private scrollable: ScrollableX; |
|
|
|
constructor(appendTo: HTMLElement, private chatInput: ChatInput) { |
|
super(appendTo, 'x', (target) => { |
|
this.chatInput.onEmojiSelected(getEmojiFromElement(target as any), true); |
|
}); |
|
|
|
this.container.classList.add('emoji-helper'); |
|
} |
|
|
|
private init() { |
|
this.list = document.createElement('div'); |
|
this.list.classList.add('emoji-helper-emojis', 'super-emojis'); |
|
|
|
this.container.append(this.list); |
|
|
|
this.scrollable = new ScrollableX(this.container); |
|
|
|
this.addEventListener('visible', () => { |
|
setTimeout(() => { // it is not rendered yet |
|
this.scrollable.container.scrollLeft = 0; |
|
}, 0); |
|
}); |
|
} |
|
|
|
public renderEmojis(emojis: string[]) { |
|
if(this.init) { |
|
if(!emojis.length) { |
|
return; |
|
} |
|
|
|
this.init(); |
|
this.init = null; |
|
} |
|
|
|
if(emojis.length) { |
|
this.list.innerHTML = ''; |
|
emojis.forEach(emoji => { |
|
appendEmoji(emoji, this.list, false, true); |
|
}); |
|
} |
|
|
|
this.toggle(!emojis.length); |
|
} |
|
}
|
|
|