|  | @@ -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;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  })();
 |