{"version":3,"sources":["components/outputs.js","components/parse.js","components/EmailModal.js","components/Terminal.js","App.js","index.js"],"names":["school","value","skills","work","type","LineType","Output","startingText","projects","help","notFound","Parse","input","toLowerCase","outputs","window","open","EmailModal","isOpen","onClose","useState","timesMounted","setTimesMounted","form","useRef","toast","useToast","console","log","ref","onSubmit","e","preventDefault","emailjs","sendForm","current","publicKey","then","result","text","title","description","status","duration","isClosable","error","sendEmail","direction","justifyContent","alignItems","required","borderColor","name","placeholder","mt","mb","colorScheme","width","TerminalController","terminalLineData","setTerminalLineData","modalOpen","setModalOpen","display","height","className","colorMode","ColorMode","Dark","lineData","onInput","terminalInput","newOutput","concatenated","concat","Input","getOutput","App","Terminal","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.fcca66c1.chunk.js","sourcesContent":["import { LineType } from \"react-terminal-ui\";\n\nexport const school = [\n {\n value: \"๐—จ๐—ป๐—ถ๐˜ƒ๐—ฒ๐—ฟ๐˜€๐—ถ๐˜๐˜† ๐—ผ๐—ณ ๐—ง๐—ผ๐—ฟ๐—ผ๐—ป๐˜๐—ผ\",\n },\n {\n value: \"Bachelor of Science, Computer Science\",\n },\n {\n value: `Specialist in Software Engineering, Co-op`,\n },\n {\n value: `3.44/4.0 cumulative GPA`,\n },\n];\n\nexport const skills = [\n {\n value:\n \"โ€ข ๐—Ÿ๐—ฎ๐—ป๐—ด๐˜‚๐—ฎ๐—ด๐—ฒ๐˜€: Python, Java, C, C# (EF), SQL, NoSQL (MongoDB), Redis, HTML, CSS, TypeScript, JavaScript, GraphQL\",\n },\n {\n value: \"โ€ข ๐—Ÿ๐—ถ๐—ฏ๐—ฟ๐—ฎ๐—ฟ๐—ถ๐—ฒ๐˜€ : React, Angular, Vue, Express, Node, Redux\",\n },\n {\n value: `โ€ข ๐——๐—ฒ๐˜ƒ๐—ฒ๐—น๐—ผ๐—ฝ๐—บ๐—ฒ๐—ป๐˜ ๐—ง๐—ผ๐—ผ๐—น๐˜€ / ๐— ๐—ฒ๐˜๐—ต๐—ผ๐—ฑ๐—ผ๐—น๐—ผ๐—ด๐—ถ๐—ฒ๐˜€ / ๐—–๐—น๐—ผ๐˜‚๐—ฑ: Git, Docker, Jira, Agile, AWS (Lambda/S3)`,\n },\n {\n value: `โ€ข ๐—˜๐—ง๐—Ÿ : SSIS`,\n },\n];\n\nexport const work = [\n {\n type: LineType.Output,\n value:\n \"๐—›๐—ผ๐—บ๐—ฒ๐—ซ (Toronto, Ontario, May 2021-August 2021, Software Engineer Intern)\",\n },\n {\n value:\n \"Python,C# (dotnet, EF), AWS (Lambda, S3, ECR), React, TypeScript, GraphQL, Docker, Git \",\n },\n {\n value: \"\",\n },\n {\n value: `โ€ข Developed GraphQL BFF solution to facilitate communication from Mobile App and Website to backend\n microservices, significantly cutting down size of codebase `,\n },\n {\n value: \"\",\n },\n {\n value: `โ€ข Developed full stack microservice for video, implementing a video-on-demand service that streams video from\n S3 bucket and plays using a custom frontend video player`,\n },\n {\n value: \"\",\n },\n {\n value: `๐—•๐—ผ๐—บ๐—ฏ๐—ฎ๐—ฟ๐—ฑ๐—ถ๐—ฒ๐—ฟ ๐—”๐—ฒ๐—ฟ๐—ผ๐˜€๐—ฝ๐—ฎ๐—ฐ๐—ฒ\n (Toronto, Ontario, (Jan 2019-Dec 2019), Full Stack Developer Intern)`,\n },\n {\n value: \"Angular, C# (dotnet, EF), SQL Server, SSIS, Git, TypeScript\",\n },\n {\n value: \"\",\n },\n {\n value:\n \"โ€ข Developed two web applications with upwards of 5000 monthly active users for security, tooling, and business technology departments\",\n },\n {\n value: \"\",\n },\n {\n value:\n \"โ€ข Created scheduling application for tooling department that allows users to request/fulfill tooling services and manage usage of laser shooting machine, resulting in an 8% KPI increase\",\n },\n {\n value: \"\",\n },\n\n {\n value: `โ€ข Replaced outdated paper and pencil contractor check-in processes with a modern, mobile-first website that allows users to bring in visitors/contractors, \n automatically generates parking passes, and sends email reminders`,\n },\n {\n value: \"\",\n },\n {\n value: `โ€ข Developed and maintained 30+ SSIS packages for a Data warehouse to consolidate datasets from a variety of\n sources and display mass amounts of KPI and engineering data for several aircraft programs`,\n },\n];\n\nexport const startingText = [\n {\n type: LineType.Output,\n value: \"Welcome. Thanks for Visiting. \",\n },\n {\n value:\n \"If you'd like to see a more traditional website instead of using a terminal, type 'classic' \",\n },\n {\n value: \"\",\n },\n {\n value:\n \"To view my work experience, personal projects, or technical skills use the 'work', 'projects', or 'skills' commands \",\n },\n {\n value: \"\",\n },\n {\n value: \"To send me an email, type 'email' \",\n },\n {\n value: \"\",\n },\n {\n value: \"To see these options again, type 'help'\",\n },\n];\n\nexport const projects = [\n {\n type: LineType.Output,\n value: \"๐—ฌ๐—ผ๐˜‚๐—ง๐˜‚๐—ฏ๐—ฒ ๐—ฃ๐—ฎ๐—ฟ๐˜๐˜† (February 2021- April 2021)\",\n },\n {\n value: \"github.com/TonyAttalla/Youtube-Party\",\n },\n {\n value: \"React, TypeScript, Express, MongoDB, Redis, Git, Docker\",\n },\n {\n value: \"\",\n },\n {\n value:\n \"โ€ข Application that allows multiple users to synchronize YouTube video playback\",\n },\n {\n value:\n \"โ€ข Supports creation of rooms with unique IDโ€™s, user authentication, and an easy-to-use UI\",\n },\n {\n value: `โ€ข Wrote high performance web socket code, using a new approach to video synchronization optimized for slower\n connections`,\n },\n {\n value: \"\",\n },\n {\n type: LineType.Output,\n value: \"๐—ฆ๐—ฃ๐—ข๐—ฅ๐—ง๐—–๐—ฅ๐—˜๐—— (September 2020- December 2020)\",\n },\n {\n value: \"๐—ด๐—ถ๐˜๐—ต๐˜‚๐—ฏ.๐—ฐ๐—ผ๐—บ/๐—ง๐—ผ๐—ป๐˜†๐—”๐˜๐˜๐—ฎ๐—น๐—น๐—ฎ/๐—ฆ๐—ฝ๐—ผ๐—ฟ๐˜๐—ฐ๐—ฟ๐—ฒ๐—ฑ\",\n },\n {\n value: \"React, JavaScript, Express, MongoDB, Git, Jira\",\n },\n {\n value: \"\",\n },\n {\n value: `โ€ข Application developed with a professional basketball player that acts as a hub for sports analysts to test their\n knowledge and compete against other users`,\n },\n {\n value: `โ€ขPerformed full stack development duties as part of an Agile team of developers, consistently met sprint\n deadlines and pushed up high-quality deliverables`,\n },\n {\n value: `โ€ข Acted as representative for the team, meeting with product owners on a biweekly basis to demo new features\n and incorporate feedback`,\n },\n];\nexport const help = [\n {\n value:\n \"If you'd like to see a more traditional website instead of using a terminal, type 'classic' \",\n },\n {\n value:\n \"To view my work experience, personal projects, or technical skills use the 'work', 'projects', or 'skills' commands \",\n },\n {\n value: \"To see these options again, type 'help'\",\n },\n];\n\nexport const notFound = [{ value: \"command not found\" }];\n","import * as outputs from \"./outputs\";\n\nfunction Parse(input) {\n switch (input.toLowerCase()) {\n case \"help\":\n return outputs.help;\n\n case \"skills\":\n return outputs.skills;\n\n case \"classic\":\n window.open(\"https://classic.tonyattalla.com\", \"_blank\");\n return \"\";\n\n case \"work\":\n return outputs.work;\n\n case \"education\":\n return outputs.school;\n case \"projects\":\n return outputs.projects;\n\n default:\n return outputs.notFound;\n\n // code block\n }\n}\nexport default Parse;\n","import {\n Modal,\n ModalOverlay,\n ModalContent,\n ModalHeader,\n ModalBody,\n ModalCloseButton,\n Button,\n Input,\n Textarea,\n Flex,\n toast,\n} from \"@chakra-ui/react\";\nimport emailjs from \"@emailjs/browser\";\n\nimport { FormControl, FormLabel } from \"@chakra-ui/react\";\nimport { useToast } from \"@chakra-ui/react\";\nimport { useState, useRef } from \"react\";\nfunction EmailModal({ isOpen, onClose }) {\n const [timesMounted, setTimesMounted] = useState(0);\n const form = useRef();\n const toast = useToast();\n\n function sendEmail(e) {\n e.preventDefault();\n console.log(\"sending form\");\n\n // emailjs.init(\"KiL7M-5AuyTvNnvOG\");\n emailjs\n .sendForm(\"service_cg9p2f9\", \"template_qmxsxp6\", form.current, {\n publicKey: \"KiL7M-5AuyTvNnvOG\",\n })\n .then(\n (result) => {\n onClose();\n console.log(result.text);\n toast({\n title: \"Email sent\",\n description: \"Thank you for your email\",\n status: \"success\",\n duration: 5000,\n isClosable: true,\n });\n },\n (error) => {\n console.log(error.text);\n }\n );\n }\n\n return (\n {\n console.log(timesMounted);\n console.log(\"on close firing\");\n if (timesMounted === 0) {\n setTimesMounted(timesMounted + 1);\n } else {\n setTimesMounted(0);\n onClose();\n }\n }}\n isOpen={isOpen}\n >\n \n \n Contact\n\n \n \n
sendEmail(e)}>\n \n \n Name\n \n \n\n \n Email\n \n \n\n \n Message\n\n \n \n \n Send\n \n \n \n
\n
\n \n );\n}\nexport default EmailModal;\n","import Terminal, { ColorMode, LineType } from \"react-terminal-ui\";\nimport { Box, useDisclosure, Button } from \"@chakra-ui/react\";\nimport Parse from \"./parse\";\nimport { useState, useRef } from \"react\";\nimport \"./terminal.css\";\nimport EmailModal from \"./EmailModal\";\nimport * as outputs from \"./outputs\";\n\nfunction TerminalController() {\n const inputEl = useRef(null);\n const [terminalLineData, setTerminalLineData] = useState(\n outputs.startingText\n );\n const [modalOpen, setModalOpen] = useState(false);\n\n function getOutput(terminalInput) {\n if (terminalInput === \"email\") {\n // inputEl.current.click();\n setModalOpen(true);\n } else {\n let newOutput = Parse(terminalInput);\n\n const concatenated = terminalLineData\n .concat({\n type: LineType.Input,\n value: terminalInput,\n })\n .concat(newOutput);\n setTerminalLineData(concatenated);\n }\n }\n return (\n \n \n \n getOutput(terminalInput)}\n />\n setModalOpen(false)}\n >\n \n \n \n );\n}\nexport default TerminalController;\n","import \"./App.css\";\nimport { ChakraProvider } from \"@chakra-ui/react\";\nimport TerminalController from \"./components/Terminal\";\n\nfunction App() {\n return (\n \n \n \n );\n}\n\nexport default App;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./App\";\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\n"],"sourceRoot":""}