{"version":3,"file":"HeadlineModule.CenLMjfp.mjs","names":["useMemo","useMemo"],"sources":["https:/asset.29cm.co.kr/contents/framer/components/modules/HeadlineModule/HeadlineModule.types.js","https:/asset.29cm.co.kr/contents/framer/components/modules/HeadlineModule/HeadlineMediaElement/HeadlineMediaElement.js","https:/asset.29cm.co.kr/contents/framer/components/modules/HeadlineModule/HeadlineActionElement/HeadlineLinkActionElement.utils.js","https:/asset.29cm.co.kr/contents/framer/components/modules/HeadlineModule/HeadlineActionElement/HeadlineLinkActionElement.js","https:/asset.29cm.co.kr/contents/framer/components/modules/HeadlineModule/HeadlineActionElement/HeadlineCountdownActionElement.js","https:/asset.29cm.co.kr/contents/framer/components/modules/HeadlineModule/HeadlineActionElement/HeadlineActionElement.js","https:/asset.29cm.co.kr/contents/framer/components/modules/HeadlineModule/HeadlineElement/HeadlineElement.js","https:/asset.29cm.co.kr/contents/framer/components/modules/HeadlineModule/HeadlineModule.utils.js","https:/asset.29cm.co.kr/contents/framer/components/modules/HeadlineModule/LinkedHeadlineModule/LinkedHeadlineModule.utils.js","https:/asset.29cm.co.kr/contents/framer/components/modules/HeadlineModule/LinkedHeadlineModule/LinkedHeadlineModule.js","https:/asset.29cm.co.kr/contents/framer/components/modules/ProfilesModule/ProfilesModule.types.js","https:/asset.29cm.co.kr/contents/framer/components/modules/HeadlineModule/HeadlineModule.controls.js","https:/asset.29cm.co.kr/contents/framer/components/modules/HeadlineModule/HeadlineModule.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/modules/HeadlineModule/AutoHeadlineModule/AutoHeadlineModule.js","https:/asset.29cm.co.kr/contents/framer/components/modules/HeadlineModule/HeadlineModule.js"],"sourcesContent":["var HeadlineActionType = /* @__PURE__ */ ((HeadlineActionType2) => {\n  HeadlineActionType2[HeadlineActionType2[\"External\"] = 0] = \"External\";\n  HeadlineActionType2[HeadlineActionType2[\"Link\"] = 1] = \"Link\";\n  HeadlineActionType2[HeadlineActionType2[\"Countdown\"] = 2] = \"Countdown\";\n  return HeadlineActionType2;\n})(HeadlineActionType || {});\nvar HeadlinePresetType = /* @__PURE__ */ ((HeadlinePresetType2) => {\n  HeadlinePresetType2[HeadlinePresetType2[\"Default\"] = 0] = \"Default\";\n  HeadlinePresetType2[HeadlinePresetType2[\"Schedule\"] = 1] = \"Schedule\";\n  HeadlinePresetType2[HeadlinePresetType2[\"Link\"] = 2] = \"Link\";\n  return HeadlinePresetType2;\n})(HeadlinePresetType || {});\nvar HeadlineModuleInputType = /* @__PURE__ */ ((HeadlineModuleInputType2) => {\n  HeadlineModuleInputType2[HeadlineModuleInputType2[\"Linked\"] = 0] = \"Linked\";\n  HeadlineModuleInputType2[HeadlineModuleInputType2[\"Manual\"] = 1] = \"Manual\";\n  HeadlineModuleInputType2[HeadlineModuleInputType2[\"Auto\"] = 2] = \"Auto\";\n  return HeadlineModuleInputType2;\n})(HeadlineModuleInputType || {});\nexport {\n  HeadlineActionType,\n  HeadlineModuleInputType,\n  HeadlinePresetType\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { Headline } from \"../../../systems/curations/Headline/index.js\";\nconst HeadlineMediaElement = ({\n  mediaType,\n  imageSrc,\n  videoSrc,\n  videoSrcWebm,\n  poster,\n  lazy\n}) => {\n  switch (mediaType) {\n    case \"image\":\n      return /* @__PURE__ */ jsx(Headline.Image, { source: imageSrc, lazy });\n    case \"video\":\n      return /* @__PURE__ */ jsx(Headline.Video, { source: videoSrc, sourceWebm: videoSrcWebm, poster, lazy });\n    default:\n      return null;\n  }\n};\nexport {\n  HeadlineMediaElement\n};\n","import { QueryType } from \"../../types.js\";\nimport { env } from \"../../../../config/index.js\";\nimport { querify } from \"../../../../utils/querify.js\";\nconst getCouponCollectionHref = (query, componentId) => {\n  return `${env.workspace.content}/coupon-collection/${query.couponCollectionId}?${querify({\n    source: componentId ?? \"CouponCollection\"\n  })}`;\n};\nconst getKeywordCollectionHref = (query, componentId) => {\n  var _a;\n  return `${env.workspace.content}/collection/${query.keywordCollectionId}?${querify({\n    source: componentId,\n    product_group: (_a = query.selectedProductGroup) == null ? void 0 : _a.id\n  })}`;\n};\nconst getHref = (query, componentId) => {\n  switch (query.type) {\n    case QueryType.CouponCollection:\n      return getCouponCollectionHref(query, componentId);\n    case QueryType.KeywordCollection:\n      return getKeywordCollectionHref(query, componentId);\n    default:\n      return \"\";\n  }\n};\nexport {\n  getCouponCollectionHref,\n  getHref,\n  getKeywordCollectionHref\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { TextButton as Default } from \"../../../@shared/TextButton/TextButton.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 \"../../../../apis/user-segment/CategoryFirstOrderApiService.js\";\nimport \"../../../../config/index.js\";\nimport \"../../../../apis/taste-sharing/TasteSharingApiService.js\";\nimport \"../../../../node_modules/vite-plugin-node-polyfills/shims/buffer/dist/index.js\";\nimport \"../../../../node_modules/js-cookie/dist/js.cookie.js\";\nimport \"../../../../apis/preuser/PreuserApiService.js\";\nimport \"framer\";\nimport \"../../../../node_modules/@29cm/snowplow/dist/esm/core/snowplow.js\";\nimport \"../../../../node_modules/swr/mutation/dist/index.js\";\nimport \"../../../../hooks/stores/content/content.store.js\";\nimport \"../../../../hooks/stores/dialog/dialog.store.js\";\nimport \"../../../../hooks/stores/global-layout/global-layout.store.js\";\nimport \"../../../../hooks/stores/toast/toast.store.js\";\nimport { useTheme } from \"../../../../hooks/useTheme.js\";\nimport \"../../../@shared/providers/BreakpointProvider/BreakpointProvider.js\";\nimport \"../../../../hooks/stores/bottom-sheet/bottom-sheet.store.js\";\nimport \"react-dom\";\nimport \"../../../systems/Dialog/Dialog.module.css.js\";\nimport \"framer-motion\";\nimport \"../../../../containers/DialogContainer/DialogContainer.emitter.js\";\nimport \"../../../../utils/redirectLogin.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { useNavigatePage } from \"../../../../hooks/useNavigatePage.js\";\nimport { getHref } from \"./HeadlineLinkActionElement.utils.js\";\nimport { useRootComponentId, useTrackClickButtonEvent } from \"../../hooks.js\";\nconst HeadlineLinkActionElement = ({\n  action,\n  query\n}) => {\n  const theme = useTheme();\n  const componentId = useRootComponentId(query);\n  const trackClickButtonEvent = useTrackClickButtonEvent(query);\n  const navigate = useNavigatePage(getHref(action.query, componentId));\n  const handleClick = () => {\n    trackClickButtonEvent({\n      type: \"more\",\n      name: action.label\n    });\n    navigate();\n  };\n  return /* @__PURE__ */ jsx(Default, { onClick: handleClick, style: {\n    opacity: 0.6\n  }, theme, variant: \"primary\", size: \"xSmall\", postfixIcon: \"chevronRight\", children: action.label });\n};\nexport {\n  HeadlineLinkActionElement\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { Countdown } from \"../../../systems/Countdown/Countdown.js\";\nimport { formatDate as format } from \"../../../../node_modules/date-fns/format.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 \"../../../../apis/user-segment/CategoryFirstOrderApiService.js\";\nimport \"../../../../config/index.js\";\nimport \"../../../../apis/taste-sharing/TasteSharingApiService.js\";\nimport \"../../../../node_modules/vite-plugin-node-polyfills/shims/buffer/dist/index.js\";\nimport \"../../../../node_modules/js-cookie/dist/js.cookie.js\";\nimport \"../../../../apis/preuser/PreuserApiService.js\";\nimport \"framer\";\nimport \"../../../../node_modules/@29cm/snowplow/dist/esm/core/snowplow.js\";\nimport \"../../../../node_modules/swr/mutation/dist/index.js\";\nimport \"../../../../hooks/stores/content/content.store.js\";\nimport \"../../../../hooks/stores/dialog/dialog.store.js\";\nimport \"../../../../hooks/stores/global-layout/global-layout.store.js\";\nimport \"../../../../hooks/stores/toast/toast.store.js\";\nimport { useTheme } from \"../../../../hooks/useTheme.js\";\nimport \"../../../@shared/providers/BreakpointProvider/BreakpointProvider.js\";\nimport \"../../../../hooks/stores/bottom-sheet/bottom-sheet.store.js\";\nimport \"react-dom\";\nimport \"../../../systems/Dialog/Dialog.module.css.js\";\nimport \"framer-motion\";\nimport \"../../../../containers/DialogContainer/DialogContainer.emitter.js\";\nimport \"../../../../utils/redirectLogin.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { typography } from \"../../../../styles/typography.js\";\nconst HeadlineCountdownActionElement = ({\n  action\n}) => {\n  const {\n    endAt\n  } = action;\n  const theme = useTheme();\n  return /* @__PURE__ */ jsx(Countdown, { targetDateString: format(endAt, \"yyyy-MM-dd\"), targetTimeString: format(endAt, \"HH:mm:ss\"), dateDisplayFormat: \"D일\", timeDisplayFormat: \"H시간 m분 s초\", fontSize: 15, color: countdownColorByTheme[theme], style: {\n    ...typography(15, 500)\n  } });\n};\nconst countdownColorByTheme = {\n  light: \"#FF4800\",\n  dark: \"#D53E00\"\n};\nexport {\n  HeadlineCountdownActionElement\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { HeadlineActionType } from \"../HeadlineModule.types.js\";\nimport { HeadlineLinkActionElement } from \"./HeadlineLinkActionElement.js\";\nimport { HeadlineCountdownActionElement } from \"./HeadlineCountdownActionElement.js\";\nconst HeadlineActionElement = ({\n  actionElement,\n  action,\n  query\n}) => {\n  switch (action.type) {\n    case HeadlineActionType.External:\n      return actionElement;\n    case HeadlineActionType.Link:\n      return /* @__PURE__ */ jsx(HeadlineLinkActionElement, { action, query });\n    case HeadlineActionType.Countdown:\n      return /* @__PURE__ */ jsx(HeadlineCountdownActionElement, { action });\n  }\n};\nexport {\n  HeadlineActionElement\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport { useMemo, useEffect } from \"react\";\nimport { HeadlineMediaElement } from \"../HeadlineMediaElement/HeadlineMediaElement.js\";\nimport { Headline } from \"../../../systems/curations/Headline/index.js\";\nimport { HeadlineActionElement } from \"../HeadlineActionElement/HeadlineActionElement.js\";\nimport { useQueryStore } from \"../../query-store/query.store.js\";\nimport { getPadding } from \"../../../../utils/spacing.js\";\nimport { useSetRootModule } from \"../../hooks.js\";\nimport { useSegment } from \"../../../@shared/providers/SegmentProvider/SegmentProvider.js\";\nconst HeadlineElement = ({\n  loading,\n  input: _input,\n  output,\n  layout,\n  actionElement\n}) => {\n  const dispatchSetQuery = useQueryStore((state) => state.dispatchSetQuery);\n  const input = useMemo(() => attachAdditionalQuery(_input, output), [_input, output]);\n  const {\n    isVisible\n  } = useSegment();\n  const {\n    title,\n    description,\n    action\n  } = input;\n  const {\n    priority,\n    mediaType,\n    ...rest\n  } = layout;\n  const hasMediaType = mediaType !== \"none\";\n  const isPrimary = priority === \"primary\";\n  const canRenderMedia = isPrimary && hasMediaType;\n  useEffect(() => {\n    window == null ? void 0 : window.dispatchEvent(new CustomEvent(\"layout-done\"));\n    if (!input.query) {\n      return;\n    }\n    if (!output) {\n      return;\n    }\n    dispatchSetQuery(output, input.query);\n  }, [output, input]);\n  useSetRootModule(input.query, output);\n  const padding = getPadding(layout);\n  if (!isVisible) {\n    window == null ? void 0 : window.dispatchEvent(new CustomEvent(\"layout-done\"));\n    return null;\n  }\n  return /* @__PURE__ */ jsxs(Headline.Root, { style: {\n    paddingTop: padding.top\n  }, loading, priority, children: [\n    canRenderMedia ? /* @__PURE__ */ jsx(HeadlineMediaElement, { mediaType, ...rest }) : null,\n    /* @__PURE__ */ jsxs(\n      Headline.Content,\n      {\n        style: {\n          paddingRight: padding.right,\n          paddingBottom: padding.bottom,\n          paddingLeft: padding.left\n        },\n        contentStyle: priority === \"secondary\" ? {\n          minHeight: \"unset\"\n        } : {},\n        emptyTitle: title === \"\",\n        children: [\n          /* @__PURE__ */ jsxs(Headline.Body, { children: [\n            /* @__PURE__ */ jsx(Headline.Title, { children: title }),\n            isPrimary ? /* @__PURE__ */ jsx(Headline.Action, { children: action ? /* @__PURE__ */ jsx(HeadlineActionElement, { actionElement, action, query: input.query }) : null }) : /* @__PURE__ */ jsx(Headline.Description, { children: description })\n          ] }),\n          isPrimary ? /* @__PURE__ */ jsx(Headline.Description, { children: description }) : /* @__PURE__ */ jsx(Headline.Action, { children: action ? /* @__PURE__ */ jsx(HeadlineActionElement, { actionElement, action, query: input.query }) : null }),\n          canRenderMedia ? /* @__PURE__ */ jsx(Headline.Gradient, {}) : null\n        ]\n      }\n    )\n  ] });\n};\nconst attachAdditionalQuery = (value, output) => {\n  return {\n    ...value,\n    query: value.query ? {\n      ...value.query,\n      isRoot: value.query.rootOutput === void 0,\n      rootOutput: value.query.rootOutput || output\n    } : void 0\n  };\n};\nexport {\n  HeadlineElement\n};\n","import { HeadlineActionType, HeadlinePresetType } from \"./HeadlineModule.types.js\";\nimport { getScheduleStatus } from \"../../../utils/date.js\";\nimport { parseISO } from \"../../../node_modules/date-fns/parseISO.js\";\nimport { formatDate as format } from \"../../../node_modules/date-fns/format.js\";\nimport { ko } from \"../../../node_modules/date-fns/locale/ko.js\";\nconst getScheduleHeadline = (query, startAt, endAt) => {\n  const start = parseISO(startAt.toString());\n  const end = parseISO(endAt.toString());\n  const status = getScheduleStatus(start, end);\n  return {\n    title: getScheduleHeadlineTitle(status, start),\n    action: getScheduleHeadlineAction(status, start, end),\n    query\n  };\n};\nconst getScheduleHeadlineAction = (status, startAt, endAt) => {\n  switch (status) {\n    case \"ongoing\":\n      return {\n        type: HeadlineActionType.Countdown,\n        startAt,\n        endAt\n      };\n    case \"upcoming\":\n      return {\n        type: HeadlineActionType.External\n      };\n    default:\n      return;\n  }\n};\nconst getScheduleHeadlineTitle = (status, startAt) => {\n  switch (status) {\n    case \"ongoing\":\n      return \"종료까지 남은 시간\";\n    case \"upcoming\":\n      return format(startAt, startAt.getMinutes() > 0 ? \"a h시 m분 오픈\" : \"a h시 오픈\", {\n        locale: ko\n      });\n    case \"end\":\n      return \"종료된 이벤트\";\n    default:\n      return \"\";\n  }\n};\nconst getHeadlinePreset = (layout) => {\n  switch (layout.priority) {\n    case \"primary\":\n      return HeadlinePresetType.Default;\n    default:\n      return layout.preset;\n  }\n};\nexport {\n  getHeadlinePreset,\n  getScheduleHeadline\n};\n","import { QueryType } from \"../../types.js\";\nimport { HeadlinePresetType, HeadlineActionType } from \"../HeadlineModule.types.js\";\nimport { getScheduleHeadline } from \"../HeadlineModule.utils.js\";\nconst getCouponCollectionHeadline = (query, preset) => {\n  const {\n    displayStartAt,\n    displayEndAt,\n    frontBrand,\n    title,\n    description\n  } = query;\n  const hasFrontBrand = frontBrand !== void 0;\n  if (preset === HeadlinePresetType.Link && hasFrontBrand) {\n    return {\n      // TODO(임규민): title format 을 외부에서 입력받을 수 있도록 처리\n      title: `${frontBrand.nameKor} 인기 아이템`,\n      action: {\n        type: HeadlineActionType.Link,\n        // TODO(임규민): label 을 외부에서 입력받을 수 있도록 처리\n        label: \"전체보기\",\n        query\n      },\n      query\n    };\n  }\n  const hasSchedule = displayStartAt && displayEndAt;\n  if (preset === HeadlinePresetType.Schedule && hasSchedule) {\n    return getScheduleHeadline(query, displayStartAt, displayEndAt);\n  }\n  return {\n    title: title ?? \"\",\n    description,\n    action: {\n      type: HeadlineActionType.External\n    },\n    query\n  };\n};\nconst getKeywordCollectionHeadline = (query, preset) => {\n  const {\n    selectedProductGroup,\n    title,\n    description\n  } = query;\n  const {\n    startAt,\n    endAt\n  } = selectedProductGroup ?? {};\n  if (preset === HeadlinePresetType.Link) {\n    return {\n      title: title ?? \"\",\n      action: {\n        type: HeadlineActionType.Link,\n        // TODO(임규민): label 을 외부에서 입력받을 수 있도록 처리\n        label: \"전체보기\",\n        query\n      },\n      query\n    };\n  }\n  const hasSchedule = startAt && endAt;\n  if (preset === HeadlinePresetType.Schedule && hasSchedule) {\n    return getScheduleHeadline(query, startAt, endAt);\n  }\n  return {\n    title: title ?? \"\",\n    description,\n    action: {\n      type: HeadlineActionType.External\n    },\n    query\n  };\n};\nconst getHeadline = (query, preset) => {\n  if (!query) {\n    return {\n      title: \"\",\n      description: \"\"\n    };\n  }\n  switch (query.type) {\n    case QueryType.CouponCollection:\n      return getCouponCollectionHeadline(query, preset);\n    case QueryType.KeywordCollection:\n      return getKeywordCollectionHeadline(query, preset);\n    default:\n      return {\n        title: \"\",\n        description: \"\"\n      };\n  }\n};\nexport {\n  getHeadline\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { useMemo } from \"react\";\nimport { useQueryStore } from \"../../query-store/query.store.js\";\nimport { HeadlineElement } from \"../HeadlineElement/HeadlineElement.js\";\nimport { getHeadline } from \"./LinkedHeadlineModule.utils.js\";\nimport { getHeadlinePreset } from \"../HeadlineModule.utils.js\";\nimport { createKey } from \"../../utils/key.js\";\nconst LinkedHeadlineModule = ({\n  value,\n  input,\n  output,\n  layout,\n  actionElement\n}) => {\n  const query = useQueryStore((state) => state.queries[value]);\n  const headline = useMemo(() => getHeadline(query, getHeadlinePreset(layout)), [query, layout]);\n  return /* @__PURE__ */ jsx(HeadlineElement, { input: {\n    ...headline,\n    title: input.title || headline.title,\n    description: input.description || headline.description\n  }, output, layout, actionElement }, createKey(query));\n};\nexport {\n  LinkedHeadlineModule\n};\n","var ProfilesModuleInputType = /* @__PURE__ */ ((ProfilesModuleInputType2) => {\n  ProfilesModuleInputType2[ProfilesModuleInputType2[\"Linked\"] = 0] = \"Linked\";\n  ProfilesModuleInputType2[ProfilesModuleInputType2[\"Manual\"] = 1] = \"Manual\";\n  ProfilesModuleInputType2[ProfilesModuleInputType2[\"Auto\"] = 2] = \"Auto\";\n  return ProfilesModuleInputType2;\n})(ProfilesModuleInputType || {});\nexport {\n  ProfilesModuleInputType\n};\n","import { combineObjectPropertyControls } from \"../../../libs/property-controls/helpers.js\";\nimport { QUERY_CONTROL, COUPON_COLLECTION_CONTROLS, KEYWORD_COLLECTIONS_CONTROLS, KEYWORD_COLLECTION_CONTROLS } from \"../controls.js\";\nconst AUTO_HEADLINE_MODULE_QUERY = {\n  ...QUERY_CONTROL,\n  controls: combineObjectPropertyControls(KEYWORD_COLLECTION_CONTROLS, KEYWORD_COLLECTIONS_CONTROLS, COUPON_COLLECTION_CONTROLS)\n};\nexport {\n  AUTO_HEADLINE_MODULE_QUERY\n};\n","import useSWR from \"../../../node_modules/swr/core/dist/index.js\";\nimport { QueryType } from \"../types.js\";\nimport { HeadlinePresetType, HeadlineActionType } from \"./HeadlineModule.types.js\";\nimport { brandSaleApi } from \"../../../apis/brand-sale/BrandSaleApiService.js\";\nimport { keywordCollectionApi } from \"../../../apis/keyword-collections/KeywordCollectionApiService.js\";\nimport { 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 { getScheduleHeadline } from \"./HeadlineModule.utils.js\";\nimport { splitToNumberArray } from \"../../../utils/splitToNumberArray.js\";\nimport { collectionApi } from \"../../../apis/collection/CollectionApiService.js\";\nconst HEADLINE_FETCHER_KEY = \"headline-module/headline\";\nconst INITIAL_PRODUCT_GROUP_INDEX = 0;\nconst useHeadlineQuery = (options) => {\n  const {\n    enabled: _enabled = true,\n    query,\n    preset\n  } = options;\n  const enabled = _enabled && query !== void 0;\n  const {\n    data,\n    isLoading,\n    ...rest\n  } = useSWR(enabled ? [HEADLINE_FETCHER_KEY, query, preset] : null, () => queryHeadline(query, preset));\n  const hasHeadline = data !== void 0 && data.title !== \"\";\n  return {\n    isLoading: isLoading || !enabled || !hasHeadline,\n    headline: data ?? {\n      title: \"\"\n    },\n    ...rest\n  };\n};\nconst fetchKeywordCollectionHeadline = async (query, preset) => {\n  if (!query.keywordCollectionId) {\n    return {\n      title: \"\"\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  const [firstProductGroup] = productGroups;\n  if (preset === HeadlinePresetType.Link && firstProductGroup) {\n    return {\n      // TODO(임규민): title format 을 외부에서 입력받을 수 있도록 처리\n      title,\n      action: {\n        type: HeadlineActionType.Link,\n        // TODO(임규민): label 을 외부에서 입력받을 수 있도록 처리\n        label: \"전체보기\",\n        query\n      },\n      query: {\n        ...query,\n        displayEndAt: displayEndAt ?? void 0,\n        couponId: data.couponId ?? void 0,\n        productGroups,\n        selectedProductGroup: {\n          id: firstProductGroup.productGroupId,\n          sort: firstProductGroup.sort,\n          index: INITIAL_PRODUCT_GROUP_INDEX\n        }\n      }\n    };\n  }\n  if (preset === HeadlinePresetType.Schedule) {\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) ?? 0;\n      const {\n        productGroupId,\n        sort,\n        startAt,\n        endAt\n      } = groups[currentIndex];\n      return getScheduleHeadline({\n        ...query,\n        displayEndAt: displayEndAt ?? void 0,\n        couponId: data.couponId ?? void 0,\n        productGroups,\n        selectedProductGroup: {\n          id: productGroupId,\n          sort,\n          index: currentIndex,\n          startAt,\n          endAt\n        }\n      }, startAt, endAt);\n    }\n  }\n  return {\n    title,\n    description: description ?? void 0,\n    action: {\n      type: HeadlineActionType.External\n    },\n    query: {\n      ...query,\n      displayEndAt: displayEndAt ?? void 0,\n      couponId: data.couponId ?? void 0,\n      productGroups,\n      selectedProductGroup: {\n        id: firstProductGroup.productGroupId,\n        sort: firstProductGroup.sort,\n        index: INITIAL_PRODUCT_GROUP_INDEX\n      }\n    }\n  };\n};\nconst fetchCouponCollectionHeadline = async (query) => {\n  if (!query.brandSaleGroupId) {\n    return {\n      title: \"\"\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 {\n    title,\n    description,\n    action: {\n      type: HeadlineActionType.External\n    },\n    query: {\n      ...query,\n      brandSales: brandSaleList\n    }\n  };\n};\nconst fetchKeywordCollectionsHeadline = async (query, preset) => {\n  if (!query.keywordCollectionIds) {\n    return {\n      title: \"\"\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  const collection = collections[currentIndex ?? 0];\n  if (!collection) {\n    return {\n      title: \"\"\n    };\n  }\n  const {\n    title,\n    description,\n    displayEndAt,\n    productGroupList\n  } = collection;\n  const [firstProductGroup] = productGroupList ?? [];\n  if (preset === HeadlinePresetType.Link && firstProductGroup) {\n    return {\n      title,\n      action: {\n        type: HeadlineActionType.Link,\n        label: \"전체보기\",\n        query: {\n          type: QueryType.KeywordCollection,\n          keywordCollectionId: String(collection.collectionId),\n          selectedProductGroup: firstProductGroup ? {\n            id: firstProductGroup.collectionProductGroupId,\n            sort: firstProductGroup.sort,\n            index: INITIAL_PRODUCT_GROUP_INDEX\n          } : void 0\n        }\n      },\n      query: {\n        type: QueryType.KeywordCollection,\n        keywordCollectionId: String(collection.collectionId),\n        displayEndAt: displayEndAt ?? void 0,\n        couponId: collection.couponId ?? void 0,\n        productGroups: productGroupList.map((productGroup) => ({\n          ...productGroup,\n          productGroupId: productGroup.collectionProductGroupId\n        })),\n        selectedProductGroup: firstProductGroup ? {\n          id: firstProductGroup.collectionProductGroupId,\n          sort: firstProductGroup.sort,\n          index: INITIAL_PRODUCT_GROUP_INDEX\n        } : void 0\n      }\n    };\n  }\n  return {\n    title,\n    description: description ?? void 0,\n    action: {\n      type: HeadlineActionType.External\n    },\n    query: {\n      type: QueryType.KeywordCollection,\n      keywordCollectionId: String(collection.collectionId),\n      displayEndAt: displayEndAt ?? void 0,\n      couponId: collection.couponId ?? void 0,\n      productGroups: productGroupList.map((productGroup) => ({\n        ...productGroup,\n        productGroupId: productGroup.collectionProductGroupId\n      })),\n      selectedProductGroup: firstProductGroup ? {\n        id: firstProductGroup.collectionProductGroupId,\n        sort: firstProductGroup.sort,\n        index: INITIAL_PRODUCT_GROUP_INDEX\n      } : void 0\n    }\n  };\n};\nconst queryHeadline = (query, preset) => {\n  if (!query) {\n    return {\n      title: \"\"\n    };\n  }\n  switch (query.type) {\n    case QueryType.KeywordCollection:\n      return fetchKeywordCollectionHeadline(query, preset);\n    case QueryType.KeywordCollections:\n      return fetchKeywordCollectionsHeadline(query, preset);\n    case QueryType.CouponCollection:\n      return fetchCouponCollectionHeadline(query);\n    default:\n      return {\n        title: \"\"\n      };\n  }\n};\nexport {\n  useHeadlineQuery\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { HeadlineElement } from \"../HeadlineElement/HeadlineElement.js\";\nimport \"../../../systems/curations/IntersectionProvider/IntersectionProvider.js\";\nimport { useIntersectionContext } from \"../../../systems/curations/IntersectionProvider/IntersectionProvider.hooks.js\";\nimport { useHeadlineQuery } from \"../HeadlineModule.hooks.js\";\nimport { getHeadlinePreset } from \"../HeadlineModule.utils.js\";\nconst AutoHeadlineModule = ({\n  query,\n  input,\n  output,\n  layout,\n  actionElement\n}) => {\n  const {\n    isInView\n  } = useIntersectionContext();\n  const {\n    isLoading,\n    headline\n  } = useHeadlineQuery({\n    query,\n    preset: getHeadlinePreset(layout),\n    enabled: isInView\n  });\n  return /* @__PURE__ */ jsx(HeadlineElement, { loading: isLoading, input: {\n    ...headline,\n    title: input.title || headline.title,\n    description: input.description || headline.description\n  }, output, layout, actionElement });\n};\nexport {\n  AutoHeadlineModule\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { addPropertyControls, ControlType } from \"framer\";\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 { HeadlineModuleInputType, HeadlineActionType, HeadlinePresetType } from \"./HeadlineModule.types.js\";\nimport { SectionLayout } from \"../../systems/curations/SectionLayout/SectionLayout.js\";\nimport { HeadlineElement } from \"./HeadlineElement/HeadlineElement.js\";\nimport { LinkedHeadlineModule } from \"./LinkedHeadlineModule/LinkedHeadlineModule.js\";\nimport { ProfilesModuleInputType } from \"../ProfilesModule/ProfilesModule.types.js\";\nimport { AUTO_HEADLINE_MODULE_QUERY } from \"./HeadlineModule.controls.js\";\nimport { AutoHeadlineModule } from \"./AutoHeadlineModule/AutoHeadlineModule.js\";\nimport { SEGMENT_CONTROLS } from \"../../../libs/property-controls/segment.js\";\nconst HeadlineModuleInner = ({\n  input,\n  output,\n  layout,\n  actionElement\n}) => {\n  switch (input.type) {\n    case HeadlineModuleInputType.Linked:\n      return /* @__PURE__ */ jsx(LinkedHeadlineModule, { ...input, output, layout, actionElement });\n    case HeadlineModuleInputType.Auto:\n      return /* @__PURE__ */ jsx(AutoHeadlineModule, { ...input, output, layout, actionElement });\n    case HeadlineModuleInputType.Manual:\n      return /* @__PURE__ */ jsx(HeadlineElement, { ...input, output, layout, actionElement });\n  }\n};\nconst HeadlineModule = ({\n  componentId,\n  breakpoint,\n  theme,\n  segment,\n  ...rest\n}) => {\n  return /* @__PURE__ */ jsx(SectionLayout, { theme, breakpoint, componentId, segment, children: /* @__PURE__ */ jsx(HeadlineModuleInner, { ...rest }) });\n};\naddPropertyControls(HeadlineModule, {\n  ...BREAKPOINT_CONTROLS,\n  ...THEME_CONTROLS,\n  ...SEGMENT_CONTROLS,\n  componentId: {\n    hidden: ({\n      input\n    }) => (input == null ? void 0 : input.type) === HeadlineModuleInputType.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: [HeadlineModuleInputType.Linked, HeadlineModuleInputType.Manual, HeadlineModuleInputType.Auto],\n        optionTitles: [\"연결\", \"수동\", \"자동\"]\n      },\n      value: {\n        hidden: ({\n          type\n        }) => type !== HeadlineModuleInputType.Linked,\n        type: ControlType.String,\n        title: \"출력 값\",\n        defaultValue: \"\"\n      },\n      input: {\n        type: ControlType.Object,\n        title: \"헤드라인 옵션\",\n        description: \"자동 또는 연결 유형일 때에는 데이터를 통해 가져온 옵션을 대체할 수 있습니다.\",\n        controls: {\n          title: {\n            type: ControlType.String,\n            title: \"제목\",\n            placeholder: \"제목 텍스트 입력\",\n            defaultValue: \"\"\n          },\n          description: {\n            type: ControlType.String,\n            title: \"설명\",\n            placeholder: \"설명 텍스트 입력\",\n            defaultValue: \"\",\n            displayTextArea: true\n          },\n          action: {\n            hidden: ({\n              type\n            }) => type !== HeadlineModuleInputType.Manual,\n            type: ControlType.Object,\n            title: \"액션\",\n            controls: {\n              type: {\n                type: ControlType.Enum,\n                title: \"유형\",\n                options: [HeadlineActionType.External],\n                optionTitles: [\"외부 연결\"]\n              }\n            }\n          }\n        }\n      },\n      query: {\n        hidden: ({\n          type\n        }) => type !== ProfilesModuleInputType.Auto,\n        ...AUTO_HEADLINE_MODULE_QUERY\n      }\n    }\n  },\n  output: {\n    type: ControlType.String,\n    title: \"출력 값\",\n    defaultValue: \"\"\n  },\n  // NOTE:(김홍동) 참고) ControlType.ComponentInstance은 객체 내에서 정의할 수 없고 배열 내에서 정의한 경우 옵션에 미노출 되므로 최상단에 위치시킵니다.\n  actionElement: {\n    type: ControlType.ComponentInstance,\n    title: \"액션 컴포넌트\",\n    description: \"헤드라인 우측에 별도의 컴포넌트가 삽입되어야 하는 경우 연결\"\n  },\n  layout: {\n    title: \"레이아웃\",\n    type: ControlType.Object,\n    controls: {\n      priority: {\n        type: ControlType.Enum,\n        title: \"우선 순위\",\n        description: \"미디어 관련 옵션은 primary 일 때에만 사용 가능합니다.\",\n        options: [\"primary\", \"secondary\", \"tertiary\"]\n      },\n      preset: {\n        hidden: ({\n          priority\n        }, {\n          input\n        }) => priority === \"primary\" || input.type === HeadlineModuleInputType.Manual,\n        type: ControlType.Enum,\n        title: \"프리셋\",\n        options: [HeadlinePresetType.Default, HeadlinePresetType.Schedule, HeadlinePresetType.Link],\n        optionTitles: [\"기본\", \"일자별\", \"링크\"]\n      },\n      mediaType: {\n        hidden: ({\n          priority\n        }) => priority !== \"primary\",\n        type: ControlType.Enum,\n        title: \"미디어 유형\",\n        description: \"삽입할 키비주얼의 미디어 유형 선택\",\n        options: [\"none\", \"image\", \"video\"],\n        optionTitles: [\"선택 안 함\", \"이미지\", \"영상\"]\n      },\n      imageSrc: {\n        hidden: ({\n          priority,\n          mediaType\n        }) => priority !== \"primary\" || mediaType !== \"image\",\n        type: ControlType.String,\n        title: \"이미지 URL\",\n        placeholder: \"이미지 URL 입력\"\n      },\n      videoSrc: {\n        hidden: ({\n          priority,\n          mediaType\n        }) => priority !== \"primary\" || mediaType !== \"video\",\n        type: ControlType.String,\n        title: \"영상 URL\",\n        placeholder: \"영상 URL 입력\"\n      },\n      videoSrcWebm: {\n        hidden: ({\n          priority,\n          mediaType\n        }) => priority !== \"primary\" || mediaType !== \"video\",\n        type: ControlType.String,\n        title: \"WEBM 영상 URL\",\n        placeholder: \"WEBM 포맷의 영상 URL 입력\"\n      },\n      poster: {\n        hidden: ({\n          priority,\n          mediaType\n        }) => priority !== \"primary\" || mediaType !== \"video\",\n        type: ControlType.String,\n        title: \"포스터 이미지 URL\",\n        description: \"영상이 자동재생되지 않는 환경(ex. 저전력 모드)에서 임시로 노출할 이미지 URL을 입력합니다.\",\n        placeholder: \"포스터 이미지 URL 입력\"\n      },\n      lazy: {\n        hidden: ({\n          priority,\n          mediaType\n        }) => priority !== \"primary\" || mediaType === \"none\",\n        type: ControlType.Boolean,\n        title: \"미디어 지연 요청\",\n        description: \"컴포넌트가 화면에 보일 때에만 미디어를 로드합니다.\\n(성능 최적화를 위해 활성화하는 것을 권장합니다.)\",\n        defaultValue: true\n      },\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  HeadlineModule\n};\n"],"mappings":"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"}