1 line
27 KiB
Plaintext
1 line
27 KiB
Plaintext
{"version":3,"sources":["component/Language/LanguageProvider.js","img/discord.png","img/england.png","img/gitea.png","component/Sidebar.js","img/github.png","img/germany.png","component/Navbar.js","App.js","index.js","component/Language/LanguageContext.js"],"names":["LanguageProvider","props","changeLanguage","language","setState","languages","english","german","state","bind","LanguageContext","Provider","value","this","children","React","Component","Sidebar","Consumer","className","SidebarElements","href","target","rel","src","gitea","alt","discord","onClick","englandFlag","sidebarVisibility","sidebar","document","querySelector","window","screen","width","setAttribute","NavbarComponent","NavElements","classList","add","closeNavMobile","mobile","to","fontWeightEffect","nav","projects","contact","remove","number","navLi","querySelectorAll","i","length","navMobileLi","Home","lazy","Projects","Contact","App","fallback","exact","path","component","onload","location","pathname","navOnload","onresize","navMobile","contains","navOnresize","ReactDOM","render","StrictMode","getElementById","pages","home","text","title","description","tableTh","date","createContext"],"mappings":"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","file":"static/js/main.dc39c219.chunk.js","sourcesContent":["import React from \"react\";\nimport { LanguageContext, languages } from \"./LanguageContext\";\n\nexport class LanguageProvider extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = { language: languages.german };\n this.changeLanguage = this.changeLanguage.bind(this);\n }\n\n changeLanguage = (language) => {\n this.setState({\n language: language === \"en\" ? languages.english : languages.german,\n });\n };\n\n render() {\n return (\n <LanguageContext.Provider\n value={{\n language: this.state.language,\n changeLanguage: this.changeLanguage,\n }}\n >\n {this.props.children}\n </LanguageContext.Provider>\n );\n }\n}\n","export default __webpack_public_path__ + \"static/media/discord.500e04f6.png\";","export default __webpack_public_path__ + \"static/media/england.f9404ee2.png\";","export default __webpack_public_path__ + \"static/media/gitea.7c847944.png\";","import { LanguageContext } from \"./Language/LanguageContext\";\nimport React from \"react\";\nimport discord from \"../img/discord.png\";\nimport englandFlag from \"../img/england.png\";\nimport germanyFlag from \"../img/germany.png\";\nimport gitea from \"../img/gitea.png\";\nimport github from \"../img/github.png\";\n\nexport default class Sidebar extends React.Component {\n render() {\n return (\n <LanguageContext.Consumer>\n {({ changeLanguage }) => (\n <div className=\"sidebar\">\n <ul>\n <SidebarElements changeLanguage={changeLanguage} />\n </ul>\n </div>\n )}\n </LanguageContext.Consumer>\n );\n }\n}\n\nexport function SidebarElements(props) {\n return (\n <>\n <li>\n <a\n href=\"https://git.krakatoa.umbach.dev/Alex\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <img src={gitea} alt=\"gitea\" />\n </a>\n </li>\n <li>\n <a\n href=\"https://github.com/AlexanderRoese\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <img src={github} alt=\"github\" />\n </a>\n </li>\n <li>\n <a\n href=\"https://discordapp.com/users/444509946902609941\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <img src={discord} alt=\"discord\" />\n </a>\n </li>\n <hr />\n <li onClick={() => props.changeLanguage(\"de\")}>\n <img src={germanyFlag} alt=\"germany\" />\n </li>\n <li onClick={() => props.changeLanguage(\"en\")}>\n <img src={englandFlag} alt=\"england\" />\n </li>\n </>\n );\n}\n\nexport function sidebarOnresize() {\n sidebarVisibility();\n}\n\nexport function sidebarOnload() {\n sidebarVisibility();\n}\n\nfunction sidebarVisibility() {\n let sidebar = document.querySelector(\".sidebar\");\n\n window.screen.width > 600\n ? sidebar.setAttribute(\"style\", \"visibility: visible;\")\n : sidebar.setAttribute(\"style\", \"visibility: hidden;\");\n}\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA+gAAAJYAgMAAACMcCS2AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEUAAADdAAD/zgD///9i/kqcAAAAAWJLR0QDEQxM8gAAAAd0SU1FB+UEAwEvNrEM7nwAAAHUSURBVHja7c8BDQAACAOgl7SkKa3xTWhAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIXmLXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dfXm+r6lrq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6uXuwAIb6YD0xfEb4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMjEtMDQtMDNUMDE6NDc6NTQrMDA6MDDoKCArAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIxLTA0LTAzVDAxOjQ3OjU0KzAwOjAwmXWYlwAAAABJRU5ErkJggg==\"","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { LanguageContext } from \"./Language/LanguageContext\";\nimport { SidebarElements } from \"./Sidebar\";\n\nexport default function NavbarComponent() {\n return (\n <LanguageContext.Consumer>\n {({ changeLanguage, language }) => (\n <>\n <ul className=\"nav\">\n <NavElements language={language} />\n\n <li className=\"icon\" onClick={() => openNavMobile()}>\n ☰\n </li>\n </ul>\n\n <div className=\"nav-mobile\">\n <button onClick={() => closeNavMobile()}>×</button>\n\n <ul>\n <NavElements language={language} mobile={true} />\n\n <div>\n <SidebarElements changeLanguage={changeLanguage} />\n </div>\n </ul>\n </div>\n </>\n )}\n </LanguageContext.Consumer>\n );\n}\n\nfunction NavElements(props) {\n return (\n <>\n <li>\n <Link\n to=\"/\"\n onClick={() => {\n fontWeightEffect(0);\n if (props.mobile) {\n closeNavMobile();\n }\n }}\n >\n Alexander Röse\n </Link>\n </li>\n <li>\n <Link\n to=\"/projects\"\n onClick={() => {\n fontWeightEffect(1);\n if (props.mobile) {\n closeNavMobile();\n }\n }}\n >\n {props.language.nav.projects}\n </Link>\n </li>\n <li className=\"right\">\n <Link\n to=\"/contact\"\n onClick={() => {\n fontWeightEffect(2);\n if (props.mobile) {\n closeNavMobile();\n }\n }}\n >\n {props.language.nav.contact}\n </Link>\n </li>\n </>\n );\n}\n\nexport function navOnresize() {\n const navMobile = document.querySelector(\".nav-mobile\");\n\n if (window.screen.width > 600 && navMobile.classList.contains(\"open\")) {\n navMobile.classList.remove(\"open\");\n\n document\n .querySelector(\".nav .icon\")\n .setAttribute(\"style\", \"visibility: visible;\");\n }\n}\n\nfunction openNavMobile() {\n document\n .querySelector(\".nav .icon\")\n .setAttribute(\"style\", \"visibility: hidden;\");\n\n document.querySelector(\".nav-mobile\").classList.add(\"open\");\n}\n\nfunction closeNavMobile() {\n document\n .querySelector(\".nav .icon\")\n .setAttribute(\"style\", \"visibility: visible;\");\n\n document.querySelector(\".nav-mobile\").classList.remove(\"open\");\n}\n\nexport function navOnload() {\n switch (window.location.pathname) {\n case \"/projects\":\n fontWeightEffect(1);\n break;\n case \"/contact\":\n fontWeightEffect(2);\n break;\n default:\n fontWeightEffect(0);\n }\n}\n\nfunction fontWeightEffect(number) {\n // navbar\n const navLi = document.querySelectorAll(\".nav li a\");\n\n for (let i = 0; i < navLi.length; i++) {\n if (i !== number) {\n navLi[i].setAttribute(\"style\", \"font-weight: normal;\");\n }\n }\n\n navLi[number].setAttribute(\"style\", \"font-weight: bold;\");\n\n // overlay\n const navMobileLi = document.querySelectorAll(\".nav-mobile li a\");\n\n for (let i = 0; i < navMobileLi.length; i++) {\n if (i !== number) {\n navMobileLi[i].setAttribute(\"style\", \"font-weight: normal;\");\n }\n }\n\n navMobileLi[number].setAttribute(\"style\", \"font-weight: bold;\");\n}\n","import \"./App.css\";\nimport React, { Suspense, lazy } from \"react\";\nimport {\n BrowserRouter as Router,\n Redirect,\n Route,\n Switch,\n} from \"react-router-dom\";\nimport { LanguageProvider } from \"./component/Language/LanguageProvider\";\nimport NavbarComponent, { navOnload, navOnresize } from \"./component/Navbar\";\nimport SidebarComponent, {\n sidebarOnload,\n sidebarOnresize,\n} from \"./component/Sidebar\";\n\nconst Home = lazy(() => import(\"./routes/Home\"));\nconst Projects = lazy(() => import(\"./routes/Projects\"));\nconst Contact = lazy(() => import(\"./routes/Contact\"));\n\nexport default function App() {\n return (\n <Router>\n <LanguageProvider>\n <NavbarComponent />\n <SidebarComponent />\n\n <Suspense fallback={<div></div>}>\n <Switch>\n <Route exact path=\"/\" component={Home} />\n <Route path=\"/projects\" component={Projects} />\n <Route path=\"/contact\" component={Contact} />\n\n <Redirect to=\"/\" />\n </Switch>\n </Suspense>\n </LanguageProvider>\n </Router>\n );\n}\n\nwindow.onload = () => {\n navOnload();\n sidebarOnload();\n};\n\nwindow.onresize = () => {\n navOnresize();\n sidebarOnresize();\n};\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./App\";\n\nReactDOM.render(\n <React.StrictMode>\n <App />\n </React.StrictMode>,\n document.getElementById(\"root\")\n);\n","import React from \"react\";\n\nexport const languages = {\n german: {\n nav: {\n projects: \"Projekte\",\n contact: \"Kontakt\",\n },\n pages: {\n home: {\n text: \"Selbstlernender Entwickler durch Recherche & Entwicklung\",\n },\n projects: {\n title: \"Meine Projekte\",\n description:\n \"Auflistung von Projekten die ich umgesetzt habe oder an denen ich zur Zeit arbeite\",\n tableTh: {\n description: \"Beschreibung\",\n language: \"Sprachen\",\n date: \"Zeitraum\",\n },\n },\n contact: {\n title: \"Sende mir eine Email\",\n text: \"Sie können mich unter folgender Email kontaktieren\",\n },\n },\n },\n english: {\n nav: {\n projects: \"Projects\",\n contact: \"Contact\",\n },\n pages: {\n home: {\n text: \"Self-learning developer through research & development\",\n },\n projects: {\n title: \"My projects\",\n description:\n \"Listing of projects I have implemented or am currently working on\",\n tableTh: {\n description: \"Description\",\n language: \"Language\",\n date: \"Date\",\n },\n },\n contact: {\n title: \"Send me an email\",\n text: \"You can contact me at the following email\",\n },\n },\n },\n};\n\n/*\nname: {\n placeholder: \"Ihr Name\",\n},\nemail: {\n placeholder: \"Ihre Email\",\n},\nsubject: {\n text: \"Betreff\",\n placeholder: \"Ihr Betreff\",\n},\nmessage: {\n text: \"Nachricht\",\n placeholder: \"Ihre Nachricht\",\n},\nsubmit: \"Abschicken\",\n\n\nname: {\n placeholder: \"Your name\",\n},\nemail: {\n placeholder: \"Your email\",\n},\nsubject: {\n text: \"Subject\",\n placeholder: \"Your subject\",\n},\nmessage: {\n text: \"Message\",\n placeholder: \"Your message\",\n},\nsubmit: \"Send\",\n*/\n\nexport const LanguageContext = React.createContext({\n language: languages.english,\n changeLanguage: () => {},\n});\n"],"sourceRoot":""} |