import { Fragment } from 'react'; import PropTypes from 'prop-types'; import { ga, skeleton } from '../../helpers/utils'; import LazyImage from '../lazy-image'; const displaySection = (externalProjects) => { if ( externalProjects && Array.isArray(externalProjects) && externalProjects.length ) { return true; } else { return false; } }; const ExternalProject = ({ externalProjects, loading, googleAnalytics }) => { const renderSkeleton = () => { let array = []; for (let index = 0; index < externalProjects.length; index++) { array.push(

{skeleton({ width: 'w-32', height: 'h-8', className: 'mb-2 mx-auto', })}

{skeleton({ width: 'w-full', height: 'h-full', shape: '', })}
{skeleton({ width: 'w-full', height: 'h-4', className: 'mx-auto', })}
{skeleton({ width: 'w-full', height: 'h-4', className: 'mx-auto', })}
); } return array; }; const renderExternalProjects = () => { return externalProjects.map((item, index) => ( { e.preventDefault(); try { if (googleAnalytics?.id) { ga.event({ action: 'Click External Project', params: { post: item.title, }, }); } } catch (error) { console.error(error); } window?.open(item.link, '_blank'); }} >

{item.title}

{item.imageUrl && (
)}

{item.description}

)); }; return ( {displaySection(externalProjects) && (
{loading ? ( skeleton({ width: 'w-40', height: 'h-8' }) ) : ( My Projects )}
{loading ? renderSkeleton() : renderExternalProjects()}
)}
); }; ExternalProject.propTypes = { externalProjects: PropTypes.array, loading: PropTypes.bool.isRequired, googleAnalytics: PropTypes.object, }; export default ExternalProject;