import { Deferred } from "evt/tools/Deferred"; export function appendHead( params: | { type: "css"; href: string; } | { type: "javascript"; src: string; }, ) { const htmlElement = document.createElement( (() => { switch (params.type) { case "css": return "link"; case "javascript": return "script"; } })(), ); const dLoaded = new Deferred(); htmlElement.addEventListener("load", () => dLoaded.resolve()); Object.assign( htmlElement, (() => { switch (params.type) { case "css": return { "href": params.href, "type": "text/css", "rel": "stylesheet", "media": "screen,print", }; case "javascript": return { "src": params.src, "type": "text/javascript", }; } })(), ); document.getElementsByTagName("head")[0].appendChild(htmlElement); return dLoaded.pr; }