client_ui_chat_func_bar.js
/**
* `ChatFuncBar` 类型代表客户端聊天窗口输入框上方工具栏。
*/
class ChatFuncBar {
/**
* 向聊天窗口输入框上方工具栏左侧添加一个按钮。
*
* @param { String } icon 按钮图标。
* @param { Function } onClick 点击事件。
*/
static addLeftButton(icon, onClick) {
const observer = new MutationObserver(mutations => {
mutations.forEach(mutation => {
if (mutation.type === 'childList') {
const nodes = Array.from(mutation.addedNodes);
nodes.forEach(async node => {
if (node.nodeType === Node.ELEMENT_NODE && node.classList.contains('chat-func-bar')) {
const chatFuncBarLeft = node.firstElementChild;
chatFuncBarLeft.insertAdjacentHTML('beforeend', await (await fetch(`local:///${ LiteLoader.plugins['euphony'].path.plugin }/src/assets/html/chat_func_bar_button.html`)).text());
const button = chatFuncBarLeft.lastElementChild;
const buttonIcon = button.firstElementChild;
buttonIcon.innerHTML = icon;
button.addEventListener('click', onClick);
}
});
}
});
});
observer.observe(document.body, { childList: true, subtree: true });
}
/**
* 向聊天窗口输入框上方工具栏右侧添加一个按钮。
*
* @param { String } icon 按钮图标。
* @param { Function } onClick 点击事件。
*/
static addRightButton(icon, onClick) {
const observer = new MutationObserver(mutations => {
mutations.forEach(mutation => {
if (mutation.type === 'childList') {
const nodes = Array.from(mutation.addedNodes);
nodes.forEach(async node => {
if (node.nodeType === Node.ELEMENT_NODE && node.classList.contains('chat-func-bar')) {
const chatFuncBarRight = node.lastElementChild;
console.log(chatFuncBarRight)
chatFuncBarRight.insertAdjacentHTML('beforeend', await (await fetch(`local:///${ LiteLoader.plugins['euphony'].path.plugin }/src/assets/html/chat_func_bar_button.html`)).text());
const button = chatFuncBarRight.lastElementChild;
const buttonIcon = button.firstElementChild;
buttonIcon.innerHTML = icon;
button.addEventListener('click', onClick);
}
});
}
});
});
observer.observe(document.body, { childList: true, subtree: true });
}
}
export default ChatFuncBar