1
0
mirror of https://github.com/home-assistant/frontend.git synced 2025-12-20 02:38:53 +00:00
Files
frontend/src/panels/lovelace/common/load-resources.ts
2023-10-24 20:15:11 +02:00

47 lines
1.2 KiB
TypeScript

import { loadCSS, loadJS, loadModule } from "../../../common/dom/load_resource";
import { LovelaceResource } from "../../../data/lovelace";
import type { HomeAssistant } from "../../../types";
// CSS and JS should only be imported once. Modules and HTML are safe.
const CSS_CACHE = {};
const JS_CACHE = {};
export const loadLovelaceResources = (
resources: NonNullable<LovelaceResource[]>,
hass: HomeAssistant
) => {
// Don't load ressources on safe mode
if (hass.config.safe_mode) {
return;
}
resources.forEach((resource) => {
const normalizedUrl = new URL(
resource.url,
hass.auth.data.hassUrl
).toString();
switch (resource.type) {
case "css":
if (normalizedUrl in CSS_CACHE) {
break;
}
CSS_CACHE[normalizedUrl] = loadCSS(normalizedUrl);
break;
case "js":
if (normalizedUrl in JS_CACHE) {
break;
}
JS_CACHE[normalizedUrl] = loadJS(normalizedUrl);
break;
case "module":
loadModule(normalizedUrl);
break;
default:
// eslint-disable-next-line
console.warn(`Unknown resource type specified: ${resource.type}`);
}
});
};