|
|
|
@@ -11,6 +11,7 @@ |
|
|
|
const configKey = "difyChatbotConfig"; |
|
|
|
const buttonId = "dify-chatbot-bubble-button"; |
|
|
|
const iframeId = "dify-chatbot-bubble-window"; |
|
|
|
const config = window[configKey]; |
|
|
|
|
|
|
|
// SVG icons for open and close states |
|
|
|
const svgIcons = { |
|
|
|
@@ -24,7 +25,6 @@ |
|
|
|
|
|
|
|
// Main function to embed the chatbot |
|
|
|
function embedChatbot() { |
|
|
|
const config = window[configKey]; |
|
|
|
if (!config || !config.token) { |
|
|
|
console.error(`${configKey} is empty or token is not provided`); |
|
|
|
return; |
|
|
|
@@ -141,11 +141,19 @@ |
|
|
|
if (!targetIframe) { |
|
|
|
createIframe(); |
|
|
|
resetIframePosition(); |
|
|
|
this.title = "Exit (ESC)"; |
|
|
|
displayDiv.innerHTML = svgIcons.close; |
|
|
|
document.addEventListener('keydown', handleEscKey); |
|
|
|
return; |
|
|
|
} |
|
|
|
targetIframe.style.display = targetIframe.style.display === "none" ? "block" : "none"; |
|
|
|
displayDiv.innerHTML = targetIframe.style.display === "none" ? svgIcons.open : svgIcons.close; |
|
|
|
|
|
|
|
if (targetIframe.style.display === "none") { |
|
|
|
document.removeEventListener('keydown', handleEscKey); |
|
|
|
} else { |
|
|
|
document.addEventListener('keydown', handleEscKey); |
|
|
|
} |
|
|
|
|
|
|
|
resetIframePosition(); |
|
|
|
}); |
|
|
|
@@ -220,6 +228,23 @@ |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// Set the embedChatbot function to run when the body is loaded |
|
|
|
document.body.onload = embedChatbot; |
|
|
|
// Add esc Exit keyboard event triggered |
|
|
|
function handleEscKey(event) { |
|
|
|
if (event.key === 'Escape') { |
|
|
|
const targetIframe = document.getElementById(iframeId); |
|
|
|
const button = document.getElementById(buttonId); |
|
|
|
if (targetIframe && targetIframe.style.display !== 'none') { |
|
|
|
targetIframe.style.display = 'none'; |
|
|
|
button.querySelector('div').innerHTML = svgIcons.open; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
document.addEventListener('keydown', handleEscKey); |
|
|
|
|
|
|
|
// Set the embedChatbot function to run when the body is loaded,Avoid infinite nesting |
|
|
|
if (config?.dynamicScript) { |
|
|
|
embedChatbot(); |
|
|
|
} else { |
|
|
|
document.body.onload = embedChatbot; |
|
|
|
} |
|
|
|
})(); |