@paroicms/server
Version:
The ParoiCMS server
109 lines • 3.57 kB
JavaScript
import { rawToRenderedSize } from "@paroicms/public-server-lib";
import { makeUrlOfImageVariant, makeUrlOfMediaFile, makeUrlOfUnversionedImageVariant, } from "../../helpers/url-helpers.js";
const mediaHandleSymbol = Symbol("mediaHandle");
export function toTpSourceMedia(renderingContext, media, options) {
const { siteContext, language } = renderingContext;
const base = {
isSource: true,
mediaId: media.id,
mediaType: media.mediaType,
originalName: media.originalName,
url: makeUrlOfMediaFile(siteContext, {
mediaType: media.mediaType,
mediaId: media.id,
originalName: media.originalName,
}),
weightB: media.weightB,
attachedData: media.attachedData?.[language],
[mediaHandleSymbol]: options?.galleryHandle,
};
if (media.kind === "file") {
return {
kind: "file",
...base,
};
}
const { rawWidth, rawHeight } = media;
const pixelRatio = media.pixelRatio ?? siteContext.themeConf.pixelRatio;
return {
kind: "image",
...base,
rawWidth,
rawHeight,
pixelRatio,
...rawToRenderedSize({ rawWidth, rawHeight }, pixelRatio),
};
}
export function isTpSourceMedia(media) {
return !!media && typeof media === "object" && mediaHandleSymbol in media;
}
export function galleryHandleOf(media) {
return media[mediaHandleSymbol];
}
export function toMImageVariant(siteContext, variant, options) {
const { mediaId, rawWidth, rawHeight, rawSizeName, mediaType, resourceVersion } = variant;
const { pixelRatio, absoluteUrl, unversionedUrl } = options;
const { width, height } = rawToRenderedSize({ rawWidth, rawHeight }, pixelRatio);
return {
kind: "image",
isSource: false,
mediaId,
url: unversionedUrl
? makeUrlOfUnversionedImageVariant(siteContext, {
mediaId,
mediaType,
resizeRule: unversionedUrl.resizeRule,
slug: variant.slug,
absoluteUrl,
})
: makeUrlOfImageVariant(siteContext, {
mediaId,
mediaType,
rawSizeName,
resourceVersion,
slug: variant.slug,
absoluteUrl,
}),
mediaType,
rawWidth,
rawHeight,
pixelRatio,
width,
height,
};
}
export function toMSourceMedia(siteContext, media, { absoluteUrl = false } = {}) {
const base = {
isSource: true,
mediaId: media.id,
mediaType: media.mediaType,
weightB: media.weightB,
url: makeUrlOfMediaFile(siteContext, {
mediaType: media.mediaType,
mediaId: media.id,
originalName: media.originalName,
absoluteUrl,
}),
originalName: media.originalName,
attachedData: media.attachedData,
};
if (media.kind === "file") {
return {
kind: "file",
...base,
};
}
const { rawWidth, rawHeight } = media;
return {
kind: "image",
...base,
rawWidth,
rawHeight,
pixelRatio: media.pixelRatio,
...rawToRenderedSize({ rawWidth, rawHeight }, media.pixelRatio ?? siteContext.themeConf.pixelRatio),
};
}
export function toTpImageVariant(siteContext, variant, options) {
return toMImageVariant(siteContext, variant, options);
}
//# sourceMappingURL=to-media-values.js.map