{"version":3,"sources":["Components/Portfolio.js","Components/Header.js","Components/Contact.js","App.js","registerServiceWorker.js","index.js"],"names":["Portfolio","this","props","data","projects","map","projectImage","image","key","title","className","href","url","target","rel","alt","src","category","style","color","textShadow","length","substring","id","paddingBottom","Component","Header","height","portfolio","Contact","message","contactmessage","networks","social","network","name","textAlign","marginBottom","App","state","resumeData","ReactGA","initialize","pageview","window","location","pathname","$","ajax","dataType","cache","success","setState","bind","error","xhr","status","err","console","log","alert","getResumeData","main","isLocalhost","Boolean","hostname","match","registerValidSW","swUrl","navigator","serviceWorker","register","then","registration","onupdatefound","installingWorker","installing","onstatechange","controller","catch","ReactDOM","render","document","getElementById","URL","process","origin","addEventListener","fetch","response","headers","get","indexOf","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.0c530041.chunk.js","sourcesContent":["import React, { Component } from 'react';\n\nclass Portfolio extends Component {\n render() {\n\n if(this.props.data){\n var projects = this.props.data.projects.map(function(projects){\n var projectImage = 'images/portfolio/'+projects.image;\n return
\n
\n \n {projects.title}\n
\n
\n
{projects.title}
\n

{projects.category}

\n
\n
\n
\n
\n
\n
{projects.title.length > 37 ? projects.title.substring(0,37) + \"...\" : projects.title}
\n
\n })\n }\n\n return (\n
\n\n
\n
\n

Looking to hire?

\n

\n Check out my CV\n

\n\n

Looking for some of my work?

\n
\n {projects}\n
\n
\n
\n
\n );\n }\n}\n\nexport default Portfolio;\n","import React, { Component } from 'react';\nimport Portfolio from \"./Portfolio\";\n\nclass Header extends Component {\n render() {\n return (\n
\n\n
\n
\n

Welcome!

\n
\n\n
\n \n
\n\n\n
\n );\n }\n}\n\nexport default Header;\n","import React, { Component } from 'react';\n\nclass Contact extends Component {\n render() {\n\n if(this.props.data){\n var message = this.props.data.contactmessage;\n var networks= this.props.data.social.map(function(network){\n return
  • \n })\n }\n\n return (\n
    \n
    \n
    \n

    Get in touch!

    \n
    {message}
    \n
    \n
      \n {networks}\n
    \n
    \n
    \n
    \n\n
    \n );\n }\n}\n\nexport default Contact;\n","import React, { Component } from 'react';\nimport ReactGA from 'react-ga';\nimport $ from 'jquery';\nimport './App.css';\nimport Header from './Components/Header';\nimport Contact from './Components/Contact';\n\nclass App extends Component {\n\n constructor(props){\n super(props);\n this.state = {\n resumeData: {}\n };\n\n ReactGA.initialize('UA-96359771-2');\n ReactGA.pageview(window.location.pathname);\n }\n\n getResumeData(){\n $.ajax({\n url:'/resumeData.json',\n dataType:'json',\n cache: false,\n success: function(data){\n this.setState({resumeData: data});\n }.bind(this),\n error: function(xhr, status, err){\n console.log(err);\n alert(err);\n }\n });\n }\n\n componentDidMount(){\n this.getResumeData();\n }\n\n render() {\n return (\n
    \n
    \n \n
    \n );\n }\n}\n\nexport default App;\n","// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport default function register() {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl);\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n console.log('New content is available; please refresh.');\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type').indexOf('javascript') === -1\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport registerServiceWorker from './registerServiceWorker';\n\nReactDOM.render(, document.getElementById('root'));\nregisterServiceWorker();\n"],"sourceRoot":""}