{"version":3,"sources":["images/experience/initials.png","images/experience/Scanpower.png","images/experience/SILogo.jpg","images/aboutMe/niagra.jpg","images/howItsMade/Raspi.png","images/howItsMade/aws.svg.png","images/howItsMade/awsLaunchInstance.PNG","images/howItsMade/reactAppStart.PNG","images/howItsMade/siteText.PNG","images/howItsMade/EarlySiteLook.PNG","images/howItsMade/BuildForServer.PNG","images/howItsMade/NginxLandingPage.PNG","images/howItsMade/Namecheap-Logo.wine.svg","images/imageIndex.js","components/AboutMe.js","components/FadeInCard.js","components/HowItsMadeItem.js","components/HowItsMade.js","components/ContactMe.js","wrappers/Alerter.js","hooks/useInsideAlerter.js","hooks/useOutsideAlerter.js","components/ExperienceItem.js","components/Experience.js","components/Tab.js","components/Header.js","components/MainPage.js","App.js","reportWebVitals.js","index.js"],"names":["images","aboutMe","niagra","require","default","experience","initials","scanpower","si","howItsMade","allImages","intro","hosting","aws","newProject","siteText","earlyLook","reactBuild","nginxLanding","namecheap","AboutMe","aboutMeLines","aboutMeText","lines","forEach","element","push","className","src","niagara","alt","FadeInCard","props","childComponent","HowItsMadeItem","imageIndex","textLines","content","storyItemImage","tailwindCSS","imageResources","text","storyItemText","imageWrapper","HowItsMade","itemList","index","Object","values","value","storyContent","fadeInWrapper","ContactMe","contactItems","contactItem","addressCss","link","contents","address","href","target","rel","header","contactMe","Alerter","ref","callback","wrapperRef","useRef","useEffect","handleClickInside","event","current","contains","document","addEventListener","removeEventListener","handleClickOutside","useOutsideAlerter","children","ExperienceItem","React","useState","isOpened","isOpen","setIsOpen","contentCSS","child","image","title","Experience","Website","ScanPower","SupplementalInstruction","Scanpower","SI","Tab","onClick","onclick","tabActive","role","tabHeader","Header","PageContent","forwardRef","aboutMeRef","contactMeRef","experienceRef","howItsMadeRef","MainPageRender","allRefs","scrollToRef","selectedRef","scrollIntoView","behavior","e","preventDefault","tabNum","App","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.5c6837b9.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/initials.07805199.png\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/SILogo.9f8e4501.jpg\";","export default __webpack_public_path__ + \"static/media/niagra.a58042ee.jpg\";","export default __webpack_public_path__ + \"static/media/Raspi.62c1f75f.png\";","export default __webpack_public_path__ + \"static/media/aws.svg.116b0d26.png\";","export default __webpack_public_path__ + \"static/media/awsLaunchInstance.925dd706.PNG\";","export default __webpack_public_path__ + \"static/media/reactAppStart.54987208.PNG\";","export default __webpack_public_path__ + \"static/media/siteText.84b458f6.PNG\";","export default __webpack_public_path__ + \"static/media/EarlySiteLook.8665f0f9.PNG\";","export default __webpack_public_path__ + \"static/media/BuildForServer.7a1699b9.PNG\";","export default __webpack_public_path__ + \"static/media/NginxLandingPage.237da14d.PNG\";","export default __webpack_public_path__ + \"static/media/Namecheap-Logo.wine.4a584a3b.svg\";","import storyContent from \"./../siteText/HowItsMade.json\"\r\n\r\nconst images = {\r\n aboutMe: {\r\n niagra: require(\"./aboutMe/niagra.jpg\").default\r\n },\r\n experience: {\r\n initials: require('./experience/initials.png').default,\r\n scanpower: require('./experience/Scanpower.png').default,\r\n si: require('./experience/SILogo.jpg').default\r\n },\r\n howItsMade: {\r\n allImages: {\r\n intro: [\"\"],\r\n hosting: [\r\n require(`./howItsMade/Raspi.png`).default,\r\n require(`./howItsMade/aws.svg.png`).default\r\n ],\r\n aws: [require(`./howItsMade/awsLaunchInstance.PNG`).default],\r\n newProject: [require(`./howItsMade/reactAppStart.PNG`).default],\r\n siteText: [require(`./howItsMade/siteText.PNG`).default],\r\n earlyLook: [require(`./howItsMade/EarlySiteLook.PNG`).default],\r\n reactBuild: [require(`./howItsMade/BuildForServer.PNG`).default],\r\n nginxLanding: [require(`./howItsMade/NginxLandingPage.PNG`).default],\r\n namecheap: [require(`./howItsMade/Namecheap-Logo.wine.svg`).default]\r\n }\r\n },\r\n};\r\n\r\nexport default images;","import niagara from \"../images/imageIndex\"\r\nimport aboutMeText from \"./../siteText/AboutMe.json\"\r\n\r\nexport default function AboutMe() {\r\n\r\n let aboutMeLines = []\r\n aboutMeText.lines.forEach(element => aboutMeLines.push(<>{element}
))\r\n\r\n return(\r\n
\r\n {\"Me\r\n

\r\n Hi, I'm Max.
\r\n

\r\n

\r\n {aboutMeLines}\r\n

\r\n
\r\n )\r\n}\r\n\r\n","export default function FadeInCard(props) {\r\n const wrapperClassName = \"bg-backgroundColor\" +\r\n \" m-4 p-6 rounded-2xl shadow-lg \" +\r\n \"border-2 border-primary \" +\r\n \"text-primary\";\r\n\r\n return (\r\n
\r\n {props.childComponent}\r\n
\r\n )\r\n}","import React from \"react\";\r\n\r\nexport default function HowItsMadeItem(props) {\r\n\r\n let images = []\r\n let imageIndex = 0;\r\n let textLines = []\r\n\r\n props.content?.images.forEach(storyItemImage => {\r\n images.push(\r\n {storyItemImage?.alt}/\r\n );\r\n imageIndex ++;\r\n })\r\n\r\n props.content?.text.forEach(storyItemText => {\r\n textLines.push(\r\n <>{storyItemText}
\r\n );\r\n })\r\n\r\n return(\r\n
\r\n
\r\n {images}\r\n
\r\n

\r\n {textLines}\r\n

\r\n
\r\n )\r\n}","import FadeInCard from \"./FadeInCard\";\r\nimport React from \"react\";\r\n\r\nimport storyContent from \"./../siteText/HowItsMade.json\";\r\nimport images from \"../images/imageIndex\";\r\n\r\nimport HowItsMadeItem from \"./HowItsMadeItem\";\r\n\r\n\r\nexport default function HowItsMade(){\r\n\r\n\r\n let itemList = []\r\n let index = 0;\r\n\r\n for (const value of Object.values(images.howItsMade.allImages)){\r\n let childComponent = \r\n let fadeInWrapper = \r\n itemList.push(fadeInWrapper)\r\n\r\n index ++;\r\n }\r\n\r\n return(\r\n
\r\n {itemList}\r\n
\r\n )\r\n}","import contactMe from \"./../siteText/ContactMe.json\"\r\n\r\nexport default function ContactMe() {\r\n\r\n const wrapperCss = \"bg-backgroundColor m-4 p-6 rounded-2xl text-primary whitespace-pre-wrap\";\r\n const contactCss = \"text-primary m-4\";\r\n const headerCss = \"text-secondary text-xl\";\r\n const contactInfoLinkCss = \"ml-4 hover:text-secondary\";\r\n const contactInfoNoLinkCss = \"ml-4\";\r\n\r\n let contactItems = []\r\n\r\n const contactItem = (props) => {\r\n let addressCss = props.link ? contactInfoLinkCss : contactInfoNoLinkCss;\r\n let contents = []\r\n\r\n props.content.forEach((address) => {\r\n if (props.link) {\r\n contents.push(\r\n \r\n {address}\r\n
\r\n
\r\n )\r\n }\r\n else {\r\n contents.push(\r\n

\r\n {address}\r\n
\r\n

\r\n )\r\n }\r\n })\r\n\r\n return (\r\n
\r\n

\r\n {props.header}\r\n

\r\n {contents}\r\n
\r\n )\r\n }\r\n\r\n for (const value of Object.values(contactMe)) {\r\n contactItems.push(contactItem(value))\r\n }\r\n\r\n return (\r\n
\r\n

\r\n Feel free to reach out to me about anything\r\n

\r\n {contactItems}\r\n
\r\n );\r\n}","import {useRef} from 'react';\r\nimport {useInsideAlerter} from './../hooks/useInsideAlerter';\r\nimport {useOutsideAlerter} from './../hooks/useOutsideAlerter';\r\n\r\n/**\r\n * Component that alerts if you click outside of it\r\n */\r\nexport default function Alerter(props) {\r\n const wrapperRef = useRef(null);\r\n useInsideAlerter(wrapperRef, props.callback);\r\n useOutsideAlerter(wrapperRef, props.callback);\r\n\r\n return
{props.children}
;\r\n}","import { useEffect } from \"react\";\r\n\r\nexport function useInsideAlerter(ref, callback) {\r\n useEffect(() => {\r\n /**\r\n * Alert if clicked on outside of element\r\n */\r\n function handleClickInside(event) {\r\n if (ref.current && ref.current.contains(event.target)) {\r\n callback(true);\r\n }\r\n }\r\n\r\n // Bind the event listener\r\n document.addEventListener(\"mousedown\", handleClickInside);\r\n return () => {\r\n // Unbind the event listener on clean up\r\n document.removeEventListener(\"mousedown\", handleClickInside);\r\n };\r\n }, [ref, callback]);\r\n}","import { useEffect } from \"react\";\r\n\r\nexport function useOutsideAlerter(ref, callback) {\r\n useEffect(() => {\r\n /**\r\n * Alert if clicked on outside of element\r\n */\r\n function handleClickOutside(event) {\r\n if (ref.current && !ref.current.contains(event.target)) {\r\n callback(false)\r\n }\r\n }\r\n\r\n // Bind the event listener\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => {\r\n // Unbind the event listener on clean up\r\n document.removeEventListener(\"mousedown\", handleClickOutside);\r\n };\r\n }, [ref, callback]);\r\n}","import {Collapse} from 'react-collapse';\r\nimport React from 'react';\r\nimport Alerter from \"../wrappers/Alerter\";\r\n\r\nexport default function ExperienceItem(props){\r\n const [isOpen, setIsOpen] = React.useState(props.isOpened);\r\n const wrapperCSS = \"bg-backgroundColor-light border-2 border-secondary max-w-md mx-auto rounded-xl shadow-md overflow-hidden md:max-w-2xl m-auto\";\r\n const imageCSS = \"h-48 w-full object-cover md:w-18\";\r\n let contentCSS = \"text-primary\";\r\n\r\n if(isOpen){\r\n contentCSS = \"text-primary border-t-2 border-secondary p-6\"\r\n }\r\n\r\n let child = (\r\n
\r\n
\r\n
\r\n {props.alt}\r\n
\r\n
\r\n \r\n {props.title}\r\n \r\n\r\n
\r\n
\r\n
\r\n \r\n {props.child}\r\n \r\n
\r\n
\r\n );\r\n\r\n\r\n return (\r\n \r\n )\r\n}","import ExperienceItem from \"./ExperienceItem\";\r\nimport SI from \"./../images/experience/SILogo.jpg\";\r\nimport Scanpower from \"./../images/experience/Scanpower.png\";\r\nimport initials from \"./../images/experience/initials.png\"\r\n\r\nexport default function Experience() {\r\n\r\n const Website = (\r\n
\r\n

\r\n If you'd like an in-depth explanation of why I worked on this site and what I did, you can find it on the \"How It's Made\" tab.
\r\n So instead I'll list off here things I'd like to add to the site in the future:
\r\n -More responsive
\r\n -More animations
\r\n -More up to date list of my experience
\r\n -Better layout and color themes\r\n

\r\n
\r\n );\r\n\r\n const ScanPower = (\r\n
\r\n
    \r\n
  • \r\n Full-stack development that was done remotely, utilizing mainly PHP, PostgreSQL, and JavaScript.\r\n
  • \r\n
  • \r\n Maintained constant communication with the rest of the development team throughout every workday.\r\n
  • \r\n
  • \r\n Established automated testing in their system from the ground up, enabling them to reach 50% code coverage within 8-months.\r\n
  • \r\n
  • \r\n Integrated customer feedback into the system's design.\r\n
  • \r\n
\r\n
\r\n );\r\n\r\n const SupplementalInstruction = (\r\n
\r\n
    \r\n
  • \r\n Facilitated sessions twice a week to review computer science content for transfer students.\r\n
  • \r\n
  • \r\n Adapted to different learning styles for students attending Supplemental Instruction review sessions.\r\n
  • \r\n
  • \r\n Collaborated with peer Supplemental Instructors via Slack and in weekly training sessions to integrate new learning techniques into my sessions.\r\n
  • \r\n
  • \r\n Was accountable for maintaining the attendance of my review sessions and incorporating different marketing strategies.\r\n
  • \r\n
\r\n Tools: Python, Java, GitHub, Slack, Discord, IntelliJ\r\n
\r\n );\r\n\r\n return(\r\n
\r\n \r\n
\r\n \r\n
\r\n {/**/}\r\n {/*
*/}\r\n \r\n\r\n
\r\n )\r\n}\r\n\r\n","import React from \"react\";\r\n\r\nexport default function Tab(props){\r\n let onClick = props.onclick;\r\n let tabActive = props.tabActive;\r\n\r\n const tabCss = \"text-xs font-bold uppercase px-5 py-3 \" +\r\n \"rounded \" +\r\n \"block \" +\r\n \"leading-normal \" +\r\n \"border-2 border-primary \" +\r\n \"hover:bg-backgroundColor-dark hover:text-primary \";\r\n\r\n const tabActiveCss = \"text-backgroundColor bg-primary \";\r\n\r\n const tabInactiveCss = \"text-primary bg-backgroundColor \";\r\n\r\n return (\r\n
  • \r\n \r\n {props.tabHeader}\r\n \r\n
  • \r\n )\r\n}","\r\nexport default function Header() {\r\n let classNameText = \"text-center text-4xl font-mukta text-primary\";\r\n\r\n return(\r\n
    \r\n

    Max Hoecker

    \r\n
    \r\n\r\n )\r\n}\r\n\r\n","import React, {useRef} from \"react\";\r\nimport {forwardRef} from \"react\";\r\nimport AboutMe from \"./AboutMe\";\r\nimport HowItsMade from \"./HowItsMade\";\r\nimport ContactMe from \"./ContactMe\";\r\nimport Experience from \"./Experience\";\r\nimport Tab from \"./Tab\";\r\nimport Header from \"./Header\";\r\n\r\nconst PageContent = forwardRef((props, ref) => {\r\n const {aboutMeRef, contactMeRef, experienceRef, howItsMadeRef} = ref.current;\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n})\r\n\r\nexport default function MainPageRender() {\r\n const aboutMeRef = useRef();\r\n const contactMeRef = useRef();\r\n const experienceRef = useRef();\r\n const howItsMadeRef = useRef();\r\n const allRefs = useRef({\r\n aboutMeRef,\r\n contactMeRef,\r\n experienceRef,\r\n howItsMadeRef,\r\n })\r\n\r\n const scrollToRef = (selectedRef) => {\r\n selectedRef.current.scrollIntoView({ behavior: 'smooth'})\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n {\r\n e.preventDefault();\r\n scrollToRef(aboutMeRef)\r\n }}\r\n tabNum={1}\r\n tabHeader={\"About\"}\r\n key={\"About-Tab\"}\r\n />\r\n {\r\n e.preventDefault();\r\n scrollToRef(contactMeRef)\r\n }}\r\n tabNum={4}\r\n tabHeader={\"Contact Me\"}\r\n key={\"Contact-Me-Tab\"}\r\n />\r\n {\r\n e.preventDefault();\r\n scrollToRef(experienceRef)\r\n }}\r\n tabNum={3}\r\n tabHeader={\"Experience\"}\r\n key={\"Experience-Tab\"}\r\n />\r\n {\r\n e.preventDefault();\r\n scrollToRef(howItsMadeRef)\r\n }}\r\n tabNum={2}\r\n tabHeader={\"How It's Made\"}\r\n key={\"How-Its-Made-Tab\"}\r\n />\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n}\r\n","import MainPageRender from \"./components/MainPage\";\r\n\r\nfunction App() {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default App;\r\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}