halo/ui/src/utils/thumbnail.ts

24 lines
554 B
TypeScript

import type { GetThumbnailByUriSizeEnum } from "@halo-dev/api-client";
const THUMBNAIL_WIDTH_MAP: Record<GetThumbnailByUriSizeEnum, number> = {
XL: 1600,
L: 1200,
M: 800,
S: 400,
};
export function generateThumbnailUrl(
url: string,
size: GetThumbnailByUriSizeEnum
) {
const { origin } = location;
if (url.startsWith(origin) || url.startsWith("/")) {
return `${url}?width=${THUMBNAIL_WIDTH_MAP[size]}`;
}
return `/apis/api.storage.halo.run/v1alpha1/thumbnails/-/via-uri?uri=${encodeURIComponent(
url
)}&size=${size}`;
}