import { isDefinedIcon } from "../ui-library/icons.js"; import { colorForIntegration, iconForIntegration } from "./utils/icons.js"; import { createWindowElement } from "./utils/window.js"; const astroLogo = ''; let integrationData; var astro_default = { id: "astro:home", name: "Menu", icon: "astro:logo", async init(canvas, eventTarget) { createCanvas(); document.addEventListener("astro:after-swap", createCanvas); eventTarget.addEventListener("app-toggled", async (event) => { resetDebugButton(); if (!(event instanceof CustomEvent)) return; if (event.detail.state === true) { if (!integrationData) fetch("https://astro.build/api/v1/dev-overlay/", { cache: "no-cache" }).then((res) => res.json()).then((data) => { integrationData = data; integrationData.data = integrationData.data.map((integration) => { return integration; }); refreshIntegrationList(); }); } }); function createCanvas() { const links = [ { icon: "bug", name: "Report a Bug", link: "https://github.com/withastro/astro/issues/new/choose" }, { icon: "lightbulb", name: "Feedback", link: "https://github.com/withastro/roadmap/discussions/new/choose" }, { icon: "file-search", name: "Documentation", link: "https://docs.astro.build" }, { icon: '', name: "Community", link: "https://astro.build/chat" } ]; const windowComponent = createWindowElement( `
${astroLogo} ${window.__astro_dev_toolbar__.version}
Copy debug info

Featured integrations

View all
` ); const copyDebugButton = windowComponent.querySelector("#copy-debug-button"); copyDebugButton?.addEventListener("click", () => { navigator.clipboard.writeText( "```\n" + window.__astro_dev_toolbar__.debugInfo + "\n```" ); copyDebugButton.textContent = "Copied to clipboard!"; setTimeout(() => { resetDebugButton(); }, 3500); }); canvas.append(windowComponent); } function resetDebugButton() { const copyDebugButton = canvas.querySelector("#copy-debug-button"); if (!copyDebugButton) return; copyDebugButton.innerHTML = 'Copy debug info '; } function refreshIntegrationList() { const integrationList = canvas.querySelector("#integration-list"); if (!integrationList) return; integrationList.innerHTML = ""; const fragment = document.createDocumentFragment(); for (const integration of integrationData.data) { const integrationComponent = document.createElement("astro-dev-toolbar-card"); integrationComponent.link = integration.homepageUrl; const integrationContainer = document.createElement("div"); integrationContainer.className = "integration-container"; const integrationImage = document.createElement("div"); integrationImage.className = "integration-image"; if (integration.image) { const img = document.createElement("img"); img.src = integration.image; img.alt = integration.title; integrationImage.append(img); } else { const icon = document.createElement("astro-dev-toolbar-icon"); icon.icon = iconForIntegration(integration); integrationImage.append(icon); integrationImage.style.setProperty( "--integration-image-background", colorForIntegration() ); } integrationContainer.append(integrationImage); let integrationTitle = document.createElement("h3"); integrationTitle.textContent = integration.title; if (integration.official || integration.categories.includes("official")) { integrationTitle.innerHTML += ' '; } integrationContainer.append(integrationTitle); const integrationDescription = document.createElement("p"); integrationDescription.textContent = integration.description.length > 90 ? integration.description.slice(0, 90) + "\u2026" : integration.description; integrationContainer.append(integrationDescription); integrationComponent.append(integrationContainer); fragment.append(integrationComponent); } integrationList.append(fragment); } } }; export { astro_default as default };