Vercel/src/focal/index.ts
2024-05-21 12:34:45 -05:00

60 lines
1.3 KiB
TypeScript

import {
Photo,
PhotoDateRange,
descriptionForPhotoSet,
photoQuantityText,
} from '@/photo';
import {
absolutePathForFocalLength,
absolutePathForFocalLengthImage,
} from '@/site/paths';
export const getFocalLengthFromString = (focalString?: string) => {
const focal = focalString?.match(/^([0-9]+)mm/)?.[1];
return focal ? parseInt(focal, 10) : 0;
};
export const formatFocalLength = (focal?: number) => focal ?
`${focal}mm`
: undefined;
export const titleForFocalLength = (
focal: number,
photos: Photo[],
explicitCount?: number,
) => [
`${formatFocalLength(focal)} Focal Length`,
photoQuantityText(explicitCount ?? photos.length),
].join(' ');
export const descriptionForFocalLengthPhotos = (
photos: Photo[],
dateBased?: boolean,
explicitCount?: number,
explicitDateRange?: PhotoDateRange,
) =>
descriptionForPhotoSet(
photos,
undefined,
dateBased,
explicitCount,
explicitDateRange,
);
export const generateMetaForFocalLength = (
focal: number,
photos: Photo[],
explicitCount?: number,
explicitDateRange?: PhotoDateRange,
) => ({
url: absolutePathForFocalLength(focal),
title: titleForFocalLength(focal, photos, explicitCount),
description: descriptionForFocalLengthPhotos(
photos,
true,
explicitCount,
explicitDateRange,
),
images: absolutePathForFocalLengthImage(focal),
});