34 lines
1.1 KiB
JavaScript
34 lines
1.1 KiB
JavaScript
import { normalizeFontId } from "./theme-core.js";
|
|
|
|
/** Префикс путей к ассетам (корень "" или "../" на страницах cases/*). */
|
|
export function getAssetPrefix() {
|
|
const link = document.querySelector('link[rel="stylesheet"][href*="css/main.css"]');
|
|
if (link) {
|
|
const href = link.getAttribute("href") || "";
|
|
const marker = "css/main.css";
|
|
const idx = href.lastIndexOf(marker);
|
|
if (idx !== -1) return href.slice(0, idx);
|
|
}
|
|
const p = window.location.pathname || "";
|
|
if (p.includes("/cases/")) return "../";
|
|
return "";
|
|
}
|
|
|
|
export function themeFontStylesheetHref(fontId) {
|
|
const id = normalizeFontId(fontId);
|
|
return `${getAssetPrefix()}assets/fonts/${id}.css`;
|
|
}
|
|
|
|
export function ensureThemeFontLoaded(fontId) {
|
|
const id = normalizeFontId(fontId);
|
|
const href = themeFontStylesheetHref(id);
|
|
if (!href) return;
|
|
if (document.querySelector(`link[data-theme-font="${id}"]`)) return;
|
|
|
|
const link = document.createElement("link");
|
|
link.rel = "stylesheet";
|
|
link.href = href;
|
|
link.dataset.themeFont = id;
|
|
document.head.appendChild(link);
|
|
}
|