// Fake gradio components! // buttons function newChatClick() { gradioApp().querySelector('#empty-btn').click(); } function jsonDownloadClick() { gradioApp().querySelector('#gr-history-download-btn').click(); } function mdDownloadClick() { gradioApp().querySelector('#gr-markdown-export-btn').click(); gradioApp().querySelector('#gr-history-mardown-download-btn').click(); // downloadHistory(username, currentChatName, ".md"); } // index files function setUploader() { transUpload(); var uploaderObserver = new MutationObserver(function (mutations) { var fileInput = null; var fileCount = 0; fileInput = gradioApp().querySelector("#upload-index-file table.file-preview"); var fileCountSpan = gradioApp().querySelector("#uploaded-files-count"); if (fileInput) { chatbotArea.classList.add('with-file'); fileCount = fileInput.querySelectorAll('tbody > tr.file').length; fileCountSpan.innerText = fileCount; } else { chatbotArea.classList.remove('with-file'); fileCount = 0; transUpload(); } }); uploaderObserver.observe(uploaderIndicator, {attributes: true}) } var grUploader; var chatbotUploader; var handleClick = function() { grUploader.click(); }; function transUpload() { chatbotUploader = gradioApp().querySelector("#upload-files-btn"); chatbotUploader.removeEventListener('click', handleClick); grUploader = gradioApp().querySelector("#upload-index-file > .center.flex"); // let uploaderEvents = ["click", "drag", "dragend", "dragenter", "dragleave", "dragover", "dragstart", "drop"]; // transEventListeners(chatbotUploader, grUploader, uploaderEvents); chatbotUploader.addEventListener('click', handleClick); } // checkbox var grSingleSessionCB; var grOnlineSearchCB; var chatbotSingleSessionCB; var chatbotOnlineSearchCB; function setCheckboxes() { chatbotSingleSessionCB = gradioApp().querySelector('input[name="single-session-cb"]'); chatbotOnlineSearchCB = gradioApp().querySelector('input[name="online-search-cb"]'); grSingleSessionCB = gradioApp().querySelector("#gr-single-session-cb > label > input"); grOnlineSearchCB = gradioApp().querySelector("#gr-websearch-cb > label> input"); chatbotSingleSessionCB.addEventListener('change', (e) => { grSingleSessionCB.checked = chatbotSingleSessionCB.checked; gradioApp().querySelector('#change-single-session-btn').click(); }); chatbotOnlineSearchCB.addEventListener('change', (e) => { grOnlineSearchCB.checked = chatbotOnlineSearchCB.checked; gradioApp().querySelector('#change-online-search-btn').click(); }); grSingleSessionCB.addEventListener('change', (e) => { chatbotSingleSessionCB.checked = grSingleSessionCB.checked; }); grOnlineSearchCB.addEventListener('change', (e) => { chatbotOnlineSearchCB.checked = grOnlineSearchCB.checked; }); } function bgChangeSingleSession() { // const grSingleSessionCB = gradioApp().querySelector("#gr-single-session-cb > label > input"); let a = chatbotSingleSessionCB.checked; return [a]; } function bgChangeOnlineSearch() { // const grOnlineSearchCB = gradioApp().querySelector("#gr-websearch-cb > label> input"); let a = chatbotOnlineSearchCB.checked; return [a]; } // UTILS function transEventListeners(target, source, events) { events.forEach((sourceEvent) => { target.addEventListener(sourceEvent, function (targetEvent) { if(targetEvent.preventDefault) targetEvent.preventDefault(); if(targetEvent.stopPropagation) targetEvent.stopPropagation(); source.dispatchEvent(new Event(sourceEvent, {detail: targetEvent.detail})); // console.log(targetEvent.detail); }); }); /* 事实上,我发现这样写的大多数gradio组件并不适用。。所以。。。生气 */ } function bgSelectHistory(a,b){ const historySelectorInput = gradioApp().querySelector('#history-select-dropdown input'); let file = historySelectorInput.value; return [a,file] }