import { CircularProgress } from "@material-ui/core"; import { IconButton } from "@saleor/components/IconButton"; import { DeleteIcon, EditIcon, makeStyles } from "@saleor/macaw-ui"; import classNames from "classnames"; import React from "react"; const useStyles = makeStyles( theme => ({ media: { height: "100%", objectFit: "contain", userSelect: "none", width: "100%" }, mediaContainer: { "&:hover, &.dragged": { "& $mediaOverlay": { display: "block" } }, background: theme.palette.background.paper, border: `1px solid ${theme.palette.divider}`, borderRadius: theme.spacing(), height: 148, overflow: "hidden", padding: theme.spacing(2), position: "relative", width: 148 }, mediaOverlay: { background: theme.palette.background.default, opacity: 0.8, cursor: "move", display: "none", height: 148, left: 0, position: "absolute", top: 0, width: 148 }, mediaOverlayShadow: { "&mediaOverlay": { alignItems: "center", display: "flex", justifyContent: "center" } }, mediaOverlayToolbar: { display: "flex", justifyContent: "flex-end" }, controlButton: { color: theme.palette.saleor.main[1], backgroundColor: "transparent", border: "none", cursor: "pointer", margin: theme.spacing(2), padding: 0, "&:hover": { color: theme.palette.saleor.active[1] }, "&:first-child": { marginRight: 0 } } }), { name: "MediaTile" } ); interface MediaTileBaseProps { media: { alt: string; url: string; type?: string; oembedData?: string; }; loading?: boolean; onDelete?: () => void; onEdit?: (event: React.ChangeEvent) => void; } export type MediaTileProps = MediaTileBaseProps & ( | { onEdit?: React.MouseEventHandler; editHref?: never; } | { onEdit?: never; editHref?: string; } ); const MediaTile: React.FC = props => { const { loading, onDelete, onEdit, editHref, media } = props; const classes = useStyles(props); const parsedMediaOembedData = media?.oembedData ? JSON.parse(media.oembedData) : null; const mediaUrl = parsedMediaOembedData?.thumbnail_url || media.url; return (
{loading ? ( ) : (
{(onEdit || editHref) && ( )} {onDelete && ( )}
)}
{media.alt}
); }; MediaTile.displayName = "MediaTile"; export default MediaTile;