Vercel/src/platforms/google.ts
2025-04-04 22:13:10 -05:00

48 lines
1.3 KiB
TypeScript

import { Camera } from '@/camera';
import { Lens } from '../lens';
import { capitalizeWords } from '@/utility/string';
const MAKE_GOOGLE = 'google';
export const isCameraMakeGoogle = (make?: string) =>
make?.toLocaleLowerCase() === MAKE_GOOGLE;
export const isCameraGoogle = ({ make }: Camera) =>
isCameraMakeGoogle(make);
export const isLensMakeGoogle = (make?: string) =>
make?.toLocaleLowerCase() === MAKE_GOOGLE;
export const isLensGoogle = ({ make, model }: Lens) =>
isLensMakeGoogle(make) ||
/^Pixel [0-9a-z]+/i.test(model);
export const formatGoogleLensText = (
model: string,
includeDeviceName?: boolean,
) => {
const [
_match,
phoneName,
lensVariant, // Expected: 'Back' or 'Front'
lensVariantRemainder, // Expected: 'Camera'
focalLength,
_aperture,
// eslint-disable-next-line max-len
] = (/^(Pixel (?:[0-9a-z])+(?: Pro)*)(?: (back|front))* (.+) ([0-9\.]+)mm.*?f\/([0-9\.]+)/gi.exec(model) ?? []);
if (phoneName && lensVariant && focalLength) {
const lensName = capitalizeWords(lensVariant);
const focalText = `(${focalLength}mm)`;
if (includeDeviceName) {
return `${phoneName} ${lensName} ${focalText}`;
} else {
return lensVariantRemainder
? `${lensName} ${capitalizeWords(lensVariantRemainder)} ${focalText}`
: `${lensName} ${focalText}`;
}
}
return model;
};