mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-14 13:32:53 +00:00
50 lines
1.3 KiB
JavaScript
50 lines
1.3 KiB
JavaScript
import ApiRenderers from '../api/factory/renderers.js';
|
|
|
|
/**
|
|
* @return object { renderers: Object }
|
|
*/
|
|
export function useRenderers() {
|
|
/* Result Vars */
|
|
const renderers = Vue.ref(null);
|
|
|
|
/* Helper Vars */
|
|
const $api = Vue.inject('$api');
|
|
const $fhcAlert = Vue.inject('$fhcAlert');
|
|
|
|
/* Main Logic */
|
|
$api
|
|
.call(ApiRenderers.loadRenderers())
|
|
.then(res => {
|
|
const head = document.head;
|
|
for (const rendertype of Object.keys(res.data)) {
|
|
const renderersForType = {};
|
|
for (const name of Object.keys(res.data[rendertype])) {
|
|
const rendererUrl = res.data[rendertype][name];
|
|
if (rendererUrl.substr(-4) == ".css") {
|
|
// add to head
|
|
if (!head.querySelector(`link[href="${rendererUrl}"]`)) {
|
|
var link = document.createElement("link");
|
|
link.type = "text/css";
|
|
link.rel = "stylesheet";
|
|
link.href = rendererUrl;
|
|
head.appendChild(link);
|
|
}
|
|
} else {
|
|
renderersForType[name] = Vue.markRaw(
|
|
Vue.defineAsyncComponent(() => import(rendererUrl))
|
|
);
|
|
}
|
|
}
|
|
if (Object.keys(renderersForType).length) {
|
|
if (renderers.value === null)
|
|
renderers.value = {};
|
|
renderers.value[rendertype] = renderersForType;
|
|
}
|
|
}
|
|
})
|
|
.catch($fhcAlert.handleSystemErrors);
|
|
|
|
return {
|
|
renderers
|
|
};
|
|
} |