function openSettingBox() { chuanhuPopup.classList.add('showBox'); popupWrapper.classList.add('showBox'); settingBox.classList.remove('hideBox'); trainingBox.classList.add('hideBox'); showMask("box"); } function openTrainingBox() { chuanhuPopup.classList.add('showBox'); popupWrapper.classList.add('showBox'); trainingBox.classList.remove('hideBox'); settingBox.classList.add('hideBox'); showMask("box"); } function openChatMore() { chatbotArea.classList.add('show-chat-more'); showMask("chat-more"); } function closeChatMore() { chatbotArea.classList.remove('show-chat-more'); chatbotArea.querySelector('.chuanhu-mask')?.remove(); } function showMask(obj) { const mask = document.createElement('div'); mask.classList.add('chuanhu-mask'); if (obj == "box") { mask.classList.add('mask-blur'); document.body.classList.add('popup-open'); popupWrapper.appendChild(mask); } else if (obj == "chat-more") { mask.classList.add('transparent-mask'); chatbotArea.querySelector('#chatbot-input-more-area').parentNode.appendChild(mask); } else if (obj == "update-toast") { mask.classList.add('chuanhu-top-mask'); if (document.querySelector('.chuanhu-top-mask')) { for (var i = 0; i < document.querySelectorAll('.chuanhu-top-mask').length; i++) { document.querySelectorAll('.chuanhu-top-mask')[i].remove(); } } document.body.appendChild(mask); // mask.classList.add('transparent-mask'); } mask.addEventListener('click', () => { if (obj == "box") { closeBox(); } else if (obj == "chat-more") { closeChatMore(); } else if (obj == "update-toast") { closeUpdateToast(); } }); } function chatMoreBtnClick() { if (chatbotArea.classList.contains('show-chat-more')) { closeChatMore(); } else { openChatMore(); } } function closeBtnClick(obj) { if (obj == "box") { closeBox(); } else if (obj == "toolbox") { closeSide(toolbox); wantOpenToolbox = false; } } function closeBox() { chuanhuPopup.classList.remove('showBox'); popupWrapper.classList.remove('showBox'); trainingBox.classList.add('hideBox'); settingBox.classList.add('hideBox'); document.querySelector('.chuanhu-mask')?.remove(); document.body.classList.remove('popup-open'); } function closeSide(sideArea) { document.body.classList.remove('popup-open'); sideArea.classList.remove('showSide'); if (sideArea == toolbox) { chuanhuHeader.classList.remove('under-box'); chatbotArea.classList.remove('toolbox-open') toolboxOpening = false; } else if (sideArea == menu) { chatbotArea.classList.remove('menu-open') menuOpening = false; } adjustMask(); } function openSide(sideArea) { sideArea.classList.add('showSide'); if (sideArea == toolbox) { chuanhuHeader.classList.add('under-box'); chatbotArea.classList.add('toolbox-open') toolboxOpening = true; } else if (sideArea == menu) { chatbotArea.classList.add('menu-open') menuOpening = true; } // document.body.classList.add('popup-open'); } function menuClick() { shouldAutoClose = false; if (menuOpening) { closeSide(menu); wantOpenMenu = false; } else { if (windowWidth < 1024 && toolboxOpening) { closeSide(toolbox); wantOpenToolbox = false; } openSide(menu); wantOpenMenu = true; } adjustSide(); } function toolboxClick() { shouldAutoClose = false; if (toolboxOpening) { closeSide(toolbox); wantOpenToolbox = false; } else { if (windowWidth < 1024 && menuOpening) { closeSide(menu); wantOpenMenu = false; } openSide(toolbox); wantOpenToolbox = true; } adjustSide(); } var menuOpening = false; var toolboxOpening = false; var shouldAutoClose = true; var wantOpenMenu = windowWidth > 768; var wantOpenToolbox = windowWidth >= 1024; function adjustSide() { if (windowWidth >= 1024) { shouldAutoClose = true; if (wantOpenMenu) { openSide(menu); if (wantOpenToolbox) openSide(toolbox); } else if (wantOpenToolbox) { openSide(toolbox); } else { closeSide(menu); closeSide(toolbox); } } else if (windowWidth > 768 && windowWidth < 1024 ) { shouldAutoClose = true; if (wantOpenToolbox) { if (wantOpenMenu) { closeSide(toolbox); openSide(menu); } else { closeSide(menu); openSide(toolbox); } } else if (wantOpenMenu) { if (wantOpenToolbox) { closeSide(menu); openSide(toolbox); } else { closeSide(toolbox); openSide(menu); } } else if (!wantOpenMenu && !wantOpenToolbox){ closeSide(menu); closeSide(toolbox); } } else { // windowWidth <= 768 if (shouldAutoClose) { closeSide(menu); // closeSide(toolbox); } } checkChatbotWidth(); adjustMask(); } function adjustMask() { var sideMask = null; if (!gradioApp().querySelector('.chuanhu-side-mask')) { sideMask = document.createElement('div'); sideMask.classList.add('chuanhu-side-mask'); gradioApp().appendChild(sideMask); sideMask.addEventListener('click', () => { closeSide(menu); closeSide(toolbox); }); } sideMask = gradioApp().querySelector('.chuanhu-side-mask'); if (windowWidth > 768) { sideMask.style.backgroundColor = 'rgba(0, 0, 0, 0)'; setTimeout(() => {sideMask.style.display = 'none'; }, 100); return; } // if (windowWidth <= 768) if (menuOpening || toolboxOpening) { document.body.classList.add('popup-open'); sideMask.style.display = 'block'; setTimeout(() => {sideMask.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';}, 200); sideMask.classList.add('mask-blur'); } else if (!menuOpening && !toolboxOpening) { sideMask.style.backgroundColor = 'rgba(0, 0, 0, 0)'; setTimeout(() => {sideMask.style.display = 'none'; }, 100); } } function checkChatbotWidth() { // let chatbotWidth = chatbotArea.clientWidth; // if (chatbotWidth > 488) { if (windowWidth > 768) { chatbotArea.classList.add('chatbot-full-width'); } else { chatbotArea.classList.remove('chatbot-full-width'); } if (windowWidth > 768) { chatbotArea.classList.remove('no-toolbox'); chatbotArea.classList.remove('no-menu'); if (!chatbotArea.classList.contains('toolbox-open') && chatbotArea.classList.contains('menu-open')) { chatbotArea.classList.add('no-toolbox'); } else if (!chatbotArea.classList.contains('menu-open') && chatbotArea.classList.contains('toolbox-open')) { chatbotArea.classList.add('no-menu'); } else if (!chatbotArea.classList.contains('menu-open') && !chatbotArea.classList.contains('toolbox-open')) { chatbotArea.classList.add('no-toolbox'); chatbotArea.classList.add('no-menu'); } } checkChatMoreMask(); } function checkChatMoreMask() { if (!chatbotArea.classList.contains('chatbot-full-width')) { chatbotArea.querySelector('.chuanhu-mask')?.remove(); chatbotArea.classList.remove('show-chat-more'); } } function showKnowledgeBase(){ if (!toolboxOpening) { toolboxClick(); } switchToolBoxTab(0); let knoledgeBaseAccordion = gradioApp().querySelector('#gr-kb-accordion'); let knoledgeBase = knoledgeBaseAccordion.querySelector('#upload-index-file'); if (knoledgeBase.parentElement.parentElement.style.display == 'none') { knoledgeBaseAccordion.querySelector('.label-wrap')?.click(); } // 将 knoledgeBase 滚动到可见区域 setTimeout(() => {knoledgeBaseAccordion.scrollIntoView({ behavior: "smooth"}); }, 100); letThisSparkle(knoledgeBase, 5000); } function letThisSparkle(element, sparkleTime = 3000) { element.classList.add('chuanhu-sparkle'); setTimeout(() => {element.classList.remove('chuanhu-sparkle');}, sparkleTime); } function switchToolBoxTab(tabIndex) { let tabButtons = gradioApp().querySelectorAll('#chuanhu-toolbox-tabs .tab-nav > button'); let tab = tabButtons[tabIndex]; tab.click(); } /* function setHistroyPanel() { const historySelectorInput = gradioApp().querySelector('#history-select-dropdown input'); const historyPanel = document.createElement('div'); historyPanel.classList.add('chuanhu-history-panel'); historySelector.parentNode.insertBefore(historyPanel, historySelector); var historyList=null; historySelectorInput.addEventListener('click', (e) => { e.stopPropagation(); historyList = gradioApp().querySelector('#history-select-dropdown ul.options'); if (historyList) { // gradioApp().querySelector('.chuanhu-history-panel')?.remove(); historyPanel.innerHTML = ''; let historyListClone = historyList.cloneNode(true); historyListClone.removeAttribute('style'); // historyList.classList.add('hidden'); historyList.classList.add('hideK'); historyPanel.appendChild(historyListClone); addHistoryPanelListener(historyPanel); // historySelector.parentNode.insertBefore(historyPanel, historySelector); } }); } */ // function addHistoryPanelListener(historyPanel){ // historyPanel.querySelectorAll('ul.options > li').forEach((historyItem) => { // historyItem.addEventListener('click', (e) => { // const historySelectorInput = gradioApp().querySelector('#history-select-dropdown input'); // const historySelectBtn = gradioApp().querySelector('#history-select-btn'); // historySelectorInput.value = historyItem.innerText; // historySelectBtn.click(); // }); // }); // } // function testTrain() { // trainBody.classList.toggle('hide-body'); // trainingBox.classList.remove('hideBox'); // var chuanhuBody = document.querySelector('#chuanhu-body'); // chuanhuBody.classList.toggle('hide-body'); // }