{ "version": 3, "sources": [ "src-imgs/after1.png", "src-imgs/before2.png", "components/socialMediaLink.js", "components/webSkill.js", "components/aboutMeCard.js", "components/projectBox.js", "functions.js", "app.js", "index.js" ], "names": [ "module", "exports", "SocialMediaLink", "href", "this", "props", "url", "target", "className", "title", "icon", "text", "React", "Component", "WebSkill", "state", "isOpen", "id", "src", "iconImg", "iconTitle", "onClick", "event", "preventDefault", "setState", "children", "AboutMeCard", "alt", "imgSrc", "aboutMeTitle", "aboutMeMessage", "ProjectBox", "linkClass", "linkTitle", "linkHref", "tabIndex", "cover", "undefined", "githubHref", "projectObjective", "results", "process", "outcome", "projectQuote", "e", "supportsPassive", "window", "addEventListener", "Object", "defineProperty", "get", "wheelOpt", "passive", "scrollEnabled", "disableScroll", "enableScroll", "removeEventListener", "requestAnimFrame", "requestAnimationFrame", "webkitRequestAnimationFrame", "mozRequestAnimationFrame", "callback", "setTimeout", "scrollId", "scrollToY", "app", "scrollTargetY", "speed", "easing", "currentScrollId", "isNavigating", "scrollY", "currentTime", "time", "Math", "max", "min", "abs", "easingEquations", "PI", "customEaseOut", "pos", "easeOutSine", "sin", "easeOutQuad", "easeOutQuart", "easeOutQuint", "easeInOutSine", "cos", "easeInOutQuint", "pow", "tick", "p", "t", "isMouseDown", "scrollTo", "fetchWithTimeout", "options", "duration", "Promise", "race", "fetch", "resolve", "reject", "Error", "App", "carousel", "createRef", "aboutSection", "portfolioSection", "contactSection", "webGraphics", "carouselTouchStartX", "currentSection", "isMenuOpen", "isHtmlMenuOpen", "isCssMenuOpen", "isJsMenuOpen", "isScrolled", "hasEverScrolled", "isAnimating", "nameInputValue", "emailInputValue", "messageInputValue", "isFormLoading", "overlayIcon", "overlayTitle", "overlayMessage", "carouselAutoPlay", "webGraphicsVisible", "navBtnVisible", "viewSection", "section", "toggleMenu", "stopPropagation", "sendEmail", "fullName", "encodeURIComponent", "emailAddress", "message", "isLoading", "then", "response", "status", "catch", "error", "console", "log", "getOwnPropertyNames", "navigator", "onLine", "document", "onscroll", "current", "offsetTop", "ScrollReveal", "reveal", "viewOffset", "bottom", "distance", "origin", "afterReveal", "onTouchStart", "onTouchEnd", "ref", "touches", "clientX", "onTouchMove", "startX", "x", "element", "autoPlay", "autoPlayStrategy", "autoPlayInterval", "mouseTracking", "infinite", "beforeImg", "afterImg", "onSubmit", "required", "type", "placeholder", "onChange", "value", "pattern", "ReactDOM", "render", "StrictMode", "querySelector" ], "mappings": "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", "file": "static/js/main.1503682a.chunk.js", "sourcesContent": [ "module.exports = __webpack_public_path__ + \"static/media/after1.ab2a112a.png\";", "module.exports = __webpack_public_path__ + \"static/media/before2.76683d45.png\";", "import React from \"react\";\n\nclass SocialMediaLink extends React.Component {\n render() {\n return (\n \n
\n \n
{this.props.text}
\n
\n \n );\n }\n}\n\nexport default SocialMediaLink;\n", "import React from \"react\";\n\nclass WebSkill extends React.Component {\n state = { isOpen: false };\n render() {\n return (\n \n \n
{this.props.iconTitle}
\n {\n event.preventDefault();\n this.setState({ isOpen: !this.state.isOpen });\n }}\n >\n \n \n\n
{this.props.children}
\n \n );\n }\n}\n\nexport default WebSkill;\n", "import React from \"react\";\n\nclass AboutMeCard extends React.Component {\n render() {\n return (\n
\n \"\"\n
{this.props.aboutMeTitle}
\n
{this.props.aboutMeMessage}
\n
\n );\n }\n}\n\nexport default AboutMeCard;\n", "import React from \"react\";\n\n// Props: linkClass, linkTitle, linkHref, cover, githubHref, projectObjective, results, process, outcome, projectQuote\n\nclass ProjectBox extends React.Component {\n state = {\n isOpen: false,\n };\n render() {\n return (\n \n \n \n {this.props.cover}\n {\n // Prevents any \"default\" action/behavior\n // Default actions come automatically from our HTML (i.e. tag click actions)\n event.preventDefault();\n this.setState({\n isOpen: !this.state.isOpen,\n });\n }}\n >\n \n \n \n \n \n \n\n
\n \n Visit \n \n \n <View Code/>\n \n
\n Objective: \n {this.props.projectObjective}\n
\n\n {this.props.results}\n\n
\n Process: \n {this.props.process}\n
\n\n {this.props.outcome}\n\n {this.props.projectQuote}\n
\n \n );\n }\n}\n\nexport default ProjectBox;\n", "function preventDefault(e) {\n e.preventDefault();\n}\n\n// modern Chrome requires { passive: false } when adding event\nlet supportsPassive = false;\ntry {\n window.addEventListener(\n \"test\",\n null,\n Object.defineProperty({}, \"passive\", {\n get: function () {\n supportsPassive = true;\n },\n })\n );\n} catch (e) {}\n\nlet wheelOpt = supportsPassive ? { passive: false } : false;\nlet scrollEnabled = true;\n\nexport function disableScroll() {\n if (scrollEnabled == true) {\n window.addEventListener(\"DOMMouseScroll\", preventDefault, false); // older FF\n window.addEventListener(\"touchmove\", preventDefault, wheelOpt); // mobile\n scrollEnabled = false;\n }\n}\n\nexport function enableScroll() {\n if (scrollEnabled == false) {\n window.removeEventListener(\"DOMMouseScroll\", preventDefault, false);\n window.removeEventListener(\"touchmove\", preventDefault, wheelOpt);\n scrollEnabled = true;\n }\n}\n\nlet requestAnimFrame = (function () {\n return (\n window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n function (callback) {\n window.setTimeout(callback, 1000 / 60);\n }\n );\n})();\n\nlet scrollId = 0;\n\nexport function scrollToY(\n app,\n scrollTargetY,\n speed = 2000,\n easing = \"easeInOutQuint\"\n) {\n // scrollTargetY: the target scrollY property of the window\n // speed: time in pixels per second\n // easing: easing equation to use\n\n scrollId++;\n let currentScrollId = scrollId;\n\n app.isNavigating = true;\n var scrollY = window.scrollY,\n currentTime = 0;\n\n // min time .1, max time .8 seconds\n var time = Math.max(\n 0.1,\n Math.min(Math.abs(scrollY - scrollTargetY) / speed, 0.8)\n );\n\n // easing equations from https://github.com/danro/easing-js/blob/master/easing.js\n var PI_D2 = Math.PI / 2,\n easingEquations = {\n customEaseOut: (pos) => (pos /= 1.1),\n easeOutSine: function (pos) {\n return Math.sin(pos * (Math.PI / 2));\n },\n easeOutQuad: (pos) => pos * (2 - pos),\n easeOutQuart: (pos) => 1 - --pos * pos * pos * pos,\n easeOutQuint: (pos) => 1 + --pos * pos * pos * pos * pos,\n easeInOutSine: function (pos) {\n return -0.5 * (Math.cos(Math.PI * pos) - 1);\n },\n easeInOutQuint: function (pos) {\n if ((pos /= 0.5) < 1) {\n return 0.5 * Math.pow(pos, 5);\n }\n return 0.5 * (Math.pow(pos - 2, 5) + 2);\n },\n };\n\n // add animation loop\n function tick() {\n if (currentScrollId != scrollId) {\n return;\n }\n\n currentTime += 1 / 60;\n\n var p = currentTime / time;\n var t = easingEquations[easing](p);\n\n if (p < 1 && app.isNavigating == true) {\n if (window.isMouseDown == false) {\n requestAnimFrame(tick);\n\n window.scrollTo(0, scrollY + (scrollTargetY - scrollY) * t);\n }\n } else {\n window.scrollTo(0, scrollTargetY);\n app.isNavigating = false;\n }\n }\n\n // call it once to get started\n tick();\n}\n\n// scroll it!\n// scrollToY(0, 1500, \"easeInOutQuint\");\n\nexport function fetchWithTimeout(url, options, duration) {\n return Promise.race([\n fetch(url, options),\n new Promise(function (resolve, reject) {\n return setTimeout(function () {\n return reject(new Error(\"REQUEST_TIMED_OUT\"));\n }, duration);\n }),\n ]);\n}\n", "import React from \"react\";\nimport \"./normalize.css\";\nimport \"./hamburgers.css\";\nimport \"./style.css\";\nimport \"./mobile.css\";\n\nimport afterImg from \"./src-imgs/after1.png\";\nimport beforeImg from \"./src-imgs/before2.png\";\n\nimport AliceCarousel, { slidePrev } from \"react-alice-carousel\";\nimport \"react-alice-carousel/lib/alice-carousel.css\";\n\nimport SocialMediaLink from \"./components/socialMediaLink\";\nimport WebSkill from \"./components/webSkill\";\nimport AboutMeCard from \"./components/aboutMeCard\";\nimport ProjectBox from \"./components/projectBox\";\nimport ScrollReveal from \"scrollreveal\";\n\nimport {\n enableScroll,\n disableScroll,\n scrollToY,\n fetchWithTimeout,\n} from \"./functions.js\";\n\nwindow.isMouseDown = false;\n\nclass App extends React.Component {\n carousel = React.createRef();\n aboutSection = React.createRef();\n portfolioSection = React.createRef();\n contactSection = React.createRef();\n webGraphics = React.createRef();\n carouselTouchStartX = 0;\n isMouseDown = false;\n isNavigating = false;\n\n state = {\n currentSection: \"\",\n isMenuOpen: false,\n isHtmlMenuOpen: false,\n isCssMenuOpen: false,\n isJsMenuOpen: false,\n isScrolled: false,\n hasEverScrolled: false,\n isAnimating: false,\n nameInputValue: \"\",\n emailInputValue: \"\",\n messageInputValue: \"\",\n isFormLoading: false,\n overlayIcon: \"\",\n overlayTitle: \"\",\n overlayMessage: \"\",\n carouselAutoPlay: true,\n webGraphicsVisible: false,\n navBtnVisible: false,\n };\n\n viewSection = (section) => {\n this.setState({ isMenuOpen: false });\n };\n\n toggleMenu = (event) => {\n event.stopPropagation();\n\n if (this.state.isMenuOpen == false) {\n this.setState({ isMenuOpen: true });\n disableScroll();\n } else {\n this.setState({ isMenuOpen: false });\n enableScroll();\n }\n };\n\n sendEmail = () => {\n // encodeURIComponent converts forwardslashes (/) to a useable text so it doesnt break the url query string\n let fullName = encodeURIComponent(this.state.nameInputValue);\n let emailAddress = encodeURIComponent(this.state.emailInputValue);\n let message = encodeURIComponent(this.state.messageInputValue);\n let isLoading = true;\n // stopping overlay from appearing for a split second in case emails sends right away\n setTimeout(() => {\n if (isLoading == true) {\n this.setState({ isFormLoading: true });\n }\n }, 500);\n\n // fetch is JS function that sends http requests to servers,\n // we are REQUESTING sendEmail.php FILE from server to send the email through\n fetchWithTimeout(\n \"api/sendEmail.php?name=\" +\n fullName +\n \"&email=\" +\n emailAddress +\n \"&msg=\" +\n message,\n {},\n 5000\n )\n // handles servers succesful response\n .then((response) => {\n isLoading = false;\n this.setState({ isFormLoading: false });\n disableScroll();\n if (response.status != 200) {\n this.setState({ overlayMessage: \"Error \" + response.status });\n setTimeout(() => {\n this.setState({ overlayMessage: \"\" });\n }, 4000);\n } else {\n this.setState({\n overlayIcon: \"far fa-check-circle confirmIcon\",\n overlayTitle: \"Message Sent\",\n overlayMessage: \"Thank You!\",\n });\n // confirmWindow.classList.add(\"visibleConfirmWindow\");\n // confirmWindow.classList.add(\"slide-in-left\");\n\n // close/reset contact form & overlays\n setTimeout(() => {\n // confirmWindow.classList.remove(\"visibleConfirmWindow\");\n this.setState({\n overlayMessage: \"\",\n nameInputValue: \"\",\n emailInputValue: \"\",\n messageInputValue: \"\",\n });\n enableScroll();\n // confirmWindow.classList.remove(\"slide-in-left\");\n // confirmWindow.classList.remove(\"slide-out-right\");\n }, 3000);\n }\n })\n // handling errors (server connection)\n // handles server if it doesnt respond OR if it responds with an error\n .catch((error) => {\n isLoading = false;\n this.setState({ isFormLoading: false });\n console.log(error);\n console.log(typeof error);\n console.log(Object.getOwnPropertyNames(error));\n console.log(error.message);\n\n disableScroll();\n\n if (navigator.onLine == false) {\n this.setState({\n overlayIcon: \"fas fa-wifi errorIcon\",\n overlayTitle: \"Connection Error\",\n overlayMessage: \"Check your internet connection\",\n });\n } else {\n this.setState({\n overlayIcon: \"fas fa-exclamation-triangle errorIcon\",\n overlayTitle: \"Error\",\n overlayMessage: \"Please try again\",\n });\n }\n setTimeout(() => {\n this.setState({\n overlayIcon: \"\",\n overlayTitle: \"\",\n overlayMessage: \"\",\n });\n enableScroll();\n }, 4000);\n });\n };\n\n componentDidMount() {\n // Remove Gray Highlight When Tapping Links in Mobile Safari\n document.addEventListener(\"touchstart\", function () {}, true);\n\n window.onscroll = (e) => {\n // window.scrollY = top of screen\n if (window.scrollY > 10 && this.state.isAnimating == false) {\n this.setState({ isScrolled: true, hasEverScrolled: true });\n } else {\n this.setState({ isScrolled: false });\n }\n\n if (window.scrollY > 0) {\n this.setState({ navBtnVisible: true });\n }\n\n if (this.isNavigating == false) {\n if (window.scrollY >= this.contactSection.current.offsetTop - 60) {\n this.setState({ currentSection: \"contact\" });\n } else if (\n window.scrollY >=\n this.portfolioSection.current.offsetTop - 70\n ) {\n this.setState({ currentSection: \"portfolio\" });\n } else if (\n window.scrollY >=\n this.aboutSection.current.offsetTop - 100\n ) {\n this.setState({ currentSection: \"about\" });\n } else {\n this.setState({ currentSection: \"\" });\n }\n }\n };\n\n // from bottom up\n ScrollReveal().reveal(\".scrollReveal\", {\n viewOffset: {\n bottom: 60,\n },\n distance: \"30px\",\n });\n // from left\n ScrollReveal().reveal(\".scrollRevealX\", {\n origin: \"left\",\n distance: \"30px\",\n viewOffset: {\n bottom: 60,\n },\n });\n ScrollReveal().reveal(\".responsiveWeb\", {\n viewOffset: {\n bottom: 60,\n },\n duration: 0,\n afterReveal: () => {\n this.setState({ webGraphicsVisible: true });\n },\n });\n }\n\n render() {\n return (\n
\n
\n {\n window.isMouseDown = true;\n this.setState({ isAnimating: false });\n }}\n onTouchEnd={() => {\n window.isMouseDown = false;\n }}\n >\n
\n
\n
\n
Hello! My name is
\n
Amer Albareedi
\n
\n
\n\n
\n \n \n \n \n \n
\n
\n
\n I am a Front-End Web Developer helping businesses establish an\n impactful online presence by creating high-quality websites\n optimized to best serve their users.\n
\n\n \n
\n \n
\n
\n\n \n \n \n \n \n \n \n \n
\n Responsive Web Design\n
\n
\n\n
\n About Me\n
\n\n
\n Being able to build websites has been a dream of mine ever since\n I can remember while surfing the web in the early 2000's. From\n the dial-up tone, to dodging pop-ups, and getting disconnected\n whenever the phone rang, I had assumed that developing a website\n was rocket science. Years later, I picked up graphic design and\n became fascinated with UI/UX, collectively sparking my affinity\n towards learning front-end development. Deconstructing and\n recreating popular websites helped me decipher the \"magic\"\n behind the world wide web. With tons of practice on modern day\n concepts under my belt, I have a solid foundation of the\n fundamentals required to being an asset on any team. I am ready\n to work and desire the opportunity in achieving success.\n
\n\n \n\n
\n \n
Progression is my obsession.
\n \n
\n\n {\n this.carouselTouchStartX = event.touches[0].clientX;\n this.setState({ carouselAutoPlay: false });\n }}\n onTouchMove={(event) => {\n let startX = this.carouselTouchStartX;\n let x = event.touches[0].clientX;\n\n if (Math.abs(startX - x) > 30) {\n disableScroll();\n }\n }}\n onTouchEnd={(event) => {\n enableScroll();\n }}\n >\n {\n this.carousel = element;\n }}\n // disableButtonsControls={true}\n // disableAutoPlayOnAction={true}\n autoPlay={this.state.carouselAutoPlay}\n autoPlayStrategy={\"all\"}\n autoPlayInterval={3000}\n mouseTracking={true}\n infinite={true}\n >\n \n \n \n \n
\n\n
Skills
\n
\n \n
\n
\n
\n Properly formatted structuring.\n
\n
\n
\n
\n
\n Accessibility and SEO friendly syntax always prioritized.\n
\n
\n
\n
\n
\n Cross browser compatibility.\n
\n
\n
\n\n \n
\n
\n
\n
\n Proficient understanding of The Box Model, along with\n Flexbox, Grid, & position.\n
\n
\n
\n
\n
DOM-based animation.
\n
\n
\n
\n
\n \n
Bootstrap
\n
\n
\n \n
SASS
\n
\n
\n \n\n \n
\n
\n
\n Making the DOM functional.\n
\n
\n
\n
\n
\n CRUD experience with using fetch.\n
\n
\n
\n
\n \n
React
\n
\n
\n \n
jQuery
\n
\n
\n \n
\n\n
\n
Design Tools
\n
\n
\n \n
Illustrator
\n
\n
\n \n
Photoshop
\n
\n
\n
\n\n
\n
\n \n \n \n
\n
\n Check out my social medias\n
\n
\n \n \n\n
\n
\n
Projects
\n\n \n \n
\n
Orthodontic
\n
SPECIALTY CENTER
\n
\n
\n }\n githubHref=\"https://github.com/aalbareedi/braces-specialist\"\n projectObjective=\"Modernize a website which is from the early 90's for one of Chicago's top dental clinics.\"\n results={\n
\n
\n
Before
\n \n
\n
\n
After
\n \n
\n \n
\n
\n
\n }\n process=\"The first step\n in starting this project was identifying the main aspects that\n contribute to crafting an efficient online interaction. After\n reviewing research, I was able to recognize who is the target\n audience, what is the company's overall intended goal, and which\n content needs to be displayed. Upon confirming the most\n user-friendly layout, it was time to start coding. I proceeded with\n a mobile-first approach as I believe prioritizing the mobile\n experience is absolutely essential in this day and age. I chose not\n to use any pre-existing templates guaranteeing complete control of\n customization, in addition to putting my skills to the test in\n making sure they are up to par.\"\n outcome={\n
\n Outcome: Since\n launching the renovated website, the results produced have\n exceeded expectations beyond what anyone had imagined.\n Within the first 6 months, the clinic set a personal\n all-time record for the most amount of new cases initiated\n in a single day ranging over a 30+ year span. There also was\n a significant increase (over 30%) in the average amount of\n new patients reported to discovering the clinic through\n Google. This goes to show that the Search Engine\n Optimization of the website was thoroughly accounted for and\n meets modern standards. Being able to boost a local business\n with a website that is aesthetically pleasing while\n functionally performing inspires me to continue grinding in\n becoming a top-tier developer, so that I can continue to\n help hardworking professionals grow their business online.\n
\n }\n projectQuote={\n
\n \n \n
\n Amer is the best web developer ever. He did a marvelous\n job on my website.\n
\n
\n }\n />\n\n \n {/* */}\n
Wall App
\n\n \n
\n }\n githubHref=\"https://github.com/aalbareedi/wall-app\"\n projectObjective=\"Develop an application that allows users to register, login, and write on a wall.\"\n process=\"...\"\n />\n \n \n\n
\n
\n
Let's Get To Work
\n
\n Send me a message below and I will get back to you with an email\n ASAP\n
\n\n {\n event.preventDefault();\n this.sendEmail();\n }}\n >\n
\n
\n {\n this.setState({ nameInputValue: event.target.value });\n }}\n // to clear the input\n value={this.state.nameInputValue}\n />\n
Full Name
\n
\n \n
\n
\n
\n\n
\n
\n {\n this.setState({ emailInputValue: event.target.value });\n }}\n value={this.state.emailInputValue}\n />\n
Email Address
\n
\n \n
\n
\n
\n\n
\n
\n {\n this.setState({\n messageInputValue: event.target.value,\n });\n }}\n value={this.state.messageInputValue}\n >\n
What's on your mind?
\n
\n
\n\n
\n \n
\n \n
\n {\n scrollToY(this, 0);\n this.setState({ currentSection: \"\" });\n }}\n >\n \n \n Back To Top\n \n \n
\n
\n
\n\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n\n \n
\n
\n \n
\n
\n {this.state.overlayTitle}\n
\n
{this.state.overlayMessage}
\n
\n \n \n\n \n {\n this.setState({ isMenuOpen: false, currentSection: \"about\" });\n scrollToY(this, this.aboutSection.current.offsetTop - 80);\n enableScroll();\n }}\n >\n About\n \n {\n this.setState({ isMenuOpen: false, currentSection: \"portfolio\" });\n scrollToY(this, this.portfolioSection.current.offsetTop - 50);\n enableScroll();\n }}\n >\n Portfolio\n \n {\n this.setState({ isMenuOpen: false, currentSection: \"contact\" });\n scrollToY(this, this.contactSection.current.offsetTop - 50);\n enableScroll();\n }}\n >\n Contact\n \n \n\n {\n this.setState({\n isMenuOpen: false,\n isScrolled: false,\n currentSection: \"\",\n });\n scrollToY(this, 0);\n enableScroll();\n }}\n >\n \n
Amer Albareedi
\n
Front-End Web Developer
\n {\n event.stopPropagation();\n }}\n >\n View My Resume\n \n
\n {\n event.stopPropagation();\n event.preventDefault();\n this.setState({ currentSection: \"about\" });\n scrollToY(this, this.aboutSection.current.offsetTop - 100);\n }}\n className={\n this.state.currentSection == \"about\" ? \"currentNav\" : \"\"\n }\n >\n About\n \n {\n event.stopPropagation();\n event.preventDefault();\n this.setState({ currentSection: \"portfolio\" });\n scrollToY(this, this.portfolioSection.current.offsetTop - 70);\n }}\n className={\n this.state.currentSection == \"portfolio\" ? \"currentNav\" : \"\"\n }\n >\n Portfolio\n \n {\n event.stopPropagation();\n event.preventDefault();\n this.setState({ currentSection: \"contact\" });\n scrollToY(this, this.contactSection.current.offsetTop - 60);\n }}\n className={\n this.state.currentSection == \"contact\" ? \"currentNav\" : \"\"\n }\n >\n Contact\n \n
\n \n\n {\n this.toggleMenu(event);\n }}\n >\n \n \n \n \n \n \n \n );\n }\n}\n\nexport default App;\n", "import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport App from \"./app\";\n// import * as serviceWorker from \"./serviceWorker\";\n\nReactDOM.render(\n \n \n ,\n document.querySelector(\"#root\")\n);\n" ], "sourceRoot": "" }