{"version":3,"file":"TagsModule.BD_SJZKW.mjs","names":["useMemo","useMemo","__esmMin","init_npm_react_18_3_1","init_ssg_sandbox_shims","pe","window","init_jsx_runtime","ce","init_framer_motion_DhsWWWsN","addPropertyControls","init_framer_CaDWdxiz","ControlType","init_helpers","init_KeywordCollectionTags_utils","useTrackClickButtonEvent","init_BreakpointProvider","init_content_store","COMPONENT_ID_PROPS","init_TimeSaleCollectionTags_utils","useCurrentUser","init_js_cookie","init_Dialog_module_css","init_breakpoint","init_DialogContainer_emitter","BRAND_CURATION_CONTROLS","init_dist","init_EventTrigger","RECOMMENDATION_CONTROLS","QUERY_CONTROL","init_dist$2","COUPON_COLLECTION_CONTROLS","init_ThemeProvider","init_BrandCurationApiService","Tags","init_dist$1","useSWR","init_controls","init_types","SWRErrorBoundary","init_toast_store","keywordCollectionApi","shallow$1","THEME_CONTROLS","init_IntersectionProvider_hooks","init_hooks","init_bottom_sheet_store","init_theme","useIntersectionContext","combineObjectPropertyControls","init_UserApiService","init_SWRErrorBoundary","KEYWORD_COLLECTIONS_CONTROLS","init_global_layout_store","init_IntersectionProvider","init_useCurrentUser","BREAKPOINT_CONTROLS","QueryType","PRODUCT_CONTROLS","CategoryType","EventTrigger","RANKING_CONTROLS","RankingType","init_snowplow","init_BestApiService","bestApi","init_Tags","init_PreuserApiService","init_spacing","init_OneBrandDaysApiService","formatSchedule","init_useFeatureFlag","init_SectionLayout","init_BrandMixApiService","init_segment","init_source","collectionApi","init_redirectLogin","init_index_esm2017","init_BrandSaleApiService","getPadding","init_index_esm","brandSaleApi","splitToNumberArray","init_TasteSharingApiService","init_key","init_KeywordCollectionApiService","init_shallow","init_config","getProductGroupType","useSetRootModule","init_SegmentProvider","orderByDateAsc","init_CategoryFirstOrderApiService","init_splitToNumberArray","createKey","getCurrentScheduleIndex","init_FramerApiService","init_CollectionApiService","brandCurationApi","SectionLayout","init_date","useSegment","init_HighlightProductsApiService","SEGMENT_CONTROLS","init_TimeSaleCollection_utils","init_query_store","init_component_id","reshapeProductGroups","useQueryStore","KEYWORD_COLLECTION_CONTROLS","init_dialog_store","getCurrentBrandSaleIndex","isGenderProductGroupMatches","getCalendarTagName","orderByGender","init_OutputFailure","init_CalendarTags_utils","useReportOutputFailure","init_facet","OutputFailure","reshapeCategoryFacetValues","TagsModuleInputType","init_TagsModule_types","\"Linked\"","\"Manual\"","\"Auto\"","TagsModuleInputType2","TagsElement","attachAdditionalQuery","init_TagsElement","_inputs","dispatchSetQuery","state","inputs","output","currentInput","currentIndex","trackClickButtonEvent","handleClick","index","handleValueChange","value","input","padding","layout","loading","isVisible","item","values","GENDER_PREFIX","GENDER_SEPARATOR","reshapeProductGroupsByGender","getKeywordCollectionTagsResult","getCouponCollectionTagsResult","init_TagsModule_utils","groups","gender","title","group","query","type","productGroups","displayEndAt","x","userSegment","brandSales","brandSale","TAGS_FETCHER_KEY","useTagsQuery","fetchKeywordCollectionTags","fetchKeywordCollectionsTags","fetchBrandCurationTags","fetchRankingTags","fetchCouponCollectionTags","queryTags","init_TagsModule_hooks","_enabled","options","enabled","rest","data","hasTags","isLoading","description","collections","current","next","collection","firstProductGroup","productGroupList","displayStartAt","collectionId","couponId","brandGroupIds","brand","tagIds","categoryProperties","category","allCategory","brandSaleList","AutoTagsModule","init_AutoTagsModule","init_npm_react_dom_18_3_1","user","isInView","tags","AUTO_TAGS_MODULE_QUERY","MANUAL_TAGS_MODULE_QUERY","init_TagsModule_controls","getKeywordCollectionTags","getCouponCollectionTags","getRankingTags","getTags","init_LinkedTagsModule_utils","childCategories","LinkedTagsModule","init_LinkedTagsModule","upstreamRetry","TagsModuleInner","TagsModule","init_TagsModule","retry","TagsModule_default","init_TagsModule$1"],"sources":["https:/asset.29cm.co.kr/contents/framer/components/modules/TagsModule/TagsModule.types.js","https:/asset.29cm.co.kr/contents/framer/components/modules/TagsModule/TagsElement/TagsElement.js","https:/asset.29cm.co.kr/contents/framer/components/modules/TagsModule/TagsModule.utils.js","https:/asset.29cm.co.kr/contents/framer/components/modules/TagsModule/TagsModule.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/modules/TagsModule/AutoTagsModule/AutoTagsModule.js","https:/asset.29cm.co.kr/contents/framer/components/modules/TagsModule/TagsModule.controls.js","https:/asset.29cm.co.kr/contents/framer/components/modules/TagsModule/LinkedTagsModule/LinkedTagsModule.utils.js","https:/asset.29cm.co.kr/contents/framer/components/modules/TagsModule/LinkedTagsModule/LinkedTagsModule.js","https:/asset.29cm.co.kr/contents/framer/components/modules/TagsModule/TagsModule.js","https:/framerusercontent.com/modules/LcoSbbUQzAWYrkTx3Hyi/yfr8qKY2xRRK7cInEyBA/TagsModule.js"],"sourcesContent":["var TagsModuleInputType = /* @__PURE__ */ ((TagsModuleInputType2) => {\n  TagsModuleInputType2[TagsModuleInputType2[\"Linked\"] = 0] = \"Linked\";\n  TagsModuleInputType2[TagsModuleInputType2[\"Manual\"] = 1] = \"Manual\";\n  TagsModuleInputType2[TagsModuleInputType2[\"Auto\"] = 2] = \"Auto\";\n  return TagsModuleInputType2;\n})(TagsModuleInputType || {});\nexport {\n  TagsModuleInputType\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { useMemo, useEffect } from \"react\";\nimport { useQueryStore } from \"../../query-store/query.store.js\";\nimport { Tags } from \"../../../systems/curations/Tags/index.js\";\nimport { useTrackClickButtonEvent, useSetRootModule } from \"../../hooks.js\";\nimport { EventTrigger } from \"../../../@shared/EventTrigger/index.js\";\nimport { getPadding } from \"../../../../utils/spacing.js\";\nimport { useSegment } from \"../../../@shared/providers/SegmentProvider/SegmentProvider.js\";\nconst TagsElement = ({\n  loading = false,\n  currentIndex = 0,\n  inputs: _inputs,\n  output,\n  layout\n}) => {\n  const dispatchSetQuery = useQueryStore((state) => state.dispatchSetQuery);\n  const inputs = useMemo(() => attachAdditionalQuery(_inputs, output), [_inputs, output]);\n  const currentInput = inputs[currentIndex];\n  const {\n    isVisible\n  } = useSegment();\n  const trackClickButtonEvent = useTrackClickButtonEvent(currentInput == null ? void 0 : currentInput.query);\n  const handleClick = (index, name = \"\") => () => {\n    trackClickButtonEvent({\n      type: \"tag\",\n      layoutPosition: index + 1,\n      name\n    });\n  };\n  const handleValueChange = (value) => {\n    if (!output) {\n      return;\n    }\n    const index = Number(value);\n    const input = inputs[index];\n    dispatchSetQuery(output, input.query);\n  };\n  useEffect(() => {\n    window == null ? void 0 : window.dispatchEvent(new CustomEvent(\"layout-done\"));\n    if (!currentInput) {\n      return;\n    }\n    if (!output) {\n      return;\n    }\n    dispatchSetQuery(output, currentInput.query);\n  }, [output, currentInput]);\n  useSetRootModule(currentInput == null ? void 0 : currentInput.query, output);\n  const padding = getPadding(layout);\n  if (!loading && inputs.length === 0 || !isVisible) {\n    window == null ? void 0 : window.dispatchEvent(new CustomEvent(\"layout-done\"));\n    return null;\n  }\n  return /* @__PURE__ */ jsx(Tags.Root, { loading, defaultValue: 0, value: currentIndex, dragPaddingLeft: padding.left, dragPaddingRight: padding.right, onValueChange: handleValueChange, children: /* @__PURE__ */ jsx(Tags.List, { style: {\n    margin: 0,\n    paddingTop: padding.top,\n    paddingBottom: padding.bottom,\n    lineHeight: 0\n  }, list: inputs, children: ({\n    item,\n    index\n  }) => /* @__PURE__ */ jsx(EventTrigger.Target, { onClick: handleClick(index, item == null ? void 0 : item.label), children: /* @__PURE__ */ jsx(Tags.Item, { value: index, children: item == null ? void 0 : item.label }) }) }) });\n};\nconst attachAdditionalQuery = (values, output) => {\n  return values.map((value, index) => ({\n    ...value,\n    query: {\n      ...value.query,\n      facetName: value.label,\n      keys: [...value.query.keys ?? [], `tags-${index}`],\n      isRoot: value.query.rootOutput === void 0,\n      rootOutput: value.query.rootOutput || output\n    }\n  }));\n};\nexport {\n  TagsElement\n};\n","import { getProductGroupType } from \"../../systems/KeywordCollection/KeywordCollectionTags/KeywordCollectionTags.utils.js\";\nimport { reshapeProductGroups } from \"../../systems/curations/KeywordCollectionV2/TimeSaleCollection.utils.js\";\nimport { orderByDateAsc, getCurrentScheduleIndex } from \"../../../utils/date.js\";\nimport { getCalendarTagName, getCurrentBrandSaleIndex } from \"../../systems/curations/CouponCollection/CalendarTags/CalendarTags.utils.js\";\nimport { orderByGender, isGenderProductGroupMatches } from \"../utils/facet.js\";\nconst GENDER_PREFIX = \"GENDER@\";\nconst GENDER_SEPARATOR = \":\";\nconst reshapeProductGroupsByGender = (groups) => groups.map((group) => {\n  const [gender, title] = group.title.replace(GENDER_PREFIX, \"\").trim().split(GENDER_SEPARATOR);\n  return {\n    ...group,\n    title: group.title.includes(GENDER_PREFIX) ? title : group.title,\n    gender\n  };\n});\nconst getKeywordCollectionTagsResult = (query, userSegment) => {\n  const {\n    displayEndAt,\n    productGroups = []\n  } = query;\n  const type = getProductGroupType(productGroups);\n  if (type === \"DATE\") {\n    const groups = orderByDateAsc(reshapeProductGroups(productGroups, displayEndAt ?? \"\"), (x) => x.startAt);\n    const currentIndex = getCurrentScheduleIndex(groups, (x) => x.startAt, (x) => x.endAt);\n    return {\n      values: groups.map((group, index) => ({\n        label: group.title,\n        query: {\n          ...query,\n          selectedProductGroup: {\n            id: group.productGroupId,\n            index,\n            sort: group.sort,\n            startAt: group.startAt,\n            endAt: group.endAt\n          }\n        }\n      })),\n      currentIndex\n    };\n  }\n  if (type === \"GENDER\") {\n    const gender = userSegment.gender ?? \"F\";\n    const groups = orderByGender(reshapeProductGroupsByGender(productGroups), isGenderProductGroupMatches, gender);\n    return {\n      values: groups.map((group, index) => ({\n        label: group.title,\n        query: {\n          ...query,\n          selectedProductGroup: {\n            id: group.productGroupId,\n            sort: group.sort,\n            index\n          }\n        }\n      }))\n    };\n  }\n  return {\n    values: productGroups.map((group, index) => ({\n      label: group.title,\n      query: {\n        ...query,\n        selectedProductGroup: {\n          id: group.productGroupId,\n          index,\n          sort: group.sort\n        }\n      }\n    }))\n  };\n};\nconst getCouponCollectionTagsResult = (query) => {\n  const {\n    brandSales = []\n  } = query;\n  const values = brandSales.map((brandSale, index) => ({\n    label: getCalendarTagName(brandSale),\n    query: {\n      ...query,\n      brandSaleId: brandSale.brandSaleId,\n      index,\n      displayStartAt: brandSale.displayStartAt,\n      displayEndAt: brandSale.displayEndAt\n    }\n  }));\n  const currentIndex = getCurrentBrandSaleIndex(brandSales);\n  return {\n    values,\n    currentIndex\n  };\n};\nexport {\n  getCouponCollectionTagsResult,\n  getKeywordCollectionTagsResult,\n  reshapeProductGroupsByGender\n};\n","import useSWR from \"../../../node_modules/swr/core/dist/index.js\";\nimport { bestApi } from \"../../../apis/best/BestApiService.js\";\nimport { brandCurationApi } from \"../../../apis/brand-curation/BrandCurationApiService.js\";\nimport { brandSaleApi } from \"../../../apis/brand-sale/BrandSaleApiService.js\";\nimport { collectionApi } from \"../../../apis/collection/CollectionApiService.js\";\nimport { keywordCollectionApi } from \"../../../apis/keyword-collections/KeywordCollectionApiService.js\";\nimport { formatSchedule } from \"../../systems/curations/KeywordCollectionV2/TimeSaleCollectionTags/TimeSaleCollectionTags.utils.js\";\nimport { orderByDateAsc, getCurrentScheduleIndex } from \"../../../utils/date.js\";\nimport { splitToNumberArray } from \"../../../utils/splitToNumberArray.js\";\nimport { QueryType, CategoryType, RankingType } from \"../types.js\";\nimport { reshapeCategoryFacetValues } from \"../utils/facet.js\";\nimport { getKeywordCollectionTagsResult, getCouponCollectionTagsResult } from \"./TagsModule.utils.js\";\nconst TAGS_FETCHER_KEY = \"tags-module/tags\";\nconst useTagsQuery = (options) => {\n  const {\n    enabled: _enabled = true,\n    query,\n    userSegment\n  } = options;\n  const enabled = _enabled && query !== void 0;\n  const {\n    data,\n    isLoading,\n    ...rest\n  } = useSWR(enabled ? [TAGS_FETCHER_KEY, query] : null, () => queryTags(query, userSegment));\n  const {\n    values = [],\n    currentIndex\n  } = data ?? {};\n  const hasTags = values.length > 0;\n  return {\n    isLoading: isLoading || !enabled || !hasTags,\n    tags: values,\n    currentIndex,\n    ...rest\n  };\n};\nconst fetchKeywordCollectionTags = async (query, userSegment) => {\n  if (!query.keywordCollectionId) {\n    return {\n      values: []\n    };\n  }\n  const {\n    data\n  } = await keywordCollectionApi.getKeywordCollection(Number(query.keywordCollectionId));\n  const {\n    title,\n    description,\n    displayEndAt,\n    productGroups\n  } = data;\n  return getKeywordCollectionTagsResult({\n    ...query,\n    title,\n    description: description ?? void 0,\n    displayEndAt: displayEndAt ?? void 0,\n    couponId: data.couponId ?? void 0,\n    productGroups\n  }, userSegment);\n};\nconst fetchKeywordCollectionsTags = async (query) => {\n  if (!query.keywordCollectionIds) {\n    return {\n      values: []\n    };\n  }\n  const {\n    data\n  } = await collectionApi.getCollections(splitToNumberArray(query.keywordCollectionIds));\n  const collections = orderByDateAsc(data, (x) => x.displayStartAt);\n  const currentIndex = getCurrentScheduleIndex(collections, (current) => current.displayStartAt, (_, next) => next == null ? void 0 : next.displayStartAt);\n  return {\n    values: collections.map((collection) => {\n      const {\n        collectionId,\n        title,\n        description,\n        displayStartAt,\n        displayEndAt,\n        productGroupList,\n        couponId\n      } = collection;\n      const [firstProductGroup] = productGroupList;\n      return {\n        label: formatSchedule(displayStartAt),\n        query: {\n          // NOTE(임규민): 다중 키워드 컬렉션의 개별 요소는 결국 키워드 컬렉션이므로, 연결되는 모듈에서 KeywordCollectionQuery 로 식별되도록 한다.\n          type: QueryType.KeywordCollection,\n          keywordCollectionId: `${collectionId}`,\n          title,\n          description: description ?? void 0,\n          displayEndAt: displayEndAt ?? void 0,\n          couponId: couponId ?? void 0,\n          productGroups: productGroupList.map((group) => ({\n            productGroupId: group.collectionProductGroupId,\n            title: group.title,\n            sort: group.sort\n          })),\n          selectedProductGroup: {\n            id: firstProductGroup.collectionProductGroupId,\n            sort: firstProductGroup.sort,\n            index: 0\n          }\n        }\n      };\n    }),\n    currentIndex\n  };\n};\nconst fetchBrandCurationTags = async (query) => {\n  if (!query.brandGroupIds) {\n    return {\n      values: []\n    };\n  }\n  const brandGroupIds = splitToNumberArray(query.brandGroupIds).join(\",\");\n  const {\n    data\n  } = await brandCurationApi.getFavoriteBrands({\n    size: query.brandSize,\n    brandGroupIds\n  });\n  const values = data.frontBrands.map((brand) => ({\n    label: brand.nameKor,\n    query: {\n      ...query,\n      brandId: brand.frontBrandId\n    }\n  }));\n  return {\n    values\n  };\n};\nconst fetchRankingTags = async (query, userSegment) => {\n  if (!query.rankingTagIds) {\n    return {\n      values: []\n    };\n  }\n  const tagIds = splitToNumberArray(query.rankingTagIds);\n  const {\n    data\n  } = await bestApi.getPLPFacetGroup({\n    facetGroupInput: {\n      tagFacetInputs: tagIds.map((tagId) => ({\n        tagId\n      }))\n    }\n  });\n  const gender = userSegment.gender ?? \"F\";\n  const categories = reshapeCategoryFacetValues(data.categoryFacet.values, {\n    categoryType: query.categoryType,\n    gender,\n    excludeCategories: {\n      largeIds: splitToNumberArray(query.excludeLargeCategoryIds),\n      middleIds: splitToNumberArray(query.excludeMiddleCategoryIds)\n    }\n  });\n  const inputs = categories.map((category) => {\n    const categoryProperties = {\n      [CategoryType.Large]: {\n        largeCategoryId: category.id\n      },\n      [CategoryType.Middle]: {\n        largeCategoryId: category.parentId,\n        middleCategoryId: category.id\n      }\n    };\n    return {\n      label: category.name,\n      query: {\n        ...query,\n        ...categoryProperties[query.categoryType],\n        childCategories: category.children ?? []\n      }\n    };\n  });\n  const allCategory = {\n    label: \"전체\",\n    query\n  };\n  const isTrending = query.rankingType === RankingType.Trending;\n  return {\n    values: isTrending ? [allCategory, ...inputs] : inputs\n  };\n};\nconst fetchCouponCollectionTags = async (query) => {\n  if (!query.brandSaleGroupId) {\n    return {\n      values: []\n    };\n  }\n  const {\n    data\n  } = await brandSaleApi.getBrandSaleGroup(Number(query.brandSaleGroupId));\n  const {\n    title,\n    description,\n    brandSaleList\n  } = data;\n  return getCouponCollectionTagsResult({\n    ...query,\n    title,\n    description: description ?? void 0,\n    brandSales: brandSaleList\n  });\n};\nconst queryTags = (query, userSegment) => {\n  if (!query) {\n    return {\n      values: []\n    };\n  }\n  switch (query.type) {\n    case QueryType.KeywordCollection:\n      return fetchKeywordCollectionTags(query, userSegment);\n    case QueryType.KeywordCollections:\n      return fetchKeywordCollectionsTags(query);\n    case QueryType.BrandCuration:\n      return fetchBrandCurationTags(query);\n    case QueryType.Ranking:\n      return fetchRankingTags(query, userSegment);\n    case QueryType.CouponCollection:\n      return fetchCouponCollectionTags(query);\n    default:\n      return {\n        values: []\n      };\n  }\n};\nexport {\n  useTagsQuery\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { useSegment } from \"../../../@shared/providers/SegmentProvider/SegmentProvider.js\";\nimport \"../../../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 \"../../../../apis/user-segment/CategoryFirstOrderApiService.js\";\nimport \"../../../../apis/framer/FramerApiService.js\";\nimport \"../../../../config/index.js\";\nimport \"../../../../node_modules/js-cookie/dist/js.cookie.js\";\nimport \"../../../../apis/highlight-products/HighlightProductsApiService.js\";\nimport \"../../../../apis/brand-mix/BrandMixApiService.js\";\nimport \"../../../../apis/one-brand-days/OneBrandDaysApiService.js\";\nimport \"../../../../apis/taste-sharing/TasteSharingApiService.js\";\nimport \"../../../../apis/user/UserApiService.js\";\nimport \"../../../../apis/preuser/PreuserApiService.js\";\nimport \"../../../../node_modules/vite-plugin-node-polyfills/shims/buffer/dist/index.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 \"framer-motion\";\nimport \"../../../../containers/DialogContainer/DialogContainer.emitter.js\";\nimport \"../../../../hooks/useFeatureFlag.js\";\nimport \"../../../../utils/redirectLogin.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { TagsElement } from \"../TagsElement/TagsElement.js\";\nimport { useTagsQuery } from \"../TagsModule.hooks.js\";\nconst AutoTagsModule = ({\n  query,\n  output,\n  layout\n}) => {\n  const {\n    isInView\n  } = useIntersectionContext();\n  const {\n    isVisible\n  } = useSegment();\n  const user = useCurrentUser();\n  const {\n    isLoading,\n    tags,\n    currentIndex\n  } = useTagsQuery({\n    query,\n    userSegment: user,\n    enabled: isInView && isVisible\n  });\n  return /* @__PURE__ */ jsx(TagsElement, { loading: isLoading, currentIndex, inputs: tags, output, layout });\n};\nexport {\n  AutoTagsModule\n};\n","import { combineObjectPropertyControls } from \"../../../libs/property-controls/helpers.js\";\nimport { QUERY_CONTROL, COUPON_COLLECTION_CONTROLS, RANKING_CONTROLS, BRAND_CURATION_CONTROLS, KEYWORD_COLLECTIONS_CONTROLS, KEYWORD_COLLECTION_CONTROLS, RECOMMENDATION_CONTROLS, PRODUCT_CONTROLS } from \"../controls.js\";\nconst AUTO_TAGS_MODULE_QUERY = {\n  ...QUERY_CONTROL,\n  controls: combineObjectPropertyControls(KEYWORD_COLLECTION_CONTROLS, KEYWORD_COLLECTIONS_CONTROLS, BRAND_CURATION_CONTROLS, RANKING_CONTROLS, COUPON_COLLECTION_CONTROLS)\n};\nconst MANUAL_TAGS_MODULE_QUERY = {\n  ...QUERY_CONTROL,\n  controls: combineObjectPropertyControls(PRODUCT_CONTROLS, RECOMMENDATION_CONTROLS)\n};\nexport {\n  AUTO_TAGS_MODULE_QUERY,\n  MANUAL_TAGS_MODULE_QUERY\n};\n","import { QueryType } from \"../../types.js\";\nimport { getKeywordCollectionTagsResult, getCouponCollectionTagsResult } from \"../TagsModule.utils.js\";\nconst getKeywordCollectionTags = (query, userSegment) => {\n  if (query.productGroups === void 0) {\n    return {\n      values: []\n    };\n  }\n  return getKeywordCollectionTagsResult(query, userSegment);\n};\nconst getCouponCollectionTags = (query) => {\n  if (query.brandSales === void 0) {\n    return {\n      values: []\n    };\n  }\n  return getCouponCollectionTagsResult(query);\n};\nconst getRankingTags = (query) => {\n  if (query.childCategories === void 0) {\n    return {\n      values: []\n    };\n  }\n  const {\n    childCategories\n  } = query;\n  const inputs = childCategories.map((category) => ({\n    label: category.name,\n    query: {\n      ...query,\n      middleCategoryId: category.id\n    }\n  }));\n  const allCategory = {\n    label: \"전체\",\n    query\n  };\n  return {\n    values: [allCategory, ...inputs]\n  };\n};\nconst getTags = (query, userSegment) => {\n  if (!query) {\n    return {\n      values: []\n    };\n  }\n  switch (query.type) {\n    case QueryType.KeywordCollection:\n      return getKeywordCollectionTags(query, userSegment);\n    case QueryType.CouponCollection:\n      return getCouponCollectionTags(query);\n    case QueryType.Ranking:\n      return getRankingTags(query);\n    default:\n      return {\n        values: []\n      };\n  }\n};\nexport {\n  getTags\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { useQueryStore } from \"../../query-store/query.store.js\";\nimport { TagsElement } from \"../TagsElement/TagsElement.js\";\nimport { useMemo, useEffect } from \"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 \"../../../../apis/user-segment/CategoryFirstOrderApiService.js\";\nimport \"../../../../apis/framer/FramerApiService.js\";\nimport \"../../../../config/index.js\";\nimport \"../../../../node_modules/js-cookie/dist/js.cookie.js\";\nimport \"../../../../apis/highlight-products/HighlightProductsApiService.js\";\nimport \"../../../../apis/brand-mix/BrandMixApiService.js\";\nimport \"../../../../apis/one-brand-days/OneBrandDaysApiService.js\";\nimport \"../../../../apis/taste-sharing/TasteSharingApiService.js\";\nimport \"../../../../apis/user/UserApiService.js\";\nimport \"../../../../apis/preuser/PreuserApiService.js\";\nimport \"../../../../node_modules/vite-plugin-node-polyfills/shims/buffer/dist/index.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 \"framer-motion\";\nimport \"../../../../containers/DialogContainer/DialogContainer.emitter.js\";\nimport { shallow as shallow$1 } from \"../../../../node_modules/zustand/esm/shallow.js\";\nimport \"../../../../hooks/useFeatureFlag.js\";\nimport \"../../../../utils/redirectLogin.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { getTags } from \"./LinkedTagsModule.utils.js\";\nimport { createKey } from \"../../utils/key.js\";\nimport { useReportOutputFailure } from \"../../query-store/OutputFailure.js\";\nconst LinkedTagsModule = ({\n  value,\n  output,\n  layout\n}) => {\n  const user = useCurrentUser();\n  const [query, dispatchSetQuery, upstreamRetry] = useQueryStore((state) => [state.queries[value], state.dispatchSetQuery, state.failures[value]], shallow$1);\n  useReportOutputFailure(output, query ? void 0 : upstreamRetry);\n  const {\n    values,\n    currentIndex\n  } = useMemo(() => getTags(query, user), [query, user]);\n  useEffect(() => {\n    if (values.length > 0 || !query) {\n      return;\n    }\n    dispatchSetQuery(output, query);\n  }, [query, values.length]);\n  return /* @__PURE__ */ jsx(TagsElement, { inputs: values, output, currentIndex, layout }, createKey(query));\n};\nexport {\n  LinkedTagsModule\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { addPropertyControls, ControlType } from \"framer\";\nimport { TagsModuleInputType } from \"./TagsModule.types.js\";\nimport { AutoTagsModule } from \"./AutoTagsModule/AutoTagsModule.js\";\nimport { SectionLayout } from \"../../systems/curations/SectionLayout/SectionLayout.js\";\nimport { SWRErrorBoundary } from \"../../@shared/SWRErrorBoundary/SWRErrorBoundary.js\";\nimport { OutputFailure } from \"../query-store/OutputFailure.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 { TagsElement } from \"./TagsElement/TagsElement.js\";\nimport { MANUAL_TAGS_MODULE_QUERY, AUTO_TAGS_MODULE_QUERY } from \"./TagsModule.controls.js\";\nimport { LinkedTagsModule } from \"./LinkedTagsModule/LinkedTagsModule.js\";\nimport { SEGMENT_CONTROLS } from \"../../../libs/property-controls/segment.js\";\nconst TagsModuleInner = ({\n  input,\n  output,\n  layout\n}) => {\n  switch (input.type) {\n    case TagsModuleInputType.Linked:\n      return /* @__PURE__ */ jsx(LinkedTagsModule, { value: input.value, output, layout });\n    case TagsModuleInputType.Auto:\n      return /* @__PURE__ */ jsx(AutoTagsModule, { query: input.query, output, layout });\n    case TagsModuleInputType.Manual:\n      return /* @__PURE__ */ jsx(TagsElement, { inputs: input.values, output, layout });\n    default:\n      return null;\n  }\n};\nconst TagsModule = ({\n  theme,\n  breakpoint,\n  componentId,\n  segment,\n  ...rest\n}) => {\n  return /* @__PURE__ */ jsx(SectionLayout, { theme, breakpoint, componentId, segment, children: /* @__PURE__ */ jsx(SWRErrorBoundary, { fallback: (retry) => /* @__PURE__ */ jsx(OutputFailure, { output: rest.output, onRetry: retry }), children: /* @__PURE__ */ jsx(TagsModuleInner, { ...rest }) }) });\n};\naddPropertyControls(TagsModule, {\n  ...BREAKPOINT_CONTROLS,\n  ...THEME_CONTROLS,\n  ...SEGMENT_CONTROLS,\n  componentId: {\n    hidden: ({\n      input\n    }) => (input == null ? void 0 : input.type) === TagsModuleInputType.Linked,\n    ...COMPONENT_ID_PROPS.componentId\n  },\n  input: {\n    type: ControlType.Object,\n    title: \"입력 값\",\n    controls: {\n      type: {\n        type: ControlType.Enum,\n        title: \"유형\",\n        options: [TagsModuleInputType.Linked, TagsModuleInputType.Auto, TagsModuleInputType.Manual],\n        optionTitles: [\"연결\", \"자동\", \"수동\"]\n      },\n      value: {\n        hidden: ({\n          type\n        }) => type !== TagsModuleInputType.Linked,\n        type: ControlType.String,\n        title: \"출력 값\",\n        defaultValue: \"\"\n      },\n      values: {\n        hidden: ({\n          type\n        }) => type !== TagsModuleInputType.Manual,\n        type: ControlType.Array,\n        title: \"입력 값 목록\",\n        control: {\n          type: ControlType.Object,\n          title: \"입력 값\",\n          controls: {\n            label: {\n              type: ControlType.String,\n              title: \"이름\",\n              defaultValue: \"텍스트\"\n            },\n            query: MANUAL_TAGS_MODULE_QUERY\n          }\n        },\n        defaultValue: [{\n          label: \"텍스트\"\n        }]\n      },\n      query: {\n        hidden: ({\n          type\n        }) => type !== TagsModuleInputType.Auto,\n        ...AUTO_TAGS_MODULE_QUERY\n      }\n    }\n  },\n  output: {\n    type: ControlType.String,\n    title: \"출력 값\"\n  },\n  layout: {\n    type: ControlType.Object,\n    title: \"레이아웃\",\n    controls: {\n      padding: {\n        type: ControlType.FusedNumber,\n        title: \"패딩\",\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  TagsModule\n};\n","import{TagsModule}from\"https://asset.29cm.co.kr/contents/framer/components/modules/TagsModule/TagsModule.js\";TagsModule.displayName=\"[조립형]Tags\";export default TagsModule;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TagsModule\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TagsModule.map"],"mappings":"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"}