{"version":3,"sources":["utils/Transition.js","utils/Dropdown.js","include/Header.js","include/HeroHome.js","include/ProjectsHome.js","include/HomeLastDescription.js","include/Footer.js","pages/Home.js","pages/NotFound.js","App.js","serviceWorker.js","index.js"],"names":["TransitionContext","React","createContext","parent","CSSTransition","show","enter","enterStart","enterEnd","leave","leaveStart","leaveEnd","appear","unmountOnExit","tag","children","rest","enterClasses","split","filter","s","length","enterStartClasses","enterEndClasses","leaveClasses","leaveStartClasses","leaveEndClasses","removeFromDom","addClasses","node","classes","classList","add","removeClasses","remove","nodeRef","useRef","Component","in","addEndListener","done","current","addEventListener","onEnter","style","display","onEntering","onEntered","onExit","onExiting","onExited","ref","Transition","useContext","isInitialRender","useEffect","useIsInitialRender","undefined","Provider","value","Dropdown","title","dropdownOpen","setDropdownOpen","useState","className","onMouseEnter","onMouseLeave","onFocus","onBlur","href","onClick","e","preventDefault","viewBox","xmlns","d","Header","top","setTop","scrollHandler","window","pageYOffset","removeEventListener","to","src","alt","width","height","HeroHome","x1","y1","x2","y2","id","stopColor","offset","fill","fillRule","cx","cy","r","target","rel","Projects_home","rx","ContactInfo","transform","Footer","Home","property","content","name","ProjectsHome","HomeLastDescription","NotFound","App","location","useLocation","AOS","init","once","disable","duration","easing","document","querySelector","scrollBehavior","scroll","focusHandling","pathname","exact","path","Boolean","hostname","match","ReactDOM","render","StrictMode","getElementById","navigator","serviceWorker","ready","then","registration","unregister","catch","error","console","message"],"mappings":"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","file":"static/js/main.b7139362.chunk.js","sourcesContent":["import React, { useRef, useEffect, useContext } from 'react';\nimport { CSSTransition as ReactCSSTransition } from 'react-transition-group';\n\nconst TransitionContext = React.createContext({\n parent: {},\n})\n\nfunction useIsInitialRender() {\n const isInitialRender = useRef(true);\n useEffect(() => {\n isInitialRender.current = false;\n }, [])\n return isInitialRender.current;\n}\n\nfunction CSSTransition({\n show,\n enter = '',\n enterStart = '',\n enterEnd = '',\n leave = '',\n leaveStart = '',\n leaveEnd = '',\n appear,\n unmountOnExit,\n tag = 'div',\n children,\n ...rest\n}) {\n const enterClasses = enter.split(' ').filter((s) => s.length);\n const enterStartClasses = enterStart.split(' ').filter((s) => s.length);\n const enterEndClasses = enterEnd.split(' ').filter((s) => s.length);\n const leaveClasses = leave.split(' ').filter((s) => s.length);\n const leaveStartClasses = leaveStart.split(' ').filter((s) => s.length);\n const leaveEndClasses = leaveEnd.split(' ').filter((s) => s.length);\n const removeFromDom = unmountOnExit;\n\n function addClasses(node, classes) {\n classes.length && node.classList.add(...classes);\n }\n\n function removeClasses(node, classes) {\n classes.length && node.classList.remove(...classes);\n }\n\n const nodeRef = React.useRef(null);\n const Component = tag;\n\n return (\n {\n nodeRef.current.addEventListener('transitionend', done, false)\n }}\n onEnter={() => {\n if (!removeFromDom) nodeRef.current.style.display = null;\n addClasses(nodeRef.current, [...enterClasses, ...enterStartClasses])\n }}\n onEntering={() => {\n removeClasses(nodeRef.current, enterStartClasses)\n addClasses(nodeRef.current, enterEndClasses)\n }}\n onEntered={() => {\n removeClasses(nodeRef.current, [...enterEndClasses, ...enterClasses])\n }}\n onExit={() => {\n addClasses(nodeRef.current, [...leaveClasses, ...leaveStartClasses])\n }}\n onExiting={() => {\n removeClasses(nodeRef.current, leaveStartClasses)\n addClasses(nodeRef.current, leaveEndClasses)\n }}\n onExited={() => {\n removeClasses(nodeRef.current, [...leaveEndClasses, ...leaveClasses])\n if (!removeFromDom) nodeRef.current.style.display = 'none';\n }}\n >\n {children}\n \n )\n}\n\nfunction Transition({ show, appear, ...rest }) {\n const { parent } = useContext(TransitionContext);\n const isInitialRender = useIsInitialRender();\n const isChild = show === undefined;\n\n if (isChild) {\n return (\n \n )\n }\n\n return (\n \n \n \n )\n}\n\nexport default Transition;","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Transition from '../utils/Transition.js';\n\nfunction Dropdown({\n children,\n title\n}) {\n\n const [dropdownOpen, setDropdownOpen] = useState(false);\n\n return (\n setDropdownOpen(true)}\n onMouseLeave={() => setDropdownOpen(false)}\n onFocus={() => setDropdownOpen(true)}\n onBlur={() => setDropdownOpen(false)}\n >\n e.preventDefault()}\n >\n {title}\n \n \n \n \n \n {children}\n \n \n );\n}\n\nexport default Dropdown;\n\nDropdown.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.element),\n PropTypes.element.isRequired\n ]),\n title: PropTypes.string.isRequired,\n};\n","import React, { useState, useEffect } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport Dropdown from '../utils/Dropdown';\n\nfunction Header() {\n\n const [top, setTop] = useState(true);\n\n useEffect(() => {\n const scrollHandler = () => {\n window.pageYOffset > 10 ? setTop(false) : setTop(true)\n };\n window.addEventListener('scroll', scrollHandler);\n return () => window.removeEventListener('scroll', scrollHandler);\n }, [top]);\n\n return (\n
\n
\n
\n
\n \n logo\n \n
\n \n
\n
\n
\n );\n}\n\nexport default Header;","import React from 'react';\nimport { Link } from 'react-router-dom';\n\nfunction HeroHome() {\n\n return (\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n

안녕하세요
삼해트입니다!

\n
\n

이것저것 개발하면서 즐기고 있는 학생 개발자입니다.

\n
\n \n
\n \n \n \n
\n
\n
\n
\n
\n
\n
\n );\n}\n\nexport default HeroHome;","import React from 'react';\nimport { Link } from 'react-router-dom'\n\nfunction Projects_home() {\n return (\n
\n
\n
\n\n
\n
\n
\n

제가 진행한 프로젝트들

\n

제가 진행했거나, 진행중인 대표 프로젝트 목록이에요!
자세한 사항은 여기에서 확인할 수 있어요.

\n
\n
\n
\n Team HT LOGO\n

Team HT

\n

Team HT, 디스코드를 더욱 즐겁게.

\n
\n \n \n \n
\n\n
\n 홍보숲 LOGO\n

홍보숲

\n

즐겁고 다양하게, 홍보숲입니다.

\n
\n \n \n \n
\n\n
\n DisTube LOGO\n

DisTube

\n

DisTube, 디스코드 지식을 알아가는 공간

\n
\n \n \n \n
\n\n
\n UniqueCode LOGO\n

UniqueCode

\n

당신의 디스코드에 유니크한 재미를 더.

\n
\n \n \n \n
\n\n
\n Discord Korea LOGO\n

삼해트의 공방

\n

삼해트의 공방입니다.

\n
\n \n \n \n
\n\n
\n Studio Orora LOGO\n

Studio Orora

\n

Studio Orora입니다.

\n
\n \n \n \n
\n\n
\n
\n
\n
\n );\n}\n\nexport default Projects_home;","import React from 'react';\nimport { Link } from 'react-router-dom';\n\nfunction ContactInfo() {\n return (\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n\n
\n
\n
\n

다양한 정보

\n

\n 저에 대한 다양한 정보는 제 소개에서 확인하실 수 있어요.
\n 저에게 개인적으로 연락하고 싶으시다면
samsunghappytree123@naver.com으로 연락주세요.

\n 이 페이지에 와주셔서 감사해요!\n

\n
\n
\n
\n
\n );\n}\n\nexport default ContactInfo;","import React from 'react';\n\nfunction Footer() {\n return (\n \n );\n}\n\nexport default Footer;\n","import React from 'react';\nimport MetaTags from 'react-meta-tags';\n\nimport Header from '../include/Header';\nimport HeroHome from '../include/HeroHome';\nimport ProjectsHome from '../include/ProjectsHome';\nimport HomeLastDescription from '../include/HomeLastDescription';\nimport Footer from '../include/Footer';\n\nfunction Home() {\n\n return (\n <>\n \n \n \n 홈 | 삼해트\n \n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n \n );\n}\n\nexport default Home;","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport MetaTags from 'react-meta-tags';\n\nimport Header from '../include/Header';\nimport Footer from '../include/Footer';\n\nfunction NotFound() {\n\n return (\n <>\n \n \n \n 404 | 삼해트\n \n\n
\n
\n
\n
\n
\n
\n
\n

404

\n

요청한 페이지가 존재하지 않습니다.

\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n );\n}\n\nexport default NotFound;","import React, { useEffect } from 'react';\nimport {\n Switch,\n Route,\n useLocation\n} from 'react-router-dom';\n\nimport './css/style.scss';\n\nimport AOS from 'aos';\nimport { focusHandling } from 'cruip-js-toolkit';\n\nimport Home from './pages/Home';\nimport NotFound from './pages/NotFound';\n\nfunction App() {\n\n const location = useLocation();\n\n useEffect(() => {\n AOS.init({\n once: true,\n disable: 'phone',\n duration: 700,\n easing: 'ease-out-cubic',\n });\n });\n\n useEffect(() => {\n document.querySelector('html').style.scrollBehavior = 'auto'\n window.scroll({ top: 0 })\n document.querySelector('html').style.scrollBehavior = ''\n focusHandling('outline');\n }, [location.pathname]);\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","const isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n window.location.hostname === '[::1]' ||\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 function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n checkValidServiceWorker(swUrl, config);\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\n function registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n \n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n console.log('Content is cached for offline use.');\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n }\n \n function checkValidServiceWorker(swUrl, config) {\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n }\n \n export function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n }\n ","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter as Router } from \"react-router-dom\";\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('root')\n);\n\nserviceWorker.unregister();\n"],"sourceRoot":""}