{"version":3,"sources":["utils/api/api.js","components/pages/Home/homeInfo.jsx","components/pages/Home/index.jsx","components/common/pagination.js","utils/utils.js","components/pages/Exhibition/exhibitionList.jsx","components/pages/Exhibition/exhibitionSlide.jsx","components/pages/Exhibition/index.jsx","components/pages/Exhibition/exhibitionDetail.jsx","components/pages/iGallery/galleryInfo.jsx","components/pages/iGallery/artistsList.jsx","components/pages/iGallery/artworkList.jsx","components/pages/iGallery/index.jsx","components/pages/ArtShop/artShopList.jsx","components/pages/ArtShop/index.jsx","components/pages/ArtShop/artShopDetail.jsx","components/pages/Notice/index.jsx","components/pages/Notice/noticeDetail.jsx","components/pages/About/directions.jsx","components/pages/Search/searchResult.jsx","components/pages/Search/index.jsx","routes/routes.js","components/pages/About/index.jsx","components/common/error.jsx","components/common/header.jsx","components/common/footer.jsx","layouts/LayoutGallery.js","components/common/loading.jsx","layouts/LayoutHome.js","layouts/LayoutError.js","layouts/AppRoute.js","App.js","registerServiceWorker.js","index.js"],"names":["api","axios","create","baseURL","homeApi","section_cd","get","noticeApi","current_page","routes","notice","board_se","noticeDetail","artShopApi","page_size","filter","board_sc_cd","exhibitionApi","exhibition","exhibits_se","exhibitionDetail","exhibits_sc","year","iGalleryApi","igallery","artist_se","searchApi","search_va","search","HomeInfo","useState","slideData","setSlideData","galleryData","setGalleryData","artistList","setArtistList","swiperCurrentNumber","setSwiperCurrentNumber","swiperTotalCount","setSwiperTotalCount","playToggle","setPlayToggle","swipeElement","useRef","Swiper","use","Autoplay","EffectFade","Scrollbar","useEffect","getExhibitionInfo","length","current","slidesPerView","loop","effect","simulateTouch","autoplay","delay","disableOnInteraction","scrollbar","el","draggable","on","activeIndexChange","this","realIndex","slideChange","setTimeout","start","destroy","then","response","status","data","catch","currentGallery","error","console","log","galleryDate","date","slice","month","day","className","igallery_tt","start_dt","end_dt","map","index","key","name","artistNameDiv","artist_nm","to","src","alt","row","banner_se","IMAGE_URL","image_lk","onClick","stop","prev","MainIndex","PaginationEx","dataCount","activePage","itemsCountPerPage","pageRangeDisplayed","onChange","hideFirstLastPages","totalCount","SetTotalCount","totalItemsCount","prevPageText","nextPageText","Paging","loading","Number","postCount","handleCheckImgSize","e","targetImg","target","offsetHeight","offsetWidth","parentNode","classList","add","ExhibitionList","exhibitSection","isLoading","setLoading","artWorkList","setArtWorkList","currentPage","setCurrentPage","totalDataCnt","setTotalDataCnt","yearList","setYearList","selectYear","setSelectYear","tempYearArr","setTempYearArr","history","useHistory","getSelectYear","getExhibitsMainList","i","push","count","finally","TenseData","monthNumber","Date","getMonth","getFullYear","value","event","currentYear","Object","values","onLoad","thumbnail_lk","exhibits_tt","ExhibitionSlide","exhibitionSlide","setEhibitionSlide","Navigation","Pagination","getExhibitionSlide","spaceBetween","autoWidth","centeredSlides","allowTouchMove","breakpointsInverse","navigation","nextEl","prevEl","ref","work_yr","size_if","comment_if","ExhibitionIndex","section","setSection","handleTense","tenseClass","ExhibitionDetail","useParams","detailPost","setDetailPost","dangerouslySetInnerHTML","__html","exhibits_ct","IGalleryInfoPresenter","galleryInfoData","setGalleryInfoData","slides","id","image_se","start_string","end_string","ArtistsList","setArtiseNumber","artistData","setArtistData","autoHeight","clickable","type","changedArtistNumber","artist","artist_eng_nm","insta_lk","href","rel","ArtworkList","artistNumber","artworksList","setArtworkList","getArtworkList","IGalleryMain","ArtShopList","sectionPath","process","datas","setDatas","prevBoardSection","setPrevBoardSection","order","getArtshopList","page","boardSection","listOrder","post","artshopDetail","isSoldOut","badge_new","badge_best","badge_sale","board_tt","cancel_price_mo","toLocaleString","price_mo","isPriceDisplayed","ArtShop","original","setOriginal","artPoster","setArtPoster","goods","setGoods","setFilter","handleItemsKind","kind","state","itemKindClassOn","ArtShopDetail","board_sc","shopDetail","setShopDetail","randomItems","setRandomItems","images","setImages","SECTION","getExhibitDetail","boardSc","boardSe","alert","message","pagination","image","board_sc_tt","purchase_lk","stock_yn","Notice","allPost","setAllPost","setError","getNoticeList","pageNumber","is_notice","record_dt","Directions","container","undefined","window","kakao","options","center","maps","LatLng","level","Map","markerPosition","Marker","position","setMap","txtBubbles","document","querySelectorAll","txtBubbleChild","querySelector","startPop","txtPop","setInterval","clearInterval","t","remove","stopPop","Holiday","SearchResult","searchVa","setSearchValue","setResultCount","artwork","setArtwork","allItems","setAllItems","getSearchArtWorkList","Promise","all","worksResponse","itemsResponse","worksData","itemsData","parseInt","result","home","artshop","directions","about","components","Home","Exhibition","iGallery","setSearchVa","tempValue","setTempValue","resultCount","inputSearchRef","handleChange","handleSearchAgain","handleResultCount","handleSearchValue","handleEnter","blur","placeholder","onKeyDown","userAgent","navigator","toLowerCase","includes","boardNum","setBoardNum","detailImage","setDetailImage","getNewsDetail","detailPostResponse","detailImageResponse","detailPostData","detailImageData","handleOtherNews","board_ct","prev_board_se","next_board_se","Header","url","location","useLocation","separateHeader","setSeparateHeader","rootSearch","setRootSearch","btnSearch","setBtnSearch","btnHamburger","setBtnHamburger","pathname","scrollTo","getElementById","urlMatching","searchbtnHidden","pathnameMatching","some","handleMobileKeyPad","mobileDepth","focus","innerWidth","onKeyUp","keyCode","Footer","open","hidden","LayoutGallery","children","currentPathname","props","Loading","firstLoading","yellowG","setYellowG","iconHeart","setIconHeart","artTextRef","galleryTextRef","artTextNumber","galleryTxtNumber","artText","galleryText","item","LayoutHome","LayoutError","AppRoute","Component","component","Layout","layout","rest","render","App","path","exact","Boolean","hostname","match","baseUrl","getElementsByTagName","getAttribute","rootElement","ReactDOM","basename","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.07630f47.chunk.js","sourcesContent":["import axios from \"axios\";\r\nimport { routes } from \"../../routes/routes\";\r\n\r\nconst api = axios.create({\r\n baseURL: \"/\"\r\n});\r\n\r\n//각 URL에 맞게 컨트롤러와 통신하여 json 오브젝트를 받아오는 것들\r\n\r\nexport const homeApi = {\r\n getBannerSlide: (section_cd) => api.get(`Home/Slide?section_cd=${section_cd}`),\r\n topBanner: (banner_sc) => api.get(`Home/topbanner/${banner_sc}`),\r\n}\r\n\r\nexport const noticeApi = {\r\n allPost: (current_page) => api.get(`${routes.notice}/${current_page}`),\r\n detailPost: (board_se) => api.get(`${routes.noticeDetail}/Content/${board_se}`),\r\n detailImage: (board_se) => api.get(`${routes.noticeDetail}/Content/Image/${board_se}`),\r\n}\r\n\r\nexport const artShopApi = {\r\n //아트샵 (Original)\r\n getExhibitList: (current_page, page_size, filter) => api.get(`api/ArtShop/exhibition?current_page=${current_page}&page_size=${page_size}&filter=${filter}`),\r\n getExhibitDetail: (board_se) => api.get(`api/ArtShop/exhibition/${board_se}`),\r\n\r\n //아트샵 (Poster, Goods)\r\n getArtShopList: (current_page, page_size, board_sc_cd, filter) => api.get(`api/ArtShop/stuff?current_page=${current_page}&page_size=${page_size}&board_sc_cd=${board_sc_cd}&filter=${filter}`),\r\n getArtShopDetail: (board_se) => api.get(`api/ArtShop/stuff/${board_se}`),\r\n}\r\n\r\nexport const exhibitionApi = {\r\n allSlide: () => api.get(`${routes.exhibition}/Slide`),\r\n allYear: () => api.get(`${routes.exhibition}/Year`),\r\n detailPost: (exhibits_se) => api.get(`${routes.exhibitionDetail}/Content/${exhibits_se}`),\r\n ExhibitsMainList: (current_page, page_size, exhibits_sc, year) => api.get(`${routes.exhibition}/Main?current_page=${current_page}&page_size=${page_size}&exhibits_sc=${exhibits_sc}&year=${year}`)\r\n}\r\n\r\nexport const iGalleryApi = {\r\n detailInfo: () => api.get(`${routes.igallery}/info`),\r\n detailIntro: () => api.get(`${routes.igallery}/intro`),\r\n detailArtist: () => api.get(`${routes.igallery}/artist`),\r\n allWorks: (artist_se) => api.get(`${routes.igallery}/works/${artist_se}`),\r\n allSlide: () => api.get(`${routes.igallery}/info/slide`),\r\n}\r\n\r\nexport const searchApi = {\r\n allWorks: (search_va) => api.get(`${routes.search}/Works/${search_va}`),\r\n allItems: (search_va) => api.get(`${routes.search}/Shop/${search_va}`),\r\n}","import React, { useState, useEffect, useRef } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { routes } from \"../../../routes/routes\";\r\nimport Swiper, { Autoplay, EffectFade, Scrollbar } from \"swiper\";\r\nimport { homeApi, iGalleryApi } from \"../../../utils/api/api\";\r\n\r\nconst IMAGE_URL = process.env.REACT_APP_IMAGE_URL_GALLERY;\r\nconst HOME = process.env.REACT_APP_PATH_MAIN_BANNER;\r\nconst IMAGE = process.env.REACT_APP_PATH_IMAGE;\r\n\r\n/** 홈 슬라이드 코드 */\r\nconst SLIDE_CODE = 1;\r\n\r\nconst HomeInfo = () => {\r\n const [slideData, setSlideData] = useState([]);\r\n const [galleryData, setGalleryData] = useState([]);\r\n const [artistList, setArtistList] = useState([]);\r\n const [swiperCurrentNumber, setSwiperCurrentNumber] = useState(1);\r\n const [swiperTotalCount, setSwiperTotalCount] = useState(1);\r\n const [playToggle, setPlayToggle] = useState(false);\r\n const swipeElement = useRef(null);\r\n Swiper.use([Autoplay, EffectFade, Scrollbar]);\r\n\r\n useEffect(() => {\r\n getExhibitionInfo();\r\n }, []);\r\n\r\n /** 아트웍 슬라이드 업데이트 */\r\n useEffect(() => {\r\n if (slideData.length > 0) {\r\n swipeElement.current = new Swiper(\".action-wrap\", {\r\n slidesPerView: 1,\r\n loop: true,\r\n effect: \"fade\",\r\n simulateTouch: true,\r\n autoplay: {\r\n delay: 3400,\r\n disableOnInteraction: false,\r\n },\r\n scrollbar: {\r\n el: '.swiper-scrollbar',\r\n draggable: true,\r\n },\r\n on: {\r\n activeIndexChange: function () {\r\n setSwiperCurrentNumber(this.realIndex + 1);\r\n setPlayToggle(false); // 마우스 스와이프 시 재생으로 전환\r\n },\r\n slideChange : function () { // 재생 버튼 클릭 시 activeIndexChange에서 setPlayToggle값 리셋\r\n setTimeout(() => {\r\n if (swipeElement.current && swipeElement.current.autoplay) {\r\n swipeElement.current.autoplay.start();\r\n }\r\n }, 10);\r\n }\r\n }\r\n });\r\n\r\n return () => {\r\n swipeElement.current && swipeElement.current.destroy();\r\n };\r\n }\r\n }, [slideData]);\r\n\r\n const getExhibitionInfo = () => {\r\n /** GET 전시 중인 아트웍 슬라이드 리스트 */\r\n if (slideData !== null) {\r\n homeApi.getBannerSlide(SLIDE_CODE)\r\n .then((response) => {\r\n const { status, data } = response;\r\n\r\n if (status === 200) {\r\n setSlideData(data.data);\r\n setSwiperTotalCount(data.data.length);\r\n }\r\n })\r\n .catch(() => {\r\n setSlideData([]);\r\n })\r\n }\r\n\r\n /** GET 전시 정보 */\r\n if (galleryData !== null) {\r\n iGalleryApi.detailInfo()\r\n .then((response) => {\r\n const { status, data } = response;\r\n\r\n if (status === 200) {\r\n setGalleryData(data.currentGallery);\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n })\r\n }\r\n\r\n /** GET 작가 이름 리스트 */\r\n if (artistList !== null) {\r\n iGalleryApi.detailArtist()\r\n .then((response) => {\r\n const { data } = response;\r\n\r\n setArtistList(data.data);\r\n })\r\n .catch((error) => {\r\n console.log(error)\r\n });\r\n }\r\n }\r\n\r\n /** 연월일 구분 */\r\n const galleryDate = (date) => {\r\n if (!date) {\r\n return;\r\n }\r\n\r\n const year = date.slice(0, 4);\r\n const month = date.slice(4, 6);\r\n const day = date.slice(6, 8);\r\n\r\n return `${year}.${month}.${day}`;\r\n }\r\n\r\n /** 작가 리스트 표출 */\r\n const artistNameDiv = (name) => {\r\n if (!name) {\r\n return;\r\n }\r\n if (name.length >= 1) {\r\n return name;\r\n }\r\n }\r\n\r\n /** 재생, 정지 버튼 클릭 이벤트 */\r\n const handlePlay = () => {\r\n if (playToggle) {\r\n swipeElement.current.autoplay.start();\r\n \r\n } else {\r\n swipeElement.current.autoplay.stop();\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n

\r\n We\r\n Love\r\n Art.\r\n

\r\n <>\r\n {\r\n galleryData && (\r\n <>\r\n
{galleryData.igallery_tt}
\r\n
{galleryDate(galleryData.start_dt)} ~ {galleryDate(galleryData.end_dt)}
\r\n \r\n \r\n )\r\n }\r\n \r\n
\r\n 더 많은 전시작품 보러가기\r\n
\r\n
\r\n <>\r\n {\r\n slideData.length === 0 ? (\r\n
\r\n
\r\n
    \r\n
  1. \r\n \"empty\"\r\n
  2. \r\n
\r\n
\r\n
\r\n ) : (\r\n
\r\n
\r\n
    \r\n {\r\n slideData && slideData.map((row) => (\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n ))\r\n }\r\n
\r\n
\r\n
\r\n
\r\n
{swiperCurrentNumber}
/ {swiperTotalCount}\r\n
\r\n
{\r\n handlePlay();\r\n setPlayToggle((prev) => !prev);\r\n }}>\r\n {\r\n playToggle ? (\r\n
\"시작
\r\n ) : (\r\n
\"정지
\r\n )\r\n }\r\n
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n \r\n \r\n )\r\n}\r\n\r\nexport default HomeInfo;","import React from \"react\";\r\nimport HomeInfo from \"./homeInfo\";\r\n\r\nconst MainIndex = () => {\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default MainIndex;\r\n","import React, { useState, useEffect } from 'react';\r\nimport Pagination from \"react-js-pagination\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nexport const PaginationEx = ({\r\n dataCount,\r\n activePage,\r\n itemsCountPerPage,\r\n pageRangeDisplayed,\r\n onChange,\r\n hideFirstLastPages,\r\n}) => {\r\n const [totalCount, SetTotalCount] = useState(0);\r\n\r\n useEffect(() => {\r\n SetTotalCount(dataCount);\r\n }, [dataCount]);\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nconst Paging = ({ data, loading, error, activePage, itemsCountPerPage, pageRangeDisplayed, onChange, hideFirstLastPages }) =>\r\n loading ? (\r\n \r\n ) : (\r\n \r\n );\r\n\r\nPaging.propTypes = {\r\n data: PropTypes.array,\r\n loading: PropTypes.bool.isRequired,\r\n error: PropTypes.string,\r\n activePage: PropTypes.number,\r\n itemsCountPerPage: PropTypes.number,\r\n pageRangeDisplayed: PropTypes.number,\r\n onChange: PropTypes.func\r\n}\r\n\r\nexport default Paging;","/** 이미지 가로, 세로 사이즈 비교 후 상위 요소에 클래스 추가 */\r\nexport const handleCheckImgSize = (e) => {\r\n const targetImg = e.target;\r\n targetImg.offsetHeight > targetImg.offsetWidth ? targetImg.parentNode.parentNode.classList.add('vertical') : targetImg.parentNode.parentNode.classList.add('horizon');\r\n}","import React, { useState, useEffect } from 'react';\r\nimport { routes } from \"../../../routes/routes\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { exhibitionApi } from \"../../../utils/api/api\";\r\nimport { PaginationEx } from \"../../common/pagination\";\r\nimport { handleCheckImgSize } from \"../../../utils/utils\";\r\n\r\nconst PAGE_SIZE = 9;\r\nconst IMAGE_URL = process.env.REACT_APP_IMAGE_URL_GALLERY;\r\nconst EXHIBITION = process.env.REACT_APP_PATH_EXHIBITION;\r\nconst THUMBNAIL = process.env.REACT_APP_PATH_THUMBNAIL;\r\n\r\nconst ExhibitionList = ({ exhibitSection }) => {\r\n const pastYearList = [];\r\n const [isLoading, setLoading] = useState(false);\r\n const [artWorkList, setArtWorkList] = useState([]);\r\n const [currentPage, setCurrentPage] = useState(1);\r\n const [totalDataCnt, setTotalDataCnt] = useState(1);\r\n const [yearList, setYearList] = useState(pastYearList);\r\n const [selectYear, setSelectYear] = useState(0);\r\n const [tempYearArr, setTempYearArr] = useState([]);\r\n const history = useHistory();\r\n\r\n /** 과거 탭 클릭 시 */\r\n useEffect(() => {\r\n if (exhibitSection === \"과거\") {\r\n getSelectYear();\r\n }\r\n else {\r\n setYearList([]);\r\n }\r\n\r\n getExhibitsMainList(currentPage, selectYear);\r\n }, [currentPage, exhibitSection]);\r\n\r\n /** 과거 연도 리스트의 데이터, 배열로 변환 */\r\n useEffect(() => {\r\n for (let i = 0; i < yearList.length; i++) {\r\n tempYearArr.push(yearList[i]);\r\n }\r\n setTempYearArr(tempYearArr);\r\n }, [yearList]);\r\n\r\n /** GET 작품 리스트 */\r\n const getExhibitsMainList = (currentPage, selectYear = 0) => {\r\n setLoading(true);\r\n // 현재,예정 전시작품은 selectYear = 0, 과거 전시작품 에는 selectYear > 0\r\n exhibitionApi.ExhibitsMainList(currentPage, PAGE_SIZE, exhibitSection, selectYear)\r\n .then((response) => {\r\n const { status, data } = response;\r\n if (status === 200) {\r\n setArtWorkList(data.data);\r\n setTotalDataCnt(Number(data.count));\r\n }\r\n })\r\n .catch(() => {\r\n setArtWorkList([]);\r\n setTotalDataCnt(0);\r\n })\r\n .finally(() => {\r\n setLoading(false)\r\n })\r\n }\r\n\r\n /** GET 과거작품 연도 리스트 가져오기 */\r\n const getSelectYear = () => {\r\n exhibitionApi.allYear()\r\n .then((response) => {\r\n const { status, data } = response;\r\n\r\n if (status === 200) {\r\n setYearList(data);\r\n }\r\n })\r\n .catch(() => {\r\n setYearList([]);\r\n })\r\n }\r\n\r\n /** 페이지네이션 클릭 이벤트 */\r\n const handlePageChange = (currentPage) => {\r\n setCurrentPage(currentPage);\r\n getExhibitsMainList(currentPage);\r\n }\r\n\r\n /** 과거 연도 select 클릭 이벤트 */\r\n const handleYearChange = (currentYear) => {\r\n setCurrentPage(1);\r\n setSelectYear(currentYear);\r\n getExhibitsMainList(1, currentYear);\r\n }\r\n\r\n /** 시제에 따른 날짜 컴포넌트 */\r\n const TenseData = () => {\r\n if (exhibitSection === \"현재\" || exhibitSection === \"예정\") {\r\n const monthNames = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\r\n const monthNumber = (new Date().getMonth());\r\n\r\n return (\r\n

{`${new Date().getFullYear()} ${monthNames[monthNumber]}`}

\r\n )\r\n } else if (exhibitSection === \"과거\") {\r\n return (\r\n handleYearChange(event.target.value)}\r\n >\r\n {\r\n yearList.length !== 0\r\n && Object.values(yearList).map((row) => (\r\n \r\n {row.year}\r\n \r\n ))\r\n }\r\n \r\n )\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n \r\n
\r\n { isLoading && <> }\r\n {\r\n !isLoading && artWorkList.length === 0\r\n ?

{exhibitSection} 전시작품이 없습니다.

\r\n : (\r\n
    \r\n {\r\n artWorkList.map((row) => (\r\n history.push(`${routes.exhibitionDetail}/${row.exhibits_se}`)}\r\n >\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    {row.exhibits_tt}
    \r\n
    {row.artist_nm}
    \r\n
    \r\n \r\n ))\r\n }\r\n
\r\n )\r\n }\r\n {\r\n artWorkList.length > 0 &&\r\n \r\n }\r\n
\r\n \r\n )\r\n}\r\n\r\nexport default ExhibitionList;","import React, { useState, useEffect, useRef } from \"react\";\r\nimport Swiper, { Navigation, Pagination, Autoplay, EffectFade } from \"swiper\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { routes } from \"../../../routes/routes\";\r\nimport { exhibitionApi } from \"../../../utils/api/api\";\r\nimport { handleCheckImgSize } from \"../../../utils/utils\";\r\n\r\nconst IMAGE_URL = process.env.REACT_APP_IMAGE_URL_GALLERY;\r\nconst EXHIBITION = process.env.REACT_APP_PATH_EXHIBITION;\r\nconst THUMBNAIL = process.env.REACT_APP_PATH_THUMBNAIL;\r\n\r\nconst ExhibitionSlide = () => {\r\n const [exhibitionSlide, setEhibitionSlide] = useState([]);\r\n const [swiperCurrentNumber, setSwiperCurrentNumber] = useState(1);\r\n const [swiperTotalCount, setSwiperTotalCount] = useState(1);\r\n const [playToggle, setPlayToggle] = useState(false);\r\n const swipeElement = useRef(null);\r\n Swiper.use([Navigation, Pagination, Autoplay, EffectFade]);\r\n\r\n useEffect(() => {\r\n getExhibitionSlide();\r\n }, []);\r\n\r\n /** 전시 중인 아트웍 리스트 swiper */\r\n useEffect(() => {\r\n if (exhibitionSlide.length > 0) {\r\n swipeElement.current = new Swiper('.art-swiper', {\r\n spaceBetween: 50,\r\n autoWidth: true,\r\n centeredSlides: true,\r\n allowTouchMove: false,\r\n slidesPerView: 1,\r\n loop: true,\r\n autoplay: {\r\n delay: 5000,\r\n },\r\n breakpointsInverse: true,\r\n effect: 'fade',\r\n navigation: {\r\n nextEl: '.art-next',\r\n prevEl: '.art-prev',\r\n },\r\n on: {\r\n activeIndexChange: function () {\r\n setSwiperCurrentNumber(this.realIndex + 1);\r\n }\r\n }\r\n });\r\n\r\n return () => {\r\n swipeElement.current.destroy();\r\n }\r\n }\r\n }, [exhibitionSlide]);\r\n\r\n /** GET 전시 중인 아트웍 리스트 */\r\n const getExhibitionSlide = () => {\r\n exhibitionApi.allSlide()\r\n .then((response) => {\r\n const { status, data } = response;\r\n\r\n if (status === 200) {\r\n setEhibitionSlide(data.data);\r\n setSwiperTotalCount(data.data.length);\r\n }\r\n })\r\n .catch(() => {\r\n setEhibitionSlide([]);\r\n })\r\n }\r\n\r\n /** 재생, 정지 버튼 클릭 이벤트 */\r\n const handlePlay = () => {\r\n if (playToggle) {\r\n swipeElement.current.autoplay.start();\r\n } else {\r\n swipeElement.current.autoplay.stop();\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {\r\n exhibitionSlide.length === 0 ? (\r\n
\r\n
\r\n
    \r\n
  • \r\n
    \r\n
    \r\n \r\n \"empty.jpg\"\r\n \r\n
    \r\n
    \r\n
    준비 중입니다
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \"empty.jpg\"\r\n
    \r\n
  • \r\n
\r\n
\r\n
\r\n ) : (\r\n
\r\n
\r\n
    \r\n {\r\n exhibitionSlide && exhibitionSlide.map(row => (\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {row.artist_nm}{row.exhibits_tt}\r\n
    \r\n
    \r\n {row.work_yr} / {row.size_if} / {row.comment_if}\r\n
    \r\n
    \r\n
    \r\n \r\n 작품 자세히 보기\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n \r\n ))\r\n }\r\n
\r\n {\r\n exhibitionSlide.length > 1 &&\r\n <>\r\n {\r\n swipeElement.current.autoplay.start();\r\n setPlayToggle(false);\r\n }}\r\n >
\r\n {\r\n swipeElement.current.autoplay.start();\r\n setPlayToggle(false);\r\n }}\r\n >
\r\n \r\n }\r\n
\r\n
\r\n
{swiperCurrentNumber}
/ {swiperTotalCount}\r\n
\r\n {\r\n handlePlay();\r\n setPlayToggle((prev) => !prev);\r\n }}\r\n >\r\n {\r\n playToggle ? (\r\n
\"시작
\r\n ) : (\r\n
\"정지
\r\n )\r\n }\r\n
\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n );\r\n};\r\n\r\nexport default ExhibitionSlide;","import React, { useState } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport ExhibitionList from \"./exhibitionList\";\r\nimport ExhibitionSlide from \"./exhibitionSlide\";\r\n\r\nexport const ExhibitionIndex = () => {\r\n const [section, setSection] = useState(\"현재\");\r\n\r\n /** 시제에 따른 클릭 이벤트 */\r\n const handleTense = (value) => {\r\n setSection(value);\r\n }\r\n\r\n /** 시제에 맞게 클랙스 부여 */\r\n const tenseClass = (section) => {\r\n const classMap = {\r\n \"현재\": \"tense present\",\r\n \"과거\": \"tense past\",\r\n \"예정\": \"tense next\",\r\n }\r\n\r\n return classMap[section];\r\n }\r\n\r\n return (\r\n
\r\n

전시작품

\r\n
\r\n \r\n
\r\n
\r\n
\r\n
    \r\n handleTense(\"현재\")}\r\n >\r\n 현재\r\n \r\n handleTense(\"과거\")}\r\n >\r\n 과거\r\n \r\n handleTense(\"예정\")}\r\n >\r\n 예정\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\nexport default ExhibitionIndex;","import React, { useState, useEffect } from 'react';\r\nimport { useParams } from \"react-router-dom\";\r\nimport { exhibitionApi } from \"../../../utils/api/api\";\r\n\r\nconst IMAGE_URL = process.env.REACT_APP_IMAGE_URL_GALLERY;\r\nconst EXHIBITION = process.env.REACT_APP_PATH_EXHIBITION;\r\nconst IMAGE = process.env.REACT_APP_PATH_IMAGE;\r\n\r\nexport const ExhibitionDetail = () => {\r\n const { exhibits_se } = useParams();\r\n const [detailPost, setDetailPost] = useState(null);\r\n\r\n /** GET 전시 작품 아트웍 상세 정보 */\r\n useEffect(() => {\r\n if (detailPost === null) {\r\n exhibitionApi.detailPost(exhibits_se)\r\n .then((response) => {\r\n const { status, data } = response;\r\n \r\n if (status === 200) {\r\n setDetailPost(data.data[0]);\r\n }\r\n })\r\n .catch((error) => {\r\n setDetailPost(null);\r\n console.log(error);\r\n })\r\n }\r\n }, [exhibits_se]);\r\n\r\n return (\r\n
\r\n

전시작품

\r\n
\r\n
\r\n {\r\n detailPost &&\r\n <>\r\n

{detailPost.exhibits_tt}

\r\n
{detailPost.artist_nm}
\r\n
\r\n

\r\n \r\n

\r\n
\r\n
\r\n {detailPost.work_yr}\r\n {\r\n detailPost.size_if &&\r\n ` / ${detailPost.size_if}`\r\n }\r\n {\r\n detailPost.comment_if &&\r\n ` / ${detailPost.comment_if}`\r\n }\r\n
\r\n
\r\n \r\n }\r\n
\r\n
\r\n
\r\n );\r\n\r\n}\r\n\r\nexport default ExhibitionDetail;","import React, { useState, useEffect, useRef } from \"react\";\r\nimport Swiper, { Pagination, Autoplay, EffectFade } from \"swiper\";\r\nimport { iGalleryApi } from \"../../../utils/api/api\";\r\n\r\nconst IMAGE_URL = process.env.REACT_APP_IMAGE_URL_GALLERY;\r\nconst IGALLERY = process.env.REACT_APP_PATH_IGALLERY;\r\nconst IMAGE = process.env.REACT_APP_PATH_IMAGE;\r\n\r\nconst IGalleryInfoPresenter = () => {\r\n const [galleryInfoData, setGalleryInfoData] = useState(null);\r\n const [slideData, setSlideData] = useState([]);\r\n const [swiperCurrentNumber, setSwiperCurrentNumber] = useState(1);\r\n const [swiperTotalCount, setSwiperTotalCount] = useState(1);\r\n const swipeElement = useRef(null);\r\n Swiper.use([Pagination, Autoplay, EffectFade]);\r\n\r\n useEffect(() => {\r\n /** GET 전시회 정보 */\r\n iGalleryApi.detailInfo()\r\n .then((response) => {\r\n const { status, data } = response;\r\n\r\n if (status === 200) {\r\n setGalleryInfoData(data.currentGallery);\r\n }\r\n })\r\n .catch((error) => {\r\n setGalleryInfoData(null);\r\n console.log(\"error\", error);\r\n })\r\n\r\n /** GET 전시 작품 리스트 */\r\n iGalleryApi.allSlide()\r\n .then((response) => {\r\n const { status, data } = response;\r\n\r\n if (status === 200) {\r\n setSlideData(data.data);\r\n }\r\n })\r\n .catch((error) => {\r\n setSlideData([]);\r\n console.log(\"error\", error);\r\n })\r\n }, []);\r\n\r\n /** 전시 작품 리스트 swiper */\r\n useEffect(() => {\r\n if (galleryInfoData !== null && slideData.length > 0) {\r\n swipeElement.current = new Swiper('#igallery-slide', {\r\n effect: 'fade',\r\n centeredSlides: true,\r\n slidesPerView: 1,\r\n loop: true,\r\n autoplay: true,\r\n allowTouchMove: false,\r\n on: {\r\n activeIndexChange: function () {\r\n setSwiperCurrentNumber(this.realIndex + 1);\r\n setSwiperTotalCount(this.slides.length);\r\n }\r\n }\r\n });\r\n\r\n return () => {\r\n swipeElement.current.destroy();\r\n };\r\n }\r\n }, [galleryInfoData, slideData]);\r\n\r\n return (\r\n
\r\n
\r\n {\r\n galleryInfoData !== null ? (\r\n <>\r\n
\r\n
    \r\n {\r\n slideData.length === 0 ? (\r\n
  • \r\n \r\n
  • \r\n ) : (\r\n slideData.map(row => (\r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n )\r\n ))\r\n }\r\n
\r\n
\r\n
\r\n
\r\n
{galleryInfoData.igallery_tt}
\r\n
{galleryInfoData.start_string} ~ {galleryInfoData.end_string}
\r\n
\r\n
\r\n
\r\n {swiperCurrentNumber}/\r\n {swiperTotalCount}\r\n
\r\n
\r\n
\r\n \r\n ) : (<>)\r\n }\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default IGalleryInfoPresenter;","import React, { useState, useEffect } from 'react';\r\nimport Swiper, { Navigation, Pagination, Autoplay } from 'swiper';\r\nimport { iGalleryApi } from '../../../utils/api/api';\r\n\r\nconst IMAGE_URL = process.env.REACT_APP_IMAGE_URL_GALLERY;\r\nconst IMAGE = process.env.REACT_APP_PATH_IMAGE;\r\nconst ARTIST = process.env.REACT_APP_PATH_ARTIST;\r\n\r\n// 아이갤러리 Artists, Works \r\nconst ArtistsList = ({ setArtiseNumber }) => {\r\n const [artistData, setArtistData] = useState([]);\r\n Swiper.use([Navigation, Pagination, Autoplay]);\r\n\r\n useEffect(() => {\r\n /** GET 아티스트 리스트 */\r\n if (artistData !== null) {\r\n iGalleryApi.detailArtist()\r\n .then((response) => {\r\n const { status, data } = response;\r\n\r\n if (status === 200) {\r\n setArtistData(data.data);\r\n setArtiseNumber(data.data[0].artist_se);\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(\"error\", error);\r\n })\r\n }\r\n }, []);\r\n \r\n useEffect(() => {\r\n /** 작가 리스트 swiper */\r\n if (artistData.length > 0) {\r\n new Swiper('#artistBox', {\r\n slidesPerView: 1,\r\n autoHeight: true,\r\n loop: false,\r\n spaceBetween: 20,\r\n autoHeight: true,\r\n loopAdditionalSlides: 1,\r\n allowTouchMove: false,\r\n navigation: {\r\n nextEl: '.art-next',\r\n prevEl: '.art-prev',\r\n },\r\n pagination: {\r\n el: '.swiper-pagination',\r\n clickable: true,\r\n type: 'fraction',\r\n },\r\n on: {\r\n activeIndexChange: function () {\r\n const changedArtistNumber = artistData[this.realIndex].artist_se;\r\n setArtiseNumber(changedArtistNumber);\r\n }\r\n }\r\n });\r\n }\r\n }, [artistData, setArtiseNumber]);\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n

Artists

\r\n {\r\n artistData.length === 0 ? (\r\n
\r\n
\r\n
\r\n
    \r\n
  • \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n 준비중입니다.\r\n
    \r\n
    \r\n
    \r\n
    \r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n ) : (\r\n
\r\n
\r\n
\r\n
    \r\n {\r\n artistData && artistData.map((artist) => (\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {artist.artist_nm}\r\n \r\n {artist.artist_eng_nm}\r\n \r\n
    \r\n
      \r\n {\r\n artist.insta_lk === 0 ? (\r\n
    • \r\n ) : (\r\n
    • \r\n \r\n 인스타그램\r\n \r\n
    • \r\n )\r\n }\r\n
    \r\n
    \r\n \r\n ))\r\n }\r\n
\r\n
\r\n {\r\n artistData.length > 1 &&\r\n <>\r\n
\r\n
\r\n \r\n }\r\n
\r\n
\r\n
\r\n )\r\n }\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default ArtistsList;\r\n","\r\nimport React, { useState, useEffect } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { routes } from '../../../routes/routes';\r\nimport { handleCheckImgSize } from '../../../utils/utils';\r\nimport { iGalleryApi } from '../../../utils/api/api';\r\n\r\nconst IMAGE_URL = process.env.REACT_APP_IMAGE_URL_GALLERY;\r\nconst THUMBNAIL = process.env.REACT_APP_PATH_THUMBNAIL;\r\nconst EXHIBITION = process.env.REACT_APP_PATH_EXHIBITION;\r\n\r\nconst ArtworkList = ({ artistNumber }) => {\r\n const history = useHistory();\r\n const [artworksList, setArtworkList] = useState([]);\r\n\r\n /** 해당 아티스트의 아트웍 업데이트 */\r\n useEffect(() => {\r\n getArtworkList(artistNumber);\r\n }, [artistNumber]);\r\n\r\n /** GET 해당 아티스트의 아트웍 */\r\n const getArtworkList = (artistNumber) => {\r\n iGalleryApi.allWorks(artistNumber)\r\n .then((response) => {\r\n const { status, data } = response;\r\n\r\n if (status === 200) {\r\n setArtworkList(data.data);\r\n }\r\n })\r\n }\r\n\r\n return (\r\n
\r\n
\r\n

Works

\r\n {\r\n artworksList.length === 0 ? (\r\n

등록된 작품이 없습니다.

\r\n ) : (\r\n
    \r\n {\r\n artworksList && artworksList.map((row) => (\r\n history.push(`${routes.exhibitionDetail}/${row.exhibits_se}`)}\r\n >\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    {row.exhibits_tt}
    \r\n
    {row.artist_nm}
    \r\n
    \r\n \r\n ))\r\n }\r\n
\r\n )\r\n }\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default ArtworkList;","import React, { useState, useEffect } from \"react\";\r\nimport GalleryInfo from \"./galleryInfo\";\r\n// import GalleryIntro from \"../components/pages/iGallery/galleryIntro\"; 관리자에서 안 쓰는 기능 2024-01-23\r\nimport ArtistsList from \"./artistsList\";\r\nimport ArtworkList from \"./artworkList\";\r\n\r\nconst IGalleryMain = () => {\r\n const [artistNumber, setArtiseNumber] = useState(0);\r\n\r\n useEffect(() => {}, [artistNumber]);\r\n\r\n return (\r\n
\r\n

iGallery

\r\n \r\n {/* */}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default IGalleryMain;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { routes } from \"../../../routes/routes\";\r\nimport { handleCheckImgSize } from \"../../../utils/utils\";\r\nimport { artShopApi } from \"../../../utils/api/api\";\r\nimport { PaginationEx } from \"../../common/pagination\";\r\n\r\nconst IMAGE_URL = process.env.REACT_APP_IMAGE_URL_GALLERY;\r\nconst ART_SHOP = process.env.REACT_APP_PATH_ART_SHOP;\r\nconst EXHIBITION = process.env.REACT_APP_PATH_EXHIBITION;\r\nconst THUMBNAIL = process.env.REACT_APP_PATH_THUMBNAIL;\r\n\r\nconst PAGE_SIZE = 9;\r\n\r\nconst ArtShopList = ({ filter }) => {\r\n const history = useHistory();\r\n const sectionPath = filter.board_sc_cd === 1 ? EXHIBITION : ART_SHOP; // 1:Original 2:Poster 3:Goods\r\n\r\n const [datas, setDatas] = useState([]);\r\n const [totalDataCnt, setTotalDataCnt] = useState(0);\r\n const [currentPage, setCurrentPage] = useState(1);\r\n const [prevBoardSection, setPrevBoardSection] = useState(filter.board_sc_cd);\r\n\r\n useEffect(() => {\r\n const { board_sc_cd, order } = filter;\r\n\r\n /** 현재 페이지에서 tab 이동 시 currentPage 초기화 */\r\n if (board_sc_cd !== prevBoardSection) {\r\n setCurrentPage(1);\r\n setPrevBoardSection(board_sc_cd);\r\n }\r\n\r\n getArtshopList(currentPage, board_sc_cd, order);\r\n }, [filter, currentPage, prevBoardSection]);\r\n\r\n /** GET 아트샵 상품 리스트 */\r\n const getArtshopList = (page, boardSection, listOrder) => {\r\n if (boardSection === 1) { // Original\r\n artShopApi.getExhibitList(page, PAGE_SIZE, listOrder)\r\n .then((response) => {\r\n const { status, data } = response;\r\n\r\n if (status === 200) {\r\n setDatas(data.data);\r\n setTotalDataCnt(data.count);\r\n }\r\n })\r\n .catch(() => {\r\n setDatas(0);\r\n setTotalDataCnt([]);\r\n })\r\n } else if (boardSection === 2 || boardSection === 3) { // Poster, Goods\r\n artShopApi.getArtShopList(page, PAGE_SIZE, boardSection, listOrder)\r\n .then((response) => {\r\n const { status, data } = response;\r\n\r\n if (status === 200) {\r\n setDatas(data.data);\r\n setTotalDataCnt(data.count);\r\n }\r\n })\r\n .catch(() => {\r\n setDatas(0);\r\n setTotalDataCnt([]);\r\n })\r\n }\r\n }\r\n\r\n /** 현재 페이지 클릭 이벤트 */\r\n const handlePageChange = (value) => {\r\n setCurrentPage(value);\r\n }\r\n\r\n return (\r\n <>\r\n {\r\n datas.length === 0\r\n ?

상품이 존재하지 않습니다.

\r\n :
    \r\n {\r\n datas && datas.map(post => (\r\n history.push(`${routes.artshopDetail}/${filter.board_sc_cd}/${post.artist_se}/${post.board_se}`)}\r\n >\r\n
    \r\n \r\n \r\n \r\n {\r\n post.isSoldOut ?\r\n SOLD
    OUT
    \r\n :\r\n \"\"\r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n {post.badge_new && NEW}\r\n {post.badge_best && BEST}\r\n {post.badge_sale && SALE}\r\n \r\n {post.board_tt}\r\n
    \r\n
    \r\n {\r\n post.cancel_price_mo ?\r\n <>\r\n {post.cancel_price_mo.toLocaleString()}\r\n {post.price_mo.toLocaleString()}\r\n \r\n :\r\n post.isPriceDisplayed ? post.price_mo.toLocaleString() : \"가격문의\"\r\n }\r\n
    \r\n
    \r\n \r\n ))\r\n }\r\n
\r\n }\r\n {\r\n totalDataCnt > 0 &&\r\n \r\n }\r\n \r\n )\r\n}\r\n\r\nArtShopList.propTypes = {\r\n}\r\n\r\nexport default ArtShopList","import React, { useState } from 'react';\r\nimport ArtShopList from './artShopList';\r\n\r\nconst ArtShop = () => {\r\n const [original, setOriginal] = useState(true);\r\n const [artPoster, setArtPoster] = useState(false);\r\n const [goods, setGoods] = useState(false);\r\n const [filter, setFilter] = useState({\r\n board_sc_cd: 1,\r\n order: 'desc',\r\n });\r\n\r\n /** 아트샵 목록 구분 (Original, Poster, Goods) */\r\n const initailItems = () => {\r\n if (original) {\r\n setOriginal(false);\r\n }\r\n if (artPoster) {\r\n setArtPoster(false);\r\n }\r\n if (goods) {\r\n setGoods(false);\r\n }\r\n }\r\n\r\n /** 아트샵 목록 구분 클릭 이벤트 */\r\n const handleItemsKind = (kind, state) => {\r\n initailItems();\r\n if (kind === 1) {\r\n setOriginal(!state);\r\n }\r\n if (kind === 2) {\r\n setArtPoster(!state);\r\n }\r\n if (kind === 3) {\r\n setGoods(!state);\r\n }\r\n\r\n setFilter({ ...filter, board_sc_cd: kind });\r\n }\r\n\r\n /** 아트샵 목록 클릭 시 클래스 toggle 이벤트 */\r\n const itemKindClassOn = (state) => {\r\n return (state ? \"on\" : \"\");\r\n }\r\n\r\n /** select 조회 클릭 이벤트 */\r\n const handleOrder = (event) => {\r\n const { name, value } = event.target;\r\n setFilter({ ...filter, [name]: value });\r\n }\r\n\r\n return (\r\n
\r\n

아트샵

\r\n
\r\n
\r\n
    \r\n handleItemsKind(1, original)}\r\n >\r\n Original\r\n \r\n handleItemsKind(2, artPoster)}\r\n >\r\n Art Poster\r\n \r\n handleItemsKind(3, goods)}\r\n >\r\n Goods\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default ArtShop;","import React, { useEffect, useState } from \"react\";\r\nimport { Link, useParams } from \"react-router-dom\";\r\nimport { artShopApi } from \"../../../utils/api/api\";\r\nimport Swiper, { Navigation, Pagination, Autoplay } from \"swiper\";\r\nimport { handleCheckImgSize } from \"../../../utils/utils\";\r\n\r\nconst IMAGE_URL = process.env.REACT_APP_IMAGE_URL_GALLERY;\r\nconst ART_SHOP = process.env.REACT_APP_PATH_ART_SHOP;\r\nconst EXHIBITION = process.env.REACT_APP_PATH_EXHIBITION;\r\nconst IMAGE = process.env.REACT_APP_PATH_IMAGE;\r\nconst THUMBNAIL = process.env.REACT_APP_PATH_THUMBNAIL;\r\n\r\nconst ArtShopDetail = () => {\r\n Swiper.use([Navigation, Pagination, Autoplay]);\r\n const { board_sc, board_se } = useParams();\r\n const [shopDetail, setShopDetail] = useState(null);\r\n const [randomItems, setRandomItems] = useState([]);\r\n const [images, setImages] = useState([]);\r\n\r\n const SECTION = board_sc === \"1\" ? EXHIBITION : ART_SHOP;\r\n\r\n useEffect(() => {\r\n if (board_sc && board_se) {\r\n getExhibitDetail(board_sc, board_se);\r\n }\r\n }, [board_sc, board_se]);\r\n\r\n /** GET 아트샵 상품 구분 (Original, Poster, Goods) */\r\n const getExhibitDetail = (boardSc, boardSe) => {\r\n if (boardSc === \"1\") { // Original\r\n artShopApi.getExhibitDetail(boardSe)\r\n .then((response) => {\r\n const { status, data } = response;\r\n\r\n if (status === 200) {\r\n setShopDetail(data.shopDetail);\r\n setRandomItems(data.randomItems);\r\n setImages(data.images);\r\n console.log(data);\r\n }\r\n })\r\n .catch((error) => {\r\n alert(error.message)\r\n })\r\n } else if (boardSc === \"2\" || boardSc === \"3\") { // Poster, Goods\r\n artShopApi.getArtShopDetail(boardSe)\r\n .then((response) => {\r\n const { status, data } = response;\r\n\r\n if (status === 200) {\r\n setShopDetail(data.shopDetail);\r\n setRandomItems(data.randomItems);\r\n setImages(data.images);\r\n console.log(data);\r\n }\r\n })\r\n .catch((error) => {\r\n alert(error.message)\r\n })\r\n }\r\n }\r\n\r\n /** 아트샵 작품 및 굿즈 swiper */\r\n useEffect(() => {\r\n if (shopDetail !== null) {\r\n new Swiper('.action-wrap', {\r\n slidesPerView: 1,\r\n loop: false,\r\n allowTouchMove: false,\r\n navigation: {\r\n nextEl: '.art-next',\r\n prevEl: '.art-prev',\r\n },\r\n pagination: {\r\n el: \".swiper-pagination\",\r\n clickable: true,\r\n },\r\n });\r\n }\r\n }, [shopDetail, images]);\r\n\r\n /** 현재 작가의 다른 작품 및 굿즈 클릭 이벤트 */\r\n const handleAnotherItem = (value) => {\r\n setShopDetail(null);\r\n setRandomItems([]);\r\n getExhibitDetail(board_sc, value);\r\n }\r\n\r\n return (\r\n
\r\n

아트샵

\r\n
\r\n {/* 작품 정보 및 구매 */}\r\n
\r\n {/* 작품 이미지 슬라이드 */}\r\n {\r\n (shopDetail !== null) &&\r\n
\r\n
\r\n
    \r\n
  • \r\n \r\n
  • \r\n {\r\n images.length > 0 &&\r\n images.map((image, index) => (\r\n
  • \r\n \r\n
  • \r\n ))\r\n }\r\n
\r\n {\r\n images.length > 0 &&\r\n <>\r\n
\r\n
\r\n
\r\n \r\n }\r\n
\r\n
\r\n }\r\n {/* 작품 정보 */}\r\n
\r\n {\r\n (shopDetail !== null) &&\r\n <>\r\n
{shopDetail.board_sc_tt}
\r\n
{shopDetail.board_tt}
\r\n
\r\n {shopDetail.artist_se !== 1 && shopDetail.artist_nm}\r\n
\r\n
\r\n {\r\n shopDetail.price_mo === 0\r\n ? \"가격문의\"\r\n : `${shopDetail.price_mo.toLocaleString()} won`\r\n }\r\n
\r\n {\r\n board_sc !== \"3\" && (\r\n
\r\n
    \r\n \r\n 작품정보\r\n \r\n
\r\n
\r\n {/* 작품정보 */}\r\n
\r\n {\r\n shopDetail.size_if &&\r\n
\r\n
크기
\r\n
{shopDetail.size_if}
\r\n
\r\n }\r\n {\r\n shopDetail.comment_if &&\r\n
\r\n
제작방식
\r\n
{shopDetail.comment_if}
\r\n
\r\n }\r\n {\r\n shopDetail.work_yr &&\r\n
\r\n
제작연도
\r\n
{shopDetail.work_yr}
\r\n
\r\n }\r\n
\r\n
\r\n
\r\n )\r\n }\r\n
\r\n
상품금액
\r\n
\r\n {\r\n shopDetail.isPriceDisplayed\r\n ?\r\n
\r\n {(shopDetail.price_mo.toLocaleString()) + \"원\"}\r\n
\r\n :\r\n
가격문의
\r\n }\r\n
\r\n
\r\n
\r\n {\r\n shopDetail.purchase_lk ? (\r\n shopDetail.stock_yn === \"n\" ? (\r\n 구매완료\r\n ) : (\r\n \r\n 상품 구매페이지로 이동하기\r\n \r\n )\r\n ) : (\r\n 준비중입니다\r\n ) \r\n }\r\n {\r\n \r\n }\r\n
\r\n \r\n }\r\n
\r\n
\r\n {/* 이 작가의 다른 작품 */}\r\n
\r\n

이 작가의 다른 작품

\r\n
\r\n
    \r\n {\r\n randomItems.length > 0 &&\r\n randomItems.map((row) => (\r\n handleAnotherItem(row.board_se)}\r\n >\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    {row.board_tt}
    \r\n
    \r\n {\r\n row.isPriceDisplayed\r\n ?\r\n <>\r\n {(row.price_mo.toLocaleString()) + \"원\"}\r\n \r\n :\r\n \"가격문의\"\r\n }\r\n
    \r\n
    \r\n \r\n ))\r\n }\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default ArtShopDetail;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { routes } from \"../../../routes/routes\";\r\nimport { noticeApi } from \"../../../utils/api/api\";\r\nimport Pagination from \"../../common/pagination\";\r\n\r\nconst PAGE_SIZE = 6;\r\n\r\nconst Notice = () => {\r\n const history = useHistory();\r\n const [allPost, setAllPost] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n const [error, setError] = useState(null);\r\n const [currentPage, setCurrentPage] = useState(1);\r\n\r\n /** 공지사항 리스트 업데이트 */\r\n useEffect(() => {\r\n getNoticeList(currentPage);\r\n }, [currentPage]);\r\n\r\n /** GET 공지사항 리스트 */\r\n const getNoticeList = async (pageNumber) => {\r\n await noticeApi.allPost(pageNumber)\r\n .then((response) => {\r\n const { status, data } = response;\r\n\r\n if (status === 200) {\r\n setAllPost(data);\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(\"error\", error);\r\n setError(\"Error\")\r\n })\r\n .finally(() => {\r\n setLoading(false);\r\n })\r\n }\r\n\r\n /** 현재 페이지 클릭 이벤트 */\r\n const handlePageChange = (currentPage) => {\r\n setCurrentPage(currentPage);\r\n getNoticeList(currentPage);\r\n }\r\n\r\n /** 상세 페이지 클릭 이벤트 */\r\n const handleDetailPage = (boardSe) => {\r\n history.push(`${routes.noticeDetail}/${boardSe}`);\r\n }\r\n\r\n return (\r\n
\r\n

Notice

\r\n
\r\n
\r\n {\r\n loading ? (\r\n <>\r\n ) : (\r\n
\r\n {\r\n <>\r\n
\r\n
번호
\r\n
제목
\r\n
날짜
\r\n
\r\n
    \r\n {\r\n allPost && allPost[0].length > 0 && (\r\n allPost[0].map((post, index) => (\r\n handleDetailPage(post.board_se)}\r\n >\r\n
    \r\n {allPost[1].postCount - index - ((currentPage - 1) * PAGE_SIZE)}\r\n
    \r\n
    \r\n
    \r\n {post.board_sc_tt}\r\n
    \r\n
    {post.board_tt}
    \r\n
    \r\n
    {post.record_dt}
    \r\n \r\n ))\r\n )\r\n }\r\n
\r\n \r\n }\r\n
\r\n )\r\n }\r\n \r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default Notice;","import React, { useState, useEffect } from \"react\";\r\nimport { Link, useParams } from 'react-router-dom';\r\nimport { noticeApi } from \"../../../utils/api/api\";\r\n\r\nconst IMAGE_URL = process.env.REACT_APP_IMAGE_URL_GALLERY;\r\nconst NOTICE = process.env.REACT_APP_PATH_NOTICE;\r\nconst IMAGE = process.env.REACT_APP_PATH_IMAGE;\r\n\r\nconst NoticeDetail = () => {\r\n const { board_se } = useParams();\r\n const [boardNum, setBoardNum] = useState(board_se);\r\n const [detailPost, setDetailPost] = useState(null);\r\n const [detailImage, setDetailImage] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n\r\n /** 공지사항 리스트 업데이트 */\r\n useEffect(() => {\r\n getNewsDetail();\r\n }, []);\r\n\r\n /** GET 공지사항 리스트 */\r\n const getNewsDetail = async () => {\r\n try {\r\n const [detailPostResponse, detailImageResponse] = await Promise.all([\r\n noticeApi.detailPost(boardNum),\r\n noticeApi.detailImage(boardNum)\r\n ]);\r\n\r\n const detailPostData = detailPostResponse.data;\r\n const detailImageData = detailImageResponse.data;\r\n\r\n setDetailPost(detailPostData);\r\n setDetailImage(detailImageData);\r\n } catch (error) {\r\n console.log(\"error\", error);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n /** 이전, 다음 버튼 클릭 이벤트 */\r\n const handleOtherNews = async (boardNum) => {\r\n if (boardNum !== 0) {\r\n setBoardNum(boardNum);\r\n getNewsDetail();\r\n }\r\n }\r\n\r\n return (\r\n
\r\n

갤러리소식

\r\n
\r\n
\r\n {\r\n !loading && (\r\n <>\r\n {\r\n detailPost !== null && (\r\n detailPost.map((post, index) => (\r\n
\r\n
\r\n
\r\n
\r\n {post.board_sc_tt}\r\n
\r\n
{post.board_tt}
\r\n
\r\n
{post.record_dt}
\r\n
\r\n
\r\n
\r\n {\r\n detailImage && detailImage.map((image, index) => (\r\n
\r\n \"img\"\r\n
\r\n ))\r\n }\r\n
\r\n
\r\n
\r\n
\r\n ))\r\n )\r\n }\r\n \r\n )\r\n }\r\n
    \r\n
  • \r\n { detailPost && handleOtherNews(detailPost[0].prev_board_se) }}\r\n >\r\n 이전글\r\n \r\n
  • \r\n
  • \r\n { detailPost && handleOtherNews(detailPost[0].next_board_se) }}\r\n >\r\n 다음글\r\n \r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default NoticeDetail;","import React, { useEffect, useRef } from 'react';\r\n\r\nconst Directions = () => {\r\n const container = useRef(null); // 지도를 담을 영역의 DOM 레퍼런스\r\n\r\n useEffect(() => {\r\n // index.html에 명시된 카카오맵API appkey=9c23f66cf88be2d5566c85739e99f808\r\n if (window.kakao !== undefined) {\r\n const options = {\r\n // 지도를 생성할 때 필요한 기본 옵션\r\n center: new window.kakao.maps.LatLng(37.412047496255845, 127.14332296265643), //지도의 중심좌표.\r\n level: 2, // 지도의 레벨(확대, 축소 정도)\r\n };\r\n\r\n let map = new window.kakao.maps.Map(container.current, options); // 지도 생성 및 객체 리턴\r\n // 마커가 표시 될 위치\r\n let markerPosition = new window.kakao.maps.LatLng(\r\n 37.412047496255845, 127.14332296265643\r\n );\r\n\r\n // 마커를 생성\r\n let marker = new window.kakao.maps.Marker({\r\n position: markerPosition,\r\n });\r\n\r\n marker.setMap(map);\r\n }\r\n else {\r\n console.log(\"카카오맵과의 연결이 끊겼습니다. 관리자에게 문의해주세요.\")\r\n }\r\n\r\n function Holiday() {\r\n let txtBubbles = document.querySelectorAll('.txt-bubble span');\r\n let txtBubbleChild = document.querySelector('.txt-bubble .heart-child');\r\n let i = 0;\r\n\r\n function startPop() {\r\n let txtPop = setInterval(function () {\r\n if (i === txtBubbles.length) {\r\n clearInterval(txtPop);\r\n setTimeout(function () {\r\n stopPop();\r\n }, 1000);\r\n } else {\r\n let txtSpan = txtBubbles[i];\r\n txtSpan.classList.add('on');\r\n i++;\r\n }\r\n }, 200);\r\n }\r\n startPop();\r\n\r\n function stopPop() {\r\n for (let t = 0; t < txtBubbles.length; t++) {\r\n if (t === txtBubbles.length - 1) {\r\n startPop();\r\n } else {\r\n let resetOn = txtBubbles[t];\r\n resetOn.classList.remove('on');\r\n txtBubbleChild.classList.remove('on');\r\n }\r\n i = 0;\r\n }\r\n }\r\n }\r\n Holiday();\r\n }, []);\r\n\r\n return (\r\n
\r\n

아트\"GG\"갤러리 오시는길

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Location
\r\n
\r\n

경기 성남시 분당구 벌말로 50번길 41 투아이센터 1층

\r\n
\r\n
\r\n
\r\n
Call
\r\n
\r\n 07041238817\r\n
\r\n
\r\n
\r\n
Bussiness hours
\r\n
\r\n 화요일 - 일요일 (월요일 휴무)\r\n am 10:30 - pm 7:00\r\n
\r\n
\r\n
\r\n
\r\n \"Art\r\n
\r\n
\r\n

\r\n M\r\n O\r\n N\r\n D\r\n A\r\n Y\r\n O\r\n F\r\n F\r\n \r\n \r\n \r\n

\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Directions;","import React, { useState, useEffect } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { routes } from '../../../routes/routes';\r\nimport { handleCheckImgSize } from \"../../../utils/utils\";\r\nimport { searchApi } from \"../../../utils/api/api\"\r\n\r\nconst IMAGE_URL = process.env.REACT_APP_IMAGE_URL_GALLERY;\r\nconst ARTSHOP = process.env.REACT_APP_PATH_ART_SHOP;\r\nconst EXHIBITION = process.env.REACT_APP_PATH_EXHIBITION;\r\nconst THUMBNAIL = process.env.REACT_APP_PATH_THUMBNAIL;\r\n\r\nconst SearchResult = ({ searchVa, setSearchValue, setResultCount }) => {\r\n const history = useHistory();\r\n const [artwork, setArtwork] = useState(null);\r\n const [allItems, setAllItems] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n\r\n /** 작가의 아트웍 및 굿즈 리스트 업데이트 */\r\n useEffect(() => {\r\n getSearchArtWorkList(searchVa);\r\n }, [searchVa]);\r\n\r\n /** GET 아트샵, 작품 검색 API 병렬 호출 */\r\n const getSearchArtWorkList = async (searchVa) => {\r\n try {\r\n const [worksResponse, itemsResponse] = await Promise.all([\r\n searchApi.allWorks(searchVa),\r\n searchApi.allItems(searchVa)\r\n ]);\r\n\r\n const worksData = worksResponse.data;\r\n const itemsData = itemsResponse.data;\r\n\r\n setArtwork(worksData);\r\n setAllItems(itemsData);\r\n\r\n setResultCount(parseInt(worksData[1].postCount) + parseInt(itemsData[1].postCount));\r\n setSearchValue(searchVa);\r\n } catch (error) {\r\n setArtwork(null);\r\n console.error(\"error\", error);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {\r\n !loading &&\r\n <>\r\n {\r\n (artwork && artwork[1].postCount !== '0') && (\r\n
\r\n

작품({artwork[1].postCount})

\r\n
\r\n
    \r\n {\r\n artwork &&\r\n artwork[0].map((result, index) => (\r\n history.push(`${routes.exhibitionDetail}/${result.exhibits_se}`)}\r\n >\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    {result.exhibits_tt}
    \r\n
    {result.artist_nm}
    \r\n
    \r\n \r\n ))\r\n }\r\n
\r\n
\r\n
\r\n )\r\n }\r\n {\r\n (allItems && allItems[1].postCount !== '0') && (\r\n
\r\n

아트샵({allItems[1].postCount})

\r\n
\r\n
    \r\n {\r\n allItems &&\r\n allItems[0].map((result, index) => (\r\n history.push(`${routes.artshopDetail}/${result.board_sc_cd}/${result.artist_se}/${result.board_se}`)}\r\n >\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    {result.board_tt}
    \r\n
    {result.artist_nm}
    \r\n
    \r\n \r\n ))\r\n }\r\n
\r\n
\r\n
\r\n )\r\n }\r\n {\r\n (artwork && artwork[1].postCount === '0') && (allItems && allItems[1].postCount === '0') && (\r\n

검색된 결과가 없습니다.

\r\n )\r\n }\r\n \r\n }\r\n \r\n )\r\n}\r\n\r\nexport default SearchResult;","import React, { useState, useRef } from 'react';\r\nimport { Link, useParams } from \"react-router-dom\";\r\nimport SearchResult from './searchResult';\r\n\r\nconst Search = () => {\r\n const { search_va } = useParams();\r\n const [searchVa, setSearchVa] = useState(search_va);\r\n const [tempValue, setTempValue] = useState(search_va);\r\n const [resultCount, setResultCount] = useState(0);\r\n const inputSearchRef = useRef(null);\r\n \r\n /** 검색창 입력값 이벤트 */\r\n const handleChange = async (event) => {\r\n setTempValue(event.target.value);\r\n }\r\n\r\n /** 검색 버튼 클릭 이벤트 */\r\n const handleSearchAgain = async () => {\r\n if (tempValue !== null) {\r\n setSearchVa(tempValue)\r\n }\r\n }\r\n\r\n /** 검색된 결과의 총 갯수 */\r\n const handleResultCount = async (count) => {\r\n setResultCount(count);\r\n }\r\n\r\n /** 검색된 결과 리스트 */\r\n const handleSearchValue = async (value) => {\r\n setSearchVa(value)\r\n }\r\n\r\n /** 사용자 검색 시 키패드 다운 이벤트 */\r\n const handleMobileKeyPad = () => {\r\n if (inputSearchRef.current) {\r\n inputSearchRef.current.blur();\r\n }\r\n }\r\n\r\n /** 검색 버튼 키보드 엔터 이벤트 */\r\n const handleEnter = async (event) => {\r\n if (event.key === \"Enter\") {\r\n handleSearchAgain();\r\n handleMobileKeyPad();\r\n }\r\n }\r\n\r\n return (\r\n
\r\n

검색결과

\r\n
\r\n

\r\n '{searchVa}' 검색결과 {resultCount}건\r\n

\r\n
\r\n
\r\n \r\n \r\n 검색\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default Search;","import Home from '../components/pages/Home/index';\r\nimport Exhibition from \"../components/pages/Exhibition/index\";\r\nimport ExhibitionDetail from \"../components/pages/Exhibition/exhibitionDetail\";\r\nimport iGallery from \"../components/pages/iGallery/index\";\r\nimport ArtShop from '../components/pages/ArtShop/index';\r\nimport ArtShopDetail from '../components/pages/ArtShop/artShopDetail';\r\nimport Notice from '../components/pages/Notice/index';\r\nimport NoticeDetail from '../components/pages/Notice/noticeDetail';\r\nimport About from '../components/pages/About/index';\r\nimport Directions from '../components/pages/About/directions';\r\nimport Search from '../components/pages/Search/index';\r\nimport Error from '../components/common/error';\r\n\r\nconst HOME = \"/\";\r\nconst EXHIBITION = \"/exhibition\";\r\nconst EXHIBITION_DETAIL = \"/exhibitionDetail\"\r\nconst IGALLERY = \"/igallery\";\r\nconst ARTSHOP = \"/artshop\";\r\nconst ARTSHOP_DETAIL = \"/artShopDetail\"\r\nconst NOTICE = \"/notice\";\r\nconst NOTICE_DETAIL = \"/noticedetail\";\r\nconst SEARCH = \"/search\";\r\nconst DIRECTIONS = \"/directions\";\r\nconst ABOUT = \"/about\";\r\n\r\nexport const routes = {\r\n home: HOME,\r\n igallery: IGALLERY,\r\n exhibition: EXHIBITION,\r\n exhibitionDetail: EXHIBITION_DETAIL,\r\n artshop: ARTSHOP,\r\n artshopDetail: ARTSHOP_DETAIL,\r\n notice: NOTICE,\r\n noticeDetail: NOTICE_DETAIL,\r\n search: SEARCH,\r\n directions: DIRECTIONS,\r\n about: ABOUT,\r\n};\r\n\r\nexport const components = {\r\n home: Home,\r\n exhibition: Exhibition,\r\n exhibitionDetail: ExhibitionDetail,\r\n igallery: iGallery,\r\n artshop: ArtShop,\r\n artshopDetail: ArtShopDetail,\r\n notice: Notice,\r\n search: Search,\r\n directions: Directions,\r\n about: About,\r\n error: Error,\r\n noticeDetail: NoticeDetail\r\n}","\r\nimport React from 'react';\r\nimport Directions from \"./directions\";\r\n\r\nconst AboutIndex = () => {\r\n\r\n return (\r\n <>\r\n
\r\n

회사소개

\r\n
\r\n
\r\n

Our gallery

\r\n
\r\n
\r\n Art \"GG\" gallery는\r\n 다양한 작가들의 예술작품을\r\n 전시하고 있습니다.\r\n
\r\n
\r\n 아트지지갤러리는 2021년에 출발한 신생 갤러리로서\r\n 예술이 우리의 삶을 풍요롭게 해준다는 믿음을 가지고\r\n 전시기획의 장을 열었습니다.\r\n
\r\n
\r\n Art gg gallery exhibits abundant artworks by various unique artists.\r\n Founded in 2021, Art gg gallery is a new gallery\r\n that believes in the power of art enriches our lives.\r\n With this belief, we opened the stage for exhibition planning.\r\n
\r\n
\r\n
\r\n
\r\n
\r\n 살아 숨 쉬는\r\n 즐거움의 장소\r\n 초대합니다.\r\n
\r\n
\r\n Art gg gallery는 한국미술의 현재를 책임지고 활발한\r\n 활동을 전개하고 있는 중견작가부터 미래를 창출할 혁신적인\r\n 신진작가까지 폭넓게 소개하는 자유 공간으로 예술문화의 흐름을\r\n 이해하고 아름다움을발견하는, 살아 숨 쉬는 즐거움의 장소로\r\n 만들어가고자 합니다.\r\n
\r\n
\r\n This exhibition place will be an alive and joyful space,\r\n where people can enjoy and understand the current art culture\r\n while discovering the beauty of art. With this vision,\r\n Art gg gallery will introduce a wide range of art genre\r\n and present diverse artists who are young and talented\r\n as well as well known artists.\r\n
\r\n
\r\n
\r\n
\r\n
\r\n 아트 \"GG\"갤러리는\r\n 다르게, 또 같이의 문화를\r\n 추구합니다.\r\n
\r\n
\r\n Art gg gallery는 “다르게, 또 같이”의 문화를 추구하며 항상\r\n 새로움을 향한 열린 사고와 함께 Good to Great한\r\n 작품들 만을 콜렉션한다는 자세로 더욱더 밝은\r\n 미래에 초점을 두는 갤러리로 존재하고 싶습니다.\r\n
\r\n
\r\n Art gg gallery pursues the motto of \"being different\r\n and doing together\" with open-minded attitude\r\n and collecting \"good to great“ artworks, focusing on\r\n being one of a bright future gallery in Korea.\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nexport default AboutIndex;","import React, { useState, useEffect } from 'react';\r\nimport { Link } from \"react-router-dom\";\r\n\r\nconst Error = () => {\r\n const [error, setError] = useState(\"\");\r\n\r\n useEffect(() => {\r\n let userAgent = navigator.userAgent.toLowerCase();\r\n\r\n /** 접속한 기기에 따른 클래스 처리 */\r\n if (userAgent.includes('iphone') || userAgent.includes('ipad') || userAgent.includes('ipod')) {\r\n setError(\"IOS\");\r\n } else {\r\n setError(\"glitch\");\r\n }\r\n }, [])\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \"Art\r\n
\r\n
error
\r\n
\r\n
\r\n
요청하신 페이지를 찾을 수 없습니다.
\r\n
페이지 주소가 정확하지 않거나 페이지에 오류가 있어 요청하신 내용을 찾을 수 없습니다.
\r\n
\r\n \r\n 메인 페이지로 가기\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Error;","import React, { useState, useEffect, useRef } from 'react';\r\nimport { Link, useHistory, useLocation, useParams } from \"react-router-dom\";\r\nimport { routes } from '../../routes/routes';\r\n\r\nconst Header = ({ url }) => {\r\n const { search_va } = useParams();\r\n const history = useHistory();\r\n const location = useLocation();\r\n const [separateHeader, setSeparateHeader] = useState(false);\r\n const [rootSearch, setRootSearch] = useState(\"\");\r\n const [searchVa, setSearchVa] = useState(\"\");\r\n const [btnSearch, setBtnSearch] = useState(false);\r\n const [btnHamburger, setBtnHamburger] = useState(false);\r\n const inputSearchRef = useRef(null);\r\n\r\n \r\n useEffect(() => {\r\n if (location.pathname) {\r\n window.scrollTo(0, 0);\r\n document.querySelector(\"body\").classList.remove(\"none-scroll\");\r\n document.getElementById(\"content\").classList.remove(\"dim\");\r\n }\r\n\r\n urlMatching();\r\n searchbtnHidden();\r\n }, [history.location.pathname]);\r\n\r\n /** header와 content 영역 분리(header에 border-bottom style 추가) */\r\n const urlMatching = () => {\r\n let urlArr = [\"exhibitionDetail\", \"artshop\", \"artShopDetail\", \"notice\", \"about\", \"directions\", \"search\"];\r\n\r\n const pathnameMatching = urlArr.some(url => location.pathname.includes(url));\r\n\r\n if (pathnameMatching) {\r\n setSeparateHeader(true);\r\n } else {\r\n setSeparateHeader(false);\r\n }\r\n }\r\n\r\n /** 검색 페이지일 경우 검색버튼 숨김 */\r\n const searchbtnHidden = () => {\r\n if (location.pathname === history.location.pathname && search_va) {\r\n setRootSearch(\"dp-none\");\r\n } else {\r\n setRootSearch(\"\");\r\n }\r\n }\r\n\r\n /** 네비게이션 검색 버튼 클릭 이벤트 */\r\n const handleHeaderSearch = () => {\r\n setBtnSearch((prev) => !prev);\r\n setSearchVa(\"\");\r\n\r\n /** input 포커스 이벤트 */\r\n if (inputSearchRef.current) {\r\n inputSearchRef.current.focus();\r\n }\r\n\r\n /** input 포커스 아웃 시 키패드 숨김 처리 및 스크롤 제어 */\r\n if (btnSearch || (btnSearch && window.innerWidth < 1081)) {\r\n handleMobileKeyPad();\r\n document.querySelector(\"body\").classList.remove(\"none-scroll\");\r\n document.getElementById(\"content\").classList.remove(\"dim\");\r\n } else {\r\n document.querySelector(\"body\").classList.add(\"none-scroll\");\r\n document.getElementById(\"content\").classList.add(\"dim\");\r\n }\r\n }\r\n\r\n /** 검색창 입력 이벤트 */\r\n const handleValueChange = (event) => {\r\n setSearchVa(event.target.value);\r\n }\r\n\r\n /** 사용자 검색 시 키패드 숨김 처리 */\r\n const handleMobileKeyPad = () => {\r\n if (inputSearchRef.current) {\r\n inputSearchRef.current.blur();\r\n }\r\n }\r\n\r\n /** 사용자 입력 후 검색 버튼 클릭 이벤트 */\r\n const handleInputSearch = (event) => {\r\n if (event.target) {\r\n setBtnSearch((prev) => !prev);\r\n setSearchVa(\"\");\r\n handleMobileKeyPad();\r\n document.querySelector(\"body\").classList.remove(\"none-scroll\");\r\n document.getElementById(\"content\").classList.remove(\"dim\");\r\n }\r\n if (searchVa === \"\") {\r\n alert(\"1\");\r\n }\r\n }\r\n\r\n /** 검색 엔터 이벤트 */\r\n const onEnter = (event) => {\r\n if ((event.keyCode === 13 || event.key === \"Enter\") && searchVa !== \"\") {\r\n document.querySelector(\"body\").classList.remove(\"none-scroll\");\r\n document.getElementById(\"content\").classList.remove(\"dim\");\r\n history.push(`${routes.search}/${searchVa}`);\r\n setBtnSearch(false);\r\n setBtnHamburger(false);\r\n setSearchVa(\"\");\r\n handleMobileKeyPad();\r\n }\r\n }\r\n\r\n /** 햄버거 메뉴 버튼 클릭 이벤트 */\r\n const handleHamburger = (event) => {\r\n if (event.target) {\r\n setBtnHamburger((prev) => !prev);\r\n\r\n if (btnHamburger) {\r\n document.querySelector(\"body\").classList.remove(\"none-scroll\");\r\n } else {\r\n document.querySelector(\"body\").classList.add(\"none-scroll\");\r\n }\r\n }\r\n }\r\n\r\n /** 모바일 메뉴 클릭 이벤트 */\r\n const mobileDepth = () => {\r\n setBtnHamburger(false);\r\n document.querySelector(\"body\").classList.remove(\"none-scroll\");\r\n }\r\n\r\n return (\r\n
\r\n
\r\n

\r\n \r\n \"Alternate\r\n \r\n

\r\n {/* 네비게이션 바 */}\r\n \r\n
\r\n {/* 검색창 */}\r\n
\r\n
\r\n
\r\n \r\n \r\n 검색\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n {/* 모바일 메뉴 */}\r\n
\r\n
    \r\n
  • \r\n \r\n 전시작품Exhibition\r\n \r\n
  • \r\n
  • \r\n \r\n i갤러리i Gallery\r\n \r\n
  • \r\n
  • \r\n \r\n 아트샵Artshop\r\n \r\n
  • \r\n
  • \r\n \r\n 공지사항Notice\r\n \r\n
  • \r\n
  • \r\n \r\n 갤러리소개Introduce\r\n \r\n
  • \r\n
\r\n {/* sns */}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Header;","import React from 'react';\r\nimport { Link } from \"react-router-dom\";\r\n\r\nconst Footer = () => {\r\n \r\n // select 패밀리 사이트 클릭 이벤트\r\n const handleSelectChange = (event) => {\r\n const { value } = event.target;\r\n if (value !== '') {\r\n window.open(value);\r\n }\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
    \r\n
  • 갤러리소개
  • \r\n
  • 오시는길
  • \r\n
\r\n
경기 성남시 분당구 벌말로 50번길 41 투아이센터 1층
\r\n

Bigglz. All rights reserved.

\r\n
\r\n
\r\n
\r\n
Bussiness hours
\r\n
TUE- SUN am 10:30 ~ pm 7:00
\r\n
\r\n
\r\n
Contact
\r\n
070-4123-8817
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Footer;","import React from 'react';\r\nimport Header from \"../components/common/header\";\r\nimport Footer from \"../components/common/footer\";\r\n\r\nconst LayoutGallery = ({ children }) => {\r\n const currentPathname = children.props.location.pathname;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n {children}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n// children.props.match.path\r\nexport default LayoutGallery;","import React, { useState, useEffect, useRef } from \"react\";\r\n\r\nconst Loading = ({ firstLoading, setLoading }) => {\r\n const [yellowG, setYellowG] = useState(\"\");\r\n const [iconHeart, setIconHeart] = useState(\"\");\r\n const artTextRef = useRef(null);\r\n const galleryTextRef = useRef(null);\r\n\r\n /** 텍스트 art 각각 알파벳 이미지 */\r\n const artTextItems = [\r\n \"alphabet_a01\",\r\n \"alphabet_r\",\r\n \"alphabet_t\"\r\n ];\r\n\r\n /** 텍스트 gallery 각각 알파벳 이미지 */\r\n const galleryTextItems = [\r\n \"alphabet_g\",\r\n \"alphabet_a02\",\r\n \"alphabet_l\",\r\n \"alphabet_l\",\r\n \"alphabet_e\",\r\n \"alphabet_r\",\r\n \"alphabet_y\",\r\n ]\r\n\r\n useEffect(() => {\r\n const loading = () => {\r\n document.querySelector(\"body\").classList.add(\"loading\", \"none-scroll\");\r\n\r\n setYellowG(\"on\");\r\n let artTextNumber = 0;\r\n let galleryTxtNumber = 0;\r\n \r\n // art gg gallery 글자 표출 이벤트\r\n if (!yellowG) {\r\n // 노란색 G가 파란색 G에게 기댈 때 실행\r\n let artText = setInterval(function () {\r\n if (artTextNumber === (artTextRef.current.children && artTextRef.current.children.length)) {\r\n clearInterval(artText);\r\n } else {\r\n let firstSpanOn = artTextRef.current.children[artTextNumber];\r\n firstSpanOn.classList.add(\"on\");\r\n artTextNumber++;\r\n return artTextNumber;\r\n }\r\n\r\n // .txt01 자식요소의 span들이 on 클래스를 전부 갖을 때 실행\r\n if (artTextNumber === 3) {\r\n let galleryText = setInterval(function () {\r\n if (galleryTxtNumber === galleryTextRef.current.children.length) {\r\n clearInterval(galleryText);\r\n setIconHeart(\"on\");\r\n } else {\r\n let lastSpanOn = galleryTextRef.current.children[galleryTxtNumber];\r\n lastSpanOn.classList.add(\"on\");\r\n galleryTxtNumber++;\r\n }\r\n }, 140);\r\n }\r\n }, 240);\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n window.scrollTo(0, 0);\r\n }, 10);\r\n\r\n if (firstLoading === false) {\r\n loading();\r\n\r\n setTimeout(() => {\r\n setLoading(true); // 페이지 최초로딩 firstLoading = true로 변경\r\n document.querySelector(\"body\").classList.remove(\"loading\", \"none-scroll\");\r\n }, 1500 * 3);\r\n }\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n

로딩중

\r\n
\r\n {\r\n artTextItems.map((item, index) => (\r\n \r\n {item}\r\n \r\n ))\r\n }\r\n
\r\n
\r\n
\r\n \"G\"\r\n
\r\n
\r\n \"G\"\r\n
\r\n
\r\n
\r\n {\r\n galleryTextItems.map((item, index) => (\r\n \r\n {item}\r\n \r\n ))\r\n }\r\n
\r\n
\r\n \"하트이미지\"\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Loading;\r\n","import React from 'react';\r\nimport Header from \"../components/common/header\";\r\nimport Loading from '../components/common/loading';\r\n\r\nconst LayoutHome = ({ children, firstLoading, setLoading }) => {\r\n\r\n return (\r\n
\r\n
\r\n {\r\n !firstLoading ? (\r\n \r\n ) : (\r\n
\r\n
\r\n {children}\r\n
\r\n )\r\n }\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default LayoutHome;","import React from 'react';\r\n\r\nconst LayoutError = ({ children }) => {\r\n return (\r\n
\r\n
\r\n
\r\n {children}\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default LayoutError;","import React from \"react\";\r\nimport { Route } from \"react-router\";\r\n\r\nconst AppRoute = ({ component: Component, layout: Layout, ...rest }) => {\r\n return (\r\n (\r\n \r\n \r\n \r\n )}\r\n />\r\n )\r\n}\r\n\r\nexport default AppRoute;","import React, { useState } from \"react\";\r\nimport { Switch } from \"react-router\";\r\nimport { routes, components } from \"./routes/routes\";\r\nimport { BrowserRouter as Router } from \"react-router-dom\";\r\nimport LayoutGallery from \"./layouts/LayoutGallery\";\r\nimport LayoutHome from \"./layouts/LayoutHome\";\r\nimport LayoutError from \"./layouts/LayoutError\";\r\nimport AppRoute from \"./layouts/AppRoute\";\r\n\r\nfunction App() {\r\n const [firstLoading, setLoading] = useState(false);\r\n\r\n return (\r\n \r\n \r\n {/* 전시작품 */}\r\n \r\n \r\n {/* 아트샵 */}\r\n \r\n \r\n {/* 공지사항 */}\r\n \r\n \r\n {/* 아이갤러리 */}\r\n \r\n {/* 오시는길 */}\r\n \r\n {/* 회사소개 */}\r\n \r\n {/* 검색 */}\r\n \r\n {/* 메인 */}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register () {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW (swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker (swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister () {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { BrowserRouter } from \"react-router-dom\";\r\nimport App from \"./App\";\r\nimport { unregister } from \"./registerServiceWorker\";\r\n\r\nconst baseUrl = document.getElementsByTagName(\"base\")[0].getAttribute(\"href\");\r\nconst rootElement = document.getElementById(\"root\");\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n rootElement\r\n);\r\n\r\nunregister();\r\n"],"sourceRoot":""}