{
  "version": 3,
  "sources": ["ssg:https://asset.29cm.co.kr/contents/framer/hooks/fetchers/useFetchRecommendedProductsByTagId.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/systems/curations/RecommendedProductCuration/RecommendedProductCuration.hooks.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/systems/curations/RecommendedProductCuration/RecommendedProducts.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/systems/curations/RecommendedProductCuration/RecommendedProductCurationButton.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/@shared/ActionFallback/Root.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/@shared/ActionFallback/Root.hooks.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/@shared/ActionFallback/Content.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/@shared/ActionFallback/Message.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/@shared/ActionFallback/Action.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/@shared/ActionFallback/index.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/systems/curations/RecommendedProductCuration/LoginActionFallback.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/systems/curations/RecommendedProductCuration/RecommendedProductCuration.js", "ssg:https://framerusercontent.com/modules/RPFbeF9Lxv3NmeYGd7j0/EuBOGYpxDT8RBeB9AhYv/RecommendedProductCuration.js"],
  "sourcesContent": ["import useSWR from \"../../node_modules/swr/core/dist/index.js\";\nimport { recommendApi } from \"../../apis/recommend/RecommendApiService.js\";\nconst RECOMMENDED_PRODUCTS_FETCHER_KEY = \"personalizedProductProducts\";\nconst useFetchRecommendedProductsByTagId = ({\n  enabled,\n  query\n}) => {\n  const {\n    isLoading,\n    ...rest\n  } = useSWR(enabled ? [RECOMMENDED_PRODUCTS_FETCHER_KEY, query] : null, () => recommendApi.getRecommendedProductsByTagId(query), {\n    keepPreviousData: true\n  });\n  return {\n    ...rest,\n    isLoading: isLoading || !enabled\n  };\n};\nexport {\n  useFetchRecommendedProductsByTagId\n};\n", "import { useFetchRecommendedProductsByTagId } from \"../../../../hooks/fetchers/useFetchRecommendedProductsByTagId.js\";\nconst LIMIT_PRODUCTS_COUNT = 50;\nconst useRecommendedProducts = ({\n  enabled,\n  tagIds\n}) => {\n  var _a;\n  const tagQuery = tagIds.join(\",\");\n  const {\n    data,\n    isLoading,\n    error\n  } = useFetchRecommendedProductsByTagId({\n    enabled,\n    query: {\n      limit: LIMIT_PRODUCTS_COUNT,\n      tagIds: tagQuery || void 0\n    }\n  });\n  const hasError = error !== void 0;\n  const loading = isLoading || hasError || !enabled;\n  return {\n    products: ((_a = data == null ? void 0 : data.data) == null ? void 0 : _a.products) ?? [],\n    loading\n  };\n};\nexport {\n  useRecommendedProducts\n};\n", "import { jsx } from \"react/jsx-runtime\";\nimport { CARD_HORIZONTAL_AUTO } from \"../Products/Root.constants.js\";\nimport { Products } from \"../Products/index.js\";\nimport { formatCollectionProduct2Product } from \"../../../../apis/recommend/RecommendApiService.js\";\nimport { useRecommendedProducts } from \"./RecommendedProductCuration.hooks.js\";\nimport { useComponentId } from \"../EventTrackingProvider/EventTrackingProvider.hooks.js\";\nimport \"../EventTrackingProvider/EventTrackingProvider.js\";\nimport \"../IntersectionProvider/IntersectionProvider.js\";\nimport { useIntersectionContext } from \"../IntersectionProvider/IntersectionProvider.hooks.js\";\nimport { EventTrigger } from \"../../../@shared/EventTrigger/index.js\";\nconst RecommendedProducts = ({\n  isFramer,\n  tagIds\n}) => {\n  const componentId = useComponentId();\n  const {\n    isInView\n  } = useIntersectionContext();\n  const enableFetchProducts = isInView && !isFramer;\n  const {\n    products,\n    loading\n  } = useRecommendedProducts({\n    enabled: enableFetchProducts,\n    tagIds\n  });\n  const renderProducts = isFramer ? formatCollectionProduct2Product(mock) : products;\n  return /* @__PURE__ */ jsx(Products.Root, { products: renderProducts, loading, options: CARD_HORIZONTAL_AUTO, children: ({\n    index\n  }) => {\n    return /* @__PURE__ */ jsx(EventTrigger.Target, { children: /* @__PURE__ */ jsx(Products.Card, { index, componentName: componentId }) });\n  } });\n};\nconst mock = Array.from({\n  length: 20\n}, () => ({\n  productId: 2569794,\n  productName: \"RIBBON HALF T-SHIRT WHITE\",\n  imageUrl: \"https://img.29cm.co.kr/next-product/2024/04/03/09dfcf7a9e9347dfb93cac2f8145a971_20240403160838.jpg\",\n  frontBrand: {\n    id: 2250,\n    nameKor: \"\uB85C\uB77C\uB85C\uB77C\",\n    nameEng: \"rolarola\"\n  },\n  frontCategories: [{\n    largeCode: 268100100,\n    largeName: \"\uC5EC\uC131\uC758\uB958\",\n    mediumCode: 268103100,\n    mediumName: \"\uC0C1\uC758\",\n    smallCode: 268103101,\n    smallName: \"\uBC18\uC18C\uB9E4 \uD2F0\uC154\uCE20\"\n  }],\n  soldOut: false,\n  newProperty: false,\n  consumerPrice: 43e3,\n  lastSalePrice: 36980,\n  lastSalePercent: 14,\n  saleInfo: {\n    consumerPrice: 43e3,\n    sellPrice: 43e3,\n    saleRate: 14,\n    coupon: true,\n    couponSaleRate: 29,\n    totalSellPrice: 43e3,\n    totalSaleRate: 14\n  },\n  freeShipping: false,\n  heartCount: 0,\n  heartOn: false,\n  reviewCount: 0,\n  reviewAveragePoint: 0,\n  subjectDescriptions: [],\n  tags: [],\n  eventTags: [],\n  traceInfo: {\n    recommendTraceId: -1\n  }\n}));\nexport {\n  RecommendedProducts\n};\n", "import { jsx } from \"react/jsx-runtime\";\nimport { Button as Default } from \"../../../@shared/Button/Button.js\";\nimport { env } from \"../../../../config/index.js\";\nimport { useTrackSnowplowEvent } from \"../../../../hooks/snowplow/useTrackSnowplowEvent.js\";\nimport { useNavigatePage } from \"../../../../hooks/useNavigatePage.js\";\nimport { useComponentId } from \"../EventTrackingProvider/EventTrackingProvider.hooks.js\";\nimport \"../EventTrackingProvider/EventTrackingProvider.js\";\nimport \"../../../../hooks/stores/content/content.store.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport \"framer\";\nimport \"react\";\nimport { isIos } from \"../../../../utils/device.js\";\nimport { querify } from \"../../../../utils/querify.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 \"../../../../node_modules/vite-plugin-node-polyfills/shims/buffer/dist/index.js\";\nimport \"../../../../node_modules/js-cookie/dist/js.cookie.js\";\nimport \"../../../../node_modules/@29cm/snowplow/dist/esm/core/snowplow.js\";\nimport \"../../../../node_modules/swr/mutation/dist/index.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 \"../../Dialog/Dialog.module.css.js\";\nimport \"framer-motion\";\nimport \"../../../../containers/DialogContainer/DialogContainer.emitter.js\";\nimport \"../../../../utils/redirectLogin.js\";\nimport { EventTrigger } from \"../../../@shared/EventTrigger/index.js\";\nconst moreButtonText = \"\uC0C1\uD488 \uC804\uCCB4\uBCF4\uAE30\";\nconst RecommendedProductCurationButton = ({\n  tagIds\n}) => {\n  const componentId = useComponentId();\n  const theme = useTheme();\n  const recommendedDetailSearchParams = querify({\n    \"tagIds\": tagIds.join(\",\") || void 0,\n    // NOTE: (\uAE40\uD64D\uB3D9) IOS\uC758 \uACBD\uC6B0 \uD55C\uAE00\uBC0F \uB744\uC5B4\uC4F0\uAE30\uB97C \uC704\uD574 \uD55C \uBC88 \uB354 \uC778\uCF54\uB529\uC744 \uD569\uB2C8\uB2E4.\n    \"29cm_title\": isIos() ? encodeURIComponent(\"\uB2F9\uC2E0\uC5D0\uAC8C \uB531 \uB9DE\uB294 \uCD94\uCC9C\") : \"\uB2F9\uC2E0\uC5D0\uAC8C \uB531 \uB9DE\uB294 \uCD94\uCC9C\",\n    \"29cm_nav_search\": \"off\",\n    \"29cm_nav_home\": \"off\",\n    \"29cm_nav_cart\": \"off\",\n    \"source\": componentId\n  });\n  const recommendedDetailPageUrl = `${env.workspace.content}/recommendations-for-you?${recommendedDetailSearchParams}`;\n  const navigateRecommendDetailPage = useNavigatePage(recommendedDetailPageUrl);\n  const trackSnowplowEvent = useTrackSnowplowEvent();\n  const handleClickButton = () => {\n    trackSnowplowEvent(\"click_button\", {\n      // TODO(\uD55C\uC9C0\uC6D0): section_name, position, layout_position \uD504\uB85C\uD37C\uD2F0\uC5D0 \uD560\uB2F9\uD55C \uC57D\uC18D\uB41C \uC784\uC758 \uAC12 \uC218\uC815\n      section_name: componentId,\n      section_title: componentId,\n      position: -1,\n      layout_position: -1,\n      button_id: \"more\",\n      button_name: moreButtonText\n    });\n    navigateRecommendDetailPage();\n  };\n  return /* @__PURE__ */ jsx(EventTrigger.Target, { onClick: handleClickButton, children: /* @__PURE__ */ jsx(Default, { variant: \"custom\", size: \"xSmall\", backgroundColor: buttonColorByTheme[theme].backgroundColor, color: buttonColorByTheme[theme].color, postfixIcon: \"chevronRight\", children: moreButtonText }) });\n};\nconst buttonColorByTheme = {\n  light: {\n    backgroundColor: \"#000000\",\n    color: \"#ffffff\"\n  },\n  dark: {\n    backgroundColor: \"#303033\",\n    color: \"#ffffff\"\n  }\n};\nexport {\n  RecommendedProductCurationButton\n};\n", "import { jsx } from \"react/jsx-runtime\";\nimport { createContext, forwardRef } from \"react\";\nconst ActionFallbackContext = createContext(null);\nconst Root = forwardRef(({\n  children,\n  theme,\n  breakpoint\n}, ref) => {\n  return /* @__PURE__ */ jsx(ActionFallbackContext.Provider, { value: {\n    theme,\n    breakpoint\n  }, children: /* @__PURE__ */ jsx(\"div\", { ref, style: {\n    ...containerStyle,\n    ...containerStyleByBreakpoint[breakpoint]\n  }, children }) });\n});\nconst containerStyle = {\n  display: \"flex\",\n  width: \"100%\",\n  paddingBottom: 16\n};\nconst containerStyleByBreakpoint = {\n  desktop: {\n    paddingLeft: 0,\n    paddingRight: 0,\n    maxWidth: 1080\n  },\n  tablet: {\n    paddingLeft: 20,\n    paddingRight: 20,\n    maxWidth: 700\n  },\n  mobile: {\n    paddingLeft: 20,\n    paddingRight: 20\n  }\n};\nexport {\n  ActionFallbackContext,\n  Root\n};\n", "import { useContext } from \"react\";\nimport { ActionFallbackContext } from \"./Root.js\";\nconst useActionFallbackContext = () => {\n  const context = useContext(ActionFallbackContext);\n  if (!context) {\n    throw new Error(\"useActionFallbackContext should be used within Root\");\n  }\n  return context;\n};\nexport {\n  useActionFallbackContext\n};\n", "import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport { useActionFallbackContext } from \"./Root.hooks.js\";\nconst Content = forwardRef(({\n  gap = 16,\n  children,\n  style\n}, ref) => {\n  const {\n    theme,\n    breakpoint\n  } = useActionFallbackContext();\n  return /* @__PURE__ */ jsx(\"div\", { ref, style: {\n    ...contentStyle,\n    ...contentStyleByTheme[theme],\n    ...contentStyleByBreakpoint[breakpoint],\n    gap,\n    ...style\n  }, children });\n});\nconst contentStyle = {\n  display: \"flex\",\n  flexDirection: \"column\",\n  alignItems: \"center\",\n  flex: 1,\n  borderRadius: \"6px\"\n};\nconst contentStyleByTheme = {\n  light: {\n    backgroundColor: \"#F4F4F4\"\n  },\n  dark: {\n    backgroundColor: \"#19191A\"\n  }\n};\nconst contentStyleByBreakpoint = {\n  desktop: {\n    padding: \"40px 16px\"\n  },\n  tablet: {\n    padding: \"24px 16px\"\n  },\n  mobile: {\n    padding: \"24px 16px\"\n  }\n};\nexport {\n  Content\n};\n", "import { jsxs, jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport { typography } from \"../../../styles/typography.js\";\nimport { useActionFallbackContext } from \"./Root.hooks.js\";\nimport { Icon } from \"../Icon/Icon.js\";\nconst Message = forwardRef(({\n  iconType,\n  iconSize = 40,\n  title,\n  descriptions\n}, ref) => {\n  const {\n    theme\n  } = useActionFallbackContext();\n  const descriptionList = typeof descriptions === \"string\" ? [descriptions] : descriptions;\n  return /* @__PURE__ */ jsxs(\"div\", { ref, style: containerStyle, children: [\n    iconType && /* @__PURE__ */ jsx(Icon, { type: iconType, size: iconSize, weight: \"light\", color: iconColorByTheme[theme] }),\n    /* @__PURE__ */ jsxs(\"div\", { style: textWrapperStyle, children: [\n      /* @__PURE__ */ jsx(\"div\", { style: {\n        ...titleStyle,\n        ...titleStyleByTheme[theme]\n      }, children: title }),\n      /* @__PURE__ */ jsx(\"div\", { style: {\n        ...descriptionStyle,\n        ...descriptionStyleByTheme[theme]\n      }, children: descriptionList.map((description, index) => (\n        // eslint-disable-next-line react/no-array-index-key\n        /* @__PURE__ */ jsx(\"span\", { children: description }, index)\n      )) })\n    ] })\n  ] });\n});\nconst containerStyle = {\n  display: \"flex\",\n  flexDirection: \"column\",\n  alignItems: \"center\",\n  gap: 8\n};\nconst iconColorByTheme = {\n  light: \"#000000\",\n  dark: \"#FFFFFF\"\n};\nconst textWrapperStyle = {\n  display: \"flex\",\n  flexDirection: \"column\",\n  alignItems: \"center\",\n  gap: 4\n};\nconst titleStyle = {\n  ...typography(18, 500)\n};\nconst titleStyleByTheme = {\n  light: {\n    color: \"#000000\"\n  },\n  dark: {\n    color: \"#FFFFFF\"\n  }\n};\nconst descriptionStyle = {\n  display: \"flex\",\n  flexDirection: \"column\",\n  alignItems: \"center\",\n  whiteSpace: \"pre-wrap\",\n  ...typography(14, 400)\n};\nconst descriptionStyleByTheme = {\n  light: {\n    color: \"#474747\"\n  },\n  dark: {\n    color: \"#A0A0A0\"\n  }\n};\nexport {\n  Message\n};\n", "import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nconst Action = forwardRef(({\n  children,\n  style\n}, ref) => {\n  return /* @__PURE__ */ jsx(\"div\", { ref, style: {\n    ...actionStyle,\n    ...style\n  }, children });\n});\nconst actionStyle = {\n  width: \"100%\"\n};\nexport {\n  Action\n};\n", "import { Root } from \"./Root.js\";\nimport { Content } from \"./Content.js\";\nimport { Message } from \"./Message.js\";\nimport { Action } from \"./Action.js\";\nconst ActionFallback = {\n  Root,\n  Content,\n  Message,\n  Action\n};\nexport {\n  ActionFallback\n};\n", "import { jsx, jsxs } from \"react/jsx-runtime\";\nimport { ActionFallback } from \"../../../@shared/ActionFallback/index.js\";\nimport { Button as Default } from \"../../../@shared/Button/Button.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 { useBreakpoint } from \"../../../../hooks/useBreakpoint.js\";\nimport \"../../../../hooks/stores/bottom-sheet/bottom-sheet.store.js\";\nimport \"react-dom\";\nimport \"../../Dialog/Dialog.module.css.js\";\nimport \"framer-motion\";\nimport \"../../../../containers/DialogContainer/DialogContainer.emitter.js\";\nimport { redirectLogin } from \"../../../../utils/redirectLogin.js\";\nimport \"../../../../utils/event-properties/source.js\";\nconst LoginActionFallback = () => {\n  const theme = useTheme();\n  const breakpoint = useBreakpoint();\n  const handleLoginButtonClick = () => {\n    redirectLogin();\n  };\n  return /* @__PURE__ */ jsx(ActionFallback.Root, { theme, breakpoint, children: /* @__PURE__ */ jsxs(ActionFallback.Content, { gap: 28, style: contentStyleByBreakPoint[breakpoint], children: [\n    /* @__PURE__ */ jsx(ActionFallback.Message, { title: \"\uB85C\uADF8\uC778\uC774 \uD544\uC694\uD574\uC694\", descriptions: [\"\uB2F9\uC2E0\uC5D0\uAC8C \uB531 \uB9DE\uB294 \uCD94\uCC9C \uC544\uC774\uD15C\uC774\", \"\uB2F9\uC2E0\uC744 \uAE30\uB2E4\uB9AC\uACE0 \uC788\uC5B4\uC694.\"] }),\n    /* @__PURE__ */ jsx(ActionFallback.Action, { style: actionStyleByBreakPoint[breakpoint], children: /* @__PURE__ */ jsx(Default, { fill: true, variant: \"custom\", size: \"medium\", postfixIcon: \"chevronRight\", backgroundColor: buttonColorByTheme[theme].backgroundColor, color: buttonColorByTheme[theme].color, onClick: handleLoginButtonClick, children: \"\uB85C\uADF8\uC778\" }) })\n  ] }) });\n};\nconst contentStyleByBreakPoint = {\n  desktop: {\n    padding: \"32px 16px\"\n  },\n  tablet: {\n    padding: \"32px 16px 16px\"\n  },\n  mobile: {\n    padding: \"32px 16px 16px\"\n  }\n};\nconst actionStyleByBreakPoint = {\n  desktop: {\n    maxWidth: 240\n  },\n  tablet: {},\n  mobile: {}\n};\nconst buttonColorByTheme = {\n  light: {\n    backgroundColor: \"#f4f4f4\",\n    color: \"#000000\"\n  },\n  dark: {\n    backgroundColor: \"#474747\",\n    color: \"#FFFFFF\"\n  }\n};\nexport {\n  LoginActionFallback\n};\n", "import { jsx, jsxs } from \"react/jsx-runtime\";\nimport { addPropertyControls, ControlType } from \"framer\";\nimport { Intersection } from \"../../../@shared/Intersection/Intersection.js\";\nimport \"react-dom\";\nimport \"../../../@shared/Icon/Icon.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 { isCanvas } from \"../../../../utils/framer/isCanvas.js\";\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 \"../../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 { useTrackViewComponentEvent } from \"../../../../hooks/events/useTrackViewComponentEvent.js\";\nimport { RecommendedProducts } from \"./RecommendedProducts.js\";\nimport { RecommendedProductCurationButton } from \"./RecommendedProductCurationButton.js\";\nimport { isFramerPreview } from \"../../../../utils/framer/isFramerPreview.js\";\nimport { SECTION_CONTROLS } from \"../../../../libs/property-controls/section.js\";\nimport { Headline } from \"../../Headline/Headline.js\";\nimport { useTrackSnowplowEvent } from \"../../../../hooks/snowplow/useTrackSnowplowEvent.js\";\nimport { SWRErrorBoundary } from \"../../../@shared/SWRErrorBoundary/SWRErrorBoundary.js\";\nimport { NoContent } from \"../NoContent/NoContent.js\";\nimport { SWRPersistentCache } from \"../../../@shared/swr/SWRPersistentCache/SWRPersistentCache.js\";\nimport { SectionLayout } from \"../SectionLayout/SectionLayout.js\";\nimport { LoginActionFallback } from \"./LoginActionFallback.js\";\nimport { splitToNumberArray } from \"../../../../utils/splitToNumberArray.js\";\nimport { EventTrigger } from \"../../../@shared/EventTrigger/index.js\";\nconst DEFAULT_COMPONENT_NAME = \"PersonalizedProductCuration\";\nconst RecommendedProductCuration = ({\n  componentId,\n  breakpoint,\n  theme,\n  headline,\n  stringTagIds = \"\"\n}) => {\n  const componentName = componentId || DEFAULT_COMPONENT_NAME;\n  const tagIds = splitToNumberArray(stringTagIds);\n  const {\n    trackViewComponentEvent\n  } = useTrackViewComponentEvent();\n  const {\n    logged\n  } = useCurrentUser();\n  const isFramer = isCanvas() || isFramerPreview();\n  const shouldRenderPersonalizedProducts = isFramer || logged;\n  const trackSnowplowEvent = useTrackSnowplowEvent();\n  const handleOnViewComponent = () => {\n    trackViewComponentEvent(componentName);\n  };\n  const handleImpression = () => {\n    trackSnowplowEvent(\"impression_content\", {\n      // TODO(\uD55C\uC9C0\uC6D0): section_name, position, layout_position \uD504\uB85C\uD37C\uD2F0\uC5D0 \uD560\uB2F9\uD55C \uC57D\uC18D\uB41C \uC784\uC758 \uAC12 \uC218\uC815\n      section_name: componentId,\n      section_title: componentId,\n      position: -1,\n      layout_position: -1\n    });\n  };\n  return /* @__PURE__ */ jsx(Intersection, { threshold: 0.5, margin: \"200px 0px\", onView: handleOnViewComponent, children: /* @__PURE__ */ jsx(EventTrigger.Root, { types: [\"impression\"], onImpression: handleImpression, children: /* @__PURE__ */ jsxs(SectionLayout, { theme, breakpoint, componentId, children: [\n    /* @__PURE__ */ jsx(Headline, { ...headline, priority: \"primary\", action: shouldRenderPersonalizedProducts ? /* @__PURE__ */ jsx(RecommendedProductCurationButton, { tagIds }) : null }),\n    shouldRenderPersonalizedProducts ? /* @__PURE__ */ jsx(SWRErrorBoundary, { fallback: (retry) => /* @__PURE__ */ jsx(NoContent, { onClick: retry }), children: /* @__PURE__ */ jsx(SWRPersistentCache, { children: /* @__PURE__ */ jsx(RecommendedProducts, { isFramer, tagIds }) }) }) : /* @__PURE__ */ jsx(LoginActionFallback, {})\n  ] }) }) });\n};\naddPropertyControls(RecommendedProductCuration, {\n  ...SECTION_CONTROLS,\n  stringTagIds: {\n    title: \"\uAE30\uD68D\uC804 \uD0DC\uADF8 \uC544\uC774\uB514\",\n    type: ControlType.String,\n    description: \"\uD0DC\uADF8 \uC544\uC774\uB514\uAC00 2\uAC1C \uC774\uC0C1\uC77C \uACBD\uC6B0 `,`\uB85C \uAD6C\uBD84\",\n    defaultValue: \"\"\n  }\n});\nexport {\n  RecommendedProductCuration\n};\n", "/** local */// import { RecommendedProductCuration } from \"https://localhost:4173/components/systems/curations/RecommendedProductCuration/RecommendedProductCuration.js\"\n/** dev */// import { RecommendedProductCuration } from \"https://asset.29cm.co.kr/contents/framer/dev/components/systems/curations/RecommendedProductCuration/RecommendedProductCuration.js\"\n/** production */import{RecommendedProductCuration}from\"https://asset.29cm.co.kr/contents/framer/components/systems/curations/RecommendedProductCuration/RecommendedProductCuration.js\";RecommendedProductCuration.displayName=\"[curation]RecommendedProductCuration\";/**\n * @framerDisableUnlink\n */export default RecommendedProductCuration;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"RecommendedProductCuration\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./RecommendedProductCuration.map"],
  "mappings": "8sBAEA,IAAMA,GAAmC,8BACnCC,GAAqC,CAAC,CAC1C,QAAAC,EACA,MAAAC,CACF,IAAM,CACJ,GAAM,CACJ,UAAAC,EACA,GAAGC,CACL,EAAIC,EAAOJ,EAAU,CAACF,GAAkCG,CAAK,EAAI,KAAM,IAAMI,GAAa,8BAA8BJ,CAAK,EAAG,CAC9H,iBAAkB,EACpB,CAAC,EACD,MAAO,CACL,GAAGE,EACH,UAAWD,GAAa,CAACF,CAC3B,CACF,EChBA,IAAMM,GAAuB,GACvBC,GAAyB,CAAC,CAC9B,QAAAC,EACA,OAAAC,CACF,IAAM,CACJ,IAAIC,EACJ,IAAMC,EAAWF,EAAO,KAAK,GAAG,EAC1B,CACJ,KAAAG,EACA,UAAAC,EACA,MAAAC,CACF,EAAIC,GAAmC,CACrC,QAAAP,EACA,MAAO,CACL,MAAOF,GACP,OAAQK,GAAY,MACtB,CACF,CAAC,EAEKK,EAAUH,GADCC,IAAU,QACc,CAACN,EAC1C,MAAO,CACL,WAAYE,EAA6BE,GAAK,OAAS,KAAO,OAASF,EAAG,WAAa,CAAC,EACxF,QAAAM,CACF,CACF,ECfA,IAAMC,GAAsB,CAAC,CAC3B,SAAAC,EACA,OAAAC,CACF,IAAM,CACJ,IAAMC,EAAcC,EAAe,EAC7B,CACJ,SAAAC,CACF,EAAIC,EAAuB,EACrBC,EAAsBF,GAAY,CAACJ,EACnC,CACJ,SAAAO,EACA,QAAAC,CACF,EAAIC,GAAuB,CACzB,QAASH,EACT,OAAAL,CACF,CAAC,EACKS,EAAiBV,EAAWW,GAAgCC,EAAI,EAAIL,EAC1E,OAAuBM,EAAIC,EAAS,KAAM,CAAE,SAAUJ,EAAgB,QAAAF,EAAS,QAASO,EAAsB,SAAU,CAAC,CACvH,MAAAC,CACF,IACyBH,EAAII,EAAa,OAAQ,CAAE,SAA0BJ,EAAIC,EAAS,KAAM,CAAE,MAAAE,EAAO,cAAed,CAAY,CAAC,CAAE,CAAC,CACvI,CAAC,CACL,EACMU,GAAO,MAAM,KAAK,CACtB,OAAQ,EACV,EAAG,KAAO,CACR,UAAW,QACX,YAAa,4BACb,SAAU,qGACV,WAAY,CACV,GAAI,KACJ,QAAS,2BACT,QAAS,UACX,EACA,gBAAiB,CAAC,CAChB,UAAW,UACX,UAAW,2BACX,WAAY,UACZ,WAAY,eACZ,UAAW,UACX,UAAW,uCACb,CAAC,EACD,QAAS,GACT,YAAa,GACb,cAAe,KACf,cAAe,MACf,gBAAiB,GACjB,SAAU,CACR,cAAe,KACf,UAAW,KACX,SAAU,GACV,OAAQ,GACR,eAAgB,GAChB,eAAgB,KAChB,cAAe,EACjB,EACA,aAAc,GACd,WAAY,EACZ,QAAS,GACT,YAAa,EACb,mBAAoB,EACpB,oBAAqB,CAAC,EACtB,KAAM,CAAC,EACP,UAAW,CAAC,EACZ,UAAW,CACT,iBAAkB,EACpB,CACF,EAAE,EC7CF,IAAMM,GAAiB,wCACjBC,GAAmC,CAAC,CACxC,OAAAC,CACF,IAAM,CACJ,IAAMC,EAAcC,EAAe,EAC7BC,EAAQC,EAAS,EACjBC,EAAgCC,EAAQ,CAC5C,OAAUN,EAAO,KAAK,GAAG,GAAK,OAE9B,aAAcO,EAAM,EAAI,mBAAmB,2DAAc,EAAI,4DAC7D,kBAAmB,MACnB,gBAAiB,MACjB,gBAAiB,MACjB,OAAUN,CACZ,CAAC,EACKO,EAA2B,GAAGC,EAAI,UAAU,OAAO,4BAA4BJ,CAA6B,GAC5GK,EAA8BC,EAAgBH,CAAwB,EACtEI,EAAqBC,EAAsB,EAC3CC,EAAoB,IAAM,CAC9BF,EAAmB,eAAgB,CAEjC,aAAcX,EACd,cAAeA,EACf,SAAU,GACV,gBAAiB,GACjB,UAAW,OACX,YAAaH,EACf,CAAC,EACDY,EAA4B,CAC9B,EACA,OAAuBK,EAAIC,EAAa,OAAQ,CAAE,QAASF,EAAmB,SAA0BC,EAAIE,EAAS,CAAE,QAAS,SAAU,KAAM,SAAU,gBAAiBC,GAAmBf,CAAK,EAAE,gBAAiB,MAAOe,GAAmBf,CAAK,EAAE,MAAO,YAAa,eAAgB,SAAUL,EAAe,CAAC,CAAE,CAAC,CAC1T,EACMoB,GAAqB,CACzB,MAAO,CACL,gBAAiB,UACjB,MAAO,SACT,EACA,KAAM,CACJ,gBAAiB,UACjB,MAAO,SACT,CACF,ECvEA,IAAMC,EAAwBC,EAAc,IAAI,EAC1CC,GAAOC,EAAW,CAAC,CACvB,SAAAC,EACA,MAAAC,EACA,WAAAC,CACF,EAAGC,IACsBC,EAAIR,EAAsB,SAAU,CAAE,MAAO,CAClE,MAAAK,EACA,WAAAC,CACF,EAAG,SAA0BE,EAAI,MAAO,CAAE,IAAAD,EAAK,MAAO,CACpD,GAAGE,GACH,GAAGC,GAA2BJ,CAAU,CAC1C,EAAG,SAAAF,CAAS,CAAC,CAAE,CAAC,CACjB,EACKK,GAAiB,CACrB,QAAS,OACT,MAAO,OACP,cAAe,EACjB,EACMC,GAA6B,CACjC,QAAS,CACP,YAAa,EACb,aAAc,EACd,SAAU,IACZ,EACA,OAAQ,CACN,YAAa,GACb,aAAc,GACd,SAAU,GACZ,EACA,OAAQ,CACN,YAAa,GACb,aAAc,EAChB,CACF,EClCA,IAAMC,EAA2B,IAAM,CACrC,IAAMC,EAAUC,EAAWC,CAAqB,EAChD,GAAI,CAACF,EACH,MAAM,IAAI,MAAM,qDAAqD,EAEvE,OAAOA,CACT,ECLA,IAAMG,GAAUC,EAAW,CAAC,CAC1B,IAAAC,EAAM,GACN,SAAAC,EACA,MAAAC,CACF,EAAGC,IAAQ,CACT,GAAM,CACJ,MAAAC,EACA,WAAAC,CACF,EAAIC,EAAyB,EAC7B,OAAuBC,EAAI,MAAO,CAAE,IAAAJ,EAAK,MAAO,CAC9C,GAAGK,GACH,GAAGC,GAAoBL,CAAK,EAC5B,GAAGM,GAAyBL,CAAU,EACtC,IAAAL,EACA,GAAGE,CACL,EAAG,SAAAD,CAAS,CAAC,CACf,CAAC,EACKO,GAAe,CACnB,QAAS,OACT,cAAe,SACf,WAAY,SACZ,KAAM,EACN,aAAc,KAChB,EACMC,GAAsB,CAC1B,MAAO,CACL,gBAAiB,SACnB,EACA,KAAM,CACJ,gBAAiB,SACnB,CACF,EACMC,GAA2B,CAC/B,QAAS,CACP,QAAS,WACX,EACA,OAAQ,CACN,QAAS,WACX,EACA,OAAQ,CACN,QAAS,WACX,CACF,ECxCA,IAAMC,GAAUC,EAAW,CAAC,CAC1B,SAAAC,EACA,SAAAC,EAAW,GACX,MAAAC,EACA,aAAAC,CACF,EAAGC,IAAQ,CACT,GAAM,CACJ,MAAAC,CACF,EAAIC,EAAyB,EACvBC,EAAkB,OAAOJ,GAAiB,SAAW,CAACA,CAAY,EAAIA,EAC5E,OAAuBK,EAAK,MAAO,CAAE,IAAAJ,EAAK,MAAOK,GAAgB,SAAU,CACzET,GAA4BU,EAAIC,EAAM,CAAE,KAAMX,EAAU,KAAMC,EAAU,OAAQ,QAAS,MAAOW,GAAiBP,CAAK,CAAE,CAAC,EACzGG,EAAK,MAAO,CAAE,MAAOK,GAAkB,SAAU,CAC/CH,EAAI,MAAO,CAAE,MAAO,CAClC,GAAGI,GACH,GAAGC,GAAkBV,CAAK,CAC5B,EAAG,SAAUH,CAAM,CAAC,EACJQ,EAAI,MAAO,CAAE,MAAO,CAClC,GAAGM,GACH,GAAGC,GAAwBZ,CAAK,CAClC,EAAG,SAAUE,EAAgB,IAAI,CAACW,EAAaC,IAE7BT,EAAI,OAAQ,CAAE,SAAUQ,CAAY,EAAGC,CAAK,CAC7D,CAAE,CAAC,CACN,CAAE,CAAC,CACL,CAAE,CAAC,CACL,CAAC,EACKV,GAAiB,CACrB,QAAS,OACT,cAAe,SACf,WAAY,SACZ,IAAK,CACP,EACMG,GAAmB,CACvB,MAAO,UACP,KAAM,SACR,EACMC,GAAmB,CACvB,QAAS,OACT,cAAe,SACf,WAAY,SACZ,IAAK,CACP,EACMC,GAAa,CACjB,GAAGM,EAAW,GAAI,GAAG,CACvB,EACML,GAAoB,CACxB,MAAO,CACL,MAAO,SACT,EACA,KAAM,CACJ,MAAO,SACT,CACF,EACMC,GAAmB,CACvB,QAAS,OACT,cAAe,SACf,WAAY,SACZ,WAAY,WACZ,GAAGI,EAAW,GAAI,GAAG,CACvB,EACMH,GAA0B,CAC9B,MAAO,CACL,MAAO,SACT,EACA,KAAM,CACJ,MAAO,SACT,CACF,ECvEA,IAAMI,GAASC,EAAW,CAAC,CACzB,SAAAC,EACA,MAAAC,CACF,EAAGC,IACsBC,EAAI,MAAO,CAAE,IAAAD,EAAK,MAAO,CAC9C,GAAGE,GACH,GAAGH,CACL,EAAG,SAAAD,CAAS,CAAC,CACd,EACKI,GAAc,CAClB,MAAO,MACT,ECTA,IAAMC,EAAiB,CACrB,KAAAC,GACA,QAAAC,GACA,QAAAC,GACA,OAAAC,EACF,ECiBA,IAAMC,GAAsB,IAAM,CAChC,IAAMC,EAAQC,EAAS,EACjBC,EAAaC,EAAc,EAC3BC,EAAyB,IAAM,CACnCC,EAAc,CAChB,EACA,OAAuBC,EAAIC,EAAe,KAAM,CAAE,MAAAP,EAAO,WAAAE,EAAY,SAA0BM,EAAKD,EAAe,QAAS,CAAE,IAAK,GAAI,MAAOE,GAAyBP,CAAU,EAAG,SAAU,CAC5KI,EAAIC,EAAe,QAAS,CAAE,MAAO,oDAAa,aAAc,CAAC,qFAAqB,iEAAe,CAAE,CAAC,EACxGD,EAAIC,EAAe,OAAQ,CAAE,MAAOG,GAAwBR,CAAU,EAAG,SAA0BI,EAAIK,EAAS,CAAE,KAAM,GAAM,QAAS,SAAU,KAAM,SAAU,YAAa,eAAgB,gBAAiBC,GAAmBZ,CAAK,EAAE,gBAAiB,MAAOY,GAAmBZ,CAAK,EAAE,MAAO,QAASI,EAAwB,SAAU,oBAAM,CAAC,CAAE,CAAC,CACzW,CAAE,CAAC,CAAE,CAAC,CACR,EACMK,GAA2B,CAC/B,QAAS,CACP,QAAS,WACX,EACA,OAAQ,CACN,QAAS,gBACX,EACA,OAAQ,CACN,QAAS,gBACX,CACF,EACMC,GAA0B,CAC9B,QAAS,CACP,SAAU,GACZ,EACA,OAAQ,CAAC,EACT,OAAQ,CAAC,CACX,EACME,GAAqB,CACzB,MAAO,CACL,gBAAiB,UACjB,MAAO,SACT,EACA,KAAM,CACJ,gBAAiB,UACjB,MAAO,SACT,CACF,ECtBA,IAAMC,GAAyB,8BACzBC,EAA6B,CAAC,CAClC,YAAAC,EACA,WAAAC,EACA,MAAAC,EACA,SAAAC,EACA,aAAAC,EAAe,EACjB,IAAM,CACJ,IAAMC,EAAgBL,GAAeF,GAC/BQ,EAASC,EAAmBH,CAAY,EACxC,CACJ,wBAAAI,CACF,EAAIC,EAA2B,EACzB,CACJ,OAAAC,CACF,EAAIC,EAAe,EACbC,EAAWC,EAAS,GAAKC,EAAgB,EACzCC,EAAmCH,GAAYF,EAC/CM,GAAqBC,EAAsB,EAC3CC,GAAwB,IAAM,CAClCV,EAAwBH,CAAa,CACvC,EACMc,GAAmB,IAAM,CAC7BH,GAAmB,qBAAsB,CAEvC,aAAchB,EACd,cAAeA,EACf,SAAU,GACV,gBAAiB,EACnB,CAAC,CACH,EACA,OAAuBoB,EAAIC,EAAc,CAAE,UAAW,GAAK,OAAQ,YAAa,OAAQH,GAAuB,SAA0BE,EAAIE,EAAa,KAAM,CAAE,MAAO,CAAC,YAAY,EAAG,aAAcH,GAAkB,SAA0BI,EAAKC,EAAe,CAAE,MAAAtB,EAAO,WAAAD,EAAY,YAAAD,EAAa,SAAU,CACjSoB,EAAIK,EAAU,CAAE,GAAGtB,EAAU,SAAU,UAAW,OAAQY,EAAmDK,EAAIM,GAAkC,CAAE,OAAApB,CAAO,CAAC,EAAI,IAAK,CAAC,EACvLS,EAAmDK,EAAIO,EAAkB,CAAE,SAAWC,IAA0BR,EAAIS,EAAW,CAAE,QAASD,EAAM,CAAC,EAAG,SAA0BR,EAAIU,EAAoB,CAAE,SAA0BV,EAAIW,GAAqB,CAAE,SAAAnB,EAAU,OAAAN,CAAO,CAAC,CAAE,CAAC,CAAE,CAAC,EAAoBc,EAAIY,GAAqB,CAAC,CAAC,CACtU,CAAE,CAAC,CAAE,CAAC,CAAE,CAAC,CACX,EACAC,EAAoBlC,EAA4B,CAC9C,GAAGmC,EACH,aAAc,CACZ,MAAO,qDACP,KAAMC,EAAY,OAClB,YAAa,uGACb,aAAc,EAChB,CACF,CAAC,ECpFuLC,EAA2B,YAAY,uCAE5N,IAAOC,GAAQD",
  "names": ["RECOMMENDED_PRODUCTS_FETCHER_KEY", "useFetchRecommendedProductsByTagId", "enabled", "query", "isLoading", "rest", "useSWR", "recommendApi", "LIMIT_PRODUCTS_COUNT", "useRecommendedProducts", "enabled", "tagIds", "_a", "tagQuery", "data", "isLoading", "error", "useFetchRecommendedProductsByTagId", "loading", "RecommendedProducts", "isFramer", "tagIds", "componentId", "useComponentId", "isInView", "useIntersectionContext", "enableFetchProducts", "products", "loading", "useRecommendedProducts", "renderProducts", "formatCollectionProduct2Product", "mock", "p", "Products", "CARD_HORIZONTAL_AUTO", "index", "EventTrigger", "moreButtonText", "RecommendedProductCurationButton", "tagIds", "componentId", "useComponentId", "theme", "useTheme", "recommendedDetailSearchParams", "querify", "isIos", "recommendedDetailPageUrl", "env", "navigateRecommendDetailPage", "useNavigatePage", "trackSnowplowEvent", "useTrackSnowplowEvent", "handleClickButton", "p", "EventTrigger", "Default", "buttonColorByTheme", "ActionFallbackContext", "z", "Root", "Y", "children", "theme", "breakpoint", "ref", "p", "containerStyle", "containerStyleByBreakpoint", "useActionFallbackContext", "context", "re", "ActionFallbackContext", "Content", "Y", "gap", "children", "style", "ref", "theme", "breakpoint", "useActionFallbackContext", "p", "contentStyle", "contentStyleByTheme", "contentStyleByBreakpoint", "Message", "Y", "iconType", "iconSize", "title", "descriptions", "ref", "theme", "useActionFallbackContext", "descriptionList", "u", "containerStyle", "p", "Icon", "iconColorByTheme", "textWrapperStyle", "titleStyle", "titleStyleByTheme", "descriptionStyle", "descriptionStyleByTheme", "description", "index", "typography", "Action", "Y", "children", "style", "ref", "p", "actionStyle", "ActionFallback", "Root", "Content", "Message", "Action", "LoginActionFallback", "theme", "useTheme", "breakpoint", "useBreakpoint", "handleLoginButtonClick", "redirectLogin", "p", "ActionFallback", "u", "contentStyleByBreakPoint", "actionStyleByBreakPoint", "Default", "buttonColorByTheme", "DEFAULT_COMPONENT_NAME", "RecommendedProductCuration", "componentId", "breakpoint", "theme", "headline", "stringTagIds", "componentName", "tagIds", "splitToNumberArray", "trackViewComponentEvent", "useTrackViewComponentEvent", "logged", "useCurrentUser", "isFramer", "isCanvas", "isFramerPreview", "shouldRenderPersonalizedProducts", "trackSnowplowEvent", "useTrackSnowplowEvent", "handleOnViewComponent", "handleImpression", "p", "Intersection", "EventTrigger", "u", "SectionLayout", "Headline", "RecommendedProductCurationButton", "SWRErrorBoundary", "retry", "NoContent", "SWRPersistentCache", "RecommendedProducts", "LoginActionFallback", "addPropertyControls", "SECTION_CONTROLS", "ControlType", "RecommendedProductCuration", "RecommendedProductCuration_default"]
}
