| | let main_parent = document.getElementById("chat-tab").parentNode; |
| | let extensions = document.getElementById("extensions"); |
| |
|
| | main_parent.childNodes[0].classList.add("header_bar"); |
| | main_parent.style = "padding: 0; margin: 0"; |
| | main_parent.parentNode.style = "gap: 0"; |
| | main_parent.parentNode.parentNode.style = "padding: 0"; |
| |
|
| | document.querySelector(".header_bar").addEventListener("click", function(event) { |
| | if (event.target.tagName === "BUTTON") { |
| | const buttonText = event.target.textContent.trim(); |
| |
|
| | let chat_visible = (buttonText == "Chat"); |
| | let default_visible = (buttonText == "Default"); |
| | let notebook_visible = (buttonText == "Notebook"); |
| |
|
| | |
| | if (chat_visible || notebook_visible || default_visible) { |
| | extensions.style.display = "flex"; |
| | if (chat_visible) { |
| | extensions.style.maxWidth = "880px"; |
| | extensions.style.padding = "0px"; |
| | } else { |
| | extensions.style.maxWidth = "none"; |
| | extensions.style.padding = "15px"; |
| | } |
| | } else { |
| | extensions.style.display = "none"; |
| | } |
| | } |
| | }); |
| |
|
| | |
| | |
| | |
| | document.addEventListener("keydown", function(event) { |
| |
|
| | |
| | if (event.key === "Escape") { |
| | |
| | var stopButton = document.getElementById("stop"); |
| | if (stopButton) { |
| | stopButton.click(); |
| | } |
| | } |
| |
|
| | |
| | else if (event.ctrlKey && event.key == "s") { |
| | event.preventDefault(); |
| |
|
| | var showControlsElement = document.getElementById("show-controls"); |
| | if (showControlsElement && showControlsElement.childNodes.length >= 4) { |
| | showControlsElement.childNodes[3].click(); |
| |
|
| | var arr = document.getElementById("chat-input").childNodes[2].childNodes; |
| | arr[arr.length - 1].focus(); |
| | } |
| | } |
| |
|
| | |
| | else if (event.ctrlKey && event.key === "Enter") { |
| | event.preventDefault(); |
| | document.getElementById("Regenerate").click(); |
| | } |
| |
|
| | |
| | else if (event.altKey && event.key === "Enter") { |
| | event.preventDefault(); |
| | document.getElementById("Continue").click(); |
| | } |
| |
|
| | |
| | else if (event.ctrlKey && event.shiftKey && event.key === "Backspace") { |
| | event.preventDefault(); |
| | document.getElementById("Remove-last").click(); |
| | } |
| |
|
| | |
| | else if (event.ctrlKey && event.shiftKey && event.key === "K") { |
| | event.preventDefault(); |
| | document.getElementById("Copy-last").click(); |
| | } |
| |
|
| | |
| | else if (event.ctrlKey && event.shiftKey && event.key === "L") { |
| | event.preventDefault(); |
| | document.getElementById("Replace-last").click(); |
| | } |
| |
|
| | |
| | else if (event.ctrlKey && event.shiftKey && event.key === "M") { |
| | event.preventDefault(); |
| | document.getElementById("Impersonate").click(); |
| | } |
| |
|
| | }); |
| |
|
| | |
| | |
| | |
| | typing = document.getElementById("typing-container"); |
| | typingParent = typing.parentNode; |
| | typingSibling = typing.previousElementSibling; |
| | typingSibling.insertBefore(typing, typingSibling.childNodes[2]); |
| |
|
| | |
| | |
| | |
| | const targetElement = document.getElementById("chat").parentNode.parentNode.parentNode; |
| | targetElement.classList.add("pretty_scrollbar"); |
| | targetElement.classList.add("chat-parent"); |
| | let isScrolled = false; |
| |
|
| | targetElement.addEventListener("scroll", function() { |
| | let diff = targetElement.scrollHeight - targetElement.clientHeight; |
| | if(Math.abs(targetElement.scrollTop - diff) <= 10 || diff == 0) { |
| | isScrolled = false; |
| | } else { |
| | isScrolled = true; |
| | } |
| | }); |
| |
|
| | |
| | const observer = new MutationObserver(function(mutations) { |
| | mutations.forEach(function(mutation) { |
| | if(!isScrolled) { |
| | targetElement.scrollTop = targetElement.scrollHeight; |
| | } |
| |
|
| | const firstChild = targetElement.children[0]; |
| | if (firstChild.classList.contains("generating")) { |
| | typing.parentNode.classList.add("visible-dots"); |
| | document.getElementById("stop").style.display = "flex"; |
| | document.getElementById("Generate").style.display = "none"; |
| | } else { |
| | typing.parentNode.classList.remove("visible-dots"); |
| | document.getElementById("stop").style.display = "none"; |
| | document.getElementById("Generate").style.display = "flex"; |
| | } |
| |
|
| | }); |
| | }); |
| |
|
| | |
| | const config = { |
| | childList: true, |
| | subtree: true, |
| | characterData: true, |
| | attributeOldValue: true, |
| | characterDataOldValue: true |
| | }; |
| |
|
| | |
| | observer.observe(targetElement, config); |
| |
|
| | |
| | |
| | |
| | const notebookElement = document.querySelector("#textbox-notebook textarea"); |
| | let notebookScrolled = false; |
| |
|
| | notebookElement.addEventListener("scroll", function() { |
| | let diff = notebookElement.scrollHeight - notebookElement.clientHeight; |
| | if(Math.abs(notebookElement.scrollTop - diff) <= 10 || diff == 0) { |
| | notebookScrolled = false; |
| | } else { |
| | notebookScrolled = true; |
| | } |
| | }); |
| |
|
| | const notebookObserver = new MutationObserver(function(mutations) { |
| | mutations.forEach(function(mutation) { |
| | if(!notebookScrolled) { |
| | notebookElement.scrollTop = notebookElement.scrollHeight; |
| | } |
| | }); |
| | }); |
| |
|
| | notebookObserver.observe(notebookElement.parentNode.parentNode.parentNode, config); |
| |
|
| | |
| | |
| | |
| | const defaultElement = document.querySelector("#textbox-default textarea"); |
| | let defaultScrolled = false; |
| |
|
| | defaultElement.addEventListener("scroll", function() { |
| | let diff = defaultElement.scrollHeight - defaultElement.clientHeight; |
| | if(Math.abs(defaultElement.scrollTop - diff) <= 10 || diff == 0) { |
| | defaultScrolled = false; |
| | } else { |
| | defaultScrolled = true; |
| | } |
| | }); |
| |
|
| | const defaultObserver = new MutationObserver(function(mutations) { |
| | mutations.forEach(function(mutation) { |
| | if(!defaultScrolled) { |
| | defaultElement.scrollTop = defaultElement.scrollHeight; |
| | } |
| | }); |
| | }); |
| |
|
| | defaultObserver.observe(defaultElement.parentNode.parentNode.parentNode, config); |
| |
|
| | |
| | |
| | |
| | const textareaElements = document.querySelectorAll(".add_scrollbar textarea"); |
| | for(i = 0; i < textareaElements.length; i++) { |
| | textareaElements[i].classList.remove("scroll-hide"); |
| | textareaElements[i].classList.add("pretty_scrollbar"); |
| | textareaElements[i].style.resize = "none"; |
| | } |
| |
|
| | |
| | |
| | |
| | const noBackgroundelements = document.querySelectorAll(".no-background"); |
| | for(i = 0; i < noBackgroundelements.length; i++) { |
| | noBackgroundelements[i].parentNode.style.border = "none"; |
| | noBackgroundelements[i].parentNode.parentNode.parentNode.style.alignItems = "center"; |
| | } |
| |
|
| | const slimDropdownElements = document.querySelectorAll('.slim-dropdown'); |
| | for (i = 0; i < slimDropdownElements.length; i++) { |
| | const parentNode = slimDropdownElements[i].parentNode; |
| | parentNode.style.background = 'transparent'; |
| | parentNode.style.border = '0'; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | var buttonsInChat = document.querySelectorAll("#chat-tab:not(.old-ui) #chat-buttons button"); |
| | var button = document.getElementById("hover-element-button"); |
| | var menu = document.getElementById("hover-menu"); |
| |
|
| | function showMenu() { |
| | menu.style.display = "flex"; |
| | } |
| |
|
| | function hideMenu() { |
| | menu.style.display = "none"; |
| | document.querySelector("#chat-input textarea").focus(); |
| | } |
| |
|
| | if (buttonsInChat.length > 0) { |
| | for (let i = buttonsInChat.length - 1; i >= 0; i--) { |
| | const thisButton = buttonsInChat[i]; |
| | menu.appendChild(thisButton); |
| |
|
| | thisButton.addEventListener("click", () => { |
| | hideMenu(); |
| | }); |
| |
|
| | const buttonText = thisButton.textContent; |
| | const matches = buttonText.match(/(\(.*?\))/); |
| |
|
| | if (matches && matches.length > 1) { |
| | |
| | const substring = matches[1]; |
| | const newText = buttonText.replace(substring, ` <span class="transparent-substring">${substring.slice(1, -1)}</span>`); |
| | thisButton.innerHTML = newText; |
| | } |
| | } |
| | } else { |
| | buttonsInChat = document.querySelectorAll("#chat-tab.old-ui #chat-buttons button"); |
| | for (let i = 0; i < buttonsInChat.length; i++) { |
| | buttonsInChat[i].textContent = buttonsInChat[i].textContent.replace(/ \(.*?\)/, ""); |
| | } |
| | document.getElementById("gr-hover-container").style.display = "none"; |
| | } |
| |
|
| | function isMouseOverButtonOrMenu() { |
| | return menu.matches(":hover") || button.matches(":hover"); |
| | } |
| |
|
| | button.addEventListener("mouseenter", function () { |
| | showMenu(); |
| | }); |
| |
|
| | button.addEventListener("click", function () { |
| | showMenu(); |
| | }); |
| |
|
| | |
| | button.addEventListener("mouseleave", function () { |
| | |
| | setTimeout(function () { |
| | if (!isMouseOverButtonOrMenu()) { |
| | hideMenu(); |
| | } |
| | }, 100); |
| | }); |
| |
|
| | |
| | menu.addEventListener("mouseleave", function () { |
| | |
| | setTimeout(function () { |
| | if (!isMouseOverButtonOrMenu()) { |
| | hideMenu(); |
| | } |
| | }, 100); |
| | }); |
| |
|
| | |
| | document.addEventListener("click", function (event) { |
| | |
| | if (!isMouseOverButtonOrMenu() && menu.style.display === "flex") { |
| | hideMenu(); |
| | } |
| | }); |
| |
|
| | |
| | |
| | |
| | var elementToMove = document.getElementById("show-controls"); |
| | var parent = elementToMove.parentNode; |
| | for (var i = 0; i < 2; i++) { |
| | parent = parent.parentNode; |
| | } |
| |
|
| | parent.insertBefore(elementToMove, parent.firstChild); |
| |
|
| | |
| | |
| | |
| | document.getElementById("show-controls").parentNode.style.position = "absolute"; |
| | document.getElementById("show-controls").parentNode.style.bottom = "0px"; |
| |
|
| | |
| | |
| | |
| | document.querySelector("#chat-input textarea").focus(); |
| |
|