export const loadScript = (src) => new Promise((resolve, reject) => { const existing = document.querySelector(`script[src="${src}"]`); if (existing) { if (existing.dataset.loaded === "true") { resolve(); return; } existing.addEventListener("load", () => resolve(), { once: true }); existing.addEventListener("error", () => reject(new Error(`Failed to load ${src}`)), { once: true }); return; } const script = document.createElement("script"); script.src = src; script.async = true; script.addEventListener( "load", () => { script.dataset.loaded = "true"; resolve(); }, { once: true } ); script.addEventListener("error", () => reject(new Error(`Failed to load ${src}`)), { once: true }); document.head.appendChild(script); });