(function () { if (location.pathname.startsWith("/embed/")) return; var s = document.currentScript; if (!s) return; var project = s.getAttribute("data-project"); if (!project) return; var bg = s.getAttribute("data-bg") || "#18181b"; var fg = s.getAttribute("data-fg") || "#ffffff"; var accent = s.getAttribute("data-accent") || "#6366f1"; var radius = parseInt(s.getAttribute("data-radius") || "16", 10); var position = s.getAttribute("data-position") || "bottom-right"; var label = s.getAttribute("data-label") || "What\u2019s new"; var isLeft = position === "bottom-left"; var hEdge = isLeft ? "left:24px" : "right:24px"; function luminance(hex) { hex = hex.replace("#", ""); if (hex.length === 3) hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]; var r = parseInt(hex.slice(0,2),16)/255; var g = parseInt(hex.slice(2,4),16)/255; var b = parseInt(hex.slice(4,6),16)/255; return 0.299*r + 0.587*g + 0.114*b; } var overlayBorder = luminance(bg) < 0.5 ? "rgba(255,255,255,0.08)" : "rgba(0,0,0,0.10)"; var origin; try { origin = new URL(s.getAttribute("src") || "").origin; } catch(e) { origin = location.origin; } var params = new URLSearchParams({ bg: bg, fg: fg, accent: accent, radius: String(radius), ref: location.origin, }); var embedUrl = origin + "/embed/" + encodeURIComponent(project) + "?" + params; var style = document.createElement("style"); style.textContent = "#heyemit-btn{" + "position:fixed;bottom:24px;" + hEdge + ";z-index:2147483646;" + "background:" + accent + ";color:" + fg + ";" + "border:none;border-radius:9999px;padding:10px 20px;" + "font-size:13px;font-weight:700;letter-spacing:-0.01em;cursor:pointer;" + "box-shadow:0 4px 20px rgba(0,0,0,0.25);" + "display:flex;align-items:center;gap:7px;" + "font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;" + "line-height:1;white-space:nowrap;" + "transition:transform 0.15s,box-shadow 0.15s;" + "}" + "#heyemit-btn:hover{transform:translateY(-2px);box-shadow:0 8px 28px rgba(0,0,0,0.3);}" + "#heyemit-btn:active{transform:translateY(0);}" + "#heyemit-overlay{" + "position:fixed;bottom:76px;" + hEdge + ";z-index:2147483647;" + "width:340px;height:520px;" + "border-radius:" + radius + "px;overflow:hidden;" + "box-shadow:0 20px 60px rgba(0,0,0,0.35),0 4px 16px rgba(0,0,0,0.12);" + "border:1px solid " + overlayBorder + ";" + "display:none;opacity:0;transform:translateY(10px) scale(0.98);" + "transition:opacity 0.2s ease,transform 0.2s ease;" + "transform-origin:" + (isLeft ? "left" : "right") + " bottom;" + "}" + "#heyemit-overlay.heyemit-open{opacity:1;transform:translateY(0) scale(1);}" + "#heyemit-overlay iframe{width:100%;height:100%;border:none;display:block;}"; document.head.appendChild(style); var btn = document.createElement("button"); btn.id = "heyemit-btn"; btn.setAttribute("aria-expanded", "false"); btn.setAttribute("aria-controls", "heyemit-overlay"); btn.innerHTML = '' + label; document.body.appendChild(btn); var overlay = document.createElement("div"); overlay.id = "heyemit-overlay"; overlay.setAttribute("role", "dialog"); overlay.setAttribute("aria-modal", "true"); overlay.setAttribute("aria-label", "Changelog"); document.body.appendChild(overlay); var iframeCreated = false; function openOverlay() { if (!iframeCreated) { var iframe = document.createElement("iframe"); iframe.src = embedUrl; iframe.title = "Changelog"; overlay.appendChild(iframe); iframeCreated = true; } overlay.style.display = "block"; overlay.offsetHeight; overlay.classList.add("heyemit-open"); btn.setAttribute("aria-expanded", "true"); } function closeOverlay() { overlay.classList.remove("heyemit-open"); btn.setAttribute("aria-expanded", "false"); overlay.addEventListener("transitionend", function handler() { overlay.style.display = "none"; overlay.removeEventListener("transitionend", handler); }); } btn.addEventListener("click", function (e) { e.stopPropagation(); overlay.classList.contains("heyemit-open") ? closeOverlay() : openOverlay(); }); document.addEventListener("click", function (e) { if (overlay.classList.contains("heyemit-open") && !overlay.contains(e.target) && e.target !== btn) closeOverlay(); }); document.addEventListener("keydown", function (e) { if (e.key === "Escape" && overlay.classList.contains("heyemit-open")) closeOverlay(); }); })();