{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/C9mLjJCax7XlsCkKIP8n/gDxKeWTNa7wUTabDDwhs/TabBar.js", "ssg:https://framerusercontent.com/modules/yzVWscD1HcEnzJ0gAUZ4/VqaW7LiUQOYzAloZhkZJ/Analytics.js", "ssg:https://asset.29cm.co.kr/contents/framer/utils/cloneFramerChildren.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/canvas/ProductProvider/ProductHeartProvider.hooks.event.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/canvas/ProductProvider/ProductHeartProvider.hooks.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/canvas/ProductProvider/ProductHeartProvider.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/canvas/ProductProvider/ProductProvider.utils.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/canvas/ProductProvider/ProductProvider.hooks.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/canvas/ProductProvider/ProductProvider.hooks.event.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/canvas/ProductProvider/ProductProvider.module.css.js", "ssg:https://asset.29cm.co.kr/contents/framer/hooks/useInViewport.js", "ssg:https://asset.29cm.co.kr/contents/framer/utils/react/mergeRefs.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/@shared/EventTrigger/Root.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/@shared/EventTrigger/Root.hooks.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/@shared/EventTrigger/Target.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/@shared/EventTrigger/index.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/canvas/ProductProvider/ProductProvider.js", "ssg:https://framerusercontent.com/modules/b39ngveXV5rdluw2UgPV/gx5ctYt6VXdKljngmkSt/TextOverflow.js"],
  "sourcesContent": ["import{TabBar}from\"https://asset.29cm.co.kr/contents/framer/components/systems/TabBar/TabBar.js\";TabBar.displayName=\"TabBar\";/**\n * @framerDisableUnlink\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight auto\n */export default TabBar;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TabBar\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerDisableUnlink\":\"* @framerSupportedLayoutWidth fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TabBar.map", "import{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef}from\"react\";import{useRef,useEffect}from\"react\";import{useInView}from\"framer-motion\";import{useTrackClickComponent,useTrackViewComponent}from\"https://asset.29cm.co.kr/contents/framer/components/canvas/ComponentEventTracker/ComponentEventTracker.hooks.event.js\";const getComponent=(props,Component)=>Component[\"displayName\"]||props[\"name\"]||props[\"data-framer-name\"];// prettier-ignore\nconst mergeRefs=(...refs)=>{return value=>{refs.forEach(ref=>{if(typeof ref===\"function\"){ref(value);}else if(ref!=null){ref.current=value;}});};};export function withViewEventTracker(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const component=getComponent(props,Component);const containerRef=useRef(null);const isInView=useInView(containerRef);const{trackViewComponent}=useTrackViewComponent();useEffect(()=>{if(!isInView){return;}trackViewComponent(component);},[isInView]);return /*#__PURE__*/_jsx(Component,{...props,ref:mergeRefs(ref,containerRef)});});}export function withClickEventTracker(Component){return props=>{const component=getComponent(props,Component);const{trackClickComponent}=useTrackClickComponent();const handleClick=e=>{if(e.isTriggered){return;}e.isTriggered=true;console.log(props,Component);trackClickComponent(component);};return /*#__PURE__*/_jsx(Component,{...props,onTap:handleClick});};}export function withViewClickEventTracker(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const component=getComponent(props,Component);const containerRef=useRef(null);const isInView=useInView(containerRef);const{trackViewComponent}=useTrackViewComponent();const{trackClickComponent}=useTrackClickComponent();useEffect(()=>{if(!isInView){return;}trackViewComponent(component);},[isInView]);const handleClick=e=>{if(e.isTriggered){return;}e.isTriggered=true;trackClickComponent(component);};return /*#__PURE__*/_jsx(Component,{ref:mergeRefs(ref,containerRef),...props,onTap:handleClick});});}\nexport const __FramerMetadata__ = {\"exports\":{\"withViewClickEventTracker\":{\"type\":\"reactHoc\",\"name\":\"withViewClickEventTracker\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withViewEventTracker\":{\"type\":\"reactHoc\",\"name\":\"withViewEventTracker\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withClickEventTracker\":{\"type\":\"reactHoc\",\"name\":\"withClickEventTracker\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Analytics.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 { useFetchHeartProductList } from \"../../../hooks/fetchers/useFetchHeartProductList.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\";\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 \"../../../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 { 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 { useRef, useCallback } from \"react\";\nimport { useUpdatedRef } from \"./useUpdatedRef.js\";\nimport { useWindowEventListener } from \"./useWindowEventListener.js\";\nconst useInViewport = (callback) => {\n  const ref = useRef(null);\n  const prevIsInViewport = useRef(false);\n  const updatedCallback = useUpdatedRef(callback);\n  const handleScroll = useCallback(() => {\n    if (ref.current === null) {\n      return;\n    }\n    const isInViewport = getIsInViewport(ref.current);\n    if (isInViewport !== prevIsInViewport.current) {\n      updatedCallback.current(isInViewport);\n    }\n    prevIsInViewport.current = isInViewport;\n  }, []);\n  useWindowEventListener(\"scroll\", handleScroll);\n  return ref;\n};\nconst getIsInViewport = (element) => {\n  const {\n    offsetHeight\n  } = element;\n  const top = getAbsoluteOffsetTop(element);\n  const bottom = top + offsetHeight;\n  const isElementInViewport = window.scrollY <= top && bottom <= window.scrollY + window.innerHeight;\n  const isViewportInElement = top <= window.scrollY && window.scrollY + window.innerHeight <= bottom;\n  return isViewportInElement || isElementInViewport;\n};\nconst getAbsoluteOffsetTop = (element) => {\n  return Math.round(element.getBoundingClientRect().top + window.scrollY);\n};\nexport {\n  useInViewport\n};\n", "function mergeRefs(refs) {\n  return (value) => {\n    refs.forEach((ref) => {\n      if (typeof ref === \"function\") {\n        ref(value);\n      } else if (ref != null) {\n        ref.current = value;\n      }\n    });\n  };\n}\nexport {\n  mergeRefs\n};\n", "import { jsx } from \"react/jsx-runtime\";\nimport { createContext, forwardRef, useRef } from \"react\";\nimport { useInViewport } from \"../../../hooks/useInViewport.js\";\nimport \"../../../hooks/stores/content/content.store.js\";\nimport \"../../../utils/event-properties/source.js\";\nimport \"framer\";\nimport { mergeRefs } from \"../../../utils/react/mergeRefs.js\";\nconst EventTriggerContext = createContext({\n  isViewportEntered: () => false,\n  canTriggerFallbackImpression: () => false,\n  setCanTriggerFallbackImpression: () => {\n  },\n  types: [],\n  onImpression: void 0\n});\nconst Root = forwardRef(({\n  children,\n  className,\n  style,\n  types,\n  onImpression\n}, ref) => {\n  const isViewportEntered = useRef(false);\n  const canTriggerFallbackImpression = useRef(true);\n  const observeViewport = types.includes(\"impression\");\n  const handleViewportEnter = () => {\n    if (canTriggerFallbackImpression.current) {\n      onImpression == null ? void 0 : onImpression();\n    }\n    isViewportEntered.current = true;\n    canTriggerFallbackImpression.current = false;\n  };\n  const handleViewportLeave = () => {\n    isViewportEntered.current = false;\n    canTriggerFallbackImpression.current = true;\n  };\n  const containerRef = useInViewport((isInViewport) => {\n    if (!observeViewport) {\n      return;\n    }\n    if (isInViewport) {\n      handleViewportEnter();\n    } else {\n      handleViewportLeave();\n    }\n  });\n  return /* @__PURE__ */ jsx(EventTriggerContext.Provider, { value: {\n    isViewportEntered: () => isViewportEntered.current,\n    canTriggerFallbackImpression: () => canTriggerFallbackImpression.current,\n    setCanTriggerFallbackImpression: (next) => canTriggerFallbackImpression.current = next,\n    types,\n    onImpression\n  }, children: /* @__PURE__ */ jsx(\"div\", { ref: mergeRefs([containerRef, ref]), className, style: {\n    width: \"100%\",\n    ...style\n  }, children }) });\n});\nexport {\n  EventTriggerContext,\n  Root\n};\n", "import { useContext } from \"react\";\nimport { EventTriggerContext } from \"./Root.js\";\nconst useEventTriggerContext = () => useContext(EventTriggerContext);\nexport {\n  useEventTriggerContext\n};\n", "import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport { useEventTriggerContext } from \"./Root.hooks.js\";\nconst Target = forwardRef(({\n  children,\n  onClick,\n  ...rest\n}, ref) => {\n  const {\n    isViewportEntered,\n    canTriggerFallbackImpression,\n    setCanTriggerFallbackImpression,\n    types,\n    onImpression\n  } = useEventTriggerContext();\n  const handleClick = (e) => {\n    onClick == null ? void 0 : onClick(e);\n    const shouldTriggerFallbackImpression = types.includes(\"impression\") && !isViewportEntered() && canTriggerFallbackImpression();\n    if (shouldTriggerFallbackImpression) {\n      onImpression == null ? void 0 : onImpression();\n      setCanTriggerFallbackImpression(false);\n    }\n  };\n  return /* @__PURE__ */ jsx(\"div\", { ref, ...rest, onClick: handleClick, children });\n});\nexport {\n  Target\n};\n", "import { Root } from \"./Root.js\";\nimport { Target } from \"./Target.js\";\nconst EventTrigger = {\n  Root,\n  Target\n};\nexport {\n  EventTrigger\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 \"../../../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 \"../../@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", "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"],
  "mappings": "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",
  "names": ["TabBar", "TabBar_default", "getComponent", "props", "Component", "mergeRefs", "refs", "value", "ref", "withViewEventTracker", "Y", "component", "containerRef", "pe", "isInView", "useInView", "trackViewComponent", "useTrackViewComponent", "ue", "p", "withViewClickEventTracker", "Component", "Y", "props", "ref", "component", "getComponent", "containerRef", "pe", "isInView", "useInView", "trackViewComponent", "useTrackViewComponent", "trackClickComponent", "useTrackClickComponent", "ue", "handleClick", "e", "p", "mergeRefs", "cloneFramerChildren", "children", "props", "j", "child", "cloneLastDepthChild", "J", "q", "useTrackClickProductHeart", "trackFirebase", "trackAmplitude", "useAnalytics", "product", "properties", "createProductEventProperties", "productNo", "useProductHeart", "product", "logged", "useCurrentUser", "showRedirectLoginDialog", "useRedirectLoginDialog", "showSelectionEntryPoint", "useShowSelectionEntryPoint", "trackClickProductHeartOn", "trackClickProductHeartOff", "useTrackClickProductHeart", "isHeartOn", "handleHeartOn", "handleHeartOff", "useUserHeartProductList", "heartCount", "setHeartCount", "ye", "handleLikeOn", "prev", "handleLikeOff", "handleToggleLike", "isPrevHeartOff", "action", "productApi", "err", "ue", "heartList", "mutateHeartList", "useFetchHeartProductList", "isContentOrigin", "productNo", "heartProductId", "ProductHeartProvider", "product", "children", "convertedProduct", "formatFramerProduct2Product", "heartCount", "isHeartOn", "handleToggleLike", "useProductHeart", "p", "l", "DATA_PRODUCT_NO", "readProductNos", "isServer", "elements", "element", "_a", "formatProductImage", "imageUrl", "alt", "isFullUrl", "cleanedUrl", "src", "srcSet", "useProductProvider", "productNo", "productNos", "setProductNos", "ye", "productList", "useFetchProductList", "ue", "readProductNos", "product", "useTrackClickProduct", "name", "product", "trackFirebase", "trackAmplitude", "useAnalytics", "properties", "createContentEventProperties", "createProductEventProperties", "useTrackViewProduct", "te", "useTrackImpProduct", "useTrackSnowplowItem", "componentId", "trackSnowplowEvent", "useTrackSnowplowEvent", "getCommonProperties", "elementStyle", "container", "styles", "useInViewport", "callback", "ref", "pe", "prevIsInViewport", "updatedCallback", "useUpdatedRef", "handleScroll", "te", "isInViewport", "getIsInViewport", "useWindowEventListener", "element", "offsetHeight", "top", "getAbsoluteOffsetTop", "bottom", "isElementInViewport", "window", "mergeRefs", "refs", "value", "ref", "EventTriggerContext", "z", "Root", "Y", "children", "className", "style", "types", "onImpression", "ref", "isViewportEntered", "pe", "canTriggerFallbackImpression", "observeViewport", "handleViewportEnter", "handleViewportLeave", "containerRef", "useInViewport", "isInViewport", "p", "next", "mergeRefs", "useEventTriggerContext", "re", "EventTriggerContext", "Target", "Y", "children", "onClick", "rest", "ref", "isViewportEntered", "canTriggerFallbackImpression", "setCanTriggerFallbackImpression", "types", "onImpression", "useEventTriggerContext", "p", "e", "EventTrigger", "Root", "Target", "ProductProvider", "children", "fallbackChildren", "productNo", "name", "style", "componentId", "product", "useProductProvider", "useSendProductIds", "convertedProduct", "formatFramerProduct2Product", "trackClickProduct", "useTrackClickProduct", "trackViewProduct", "useTrackViewProduct", "trackImpProduct", "useTrackImpProduct", "trackSnowplowImpItem", "trackSnowplowClickItem", "useTrackSnowplowItem", "ref", "pe", "isInView", "useInView", "isAllInView", "ue", "conditional", "handleClick", "p", "EventTrigger", "styles", "ProductHeartProvider", "heartCount", "isHeartOn", "onHeartClick", "ProductProviderChildren", "isContentOrigin", "onClick", "url", "l", "cloneFramerChildren", "formatProductImage", "ellipsisSingleLineTextOverflow", "Component", "props", "_style", "nextProps", "singleLineEllipsisStyle", "p", "commontextStyle", "singleLineEllipsisStyle", "doubleLineEllipsisStyle"]
}
