28 lines
831 B
TypeScript
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)
|
|
}
|