{"version":3,"sources":["components/Template/Analytics.js","data/routes.js","components/Template/Hamburger.js","components/Template/Navigation.js","components/Template/SideBar.js","components/Template/ScrollToTop.js","layouts/Main.js","data/contact.js","components/Contact/ContactIcons.js","App.js","index.js"],"names":["process","NODE_ENV","REACT_APP_GA_TRACKING_ID","ReactGA","initialize","Analytics","pathname","useLocation","useEffect","set","page","pageview","routes","index","label","path","Menu","lazy","Hamburger","useState","open","setOpen","className","id","onClick","fallback","right","isOpen","map","l","to","Navigation","filter","SideBar","src","alt","href","window","location","includes","ContactIcons","ScrollToTop","scrollTo","Main","props","titleTemplate","defaultTitle","defer","title","name","content","description","children","fullPage","defaultProps","data","link","icon","faLinkedinIn","faEnvelope","s","About","Contact","Index","NotFound","Projects","ResumeRedirect","App","basename","exact","component","render","status","StrictApp","StrictMode","rootElement","document","getElementById","hasChildNodes","hydrate"],"mappings":"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","file":"static/js/main.fee19663.chunk.js","sourcesContent":["import { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport ReactGA from 'react-ga';\n\nconst { NODE_ENV, REACT_APP_GA_TRACKING_ID } = process.env;\n\nif (NODE_ENV === 'production') {\n ReactGA.initialize(REACT_APP_GA_TRACKING_ID);\n}\n\nconst Analytics = () => {\n const { pathname } = useLocation();\n\n useEffect(() => {\n if (NODE_ENV === 'production') {\n ReactGA.set({\n page: pathname,\n });\n ReactGA.pageview(pathname);\n }\n }, [pathname]);\n\n return null;\n};\n\nexport default Analytics;\n","const routes = [\n {\n index: true,\n label: 'Ethan Meister',\n path: '/',\n },\n {\n label: 'About',\n path: '/about',\n },\n {\n label: 'Resume',\n path: '/resume',\n },\n {\n label: 'Projects',\n path: '/projects',\n },\n {\n label: 'Contact',\n path: '/contact',\n },\n];\n\nexport default routes;\n","import React, { Suspense, lazy, useState } from 'react';\n\nimport { Link } from 'react-router-dom';\nimport routes from '../../data/routes';\n\nconst Menu = lazy(() => import('react-burger-menu/lib/menus/slide'));\n\nconst Hamburger = () => {\n const [open, setOpen] = useState(false);\n\n return (\n
\n \n }>\n \n
    \n {routes.map((l) => (\n
  • \n setOpen(!open)}>\n

    {l.label}

    \n \n
  • \n ))}\n
\n
\n
\n
\n );\n};\n\nexport default Hamburger;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\n\nimport Hamburger from './Hamburger';\nimport routes from '../../data/routes';\n\n// Websites Navbar, displays routes defined in 'src/data/routes'\nconst Navigation = () => (\n
\n

\n {routes.filter((l) => l.index).map((l) => (\n {l.label}\n ))}\n

\n \n \n
\n);\n\nexport default Navigation;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\n\nimport ContactIcons from '../Contact/ContactIcons';\n\nconst { PUBLIC_URL } = process.env; // set automatically from package.json:homepage\n\nconst SideBar = () => (\n
\n
\n \n \"\"\n \n
\n

Ethan Meister

\n

ethanjmeister@gmail.com

\n
\n
\n\n
\n

About

\n

Hi, I'm Ethan.\n

\n \n
\n\n
\n \n

© Ethan Meister ethanmeister.com.

\n
\n
\n);\n\nexport default SideBar;\n","import { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\n// See https://reacttraining.com/react-router/web/guides/scroll-restoration/scroll-to-top\nconst ScrollToTop = () => {\n const { pathname } = useLocation();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [pathname]);\n\n return null;\n};\n\nexport default ScrollToTop;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Helmet, HelmetProvider } from 'react-helmet-async';\n\nimport Analytics from '../components/Template/Analytics';\nimport Navigation from '../components/Template/Navigation';\nimport SideBar from '../components/Template/SideBar';\nimport ScrollToTop from '../components/Template/ScrollToTop';\n\nconst Main = (props) => (\n \n \n \n \n {props.title && {props.title}}\n \n \n
\n \n
\n {props.children}\n
\n {props.fullPage ? null : }\n
\n
\n);\n\nMain.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]),\n fullPage: PropTypes.bool,\n title: PropTypes.string,\n description: PropTypes.string,\n};\n\nMain.defaultProps = {\n children: null,\n fullPage: false,\n title: null,\n description: \"Ethan Meister's personal website.\",\n};\n\nexport default Main;\n","import { faLinkedinIn } from '@fortawesome/free-brands-svg-icons/faLinkedinIn';\nimport { faEnvelope } from '@fortawesome/free-regular-svg-icons/faEnvelope';\n\n// import { faFacebookF } from '@fortawesome/free-brands-svg-icons/faFacebookF';\n// import { faInstagram } from '@fortawesome/free-brands-svg-icons/faInstagram';\n// import { faTwitter } from '@fortawesome/free-brands-svg-icons/faTwitter';\n// See https://fontawesome.com/icons?d=gallery&s=brands,regular&m=free\n// to add other icons.\n// {\n// link: 'https://facebook.com/md',\n// label: 'Facebook',\n// icon: faFacebookF,\n// },\n// {\n// link: 'https://www.instagram.com/dangelosaurus/',\n// label: 'Instagram',\n// icon: faInstagram,\n// },\n// {\n// link: 'https://twitter.com/dangelosaurus',\n// label: 'Twitter',\n// icon: faTwitter,\n// },\n\nconst data = [\n {\n link: 'https://www.linkedin.com/in/ethan-meister',\n label: 'LinkedIn',\n icon: faLinkedinIn,\n },\n {\n link: 'mailto:ethanjmeister@gmail.com',\n label: 'Email',\n icon: faEnvelope,\n },\n];\n\nexport default data;\n","import React from 'react';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport data from '../../data/contact';\n\nconst ContactIcons = () => (\n \n);\n\nexport default ContactIcons;\n","import React, { Suspense, lazy } from 'react';\nimport { BrowserRouter, Switch, Route } from 'react-router-dom';\nimport Main from './layouts/Main'; // fallback for lazy pages\nimport './static/css/main.scss'; // All of our styles\n\nconst { PUBLIC_URL } = process.env;\n\n// Every route - we lazy load so that each page can be chunked\n// NOTE that some of these chunks are very small. We should optimize\n// which pages are lazy loaded in the future.\nconst About = lazy(() => import('./pages/About'));\nconst Contact = lazy(() => import('./pages/Contact'));\nconst Index = lazy(() => import('./pages/Index'));\nconst NotFound = lazy(() => import('./pages/NotFound'));\nconst Projects = lazy(() => import('./pages/Projects'));\n// const Resume = lazy(() => import('./pages/Resume'));\n// const Stats = lazy(() => import('./pages/Stats'));\n\nfunction ResumeRedirect() {\n window.location = '/docs/Ethan_Meister_Resume.pdf';\n}\n\nconst App = () => (\n \n }>\n \n \n \n \n {/* */}\n \n {/* */}\n {/* */}\n \n \n \n \n \n);\n\nexport default App;\n","import React from 'react';\nimport { hydrate, render } from 'react-dom';\nimport App from './App';\n\n// See https://reactjs.org/docs/strict-mode.html\nconst StrictApp = () => (\n \n \n \n);\n\nconst rootElement = document.getElementById('root');\n\n// hydrate is required by react-snap.\nif (rootElement.hasChildNodes()) {\n hydrate(, rootElement);\n} else {\n render(, rootElement);\n}\n"],"sourceRoot":""}