(function () {
// Get project ID from the script tag src
var scriptTag = document.currentScript;
var src = scriptTag.src;
var urlParams = new URLSearchParams(src.split("?")[1]);
var projectId = urlParams.get("id");
if (!projectId) {
console.error("Ravo Chat: Project ID not found in script tag.");
return;
}
// Get configuration from the container div
var container = document.getElementById("ravo-chat");
if (!container) {
console.error("Ravo Chat: Container #ravo-chat not found.");
return;
}
var userUid = container.getAttribute("data-user-uid");
var userName = container.getAttribute("data-user-name") || "";
var userEmail = container.getAttribute("data-user-email") || "";
var sign = container.getAttribute("data-xsign") || "";
// Create Styles
var style = document.createElement("style");
style.innerHTML = `
#ravo-widget-button {
position: fixed;
bottom: 20px;
right: 20px;
width: 60px;
height: 60px;
border-radius: 30px;
background-color: #000;
color: #fff;
border: none;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
cursor: pointer;
z-index: 9999;
display: flex;
align-items: center;
justify-content: center;
transition: transform 0.3s ease;
}
#ravo-widget-button:hover {
transform: scale(1.05);
}
#ravo-widget-iframe-container {
position: fixed;
bottom: 90px;
right: 20px;
width: 380px;
height: 600px;
max-height: calc(100vh - 110px);
background: #fff;
border-radius: 12px;
box-shadow: 0 5px 20px rgba(0, 0, 0, 0.15);
z-index: 9999;
display: none;
overflow: hidden;
flex-direction: column;
}
#ravo-widget-iframe {
width: 100%;
height: 100%;
border: none;
}
@media (max-width: 480px) {
#ravo-widget-iframe-container {
width: 100%;
height: 100%;
bottom: 0;
right: 0;
border-radius: 0;
max-height: 100vh;
}
#ravo-widget-button {
bottom: 20px;
right: 20px;
}
}
`;
document.head.appendChild(style);
// Create Button
var button = document.createElement("button");
button.id = "ravo-widget-button";
button.innerHTML =
'';
button.title = "Ask AI Support";
document.body.appendChild(button);
// Create Iframe Container
var iframeContainer = document.createElement("div");
iframeContainer.id = "ravo-widget-iframe-container";
document.body.appendChild(iframeContainer);
// Toggle Logic
var isOpen = false;
var iframeLoaded = false;
button.addEventListener("click", function () {
isOpen = !isOpen;
if (isOpen) {
iframeContainer.style.display = "flex";
button.innerHTML =
'';
if (!iframeLoaded) {
var iframe = document.createElement("iframe");
iframe.id = "ravo-widget-iframe";
// Construct URL
// We assume the script is served from the same origin as the chat
var origin = new URL(src).origin;
var chatUrl = new URL(origin + "/chat/widget/" + projectId);
if (userUid) chatUrl.searchParams.append("user_uid", userUid);
if (userName) chatUrl.searchParams.append("user_name", userName);
if (userEmail) chatUrl.searchParams.append("user_email", userEmail);
if (sign) chatUrl.searchParams.append("sign", sign);
iframe.src = chatUrl.toString();
iframeContainer.appendChild(iframe);
iframeLoaded = true;
}
} else {
iframeContainer.style.display = "none";
button.innerHTML =
'';
}
});
})();