{"version":3,"sources":["webpack://portfolio/./src/context/ProjectContext.tsx","webpack://portfolio/./src/components/CaptionHeading.tsx","webpack://portfolio/./src/components/Project/ProjectAbout.tsx","webpack://portfolio/./src/components/Project/ProjectHeader.tsx","webpack://portfolio/./src/components/Project/ProjectMediaItem.tsx","webpack://portfolio/./src/components/Project/ProjectSectionItem.tsx","webpack://portfolio/./src/components/Project/ProjectLayout.tsx","webpack://portfolio/./src/templates/projects.tsx"],"names":["ProjectContext","createContext","ProjectProviderComponent","project","children","Provider","value","useProjectContext","useContext","className","ProjectAboutCol","ProjectAboutItem","title","text","iconsByType","web","faGlobe","youtube","faYoutube","ProjectLinkItem","link","url","type","ExternalLink","href","color","icon","about","aboutNode","goal","technologies","links","Container","map","tech","key","backgroundSrc","headerSrc","titleNode","description","style","backgroundImage","src","alt","media","frameBorder","allow","allowFullScreen","section","light","image","reversed","classNames","m","i","sections","metadata","Layout","headerAbsolute","Metadata","slug","pageContext","projects","p"],"mappings":"sKAOaA,GAAiBC,mBAAc,IAM/BC,EAA8D,SAAC,GAGrE,IAFLC,EAEI,EAFJA,QACAC,EACI,EADJA,SAEA,OACE,gBAACJ,EAAeK,SAAhB,CAAyBC,MAAO,CAAEH,YAC/BC,IAKMG,EAAoB,kBAAMC,gBAAWR,GAAgBG,S,kDCdlE,EANgD,SAAC,GAAkB,IAAhBC,EAAe,EAAfA,SACjD,OACE,uBAAKK,UAAU,0CAA0CL,I,mBCIvDM,EAAsB,SAAC,GAAD,IAAGN,EAAH,EAAGA,SAAH,OAC1B,uBAAKK,UAAU,8BAA8BL,IAGzCO,EAAiE,SAAC,GAGjE,IAFLC,EAEI,EAFJA,MACAC,EACI,EADJA,KAEA,OACE,2BACE,gBAAC,EAAD,KAAiBD,GACjB,uBAAKH,UAAU,iBAAiBI,KAKhCC,EAAc,CAClBC,IAAKC,MACLC,QAASC,OAGLC,EAA6C,SAAC,GAAc,IAAZC,EAAW,EAAXA,KAC5CC,EAA6BD,EAA7BC,IAAKT,EAAwBQ,EAAxBR,MAAb,EAAqCQ,EAAjBE,YAApB,MAA2B,MAA3B,EAEA,OACE,2BACE,gBAACC,EAAA,EAAD,CAAcC,KAAMH,EAAKI,MAAM,WAC7B,gBAAC,IAAD,CAAiBC,KAAMZ,EAAYQ,GAAOb,UAAU,SACnDG,KAuDT,EAjDyB,WACvB,MAAwDL,IAAhDoB,EAAR,EAAQA,MAAOC,EAAf,EAAeA,UAAWC,EAA1B,EAA0BA,KAAMC,EAAhC,EAAgCA,aAAcC,EAA9C,EAA8CA,MAE9C,OACE,gBAACC,EAAA,EAAD,CAAWvB,UAAU,sEAClBkB,GACC,gBAACjB,EAAD,KACE,gBAACC,EAAD,CAAkBC,MAAM,WAAWC,KAAMe,UAAaD,KAGzDE,GACC,gBAACnB,EAAD,KACE,gBAACC,EAAD,CAAkBC,MAAM,WAAWC,KAAMgB,MAG3CC,GAAgBC,IAChB,gBAACrB,EAAD,KACGoB,GACC,gBAACnB,EAAD,CACEC,MAAM,eACNC,KACE,gCACE,sBAAIJ,UAAU,kBACXqB,EAAaG,KAAI,SAACC,GAAD,OAChB,sBAAIC,IAAKD,GAAOA,UAO3BH,GACC,gBAACpB,EAAD,CACEC,MAAM,QACNC,KACE,uBAAKJ,UAAU,aACZsB,EAAME,KAAI,SAACb,GAAD,OACT,gBAACD,EAAD,CAAiBgB,IAAKf,EAAKC,IAAKD,KAAMA,aCjD1D,EA5B0B,WACxB,MACEb,IADM6B,EAAR,EAAQA,cAAeC,EAAvB,EAAuBA,UAAWzB,EAAlC,EAAkCA,MAAO0B,EAAzC,EAAyCA,UAAWC,EAApD,EAAoDA,YAGpD,OACE,uBACEC,MAAO,CACLC,gBAAgB,qFAAsFL,EAAvF,KAEjB3B,UAAU,4BAEV,gBAACuB,EAAA,EAAD,CAAWvB,UAAU,yDACnB,uBAAKA,UAAU,aACb,sBAAIA,UAAU,iDACX6B,UAAa1B,GAEhB,uBAAKH,UAAU,0CACZ8B,IAGL,uBAAK9B,UAAU,eACZ4B,GAAa,uBAAKK,IAAKL,EAAWM,IAAK/B,Q,mBCSlD,EA3BoD,SAAC,GAE9C,IAAD,IADJgC,MAAStB,EACL,EADKA,KAAMD,EACX,EADWA,IAEf,MAAa,UAATC,EAEA,uBAAKb,UAAU,OACb,uBAAKiC,IAAKrB,EAAKsB,IAAI,GAAGlC,UAAU,cAIzB,YAATa,EAEA,uBAAKb,UAAU,UACb,uBAAKA,UAAU,0BACb,0BACEiC,IAAKrB,EACLwB,YAAY,IACZC,MAAM,2FACNC,iBAAe,MAMlB,6BCiBT,EAtCwD,SAAC,GAElD,IAAD,IADJC,QAAWpC,EACP,EADOA,MAAOC,EACd,EADcA,KAAMoC,EACpB,EADoBA,MAAOC,EAC3B,EAD2BA,MAAOC,EAClC,EADkCA,SAClC,IAD4C7B,YAC5C,MADmD,OACnD,EAD2DsB,EAC3D,EAD2DA,MAE/D,OACE,uBAAKnC,UAAW2C,IAAW,QAASH,GAAS,qBAC3C,gBAACjB,EAAA,EAAD,KACGpB,GACC,sBAAIH,UAAU,qCAAqCG,GAE3C,SAATU,GACC,uBACEb,UAAW2C,IACT,8EACAD,GAAY,2CAGd,uBAAK1C,UAAU,uBACb,uBAAKA,UAAU,uBAAuBI,IAEvCqC,GACC,uBAAKzC,UAAU,mBACb,uBAAKiC,IAAKQ,EAAOP,IAAI,OAKnB,UAATrB,GACC,uBAAKb,UAAU,iCACZmC,aADH,EACGA,EAAOX,KAAI,SAACoB,EAAGC,GAAJ,OACV,gBAAC,EAAD,CAAkBnB,IAAKmB,EAAGV,MAAOS,WCF/C,EAxB8C,SAAC,GAAiB,IAAflD,EAAc,EAAdA,QACvCS,EAA2BT,EAA3BS,MAAOe,EAAoBxB,EAApBwB,MAAO4B,EAAapD,EAAboD,SAEhBC,EAAiC,CACrC5C,SAMF,OAJIe,IACF6B,EAASjB,YAAcZ,GAIvB,gBAAC8B,EAAA,EAAD,CAAQC,gBAAc,GACpB,gBAACC,EAAA,EAAD,CAAUH,SAAUA,IACpB,gBAACtD,EAAD,CAA0BC,QAASA,GACjC,gBAAC,EAAD,MACA,gBAAC,EAAD,MACCoD,aAHH,EAGGA,EAAUtB,KAAI,SAACe,EAASM,GAAV,OACb,gBAAC,EAAD,CAAgBnB,IAAKmB,EAAGN,QAASA,U,UCX3C,EARoC,SAAC,GAA+B,IAAdY,EAAa,EAA5BC,YAAeD,KAC9CzD,EAAU2D,UAAc,SAACC,GAAD,OAAOA,EAAEH,OAASA,KAEhD,OAAKzD,EAEE,gBAAC,EAAD,CAAeA,QAASA,IAFV","file":"component---src-templates-projects-tsx-5600dfd0e620acb7dd07.js","sourcesContent":["import React, { createContext, FC, useContext } from \"react\";\nimport { Project } from \"../data/projects\";\n\ntype Context = {\n project: Project;\n};\n\nexport const ProjectContext = createContext({} as Context);\n\nexport interface ProjectProviderComponentProps {\n project: Project;\n}\n\nexport const ProjectProviderComponent: FC = ({\n project,\n children,\n}) => {\n return (\n \n {children}\n \n );\n};\n\nexport const useProjectContext = () => useContext(ProjectContext).project;\n","import React, { FC } from \"react\";\n\nexport interface CaptionHeadingProps {}\n\nconst CaptionHeading: FC = ({ children }) => {\n return (\n
{children}
\n );\n};\n\nexport default CaptionHeading;\n","import { faYoutube } from \"@fortawesome/free-brands-svg-icons\";\nimport { faGlobe } from \"@fortawesome/pro-regular-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FC } from \"react\";\nimport { useProjectContext } from \"../../context/ProjectContext\";\nimport { ProjectLink } from \"../../data/projects\";\nimport CaptionHeading from \"../CaptionHeading\";\nimport Container from \"../Container\";\nimport ExternalLink from \"../ExternalLink\";\n\nconst ProjectAboutCol: FC = ({ children }) => (\n
{children}
\n);\n\nconst ProjectAboutItem: FC<{ title: string; text: React.ReactNode }> = ({\n title,\n text,\n}) => {\n return (\n
\n {title}\n
{text}
\n
\n );\n};\n\nconst iconsByType = {\n web: faGlobe,\n youtube: faYoutube,\n};\n\nconst ProjectLinkItem: FC<{ link: ProjectLink }> = ({ link }) => {\n const { url, title, type = \"web\" } = link;\n\n return (\n
\n \n \n {title}\n \n
\n );\n};\n\nconst ProjectAbout: FC = () => {\n const { about, aboutNode, goal, technologies, links } = useProjectContext();\n\n return (\n \n {about && (\n \n \n \n )}\n {goal && (\n \n \n \n )}\n {(technologies || links) && (\n \n {technologies && (\n \n
    \n {technologies.map((tech) => (\n
  • {tech}
  • \n ))}\n
\n \n }\n />\n )}\n {links && (\n \n {links.map((link) => (\n \n ))}\n \n }\n />\n )}\n
\n )}\n
\n );\n};\n\nexport default ProjectAbout;\n","import React, { FC } from \"react\";\nimport { useProjectContext } from \"../../context/ProjectContext\";\nimport Container from \"../Container\";\n\nconst ProjectHeader: FC = () => {\n const { backgroundSrc, headerSrc, title, titleNode, description } =\n useProjectContext();\n\n return (\n \n \n
\n

\n {titleNode ?? title}\n

\n
\n {description}\n
\n
\n
\n {headerSrc && {title}}\n
\n
\n \n );\n};\n\nexport default ProjectHeader;\n","import React, { FC } from \"react\";\nimport { ProjectMedia } from \"../../data/projects\";\n\nexport interface ProjectMediaItemProps {\n media: ProjectMedia;\n}\n\nconst ProjectMediaItem: FC = ({\n media: { type, url },\n}) => {\n if (type === \"image\") {\n return (\n
\n \"\"\n
\n );\n }\n if (type === \"youtube\") {\n return (\n
\n
\n \n
\n
\n );\n }\n return
;\n};\n\nexport default ProjectMediaItem;\n","import classNames from \"classnames\";\nimport React, { FC } from \"react\";\nimport { ProjectSection } from \"../../data/projects\";\nimport Container from \"../Container\";\nimport ProjectMediaItem from \"./ProjectMediaItem\";\n\nexport interface ProjectSectionItemProps {\n section: ProjectSection;\n}\n\nconst ProjectSectionItem: FC = ({\n section: { title, text, light, image, reversed, type = \"text\", media },\n}) => {\n return (\n
\n \n {title && (\n

{title}

\n )}\n {type === \"text\" && (\n \n
\n
{text}
\n
\n {image && (\n
\n \"\"\n
\n )}\n
\n )}\n {type === \"media\" && (\n
\n {media?.map((m, i) => (\n \n ))}\n
\n )}\n \n \n );\n};\n\nexport default ProjectSectionItem;\n","import React, { FC } from \"react\";\nimport { ProjectProviderComponent } from \"../../context/ProjectContext\";\nimport { Project } from \"../../data/projects\";\nimport Layout from \"../Layout\";\nimport Metadata, { AppMetadata } from \"../Metadata\";\nimport ProjectAbout from \"./ProjectAbout\";\nimport ProjectHeader from \"./ProjectHeader\";\nimport ProjectSection from \"./ProjectSectionItem\";\n\nexport interface ProjectLayoutProps {\n project: Project;\n}\n\nconst ProjectLayout: FC = ({ project }) => {\n const { title, about, sections } = project;\n\n const metadata: Partial = {\n title,\n };\n if (about) {\n metadata.description = about;\n }\n\n return (\n \n \n \n \n \n {sections?.map((section, i) => (\n \n ))}\n \n \n );\n};\n\nexport default ProjectLayout;\n","import { PageProps } from \"gatsby\";\nimport React, { FC } from \"react\";\nimport ProjectLayout from \"../components/Project/ProjectLayout\";\nimport { projects } from \"../data/projects\";\n\nexport interface ProjectsProps extends PageProps {\n pageContext: {\n slug: string;\n };\n}\n\nconst Projects: FC = ({ pageContext: { slug } }) => {\n const project = projects.find((p) => p.slug === slug);\n\n if (!project) return null;\n\n return ;\n};\n\nexport default Projects;\n"],"sourceRoot":""}