keycloak_theme/src/lib/tools/appendHead.ts

53 lines
1.3 KiB
TypeScript
Raw Normal View History

2021-03-04 13:56:51 +01:00
import { Deferred } from "evt/tools/Deferred";
export function appendHead(
params:
| {
type: "css";
href: string;
}
| {
type: "javascript";
src: string;
},
2021-03-04 13:56:51 +01:00
) {
const htmlElement = document.createElement(
(() => {
switch (params.type) {
case "css":
return "link";
case "javascript":
return "script";
2021-03-04 13:56:51 +01:00
}
})(),
2021-03-04 13:56:51 +01:00
);
const dLoaded = new Deferred<void>();
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",
};
2021-03-04 13:56:51 +01:00
}
})(),
2021-03-04 13:56:51 +01:00
);
document.getElementsByTagName("head")[0].appendChild(htmlElement);
return dLoaded.pr;
}