import { ContentElement, ContentImageProps } from "./types";
import { ImageComponent, useContentImageUrl } from "./ImageMediaComponent";
import { Link } from "react-router-dom";
import { ReactElement } from "react";
import { TextMediaComponent } from "./TextMediaComponent";
import { VideoComponent, useContentVideoUrl } from "./VideoMediaComponent";
import { useVisibilityOnce } from "../../hooks/useVisibility";
const withLink = (element: ReactElement, to?: string) => (to ? {element} : element);
const contentTypeElements: Record = {
default: ImageComponent,
"video/mp4": VideoComponent,
"text/plain": TextMediaComponent,
};
const mediaComponentUrlResolvers: Record string> = {
default: useContentImageUrl,
"video/mp4": useContentVideoUrl,
// "text/html": content
};
export const useMediaComponentUrl = (props: ContentImageProps) =>
(mediaComponentUrlResolvers[props.contentType || ""] || mediaComponentUrlResolvers.default)(props);
export const MediaComponent: ContentElement = (props) => {
const { contentType, thumbnail } = props;
const cte = contentTypeElements[contentType || ""];
const ContentTypeElement = cte || contentTypeElements.default;
const [isVisible, currentElement] = useVisibilityOnce(150);
const isThumbnail = thumbnail ?? true;
if (!isThumbnail) return ;
return (
);
};