---
import { resolveClassName, type InputClass } from '../astro';
import type { Payload } from '../cache_fetch';
import AudioPlayer from './AudioPlayer.astro';
import Card, { type CardProps, type Props as FullCardProps } from './Card.astro';
import Video from './Video.astro';
export type CoreProps = CardProps & InputClass & { alt?: string, asImage?: boolean, withImage?: string }
export type Props = CoreProps & { payload: Payload, Component: (_props: any) => any }
const { payload, Component, ...props }: Props = Astro.props;
const { className } = resolveClassName(props);
const isImage = (payload.contentType.startsWith('image') && payload.src) || props.asImage;
const isAudio = (payload.contentType.startsWith('audio') && payload.src)
const isVideo = (payload.contentType.startsWith('video') && payload.src)
const isMedia = isImage || isAudio || isVideo;
const cardProps: FullCardProps | undefined = !(payload?.socialData?.url && payload?.socialData) ? undefined : {
...props,
...payload?.socialData,
classList:["rounded-xl overflow-hidden w-full", className],
url: payload?.socialData?.url,
}
---
{ isImage &&
}
{ isAudio && payload.src && }
{ isVideo && payload.src && }
{ !isMedia && Component && }
{ !isMedia && !Component && cardProps && }