70 lines
1.8 KiB
Plaintext
70 lines
1.8 KiB
Plaintext
import { joinPaths, prependForwardSlash, slash } from "../../core/path.js";
|
|
function createAssetLink(href, base, assetsPrefix) {
|
|
if (assetsPrefix) {
|
|
return joinPaths(assetsPrefix, slash(href));
|
|
} else if (base) {
|
|
return prependForwardSlash(joinPaths(base, slash(href)));
|
|
} else {
|
|
return href;
|
|
}
|
|
}
|
|
function createStylesheetElement(stylesheet, base, assetsPrefix) {
|
|
if (stylesheet.type === "inline") {
|
|
return {
|
|
props: {},
|
|
children: stylesheet.content
|
|
};
|
|
} else {
|
|
return {
|
|
props: {
|
|
rel: "stylesheet",
|
|
href: createAssetLink(stylesheet.src, base, assetsPrefix)
|
|
},
|
|
children: ""
|
|
};
|
|
}
|
|
}
|
|
function createStylesheetElementSet(stylesheets, base, assetsPrefix) {
|
|
return new Set(stylesheets.map((s) => createStylesheetElement(s, base, assetsPrefix)));
|
|
}
|
|
function createModuleScriptElement(script, base, assetsPrefix) {
|
|
if (script.type === "external") {
|
|
return createModuleScriptElementWithSrc(script.value, base, assetsPrefix);
|
|
} else {
|
|
return {
|
|
props: {
|
|
type: "module"
|
|
},
|
|
children: script.value
|
|
};
|
|
}
|
|
}
|
|
function createModuleScriptElementWithSrc(src, base, assetsPrefix) {
|
|
return {
|
|
props: {
|
|
type: "module",
|
|
src: createAssetLink(src, base, assetsPrefix)
|
|
},
|
|
children: ""
|
|
};
|
|
}
|
|
function createModuleScriptElementWithSrcSet(srces, site, assetsPrefix) {
|
|
return new Set(
|
|
srces.map((src) => createModuleScriptElementWithSrc(src, site, assetsPrefix))
|
|
);
|
|
}
|
|
function createModuleScriptsSet(scripts, base, assetsPrefix) {
|
|
return new Set(
|
|
scripts.map((script) => createModuleScriptElement(script, base, assetsPrefix))
|
|
);
|
|
}
|
|
export {
|
|
createAssetLink,
|
|
createModuleScriptElement,
|
|
createModuleScriptElementWithSrc,
|
|
createModuleScriptElementWithSrcSet,
|
|
createModuleScriptsSet,
|
|
createStylesheetElement,
|
|
createStylesheetElementSet
|
|
};
|