{"version":3,"file":"ProductProvider.CZF784TQ.mjs","names":["Children","isValidElement","cloneElement","useState","Fragment","useState","useCallback","useRef","Fragment"],"sources":["https:/framerusercontent.com/modules/b39ngveXV5rdluw2UgPV/gx5ctYt6VXdKljngmkSt/TextOverflow.js","https:/asset.29cm.co.kr/contents/framer/utils/cloneFramerChildren.js","https:/asset.29cm.co.kr/contents/framer/components/canvas/ProductProvider/ProductHeartProvider.hooks.event.js","https:/asset.29cm.co.kr/contents/framer/components/canvas/ProductProvider/ProductHeartProvider.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/canvas/ProductProvider/ProductHeartProvider.js","https:/asset.29cm.co.kr/contents/framer/components/canvas/ProductProvider/ProductProvider.utils.js","https:/asset.29cm.co.kr/contents/framer/components/canvas/ProductProvider/ProductProvider.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/canvas/ProductProvider/ProductProvider.hooks.event.js","https:/asset.29cm.co.kr/contents/framer/components/canvas/ProductProvider/ProductProvider.module.css.js","https:/asset.29cm.co.kr/contents/framer/components/canvas/ProductProvider/ProductProvider.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef}from\"react\";export function ellipsisSingleLineTextOverflow(Component){return props=>{var _style;const nextProps={...props,style:{...(_style=props.style)!==null&&_style!==void 0?_style:{},...singleLineEllipsisStyle}};return /*#__PURE__*/ _jsx(Component,{...nextProps});};}export function wow(Component){return /*#__PURE__*/ forwardRef((props,ref)=>{return /*#__PURE__*/ _jsx(Component,{ref:ref,...props});});}export function ellipsisDoubleLineTextOverflow(Component){return props=>{var _style;const nextProps={...props,style:{...(_style=props.style)!==null&&_style!==void 0?_style:{},...doubleLineEllipsisStyle}};return /*#__PURE__*/ _jsx(Component,{...nextProps});};}const commontextStyle={display:\"-webkit-box\",WebkitBoxOrient:\"vertical\",overflow:\"hidden\",textOverflow:\"ellipsis\"};const singleLineEllipsisStyle={...commontextStyle,WebkitLineClamp:1};const doubleLineEllipsisStyle={...commontextStyle,WebkitLineClamp:2};\nexport const __FramerMetadata__ = {\"exports\":{\"ellipsisDoubleLineTextOverflow\":{\"type\":\"reactHoc\",\"name\":\"ellipsisDoubleLineTextOverflow\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ellipsisSingleLineTextOverflow\":{\"type\":\"reactHoc\",\"name\":\"ellipsisSingleLineTextOverflow\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"wow\":{\"type\":\"reactHoc\",\"name\":\"wow\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TextOverflow.map","import { Children, isValidElement, cloneElement } from \"react\";\nconst cloneFramerChildren = (children, props) => {\n  return Children.map(children, (child) => cloneLastDepthChild(child, props));\n};\nconst cloneLastDepthChild = (child, props) => {\n  if (!isValidElement(child)) {\n    return child;\n  }\n  if (!isValidElement(child.props.children)) {\n    return cloneElement(child, props);\n  }\n  return cloneElement(child, {\n    ...child.props,\n    children: cloneLastDepthChild(child.props.children, props)\n  });\n};\nexport {\n  cloneFramerChildren\n};\n","import { useAnalytics } from \"../../../hooks/analytics/useAnalytics.js\";\nimport { createProductEventProperties } from \"../../../utils/event-properties/product.js\";\nconst useTrackClickProductHeart = () => {\n  const {\n    trackFirebase,\n    trackAmplitude\n  } = useAnalytics();\n  const trackClickProductHeartOn = (product) => {\n    const properties = createProductEventProperties(product);\n    trackAmplitude(\"like_item\", properties);\n    trackFirebase(\"like_item\", properties);\n  };\n  const trackClickProductHeartOff = (productNo) => {\n    const properties = {\n      item_no: productNo\n    };\n    trackAmplitude(\"unlike_item\", properties);\n    trackFirebase(\"unlike_item\", properties);\n  };\n  return {\n    trackClickProductHeartOn,\n    trackClickProductHeartOff\n  };\n};\nexport {\n  useTrackClickProductHeart\n};\n","import { useCurrentUser } from \"../../../hooks/useCurrentUser.js\";\nimport { useRedirectLoginDialog } from \"../../../hooks/useRedirectLoginDialog.js\";\nimport { useShowSelectionEntryPoint } from \"../../../hooks/useShowSelectionEntryPoint.js\";\nimport { useTrackClickProductHeart } from \"./ProductHeartProvider.hooks.event.js\";\nimport { productApi } from \"../../../apis/product/ProductApiService.js\";\nimport { isContentOrigin } from \"../../../utils/location.js\";\nimport { useState, useEffect } from \"react\";\nimport \"../../../node_modules/swr/core/dist/index.js\";\nimport \"../../../apis/user-segment/CategoryFirstOrderApiService.js\";\nimport \"../../../config/index.js\";\nimport { useFetchHeartProductList } from \"../../../hooks/fetchers/useFetchHeartProductList.js\";\nimport \"../../../node_modules/vite-plugin-node-polyfills/shims/buffer/dist/index.js\";\nimport \"../../../node_modules/js-cookie/dist/js.cookie.js\";\nimport \"../../../apis/preuser/PreuserApiService.js\";\nconst useProductHeart = (product) => {\n  const {\n    logged\n  } = useCurrentUser();\n  const {\n    showRedirectLoginDialog\n  } = useRedirectLoginDialog();\n  const {\n    showSelectionEntryPoint\n  } = useShowSelectionEntryPoint();\n  const {\n    trackClickProductHeartOn,\n    trackClickProductHeartOff\n  } = useTrackClickProductHeart();\n  const {\n    isHeartOn,\n    handleHeartOn,\n    handleHeartOff\n  } = useUserHeartProductList();\n  const [heartCount, setHeartCount] = useState((product == null ? void 0 : product.heartCount) ?? 0);\n  const handleLikeOn = () => {\n    if (!product) {\n      return;\n    }\n    handleHeartOn(product.productId);\n    setHeartCount((prev) => prev + 1);\n    trackClickProductHeartOn(product);\n    showSelectionEntryPoint(product);\n  };\n  const handleLikeOff = () => {\n    if (!product) {\n      return;\n    }\n    handleHeartOff(product.productId);\n    setHeartCount((prev) => prev - 1);\n    trackClickProductHeartOff(product.productId);\n  };\n  const handleToggleLike = async () => {\n    if (!logged) {\n      showRedirectLoginDialog();\n      return;\n    }\n    if (!product) {\n      return;\n    }\n    const isPrevHeartOff = isHeartOn(product.productId) === \"OFF\";\n    const action = isPrevHeartOff ? \"set\" : \"unset\";\n    try {\n      await productApi.toggleHeart(product.productId, action);\n      if (isPrevHeartOff) {\n        handleLikeOn();\n      } else {\n        handleLikeOff();\n      }\n    } catch (err) {\n      console.error(err);\n    }\n  };\n  useEffect(() => {\n    if (product == null ? void 0 : product.heartCount) {\n      setHeartCount(product.heartCount);\n    }\n  }, [product == null ? void 0 : product.heartCount]);\n  return {\n    heartCount,\n    isHeartOn,\n    handleToggleLike\n  };\n};\nconst useUserHeartProductList = () => {\n  const {\n    heartList,\n    mutate: mutateHeartList\n  } = useFetchHeartProductList({\n    enabled: isContentOrigin()\n  });\n  const isHeartOn = (productNo) => {\n    if (!Array.isArray(heartList)) {\n      return \"OFF\";\n    }\n    return heartList.includes(productNo) ? \"ON\" : \"OFF\";\n  };\n  const handleHeartOn = (productNo) => {\n    mutateHeartList([...heartList, productNo], {\n      revalidate: false\n    });\n  };\n  const handleHeartOff = (productNo) => {\n    mutateHeartList(heartList.filter((heartProductId) => heartProductId != productNo), {\n      revalidate: false\n    });\n  };\n  return {\n    isHeartOn,\n    handleHeartOn,\n    handleHeartOff\n  };\n};\nexport {\n  useProductHeart,\n  useUserHeartProductList\n};\n","import { jsx, Fragment } from \"react/jsx-runtime\";\nimport { formatFramerProduct2Product } from \"../../../apis/framer/FramerApiService.js\";\nimport { useProductHeart } from \"./ProductHeartProvider.hooks.js\";\nconst ProductHeartProvider = ({\n  product,\n  children\n}) => {\n  const convertedProduct = formatFramerProduct2Product(product);\n  const {\n    heartCount,\n    isHeartOn,\n    handleToggleLike\n  } = useProductHeart(convertedProduct);\n  return /* @__PURE__ */ jsx(Fragment, { children: children({\n    heartCount,\n    isHeartOn: isHeartOn(product.itemNo),\n    onHeartClick: handleToggleLike\n  }) });\n};\nexport {\n  ProductHeartProvider\n};\n","import \"../../../hooks/stores/content/content.store.js\";\nimport { isServer } from \"../../../utils/context.js\";\nimport \"../../../utils/event-properties/source.js\";\nimport \"framer\";\nimport \"react\";\nconst DATA_PRODUCT_NO = \"data-product-no\";\nconst readProductNos = () => {\n  if (isServer()) {\n    return [];\n  }\n  const elements = document.querySelectorAll(`[${DATA_PRODUCT_NO}]`);\n  return Array.from(elements).map((element) => {\n    var _a;\n    return Number((_a = element.getAttribute(DATA_PRODUCT_NO)) == null ? void 0 : _a.trim());\n  });\n};\nconst formatProductImage = (imageUrl, alt) => {\n  const isFullUrl = imageUrl.startsWith(\"https://\");\n  const cleanedUrl = imageUrl.split(\"?\")[0];\n  const baseUrl = isFullUrl ? cleanedUrl : `https://img.29cm.co.kr${cleanedUrl}`;\n  const src = `${baseUrl}?q=75`;\n  const srcSet = [`${src}&width=480 480w`, `${src}&width=720 720w`].join(\",\");\n  return {\n    alt: alt ?? \"\",\n    src,\n    srcSet,\n    size: \"max(100vw, 0px)\"\n  };\n};\nexport {\n  formatProductImage,\n  readProductNos\n};\n","import \"../../../node_modules/swr/core/dist/index.js\";\nimport \"../../../apis/user-segment/CategoryFirstOrderApiService.js\";\nimport \"../../../config/index.js\";\nimport { useFetchProductList } from \"../../../hooks/fetchers/useFetchProductList.js\";\nimport { useState, useEffect } from \"react\";\nimport \"../../../node_modules/vite-plugin-node-polyfills/shims/buffer/dist/index.js\";\nimport \"../../../node_modules/js-cookie/dist/js.cookie.js\";\nimport \"../../../apis/preuser/PreuserApiService.js\";\nimport { readProductNos } from \"./ProductProvider.utils.js\";\nconst useProductProvider = (productNo) => {\n  const [productNos, setProductNos] = useState([]);\n  const {\n    productList\n  } = useFetchProductList(productNos);\n  useEffect(() => {\n    setProductNos(readProductNos());\n  }, [productNo]);\n  return productList.find((product) => product.itemNo === productNo);\n};\nexport {\n  useProductProvider\n};\n","import { useCallback } from \"react\";\nimport { useAnalytics } from \"../../../hooks/analytics/useAnalytics.js\";\nimport { useTrackSnowplowEvent } from \"../../../hooks/snowplow/useTrackSnowplowEvent.js\";\nimport { createContentEventProperties } from \"../../../utils/event-properties/content.js\";\nimport { createProductEventProperties } from \"../../../utils/event-properties/product.js\";\nconst useTrackClickProduct = (name, product) => {\n  const {\n    trackFirebase,\n    trackAmplitude\n  } = useAnalytics();\n  const trackClickProduct = () => {\n    if (!product) {\n      return;\n    }\n    const properties = {\n      ...createContentEventProperties(),\n      ...createProductEventProperties(product),\n      is_product_group: \"false\",\n      component: name\n    };\n    trackFirebase(\"click_item_content\", properties);\n    trackAmplitude(\"click_item\", properties);\n  };\n  return {\n    trackClickProduct\n  };\n};\nconst useTrackViewProduct = (name, product) => {\n  const {\n    trackFirebase\n  } = useAnalytics();\n  const trackViewProduct = useCallback(() => {\n    if (!product) {\n      return;\n    }\n    const properties = {\n      ...createContentEventProperties(),\n      ...createProductEventProperties(product),\n      is_product_group: \"false\",\n      component: name\n    };\n    trackFirebase(\"view_item_content\", properties);\n  }, [product]);\n  return {\n    trackViewProduct\n  };\n};\nconst useTrackImpProduct = (name, product) => {\n  const {\n    trackFirebase\n  } = useAnalytics();\n  const trackImpProduct = useCallback(() => {\n    if (!product) {\n      return;\n    }\n    const properties = {\n      ...createContentEventProperties(),\n      ...createProductEventProperties(product),\n      is_product_group: \"false\",\n      component: name\n    };\n    trackFirebase(\"imp_item_content\", properties);\n  }, [product]);\n  return {\n    trackImpProduct\n  };\n};\nconst useTrackSnowplowItem = (product, componentId) => {\n  const trackSnowplowEvent = useTrackSnowplowEvent();\n  const getCommonProperties = () => {\n    if (!product || !componentId) {\n      return null;\n    }\n    const productProperties = {\n      item_no: product.itemNo,\n      item_name: product.itemName,\n      brand_no: product.frontBrandNo,\n      brand_name: product.frontBrandNameKor,\n      large_category_no: product.categoryCodeList[0].largeCategoryCode,\n      large_category_name: \"\",\n      middle_category_no: product.categoryCodeList[0].mediumCategoryCode,\n      middle_category_name: \"\",\n      small_category_no: product.categoryCodeList[0].smallCategoryCode,\n      small_category_name: \"\",\n      price: product.lastSalePrice,\n      discount_rate: product.lastSalePercent,\n      is_soldout: product.isSoldOut,\n      item_position: -1\n    };\n    const sectionProperties = {\n      section_name: componentId,\n      section_title: componentId\n    };\n    return {\n      ...productProperties,\n      ...sectionProperties\n    };\n  };\n  const trackSnowplowImpItem = () => {\n    const properties = getCommonProperties();\n    if (!properties) {\n      return;\n    }\n    trackSnowplowEvent(\"impression_item\", properties);\n  };\n  const trackSnowplowClickItem = () => {\n    const properties = getCommonProperties();\n    if (!properties) {\n      return;\n    }\n    trackSnowplowEvent(\"click_item\", properties);\n  };\n  return {\n    trackSnowplowImpItem,\n    trackSnowplowClickItem\n  };\n};\nexport {\n  useTrackClickProduct,\n  useTrackImpProduct,\n  useTrackSnowplowItem,\n  useTrackViewProduct\n};\n","(function() {\n  \"use strict\";\n  try {\n    if (typeof document != \"undefined\") {\n      var elementStyle = document.createElement(\"style\");\n      elementStyle.appendChild(document.createTextNode(\"._container_d12g1_1 {\\n  display: flex;\\n  justify-content: center;\\n\\n  width: 100%;\\n  height: 100%;\\n  cursor: pointer;\\n}\\n\\n._container_d12g1_1 > :first-child {\\n  width: 100% !important;\\n  height: 100% !important;\\n}\"));\n      document.head.appendChild(elementStyle);\n    }\n  } catch (e) {\n    console.error(\"vite-plugin-css-injected-by-js\", e);\n  }\n})();\nconst container = \"_container_d12g1_1\";\nconst styles = {\n  container\n};\nexport {\n  container,\n  styles as default\n};\n","import { jsx, Fragment } from \"react/jsx-runtime\";\nimport { useInView } from \"framer-motion\";\nimport { useRef, useEffect } from \"react\";\nimport { formatFramerProduct2Product } from \"../../../apis/framer/FramerApiService.js\";\nimport { cloneFramerChildren } from \"../../../utils/cloneFramerChildren.js\";\nimport { conditional } from \"../../../utils/function.js\";\nimport { isContentOrigin } from \"../../../utils/location.js\";\nimport { ProductHeartProvider } from \"./ProductHeartProvider.js\";\nimport { useProductProvider } from \"./ProductProvider.hooks.js\";\nimport { useTrackClickProduct, useTrackViewProduct, useTrackImpProduct, useTrackSnowplowItem } from \"./ProductProvider.hooks.event.js\";\nimport styles from \"./ProductProvider.module.css.js\";\nimport { formatProductImage } from \"./ProductProvider.utils.js\";\nimport { useSendProductIds } from \"../../../hooks/product/useSendProductIds.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 \"../../../apis/user-segment/CategoryFirstOrderApiService.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 \"../../../apis/preuser/PreuserApiService.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 \"../../@shared/providers/ThemeProvider/ThemeProvider.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 \"../../../containers/DialogContainer/DialogContainer.emitter.js\";\nimport \"../../../utils/redirectLogin.js\";\nimport \"../../../utils/event-properties/source.js\";\nimport \"../../../constants/snowplow/snowplowSchema.js\";\nimport { EventTrigger } from \"../../@shared/EventTrigger/index.js\";\nconst ProductProvider = ({\n  children,\n  fallbackChildren,\n  productNo = \"\",\n  name = \"ProductProvider\",\n  style,\n  componentId\n}) => {\n  const product = useProductProvider(Number(productNo));\n  useSendProductIds(productNo);\n  const convertedProduct = formatFramerProduct2Product(product);\n  const {\n    trackClickProduct\n  } = useTrackClickProduct(name, convertedProduct);\n  const {\n    trackViewProduct\n  } = useTrackViewProduct(name, convertedProduct);\n  const {\n    trackImpProduct\n  } = useTrackImpProduct(name, convertedProduct);\n  const {\n    trackSnowplowImpItem,\n    trackSnowplowClickItem\n  } = useTrackSnowplowItem(product, componentId);\n  const ref = useRef(null);\n  const isInView = useInView(ref, {\n    amount: 0.5\n  });\n  const isAllInView = useInView(ref, {\n    amount: 1\n  });\n  useEffect(() => {\n    conditional(isInView, trackViewProduct)();\n  }, [isInView, trackViewProduct]);\n  useEffect(() => {\n    conditional(isAllInView, trackImpProduct)();\n  }, [isAllInView, trackImpProduct]);\n  const handleClick = () => {\n    conditional(!isInView, trackViewProduct)();\n    conditional(!isAllInView, trackImpProduct)();\n    trackClickProduct();\n    trackSnowplowClickItem();\n  };\n  if (!product) {\n    return /* @__PURE__ */ jsx(\"div\", { className: styles.container, \"data-product-no\": productNo, ref, style, children: isContentOrigin() ? fallbackChildren : children });\n  }\n  return /* @__PURE__ */ jsx(EventTrigger.Root, { types: [\"impression\"], onImpression: trackSnowplowImpItem, children: /* @__PURE__ */ jsx(\"div\", { className: styles.container, \"data-product-no\": productNo, ref, style, children: /* @__PURE__ */ jsx(ProductHeartProvider, { product, children: ({\n    heartCount,\n    isHeartOn,\n    onHeartClick\n  }) => /* @__PURE__ */ jsx(ProductProviderChildren, { product, heartCount, isHeartOn, onHeartClick, onClick: handleClick, children: product.isSoldOut ? fallbackChildren : children }) }) }) });\n};\nconst ProductProviderChildren = ({\n  children,\n  product,\n  heartCount,\n  isHeartOn,\n  onHeartClick,\n  onClick\n}) => {\n  const url = `https://product.29cm.co.kr/catalog/${product.itemNo}`;\n  return /* @__PURE__ */ jsx(Fragment, { children: cloneFramerChildren(children, {\n    ...product,\n    image: formatProductImage(product.imageUrl),\n    url,\n    heartCount,\n    isHeartOn,\n    onHeartClick,\n    onClick\n  }) });\n};\nexport {\n  ProductProvider\n};\n"],"mappings":"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"}