window.initAi = () => {
let n = "difyChatbotConfig",
a = "dify-chatbot-bubble-button",
c = "dify-chatbot-bubble-window",
p = window[n],
h = {
open: ``, close: ``};
async function e() {
if (p && p.token) {
var e = new URLSearchParams(await (async () => { var e = p?.inputs || {}; let n = {}; return await Promise.all(Object.entries(e).map(async ([e, t]) => { n[e] = (e = t, e = (new TextEncoder).encode(e), e = new Response(new Blob([e]).stream().pipeThrough(new CompressionStream("gzip"))).arrayBuffer(), e = new Uint8Array(await e), await btoa(String.fromCharCode(...e))) })), n })()); let o = `${p.baseUrl || `https://${p.isDev ? "dev." : ""}udify.app`}/${p.token}?` + e; function i() { var e, t; window.innerWidth <= 640 || (e = document.getElementById(c), t = document.getElementById(a), e && t && ((t = t.getBoundingClientRect()).top - 5 > e.clientHeight ? (e.style.bottom = "48px", e.style.top = "unset") : (e.style.bottom = "unset", e.style.top = "48px"), t.right > e.clientWidth ? (e.style.right = "48px", e.style.left = "unset") : (e.style.right = "unset", e.style.left = '48px'))) } function t() {
let n = document.createElement("div"); Object.entries(p.containerProps || {}).forEach(([e, t]) => { "className" === e ? n.classList.add(...t.split(" ")) : "style" === e ? "object" == typeof t ? Object.assign(n.style, t) : n.style.cssText = t : "function" == typeof t ? n.addEventListener(e.replace(/^on/, "").toLowerCase(), t) : n[e] = t }), n.id = a; var e = document.createElement("style"); document.head.appendChild(e), e.sheet.insertRule(`
#${n.id} {
position: fixed;
bottom: var(--${n.id}-bottom, 1rem);
right: var(--${n.id}-right, 1rem);
left: var(--${n.id}-left, unset);
top: var(--${n.id}-top, unset);
width: var(--${n.id}-width, 48px);
height: var(--${n.id}-height, 48px);
border-radius: var(--${n.id}-border-radius, 25px);
background-color: var(--${n.id}-bg-color, #155EEF);
box-shadow: var(--${n.id}-box-shadow, rgba(0, 0, 0, 0.2) 0px 4px 8px 0px);
cursor: pointer;
z-index: 2147483647;
}
`); let t = document.createElement("div"); if (t.style.cssText = "position: relative; display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; z-index: 2147483647;", t.innerHTML = h.open, n.appendChild(t), document.body.appendChild(n), n.addEventListener("click", function () {
var e = document.getElementById(c); e ? (e.style.display = "none" === e.style.display ? "block" : "none", t.innerHTML = "none" === e.style.display ? h.open : h.close, "none" === e.style.display ? document.removeEventListener("keydown", d) : document.addEventListener("keydown", d), i()) : (n.prepend(((e = document.createElement("iframe")).allow = "fullscreen;microphone", e.title = "dify chatbot bubble window", e.id = c, e.src = o, e.style.cssText = `
position: absolute;
display: flex;
flex-direction: column;
justify-content: space-between;
left: unset;
right: 0;
bottom: 54px;
width: 24rem;
max-width: calc(100vw - 2rem);
height: 43.75rem;
max-height: calc(100vh - 6rem);
border: none;
z-index: 2147483640;
overflow: hidden;
user-select: none;
`, e)), i(), this.title = "Exit (ESC)", t.innerHTML = h.close, document.addEventListener("keydown", d))
}), p.draggable) { var s = n; var l = p.dragAxis || "both"; let i = !1, d, r; s.addEventListener("mousedown", function (e) { i = !0, d = e.clientX - s.offsetLeft, r = e.clientY - s.offsetTop }), document.addEventListener("mousemove", function (e) { var t, n, o; i && (s.style.transition = "none", s.style.cursor = "grabbing", (t = document.getElementById(c)) && (t.style.display = "none", s.querySelector("div").innerHTML = h.open), t = e.clientX - d, e = window.innerHeight - e.clientY - r, o = s.getBoundingClientRect(), n = window.innerWidth - o.width, o = window.innerHeight - o.height, "x" !== l && "both" !== l || s.style.setProperty(`--${a}-left`, Math.max(0, Math.min(t, n)) + "px"), "y" !== l && "both" !== l || s.style.setProperty(`--${a}-bottom`, Math.max(0, Math.min(e, o)) + "px")) }), document.addEventListener("mouseup", function () { i = !1, s.style.transition = "", s.style.cursor = "pointer" }) }
} 2048 < o.length && console.error("The URL is too long, please reduce the number of inputs to prevent the bot from failing to load"), document.getElementById(a) || t()
} else console.error(n + " is empty or token is not provided")
}
function d(e) {
var t; "Escape" === e.key && (e = document.getElementById(c), t = document.getElementById(a), e) && "none" !== e.style.display && (e.style.display = "none", t.querySelector("div").innerHTML = h.open)
} document.addEventListener("keydown", d),
// p?.dynamicScript ? e() : document.body.onload = e
e()
}