{
  "version": 3,
  "sources": ["ssg:https://asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsModule.types.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsElement/ProductsElement.utils.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsElementProvider/ProductsElementProvider.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsElementProvider/ProductsElementProvider.hooks.js", "ssg:https://asset.29cm.co.kr/contents/framer/types/models/sort.js", "ssg:https://asset.29cm.co.kr/contents/framer/apis/best/BestApiService.js", "ssg:https://asset.29cm.co.kr/contents/framer/apis/recommend/RecommendApiService.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/modules/mock.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsModule.hooks.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsElement/ProductsElement.hooks.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsElement/PaginationElement/ExpandButtonElement/ExpandButtonElement.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsElement/PaginationElement/VerticalPaginationElement/VerticalPaginationElement.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsElement/PaginationElement/PaginationElement.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsElement/ProductsElement.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/LinkedProductsModule/LinkedProductsModule.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsModule.controls.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/systems/Button/Button.constants.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsModule.js"],
  "sourcesContent": ["var ScrollDirection = /* @__PURE__ */ ((ScrollDirection2) => {\n  ScrollDirection2[\"Vertical\"] = \"vertical\";\n  ScrollDirection2[\"Horizontal\"] = \"horizontal\";\n  return ScrollDirection2;\n})(ScrollDirection || {});\nvar ProductsModuleInputType = /* @__PURE__ */ ((ProductsModuleInputType2) => {\n  ProductsModuleInputType2[ProductsModuleInputType2[\"Linked\"] = 0] = \"Linked\";\n  ProductsModuleInputType2[ProductsModuleInputType2[\"Manual\"] = 1] = \"Manual\";\n  return ProductsModuleInputType2;\n})(ProductsModuleInputType || {});\nvar PaginationType = /* @__PURE__ */ ((PaginationType2) => {\n  PaginationType2[PaginationType2[\"Default\"] = 0] = \"Default\";\n  PaginationType2[PaginationType2[\"ExpandButton\"] = 1] = \"ExpandButton\";\n  return PaginationType2;\n})(PaginationType || {});\nexport {\n  PaginationType,\n  ProductsModuleInputType,\n  ScrollDirection\n};\n", "import \"../../../../hooks/stores/content/content.store.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { isCanvas } from \"../../../../utils/framer/isCanvas.js\";\nimport \"react\";\nimport { ScrollDirection, PaginationType } from \"../ProductsModule.types.js\";\nimport { PRODUCTS_PER_REQUEST } from \"../ProductsModule.constants.js\";\nconst getScrollMargin = (layout) => {\n  switch (layout.direction) {\n    case ScrollDirection.Vertical:\n      return layout.scrollMargin;\n    case ScrollDirection.Horizontal:\n      return 0;\n  }\n};\nconst isElementCrossed = (element, upper = 0) => {\n  const top = (element == null ? void 0 : element.getBoundingClientRect().top) ?? 0;\n  return top - upper <= 0;\n};\nconst initializeScroll = (element, layout) => {\n  setTimeout(() => {\n    if (layout.direction === ScrollDirection.Vertical && isElementCrossed(element, getScrollMargin(layout))) {\n      element == null ? void 0 : element.scrollIntoView({\n        block: \"start\",\n        inline: \"nearest\"\n      });\n    }\n    if (layout.direction === ScrollDirection.Horizontal) {\n      element == null ? void 0 : element.scrollTo({\n        left: 0\n      });\n    }\n  });\n};\nconst isExpandable = (pagination, page) => {\n  return pagination.button.texts[page - 1] !== void 0;\n};\nconst getDisplayCount = (layout, page) => {\n  if (layout.direction === ScrollDirection.Vertical && layout.verticalPagination !== void 0) {\n    switch (layout.verticalPagination.type) {\n      case PaginationType.ExpandButton:\n        return isExpandable(layout.verticalPagination, page) ? layout.verticalPagination.rowDisplayCount * layout.columnCount * page : void 0;\n      default:\n        return void 0;\n    }\n  }\n};\nconst canFetchOnLastItemView = (layout, page) => {\n  if (isCanvas()) {\n    return false;\n  }\n  if (layout.direction === ScrollDirection.Vertical && layout.verticalPagination !== void 0) {\n    switch (layout.verticalPagination.type) {\n      case PaginationType.Default:\n        return true;\n      case PaginationType.ExpandButton:\n        return !isExpandable(layout.verticalPagination, page);\n      default:\n        return true;\n    }\n  }\n  return true;\n};\nconst getRequestSize = (layout) => {\n  if (layout.direction === ScrollDirection.Horizontal || layout.isResponsive) {\n    return PRODUCTS_PER_REQUEST;\n  }\n  if (layout.verticalPagination.type === PaginationType.Default) {\n    return PRODUCTS_PER_REQUEST;\n  }\n  return layout.verticalPagination.rowDisplayCount * layout.columnCount;\n};\nexport {\n  canFetchOnLastItemView,\n  getDisplayCount,\n  getRequestSize,\n  getScrollMargin,\n  initializeScroll\n};\n", "import { jsx } from \"react/jsx-runtime\";\nimport { createContext } from \"react\";\nimport \"../../../systems/Countdown/Countdown.js\";\nimport \"react-dom\";\nimport \"../../../systems/Dialog/Dialog.module.css.js\";\nimport \"framer-motion\";\nimport \"../../../systems/Expandable/Expandable.js\";\nimport \"../../../systems/FixedScrollProgressBar/FixedScrollProgressBar.js\";\nimport \"../../../../hooks/stores/content/content.store.js\";\nimport \"../../../../hooks/stores/dialog/dialog.store.js\";\nimport \"../../../../hooks/stores/global-layout/global-layout.store.js\";\nimport \"../../../../hooks/stores/toast/toast.store.js\";\nimport \"../../../../node_modules/@firebase/analytics/dist/esm/index.esm2017.js\";\nimport \"../../../../node_modules/firebase/app/dist/esm/index.esm.js\";\nimport \"../../../../node_modules/swr/core/dist/index.js\";\nimport \"../../../../config/index.js\";\nimport \"../../../../node_modules/vite-plugin-node-polyfills/shims/buffer/dist/index.js\";\nimport \"../../../../node_modules/js-cookie/dist/js.cookie.js\";\nimport \"framer\";\nimport \"../../../../node_modules/@29cm/snowplow/dist/esm/core/snowplow.js\";\nimport { PRODUCTS_PER_REQUEST } from \"../../../systems/Products/Products.js\";\nimport \"../../../../node_modules/swr/mutation/dist/index.js\";\nimport \"../../../@shared/providers/ThemeProvider/ThemeProvider.js\";\nimport \"../../../@shared/providers/BreakpointProvider/BreakpointProvider.js\";\nimport \"../../../../hooks/stores/bottom-sheet/bottom-sheet.store.js\";\nimport \"../../../../containers/DialogContainer/DialogContainer.emitter.js\";\nimport \"../../../../utils/redirectLogin.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport \"../../../../constants/snowplow/snowplowSchema.js\";\nimport \"../../../systems/ResponsiveSplitView/ResponsiveSplitView.js\";\nimport \"../../../systems/ResponsiveSplitViewOverlayButton/ResponsiveSplitViewOverlayButton.js\";\nimport \"../../../systems/RollingNumber/RollingNumber.js\";\nimport \"../../../systems/TabBar/TabBar.js\";\nimport \"../../../systems/TimeProgressBar/TimeProgressBar.js\";\nimport \"../../../systems/ViewportContainer/ViewportContainer.js\";\nconst ProductsElementContext = createContext({\n  query: void 0,\n  size: PRODUCTS_PER_REQUEST\n});\nconst ProductsElementProvider = ({\n  children,\n  query,\n  size\n}) => {\n  return /* @__PURE__ */ jsx(ProductsElementContext.Provider, { value: {\n    query,\n    size\n  }, children });\n};\nexport {\n  ProductsElementContext,\n  ProductsElementProvider\n};\n", "import { useContext } from \"react\";\nimport { ProductsElementContext } from \"./ProductsElementProvider.js\";\nconst useProductsElementContext = () => {\n  return useContext(ProductsElementContext);\n};\nexport {\n  useProductsElementContext\n};\n", "var SortType = /* @__PURE__ */ ((SortType2) => {\n  SortType2[\"FEATURED\"] = \"FEATURED\";\n  SortType2[\"BEST\"] = \"BEST\";\n  SortType2[\"NEW\"] = \"NEW\";\n  SortType2[\"REVIEW_DESC\"] = \"REVIEW_DESC\";\n  SortType2[\"PRICE_DESC\"] = \"PRICE_DESC\";\n  SortType2[\"PRICE_ASC\"] = \"PRICE_ASC\";\n  SortType2[\"DISCOUNT_DESC\"] = \"DISCOUNT_DESC\";\n  SortType2[\"LIKE_DESC\"] = \"LIKE_DESC\";\n  SortType2[\"ORDER_DESC\"] = \"ORDER_DESC\";\n  return SortType2;\n})(SortType || {});\nexport {\n  SortType\n};\n", "import { APIService } from \"../APIService.js\";\nimport { throwFailError } from \"../@middlewares/throwFailError.js\";\nimport { env } from \"../../config/index.js\";\nclass BestApiService extends APIService {\n  constructor() {\n    super();\n    this.setBaseUrl(env.api.search);\n    this.setMiddleware(throwFailError);\n  }\n  async getRankedProducts(payload) {\n    return this.post(`/api/v5/best`, payload).then((data) => ({\n      products: formatBestProducts(data.data.products),\n      totalCount: data.data.totalCount\n    }));\n  }\n  async getPLPFacetGroup(payload) {\n    return this.post(`/api/v5/plp/facet-group`, payload);\n  }\n}\nconst bestApi = new BestApiService();\nconst formatBestProducts = (products) => products.map((product) => {\n  var _a;\n  return {\n    ...product,\n    frontBrand: {\n      frontBrandId: product.frontBrandNo,\n      nameKor: product.frontBrandNameKor,\n      nameEng: product.frontBrandNameEng\n    },\n    productId: product.itemNo,\n    productName: product.itemName,\n    isCoupon: product.saleInfoV2.isCoupon,\n    heartOn: true,\n    frontCategories: (_a = product.frontCategoryInfo) == null ? void 0 : _a.map((category) => ({\n      largeCategoryCode: category.categoryLargeCode,\n      largeCategoryName: category.categoryLargeName,\n      mediumCategoryCode: category.categoryMediumCode,\n      mediumCategoryName: category.categoryMediumName,\n      smallCategoryCode: category.categorySmallCode,\n      smallCategoryName: category.categorySmallName\n    }))\n  };\n});\nexport {\n  bestApi\n};\n", "import { APIService } from \"../APIService.js\";\nimport { throwFailError } from \"../@middlewares/throwFailError.js\";\nimport { env } from \"../../config/index.js\";\nclass RecommendApiService extends APIService {\n  constructor() {\n    super();\n    this.setBaseUrl(env.api.content);\n    this.setMiddleware(throwFailError);\n  }\n  async getPersonalizedProducts(productGroupId, limit) {\n    return this.get(`/api/v4/framers/proxy/content-api/api/v4/product-groups/${productGroupId}/for-you-products`, {\n      limit\n    }, {\n      credentials: \"include\"\n    }).then((data) => ({\n      ...data,\n      data: {\n        ...data.data,\n        productList: formatProducts(data.data.productList)\n      }\n    }));\n  }\n  async getRecommendedProductsByTagId(query) {\n    return this.get(\"/api/v4/framers/proxy/content-api/api/v5/recommendation/personalize/products\", query, {\n      credentials: \"include\"\n    }).then((data) => ({\n      ...data,\n      data: {\n        ...data.data,\n        products: formatCollectionProduct2Product(data.data.products)\n      }\n    }));\n  }\n}\nconst recommendApi = new RecommendApiService();\nconst formatCollectionProduct2Product = (products) => products.map((product) => {\n  var _a;\n  return {\n    frontBrand: {\n      frontBrandId: product.frontBrand.id,\n      nameKor: product.frontBrand.nameKor,\n      nameEng: product.frontBrand.nameEng\n    },\n    productId: product.productId,\n    productName: product.productName,\n    subjectDescriptions: product.subjectDescriptions,\n    imageUrl: product.imageUrl,\n    consumerPrice: product.consumerPrice,\n    lastSalePrice: product.lastSalePrice,\n    lastSalePercent: product.lastSalePercent,\n    heartCount: product.heartCount,\n    heartOn: product.heartOn,\n    reviewCount: product.reviewCount,\n    reviewAveragePoint: product.reviewAveragePoint,\n    isCoupon: product.saleInfo.coupon,\n    isFreeShipping: product.freeShipping,\n    isNew: product.newProperty,\n    isSoldOut: product.soldOut,\n    frontCategories: (_a = product.frontCategories) == null ? void 0 : _a.map((category) => ({\n      largeCategoryCode: category.largeCode ?? 0,\n      largeCategoryName: category.largeName ?? \"\",\n      mediumCategoryCode: category.mediumCode ?? 0,\n      mediumCategoryName: category.mediumName ?? \"\",\n      smallCategoryCode: category.smallCode ?? 0,\n      smallCategoryName: category.smallName ?? \"\"\n    }))\n  };\n});\nconst formatProducts = (products) => products.map((product) => ({\n  frontBrand: {\n    frontBrandId: product.frontBrandId,\n    nameKor: product.frontBrandNameKor,\n    nameEng: product.frontBrandNameEng\n  },\n  productId: product.productId,\n  productName: product.productName,\n  subjectDescriptions: product.subjectDescriptions,\n  imageUrl: product.imageUrl,\n  consumerPrice: product.consumerPrice,\n  lastSalePrice: product.lastSalePrice,\n  lastSalePercent: product.lastSalePercent,\n  heartCount: product.heartCount,\n  heartOn: product.heartOn,\n  reviewCount: product.reviewCount,\n  reviewAveragePoint: product.reviewAveragePoint,\n  isCoupon: product.searchSale.coupon,\n  isFreeShipping: product.freeShipping,\n  isNew: product.newProperty,\n  isSoldOut: product.soldOut,\n  frontCategoryInfo: product.searchFrontCategoryList\n}));\nexport {\n  formatCollectionProduct2Product,\n  recommendApi\n};\n", "const MOCK_PRODUCTS = [{\n  consumerPrice: 155e3,\n  imageUrl: \"/item/202502/11efe8378fbdcae28f0ab7d30031e3c9.jpg\",\n  heartCount: 2789,\n  reviewCount: 118,\n  lastSalePercent: 15,\n  lastSalePrice: 132525,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [\"[25SS]\"],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"\uB178\uC2A4\uD398\uC774\uC2A4\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 1942207,\n  productName: \"\uBCF4\uB808\uC54C\uB9AC\uC2A4 2 NM2DR04A_BLK\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 269100100,\n    largeCategoryName: \"\uC5EC\uC131\uAC00\uBC29\",\n    mediumCategoryCode: 269106100,\n    mediumCategoryName: \"\uBC31\uD329\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"\uB0A8\uC131\uAC00\uBC29\",\n    mediumCategoryCode: 273104100,\n    mediumCategoryName: \"\uBC31\uD329\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"\uB0A8\uC131\uAC00\uBC29\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 269100100,\n    largeCategoryName: \"\uC5EC\uC131\uAC00\uBC29\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 169e3,\n  imageUrl: \"/item/202411/11efa7ab6d5d1ecf9316592337ae1aca.jpg\",\n  heartCount: 22,\n  reviewCount: 0,\n  lastSalePercent: 44,\n  lastSalePrice: 94640,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 0,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"\uB178\uC2A4\uD398\uC774\uC2A4\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2389405,\n  productName: \"\uB4C0\uC5BC \uBC31\uD329 NM2DQ06K_LBE\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"\uB0A8\uC131\uAC00\uBC29\",\n    mediumCategoryCode: 273104100,\n    mediumCategoryName: \"\uBC31\uD329\",\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 159e3,\n  imageUrl: \"/item/202411/11efa7a8eb30739b9d18ef45b4791ed5.jpg\",\n  heartCount: 3926,\n  reviewCount: 476,\n  lastSalePercent: 10,\n  lastSalePrice: 143100,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 4.9,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"\uB178\uC2A4\uD398\uC774\uC2A4\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 1634106,\n  productName: \"\uBE45 \uC0F7 NM2DQ50A_BLK\",\n  isCoupon: false,\n  frontCategories: [{\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"\uB0A8\uC131\uAC00\uBC29\",\n    mediumCategoryCode: 273104100,\n    mediumCategoryName: \"\uBC31\uD329\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"\uB0A8\uC131\uAC00\uBC29\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 368e3,\n  imageUrl: \"/item/202501/11efc9657db7ebf58521852ca60f84fe.jpg\",\n  heartCount: 3710,\n  reviewCount: 200,\n  lastSalePercent: 0,\n  lastSalePrice: 368e3,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [\"[25SS]\"],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"\uB178\uC2A4\uD398\uC774\uC2A4\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2714814,\n  productName: \"\uC5EC\uC131 \uB178\uBCA8\uD2F0 \uB215\uC2DC RDS \uB2E4\uC6B4 \uC790\uCF13 NJ1DR80J_BLK\",\n  isCoupon: false,\n  frontCategories: [{\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"\uC5EC\uC131\uC758\uB958\",\n    mediumCategoryCode: 268102100,\n    mediumCategoryName: \"\uC544\uC6B0\uD130\",\n    smallCategoryCode: 268102117,\n    smallCategoryName: \"\uC20F\uD328\uB529\"\n  }, {\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"\uC5EC\uC131\uC758\uB958\",\n    mediumCategoryCode: 268102100,\n    mediumCategoryName: \"\uC544\uC6B0\uD130\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"\uC5EC\uC131\uC758\uB958\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 149e3,\n  imageUrl: \"/item/202502/11efe1c52098184b8521d58f5330e571.jpg\",\n  heartCount: 169,\n  reviewCount: 2,\n  lastSalePercent: 15,\n  lastSalePrice: 127395,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"\uB178\uC2A4\uD398\uC774\uC2A4\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2715548,\n  productName: \"\uBCF4\uB808\uC54C\uB9AC\uC2A4 2 NM2DQ52E_JBK\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"\uB0A8\uC131\uAC00\uBC29\",\n    mediumCategoryCode: 273104100,\n    mediumCategoryName: \"\uBC31\uD329\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"\uB0A8\uC131\uAC00\uBC29\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 109e3,\n  imageUrl: \"/item/202411/11efa7a909f8dae393166bd9acde4a3d.jpg\",\n  heartCount: 5482,\n  reviewCount: 403,\n  lastSalePercent: 15,\n  lastSalePrice: 93195,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"\uB178\uC2A4\uD398\uC774\uC2A4\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 1744341,\n  productName: \"\uBBF8\uB2C8\uC0F7 NM2DQ53A_BLK\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"\uB0A8\uC131\uAC00\uBC29\",\n    mediumCategoryCode: 273104100,\n    mediumCategoryName: \"\uBC31\uD329\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"\uB0A8\uC131\uAC00\uBC29\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 398e3,\n  imageUrl: \"/item/202502/11efe1c50372b3098521eff5f021c0b7.jpg\",\n  heartCount: 4450,\n  reviewCount: 500,\n  lastSalePercent: 0,\n  lastSalePrice: 398e3,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"\uB178\uC2A4\uD398\uC774\uC2A4\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2158524,\n  productName: \"\uB178\uBCA8\uD2F0 \uB215\uC2DC RDS \uB2E4\uC6B4 \uC790\uCF13 NJ1DQ51J_BLK\",\n  isCoupon: false,\n  frontCategories: [{\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"\uB0A8\uC131\uC758\uB958\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"\uC544\uC6B0\uD130\",\n    smallCategoryCode: 272102104,\n    smallCategoryName: \"\uC20F\uD328\uB529\"\n  }, {\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"\uC5EC\uC131\uC758\uB958\",\n    mediumCategoryCode: 268116100,\n    mediumCategoryName: \"EXCLUSIVE\",\n    smallCategoryCode: 268116103,\n    smallCategoryName: \"\uC544\uC6B0\uD130\"\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"\uB0A8\uC131\uC758\uB958\",\n    mediumCategoryCode: 272111100,\n    mediumCategoryName: \"EXCLUSIVE\",\n    smallCategoryCode: 272111103,\n    smallCategoryName: \"\uC544\uC6B0\uD130\"\n  }, {\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"\uC5EC\uC131\uC758\uB958\",\n    mediumCategoryCode: 268116100,\n    mediumCategoryName: \"EXCLUSIVE\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"\uB0A8\uC131\uC758\uB958\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"\uB0A8\uC131\uC758\uB958\",\n    mediumCategoryCode: 272111100,\n    mediumCategoryName: \"EXCLUSIVE\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"\uB0A8\uC131\uC758\uB958\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"\uC544\uC6B0\uD130\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"\uC5EC\uC131\uC758\uB958\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 199e3,\n  imageUrl: \"/item/202502/11efe9a806bbc08c8f0af1b717708006.jpg\",\n  heartCount: 1893,\n  reviewCount: 94,\n  lastSalePercent: 5,\n  lastSalePrice: 189050,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [\"[25SS]\"],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"\uB178\uC2A4\uD398\uC774\uC2A4\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2326012,\n  productName: \"\uB215\uC2DC \uC628\uBCFC \uBCA0\uC2A4\uD2B8 NV3NR50A_BLK\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"\uB0A8\uC131\uC758\uB958\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"\uC544\uC6B0\uD130\",\n    smallCategoryCode: 272102106,\n    smallCategoryName: \"\uBCA0\uC2A4\uD2B8\"\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"\uB0A8\uC131\uC758\uB958\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"\uB0A8\uC131\uC758\uB958\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"\uC544\uC6B0\uD130\",\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 269e3,\n  imageUrl: \"/item/202412/11efb924aca3ec8ead1bbdf9e249e357.jpg\",\n  heartCount: 172,\n  reviewCount: 20,\n  lastSalePercent: 0,\n  lastSalePrice: 269e3,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"\uB178\uC2A4\uD398\uC774\uC2A4\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2987892,\n  productName: \"\uB0A8\uC131 1996 \uC5D0\uCF54 \uB215\uC2DC \uBCA0\uC2A4\uD2B8 NV1DQ55A_BLK\",\n  isCoupon: false,\n  frontCategories: [{\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"\uC5EC\uC131\uC758\uB958\",\n    mediumCategoryCode: 268102100,\n    mediumCategoryName: \"\uC544\uC6B0\uD130\",\n    smallCategoryCode: 268102117,\n    smallCategoryName: \"\uC20F\uD328\uB529\"\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"\uB0A8\uC131\uC758\uB958\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"\uC544\uC6B0\uD130\",\n    smallCategoryCode: 272102104,\n    smallCategoryName: \"\uC20F\uD328\uB529\"\n  }]\n}, {\n  consumerPrice: 398e3,\n  imageUrl: \"/item/202501/11efd3c8584dfacb85218560bb0f3ad4.jpg\",\n  heartCount: 4982,\n  reviewCount: 369,\n  lastSalePercent: 0,\n  lastSalePrice: 398e3,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [\"[25SS]\"],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"\uB178\uC2A4\uD398\uC774\uC2A4\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2276799,\n  productName: \"\uB178\uBCA8\uD2F0 \uB215\uC2DC \uB2E4\uC6B4 \uC790\uCF13 (RDS) NJ1DR50K_RBK\",\n  isCoupon: false,\n  frontCategories: [{\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"\uB0A8\uC131\uC758\uB958\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"\uC544\uC6B0\uD130\",\n    smallCategoryCode: 272102104,\n    smallCategoryName: \"\uC20F\uD328\uB529\"\n  }, {\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"\uC5EC\uC131\uC758\uB958\",\n    mediumCategoryCode: 268102100,\n    mediumCategoryName: \"\uC544\uC6B0\uD130\",\n    smallCategoryCode: 268102117,\n    smallCategoryName: \"\uC20F\uD328\uB529\"\n  }, {\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"\uC5EC\uC131\uC758\uB958\",\n    mediumCategoryCode: 268116100,\n    mediumCategoryName: \"EXCLUSIVE\",\n    smallCategoryCode: 268116103,\n    smallCategoryName: \"\uC544\uC6B0\uD130\"\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"\uB0A8\uC131\uC758\uB958\",\n    mediumCategoryCode: 272111100,\n    mediumCategoryName: \"EXCLUSIVE\",\n    smallCategoryCode: 272111103,\n    smallCategoryName: \"\uC544\uC6B0\uD130\"\n  }, {\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"\uC5EC\uC131\uC758\uB958\",\n    mediumCategoryCode: 268116100,\n    mediumCategoryName: \"EXCLUSIVE\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"\uB0A8\uC131\uC758\uB958\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"\uB0A8\uC131\uC758\uB958\",\n    mediumCategoryCode: 272111100,\n    mediumCategoryName: \"EXCLUSIVE\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"\uB0A8\uC131\uC758\uB958\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"\uC544\uC6B0\uD130\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"\uC5EC\uC131\uC758\uB958\",\n    mediumCategoryCode: 268102100,\n    mediumCategoryName: \"\uC544\uC6B0\uD130\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"\uC5EC\uC131\uC758\uB958\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 178e3,\n  imageUrl: \"/item/202411/11efa7d791842b119d18ff2e784a1000.jpg\",\n  heartCount: 216,\n  reviewCount: 3,\n  lastSalePercent: 34,\n  lastSalePrice: 118370,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"\uB178\uC2A4\uD398\uC774\uC2A4\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2885368,\n  productName: \"\uBC34\uB4E0 \uC790\uCF13 NJ3BQ53K_GRY\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"\uB0A8\uC131\uC758\uB958\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"\uC544\uC6B0\uD130\",\n    smallCategoryCode: 272102129,\n    smallCategoryName: \"\uBC14\uB78C\uB9C9\uC774\"\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"\uB0A8\uC131\uC758\uB958\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"\uB0A8\uC131\uC758\uB958\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"\uC544\uC6B0\uD130\",\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 178e3,\n  imageUrl: \"/item/202411/11efa7d93984c9559d1821d6fcb2b98b.jpg\",\n  heartCount: 274,\n  reviewCount: 2,\n  lastSalePercent: 34,\n  lastSalePrice: 118370,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"\uB178\uC2A4\uD398\uC774\uC2A4\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2901769,\n  productName: \"\uBC34\uB4E0 \uC790\uCF13 NJ3BQ53L_BBR\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"\uB0A8\uC131\uC758\uB958\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"\uC544\uC6B0\uD130\",\n    smallCategoryCode: 272102104,\n    smallCategoryName: \"\uC20F\uD328\uB529\"\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"\uB0A8\uC131\uC758\uB958\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"\uB0A8\uC131\uC758\uB958\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"\uC544\uC6B0\uD130\",\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 165e3,\n  imageUrl: \"/item/202411/11efa7ba136c129b9d18835acf182eb2.jpg\",\n  heartCount: 378,\n  reviewCount: 12,\n  lastSalePercent: 36,\n  lastSalePrice: 105600,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"\uB178\uC2A4\uD398\uC774\uC2A4\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2652594,\n  productName: \"\uC5B4\uC13C\uB4DC \uC5D8\uD2F0 25 NM2SQ11A_BLK\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"\uB0A8\uC131\uAC00\uBC29\",\n    mediumCategoryCode: 273104100,\n    mediumCategoryName: \"\uBC31\uD329\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"\uB0A8\uC131\uAC00\uBC29\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 179e3,\n  imageUrl: \"/item/202412/11efc64ed7874620ad1be9f7ff63eea8.jpg\",\n  heartCount: 98,\n  reviewCount: 7,\n  lastSalePercent: 15,\n  lastSalePrice: 153045,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [\"[25SS]\"],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"\uB178\uC2A4\uD398\uC774\uC2A4\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 3005503,\n  productName: \"\uC288\uD37C\uD329 \uD22C NM2DR01J_BLK\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 269100100,\n    largeCategoryName: \"\uC5EC\uC131\uAC00\uBC29\",\n    mediumCategoryCode: 269106100,\n    mediumCategoryName: \"\uBC31\uD329\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"\uB0A8\uC131\uAC00\uBC29\",\n    mediumCategoryCode: 273104100,\n    mediumCategoryName: \"\uBC31\uD329\",\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 149e3,\n  imageUrl: \"/item/202411/11efa7e13b9316619316a5c4947fa678.jpg\",\n  heartCount: 774,\n  reviewCount: 35,\n  lastSalePercent: 41,\n  lastSalePrice: 88655,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"\uB178\uC2A4\uD398\uC774\uC2A4\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2949339,\n  productName: \"\uC5EC\uC131 \uC2A4\uD2B8\uB9C1 EX \uBD80\uB760 NS99Q57J_RBK\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 270100100,\n    largeCategoryName: \"\uC5EC\uC131\uC2E0\uBC1C\",\n    mediumCategoryCode: 270103100,\n    mediumCategoryName: \"\uBD80\uCE20\",\n    smallCategoryCode: 270103101,\n    smallCategoryName: \"\uC575\uD074 \uBD80\uCE20\"\n  }]\n}, {\n  consumerPrice: 269e3,\n  imageUrl: \"/item/202411/11efad615d9f79558521b5ff60f4e8a3.jpg\",\n  heartCount: 640,\n  reviewCount: 6,\n  lastSalePercent: 44,\n  lastSalePrice: 151050,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"\uB178\uC2A4\uD398\uC774\uC2A4\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2923736,\n  productName: \"\uC5EC\uC131 \uC368\uBC0B \uD788\uD2B8\uB77C\uC778 \uC790\uCF13 NJ3NQ82A_BLK\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"\uC5EC\uC131\uC758\uB958\",\n    mediumCategoryCode: 268102100,\n    mediumCategoryName: \"\uC544\uC6B0\uD130\",\n    smallCategoryCode: 268102118,\n    smallCategoryName: \"\uACBD\uB7C9\uD328\uB529\"\n  }]\n}, {\n  consumerPrice: 178e3,\n  imageUrl: \"/item/202411/11efa7d9f79a488d9316d7182d8c60f0.jpg\",\n  heartCount: 905,\n  reviewCount: 7,\n  lastSalePercent: 24,\n  lastSalePrice: 135280,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 4.5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"\uB178\uC2A4\uD398\uC774\uC2A4\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2906821,\n  productName: \"\uC5EC\uC131 \uC5D0\uC13C\uC15C \uB77C\uC774\uD2B8 \uBE0C\uC774\uBAA8\uC158 \uC790\uCF13 NJ3NQ80J_CRE\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"\uC5EC\uC131\uC758\uB958\",\n    mediumCategoryCode: 268102100,\n    mediumCategoryName: \"\uC544\uC6B0\uD130\",\n    smallCategoryCode: 268102118,\n    smallCategoryName: \"\uACBD\uB7C9\uD328\uB529\"\n  }]\n}, {\n  consumerPrice: 418e3,\n  imageUrl: \"/item/202411/11efad4449d5bb7f8521a9c74e484920.jpg\",\n  heartCount: 971,\n  reviewCount: 28,\n  lastSalePercent: 15,\n  lastSalePrice: 357390,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"\uB178\uC2A4\uD398\uC774\uC2A4\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2969341,\n  productName: \"\uC5EC\uC131 \uB178\uBCA8\uD2F0 \uB215\uC2DC \uBBF8\uB4DC \uB2E4\uC6B4 \uC790\uCF13 (RDS) NJ1DQ94J_BLK\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"\uC5EC\uC131\uC758\uB958\",\n    mediumCategoryCode: 268102100,\n    mediumCategoryName: \"\uC544\uC6B0\uD130\",\n    smallCategoryCode: 268102117,\n    smallCategoryName: \"\uC20F\uD328\uB529\"\n  }]\n}, {\n  consumerPrice: 89e3,\n  imageUrl: \"/item/202411/11efa7abf5e841e39d18072019049ade.jpg\",\n  heartCount: 3355,\n  reviewCount: 175,\n  lastSalePercent: 15,\n  lastSalePrice: 76095,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"\uB178\uC2A4\uD398\uC774\uC2A4\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2417483,\n  productName: \"\uBCF4\uB808\uC54C\uB9AC\uC2A4 \uBBF8\uB2C8 \uD329 NM2DQ55A_BLK\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 269100100,\n    largeCategoryName: \"\uC5EC\uC131\uAC00\uBC29\",\n    mediumCategoryCode: 269106100,\n    mediumCategoryName: \"\uBC31\uD329\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 269100100,\n    largeCategoryName: \"\uC5EC\uC131\uAC00\uBC29\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 399e3,\n  imageUrl: \"/item/202411/11efa5991c716fa3afbc4f7994967cf8.jpg\",\n  heartCount: 807,\n  reviewCount: 30,\n  lastSalePercent: 30,\n  lastSalePrice: 279300,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [\"[29CM \uB2E8\uB3C5]\"],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"\uB178\uC2A4\uD398\uC774\uC2A4\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2916253,\n  productName: \"\uC368\uBC0B \uB9C8\uD14C\uD638\uB978 RDS \uB2E4\uC6B4 \uC790\uCF13 NJ1DQ90A_RBK\",\n  isCoupon: false,\n  frontCategories: [{\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"\uB0A8\uC131\uC758\uB958\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"\uC544\uC6B0\uD130\",\n    smallCategoryCode: 272102104,\n    smallCategoryName: \"\uC20F\uD328\uB529\"\n  }]\n}];\nexport {\n  MOCK_PRODUCTS\n};\n", "import useSWRInfinite from \"../../../node_modules/swr/infinite/dist/index.js\";\nimport { useMemo } from \"react\";\nimport { SortType } from \"../../../types/models/sort.js\";\nimport { keywordCollectionApi } from \"../../../apis/keyword-collections/KeywordCollectionApiService.js\";\nimport { QueryType, RankingType } from \"../types.js\";\nimport { splitToNumberArray } from \"../../../utils/splitToNumberArray.js\";\nimport { framerApi } from \"../../../apis/framer/FramerApiService.js\";\nimport { bestApi } from \"../../../apis/best/BestApiService.js\";\nimport { recommendApi } from \"../../../apis/recommend/RecommendApiService.js\";\nimport \"../../../hooks/stores/content/content.store.js\";\nimport \"../../../utils/event-properties/source.js\";\nimport { isCanvas } from \"../../../utils/framer/isCanvas.js\";\nimport { isFramerPreview } from \"../../../utils/framer/isFramerPreview.js\";\nimport { MOCK_PRODUCTS } from \"../mock.js\";\nimport { brandSaleApi } from \"../../../apis/brand-sale/BrandSaleApiService.js\";\nimport last from \"../../../node_modules/lodash-es/last.js\";\nconst BRAND_CURATION_PRODUCTS_MAX_SIZE = 60;\nconst RECOMMENDATION_PRODUCTS_MAX_SIZE = 60;\nconst RANKING_PRODUCTS_PER_REQUEST = 24;\nconst RANKING_PRODUCTS_MAX_SIZE = 100;\nconst RANKING_PRODUCTS_DEFAULT_AGE = 30;\nconst getInitialPaginationOptions = (size) => ({\n  page: 1,\n  size\n});\nconst useProductsQuery = (options) => {\n  const {\n    enabled: _enabled = true,\n    query,\n    size: _size,\n    userSegment\n  } = options;\n  const enabled = _enabled && query !== void 0;\n  const {\n    isLoading,\n    data,\n    size,\n    setSize,\n    ...rest\n  } = useSWRInfinite(getKey(query, getInitialPaginationOptions(_size), enabled), ({\n    key\n  }) => queryProducts(key.query, userSegment, key.pagination));\n  const products = useMemo(() => (data == null ? void 0 : data.flatMap((item) => item.products)) ?? [], [data]);\n  const {\n    hasNext = false\n  } = last(data) ?? {};\n  const fetchNextPage = () => {\n    if (!hasNext) {\n      return;\n    }\n    setSize((prev) => prev + 1);\n  };\n  return {\n    isLoading: isLoading || !enabled,\n    products,\n    hasNext,\n    page: size,\n    fetchNextPage,\n    ...rest\n  };\n};\nconst fetchProducts = async (query, options) => {\n  if (!query.productIds) {\n    return {\n      hasNext: false,\n      products: []\n    };\n  }\n  const {\n    page,\n    size\n  } = options;\n  const offset = page * size;\n  const productIds = splitToNumberArray(query.productIds);\n  const skipped = productIds.slice(offset, productIds.length);\n  const took = skipped.slice(0, size);\n  const hasNext = skipped.length > took.length;\n  const products = await framerApi.getFramerProductListV2(took);\n  return {\n    hasNext,\n    products\n  };\n};\nconst fetchKeywordCollectionProducts = async (query, options) => {\n  var _a, _b;\n  if (!query.keywordCollectionId) {\n    return {\n      hasNext: false,\n      products: []\n    };\n  }\n  const keywordCollectionId = Number(query.keywordCollectionId);\n  const {\n    hasNext,\n    resultList\n  } = await keywordCollectionApi.getCollectionProducts({\n    collectionId: keywordCollectionId,\n    productGroupId: ((_a = query.selectedProductGroup) == null ? void 0 : _a.id) ?? await fetchFirstProductGroupId(keywordCollectionId),\n    sort: ((_b = query.selectedProductGroup) == null ? void 0 : _b.sort) ?? SortType.FEATURED,\n    ...options\n  });\n  return {\n    hasNext,\n    products: resultList\n  };\n};\nconst fetchFirstProductGroupId = async (keywordCollectionId) => {\n  const {\n    data\n  } = await keywordCollectionApi.getKeywordCollection(keywordCollectionId);\n  const [{\n    productGroupId\n  }] = data.productGroups;\n  return productGroupId;\n};\nconst fetchBrandCurationProducts = async (query, options) => {\n  if (!query.brandId) {\n    return {\n      hasNext: false,\n      products: []\n    };\n  }\n  const tagIds = splitToNumberArray(query.brandCurationTagIds);\n  const {\n    products\n  } = await bestApi.getRankedProducts({\n    facetGroupInput: {\n      brandFacetInputs: [{\n        frontBrandNo: query.brandId\n      }],\n      rankingFacetInput: {\n        type: \"POPULARITY\"\n      },\n      periodFacetInput: {\n        type: \"HOURLY\",\n        order: \"DESC\"\n      },\n      stockFacetInputs: [{\n        type: \"IN_STOCK\"\n      }],\n      tagFacetInputs: tagIds.map((tagId) => ({\n        tagId\n      }))\n    },\n    pagination: options\n  });\n  const hasNext = options.page * options.size < BRAND_CURATION_PRODUCTS_MAX_SIZE;\n  return {\n    hasNext,\n    products\n  };\n};\nconst fetchRecommendationProducts = async (query) => {\n  if (!query.recommendationTagIds) {\n    return {\n      hasNext: false,\n      products: []\n    };\n  }\n  if (isCanvas() || isFramerPreview()) {\n    return {\n      hasNext: false,\n      products: MOCK_PRODUCTS\n    };\n  }\n  const tagIds = splitToNumberArray(query.recommendationTagIds).join(\",\");\n  const {\n    data\n  } = await recommendApi.getRecommendedProductsByTagId({\n    limit: RECOMMENDATION_PRODUCTS_MAX_SIZE,\n    tagIds: tagIds || void 0\n  });\n  return {\n    // NOTE(\uC784\uADDC\uBBFC): \uAC1C\uC778\uD654 \uCD94\uCC9C API \uB294 \uD398\uC774\uC9C0\uB124\uC774\uC158\uC744 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC73C\uBBC0\uB85C hasNext \uB97C false \uB85C \uB454\uB2E4.\n    hasNext: false,\n    products: data.products\n  };\n};\nconst fetchRankingProducts = async (query, userSegment, options) => {\n  if (!query.rankingTagIds) {\n    return {\n      hasNext: false,\n      products: []\n    };\n  }\n  const isTrending = query.rankingType === RankingType.Trending;\n  const hasLargeCategoryId = query.largeCategoryId !== void 0;\n  const hasMiddleCategoryId = query.middleCategoryId !== void 0;\n  const tagIds = splitToNumberArray(query.rankingTagIds);\n  const {\n    products\n  } = await bestApi.getRankedProducts({\n    facetGroupInput: {\n      categoryFacetInputs: hasLargeCategoryId ? [{\n        largeId: query.largeCategoryId,\n        ...hasMiddleCategoryId ? {\n          middleId: query.middleCategoryId\n        } : void 0\n      }] : [],\n      tagFacetInputs: tagIds.map((tagId) => ({\n        tagId\n      })),\n      rankingFacetInput: {\n        type: query.rankingType\n      },\n      periodFacetInput: {\n        type: isTrending ? query.trendingPeriodType : query.popularityPeriodType,\n        order: \"DESC\"\n      }\n    },\n    userSegment: {\n      gender: userSegment.gender ?? \"F\",\n      age: RANKING_PRODUCTS_DEFAULT_AGE\n    },\n    pagination: {\n      ...options,\n      size: RANKING_PRODUCTS_PER_REQUEST\n    }\n  });\n  const hasNext = options.page * options.size < RANKING_PRODUCTS_MAX_SIZE;\n  return {\n    hasNext,\n    products\n  };\n};\nconst fetchCouponCollectionProducts = async (query, options) => {\n  if (!query.couponCollectionId) {\n    return {\n      hasNext: false,\n      products: []\n    };\n  }\n  const {\n    hasNext,\n    resultList\n  } = await brandSaleApi.getCouponCollectionProducts(query.couponCollectionId, {\n    ...options,\n    sort: SortType.BEST\n  });\n  return {\n    hasNext,\n    products: resultList\n  };\n};\nconst queryProducts = (query, userSegment, options) => {\n  switch (query.type) {\n    case QueryType.Product:\n      return fetchProducts(query, options);\n    case QueryType.KeywordCollection:\n      return fetchKeywordCollectionProducts(query, options);\n    case QueryType.BrandCuration:\n      return fetchBrandCurationProducts(query, options);\n    case QueryType.Recommendation:\n      return fetchRecommendationProducts(query);\n    case QueryType.Ranking:\n      return fetchRankingProducts(query, userSegment, options);\n    case QueryType.CouponCollection:\n      return fetchCouponCollectionProducts(query, options);\n    default:\n      return {\n        hasNext: false,\n        products: []\n      };\n  }\n};\nconst getKey = (query, options, enabled) => (pageIndex) => {\n  if (!enabled || query === void 0) {\n    return null;\n  }\n  return {\n    key: {\n      query,\n      pagination: {\n        ...options,\n        page: pageIndex\n      }\n    }\n  };\n};\nexport {\n  useProductsQuery\n};\n", "import \"../../../systems/curations/IntersectionProvider/IntersectionProvider.js\";\nimport { useIntersectionContext } from \"../../../systems/curations/IntersectionProvider/IntersectionProvider.hooks.js\";\nimport \"react\";\nimport \"../../../../node_modules/@firebase/analytics/dist/esm/index.esm2017.js\";\nimport \"../../../../node_modules/firebase/app/dist/esm/index.esm.js\";\nimport { useCurrentUser } from \"../../../../hooks/useCurrentUser.js\";\nimport \"framer\";\nimport \"../../../../node_modules/@29cm/snowplow/dist/esm/core/snowplow.js\";\nimport \"../../../../node_modules/swr/core/dist/index.js\";\nimport \"../../../../config/index.js\";\nimport \"../../../../node_modules/vite-plugin-node-polyfills/shims/buffer/dist/index.js\";\nimport \"../../../../node_modules/js-cookie/dist/js.cookie.js\";\nimport \"../../../../node_modules/swr/mutation/dist/index.js\";\nimport \"../../../../hooks/stores/content/content.store.js\";\nimport \"../../../../hooks/stores/dialog/dialog.store.js\";\nimport \"../../../../hooks/stores/global-layout/global-layout.store.js\";\nimport \"../../../../hooks/stores/toast/toast.store.js\";\nimport \"../../../@shared/providers/ThemeProvider/ThemeProvider.js\";\nimport \"../../../@shared/providers/BreakpointProvider/BreakpointProvider.js\";\nimport \"../../../../hooks/stores/bottom-sheet/bottom-sheet.store.js\";\nimport \"react/jsx-runtime\";\nimport \"react-dom\";\nimport \"../../../systems/Dialog/Dialog.module.css.js\";\nimport \"framer-motion\";\nimport \"../../../../containers/DialogContainer/DialogContainer.emitter.js\";\nimport \"../../../../utils/redirectLogin.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport \"../ProductsElementProvider/ProductsElementProvider.js\";\nimport { useProductsElementContext } from \"../ProductsElementProvider/ProductsElementProvider.hooks.js\";\nimport { useProductsQuery } from \"../ProductsModule.hooks.js\";\nimport { useSendProductIds } from \"../../../../hooks/product/useSendProductIds.js\";\nimport \"../../../../constants/snowplow/snowplowSchema.js\";\nimport { QueryType } from \"../../types.js\";\nconst useProducts = () => {\n  const user = useCurrentUser();\n  const {\n    isInView\n  } = useIntersectionContext();\n  const {\n    query,\n    size\n  } = useProductsElementContext();\n  return useProductsQuery({\n    query,\n    size,\n    userSegment: user,\n    enabled: isInView\n  });\n};\nconst useSendProductsElementIds = (query) => {\n  useSendProductIds(getProductIds(query));\n};\nconst getProductIds = (query) => {\n  if (!query) {\n    return \"\";\n  }\n  switch (query.type) {\n    case QueryType.Product:\n      return query.productIds;\n    default:\n      return \"\";\n  }\n};\nexport {\n  useProducts,\n  useSendProductsElementIds\n};\n", "import { jsx } from \"react/jsx-runtime\";\nimport { Button as Default } from \"../../../../../@shared/Button/Button.js\";\nimport { useProducts } from \"../../ProductsElement.hooks.js\";\nimport \"react\";\nimport \"../../../../../../node_modules/@firebase/analytics/dist/esm/index.esm2017.js\";\nimport \"../../../../../../node_modules/firebase/app/dist/esm/index.esm.js\";\nimport \"../../../../../../node_modules/swr/core/dist/index.js\";\nimport \"../../../../../../config/index.js\";\nimport \"../../../../../../node_modules/vite-plugin-node-polyfills/shims/buffer/dist/index.js\";\nimport \"../../../../../../node_modules/js-cookie/dist/js.cookie.js\";\nimport \"framer\";\nimport \"../../../../../../node_modules/@29cm/snowplow/dist/esm/core/snowplow.js\";\nimport \"../../../../../../node_modules/swr/mutation/dist/index.js\";\nimport \"../../../../../../hooks/stores/content/content.store.js\";\nimport \"../../../../../../hooks/stores/dialog/dialog.store.js\";\nimport \"../../../../../../hooks/stores/global-layout/global-layout.store.js\";\nimport \"../../../../../../hooks/stores/toast/toast.store.js\";\nimport { useTheme } from \"../../../../../../hooks/useTheme.js\";\nimport \"../../../../../@shared/providers/BreakpointProvider/BreakpointProvider.js\";\nimport \"../../../../../../hooks/stores/bottom-sheet/bottom-sheet.store.js\";\nimport \"react-dom\";\nimport \"../../../../../systems/Dialog/Dialog.module.css.js\";\nimport \"framer-motion\";\nimport \"../../../../../../containers/DialogContainer/DialogContainer.emitter.js\";\nimport \"../../../../../../utils/redirectLogin.js\";\nimport \"../../../../../../utils/event-properties/source.js\";\nconst ExpandButtonElement = ({\n  pagination,\n  style,\n  ...rest\n}) => {\n  const theme = useTheme();\n  const {\n    page,\n    fetchNextPage,\n    hasNext\n  } = useProducts();\n  const {\n    button,\n    gap\n  } = pagination;\n  const text = button.texts[page - 1];\n  if (text === void 0 || !hasNext) {\n    return null;\n  }\n  return /* @__PURE__ */ jsx(\"div\", { ...rest, style: {\n    ...containerStyle,\n    marginTop: gap,\n    ...style\n  }, children: /* @__PURE__ */ jsx(Default, { ...button, theme, onClick: fetchNextPage, children: text }) });\n};\nconst containerStyle = {\n  display: \"flex\",\n  justifyContent: \"center\",\n  width: \"100%\"\n};\nexport {\n  ExpandButtonElement\n};\n", "import { jsx } from \"react/jsx-runtime\";\nimport { PaginationType } from \"../../../ProductsModule.types.js\";\nimport { ExpandButtonElement } from \"../ExpandButtonElement/ExpandButtonElement.js\";\nconst VerticalPaginationElement = ({\n  pagination,\n  ...rest\n}) => {\n  if (pagination !== void 0) {\n    switch (pagination.type) {\n      case PaginationType.Default:\n        return null;\n      case PaginationType.ExpandButton:\n        return /* @__PURE__ */ jsx(ExpandButtonElement, { ...rest, pagination });\n    }\n  }\n  return null;\n};\nexport {\n  VerticalPaginationElement\n};\n", "import { jsx } from \"react/jsx-runtime\";\nimport { ScrollDirection } from \"../../ProductsModule.types.js\";\nimport { VerticalPaginationElement } from \"./VerticalPaginationElement/VerticalPaginationElement.js\";\nconst PaginationElement = ({\n  layout,\n  ...rest\n}) => {\n  switch (layout.direction) {\n    case ScrollDirection.Vertical:\n      return /* @__PURE__ */ jsx(VerticalPaginationElement, { ...rest, pagination: layout.verticalPagination });\n    default:\n      return null;\n  }\n};\nexport {\n  PaginationElement\n};\n", "import { jsxs, jsx } from \"react/jsx-runtime\";\nimport { useRef, useMemo, useEffect } from \"react\";\nimport { Products } from \"../../../systems/curations/Products/index.js\";\nimport { createOptionTemplate, getResponsiveWidth } from \"../../../systems/curations/Products/Root.utils.js\";\nimport { ScrollDirection } from \"../ProductsModule.types.js\";\nimport { ProductCardType } from \"../../../@shared/ProductCard/ProductCard.types.js\";\nimport \"../../../../hooks/stores/content/content.store.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { isCanvas } from \"../../../../utils/framer/isCanvas.js\";\nimport { PRODUCTS_PER_REQUEST } from \"../ProductsModule.constants.js\";\nimport { EventTrigger } from \"../../../@shared/EventTrigger/index.js\";\nimport { getPadding } from \"../../../../utils/spacing.js\";\nimport { getDisplayCount, initializeScroll, getScrollMargin, canFetchOnLastItemView, getRequestSize } from \"./ProductsElement.utils.js\";\nimport { ProductsElementProvider } from \"../ProductsElementProvider/ProductsElementProvider.js\";\nimport { useProducts, useSendProductsElementIds } from \"./ProductsElement.hooks.js\";\nimport { PaginationElement } from \"./PaginationElement/PaginationElement.js\";\nimport { useRootComponentId } from \"../../hooks.js\";\nconst ProductsElementInner = ({\n  query,\n  layout\n}) => {\n  const componentId = useRootComponentId(query);\n  const ref = useRef(null);\n  const {\n    isLoading,\n    hasNext,\n    products: _products,\n    page,\n    fetchNextPage\n  } = useProducts();\n  useSendProductsElementIds(query);\n  const totalProductsLength = _products.length;\n  const loading = isLoading || isCanvas() && totalProductsLength === 0;\n  const displayCount = getDisplayCount(layout, page);\n  const products = useMemo(() => _products.slice(0, displayCount).slice(0, isCanvas() ? PRODUCTS_PER_REQUEST : void 0), [_products, displayCount]);\n  useEffect(() => {\n    if (isCanvas()) {\n      return;\n    }\n    initializeScroll(ref.current, layout);\n  }, [query]);\n  const padding = getPadding(layout);\n  const hasScroll = layout.direction === ScrollDirection.Horizontal && layout.hasScroll;\n  return /* @__PURE__ */ jsxs(\"div\", { ref, style: {\n    ...containerStyle,\n    paddingTop: padding.top,\n    paddingBottom: padding.bottom,\n    scrollMarginTop: getScrollMargin(layout)\n  }, children: [\n    /* @__PURE__ */ jsx(Products.Root, { loading, padding: {\n      right: padding.right,\n      left: padding.left\n    }, listStyle: hasScroll ? {\n      msOverflowStyle: \"initial\",\n      scrollbarWidth: \"initial\",\n      paddingBottom: \"16px\"\n    } : void 0, options: createOptions(layout), products, hasNext, onLastItemView: canFetchOnLastItemView(layout, page) ? fetchNextPage : void 0, children: ({\n      index\n    }) => /* @__PURE__ */ jsx(EventTrigger.Target, { children: /* @__PURE__ */ jsx(Products.Card, { style: cardStyle, index, componentName: componentId, eventProperties: {\n      tagValue: query == null ? void 0 : query.facetName\n    } }) }) }),\n    /* @__PURE__ */ jsx(PaginationElement, { style: {\n      paddingLeft: padding.left,\n      paddingRight: padding.right\n    }, layout })\n  ] });\n};\nconst ProductsElement = (props) => {\n  return /* @__PURE__ */ jsx(ProductsElementProvider, { query: props.query, size: getRequestSize(props.layout), children: /* @__PURE__ */ jsx(ProductsElementInner, { ...props }) });\n};\nconst containerStyle = {\n  width: \"100%\",\n  display: \"flex\",\n  flexDirection: \"column\"\n};\nconst cardStyle = {\n  paddingBottom: 0\n};\nconst createOptions = (layout) => {\n  switch (layout.direction) {\n    case ScrollDirection.Vertical:\n      return createVerticalOptions(layout);\n    case ScrollDirection.Horizontal:\n      return createHorizontalOptions(layout);\n  }\n};\nconst createVerticalOptions = (layout) => {\n  switch (layout.cardType) {\n    case ProductCardType.CARD:\n    case ProductCardType.CARD_DETAILED:\n      return createOptionTemplate({\n        base: {\n          direction: layout.direction,\n          card: {\n            type: layout.cardType,\n            size: layout.size,\n            hasRank: layout.hasRank,\n            hasName: layout.hasName,\n            hasBrandName: layout.hasBrandName,\n            hasBadges: layout.hasBadges,\n            hasHeart: layout.hasHeart,\n            hasPriceUnit: false\n          },\n          column: {\n            gap: layout.columnGap,\n            width: layout.isResponsive ? void 0 : getResponsiveWidth(layout.columnGap, layout.columnCount),\n            minWidth: layout.isResponsive ? 185 : 0,\n            count: layout.isResponsive ? \"auto\" : layout.columnCount\n          },\n          row: {\n            displayCount: 4,\n            gap: layout.rowGap\n          }\n        }\n      });\n    case ProductCardType.BAR:\n      return createOptionTemplate({\n        base: {\n          direction: layout.direction,\n          card: {\n            type: layout.cardType,\n            size: layout.size,\n            hasRank: layout.hasRank,\n            hasName: layout.hasName,\n            hasBrandName: layout.hasBrandName,\n            hasBadges: layout.hasBadges,\n            hasHeart: layout.hasHeart,\n            hasPriceUnit: false\n          },\n          column: {\n            gap: layout.columnGap,\n            width: layout.isResponsive ? void 0 : getResponsiveWidth(layout.columnGap, layout.columnCount),\n            minWidth: layout.isResponsive ? 300 + (layout.hasRank ? 40 : 0) : 0,\n            count: layout.isResponsive ? \"auto\" : layout.columnCount\n          },\n          row: {\n            displayCount: 4,\n            gap: layout.rowGap\n          }\n        }\n      });\n  }\n};\nconst createHorizontalOptions = (layout) => {\n  switch (layout.cardType) {\n    case ProductCardType.CARD:\n    case ProductCardType.CARD_DETAILED:\n      return createOptionTemplate({\n        base: {\n          direction: layout.direction,\n          card: {\n            type: layout.cardType,\n            size: layout.size,\n            hasRank: layout.hasRank,\n            hasName: layout.hasName,\n            hasBrandName: layout.hasBrandName,\n            hasBadges: layout.hasBadges,\n            hasHeart: layout.hasHeart,\n            hasPriceUnit: false\n          },\n          column: {\n            gap: layout.columnGap,\n            displayCount: layout.columnDisplayCount,\n            width: getResponsiveWidth(layout.columnGap, layout.columnDisplayCount)\n          },\n          row: {\n            gap: layout.rowGap,\n            count: layout.rowCount\n          }\n        },\n        desktop: {\n          navigator: true\n        }\n      });\n    case ProductCardType.BAR:\n      return createOptionTemplate({\n        base: {\n          direction: layout.direction,\n          card: {\n            type: layout.cardType,\n            size: layout.size,\n            hasRank: layout.hasRank,\n            hasName: layout.hasName,\n            hasBrandName: layout.hasBrandName,\n            hasBadges: layout.hasBadges,\n            hasHeart: layout.hasHeart,\n            hasPriceUnit: false\n          },\n          column: {\n            gap: layout.columnGap,\n            displayCount: layout.columnDisplayCount\n          },\n          row: {\n            gap: layout.rowGap,\n            count: layout.rowCount\n          }\n        },\n        mobile: {\n          column: {\n            width: getResponsiveWidth(layout.columnGap, layout.columnDisplayCount, layout.hasRank ? 44 : 4)\n          }\n        },\n        tablet: {\n          column: {\n            width: getResponsiveWidth(layout.columnGap, layout.columnDisplayCount, layout.hasRank ? 60 : 20)\n          }\n        },\n        desktop: {\n          navigator: true,\n          column: {\n            width: getResponsiveWidth(layout.columnGap, layout.columnDisplayCount)\n          }\n        }\n      });\n  }\n};\nexport {\n  ProductsElement,\n  ProductsElementInner\n};\n", "import { jsx } from \"react/jsx-runtime\";\nimport { useQueryStore } from \"../../query-store/query.store.js\";\nimport { ProductsElement } from \"../ProductsElement/ProductsElement.js\";\nimport { createKey } from \"../../utils/key.js\";\nconst LinkedProductsModule = ({\n  value,\n  layout\n}) => {\n  const query = useQueryStore((state) => state.queries[value]);\n  return /* @__PURE__ */ jsx(ProductsElement, { query, layout }, createKey(query));\n};\nexport {\n  LinkedProductsModule\n};\n", "import { combineObjectPropertyControls } from \"../../../libs/property-controls/helpers.js\";\nimport { QUERY_CONTROL, RANKING_CONTROLS, RECOMMENDATION_CONTROLS, KEYWORD_COLLECTION_CONTROLS, PRODUCT_CONTROLS } from \"../controls.js\";\nconst MANUAL_PRODUCTS_MODULE_QUERY = {\n  ...QUERY_CONTROL,\n  controls: combineObjectPropertyControls(PRODUCT_CONTROLS, KEYWORD_COLLECTION_CONTROLS, RECOMMENDATION_CONTROLS, RANKING_CONTROLS)\n};\nexport {\n  MANUAL_PRODUCTS_MODULE_QUERY\n};\n", "import \"react/jsx-runtime\";\nimport { download } from \"../../@shared/Icon/assets/download.js\";\nimport { plus } from \"../../@shared/Icon/assets/plus.js\";\nimport { chevronRight } from \"../../@shared/Icon/assets/chevronRight.js\";\nimport { chevronDown } from \"../../@shared/Icon/assets/chevronDown.js\";\nimport { heart } from \"../../@shared/Icon/assets/heart.js\";\nimport { bell } from \"../../@shared/Icon/assets/bell.js\";\nimport { gift } from \"../../@shared/Icon/assets/gift.js\";\nimport { share } from \"../../@shared/Icon/assets/share.js\";\nimport { scrap } from \"../../@shared/Icon/assets/scrap.js\";\nimport { lock } from \"../../@shared/Icon/assets/lock.js\";\nimport { lockOff } from \"../../@shared/Icon/assets/lockOff.js\";\nconst prefixIconAssets = {\n  scrap,\n  lock,\n  lockOff,\n  heart,\n  bell,\n  gift,\n  share\n};\nconst postfixIconAssets = {\n  plus,\n  chevronRight,\n  download,\n  chevronDown,\n  share\n};\nconst PREFIX_ICON_OPTIONS = Object.keys(prefixIconAssets);\nconst POSTFIX_ICON_OPTIONS = Object.keys(postfixIconAssets);\nexport {\n  POSTFIX_ICON_OPTIONS,\n  PREFIX_ICON_OPTIONS,\n  postfixIconAssets,\n  prefixIconAssets\n};\n", "import { jsx } from \"react/jsx-runtime\";\nimport { addPropertyControls, ControlType } from \"framer\";\nimport { ProductsModuleInputType, ScrollDirection, PaginationType } from \"./ProductsModule.types.js\";\nimport { LinkedProductsModule } from \"./LinkedProductsModule/LinkedProductsModule.js\";\nimport { SectionLayout } from \"../../systems/curations/SectionLayout/SectionLayout.js\";\nimport { SWRErrorBoundary } from \"../../@shared/SWRErrorBoundary/SWRErrorBoundary.js\";\nimport { NoContent } from \"../../systems/curations/NoContent/NoContent.js\";\nimport { BREAKPOINT_CONTROLS } from \"../../../libs/property-controls/breakpoint.js\";\nimport { THEME_CONTROLS } from \"../../../libs/property-controls/theme.js\";\nimport { COMPONENT_ID_PROPS } from \"../../../libs/property-controls/component-id.js\";\nimport { ProductsElement } from \"./ProductsElement/ProductsElement.js\";\nimport { MANUAL_PRODUCTS_MODULE_QUERY } from \"./ProductsModule.controls.js\";\nimport { ProductCardType } from \"../../@shared/ProductCard/ProductCard.types.js\";\nimport { ButtonVariant, ButtonSize } from \"../../@shared/Button/Button.types.js\";\nimport { PREFIX_ICON_OPTIONS, POSTFIX_ICON_OPTIONS } from \"../../systems/Button/Button.constants.js\";\nconst ProductsModuleInner = ({\n  input,\n  layout\n}) => {\n  switch (input.type) {\n    case ProductsModuleInputType.Linked:\n      return /* @__PURE__ */ jsx(LinkedProductsModule, { value: input.value, layout });\n    case ProductsModuleInputType.Manual:\n      return /* @__PURE__ */ jsx(ProductsElement, { query: input.query, layout });\n    default:\n      return null;\n  }\n};\nconst ProductsModule = ({\n  theme,\n  breakpoint,\n  componentId,\n  ...rest\n}) => {\n  return /* @__PURE__ */ jsx(SectionLayout, { theme, breakpoint, componentId, children: /* @__PURE__ */ jsx(SWRErrorBoundary, { fallback: (retry) => /* @__PURE__ */ jsx(NoContent, { onClick: retry }), children: /* @__PURE__ */ jsx(ProductsModuleInner, { ...rest }) }) });\n};\naddPropertyControls(ProductsModule, {\n  ...BREAKPOINT_CONTROLS,\n  ...THEME_CONTROLS,\n  ...COMPONENT_ID_PROPS,\n  input: {\n    type: ControlType.Object,\n    title: \"\uC785\uB825 \uAC12\",\n    controls: {\n      type: {\n        type: ControlType.Enum,\n        title: \"\uC720\uD615\",\n        options: [ProductsModuleInputType.Linked, ProductsModuleInputType.Manual],\n        optionTitles: [\"\uC5F0\uACB0\", \"\uC218\uB3D9\"]\n      },\n      value: {\n        hidden: ({\n          type\n        }) => type !== ProductsModuleInputType.Linked,\n        type: ControlType.String,\n        title: \"\uCD9C\uB825 \uAC12\",\n        defaultValue: \"\"\n      },\n      query: {\n        hidden: ({\n          type\n        }) => type !== ProductsModuleInputType.Manual,\n        ...MANUAL_PRODUCTS_MODULE_QUERY\n      }\n    }\n  },\n  layout: {\n    type: ControlType.Object,\n    title: \"\uB808\uC774\uC544\uC6C3\",\n    controls: {\n      direction: {\n        type: ControlType.Enum,\n        title: \"\uC2A4\uD06C\uB864 \uBC29\uD5A5\",\n        options: [\"horizontal\", \"vertical\"],\n        optionTitles: [\"\uC218\uD3C9\", \"\uC218\uC9C1\"]\n      },\n      cardType: {\n        type: ControlType.Enum,\n        title: \"\uCE74\uB4DC \uC720\uD615\",\n        options: [ProductCardType.CARD, ProductCardType.CARD_DETAILED, ProductCardType.BAR],\n        optionTitles: [\"compact-card\", \"card\", \"horizontal-card\"]\n      },\n      size: {\n        hidden: ({\n          cardType\n        }) => cardType === ProductCardType.CARD || cardType === ProductCardType.CARD_DETAILED,\n        type: ControlType.Enum,\n        title: \"\uD06C\uAE30\",\n        options: [\"small\", \"medium\"],\n        optionTitles: [\"small\", \"medium\"],\n        defaultValue: \"medium\"\n      },\n      hasRank: {\n        type: ControlType.Boolean,\n        title: \"\uC21C\uC704 \uB178\uCD9C\",\n        defaultValue: false\n      },\n      hasName: {\n        type: ControlType.Boolean,\n        title: \"\uC0C1\uD488\uBA85 \uB178\uCD9C\",\n        defaultValue: true\n      },\n      hasBrandName: {\n        type: ControlType.Boolean,\n        title: \"\uBE0C\uB79C\uB4DC\uBA85 \uB178\uCD9C\",\n        defaultValue: true\n      },\n      hasBadges: {\n        type: ControlType.Boolean,\n        title: \"\uBC43\uC9C0 \uB178\uCD9C\",\n        defaultValue: true\n      },\n      hasHeart: {\n        type: ControlType.Boolean,\n        title: \"\uC88B\uC544\uC694 \uB178\uCD9C\",\n        defaultValue: true\n      },\n      // \uC218\uD3C9\n      rowCount: {\n        hidden: ({\n          direction\n        }) => direction !== ScrollDirection.Horizontal,\n        type: ControlType.Number,\n        title: \"\uD589 \uAC1C\uC218\",\n        unit: \"\uAC1C\",\n        defaultValue: 2,\n        min: 1,\n        max: 10\n      },\n      columnDisplayCount: {\n        hidden: ({\n          direction\n        }) => direction !== ScrollDirection.Horizontal,\n        type: ControlType.Number,\n        title: \"\uB178\uCD9C \uC5F4 \uAC1C\uC218\",\n        unit: \"\uAC1C\",\n        description: \"\uBDF0\uD3EC\uD2B8\uC5D0 \uB178\uCD9C\uB420 \uC5F4 \uAC1C\uC218\uB97C \uC124\uC815\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\",\n        defaultValue: 3,\n        min: 1,\n        max: 6\n      },\n      hasScroll: {\n        hidden: ({\n          direction\n        }) => direction !== ScrollDirection.Horizontal,\n        type: ControlType.Boolean,\n        title: \"\uC2A4\uD06C\uB864 \uB178\uCD9C\",\n        defaultValue: false\n      },\n      // \uC218\uC9C1\n      isResponsive: {\n        hidden: ({\n          direction\n        }) => direction !== ScrollDirection.Vertical,\n        type: ControlType.Boolean,\n        title: \"\uBC18\uC751\uD615\",\n        defaultValue: false\n      },\n      columnCount: {\n        hidden: ({\n          direction,\n          isResponsive\n        }) => direction !== ScrollDirection.Vertical || isResponsive === true,\n        type: ControlType.Number,\n        title: \"\uC5F4 \uAC1C\uC218\",\n        unit: \"\uAC1C\",\n        defaultValue: 2,\n        min: 1,\n        max: 6\n      },\n      scrollMargin: {\n        hidden: ({\n          direction\n        }) => direction !== ScrollDirection.Vertical,\n        type: ControlType.Number,\n        title: \"\uC2A4\uD06C\uB864 \uB9C8\uC9C4\",\n        description: \"\uC790\uB3D9 \uC2A4\uD06C\uB864 \uC774\uB3D9 \uC2DC \uC704\uCE58 \uBCF4\uC815 \uAC12\uC744 \uC124\uC815\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\",\n        unit: \"px\",\n        defaultValue: 0\n      },\n      verticalPagination: {\n        hidden: ({\n          direction\n        }) => direction !== ScrollDirection.Vertical,\n        type: ControlType.Object,\n        title: \"\uD398\uC774\uC9C0\uB124\uC774\uC158\",\n        controls: {\n          type: {\n            type: ControlType.Enum,\n            title: \"\uC720\uD615\",\n            options: [PaginationType.Default, PaginationType.ExpandButton],\n            optionTitles: [\"\uAE30\uBCF8\", \"\uB354\uBCF4\uAE30 \uBC84\uD2BC\"]\n          },\n          gap: {\n            hidden: ({\n              type\n            }) => type === PaginationType.Default,\n            type: ControlType.Number,\n            title: \"\uAC04\uACA9\",\n            description: \"\uC0C1\uD488 UI \uC640 \uD398\uC774\uC9D5 UI \uAC04\uC758 \uAC04\uACA9\uC744 \uC124\uC815\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\",\n            unit: \"px\",\n            defaultValue: 16,\n            min: 0,\n            max: 50\n          },\n          rowDisplayCount: {\n            hidden: ({\n              type\n            }) => type !== PaginationType.ExpandButton,\n            type: ControlType.Number,\n            title: \"\uB178\uCD9C \uD589 \uAC1C\uC218\",\n            description: \"\uB354\uBCF4\uAE30 \uB9C8\uB2E4 \uB178\uCD9C\uD560 \uD589 \uAC1C\uC218\uB97C \uC124\uC815\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\",\n            unit: \"\uAC1C\",\n            min: 1,\n            max: 10,\n            defaultValue: 4\n          },\n          button: {\n            hidden: ({\n              type\n            }) => type !== PaginationType.ExpandButton,\n            type: ControlType.Object,\n            title: \"\uBC84\uD2BC\",\n            controls: {\n              variant: {\n                type: ControlType.Enum,\n                title: \"\uBCC0\uD615\",\n                options: [ButtonVariant.PRIMARY, ButtonVariant.SECONDARY, ButtonVariant.TERTIARY],\n                optionTitles: [\"primary\", \"secondary\", \"tertiary\"]\n              },\n              size: {\n                type: ControlType.Enum,\n                title: \"\uD06C\uAE30\",\n                options: [ButtonSize.LARGE, ButtonSize.MEDIUM, ButtonSize.SMALL],\n                optionTitles: [\"large\", \"medium\", \"small\"],\n                defaultValue: ButtonSize.MEDIUM\n              },\n              fill: {\n                type: ControlType.Boolean,\n                title: \"\uCC44\uC6B0\uAE30\",\n                defaultValue: false\n              },\n              prefixIcon: {\n                hidden: ({\n                  postfixIcon\n                }) => postfixIcon !== void 0,\n                type: ControlType.Enum,\n                title: \"\uC88C\uCE21 \uC544\uC774\uCF58\",\n                options: [void 0, ...PREFIX_ICON_OPTIONS],\n                optionTitles: [\"\uC120\uD0DD \uC548 \uD568\", ...PREFIX_ICON_OPTIONS]\n              },\n              postfixIcon: {\n                hidden: ({\n                  prefixIcon\n                }) => prefixIcon !== void 0,\n                type: ControlType.Enum,\n                title: \"\uC6B0\uCE21 \uC544\uC774\uCF58\",\n                options: [void 0, ...POSTFIX_ICON_OPTIONS],\n                optionTitles: [\"\uC120\uD0DD \uC548 \uD568\", ...POSTFIX_ICON_OPTIONS]\n              },\n              fillIcon: {\n                type: ControlType.Boolean,\n                title: \"\uC544\uC774\uCF58 \uCC44\uC6B0\uAE30\",\n                defaultValue: false\n              },\n              texts: {\n                type: ControlType.Array,\n                title: \"\uBC84\uD2BC \uD0C0\uC774\uD2C0\",\n                defaultValue: [\"\uCCAB \uBC88\uC9F8 \uBC84\uD2BC\", \"\uB450 \uBC88\uC9F8 \uBC84\uD2BC\"],\n                control: {\n                  type: ControlType.String\n                }\n              }\n            }\n          }\n        }\n      },\n      // \uACF5\uD1B5\n      rowGap: {\n        type: ControlType.Number,\n        title: \"\uD589 \uAC04\uACA9\",\n        unit: \"px\",\n        defaultValue: 16,\n        min: 0,\n        max: 50\n      },\n      columnGap: {\n        type: ControlType.Number,\n        title: \"\uC5F4 \uAC04\uACA9\",\n        unit: \"px\",\n        defaultValue: 6,\n        min: 0,\n        max: 50\n      },\n      padding: {\n        type: ControlType.FusedNumber,\n        title: \"\uD328\uB529\",\n        defaultValue: 0,\n        toggleKey: \"isMixed\",\n        toggleTitles: [\"All\", \"Individual\"],\n        valueKeys: [\"paddingTop\", \"paddingRight\", \"paddingBottom\", \"paddingLeft\"],\n        valueLabels: [\"T\", \"R\", \"B\", \"L\"],\n        min: 0\n      }\n    }\n  }\n});\nexport {\n  ProductsModule\n};\n"],
  "mappings": "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",
  "names": ["ScrollDirection", "ScrollDirection2", "ProductsModuleInputType", "ProductsModuleInputType2", "PaginationType", "PaginationType2", "getScrollMargin", "layout", "ScrollDirection", "isElementCrossed", "element", "upper", "initializeScroll", "isExpandable", "pagination", "page", "getDisplayCount", "PaginationType", "canFetchOnLastItemView", "isCanvas", "getRequestSize", "ProductsElementContext", "z", "PRODUCTS_PER_REQUEST", "ProductsElementProvider", "children", "query", "size", "p", "useProductsElementContext", "re", "ProductsElementContext", "SortType", "SortType2", "BestApiService", "APIService", "env", "throwFailError", "payload", "data", "formatBestProducts", "bestApi", "products", "product", "_a", "category", "RecommendApiService", "APIService", "env", "throwFailError", "productGroupId", "limit", "data", "formatProducts", "query", "formatCollectionProduct2Product", "recommendApi", "products", "product", "_a", "category", "MOCK_PRODUCTS", "BRAND_CURATION_PRODUCTS_MAX_SIZE", "RECOMMENDATION_PRODUCTS_MAX_SIZE", "RANKING_PRODUCTS_PER_REQUEST", "RANKING_PRODUCTS_MAX_SIZE", "RANKING_PRODUCTS_DEFAULT_AGE", "getInitialPaginationOptions", "size", "useProductsQuery", "options", "_enabled", "query", "_size", "userSegment", "enabled", "isLoading", "data", "setSize", "rest", "useSWRInfinite", "getKey", "key", "queryProducts", "products", "se", "item", "hasNext", "last", "prev", "fetchProducts", "page", "offset", "productIds", "splitToNumberArray", "skipped", "took", "framerApi", "fetchKeywordCollectionProducts", "_a", "_b", "keywordCollectionId", "resultList", "keywordCollectionApi", "fetchFirstProductGroupId", "SortType", "productGroupId", "fetchBrandCurationProducts", "tagIds", "bestApi", "tagId", "fetchRecommendationProducts", "isCanvas", "isFramerPreview", "MOCK_PRODUCTS", "recommendApi", "fetchRankingProducts", "isTrending", "RankingType", "hasLargeCategoryId", "hasMiddleCategoryId", "fetchCouponCollectionProducts", "brandSaleApi", "QueryType", "pageIndex", "useProducts", "user", "useCurrentUser", "isInView", "useIntersectionContext", "query", "size", "useProductsElementContext", "useProductsQuery", "useSendProductsElementIds", "useSendProductIds", "getProductIds", "QueryType", "ExpandButtonElement", "pagination", "style", "rest", "theme", "useTheme", "page", "fetchNextPage", "hasNext", "useProducts", "button", "gap", "text", "p", "containerStyle", "Default", "VerticalPaginationElement", "pagination", "rest", "PaginationType", "p", "ExpandButtonElement", "PaginationElement", "layout", "rest", "ScrollDirection", "p", "VerticalPaginationElement", "ProductsElementInner", "query", "layout", "componentId", "useRootComponentId", "ref", "pe", "isLoading", "hasNext", "_products", "page", "fetchNextPage", "useProducts", "useSendProductsElementIds", "totalProductsLength", "loading", "isCanvas", "displayCount", "getDisplayCount", "products", "se", "ue", "initializeScroll", "padding", "getPadding", "hasScroll", "ScrollDirection", "u", "containerStyle", "getScrollMargin", "p", "Products", "createOptions", "canFetchOnLastItemView", "index", "EventTrigger", "cardStyle", "PaginationElement", "ProductsElement", "props", "ProductsElementProvider", "getRequestSize", "createVerticalOptions", "createHorizontalOptions", "ProductCardType", "createOptionTemplate", "getResponsiveWidth", "LinkedProductsModule", "value", "layout", "query", "useQueryStore", "state", "p", "ProductsElement", "createKey", "MANUAL_PRODUCTS_MODULE_QUERY", "QUERY_CONTROL", "combineObjectPropertyControls", "PRODUCT_CONTROLS", "KEYWORD_COLLECTION_CONTROLS", "RECOMMENDATION_CONTROLS", "RANKING_CONTROLS", "prefixIconAssets", "scrap", "lock", "lockOff", "heart", "bell", "gift", "share", "postfixIconAssets", "plus", "chevronRight", "download", "chevronDown", "PREFIX_ICON_OPTIONS", "POSTFIX_ICON_OPTIONS", "ProductsModuleInner", "input", "layout", "ProductsModuleInputType", "p", "LinkedProductsModule", "ProductsElement", "ProductsModule", "theme", "breakpoint", "componentId", "rest", "SectionLayout", "SWRErrorBoundary", "retry", "NoContent", "addPropertyControls", "BREAKPOINT_CONTROLS", "THEME_CONTROLS", "COMPONENT_ID_PROPS", "ControlType", "type", "MANUAL_PRODUCTS_MODULE_QUERY", "ProductCardType", "cardType", "direction", "ScrollDirection", "isResponsive", "PaginationType", "ButtonVariant", "ButtonSize", "postfixIcon", "PREFIX_ICON_OPTIONS", "prefixIcon", "POSTFIX_ICON_OPTIONS"]
}
