document.addEventListener("DOMContentLoaded", () => { const resizeChat = () => { let chatBox = Array.from(document.querySelectorAll("solid-xmpp-chat")) .map((el) => el.shadowRoot ? el.shadowRoot.getElementById("conversejs") : false) .filter((el) => el) .pop(); if (chatBox) { let chatTextArea = chatBox.querySelector(".message-form-container"); let ischatTextArea = setInterval(() => { chatTextArea = chatBox.querySelector(".message-form-container"); if (chatTextArea) { clearInterval(ischatTextArea); if ( chatBox.getBoundingClientRect().height - chatTextArea.getBoundingClientRect().height != chatTextArea.offsetTop ) { let viewportChat = Array.from( document.querySelectorAll("#viewport .chat-view") ); let headerOffset = document.querySelector('#header').offsetHeight; let intermediateOffset = Array.from(document.querySelectorAll(".content-box__header")).filter(el=>el.offsetParent!==null?el:null)[0].offsetHeight; viewportChat.forEach( (c) => (c.style.height = "calc(100vh - "+String(headerOffset+intermediateOffset)+"px)") // Firefox keyboard 57px ); } } }, 15); } }; resizeChat(); let isbody = setInterval(() => { if (document.body) { clearInterval(isbody); resizeChat(); } }, 50); window.addEventListener("load", () => { setTimeout(() => { resizeChat(); }, 0); }); let windowResizing; window.addEventListener("resize", () => { windowResizing = setTimeout(() => { clearInterval(windowResizing); resizeChat(); }, 50); }); document.addEventListener("navigate", () => { setTimeout(() => { resizeChat(); }, 0); }); });