2023-03-01 12:13:21 +01:00

53 lines
1.9 KiB
TypeScript

import {
Modal,
ModalOverlay,
ModalContent,
ModalBody,
} from "@chakra-ui/react"
import { Product } from "@commerce/types"
import ProductCardRoom from "../../../product/ProductCardRoom/ProductCardRoom"
import decadesManifest from '../../../../static_data/decadesManifest.json';
import ResourceCardModal from "@components/common/Room/ResourceCardModal/ResourceCardModal";
import { MarkerData, MarkerResourcePayload } from "../RoomTypes/RoomTypes";
export default function MarkerCardModal(props: {
isOpen: boolean,
onModalClose: () => void,
marker: MarkerData,
decade: string,
onAudioPlayerPlay?: (player: HTMLAudioElement) => void,
onAudioPlayerPause?: () => void
}) {
const decadeColor = decadesManifest[props.decade as keyof typeof decadesManifest].color;
const getCardToRender = (markerType: string) => {
switch(markerType) {
case "product":
return <ProductCardRoom decade={props.decade} product={props.marker.markerPayload as Product.Product} />
case "image":
case "video":
return <ResourceCardModal decade={props.decade} resourcePayload={props.marker.markerPayload as MarkerResourcePayload} />
case "audio":
return <ResourceCardModal decade={props.decade} resourcePayload={props.marker.markerPayload as MarkerResourcePayload}
onAudioPlay={props.onAudioPlayerPlay!} onAudioPause={props.onAudioPlayerPause!} onModalClose={props.onModalClose} />
}
}
return (
<>
<Modal onClose={props.onModalClose} isOpen={props.isOpen}>
<ModalOverlay />
<ModalContent rounded={"lg"}>
<ModalBody rounded={"lg"} style={{background: 'linear-gradient(120deg, ' + decadeColor + ' 0%, #000000 130%)'}} p={5}>
{
getCardToRender(props.marker.markerType)
}
</ModalBody>
</ModalContent>
</Modal>
</>
)
}