57b942a9ca
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 3s
Co-authored-by: Thomas Peetz <thomas.peetz@cimt-ag.de> Reviewed-on: #95
53 lines
1.4 KiB
JavaScript
53 lines
1.4 KiB
JavaScript
import { injectGlobalCss } from 'Frontend/generated/jar-resources/theme-util.js';
|
|
import { webcomponentGlobalCssInjector } from 'Frontend/generated/jar-resources/theme-util.js';
|
|
let needsReloadOnChanges = false;
|
|
|
|
let themeRemovers = new WeakMap();
|
|
let targets = [];
|
|
const fontFaceRegex = /(@font-face\s*{[\s\S]*?})/g;
|
|
|
|
export const applyCss = (target) => {
|
|
const removers = [];
|
|
if (target !== document) {
|
|
|
|
webcomponentGlobalCssInjector((css) => {
|
|
removers.push(injectGlobalCss(css, '', target));
|
|
if(fontFaceRegex.test(css)) {
|
|
const fontFaces = Array.from(css.match(fontFaceRegex));
|
|
fontFaces.forEach(fontFace => {
|
|
removers.push(injectGlobalCss(fontFace, '', document));
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
if (import.meta.hot) {
|
|
targets.push(new WeakRef(target));
|
|
themeRemovers.set(target, removers);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
if (import.meta.hot) {
|
|
import.meta.hot.accept((module) => {
|
|
|
|
if (needsReloadOnChanges) {
|
|
window.location.reload();
|
|
} else {
|
|
targets.forEach(targetRef => {
|
|
const target = targetRef.deref();
|
|
if (target) {
|
|
themeRemovers.get(target).forEach(remover => remover())
|
|
module.applyTheme(target);
|
|
}
|
|
})
|
|
}
|
|
});
|
|
|
|
import.meta.hot.on('vite:afterUpdate', (update) => {
|
|
document.dispatchEvent(new CustomEvent('vaadin-theme-updated', { detail: update }));
|
|
});
|
|
}
|
|
|