@nuxt/image
Version:
Nuxt Image Module
37 lines (36 loc) • 993 B
JavaScript
import { withBase, joinURL, parseURL } from "ufo";
const storyblockCDN = "https://a.storyblok.com";
export const getImage = (src, { modifiers = {}, baseURL = storyblockCDN } = {}) => {
const {
fit,
smart,
width = "0",
height = "0",
filters = {},
format,
quality
} = modifiers;
const isSVG = src.endsWith(".svg");
const doResize = !isSVG && (width !== "0" || height !== "0");
if (!isSVG) {
if (format) {
filters.format = format + "";
}
if (quality) {
filters.quality = quality + "";
}
}
const _filters = Object.entries(filters || {}).map((e) => `${e[0]}(${e[1]})`).join(":");
const options = joinURL(
fit ? `fit-${fit}` : "",
doResize ? `${width}x${height}` : "",
smart ? "smart" : "",
_filters ? "filters:" + _filters : ""
);
const { pathname } = parseURL(src);
const modifier = options ? "/m/" : "";
const url = withBase(joinURL(pathname, modifier, options), baseURL);
return {
url
};
};