{"version":3,"file":"SubscriptionModule.j5o7Ui8v.mjs","names":["useMemo","Fragment","useMemo"],"sources":["https:/asset.29cm.co.kr/contents/framer/components/modules/SubscriptionModule/SubscriptionModule.types.js","https:/asset.29cm.co.kr/contents/framer/components/modules/SubscriptionModule/SubscriptionModule.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/modules/SubscriptionModule/SubscriptionElement/SubscriptionElement.utils.js","https:/asset.29cm.co.kr/contents/framer/components/modules/SubscriptionModule/SubscriptionElement/SubscriptionElement.js","https:/asset.29cm.co.kr/contents/framer/utils/separateByIndex.js","https:/asset.29cm.co.kr/contents/framer/components/modules/SubscriptionModule/AutoSubscriptionModule/AutoSubscriptionModule.js","https:/asset.29cm.co.kr/contents/framer/components/modules/SubscriptionModule/SubscriptionModule.controls.js","https:/asset.29cm.co.kr/contents/framer/components/modules/SubscriptionModule/LinkedSubscriptionModule/LinkedSubscriptionModule.utils.js","https:/asset.29cm.co.kr/contents/framer/components/modules/SubscriptionModule/LinkedSubscriptionModule/LinkedSubscriptionModule.js","https:/asset.29cm.co.kr/contents/framer/components/modules/SubscriptionModule/SubscriptionModule.js","https:/framerusercontent.com/modules/li1jzy1s7A3mwbefBisv/ArGuRhl30yd7RMeslnKY/SubscriptionModule.js"],"sourcesContent":["var SubscriptionModuleLayoutType = /* @__PURE__ */ ((SubscriptionModuleLayoutType2) => {\n  SubscriptionModuleLayoutType2[SubscriptionModuleLayoutType2[\"Button\"] = 0] = \"Button\";\n  SubscriptionModuleLayoutType2[SubscriptionModuleLayoutType2[\"SwitchButton\"] = 1] = \"SwitchButton\";\n  return SubscriptionModuleLayoutType2;\n})(SubscriptionModuleLayoutType || {});\nvar SubscriptionModuleInputType = /* @__PURE__ */ ((SubscriptionModuleInputType2) => {\n  SubscriptionModuleInputType2[SubscriptionModuleInputType2[\"Linked\"] = 0] = \"Linked\";\n  SubscriptionModuleInputType2[SubscriptionModuleInputType2[\"Auto\"] = 1] = \"Auto\";\n  SubscriptionModuleInputType2[SubscriptionModuleInputType2[\"Manual\"] = 2] = \"Manual\";\n  return SubscriptionModuleInputType2;\n})(SubscriptionModuleInputType || {});\nexport {\n  SubscriptionModuleInputType,\n  SubscriptionModuleLayoutType\n};\n","import { raffleApi } from \"../../../apis/raffle/RaffleApiService.js\";\nimport { QueryType } from \"../types.js\";\nimport useSWR from \"../../../node_modules/swr/core/dist/index.js\";\nconst SUBSCRIPTION_FETCHER_KEY = \"subscription-module/subscription\";\nconst useSubscriptionQuery = (query, _enabled = true) => {\n  const enabled = _enabled && query !== void 0;\n  const {\n    isLoading,\n    data,\n    ...rest\n  } = useSWR(enabled ? [SUBSCRIPTION_FETCHER_KEY, query] : null, () => querySubscription(query));\n  const hasKeys = data !== void 0 && data.eventKeys.length > 0;\n  return {\n    isLoading: isLoading || !enabled || !hasKeys,\n    subscription: data ?? {\n      eventKeys: []\n    },\n    ...rest\n  };\n};\nconst fetchRaffleGroupSubscription = async (query) => {\n  if (!query.raffleGroupId) {\n    return {\n      eventKeys: []\n    };\n  }\n  const {\n    data\n  } = await raffleApi.getRaffleGroup(query.raffleGroupId);\n  return {\n    eventKeys: data.notificationKey ? [data.notificationKey] : [],\n    layoutOverrides: {\n      text: data.buttonText ?? \"\"\n    }\n  };\n};\nconst querySubscription = (query) => {\n  if (!query) {\n    return {\n      eventKeys: []\n    };\n  }\n  switch (query.type) {\n    case QueryType.RaffleGroup:\n      return fetchRaffleGroupSubscription(query);\n    default:\n      return {\n        eventKeys: []\n      };\n  }\n};\nexport {\n  useSubscriptionQuery\n};\n","import { SubscriptionModuleInputType } from \"../SubscriptionModule.types.js\";\nconst validateSubscriptionElementEventKey = ({\n  type,\n  eventKey\n}) => {\n  switch (type) {\n    case SubscriptionModuleInputType.Manual: {\n      const keys = eventKey.split(\",\").map((key) => key.trim()).filter(Boolean);\n      if (keys.length <= 1) {\n        return {\n          isValid: true\n        };\n      }\n      return {\n        isValid: false,\n        errorMessage: \"이벤트 키(eventKey)는 1개만 입력해 주세요.\\n쉼표(,)로 여러 개 입력할 수 없습니다.\"\n      };\n    }\n    default:\n      return {\n        isValid: true\n      };\n  }\n};\nexport {\n  validateSubscriptionElementEventKey\n};\n","import { jsxs, Fragment, jsx } from \"react/jsx-runtime\";\nimport { useMemo } from \"react\";\nimport { Button as Default } from \"../../../@shared/Button/Button.js\";\nimport { SubscriptionModuleLayoutType } from \"../SubscriptionModule.types.js\";\nimport { useTheme } from \"../../../../hooks/useTheme.js\";\nimport { SwitchButton } from \"../../../@shared/SwitchButton/SwitchButton.js\";\nimport { useHandleSubscription } from \"../../../systems/curations/SubscriptionButton/SubscriptionButton.hooks.js\";\nimport { isCanvas } from \"../../../../utils/framer/isCanvas.js\";\nimport { isFramerPreview } from \"../../../../utils/framer/isFramerPreview.js\";\nimport { useTrackClickButtonEvent } from \"../../hooks.js\";\nimport { EventTrigger } from \"../../../@shared/EventTrigger/index.js\";\nimport { useSegment } from \"../../../@shared/providers/SegmentProvider/SegmentProvider.js\";\nimport { CanvasError } from \"../../../@shared/CanvasError/CanvasError.js\";\nimport { validateSubscriptionElementEventKey } from \"./SubscriptionElement.utils.js\";\nconst fallbackRaffleButtonText = \" \";\nconst SUBSCRIBED_BUTTON_TEXT = \"알림 해제\";\nconst SubscriptionElement = ({\n  loading = false,\n  query: _query,\n  type,\n  sectionKey = \"\",\n  groupKey,\n  eventKey,\n  restEventKeys = [],\n  layoutOverrides,\n  layout\n}) => {\n  const theme = useTheme();\n  const query = useMemo(() => attachAdditionalQuery(_query), [_query]);\n  const {\n    isVisible\n  } = useSegment();\n  const trackClickButtonEvent = useTrackClickButtonEvent(query);\n  const {\n    isValid,\n    errorMessage\n  } = useMemo(() => validateSubscriptionElementEventKey({\n    type,\n    eventKey\n  }), [type, eventKey]);\n  const isFramer = isCanvas() || isFramerPreview();\n  const shouldRenderError = !isValid && isFramer;\n  const {\n    isSubscribed,\n    toggleSubscription\n  } = useHandleSubscription({\n    groupKey,\n    sectionKey,\n    eventKey,\n    restEventKeys\n  });\n  const getButtonTextByLayoutType = () => {\n    switch (layout.type) {\n      case SubscriptionModuleLayoutType.Button:\n        if (isSubscribed) {\n          return SUBSCRIBED_BUTTON_TEXT;\n        }\n        return (layoutOverrides == null ? void 0 : layoutOverrides.text) || layout.button.text || fallbackRaffleButtonText;\n      case SubscriptionModuleLayoutType.SwitchButton:\n        return layout.switchButton.text;\n    }\n  };\n  const handleButtonClick = () => {\n    if (loading) {\n      return;\n    }\n    toggleSubscription({\n      shouldTrackClickEvent: false\n    });\n  };\n  const handleTriggerClick = () => {\n    trackClickButtonEvent({\n      type: isSubscribed ? \"unsubscribe_notification\" : \"subscribe_notification\",\n      name: getButtonTextByLayoutType()\n    });\n  };\n  if (!isVisible) {\n    return null;\n  }\n  switch (layout.type) {\n    case SubscriptionModuleLayoutType.Button:\n      return /* @__PURE__ */ jsxs(Fragment, { children: [\n        /* @__PURE__ */ jsx(EventTrigger.Target, { style: {\n          width: \"100%\"\n        }, onClick: handleTriggerClick, children: /* @__PURE__ */ jsx(Default, { ...layout.button, pending: loading, onClick: handleButtonClick, children: getButtonTextByLayoutType() }) }),\n        shouldRenderError && errorMessage && /* @__PURE__ */ jsx(CanvasError, { message: errorMessage })\n      ] });\n    case SubscriptionModuleLayoutType.SwitchButton:\n      return /* @__PURE__ */ jsxs(Fragment, { children: [\n        /* @__PURE__ */ jsx(EventTrigger.Target, { onClick: handleTriggerClick, children: /* @__PURE__ */ jsx(SwitchButton, { theme, active: isSubscribed || isCanvas(), activeColor: layout.switchButton.activeColor, onClick: handleButtonClick, children: getButtonTextByLayoutType() }) }),\n        shouldRenderError && errorMessage && /* @__PURE__ */ jsx(CanvasError, { message: errorMessage })\n      ] });\n  }\n};\nconst attachAdditionalQuery = (query) => {\n  return query ? {\n    ...query\n  } : void 0;\n};\nexport {\n  SubscriptionElement\n};\n","import { restOf } from \"./restOf.js\";\nconst separateByIndex = (array, index = 0) => {\n  return [array[index], restOf(array, index)];\n};\nexport {\n  separateByIndex\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport \"../../../systems/curations/IntersectionProvider/IntersectionProvider.js\";\nimport { useIntersectionContext } from \"../../../systems/curations/IntersectionProvider/IntersectionProvider.hooks.js\";\nimport { useSubscriptionQuery } from \"../SubscriptionModule.hooks.js\";\nimport { SubscriptionElement } from \"../SubscriptionElement/SubscriptionElement.js\";\nimport { separateByIndex } from \"../../../../utils/separateByIndex.js\";\nconst AutoSubscriptionModule = ({\n  query,\n  layout\n}) => {\n  const {\n    isInView\n  } = useIntersectionContext();\n  const {\n    isLoading,\n    subscription\n  } = useSubscriptionQuery(query, isInView);\n  const [eventKey = \"\", restEventKeys] = separateByIndex(subscription.eventKeys, 0);\n  return /* @__PURE__ */ jsx(SubscriptionElement, { ...subscription, loading: isLoading, eventKey, restEventKeys, layout, query });\n};\nexport {\n  AutoSubscriptionModule\n};\n","import { QUERY_CONTROL, RAFFLE_GROUP_CONTROLS } from \"../controls.js\";\nimport { combineObjectPropertyControls } from \"../../../libs/property-controls/helpers.js\";\nconst AUTO_SUBSCRIPTION_MODULE_QUERY = {\n  ...QUERY_CONTROL,\n  controls: combineObjectPropertyControls(RAFFLE_GROUP_CONTROLS)\n};\nexport {\n  AUTO_SUBSCRIPTION_MODULE_QUERY\n};\n","import { QueryType } from \"../../types.js\";\nimport { separateByIndex } from \"../../../../utils/separateByIndex.js\";\nimport { splitToStringArray } from \"../../../../utils/splitToStringArray.js\";\nconst normalizeEventKeys = (eventKeys) => {\n  return eventKeys.flatMap((key) => splitToStringArray(key).filter(Boolean));\n};\nconst getKeywordCollectionEventKeys = (query, input) => {\n  var _a;\n  const normalizedEventKeys = normalizeEventKeys(input.eventKeys);\n  const [eventKey = \"\", restEventKeys] = separateByIndex(normalizedEventKeys, (_a = query.selectedProductGroup) == null ? void 0 : _a.index);\n  return {\n    sectionKey: `${query.keywordCollectionId}`,\n    eventKey,\n    restEventKeys\n  };\n};\nconst getCouponCollectionEventKeys = (query, input) => {\n  const normalizedEventKeys = normalizeEventKeys(input.eventKeys);\n  const [eventKey = \"\", restEventKeys] = separateByIndex(normalizedEventKeys, query.index);\n  return {\n    sectionKey: `${query.brandSaleGroupId}`,\n    eventKey,\n    restEventKeys\n  };\n};\nconst getEventKeys = (query, input) => {\n  if (!query) {\n    return {\n      eventKey: \"\",\n      restEventKeys: []\n    };\n  }\n  switch (query.type) {\n    case QueryType.KeywordCollection:\n      return getKeywordCollectionEventKeys(query, input);\n    case QueryType.CouponCollection:\n      return getCouponCollectionEventKeys(query, input);\n    default:\n      return {\n        eventKey: \"\",\n        restEventKeys: []\n      };\n  }\n};\nexport {\n  getCouponCollectionEventKeys,\n  getEventKeys,\n  getKeywordCollectionEventKeys\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { useQueryStore } from \"../../query-store/query.store.js\";\nimport { SubscriptionElement } from \"../SubscriptionElement/SubscriptionElement.js\";\nimport { getEventKeys } from \"./LinkedSubscriptionModule.utils.js\";\nimport { useMemo } from \"react\";\nimport { createKey } from \"../../utils/key.js\";\nconst LinkedSubscriptionModule = ({\n  value,\n  input,\n  layout\n}) => {\n  const query = useQueryStore((state) => state.queries[value]);\n  const keys = useMemo(() => getEventKeys(query, input), [query, input]);\n  return /* @__PURE__ */ jsx(SubscriptionElement, { ...keys, groupKey: input.groupKey, layout, query }, createKey(query));\n};\nexport {\n  LinkedSubscriptionModule\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { addPropertyControls, ControlType } from \"framer\";\nimport { SWRErrorBoundary } from \"../../@shared/SWRErrorBoundary/SWRErrorBoundary.js\";\nimport { SubscriptionModuleInputType, SubscriptionModuleLayoutType } from \"./SubscriptionModule.types.js\";\nimport { QueryType } from \"../types.js\";\nimport { COMPONENT_ID_PROPS } from \"../../../libs/property-controls/component-id.js\";\nimport { SectionLayout } from \"../../systems/curations/SectionLayout/SectionLayout.js\";\nimport { AutoSubscriptionModule } from \"./AutoSubscriptionModule/AutoSubscriptionModule.js\";\nimport { BUTTON_VARIANT_CONTROLS, BUTTON_THEME_CONTROLS, BUTTON_SIZE_CONTROLS, BUTTON_FILL_CONTROLS } from \"../../../libs/property-controls/button.js\";\nimport { AUTO_SUBSCRIPTION_MODULE_QUERY } from \"./SubscriptionModule.controls.js\";\nimport { THEME_CONTROLS } from \"../../../libs/property-controls/theme.js\";\nimport { LinkedSubscriptionModule } from \"./LinkedSubscriptionModule/LinkedSubscriptionModule.js\";\nimport { SEGMENT_CONTROLS } from \"../../../libs/property-controls/segment.js\";\nimport { SubscriptionElement } from \"./SubscriptionElement/SubscriptionElement.js\";\nconst SubscriptionModuleInner = ({\n  input,\n  layout\n}) => {\n  switch (input.type) {\n    case SubscriptionModuleInputType.Auto:\n      return /* @__PURE__ */ jsx(AutoSubscriptionModule, { query: input.query, layout });\n    case SubscriptionModuleInputType.Linked:\n      return /* @__PURE__ */ jsx(LinkedSubscriptionModule, { ...input, layout });\n    case SubscriptionModuleInputType.Manual:\n      return /* @__PURE__ */ jsx(SubscriptionElement, { ...input, layout });\n    default:\n      return null;\n  }\n};\nconst SubscriptionModule = ({\n  componentId,\n  theme,\n  segment,\n  ...rest\n}) => {\n  return /* @__PURE__ */ jsx(SectionLayout, { componentId, theme, segment, children: /* @__PURE__ */ jsx(SWRErrorBoundary, { children: /* @__PURE__ */ jsx(SubscriptionModuleInner, { ...rest }) }) });\n};\naddPropertyControls(SubscriptionModule, {\n  ...THEME_CONTROLS,\n  ...SEGMENT_CONTROLS,\n  componentId: {\n    hidden: ({\n      input\n    }) => (input == null ? void 0 : input.type) === SubscriptionModuleInputType.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: [SubscriptionModuleInputType.Linked, SubscriptionModuleInputType.Auto, SubscriptionModuleInputType.Manual],\n        optionTitles: [\"연결\", \"자동\", \"수동\"]\n      },\n      query: {\n        hidden: ({\n          type\n        }) => type !== SubscriptionModuleInputType.Auto,\n        ...AUTO_SUBSCRIPTION_MODULE_QUERY\n      },\n      value: {\n        hidden: ({\n          type\n        }) => type !== SubscriptionModuleInputType.Linked,\n        type: ControlType.String,\n        title: \"출력 값\",\n        defaultValue: \"\"\n      },\n      input: {\n        hidden: ({\n          type\n        }) => type !== SubscriptionModuleInputType.Linked,\n        type: ControlType.Object,\n        title: \"알림 옵션\",\n        controls: {\n          eventKeys: {\n            type: ControlType.Array,\n            title: \"이벤트 키\",\n            description: \"알림 기능을 활성화할 이벤트를 구분하기 위해 사전에 정의된 키를 입력합니다.\\n복수 입력 시 반드시 회차 순서대로 입력하거나 콤마(,)로 구분하여 입력해 주세요.\",\n            control: {\n              type: ControlType.String,\n              defaultValue: \"\",\n              placeholder: \"BRAND_DEAL_01\"\n            }\n          },\n          groupKey: {\n            type: ControlType.String,\n            title: \"그룹 키\",\n            description: \"이벤트 키들의 그룹을 식별하는 키를 입력합니다.\\n알림 그룹이 존재하지 않는 경우 미입력\",\n            defaultValue: \"\",\n            placeholder: \"25-02-29homeweek-encore\"\n          }\n        }\n      },\n      eventKey: {\n        hidden: ({\n          type\n        }) => type !== SubscriptionModuleInputType.Manual,\n        type: ControlType.String,\n        title: \"일림 키\",\n        description: \"알림 기능을 활성화할 이벤트를 구분하기 위해 사전에 정의된 키를 입력합니다.\\n알림 키는 1개만 입력해 주세요. (쉼표(,)로 여러 개 입력할 수 없습니다.)\\n\",\n        defaultValue: \"\"\n      }\n    }\n  },\n  layout: {\n    type: ControlType.Object,\n    title: \"레이아웃\",\n    controls: {\n      type: {\n        type: ControlType.Enum,\n        title: \"유형\",\n        options: [SubscriptionModuleLayoutType.SwitchButton, SubscriptionModuleLayoutType.Button],\n        optionTitles: [\"스위치 버튼\", \"버튼\"]\n      },\n      button: {\n        hidden: ({\n          type\n        }) => type !== SubscriptionModuleLayoutType.Button,\n        type: ControlType.Object,\n        title: \"버튼 옵션\",\n        controls: {\n          text: {\n            hidden: (_, {\n              input\n            }) => input.type === SubscriptionModuleInputType.Auto && input.query.type === QueryType.RaffleGroup,\n            type: ControlType.String,\n            title: \"버튼 텍스트\"\n          },\n          ...BUTTON_VARIANT_CONTROLS,\n          ...BUTTON_THEME_CONTROLS,\n          ...BUTTON_SIZE_CONTROLS,\n          ...BUTTON_FILL_CONTROLS\n        }\n      },\n      switchButton: {\n        hidden: ({\n          type\n        }) => type !== SubscriptionModuleLayoutType.SwitchButton,\n        type: ControlType.Object,\n        title: \"스위치 버튼 옵션\",\n        controls: {\n          text: {\n            type: ControlType.String,\n            title: \"버튼 텍스트\",\n            defaultValue: \"알림 받기\"\n          },\n          activeColor: {\n            type: ControlType.Color,\n            title: \"활성화 색상\",\n            description: \"버튼이 활성화 상태일 때의 색상 설정\",\n            optional: true\n          }\n        }\n      }\n    }\n  }\n});\nexport {\n  SubscriptionModule\n};\n","import{SubscriptionModule}from\"https://asset.29cm.co.kr/contents/framer/components/modules/SubscriptionModule/SubscriptionModule.js\";SubscriptionModule.displayName=\"[조립형]Subscription\";export default SubscriptionModule;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SubscriptionModule\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SubscriptionModule.map"],"mappings":"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"}