Files
bmp-website-2026/src/spa/cmsMediaField.ts
2026-07-13 12:14:37 +02:00

28 lines
831 B
TypeScript

import type { CmsRouteDoc } from './cmsRoute'
type MediaLike = {
url?: string | null
filename?: string | null
alt?: string | null
}
export function normalizeMediaUrl(url: string | null | undefined) {
return url || ''
}
export function mediaUrl(media: unknown, fallback: string) {
if (!media || typeof media !== 'object') return fallback
const doc = media as MediaLike
return normalizeMediaUrl(doc.url) || (doc.filename ? `/api/media/file/${encodeURIComponent(doc.filename)}` : fallback)
}
export function mediaAlt(media: unknown, fallback: string) {
if (!media || typeof media !== 'object') return fallback
const doc = media as MediaLike
return doc.alt || fallback
}
export function docImageUrl(doc: CmsRouteDoc | undefined, fallback: string, field = 'image') {
return mediaUrl(doc?.[field], fallback)
}