/*! 2024. 5. 2. 오후 4:59:26 */ (() => { // webpackBootstrap var __webpack_exports__ = {}; const { pageHelper, EventManager, utils, constants } = ShopbySkin; const { initialize } = pageHelper.productListHelper(); const param = utils.getQueryParams(); (() => { initialize({ ...param, categoryNo: param.categoryNo ?? null, }); const productListEl = document.querySelector('product-list-items'); const displayProductActionMap = { // NOTE: 좋아요버튼 클릭 PRODUCT_LIKE_BTN: ({ event, btn }) => { event?.preventDefault?.(); const productNo = Number(btn.getAttribute('shopby-product-no') ?? 0); utils.isSignIn() ? EventManager.fire('MUTATE_LIKE_PRODUCT', { productNo, onSuccess: (like) => { like ? btn.classList.add('is-active') : btn.classList.remove('is-active'); }, }) : EventManager.fire('MODAL_CONFIRM_OPEN', { message: `로그인하셔야 본 서비스를 이용하실 수 있습니다.`, noticeType: constants.NOTICE_MODAL_TYPE.WARNING, onConfirm: () => { const nextUrl = `${location.origin}/pages/sign-in/sign-in.html`; location.href = `${nextUrl}?from=${encodeURIComponent(location.href)}`; }, }); }, // NOTE: 더보기 SEARCH_MORE_PRODUCT: () => { EventManager.fire('SEARCH_MORE_PRODUCT'); }, // NOTE: 상품터치시 상품상세로 이동전 성인상품인지 확인을 위한 이벤트 MOVE_PRODUCT_DETAIL: ({ event }) => { if (!utils.isAdultVerified(event)) { EventManager.fire('MODAL_CONFIRM_OPEN', { message: '성인인증이 필요한 상품입니다.', noticeType: 'CAUTION', onConfirm: () => { location.href = '/pages/intro/adult-certification.html'; }, }); } }, }; const clickEventListener = (event) => { if (!event?.target) { return; } const btn = event.target.closest('[shopby-action]') || event.target.parentElement.closest('[shopby-action]'); const action = btn?.getAttribute('shopby-action'); displayProductActionMap[action]?.({ btn, event, }); }; EventManager.fire('INIT_CATEGORY_SLIDER', { direction: 'horizontal', effect: 'slide', slidesPerView: 'auto', }); productListEl.addEventListener('click', clickEventListener); })(); })(); //2024.0717 snpu98 (() => { const language = 'ko'; const platform = 'mo'; const { EventManager, utils, actions } = ShopbySkin; const getExcludeCategoryNos = async () => { const dataSummery = await fetchProductSummery(); const excludeCategoryNosArr = []; for ( const category1 of dataSummery.depth1Categories ) { const categoryNo1 = category1.categoryNo; const label1 = category1.label; if ( 'en' == label1 ) { excludeCategoryNosArr.push(categoryNo1); } } const excludeCategoryNos = excludeCategoryNosArr.join(','); return excludeCategoryNos; }; const fetchBrandList = async () => { const queryStr = new URLSearchParams({ pageNumber: 1, pageSize: 9999, hasTotalCount: true, "filter.soldOutIncluded": true, }).toString(); return await fetch(`https://shop-api.e-ncp.com/display/brands?${queryStr}`, { method: 'GET', headers: { 'Content-Type': 'application/json', Version: '1.0', clientId: '99ZDpWfrizZV8irrjPvB8w==', platform: 'PC', language: 'ko', }, }).then((res) => res.json()); }; const fetchProductSummery = async (brandNo = '', excludeCategoryNos = '') => { const queryStr = brandNo ? new URLSearchParams({ brandNos: brandNo, excludeCategoryNos, "filter.saleStatus": "ALL_CONDITIONS", "filter.soldout": true, }).toString() : ''; return await fetch(`https://shop-api.e-ncp.com/products/search/summary?${queryStr}`, { method: 'GET', headers: { 'Content-Type': 'application/json', Version: '1.0', clientId: '99ZDpWfrizZV8irrjPvB8w==', platform: 'PC', language: 'ko', }, }).then((res) => res.json()); }; const fetchBrand = async (brandNo) => { return await fetch(`https://shop-api.e-ncp.com/display/brands/${brandNo}`, { method: 'GET', headers: { 'Content-Type': 'application/json', Version: '1.0', clientId: '99ZDpWfrizZV8irrjPvB8w==', platform: 'PC', language: 'ko', }, }).then((res) => res.json()); }; const renderBrandList = async (brandNo) => { const pathname = location.pathname; const brandList = await fetchBrandList(); const excludeCategoryNos = await getExcludeCategoryNos(); const brandListEl = document.querySelector('.brand-list-wrap ul'); if (brandListEl) { brandListEl.innerHTML = ''; brandList.items.forEach(async (brand) => { const active = brandNo == brand.brandNo ? 'active' : ''; brandListEl.innerHTML += `
${brand.name}