// IIFC ((w, d) => { const { hostId = 1, closeWidth = 48, closeHeight = 48, openWidth = 380, openHeight = 680, themeColor = "#1fe1f9", position = "right", welcome = "" } = d.currentScript.dataset; const _src = d.currentScript.src; const wrapper = d.createElement("iframe"); wrapper.id = "VOCECHAT_WIDGET"; const styles = { position: "fixed", borderRadius: "8px", right: "16px", [position]: "16px", // [position] = [right] or [left] bottom: "16px", border: "none", zIndex: 9999, boxShadow: `rgb(0 0 0 / 25%) 0px 25px 50px -12px` }; Object.assign(wrapper.style, styles); wrapper.src = `${new URL(_src).origin}/widget.html?host=${hostId}&themeColor=${encodeURIComponent( themeColor )}&from=${encodeURIComponent(location.hostname)}&welcome=${encodeURIComponent(welcome)}`; wrapper.width = closeWidth; wrapper.height = closeHeight; wrapper.frameborder = 0; w.addEventListener( "message", (event) => { const { data: CMD } = event; switch (CMD) { case "OPEN": wrapper.setAttribute("width", openWidth); wrapper.setAttribute("height", openHeight); break; case "CLOSE": wrapper.setAttribute("width", closeWidth); wrapper.setAttribute("height", closeHeight); break; case "RELOAD_WITH_OPEN": { const url = new URL(wrapper.src); url.searchParams.append("open", new Date().getTime()); console.log("new src", url.href); wrapper.src = url.href; wrapper.setAttribute("width", openWidth); wrapper.setAttribute("height", openHeight); } break; default: break; } }, false ); d.body.appendChild(wrapper); })(window, document);