const { observeDom, ui: { injectCss, Button, openModal, ModalRoot, ModalHeader, ModalBody, ModalFooter, ModalSizes, Text, TextBox, ReactiveRoot, TextArea, }, plugin: { store }, util: { getFiber }, } = shelter; let popupButton = null; let unobserve = null; const getMessageHistory = () => { const messageElements = document.querySelectorAll('div[class^="message-"]'); const messages = [...messageElements].map((message) => ({ username: message.querySelector("h3 > span > span")?.textContent, message: message.querySelector("div > div > div").textContent, })); return messages.reduce((acc, message) => { if (message.username) { acc.push(message); } else { acc[acc.length - 1].message += `\n${message.message}`; } return acc; }, []); }; const loadingIndicator = () => ( ); // Credits to yellowsink for this messagebar stuff // https://github.com/yellowsink const appendTextToMessagebar = (text) => { const elem = document.querySelector('[class*="slateContainer"]'); const fiber = getFiber(elem); const editor = fiber.child.pendingProps.editor; editor.insertText(text); }; export function onLoad() { injectCss(` .label-spacing { margin-bottom: .125rem; } .mb-2 { margin-bottom: .5rem; } .pr-2 { padding-right: .5rem; }`); const openGenerationModal = async () => { let model = store.model || ""; let prompt = ""; closeModal = openModal(() => ( closeModal()}>Generate Response
Model
{ model = e; }} />
Prompt