import Image from "./Image"; import Icon from "./Icon"; import "../less/memo-resources.less"; interface Props { resourceList: Resource[]; className?: string; style?: "row" | "col"; } const getDefaultProps = (): Props => { return { className: "", style: "row", resourceList: [], }; }; const MemoResources: React.FC = (props: Props) => { const { className, style, resourceList } = { ...getDefaultProps(), ...props, }; const availableResourceList = resourceList.filter((resource) => resource.type.startsWith("image") || resource.type.startsWith("video")); const otherResourceList = resourceList.filter((resource) => !availableResourceList.includes(resource)); const handlePreviewBtnClick = (resource: Resource) => { const resourceUrl = `${window.location.origin}/o/r/${resource.id}/${resource.filename}`; window.open(resourceUrl); }; const imgUrls = availableResourceList .filter((resource) => resource.type.startsWith("image")) .map((resource) => { return `/o/r/${resource.id}/${resource.filename}`; }); return (
{availableResourceList.length > 0 && (
{availableResourceList.map((resource) => { const url = `/o/r/${resource.id}/${resource.filename}`; if (resource.type.startsWith("image")) { return ( item === url)} /> ); } else if (resource.type.startsWith("video")) { return
)}
{otherResourceList.map((resource) => { return (
handlePreviewBtnClick(resource)}> {resource.filename}
); })}
); }; export default MemoResources;