{"version":3,"sources":["webpack:///./src/templates/PortfolioTemplate/PortfolioTemplate.js","webpack:///./node_modules/gatsby-plugin-mdx/index.js","webpack:///./src/components/Layout/LayoutFullWidth.js","webpack:///./node_modules/gatsby-plugin-mdx/mdx-renderer.js"],"names":["PortfolioTemplate","data","portfolio","frontmatter","title","summary","content","relatedPublications","relatedEvents","relatedCourses","projects","edges","breadcrumbs","label","url","portfolioProjects","filter","node","pathOr","includes","publications","flattenNodes","events","courses","portfolioPublications","portfolioEvents","portfolioCourses","thickness","tag","type","className","length","columns","map","i","key","path","thumbnailSrc","href","pub","featuredImage","slug","excerpt","event","course","isValid","Date","applicationDeadline","format","startDate","ProjectCategory","header","pageQuery","MDXRenderer","require","module","LayoutFullWidth","children","useSiteMetadata","description","headerProps","image","backgroundUrl","React","useMDXComponents","mdx","useMDXScope","scope","components","props","mdxComponents","mdxScope","End","fullScope","keys","Object","values","fn"],"mappings":"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","file":"component---src-templates-portfolio-template-portfolio-template-js-3c499b42863f50472088.js","sourcesContent":["import React from 'react'\nimport PropTypes from 'prop-types'\nimport { graphql } from 'gatsby'\nimport { MDXProvider } from '@mdx-js/react'\nimport { format, isValid } from 'date-fns'\n\nimport LayoutFullWidth from '../../components/Layout/LayoutFullWidth'\nimport headerProps from '../../components/propTypes/headerProps'\nimport {\n Divider,\n MdxWrapper,\n PinBlockGroup,\n AggregatorPin4,\n CategoryTemplate,\n Typography,\n} from '../../components'\nimport { path, pathOr } from 'ramda'\nimport { MDXRenderer } from 'gatsby-plugin-mdx'\nimport { flattenNodes } from '../../utils'\n\nconst propTypes = {\n data: PropTypes.shape({\n portfolio: PropTypes.shape({\n frontmatter: PropTypes.shape({\n header: headerProps,\n title: PropTypes.string,\n summary: PropTypes.string,\n content: PropTypes.string,\n relatedPublications: PropTypes.array,\n relatedEvents: PropTypes.array,\n relatedCourses: PropTypes.array,\n }),\n }),\n\n projects: PropTypes.shape({\n edges: PropTypes.arrayOf(\n PropTypes.shape({\n node: PropTypes.shape({\n fields: PropTypes.shape({\n slug: PropTypes.string,\n }),\n frontmatter: PropTypes.shape({\n title: PropTypes.string,\n excerpt: PropTypes.string,\n }),\n }),\n }),\n ),\n }),\n\n publications: PropTypes.shape({\n edges: PropTypes.array,\n }),\n events: PropTypes.shape({\n edges: PropTypes.array,\n }),\n courses: PropTypes.shape({\n edges: PropTypes.array,\n }),\n }),\n}\n\nexport const PortfolioTemplate = ({ data }) => {\n const {\n portfolio: {\n frontmatter: {\n title,\n summary,\n content,\n relatedPublications,\n relatedEvents,\n relatedCourses,\n },\n },\n projects: { edges: projects },\n } = data\n\n const breadcrumbs = [\n {\n label: 'Catalysing',\n url: '/catalysing',\n },\n {\n label: title,\n },\n ]\n\n const portfolioProjects = projects.filter(({ node }) =>\n pathOr([], ['frontmatter', 'portfolios'], node).includes(title),\n )\n\n const publications = flattenNodes(data.publications.edges)\n const events = flattenNodes(data.events.edges)\n const courses = flattenNodes(data.courses.edges)\n\n const portfolioPublications = !relatedPublications\n ? []\n : publications.filter(publications =>\n relatedPublications.includes(publications.title),\n )\n const portfolioEvents = !relatedEvents\n ? []\n : events.filter(events => relatedEvents.includes(events.title))\n const portfolioCourses = !relatedCourses\n ? []\n : courses.filter(courses => relatedCourses.includes(courses.title))\n\n return (\n \n \n \n \n {title}\n \n \n {summary &&
{summary}
}\n {content && {content}}\n
\n {portfolioProjects.length > 0 && (\n <>\n \n \n Projects\n \n \n {portfolioProjects.map(({ node }, i) => {\n return (\n \n {path(['frontmatter', 'excerpt'], node)}...\n \n )\n })}\n \n \n )}\n\n {portfolioPublications.length > 0 && (\n <>\n \n \n Publications\n \n \n {portfolioPublications.map((pub, i) => {\n return (\n \n {pub.excerpt}\n \n )\n })}\n \n \n )}\n\n {portfolioEvents.length > 0 && (\n <>\n \n \n Events\n \n \n {portfolioEvents.map((event, i) => {\n return (\n \n {event.excerpt}\n \n )\n })}\n \n \n )}\n\n {portfolioCourses.length > 0 && (\n <>\n \n \n Courses\n \n \n {portfolioCourses.map((course, i) => {\n return (\n \n {isValid(new Date(course.applicationDeadline)) && (\n <>\n \n Application Deadline\n \n
\n {format(\n new Date(course.applicationDeadline),\n 'dd MMMM yyyy',\n )}\n
\n \n )}\n {isValid(new Date(course.startDate)) && (\n <>\n \n Course Starts\n \n
\n {format(new Date(course.startDate), 'dd MMMM yyyy')}\n \n )}\n \n )\n })}\n
\n \n )}\n
\n
\n )\n}\n\nPortfolioTemplate.propTypes = propTypes\n\nconst ProjectCategory = ({ data }) => {\n const {\n portfolio: {\n frontmatter: { header },\n },\n } = data\n return (\n \n \n \n )\n}\n\nProjectCategory.propTypes = propTypes\n\nexport default ProjectCategory\n\n/** @todo only fetch projects by category */\nexport const pageQuery = graphql`\n query PortfolioTemplate($slug: String!) {\n portfolio: mdx(fields: { slug: { eq: $slug } }) {\n frontmatter {\n ...headerFields\n ...introFields\n title\n summary\n content\n relatedPublications\n relatedEvents\n relatedCourses\n }\n }\n projects: allMdx(\n filter: { fields: { contentType: { eq: \"projects\" } } }\n limit: 1000\n ) {\n edges {\n node {\n fields {\n slug\n }\n frontmatter {\n title\n excerpt\n featuredImage {\n childCloudinaryMediaImage {\n fixed(width: 150) {\n height\n src\n srcSet\n width\n }\n }\n }\n portfolios\n }\n }\n }\n }\n publications: allMdx(\n filter: { fields: { contentType: { eq: \"publications\" } } }\n limit: 1000\n ) {\n edges {\n node {\n fields {\n slug\n }\n frontmatter {\n title\n excerpt\n featuredImage {\n childCloudinaryMediaImage {\n fixed(width: 150) {\n height\n src\n srcSet\n width\n }\n }\n }\n }\n }\n }\n }\n events: allMdx(\n filter: {\n fields: { contentType: { eq: \"events\" } }\n frontmatter: { archive: { ne: true } }\n }\n limit: 1000\n ) {\n edges {\n node {\n fields {\n slug\n }\n frontmatter {\n title\n excerpt\n archive\n featuredImage {\n childCloudinaryMediaImage {\n fixed(width: 150) {\n aspectRatio\n height\n src\n srcSet\n width\n }\n }\n }\n }\n }\n }\n }\n courses: allMdx(\n filter: { fields: { contentType: { eq: \"courses\" } } }\n limit: 1000\n ) {\n edges {\n node {\n fields {\n slug\n }\n frontmatter {\n title\n applicationDeadline\n startDate\n featuredImage {\n childCloudinaryMediaImage {\n fixed(width: 150) {\n aspectRatio\n height\n src\n srcSet\n width\n }\n }\n }\n }\n }\n }\n }\n }\n`\n","/**\n * Welcome to gatsby-plugin-mdx!\n *\n * Start reading in gatsby-node.js\n */\n\nconst MDXRenderer = require(`./mdx-renderer`)\n\nmodule.exports = {\n MDXRenderer: MDXRenderer,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport Navbar from '../partials/NavBar/Navbar'\nimport useSiteMetadata from '../graphqlFragments/SiteMetadata'\nimport { Footer } from '..'\nimport Head from './Head'\nimport headerProps from '../propTypes/headerProps'\nimport PrimaryHeader from '../elements/PrimaryHeader/PrimaryHeader'\n\nconst LayoutFullWidth = ({ header, children }) => {\n const { title, description } = useSiteMetadata()\n const headerProps = {\n ...header,\n image: header.backgroundUrl,\n }\n\n return (\n <>\n \n \n \n {children}\n