{"version":3,"file":"shared.DRM5trHT.mjs","names":["createContext","create","label","useContext","useRef","a","x","list","item","isLast","formatProducts","createContext","useRef","useContext","createContext","Root","forwardRef","useRef","useState","item","containerStyle","useContext","Gradient","forwardRef","useState","container","css","List","forwardRef","useState","container","containerStyle","Panel","Trigger","forwardRef","e","containerStyle","isFunction","useContext","Breakpoint","createContext","Root","forwardRef","sidePaddingByBreakpoint","Breakpoint","useContext","useContext","LIST_GAP","SKELETONS_PER_PENDING","List","list","Breakpoint","containerStyle","Fragment","Default","forwardRef","e","a$1","useCallback","useMemo","a","forwardRef","t","e","l","p","forwardRef","baseStyleByTheme","Item","forwardRef","Panels","list","Fragment","Panel","Default","useRef","useCallback","createContext","Root","forwardRef","useRef","useContext","forwardRef","e","getKey","useRef","useCallback","isFunction","row","Default","forwardRef","useContext","containerStyle","forwardRef","useRef","useState","container","containerStyle","iconColorByTheme","Default","wrapperResetStyle","wrapperStyle","wrapperStyleByBreakpoint","listStyle","list","Item","withStyle","forwardRef","Default","classNames","wrapperStyleByBreakpoint","createContext","Root","forwardRef","row","getDisplayCount","List","Item","PRODUCTS_PER_REQUEST","list","entries","e","getPrototype","objectTag","getPrototype","hasOwnProperty","hasOwnProperty","hasOwnProperty","baseSetToString","getPrototype","arrayBufferTag","boolTag","dateTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","mapTag","numberTag","stringTag","regexpTag","setTag","symbolTag","getTag","mapTag","getTag","setTag","CLONE_DEEP_FLAG","CLONE_SYMBOLS_FLAG","getTag","slice","forwardRef","containerStyle","useRef","Default","forwardRef","Default","containerStyle","contentStyle","Default","forwardRef","createContext","Root","forwardRef","containerStyle","containerStyleByPriority","SRC_SET_WIDTHS","forwardRef","containerStyle","containerStyleByBreakpoint","useRef","useState","useCallback","forwardRef","useMemo","posterWidthByBreakpoint","mediaByBreakpoint","containerStyle","containerStyleByBreakpoint","useRef","useContext","Content","withStyle","forwardRef","classNames","wrapperStyle","wrapperStyleByBreakpoint","contentStyle","Title","forwardRef","skeletonStyle","skeletonStyleByPriority","skeletonStyleByTheme","containerStyle","textColor","Description","forwardRef","skeletonStyle","skeletonStyleByTheme","containerStyle","containerStyleByPriority","Action","forwardRef","containerStyle","forwardRef","containerStyle","containerStyleByTheme","forwardRef","containerStyle","Headline","createContext","Root","forwardRef","Breakpoint","useContext","list","Breakpoint","containerStyle","Fragment","Default","forwardRef","forwardRef","containerStyle","forwardRef","useState","containerStyle","wrapperStyle","contentStyle","colorByTheme","forwardRef","containerStyle","Item","forwardRef","list","Fragment","Default","isObject","createContext","Root","forwardRef","useCallback","isObject","containerStyle","skeletonStyle","skeletonStyleByTheme","wrapperStyle","x","useContext","forwardRef","forwardRef","containerStyle","forwardRef","getIconType","e","containerStyle","containerStyleByLayout","text","forwardRef","containerStyle","forwardRef","downloadCoupons","download","item","Breakpoint","title","forwardRef","e","containerStyle","titleText","title","e","container","text","container","wrapper","DIALOG_ID","useState","container","title","REQUEST_TYPE","useRef","useRef","useMemo","isIos","useRef","x","row","DEFAULT_SIZE","a","text","root","z","e","useCallback","item","createContext","useState","useCurrentUser","useMemo","useContext","useRef","useState","containerStyle","containerStyleByBreakpoint","iconColorByTheme","titleStyle","titleStyleByTheme","title","descriptionStyle","descriptionStyleByTheme","buttonColorByTheme","useRef","useState","useCallback","useRef","memo","Gender","useState","useState","fetcher","fetch","useCallback","isLast","title","useMemo","list","title","buttonColorByTheme","getKey","useMemo","fetch","Fragment","item","initialState","module","root","formatProducts","orderByDateAsc","list","getCurrentScheduleIndex","format","list","item","COUPON_CONTROLS","createContext","PRODUCTS_PER_REQUEST","useContext","useMemo","item","text","containerStyle","useRef","useMemo","p","containerStyle","input","Badge","index","Icon","Headline","Default","input","useMemo","attachAdditionalQuery","Headline","title","title","useMemo","input","x","input","input","buttonColorByTheme","createContext","Root","forwardRef","containerStyle","useContext","Content","forwardRef","forwardRef","title","descriptionStyle","forwardRef","createContext","withStyle","forwardRef","classNames","useState","useContext","withStyle","forwardRef","classNames","withStyle","forwardRef","classNames","forwardRef","e","textStyle","sortCouponsByDiscountValueAscending","x","useMemo","useState","x","item","isLast","useState","useMemo","useRef","Fragment","download","COUPON_CONTROLS","x","input"],"sources":["https:/asset.29cm.co.kr/contents/framer/hooks/events/useTrackViewComponentEvent.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/EventTrackingProvider/EventTrackingProvider.js","https:/asset.29cm.co.kr/contents/framer/hooks/events/useTrackClickComponentEvent.js","https:/asset.29cm.co.kr/contents/framer/utils/map.js","https:/asset.29cm.co.kr/contents/framer/hooks/events/useTrackClickTagContentEvent.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/EventTrackingProvider/EventTrackingProvider.hooks.js","https:/asset.29cm.co.kr/contents/framer/node_modules/date-fns/compareAsc.js","https:/asset.29cm.co.kr/contents/framer/node_modules/date-fns/isWithinInterval.js","https:/asset.29cm.co.kr/contents/framer/utils/date.js","https:/asset.29cm.co.kr/contents/framer/node_modules/date-fns/locale/ko/_lib/formatDistance.js","https:/asset.29cm.co.kr/contents/framer/node_modules/date-fns/locale/ko/_lib/formatLong.js","https:/asset.29cm.co.kr/contents/framer/node_modules/date-fns/locale/ko/_lib/formatRelative.js","https:/asset.29cm.co.kr/contents/framer/node_modules/date-fns/locale/ko/_lib/localize.js","https:/asset.29cm.co.kr/contents/framer/node_modules/date-fns/locale/ko/_lib/match.js","https:/asset.29cm.co.kr/contents/framer/node_modules/date-fns/locale/ko.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/CouponCollection/CalendarTags/CalendarTags.utils.js","https:/asset.29cm.co.kr/contents/framer/apis/brand-sale/BrandSaleApiService.js","https:/asset.29cm.co.kr/contents/framer/hooks/fetchers/useFetchBrandSaleGroup.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/IntersectionProvider/IntersectionProvider.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/IntersectionProvider/IntersectionProvider.hooks.js","https:/asset.29cm.co.kr/contents/framer/utils/getRestScrollWidth.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/DraggableTabs/Root.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/DraggableTabs/Root.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/DraggableTabs/Gradient.js","https:/asset.29cm.co.kr/contents/framer/utils/closest.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/DraggableTabs/List.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/DraggableTabs/Panel.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/DraggableTabs/Trigger.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/DraggableTabs/index.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/providers/BreakpointProvider/BreakpointProvider.hooks.js","https:/asset.29cm.co.kr/contents/framer/hooks/useBreakpoint.js","https:/asset.29cm.co.kr/contents/framer/styles/breakpoint.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Tags/Root.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/providers/ThemeProvider/ThemeProvider.hooks.js","https:/asset.29cm.co.kr/contents/framer/hooks/useTheme.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Tags/Root.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Tags/List.js","https:/asset.29cm.co.kr/contents/framer/node_modules/@29cm/ruler-ui/dist/components/Tag/Tag.styles.js","https:/asset.29cm.co.kr/contents/framer/node_modules/@29cm/ruler-ui/dist/components/Tag/useTag.js","https:/asset.29cm.co.kr/contents/framer/node_modules/@29cm/ruler-ui/dist/components/Tag/ToggleTag/ToggleTag.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/TagSkeleton/TagSkeleton.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Tags/Item.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Tags/Panels.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Tags/Panel.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Tags/index.js","https:/asset.29cm.co.kr/contents/framer/hooks/useInViewport.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/EventTrigger/Root.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/EventTrigger/Root.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/EventTrigger/Target.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/EventTrigger/index.js","https:/asset.29cm.co.kr/contents/framer/node_modules/swr/infinite/dist/index.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/layouts/Grid.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Products/Root.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/ArrowIcon/ArrowIcon.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Products/HorizontalList.js","https:/asset.29cm.co.kr/contents/framer/utils/isLast.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/noop.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Products/Item.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Products/VerticalList.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Products/Root.js","https:/asset.29cm.co.kr/contents/framer/utils/fromEntries.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_defineProperty.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_baseAssignValue.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_assignMergeValue.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_createBaseFor.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_baseFor.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_cloneBuffer.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_cloneArrayBuffer.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_cloneTypedArray.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_copyArray.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_baseCreate.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_getPrototype.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_initCloneObject.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/isArrayLikeObject.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/isPlainObject.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_safeGet.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_assignValue.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_copyObject.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_nativeKeysIn.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_baseKeysIn.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/keysIn.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/toPlainObject.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_baseMergeDeep.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_baseMerge.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/identity.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_apply.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_overRest.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/constant.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_baseSetToString.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_shortOut.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_setToString.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_baseRest.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_isIterateeCall.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_createAssigner.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/merge.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_arrayEach.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_baseAssign.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_baseAssignIn.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_copySymbols.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_getSymbolsIn.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_copySymbolsIn.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_getAllKeysIn.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_initCloneArray.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_cloneDataView.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_cloneRegExp.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_cloneSymbol.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_initCloneByTag.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_baseIsMap.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/isMap.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_baseIsSet.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/isSet.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/_baseClone.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/cloneDeep.js","https:/asset.29cm.co.kr/contents/framer/utils/createSlices.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/ProductCardSkeleton/ProductCardSkeleton.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/Lazy/Lazy.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Products/Card.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Products/index.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Products/Root.utils.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Products/Root.constants.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/TextButton/TextButton.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Headline/Root.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Headline/Root.constants.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Headline/Image.js","https:/asset.29cm.co.kr/contents/framer/hooks/useVideoVisibility.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Headline/Video.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Headline/Root.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Headline/Content.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Headline/Title.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Headline/Description.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Headline/Action.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Headline/Gradient.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Headline/Body.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Headline/index.js","https:/asset.29cm.co.kr/contents/framer/constants/query-params.js","https:/asset.29cm.co.kr/contents/framer/utils/createSearchParams.js","https:/asset.29cm.co.kr/contents/framer/hooks/useCreateAppSchemeLink.js","https:/asset.29cm.co.kr/contents/framer/utils/getAnchorTarget.js","https:/asset.29cm.co.kr/contents/framer/hooks/useNavigatePage.js","https:/asset.29cm.co.kr/contents/framer/hooks/fetchers/useFetchBrandSales.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Profiles/Root.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Profiles/Root.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Profiles/List.js","https:/asset.29cm.co.kr/contents/framer/styles/ellipsis.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/Profile/ProfileImage.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/Profile/Profile.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/ProfileSkeleton/ProfileSkeleton.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Profiles/Item.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Profiles/Panels.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Profiles/Panel.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/Profiles/index.js","https:/asset.29cm.co.kr/contents/framer/utils/object.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/Coupon/Root.constants.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/Coupon/Root.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/Coupon/Root.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/Coupon/Description.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/Coupon/Divider.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/Coupon/Button.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/Coupon/Summary.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/Coupon/Title.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/Coupon/index.js","https:/asset.29cm.co.kr/contents/framer/utils/error/error.js","https:/asset.29cm.co.kr/contents/framer/utils/error/sentry.js","https:/asset.29cm.co.kr/contents/framer/apis/coupon/CouponApiService.js","https:/asset.29cm.co.kr/contents/framer/hooks/fetchers/useFetchCouponsDownloadStatus.js","https:/asset.29cm.co.kr/contents/framer/hooks/mutations/useDownloadCouponsMutation.js","https:/asset.29cm.co.kr/contents/framer/components/canvas/CouponDownloadCTA/CouponDownloadCTA.constants.js","https:/asset.29cm.co.kr/contents/framer/hooks/mutations/useDownloadRandomCouponMutation.js","https:/asset.29cm.co.kr/contents/framer/types/models/coupon.js","https:/asset.29cm.co.kr/contents/framer/hooks/useDownloadCoupons.js","https:/asset.29cm.co.kr/contents/framer/libs/property-controls/breakpoint.js","https:/asset.29cm.co.kr/contents/framer/libs/property-controls/headline.js","https:/asset.29cm.co.kr/contents/framer/styles/theme.js","https:/asset.29cm.co.kr/contents/framer/libs/property-controls/theme.js","https:/asset.29cm.co.kr/contents/framer/libs/property-controls/section.js","https:/asset.29cm.co.kr/contents/framer/components/systems/Headline/Headline.js","https:/asset.29cm.co.kr/contents/framer/libs/property-controls/coupon.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/SwitchButton/SwitchButton.js","https:/asset.29cm.co.kr/contents/framer/hooks/fetchers/useFetchAgreements.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/toasts/NotificationAgreementsToast/NotificationAgreementsToast.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/toasts/NotificationAgreementsToast/NotificationAgreementsToast.hooks.js","https:/asset.29cm.co.kr/contents/framer/hooks/useWithLogin.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/checkbox/Checkbox.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/icons/CloseIcon.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/dialogs/PrivacyAgreementDetailDialog/PrivacyAgreementDetailDialog.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/dialogs/PrivacyAgreementDetailDialog/PrivacyAgreementDetailDialog.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/bottom-sheets/NotificationAgreementsBottomSheet/NotificationAgreementsBottomSheet.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/bottom-sheets/NotificationAgreementsBottomSheet/NotificationAgreementsBottomSheet.hooks.js","https:/asset.29cm.co.kr/contents/framer/hooks/useAppNotificationState.js","https:/asset.29cm.co.kr/contents/framer/hooks/useMarketingPushNotification.js","https:/asset.29cm.co.kr/contents/framer/hooks/mutations/usePostAgreementsMutation.js","https:/asset.29cm.co.kr/contents/framer/hooks/fetchers/useFetchNotfiicationPermission.js","https:/asset.29cm.co.kr/contents/framer/hooks/useNotificationRequirements.js","https:/asset.29cm.co.kr/contents/framer/apis/subscription/SubscriptionApiService.js","https:/asset.29cm.co.kr/contents/framer/hooks/fetchers/useFetchSubscriptions.js","https:/asset.29cm.co.kr/contents/framer/hooks/useRequestSubscription.js","https:/asset.29cm.co.kr/contents/framer/hooks/useShowUpdateAppDialog.js","https:/asset.29cm.co.kr/contents/framer/hooks/useRequestUserAgreementBottomSheet.js","https:/asset.29cm.co.kr/contents/framer/hooks/useCreateOneLink.js","https:/asset.29cm.co.kr/contents/framer/utils/getCurrentHref.js","https:/asset.29cm.co.kr/contents/framer/node_modules/qrcode.react/lib/esm/index.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/dialogs/AppLinkDialog/AppLinkDialog.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/dialogs/AppLinkDialog/AppLinkDialog.hooks.js","https:/asset.29cm.co.kr/contents/framer/hooks/useWithApp.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/throttle.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/SubscriptionButton/SubscriptionButton.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/SubscriptionButton/SubscriptionButton.js","https:/asset.29cm.co.kr/contents/framer/utils/splitToStringArray.js","https:/asset.29cm.co.kr/contents/framer/hooks/fetchers/useCategoryNewBuyerCoupon.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/providers/SegmentProvider/SegmentProvider.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/SectionLayout/SectionLayout.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/SWRErrorBoundary/SWRErrorBoundary.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/ErrorFallback/ErrorFallback.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/NoContent/NoContent.js","https:/asset.29cm.co.kr/contents/framer/hooks/useVisibilityAwareInterval.js","https:/asset.29cm.co.kr/contents/framer/apis/best/BestApiService.js","https:/asset.29cm.co.kr/contents/framer/libs/property-controls/component-id.js","https:/asset.29cm.co.kr/contents/framer/node_modules/lodash-es/last.js","https:/asset.29cm.co.kr/contents/framer/components/systems/KeyVisual/KeyVisualImage/KeyVisualImage.js","https:/asset.29cm.co.kr/contents/framer/components/systems/KeyVisual/KeyVisual.constants.js","https:/asset.29cm.co.kr/contents/framer/components/systems/KeyVisual/KeyVisualVideo/KeyVisualVideo.js","https:/asset.29cm.co.kr/contents/framer/components/systems/KeyVisual/KeyVisual.js","https:/framerusercontent.com/modules/Jd4PPpQoFAzEN1eFj2F3/r6FRCVvPZdkepdglxjqL/KeyVisual.js","https:/asset.29cm.co.kr/contents/framer/libs/property-controls/gender.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/Gender/Gender.js","https:/asset.29cm.co.kr/contents/framer/apis/keyword-collections/KeywordCollectionApiService.js","https:/asset.29cm.co.kr/contents/framer/hooks/swr/useLazySWR.js","https:/asset.29cm.co.kr/contents/framer/hooks/fetchers/useLazyFetchKeywordCollection.js","https:/asset.29cm.co.kr/contents/framer/components/systems/KeywordCollection/KeywordCollectionTags/KeywordCollectionTags.utils.js","https:/asset.29cm.co.kr/contents/framer/components/systems/KeywordCollection/KeywordCollectionTags/KeywordCollectionTags.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/KeywordCollectionV2/KeywordCollectionTags/KeywordCollectionTags.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/KeywordCollectionV2/KeywordCollectionButton/KeywordCollectionButton.js","https:/asset.29cm.co.kr/contents/framer/hooks/fetchers/useFetchKeywordCollectionProducts.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/KeywordCollectionV2/KeywordCollectionProducts/KeywordCollectionProducts.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/KeywordCollectionV2/KeywordCollectionV2.js","https:/framerusercontent.com/modules/KCdMQ7OKXvHZV8auT4OZ/nIkmy4B0x9iGneMMPCnI/TaggedProducts.js","https:/asset.29cm.co.kr/contents/framer/components/modules/query-store/query.store.js","https:/asset.29cm.co.kr/contents/framer/components/modules/module-store/module.store.js","https:/asset.29cm.co.kr/contents/framer/components/modules/hooks.js","https:/asset.29cm.co.kr/contents/framer/utils/spacing.js","https:/asset.29cm.co.kr/contents/framer/apis/collection/CollectionApiService.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/KeywordCollectionV2/TimeSaleCollectionTags/TimeSaleCollectionTags.utils.js","https:/asset.29cm.co.kr/contents/framer/components/modules/types.js","https:/asset.29cm.co.kr/contents/framer/node_modules/date-fns/subDays.js","https:/asset.29cm.co.kr/contents/framer/node_modules/date-fns/subMonths.js","https:/asset.29cm.co.kr/contents/framer/node_modules/date-fns/sub.js","https:/asset.29cm.co.kr/contents/framer/node_modules/date-fns/formatISO.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/KeywordCollectionV2/TimeSaleCollection.utils.js","https:/asset.29cm.co.kr/contents/framer/libs/property-controls/helpers.js","https:/asset.29cm.co.kr/contents/framer/components/modules/CouponModule/CouponModule.types.js","https:/asset.29cm.co.kr/contents/framer/components/modules/controls.js","https:/asset.29cm.co.kr/contents/framer/components/modules/utils/key.js","https:/asset.29cm.co.kr/contents/framer/libs/property-controls/segment.js","https:/asset.29cm.co.kr/contents/framer/components/systems/Button/Button.constants.js","https:/asset.29cm.co.kr/contents/framer/utils/hideParentElement.js","https:/asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsElementProvider/ProductsElementProvider.js","https:/asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsModule.constants.js","https:/asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsModule.types.js","https:/asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsElementProvider/ProductsElementProvider.hooks.js","https:/asset.29cm.co.kr/contents/framer/types/models/sort.js","https:/asset.29cm.co.kr/contents/framer/apis/display-bff/DisplayBffApiService.js","https:/asset.29cm.co.kr/contents/framer/apis/recommend/RecommendApiService.js","https:/asset.29cm.co.kr/contents/framer/components/modules/mock.js","https:/asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsModule.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsElement/ProductsElement.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsElement/PaginationElement/ExpandButtonElement/ExpandButtonElement.js","https:/asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsElement/PaginationElement/VerticalPaginationElement/VerticalPaginationElement.js","https:/asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsElement/PaginationElement/PaginationElement.js","https:/asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsElement/ProductsElement.utils.js","https:/asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsElement/ProductsElement.js","https:/asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/LinkedProductsModule/LinkedProductsModule.js","https:/asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsModule.controls.js","https:/asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsModule.js","https:/framerusercontent.com/modules/m3WciOarwtFjChbrrQMz/UgKfY5LLfEJhNhGuri0i/ProductsModule.js","https:/asset.29cm.co.kr/contents/framer/components/ruler/Badge/Badge.types.js","https:/asset.29cm.co.kr/contents/framer/libs/property-controls/badge.js","https:/asset.29cm.co.kr/contents/framer/components/systems/Badge/Badge.js","https:/asset.29cm.co.kr/contents/framer/components/systems/Badge/index.js","https:/framerusercontent.com/modules/ujMK2tuF8Uh4yfdgJfeZ/IubTds5GYI6HTrke7tQJ/RulerBadge.js","https:/asset.29cm.co.kr/contents/framer/components/systems/Icon/Icon.js","https:/framerusercontent.com/modules/SG4xUagjjnWfRbTksrvL/1SmWPZhe6a5JiRkDyVjO/Icon.js","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","https:/framerusercontent.com/modules/PueLRXpmraBi4DPH0bQS/EXPZgr67fHEDGc5sLEZJ/HeadlineModule.js","https:/asset.29cm.co.kr/contents/framer/hooks/fetchers/useFetchRecommendedProductsByTagId.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/RecommendedProductCuration/RecommendedProductCuration.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/RecommendedProductCuration/RecommendedProducts.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/RecommendedProductCuration/RecommendedProductCurationButton.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/ActionFallback/Root.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/ActionFallback/Root.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/ActionFallback/Content.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/ActionFallback/Message.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/ActionFallback/Action.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/ActionFallback/index.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/RecommendedProductCuration/LoginActionFallback.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/RecommendedProductCuration/RecommendedProductCuration.js","https:/framerusercontent.com/modules/RPFbeF9Lxv3NmeYGd7j0/fV1PVTabW1OfQAyR3fYK/RecommendedProductCuration.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/FoldableList/Root.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/FoldableList/Root.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/FoldableList/Content.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/FoldableList/Content.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/FoldableList/Root.constants.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/FoldableList/Item.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/FoldableList/Trigger.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/FoldableList/index.js","https:/asset.29cm.co.kr/contents/framer/components/modules/CouponModule/CouponModule.utils.js","https:/asset.29cm.co.kr/contents/framer/components/modules/CouponModule/CouponModule.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/modules/CouponModule/NoticesElement/NoticesElement.utils.js","https:/asset.29cm.co.kr/contents/framer/components/modules/CouponModule/NoticesElement/NoticesElement.js","https:/asset.29cm.co.kr/contents/framer/components/systems/RandomDiscountValue/RandomDiscountValue.js","https:/asset.29cm.co.kr/contents/framer/components/modules/CouponModule/CouponElement/CouponElement.utils.js","https:/asset.29cm.co.kr/contents/framer/components/modules/CouponModule/CouponElement/CouponElement.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/modules/CouponModule/CouponElement/CouponElement.validate.js","https:/asset.29cm.co.kr/contents/framer/components/modules/CouponModule/CouponElement/CouponElement.js","https:/asset.29cm.co.kr/contents/framer/components/modules/CouponModule/LinkedCouponModule/LinkedCouponModule.js","https:/asset.29cm.co.kr/contents/framer/libs/property-controls/coupon-notices.js","https:/asset.29cm.co.kr/contents/framer/components/modules/CouponModule/CouponModule.controls.js","https:/asset.29cm.co.kr/contents/framer/components/modules/CouponModule/AutoCouponModule/AutoCouponModule.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/modules/CouponModule/AutoCouponModule/AutoCouponModule.js","https:/asset.29cm.co.kr/contents/framer/components/modules/CouponModule/CouponModule.js","https:/framerusercontent.com/modules/v2w1uRsZPJslVNIRLCeW/PgjboXO18lboOdhFrAoz/CouponModule.js"],"sourcesContent":["import { useAnalytics } from \"../analytics/useAnalytics.js\";\nimport { createContentEventProperties } from \"../../utils/event-properties/content.js\";\nimport \"../../utils/event-properties/source.js\";\nimport \"framer\";\nimport \"react\";\nconst useTrackViewComponentEvent = () => {\n  const {\n    trackAmplitude,\n    trackFirebase\n  } = useAnalytics();\n  const trackViewComponentEvent = (component, extra = {}) => {\n    const properties = {\n      ...createContentEventProperties(),\n      component,\n      ...extra\n    };\n    trackAmplitude(\"view_component_content\", properties);\n    trackFirebase(\"view_component_content\", properties);\n  };\n  return {\n    trackViewComponentEvent\n  };\n};\nexport {\n  useTrackViewComponentEvent\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { createContext } from \"react\";\nimport { useTrackViewEvent } from \"./EventTrackingProvider.hooks.js\";\nconst EventTrackingContext = createContext({\n  componentId: \"\"\n});\nconst EventTrackingProvider = ({\n  children,\n  componentId\n}) => {\n  const ref = useTrackViewEvent(componentId);\n  return /* @__PURE__ */ jsx(EventTrackingContext.Provider, { value: {\n    componentId\n  }, children: /* @__PURE__ */ jsx(\"div\", { ref, style: {\n    width: \"100%\"\n  }, children }) });\n};\nexport {\n  EventTrackingContext,\n  EventTrackingProvider\n};\n","import { useAnalytics } from \"../analytics/useAnalytics.js\";\nimport { createContentEventProperties } from \"../../utils/event-properties/content.js\";\nimport \"../../utils/event-properties/source.js\";\nimport \"framer\";\nimport \"react\";\nconst useTrackClickComponentEvent = () => {\n  const {\n    trackAmplitude,\n    trackFirebase\n  } = useAnalytics();\n  const trackClickComponentEvent = (component, extra = {}) => {\n    const properties = {\n      ...createContentEventProperties(),\n      component,\n      ...extra\n    };\n    trackAmplitude(\"click_component_content\", properties);\n    trackFirebase(\"click_component_content\", properties);\n  };\n  return {\n    trackClickComponentEvent\n  };\n};\nexport {\n  useTrackClickComponentEvent\n};\n","import { entries } from \"./entries.js\";\nconst map = (obj, create) => {\n  return entries(obj).reduce((acc, [key, value]) => {\n    acc[key] = create(value);\n    return acc;\n  }, {});\n};\nexport {\n  map\n};\n","import { useTrackSnowplowEvent } from \"../snowplow/useTrackSnowplowEvent.js\";\nconst useTrackClickTagContentEvent = () => {\n  const trackSnowplowEvent = useTrackSnowplowEvent();\n  const trackClickTagContentEvent = (component, tagProps) => {\n    trackSnowplowEvent(\"click_tag_content\", {\n      section_name: component,\n      // NOTE: (김홍동) 컴포넌트의 순서를 알 수 없기 때문에 현재는 1로 대응(데이터 팀과 언라인 완료)\n      position: 1,\n      ...tagProps\n    });\n  };\n  const trackClickButtonEvent = (componentId, layoutPosition, label = \"\") => {\n    trackSnowplowEvent(\"click_button\", {\n      // TODO(임규민): section_name, position 프로퍼티에 할당한 약속된 임의 값 수정\n      section_name: componentId,\n      section_title: componentId,\n      position: -1,\n      layout_position: layoutPosition,\n      button_id: \"tag\",\n      button_name: label\n    });\n  };\n  return {\n    trackClickTagContentEvent,\n    trackClickButtonEvent\n  };\n};\nexport {\n  useTrackClickTagContentEvent\n};\n","import { useContext, useRef, useEffect } from \"react\";\nimport { useInView } from \"framer-motion\";\nimport { useTrackViewComponentEvent } from \"../../../../hooks/events/useTrackViewComponentEvent.js\";\nimport { EventTrackingContext } from \"./EventTrackingProvider.js\";\nimport { useTrackClickComponentEvent } from \"../../../../hooks/events/useTrackClickComponentEvent.js\";\nimport { definedOnly } from \"../../../../utils/definedOnly.js\";\nimport { map } from \"../../../../utils/map.js\";\nimport { useTrackClickTagContentEvent } from \"../../../../hooks/events/useTrackClickTagContentEvent.js\";\nconst useEventTrackingContext = () => {\n  const context = useContext(EventTrackingContext);\n  return context;\n};\nconst FALLBACK_COMPONENT_ID = \"unknown_section\";\nconst useComponentId = () => {\n  const {\n    componentId\n  } = useEventTrackingContext();\n  return componentId || FALLBACK_COMPONENT_ID;\n};\nconst useTrackEvent = () => {\n  const componentId = useComponentId();\n  const {\n    trackClickComponentEvent\n  } = useTrackClickComponentEvent();\n  const {\n    trackClickTagContentEvent\n  } = useTrackClickTagContentEvent();\n  const trackEvent = (extra) => {\n    const properties = map(definedOnly(extra), String);\n    trackClickComponentEvent(componentId, properties);\n  };\n  const trackClickTagSnowplowEvent = (tagProps) => {\n    trackClickTagContentEvent(componentId, tagProps);\n  };\n  return {\n    trackEvent,\n    trackClickTagSnowplowEvent\n  };\n};\nconst useTrackViewEvent = (componentId) => {\n  const {\n    trackViewComponentEvent\n  } = useTrackViewComponentEvent();\n  const ref = useRef(null);\n  const isInView = useInView(ref, {\n    amount: 0.5\n  });\n  useEffect(() => {\n    if (!isInView) {\n      return;\n    }\n    trackViewComponentEvent(componentId);\n  }, [componentId, isInView]);\n  return ref;\n};\nexport {\n  FALLBACK_COMPONENT_ID,\n  useComponentId,\n  useEventTrackingContext,\n  useTrackEvent,\n  useTrackViewEvent\n};\n","import { toDate } from \"./toDate.js\";\nfunction compareAsc(dateLeft, dateRight) {\n  const _dateLeft = toDate(dateLeft);\n  const _dateRight = toDate(dateRight);\n  const diff = _dateLeft.getTime() - _dateRight.getTime();\n  if (diff < 0) {\n    return -1;\n  } else if (diff > 0) {\n    return 1;\n  } else {\n    return diff;\n  }\n}\nexport {\n  compareAsc,\n  compareAsc as default\n};\n","import { toDate } from \"./toDate.js\";\nfunction isWithinInterval(date, interval) {\n  const time = +toDate(date);\n  const [startTime, endTime] = [\n    +toDate(interval.start),\n    +toDate(interval.end)\n  ].sort((a, b) => a - b);\n  return time >= startTime && time <= endTime;\n}\nexport {\n  isWithinInterval as default,\n  isWithinInterval\n};\n","import { createKRTimeZoneDate } from \"./createUTCDate.js\";\nimport { isAfter } from \"../node_modules/date-fns/isAfter.js\";\nimport { compareAsc } from \"../node_modules/date-fns/compareAsc.js\";\nimport { isWithinInterval } from \"../node_modules/date-fns/isWithinInterval.js\";\nimport { isEqual } from \"../node_modules/date-fns/isEqual.js\";\nimport { parseISO } from \"../node_modules/date-fns/parseISO.js\";\nimport { isBefore } from \"../node_modules/date-fns/isBefore.js\";\nconst composeFramerDateTime = (dateTime) => {\n  const {\n    date,\n    hours,\n    minutes,\n    seconds\n  } = dateTime;\n  if (!date) {\n    return;\n  }\n  const copied = createKRTimeZoneDate(date);\n  copied.setHours(hours, minutes, seconds);\n  return copied;\n};\nconst appendFramerTime = (date, time) => {\n  const {\n    hours,\n    minutes,\n    seconds\n  } = time;\n  const copied = new Date(date);\n  copied.setHours(hours, minutes, seconds);\n  return copied;\n};\nconst isAbove = (date, dateToCompare) => isEqual(date, dateToCompare) || isAfter(date, dateToCompare);\nconst orderByDateAsc = (items, selector) => {\n  return [...items].sort((x, y) => compareAsc(selector(x), selector(y)));\n};\nconst getCurrentScheduleIndex = (list, startDateSelector, endDateSelector) => {\n  const now = createKRTimeZoneDate();\n  const currentIndex = list.findIndex((item, index) => {\n    const nextItem = list[index + 1];\n    const startDate = startDateSelector(item);\n    const endDate = endDateSelector(item, nextItem);\n    const start = parseISO(startDate.toString());\n    const end = endDate ? parseISO(endDate.toString()) : void 0;\n    const isWithin = end ? isWithinInterval(now, {\n      start,\n      end\n    }) : false;\n    const isUpcoming = isBefore(now, start);\n    const isLast = nextItem === void 0;\n    return isWithin || isUpcoming || isLast;\n  });\n  return currentIndex === -1 ? void 0 : currentIndex;\n};\nconst getScheduleStatus = (startAt, endAt) => {\n  const now = createKRTimeZoneDate();\n  const isOngoing = isWithinInterval(now, {\n    start: startAt,\n    end: endAt\n  });\n  if (isOngoing) {\n    return \"ongoing\";\n  }\n  const isUpcoming = isBefore(now, startAt);\n  if (isUpcoming) {\n    return \"upcoming\";\n  }\n  return \"end\";\n};\nexport {\n  appendFramerTime,\n  composeFramerDateTime,\n  getCurrentScheduleIndex,\n  getScheduleStatus,\n  isAbove,\n  orderByDateAsc\n};\n","const formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: \"1초 미만\",\n    other: \"{{count}}초 미만\"\n  },\n  xSeconds: {\n    one: \"1초\",\n    other: \"{{count}}초\"\n  },\n  halfAMinute: \"30초\",\n  lessThanXMinutes: {\n    one: \"1분 미만\",\n    other: \"{{count}}분 미만\"\n  },\n  xMinutes: {\n    one: \"1분\",\n    other: \"{{count}}분\"\n  },\n  aboutXHours: {\n    one: \"약 1시간\",\n    other: \"약 {{count}}시간\"\n  },\n  xHours: {\n    one: \"1시간\",\n    other: \"{{count}}시간\"\n  },\n  xDays: {\n    one: \"1일\",\n    other: \"{{count}}일\"\n  },\n  aboutXWeeks: {\n    one: \"약 1주\",\n    other: \"약 {{count}}주\"\n  },\n  xWeeks: {\n    one: \"1주\",\n    other: \"{{count}}주\"\n  },\n  aboutXMonths: {\n    one: \"약 1개월\",\n    other: \"약 {{count}}개월\"\n  },\n  xMonths: {\n    one: \"1개월\",\n    other: \"{{count}}개월\"\n  },\n  aboutXYears: {\n    one: \"약 1년\",\n    other: \"약 {{count}}년\"\n  },\n  xYears: {\n    one: \"1년\",\n    other: \"{{count}}년\"\n  },\n  overXYears: {\n    one: \"1년 이상\",\n    other: \"{{count}}년 이상\"\n  },\n  almostXYears: {\n    one: \"거의 1년\",\n    other: \"거의 {{count}}년\"\n  }\n};\nconst formatDistance = (token, count, options) => {\n  let result;\n  const tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === \"string\") {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace(\"{{count}}\", count.toString());\n  }\n  if (options == null ? void 0 : options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return result + \" 후\";\n    } else {\n      return result + \" 전\";\n    }\n  }\n  return result;\n};\nexport {\n  formatDistance\n};\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\nconst dateFormats = {\n  full: \"y년 M월 d일 EEEE\",\n  long: \"y년 M월 d일\",\n  medium: \"y.MM.dd\",\n  short: \"y.MM.dd\"\n};\nconst timeFormats = {\n  full: \"a H시 mm분 ss초 zzzz\",\n  long: \"a H:mm:ss z\",\n  medium: \"HH:mm:ss\",\n  short: \"HH:mm\"\n};\nconst dateTimeFormats = {\n  full: \"{{date}} {{time}}\",\n  long: \"{{date}} {{time}}\",\n  medium: \"{{date}} {{time}}\",\n  short: \"{{date}} {{time}}\"\n};\nconst formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: \"full\"\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: \"full\"\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: \"full\"\n  })\n};\nexport {\n  formatLong\n};\n","const formatRelativeLocale = {\n  lastWeek: \"'지난' eeee p\",\n  yesterday: \"'어제' p\",\n  today: \"'오늘' p\",\n  tomorrow: \"'내일' p\",\n  nextWeek: \"'다음' eeee p\",\n  other: \"P\"\n};\nconst formatRelative = (token, _date, _baseDate, _options) => formatRelativeLocale[token];\nexport {\n  formatRelative\n};\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\nconst eraValues = {\n  narrow: [\"BC\", \"AD\"],\n  abbreviated: [\"BC\", \"AD\"],\n  wide: [\"기원전\", \"서기\"]\n};\nconst quarterValues = {\n  narrow: [\"1\", \"2\", \"3\", \"4\"],\n  abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n  wide: [\"1분기\", \"2분기\", \"3분기\", \"4분기\"]\n};\nconst monthValues = {\n  narrow: [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"],\n  abbreviated: [\n    \"1월\",\n    \"2월\",\n    \"3월\",\n    \"4월\",\n    \"5월\",\n    \"6월\",\n    \"7월\",\n    \"8월\",\n    \"9월\",\n    \"10월\",\n    \"11월\",\n    \"12월\"\n  ],\n  wide: [\n    \"1월\",\n    \"2월\",\n    \"3월\",\n    \"4월\",\n    \"5월\",\n    \"6월\",\n    \"7월\",\n    \"8월\",\n    \"9월\",\n    \"10월\",\n    \"11월\",\n    \"12월\"\n  ]\n};\nconst dayValues = {\n  narrow: [\"일\", \"월\", \"화\", \"수\", \"목\", \"금\", \"토\"],\n  short: [\"일\", \"월\", \"화\", \"수\", \"목\", \"금\", \"토\"],\n  abbreviated: [\"일\", \"월\", \"화\", \"수\", \"목\", \"금\", \"토\"],\n  wide: [\"일요일\", \"월요일\", \"화요일\", \"수요일\", \"목요일\", \"금요일\", \"토요일\"]\n};\nconst dayPeriodValues = {\n  narrow: {\n    am: \"오전\",\n    pm: \"오후\",\n    midnight: \"자정\",\n    noon: \"정오\",\n    morning: \"아침\",\n    afternoon: \"오후\",\n    evening: \"저녁\",\n    night: \"밤\"\n  },\n  abbreviated: {\n    am: \"오전\",\n    pm: \"오후\",\n    midnight: \"자정\",\n    noon: \"정오\",\n    morning: \"아침\",\n    afternoon: \"오후\",\n    evening: \"저녁\",\n    night: \"밤\"\n  },\n  wide: {\n    am: \"오전\",\n    pm: \"오후\",\n    midnight: \"자정\",\n    noon: \"정오\",\n    morning: \"아침\",\n    afternoon: \"오후\",\n    evening: \"저녁\",\n    night: \"밤\"\n  }\n};\nconst formattingDayPeriodValues = {\n  narrow: {\n    am: \"오전\",\n    pm: \"오후\",\n    midnight: \"자정\",\n    noon: \"정오\",\n    morning: \"아침\",\n    afternoon: \"오후\",\n    evening: \"저녁\",\n    night: \"밤\"\n  },\n  abbreviated: {\n    am: \"오전\",\n    pm: \"오후\",\n    midnight: \"자정\",\n    noon: \"정오\",\n    morning: \"아침\",\n    afternoon: \"오후\",\n    evening: \"저녁\",\n    night: \"밤\"\n  },\n  wide: {\n    am: \"오전\",\n    pm: \"오후\",\n    midnight: \"자정\",\n    noon: \"정오\",\n    morning: \"아침\",\n    afternoon: \"오후\",\n    evening: \"저녁\",\n    night: \"밤\"\n  }\n};\nconst ordinalNumber = (dirtyNumber, options) => {\n  const number = Number(dirtyNumber);\n  const unit = String(options == null ? void 0 : options.unit);\n  switch (unit) {\n    case \"minute\":\n    case \"second\":\n      return String(number);\n    case \"date\":\n      return number + \"일\";\n    default:\n      return number + \"번째\";\n  }\n};\nconst localize = {\n  ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: \"wide\"\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: \"wide\",\n    argumentCallback: (quarter) => quarter - 1\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: \"wide\"\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: \"wide\"\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: \"wide\",\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: \"wide\"\n  })\n};\nexport {\n  localize\n};\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\nconst matchOrdinalNumberPattern = /^(\\d+)(일|번째)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\nconst matchEraPatterns = {\n  narrow: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(기원전|서기)/i\n};\nconst parseEraPatterns = {\n  any: [/^(bc|기원전)/i, /^(ad|서기)/i]\n};\nconst matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234]사?분기/i\n};\nconst parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nconst matchMonthPatterns = {\n  narrow: /^(1[012]|[123456789])/,\n  abbreviated: /^(1[012]|[123456789])월/i,\n  wide: /^(1[012]|[123456789])월/i\n};\nconst parseMonthPatterns = {\n  any: [\n    /^1월?$/,\n    /^2/,\n    /^3/,\n    /^4/,\n    /^5/,\n    /^6/,\n    /^7/,\n    /^8/,\n    /^9/,\n    /^10/,\n    /^11/,\n    /^12/\n  ]\n};\nconst matchDayPatterns = {\n  narrow: /^[일월화수목금토]/,\n  short: /^[일월화수목금토]/,\n  abbreviated: /^[일월화수목금토]/,\n  wide: /^[일월화수목금토]요일/\n};\nconst parseDayPatterns = {\n  any: [/^일/, /^월/, /^화/, /^수/, /^목/, /^금/, /^토/]\n};\nconst matchDayPeriodPatterns = {\n  any: /^(am|pm|오전|오후|자정|정오|아침|저녁|밤)/i\n};\nconst parseDayPeriodPatterns = {\n  any: {\n    am: /^(am|오전)/i,\n    pm: /^(pm|오후)/i,\n    midnight: /^자정/i,\n    noon: /^정오/i,\n    morning: /^아침/i,\n    afternoon: /^오후/i,\n    evening: /^저녁/i,\n    night: /^밤/i\n  }\n};\nconst match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: (value) => parseInt(value, 10)\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: \"any\"\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: \"any\",\n    valueCallback: (index) => index + 1\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: \"any\"\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: \"any\"\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: \"any\",\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: \"any\"\n  })\n};\nexport {\n  match\n};\n","import { formatDistance } from \"./ko/_lib/formatDistance.js\";\nimport { formatLong } from \"./ko/_lib/formatLong.js\";\nimport { formatRelative } from \"./ko/_lib/formatRelative.js\";\nimport { localize } from \"./ko/_lib/localize.js\";\nimport { match } from \"./ko/_lib/match.js\";\nconst ko = {\n  code: \"ko\",\n  formatDistance,\n  formatLong,\n  formatRelative,\n  localize,\n  match,\n  options: {\n    weekStartsOn: 0,\n    firstWeekContainsDate: 1\n  }\n};\nexport {\n  ko as default,\n  ko\n};\n","import { createKRTimeZoneDate } from \"../../../../../utils/createUTCDate.js\";\nimport { isAbove } from \"../../../../../utils/date.js\";\nimport { ko } from \"../../../../../node_modules/date-fns/locale/ko.js\";\nimport { isWithinInterval } from \"../../../../../node_modules/date-fns/isWithinInterval.js\";\nimport { formatDate as format } from \"../../../../../node_modules/date-fns/format.js\";\nimport { differenceInHours } from \"../../../../../node_modules/date-fns/differenceInHours.js\";\nconst STANDARD_DIFF_HOURS = 48;\nconst getCurrentBrandSaleIndex = (brandSaleList) => {\n  const now = createKRTimeZoneDate();\n  const currentIndex = brandSaleList.findIndex((brandSale, index) => {\n    const nextInterval = brandSaleList[index + 1];\n    const hasNext = nextInterval !== void 0;\n    const start = new Date(brandSale.displayStartAt);\n    const end = new Date(brandSale.displayEndAt);\n    const isWithin = hasNext && isWithinInterval(now, {\n      start,\n      end\n    });\n    const isLast = !hasNext && isAbove(now, start);\n    return isWithin || isLast;\n  });\n  return currentIndex === -1 ? void 0 : currentIndex;\n};\nconst getCalendarTagName = ({\n  displayStartAt,\n  displayEndAt\n}) => {\n  const defaultTagName = format(displayStartAt, \"M. d eeeee\", {\n    locale: ko\n  });\n  if (!displayEndAt) {\n    return defaultTagName;\n  }\n  const diff = differenceInHours(displayEndAt, displayStartAt);\n  if (diff > STANDARD_DIFF_HOURS) {\n    return `${defaultTagName} 시작`;\n  }\n  return defaultTagName;\n};\nexport {\n  getCalendarTagName,\n  getCurrentBrandSaleIndex\n};\n","import { throwFailError } from \"../@middlewares/throwFailError.js\";\nimport { APIService } from \"../APIService.js\";\nimport { env } from \"../../config/index.js\";\nclass BrandSaleApiService extends APIService {\n  constructor() {\n    super();\n    this.setBaseUrl(env.api.content);\n    this.setMiddleware(throwFailError);\n  }\n  // NOTE: (김홍동) 구 이굿입점회(BrandTimeSale) 신 이굿입점회(CouponCollection)에서 사용되는 api로 brandSaleList를 받아옵니다.\n  // brandSaleList은 그룹별로 어떤 brandSaleId이 있는지 확인할 수 있습니다. 이굿입점회에서는 그룹별 시작 날짜를 가져와 탭을 그리는데 사용됩니다.\n  getBrandSaleGroup(brandSaleGroupId) {\n    return this.get(`/api/v4/framers/proxy/content-api/api/v4/brand-sale-groups/${brandSaleGroupId}`);\n  }\n  // NOTE: (김홍동) 구 이굿입점회(BrandTimeSale) 신 이굿입점회(CouponCollection)에서 사용되는 api로 brandSaleCouponList를 받아옵니다.\n  // brandSaleCouponList에서는 쿠폰의 정보, 브랜드의 정보를 알 수 있습니다.\n  getBrandSales(brandSaleId) {\n    return this.get(`/api/v4/framers/proxy/content-api/api/v4/brand-sales/${brandSaleId}`);\n  }\n  // NOTE: (김홍동) 구 이굿입점회(CouponCollection)에서 사용되는 api로 상품리스트를 받아옵니다. 페이지네이션을 제공하지 않습니다.\n  getBrandSaleCouponDetail(brandSaleCouponId, size) {\n    return this.get(`/api/v4/framers/proxy/content-api/api/v4/brand-sale-coupons/${brandSaleCouponId}`, {\n      size\n    });\n  }\n  // NOTE: (김홍동) 신 이굿입점회(CouponCollection)에서 사용되는 api로 getBrandSales에서 각 브랜드의 couponCollectionId를 바탕으로 상품리스트를 받아옵니다. 페이지네이션을 제공합니다.\n  async getCouponCollectionProducts(couponCollectionId, params) {\n    return this.get(`/api/v4/framers/proxy/content-api/api/v5/coupon-collections/${couponCollectionId}/products`, params).then((res) => {\n      return {\n        ...res.data,\n        resultList: formatProducts(res.data.resultList)\n      };\n    });\n  }\n}\nconst brandSaleApi = new BrandSaleApiService();\nconst formatProducts = (products) => products.map((product) => {\n  var _a;\n  return {\n    ...product,\n    frontBrand: {\n      frontBrandId: product.frontBrand.id,\n      nameKor: product.frontBrand.nameKor,\n      nameEng: product.frontBrand.nameEng\n    },\n    isCoupon: product.saleInfo.coupon,\n    isFreeShipping: product.freeShipping,\n    isNew: product.newProperty,\n    isSoldOut: product.soldOut,\n    frontCategories: (_a = product.frontCategories) == null ? void 0 : _a.map((category) => ({\n      largeCategoryCode: category.largeCode ?? 0,\n      largeCategoryName: category.largeName ?? \"\",\n      mediumCategoryCode: category.mediumCode ?? 0,\n      mediumCategoryName: category.mediumName ?? \"\",\n      smallCategoryCode: category.smallCode ?? 0,\n      smallCategoryName: category.smallName ?? \"\"\n    }))\n  };\n});\nexport {\n  brandSaleApi\n};\n","import useSWR from \"../../node_modules/swr/core/dist/index.js\";\nimport { brandSaleApi } from \"../../apis/brand-sale/BrandSaleApiService.js\";\nconst BRAND_SALE_GROUP = \"brand-sale-group\";\nconst useFetchBrandSaleGroup = (brandSaleGroupId, enabled = true) => {\n  const {\n    isLoading,\n    ...rest\n  } = useSWR(enabled ? [BRAND_SALE_GROUP, brandSaleGroupId] : null, () => brandSaleApi.getBrandSaleGroup(brandSaleGroupId), {\n    keepPreviousData: true\n  });\n  return {\n    isLoading: isLoading || !enabled,\n    ...rest\n  };\n};\nexport {\n  useFetchBrandSaleGroup\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { useInView } from \"framer-motion\";\nimport { createContext, useRef } from \"react\";\nconst IntersectionContext = createContext({\n  isInView: false\n});\nconst IntersectionProvider = ({\n  children,\n  ...rest\n}) => {\n  const ref = useRef(null);\n  const isInView = useInView(ref, rest);\n  return /* @__PURE__ */ jsx(IntersectionContext.Provider, { value: {\n    isInView\n  }, children: /* @__PURE__ */ jsx(\"div\", { ref, style: {\n    width: \"100%\"\n  }, children }) });\n};\nexport {\n  IntersectionContext,\n  IntersectionProvider\n};\n","import { useContext } from \"react\";\nimport { IntersectionContext } from \"./IntersectionProvider.js\";\nconst useIntersectionContext = () => {\n  return useContext(IntersectionContext);\n};\nexport {\n  useIntersectionContext\n};\n","const getRestScrollWidth = (element) => {\n  const {\n    scrollWidth = 0,\n    offsetWidth = 0\n  } = element ?? {};\n  return scrollWidth - offsetWidth;\n};\nexport {\n  getRestScrollWidth\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { useMotionValue, clamp, animate } from \"framer-motion\";\nimport { createContext, forwardRef, useRef, useState, useLayoutEffect, useEffect } from \"react\";\nimport { getRestScrollWidth } from \"../../../utils/getRestScrollWidth.js\";\nconst DraggableTabsContext = createContext(null);\nconst Root = forwardRef(({\n  children,\n  style,\n  defaultValue,\n  value,\n  dragPaddingLeft = 0,\n  dragPaddingRight = 0,\n  onValueChange,\n  ...rest\n}, ref) => {\n  const refs = useRef(/* @__PURE__ */ new Map());\n  const listRef = useRef(null);\n  const [firstValue] = refs.current.keys();\n  const [currentValue, setCurrentValue] = useState(defaultValue ?? value ?? firstValue);\n  const listX = useMotionValue(0);\n  const focusTo = (incoming, smooth = true) => {\n    const item = refs.current.get(incoming);\n    if (item === void 0) {\n      return;\n    }\n    const threshold = getRestScrollWidth(listRef.current);\n    const finalX = -clamp(0, threshold, item.offsetLeft - dragPaddingLeft);\n    if (smooth) {\n      animate(listX, finalX, {\n        type: \"spring\",\n        stiffness: 400,\n        damping: 50\n      });\n    } else {\n      listX.set(finalX);\n    }\n  };\n  const move = (next) => {\n    onValueChange == null ? void 0 : onValueChange(next);\n    setCurrentValue(next);\n    focusTo(next);\n  };\n  useLayoutEffect(() => {\n    if (defaultValue) {\n      focusTo(defaultValue, false);\n    }\n  }, []);\n  useEffect(() => {\n    if (value) {\n      move(value);\n    }\n  }, [value]);\n  const context = {\n    refs,\n    listRef,\n    currentValue,\n    listX,\n    dragPaddingLeft,\n    dragPaddingRight,\n    move\n  };\n  return /* @__PURE__ */ jsx(DraggableTabsContext.Provider, { value: context, children: /* @__PURE__ */ jsx(\"div\", { ref, ...rest, style: {\n    ...style,\n    ...containerStyle\n  }, children }) });\n});\nconst containerStyle = {\n  display: \"flex\",\n  flexDirection: \"column\"\n};\nexport {\n  DraggableTabsContext,\n  Root\n};\n","import { useContext } from \"react\";\nimport { DraggableTabsContext } from \"./Root.js\";\nconst useDraggableTabsContext = () => {\n  const context = useContext(DraggableTabsContext);\n  if (!context) {\n    throw new Error(\"useDraggableTabsContext should be used within Root\");\n  }\n  return context;\n};\nexport {\n  useDraggableTabsContext\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { useTransform, motion, useMotionValue, useMotionValueEvent } from \"framer-motion\";\nimport { useDraggableTabsContext } from \"./Root.hooks.js\";\nimport { forwardRef, useState, useEffect } from \"react\";\nimport { getRestScrollWidth } from \"../../../utils/getRestScrollWidth.js\";\nconst Gradient = forwardRef(({\n  style,\n  theme = \"light\",\n  ...props\n}, ref) => {\n  const {\n    listRef\n  } = useDraggableTabsContext();\n  const xProgress = useListXProgress();\n  const opacity = useTransform(xProgress, [0.95, 1], [1, 0]);\n  const [hidden, setHidden] = useState(true);\n  useEffect(() => {\n    const container = listRef.current;\n    if (container === null) {\n      return;\n    }\n    setHidden(container.scrollWidth <= container.clientWidth);\n  }, []);\n  return /* @__PURE__ */ jsx(motion.div, { ref, ...props, style: {\n    ...gradientStyle,\n    ...gradientStyleByTheme[theme],\n    opacity: hidden ? 0 : opacity,\n    ...style\n  } });\n});\nconst useListXProgress = () => {\n  const {\n    listX,\n    listRef\n  } = useDraggableTabsContext();\n  const xProgress = useMotionValue(0);\n  useMotionValueEvent(listX, \"change\", (latest) => {\n    xProgress.set(-latest / getRestScrollWidth(listRef.current));\n  });\n  return xProgress;\n};\nconst gradientStyle = {\n  position: \"absolute\",\n  zIndex: 8,\n  inset: \"0 0 0 auto\",\n  pointerEvents: \"none\",\n  width: 60\n};\nconst gradientStyleByTheme = {\n  light: {\n    background: \"linear-gradient(270deg, #ffffff 0%, rgba(0, 0, 0, 0) 100%)\"\n  },\n  dark: {\n    background: \"linear-gradient(270deg, #000000 0%, rgba(0, 0, 0, 0) 100%)\"\n  }\n};\nexport {\n  Gradient\n};\n","const closest = (array, target) => {\n  return array.reduce((prev, curr) => Math.abs(curr - target) < Math.abs(prev - target) ? curr : prev, 0);\n};\nexport {\n  closest\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef, useState, useLayoutEffect, useEffect } from \"react\";\nimport { withCSS } from \"framer\";\nimport { motion, clamp, animate } from \"framer-motion\";\nimport { closest } from \"../../../utils/closest.js\";\nimport { getRestScrollWidth } from \"../../../utils/getRestScrollWidth.js\";\nimport { mergeRefs } from \"../../../utils/react/mergeRefs.js\";\nimport { useDraggableTabsContext } from \"./Root.hooks.js\";\nconst COMPONENT_NAME = \"tabs-list\";\nconst INITIAL_DAMPING = 0.4;\nconst css = [`\n    .${COMPONENT_NAME}-container::-webkit-scrollbar {\n      display: none;\n    }\n  `];\nconst List = withCSS(forwardRef(({\n  children,\n  style,\n  gap = 0,\n  damping = INITIAL_DAMPING,\n  ...rest\n}, ref) => {\n  const {\n    listRef,\n    refs,\n    listX,\n    dragPaddingLeft,\n    dragPaddingRight\n  } = useDraggableTabsContext();\n  const [constraints, setConstraints] = useState({\n    left: 0,\n    right: 0\n  });\n  const updateConstraints = () => {\n    if (!listRef.current) {\n      return;\n    }\n    const maxScroll = getRestScrollWidth(listRef.current);\n    const newLeft = -maxScroll;\n    setConstraints((prev) => {\n      if (prev.left === newLeft) {\n        return prev;\n      }\n      return {\n        left: newLeft,\n        right: 0\n      };\n    });\n  };\n  const getChildrenPositions = () => {\n    return Array.from(refs.current.values()).map((element) => element.offsetLeft);\n  };\n  const handleDragEnd = (_, {\n    velocity\n  }) => {\n    const destinationX = listX.get() + velocity.x * damping;\n    const closestX = closest(getChildrenPositions(), -destinationX);\n    const threshold = getRestScrollWidth(listRef.current);\n    const finalX = -clamp(0, threshold, closestX - dragPaddingLeft);\n    animate(listX, finalX, {\n      type: \"spring\",\n      stiffness: 200,\n      damping: 50\n    });\n  };\n  useLayoutEffect(() => {\n    updateConstraints();\n  }, []);\n  useEffect(() => {\n    const container = listRef.current;\n    if (!container) {\n      return;\n    }\n    const resizeObserver = new ResizeObserver(() => {\n      updateConstraints();\n    });\n    resizeObserver.observe(container);\n    return () => {\n      resizeObserver.disconnect();\n    };\n  }, []);\n  return /* @__PURE__ */ jsx(\"div\", { ref: mergeRefs([ref, listRef]), className: `${COMPONENT_NAME}-container`, style: {\n    ...containerStyle,\n    ...style\n  }, ...rest, children: /* @__PURE__ */ jsx(motion.div, { style: {\n    ...listStyle,\n    x: listX,\n    gap,\n    paddingLeft: dragPaddingLeft,\n    paddingRight: dragPaddingRight\n  }, drag: \"x\", dragElastic: 0.1, dragConstraints: constraints, dragPropagation: false, onDragEnd: handleDragEnd, whileDrag: {\n    pointerEvents: \"none\"\n  }, children }) });\n}), css);\nconst containerStyle = {\n  position: \"relative\",\n  zIndex: 8,\n  width: \"100%\",\n  overflow: \"hidden\",\n  msOverflowStyle: \"none\",\n  scrollbarWidth: \"none\",\n  cursor: \"grab\"\n};\nconst listStyle = {\n  display: \"inline-flex\",\n  minWidth: \"100%\"\n};\nexport {\n  List\n};\n","import { useDraggableTabsContext } from \"./Root.hooks.js\";\nconst Panel = ({\n  children,\n  value\n}) => {\n  const {\n    currentValue\n  } = useDraggableTabsContext();\n  const isCurrent = value === currentValue;\n  return isCurrent ? children : null;\n};\nexport {\n  Panel\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport { useDraggableTabsContext } from \"./Root.hooks.js\";\nimport { mergeRefs } from \"../../../utils/react/mergeRefs.js\";\nimport { isFunction } from \"../../../utils/function.js\";\nimport { playHaptic } from \"../../../utils/playHaptic.js\";\nconst Trigger = forwardRef(({\n  children,\n  style,\n  value,\n  onClick,\n  ...rest\n}, ref) => {\n  const {\n    refs,\n    currentValue,\n    move\n  } = useDraggableTabsContext();\n  const isCurrent = value === currentValue;\n  const register = (incoming) => (element) => {\n    refs.current.set(incoming, element);\n  };\n  const handleClick = (e) => {\n    onClick == null ? void 0 : onClick(e);\n    move(value);\n    playHaptic(\"rigid\");\n  };\n  return /* @__PURE__ */ jsx(\"div\", { ref: mergeRefs([ref, register(value)]), style: {\n    ...containerStyle,\n    ...style\n  }, ...rest, onClick: handleClick, children: isFunction(children) ? children(isCurrent) : children });\n});\nconst containerStyle = {\n  position: \"relative\",\n  display: \"flex\",\n  flex: \"0 0 auto\",\n  alignItems: \"center\",\n  justifyContent: \"center\",\n  cursor: \"pointer\",\n  scrollSnapAlign: \"start\"\n};\nexport {\n  Trigger\n};\n","import { Gradient } from \"./Gradient.js\";\nimport { List } from \"./List.js\";\nimport { Panel } from \"./Panel.js\";\nimport { Root } from \"./Root.js\";\nimport { Trigger } from \"./Trigger.js\";\nconst DraggableTabs = {\n  Root,\n  List,\n  Trigger,\n  Panel,\n  Gradient\n};\nexport {\n  DraggableTabs\n};\n","import { useContext } from \"react\";\nimport { BreakpointContext } from \"./BreakpointProvider.js\";\nconst useBreakpointContext = () => {\n  return useContext(BreakpointContext);\n};\nexport {\n  useBreakpointContext\n};\n","import \"../components/@shared/providers/BreakpointProvider/BreakpointProvider.js\";\nimport { useBreakpointContext } from \"../components/@shared/providers/BreakpointProvider/BreakpointProvider.hooks.js\";\nconst useBreakpoint = () => {\n  const {\n    breakpoint\n  } = useBreakpointContext();\n  return breakpoint;\n};\nexport {\n  useBreakpoint\n};\n","var Breakpoint = /* @__PURE__ */ ((Breakpoint2) => {\n  Breakpoint2[\"DESKTOP\"] = \"desktop\";\n  Breakpoint2[\"TABLET\"] = \"tablet\";\n  Breakpoint2[\"MOBILE\"] = \"mobile\";\n  return Breakpoint2;\n})(Breakpoint || {});\nexport {\n  Breakpoint\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { createContext, forwardRef } from \"react\";\nimport { DraggableTabs } from \"../../../@shared/DraggableTabs/index.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 \"../../../../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 \"../../../@shared/providers/ThemeProvider/ThemeProvider.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 \"../../../../utils/redirectLogin.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { Breakpoint } from \"../../../../styles/breakpoint.js\";\nconst TagsContext = createContext(null);\nconst Root = forwardRef(({\n  children,\n  loading = false,\n  defaultValue,\n  value,\n  dragPaddingLeft,\n  dragPaddingRight,\n  onValueChange\n}, ref) => {\n  const breakpoint = useBreakpoint();\n  const sidePadding = sidePaddingByBreakpoint[breakpoint];\n  return /* @__PURE__ */ jsx(TagsContext.Provider, { value: {\n    loading\n  }, children: /* @__PURE__ */ jsx(DraggableTabs.Root, { ref, defaultValue, value, dragPaddingLeft: dragPaddingLeft ?? sidePadding, dragPaddingRight: dragPaddingRight ?? sidePadding, onValueChange, children }) });\n});\nconst sidePaddingByBreakpoint = {\n  [Breakpoint.DESKTOP]: 0,\n  [Breakpoint.TABLET]: 20,\n  [Breakpoint.MOBILE]: 20\n};\nexport {\n  Root,\n  TagsContext\n};\n","import { useContext } from \"react\";\nimport { ThemeContext } from \"./ThemeProvider.js\";\nconst useThemeContext = () => {\n  return useContext(ThemeContext);\n};\nexport {\n  useThemeContext\n};\n","import \"../components/@shared/providers/ThemeProvider/ThemeProvider.js\";\nimport { useThemeContext } from \"../components/@shared/providers/ThemeProvider/ThemeProvider.hooks.js\";\nconst useTheme = () => {\n  const {\n    theme\n  } = useThemeContext();\n  return theme;\n};\nexport {\n  useTheme\n};\n","import { useContext } from \"react\";\nimport { TagsContext } from \"./Root.js\";\nconst useTagsContext = () => {\n  const context = useContext(TagsContext);\n  if (!context) {\n    throw new Error(\"useTagsContext should be used within Root\");\n  }\n  return context;\n};\nexport {\n  useTagsContext\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport { forwardRef, Fragment } from \"react\";\nimport { DraggableTabs } from \"../../../@shared/DraggableTabs/index.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 \"../../../../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 { 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 \"../../../../utils/redirectLogin.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { Breakpoint } from \"../../../../styles/breakpoint.js\";\nimport { useTagsContext } from \"./Root.hooks.js\";\nconst LIST_GAP = 6;\nconst SKELETONS_PER_PENDING = 3;\nconst List = ({\n  style,\n  children,\n  list\n}, ref) => {\n  const breakpoint = useBreakpoint();\n  const theme = useTheme();\n  const {\n    loading\n  } = useTagsContext();\n  const pending = loading && list.length === 0;\n  const shouldRenderGradient = !pending && breakpoint !== Breakpoint.MOBILE;\n  return /* @__PURE__ */ jsxs(\"div\", { style: {\n    ...containerStyle,\n    ...style\n  }, children: [\n    /* @__PURE__ */ jsxs(DraggableTabs.List, { ref, gap: LIST_GAP, children: [\n      list.map((item, index) => (\n        // eslint-disable-next-line react/no-array-index-key\n        /* @__PURE__ */ jsx(Fragment, { children: children({\n          index,\n          pending,\n          item\n        }) }, index)\n      )),\n      pending ? Array.from({\n        length: SKELETONS_PER_PENDING\n      }).map((_, index) => (\n        // eslint-disable-next-line react/no-array-index-key\n        /* @__PURE__ */ jsx(Fragment, { children: children({\n          index,\n          pending\n        }) }, index)\n      )) : null\n    ] }),\n    shouldRenderGradient ? /* @__PURE__ */ jsx(DraggableTabs.Gradient, { theme }) : null\n  ] });\n};\nconst Default = forwardRef(List);\nconst containerStyle = {\n  position: \"relative\",\n  width: \"100%\",\n  marginBottom: 16,\n  overflow: \"hidden\"\n};\nexport {\n  Default as List\n};\n","import { tv as g } from \"../../packages/configs/tailwind-variants/index.js\";\nconst t = g({\n  base: \"focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-1 focus-visible:outline-interactive\"\n}), a = g({\n  slots: {\n    base: [t(), \"inline-flex cursor-pointer items-center justify-center rounded-full px-14 py-6\"],\n    label: \"text-m-medium\"\n  },\n  variants: {\n    active: {\n      true: {},\n      false: {}\n    },\n    theme: {\n      light: {\n        label: \"hover:text-primary-hover  active:text-primary-pressed\"\n      },\n      dark: {}\n    },\n    disabled: {\n      true: {\n        base: \"cursor-not-allowed bg-disabled [&_*]:cursor-not-allowed\",\n        label: \"text-disabled hover:text-disabled active:text-disabled\",\n        icon: \"text-disabled\"\n      }\n    }\n  },\n  compoundVariants: [\n    {\n      active: true,\n      disabled: false,\n      theme: \"light\",\n      class: {\n        base: \"pressed:bg-primary-pressed bg-primary text-on-color hover:bg-primary-hover\",\n        label: \"text-on-color hover:text-on-white-hover active:text-on-white-pressed\"\n      }\n    },\n    {\n      active: true,\n      disabled: false,\n      theme: \"dark\",\n      class: {\n        base: \"pressed:bg-primary-pressed bg-[#3d3d3d] text-on-color\",\n        label: \"text-on-color\"\n      }\n    },\n    {\n      active: false,\n      disabled: false,\n      theme: \"light\",\n      class: {\n        base: \"bg-tertiary text-secondary\",\n        label: \"text-secondary hover:text-secondary-hover active:text-secondary-pressed\"\n      }\n    },\n    {\n      active: false,\n      disabled: false,\n      theme: \"dark\",\n      class: {\n        base: \"bg-[#19191a] text-secondary-dark\",\n        label: \"text-secondary-dark\"\n      }\n    }\n  ],\n  defaultVariants: {\n    disabled: false\n  }\n});\nexport {\n  t as baseFocusVisible,\n  a as baseTag\n};\n","import { cn as a } from \"../../packages/configs/tailwind-variants/index.js\";\nimport { useCallback, useMemo } from \"react\";\nconst C = (o) => {\n  const { disabled: s, onClick: e, className: a$1, bgClass: c } = o, l = useCallback(() => {\n    !s && e && e();\n  }, [s, e]), n = useMemo(() => a(s ? \"\" : c, a$1), [s, c]);\n  return {\n    handleClick: l,\n    className: n\n  };\n};\nexport {\n  C as useTag\n};\n","import { j as m } from \"../../../node_modules/.pnpm/react@18.3.0/node_modules/react/jsx-runtime.js\";\nimport { tv as g } from \"../../../packages/configs/tailwind-variants/index.js\";\nimport { forwardRef } from \"react\";\nimport { baseTag as a } from \"../Tag.styles.js\";\nimport { useTag as C } from \"../useTag.js\";\nconst N = g({\n  extend: a\n}), d = forwardRef(\n  ({ className: t, active: e = false, theme: a2 = \"light\", disabled: s, onClick: r, children: m$1, bgClass: l, ...c }, n) => {\n    const { base: g2, label: i } = N({ active: e, theme: a2, disabled: s }), { handleClick: p, className: f } = C({ disabled: s, onClick: r, bgClass: l, className: t });\n    return /* @__PURE__ */ m.jsx(\n      \"button\",\n      {\n        ...c,\n        ref: n,\n        className: g2({ className: f }),\n        onClick: p,\n        disabled: s,\n        children: /* @__PURE__ */ m.jsx(\"span\", { className: i(), children: m$1 })\n      }\n    );\n  }\n);\nexport {\n  d as ToggleTag\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport { Skeleton } from \"../Skeleton/Skeleton.js\";\nconst TagSkeleton = forwardRef(({\n  theme = \"light\"\n}, ref) => {\n  return /* @__PURE__ */ jsx(Skeleton, { ref, style: {\n    width: 73,\n    height: \"29px\",\n    borderRadius: 20,\n    ...baseStyleByTheme[theme]\n  } });\n});\nconst baseStyleByTheme = {\n  light: {\n    backgroundColor: \"#dee2e6\"\n  },\n  dark: {\n    backgroundColor: \"#27272a\"\n  }\n};\nexport {\n  TagSkeleton\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport { DraggableTabs } from \"../../../@shared/DraggableTabs/index.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 \"../../../../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 \"../../Dialog/Dialog.module.css.js\";\nimport \"framer-motion\";\nimport \"../../../../containers/DialogContainer/DialogContainer.emitter.js\";\nimport \"../../../../utils/redirectLogin.js\";\nimport { ToggleTag as d } from \"../../../../node_modules/@29cm/ruler-ui/dist/components/Tag/ToggleTag/ToggleTag.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { useTagsContext } from \"./Root.hooks.js\";\nimport { TagSkeleton } from \"../../../@shared/TagSkeleton/TagSkeleton.js\";\nconst Item = forwardRef(({\n  children,\n  value,\n  onClick\n}, ref) => {\n  const {\n    loading\n  } = useTagsContext();\n  const theme = useTheme();\n  if (loading) {\n    return /* @__PURE__ */ jsx(TagSkeleton, { theme });\n  }\n  return /* @__PURE__ */ jsx(DraggableTabs.Trigger, { ref, value, onClick, children: (active) => /* @__PURE__ */ jsx(d, { active, theme, className: \"whitespace-nowrap\", children }) });\n});\nexport {\n  Item\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { Fragment } from \"react\";\nimport { useTagsContext } from \"./Root.hooks.js\";\nconst Panels = ({\n  children,\n  list\n}) => {\n  const {\n    loading\n  } = useTagsContext();\n  const pending = loading && list.length === 0;\n  if (pending) {\n    return children({\n      index: 0,\n      pending\n    });\n  }\n  return list.map((item, index) => (\n    // eslint-disable-next-line react/no-array-index-key\n    /* @__PURE__ */ jsx(Fragment, { children: children({\n      index,\n      pending,\n      item\n    }) }, index)\n  ));\n};\nexport {\n  Panels\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { DraggableTabs } from \"../../../@shared/DraggableTabs/index.js\";\nimport { useTagsContext } from \"./Root.hooks.js\";\nconst Panel = ({\n  children,\n  value\n}) => {\n  const {\n    loading\n  } = useTagsContext();\n  if (loading) {\n    return children;\n  }\n  return /* @__PURE__ */ jsx(DraggableTabs.Panel, { value, children });\n};\nexport {\n  Panel\n};\n","import { Root } from \"./Root.js\";\nimport { List as Default } from \"./List.js\";\nimport { Item } from \"./Item.js\";\nimport { Panels } from \"./Panels.js\";\nimport { Panel } from \"./Panel.js\";\nconst Tags = {\n  Root,\n  List: Default,\n  Item,\n  Panels,\n  Panel\n};\nexport {\n  Tags\n};\n","import { useRef, useCallback } from \"react\";\nimport { useUpdatedRef } from \"./useUpdatedRef.js\";\nimport { useWindowEventListener } from \"./useWindowEventListener.js\";\nconst useInViewport = (callback) => {\n  const ref = useRef(null);\n  const prevIsInViewport = useRef(false);\n  const updatedCallback = useUpdatedRef(callback);\n  const handleScroll = useCallback(() => {\n    if (ref.current === null) {\n      return;\n    }\n    const isInViewport = getIsInViewport(ref.current);\n    if (isInViewport !== prevIsInViewport.current) {\n      updatedCallback.current(isInViewport);\n    }\n    prevIsInViewport.current = isInViewport;\n  }, []);\n  useWindowEventListener(\"scroll\", handleScroll);\n  return ref;\n};\nconst getIsInViewport = (element) => {\n  const {\n    offsetHeight\n  } = element;\n  const top = getAbsoluteOffsetTop(element);\n  const bottom = top + offsetHeight;\n  const isElementInViewport = window.scrollY <= top && bottom <= window.scrollY + window.innerHeight;\n  const isViewportInElement = top <= window.scrollY && window.scrollY + window.innerHeight <= bottom;\n  return isViewportInElement || isElementInViewport;\n};\nconst getAbsoluteOffsetTop = (element) => {\n  return Math.round(element.getBoundingClientRect().top + window.scrollY);\n};\nexport {\n  useInViewport\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { createContext, forwardRef, useRef } from \"react\";\nimport { useInViewport } from \"../../../hooks/useInViewport.js\";\nimport \"../../../hooks/stores/content/content.store.js\";\nimport \"../../../utils/event-properties/source.js\";\nimport \"framer\";\nimport { mergeRefs } from \"../../../utils/react/mergeRefs.js\";\nconst EventTriggerContext = createContext({\n  isViewportEntered: () => false,\n  canTriggerFallbackImpression: () => false,\n  setCanTriggerFallbackImpression: () => {\n  },\n  types: [],\n  onImpression: void 0\n});\nconst Root = forwardRef(({\n  children,\n  className,\n  style,\n  types,\n  onImpression\n}, ref) => {\n  const isViewportEntered = useRef(false);\n  const canTriggerFallbackImpression = useRef(true);\n  const observeViewport = types.includes(\"impression\");\n  const handleViewportEnter = () => {\n    if (canTriggerFallbackImpression.current) {\n      onImpression == null ? void 0 : onImpression();\n    }\n    isViewportEntered.current = true;\n    canTriggerFallbackImpression.current = false;\n  };\n  const handleViewportLeave = () => {\n    isViewportEntered.current = false;\n    canTriggerFallbackImpression.current = true;\n  };\n  const containerRef = useInViewport((isInViewport) => {\n    if (!observeViewport) {\n      return;\n    }\n    if (isInViewport) {\n      handleViewportEnter();\n    } else {\n      handleViewportLeave();\n    }\n  });\n  return /* @__PURE__ */ jsx(EventTriggerContext.Provider, { value: {\n    isViewportEntered: () => isViewportEntered.current,\n    canTriggerFallbackImpression: () => canTriggerFallbackImpression.current,\n    setCanTriggerFallbackImpression: (next) => canTriggerFallbackImpression.current = next,\n    types,\n    onImpression\n  }, children: /* @__PURE__ */ jsx(\"div\", { ref: mergeRefs([containerRef, ref]), className, style: {\n    width: \"100%\",\n    ...style\n  }, children }) });\n});\nexport {\n  EventTriggerContext,\n  Root\n};\n","import { useContext } from \"react\";\nimport { EventTriggerContext } from \"./Root.js\";\nconst useEventTriggerContext = () => useContext(EventTriggerContext);\nexport {\n  useEventTriggerContext\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport { useEventTriggerContext } from \"./Root.hooks.js\";\nconst Target = forwardRef(({\n  children,\n  onClick,\n  ...rest\n}, ref) => {\n  const {\n    isViewportEntered,\n    canTriggerFallbackImpression,\n    setCanTriggerFallbackImpression,\n    types,\n    onImpression\n  } = useEventTriggerContext();\n  const handleClick = (e) => {\n    onClick == null ? void 0 : onClick(e);\n    const shouldTriggerFallbackImpression = types.includes(\"impression\") && !isViewportEntered() && canTriggerFallbackImpression();\n    if (shouldTriggerFallbackImpression) {\n      onImpression == null ? void 0 : onImpression();\n      setCanTriggerFallbackImpression(false);\n    }\n  };\n  return /* @__PURE__ */ jsx(\"div\", { ref, ...rest, onClick: handleClick, children });\n});\nexport {\n  Target\n};\n","import { Root } from \"./Root.js\";\nimport { Target } from \"./Target.js\";\nconst EventTrigger = {\n  Root,\n  Target\n};\nexport {\n  EventTrigger\n};\n","import { useRef, useCallback } from \"react\";\nimport useSWR from \"../../core/dist/index.js\";\nimport { withMiddleware, SWRGlobalState, cache, INFINITE_PREFIX, createCacheHelper, isUndefined, useIsomorphicLayoutEffect, serialize, UNDEFINED, isFunction } from \"../../_internal/dist/index.js\";\nimport { s as shimExports } from \"../../../use-sync-external-store/shim/index.js\";\nconst getFirstPageKey = (getKey) => {\n  return serialize(getKey ? getKey(0, null) : null)[0];\n};\nconst EMPTY_PROMISE = Promise.resolve();\nconst infinite = (useSWRNext) => (getKey, fn, config) => {\n  const didMountRef = useRef(false);\n  const { cache: cache$1, initialSize = 1, revalidateAll = false, persistSize = false, revalidateFirstPage = true, revalidateOnMount = false, parallel = false } = config;\n  const [, , , PRELOAD] = SWRGlobalState.get(cache);\n  let infiniteKey;\n  try {\n    infiniteKey = getFirstPageKey(getKey);\n    if (infiniteKey)\n      infiniteKey = INFINITE_PREFIX + infiniteKey;\n  } catch (err) {\n  }\n  const [get, set, subscribeCache] = createCacheHelper(cache$1, infiniteKey);\n  const getSnapshot = useCallback(() => {\n    const size = isUndefined(get()._l) ? initialSize : get()._l;\n    return size;\n  }, [\n    cache$1,\n    infiniteKey,\n    initialSize\n  ]);\n  shimExports.useSyncExternalStore(useCallback(\n    (callback) => {\n      if (infiniteKey)\n        return subscribeCache(infiniteKey, () => {\n          callback();\n        });\n      return () => {\n      };\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [\n      cache$1,\n      infiniteKey\n    ]\n  ), getSnapshot, getSnapshot);\n  const resolvePageSize = useCallback(() => {\n    const cachedPageSize = get()._l;\n    return isUndefined(cachedPageSize) ? initialSize : cachedPageSize;\n  }, [\n    infiniteKey,\n    initialSize\n  ]);\n  const lastPageSizeRef = useRef(resolvePageSize());\n  useIsomorphicLayoutEffect(() => {\n    if (!didMountRef.current) {\n      didMountRef.current = true;\n      return;\n    }\n    if (infiniteKey) {\n      set({\n        _l: persistSize ? lastPageSizeRef.current : resolvePageSize()\n      });\n    }\n  }, [\n    infiniteKey,\n    cache$1\n  ]);\n  const shouldRevalidateOnMount = revalidateOnMount && !didMountRef.current;\n  const swr = useSWRNext(infiniteKey, async (key) => {\n    const forceRevalidateAll = get()._i;\n    const data = [];\n    const pageSize = resolvePageSize();\n    const [getCache] = createCacheHelper(cache$1, key);\n    const cacheData = getCache().data;\n    const revalidators = [];\n    let previousPageData = null;\n    for (let i = 0; i < pageSize; ++i) {\n      const [pageKey, pageArg] = serialize(getKey(i, parallel ? null : previousPageData));\n      if (!pageKey) {\n        break;\n      }\n      const [getSWRCache, setSWRCache] = createCacheHelper(cache$1, pageKey);\n      let pageData = getSWRCache().data;\n      const shouldFetchPage = revalidateAll || forceRevalidateAll || isUndefined(pageData) || revalidateFirstPage && !i && !isUndefined(cacheData) || shouldRevalidateOnMount || cacheData && !isUndefined(cacheData[i]) && !config.compare(cacheData[i], pageData);\n      if (fn && shouldFetchPage) {\n        const revalidate = async () => {\n          const hasPreloadedRequest = pageKey in PRELOAD;\n          if (!hasPreloadedRequest) {\n            pageData = await fn(pageArg);\n          } else {\n            const req = PRELOAD[pageKey];\n            delete PRELOAD[pageKey];\n            pageData = await req;\n          }\n          setSWRCache({\n            data: pageData,\n            _k: pageArg\n          });\n          data[i] = pageData;\n        };\n        if (parallel) {\n          revalidators.push(revalidate);\n        } else {\n          await revalidate();\n        }\n      } else {\n        data[i] = pageData;\n      }\n      if (!parallel) {\n        previousPageData = pageData;\n      }\n    }\n    if (parallel) {\n      await Promise.all(revalidators.map((r) => r()));\n    }\n    set({\n      _i: UNDEFINED\n    });\n    return data;\n  }, config);\n  const mutate = useCallback(\n    // eslint-disable-next-line func-names\n    function(data, opts) {\n      const options = typeof opts === \"boolean\" ? {\n        revalidate: opts\n      } : opts || {};\n      const shouldRevalidate = options.revalidate !== false;\n      if (!infiniteKey)\n        return EMPTY_PROMISE;\n      if (shouldRevalidate) {\n        if (!isUndefined(data)) {\n          set({\n            _i: false\n          });\n        } else {\n          set({\n            _i: true\n          });\n        }\n      }\n      return arguments.length ? swr.mutate(data, {\n        ...options,\n        revalidate: shouldRevalidate\n      }) : swr.mutate();\n    },\n    // swr.mutate is always the same reference\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [\n      infiniteKey,\n      cache$1\n    ]\n  );\n  const setSize = useCallback(\n    (arg) => {\n      if (!infiniteKey)\n        return EMPTY_PROMISE;\n      const [, changeSize] = createCacheHelper(cache$1, infiniteKey);\n      let size;\n      if (isFunction(arg)) {\n        size = arg(resolvePageSize());\n      } else if (typeof arg == \"number\") {\n        size = arg;\n      }\n      if (typeof size != \"number\")\n        return EMPTY_PROMISE;\n      changeSize({\n        _l: size\n      });\n      lastPageSizeRef.current = size;\n      const data = [];\n      const [getInfiniteCache] = createCacheHelper(cache$1, infiniteKey);\n      let previousPageData = null;\n      for (let i = 0; i < size; ++i) {\n        const [pageKey] = serialize(getKey(i, previousPageData));\n        const [getCache] = createCacheHelper(cache$1, pageKey);\n        const pageData = pageKey ? getCache().data : UNDEFINED;\n        if (isUndefined(pageData)) {\n          return mutate(getInfiniteCache().data);\n        }\n        data.push(pageData);\n        previousPageData = pageData;\n      }\n      return mutate(data);\n    },\n    // exclude getKey from the dependencies, which isn't allowed to change during the lifecycle\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [\n      infiniteKey,\n      cache$1,\n      mutate,\n      resolvePageSize\n    ]\n  );\n  return {\n    size: resolvePageSize(),\n    setSize,\n    mutate,\n    get data() {\n      return swr.data;\n    },\n    get error() {\n      return swr.error;\n    },\n    get isValidating() {\n      return swr.isValidating;\n    },\n    get isLoading() {\n      return swr.isLoading;\n    }\n  };\n};\nconst useSWRInfinite = withMiddleware(useSWR, infinite);\nexport {\n  useSWRInfinite as default,\n  infinite\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nconst Grid = ({\n  as,\n  children,\n  style,\n  row,\n  column,\n  ...rest\n}, ref) => {\n  const Element = as ?? \"div\";\n  return /* @__PURE__ */ jsx(Element, { ...rest, ref, style: {\n    display: \"grid\",\n    rowGap: row == null ? void 0 : row.gap,\n    columnGap: column == null ? void 0 : column.gap,\n    gridAutoRows: row == null ? void 0 : row.width,\n    gridAutoColumns: column == null ? void 0 : column.width,\n    ...(column == null ? void 0 : column.count) !== void 0 ? verticalGridStyle(column.count, column.minWidth ?? 0) : void 0,\n    ...(row == null ? void 0 : row.count) !== void 0 ? horizontalGridStyle(row.count, row.minWidth ?? 0) : void 0,\n    ...style\n  }, children });\n};\nconst toPixel = (value) => {\n  if (typeof value === \"number\") {\n    return `${value}px`;\n  }\n  return value.includes(\"px\") ? value : `${value}px`;\n};\nconst verticalGridStyle = (count, minWidth) => ({\n  // NOTE(임규민): minmax 를 사용하지 않으면 특정 웹뷰 환경에서 크기가 맞지 않는 문제가 있음.\n  gridTemplateColumns: `repeat(${count === \"auto\" ? \"auto-fill\" : count}, minmax(${toPixel(minWidth)}, 1fr))`,\n  gridAutoFlow: \"row\"\n});\nconst horizontalGridStyle = (count, minWidth) => ({\n  // NOTE(임규민): minmax 를 사용하지 않으면 특정 웹뷰 환경에서 크기가 맞지 않는 문제가 있음.\n  gridTemplateRows: `repeat(${count === \"auto\" ? \"auto-fill\" : count}, minmax(${toPixel(minWidth)}, auto))`,\n  gridAutoRows: \"min-content\",\n  gridAutoFlow: \"column\"\n});\nconst Default = forwardRef(Grid);\nexport {\n  Default as Grid\n};\n","import { useContext } from \"react\";\nimport { ProductsContext } from \"./Root.js\";\nconst useProductsContext = () => {\n  const context = useContext(ProductsContext);\n  if (!context) {\n    throw new Error(\"useProductsContext should be used within Root\");\n  }\n  return context;\n};\nexport {\n  useProductsContext\n};\n","import { jsx } from \"react/jsx-runtime\";\nconst ArrowIcon = ({\n  color,\n  size,\n  style,\n  ...rest\n}) => {\n  const svgHeight = size ?? 30;\n  const svgWidth = svgHeight * 12 / 30;\n  return /* @__PURE__ */ jsx(\"div\", { ...rest, style: {\n    ...containerStyle,\n    ...size && {\n      width: size,\n      height: size\n    },\n    ...style\n  }, children: /* @__PURE__ */ jsx(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: svgWidth, height: svgHeight, viewBox: \"0 0 12 30\", fill: \"none\", children: /* @__PURE__ */ jsx(\"path\", { d: \"M1 1L11 15L1 29\", stroke: color, strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }) }) });\n};\nconst containerStyle = {\n  width: 50,\n  height: 50,\n  display: \"flex\",\n  alignItems: \"center\",\n  justifyContent: \"center\"\n};\nexport {\n  ArrowIcon\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport { forwardRef, useRef, useState, useEffect } from \"react\";\nimport { Grid as Default } from \"../../../@shared/layouts/Grid.js\";\nimport { ProductCardType } from \"../../../@shared/ProductCard/ProductCard.types.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 \"../../../../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 { 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 \"../../../../utils/redirectLogin.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { mergeRefs } from \"../../../../utils/react/mergeRefs.js\";\nimport { useProductsContext } from \"./Root.hooks.js\";\nimport { ArrowIcon } from \"../ArrowIcon/ArrowIcon.js\";\nconst NAVIGATOR_SIZE = 50;\nconst HorizontalList = forwardRef(({\n  style,\n  listStyle,\n  children,\n  options,\n  pagination = false,\n  padding,\n  navigatorOffset\n}, ref) => {\n  const breakpoint = useBreakpoint();\n  const theme = useTheme();\n  const {\n    pending,\n    initialHasNext\n  } = useProductsContext();\n  const gridRef = useRef(null);\n  const isScrolling = useRef(false);\n  const {\n    card,\n    row,\n    column,\n    navigator\n  } = options;\n  const {\n    type = ProductCardType.CARD\n  } = card ?? {};\n  const [hasPrevious, setHasPrevious] = useState(false);\n  const [hasNext, setHasNext] = useState(initialHasNext);\n  const inset = (column == null ? void 0 : column.gap) ?? 0;\n  const isBarType = type === ProductCardType.BAR;\n  const applyScrollSnap = isBarType && breakpoint !== \"desktop\";\n  const shouldRenderNavigator = pagination && navigator;\n  const scrollTo = (direction) => {\n    if (isScrolling.current || pending) {\n      return;\n    }\n    const container = gridRef.current;\n    if (container === null) {\n      return;\n    }\n    const position = getScrollPosition(container, inset, direction);\n    const hasRemainingNextOffset = position < Math.ceil(container.scrollWidth - container.clientWidth);\n    const hasRemainingPrevOffset = position > 0;\n    setHasNext(hasRemainingNextOffset || initialHasNext);\n    setHasPrevious(hasRemainingPrevOffset);\n    isScrolling.current = true;\n    container.scroll({\n      behavior: \"smooth\",\n      left: position\n    });\n    setTimeout(() => {\n      isScrolling.current = false;\n    }, 700);\n  };\n  const handlePreviousClick = () => {\n    if (hasPrevious) {\n      scrollTo(\"previous\");\n    }\n  };\n  const handleNextClick = () => {\n    if (hasNext) {\n      scrollTo(\"next\");\n    }\n  };\n  useEffect(() => {\n    if (pending) {\n      return;\n    }\n    const container = gridRef.current;\n    if (container === null) {\n      return;\n    }\n    setHasNext(container.scrollWidth > container.clientWidth || initialHasNext);\n  }, [pending]);\n  return /* @__PURE__ */ jsxs(\"div\", { style: {\n    ...containerStyle,\n    ...style\n  }, children: [\n    shouldRenderNavigator ? /* @__PURE__ */ jsx(ArrowIcon, { style: {\n      ...baseNavigatorStyle,\n      ...leftNavigatorStyle,\n      ...navigatorOffset !== void 0 && {\n        left: `-${navigatorOffset}px`\n      }\n    }, color: hasPrevious ? iconColorByTheme[theme] : disabledIconColorByTheme[theme], onClick: handlePreviousClick }) : null,\n    /* @__PURE__ */ jsx(Default, { ref: mergeRefs([ref, gridRef]), style: {\n      ...wrapperResetStyle,\n      ...wrapperStyle,\n      ...wrapperStyleByBreakpoint[breakpoint],\n      overflowX: navigator ? \"hidden\" : \"scroll\",\n      overflowY: \"hidden\",\n      scrollSnapType: applyScrollSnap ? \"x mandatory\" : \"none\",\n      WebkitScrollSnapType: applyScrollSnap ? \"x mandatory\" : \"none\",\n      ...padding ? {\n        padding: `${padding.top ?? 0}px ${padding.right ?? 0}px ${padding.bottom ?? 0}px ${padding.left ?? 0}px`,\n        scrollPaddingLeft: padding.left ?? 0,\n        scrollPaddingRight: padding.right ?? 0\n      } : void 0,\n      ...listStyle\n    }, row, column, children }),\n    shouldRenderNavigator ? /* @__PURE__ */ jsx(ArrowIcon, { style: {\n      ...baseNavigatorStyle,\n      ...rightNavigatorStyle,\n      ...navigatorOffset !== void 0 && {\n        right: `-${navigatorOffset}px`\n      }\n    }, color: hasNext ? iconColorByTheme[theme] : disabledIconColorByTheme[theme], onClick: handleNextClick }) : null\n  ] });\n});\nconst getScrollPosition = (container, inset, direction) => {\n  const offset = container.clientWidth + inset;\n  return Math.ceil(container.scrollLeft + (direction === \"previous\" ? -offset : offset));\n};\nconst containerStyle = {\n  position: \"relative\",\n  width: \"100%\"\n};\nconst iconColorByTheme = {\n  light: \"#000\",\n  dark: \"#fff\"\n};\nconst disabledIconColorByTheme = {\n  light: \"#a0a0a0\",\n  dark: \"#474747\"\n};\nconst baseNavigatorStyle = {\n  position: \"absolute\",\n  top: \"50%\",\n  cursor: \"pointer\"\n};\nconst leftNavigatorStyle = {\n  left: `-${NAVIGATOR_SIZE}px`,\n  transform: \"translateY(-50%) rotate(180deg)\"\n};\nconst rightNavigatorStyle = {\n  right: `-${NAVIGATOR_SIZE}px`,\n  transform: \"translateY(-50%)\"\n};\nconst wrapperResetStyle = {\n  padding: 0,\n  margin: 0\n};\nconst wrapperStyle = {\n  padding: \"0 20px\",\n  msOverflowStyle: \"none\",\n  scrollbarWidth: \"none\"\n};\nconst wrapperStyleByBreakpoint = {\n  mobile: {\n    padding: \"0 20px\",\n    scrollPaddingLeft: 20,\n    scrollPaddingRight: 20\n  },\n  tablet: {\n    padding: \"0 20px\",\n    scrollPaddingLeft: 20,\n    scrollPaddingRight: 20\n  },\n  desktop: {\n    padding: 0\n  }\n};\nexport {\n  HorizontalList\n};\n","const isLast = (list, index) => list.length - 1 === index;\nexport {\n  isLast\n};\n","function noop() {\n}\nexport {\n  noop as default\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { Intersection } from \"../../../@shared/Intersection/Intersection.js\";\nimport \"react-dom\";\nimport \"../../../@shared/Icon/Icon.js\";\nimport { useProductsContext } from \"./Root.hooks.js\";\nimport { isLast } from \"../../../../utils/isLast.js\";\nimport noop from \"../../../../node_modules/lodash-es/noop.js\";\nconst Item = ({\n  children,\n  index,\n  onLastItemView = noop\n}) => {\n  const {\n    products,\n    initialHasNext\n  } = useProductsContext();\n  if (isLast(products, index) && initialHasNext) {\n    return /* @__PURE__ */ jsx(Intersection, { style: itemStyle, margin: \"200px\", onView: onLastItemView, children });\n  }\n  return /* @__PURE__ */ jsx(\"div\", { style: itemStyle, children });\n};\nconst itemStyle = {\n  scrollSnapAlign: \"start\",\n  boxSizing: \"border-box\"\n};\nexport {\n  Item\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport { Grid as Default } from \"../../../@shared/layouts/Grid.js\";\nimport { useBreakpoint } from \"../../../../hooks/useBreakpoint.js\";\nimport { ComponentName } from \"../../../../styles/ComponentName.js\";\nimport { createWithStyle } from \"../../../../styles/createWithStyle.js\";\nimport { css } from \"../../../../styles/css.js\";\nimport \"../../../../hooks/stores/content/content.store.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { isCanvas } from \"../../../../utils/framer/isCanvas.js\";\nimport \"framer\";\nimport { ProductCardType } from \"../../../@shared/ProductCard/ProductCard.types.js\";\nconst {\n  classNames,\n  withStyle\n} = createWithStyle(ComponentName.ProductsVerticalList, {\n  container: css`\n    &[data-card-type='card'],\n    &[data-card-type='card-detailed'] {\n      @media (max-width: 614px) {\n        grid-template-columns: repeat(2, minmax(100px, 1fr)) !important;\n      }\n    }\n\n    &[data-card-type='bar'] {\n      @media (max-width: 614px) {\n        grid-template-columns: repeat(1, minmax(100px, 1fr)) !important;\n      }\n    }\n  `\n});\nconst VerticalList = withStyle(forwardRef(({\n  style,\n  children,\n  options,\n  padding\n}, ref) => {\n  const breakpoint = useBreakpoint();\n  const {\n    row,\n    column,\n    card\n  } = options;\n  const {\n    type = ProductCardType.CARD\n  } = card ?? {};\n  const isAutoColumn = (column == null ? void 0 : column.count) === \"auto\";\n  const shouldApplyCanvasStyle = isAutoColumn && isCanvas() && breakpoint === \"mobile\";\n  return /* @__PURE__ */ jsx(Default, { ref, className: isAutoColumn ? classNames.container : void 0, style: {\n    ...wrapperResetStyle,\n    ...wrapperStyleByBreakpoint[breakpoint],\n    ...shouldApplyCanvasStyle ? wrapperMobileCanvasStyle[type] : void 0,\n    ...padding ? {\n      padding: `${padding.top ?? 0}px ${padding.right ?? 0}px ${padding.bottom ?? 0}px ${padding.left ?? 0}px`\n    } : void 0,\n    ...style\n  }, row, column, \"data-card-type\": type, children });\n}));\nconst wrapperResetStyle = {\n  padding: 0,\n  margin: 0\n};\nconst wrapperMobileCanvasStyle = {\n  [ProductCardType.CARD]: {\n    gridTemplateColumns: \"repeat(2, minmax(100px, 1fr))\"\n  },\n  [ProductCardType.CARD_DETAILED]: {\n    gridTemplateColumns: \"repeat(2, minmax(100px, 1fr))\"\n  },\n  [ProductCardType.BAR]: {\n    gridTemplateColumns: \"repeat(1, minmax(100px, 1fr))\"\n  }\n};\nconst wrapperStyleByBreakpoint = {\n  mobile: {\n    padding: \"0 20px\"\n  },\n  tablet: {\n    padding: \"0 20px\"\n  },\n  desktop: {\n    padding: 0\n  }\n};\nexport {\n  VerticalList\n};\n","import { jsx, jsxs } from \"react/jsx-runtime\";\nimport { createContext, forwardRef } from \"react\";\nimport { useProductGroupHeart } from \"../../../../hooks/product/useProductGroupHeart.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 \"../../../../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 \"../../../@shared/providers/ThemeProvider/ThemeProvider.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 \"../../../../utils/redirectLogin.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { HorizontalList } from \"./HorizontalList.js\";\nimport { Item } from \"./Item.js\";\nimport { VerticalList } from \"./VerticalList.js\";\nimport { PRODUCTS_PER_REQUEST } from \"../../Products/Products.js\";\nconst ProductsContext = createContext(null);\nconst Root = forwardRef(({\n  style,\n  listStyle,\n  padding,\n  navigatorOffset,\n  children,\n  products: _products,\n  loading = false,\n  options: responsiveOptions,\n  hasNext: initialHasNext = false,\n  onLastItemView\n}, ref) => {\n  const breakpoint = useBreakpoint();\n  const {\n    isHeartOn,\n    handleHeartOn,\n    handleHeartOff\n  } = useProductGroupHeart();\n  const options = responsiveOptions[breakpoint];\n  const {\n    direction = \"horizontal\",\n    card = {},\n    row,\n    column\n  } = options;\n  const rowCount = (row == null ? void 0 : row.count) === \"auto\" ? 0 : (row == null ? void 0 : row.count) ?? 0;\n  const columnCount = (column == null ? void 0 : column.count) === \"auto\" ? 0 : (column == null ? void 0 : column.count) ?? 0;\n  const displayCount = getDisplayCount(options);\n  const products = slice(_products, rowCount * columnCount);\n  const pagination = displayCount < products.length || initialHasNext;\n  const pending = loading && products.length === 0;\n  const List = direction === \"horizontal\" ? HorizontalList : VerticalList;\n  const handleLastItemView = () => {\n    if (loading) {\n      return;\n    }\n    onLastItemView == null ? void 0 : onLastItemView();\n  };\n  return /* @__PURE__ */ jsx(ProductsContext.Provider, { value: {\n    card,\n    products,\n    pending,\n    initialHasNext,\n    isHeartOn,\n    onHeartOn: handleHeartOn,\n    onHeartOff: handleHeartOff\n  }, children: /* @__PURE__ */ jsxs(List, { ref, style, listStyle, options, pagination, padding, navigatorOffset, children: [\n    products.map((product, index) => /* @__PURE__ */ jsx(Item, { index, onLastItemView: handleLastItemView, children: children({\n      index,\n      product,\n      pending\n    }) }, product.productId)),\n    pending ? Array.from({\n      length: displayCount\n    }, (_, index) => /* @__PURE__ */ jsx(Item, { index, children: children({\n      index,\n      pending\n    }) }, index)) : null\n  ] }) });\n});\nconst getDisplayCount = (options) => {\n  const {\n    direction,\n    column,\n    row\n  } = options;\n  const {\n    displayCount: columnDisplayCount = 0,\n    count: columnCount = 0\n  } = column ?? {};\n  const {\n    displayCount: rowDisplayCount = 0,\n    count: rowCount = 0\n  } = row ?? {};\n  const isAutoRow = rowCount === \"auto\";\n  const isAutoColumn = columnCount === \"auto\";\n  if (direction === \"horizontal\") {\n    return columnDisplayCount * (isAutoRow ? 0 : rowCount);\n  }\n  if (direction === \"vertical\" && isAutoColumn) {\n    return PRODUCTS_PER_REQUEST;\n  }\n  return rowDisplayCount * (isAutoColumn ? 0 : columnCount);\n};\nconst slice = (list, count) => {\n  return count > 0 ? list.slice(0, count) : list;\n};\nexport {\n  ProductsContext,\n  Root\n};\n","const fromEntries = (entries) => {\n  return Object.fromEntries(entries);\n};\nexport {\n  fromEntries\n};\n","import getNative from \"./_getNative.js\";\nvar defineProperty = function() {\n  try {\n    var func = getNative(Object, \"defineProperty\");\n    func({}, \"\", {});\n    return func;\n  } catch (e) {\n  }\n}();\nexport {\n  defineProperty as default\n};\n","import defineProperty from \"./_defineProperty.js\";\nfunction baseAssignValue(object, key, value) {\n  if (key == \"__proto__\" && defineProperty) {\n    defineProperty(object, key, {\n      \"configurable\": true,\n      \"enumerable\": true,\n      \"value\": value,\n      \"writable\": true\n    });\n  } else {\n    object[key] = value;\n  }\n}\nexport {\n  baseAssignValue as default\n};\n","import baseAssignValue from \"./_baseAssignValue.js\";\nimport eq from \"./eq.js\";\nfunction assignMergeValue(object, key, value) {\n  if (value !== void 0 && !eq(object[key], value) || value === void 0 && !(key in object)) {\n    baseAssignValue(object, key, value);\n  }\n}\nexport {\n  assignMergeValue as default\n};\n","function createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1, iterable = Object(object), props = keysFunc(object), length = props.length;\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\nexport {\n  createBaseFor as default\n};\n","import createBaseFor from \"./_createBaseFor.js\";\nvar baseFor = createBaseFor();\nexport {\n  baseFor as default\n};\n","import root from \"./_root.js\";\nvar freeExports = typeof exports == \"object\" && exports && !exports.nodeType && exports;\nvar freeModule = freeExports && typeof module == \"object\" && module && !module.nodeType && module;\nvar moduleExports = freeModule && freeModule.exports === freeExports;\nvar Buffer = moduleExports ? root.Buffer : void 0, allocUnsafe = Buffer ? Buffer.allocUnsafe : void 0;\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length, result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n  buffer.copy(result);\n  return result;\n}\nexport {\n  cloneBuffer as default\n};\n","import Uint8Array from \"./_Uint8Array.js\";\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\nexport {\n  cloneArrayBuffer as default\n};\n","import cloneArrayBuffer from \"./_cloneArrayBuffer.js\";\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\nexport {\n  cloneTypedArray as default\n};\n","function copyArray(source, array) {\n  var index = -1, length = source.length;\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\nexport {\n  copyArray as default\n};\n","import isObject from \"./isObject.js\";\nvar objectCreate = Object.create;\nvar baseCreate = /* @__PURE__ */ function() {\n  function object() {\n  }\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object();\n    object.prototype = void 0;\n    return result;\n  };\n}();\nexport {\n  baseCreate as default\n};\n","import overArg from \"./_overArg.js\";\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\nconst getPrototype$1 = getPrototype;\nexport {\n  getPrototype$1 as default\n};\n","import baseCreate from \"./_baseCreate.js\";\nimport getPrototype from \"./_getPrototype.js\";\nimport isPrototype from \"./_isPrototype.js\";\nfunction initCloneObject(object) {\n  return typeof object.constructor == \"function\" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};\n}\nexport {\n  initCloneObject as default\n};\n","import isArrayLike from \"./isArrayLike.js\";\nimport isObjectLike from \"./isObjectLike.js\";\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\nexport {\n  isArrayLikeObject as default\n};\n","import baseGetTag from \"./_baseGetTag.js\";\nimport getPrototype from \"./_getPrototype.js\";\nimport isObjectLike from \"./isObjectLike.js\";\nvar objectTag = \"[object Object]\";\nvar funcProto = Function.prototype, objectProto = Object.prototype;\nvar funcToString = funcProto.toString;\nvar hasOwnProperty = objectProto.hasOwnProperty;\nvar objectCtorString = funcToString.call(Object);\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n  return typeof Ctor == \"function\" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;\n}\nexport {\n  isPlainObject as default\n};\n","function safeGet(object, key) {\n  if (key === \"constructor\" && typeof object[key] === \"function\") {\n    return;\n  }\n  if (key == \"__proto__\") {\n    return;\n  }\n  return object[key];\n}\nexport {\n  safeGet as default\n};\n","import baseAssignValue from \"./_baseAssignValue.js\";\nimport eq from \"./eq.js\";\nvar objectProto = Object.prototype;\nvar hasOwnProperty = objectProto.hasOwnProperty;\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === void 0 && !(key in object)) {\n    baseAssignValue(object, key, value);\n  }\n}\nexport {\n  assignValue as default\n};\n","import assignValue from \"./_assignValue.js\";\nimport baseAssignValue from \"./_baseAssignValue.js\";\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n  var index = -1, length = props.length;\n  while (++index < length) {\n    var key = props[index];\n    var newValue = customizer ? customizer(object[key], source[key], key, object, source) : void 0;\n    if (newValue === void 0) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\nexport {\n  copyObject as default\n};\n","function nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\nexport {\n  nativeKeysIn as default\n};\n","import isObject from \"./isObject.js\";\nimport isPrototype from \"./_isPrototype.js\";\nimport nativeKeysIn from \"./_nativeKeysIn.js\";\nvar objectProto = Object.prototype;\nvar hasOwnProperty = objectProto.hasOwnProperty;\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object), result = [];\n  for (var key in object) {\n    if (!(key == \"constructor\" && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\nexport {\n  baseKeysIn as default\n};\n","import arrayLikeKeys from \"./_arrayLikeKeys.js\";\nimport baseKeysIn from \"./_baseKeysIn.js\";\nimport isArrayLike from \"./isArrayLike.js\";\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\nexport {\n  keysIn as default\n};\n","import copyObject from \"./_copyObject.js\";\nimport keysIn from \"./keysIn.js\";\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\nexport {\n  toPlainObject as default\n};\n","import assignMergeValue from \"./_assignMergeValue.js\";\nimport cloneBuffer from \"./_cloneBuffer.js\";\nimport cloneTypedArray from \"./_cloneTypedArray.js\";\nimport copyArray from \"./_copyArray.js\";\nimport initCloneObject from \"./_initCloneObject.js\";\nimport isArguments from \"./isArguments.js\";\nimport isArray from \"./isArray.js\";\nimport isArrayLikeObject from \"./isArrayLikeObject.js\";\nimport isBuffer from \"./isBuffer.js\";\nimport isFunction from \"./isFunction.js\";\nimport isObject from \"./isObject.js\";\nimport isPlainObject from \"./isPlainObject.js\";\nimport isTypedArray from \"./isTypedArray.js\";\nimport safeGet from \"./_safeGet.js\";\nimport toPlainObject from \"./toPlainObject.js\";\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n  var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue);\n  if (stacked) {\n    assignMergeValue(object, key, stacked);\n    return;\n  }\n  var newValue = customizer ? customizer(objValue, srcValue, key + \"\", object, source, stack) : void 0;\n  var isCommon = newValue === void 0;\n  if (isCommon) {\n    var isArr = isArray(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (isArray(objValue)) {\n        newValue = objValue;\n      } else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray(objValue);\n      } else if (isBuff) {\n        isCommon = false;\n        newValue = cloneBuffer(srcValue, true);\n      } else if (isTyped) {\n        isCommon = false;\n        newValue = cloneTypedArray(srcValue, true);\n      } else {\n        newValue = [];\n      }\n    } else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue;\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue);\n      } else if (!isObject(objValue) || isFunction(objValue)) {\n        newValue = initCloneObject(srcValue);\n      }\n    } else {\n      isCommon = false;\n    }\n  }\n  if (isCommon) {\n    stack.set(srcValue, newValue);\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n    stack[\"delete\"](srcValue);\n  }\n  assignMergeValue(object, key, newValue);\n}\nexport {\n  baseMergeDeep as default\n};\n","import Stack from \"./_Stack.js\";\nimport assignMergeValue from \"./_assignMergeValue.js\";\nimport baseFor from \"./_baseFor.js\";\nimport baseMergeDeep from \"./_baseMergeDeep.js\";\nimport isObject from \"./isObject.js\";\nimport keysIn from \"./keysIn.js\";\nimport safeGet from \"./_safeGet.js\";\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return;\n  }\n  baseFor(source, function(srcValue, key) {\n    stack || (stack = new Stack());\n    if (isObject(srcValue)) {\n      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n    } else {\n      var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + \"\", object, source, stack) : void 0;\n      if (newValue === void 0) {\n        newValue = srcValue;\n      }\n      assignMergeValue(object, key, newValue);\n    }\n  }, keysIn);\n}\nexport {\n  baseMerge as default\n};\n","function identity(value) {\n  return value;\n}\nexport {\n  identity as default\n};\n","function apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0:\n      return func.call(thisArg);\n    case 1:\n      return func.call(thisArg, args[0]);\n    case 2:\n      return func.call(thisArg, args[0], args[1]);\n    case 3:\n      return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\nexport {\n  apply as default\n};\n","import apply from \"./_apply.js\";\nvar nativeMax = Math.max;\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === void 0 ? func.length - 1 : start, 0);\n  return function() {\n    var args = arguments, index = -1, length = nativeMax(args.length - start, 0), array = Array(length);\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\nexport {\n  overRest as default\n};\n","function constant(value) {\n  return function() {\n    return value;\n  };\n}\nexport {\n  constant as default\n};\n","import constant from \"./constant.js\";\nimport defineProperty from \"./_defineProperty.js\";\nimport identity from \"./identity.js\";\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, \"toString\", {\n    \"configurable\": true,\n    \"enumerable\": false,\n    \"value\": constant(string),\n    \"writable\": true\n  });\n};\nconst baseSetToString$1 = baseSetToString;\nexport {\n  baseSetToString$1 as default\n};\n","var HOT_COUNT = 800, HOT_SPAN = 16;\nvar nativeNow = Date.now;\nfunction shortOut(func) {\n  var count = 0, lastCalled = 0;\n  return function() {\n    var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(void 0, arguments);\n  };\n}\nexport {\n  shortOut as default\n};\n","import baseSetToString from \"./_baseSetToString.js\";\nimport shortOut from \"./_shortOut.js\";\nvar setToString = shortOut(baseSetToString);\nexport {\n  setToString as default\n};\n","import identity from \"./identity.js\";\nimport overRest from \"./_overRest.js\";\nimport setToString from \"./_setToString.js\";\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + \"\");\n}\nexport {\n  baseRest as default\n};\n","import eq from \"./eq.js\";\nimport isArrayLike from \"./isArrayLike.js\";\nimport isIndex from \"./_isIndex.js\";\nimport isObject from \"./isObject.js\";\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == \"number\" ? isArrayLike(object) && isIndex(index, object.length) : type == \"string\" && index in object) {\n    return eq(object[index], value);\n  }\n  return false;\n}\nexport {\n  isIterateeCall as default\n};\n","import baseRest from \"./_baseRest.js\";\nimport isIterateeCall from \"./_isIterateeCall.js\";\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : void 0, guard = length > 2 ? sources[2] : void 0;\n    customizer = assigner.length > 3 && typeof customizer == \"function\" ? (length--, customizer) : void 0;\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? void 0 : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\nexport {\n  createAssigner as default\n};\n","import baseMerge from \"./_baseMerge.js\";\nimport createAssigner from \"./_createAssigner.js\";\nvar merge = createAssigner(function(object, source, srcIndex) {\n  baseMerge(object, source, srcIndex);\n});\nexport {\n  merge as default\n};\n","function arrayEach(array, iteratee) {\n  var index = -1, length = array == null ? 0 : array.length;\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\nexport {\n  arrayEach as default\n};\n","import copyObject from \"./_copyObject.js\";\nimport keys from \"./keys.js\";\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\nexport {\n  baseAssign as default\n};\n","import copyObject from \"./_copyObject.js\";\nimport keysIn from \"./keysIn.js\";\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\nexport {\n  baseAssignIn as default\n};\n","import copyObject from \"./_copyObject.js\";\nimport getSymbols from \"./_getSymbols.js\";\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\nexport {\n  copySymbols as default\n};\n","import arrayPush from \"./_arrayPush.js\";\nimport getPrototype from \"./_getPrototype.js\";\nimport getSymbols from \"./_getSymbols.js\";\nimport stubArray from \"./stubArray.js\";\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\nexport {\n  getSymbolsIn as default\n};\n","import copyObject from \"./_copyObject.js\";\nimport getSymbolsIn from \"./_getSymbolsIn.js\";\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\nexport {\n  copySymbolsIn as default\n};\n","import baseGetAllKeys from \"./_baseGetAllKeys.js\";\nimport getSymbolsIn from \"./_getSymbolsIn.js\";\nimport keysIn from \"./keysIn.js\";\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\nexport {\n  getAllKeysIn as default\n};\n","var objectProto = Object.prototype;\nvar hasOwnProperty = objectProto.hasOwnProperty;\nfunction initCloneArray(array) {\n  var length = array.length, result = new array.constructor(length);\n  if (length && typeof array[0] == \"string\" && hasOwnProperty.call(array, \"index\")) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\nexport {\n  initCloneArray as default\n};\n","import cloneArrayBuffer from \"./_cloneArrayBuffer.js\";\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\nexport {\n  cloneDataView as default\n};\n","var reFlags = /\\w*$/;\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\nexport {\n  cloneRegExp as default\n};\n","import Symbol$1 from \"./_Symbol.js\";\nvar symbolProto = Symbol$1 ? Symbol$1.prototype : void 0, symbolValueOf = symbolProto ? symbolProto.valueOf : void 0;\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\nexport {\n  cloneSymbol as default\n};\n","import cloneArrayBuffer from \"./_cloneArrayBuffer.js\";\nimport cloneDataView from \"./_cloneDataView.js\";\nimport cloneRegExp from \"./_cloneRegExp.js\";\nimport cloneSymbol from \"./_cloneSymbol.js\";\nimport cloneTypedArray from \"./_cloneTypedArray.js\";\nvar boolTag = \"[object Boolean]\", dateTag = \"[object Date]\", mapTag = \"[object Map]\", numberTag = \"[object Number]\", regexpTag = \"[object RegExp]\", setTag = \"[object Set]\", stringTag = \"[object String]\", symbolTag = \"[object Symbol]\";\nvar arrayBufferTag = \"[object ArrayBuffer]\", dataViewTag = \"[object DataView]\", float32Tag = \"[object Float32Array]\", float64Tag = \"[object Float64Array]\", int8Tag = \"[object Int8Array]\", int16Tag = \"[object Int16Array]\", int32Tag = \"[object Int32Array]\", uint8Tag = \"[object Uint8Array]\", uint8ClampedTag = \"[object Uint8ClampedArray]\", uint16Tag = \"[object Uint16Array]\", uint32Tag = \"[object Uint32Array]\";\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n    case float32Tag:\n    case float64Tag:\n    case int8Tag:\n    case int16Tag:\n    case int32Tag:\n    case uint8Tag:\n    case uint8ClampedTag:\n    case uint16Tag:\n    case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n    case mapTag:\n      return new Ctor();\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n    case regexpTag:\n      return cloneRegExp(object);\n    case setTag:\n      return new Ctor();\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\nexport {\n  initCloneByTag as default\n};\n","import getTag from \"./_getTag.js\";\nimport isObjectLike from \"./isObjectLike.js\";\nvar mapTag = \"[object Map]\";\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\nexport {\n  baseIsMap as default\n};\n","import baseIsMap from \"./_baseIsMap.js\";\nimport baseUnary from \"./_baseUnary.js\";\nimport nodeUtil from \"./_nodeUtil.js\";\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\nexport {\n  isMap as default\n};\n","import getTag from \"./_getTag.js\";\nimport isObjectLike from \"./isObjectLike.js\";\nvar setTag = \"[object Set]\";\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\nexport {\n  baseIsSet as default\n};\n","import baseIsSet from \"./_baseIsSet.js\";\nimport baseUnary from \"./_baseUnary.js\";\nimport nodeUtil from \"./_nodeUtil.js\";\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\nexport {\n  isSet as default\n};\n","import Stack from \"./_Stack.js\";\nimport arrayEach from \"./_arrayEach.js\";\nimport assignValue from \"./_assignValue.js\";\nimport baseAssign from \"./_baseAssign.js\";\nimport baseAssignIn from \"./_baseAssignIn.js\";\nimport cloneBuffer from \"./_cloneBuffer.js\";\nimport copyArray from \"./_copyArray.js\";\nimport copySymbols from \"./_copySymbols.js\";\nimport copySymbolsIn from \"./_copySymbolsIn.js\";\nimport getAllKeys from \"./_getAllKeys.js\";\nimport getAllKeysIn from \"./_getAllKeysIn.js\";\nimport getTag from \"./_getTag.js\";\nimport initCloneArray from \"./_initCloneArray.js\";\nimport initCloneByTag from \"./_initCloneByTag.js\";\nimport initCloneObject from \"./_initCloneObject.js\";\nimport isArray from \"./isArray.js\";\nimport isBuffer from \"./isBuffer.js\";\nimport isMap from \"./isMap.js\";\nimport isObject from \"./isObject.js\";\nimport isSet from \"./isSet.js\";\nimport keys from \"./keys.js\";\nimport keysIn from \"./keysIn.js\";\nvar CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4;\nvar argsTag = \"[object Arguments]\", arrayTag = \"[object Array]\", boolTag = \"[object Boolean]\", dateTag = \"[object Date]\", errorTag = \"[object Error]\", funcTag = \"[object Function]\", genTag = \"[object GeneratorFunction]\", mapTag = \"[object Map]\", numberTag = \"[object Number]\", objectTag = \"[object Object]\", regexpTag = \"[object RegExp]\", setTag = \"[object Set]\", stringTag = \"[object String]\", symbolTag = \"[object Symbol]\", weakMapTag = \"[object WeakMap]\";\nvar arrayBufferTag = \"[object ArrayBuffer]\", dataViewTag = \"[object DataView]\", float32Tag = \"[object Float32Array]\", float64Tag = \"[object Float64Array]\", int8Tag = \"[object Int8Array]\", int16Tag = \"[object Int16Array]\", int32Tag = \"[object Int32Array]\", uint8Tag = \"[object Uint8Array]\", uint8ClampedTag = \"[object Uint8ClampedArray]\", uint16Tag = \"[object Uint16Array]\", uint32Tag = \"[object Uint32Array]\";\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result, isDeep = bitmask & CLONE_DEEP_FLAG, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG;\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== void 0) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value), isFunc = tag == funcTag || tag == genTag;\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || isFunc && !object) {\n      result = isFlat || isFunc ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat ? copySymbolsIn(value, baseAssignIn(result, value)) : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  stack || (stack = new Stack());\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key2) {\n      result.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack));\n    });\n  }\n  var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys;\n  var props = isArr ? void 0 : keysFunc(value);\n  arrayEach(props || value, function(subValue, key2) {\n    if (props) {\n      key2 = subValue;\n      subValue = value[key2];\n    }\n    assignValue(result, key2, baseClone(subValue, bitmask, customizer, key2, value, stack));\n  });\n  return result;\n}\nexport {\n  baseClone as default\n};\n","import baseClone from \"./_baseClone.js\";\nvar CLONE_DEEP_FLAG = 1, CLONE_SYMBOLS_FLAG = 4;\nfunction cloneDeep(value) {\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\nexport {\n  cloneDeep as default\n};\n","import { fromEntries } from \"./fromEntries.js\";\nimport { entries } from \"./entries.js\";\nimport merge from \"../node_modules/lodash-es/merge.js\";\nimport cloneDeep from \"../node_modules/lodash-es/cloneDeep.js\";\nconst mergeBase = (base = {}, source = {}) => {\n  return merge(cloneDeep(base), source);\n};\nconst createSlices = (slices) => {\n  const {\n    base,\n    ...rest\n  } = slices;\n  return fromEntries(entries(rest).map(([name, slice]) => [name, mergeBase(base, slice)]));\n};\nexport {\n  createSlices\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport { ProductCardType } from \"../ProductCard/ProductCard.types.js\";\nimport { Skeleton } from \"../Skeleton/Skeleton.js\";\nimport { createSlices } from \"../../../utils/createSlices.js\";\nconst ProductCardSkeleton = forwardRef(({\n  style,\n  type = ProductCardType.CARD,\n  theme = \"light\",\n  size = \"medium\",\n  hasName = true,\n  hasBrandName = true,\n  hasBadges = true,\n  ...rest\n}, ref) => {\n  const styles = stylesByType[type][size];\n  return /* @__PURE__ */ jsxs(\"div\", { ref, ...rest, style: {\n    ...containerStyle,\n    ...styles == null ? void 0 : styles.container,\n    ...style\n  }, children: [\n    /* @__PURE__ */ jsx(Skeleton, { style: {\n      ...styles == null ? void 0 : styles.image,\n      ...baseStyleByTheme[theme],\n      borderRadius: 2\n    } }),\n    /* @__PURE__ */ jsxs(\"div\", { style: summaryStyle, children: [\n      hasBrandName ? /* @__PURE__ */ jsx(Skeleton, { style: {\n        ...styles == null ? void 0 : styles.brandName,\n        ...baseStyleByTheme[theme],\n        borderRadius: 6\n      } }) : null,\n      hasName ? /* @__PURE__ */ jsx(Skeleton, { style: {\n        ...styles == null ? void 0 : styles.name,\n        ...baseStyleByTheme[theme],\n        borderRadius: 6\n      } }) : null,\n      /* @__PURE__ */ jsx(Skeleton, { style: {\n        ...styles == null ? void 0 : styles.price,\n        ...baseStyleByTheme[theme],\n        borderRadius: 6\n      } }),\n      hasBadges ? /* @__PURE__ */ jsx(Skeleton, { style: {\n        ...styles == null ? void 0 : styles.badge,\n        ...baseStyleByTheme[theme],\n        borderRadius: 6\n      } }) : null\n    ] })\n  ] });\n});\nconst baseStyleByTheme = {\n  light: {\n    backgroundColor: \"#dee2e6\"\n  },\n  dark: {\n    backgroundColor: \"#27272a\"\n  }\n};\nconst containerStyle = {\n  display: \"flex\",\n  gap: \"10px\",\n  width: \"100%\",\n  margin: \"0 auto\"\n};\nconst summaryStyle = {\n  flex: \"1\",\n  display: \"flex\",\n  flexDirection: \"column\"\n};\nconst barStyles = createSlices({\n  base: {\n    container: {\n      flexDirection: \"row\",\n      alignItems: \"center\",\n      gap: 8\n    },\n    brandName: {\n      width: \"60%\",\n      height: 11\n    },\n    name: {\n      width: \"80%\",\n      height: 13,\n      marginTop: 5\n    },\n    price: {\n      width: \"50%\",\n      height: 16,\n      marginTop: 5\n    },\n    badge: {\n      width: \"20%\",\n      height: 16,\n      marginTop: 6\n    }\n  },\n  small: {\n    image: {\n      width: 56,\n      height: 56\n    }\n  },\n  medium: {\n    image: {\n      width: 80,\n      height: 80\n    }\n  }\n});\nconst cardStyles = createSlices({\n  base: {\n    container: {\n      flexDirection: \"column\",\n      gap: 10,\n      paddingBottom: 16\n    },\n    image: {\n      width: \"100%\",\n      aspectRatio: \"1 / 1\"\n    },\n    brandName: {\n      width: \"60%\",\n      height: 16.31\n    },\n    name: {\n      width: \"80%\",\n      height: 16.31,\n      marginTop: 4\n    },\n    price: {\n      width: \"50%\",\n      height: 15.2,\n      marginTop: 4\n    },\n    badge: {\n      width: \"20%\",\n      height: 13,\n      marginTop: 4\n    }\n  },\n  small: {},\n  medium: {}\n});\nconst cardDetailedStyles = createSlices({\n  base: {\n    container: {\n      flexDirection: \"column\",\n      gap: 14\n    },\n    image: {\n      width: \"100%\",\n      aspectRatio: \"1 / 1\"\n    },\n    brandName: {\n      width: \"60%\",\n      height: 16.31\n    },\n    name: {\n      width: \"80%\",\n      height: 19.59,\n      marginTop: 4\n    },\n    price: {\n      width: \"50%\",\n      height: 22.41,\n      marginTop: 6\n    },\n    badge: {\n      width: \"20%\",\n      height: 16,\n      marginTop: 6\n    }\n  },\n  small: {\n    container: {\n      paddingBottom: 44\n    }\n  },\n  medium: {\n    container: {\n      paddingBottom: 69\n    }\n  }\n});\nconst stylesByType = {\n  [ProductCardType.BAR]: barStyles,\n  [ProductCardType.CARD]: cardStyles,\n  [ProductCardType.CARD_DETAILED]: cardDetailedStyles\n};\nexport {\n  ProductCardSkeleton\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { useInView } from \"framer-motion\";\nimport { forwardRef, useRef } from \"react\";\nimport { mergeRefs } from \"../../../utils/react/mergeRefs.js\";\nconst Lazy = ({\n  as,\n  children,\n  fallback,\n  margin,\n  ...rest\n}, ref) => {\n  const elementRef = useRef(null);\n  const isIntersecting = useInView(elementRef, {\n    margin,\n    once: true\n  });\n  const Component = as ?? \"div\";\n  if (!isIntersecting) {\n    return /* @__PURE__ */ jsx(Component, { ref: mergeRefs([ref, elementRef]), ...rest, children: fallback });\n  }\n  return /* @__PURE__ */ jsx(Component, { ref: mergeRefs([ref, elementRef]), ...rest, children });\n};\nconst Default = forwardRef(Lazy);\nexport {\n  Default as Lazy\n};\n","import { jsx, jsxs } from \"react/jsx-runtime\";\nimport { ProductCard } from \"../../../@shared/ProductCard/ProductCard.js\";\nimport { useProductsContext } from \"./Root.hooks.js\";\nimport { ProductCardSkeleton } from \"../../../@shared/ProductCardSkeleton/ProductCardSkeleton.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 \"../../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 { Lazy as Default } from \"../../../@shared/Lazy/Lazy.js\";\nimport { typography } from \"../../../../styles/typography.js\";\nimport { ProductCardType } from \"../../../@shared/ProductCard/ProductCard.types.js\";\nconst Card = ({\n  index,\n  componentName,\n  eventProperties,\n  variant,\n  showLazyFallback = true,\n  ...rest\n}) => {\n  const theme = useTheme();\n  const {\n    products,\n    card,\n    pending,\n    isHeartOn,\n    onHeartOn,\n    onHeartOff\n  } = useProductsContext();\n  const product = products[index];\n  const isBarType = card.type === ProductCardType.BAR;\n  const isCardType = card.type === ProductCardType.CARD || card.type === ProductCardType.CARD_DETAILED;\n  const hideBarTypeRank = !isBarType || !card.hasRank;\n  const hideCardTypeRank = !isCardType || !card.hasRank;\n  const position = index + 1;\n  if (pending) {\n    return /* @__PURE__ */ jsx(ProductRank, { hidden: hideBarTypeRank, position, children: /* @__PURE__ */ jsx(ProductCardSkeleton, { theme, ...card, style: rest.style }) });\n  }\n  return /* @__PURE__ */ jsx(Default, { margin: \"0px 200px\", fallback: showLazyFallback ? /* @__PURE__ */ jsx(ProductRank, { hidden: hideBarTypeRank, position, children: /* @__PURE__ */ jsx(ProductCardSkeleton, { theme, ...card, style: rest.style }) }) : null, children: /* @__PURE__ */ jsx(ProductRank, { hidden: hideBarTypeRank, position, children: /* @__PURE__ */ jsx(ProductCard, { ...rest, ...card, hasRank: !hideCardTypeRank, theme, product, positionNo: position, variant, isHeartOn: isHeartOn(product.productId), onHeartOn, onHeartOff, eventProperties: {\n    product,\n    isProductGroup: true,\n    componentName,\n    positionNo: position,\n    ...eventProperties\n  } }) }) });\n};\nconst ProductRank = ({\n  children,\n  hidden = false,\n  position\n}) => {\n  const theme = useTheme();\n  if (hidden) {\n    return children;\n  }\n  return /* @__PURE__ */ jsxs(\"div\", { style: containerStyle, children: [\n    /* @__PURE__ */ jsx(\"div\", { style: rankAreaStyle, children: /* @__PURE__ */ jsx(\"div\", { style: {\n      ...typography(16, 700),\n      ...rankTextStyleByTheme[theme]\n    }, children: position }) }),\n    children\n  ] });\n};\nconst containerStyle = {\n  display: \"flex\",\n  alignItems: \"center\",\n  gap: \"12px\"\n};\nconst rankAreaStyle = {\n  minWidth: 40,\n  height: \"100%\",\n  display: \"flex\",\n  alignItems: \"center\",\n  justifyContent: \"center\"\n};\nconst rankTextStyleByTheme = {\n  light: {\n    color: \"#000\"\n  },\n  dark: {\n    color: \"#fff\"\n  }\n};\nexport {\n  Card\n};\n","import { Root } from \"./Root.js\";\nimport { Card } from \"./Card.js\";\nconst Products = {\n  Root,\n  Card\n};\nexport {\n  Products\n};\n","import { entries } from \"../../../../utils/entries.js\";\nimport merge from \"../../../../node_modules/lodash-es/merge.js\";\nimport cloneDeep from \"../../../../node_modules/lodash-es/cloneDeep.js\";\nconst createOptionTemplate = (options) => {\n  const {\n    base,\n    mobile = {},\n    tablet = {},\n    desktop = {}\n  } = options;\n  return Object.fromEntries(entries({\n    mobile,\n    tablet,\n    desktop\n  }).map(([key, value]) => [key, merge(cloneDeep(base), value)]));\n};\nconst getResponsiveWidth = (gap, column = 1, inset = 0) => {\n  return `calc((100% - ${gap * Math.max(column - 1, 1) + inset}px) / ${column})`;\n};\nexport {\n  createOptionTemplate,\n  getResponsiveWidth\n};\n","import { ProductCardType } from \"../../../@shared/ProductCard/ProductCard.types.js\";\nimport { createOptionTemplate, getResponsiveWidth } from \"./Root.utils.js\";\nconst CARD_HORIZONTAL_AUTO = createOptionTemplate({\n  base: {\n    direction: \"horizontal\",\n    card: {\n      type: ProductCardType.CARD,\n      hasBadges: false,\n      hasPriceUnit: false\n    },\n    column: {\n      gap: 6\n    },\n    row: {\n      count: 2\n    }\n  },\n  mobile: {\n    column: {\n      displayCount: 3,\n      width: getResponsiveWidth(6, 3)\n    }\n  },\n  tablet: {\n    column: {\n      displayCount: 4,\n      width: getResponsiveWidth(6, 4)\n    }\n  },\n  desktop: {\n    navigator: true,\n    card: {\n      type: ProductCardType.CARD_DETAILED,\n      hasBadges: true\n    },\n    column: {\n      displayCount: 5,\n      width: getResponsiveWidth(6, 5)\n    }\n  }\n});\nconst BAR_HORIZONTAL_AUTO = createOptionTemplate({\n  base: {\n    direction: \"horizontal\",\n    card: {\n      type: ProductCardType.BAR,\n      size: \"small\",\n      hasName: false,\n      hasHeart: false,\n      hasBadges: false,\n      hasPriceUnit: false\n    },\n    column: {\n      gap: 16\n    },\n    row: {\n      count: 4,\n      gap: 16\n    }\n  },\n  mobile: {\n    column: {\n      displayCount: 1,\n      width: getResponsiveWidth(0, 1, 60)\n    }\n  },\n  tablet: {\n    column: {\n      displayCount: 2,\n      width: getResponsiveWidth(16, 2, 60)\n    }\n  },\n  desktop: {\n    navigator: true,\n    card: {\n      size: \"medium\"\n    },\n    column: {\n      displayCount: 3,\n      width: getResponsiveWidth(16, 3)\n    }\n  }\n});\nexport {\n  BAR_HORIZONTAL_AUTO,\n  CARD_HORIZONTAL_AUTO\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport { Icon } from \"../Icon/Icon.js\";\nimport { typography } from \"../../../styles/typography.js\";\nconst TextButton = ({\n  children,\n  style,\n  as,\n  theme = \"light\",\n  size = \"medium\",\n  prefixIcon,\n  postfixIcon,\n  variant,\n  backgroundColor,\n  color,\n  isUnderlined = false,\n  ...rest\n}, ref) => {\n  const Component = as ?? \"button\";\n  const variantStyle = textButtonStyleByVariant[rest.disabled ? \"disabled\" : variant];\n  const textButtonStyle = {\n    ...style,\n    ...baseTextButtonStyle,\n    ...textButtonStyleBySize[size],\n    ...variantStyle[theme],\n    ...isUnderlined && {\n      textDecoration: \"underline\"\n    }\n  };\n  const reshapedProps = {\n    ...rest,\n    href: rest.disabled ? void 0 : rest.href,\n    onClick: rest.disabled ? void 0 : rest.onClick\n  };\n  return /* @__PURE__ */ jsxs(Component, { ref, ...reshapedProps, style: textButtonStyle, children: [\n    prefixIcon ? /* @__PURE__ */ jsx(Icon, { type: getIconType(prefixIcon), fill: getIconFill(prefixIcon), size: iconSizeByButtonSize[size], color: textButtonStyle.color, weight: \"bold\" }) : null,\n    /* @__PURE__ */ jsx(\"div\", { style: contentStyle, children }),\n    postfixIcon ? /* @__PURE__ */ jsx(Icon, { type: getIconType(postfixIcon), fill: getIconFill(postfixIcon), size: iconSizeByButtonSize[size], color: textButtonStyle.color, weight: \"bold\" }) : null\n  ] });\n};\nconst getIconType = (icon) => typeof icon === \"string\" ? icon : icon.type;\nconst getIconFill = (icon) => typeof icon === \"string\" ? void 0 : icon.fill;\nconst baseTextButtonStyle = {\n  minWidth: \"fit-content\",\n  height: \"auto\",\n  display: \"flex\",\n  alignItems: \"center\",\n  justifyContent: \"center\",\n  cursor: \"pointer\",\n  // reset button element css\n  backgroundColor: \"transparent\",\n  textDecoration: \"none\",\n  padding: 0,\n  outline: \"none\",\n  border: \"none\",\n  boxSizing: \"border-box\"\n};\nconst textButtonStyleBySize = {\n  large: {\n    gap: \"4px\",\n    ...typography(18, 600, 1.2)\n  },\n  medium: {\n    gap: \"4px\",\n    ...typography(16, 600, 1.2)\n  },\n  small: {\n    gap: \"2px\",\n    ...typography(14, 600, 1.2)\n  },\n  xSmall: {\n    gap: \"2px\",\n    ...typography(12, 700, 1.36)\n  }\n};\nconst textButtonStyleByVariant = {\n  primary: {\n    light: {\n      color: \"#000\"\n    },\n    dark: {\n      color: \"#fff\"\n    }\n  },\n  secondary: {\n    light: {\n      color: \"#474747\"\n    },\n    dark: {\n      color: \"#a0a0a0\"\n    }\n  },\n  tertiary: {\n    light: {\n      color: \"#a0a0a0\"\n    },\n    dark: {\n      color: \"#474747\"\n    }\n  },\n  disabled: {\n    light: {\n      color: \"#c4c4c4\",\n      cursor: \"not-allowed\"\n    },\n    dark: {\n      color: \"#303033\",\n      cursor: \"not-allowed\"\n    }\n  }\n};\nconst iconSizeByButtonSize = {\n  large: 20,\n  medium: 18,\n  small: 16,\n  xSmall: 12\n};\nconst contentStyle = {\n  display: \"flex\",\n  alignItems: \"center\"\n};\nconst Default = forwardRef(TextButton);\nexport {\n  Default as TextButton\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { createContext, forwardRef } from \"react\";\nconst HeadlineContext = createContext(null);\nconst Root = forwardRef(({\n  children,\n  style,\n  priority = \"primary\",\n  loading = false,\n  ...rest\n}, ref) => {\n  return /* @__PURE__ */ jsx(HeadlineContext.Provider, { value: {\n    priority,\n    loading\n  }, children: /* @__PURE__ */ jsx(\"div\", { ref, ...rest, style: {\n    ...containerStyle,\n    ...containerStyleByPriority[priority],\n    ...style\n  }, children }) });\n});\nconst containerStyle = {\n  position: \"relative\",\n  width: \"100%\"\n};\nconst containerStyleByPriority = {\n  primary: {\n    paddingTop: 16\n  },\n  secondary: {\n    paddingTop: 12\n  },\n  tertiary: {\n    paddingTop: 0\n  }\n};\nexport {\n  HeadlineContext,\n  Root\n};\n","const HEADLINE_MEDIA_MAX_WIDTH = 1080;\nexport {\n  HEADLINE_MEDIA_MAX_WIDTH\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport { mediaBuilder } from \"../../../../utils/mediaBuilder.js\";\nimport { HEADLINE_MEDIA_MAX_WIDTH } from \"./Root.constants.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 \"../../../../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 \"../../../@shared/providers/ThemeProvider/ThemeProvider.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 \"../../../../utils/redirectLogin.js\";\nimport \"../../../../utils/event-properties/source.js\";\nconst SRC_SET_WIDTHS = [540, 1024, 1440];\nconst Image = forwardRef(({\n  source,\n  lazy = true\n}, ref) => {\n  const breakpoint = useBreakpoint();\n  if (!source) {\n    return null;\n  }\n  const result = mediaBuilder(source).setFormat(\"auto\").setQuality(90);\n  return /* @__PURE__ */ jsx(\"img\", { ref, style: {\n    ...containerStyle,\n    ...containerStyleByBreakpoint[breakpoint]\n  }, loading: lazy ? \"lazy\" : \"eager\", sizes: \"100vw\", srcSet: result.getSrcSet(...SRC_SET_WIDTHS), src: result.getSrc(), alt: \"\", \"data-headline-media\": \"true\" });\n});\nconst containerStyle = {\n  width: \"100%\",\n  maxWidth: HEADLINE_MEDIA_MAX_WIDTH,\n  objectFit: \"cover\"\n};\nconst containerStyleByBreakpoint = {\n  desktop: {\n    aspectRatio: \"3 / 1\"\n  },\n  tablet: {\n    aspectRatio: \"16 / 9\"\n  },\n  mobile: {\n    aspectRatio: \"16 / 9\"\n  }\n};\nexport {\n  Image\n};\n","import { useInView } from \"framer-motion\";\nimport { useRef, useState, useCallback, useEffect } from \"react\";\nimport { usePageVisibility } from \"./usePageVisibility.js\";\nimport { useReceiveMessage } from \"./useReceiveMessage.js\";\nconst useVideoVisibility = () => {\n  const videoRef = useRef(null);\n  const isInView = useInView(videoRef);\n  const isPageVisible = usePageVisibility();\n  const [isWindowFocused, setIsWindowFocused] = useState(true);\n  const [shouldLoadSources, setShouldLoadSources] = useState(false);\n  const handleWindowFocusMessage = useCallback((payload) => {\n    setIsWindowFocused(payload.value.toString() === \"true\");\n  }, []);\n  useReceiveMessage(\"isWindowFocused\", handleWindowFocusMessage);\n  useEffect(() => {\n    if (isInView && !shouldLoadSources) {\n      setShouldLoadSources(true);\n    }\n  }, [isInView, shouldLoadSources]);\n  useEffect(() => {\n    var _a;\n    if (!videoRef.current) {\n      return;\n    }\n    if (document.visibilityState === \"hidden\") {\n      videoRef.current.pause();\n      return;\n    }\n    if (!isWindowFocused) {\n      videoRef.current.pause();\n      return;\n    }\n    if (isInView) {\n      (_a = videoRef.current) == null ? void 0 : _a.play().catch(() => {\n      });\n    } else {\n      videoRef.current.pause();\n    }\n  }, [isInView, isPageVisible, isWindowFocused]);\n  return {\n    videoRef,\n    isInView,\n    shouldLoadSources\n  };\n};\nexport {\n  useVideoVisibility\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport { forwardRef, useMemo, useRef } from \"react\";\nimport { useInView } from \"framer-motion\";\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 \"../../../@shared/providers/ThemeProvider/ThemeProvider.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 \"../../../../containers/DialogContainer/DialogContainer.emitter.js\";\nimport { useVideoVisibility } from \"../../../../hooks/useVideoVisibility.js\";\nimport \"../../../../utils/redirectLogin.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { mergeRefs } from \"../../../../utils/react/mergeRefs.js\";\nimport { querify } from \"../../../../utils/querify.js\";\nimport { HEADLINE_MEDIA_MAX_WIDTH } from \"./Root.constants.js\";\nconst VideoInner = forwardRef(({\n  poster,\n  source,\n  sourceWebm\n}, ref) => {\n  const breakpoint = useBreakpoint();\n  const {\n    videoRef\n  } = useVideoVisibility();\n  const query = useMemo(() => querify({\n    width: posterWidthByBreakpoint[breakpoint],\n    q: 90\n  }), [breakpoint]);\n  const media = mediaByBreakpoint[breakpoint];\n  return /* @__PURE__ */ jsxs(\"video\", { ref: mergeRefs([ref, videoRef]), style: {\n    ...containerStyle,\n    ...containerStyleByBreakpoint[breakpoint]\n  }, poster: poster !== void 0 ? `${poster}?${query}` : void 0, playsInline: true, muted: true, loop: true, preload: \"auto\", \"data-headline-media\": \"true\", children: [\n    sourceWebm ? /* @__PURE__ */ jsx(\"source\", { type: \"video/webm\", src: sourceWebm, media }) : null,\n    /* @__PURE__ */ jsx(\"source\", { type: \"video/mp4\", src: source, media })\n  ] });\n});\nconst Video = forwardRef(({\n  poster,\n  source,\n  sourceWebm,\n  lazy = true\n}, ref) => {\n  const breakpoint = useBreakpoint();\n  const fallbackRef = useRef(null);\n  const isInView = useInView(fallbackRef, {\n    margin: \"400px 0px\",\n    once: true\n  });\n  if (!source) {\n    return null;\n  }\n  if (lazy && !isInView) {\n    return /* @__PURE__ */ jsx(\"div\", { ref: fallbackRef, style: {\n      ...containerStyle,\n      ...containerStyleByBreakpoint[breakpoint]\n    }, \"data-headline-media\": \"true\" });\n  }\n  return /* @__PURE__ */ jsx(VideoInner, { ref, poster, source, sourceWebm });\n});\nconst containerStyle = {\n  width: \"100%\",\n  maxWidth: HEADLINE_MEDIA_MAX_WIDTH,\n  objectFit: \"cover\"\n};\nconst containerStyleByBreakpoint = {\n  desktop: {\n    aspectRatio: \"3 / 1\"\n  },\n  tablet: {\n    aspectRatio: \"16 / 9\"\n  },\n  mobile: {\n    aspectRatio: \"16 / 9\"\n  }\n};\nconst posterWidthByBreakpoint = {\n  desktop: void 0,\n  tablet: 1440,\n  mobile: 1024\n};\nconst mediaByBreakpoint = {\n  desktop: \"(min-width: 1025px)\",\n  tablet: \"(min-width: 541px)\",\n  mobile: void 0\n};\nexport {\n  Video\n};\n","import { useContext } from \"react\";\nimport { HeadlineContext } from \"./Root.js\";\nconst useHeadlineContext = () => {\n  const context = useContext(HeadlineContext);\n  if (!context) {\n    throw new Error(\"useHeadlineContext should be used within Root\");\n  }\n  return context;\n};\nexport {\n  useHeadlineContext\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"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 \"../../../@shared/providers/ThemeProvider/ThemeProvider.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 \"../../../../utils/redirectLogin.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { useHeadlineContext } from \"./Root.hooks.js\";\nimport { ComponentName } from \"../../../../styles/ComponentName.js\";\nimport { createWithStyle } from \"../../../../styles/createWithStyle.js\";\nimport { css } from \"../../../../styles/css.js\";\nconst {\n  classNames,\n  withStyle\n} = createWithStyle(ComponentName.HeadlineContent, {\n  container: css`\n    position: relative;\n\n    /* NOTE(임규민): data-headline-media 속성을 가진 요소가 형제로 존재하는 경우에만 스타일 적용 */\n    &:where([data-headline-media='true'], [data-headline-media='true'] + *) {\n      position: absolute;\n      inset: auto 0 0;\n    }\n\n    &:where([data-headline-media='true'], [data-headline-media='true'] + *) > * {\n      padding-top: 40px !important;\n    }\n\n    &:where([data-headline-media='true'], [data-headline-media='true'] + *) > *[data-breakpoint='desktop'] {\n      padding-right: 32px !important;\n    }\n  `\n});\nconst Content = withStyle(forwardRef(({\n  children,\n  style,\n  contentStyle: _contentStyle,\n  emptyTitle,\n  ...rest\n}, ref) => {\n  const breakpoint = useBreakpoint();\n  const {\n    priority\n  } = useHeadlineContext();\n  return /* @__PURE__ */ jsx(\"div\", { ref, ...rest, className: classNames.container, children: /* @__PURE__ */ jsx(\"div\", { style: {\n    ...wrapperStyle,\n    ...wrapperStyleByBreakpoint[breakpoint],\n    ...wrapperStyleByPriority[priority],\n    ...style\n  }, \"data-breakpoint\": breakpoint, children: /* @__PURE__ */ jsx(\"div\", { style: {\n    ...contentStyle,\n    ...contentStyleByPriority[priority],\n    ...priority === \"primary\" && emptyTitle === true ? {\n      gap: 0\n    } : {},\n    ..._contentStyle\n  }, children }) }) });\n}));\nconst wrapperStyle = {\n  position: \"relative\"\n};\nconst wrapperStyleByBreakpoint = {\n  desktop: {\n    paddingRight: 0,\n    paddingLeft: 0\n  },\n  tablet: {\n    paddingRight: 20,\n    paddingLeft: 20\n  },\n  mobile: {\n    paddingRight: 20,\n    paddingLeft: 20\n  }\n};\nconst wrapperStyleByPriority = {\n  primary: {\n    paddingBottom: 16\n  },\n  secondary: {\n    paddingBottom: 20\n  },\n  tertiary: {\n    paddingBottom: 16\n  }\n};\nconst contentStyle = {\n  display: \"flex\"\n};\nconst contentStyleByPriority = {\n  primary: {\n    flexDirection: \"column\",\n    gap: 4\n  },\n  secondary: {\n    minHeight: 40,\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    gap: 16\n  },\n  tertiary: {\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    gap: 16\n  }\n};\nexport {\n  Content\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport \"framer\";\nimport { typography } from \"../../../../styles/typography.js\";\nimport { useHeadlineContext } from \"./Root.hooks.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 \"../../../../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 \"../../../../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 \"../../../../utils/redirectLogin.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { Skeleton } from \"../../../@shared/Skeleton/Skeleton.js\";\nconst Title = forwardRef(({\n  children,\n  style,\n  ...rest\n}, ref) => {\n  const {\n    priority,\n    loading\n  } = useHeadlineContext();\n  const breakpoint = useBreakpoint();\n  const theme = useTheme();\n  if (loading) {\n    return /* @__PURE__ */ jsx(Skeleton, { style: {\n      ...skeletonStyle,\n      ...skeletonStyleByPriority[priority][breakpoint],\n      ...skeletonStyleByTheme[theme]\n    } });\n  }\n  return /* @__PURE__ */ jsx(\"div\", { ref, ...rest, style: {\n    ...containerStyle,\n    ...textStyle[priority][breakpoint],\n    ...textColor[theme],\n    ...style\n  }, children });\n});\nconst containerStyle = {\n  zIndex: 1,\n  width: \"100%\",\n  whiteSpace: \"pre-wrap\",\n  color: \"#ffffff\"\n};\nconst skeletonStyle = {\n  width: \"40%\",\n  borderRadius: 6\n};\nconst skeletonStyleByPriority = {\n  primary: {\n    desktop: {\n      height: 42\n    },\n    tablet: {\n      height: 30.8\n    },\n    mobile: {\n      height: 30.8\n    }\n  },\n  secondary: {\n    desktop: {\n      height: 21\n    },\n    tablet: {\n      height: 21\n    },\n    mobile: {\n      height: 21\n    }\n  },\n  tertiary: {\n    desktop: {\n      height: 19.59\n    },\n    tablet: {\n      height: 19.59\n    },\n    mobile: {\n      height: 19.59\n    }\n  }\n};\nconst skeletonStyleByTheme = {\n  light: {\n    backgroundColor: \"#dee2e6\"\n  },\n  dark: {\n    backgroundColor: \"#27272a\"\n  }\n};\nconst textColor = {\n  light: {\n    color: \"#000000\"\n  },\n  dark: {\n    color: \"#ffffff\"\n  }\n};\nconst textStyle = {\n  primary: {\n    desktop: typography(30, 700),\n    tablet: typography(22, 700),\n    mobile: typography(22, 700)\n  },\n  secondary: {\n    desktop: typography(15, 700),\n    tablet: typography(15, 700),\n    mobile: typography(15, 700)\n  },\n  tertiary: {\n    desktop: typography(14, 700),\n    tablet: typography(14, 700),\n    mobile: typography(14, 700)\n  }\n};\nexport {\n  Title\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"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 \"../../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\";\nimport { useHeadlineContext } from \"./Root.hooks.js\";\nimport { Skeleton } from \"../../../@shared/Skeleton/Skeleton.js\";\nconst Description = forwardRef(({\n  children,\n  style,\n  ...rest\n}, ref) => {\n  const {\n    priority,\n    loading\n  } = useHeadlineContext();\n  const theme = useTheme();\n  if (!children) {\n    return null;\n  }\n  if (loading) {\n    return /* @__PURE__ */ jsx(Skeleton, { style: {\n      ...skeletonStyle,\n      ...skeletonStyleByPriority[priority],\n      ...skeletonStyleByTheme[theme]\n    } });\n  }\n  return /* @__PURE__ */ jsx(\"div\", { ref, ...rest, style: {\n    ...containerStyle,\n    ...containerStyleByPriority[priority],\n    ...textColor[theme],\n    ...style\n  }, children });\n});\nconst containerStyle = {\n  zIndex: 1,\n  width: \"100%\",\n  whiteSpace: \"pre-wrap\"\n};\nconst skeletonStyle = {\n  width: \"36%\",\n  borderRadius: 6\n};\nconst skeletonStyleByPriority = {\n  primary: {\n    height: 21\n  },\n  secondary: {\n    height: 16.8\n  },\n  tertiary: {\n    height: 16.8\n  }\n};\nconst skeletonStyleByTheme = {\n  light: {\n    backgroundColor: \"#dee2e6\"\n  },\n  dark: {\n    backgroundColor: \"#27272a\"\n  }\n};\nconst containerStyleByPriority = {\n  primary: {\n    ...typography(15, 400)\n  },\n  secondary: {\n    ...typography(12, 400)\n  },\n  // NOTE:(김홍동) tertiary에서 Description 사용케이스가 아직 없어 secondary와 동일하게 가져갑니다.\n  tertiary: {\n    ...typography(12, 400)\n  }\n};\nconst textColor = {\n  light: {\n    color: \"#474747\"\n  },\n  dark: {\n    color: \"#a0a0a0\"\n  }\n};\nexport {\n  Description\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nconst Action = forwardRef(({\n  children,\n  style,\n  ...rest\n}, ref) => {\n  if (!children) {\n    return null;\n  }\n  return /* @__PURE__ */ jsx(\"div\", { ref, ...rest, style: {\n    ...containerStyle,\n    ...style\n  }, children });\n});\nconst containerStyle = {\n  zIndex: 1,\n  minWidth: \"fit-content\",\n  display: \"flex\",\n  alignItems: \"center\"\n};\nexport {\n  Action\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"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 \"../../Dialog/Dialog.module.css.js\";\nimport \"framer-motion\";\nimport \"../../../../containers/DialogContainer/DialogContainer.emitter.js\";\nimport \"../../../../utils/redirectLogin.js\";\nimport \"../../../../utils/event-properties/source.js\";\nconst Gradient = forwardRef(({\n  style,\n  ...rest\n}, ref) => {\n  const theme = useTheme();\n  return /* @__PURE__ */ jsx(\"div\", { ref, ...rest, style: {\n    ...containerStyle,\n    ...containerStyleByTheme[theme],\n    ...style\n  } });\n});\nconst containerStyle = {\n  position: \"absolute\",\n  inset: 0,\n  zIndex: 0,\n  width: \"100%\"\n};\nconst containerStyleByTheme = {\n  light: {\n    background: \"linear-gradient(180deg, rgba(255, 255, 255, 0.00) 0%, rgba(255, 255, 255, 0.60) 46%, #fff 90%)\"\n  },\n  dark: {\n    background: \"linear-gradient(180deg, rgba(0, 0, 0, 0.00) 0%, rgba(0, 0, 0, 0.60) 46%, #000 90%)\"\n  }\n};\nexport {\n  Gradient\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport { useHeadlineContext } from \"./Root.hooks.js\";\nconst Body = forwardRef(({\n  children,\n  style,\n  ...rest\n}, ref) => {\n  const {\n    priority\n  } = useHeadlineContext();\n  return /* @__PURE__ */ jsx(\"div\", { ref, ...rest, style: {\n    ...containerStyle,\n    ...containerStyleByPriority[priority],\n    ...style\n  }, children });\n});\nconst containerStyle = {\n  width: \"100%\",\n  display: \"flex\"\n};\nconst containerStyleByPriority = {\n  primary: {\n    flexDirection: \"row\",\n    gap: 16\n  },\n  secondary: {\n    flexDirection: \"column\"\n  },\n  tertiary: {\n    flexDirection: \"column\"\n  }\n};\nexport {\n  Body\n};\n","import { Root } from \"./Root.js\";\nimport { Image } from \"./Image.js\";\nimport { Video } from \"./Video.js\";\nimport { Content } from \"./Content.js\";\nimport { Title } from \"./Title.js\";\nimport { Description } from \"./Description.js\";\nimport { Action } from \"./Action.js\";\nimport { Gradient } from \"./Gradient.js\";\nimport { Body } from \"./Body.js\";\nconst Headline = {\n  Root,\n  Image,\n  Video,\n  Content,\n  Body,\n  Title,\n  Description,\n  Action,\n  Gradient\n};\nexport {\n  Headline\n};\n","const QueryParamKeys = {\n  EngagerType: \"engager_type\",\n  Name: \"n\"\n};\nconst QueryParamValues = {\n  EngagerTypeValueSharer: \"sharer\",\n  EngagerTypeValueViewer: \"viewer\"\n};\nconst PREVIOUS_PAGE_NAME_QUERY_STRING_KEY = \"previousPageName\";\nconst PREVIOUS_SECTION_NAME_QUERY_STRING_KEY = \"previousSectionName\";\nconst PREVIOUS_SECTION_TITLE_QUERY_STRING_KEY = \"previousSectionTitle\";\nconst PREVIOUS_CONTENT_NO_QUERY_STRING_KEY = \"previousContentNo\";\nexport {\n  PREVIOUS_CONTENT_NO_QUERY_STRING_KEY,\n  PREVIOUS_PAGE_NAME_QUERY_STRING_KEY,\n  PREVIOUS_SECTION_NAME_QUERY_STRING_KEY,\n  PREVIOUS_SECTION_TITLE_QUERY_STRING_KEY,\n  QueryParamKeys,\n  QueryParamValues\n};\n","const createSearchParams = (params) => {\n  const filteredParams = Object.fromEntries(Object.entries(params).filter(([, value]) => value !== void 0 && value !== null && value !== \"\" && value !== \"null\" && value !== \"undefined\"));\n  return new URLSearchParams(filteredParams).toString();\n};\nexport {\n  createSearchParams\n};\n","const CONTENT_DOMAIN_HOSTNAME = \"https://content.29cm.co.kr\";\nconst useCreateAppSchemeLink = () => {\n  const createAppSchemeLink = (href, options = {}) => {\n    const fullPath = href.includes(\"https://\") ? href : `${CONTENT_DOMAIN_HOSTNAME}${href}`;\n    const params = [];\n    if (options.home !== void 0) {\n      params.push(`29cm_nav_home=${getOnOffValue(options.home)}`);\n    }\n    if (options.cart !== void 0) {\n      params.push(`29cm_nav_cart=${getOnOffValue(options.cart)}`);\n    }\n    if (options.search !== void 0) {\n      params.push(`29cm_nav_search=${getOnOffValue(options.search)}`);\n    }\n    if (options.title !== void 0) {\n      params.push(`29cm_title=${encodeURIComponent(options.title)}`);\n    }\n    const hasExistingParams = fullPath.includes(\"?\");\n    const queryDelimiter = hasExistingParams ? \"&\" : \"?\";\n    const queryString = params.length ? `${queryDelimiter}${params.join(\"&\")}` : \"\";\n    return `app29cm://web/${encodeURIComponent(`${fullPath}${queryString}`)}`;\n  };\n  return {\n    createAppSchemeLink\n  };\n};\nconst getOnOffValue = (value) => value ? \"on\" : \"off\";\nexport {\n  useCreateAppSchemeLink\n};\n","import { isServer } from \"./context.js\";\nconst getAnchorTarget = (url) => {\n  if (isServer()) {\n    return \"_self\";\n  }\n  return normalizeURL(url) === normalizeURL(window.location.href) ? \"_self\" : \"_blank\";\n};\nconst normalizeURL = (url) => {\n  const hasOrigin = !url.startsWith(\"/\");\n  try {\n    const {\n      origin,\n      pathname\n    } = new URL(hasOrigin ? url : `${window.location.origin}${url}`);\n    return `${origin}${pathname}`;\n  } catch (error) {\n    return \"\";\n  }\n};\nexport {\n  getAnchorTarget\n};\n","import { isWebview } from \"../utils/device.js\";\nimport { useCreateAppSchemeLink } from \"./useCreateAppSchemeLink.js\";\nimport { getAnchorTarget } from \"../utils/getAnchorTarget.js\";\nconst useNavigatePage = (url, options = {}) => {\n  const {\n    createAppSchemeLink\n  } = useCreateAppSchemeLink();\n  return () => {\n    if (isWebview()) {\n      document.location.href = createAppSchemeLink(url, options.webview);\n    } else {\n      window.open(url, getAnchorTarget(url));\n    }\n  };\n};\nexport {\n  useNavigatePage\n};\n","import useSWR from \"../../node_modules/swr/core/dist/index.js\";\nimport { brandSaleApi } from \"../../apis/brand-sale/BrandSaleApiService.js\";\nconst BRAND_SALES = \"brand-sales\";\nconst useFetchBrandSales = (brandSaleId, enabled = true) => {\n  const {\n    isLoading,\n    ...rest\n  } = useSWR(enabled ? [BRAND_SALES, brandSaleId] : null, () => brandSaleApi.getBrandSales(brandSaleId), {\n    keepPreviousData: true\n  });\n  return {\n    isLoading: isLoading || !enabled,\n    ...rest\n  };\n};\nexport {\n  useFetchBrandSales\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { createContext, forwardRef } from \"react\";\nimport { DraggableTabs } from \"../../../@shared/DraggableTabs/index.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 \"../../../../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 \"../../../@shared/providers/ThemeProvider/ThemeProvider.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 \"../../../../utils/redirectLogin.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { Breakpoint } from \"../../../../styles/breakpoint.js\";\nconst ProfilesContext = createContext(null);\nconst Root = forwardRef(({\n  children,\n  loading = false,\n  defaultValue,\n  value,\n  dragPaddingLeft,\n  dragPaddingRight,\n  onValueChange\n}, ref) => {\n  const breakpoint = useBreakpoint();\n  const sidePadding = sidePaddingByBreakpoint[breakpoint];\n  return /* @__PURE__ */ jsx(ProfilesContext.Provider, { value: {\n    loading\n  }, children: /* @__PURE__ */ jsx(DraggableTabs.Root, { ref, defaultValue, value, dragPaddingLeft: dragPaddingLeft ?? sidePadding, dragPaddingRight: dragPaddingRight ?? sidePadding, onValueChange, children }) });\n});\nconst sidePaddingByBreakpoint = {\n  [Breakpoint.DESKTOP]: 0,\n  [Breakpoint.TABLET]: 20,\n  [Breakpoint.MOBILE]: 20\n};\nexport {\n  ProfilesContext,\n  Root\n};\n","import { useContext } from \"react\";\nimport { ProfilesContext } from \"./Root.js\";\nconst useProfilesContext = () => {\n  const context = useContext(ProfilesContext);\n  if (!context) {\n    throw new Error(\"useProfilesContext should be used within Root\");\n  }\n  return context;\n};\nexport {\n  useProfilesContext\n};\n","import { jsx, jsxs } from \"react/jsx-runtime\";\nimport { forwardRef, Fragment } from \"react\";\nimport { DraggableTabs } from \"../../../@shared/DraggableTabs/index.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 \"../../../../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 \"../../../@shared/providers/ThemeProvider/ThemeProvider.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 \"../../../../utils/redirectLogin.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { Breakpoint } from \"../../../../styles/breakpoint.js\";\nimport { useProfilesContext } from \"./Root.hooks.js\";\nconst LIST_GAP = 6;\nconst SKELETONS_PER_PENDING = 5;\nconst MASK_GRADIENT = \"linear-gradient(to right, black 0%, black calc(100% - 60px), transparent 100%)\";\nconst maskStyle = {\n  maskImage: MASK_GRADIENT,\n  WebkitMaskImage: MASK_GRADIENT\n};\nconst List = ({\n  style,\n  children,\n  list\n}, ref) => {\n  const breakpoint = useBreakpoint();\n  const {\n    loading\n  } = useProfilesContext();\n  const pending = loading && list.length === 0;\n  const shouldMask = !pending && breakpoint !== Breakpoint.MOBILE;\n  return /* @__PURE__ */ jsx(\"div\", { style: {\n    ...containerStyle,\n    ...shouldMask ? maskStyle : void 0,\n    ...style\n  }, children: /* @__PURE__ */ jsxs(DraggableTabs.List, { ref, gap: LIST_GAP, children: [\n    list.map((item, index) => (\n      // eslint-disable-next-line react/no-array-index-key\n      /* @__PURE__ */ jsx(Fragment, { children: children({\n        index,\n        pending,\n        item\n      }) }, index)\n    )),\n    pending ? Array.from({\n      length: SKELETONS_PER_PENDING\n    }).map((_, index) => (\n      // eslint-disable-next-line react/no-array-index-key\n      /* @__PURE__ */ jsx(Fragment, { children: children({\n        index,\n        pending\n      }) }, index)\n    )) : null\n  ] }) });\n};\nconst Default = forwardRef(List);\nconst containerStyle = {\n  position: \"relative\",\n  width: \"100%\",\n  marginBottom: 10\n};\nexport {\n  Default as List\n};\n","const ellipsis = (lineClamp = 1) => {\n  const singleLineStyle = {\n    overflow: \"hidden\",\n    display: \"-webkit-box\",\n    wordWrap: \"break-word\",\n    wordBreak: \"break-all\",\n    whiteSpace: \"normal\",\n    WebkitBoxOrient: \"vertical\",\n    WebkitLineClamp: 1\n  };\n  const multiLineStyle = {\n    display: \"-webkit-box\",\n    wordBreak: \"keep-all\",\n    overflowWrap: \"break-word\",\n    whiteSpace: \"normal\",\n    WebkitLineClamp: lineClamp,\n    WebkitBoxOrient: \"vertical\"\n  };\n  const isMultiLine = lineClamp > 1;\n  return {\n    overflow: \"hidden\",\n    ...isMultiLine ? multiLineStyle : singleLineStyle\n  };\n};\nexport {\n  ellipsis\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport { mediaBuilder } from \"../../../utils/mediaBuilder.js\";\nconst IMAGE_HOST = \"img.29cm.co.kr\";\nconst IMAGE_WIDTH = 150;\nconst ProfileImage = forwardRef(({\n  style,\n  src,\n  theme,\n  ...rest\n}, ref) => {\n  const hasProtocol = src.includes(\"https://\");\n  const url = hasProtocol ? src : `https://${IMAGE_HOST}/${src}`;\n  const isExternalImage = hasProtocol && !src.includes(IMAGE_HOST);\n  if (!src) {\n    return /* @__PURE__ */ jsx(\"div\", { style: {\n      ...containerStyle,\n      backgroundColor: backgroundColorByTheme[theme]\n    } });\n  }\n  return /* @__PURE__ */ jsx(\"img\", { ref, ...rest, style: {\n    ...containerStyle,\n    ...style\n  }, loading: \"lazy\", src: isExternalImage ? src : optimize(url), alt: isExternalImage ? src : url });\n});\nconst optimize = (url) => {\n  return mediaBuilder(url).setFormat(\"auto\").setWidth(IMAGE_WIDTH).setQuality(90).getSrc();\n};\nconst containerStyle = {\n  width: 72,\n  height: 72,\n  objectFit: \"cover\",\n  borderRadius: 9999,\n  backgroundColor: \"#C4C4C4\"\n};\nconst backgroundColorByTheme = {\n  light: \"#dee2e6\",\n  dark: \"#27272a\"\n};\nexport {\n  ProfileImage\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport { forwardRef, useState } from \"react\";\nimport \"framer\";\nimport { typography } from \"../../../styles/typography.js\";\nimport { ellipsis } from \"../../../styles/ellipsis.js\";\nimport { Icon } from \"../Icon/Icon.js\";\nimport { ProfileImage } from \"./ProfileImage.js\";\nconst CONTENT_HEIGHT = 18;\nconst Profile = forwardRef(({\n  style,\n  theme = \"light\",\n  active,\n  name,\n  imageSrc,\n  imageDraggable,\n  hasArrow = true,\n  ...rest\n}, ref) => {\n  const [contentRef, setContentRef] = useState(null);\n  const isMultiLine = isHeightOverflowed(contentRef, CONTENT_HEIGHT);\n  const shouldRenderArrow = hasArrow && active && !isMultiLine;\n  return /* @__PURE__ */ jsxs(\"div\", { ref, ...rest, style: {\n    ...containerStyle,\n    opacity: active ? 1 : 0.4,\n    ...style\n  }, children: [\n    /* @__PURE__ */ jsx(ProfileImage, { style: {\n      border: active ? borderStyleByTheme[theme] : \"none\"\n    }, src: imageSrc, theme, draggable: imageDraggable }),\n    /* @__PURE__ */ jsxs(\"div\", { style: wrapperStyle, children: [\n      name !== void 0 ? /* @__PURE__ */ jsx(\"div\", { ref: setContentRef, style: {\n        ...contentStyle,\n        color: colorByTheme[theme],\n        ...ellipsis(2),\n        ...preLineStyle\n      }, children: name }) : null,\n      shouldRenderArrow ? /* @__PURE__ */ jsx(Icon, { type: \"disclosureOff\", weight: \"bold\", size: 20, fill: true, color: colorByTheme[theme] }) : null\n    ] })\n  ] });\n});\nconst isHeightOverflowed = (element, maxHeight) => {\n  const {\n    offsetHeight = 0\n  } = element ?? {};\n  return offsetHeight > maxHeight;\n};\nconst containerStyle = {\n  width: 72,\n  display: \"flex\",\n  flexDirection: \"column\",\n  alignItems: \"center\",\n  gap: 8,\n  minHeight: 120\n};\nconst wrapperStyle = {\n  width: \"100%\",\n  display: \"flex\",\n  flexDirection: \"column\",\n  alignItems: \"center\",\n  overflow: \"hidden\"\n};\nconst contentStyle = {\n  width: \"100%\",\n  minHeight: CONTENT_HEIGHT,\n  textAlign: \"center\",\n  ...typography(13)\n};\nconst colorByTheme = {\n  light: \"#000000\",\n  dark: \"#ffffff\"\n};\nconst borderStyleByTheme = {\n  light: \"2px solid #000000\",\n  dark: \"2px solid #ffffff\"\n};\nconst preLineStyle = {\n  whiteSpace: \"pre-line\"\n};\nexport {\n  Profile\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport { Skeleton } from \"../Skeleton/Skeleton.js\";\nconst ProfileSkeleton = forwardRef(({\n  theme = \"light\",\n  hasName = false\n}, ref) => {\n  return /* @__PURE__ */ jsxs(\"div\", { ref, style: containerStyle, children: [\n    /* @__PURE__ */ jsx(Skeleton, { style: {\n      ...imageStyle,\n      ...colorByTheme[theme]\n    } }),\n    hasName ? /* @__PURE__ */ jsx(Skeleton, { style: {\n      ...nameStyle,\n      ...colorByTheme[theme]\n    } }) : null\n  ] });\n});\nconst containerStyle = {\n  width: 72,\n  display: \"flex\",\n  flexDirection: \"column\",\n  alignItems: \"center\",\n  gap: 8\n};\nconst imageStyle = {\n  width: 72,\n  height: 72,\n  borderRadius: 9999\n};\nconst nameStyle = {\n  width: \"50%\",\n  height: 14,\n  borderRadius: \"6px\"\n};\nconst colorByTheme = {\n  light: {\n    backgroundColor: \"#dee2e6\"\n  },\n  dark: {\n    backgroundColor: \"#27272a\"\n  }\n};\nexport {\n  ProfileSkeleton\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport { DraggableTabs } from \"../../../@shared/DraggableTabs/index.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 \"../../../../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 \"../../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 { useProfilesContext } from \"./Root.hooks.js\";\nimport { Profile } from \"../../../@shared/Profile/Profile.js\";\nimport { ProfileSkeleton } from \"../../../@shared/ProfileSkeleton/ProfileSkeleton.js\";\nconst Item = forwardRef(({\n  children,\n  value,\n  name,\n  imageSrc,\n  hasArrow,\n  onClick\n}, ref) => {\n  const {\n    loading\n  } = useProfilesContext();\n  const theme = useTheme();\n  if (loading) {\n    return /* @__PURE__ */ jsx(ProfileSkeleton, { theme, hasName: name !== void 0 && name !== \"\" });\n  }\n  return /* @__PURE__ */ jsx(DraggableTabs.Trigger, { ref, style: {\n    alignItems: \"start\"\n  }, value, onClick, children: (active) => (\n    // NOTE(임규민): 목록을 드래그할 때 Profile 컴포넌트의 이미지가 드래그 되는 현상을 방지\n    /* @__PURE__ */ jsx(Profile, { theme, active, name, imageSrc, imageDraggable: false, hasArrow, children })\n  ) });\n});\nexport {\n  Item\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { Fragment } from \"react\";\nimport { useProfilesContext } from \"./Root.hooks.js\";\nconst Panels = ({\n  children,\n  list\n}) => {\n  const {\n    loading\n  } = useProfilesContext();\n  const pending = loading && list.length === 0;\n  if (pending) {\n    return children({\n      index: 0,\n      pending\n    });\n  }\n  return list.map((item, index) => (\n    // eslint-disable-next-line react/no-array-index-key\n    /* @__PURE__ */ jsx(Fragment, { children: children({\n      index,\n      pending,\n      item\n    }) }, index)\n  ));\n};\nexport {\n  Panels\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { DraggableTabs } from \"../../../@shared/DraggableTabs/index.js\";\nimport { useProfilesContext } from \"./Root.hooks.js\";\nconst Panel = ({\n  children,\n  value\n}) => {\n  const {\n    loading\n  } = useProfilesContext();\n  if (loading) {\n    return children;\n  }\n  return /* @__PURE__ */ jsx(DraggableTabs.Panel, { value, children });\n};\nexport {\n  Panel\n};\n","import { Root } from \"./Root.js\";\nimport { List as Default } from \"./List.js\";\nimport { Item } from \"./Item.js\";\nimport { Panels } from \"./Panels.js\";\nimport { Panel } from \"./Panel.js\";\nconst Profiles = {\n  Root,\n  List: Default,\n  Item,\n  Panels,\n  Panel\n};\nexport {\n  Profiles\n};\n","const pick = (obj, keys) => {\n  const picked = {};\n  keys.forEach((key) => {\n    picked[key] = obj[key];\n  });\n  return picked;\n};\nconst isObject = (object) => {\n  return typeof object === \"object\" && object !== null && !Array.isArray(object);\n};\nexport {\n  isObject,\n  pick\n};\n","const variantByType = {\n  neutral: {\n    background: {\n      light: \"#dee2e6\",\n      dark: \"#27272a\"\n    },\n    primary: {\n      light: \"#000\",\n      dark: \"#fff\"\n    },\n    secondary: {\n      light: \"#474747\",\n      dark: \"#a0a0a0\"\n    },\n    tertiary: {\n      light: \"rgba(0, 0, 0, 0.5)\",\n      dark: \"rgba(255, 255, 255, 0.5)\"\n    },\n    border: \"rgba(255, 255, 255, 0.13)\"\n  },\n  accent: {\n    // NOTE(임규민): 기본 key color, 외부에서 커스터마이즈가 가능한 값입니다.\n    background: {\n      light: \"#ff4800\",\n      dark: \"#ff4800\"\n    },\n    primary: {\n      light: \"#000\",\n      dark: \"#fff\"\n    },\n    secondary: {\n      light: \"#000\",\n      dark: \"#fff\"\n    },\n    tertiary: {\n      light: \"#000\",\n      dark: \"#fff\"\n    },\n    border: \"rgba(255, 255, 255, 0.5)\"\n  },\n  disabled: {\n    background: {\n      light: \"#dee2e6\",\n      dark: \"#27272a\"\n    },\n    primary: {\n      light: \"#474747\",\n      dark: \"#a0a0a0\"\n    },\n    secondary: {\n      light: \"#474747\",\n      dark: \"#a0a0a0\"\n    },\n    tertiary: {\n      light: \"rgba(0, 0, 0, 0.5)\",\n      dark: \"rgba(255, 255, 255, 0.5)\"\n    },\n    border: \"rgba(255, 255, 255, 0.13)\"\n  }\n};\nconst variantByStatus = {\n  upcoming: variantByType.neutral,\n  downloadable: variantByType.accent,\n  downloaded: variantByType.neutral,\n  expired: variantByType.disabled,\n  disabled: variantByType.disabled,\n  issuanceLimitedReached: variantByType.disabled\n};\nexport {\n  variantByStatus,\n  variantByType\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { createContext, forwardRef, useCallback } from \"react\";\nimport { isObject } from \"../../../utils/object.js\";\nimport { Skeleton } from \"../Skeleton/Skeleton.js\";\nimport { variantByStatus } from \"./Root.constants.js\";\nconst CouponContext = createContext(null);\nconst Root = forwardRef(({\n  children,\n  style,\n  theme = \"light\",\n  loading = false,\n  status = \"downloadable\",\n  layout = \"detail\",\n  backgroundColor: _backgroundColor,\n  ...rest\n}, ref) => {\n  const variant = variantByStatus[status];\n  const backgroundColor = status === \"downloadable\" ? _backgroundColor ?? variant.background : variant.background;\n  const getBackground = useCallback(() => {\n    if (!isObject(backgroundColor)) {\n      return backgroundColor;\n    }\n    if (\"stops\" in backgroundColor) {\n      return getLinearGradient(backgroundColor);\n    }\n    return backgroundColor[theme];\n  }, [backgroundColor, theme]);\n  return /* @__PURE__ */ jsx(CouponContext.Provider, { value: {\n    status,\n    variant,\n    layout\n  }, children: /* @__PURE__ */ jsx(\"div\", { ref, style: {\n    ...containerStyle,\n    ...style\n  }, ...rest, children: loading ? /* @__PURE__ */ jsx(Skeleton, { style: {\n    ...skeletonStyle,\n    ...skeletonStyleByTheme[theme],\n    ...skeletonStyleByLayout[layout]\n  } }) : /* @__PURE__ */ jsx(\"div\", { style: {\n    ...wrapperStyle,\n    background: getBackground(),\n    ...wrapperStyleByLayout[layout],\n    ...layout === \"compact\" ? compactWrapperStyleByStatus[status] : {}\n  }, children }) }) });\n});\nconst getLinearGradient = (linearGradient) => {\n  const {\n    stops,\n    degree\n  } = linearGradient;\n  const gradient = [...stops].sort((x, y) => x.offsetPercent - y.offsetPercent).map((stop) => `${stop.color} ${stop.offsetPercent}%`).join(\", \");\n  return `linear-gradient(${degree}deg, ${gradient})`;\n};\nconst containerStyle = {\n  width: \"100%\"\n};\nconst wrapperStyle = {\n  position: \"relative\",\n  width: \"100%\",\n  display: \"flex\",\n  borderRadius: 4,\n  overflow: \"hidden\"\n};\nconst wrapperStyleByLayout = {\n  compact: {\n    height: 46,\n    WebkitMaskImage: `url('data:image/svg+xml;utf8,<svg width=\"6\" height=\"14\" viewBox=\"0 0 6 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6.00017 7C6.00017 10.866 2.86617 14 0.000163798 14C1.24598e-06 9.18 0.000163798 4.822 0.000163798 0C2.86617 0 6.00017 3.134 6.00017 7Z\" fill=\"white\"/></svg>'), linear-gradient(#fff,#fff)`,\n    maskImage: `url('data:image/svg+xml;utf8,<svg width=\"6\" height=\"14\" viewBox=\"0 0 6 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6.00017 7C6.00017 10.866 2.86617 14 0.000163798 14C1.24598e-06 9.18 0.000163798 4.822 0.000163798 0C2.86617 0 6.00017 3.134 6.00017 7Z\" fill=\"white\"/></svg>'), linear-gradient(#fff,#fff)`,\n    WebkitMaskComposite: \"exclude\",\n    maskComposite: \"exclude\",\n    WebkitMaskPosition: \"0 50%\",\n    maskPosition: \"0 50%\",\n    WebkitMaskSize: \"6px 14px, auto\",\n    maskSize: \"6px 14px, auto\",\n    WebkitMaskRepeat: \"no-repeat\",\n    maskRepeat: \"no-repeat\"\n  },\n  detail: {\n    height: 76,\n    WebkitMaskImage: `url('data:image/svg+xml;utf8,<svg width=\"8\" height=\"16\" viewBox=\"0 0 8 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M8.00022 8C8.00022 12.4183 4.4185 16 0.000218398 16C1.66131e-06 10.4911 0.000218398 5.52413 0.000218398 0C4.4185 0 8.00022 3.58172 8.00022 8Z\" fill=\"white\"/></svg>'), linear-gradient(#fff,#fff)`,\n    maskImage: `url('data:image/svg+xml;utf8,<svg width=\"8\" height=\"16\" viewBox=\"0 0 8 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M8.00022 8C8.00022 12.4183 4.4185 16 0.000218398 16C1.66131e-06 10.4911 0.000218398 5.52413 0.000218398 0C4.4185 0 8.00022 3.58172 8.00022 8Z\" fill=\"white\"/></svg>'), linear-gradient(#fff,#fff)`,\n    WebkitMaskComposite: \"exclude\",\n    maskComposite: \"exclude\",\n    WebkitMaskPosition: \"0 50%\",\n    maskPosition: \"0 50%\",\n    WebkitMaskSize: \"8px 16px, auto\",\n    maskSize: \"8px 16px, auto\",\n    WebkitMaskRepeat: \"no-repeat\",\n    maskRepeat: \"no-repeat\"\n  }\n};\nconst compactWrapperStyleByStatus = {\n  upcoming: {\n    cursor: \"not-allowed\"\n  },\n  downloadable: {\n    cursor: \"pointer\"\n  },\n  downloaded: {\n    cursor: \"pointer\"\n  },\n  expired: {\n    cursor: \"not-allowed\"\n  },\n  disabled: {\n    cursor: \"not-allowed\"\n  },\n  issuanceLimitedReached: {\n    cursor: \"not-allowed\"\n  }\n};\nconst skeletonStyle = {\n  width: \"100%\",\n  borderRadius: 4\n};\nconst skeletonStyleByTheme = {\n  light: {\n    backgroundColor: \"#dee2e6\"\n  },\n  dark: {\n    backgroundColor: \"#27272a\"\n  }\n};\nconst skeletonStyleByLayout = {\n  compact: {\n    height: 46\n  },\n  detail: {\n    height: 76\n  }\n};\nexport {\n  CouponContext,\n  Root\n};\n","import { useContext } from \"react\";\nimport { CouponContext } from \"./Root.js\";\nconst useCouponContext = () => {\n  const context = useContext(CouponContext);\n  if (!context) {\n    throw new Error(\"useCouponContext should be used with in Root\");\n  }\n  return context;\n};\nexport {\n  useCouponContext\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"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 \"../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\";\nimport { useCouponContext } from \"./Root.hooks.js\";\nconst Description = forwardRef(({\n  children,\n  style,\n  ...rest\n}, ref) => {\n  const {\n    variant,\n    layout\n  } = useCouponContext();\n  const theme = useTheme();\n  if (layout === \"compact\") {\n    return null;\n  }\n  return /* @__PURE__ */ jsx(\"div\", { ref, ...rest, style: {\n    ...typography(12, 400),\n    color: variant.tertiary[theme],\n    ...style\n  }, children });\n});\nexport {\n  Description\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"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 \"../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 { useCouponContext } from \"./Root.hooks.js\";\nconst Divider = forwardRef(({\n  children,\n  style,\n  ...rest\n}, ref) => {\n  const theme = useTheme();\n  const {\n    layout\n  } = useCouponContext();\n  if (layout === \"compact\") {\n    return null;\n  }\n  return /* @__PURE__ */ jsx(\"div\", { ref, ...rest, style: {\n    ...containerStyle,\n    ...containerStyleByTheme[theme],\n    ...style\n  }, children });\n});\nconst containerStyle = {\n  zIndex: 1,\n  height: \"100%\",\n  borderLeftWidth: \"1px\",\n  borderLeftStyle: \"dashed\",\n  opacity: 0.2\n};\nconst containerStyleByTheme = {\n  light: {\n    borderColor: \"#000\"\n  },\n  dark: {\n    borderColor: \"#fff\"\n  }\n};\nexport {\n  Divider\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"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 \"../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\";\nimport { playHaptic } from \"../../../utils/playHaptic.js\";\nimport { Icon } from \"../Icon/Icon.js\";\nimport { useCouponContext } from \"./Root.hooks.js\";\nconst Button = forwardRef(({\n  style,\n  onClick,\n  ...rest\n}, ref) => {\n  const {\n    variant,\n    status,\n    layout\n  } = useCouponContext();\n  const theme = useTheme();\n  const {\n    icon,\n    text\n  } = contentByStatus[status];\n  const shouldRenderIcon = layout === \"detail\" || status === \"downloadable\" || status === \"downloaded\";\n  const getIconSize = () => {\n    if (layout === \"detail\") {\n      return 24;\n    }\n    if (layout === \"compact\") {\n      return 14;\n    }\n    return 16;\n  };\n  const getIconType = () => {\n    if (layout === \"compact\" && icon === \"download\") {\n      return \"downloadSlim\";\n    }\n    return icon;\n  };\n  const handleClick = (e) => {\n    if (status === \"upcoming\" || status === \"expired\") {\n      return;\n    }\n    playHaptic(\"rigid\");\n    onClick == null ? void 0 : onClick(e);\n  };\n  return /* @__PURE__ */ jsxs(\"div\", { ref, ...rest, style: {\n    ...containerStyle,\n    ...containerStyleByLayout[layout],\n    ...style,\n    ...containerStyleByStatus[status]\n  }, onClick: handleClick, children: [\n    shouldRenderIcon ? /* @__PURE__ */ jsx(Icon, { type: getIconType(), weight: layout === \"detail\" ? \"light\" : \"regular\", size: getIconSize(), color: variant.secondary[theme] }) : null,\n    /* @__PURE__ */ jsx(\"div\", { style: {\n      ...typography(12, layout === \"compact\" ? 500 : 400),\n      color: variant.secondary[theme]\n    }, children: text })\n  ] });\n});\nconst contentByStatus = {\n  upcoming: {\n    icon: \"clock\",\n    text: \"발행예정\"\n  },\n  downloadable: {\n    icon: \"download\",\n    text: \"쿠폰받기\"\n  },\n  downloaded: {\n    icon: \"check\",\n    text: \"받기완료\"\n  },\n  expired: {\n    icon: \"close\",\n    text: \"기간만료\"\n  },\n  disabled: {\n    icon: \"close\",\n    text: \"사용불가\"\n  },\n  issuanceLimitedReached: {\n    icon: \"close\",\n    text: \"받기마감\"\n  }\n};\nconst containerStyle = {\n  zIndex: 1,\n  height: \"100%\",\n  display: \"flex\",\n  alignItems: \"center\",\n  justifyContent: \"center\",\n  gap: 4\n};\nconst containerStyleByLayout = {\n  compact: {\n    paddingRight: 16,\n    flexShrink: 0\n  },\n  detail: {\n    aspectRatio: \"1 / 1\",\n    flexDirection: \"column\"\n  }\n};\nconst containerStyleByStatus = {\n  upcoming: {\n    cursor: \"not-allowed\"\n  },\n  downloadable: {\n    cursor: \"pointer\"\n  },\n  downloaded: {\n    cursor: \"pointer\"\n  },\n  expired: {\n    cursor: \"not-allowed\"\n  },\n  disabled: {\n    cursor: \"not-allowed\"\n  },\n  issuanceLimitedReached: {\n    cursor: \"not-allowed\"\n  }\n};\nexport {\n  Button\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport { useCouponContext } from \"./Root.hooks.js\";\nconst Summary = forwardRef(({\n  children,\n  style,\n  ...rest\n}, ref) => {\n  const {\n    layout\n  } = useCouponContext();\n  return /* @__PURE__ */ jsx(\"div\", { ref, ...rest, style: {\n    ...containerStyle,\n    ...containerStyleByLayout[layout],\n    ...style\n  }, children });\n});\nconst containerStyle = {\n  zIndex: 1,\n  flex: 1,\n  height: \"100%\",\n  display: \"flex\",\n  flexDirection: \"column\",\n  justifyContent: \"center\",\n  gap: 2\n};\nconst containerStyleByLayout = {\n  compact: {\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    gap: 12,\n    padding: \"0px 0px 0px 16px\"\n  },\n  detail: {\n    padding: \"0px 8px 0px 26px\"\n  }\n};\nexport {\n  Summary\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"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 \"../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\";\nimport { useCouponContext } from \"./Root.hooks.js\";\nconst Title = forwardRef(({\n  children,\n  style,\n  ...rest\n}, ref) => {\n  const {\n    variant,\n    layout\n  } = useCouponContext();\n  const theme = useTheme();\n  return /* @__PURE__ */ jsx(\"div\", { ref, ...rest, style: {\n    ...styleByLayout[layout],\n    color: variant.primary[theme],\n    ...style\n  }, children });\n});\nconst styleByLayout = {\n  compact: {\n    flex: \"1 0 0\",\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\",\n    whiteSpace: \"nowrap\",\n    ...typography(14, 500)\n  },\n  detail: {\n    ...typography(15, 700)\n  }\n};\nexport {\n  Title\n};\n","import { Description } from \"./Description.js\";\nimport { Divider } from \"./Divider.js\";\nimport { Root } from \"./Root.js\";\nimport { Button } from \"./Button.js\";\nimport { Summary } from \"./Summary.js\";\nimport { Title } from \"./Title.js\";\nconst Coupon = {\n  Root,\n  Summary,\n  Title,\n  Description,\n  Divider,\n  Button\n};\nexport {\n  Coupon\n};\n","const parseErrorMessage = (err, fallbackMessage) => {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q;\n  const error = err;\n  const errors = error == null ? void 0 : error.errors;\n  if (isArrayErrorDetail(errors == null ? void 0 : errors.detail) && typeof ((_a = errors == null ? void 0 : errors.detail) == null ? void 0 : _a[0]) === \"string\") {\n    return errors.detail[0] || fallbackMessage;\n  }\n  if (isArrayErrorDetail(errors == null ? void 0 : errors.detail) && typeof ((_c = (_b = errors == null ? void 0 : errors.detail) == null ? void 0 : _b[0]) == null ? void 0 : _c.warning) === \"string\") {\n    return errors.detail[0].warning || fallbackMessage;\n  }\n  if (isArrayErrorDetail(errors == null ? void 0 : errors.detail) && typeof ((_f = (_e = (_d = errors == null ? void 0 : errors.detail) == null ? void 0 : _d[0]) == null ? void 0 : _e.warning) == null ? void 0 : _f[0]) === \"string\") {\n    return errors.detail[0].warning[0] || fallbackMessage;\n  }\n  if (isArrayErrorDetail(errors == null ? void 0 : errors.detail) && typeof ((_h = (_g = errors == null ? void 0 : errors.detail) == null ? void 0 : _g[0]) == null ? void 0 : _h.message) === \"string\") {\n    return errors.detail[0].message || fallbackMessage;\n  }\n  if (isArrayErrorDetail(errors == null ? void 0 : errors.detail) && typeof ((_k = (_j = (_i = errors == null ? void 0 : errors.detail) == null ? void 0 : _i[0]) == null ? void 0 : _j.message) == null ? void 0 : _k[0]) === \"string\") {\n    return errors.detail[0].message[0] || fallbackMessage;\n  }\n  if (isErrorDetail(errors == null ? void 0 : errors.detail) && typeof ((_l = errors == null ? void 0 : errors.detail) == null ? void 0 : _l.warning) === \"string\") {\n    return errors.detail.warning || fallbackMessage;\n  }\n  if (isErrorDetail(errors == null ? void 0 : errors.detail) && typeof ((_n = (_m = errors == null ? void 0 : errors.detail) == null ? void 0 : _m.warning) == null ? void 0 : _n[0]) === \"string\") {\n    return errors.detail.warning[0] || fallbackMessage;\n  }\n  if (isErrorDetail(errors == null ? void 0 : errors.detail) && typeof ((_o = errors == null ? void 0 : errors.detail) == null ? void 0 : _o.message) === \"string\") {\n    return errors.detail.message || fallbackMessage;\n  }\n  if (isErrorDetail(errors == null ? void 0 : errors.detail) && typeof ((_q = (_p = errors == null ? void 0 : errors.detail) == null ? void 0 : _p.message) == null ? void 0 : _q[0]) === \"string\") {\n    return errors.detail.message[0] || fallbackMessage;\n  }\n  if (error == null ? void 0 : error.message) {\n    return error.message;\n  }\n  const message = (errors == null ? void 0 : errors.message) ?? fallbackMessage;\n  if (message) {\n    return message;\n  }\n  return \"\";\n};\nconst parseDirectionCode = (err) => {\n  var _a, _b, _c;\n  const error = err;\n  const errors = error == null ? void 0 : error.errors;\n  if (isArrayErrorDetail(errors == null ? void 0 : errors.detail) && errors && Array.isArray((_b = (_a = errors == null ? void 0 : errors.detail) == null ? void 0 : _a[0]) == null ? void 0 : _b.direction_code)) {\n    return errors.detail[0].direction_code;\n  }\n  if (isErrorDetail(errors == null ? void 0 : errors.detail) && errors && Array.isArray((_c = errors == null ? void 0 : errors.detail) == null ? void 0 : _c.direction_code)) {\n    return errors.detail.direction_code;\n  }\n  return null;\n};\nconst isArrayErrorDetail = (detail) => {\n  return Array.isArray(detail);\n};\nconst isErrorDetail = (detail) => {\n  return typeof detail === \"object\" && detail !== null && !(\"length\" in detail);\n};\nexport {\n  parseDirectionCode,\n  parseErrorMessage\n};\n","import { withScope } from \"../../node_modules/@sentry/core/build/esm/currentScopes.js\";\nimport { captureException } from \"../../node_modules/@sentry/core/build/esm/exports.js\";\nconst captureAPIError = (error, response) => {\n  withScope((scope) => {\n    scope.setTag(\"error.type\", \"api_error\");\n    scope.setExtra(\"APIResponse\", response);\n    captureException(error);\n  });\n};\nexport {\n  captureAPIError\n};\n","import { parseErrorMessage, parseDirectionCode } from \"../../utils/error/error.js\";\nimport { GENERAL_ERROR } from \"../../constants/error.js\";\nimport camelcaseKeys from \"../../node_modules/camelcase-keys/index.js\";\nimport { environments, env } from \"../../config/index.js\";\nimport { captureAPIError } from \"../../utils/error/sentry.js\";\nconst COUPONS_PER_REQUEST = 50;\nconst INVALID_COUPON_ID = 0;\nclass CouponApiService {\n  async getCoupons(couponIdList, isDevMode = false) {\n    const slicedCouponIdList = couponIdList.slice(0, COUPONS_PER_REQUEST);\n    const isValidCouponIdList = !slicedCouponIdList.includes(INVALID_COUPON_ID);\n    const slicedCouponIdListString = isValidCouponIdList ? slicedCouponIdList.join(\",\") : null;\n    const baseUrl = isDevMode ? environments.development.api.content : env.api.content;\n    const response = await fetch(`${baseUrl}/api/v4/framers/proxy/promotion-api/api/v1/coupon?couponIdList=${slicedCouponIdListString}`).then((res) => res.json()).then((res) => camelcaseKeys(res, {\n      deep: true\n    }));\n    if (response.result === \"FAIL\" || response.data === null) {\n      captureAPIError(new Error(response.message ?? GENERAL_ERROR), response);\n      throw new Error(response.message ?? GENERAL_ERROR);\n    }\n    return response;\n  }\n  async downloadCouponBulk(couponNoList) {\n    return fetch(`${env.api.promotion}/api/v4/coupons/download:bulk`, {\n      method: \"POST\",\n      body: JSON.stringify({\n        couponList: couponNoList.map((couponId) => ({\n          couponId,\n          downloadCount: 1\n        }))\n      }),\n      headers: {\n        \"Content-Type\": \"application/json\",\n        \"accept\": \"application/json\"\n      },\n      credentials: \"include\"\n    }).then((res) => res.json());\n  }\n  async downloadCoupon(couponNo, downloadCount) {\n    const safeDownloadCount = Math.max(downloadCount, 1);\n    return fetch(`${env.api.promotion}/api/v4/coupons/download`, {\n      method: \"POST\",\n      body: JSON.stringify({\n        couponId: couponNo,\n        downloadCount: safeDownloadCount\n      }),\n      headers: {\n        \"Content-Type\": \"application/json\",\n        \"accept\": \"application/json\"\n      },\n      credentials: \"include\"\n    }).then((res) => res.json());\n  }\n  async downloadLimitedCoupons(couponNoList) {\n    const promises = couponNoList.map(async (couponId) => {\n      return fetch(`${env.api.promotion}/api/v4/coupons/download:limited`, {\n        method: \"POST\",\n        body: JSON.stringify({\n          couponId\n        }),\n        headers: {\n          \"Content-Type\": \"application/json\",\n          \"accept\": \"application/json\"\n        },\n        credentials: \"include\"\n      }).then((res) => res.json());\n    });\n    const [response] = await Promise.all(promises);\n    return response;\n  }\n  async downloadRandomCoupon() {\n    return fetch(`${env.api.promotion}/api/v1/random-coupon/${env.name === \"qa\" ? \"issue-test\" : \"issue\"}`, {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n        \"accept\": \"application/json\"\n      },\n      credentials: \"include\"\n    }).then((res) => res.json());\n  }\n  async getMaxIssueCount(couponId) {\n    const result = await fetch(`${env.api.promotion}/api/v4/coupons/max-issue-count/${couponId}`);\n    const response = await result.json();\n    if (response.result === \"FAIL\" || response.data === null) {\n      throw new Error(response.errorCode ?? GENERAL_ERROR);\n    }\n    return response;\n  }\n  async getDownloadableCouponSummaries(couponIdList, userId) {\n    const result = await fetch(`${env.api.promotion}/api/v4/coupons/downloadable?userId=${userId}`, {\n      method: \"POST\",\n      body: JSON.stringify({\n        couponIdList\n      }),\n      headers: {\n        \"Content-Type\": \"application/json\",\n        \"accept\": \"application/json\"\n      },\n      credentials: \"include\"\n    });\n    const response = await result.json();\n    if (response.result === \"FAIL\" || response.data === null) {\n      throw new Error(response.errorCode ?? GENERAL_ERROR);\n    }\n    return response.data.downloadableCouponInfoList;\n  }\n  async getCouponsDownloadStatus(couponIdList, userId) {\n    const result = await fetch(`${env.api.promotion}/api/v4/coupons/download-status?userId=${userId}`, {\n      method: \"POST\",\n      body: JSON.stringify({\n        couponIdList\n      }),\n      headers: {\n        \"Content-Type\": \"application/json\",\n        \"accept\": \"application/json\"\n      },\n      credentials: \"include\"\n    });\n    const response = await result.json();\n    if (response.result === \"FAIL\" || response.data === null) {\n      throw new Error(response.errorCode ?? GENERAL_ERROR);\n    }\n    return response.data.resultList;\n  }\n  parseDownloadCouponError(error, fallbackMessage) {\n    const message = parseErrorMessage(error, fallbackMessage) ?? \"\";\n    const directionCode = parseDirectionCode(error);\n    const isAuthError = (directionCode == null ? void 0 : directionCode[0]) === \"auth\";\n    return {\n      message,\n      callbackUrl: isAuthError ? \"/mypage/edit/info\" : void 0\n    };\n  }\n}\nconst couponApi = new CouponApiService();\nexport {\n  couponApi\n};\n","import useSWR from \"../../node_modules/swr/core/dist/index.js\";\nimport { couponApi } from \"../../apis/coupon/CouponApiService.js\";\nconst COUPONS_DOWNLOAD_STATUS_FETCHER_KEY = \"@coupon/coupons-download-status\";\nconst useFetchCouponsDownloadStatus = (couponIds, userNo, enabled = true) => {\n  const canFetch = couponIds.length > 0 && Boolean(userNo) && enabled;\n  const {\n    isLoading,\n    data,\n    ...rest\n  } = useSWR(canFetch ? [COUPONS_DOWNLOAD_STATUS_FETCHER_KEY, ...couponIds] : null, () => couponApi.getCouponsDownloadStatus(couponIds, Number(userNo)), {\n    revalidateIfStale: true\n  });\n  return {\n    isLoading: isLoading || !canFetch,\n    statuses: data ?? [],\n    ...rest\n  };\n};\nexport {\n  useFetchCouponsDownloadStatus\n};\n","import useSWRMutation from \"../../node_modules/swr/mutation/dist/index.js\";\nimport { couponApi } from \"../../apis/coupon/CouponApiService.js\";\nconst COUPON_MULTI_ISSUE_FETCHER_KEY = \"coupon-multi-issue\";\nconst downloadCoupons = (_key, {\n  arg\n}) => {\n  const {\n    couponIds,\n    downloadCount\n  } = arg;\n  const [couponId] = couponIds;\n  return couponIds.length > 1 ? couponApi.downloadCouponBulk(couponIds) : couponApi.downloadCoupon(couponId, downloadCount);\n};\nconst downloadLimitedCoupons = (_key, {\n  arg\n}) => {\n  return couponApi.downloadLimitedCoupons(arg.couponIds);\n};\nconst useDownloadCouponsMutation = ({\n  isLimited = false,\n  enabled = true,\n  onError,\n  onSuccess\n} = {}) => {\n  return useSWRMutation(enabled ? COUPON_MULTI_ISSUE_FETCHER_KEY : null, isLimited ? downloadLimitedCoupons : downloadCoupons, {\n    onError,\n    onSuccess\n  });\n};\nexport {\n  COUPON_MULTI_ISSUE_FETCHER_KEY,\n  useDownloadCouponsMutation\n};\n","const DOWNLOAD_COUPON_MESSAGES = {\n  SUCCESS: \"쿠폰을 받았어요.\\n받은 쿠폰은 마이페이지에서 확인하세요.\",\n  BULK_SUCCESS: \"쿠폰을 모두 받았어요.\\n받은 쿠폰은 마이페이지에서 확인하세요.\",\n  LOADING: \"쿠폰 발급을 시도하고 있어요. 잠시 기다려주세요.\\n신청 순서대로 처리되며 신청량이 많은 경우 쿠폰이 소진될 수 있어요\",\n  NEED_IDENTIFICATION: \"쿠폰 발급을 위해 본인확인이 필요해요.\",\n  FAILED_SOME_COUPON_DOWNLOAD: \"쿠폰을 모두 받았어요. 받은 쿠폰은 MY>쿠폰함에서 확인하세요.\",\n  FAILED_COUPON_DOWNLOAD: \"쿠폰을 모두 받았어요. 받은 쿠폰은 MY>쿠폰함에서 확인하세요.\",\n  NOT_FOUND_USER_ID: \"로그인이 필요해요.\",\n  GENERAL_ERROR: \"쿠폰 발급에 실패했어요.\",\n  RANDOM_COUPON_ISSUANCE_END: \"선착순 쿠폰이 마감되었습니다.\"\n};\nexport {\n  DOWNLOAD_COUPON_MESSAGES\n};\n","import useSWRMutation from \"../../node_modules/swr/mutation/dist/index.js\";\nimport { couponApi } from \"../../apis/coupon/CouponApiService.js\";\nconst DOWNLOAD_RANDOM_COUPON_MUTATION_KEY = \"@coupon/download-random-coupon\";\nconst useDownloadRandomCouponMutation = ({\n  enabled = true,\n  onError,\n  onSuccess\n} = {}) => {\n  return useSWRMutation(enabled ? DOWNLOAD_RANDOM_COUPON_MUTATION_KEY : null, () => couponApi.downloadRandomCoupon(), {\n    onError,\n    onSuccess\n  });\n};\nexport {\n  DOWNLOAD_RANDOM_COUPON_MUTATION_KEY,\n  useDownloadRandomCouponMutation\n};\n","var CouponType = /* @__PURE__ */ ((CouponType2) => {\n  CouponType2[CouponType2[\"NORMAL\"] = 0] = \"NORMAL\";\n  CouponType2[CouponType2[\"LIMITED\"] = 1] = \"LIMITED\";\n  CouponType2[CouponType2[\"RANDOM\"] = 2] = \"RANDOM\";\n  return CouponType2;\n})(CouponType || {});\nvar CouponDiscountType = /* @__PURE__ */ ((CouponDiscountType2) => {\n  CouponDiscountType2[CouponDiscountType2[\"RATE\"] = 0] = \"RATE\";\n  CouponDiscountType2[CouponDiscountType2[\"AMOUNT\"] = 1] = \"AMOUNT\";\n  return CouponDiscountType2;\n})(CouponDiscountType || {});\nvar DiscountType = /* @__PURE__ */ ((DiscountType2) => {\n  DiscountType2[\"FIXED_RATE\"] = \"FIXED_RATE\";\n  DiscountType2[\"FIXED_PRICE\"] = \"FIXED_PRICE\";\n  return DiscountType2;\n})(DiscountType || {});\nvar AvailableDayType = /* @__PURE__ */ ((AvailableDayType2) => {\n  AvailableDayType2[\"RANGE\"] = \"RANGE\";\n  AvailableDayType2[\"DAY\"] = \"DAY\";\n  AvailableDayType2[\"NONE\"] = \"NONE\";\n  return AvailableDayType2;\n})(AvailableDayType || {});\nvar KindType = /* @__PURE__ */ ((KindType2) => {\n  KindType2[\"PRODUCT\"] = \"PRODUCT\";\n  KindType2[\"CART\"] = \"CART\";\n  return KindType2;\n})(KindType || {});\nexport {\n  AvailableDayType,\n  CouponDiscountType,\n  CouponType,\n  DiscountType,\n  KindType\n};\n","import { useCurrentUser } from \"./useCurrentUser.js\";\nimport { useRedirectLoginDialog } from \"./useRedirectLoginDialog.js\";\nimport { useDownloadCouponsMutation } from \"./mutations/useDownloadCouponsMutation.js\";\nimport \"../node_modules/swr/mutation/dist/index.js\";\nimport \"../config/index.js\";\nimport \"../apis/taste-sharing/TasteSharingApiService.js\";\nimport { useDialog } from \"./useDialog.js\";\nimport { isContentOrigin } from \"../utils/location.js\";\nimport { DOWNLOAD_COUPON_MESSAGES } from \"../components/canvas/CouponDownloadCTA/CouponDownloadCTA.constants.js\";\nimport { useDownloadRandomCouponMutation } from \"./mutations/useDownloadRandomCouponMutation.js\";\nimport { CouponType, DiscountType } from \"../types/models/coupon.js\";\nconst useDownloadCoupons = (couponType = CouponType.NORMAL, discountType = DiscountType.FIXED_RATE, handleCouponDownloadSuccess) => {\n  const {\n    logged\n  } = useCurrentUser();\n  const {\n    showRedirectLoginDialog\n  } = useRedirectLoginDialog();\n  const isValidOrigin = isContentOrigin();\n  const dialog = useDialog();\n  const {\n    trigger: downloadCoupons,\n    isMutating: isLoading\n  } = useDownloadCouponsMutation({\n    isLimited: couponType === CouponType.LIMITED,\n    enabled: isValidOrigin\n  });\n  const {\n    trigger: downloadRandomCoupon,\n    isMutating: isRandomCouponLoading\n  } = useDownloadRandomCouponMutation({\n    enabled: isValidOrigin\n  });\n  const handleSuccess = () => (response) => {\n    if ((response == null ? void 0 : response.result) === \"FAIL\") {\n      dialog.show({\n        content: getErrorMessage(response.errorCode, response.message)\n      });\n      return;\n    }\n    handleCouponDownloadSuccess == null ? void 0 : handleCouponDownloadSuccess();\n    dialog.show({\n      content: getSuccessMessage(response, discountType)\n    });\n  };\n  const validate = () => {\n    if (!isValidOrigin) {\n      return false;\n    }\n    if (!logged) {\n      showRedirectLoginDialog();\n      return false;\n    }\n    if (isLoading || isRandomCouponLoading) {\n      dialog.show({\n        content: DOWNLOAD_COUPON_MESSAGES.LOADING\n      });\n      return false;\n    }\n    return true;\n  };\n  const download = async (couponNoList = [], downloadCount = 1, skipValidation = false) => {\n    if (!skipValidation && !validate()) {\n      return;\n    }\n    if (couponType === CouponType.NORMAL || couponType === CouponType.LIMITED) {\n      await downloadCoupons({\n        couponIds: couponNoList,\n        downloadCount\n      }, {\n        onSuccess: handleSuccess(),\n        onError: () => {\n          dialog.show({\n            content: \"쿠폰 다운로드 요청이 많아 지연 중입니다. 죄송합니다. 잠시 후 다시 시도해 주세요.\"\n          });\n        }\n      });\n      return;\n    }\n    if (couponType === CouponType.RANDOM) {\n      await downloadRandomCoupon(void 0, {\n        onSuccess: handleSuccess(),\n        onError: () => {\n          dialog.show({\n            content: \"쿠폰 다운로드 요청이 많아 지연 중입니다. 죄송합니다. 잠시 후 다시 시도해 주세요.\"\n          });\n        }\n      });\n    }\n  };\n  return {\n    validate,\n    download\n  };\n};\nconst getSuccessMessage = (response, discountType) => {\n  const {\n    data\n  } = response;\n  const isBulk = data && \"downloadSummaryList\" in data;\n  const isRandom = data && \"couponId\" in data;\n  if (isRandom) {\n    return createRandomCouponSuccessMessage(data.discountValue)[discountType];\n  }\n  return isBulk ? DOWNLOAD_COUPON_MESSAGES.BULK_SUCCESS : DOWNLOAD_COUPON_MESSAGES.SUCCESS;\n};\nconst createRandomCouponSuccessMessage = (discountValue) => ({\n  [DiscountType.FIXED_PRICE]: `${discountValue.toLocaleString(\"ko-KR\")}원 쿠폰에 당첨됐어요.\n받은 쿠폰은 마이페이지에서 확인하세요.`,\n  [DiscountType.FIXED_RATE]: `${discountValue}% 쿠폰에 당첨됐어요.\n받은 쿠폰은 마이페이지에서 확인하세요.`\n});\nconst getErrorMessage = (errorCode, errorMessage) => {\n  switch (errorCode) {\n    case \"FAILED_SOME_COUPON_DOWNLOAD\":\n      return DOWNLOAD_COUPON_MESSAGES.FAILED_SOME_COUPON_DOWNLOAD;\n    case \"FAILED_COUPON_DOWNLOAD\":\n      return DOWNLOAD_COUPON_MESSAGES.FAILED_COUPON_DOWNLOAD;\n    case \"NOT_FOUND_USER_ID\":\n      return DOWNLOAD_COUPON_MESSAGES.NOT_FOUND_USER_ID;\n    case \"RANDOM_COUPON_ISSUANCE_END\":\n      return DOWNLOAD_COUPON_MESSAGES.RANDOM_COUPON_ISSUANCE_END;\n    default:\n      return errorMessage || \"쿠폰 다운로드 요청이 많아 지연 중입니다. 죄송합니다. 잠시 후 다시 시도해 주세요.\";\n  }\n};\nconst toCouponNos = (couponNosStr) => {\n  return couponNosStr.split(\",\").map((item) => Number(item.trim()));\n};\nexport {\n  toCouponNos,\n  useDownloadCoupons\n};\n","import { ControlType } from \"framer\";\nimport { Breakpoint } from \"../../styles/breakpoint.js\";\nconst BREAKPOINT_CONTROLS = {\n  breakpoint: {\n    type: ControlType.Enum,\n    title: \"분기점\",\n    options: [Breakpoint.DESKTOP, Breakpoint.TABLET, Breakpoint.MOBILE],\n    optionTitles: [\"PC\", \"Tablet\", \"Mobile\"],\n    displaySegmentedControl: true\n  }\n};\nexport {\n  BREAKPOINT_CONTROLS\n};\n","import { ControlType } from \"framer\";\nconst HEADLINE_CONTROLS = {\n  headline: {\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        displayTextArea: true\n      },\n      mediaType: {\n        type: ControlType.Enum,\n        title: \"미디어 유형\",\n        description: \"삽입할 키비주얼의 미디어 유형 선택\",\n        options: [\"none\", \"image\", \"video\"],\n        optionTitles: [\"선택 안 함\", \"이미지\", \"영상\"]\n      },\n      imageSrc: {\n        hidden: ({\n          mediaType\n        }) => mediaType !== \"image\",\n        type: ControlType.String,\n        title: \"이미지 URL\",\n        placeholder: \"이미지 URL 입력\"\n      },\n      videoSrc: {\n        hidden: ({\n          mediaType\n        }) => mediaType !== \"video\",\n        type: ControlType.String,\n        title: \"영상 URL\",\n        placeholder: \"영상 URL 입력\"\n      },\n      videoSrcWebm: {\n        hidden: ({\n          mediaType\n        }) => mediaType !== \"video\",\n        type: ControlType.String,\n        title: \"WEBM 영상 URL\",\n        placeholder: \"WEBM 포맷의 영상 URL 입력\"\n      },\n      poster: {\n        hidden: ({\n          mediaType\n        }) => mediaType !== \"video\",\n        type: ControlType.String,\n        title: \"포스터 이미지 URL\",\n        description: \"영상이 자동재생되지 않는 환경(ex. 저전력 모드)에서 임시로 노출할 이미지 URL을 입력합니다.\",\n        placeholder: \"포스터 이미지 URL 입력\"\n      },\n      lazy: {\n        hidden: ({\n          mediaType\n        }) => mediaType === \"none\",\n        type: ControlType.Boolean,\n        title: \"미디어 지연 요청\",\n        description: \"컴포넌트가 화면에 보일 때에만 미디어를 로드합니다.\\n(성능 최적화를 위해 활성화하는 것을 권장합니다.)\",\n        defaultValue: true\n      }\n    }\n  }\n};\nexport {\n  HEADLINE_CONTROLS\n};\n","var Theme = /* @__PURE__ */ ((Theme2) => {\n  Theme2[\"LIGHT\"] = \"light\";\n  Theme2[\"DARK\"] = \"dark\";\n  return Theme2;\n})(Theme || {});\nexport {\n  Theme\n};\n","import { ControlType } from \"framer\";\nimport { Theme } from \"../../styles/theme.js\";\nconst THEME_CONTROLS = {\n  theme: {\n    type: ControlType.Enum,\n    title: \"테마\",\n    description: \"Light 테마는 일부 스타일이 미적용되어 있을 수 있습니다.\",\n    options: [Theme.LIGHT, Theme.DARK],\n    optionTitles: [\"Light\", \"Dark\"],\n    defaultValue: Theme.LIGHT,\n    displaySegmentedControl: true\n  }\n};\nexport {\n  THEME_CONTROLS\n};\n","import { ControlType } from \"framer\";\nimport { BREAKPOINT_CONTROLS } from \"./breakpoint.js\";\nimport { HEADLINE_CONTROLS } from \"./headline.js\";\nimport { THEME_CONTROLS } from \"./theme.js\";\nconst SECTION_CONTROLS = {\n  ...BREAKPOINT_CONTROLS,\n  ...THEME_CONTROLS,\n  ...HEADLINE_CONTROLS,\n  componentId: {\n    type: ControlType.String,\n    title: \"컴포넌트 ID\",\n    description: \"이벤트 수집 시에 상품 모듈을 구분하기 위한 값\\nex. 29welcoming\",\n    defaultValue: \"\"\n  }\n};\nexport {\n  SECTION_CONTROLS\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport { addPropertyControls, ControlType } from \"framer\";\nimport { Headline as Headline$1 } from \"../curations/Headline/index.js\";\nimport { ThemeProvider } from \"../../@shared/providers/ThemeProvider/ThemeProvider.js\";\nimport \"react\";\nimport { BreakpointProvider } from \"../../@shared/providers/BreakpointProvider/BreakpointProvider.js\";\nimport { THEME_CONTROLS } from \"../../../libs/property-controls/theme.js\";\nimport { BREAKPOINT_CONTROLS } from \"../../../libs/property-controls/breakpoint.js\";\nconst HeadlineMedia = ({\n  mediaType,\n  imageSrc,\n  videoSrc,\n  videoSrcWebm,\n  poster,\n  lazy\n}) => {\n  if (mediaType === \"image\") {\n    return /* @__PURE__ */ jsx(Headline$1.Image, { source: imageSrc, lazy });\n  }\n  if (mediaType === \"video\") {\n    return /* @__PURE__ */ jsx(Headline$1.Video, { source: videoSrc, sourceWebm: videoSrcWebm, poster, lazy });\n  }\n  return null;\n};\nconst Headline = (props) => {\n  const {\n    priority,\n    title,\n    description,\n    action,\n    mediaType,\n    loading\n  } = props;\n  const hasMediaType = mediaType !== \"none\";\n  const isPrimary = priority === \"primary\";\n  const canRenderMedia = isPrimary && hasMediaType;\n  return /* @__PURE__ */ jsxs(Headline$1.Root, { priority, loading, children: [\n    canRenderMedia ? /* @__PURE__ */ jsx(HeadlineMedia, { ...props }) : null,\n    /* @__PURE__ */ jsxs(Headline$1.Content, { children: [\n      /* @__PURE__ */ jsxs(Headline$1.Body, { children: [\n        /* @__PURE__ */ jsx(Headline$1.Title, { children: title }),\n        isPrimary ? /* @__PURE__ */ jsx(Headline$1.Action, { children: action }) : /* @__PURE__ */ jsx(Headline$1.Description, { children: description })\n      ] }),\n      isPrimary ? /* @__PURE__ */ jsx(Headline$1.Description, { children: description }) : /* @__PURE__ */ jsx(Headline$1.Action, { children: action }),\n      canRenderMedia ? /* @__PURE__ */ jsx(Headline$1.Gradient, {}) : null\n    ] })\n  ] });\n};\nconst FramerHeadline = (props) => {\n  return /* @__PURE__ */ jsx(ThemeProvider, { theme: props.theme, children: /* @__PURE__ */ jsx(BreakpointProvider, { breakpoint: props.breakpoint, children: /* @__PURE__ */ jsx(Headline, { ...props }) }) });\n};\naddPropertyControls(FramerHeadline, {\n  ...BREAKPOINT_CONTROLS,\n  ...THEME_CONTROLS,\n  priority: {\n    type: ControlType.Enum,\n    title: \"우선 순위\",\n    description: \"미디어 관련 옵션은 primary 일 때에만 사용 가능합니다.\",\n    options: [\"primary\", \"secondary\", \"tertiary\"]\n  },\n  title: {\n    type: ControlType.String,\n    title: \"제목\",\n    placeholder: \"제목 텍스트 입력\",\n    defaultValue: \"제목 텍스트 입력\"\n  },\n  description: {\n    type: ControlType.String,\n    title: \"설명\",\n    placeholder: \"설명 텍스트 입력\",\n    displayTextArea: true\n  },\n  action: {\n    type: ControlType.ComponentInstance,\n    title: \"액션 컴포넌트\",\n    description: \"헤드라인 우측에 별도의 컴포넌트가 삽입되어야 하는 경우 연결\"\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});\nexport {\n  FramerHeadline,\n  Headline\n};\n","import { ControlType } from \"framer\";\nconst COUPON_LAYOUT_RESPONSIVE = \"responsive\";\nvar CouponColorType = /* @__PURE__ */ ((CouponColorType2) => {\n  CouponColorType2[\"DEFAULT\"] = \"default\";\n  CouponColorType2[\"SOLID\"] = \"solid\";\n  CouponColorType2[\"GRADIENT\"] = \"gradient\";\n  return CouponColorType2;\n})(CouponColorType || {});\nconst COUPON_CONTROLS = {\n  couponLayout: {\n    type: ControlType.Enum,\n    title: \"쿠폰 레이아웃\",\n    options: [\"detail\", \"compact\", COUPON_LAYOUT_RESPONSIVE],\n    optionTitles: [\"기본\", \"컴팩트\", \"반응형\"],\n    defaultValue: \"detail\"\n  },\n  backgroundColor: {\n    type: ControlType.Object,\n    title: \"쿠폰 배경색\",\n    controls: {\n      colorType: {\n        type: ControlType.Enum,\n        title: \"유형\",\n        optionTitles: [\"기본\", \"단색\", \"그라디언트\"],\n        options: [\n          \"default\",\n          \"solid\",\n          \"gradient\"\n          /* GRADIENT */\n        ]\n      },\n      color: {\n        type: ControlType.Color,\n        title: \"단색\",\n        optional: true,\n        hidden: ({\n          colorType\n        }) => colorType !== \"solid\"\n        /* SOLID */\n      },\n      gradient: {\n        type: ControlType.Object,\n        title: \"그라디언트\",\n        controls: {\n          stops: {\n            type: ControlType.Array,\n            title: \"색상 및 정지점들\",\n            control: {\n              type: ControlType.Object,\n              title: \"색상 및 정지점\",\n              controls: {\n                color: {\n                  type: ControlType.Color,\n                  title: \"색상\",\n                  optional: true\n                },\n                offsetPercent: {\n                  type: ControlType.Number,\n                  title: \"정지점\",\n                  unit: \"%\",\n                  min: 0,\n                  max: 100,\n                  defaultValue: 0,\n                  step: 1,\n                  displayStepper: true\n                }\n              }\n            }\n          },\n          degree: {\n            type: ControlType.Number,\n            title: \"각도\",\n            unit: \"deg\",\n            defaultValue: 0,\n            step: 1,\n            displayStepper: true\n          }\n        },\n        hidden: ({\n          colorType\n        }) => colorType !== \"gradient\"\n        /* GRADIENT */\n      }\n    }\n  }\n};\nconst COUPON_THEME_TYPE = {\n  DEFAULT: \"default\",\n  LIGHT: \"light\",\n  DARK: \"dark\"\n};\nconst COUPON_THEME_CONTROLS = {\n  couponTheme: {\n    type: ControlType.Enum,\n    title: \"쿠폰 테마\",\n    description: \"쿠폰 영역에 별도 테마를 적용합니다. 기본은 섹션 테마를 따릅니다.\",\n    options: [COUPON_THEME_TYPE.DEFAULT, COUPON_THEME_TYPE.LIGHT, COUPON_THEME_TYPE.DARK],\n    optionTitles: [\"기본 (테마 동일)\", \"Light\", \"Dark\"],\n    defaultValue: COUPON_THEME_TYPE.DEFAULT\n  }\n};\nconst resolveCouponTheme = (couponTheme) => couponTheme === COUPON_THEME_TYPE.DEFAULT ? void 0 : couponTheme;\nconst resolveCouponLayout = (couponLayout, breakpoint) => {\n  if (!couponLayout || couponLayout === COUPON_LAYOUT_RESPONSIVE) {\n    return breakpoint === \"mobile\" ? \"compact\" : \"detail\";\n  }\n  return couponLayout;\n};\nconst toBackgroundColor = (backgroundColor) => {\n  const {\n    colorType,\n    color,\n    gradient\n  } = backgroundColor;\n  const backgroundColorByType = {\n    [\n      \"default\"\n      /* DEFAULT */\n    ]: void 0,\n    [\n      \"solid\"\n      /* SOLID */\n    ]: color,\n    [\n      \"gradient\"\n      /* GRADIENT */\n    ]: gradient\n  };\n  return backgroundColorByType[colorType];\n};\nexport {\n  COUPON_CONTROLS,\n  COUPON_LAYOUT_RESPONSIVE,\n  COUPON_THEME_CONTROLS,\n  COUPON_THEME_TYPE,\n  CouponColorType,\n  resolveCouponLayout,\n  resolveCouponTheme,\n  toBackgroundColor\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport \"framer\";\nimport { typography } from \"../../../styles/typography.js\";\nimport { playHaptic } from \"../../../utils/playHaptic.js\";\nconst SwitchButton = forwardRef(({\n  children,\n  style,\n  theme = \"light\",\n  active = false,\n  activeColor,\n  onClick,\n  ...rest\n}) => {\n  const {\n    button,\n    thumb\n  } = getSwitchButtonColors(activeColor)[theme][active ? \"active\" : \"default\"];\n  const handleClick = (e) => {\n    playHaptic(\"rigid\");\n    onClick == null ? void 0 : onClick(e);\n  };\n  return /* @__PURE__ */ jsxs(\"div\", { style: {\n    ...containerStyle,\n    ...style\n  }, ...rest, onClick: handleClick, children: [\n    children ? /* @__PURE__ */ jsx(\"div\", { style: {\n      ...labelStyle,\n      ...labelStyleByTheme[theme]\n    }, children }) : null,\n    /* @__PURE__ */ jsx(\"div\", { style: {\n      ...buttonStyle,\n      backgroundColor: button\n    }, children: /* @__PURE__ */ jsx(\"div\", { style: {\n      ...thumbStyle,\n      backgroundColor: thumb,\n      left: active ? 18 : 2\n    } }) })\n  ] });\n});\nconst getSwitchButtonColors = (activeColor) => ({\n  light: {\n    default: {\n      button: \"#E4E4E4\",\n      thumb: \"#FFFFFF\"\n    },\n    active: {\n      button: activeColor || \"#1E3CF2\",\n      thumb: \"#FFFFFF\"\n    }\n  },\n  dark: {\n    default: {\n      button: \"#27272A\",\n      thumb: \"#A0A0A0\"\n    },\n    active: {\n      button: activeColor || \"#1E3CF2\",\n      thumb: \"#FFFFFF\"\n    }\n  }\n});\nconst containerStyle = {\n  display: \"flex\",\n  alignItems: \"center\",\n  cursor: \"pointer\"\n};\nconst labelStyle = {\n  ...typography(15, 400),\n  paddingRight: 8\n};\nconst labelStyleByTheme = {\n  light: {\n    color: \"#000000\"\n  },\n  dark: {\n    color: \"#A0A0A0\"\n  }\n};\nconst buttonStyle = {\n  position: \"relative\",\n  width: 38,\n  height: 22,\n  padding: 2,\n  borderRadius: 999,\n  transition: \"background-color 0.15s ease-in-out\"\n};\nconst thumbStyle = {\n  position: \"absolute\",\n  top: \"50%\",\n  transform: \"translateY(-50%)\",\n  width: 18,\n  height: 18,\n  borderRadius: 999,\n  transition: \"background-color 0.15s ease-in-out, left 0.15s ease-in-out\"\n};\nexport {\n  SwitchButton\n};\n","import useSWR from \"../../node_modules/swr/core/dist/index.js\";\nimport { userApi } from \"../../apis/user/UserApiService.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 \"../useCurrentUser.js\";\nimport \"framer\";\nimport \"../../node_modules/@29cm/snowplow/dist/esm/core/snowplow.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 \"../../node_modules/swr/mutation/dist/index.js\";\nimport \"../stores/content/content.store.js\";\nimport \"../stores/dialog/dialog.store.js\";\nimport \"../stores/global-layout/global-layout.store.js\";\nimport \"../stores/toast/toast.store.js\";\nimport \"../../components/@shared/providers/ThemeProvider/ThemeProvider.js\";\nimport \"../../components/@shared/providers/BreakpointProvider/BreakpointProvider.js\";\nimport \"../stores/bottom-sheet/bottom-sheet.store.js\";\nimport \"react/jsx-runtime\";\nimport \"react-dom\";\nimport \"../../components/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\";\nconst AGREEMENTS_FETCHER_KEY = \"@user/agreements\";\nconst useFetchAgreements = () => {\n  const {\n    logged\n  } = useCurrentUser();\n  return useSWR(logged ? [AGREEMENTS_FETCHER_KEY] : null, () => userApi.getAgreements());\n};\nexport {\n  AGREEMENTS_FETCHER_KEY,\n  useFetchAgreements\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport _JSXStyle from \"../../../../node_modules/styled-jsx/style.js\";\nimport { useFetchAgreements } from \"../../../../hooks/fetchers/useFetchAgreements.js\";\nimport { formatDate as format } from \"../../../../node_modules/date-fns/format.js\";\nconst NotificationAgreementsToast = ({\n  title,\n  hideDescription = false\n}) => {\n  const {\n    data: response\n  } = useFetchAgreements();\n  const {\n    pushAdvertisingAgreement = false\n  } = (response == null ? void 0 : response.data) ?? {};\n  const formattedNow = format(/* @__PURE__ */ new Date(), \"yy.MM.dd\");\n  const shouldRenderDescription = !hideDescription && pushAdvertisingAgreement;\n  return /* @__PURE__ */ jsxs(\"div\", { children: [\n    /* @__PURE__ */ jsx(\"p\", { className: titleText.className, children: title ?? \"알림 설정이 완료되었습니다.\" }),\n    shouldRenderDescription ? /* @__PURE__ */ jsx(\"p\", { className: descriptionText.className, children: `${formattedNow} 마케팅 수신 동의 완료 / 거부 : MY > 회원정보 수정 / 전송자 : 29CM ((주)무신사)` }) : null,\n    titleText.styles,\n    descriptionText.styles\n  ] });\n};\nconst descriptionText = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"112177068\", children: [\"p.jsx-112177068{margin-top:4px;font-size:12px;font-weight:400;line-height:136%;color:#a0a0a0;}\"] }),\n  className: \"jsx-112177068\"\n};\nconst titleText = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"3358454669\", children: [\"p.jsx-3358454669{font-size:14px;font-weight:400;line-height:140%;color:#fff;}\"] }),\n  className: \"jsx-3358454669\"\n};\nexport {\n  NotificationAgreementsToast\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { useToast } from \"../../../../hooks/useToast.js\";\nimport { NotificationAgreementsToast } from \"./NotificationAgreementsToast.js\";\nconst useNotificationAgreementsToast = () => {\n  const toast = useToast();\n  const show = (title, hideDescription) => {\n    toast.show({\n      content: /* @__PURE__ */ jsx(NotificationAgreementsToast, { title, hideDescription })\n    });\n  };\n  return {\n    show,\n    hide: toast.hide\n  };\n};\nexport {\n  useNotificationAgreementsToast\n};\n","import { useCurrentUser } from \"./useCurrentUser.js\";\nimport { useRedirectLoginDialog } from \"./useRedirectLoginDialog.js\";\nconst useWithLogin = () => {\n  const {\n    logged\n  } = useCurrentUser();\n  const {\n    showRedirectLoginDialog\n  } = useRedirectLoginDialog();\n  const withLogin = (callback) => async (...args) => {\n    if (!logged) {\n      showRedirectLoginDialog();\n      return;\n    }\n    await callback(...args);\n  };\n  return withLogin;\n};\nexport {\n  useWithLogin\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport _JSXStyle from \"../../../node_modules/styled-jsx/style.js\";\nconst Checkbox = ({\n  id,\n  name,\n  checked,\n  disabled,\n  size = \"medium\",\n  children,\n  onChange\n}) => {\n  const handleClick = (e) => {\n    e.preventDefault();\n    if (disabled) {\n      return;\n    }\n    onChange == null ? void 0 : onChange(!checked);\n  };\n  const handleChange = (e) => {\n    onChange == null ? void 0 : onChange(e.target.checked);\n  };\n  return /* @__PURE__ */ jsxs(\"span\", { className: container.className, id, \"data-size\": size, children: [\n    /* @__PURE__ */ jsx(\"input\", { className: input.className, name, type: \"checkbox\", checked, disabled, onChange: handleChange }),\n    /* @__PURE__ */ jsx(\"label\", { className: label.className, htmlFor: name, title: name, \"data-checked\": checked, \"data-size\": size, onMouseUp: handleClick, onTouchEnd: handleClick, children: /* @__PURE__ */ jsx(\"p\", { className: text.className, \"data-size\": size, children }) }),\n    input.styles,\n    label.styles,\n    container.styles,\n    text.styles\n  ] });\n};\nconst container = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"3880026199\", children: [\"span.jsx-3880026199{padding:var(--checkbox-py) 0;position:relative;overflow:hidden;display:inline-block;min-width:var(--checkbox-size-width);min-height:var(--checkbox-size-height);vertical-align:top;}\", \"span[data-size='medium'].jsx-3880026199{--checkbox-size-width:24px;--checkbox-size-height:24px;--checkbox-py:8px;}\", \"span[data-size='small'].jsx-3880026199{--checkbox-size-width:16px;--checkbox-size-height:16px;--checkbox-py:5px;}\"] }),\n  className: \"jsx-3880026199\"\n};\nconst label = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"1230890958\", children: [\"label.jsx-1230890958{cursor:pointer;position:relative;z-index:1;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:var(--checkbox-padding-left);vertical-align:top;}\", \"label[data-size='medium'].jsx-1230890958{--checkbox-padding-left:32px;}\", \"label[data-size='small'].jsx-1230890958{--checkbox-padding-left:24px;}\", \"label.jsx-1230890958::before{content:'';position:absolute;top:0;left:0;width:var(--checkbox-size-width);height:var(--checkbox-size-height);text-align:center;background:#fff;border:1px solid #d4d4d4;box-sizing:border-box;border-radius:2px;-webkit-transition:background-color 0.2s;transition:background-color 0.2s;}\", \"label.jsx-1230890958::after{content:'';position:absolute;top:var(--checkbox-check-icon-top);left:var(--checkbox-check-icon-left);-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);box-sizing:content-box;width:var(--checkbox-check-icon-width);height:var(--checkbox-check-icon-height);box-sizing:border-box;border:1px solid #a0a0a0;border-width:0 1px 1px 0;}\", \"label[data-size='medium'].jsx-1230890958::after{--checkbox-check-icon-top:3px;--checkbox-check-icon-left:8px;--checkbox-check-icon-width:8px;--checkbox-check-icon-height:13px;}\", \"label[data-size='small'].jsx-1230890958::after{--checkbox-check-icon-top:2px;--checkbox-check-icon-left:6px;--checkbox-check-icon-width:5px;--checkbox-check-icon-height:9px;}\", \"label[data-checked='true'].jsx-1230890958::before{background:#000000;border-color:#000000;}\", \"label[data-checked='true'].jsx-1230890958::after{border-color:#fff;}\"] }),\n  className: \"jsx-1230890958\"\n};\nconst text = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"2091972032\", children: [\"p.jsx-2091972032{font-size:var(--checkbox-font-size);font-weight:400;line-height:var(--checkbox-line-height);color:#000000;}\", \"p[data-size='medium'].jsx-2091972032{--checkbox-font-size:16px;--checkbox-line-height:24px;}\", \"p[data-size='small'].jsx-2091972032{--checkbox-font-size:13px;--checkbox-line-height:16px;}\"] }),\n  className: \"jsx-2091972032\"\n};\nconst input = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"839637289\", children: [\"input.jsx-839637289{position:absolute;z-index:-1;top:2px;left:2px;overflow:hidden;width:1px;height:1px;-webkit-appearance:none;-moz-appearance:none;appearance:none;visibility:hidden;background:transparent;border:0;}\"] }),\n  className: \"jsx-839637289\"\n};\nexport {\n  Checkbox\n};\n","import { jsx } from \"react/jsx-runtime\";\nconst CloseIcon = ({\n  className\n}) => {\n  return /* @__PURE__ */ jsx(\"svg\", { className, style: {\n    width: \"20px\",\n    height: \"20px\"\n  }, xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 84 82\", children: /* @__PURE__ */ jsx(\"g\", { fill: \"none\", fillRule: \"evenodd\", stroke: \"#000000\", strokeWidth: 4, strokeLinecap: \"square\", children: /* @__PURE__ */ jsx(\"path\", { d: \"M82.655.345L1.156 81.844M82.655 81.655L1.156.156\" }) }) });\n};\nexport {\n  CloseIcon\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport _JSXStyle from \"../../../../node_modules/styled-jsx/style.js\";\nimport { CloseIcon } from \"../../icons/CloseIcon.js\";\nconst PrivacyAgreementDetailDialog = ({\n  onClose\n}) => {\n  return /* @__PURE__ */ jsxs(\"div\", { className: container.className, children: [\n    /* @__PURE__ */ jsx(\"button\", { type: \"button\", className: closeButton.className, onClick: onClose, children: /* @__PURE__ */ jsx(CloseIcon, {}) }),\n    /* @__PURE__ */ jsxs(\"dl\", { children: [\n      /* @__PURE__ */ jsx(\"dt\", { className: title.className, children: \"(선택) 개인정보 수집 및 이용 동의\" }),\n      /* @__PURE__ */ jsx(\"dd\", { children: /* @__PURE__ */ jsx(\"div\", { className: wrapper.className, children: /* @__PURE__ */ jsxs(\"article\", { className: article.className, children: [\n        /* @__PURE__ */ jsx(\"p\", { className: paragraph.className, children: \"(주)무신사(29CM)는 아래의 목적으로 개인정보를 수집 및 이용하며, 회원의 개인정보를 안전하게 처리하는데 최선을 다하고 있습니다. 아래의 내용을 확인 후 동의하여 주시기 바랍니다.\" }),\n        /* @__PURE__ */ jsx(\"h2\", { className: subtitle.className, children: \"1. 수집 및 이용 목적\" }),\n        /* @__PURE__ */ jsxs(\"ul\", { className: list.className, children: [\n          /* @__PURE__ */ jsx(\"li\", { className: highlightedItem.className, children: \"개인 맞춤형 상품·서비스 혜택 정보 제공\" }),\n          /* @__PURE__ */ jsx(\"li\", { className: highlightedItem.className, children: \"이벤트 및 광고성 정보 제공 및 참여 기회 제공\" }),\n          /* @__PURE__ */ jsx(\"li\", { className: item.className, children: \"상품·서비스 이용 실적 정보 통계·분석을 통한 신규 서비스(제품) 개발\" })\n        ] }),\n        /* @__PURE__ */ jsx(\"h2\", { className: subtitle.className, children: \"2. 수집 및 이용 항목\" }),\n        /* @__PURE__ */ jsxs(\"ul\", { className: list.className, children: [\n          /* @__PURE__ */ jsx(\"li\", { className: item.className, children: \"회원 정보(이름, 휴대폰 번호, 이메일, 성별, 생년월일, 회원등급, 가입일시)\" }),\n          /* @__PURE__ */ jsx(\"li\", { className: item.className, children: \"쇼핑 및 서비스 이용 정보(장바구니의 상품, 구매일시, 배송지역)\" })\n        ] }),\n        /* @__PURE__ */ jsx(\"h2\", { className: subtitle.className, children: \"3. 보유 및 이용기간\" }),\n        /* @__PURE__ */ jsxs(\"ul\", { className: list.className, children: [\n          /* @__PURE__ */ jsx(\"li\", { className: highlightedItem.className, children: \"회원 탈퇴 요청 시 또는 동의 철회 시 지체 없이 파기합니다.\" }),\n          /* @__PURE__ */ jsx(\"li\", { className: highlightedItem.className, children: \"단, 관계 법령에 따라 일정 기간 보존해야 하는 경우 해당 기간 보관 후 파기합니다.\" })\n        ] }),\n        /* @__PURE__ */ jsx(\"br\", {}),\n        \"선택적인 개인정보 수집 및 이용에 동의하지 않을 권리가 있습니다. 동의하지 않아도 서비스 이용이 가능합니다. 다만, 동의하지 않을 경우 관련 할인 정보, 이벤트 등의 혜택 정보 제공이 제한됩니다.\"\n      ] }) }) })\n    ] }),\n    container.styles,\n    closeButton.styles,\n    title.styles,\n    wrapper.styles,\n    article.styles,\n    subtitle.styles,\n    paragraph.styles,\n    highlightedItem.styles,\n    item.styles,\n    list.styles\n  ] });\n};\nconst container = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"4193539139\", children: [\"div.jsx-4193539139{width:100%;padding:10px 8px;text-align:left;word-break:break-word;}\"] }),\n  className: \"jsx-4193539139\"\n};\nconst closeButton = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"3873915725\", children: [\"button.jsx-3873915725{position:absolute;top:0;right:0;width:60px;height:60px;outline:none;border:none;background-color:transparent;}\"] }),\n  className: \"jsx-3873915725\"\n};\nconst title = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"3876639978\", children: [\"dt.jsx-3876639978{padding-bottom:11px;font-size:20px;font-weight:bold;border-bottom:4px solid #000;}\"] }),\n  className: \"jsx-3876639978\"\n};\nconst article = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"2551450005\", children: [\"article.jsx-2551450005{padding:5px 0;font-size:13px;line-height:24px;}\"] }),\n  className: \"jsx-2551450005\"\n};\nconst wrapper = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"3570035704\", children: [\"div.jsx-3570035704{position:absolute;inset:110px 0 22px 20px;height:auto;overflow-y:scroll;margin-top:15px;padding-right:30px;}\"] }),\n  className: \"jsx-3570035704\"\n};\nconst subtitle = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"1444760618\", children: [\"h2.jsx-1444760618{margin:20px 0 5px;font-size:16px;}\"] }),\n  className: \"jsx-1444760618\"\n};\nconst list = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"57726673\", children: [\"ul.jsx-57726673{margin:0;padding:0;}\"] }),\n  className: \"jsx-57726673\"\n};\nconst item = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"1482811883\", children: [\"li.jsx-1482811883{margin-left:20px;list-style-type:disc;}\"] }),\n  className: \"jsx-1482811883\"\n};\nconst highlightedItem = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"4100544401\", children: [\"li.jsx-4100544401{margin-left:20px;font-size:15px;font-weight:bold;-webkit-text-decoration:underline;text-decoration:underline;list-style-type:disc;}\"] }),\n  className: \"jsx-4100544401\"\n};\nconst paragraph = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"3509134407\", children: [\"p.jsx-3509134407{padding-bottom:10px;}\"] }),\n  className: \"jsx-3509134407\"\n};\nexport {\n  PrivacyAgreementDetailDialog\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { useDialog } from \"../../../../hooks/useDialog.js\";\nimport { PrivacyAgreementDetailDialog } from \"./PrivacyAgreementDetailDialog.js\";\nconst DIALOG_ID = \"privacy-agreement-detail-dialog-id\";\nconst usePrivacyAgreementDetailDialog = () => {\n  const dialog = useDialog();\n  const show = () => {\n    dialog.show({\n      id: DIALOG_ID,\n      responsiveFullSize: true,\n      hideButtons: true,\n      content: /* @__PURE__ */ jsx(PrivacyAgreementDetailDialog, { onClose: hide }),\n      needInAppLayer: false\n    });\n  };\n  const hide = () => {\n    dialog.hide(DIALOG_ID, false);\n  };\n  return {\n    show,\n    hide\n  };\n};\nexport {\n  usePrivacyAgreementDetailDialog\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport _JSXStyle from \"../../../../node_modules/styled-jsx/style.js\";\nimport { useState } from \"react\";\nimport { Button as Default } from \"../../Button/Button.js\";\nimport { Checkbox } from \"../../checkbox/Checkbox.js\";\nimport { usePrivacyAgreementDetailDialog } from \"../../dialogs/PrivacyAgreementDetailDialog/PrivacyAgreementDetailDialog.hooks.js\";\nconst NotificationAgreementsBottomSheet = ({\n  title = \"알림을 받으려면\\n동의가 필요해요\",\n  buttonText = \"동의하고 알림 받기\",\n  privacyAgreement,\n  pushAdvertisingAgreement,\n  onSubmit,\n  onCancel\n}) => {\n  const dialog = usePrivacyAgreementDetailDialog();\n  const [isPrivacyAgreementAgreed, setIsPrivacyAgreementAgreed] = useState(privacyAgreement);\n  const [isPushAdvertisingAgreementAgreed, setIsPushAdvertisingAgreementAgreed] = useState(pushAdvertisingAgreement);\n  const canSubmit = isPrivacyAgreementAgreed && isPushAdvertisingAgreementAgreed;\n  const handleClick = () => dialog.show();\n  return /* @__PURE__ */ jsxs(\"div\", { className: container.className, children: [\n    /* @__PURE__ */ jsxs(\"div\", { className: wrapper.className, children: [\n      /* @__PURE__ */ jsx(\"span\", { className: titleText.className, children: title }),\n      /* @__PURE__ */ jsx(\"span\", { className: hr.className }),\n      privacyAgreement ? null : /* @__PURE__ */ jsxs(\"div\", { className: row.className, children: [\n        /* @__PURE__ */ jsx(Checkbox, { checked: isPrivacyAgreementAgreed, onChange: setIsPrivacyAgreementAgreed, children: \"마케팅 목적의 개인정보 수집 및 이용 동의\" }),\n        /* @__PURE__ */ jsx(\"button\", { className: detailButton.className, onClick: handleClick, children: \"자세히\" })\n      ] }),\n      pushAdvertisingAgreement ? null : /* @__PURE__ */ jsx(\"div\", { className: row.className, children: /* @__PURE__ */ jsx(Checkbox, { checked: isPushAdvertisingAgreementAgreed, onChange: setIsPushAdvertisingAgreementAgreed, children: \"광고성 정보 수신 동의\" }) }),\n      /* @__PURE__ */ jsxs(\"div\", { className: buttons.className, children: [\n        /* @__PURE__ */ jsx(Default, { variant: \"primary\", fill: true, disabled: !canSubmit, onClick: onSubmit, children: buttonText }),\n        /* @__PURE__ */ jsx(\"button\", { className: cancelButton.className, onClick: onCancel, children: \"다음에\" })\n      ] })\n    ] }),\n    titleText.styles,\n    detailButton.styles,\n    cancelButton.styles,\n    buttons.styles,\n    row.styles,\n    hr.styles,\n    container.styles,\n    wrapper.styles\n  ] });\n};\nconst container = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"130359274\", children: [\"div.jsx-130359274{background-color:#fff;}\"] }),\n  className: \"jsx-130359274\"\n};\nconst wrapper = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"2833505254\", children: [\"div.jsx-2833505254{padding:30px 20px 20px;text-align:left;}\"] }),\n  className: \"jsx-2833505254\"\n};\nconst hr = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"2753252006\", children: [\"span.jsx-2753252006{display:block;width:100%;height:1px;margin:24px 0;background-color:#e4e4e4;}\"] }),\n  className: \"jsx-2753252006\"\n};\nconst row = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"2027943628\", children: [\"div.jsx-2027943628{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;}\", \"div.jsx-2027943628+div.jsx-2027943628{margin-top:10px;}\"] }),\n  className: \"jsx-2027943628\"\n};\nconst buttons = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"3286403566\", children: [\"div.jsx-3286403566{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:12px;margin-top:26px;}\"] }),\n  className: \"jsx-3286403566\"\n};\nconst cancelButton = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"642015552\", children: [\"button.jsx-642015552{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;margin:0;padding:0;background:none;outline:none;border:none;font-weight:700;font-size:14px;color:#474747;}\"] }),\n  className: \"jsx-642015552\"\n};\nconst detailButton = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"2879314183\", children: [\"button.jsx-2879314183{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;margin:0;padding:0;background:none;border:none;outline:none;border-bottom:1px solid;border-color:#474747;font-weight:500;font-size:14px;color:#474747;line-height:140%;}\"] }),\n  className: \"jsx-2879314183\"\n};\nconst titleText = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"249968650\", children: [\"span.jsx-249968650{font-weight:700;font-size:24px;line-height:136%;white-space:pre-line;color:#000;}\"] }),\n  className: \"jsx-249968650\"\n};\nexport {\n  NotificationAgreementsBottomSheet\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { useBottomSheet } from \"../../../../hooks/useBottomSheet.js\";\nimport { NotificationAgreementsBottomSheet } from \"./NotificationAgreementsBottomSheet.js\";\nconst useNotificationAgreementsBottomSheet = () => {\n  const bottomSheet = useBottomSheet();\n  const show = ({\n    onCancel,\n    ...props\n  }) => {\n    const handleCancel = () => {\n      onCancel();\n      bottomSheet.hide();\n    };\n    bottomSheet.show({\n      content: /* @__PURE__ */ jsx(NotificationAgreementsBottomSheet, { ...props, onCancel: handleCancel }),\n      draggable: false,\n      closeOnOverlayClick: false,\n      detent: \"content-height\"\n    });\n  };\n  return {\n    show,\n    hide: bottomSheet.hide\n  };\n};\nexport {\n  useNotificationAgreementsBottomSheet\n};\n","import { useRef } from \"react\";\nimport { getAppBuildNumber, isIos } from \"../utils/device.js\";\nimport { useReceiveMessage } from \"./useReceiveMessage.js\";\nimport { postMessage } from \"../utils/postMessage.js\";\nconst APP_CRASH_FIX_IOS_BUILD_NUMBER = 719;\nconst REQUEST_TYPE = \"fetchAppNotificationState\";\nconst useAppNotificationState = () => {\n  const callbackFunction = useRef();\n  const isLoading = useRef(false);\n  const isAvailableIosBuildNumber = () => {\n    const buildNumber = getAppBuildNumber();\n    const isAdhocVersion = isIos() && Number.isNaN(buildNumber);\n    if (isAdhocVersion) {\n      return true;\n    }\n    if (!isIos()) {\n      return true;\n    }\n    if (buildNumber < APP_CRASH_FIX_IOS_BUILD_NUMBER) {\n      return false;\n    }\n    return true;\n  };\n  const fetchNotificationState = () => {\n    return new Promise((resolve, reject) => {\n      if (!isAvailableIosBuildNumber()) {\n        reject(\"UNAVAILABLE_IOS_BUILD_NUMBER\");\n      }\n      callbackFunction.current = (...args) => resolve(...args);\n      postMessage(REQUEST_TYPE, {});\n      isLoading.current = true;\n    });\n  };\n  useReceiveMessage(REQUEST_TYPE, (payload) => {\n    if (!isLoading.current || !callbackFunction.current || !payload) {\n      return;\n    }\n    callbackFunction.current(payload.result);\n    callbackFunction.current = void 0;\n    isLoading.current = false;\n  });\n  return {\n    fetchNotificationState\n  };\n};\nexport {\n  useAppNotificationState\n};\n","import { useRef, useMemo } from \"react\";\nimport { useFetchAgreements } from \"./fetchers/useFetchAgreements.js\";\nimport { postMessage } from \"../utils/postMessage.js\";\nimport { useReceiveMessage } from \"./useReceiveMessage.js\";\nimport { useDeviceInfo } from \"./useDeviceInfo.js\";\nconst IOS_REQUEST_TYPE = \"fetchNotificationState\";\nconst ANDROID_REQUEST_TYPE = \"requestMarketingPushNotification\";\nconst useMarketingPushNotification = () => {\n  const callbackFunction = useRef();\n  const {\n    data: response\n  } = useFetchAgreements();\n  const {\n    isIos\n  } = useDeviceInfo();\n  const agreements = response == null ? void 0 : response.data;\n  const privacyAgreementAlreadyAgreed = useMemo(() => {\n    if (!agreements) {\n      return false;\n    }\n    return agreements.privacyAgreement;\n  }, [agreements]);\n  const advertisingAgreementAlreadyAgreed = useMemo(() => {\n    if (!agreements) {\n      return false;\n    }\n    const {\n      privacyAgreement: _,\n      ...advertisingAgreements\n    } = agreements;\n    return Object.values(advertisingAgreements).every((value) => value);\n  }, [agreements]);\n  const requestType = isIos ? IOS_REQUEST_TYPE : ANDROID_REQUEST_TYPE;\n  const requestMarketingPushNotification = ({\n    type,\n    params = {},\n    shouldShowMarketingPushBottomSheet,\n    marketingPushBottomSheetActivateCycle = \"noLimit\",\n    osBottomSheetTitle = \"휴대폰 알림이 꺼져 있어 알림을 받을 수 없어요\",\n    marketingBottomSheetTitle = \"\"\n  }) => {\n    return new Promise((resolve) => {\n      callbackFunction.current = (...args) => resolve(...args);\n      postMessage(requestType, {\n        type,\n        shouldShowMarketingPushBottomSheet,\n        marketingPushBottomSheetActivateCycle,\n        osBottomSheetTitle,\n        marketingBottomSheetTitle,\n        ...params\n      });\n    });\n  };\n  useReceiveMessage(requestType, ({\n    marketingPushAlreadyActivated: _,\n    ...rest\n  }) => {\n    if (!callbackFunction.current) {\n      return;\n    }\n    const payload = {\n      ...rest,\n      privacyAgreementAlreadyAgreed,\n      advertisingAgreementAlreadyAgreed\n    };\n    callbackFunction.current(payload);\n    callbackFunction.current = void 0;\n  });\n  return {\n    requestMarketingPushNotification\n  };\n};\nexport {\n  useMarketingPushNotification\n};\n","import useSWRMutation from \"../../node_modules/swr/mutation/dist/index.js\";\nimport { userApi } from \"../../apis/user/UserApiService.js\";\nconst POST_AGREEMENT_MUTATION_KEY = \"@user/post-agreement\";\nconst usePostAgreementsMutation = (params) => {\n  const {\n    onSuccess,\n    onError\n  } = params ?? {};\n  return useSWRMutation(POST_AGREEMENT_MUTATION_KEY, (_, {\n    arg\n  }) => userApi.postAgreements({\n    endpoint: arg,\n    privacyAgreement: true,\n    advertisingAgreement: true\n  }), {\n    onSuccess,\n    onError\n  });\n};\nexport {\n  POST_AGREEMENT_MUTATION_KEY,\n  usePostAgreementsMutation\n};\n","import useSWR from \"../../node_modules/swr/core/dist/index.js\";\nimport { useAppNotificationState } from \"../useAppNotificationState.js\";\nconst NOTIFICATION_PERMISSION_FETCHER_KEY = \"@notification/permission\";\nconst useFetchNotificationPermission = () => {\n  const {\n    fetchNotificationState\n  } = useAppNotificationState();\n  return useSWR([NOTIFICATION_PERMISSION_FETCHER_KEY], () => fetchNotificationState());\n};\nexport {\n  NOTIFICATION_PERMISSION_FETCHER_KEY,\n  useFetchNotificationPermission\n};\n","import { useNotificationAgreementsBottomSheet } from \"../components/@shared/bottom-sheets/NotificationAgreementsBottomSheet/NotificationAgreementsBottomSheet.hooks.js\";\nimport { useFetchAgreements } from \"./fetchers/useFetchAgreements.js\";\nimport { useAppNotificationState } from \"./useAppNotificationState.js\";\nimport { useMarketingPushNotification } from \"./useMarketingPushNotification.js\";\nimport { usePostAgreementsMutation } from \"./mutations/usePostAgreementsMutation.js\";\nimport { parseErrorMessage } from \"../utils/error/error.js\";\nimport { useNotificationAgreementsToast } from \"../components/@shared/toasts/NotificationAgreementsToast/NotificationAgreementsToast.hooks.js\";\nimport { useFetchNotificationPermission } from \"./fetchers/useFetchNotfiicationPermission.js\";\nconst useNotificationRequirements = () => {\n  const requestAgreements = useNotificationAgreements();\n  const requestPermission = useNotificationPermission();\n  const requestRequirements = async (options) => {\n    try {\n      await requestAgreements(options);\n      await requestPermission(options);\n    } catch (error) {\n      notificationRequirementsErrorHandler(error);\n    }\n  };\n  return requestRequirements;\n};\nconst notificationRequirementsErrorHandler = (error) => {\n  switch (parseErrorMessage(error)) {\n    case \"AGREEMENTS_CANCELED\":\n      return;\n    case \"NO_AGREEMENTS_DATA\":\n      return;\n    case \"UNAVAILABLE_IOS_BUILD_NUMBER\":\n      return;\n  }\n};\nconst useNotificationAgreements = () => {\n  const {\n    data: response,\n    mutate\n  } = useFetchAgreements();\n  const {\n    trigger\n  } = usePostAgreementsMutation();\n  const {\n    show,\n    hide\n  } = useNotificationAgreementsBottomSheet();\n  const agreements = response == null ? void 0 : response.data;\n  const {\n    privacyAgreement = false,\n    pushAdvertisingAgreement = false\n  } = agreements ?? {};\n  const postAgreements = (options) => {\n    const {\n      apiEndpoint,\n      onNotificationAgreementsError\n    } = options;\n    return trigger(apiEndpoint, {\n      onSuccess: () => {\n        hide();\n        mutate();\n      },\n      onError: () => {\n        hide();\n        onNotificationAgreementsError == null ? void 0 : onNotificationAgreementsError();\n      }\n    });\n  };\n  const requestAgreements = (options) => {\n    const {\n      onNotificationAgreementsSubmit,\n      onNotificationAgreementsCancel,\n      ...rest\n    } = options;\n    return new Promise((resolve, reject) => {\n      if (!agreements) {\n        reject(\n          \"NO_AGREEMENTS_DATA\"\n          /* NO_AGREEMENTS_DATA */\n        );\n        return;\n      }\n      if (privacyAgreement && pushAdvertisingAgreement) {\n        resolve(void 0);\n        return;\n      }\n      show({\n        ...rest,\n        privacyAgreement,\n        pushAdvertisingAgreement,\n        // eslint-disable-next-line @typescript-eslint/no-misused-promises\n        onSubmit: async () => {\n          await postAgreements(options);\n          resolve(void 0);\n          onNotificationAgreementsSubmit == null ? void 0 : onNotificationAgreementsSubmit(privacyAgreement, pushAdvertisingAgreement);\n        },\n        onCancel: () => {\n          reject(\n            \"AGREEMENTS_CANCELED\"\n            /* AGREEMENTS_CANCELED */\n          );\n          onNotificationAgreementsCancel == null ? void 0 : onNotificationAgreementsCancel(privacyAgreement, pushAdvertisingAgreement);\n        }\n      });\n    });\n  };\n  return requestAgreements;\n};\nconst useNotificationPermission = () => {\n  const {\n    fetchNotificationState\n  } = useAppNotificationState();\n  const {\n    mutate\n  } = useFetchNotificationPermission();\n  const {\n    requestMarketingPushNotification\n  } = useMarketingPushNotification();\n  const toast = useNotificationAgreementsToast();\n  const hasNotificationPermission = async () => await fetchNotificationState() === \"on\";\n  const requestPermission = async (options) => {\n    const {\n      osBottomSheetType = \"null\",\n      showToastOnSuccess = true,\n      toastTitle,\n      onNotificationEnabled,\n      onNotificationDisabled\n    } = options;\n    try {\n      if (await hasNotificationPermission()) {\n        if (showToastOnSuccess) {\n          toast.show(toastTitle);\n        }\n        onNotificationEnabled == null ? void 0 : onNotificationEnabled();\n        return;\n      }\n      await requestMarketingPushNotification({\n        type: osBottomSheetType\n      });\n      if (await hasNotificationPermission()) {\n        if (showToastOnSuccess) {\n          toast.show(toastTitle);\n        }\n        mutate();\n        onNotificationEnabled == null ? void 0 : onNotificationEnabled();\n      } else {\n        onNotificationDisabled == null ? void 0 : onNotificationDisabled();\n      }\n    } catch (error) {\n      throw new Error(\n        \"UNAVAILABLE_IOS_BUILD_NUMBER\"\n        /* UNAVAILABLE_IOS_BUILD_NUMBER */\n      );\n    }\n  };\n  return requestPermission;\n};\nexport {\n  useNotificationRequirements\n};\n","import { throwFailError } from \"../@middlewares/throwFailError.js\";\nimport { APIService } from \"../APIService.js\";\nimport { env } from \"../../config/index.js\";\nclass SubscriptionApiService extends APIService {\n  constructor() {\n    super();\n    this.setBaseUrl(env.api.content);\n    this.setMiddleware(throwFailError);\n  }\n  async getSubscriptionsByGroupKey(groupKey) {\n    var _a;\n    const response = await this.get(`/api/v4/framers/proxy/activation-api/api/v4/event-notification/events/${groupKey}/subscriptions`, void 0, {\n      credentials: \"include\"\n    });\n    return ((_a = response.data) == null ? void 0 : _a.eventKeys) ?? [];\n  }\n  async getSubscription(eventKey) {\n    const response = await this.get(`/api/v4/framers/proxy/activation-api/api/v4/event-notification/events/${eventKey}/subscription`, void 0, {\n      credentials: \"include\"\n    });\n    const isSubscribed = response.data ?? false;\n    return isSubscribed ? [eventKey] : [];\n  }\n  async subscribe(eventKeys) {\n    await this.post(\"/api/v4/framers/proxy/activation-api/api/v4/event-notification/events/subscription:on\", {\n      eventKeys\n    }, {\n      credentials: \"include\"\n    });\n    return eventKeys;\n  }\n  async unsubscribe(eventKey) {\n    await this.post(`/api/v4/framers/proxy/activation-api/v4/event-notification/events/${eventKey}/subscription:off`, void 0, {\n      credentials: \"include\"\n    });\n    return eventKey;\n  }\n}\nconst subscriptionApi = new SubscriptionApiService();\nexport {\n  subscriptionApi\n};\n","import useSWR from \"../../node_modules/swr/core/dist/index.js\";\nimport { subscriptionApi } from \"../../apis/subscription/SubscriptionApiService.js\";\nimport { useCurrentUser } from \"../useCurrentUser.js\";\nconst SUBSCRIPTIONS_FETCHER_KEY = \"@subscription/list\";\nconst useFetchSubscriptions = (eventKey, groupKey, enabled = true) => {\n  const {\n    logged\n  } = useCurrentUser();\n  const canFetch = groupKey !== \"\" && logged && enabled;\n  const {\n    data,\n    isLoading,\n    ...rest\n  } = useSWR(canFetch ? [SUBSCRIPTIONS_FETCHER_KEY, groupKey ? groupKey : eventKey] : null, () => groupKey ? subscriptionApi.getSubscriptionsByGroupKey(groupKey) : subscriptionApi.getSubscription(eventKey));\n  return {\n    isLoading: isLoading || !canFetch,\n    subscriptions: data ?? [],\n    ...rest\n  };\n};\nexport {\n  SUBSCRIPTIONS_FETCHER_KEY,\n  useFetchSubscriptions\n};\n","import { subscriptionApi } from \"../apis/subscription/SubscriptionApiService.js\";\nimport { useFetchSubscriptions } from \"./fetchers/useFetchSubscriptions.js\";\nimport { shallowUnique } from \"../utils/unique.js\";\nconst useRequestSubscription = (eventKey, groupKey, enabled = true) => {\n  const {\n    subscriptions,\n    mutate\n  } = useFetchSubscriptions(eventKey, groupKey, enabled);\n  const filterSubscription = (incoming) => subscriptions.filter((subscription) => subscription !== incoming);\n  const subscribeMutator = async (incoming) => {\n    const result = await subscriptionApi.subscribe(incoming);\n    return shallowUnique([...subscriptions, ...result]);\n  };\n  const unsubscribeMutator = async (incoming) => {\n    const result = await subscriptionApi.unsubscribe(incoming);\n    return filterSubscription(result);\n  };\n  const requestSubscribe = (incoming) => mutate(subscribeMutator(incoming), {\n    optimisticData: shallowUnique([...subscriptions, ...incoming]),\n    rollbackOnError: true,\n    populateCache: true,\n    revalidate: false\n  });\n  const requestUnsubscribe = (incoming) => mutate(unsubscribeMutator(incoming), {\n    optimisticData: filterSubscription(incoming),\n    rollbackOnError: true,\n    populateCache: true,\n    revalidate: false\n  });\n  return {\n    subscriptions,\n    requestSubscribe,\n    requestUnsubscribe\n  };\n};\nexport {\n  useRequestSubscription\n};\n","import { useDialog } from \"./useDialog.js\";\nimport { isIos, isAndroid } from \"../utils/device.js\";\nconst UPDATE_APP_DIALOG_ID = \"update-app-dialog\";\nconst APP_STORE_LINK = \"https://apps.apple.com/kr/app/29cm/id789634744\";\nconst GOOGLE_PLAY_STORE_LINK = \"https://play.google.com/store/apps/details?id=com.the29cm.app29cm\";\nconst useShowUpdateAppDialog = () => {\n  const dialog = useDialog();\n  const showUpdateAppDialog = (content) => {\n    dialog.show({\n      id: UPDATE_APP_DIALOG_ID,\n      title: \"앱 업데이트 안내\",\n      content: content ?? \"해당 기능을 사용하기 위해서는 최신 버전으로 앱 업데이트가 필요해요.\",\n      primaryButtonText: \"업데이트\",\n      onPrimaryButtonClick: () => {\n        dialog.hide(UPDATE_APP_DIALOG_ID);\n        if (isIos()) {\n          document.location.href = `app29cm://outlink/${APP_STORE_LINK}`;\n          return;\n        }\n        if (isAndroid()) {\n          document.location.href = GOOGLE_PLAY_STORE_LINK;\n          return;\n        }\n      },\n      secondaryButtonText: \"취소\",\n      onSecondaryButtonClick: () => {\n        dialog.hide(UPDATE_APP_DIALOG_ID);\n      },\n      needInAppLayer: false\n    });\n  };\n  return {\n    showUpdateAppDialog\n  };\n};\nexport {\n  useShowUpdateAppDialog\n};\n","import { useRef } from \"react\";\nimport { useTargetAppVersion } from \"./useTargetAppVersion.js\";\nimport { postMessage } from \"../utils/postMessage.js\";\nimport { useReceiveMessage } from \"./useReceiveMessage.js\";\nimport { useShowUpdateAppDialog } from \"./useShowUpdateAppDialog.js\";\nconst REQUEST_TYPE = \"requestUserAgreementBottomSheet\";\nconst useRequestUserAgreementBottomSheet = () => {\n  const confirmHandlerRef = useRef();\n  const cancelHandlerRef = useRef();\n  const {\n    isTargetAppVersion\n  } = useTargetAppVersion({\n    minIosVersion: 1072,\n    minAndroidVersion: 722\n  });\n  const {\n    showUpdateAppDialog\n  } = useShowUpdateAppDialog();\n  const requestUserAgreementBottomSheet = ({\n    type,\n    title = \"알림을 받으려면\\n동의가 필요해요\",\n    confirmButtonText = \"동의하고 알림받기\",\n    cancelButtonText = \"다음에 하기\",\n    snackBarTitle,\n    onConfirm,\n    onCancel\n  }) => {\n    if (!isTargetAppVersion) {\n      showUpdateAppDialog();\n      return;\n    }\n    postMessage(REQUEST_TYPE, {\n      type,\n      title,\n      confirmButtonText,\n      cancelButtonText,\n      snackBarTitle,\n      currentScreen: \"content\"\n      // NOTE: 콘텐츠(프레이머 등) 관련 화면인 경우 currentScreen이 'content'로 고정됨\n    });\n    confirmHandlerRef.current = onConfirm;\n    cancelHandlerRef.current = onCancel;\n  };\n  useReceiveMessage(REQUEST_TYPE, (payload) => {\n    const {\n      isPrivacyAndAdvertisingAgreed,\n      isPushNotificationGranted\n    } = payload;\n    const isUserAgree = isPrivacyAndAdvertisingAgreed && isPushNotificationGranted;\n    if (confirmHandlerRef.current && isUserAgree) {\n      confirmHandlerRef.current(payload);\n    } else if (cancelHandlerRef.current && (!isPrivacyAndAdvertisingAgreed || !isPushNotificationGranted)) {\n      cancelHandlerRef.current(payload);\n    }\n    confirmHandlerRef.current = void 0;\n    cancelHandlerRef.current = void 0;\n  });\n  return {\n    requestUserAgreementBottomSheet,\n    isTargetAppVersion\n  };\n};\nexport {\n  useRequestUserAgreementBottomSheet\n};\n","import { useCreateAppSchemeLink } from \"./useCreateAppSchemeLink.js\";\nconst useCreateOneLink = (href, webviewNavOptions) => {\n  const {\n    createAppSchemeLink\n  } = useCreateAppSchemeLink();\n  const webLink = encodeURIComponent(href);\n  const appLink = createAppSchemeLink(href, webviewNavOptions);\n  const oneLink = `https://29cm.onelink.me/1080201211?af_dp=${appLink}&deep_link_value=${appLink}&af_web_dp=${webLink}`;\n  return {\n    oneLink\n  };\n};\nexport {\n  useCreateOneLink\n};\n","import { isServer } from \"./context.js\";\nconst getCleanUrl = () => {\n  const urlObj = new URL(document.location.href);\n  urlObj.search = \"\";\n  return urlObj.toString();\n};\nconst getCurrentHref = ({\n  removeQueryParams\n} = {}) => {\n  if (isServer()) {\n    return \"\";\n  }\n  if (removeQueryParams) {\n    return getCleanUrl();\n  }\n  return document.location.href;\n};\nexport {\n  getCurrentHref\n};\n","import React__default from \"react\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __objRest = (source, exclude) => {\n  var target = {};\n  for (var prop in source)\n    if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n      target[prop] = source[prop];\n  if (source != null && __getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(source)) {\n      if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n        target[prop] = source[prop];\n    }\n  return target;\n};\n/**\n * @license QR Code generator library (TypeScript)\n * Copyright (c) Project Nayuki.\n * SPDX-License-Identifier: MIT\n */\nvar qrcodegen;\n((qrcodegen2) => {\n  const _QrCode = class {\n    constructor(version, errorCorrectionLevel, dataCodewords, msk) {\n      this.version = version;\n      this.errorCorrectionLevel = errorCorrectionLevel;\n      this.modules = [];\n      this.isFunction = [];\n      if (version < _QrCode.MIN_VERSION || version > _QrCode.MAX_VERSION)\n        throw new RangeError(\"Version value out of range\");\n      if (msk < -1 || msk > 7)\n        throw new RangeError(\"Mask value out of range\");\n      this.size = version * 4 + 17;\n      let row = [];\n      for (let i = 0; i < this.size; i++)\n        row.push(false);\n      for (let i = 0; i < this.size; i++) {\n        this.modules.push(row.slice());\n        this.isFunction.push(row.slice());\n      }\n      this.drawFunctionPatterns();\n      const allCodewords = this.addEccAndInterleave(dataCodewords);\n      this.drawCodewords(allCodewords);\n      if (msk == -1) {\n        let minPenalty = 1e9;\n        for (let i = 0; i < 8; i++) {\n          this.applyMask(i);\n          this.drawFormatBits(i);\n          const penalty = this.getPenaltyScore();\n          if (penalty < minPenalty) {\n            msk = i;\n            minPenalty = penalty;\n          }\n          this.applyMask(i);\n        }\n      }\n      assert(0 <= msk && msk <= 7);\n      this.mask = msk;\n      this.applyMask(msk);\n      this.drawFormatBits(msk);\n      this.isFunction = [];\n    }\n    static encodeText(text, ecl) {\n      const segs = qrcodegen2.QrSegment.makeSegments(text);\n      return _QrCode.encodeSegments(segs, ecl);\n    }\n    static encodeBinary(data, ecl) {\n      const seg = qrcodegen2.QrSegment.makeBytes(data);\n      return _QrCode.encodeSegments([seg], ecl);\n    }\n    static encodeSegments(segs, ecl, minVersion = 1, maxVersion = 40, mask = -1, boostEcl = true) {\n      if (!(_QrCode.MIN_VERSION <= minVersion && minVersion <= maxVersion && maxVersion <= _QrCode.MAX_VERSION) || mask < -1 || mask > 7)\n        throw new RangeError(\"Invalid value\");\n      let version;\n      let dataUsedBits;\n      for (version = minVersion; ; version++) {\n        const dataCapacityBits2 = _QrCode.getNumDataCodewords(version, ecl) * 8;\n        const usedBits = QrSegment.getTotalBits(segs, version);\n        if (usedBits <= dataCapacityBits2) {\n          dataUsedBits = usedBits;\n          break;\n        }\n        if (version >= maxVersion)\n          throw new RangeError(\"Data too long\");\n      }\n      for (const newEcl of [_QrCode.Ecc.MEDIUM, _QrCode.Ecc.QUARTILE, _QrCode.Ecc.HIGH]) {\n        if (boostEcl && dataUsedBits <= _QrCode.getNumDataCodewords(version, newEcl) * 8)\n          ecl = newEcl;\n      }\n      let bb = [];\n      for (const seg of segs) {\n        appendBits(seg.mode.modeBits, 4, bb);\n        appendBits(seg.numChars, seg.mode.numCharCountBits(version), bb);\n        for (const b of seg.getData())\n          bb.push(b);\n      }\n      assert(bb.length == dataUsedBits);\n      const dataCapacityBits = _QrCode.getNumDataCodewords(version, ecl) * 8;\n      assert(bb.length <= dataCapacityBits);\n      appendBits(0, Math.min(4, dataCapacityBits - bb.length), bb);\n      appendBits(0, (8 - bb.length % 8) % 8, bb);\n      assert(bb.length % 8 == 0);\n      for (let padByte = 236; bb.length < dataCapacityBits; padByte ^= 236 ^ 17)\n        appendBits(padByte, 8, bb);\n      let dataCodewords = [];\n      while (dataCodewords.length * 8 < bb.length)\n        dataCodewords.push(0);\n      bb.forEach((b, i) => dataCodewords[i >>> 3] |= b << 7 - (i & 7));\n      return new _QrCode(version, ecl, dataCodewords, mask);\n    }\n    getModule(x, y) {\n      return 0 <= x && x < this.size && 0 <= y && y < this.size && this.modules[y][x];\n    }\n    getModules() {\n      return this.modules;\n    }\n    drawFunctionPatterns() {\n      for (let i = 0; i < this.size; i++) {\n        this.setFunctionModule(6, i, i % 2 == 0);\n        this.setFunctionModule(i, 6, i % 2 == 0);\n      }\n      this.drawFinderPattern(3, 3);\n      this.drawFinderPattern(this.size - 4, 3);\n      this.drawFinderPattern(3, this.size - 4);\n      const alignPatPos = this.getAlignmentPatternPositions();\n      const numAlign = alignPatPos.length;\n      for (let i = 0; i < numAlign; i++) {\n        for (let j = 0; j < numAlign; j++) {\n          if (!(i == 0 && j == 0 || i == 0 && j == numAlign - 1 || i == numAlign - 1 && j == 0))\n            this.drawAlignmentPattern(alignPatPos[i], alignPatPos[j]);\n        }\n      }\n      this.drawFormatBits(0);\n      this.drawVersion();\n    }\n    drawFormatBits(mask) {\n      const data = this.errorCorrectionLevel.formatBits << 3 | mask;\n      let rem = data;\n      for (let i = 0; i < 10; i++)\n        rem = rem << 1 ^ (rem >>> 9) * 1335;\n      const bits = (data << 10 | rem) ^ 21522;\n      assert(bits >>> 15 == 0);\n      for (let i = 0; i <= 5; i++)\n        this.setFunctionModule(8, i, getBit(bits, i));\n      this.setFunctionModule(8, 7, getBit(bits, 6));\n      this.setFunctionModule(8, 8, getBit(bits, 7));\n      this.setFunctionModule(7, 8, getBit(bits, 8));\n      for (let i = 9; i < 15; i++)\n        this.setFunctionModule(14 - i, 8, getBit(bits, i));\n      for (let i = 0; i < 8; i++)\n        this.setFunctionModule(this.size - 1 - i, 8, getBit(bits, i));\n      for (let i = 8; i < 15; i++)\n        this.setFunctionModule(8, this.size - 15 + i, getBit(bits, i));\n      this.setFunctionModule(8, this.size - 8, true);\n    }\n    drawVersion() {\n      if (this.version < 7)\n        return;\n      let rem = this.version;\n      for (let i = 0; i < 12; i++)\n        rem = rem << 1 ^ (rem >>> 11) * 7973;\n      const bits = this.version << 12 | rem;\n      assert(bits >>> 18 == 0);\n      for (let i = 0; i < 18; i++) {\n        const color = getBit(bits, i);\n        const a = this.size - 11 + i % 3;\n        const b = Math.floor(i / 3);\n        this.setFunctionModule(a, b, color);\n        this.setFunctionModule(b, a, color);\n      }\n    }\n    drawFinderPattern(x, y) {\n      for (let dy = -4; dy <= 4; dy++) {\n        for (let dx = -4; dx <= 4; dx++) {\n          const dist = Math.max(Math.abs(dx), Math.abs(dy));\n          const xx = x + dx;\n          const yy = y + dy;\n          if (0 <= xx && xx < this.size && 0 <= yy && yy < this.size)\n            this.setFunctionModule(xx, yy, dist != 2 && dist != 4);\n        }\n      }\n    }\n    drawAlignmentPattern(x, y) {\n      for (let dy = -2; dy <= 2; dy++) {\n        for (let dx = -2; dx <= 2; dx++)\n          this.setFunctionModule(x + dx, y + dy, Math.max(Math.abs(dx), Math.abs(dy)) != 1);\n      }\n    }\n    setFunctionModule(x, y, isDark) {\n      this.modules[y][x] = isDark;\n      this.isFunction[y][x] = true;\n    }\n    addEccAndInterleave(data) {\n      const ver = this.version;\n      const ecl = this.errorCorrectionLevel;\n      if (data.length != _QrCode.getNumDataCodewords(ver, ecl))\n        throw new RangeError(\"Invalid argument\");\n      const numBlocks = _QrCode.NUM_ERROR_CORRECTION_BLOCKS[ecl.ordinal][ver];\n      const blockEccLen = _QrCode.ECC_CODEWORDS_PER_BLOCK[ecl.ordinal][ver];\n      const rawCodewords = Math.floor(_QrCode.getNumRawDataModules(ver) / 8);\n      const numShortBlocks = numBlocks - rawCodewords % numBlocks;\n      const shortBlockLen = Math.floor(rawCodewords / numBlocks);\n      let blocks = [];\n      const rsDiv = _QrCode.reedSolomonComputeDivisor(blockEccLen);\n      for (let i = 0, k = 0; i < numBlocks; i++) {\n        let dat = data.slice(k, k + shortBlockLen - blockEccLen + (i < numShortBlocks ? 0 : 1));\n        k += dat.length;\n        const ecc = _QrCode.reedSolomonComputeRemainder(dat, rsDiv);\n        if (i < numShortBlocks)\n          dat.push(0);\n        blocks.push(dat.concat(ecc));\n      }\n      let result = [];\n      for (let i = 0; i < blocks[0].length; i++) {\n        blocks.forEach((block, j) => {\n          if (i != shortBlockLen - blockEccLen || j >= numShortBlocks)\n            result.push(block[i]);\n        });\n      }\n      assert(result.length == rawCodewords);\n      return result;\n    }\n    drawCodewords(data) {\n      if (data.length != Math.floor(_QrCode.getNumRawDataModules(this.version) / 8))\n        throw new RangeError(\"Invalid argument\");\n      let i = 0;\n      for (let right = this.size - 1; right >= 1; right -= 2) {\n        if (right == 6)\n          right = 5;\n        for (let vert = 0; vert < this.size; vert++) {\n          for (let j = 0; j < 2; j++) {\n            const x = right - j;\n            const upward = (right + 1 & 2) == 0;\n            const y = upward ? this.size - 1 - vert : vert;\n            if (!this.isFunction[y][x] && i < data.length * 8) {\n              this.modules[y][x] = getBit(data[i >>> 3], 7 - (i & 7));\n              i++;\n            }\n          }\n        }\n      }\n      assert(i == data.length * 8);\n    }\n    applyMask(mask) {\n      if (mask < 0 || mask > 7)\n        throw new RangeError(\"Mask value out of range\");\n      for (let y = 0; y < this.size; y++) {\n        for (let x = 0; x < this.size; x++) {\n          let invert;\n          switch (mask) {\n            case 0:\n              invert = (x + y) % 2 == 0;\n              break;\n            case 1:\n              invert = y % 2 == 0;\n              break;\n            case 2:\n              invert = x % 3 == 0;\n              break;\n            case 3:\n              invert = (x + y) % 3 == 0;\n              break;\n            case 4:\n              invert = (Math.floor(x / 3) + Math.floor(y / 2)) % 2 == 0;\n              break;\n            case 5:\n              invert = x * y % 2 + x * y % 3 == 0;\n              break;\n            case 6:\n              invert = (x * y % 2 + x * y % 3) % 2 == 0;\n              break;\n            case 7:\n              invert = ((x + y) % 2 + x * y % 3) % 2 == 0;\n              break;\n            default:\n              throw new Error(\"Unreachable\");\n          }\n          if (!this.isFunction[y][x] && invert)\n            this.modules[y][x] = !this.modules[y][x];\n        }\n      }\n    }\n    getPenaltyScore() {\n      let result = 0;\n      for (let y = 0; y < this.size; y++) {\n        let runColor = false;\n        let runX = 0;\n        let runHistory = [0, 0, 0, 0, 0, 0, 0];\n        for (let x = 0; x < this.size; x++) {\n          if (this.modules[y][x] == runColor) {\n            runX++;\n            if (runX == 5)\n              result += _QrCode.PENALTY_N1;\n            else if (runX > 5)\n              result++;\n          } else {\n            this.finderPenaltyAddHistory(runX, runHistory);\n            if (!runColor)\n              result += this.finderPenaltyCountPatterns(runHistory) * _QrCode.PENALTY_N3;\n            runColor = this.modules[y][x];\n            runX = 1;\n          }\n        }\n        result += this.finderPenaltyTerminateAndCount(runColor, runX, runHistory) * _QrCode.PENALTY_N3;\n      }\n      for (let x = 0; x < this.size; x++) {\n        let runColor = false;\n        let runY = 0;\n        let runHistory = [0, 0, 0, 0, 0, 0, 0];\n        for (let y = 0; y < this.size; y++) {\n          if (this.modules[y][x] == runColor) {\n            runY++;\n            if (runY == 5)\n              result += _QrCode.PENALTY_N1;\n            else if (runY > 5)\n              result++;\n          } else {\n            this.finderPenaltyAddHistory(runY, runHistory);\n            if (!runColor)\n              result += this.finderPenaltyCountPatterns(runHistory) * _QrCode.PENALTY_N3;\n            runColor = this.modules[y][x];\n            runY = 1;\n          }\n        }\n        result += this.finderPenaltyTerminateAndCount(runColor, runY, runHistory) * _QrCode.PENALTY_N3;\n      }\n      for (let y = 0; y < this.size - 1; y++) {\n        for (let x = 0; x < this.size - 1; x++) {\n          const color = this.modules[y][x];\n          if (color == this.modules[y][x + 1] && color == this.modules[y + 1][x] && color == this.modules[y + 1][x + 1])\n            result += _QrCode.PENALTY_N2;\n        }\n      }\n      let dark = 0;\n      for (const row of this.modules)\n        dark = row.reduce((sum, color) => sum + (color ? 1 : 0), dark);\n      const total = this.size * this.size;\n      const k = Math.ceil(Math.abs(dark * 20 - total * 10) / total) - 1;\n      assert(0 <= k && k <= 9);\n      result += k * _QrCode.PENALTY_N4;\n      assert(0 <= result && result <= 2568888);\n      return result;\n    }\n    getAlignmentPatternPositions() {\n      if (this.version == 1)\n        return [];\n      else {\n        const numAlign = Math.floor(this.version / 7) + 2;\n        const step = this.version == 32 ? 26 : Math.ceil((this.version * 4 + 4) / (numAlign * 2 - 2)) * 2;\n        let result = [6];\n        for (let pos = this.size - 7; result.length < numAlign; pos -= step)\n          result.splice(1, 0, pos);\n        return result;\n      }\n    }\n    static getNumRawDataModules(ver) {\n      if (ver < _QrCode.MIN_VERSION || ver > _QrCode.MAX_VERSION)\n        throw new RangeError(\"Version number out of range\");\n      let result = (16 * ver + 128) * ver + 64;\n      if (ver >= 2) {\n        const numAlign = Math.floor(ver / 7) + 2;\n        result -= (25 * numAlign - 10) * numAlign - 55;\n        if (ver >= 7)\n          result -= 36;\n      }\n      assert(208 <= result && result <= 29648);\n      return result;\n    }\n    static getNumDataCodewords(ver, ecl) {\n      return Math.floor(_QrCode.getNumRawDataModules(ver) / 8) - _QrCode.ECC_CODEWORDS_PER_BLOCK[ecl.ordinal][ver] * _QrCode.NUM_ERROR_CORRECTION_BLOCKS[ecl.ordinal][ver];\n    }\n    static reedSolomonComputeDivisor(degree) {\n      if (degree < 1 || degree > 255)\n        throw new RangeError(\"Degree out of range\");\n      let result = [];\n      for (let i = 0; i < degree - 1; i++)\n        result.push(0);\n      result.push(1);\n      let root = 1;\n      for (let i = 0; i < degree; i++) {\n        for (let j = 0; j < result.length; j++) {\n          result[j] = _QrCode.reedSolomonMultiply(result[j], root);\n          if (j + 1 < result.length)\n            result[j] ^= result[j + 1];\n        }\n        root = _QrCode.reedSolomonMultiply(root, 2);\n      }\n      return result;\n    }\n    static reedSolomonComputeRemainder(data, divisor) {\n      let result = divisor.map((_) => 0);\n      for (const b of data) {\n        const factor = b ^ result.shift();\n        result.push(0);\n        divisor.forEach((coef, i) => result[i] ^= _QrCode.reedSolomonMultiply(coef, factor));\n      }\n      return result;\n    }\n    static reedSolomonMultiply(x, y) {\n      if (x >>> 8 != 0 || y >>> 8 != 0)\n        throw new RangeError(\"Byte out of range\");\n      let z = 0;\n      for (let i = 7; i >= 0; i--) {\n        z = z << 1 ^ (z >>> 7) * 285;\n        z ^= (y >>> i & 1) * x;\n      }\n      assert(z >>> 8 == 0);\n      return z;\n    }\n    finderPenaltyCountPatterns(runHistory) {\n      const n = runHistory[1];\n      assert(n <= this.size * 3);\n      const core = n > 0 && runHistory[2] == n && runHistory[3] == n * 3 && runHistory[4] == n && runHistory[5] == n;\n      return (core && runHistory[0] >= n * 4 && runHistory[6] >= n ? 1 : 0) + (core && runHistory[6] >= n * 4 && runHistory[0] >= n ? 1 : 0);\n    }\n    finderPenaltyTerminateAndCount(currentRunColor, currentRunLength, runHistory) {\n      if (currentRunColor) {\n        this.finderPenaltyAddHistory(currentRunLength, runHistory);\n        currentRunLength = 0;\n      }\n      currentRunLength += this.size;\n      this.finderPenaltyAddHistory(currentRunLength, runHistory);\n      return this.finderPenaltyCountPatterns(runHistory);\n    }\n    finderPenaltyAddHistory(currentRunLength, runHistory) {\n      if (runHistory[0] == 0)\n        currentRunLength += this.size;\n      runHistory.pop();\n      runHistory.unshift(currentRunLength);\n    }\n  };\n  let QrCode = _QrCode;\n  QrCode.MIN_VERSION = 1;\n  QrCode.MAX_VERSION = 40;\n  QrCode.PENALTY_N1 = 3;\n  QrCode.PENALTY_N2 = 3;\n  QrCode.PENALTY_N3 = 40;\n  QrCode.PENALTY_N4 = 10;\n  QrCode.ECC_CODEWORDS_PER_BLOCK = [\n    [-1, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28, 28, 28, 30, 30, 26, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],\n    [-1, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],\n    [-1, 13, 22, 18, 26, 18, 24, 18, 22, 20, 24, 28, 26, 24, 20, 30, 24, 28, 28, 26, 30, 28, 30, 30, 30, 30, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],\n    [-1, 17, 28, 22, 16, 22, 28, 26, 26, 24, 28, 24, 28, 22, 24, 24, 30, 28, 28, 26, 28, 30, 24, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30]\n  ];\n  QrCode.NUM_ERROR_CORRECTION_BLOCKS = [\n    [-1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8, 8, 9, 9, 10, 12, 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 24, 25],\n    [-1, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31, 33, 35, 37, 38, 40, 43, 45, 47, 49],\n    [-1, 1, 1, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 12, 16, 12, 17, 16, 18, 21, 20, 23, 23, 25, 27, 29, 34, 34, 35, 38, 40, 43, 45, 48, 51, 53, 56, 59, 62, 65, 68],\n    [-1, 1, 1, 2, 4, 4, 4, 5, 6, 8, 8, 11, 11, 16, 16, 18, 16, 19, 21, 25, 25, 25, 34, 30, 32, 35, 37, 40, 42, 45, 48, 51, 54, 57, 60, 63, 66, 70, 74, 77, 81]\n  ];\n  qrcodegen2.QrCode = QrCode;\n  function appendBits(val, len, bb) {\n    if (len < 0 || len > 31 || val >>> len != 0)\n      throw new RangeError(\"Value out of range\");\n    for (let i = len - 1; i >= 0; i--)\n      bb.push(val >>> i & 1);\n  }\n  function getBit(x, i) {\n    return (x >>> i & 1) != 0;\n  }\n  function assert(cond) {\n    if (!cond)\n      throw new Error(\"Assertion error\");\n  }\n  const _QrSegment = class {\n    constructor(mode, numChars, bitData) {\n      this.mode = mode;\n      this.numChars = numChars;\n      this.bitData = bitData;\n      if (numChars < 0)\n        throw new RangeError(\"Invalid argument\");\n      this.bitData = bitData.slice();\n    }\n    static makeBytes(data) {\n      let bb = [];\n      for (const b of data)\n        appendBits(b, 8, bb);\n      return new _QrSegment(_QrSegment.Mode.BYTE, data.length, bb);\n    }\n    static makeNumeric(digits) {\n      if (!_QrSegment.isNumeric(digits))\n        throw new RangeError(\"String contains non-numeric characters\");\n      let bb = [];\n      for (let i = 0; i < digits.length; ) {\n        const n = Math.min(digits.length - i, 3);\n        appendBits(parseInt(digits.substr(i, n), 10), n * 3 + 1, bb);\n        i += n;\n      }\n      return new _QrSegment(_QrSegment.Mode.NUMERIC, digits.length, bb);\n    }\n    static makeAlphanumeric(text) {\n      if (!_QrSegment.isAlphanumeric(text))\n        throw new RangeError(\"String contains unencodable characters in alphanumeric mode\");\n      let bb = [];\n      let i;\n      for (i = 0; i + 2 <= text.length; i += 2) {\n        let temp = _QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)) * 45;\n        temp += _QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i + 1));\n        appendBits(temp, 11, bb);\n      }\n      if (i < text.length)\n        appendBits(_QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)), 6, bb);\n      return new _QrSegment(_QrSegment.Mode.ALPHANUMERIC, text.length, bb);\n    }\n    static makeSegments(text) {\n      if (text == \"\")\n        return [];\n      else if (_QrSegment.isNumeric(text))\n        return [_QrSegment.makeNumeric(text)];\n      else if (_QrSegment.isAlphanumeric(text))\n        return [_QrSegment.makeAlphanumeric(text)];\n      else\n        return [_QrSegment.makeBytes(_QrSegment.toUtf8ByteArray(text))];\n    }\n    static makeEci(assignVal) {\n      let bb = [];\n      if (assignVal < 0)\n        throw new RangeError(\"ECI assignment value out of range\");\n      else if (assignVal < 1 << 7)\n        appendBits(assignVal, 8, bb);\n      else if (assignVal < 1 << 14) {\n        appendBits(2, 2, bb);\n        appendBits(assignVal, 14, bb);\n      } else if (assignVal < 1e6) {\n        appendBits(6, 3, bb);\n        appendBits(assignVal, 21, bb);\n      } else\n        throw new RangeError(\"ECI assignment value out of range\");\n      return new _QrSegment(_QrSegment.Mode.ECI, 0, bb);\n    }\n    static isNumeric(text) {\n      return _QrSegment.NUMERIC_REGEX.test(text);\n    }\n    static isAlphanumeric(text) {\n      return _QrSegment.ALPHANUMERIC_REGEX.test(text);\n    }\n    getData() {\n      return this.bitData.slice();\n    }\n    static getTotalBits(segs, version) {\n      let result = 0;\n      for (const seg of segs) {\n        const ccbits = seg.mode.numCharCountBits(version);\n        if (seg.numChars >= 1 << ccbits)\n          return Infinity;\n        result += 4 + ccbits + seg.bitData.length;\n      }\n      return result;\n    }\n    static toUtf8ByteArray(str) {\n      str = encodeURI(str);\n      let result = [];\n      for (let i = 0; i < str.length; i++) {\n        if (str.charAt(i) != \"%\")\n          result.push(str.charCodeAt(i));\n        else {\n          result.push(parseInt(str.substr(i + 1, 2), 16));\n          i += 2;\n        }\n      }\n      return result;\n    }\n  };\n  let QrSegment = _QrSegment;\n  QrSegment.NUMERIC_REGEX = /^[0-9]*$/;\n  QrSegment.ALPHANUMERIC_REGEX = /^[A-Z0-9 $%*+.\\/:-]*$/;\n  QrSegment.ALPHANUMERIC_CHARSET = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:\";\n  qrcodegen2.QrSegment = QrSegment;\n})(qrcodegen || (qrcodegen = {}));\n((qrcodegen2) => {\n  ((QrCode2) => {\n    const _Ecc = class {\n      constructor(ordinal, formatBits) {\n        this.ordinal = ordinal;\n        this.formatBits = formatBits;\n      }\n    };\n    let Ecc = _Ecc;\n    Ecc.LOW = new _Ecc(0, 1);\n    Ecc.MEDIUM = new _Ecc(1, 0);\n    Ecc.QUARTILE = new _Ecc(2, 3);\n    Ecc.HIGH = new _Ecc(3, 2);\n    QrCode2.Ecc = Ecc;\n  })(qrcodegen2.QrCode || (qrcodegen2.QrCode = {}));\n})(qrcodegen || (qrcodegen = {}));\n((qrcodegen2) => {\n  ((QrSegment2) => {\n    const _Mode = class {\n      constructor(modeBits, numBitsCharCount) {\n        this.modeBits = modeBits;\n        this.numBitsCharCount = numBitsCharCount;\n      }\n      numCharCountBits(ver) {\n        return this.numBitsCharCount[Math.floor((ver + 7) / 17)];\n      }\n    };\n    let Mode = _Mode;\n    Mode.NUMERIC = new _Mode(1, [10, 12, 14]);\n    Mode.ALPHANUMERIC = new _Mode(2, [9, 11, 13]);\n    Mode.BYTE = new _Mode(4, [8, 16, 16]);\n    Mode.KANJI = new _Mode(8, [8, 10, 12]);\n    Mode.ECI = new _Mode(7, [0, 0, 0]);\n    QrSegment2.Mode = Mode;\n  })(qrcodegen2.QrSegment || (qrcodegen2.QrSegment = {}));\n})(qrcodegen || (qrcodegen = {}));\nvar qrcodegen_default = qrcodegen;\n/**\n * @license qrcode.react\n * Copyright (c) Paul O'Shannessy\n * SPDX-License-Identifier: ISC\n */\nvar ERROR_LEVEL_MAP = {\n  L: qrcodegen_default.QrCode.Ecc.LOW,\n  M: qrcodegen_default.QrCode.Ecc.MEDIUM,\n  Q: qrcodegen_default.QrCode.Ecc.QUARTILE,\n  H: qrcodegen_default.QrCode.Ecc.HIGH\n};\nvar DEFAULT_SIZE = 128;\nvar DEFAULT_LEVEL = \"L\";\nvar DEFAULT_BGCOLOR = \"#FFFFFF\";\nvar DEFAULT_FGCOLOR = \"#000000\";\nvar DEFAULT_INCLUDEMARGIN = false;\nvar MARGIN_SIZE = 4;\nvar DEFAULT_IMG_SCALE = 0.1;\nfunction generatePath(modules, margin = 0) {\n  const ops = [];\n  modules.forEach(function(row, y) {\n    let start = null;\n    row.forEach(function(cell, x) {\n      if (!cell && start !== null) {\n        ops.push(`M${start + margin} ${y + margin}h${x - start}v1H${start + margin}z`);\n        start = null;\n        return;\n      }\n      if (x === row.length - 1) {\n        if (!cell) {\n          return;\n        }\n        if (start === null) {\n          ops.push(`M${x + margin},${y + margin} h1v1H${x + margin}z`);\n        } else {\n          ops.push(`M${start + margin},${y + margin} h${x + 1 - start}v1H${start + margin}z`);\n        }\n        return;\n      }\n      if (cell && start === null) {\n        start = x;\n      }\n    });\n  });\n  return ops.join(\"\");\n}\nfunction excavateModules(modules, excavation) {\n  return modules.slice().map((row, y) => {\n    if (y < excavation.y || y >= excavation.y + excavation.h) {\n      return row;\n    }\n    return row.map((cell, x) => {\n      if (x < excavation.x || x >= excavation.x + excavation.w) {\n        return cell;\n      }\n      return false;\n    });\n  });\n}\nfunction getImageSettings(cells, size, includeMargin, imageSettings) {\n  if (imageSettings == null) {\n    return null;\n  }\n  const margin = includeMargin ? MARGIN_SIZE : 0;\n  const numCells = cells.length + margin * 2;\n  const defaultSize = Math.floor(size * DEFAULT_IMG_SCALE);\n  const scale = numCells / size;\n  const w = (imageSettings.width || defaultSize) * scale;\n  const h = (imageSettings.height || defaultSize) * scale;\n  const x = imageSettings.x == null ? cells.length / 2 - w / 2 : imageSettings.x * scale;\n  const y = imageSettings.y == null ? cells.length / 2 - h / 2 : imageSettings.y * scale;\n  let excavation = null;\n  if (imageSettings.excavate) {\n    let floorX = Math.floor(x);\n    let floorY = Math.floor(y);\n    let ceilW = Math.ceil(w + x - floorX);\n    let ceilH = Math.ceil(h + y - floorY);\n    excavation = { x: floorX, y: floorY, w: ceilW, h: ceilH };\n  }\n  return { x, y, h, w, excavation };\n}\n(function() {\n  try {\n    new Path2D().addPath(new Path2D());\n  } catch (e) {\n    return false;\n  }\n  return true;\n})();\nfunction QRCodeSVG(props) {\n  const _a = props, {\n    value,\n    size = DEFAULT_SIZE,\n    level = DEFAULT_LEVEL,\n    bgColor = DEFAULT_BGCOLOR,\n    fgColor = DEFAULT_FGCOLOR,\n    includeMargin = DEFAULT_INCLUDEMARGIN,\n    imageSettings\n  } = _a, otherProps = __objRest(_a, [\n    \"value\",\n    \"size\",\n    \"level\",\n    \"bgColor\",\n    \"fgColor\",\n    \"includeMargin\",\n    \"imageSettings\"\n  ]);\n  let cells = qrcodegen_default.QrCode.encodeText(value, ERROR_LEVEL_MAP[level]).getModules();\n  const margin = includeMargin ? MARGIN_SIZE : 0;\n  const numCells = cells.length + margin * 2;\n  const calculatedImageSettings = getImageSettings(cells, size, includeMargin, imageSettings);\n  let image = null;\n  if (imageSettings != null && calculatedImageSettings != null) {\n    if (calculatedImageSettings.excavation != null) {\n      cells = excavateModules(cells, calculatedImageSettings.excavation);\n    }\n    image = /* @__PURE__ */ React__default.createElement(\"image\", {\n      xlinkHref: imageSettings.src,\n      height: calculatedImageSettings.h,\n      width: calculatedImageSettings.w,\n      x: calculatedImageSettings.x + margin,\n      y: calculatedImageSettings.y + margin,\n      preserveAspectRatio: \"none\"\n    });\n  }\n  const fgPath = generatePath(cells, margin);\n  return /* @__PURE__ */ React__default.createElement(\"svg\", __spreadValues({\n    height: size,\n    width: size,\n    viewBox: `0 0 ${numCells} ${numCells}`\n  }, otherProps), /* @__PURE__ */ React__default.createElement(\"path\", {\n    fill: bgColor,\n    d: `M0,0 h${numCells}v${numCells}H0z`,\n    shapeRendering: \"crispEdges\"\n  }), /* @__PURE__ */ React__default.createElement(\"path\", {\n    fill: fgColor,\n    d: fgPath,\n    shapeRendering: \"crispEdges\"\n  }), image);\n}\nexport {\n  QRCodeSVG\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport _JSXStyle from \"../../../../node_modules/styled-jsx/style.js\";\nimport { QRCodeSVG } from \"../../../../node_modules/qrcode.react/lib/esm/index.js\";\nimport { useIsMobileDevice } from \"../../../../hooks/useIsMobileDevice.js\";\nconst AppLinkDialog = ({\n  content,\n  oneLink,\n  displayDesktopQRCode = true\n}) => {\n  const isMobile = useIsMobileDevice();\n  if (isMobile || !displayDesktopQRCode) {\n    return /* @__PURE__ */ jsxs(\"span\", { className: text.className, children: [\n      content,\n      text.styles\n    ] });\n  }\n  return /* @__PURE__ */ jsxs(\"div\", { className: container.className, children: [\n    /* @__PURE__ */ jsx(QRCodeSVG, { value: oneLink, size: 150, bgColor: \"#ffffff\", fgColor: \"#000000\", includeMargin: false }),\n    /* @__PURE__ */ jsx(\"span\", { className: text.className, children: content }),\n    container.styles,\n    text.styles\n  ] });\n};\nconst container = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"2940926304\", children: [\"div.jsx-2940926304{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:20px;}\"] }),\n  className: \"jsx-2940926304\"\n};\nconst text = {\n  styles: /* @__PURE__ */ jsx(_JSXStyle, { id: \"1263816186\", children: [\"span.jsx-1263816186{font-size:14px;font-weight:400;line-height:140%;color:#000;}\"] }),\n  className: \"jsx-1263816186\"\n};\nexport {\n  AppLinkDialog\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { useCreateOneLink } from \"../../../../hooks/useCreateOneLink.js\";\nimport { useDialog } from \"../../../../hooks/useDialog.js\";\nimport { useIsMobileDevice } from \"../../../../hooks/useIsMobileDevice.js\";\nimport { getCurrentHref } from \"../../../../utils/getCurrentHref.js\";\nimport { AppLinkDialog } from \"./AppLinkDialog.js\";\nconst DIALOG_ID = \"app-link-dialog-id\";\nconst useAppLinkDialog = ({\n  webviewNavOptions,\n  href,\n  displayDesktopQRCode = true,\n  content\n}) => {\n  const dialog = useDialog();\n  const isMobile = useIsMobileDevice();\n  const {\n    oneLink\n  } = useCreateOneLink(href ?? getCurrentHref({\n    removeQueryParams: true\n  }), webviewNavOptions);\n  const redirectApp = () => {\n    if (!isMobile) {\n      return;\n    }\n    document.location.href = oneLink;\n  };\n  const show = () => {\n    dialog.show({\n      id: DIALOG_ID,\n      content: /* @__PURE__ */ jsx(AppLinkDialog, { content, oneLink, displayDesktopQRCode }),\n      primaryButtonText: isMobile ? \"앱으로 이동\" : \"확인\",\n      secondaryButtonText: isMobile ? \"취소\" : \"\",\n      onPrimaryButtonClick: redirectApp\n    });\n  };\n  const hide = () => {\n    dialog.hide(DIALOG_ID, true);\n  };\n  return {\n    show,\n    hide\n  };\n};\nexport {\n  useAppLinkDialog\n};\n","import { useAppLinkDialog } from \"../components/@shared/dialogs/AppLinkDialog/AppLinkDialog.hooks.js\";\nimport { isWebview } from \"../utils/device.js\";\nconst useWithApp = (params) => {\n  const dialog = useAppLinkDialog(params);\n  const withApp = (callback) => async (...args) => {\n    if (!isWebview()) {\n      dialog.show();\n      return;\n    }\n    await callback(...args);\n  };\n  return withApp;\n};\nexport {\n  useWithApp\n};\n","import debounce from \"./debounce.js\";\nimport isObject from \"./isObject.js\";\nvar FUNC_ERROR_TEXT = \"Expected a function\";\nfunction throttle(func, wait, options) {\n  var leading = true, trailing = true;\n  if (typeof func != \"function\") {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (isObject(options)) {\n    leading = \"leading\" in options ? !!options.leading : leading;\n    trailing = \"trailing\" in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    \"leading\": leading,\n    \"maxWait\": wait,\n    \"trailing\": trailing\n  });\n}\nexport {\n  throttle as default\n};\n","import { useCallback } from \"react\";\nimport { useNotificationAgreementsToast } from \"../../../@shared/toasts/NotificationAgreementsToast/NotificationAgreementsToast.hooks.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 \"../../../../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 \"../../../@shared/providers/ThemeProvider/ThemeProvider.js\";\nimport \"../../../@shared/providers/BreakpointProvider/BreakpointProvider.js\";\nimport \"../../../../hooks/stores/bottom-sheet/bottom-sheet.store.js\";\nimport { useDialog } from \"../../../../hooks/useDialog.js\";\nimport \"framer-motion\";\nimport { useEventCallback } from \"../../../../hooks/useEventCallback.js\";\nimport \"../../../../utils/redirectLogin.js\";\nimport \"react/jsx-runtime\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { useWithLogin } from \"../../../../hooks/useWithLogin.js\";\nimport { useNotificationRequirements } from \"../../../../hooks/useNotificationRequirements.js\";\nimport { useRequestSubscription } from \"../../../../hooks/useRequestSubscription.js\";\nimport { useRequestUserAgreementBottomSheet } from \"../../../../hooks/useRequestUserAgreementBottomSheet.js\";\nimport { useWithApp } from \"../../../../hooks/useWithApp.js\";\nimport { useComponentId, FALLBACK_COMPONENT_ID } from \"../EventTrackingProvider/EventTrackingProvider.hooks.js\";\nimport \"../EventTrackingProvider/EventTrackingProvider.js\";\nimport { useTrackSnowplowEvent } from \"../../../../hooks/snowplow/useTrackSnowplowEvent.js\";\nimport throttle from \"../../../../node_modules/lodash-es/throttle.js\";\nconst SUBSCRIPTION_MESSAGES = {\n  ACCESS_FROM_APP: \"알림 신청 기능은 APP에서만 사용할 수 있어요\\nAPP에서 다시 시도해 주세요.\",\n  SUBSCRIBED: \"알림 설정이 완료되었습니다.\",\n  UNSUBSCRIBED: \"알림 설정이 취소되었습니다.\",\n  ERROR_WHILE_SUBSCRIBE: \"일시적인 오류로 알림 설정에 실패했습니다.\",\n  ERROR_WHILE_UNSUBSCRIBE: \"일시적인 오류로 알림 취소에 실패했습니다.\"\n};\nconst createSubscriptionStorageKey = (key) => `subscription-requirements-viewed-${key}`;\nconst useHandleSubscription = ({\n  sectionKey,\n  groupKey,\n  eventKey,\n  restEventKeys\n}, enabled = true) => {\n  const {\n    subscriptions,\n    requestSubscribe,\n    requestUnsubscribe\n  } = useRequestSubscription(eventKey, groupKey, enabled);\n  const componentId = useComponentId();\n  const trackSnowplowEvent = useTrackSnowplowEvent();\n  const requestRequirements = useSubscriptionRequirements();\n  const requestBulkRequirements = useBulkSubscriptionRequirements();\n  const toast = useNotificationAgreementsToast();\n  const withLogin = useWithLogin();\n  const withApp = useWithApp({\n    content: SUBSCRIPTION_MESSAGES.ACCESS_FROM_APP\n  });\n  const isSubscribed = subscriptions.includes(eventKey);\n  const hasRestEventKeys = restEventKeys.length > 0;\n  const isBulkSubscriptionRequirementsViewed = () => {\n    return localStorage.get(createSubscriptionStorageKey(sectionKey), false) ?? false;\n  };\n  const markAsBulkSubscriptionRequirementsViewed = () => {\n    localStorage.set(createSubscriptionStorageKey(sectionKey), true);\n  };\n  const onErrorWhileSubscribe = (error) => {\n    switch (error) {\n      case \"REQUIREMENTS_CANCELED\":\n        return;\n      default:\n        toast.show(SUBSCRIPTION_MESSAGES.ERROR_WHILE_SUBSCRIBE, true);\n        return;\n    }\n  };\n  const subscribe = async ({\n    shouldTrackClickEvent = true\n  } = {}) => {\n    try {\n      await requestRequirements();\n      await requestSubscribe([eventKey]);\n      if (shouldTrackClickEvent && componentId !== FALLBACK_COMPONENT_ID) {\n        trackSnowplowEvent(\"click_button\", {\n          section_name: componentId,\n          section_title: componentId,\n          position: -1,\n          layout_position: -1,\n          button_id: \"subscribe_notification\",\n          button_name: \"알림 받기\"\n        });\n      }\n      if (hasRestEventKeys && !isBulkSubscriptionRequirementsViewed()) {\n        markAsBulkSubscriptionRequirementsViewed();\n        await requestBulkRequirements();\n        await requestSubscribe([eventKey, ...restEventKeys]);\n        toast.show(SUBSCRIPTION_MESSAGES.SUBSCRIBED);\n      }\n    } catch (error) {\n      onErrorWhileSubscribe(error);\n    }\n  };\n  const unsubscribe = async () => {\n    try {\n      await requestUnsubscribe(eventKey);\n      toast.show(SUBSCRIPTION_MESSAGES.UNSUBSCRIBED, true);\n    } catch (error) {\n      toast.show(SUBSCRIPTION_MESSAGES.ERROR_WHILE_UNSUBSCRIBE, true);\n    }\n  };\n  const toggleSubscription = useEventCallback(async (options) => {\n    if (isSubscribed) {\n      await unsubscribe();\n    } else {\n      await subscribe(options);\n    }\n  });\n  const throttledToggleSubscription = useCallback(throttle(toggleSubscription, 200), []);\n  return {\n    isSubscribed,\n    toggleSubscription: withApp(withLogin(throttledToggleSubscription))\n  };\n};\nconst localStorage = {\n  get: (key, initialValue) => {\n    try {\n      const value = window.localStorage.getItem(key);\n      if (!value) {\n        return initialValue;\n      }\n      return JSON.parse(value);\n    } catch (error) {\n      return initialValue;\n    }\n  },\n  set: (key, value) => {\n    window.localStorage.setItem(key, JSON.stringify(value));\n  }\n};\nconst useBulkSubscriptionRequirements = () => {\n  const dialog = useDialog();\n  const request = () => {\n    return new Promise((resolve, reject) => {\n      dialog.show({\n        title: \"다른 날 소식도 알려드릴까요?\",\n        content: \"매일매일 새로운 회차가 오픈하는 시간에\\n가장 빠르게 알려드릴게요.\",\n        primaryButtonText: \"예\",\n        secondaryButtonText: \"아니오\",\n        needInAppLayer: false,\n        onPrimaryButtonClick: () => resolve(),\n        onSecondaryButtonClick: () => reject(\n          \"REQUIREMENTS_CANCELED\"\n          /* REQUIREMENTS_CANCELED */\n        )\n      });\n    });\n  };\n  return request;\n};\nconst useSubscriptionRequirements = () => {\n  const requestRequirements = useNotificationRequirements();\n  const {\n    isTargetAppVersion,\n    requestUserAgreementBottomSheet\n  } = useRequestUserAgreementBottomSheet();\n  const request = () => {\n    return new Promise((resolve, reject) => {\n      if (isTargetAppVersion) {\n        requestUserAgreementBottomSheet({\n          type: \"CONTENT_DETAIL_PAGE\",\n          onCancel: () => reject(\n            \"REQUIREMENTS_CANCELED\"\n            /* REQUIREMENTS_CANCELED */\n          ),\n          onConfirm: () => resolve()\n        });\n      } else {\n        requestRequirements({\n          apiEndpoint: \"content-detail-page\",\n          onNotificationEnabled: () => resolve(),\n          onNotificationAgreementsError: () => reject(\n            \"REQUIREMENTS_ERROR\"\n            /* REQUIREMENTS_ERROR */\n          ),\n          onNotificationAgreementsCancel: () => reject(\n            \"REQUIREMENTS_CANCELED\"\n            /* REQUIREMENTS_CANCELED */\n          ),\n          onNotificationDisabled: () => reject(\n            \"REQUIREMENTS_CANCELED\"\n            /* REQUIREMENTS_CANCELED */\n          )\n        });\n      }\n    });\n  };\n  return request;\n};\nexport {\n  useHandleSubscription\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { SwitchButton } from \"../../../@shared/SwitchButton/SwitchButton.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 { isCanvas } from \"../../../../utils/framer/isCanvas.js\";\nimport { addPropertyControls, ControlType } from \"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 \"../../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 { useHandleSubscription } from \"./SubscriptionButton.hooks.js\";\nimport { ThemeProvider } from \"../../../@shared/providers/ThemeProvider/ThemeProvider.js\";\nimport { THEME_CONTROLS } from \"../../../../libs/property-controls/theme.js\";\nconst SubscriptionButton = ({\n  sectionKey = \"\",\n  activeColor,\n  eventKey,\n  restEventKeys = []\n}) => {\n  const theme = useTheme();\n  const {\n    isSubscribed,\n    toggleSubscription\n  } = useHandleSubscription({\n    sectionKey,\n    eventKey,\n    restEventKeys\n  });\n  const handleClick = () => {\n    toggleSubscription();\n  };\n  return /* @__PURE__ */ jsx(SwitchButton, { theme, active: isSubscribed || isCanvas(), activeColor, onClick: handleClick, children: \"알림 받기\" });\n};\nconst FramerSubscriptionButton = ({\n  theme,\n  ...rest\n}) => {\n  return /* @__PURE__ */ jsx(ThemeProvider, { theme, children: /* @__PURE__ */ jsx(SubscriptionButton, { ...rest }) });\n};\naddPropertyControls(FramerSubscriptionButton, {\n  ...THEME_CONTROLS,\n  activeColor: {\n    type: ControlType.Color,\n    title: \"활성화 상태 색상\",\n    description: \"버튼이 활성화 상태일 때의 색상 설정\",\n    optional: true\n  },\n  eventKey: {\n    type: ControlType.String,\n    title: \"알림 키\",\n    description: \"알림 기능을 활성화할 이벤트를 구분하기 위해 사전에 정의된 키를 입력합니다.\\n\\n키가 필요한 경우 전시콘텐츠팀에 문의해 주세요.\",\n    defaultValue: \"\"\n  }\n});\nexport {\n  FramerSubscriptionButton,\n  SubscriptionButton\n};\n","const splitToStringArray = (str) => {\n  return str.split(\",\").map((item) => item.trim());\n};\nexport {\n  splitToStringArray\n};\n","import useSWR from \"../../node_modules/swr/core/dist/index.js\";\nimport { categoryFirstOrderApi } from \"../../apis/user-segment/CategoryFirstOrderApiService.js\";\nconst CATEGORY_COUPON_FIRST_ORDER_SEGMENT_FETCHER_KEY = \"category-coupon-first-order-segment\";\nconst useCategoryNewBuyerCoupon = (couponId) => {\n  return useSWR(couponId ? [CATEGORY_COUPON_FIRST_ORDER_SEGMENT_FETCHER_KEY, couponId] : null, () => categoryFirstOrderApi.getCategoryCouponFirstOrderSegment(Number(couponId)));\n};\nexport {\n  useCategoryNewBuyerCoupon\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { createContext, useState, useMemo, useContext } from \"react\";\nimport { useCurrentUser } from \"../../../../hooks/code-overrides/useCurrentUser.js\";\nimport { useUserFirstOrderSegment } from \"../../../../hooks/code-overrides/useUserTargetSegment.js\";\nimport { useCategoryNewBuyerCoupon } from \"../../../../hooks/fetchers/useCategoryNewBuyerCoupon.js\";\nimport \"../../../../node_modules/swr/core/dist/index.js\";\nimport \"../../../../apis/user-segment/CategoryFirstOrderApiService.js\";\nimport { useCategoryNewBuyerProduct } from \"../../../../hooks/fetchers/useCategoryNewBuyerProduct.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 \"../../../../hooks/stores/content/content.store.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { isCanvas } from \"../../../../utils/framer/isCanvas.js\";\nimport { isFramerPreview } from \"../../../../utils/framer/isFramerPreview.js\";\nconst SegmentContext = createContext(void 0);\nconst SegmentProvider = ({\n  children,\n  segment = []\n}) => {\n  var _a, _b, _c, _d;\n  const groupId = (_b = (_a = segment.filter((seg) => seg.type === \"categoryNewBuyerProduct\")) == null ? void 0 : _a[0]) == null ? void 0 : _b.groupId;\n  const couponId = (_d = (_c = segment.filter((seg) => seg.type === \"categoryNewBuyerCoupon\")) == null ? void 0 : _c[0]) == null ? void 0 : _d.couponId;\n  const [currentSegments] = useState(segment);\n  const {\n    logged,\n    gender: userGender\n  } = useCurrentUser();\n  const {\n    data: userSegmentData,\n    isLoading: isUserSegmentLoading\n  } = useUserFirstOrderSegment(logged);\n  const {\n    data: categoryNewBuyerProductData,\n    isLoading: isCategoryNewBuyerProductLoading\n  } = useCategoryNewBuyerProduct(logged && groupId ? groupId : void 0);\n  const {\n    data: categoryNewBuyerCouponData,\n    isLoading: isCategoryNewBuyerCouponLoading\n  } = useCategoryNewBuyerCoupon(logged && couponId ? couponId : void 0);\n  const segmentValues = useMemo(() => {\n    var _a2, _b2, _c2;\n    const isLogin = logged;\n    const guest = !logged;\n    const isNewBuyer = ((_a2 = userSegmentData == null ? void 0 : userSegmentData.data) == null ? void 0 : _a2.isFirstOrder) ?? false;\n    const isCategoryNewBuyerProduct = ((_b2 = categoryNewBuyerProductData == null ? void 0 : categoryNewBuyerProductData.data) == null ? void 0 : _b2.isOrderable) ?? false;\n    const isCategoryNewBuyerCoupon = ((_c2 = categoryNewBuyerCouponData == null ? void 0 : categoryNewBuyerCouponData.data) == null ? void 0 : _c2.isOrderable) ?? false;\n    const isVisible = () => {\n      if (currentSegments.length === 0) {\n        return true;\n      }\n      if (currentSegments.some((seg) => seg.type === \"\")) {\n        return true;\n      }\n      return currentSegments.every((seg) => {\n        switch (seg.type) {\n          case \"login\":\n            return isLogin;\n          case \"guest\":\n            return guest;\n          case \"newBuyer\":\n            return !logged ? true : isNewBuyer;\n          case \"categoryNewBuyerProduct\":\n            return !logged ? true : isCategoryNewBuyerProduct;\n          case \"categoryNewBuyerCoupon\":\n            return !logged ? true : isCategoryNewBuyerCoupon;\n          case \"gender\": {\n            if (!seg.gender) {\n              return false;\n            }\n            return !logged ? true : userGender !== null && userGender === seg.gender;\n          }\n          default:\n            return false;\n        }\n      });\n    };\n    return {\n      loading: isUserSegmentLoading || isCategoryNewBuyerProductLoading || isCategoryNewBuyerCouponLoading,\n      isLogin,\n      guest,\n      isNewBuyer,\n      isCategoryNewBuyerProduct,\n      isCategoryNewBuyerCoupon,\n      isVisible: isCanvas() || isFramerPreview() || isVisible()\n    };\n  }, [logged, userGender, userSegmentData, isUserSegmentLoading, currentSegments, categoryNewBuyerProductData, categoryNewBuyerCouponData, isCategoryNewBuyerProductLoading, isCategoryNewBuyerCouponLoading]);\n  return /* @__PURE__ */ jsx(SegmentContext.Provider, { value: {\n    ...segmentValues,\n    segments: currentSegments\n  }, children });\n};\nconst useSegment = () => {\n  const context = useContext(SegmentContext);\n  if (context === void 0) {\n    throw new Error(\"useSegment must be used within a SegmentProvider\");\n  }\n  return context;\n};\nexport {\n  SegmentProvider,\n  useSegment\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { BreakpointProvider } from \"../../../@shared/providers/BreakpointProvider/BreakpointProvider.js\";\nimport \"react\";\nimport { ThemeProvider } from \"../../../@shared/providers/ThemeProvider/ThemeProvider.js\";\nimport { IntersectionProvider } from \"../IntersectionProvider/IntersectionProvider.js\";\nimport \"framer-motion\";\nimport \"../../../../node_modules/@firebase/analytics/dist/esm/index.esm2017.js\";\nimport \"../../../../node_modules/firebase/app/dist/esm/index.esm.js\";\nimport { SWRConfig } from \"../../../../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 \"../../../../hooks/stores/content/content.store.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { EventTrackingProvider } from \"../EventTrackingProvider/EventTrackingProvider.js\";\nimport \"../../../../constants/snowplow/snowplowSchema.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 { SegmentProvider } from \"../../../@shared/providers/SegmentProvider/SegmentProvider.js\";\nconst SectionLayout = ({\n  children,\n  theme = \"light\",\n  breakpoint = \"mobile\",\n  componentId,\n  intersectionOptions,\n  segment\n}) => {\n  return /* @__PURE__ */ jsx(ThemeProvider, { theme, children: /* @__PURE__ */ jsx(BreakpointProvider, { breakpoint, children: /* @__PURE__ */ jsx(IntersectionProvider, { once: true, margin: \"200px 0px\", ...intersectionOptions, children: /* @__PURE__ */ jsx(EventTrackingProvider, { componentId, children: /* @__PURE__ */ jsx(SWRConfig, { value: {\n    revalidateIfStale: false,\n    revalidateOnFocus: false,\n    revalidateOnReconnect: false,\n    errorRetryCount: 1\n  }, children: /* @__PURE__ */ jsx(SegmentProvider, { segment, children }) }) }) }) }) });\n};\nexport {\n  SectionLayout\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { useRef, useState } from \"react\";\nimport { SWRConfig } from \"../../../node_modules/swr/core/dist/index.js\";\nconst SWRErrorBoundary = ({\n  children,\n  fallback,\n  errorRetryCount = 1,\n  errorRetryInterval = 5 * 1e3\n}) => {\n  const exhaustedKeys = useRef(/* @__PURE__ */ new Set());\n  const [isError, setIsError] = useState(false);\n  const retry = () => setIsError(false);\n  return /* @__PURE__ */ jsx(SWRConfig, { value: {\n    /**\n     * NOTE(임규민): retry count 를 모두 소진했을 경우에만 fallback 이 보여져야 하기 때문에, config 의 기본 옵션 대신 override callback 을 사용합니다.\n     * @see {@link https://swr.vercel.app/ko/docs/error-handling#error-retry}\n     */\n    onErrorRetry: (_error, key, _config, revalidate, {\n      retryCount\n    }) => {\n      if (retryCount > errorRetryCount) {\n        return;\n      }\n      if (retryCount >= errorRetryCount) {\n        exhaustedKeys.current.add(key);\n      }\n      setTimeout(() => {\n        revalidate({\n          retryCount\n        });\n      }, errorRetryInterval);\n    },\n    onError: (_error, key) => {\n      if (!exhaustedKeys.current.has(key)) {\n        return;\n      }\n      exhaustedKeys.current.delete(key);\n      setIsError(true);\n    }\n  }, children: isError ? fallback == null ? void 0 : fallback(retry) : children });\n};\nexport {\n  SWRErrorBoundary\n};\n","import { jsx, jsxs } from \"react/jsx-runtime\";\nimport { Icon } from \"../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 \"../../../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 { useBreakpoint } from \"../../../hooks/useBreakpoint.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 { Button as Default } from \"../Button/Button.js\";\nimport { typography } from \"../../../styles/typography.js\";\nconst ErrorFallback = ({\n  iconType,\n  iconSize = 40,\n  title,\n  descriptions,\n  buttonText,\n  buttonPrefixIcon,\n  buttonPostfixIcon,\n  onButtonClick\n}) => {\n  const breakpoint = useBreakpoint();\n  const theme = useTheme();\n  const errorFallbackDescriptions = typeof descriptions === \"string\" ? [descriptions] : descriptions;\n  return /* @__PURE__ */ jsx(\"div\", { style: {\n    ...containerStyle,\n    ...containerStyleByBreakpoint[breakpoint]\n  }, children: /* @__PURE__ */ jsxs(\"div\", { style: {\n    ...wrapperStyle,\n    ...wrapperStyleByTheme[theme],\n    ...wrapperStyleByBreakpoint[breakpoint]\n  }, children: [\n    /* @__PURE__ */ jsx(Icon, { type: iconType, size: iconSize, weight: \"light\", color: iconColorByTheme[theme] }),\n    /* @__PURE__ */ jsxs(\"div\", { style: detailLayout, children: [\n      /* @__PURE__ */ jsx(\"span\", { style: {\n        ...titleStyle,\n        ...titleStyleByTheme[theme]\n      }, children: title }),\n      /* @__PURE__ */ jsx(\"div\", { style: {\n        ...descriptionStyle,\n        ...descriptionStyleByTheme[theme]\n      }, children: errorFallbackDescriptions.map((description, index) => (\n        // eslint-disable-next-line react/no-array-index-key\n        /* @__PURE__ */ jsx(\"span\", { children: description }, index)\n      )) })\n    ] }),\n    /* @__PURE__ */ jsx(Default, { ...toIconProps(buttonPrefixIcon, buttonPostfixIcon), variant: \"custom\", size: \"xSmall\", backgroundColor: buttonColorByTheme[theme].backgroundColor, color: buttonColorByTheme[theme].color, onClick: onButtonClick, children: buttonText })\n  ] }) });\n};\nconst toIconProps = (prefixIcon, postfixIcon) => {\n  if (!postfixIcon) {\n    return {\n      prefixIcon\n    };\n  }\n  return {\n    postfixIcon\n  };\n};\nconst containerStyle = {\n  width: \"100%\",\n  paddingBottom: 16\n};\nconst containerStyleByBreakpoint = {\n  desktop: {\n    paddingLeft: 0,\n    paddingRight: 0\n  },\n  tablet: {\n    paddingLeft: 20,\n    paddingRight: 20\n  },\n  mobile: {\n    paddingLeft: 20,\n    paddingRight: 20\n  }\n};\nconst wrapperStyle = {\n  width: \"100%\",\n  maxWidth: 1080,\n  display: \"flex\",\n  flexDirection: \"column\",\n  justifyContent: \"center\",\n  alignItems: \"center\",\n  gap: 8,\n  borderRadius: \"6px\"\n};\nconst wrapperStyleByTheme = {\n  light: {\n    backgroundColor: \"#F4F4F4\"\n  },\n  dark: {\n    backgroundColor: \"#19191A\"\n  }\n};\nconst wrapperStyleByBreakpoint = {\n  desktop: {\n    padding: \"40px 16px\"\n  },\n  tablet: {\n    padding: \"24px 16px\"\n  },\n  mobile: {\n    padding: \"24px 16px\"\n  }\n};\nconst iconColorByTheme = {\n  light: \"#000000\",\n  dark: \"#FFFFFF\"\n};\nconst buttonColorByTheme = {\n  light: {\n    backgroundColor: \"#ffffff\",\n    color: \"#000000\"\n  },\n  dark: {\n    backgroundColor: \"#474747\",\n    color: \"#FFFFFF\"\n  }\n};\nconst detailLayout = {\n  display: \"flex\",\n  flexDirection: \"column\",\n  alignItems: \"center\",\n  gap: \"4px\",\n  textAlign: \"center\",\n  paddingBottom: \"8px\"\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  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  ErrorFallback\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { ErrorFallback } from \"../../../@shared/ErrorFallback/ErrorFallback.js\";\nconst NoContent = ({\n  onClick\n}) => {\n  return /* @__PURE__ */ jsx(ErrorFallback, { iconType: \"clock\", iconSize: 40, title: \"서비스 지연 중\", descriptions: `현재 접속량이 많아 서비스가 지연되고 있습니다.\n잠시 후 ‘새로고침’ 해주세요.`, buttonText: \"새로고침\", buttonPrefixIcon: \"redo\", onButtonClick: onClick });\n};\nexport {\n  NoContent\n};\n","import { useRef, useState, useEffect, useCallback } from \"react\";\nconst useVisibilityAwareInterval = (callback, delay) => {\n  const savedCallback = useRef(callback);\n  const intervalIdRef = useRef(null);\n  const [isVisible, setIsVisible] = useState(false);\n  useEffect(() => {\n    savedCallback.current = callback;\n  }, [callback]);\n  const startInterval = useCallback(() => {\n    if (intervalIdRef.current !== null || delay === null) {\n      return;\n    }\n    intervalIdRef.current = setInterval(() => {\n      savedCallback.current();\n    }, delay);\n  }, [delay]);\n  const stopInterval = useCallback(() => {\n    if (intervalIdRef.current !== null) {\n      clearInterval(intervalIdRef.current);\n      intervalIdRef.current = null;\n    }\n  }, []);\n  useEffect(() => {\n    const handleVisibilityChange = () => {\n      setIsVisible(document.visibilityState === \"visible\");\n    };\n    document.addEventListener(\"visibilitychange\", handleVisibilityChange);\n    return () => {\n      document.removeEventListener(\"visibilitychange\", handleVisibilityChange);\n    };\n  }, []);\n  useEffect(() => {\n    if (delay === null) {\n      stopInterval();\n      return;\n    }\n    if (isVisible) {\n      startInterval();\n    } else {\n      stopInterval();\n    }\n    return () => {\n      stopInterval();\n    };\n  }, [isVisible, delay, startInterval, stopInterval]);\n  useEffect(() => {\n    setIsVisible(document.visibilityState === \"visible\");\n  }, []);\n};\nexport {\n  useVisibilityAwareInterval\n};\n","import { APIService } from \"../APIService.js\";\nimport { throwFailError } from \"../@middlewares/throwFailError.js\";\nimport { env } from \"../../config/index.js\";\nclass BestApiService extends APIService {\n  constructor() {\n    super();\n    this.setBaseUrl(env.api.search);\n    this.setMiddleware(throwFailError);\n  }\n  async getRankedProducts(payload) {\n    return this.post(`/api/v5/best`, payload).then((data) => ({\n      products: formatBestProducts(data.data.products),\n      totalCount: data.data.totalCount\n    }));\n  }\n  async getPLPFacetGroup(payload) {\n    return this.post(`/api/v5/plp/facet-group`, payload);\n  }\n}\nconst bestApi = new BestApiService();\nconst formatBestProducts = (products) => products.map((product) => {\n  var _a;\n  return {\n    ...product,\n    frontBrand: {\n      frontBrandId: product.frontBrandNo,\n      nameKor: product.frontBrandNameKor,\n      nameEng: product.frontBrandNameEng\n    },\n    productId: product.itemNo,\n    productName: product.itemName,\n    isCoupon: product.saleInfoV2.isCoupon,\n    heartOn: true,\n    frontCategories: (_a = product.frontCategoryInfo) == null ? void 0 : _a.map((category) => ({\n      largeCategoryCode: category.categoryLargeCode,\n      largeCategoryName: category.categoryLargeName,\n      mediumCategoryCode: category.categoryMediumCode,\n      mediumCategoryName: category.categoryMediumName,\n      smallCategoryCode: category.categorySmallCode,\n      smallCategoryName: category.categorySmallName\n    }))\n  };\n});\nexport {\n  bestApi\n};\n","import { ControlType } from \"framer\";\nconst COMPONENT_ID_PROPS = {\n  componentId: {\n    type: ControlType.String,\n    title: \"컴포넌트 ID\",\n    description: \"이벤트 수집 시에 모듈을 구분하기 위한 값\\nex. 29welcoming\",\n    defaultValue: \"\"\n  }\n};\nexport {\n  COMPONENT_ID_PROPS\n};\n","function last(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? array[length - 1] : void 0;\n}\nexport {\n  last as default\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport { mediaBuilder } from \"../../../../utils/mediaBuilder.js\";\nconst SRC_SET_WIDTHS = [540, 1024, 1440];\nconst KeyVisualImage = ({\n  style,\n  media,\n  lazy,\n  source\n}) => {\n  if (!source) {\n    return;\n  }\n  const imageWebp = mediaBuilder(source).setFormat(\"webp\").setQuality(90);\n  const image = mediaBuilder(source).setQuality(90);\n  return /* @__PURE__ */ jsxs(\"picture\", { children: [\n    /* @__PURE__ */ jsx(\"source\", { srcSet: imageWebp.getSrcSet(...SRC_SET_WIDTHS), src: imageWebp.getSrc(), media }),\n    /* @__PURE__ */ jsx(\"img\", { style, loading: lazy ? \"lazy\" : \"eager\", sizes: \"100vw\", srcSet: image.getSrcSet(...SRC_SET_WIDTHS), src: source, alt: source })\n  ] });\n};\nexport {\n  KeyVisualImage\n};\n","var Breakpoint = /* @__PURE__ */ ((Breakpoint2) => {\n  Breakpoint2[Breakpoint2[\"DESKTOP\"] = 0] = \"DESKTOP\";\n  Breakpoint2[Breakpoint2[\"TABLET\"] = 1] = \"TABLET\";\n  Breakpoint2[Breakpoint2[\"MOBILE\"] = 2] = \"MOBILE\";\n  return Breakpoint2;\n})(Breakpoint || {});\nvar MediaType = /* @__PURE__ */ ((MediaType2) => {\n  MediaType2[MediaType2[\"VIDEO\"] = 0] = \"VIDEO\";\n  MediaType2[MediaType2[\"IMAGE\"] = 1] = \"IMAGE\";\n  return MediaType2;\n})(MediaType || {});\nexport {\n  Breakpoint,\n  MediaType\n};\n","import { jsx, jsxs } from \"react/jsx-runtime\";\nimport { useInView } from \"framer-motion\";\nimport { useRef } from \"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 \"../../../@shared/providers/ThemeProvider/ThemeProvider.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 \"../../../../containers/DialogContainer/DialogContainer.emitter.js\";\nimport { useVideoVisibility } from \"../../../../hooks/useVideoVisibility.js\";\nimport \"../../../../utils/redirectLogin.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { querify } from \"../../../../utils/querify.js\";\nimport { Breakpoint } from \"../KeyVisual.constants.js\";\nconst KeyVisualVideoInner = ({\n  poster,\n  sourceWebm,\n  source,\n  style,\n  breakpoint,\n  media\n}) => {\n  const {\n    videoRef\n  } = useVideoVisibility();\n  const query = querify({\n    width: posterWidthByBreakpoint[breakpoint],\n    q: 90\n  });\n  return /* @__PURE__ */ jsx(\"div\", { style: {\n    position: \"relative\",\n    ...style\n  }, children: /* @__PURE__ */ jsxs(\"video\", { ref: videoRef, playsInline: true, muted: true, loop: true, preload: \"auto\", style: {\n    width: \"100%\",\n    height: \"100%\",\n    objectFit: \"cover\",\n    overflow: \"hidden\",\n    backgroundImage: `url(${poster})`,\n    backgroundPosition: \"center\",\n    backgroundSize: \"cover\"\n  }, poster: `${poster}?${query}`, children: [\n    sourceWebm && /* @__PURE__ */ jsx(\"source\", { type: \"video/webm\", src: sourceWebm, media }),\n    /* @__PURE__ */ jsx(\"source\", { type: \"video/mp4\", src: source, media })\n  ] }) });\n};\nconst KeyVisualVideo = ({\n  style,\n  lazy,\n  ...rest\n}) => {\n  const ref = useRef(null);\n  const isInView = useInView(ref, {\n    margin: \"400px 0px\",\n    once: true\n  });\n  if (lazy && !isInView) {\n    return /* @__PURE__ */ jsx(\"div\", { ref, style });\n  }\n  return /* @__PURE__ */ jsx(KeyVisualVideoInner, { style, ...rest });\n};\nconst posterWidthByBreakpoint = {\n  [Breakpoint.DESKTOP]: void 0,\n  [Breakpoint.TABLET]: 1440,\n  [Breakpoint.MOBILE]: 1024\n};\nexport {\n  KeyVisualVideo\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { addPropertyControls, ControlType } from \"framer\";\nimport { memo } from \"react\";\nimport { KeyVisualImage } from \"./KeyVisualImage/KeyVisualImage.js\";\nimport { KeyVisualVideo } from \"./KeyVisualVideo/KeyVisualVideo.js\";\nimport { MediaType, Breakpoint } from \"./KeyVisual.constants.js\";\nconst KeyVisual = memo(({\n  style,\n  breakpoint,\n  type,\n  lazy,\n  poster,\n  sourceWebm,\n  source,\n  sourceImage\n}) => {\n  if (type === MediaType.IMAGE) {\n    return /* @__PURE__ */ jsx(KeyVisualImage, { style: {\n      ...style,\n      ...mediaStyle\n    }, media: mediaByBreakpoint[breakpoint], lazy, source: sourceImage });\n  }\n  return /* @__PURE__ */ jsx(KeyVisualVideo, { style: {\n    ...style,\n    ...mediaStyle\n  }, breakpoint, lazy, media: mediaByBreakpoint[breakpoint], poster, sourceWebm, source });\n});\nconst mediaByBreakpoint = {\n  [Breakpoint.DESKTOP]: \"(min-width: 1025px)\",\n  [Breakpoint.TABLET]: \"(min-width: 541px)\",\n  [Breakpoint.MOBILE]: void 0\n};\nconst mediaStyle = {\n  width: \"100%\",\n  height: \"100%\",\n  display: \"block\",\n  objectFit: \"cover\",\n  objectPosition: \"50% 50%\",\n  background: \"transparent\",\n  border: 0,\n  outline: \"none\"\n};\nconst isVideo = ({\n  type\n}) => type === MediaType.VIDEO;\nconst isImage = ({\n  type\n}) => type === MediaType.IMAGE;\naddPropertyControls(KeyVisual, {\n  breakpoint: {\n    type: ControlType.Enum,\n    title: \"분기점\",\n    options: [Breakpoint.DESKTOP, Breakpoint.TABLET, Breakpoint.MOBILE],\n    optionTitles: [\"PC\", \"Tablet\", \"Mobile\"],\n    displaySegmentedControl: true\n  },\n  type: {\n    type: ControlType.Enum,\n    title: \"미디어 유형\",\n    options: [MediaType.VIDEO, MediaType.IMAGE],\n    optionTitles: [\"Video\", \"Image\"],\n    defaultValue: MediaType.VIDEO,\n    displaySegmentedControl: true\n  },\n  lazy: {\n    type: ControlType.Boolean,\n    title: \"지연 로드\",\n    description: \"활성화할 경우 미디어가 화면상에 노출되기 직전에 로드됩니다.\",\n    defaultValue: false\n  },\n  poster: {\n    hidden: isImage,\n    type: ControlType.String,\n    title: \"포스터\",\n    description: \"영상이 자동재생되지 않는 환경(ex. 저전력 모드)에서 임시로 노출할 이미지 링크를 입력합니다.\"\n  },\n  sourceWebm: {\n    hidden: isImage,\n    type: ControlType.String,\n    title: \"영상 링크 (.webm)\",\n    description: \".webm 포맷의 영상 링크를 입력합니다.\"\n  },\n  source: {\n    hidden: isImage,\n    type: ControlType.String,\n    title: \"영상 링크 (.mp4)\",\n    description: \".mp4 포맷의 영상 링크를 입력합니다.\"\n  },\n  sourceImage: {\n    hidden: isVideo,\n    type: ControlType.String,\n    title: \"이미지 링크\",\n    description: \"img.29cm.co.kr 주소로 된 이미지 링크를 입력합니다.\"\n  }\n});\nexport {\n  KeyVisual\n};\n","import{KeyVisual}from\"https://asset.29cm.co.kr/contents/framer/components/systems/KeyVisual/KeyVisual.js\";// import { KeyVisual } from \"https://asset.29cm.co.kr/contents/framer/dev/components/systems/KeyVisual/KeyVisual.js\"\n// import { KeyVisual } from \"http://localhost:4173/components/systems/KeyVisual/KeyVisual.js\"\nKeyVisual.displayName=\"KeyVisual\";/**\n * @framerDisableUnlink\n */export default KeyVisual;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"KeyVisual\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./KeyVisual.map","import { ControlType } from \"framer\";\nvar Gender = /* @__PURE__ */ ((Gender2) => {\n  Gender2[\"ALL\"] = \"A\";\n  Gender2[\"FEMALE\"] = \"F\";\n  Gender2[\"MALE\"] = \"M\";\n  return Gender2;\n})(Gender || {});\nconst GENDER_CONTROLS = {\n  gender: {\n    type: ControlType.Enum,\n    title: \"성별 타겟팅\",\n    options: [\n      \"A\",\n      \"F\",\n      \"M\"\n      /* MALE */\n    ],\n    optionTitles: [\"전체\", \"여성\", \"남성\"],\n    displaySegmentedControl: true\n  }\n};\nexport {\n  GENDER_CONTROLS,\n  Gender\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { useState, useLayoutEffect } 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 { isCanvas } from \"../../../utils/framer/isCanvas.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 \"../../../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 \"../../../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 \"../providers/ThemeProvider/ThemeProvider.js\";\nimport \"../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 { Gender as Gender$1 } from \"../../../libs/property-controls/gender.js\";\nconst Gender = ({\n  children,\n  gender\n}) => {\n  const user = useCurrentUser();\n  const [userGender, setUserGender] = useState(null);\n  useLayoutEffect(() => {\n    addStyle();\n  }, []);\n  useLayoutEffect(() => {\n    setUserGender(user.gender);\n  }, [user]);\n  if (isCanvas() || gender === Gender$1.ALL) {\n    return children;\n  }\n  return /* @__PURE__ */ jsx(\"div\", { \"data-gender\": userGender ?? \"F\", \"data-target\": gender, children });\n};\nconst STYLE_ID = \"gender-targeting-styles\";\nconst addStyle = () => {\n  let styleTag = document.getElementById(STYLE_ID);\n  if (!styleTag) {\n    styleTag = document.createElement(\"style\");\n    styleTag.id = STYLE_ID;\n    styleTag.type = \"text/css\";\n    styleTag.innerHTML = `\n      [data-gender='F'][data-target='M'] {\n        display: none;\n      }\n      [data-gender='M'][data-target='F'] {\n        display: none;\n      }\n    `;\n    document.head.appendChild(styleTag);\n  }\n};\nexport {\n  Gender\n};\n","import { APIService } from \"../APIService.js\";\nimport { throwFailError } from \"../@middlewares/throwFailError.js\";\nimport { env } from \"../../config/index.js\";\nclass KeywordCollectionApiService extends APIService {\n  constructor() {\n    super();\n    this.setMiddleware(throwFailError);\n  }\n  async getKeywordCollection(collectionId) {\n    return this.get(`${env.api.content}/api/v4/framers/proxy/content-api/api/v5/keyword-collections/${collectionId}`);\n  }\n  async getCollectionProducts({\n    collectionId,\n    productGroupId,\n    sort,\n    page,\n    size\n  }) {\n    return this.get(`${env.api.content}/api/v4/framers/proxy/content-api/api/v5/keyword-collections/${collectionId}/product-groups/${productGroupId}/products`, {\n      sort,\n      page,\n      size\n    }).then((data) => ({\n      ...data.data,\n      resultList: data.data.resultList.map((product) => {\n        var _a;\n        return {\n          frontBrand: {\n            frontBrandId: product.frontBrand.id,\n            nameKor: product.frontBrand.nameKor,\n            nameEng: product.frontBrand.nameEng\n          },\n          productId: product.productId,\n          productName: product.productName,\n          subjectDescriptions: product.subjectDescriptions,\n          imageUrl: product.imageUrl,\n          consumerPrice: product.consumerPrice,\n          lastSalePrice: product.lastSalePrice,\n          lastSalePercent: product.lastSalePercent,\n          heartCount: product.heartCount,\n          heartOn: product.heartOn,\n          reviewCount: product.reviewCount,\n          reviewAveragePoint: product.reviewAveragePoint,\n          isCoupon: product.saleInfo.coupon,\n          isFreeShipping: product.freeShipping,\n          isNew: product.newProperty,\n          isSoldOut: product.soldOut,\n          frontCategories: (_a = product.frontCategories) == null ? void 0 : _a.map((category) => ({\n            largeCategoryCode: category.largeCode ?? 0,\n            largeCategoryName: category.largeName ?? \"\",\n            mediumCategoryCode: category.mediumCode ?? 0,\n            mediumCategoryName: category.mediumName ?? \"\",\n            smallCategoryCode: category.smallCode ?? 0,\n            smallCategoryName: category.smallName ?? \"\"\n          }))\n        };\n      })\n    }));\n  }\n}\nconst keywordCollectionApi = new KeywordCollectionApiService();\nexport {\n  keywordCollectionApi\n};\n","import { useState, useCallback } from \"react\";\nimport useSWR from \"../../node_modules/swr/core/dist/index.js\";\nconst useLazySWR = (key, fetcher, config) => {\n  const [enabled, setEnabled] = useState(false);\n  const response = useSWR(enabled ? key : null, fetcher, config);\n  const isLoading = !enabled || response.isLoading;\n  const fetch = useCallback(() => setEnabled(true), []);\n  return {\n    ...response,\n    isLoading,\n    fetch\n  };\n};\nexport {\n  useLazySWR\n};\n","import { keywordCollectionApi } from \"../../apis/keyword-collections/KeywordCollectionApiService.js\";\nimport { useLazySWR } from \"../swr/useLazySWR.js\";\nconst KEYWORD_COLLECTION_FETCHER_KEY = \"keyword-collection-v2\";\nconst useLazyFetchKeywordCollection = (collectionId) => {\n  const enabled = Boolean(collectionId);\n  const {\n    data,\n    isLoading,\n    error,\n    fetch\n  } = useLazySWR(enabled ? [KEYWORD_COLLECTION_FETCHER_KEY, collectionId] : null, () => keywordCollectionApi.getKeywordCollection(collectionId));\n  const hasError = error !== void 0;\n  const isPending = isLoading || hasError || !enabled;\n  return {\n    collection: data == null ? void 0 : data.data,\n    isPending,\n    fetch\n  };\n};\nexport {\n  useLazyFetchKeywordCollection\n};\n","import { createKRTimeZoneDate } from \"../../../../utils/createUTCDate.js\";\nimport { isAbove } from \"../../../../utils/date.js\";\nimport { isBefore } from \"../../../../node_modules/date-fns/isBefore.js\";\nimport { isWithinInterval } from \"../../../../node_modules/date-fns/isWithinInterval.js\";\nimport { formatDate as format } from \"../../../../node_modules/date-fns/format.js\";\nimport { ko } from \"../../../../node_modules/date-fns/locale/ko.js\";\nconst SEPARATOR = \"@\";\nconst reservedWords = [\"DATE\", \"GENDER\"];\nconst getProductGroupType = (productGroupList) => {\n  const includedReservedWordProductGroup = productGroupList.find((group) => group.title.includes(SEPARATOR));\n  if (includedReservedWordProductGroup === void 0) {\n    return \"KEYWORD\";\n  }\n  const firstReservedWord = includedReservedWordProductGroup.title.split(SEPARATOR)[0];\n  if (!reservedWords.includes(firstReservedWord)) {\n    return \"KEYWORD\";\n  }\n  return firstReservedWord;\n};\nconst reshapeProductGroupList = (productGroupList, productGroupType, gender) => {\n  if (productGroupType === \"DATE\") {\n    return reshapeDateProductGroupList(productGroupList);\n  }\n  if (productGroupType === \"GENDER\") {\n    return reshapeGenderProductGroupList(productGroupList, gender);\n  }\n  return productGroupList;\n};\nconst findInitialProductGroupId = (collectionProductGroup, reshapedProductGroupList, productGroupType) => {\n  if (collectionProductGroup.length === 0) {\n    return void 0;\n  }\n  if (productGroupType === \"DATE\") {\n    const currentProductGroupList = findCurrentProductGroupListByDate(collectionProductGroup);\n    return currentProductGroupList.productGroupId;\n  }\n  return reshapedProductGroupList[0].productGroupId;\n};\nconst reshapeDateProductGroupList = (productGroupList) => productGroupList.map((group) => ({\n  ...group,\n  title: formatTitle(group.title, \"DATE\")\n}));\nconst reshapeGenderProductGroupList = (productGroupList, gender) => {\n  const genderProductGroup = productGroupList.reduce((acc, cur) => {\n    const isCommonGroup = !cur.title.includes(SEPARATOR);\n    if (isCommonGroup) {\n      return {\n        ...acc,\n        common: [...acc.common, cur]\n      };\n    }\n    const isNotAllowedReservedWord = cur.title.split(SEPARATOR)[0] !== \"GENDER\";\n    if (isNotAllowedReservedWord) {\n      return {\n        ...acc,\n        notAllowed: [...acc.notAllowed, cur]\n      };\n    }\n    const groupGender = cur.title.split(SEPARATOR)[1].split(\":\")[0];\n    const formattedTitleGroup = {\n      ...cur,\n      title: formatTitle(cur.title, \"GENDER\")\n    };\n    switch (groupGender) {\n      case \"F\":\n        return {\n          ...acc,\n          female: [...acc.female, formattedTitleGroup]\n        };\n      case \"M\":\n        return {\n          ...acc,\n          male: [...acc.male, formattedTitleGroup]\n        };\n      default:\n        return {\n          ...acc,\n          notAllowed: [...acc.notAllowed, cur]\n        };\n    }\n  }, {\n    male: [],\n    female: [],\n    common: [],\n    notAllowed: []\n  });\n  if (!gender || gender === \"F\") {\n    return [...genderProductGroup.female, ...genderProductGroup.common, ...genderProductGroup.male, ...genderProductGroup.notAllowed];\n  }\n  return [...genderProductGroup.male, ...genderProductGroup.common, ...genderProductGroup.female, ...genderProductGroup.notAllowed];\n};\nconst findCurrentProductGroupIndex = (productGroupList) => {\n  const now = createKRTimeZoneDate();\n  return productGroupList.findIndex((group, index) => {\n    const standardDate = new Date(group.title.split(\"@\")[1]);\n    const nextGroupList = productGroupList[index + 1];\n    const nextDate = nextGroupList ? new Date(nextGroupList.title.split(\"@\")[1]) : null;\n    const isFirstProductGroupList = index === 0;\n    const isLastProductGroupList = nextDate === null;\n    const isBeforeStart = isFirstProductGroupList && isBefore(now, standardDate);\n    const isLast = isLastProductGroupList && isAbove(now, standardDate);\n    const isWithin = !isLastProductGroupList && isWithinInterval(now, {\n      start: standardDate,\n      end: nextDate\n    });\n    return isBeforeStart || isLast || isWithin;\n  });\n};\nconst findCurrentProductGroupListByDate = (productGroupList) => {\n  const currentIndex = findCurrentProductGroupIndex(productGroupList);\n  return productGroupList[currentIndex ?? 0];\n};\nconst formatTitle = (title, reservedWord) => {\n  if (!reservedWord) {\n    return title;\n  }\n  const [, needToFormatTitle] = title.split(SEPARATOR);\n  switch (reservedWord) {\n    case \"DATE\":\n      return format(new Date(needToFormatTitle), \"M. d EEEEE\", {\n        locale: ko\n      });\n    case \"GENDER\":\n      return needToFormatTitle.split(\":\")[1];\n    default:\n      return title;\n  }\n};\nexport {\n  findCurrentProductGroupIndex,\n  findInitialProductGroupId,\n  getProductGroupType,\n  reshapeProductGroupList\n};\n","import { useMemo } 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 \"../../../../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 \"../../../../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/jsx-runtime\";\nimport \"react-dom\";\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 { getProductGroupType, reshapeProductGroupList, findInitialProductGroupId, findCurrentProductGroupIndex } from \"./KeywordCollectionTags.utils.js\";\nconst useCollectionProductGroupList = (productGroupList) => {\n  const {\n    gender\n  } = useCurrentUser();\n  const productGroupType = useMemo(() => getProductGroupType(productGroupList), [productGroupList]);\n  const reshapedProductGroupList = useMemo(() => reshapeProductGroupList(productGroupList, productGroupType, gender), [productGroupList, productGroupType, gender]);\n  const initialProductGroupId = useMemo(() => findInitialProductGroupId(productGroupList, reshapedProductGroupList, productGroupType), [productGroupList, reshapedProductGroupList, productGroupType]);\n  const currentIndex = useMemo(() => productGroupType === \"DATE\" ? findCurrentProductGroupIndex(productGroupList) : void 0, [productGroupType, productGroupList]);\n  return {\n    productGroupType,\n    collectionProductGroupList: reshapedProductGroupList,\n    initialCollectionProductGroupId: initialProductGroupId,\n    eventTagType: productGroupType === \"DATE\" ? \"time\" : \"keyword\",\n    currentIndex\n  };\n};\nexport {\n  useCollectionProductGroupList\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport { Tags } from \"../../Tags/index.js\";\nimport { useCollectionProductGroupList } from \"../../../KeywordCollection/KeywordCollectionTags/KeywordCollectionTags.hooks.js\";\nimport { useTrackSnowplowEvent } from \"../../../../../hooks/snowplow/useTrackSnowplowEvent.js\";\nimport { useComponentId } from \"../../EventTrackingProvider/EventTrackingProvider.hooks.js\";\nimport \"../../EventTrackingProvider/EventTrackingProvider.js\";\nconst KeywordCollectionTags = ({\n  pending,\n  productGroups,\n  children\n}) => {\n  const componentId = useComponentId();\n  const trackSnowplowEvent = useTrackSnowplowEvent();\n  const {\n    collectionProductGroupList: list,\n    currentIndex\n  } = useCollectionProductGroupList(productGroups);\n  const handleClickTag = (title, index) => {\n    if (!title) {\n      return;\n    }\n    trackSnowplowEvent(\"click_button\", {\n      section_name: componentId,\n      section_title: componentId,\n      position: -1,\n      button_id: \"tag\",\n      button_name: title,\n      layout_position: index + 1\n    });\n  };\n  return /* @__PURE__ */ jsxs(Tags.Root, { defaultValue: 0, value: currentIndex, loading: pending, children: [\n    /* @__PURE__ */ jsx(Tags.List, { list, children: ({\n      item: {\n        title\n      } = {},\n      index\n    }) => /* @__PURE__ */ jsx(Tags.Item, { value: index, onClick: () => handleClickTag(title, index), children: title }) }),\n    /* @__PURE__ */ jsx(Tags.Panels, { list, children: (props) => /* @__PURE__ */ jsx(Tags.Panel, { value: props.index, children: children(props) }) })\n  ] });\n};\nexport {\n  KeywordCollectionTags\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { Button as Default } from \"../../../../@shared/Button/Button.js\";\nimport { env } from \"../../../../../config/index.js\";\nimport { useNavigatePage } from \"../../../../../hooks/useNavigatePage.js\";\nimport { TextButton as Default$1 } 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 \"../../../../../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 \"../../../Dialog/Dialog.module.css.js\";\nimport \"framer-motion\";\nimport \"../../../../../containers/DialogContainer/DialogContainer.emitter.js\";\nimport \"../../../../../utils/redirectLogin.js\";\nimport { createContentEventProperties } from \"../../../../../utils/event-properties/content.js\";\nimport \"../../../../../utils/event-properties/source.js\";\nimport { createSearchParams } from \"../../../../../utils/createSearchParams.js\";\nimport { useTrackSnowplowEvent } from \"../../../../../hooks/snowplow/useTrackSnowplowEvent.js\";\nimport { useEventTrackingContext } from \"../../EventTrackingProvider/EventTrackingProvider.hooks.js\";\nimport { EventTrigger } from \"../../../../@shared/EventTrigger/index.js\";\nimport { PREVIOUS_SECTION_NAME_QUERY_STRING_KEY, PREVIOUS_SECTION_TITLE_QUERY_STRING_KEY, PREVIOUS_PAGE_NAME_QUERY_STRING_KEY, PREVIOUS_CONTENT_NO_QUERY_STRING_KEY } from \"../../../../../constants/query-params.js\";\nconst KeywordCollectionButton = ({\n  type = \"button\",\n  collectionId,\n  productGroupId,\n  sectionTitle,\n  children\n}) => {\n  const theme = useTheme();\n  const {\n    componentId\n  } = useEventTrackingContext();\n  const {\n    curr_screen,\n    content_no\n  } = createContentEventProperties();\n  const params = createSearchParams({\n    product_group: `${productGroupId ?? \"\"}`,\n    [PREVIOUS_SECTION_NAME_QUERY_STRING_KEY]: componentId,\n    [PREVIOUS_SECTION_TITLE_QUERY_STRING_KEY]: sectionTitle,\n    [PREVIOUS_PAGE_NAME_QUERY_STRING_KEY]: curr_screen,\n    [PREVIOUS_CONTENT_NO_QUERY_STRING_KEY]: content_no\n  });\n  const collectionUrl = `${env.workspace.content}/collection/${collectionId}?${params}`;\n  const navigateCollectionPage = useNavigatePage(collectionUrl, {\n    webview: {\n      home: true\n    }\n  });\n  const trackSnowplowEvent = useTrackSnowplowEvent();\n  const handleClick = () => {\n    trackSnowplowEvent(\"click_button\", {\n      // TODO(한지원): section_name, position, layout_position 프로퍼티에 할당한 약속된 임의 값 수정\n      section_name: componentId,\n      section_title: componentId,\n      position: -1,\n      layout_position: -1,\n      button_id: \"more\",\n      button_name: \"전체보기\"\n    });\n    navigateCollectionPage();\n  };\n  if (type === \"button\") {\n    return /* @__PURE__ */ jsx(EventTrigger.Target, { onClick: handleClick, children: /* @__PURE__ */ jsx(Default, { variant: \"custom\", size: \"xSmall\", backgroundColor: buttonColorByTheme[theme].backgroundColor, color: buttonColorByTheme[theme].color, postfixIcon: \"chevronRight\", children }) });\n  }\n  return /* @__PURE__ */ jsx(EventTrigger.Target, { onClick: handleClick, children: /* @__PURE__ */ jsx(Default$1, { style: {\n    opacity: 0.6\n  }, variant: \"primary\", size: \"xSmall\", theme, postfixIcon: \"chevronRight\", children }) });\n};\nconst buttonColorByTheme = {\n  light: {\n    backgroundColor: \"#000000\",\n    color: \"#ffffff\"\n  },\n  dark: {\n    backgroundColor: \"#303033\",\n    color: \"#ffffff\"\n  }\n};\nexport {\n  KeywordCollectionButton\n};\n","import last from \"../../node_modules/lodash-es/last.js\";\nimport { useMemo } from \"react\";\nimport useSWRInfinite from \"../../node_modules/swr/infinite/dist/index.js\";\nimport { keywordCollectionApi } from \"../../apis/keyword-collections/KeywordCollectionApiService.js\";\nconst DEFAULT_SIZE = 20;\nconst DEFAULT_MAX_COUNT = 60;\nconst getKey = ({\n  collectionId,\n  productGroupId,\n  sort,\n  size = DEFAULT_SIZE,\n  enabled\n}) => (pageIndex, previousPageData) => {\n  if (enabled === false) {\n    return null;\n  }\n  const isValid = !Number.isNaN(collectionId) && productGroupId !== void 0 && sort !== void 0;\n  if (!isValid || (previousPageData == null ? void 0 : previousPageData.hasNext) === false) {\n    return null;\n  }\n  return {\n    collectionId,\n    productGroupId,\n    sort,\n    page: pageIndex,\n    size\n  };\n};\nconst fetcher = (params) => {\n  return keywordCollectionApi.getCollectionProducts(params);\n};\nconst useFetchKeywordCollectionProducts = (params) => {\n  const {\n    data,\n    isLoading,\n    error,\n    size,\n    isValidating,\n    setSize,\n    mutate\n  } = useSWRInfinite(getKey(params), fetcher, {\n    keepPreviousData: true,\n    revalidateFirstPage: false\n  });\n  const hasError = error !== void 0;\n  const isPending = isLoading || isValidating || hasError || !params.enabled;\n  const products = useMemo(() => {\n    return (data == null ? void 0 : data.flatMap(({\n      resultList\n    }) => resultList)) ?? [];\n  }, [data]);\n  const hasNext = useMemo(() => {\n    const prevData = last(data);\n    return products.length < (params.maxCount ?? DEFAULT_MAX_COUNT) && (prevData == null ? void 0 : prevData.hasNext);\n  }, [data, params.maxCount, products.length]);\n  return {\n    products,\n    isPending,\n    size,\n    setSize,\n    hasNext,\n    mutate\n  };\n};\nexport {\n  useFetchKeywordCollectionProducts\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { useFetchKeywordCollectionProducts } from \"../../../../../hooks/fetchers/useFetchKeywordCollectionProducts.js\";\nimport { Products } from \"../../Products/index.js\";\nimport { CARD_HORIZONTAL_AUTO } from \"../../Products/Root.constants.js\";\nconst KeywordCollectionProducts = ({\n  componentName,\n  collectionId,\n  productGroupId,\n  sort,\n  pending\n}) => {\n  const {\n    products,\n    isPending,\n    hasNext,\n    setSize\n  } = useFetchKeywordCollectionProducts({\n    enabled: pending !== true,\n    collectionId: Number(collectionId),\n    productGroupId,\n    sort\n  });\n  const onLastItemView = () => {\n    setSize((prev) => prev + 1);\n  };\n  const loading = pending || isPending;\n  return /* @__PURE__ */ jsx(Products.Root, { products, loading, options: CARD_HORIZONTAL_AUTO, hasNext, onLastItemView, children: ({\n    index\n  }) => {\n    return /* @__PURE__ */ jsx(Products.Card, { index, componentName });\n  } });\n};\nexport {\n  KeywordCollectionProducts\n};\n","import { jsx, jsxs, Fragment } from \"react/jsx-runtime\";\nimport { addPropertyControls, ControlType } from \"framer\";\nimport { useEffect } from \"react\";\nimport { Gender } from \"../../../@shared/Gender/Gender.js\";\nimport { Headline } from \"../../Headline/Headline.js\";\nimport { useLazyFetchKeywordCollection } from \"../../../../hooks/fetchers/useLazyFetchKeywordCollection.js\";\nimport { KeywordCollectionTags } from \"./KeywordCollectionTags/KeywordCollectionTags.js\";\nimport { KeywordCollectionButton } from \"./KeywordCollectionButton/KeywordCollectionButton.js\";\nimport { KeywordCollectionProducts } from \"./KeywordCollectionProducts/KeywordCollectionProducts.js\";\nimport { SECTION_CONTROLS } from \"../../../../libs/property-controls/section.js\";\nimport { GENDER_CONTROLS } from \"../../../../libs/property-controls/gender.js\";\nimport { SectionLayout } from \"../SectionLayout/SectionLayout.js\";\nimport \"../IntersectionProvider/IntersectionProvider.js\";\nimport { useIntersectionContext } from \"../IntersectionProvider/IntersectionProvider.hooks.js\";\nimport { useComponentId } from \"../EventTrackingProvider/EventTrackingProvider.hooks.js\";\nimport \"../EventTrackingProvider/EventTrackingProvider.js\";\nimport { SWRErrorBoundary } from \"../../../@shared/SWRErrorBoundary/SWRErrorBoundary.js\";\nimport { NoContent } from \"../NoContent/NoContent.js\";\nconst KeywordCollectionV2Inner = ({\n  headline,\n  collectionId\n}) => {\n  const {\n    isInView\n  } = useIntersectionContext();\n  const componentId = useComponentId();\n  const {\n    collection,\n    fetch,\n    isPending\n  } = useLazyFetchKeywordCollection(Number(collectionId.trim()));\n  useEffect(() => {\n    if (isInView) {\n      fetch();\n    }\n  }, [fetch, isInView]);\n  const {\n    productGroups = []\n  } = collection ?? {};\n  const hasContent = Boolean(headline.title) || Boolean(headline.description);\n  const headlineProps = {\n    ...headline,\n    title: headline.title || (collection == null ? void 0 : collection.title) || \"\",\n    description: headline.description || (collection == null ? void 0 : collection.description) || \"\"\n  };\n  return /* @__PURE__ */ jsxs(Fragment, { children: [\n    /* @__PURE__ */ jsx(Headline, { ...headlineProps, priority: \"primary\", action: /* @__PURE__ */ jsx(KeywordCollectionButton, { collectionId, sectionTitle: headlineProps.title, children: \"전체보기\" }), loading: !hasContent && isPending }),\n    /* @__PURE__ */ jsx(KeywordCollectionTags, { productGroups, pending: isPending, children: ({\n      item,\n      pending\n    }) => /* @__PURE__ */ jsx(KeywordCollectionProducts, { collectionId, productGroupId: item == null ? void 0 : item.productGroupId, sort: item == null ? void 0 : item.sort, pending, componentName: componentId }) })\n  ] });\n};\nconst KeywordCollectionV2 = ({\n  breakpoint,\n  theme,\n  componentId,\n  gender,\n  headline,\n  ...rest\n}) => {\n  const hasContent = Boolean(headline.title) || Boolean(headline.description);\n  return /* @__PURE__ */ jsx(Gender, { gender, children: /* @__PURE__ */ jsx(SectionLayout, { theme, breakpoint, componentId, children: /* @__PURE__ */ jsx(SWRErrorBoundary, { fallback: (retry) => /* @__PURE__ */ jsxs(Fragment, { children: [\n    hasContent && /* @__PURE__ */ jsx(Headline, { ...headline, priority: \"primary\", action: /* @__PURE__ */ jsx(KeywordCollectionButton, { collectionId: rest.collectionId, sectionTitle: headline.title, children: \"전체보기\" }) }),\n    /* @__PURE__ */ jsx(NoContent, { onClick: retry })\n  ] }), children: /* @__PURE__ */ jsx(KeywordCollectionV2Inner, { ...rest, headline }) }) }) });\n};\naddPropertyControls(KeywordCollectionV2, {\n  ...SECTION_CONTROLS,\n  ...GENDER_CONTROLS,\n  collectionId: {\n    type: ControlType.String,\n    title: \"컬렉션 아이디\",\n    placeholder: \"1152\"\n  },\n  componentId: {\n    type: ControlType.String,\n    title: \"컴포넌트 ID\",\n    description: \"이벤트 수집 시에 상품 모듈을 구분하기 위한 값\\nex. 29welcoming\",\n    defaultValue: \"\"\n  }\n});\nexport {\n  KeywordCollectionV2\n};\n","/** local */// import { KeywordCollectionV2 } from \"https://localhost:4173/components/systems/curations/KeywordCollectionV2/KeywordCollectionV2.js\"\n/** dev */// import { KeywordCollectionV2 } from \"https://asset.29cm.co.kr/contents/framer/dev/components/systems/curations/KeywordCollectionV2/KeywordCollectionV2.js\"\n/** production */import{KeywordCollectionV2}from\"https://asset.29cm.co.kr/contents/framer/components/systems/curations/KeywordCollectionV2/KeywordCollectionV2.js\";KeywordCollectionV2.displayName=\"[완성형]TaggedProducts\";/**\n * @framerDisableUnlink\n */export default KeywordCollectionV2;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"KeywordCollectionV2\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TaggedProducts.map","import { create } from \"../../../node_modules/zustand/esm/index.js\";\nconst initialState = {\n  queries: {}\n};\nconst useQueryStore = create((set) => ({\n  ...initialState,\n  dispatchSetQuery: (key, query) => set((prev) => ({\n    queries: {\n      ...prev.queries,\n      [key]: query\n    }\n  }))\n}));\nexport {\n  useQueryStore\n};\n","import { create } from \"../../../node_modules/zustand/esm/index.js\";\nimport { subscribeWithSelector } from \"../../../node_modules/zustand/esm/middleware.js\";\nconst initialState = {\n  rootModules: {}\n};\nconst useModuleStore = create(subscribeWithSelector((set) => ({\n  ...initialState,\n  dispatchSetRootModule: (key, module) => set((prev) => ({\n    rootModules: {\n      ...prev.rootModules,\n      [key]: module\n    }\n  }))\n})));\nexport {\n  useModuleStore\n};\n","import { useEffect } from \"react\";\nimport { useComponentId } from \"../systems/curations/EventTrackingProvider/EventTrackingProvider.hooks.js\";\nimport \"../systems/curations/EventTrackingProvider/EventTrackingProvider.js\";\nimport { useTrackSnowplowEvent } from \"../../hooks/snowplow/useTrackSnowplowEvent.js\";\nimport { useModuleStore } from \"./module-store/module.store.js\";\nimport { shallow as shallow$1 } from \"../../node_modules/zustand/esm/shallow.js\";\nimport { useSegment } from \"../@shared/providers/SegmentProvider/SegmentProvider.js\";\nconst useRootComponentId = (query) => {\n  const componentId = useComponentId();\n  const root = useModuleStore((state) => state.rootModules[(query == null ? void 0 : query.rootOutput) ?? \"\"], shallow$1);\n  return (root == null ? void 0 : root.componentId) || componentId;\n};\nconst useSetRootModule = (query, output) => {\n  const componentId = useComponentId();\n  const segment = useSegment();\n  const dispatchSetRootModule = useModuleStore((state) => state.dispatchSetRootModule);\n  const {\n    isRoot = false\n  } = query ?? {};\n  useEffect(() => {\n    if (!isRoot) {\n      return;\n    }\n    if (!output) {\n      return;\n    }\n    dispatchSetRootModule(output, {\n      componentId,\n      segment: segment.segments\n    });\n  }, [isRoot, output, componentId, segment]);\n};\nconst useTrackClickButtonEvent = (query) => {\n  const trackSnowplowEvent = useTrackSnowplowEvent();\n  const componentId = useRootComponentId(query);\n  const trackClickButtonEvent = ({\n    type,\n    layoutPosition = -1,\n    name = \"\"\n  }) => {\n    trackSnowplowEvent(\"click_button\", {\n      // TODO(임규민): section_name, position 프로퍼티에 할당한 약속된 임의 값 수정\n      section_name: componentId,\n      section_title: componentId,\n      position: -1,\n      layout_position: layoutPosition,\n      button_id: type,\n      button_name: name\n    });\n  };\n  return trackClickButtonEvent;\n};\nconst useTrackImpressionContentEvent = () => {\n  const trackSnowplowEvent = useTrackSnowplowEvent();\n  const componentId = useComponentId();\n  const trackImpressionContentEvent = () => {\n    trackSnowplowEvent(\"impression_content\", {\n      // TODO(임규민): section_name, position, layout_position 프로퍼티에 할당한 약속된 임의 값 수정\n      section_name: componentId,\n      section_title: componentId,\n      position: -1,\n      layout_position: -1\n    });\n  };\n  return trackImpressionContentEvent;\n};\nexport {\n  useRootComponentId,\n  useSetRootModule,\n  useTrackClickButtonEvent,\n  useTrackImpressionContentEvent\n};\n","const getPaddingStyle = (value) => {\n  return value.isMixed ? `${value.paddingTop}px ${value.paddingRight}px ${value.paddingBottom}px ${value.paddingLeft}px` : `${value.padding}px`;\n};\nconst getPadding = (value) => {\n  return {\n    top: value.isMixed ? value.paddingTop : value.padding,\n    right: value.isMixed ? value.paddingRight : value.padding,\n    bottom: value.isMixed ? value.paddingBottom : value.padding,\n    left: value.isMixed ? value.paddingLeft : value.padding\n  };\n};\nexport {\n  getPadding,\n  getPaddingStyle\n};\n","import { APIService } from \"../APIService.js\";\nimport { throwFailError } from \"../@middlewares/throwFailError.js\";\nimport { environments, env } from \"../../config/index.js\";\nconst DEFAULT_COLLECTION_PRODUCTS_SIZE = 20;\nclass CollectionApiService extends APIService {\n  constructor() {\n    super();\n    this.setMiddleware(throwFailError);\n  }\n  async getCollection(collectionId, needShuffle, isDevMode) {\n    const baseUrl = isDevMode ? environments.development.api.content : env.api.content;\n    return this.get(`${baseUrl}/api/v4/framers/collections/${collectionId}/product-group-preview?productShuffleEnabled=${String(needShuffle)}`);\n  }\n  async getCollections(collectionIds) {\n    return this.get(`${env.api.content}/api/v4/framers/proxy/content-api/api/v4/collections`, {\n      collectionIds: collectionIds.join(\",\")\n    });\n  }\n  async getCollectionProducts({\n    collectionId,\n    productGroupId,\n    sort,\n    isDevMode\n  }) {\n    const baseUrl = isDevMode ? environments.development.api.content : env.api.content;\n    return this.get(`${baseUrl}/api/v4/framers/proxy/content-api/api/v5/keyword-collections/${collectionId}/product-groups/${productGroupId}/products`, {\n      sort,\n      page: 0,\n      size: DEFAULT_COLLECTION_PRODUCTS_SIZE\n    }).then((data) => formatProducts(data.data.resultList));\n  }\n}\nconst formatProducts = (products) => products.map((product) => {\n  var _a;\n  return {\n    frontBrand: {\n      frontBrandId: product.frontBrand.id,\n      nameKor: product.frontBrand.nameKor,\n      nameEng: product.frontBrand.nameEng\n    },\n    productId: product.productId,\n    productName: product.productName,\n    subjectDescriptions: product.subjectDescriptions,\n    imageUrl: product.imageUrl,\n    consumerPrice: product.consumerPrice,\n    lastSalePrice: product.lastSalePrice,\n    lastSalePercent: product.lastSalePercent,\n    heartCount: product.heartCount,\n    heartOn: product.heartOn,\n    reviewCount: product.reviewCount,\n    reviewAveragePoint: product.reviewAveragePoint,\n    isCoupon: product.saleInfo.coupon,\n    isFreeShipping: product.freeShipping,\n    isNew: product.newProperty,\n    isSoldOut: product.soldOut,\n    frontCategories: (_a = product.frontCategories) == null ? void 0 : _a.map((category) => ({\n      largeCategoryCode: category.largeCode ?? 0,\n      largeCategoryName: category.largeName ?? \"\",\n      mediumCategoryCode: category.mediumCode ?? 0,\n      mediumCategoryName: category.mediumName ?? \"\",\n      smallCategoryCode: category.smallCode ?? 0,\n      smallCategoryName: category.smallName ?? \"\"\n    }))\n  };\n});\nconst collectionApi = new CollectionApiService();\nexport {\n  collectionApi\n};\n","import { createKRTimeZoneDate } from \"../../../../../utils/createUTCDate.js\";\nimport { compareAsc } from \"../../../../../node_modules/date-fns/compareAsc.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\";\nimport { isWithinInterval } from \"../../../../../node_modules/date-fns/isWithinInterval.js\";\nimport { isBefore } from \"../../../../../node_modules/date-fns/isBefore.js\";\nconst orderByDateAsc = (list) => list.sort((groupA, groupB) => compareAsc(groupA.startAt, groupB.startAt));\nconst formatSchedule = (str) => {\n  const schedule = parseISO(str);\n  return format(schedule, \"M. d EEEEE\", {\n    locale: ko\n  });\n};\nconst getCurrentScheduleIndex = (list) => {\n  const now = createKRTimeZoneDate();\n  const currentIndex = list.findIndex((group, index) => {\n    const nextGroup = list[index + 1];\n    const start = parseISO(group.startAt);\n    const end = parseISO(group.endAt);\n    const isWithin = end ? isWithinInterval(now, {\n      start,\n      end\n    }) : false;\n    const isUpcoming = isBefore(now, start);\n    const isLast = nextGroup === void 0;\n    return isWithin || isUpcoming || isLast;\n  });\n  return currentIndex === -1 ? void 0 : currentIndex;\n};\nexport {\n  formatSchedule,\n  getCurrentScheduleIndex,\n  orderByDateAsc\n};\n","var QueryType = /* @__PURE__ */ ((QueryType2) => {\n  QueryType2[\"Product\"] = \"product\";\n  QueryType2[\"KeywordCollection\"] = \"keyword-collection\";\n  QueryType2[\"KeywordCollections\"] = \"keyword-collections\";\n  QueryType2[\"BrandCuration\"] = \"brand-curation\";\n  QueryType2[\"Recommendation\"] = \"recommendation\";\n  QueryType2[\"Ranking\"] = \"ranking\";\n  QueryType2[\"CouponCollection\"] = \"coupon-collection\";\n  QueryType2[\"RaffleGroup\"] = \"raffle-group\";\n  QueryType2[\"Coupon\"] = \"coupon\";\n  QueryType2[\"Preuser\"] = \"preuser\";\n  QueryType2[\"CustomCategory\"] = \"custom-category\";\n  QueryType2[\"Moloco\"] = \"moloco\";\n  return QueryType2;\n})(QueryType || {});\nvar RankingType = /* @__PURE__ */ ((RankingType2) => {\n  RankingType2[\"Popularity\"] = \"POPULARITY\";\n  RankingType2[\"Trending\"] = \"TRENDING\";\n  return RankingType2;\n})(RankingType || {});\nvar PopularityPeriodType = /* @__PURE__ */ ((PopularityPeriodType2) => {\n  PopularityPeriodType2[\"Realtime\"] = \"REALTIME\";\n  PopularityPeriodType2[\"Hourly\"] = \"HOURLY\";\n  PopularityPeriodType2[\"Daily\"] = \"DAILY\";\n  return PopularityPeriodType2;\n})(PopularityPeriodType || {});\nvar TrendingPeriodType = /* @__PURE__ */ ((TrendingPeriodType2) => {\n  TrendingPeriodType2[\"Hourly\"] = \"HOURLY\";\n  return TrendingPeriodType2;\n})(TrendingPeriodType || {});\nvar CategoryType = /* @__PURE__ */ ((CategoryType2) => {\n  CategoryType2[CategoryType2[\"Large\"] = 0] = \"Large\";\n  CategoryType2[CategoryType2[\"Middle\"] = 1] = \"Middle\";\n  return CategoryType2;\n})(CategoryType || {});\nexport {\n  CategoryType,\n  PopularityPeriodType,\n  QueryType,\n  RankingType,\n  TrendingPeriodType\n};\n","import { addDays } from \"./addDays.js\";\nfunction subDays(date, amount) {\n  return addDays(date, -amount);\n}\nexport {\n  subDays as default,\n  subDays\n};\n","import { addMonths } from \"./addMonths.js\";\nfunction subMonths(date, amount) {\n  return addMonths(date, -amount);\n}\nexport {\n  subMonths as default,\n  subMonths\n};\n","import { subDays } from \"./subDays.js\";\nimport { subMonths } from \"./subMonths.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nfunction sub(date, duration) {\n  const {\n    years = 0,\n    months = 0,\n    weeks = 0,\n    days = 0,\n    hours = 0,\n    minutes = 0,\n    seconds = 0\n  } = duration;\n  const dateWithoutMonths = subMonths(date, months + years * 12);\n  const dateWithoutDays = subDays(dateWithoutMonths, days + weeks * 7);\n  const minutestoSub = minutes + hours * 60;\n  const secondstoSub = seconds + minutestoSub * 60;\n  const mstoSub = secondstoSub * 1e3;\n  const finalDate = constructFrom(date, dateWithoutDays.getTime() - mstoSub);\n  return finalDate;\n}\nexport {\n  sub as default,\n  sub\n};\n","import { toDate } from \"./toDate.js\";\nimport { addLeadingZeros } from \"./_lib/addLeadingZeros.js\";\nfunction formatISO(date, options) {\n  const _date = toDate(date);\n  if (isNaN(_date.getTime())) {\n    throw new RangeError(\"Invalid time value\");\n  }\n  const format = (options == null ? void 0 : options.format) ?? \"extended\";\n  const representation = (options == null ? void 0 : options.representation) ?? \"complete\";\n  let result = \"\";\n  let tzOffset = \"\";\n  const dateDelimiter = format === \"extended\" ? \"-\" : \"\";\n  const timeDelimiter = format === \"extended\" ? \":\" : \"\";\n  if (representation !== \"time\") {\n    const day = addLeadingZeros(_date.getDate(), 2);\n    const month = addLeadingZeros(_date.getMonth() + 1, 2);\n    const year = addLeadingZeros(_date.getFullYear(), 4);\n    result = `${year}${dateDelimiter}${month}${dateDelimiter}${day}`;\n  }\n  if (representation !== \"date\") {\n    const offset = _date.getTimezoneOffset();\n    if (offset !== 0) {\n      const absoluteOffset = Math.abs(offset);\n      const hourOffset = addLeadingZeros(Math.trunc(absoluteOffset / 60), 2);\n      const minuteOffset = addLeadingZeros(absoluteOffset % 60, 2);\n      const sign = offset < 0 ? \"+\" : \"-\";\n      tzOffset = `${sign}${hourOffset}:${minuteOffset}`;\n    } else {\n      tzOffset = \"Z\";\n    }\n    const hour = addLeadingZeros(_date.getHours(), 2);\n    const minute = addLeadingZeros(_date.getMinutes(), 2);\n    const second = addLeadingZeros(_date.getSeconds(), 2);\n    const separator = result === \"\" ? \"\" : \"T\";\n    const time = [hour, minute, second].join(timeDelimiter);\n    result = `${result}${separator}${time}${tzOffset}`;\n  }\n  return result;\n}\nexport {\n  formatISO as default,\n  formatISO\n};\n","import { createKRTimeZoneDate } from \"../../../../utils/createUTCDate.js\";\nimport { sub } from \"../../../../node_modules/date-fns/sub.js\";\nimport { formatISO } from \"../../../../node_modules/date-fns/formatISO.js\";\nimport { formatSchedule } from \"./TimeSaleCollectionTags/TimeSaleCollectionTags.utils.js\";\nconst DATE_PREFIX = \"DATE@\";\nconst removeDatePrefix = (str) => str.replace(DATE_PREFIX, \"\").trim();\nconst reshapeProductGroups = (list, displayEndAt) => list.map((item, index) => {\n  const nextGroup = list[index + 1];\n  const startAt = formatISO(createKRTimeZoneDate(removeDatePrefix(item.title)));\n  const endAt = nextGroup ? (\n    // NOTE: (한지원) 상품 그룹 응답에서 종료일을 명확히 알 수 없으므로, 다음 스케줄의 1초 전 시간을 종료일로 설정합니다.\n    formatISO(sub(createKRTimeZoneDate(removeDatePrefix(nextGroup.title)), {\n      seconds: 1\n    }))\n  ) : displayEndAt;\n  return {\n    ...item,\n    title: formatSchedule(startAt),\n    startAt,\n    endAt\n  };\n});\nexport {\n  removeDatePrefix,\n  reshapeProductGroups\n};\n","import { ControlType } from \"framer\";\nimport { entries } from \"../../utils/entries.js\";\nconst combineObjectPropertyControls = (...controls) => {\n  return controls.flatMap(entries).reduce((prev, curr) => {\n    const [key, incoming] = curr;\n    const copied = {\n      ...prev\n    };\n    const existing = copied[key] ?? {};\n    if (existing.type === ControlType.Enum && incoming.type === ControlType.Enum) {\n      copied[key] = mergeEnumControlDescription(existing, incoming);\n      return prev = copied;\n    }\n    return prev = {\n      ...prev,\n      [key]: incoming\n    };\n  }, {});\n};\nconst mergeEnumControlDescription = (existing, incoming) => {\n  return {\n    ...existing,\n    options: [...existing.options, ...incoming.options],\n    optionTitles: [...existing.optionTitles ?? [], ...incoming.optionTitles ?? []]\n  };\n};\nexport {\n  combineObjectPropertyControls\n};\n","var CouponModuleInputType = /* @__PURE__ */ ((CouponModuleInputType2) => {\n  CouponModuleInputType2[CouponModuleInputType2[\"Linked\"] = 0] = \"Linked\";\n  CouponModuleInputType2[CouponModuleInputType2[\"Manual\"] = 1] = \"Manual\";\n  CouponModuleInputType2[CouponModuleInputType2[\"Auto\"] = 2] = \"Auto\";\n  return CouponModuleInputType2;\n})(CouponModuleInputType || {});\nvar CouponUpdateType = /* @__PURE__ */ ((CouponUpdateType2) => {\n  CouponUpdateType2[CouponUpdateType2[\"NORMAL\"] = 0] = \"NORMAL\";\n  CouponUpdateType2[CouponUpdateType2[\"DAILY\"] = 1] = \"DAILY\";\n  return CouponUpdateType2;\n})(CouponUpdateType || {});\nexport {\n  CouponModuleInputType,\n  CouponUpdateType\n};\n","import { ControlType } from \"framer\";\nimport { CouponType } from \"../../types/models/coupon.js\";\nimport { CouponUpdateType } from \"./CouponModule/CouponModule.types.js\";\nimport { QueryType, RankingType, PopularityPeriodType, TrendingPeriodType, CategoryType } from \"./types.js\";\nconst PRODUCT_CONTROLS = {\n  type: {\n    type: ControlType.Enum,\n    title: \"유형\",\n    options: [QueryType.Product],\n    optionTitles: [\"상품\"]\n  },\n  productIds: {\n    hidden: ({\n      type\n    }) => type !== QueryType.Product,\n    type: ControlType.String,\n    title: \"상품 ID\",\n    description: \"복수 입력 시 콤마(,)로 구분\",\n    defaultValue: \"\"\n  }\n};\nconst KEYWORD_COLLECTION_CONTROLS = {\n  type: {\n    type: ControlType.Enum,\n    title: \"유형\",\n    options: [QueryType.KeywordCollection],\n    optionTitles: [\"키워드 컬렉션\"]\n  },\n  keywordCollectionId: {\n    hidden: ({\n      type\n    }) => type !== QueryType.KeywordCollection,\n    type: ControlType.String,\n    title: \"키워드 컬렉션 ID\",\n    description: \"단수만 입력\",\n    defaultValue: \"\"\n  }\n};\nconst KEYWORD_COLLECTIONS_CONTROLS = {\n  type: {\n    type: ControlType.Enum,\n    title: \"유형\",\n    options: [QueryType.KeywordCollections],\n    optionTitles: [\"다중 키워드 컬렉션\"]\n  },\n  keywordCollectionIds: {\n    hidden: ({\n      type\n    }) => type !== QueryType.KeywordCollections,\n    type: ControlType.String,\n    title: \"키워드 컬렉션 ID\",\n    description: \"복수 입력 시 콤마(,)로 구분\",\n    defaultValue: \"\",\n    placeholder: \"11628,11629,11630\"\n  }\n};\nconst BRAND_CURATION_CONTROLS = {\n  type: {\n    type: ControlType.Enum,\n    title: \"유형\",\n    options: [QueryType.BrandCuration],\n    optionTitles: [\"브랜드 큐레이션\"]\n  },\n  brandGroupIds: {\n    hidden: ({\n      type\n    }) => type !== QueryType.BrandCuration,\n    type: ControlType.String,\n    title: \"브랜드 그룹 ID\",\n    description: \"복수 입력 시 콤마(,)로 구분\",\n    defaultValue: \"\"\n  },\n  brandSize: {\n    hidden: ({\n      type\n    }) => type !== QueryType.BrandCuration,\n    type: ControlType.Number,\n    title: \"개수\",\n    description: \"최대 500개, 미입력 시 최대 개수로 노출\",\n    unit: \"개\",\n    defaultValue: 20,\n    min: 0,\n    displayStepper: true\n  },\n  brandCurationTagIds: {\n    hidden: ({\n      type\n    }) => type !== QueryType.BrandCuration,\n    type: ControlType.String,\n    title: \"태그 ID\",\n    description: \"태그 아이디 입력 시 매핑된 상품만 노출\\n복수 입력 시 콤마(,)로 구분\",\n    defaultValue: \"\"\n  }\n};\nconst RECOMMENDATION_CONTROLS = {\n  type: {\n    type: ControlType.Enum,\n    title: \"유형\",\n    options: [QueryType.Recommendation],\n    optionTitles: [\"개인화 추천\"]\n  },\n  recommendationTagIds: {\n    hidden: ({\n      type\n    }) => type !== QueryType.Recommendation,\n    type: ControlType.String,\n    title: \"태그 ID\",\n    description: \"태그 아이디 입력 시 매핑된 상품만 노출\\n복수 입력 시 콤마(,)로 구분\",\n    defaultValue: \"\"\n  }\n};\nconst RANKING_CONTROLS = {\n  type: {\n    type: ControlType.Enum,\n    title: \"유형\",\n    options: [QueryType.Ranking],\n    optionTitles: [\"랭킹\"]\n  },\n  rankingType: {\n    hidden: ({\n      type\n    }) => type !== QueryType.Ranking,\n    type: ControlType.Enum,\n    title: \"랭킹 유형\",\n    options: [RankingType.Popularity, RankingType.Trending],\n    optionTitles: [\"인기\", \"급상승\"]\n  },\n  popularityPeriodType: {\n    hidden: ({\n      type,\n      rankingType\n    }) => type !== QueryType.Ranking || rankingType !== RankingType.Popularity,\n    type: ControlType.Enum,\n    title: \"기간\",\n    options: [PopularityPeriodType.Realtime, PopularityPeriodType.Hourly, PopularityPeriodType.Daily],\n    optionTitles: [\"실시간\", \"시간별\", \"일별\"]\n  },\n  trendingPeriodType: {\n    hidden: ({\n      type,\n      rankingType\n    }) => type !== QueryType.Ranking || rankingType !== RankingType.Trending,\n    type: ControlType.Enum,\n    title: \"기간\",\n    options: [TrendingPeriodType.Hourly],\n    optionTitles: [\"시간별\"]\n  },\n  rankingTagIds: {\n    hidden: ({\n      type\n    }) => type !== QueryType.Ranking,\n    type: ControlType.String,\n    title: \"태그 ID\",\n    description: \"태그 아이디 입력 시 매핑된 상품만 노출\\n복수 입력 시 콤마(,)로 구분\",\n    defaultValue: \"\"\n  },\n  categoryType: {\n    hidden: ({\n      type\n    }) => type !== QueryType.Ranking,\n    type: ControlType.Enum,\n    title: \"카테고리 유형\",\n    options: [CategoryType.Large, CategoryType.Middle],\n    optionTitles: [\"대카테고리\", \"중카테고리\"],\n    defaultValue: CategoryType.Large\n  },\n  excludeLargeCategoryIds: {\n    hidden: ({\n      type\n    }) => type !== QueryType.Ranking,\n    title: \"제외 대카테고리 ID\",\n    type: ControlType.String,\n    description: \"패싯에서 제외 시킬 대카테고리 ID 입력\\n복수 입력 시 콤마(,)로 구분\",\n    defaultValue: \"\",\n    placeholder: \"268100100,269100100,272100100,273100100\"\n  },\n  excludeMiddleCategoryIds: {\n    hidden: ({\n      type\n    }) => type !== QueryType.Ranking,\n    type: ControlType.String,\n    title: \"제외 중카테고리 ID\",\n    description: \"패싯에서 제외 시킬 중카테고리 ID 입력\\n복수 입력 시 콤마(,)로 구분\",\n    defaultValue: \"\",\n    placeholder: \"268103100,268106100,268104100,268117100\"\n  }\n};\nconst COUPON_COLLECTION_CONTROLS = {\n  type: {\n    type: ControlType.Enum,\n    title: \"유형\",\n    options: [QueryType.CouponCollection],\n    optionTitles: [\"타임 세일 브랜드\"]\n  },\n  brandSaleGroupId: {\n    hidden: ({\n      type\n    }) => type !== QueryType.CouponCollection,\n    type: ControlType.String,\n    title: \"타임 세일 브랜드 ID\",\n    description: \"단수만 입력\",\n    defaultValue: \"\"\n  }\n};\nconst RAFFLE_GROUP_CONTROLS = {\n  type: {\n    type: ControlType.Enum,\n    title: \"유형\",\n    options: [QueryType.RaffleGroup],\n    optionTitles: [\"래플 그룹\"]\n  },\n  raffleGroupId: {\n    hidden: ({\n      type\n    }) => type !== QueryType.RaffleGroup,\n    type: ControlType.String,\n    title: \"래플 그룹 ID\"\n  }\n};\nconst COUPON_CONTROLS = {\n  type: {\n    type: ControlType.Enum,\n    title: \"유형\",\n    options: [QueryType.Coupon],\n    optionTitles: [\"쿠폰\"]\n  },\n  couponType: {\n    type: ControlType.Enum,\n    title: \"쿠폰 유형\",\n    description: \"랜덤 쿠폰은 쿠폰 번호 없이 당일에 발급 가능한 쿠폰이 발급됩니다.\",\n    options: [CouponType.NORMAL, CouponType.LIMITED, CouponType.RANDOM],\n    optionTitles: [\"일반\", \"선착순\", \"랜덤\"]\n  },\n  couponUpdateType: {\n    hidden: (props) => props.couponType === CouponType.RANDOM,\n    type: ControlType.Enum,\n    title: \"쿠폰 갱신 유형\",\n    options: [CouponUpdateType.NORMAL, CouponUpdateType.DAILY],\n    optionTitles: [\"고정\", \"일자별\"]\n  },\n  couponIds: {\n    hidden: (props) => props.couponType !== CouponType.RANDOM && props.couponUpdateType !== CouponUpdateType.NORMAL,\n    type: ControlType.String,\n    title: \"쿠폰 ID\",\n    description: \"복수 입력 시 콤마(,)로 구분\\n랜덤 쿠폰은 유의사항 문구 자동생성을 위해 첫 회차에 해당하는 쿠폰번호 목록을 입력해 주세요.\"\n  },\n  dailyCouponOptions: {\n    hidden: (props) => props.couponType === CouponType.RANDOM || props.couponUpdateType !== CouponUpdateType.DAILY,\n    type: ControlType.Array,\n    title: \"갱신 일자\",\n    control: {\n      type: ControlType.Object,\n      controls: {\n        dailyCouponIds: {\n          type: ControlType.Array,\n          title: \"쿠폰 번호 목록\",\n          description: \"일자별 쿠폰 번호 목록을 입력합니다.\\n하나의 쿠폰 번호 목록당 하나의 날짜에 연결됩니다.\",\n          control: {\n            type: ControlType.String,\n            title: \"쿠폰 번호 목록\"\n          }\n        },\n        updateSchedule: {\n          type: ControlType.Object,\n          title: \"갱신 기간\",\n          controls: {\n            startAt: {\n              type: ControlType.Date,\n              title: \"시작일\"\n            },\n            endAt: {\n              type: ControlType.Date,\n              title: \"종료일\"\n            }\n          }\n        },\n        updateAt: {\n          type: ControlType.Object,\n          title: \"갱신 주기\",\n          description: \"ex) 10시 0분 0초 입력 -> 매일 오전 10시에 쿠폰번호 갱신\",\n          controls: {\n            hours: {\n              type: ControlType.Number,\n              title: \"시\",\n              defaultValue: 0,\n              min: 0,\n              max: 23,\n              unit: \"시\",\n              step: 1,\n              displayStepper: true\n            },\n            minutes: {\n              type: ControlType.Number,\n              title: \"분\",\n              defaultValue: 0,\n              min: 0,\n              max: 59,\n              unit: \"분\",\n              step: 1,\n              displayStepper: true\n            },\n            seconds: {\n              type: ControlType.Number,\n              title: \"초\",\n              defaultValue: 0,\n              min: 0,\n              max: 59,\n              unit: \"초\",\n              step: 1,\n              displayStepper: true\n            }\n          }\n        }\n      }\n    }\n  }\n};\nconst PREUSER_CONTROLS = {\n  type: {\n    type: ControlType.Enum,\n    title: \"유형\",\n    options: [QueryType.Preuser],\n    optionTitles: [\"체험단\"]\n  },\n  preuserIds: {\n    type: ControlType.String,\n    hidden: ({\n      type\n    }) => type !== QueryType.Preuser,\n    title: \"체험단 ID\",\n    description: \"복수 입력 시 콤마(,)로 구분\",\n    defaultValue: \"\"\n  }\n};\nconst QUERY_CONTROL = {\n  type: ControlType.Object,\n  title: \"질의\",\n  controls: {}\n};\nconst CUSTOM_CATEGORY_CONTROLS = {\n  type: {\n    type: ControlType.Enum,\n    title: \"질의 유형\",\n    options: [QueryType.CustomCategory],\n    optionTitles: [\"카테고리\"]\n  },\n  categoryIds: {\n    hidden: ({\n      type\n    }) => type !== QueryType.CustomCategory,\n    type: ControlType.String,\n    title: \"카테고리 ID\",\n    description: \"복수개의 카테고리를 mix 하여 커스텀 카테고리 입력 시 콤마(,)로 구분\",\n    defaultValue: \"\"\n  }\n};\nconst MOLOCO_CONTROL = {\n  type: {\n    type: ControlType.Enum,\n    title: \"유형\",\n    options: [QueryType.Moloco],\n    optionTitles: [\"몰로코\"]\n  },\n  tagId: {\n    hidden: ({\n      type\n    }) => type !== QueryType.Moloco,\n    type: ControlType.String,\n    title: \"태그 ID\"\n  },\n  inventoryId: {\n    hidden: ({\n      type\n    }) => type !== QueryType.Moloco,\n    type: ControlType.String,\n    title: \"인벤토리 ID\",\n    description: \"몰로코와 협의된 값 ex) campaign_29week\"\n  },\n  pageId: {\n    hidden: ({\n      type\n    }) => type !== QueryType.Moloco,\n    type: ControlType.String,\n    title: \"페이지 ID\",\n    description: \"해당 모듈이 노출될 이구위크 페이지 이름, 임의값으로 정해서 전달주시면 됩니다. *페이지당 1개의 고유 pageId 필요\"\n  },\n  categories: {\n    hidden: ({\n      type\n    }) => type !== QueryType.Moloco,\n    type: ControlType.Array,\n    title: \"카테고리\",\n    description: \"카테고리를 입력하면 기존 몰로코 데이터에서 해당 카테고리 데이터만 노출됩니다\",\n    control: {\n      type: ControlType.Object,\n      controls: {\n        categoryId: {\n          type: ControlType.String,\n          title: \"카테고리 ID\"\n        },\n        categoryName: {\n          type: ControlType.String,\n          title: \"카테고리 이름\"\n        }\n      }\n    }\n  }\n};\nexport {\n  BRAND_CURATION_CONTROLS,\n  COUPON_COLLECTION_CONTROLS,\n  COUPON_CONTROLS,\n  CUSTOM_CATEGORY_CONTROLS,\n  KEYWORD_COLLECTIONS_CONTROLS,\n  KEYWORD_COLLECTION_CONTROLS,\n  MOLOCO_CONTROL,\n  PREUSER_CONTROLS,\n  PRODUCT_CONTROLS,\n  QUERY_CONTROL,\n  RAFFLE_GROUP_CONTROLS,\n  RANKING_CONTROLS,\n  RECOMMENDATION_CONTROLS\n};\n","import { QueryType } from \"../types.js\";\nconst createKey = (query) => {\n  var _a;\n  return ((_a = query == null ? void 0 : query.keys) == null ? void 0 : _a.join(\"-\")) ?? void 0;\n};\nconst MOLOCO_SHARED_KEY = \"moloco-shared\";\nconst getMolocoCacheQuery = (query) => {\n  if (query.type !== QueryType.Moloco) {\n    return query;\n  }\n  const molocoQuery = query;\n  return {\n    type: molocoQuery.type,\n    tagId: molocoQuery.tagId,\n    inventoryId: molocoQuery.inventoryId,\n    pageId: molocoQuery.pageId\n    // facetName은 의도적으로 제외\n    // 이유: 모든 탭 데이터가 이미 API에서 반환되므로\n    //       탭마다 다른 cache를 만들 필요가 없음\n  };\n};\nconst createMolocoKey = (query) => {\n  return [MOLOCO_SHARED_KEY, getMolocoCacheQuery(query)];\n};\nexport {\n  createKey,\n  createMolocoKey,\n  getMolocoCacheQuery\n};\n","import { ControlType } from \"framer\";\nconst SEGMENT_CONTROLS = {\n  segment: {\n    title: \"세그먼트\",\n    type: ControlType.Array,\n    description: \"설정한 세그먼트 조건에 따라 노출/미노출이 됩니다.\",\n    control: {\n      type: ControlType.Object,\n      controls: {\n        type: {\n          type: ControlType.Enum,\n          title: \"타입\",\n          options: [\"login\", \"guest\", \"newBuyer\", \"categoryNewBuyerProduct\", \"categoryNewBuyerCoupon\", \"gender\"],\n          optionTitles: [\"로그인\", \"미로그인\", \"생애 첫구매\", \"카테고리 첫구매 상품\", \"카테고리 첫구매 쿠폰\", \"성별\"],\n          defaultValue: \"\"\n        },\n        groupId: {\n          hidden: ({\n            type\n          }) => type !== \"categoryNewBuyerProduct\",\n          type: ControlType.String,\n          title: \"그룹 ID\",\n          defaultValue: \"\"\n        },\n        couponId: {\n          hidden: ({\n            type\n          }) => type !== \"categoryNewBuyerCoupon\",\n          type: ControlType.String,\n          title: \"쿠폰 ID\",\n          defaultValue: \"\"\n        },\n        gender: {\n          hidden: ({\n            type\n          }) => type !== \"gender\",\n          type: ControlType.Enum,\n          title: \"성별\",\n          description: \"선택한 성별의 유저에게만 노출됩니다. 미로그인 유저에게는 항상 노출됩니다.\",\n          options: [\"M\", \"F\"],\n          optionTitles: [\"남성\", \"여성\"],\n          defaultValue: \"F\"\n        }\n      }\n    }\n  }\n};\nexport {\n  SEGMENT_CONTROLS\n};\n","import \"react/jsx-runtime\";\nimport { download } from \"../../@shared/Icon/assets/download.js\";\nimport { plus } from \"../../@shared/Icon/assets/plus.js\";\nimport { chevronRight } from \"../../@shared/Icon/assets/chevronRight.js\";\nimport { chevronDown } from \"../../@shared/Icon/assets/chevronDown.js\";\nimport { heart } from \"../../@shared/Icon/assets/heart.js\";\nimport { bell } from \"../../@shared/Icon/assets/bell.js\";\nimport { gift } from \"../../@shared/Icon/assets/gift.js\";\nimport { share } from \"../../@shared/Icon/assets/share.js\";\nimport { scrap } from \"../../@shared/Icon/assets/scrap.js\";\nimport { lock } from \"../../@shared/Icon/assets/lock.js\";\nimport { lockOff } from \"../../@shared/Icon/assets/lockOff.js\";\nconst prefixIconAssets = {\n  scrap,\n  lock,\n  lockOff,\n  heart,\n  bell,\n  gift,\n  share\n};\nconst postfixIconAssets = {\n  plus,\n  chevronRight,\n  download,\n  chevronDown,\n  share\n};\nconst PREFIX_ICON_OPTIONS = Object.keys(prefixIconAssets);\nconst POSTFIX_ICON_OPTIONS = Object.keys(postfixIconAssets);\nexport {\n  POSTFIX_ICON_OPTIONS,\n  PREFIX_ICON_OPTIONS,\n  postfixIconAssets,\n  prefixIconAssets\n};\n","const hideClosestParentByFramerName = (currentElement, framerName, isVisible) => {\n  if (!currentElement) {\n    return null;\n  }\n  const targetName = framerName || \"segmentWrapper\";\n  const parentElement = currentElement.closest(`[data-framer-name=\"${targetName}\"]`);\n  if (parentElement) {\n    parentElement.style.display = isVisible ? parentElement.style.display === \"none\" ? \"\" : parentElement.style.display : \"none\";\n  }\n  return parentElement;\n};\nexport {\n  hideClosestParentByFramerName\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { createContext } from \"react\";\nimport \"../../../systems/Countdown/Countdown.js\";\nimport \"react-dom\";\nimport \"../../../systems/Dialog/Dialog.module.css.js\";\nimport \"framer-motion\";\nimport \"../../../systems/Expandable/Expandable.js\";\nimport \"../../../systems/FixedScrollProgressBar/FixedScrollProgressBar.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 \"../../../../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 \"../../../systems/ShareButtonWithReferralEvent/ShareButtonWithReferralEvent.js\";\nimport \"../../../../node_modules/swr/mutation/dist/index.js\";\nimport \"../../../@shared/providers/ThemeProvider/ThemeProvider.js\";\nimport \"../../../@shared/providers/BreakpointProvider/BreakpointProvider.js\";\nimport \"../../../../hooks/stores/bottom-sheet/bottom-sheet.store.js\";\nimport \"../../../../containers/DialogContainer/DialogContainer.emitter.js\";\nimport \"../../../../utils/redirectLogin.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport \"../../../../constants/snowplow/snowplowSchema.js\";\nimport { PRODUCTS_PER_REQUEST } from \"../../../systems/Products/Products.js\";\nimport \"../../../systems/ResponsiveSplitView/ResponsiveSplitView.js\";\nimport \"../../../systems/ResponsiveSplitViewOverlayButton/ResponsiveSplitViewOverlayButton.js\";\nimport \"../../../systems/RollingNumber/RollingNumber.js\";\nimport \"../../../systems/TabBar/TabBar.js\";\nimport \"../../../systems/TimeProgressBar/TimeProgressBar.js\";\nimport \"../../../systems/ViewportContainer/ViewportContainer.js\";\nimport \"../../../systems/TabBarV2/TabBarV2.js\";\nimport \"../../../systems/TabBarV3/TabBarV3.js\";\nconst ProductsElementContext = createContext({\n  query: void 0,\n  size: PRODUCTS_PER_REQUEST\n});\nconst ProductsElementProvider = ({\n  children,\n  query,\n  size\n}) => {\n  return /* @__PURE__ */ jsx(ProductsElementContext.Provider, { value: {\n    query,\n    size\n  }, children });\n};\nexport {\n  ProductsElementContext,\n  ProductsElementProvider\n};\n","const PRODUCTS_PER_REQUEST = 30;\nexport {\n  PRODUCTS_PER_REQUEST\n};\n","var ScrollDirection = /* @__PURE__ */ ((ScrollDirection2) => {\n  ScrollDirection2[\"Vertical\"] = \"vertical\";\n  ScrollDirection2[\"Horizontal\"] = \"horizontal\";\n  return ScrollDirection2;\n})(ScrollDirection || {});\nvar ProductsModuleInputType = /* @__PURE__ */ ((ProductsModuleInputType2) => {\n  ProductsModuleInputType2[ProductsModuleInputType2[\"Linked\"] = 0] = \"Linked\";\n  ProductsModuleInputType2[ProductsModuleInputType2[\"Manual\"] = 1] = \"Manual\";\n  ProductsModuleInputType2[ProductsModuleInputType2[\"Preuser\"] = 2] = \"Preuser\";\n  return ProductsModuleInputType2;\n})(ProductsModuleInputType || {});\nvar PaginationType = /* @__PURE__ */ ((PaginationType2) => {\n  PaginationType2[PaginationType2[\"Default\"] = 0] = \"Default\";\n  PaginationType2[PaginationType2[\"ExpandButton\"] = 1] = \"ExpandButton\";\n  PaginationType2[PaginationType2[\"None\"] = 2] = \"None\";\n  return PaginationType2;\n})(PaginationType || {});\nexport {\n  PaginationType,\n  ProductsModuleInputType,\n  ScrollDirection\n};\n","import { useContext } from \"react\";\nimport { ProductsElementContext } from \"./ProductsElementProvider.js\";\nconst useProductsElementContext = () => {\n  return useContext(ProductsElementContext);\n};\nexport {\n  useProductsElementContext\n};\n","var SortType = /* @__PURE__ */ ((SortType2) => {\n  SortType2[\"FEATURED\"] = \"FEATURED\";\n  SortType2[\"BEST\"] = \"BEST\";\n  SortType2[\"NEW\"] = \"NEW\";\n  SortType2[\"REVIEW_DESC\"] = \"REVIEW_DESC\";\n  SortType2[\"PRICE_DESC\"] = \"PRICE_DESC\";\n  SortType2[\"PRICE_ASC\"] = \"PRICE_ASC\";\n  SortType2[\"DISCOUNT_DESC\"] = \"DISCOUNT_DESC\";\n  SortType2[\"LIKE_DESC\"] = \"LIKE_DESC\";\n  SortType2[\"ORDER_DESC\"] = \"ORDER_DESC\";\n  return SortType2;\n})(SortType || {});\nexport {\n  SortType\n};\n","import { throwFailError } from \"../@middlewares/throwFailError.js\";\nimport { APIService } from \"../APIService.js\";\nimport { env } from \"../../config/index.js\";\nclass DisplayBffApiService extends APIService {\n  constructor() {\n    super();\n    this.setBaseUrl(env.api.displayBff);\n    this.setMiddleware(throwFailError);\n  }\n  async getFacetGroup(payload) {\n    return this.post(`/api/v1/listing/facet-group`, {\n      ...payload,\n      pageType: \"CATEGORY_PLP\"\n    });\n  }\n  async getItems(payload) {\n    const params = new URLSearchParams({\n      tagIds: payload.tagIds.join(\",\"),\n      inventoryId: payload.inventoryId,\n      pageId: payload.pageId\n    });\n    if (payload.categoryCodes && payload.categoryCodes.length > 0) {\n      params.append(\"categoryCodes\", payload.categoryCodes.join(\",\"));\n    }\n    return this.get(`/api/v1/framer/listing/promoted-items?${params.toString()}`, void 0, {\n      credentials: \"include\"\n    });\n  }\n}\nconst displayBffApi = new DisplayBffApiService();\nexport {\n  displayBffApi\n};\n","import { APIService } from \"../APIService.js\";\nimport { throwFailError } from \"../@middlewares/throwFailError.js\";\nimport { env } from \"../../config/index.js\";\nclass RecommendApiService extends APIService {\n  constructor() {\n    super();\n    this.setBaseUrl(env.api.content);\n    this.setMiddleware(throwFailError);\n  }\n  async getPersonalizedProducts(productGroupId, limit) {\n    return this.get(`/api/v4/framers/proxy/content-api/api/v4/product-groups/${productGroupId}/for-you-products`, {\n      limit\n    }, {\n      credentials: \"include\"\n    }).then((data) => ({\n      ...data,\n      data: {\n        ...data.data,\n        productList: formatProducts(data.data.productList)\n      }\n    }));\n  }\n  async getRecommendedProductsByTagId(query) {\n    return this.get(\"/api/v4/framers/proxy/content-api/api/v5/recommendation/personalize/products\", query, {\n      credentials: \"include\"\n    }).then((data) => ({\n      ...data,\n      data: {\n        ...data.data,\n        products: formatCollectionProduct2Product(data.data.products)\n      }\n    }));\n  }\n}\nconst recommendApi = new RecommendApiService();\nconst formatCollectionProduct2Product = (products) => products.map((product) => {\n  var _a;\n  return {\n    frontBrand: {\n      frontBrandId: product.frontBrand.id,\n      nameKor: product.frontBrand.nameKor,\n      nameEng: product.frontBrand.nameEng\n    },\n    productId: product.productId,\n    productName: product.productName,\n    subjectDescriptions: product.subjectDescriptions,\n    imageUrl: product.imageUrl,\n    consumerPrice: product.consumerPrice,\n    lastSalePrice: product.lastSalePrice,\n    lastSalePercent: product.lastSalePercent,\n    heartCount: product.heartCount,\n    heartOn: product.heartOn,\n    reviewCount: product.reviewCount,\n    reviewAveragePoint: product.reviewAveragePoint,\n    isCoupon: product.saleInfo.coupon,\n    isFreeShipping: product.freeShipping,\n    isNew: product.newProperty,\n    isSoldOut: product.soldOut,\n    frontCategories: (_a = product.frontCategories) == null ? void 0 : _a.map((category) => ({\n      largeCategoryCode: category.largeCode ?? 0,\n      largeCategoryName: category.largeName ?? \"\",\n      mediumCategoryCode: category.mediumCode ?? 0,\n      mediumCategoryName: category.mediumName ?? \"\",\n      smallCategoryCode: category.smallCode ?? 0,\n      smallCategoryName: category.smallName ?? \"\"\n    }))\n  };\n});\nconst formatProducts = (products) => products.map((product) => ({\n  frontBrand: {\n    frontBrandId: product.frontBrandId,\n    nameKor: product.frontBrandNameKor,\n    nameEng: product.frontBrandNameEng\n  },\n  productId: product.productId,\n  productName: product.productName,\n  subjectDescriptions: product.subjectDescriptions,\n  imageUrl: product.imageUrl,\n  consumerPrice: product.consumerPrice,\n  lastSalePrice: product.lastSalePrice,\n  lastSalePercent: product.lastSalePercent,\n  heartCount: product.heartCount,\n  heartOn: product.heartOn,\n  reviewCount: product.reviewCount,\n  reviewAveragePoint: product.reviewAveragePoint,\n  isCoupon: product.searchSale.coupon,\n  isFreeShipping: product.freeShipping,\n  isNew: product.newProperty,\n  isSoldOut: product.soldOut,\n  frontCategoryInfo: product.searchFrontCategoryList\n}));\nexport {\n  formatCollectionProduct2Product,\n  recommendApi\n};\n","const MOCK_PRODUCTS = [{\n  consumerPrice: 155e3,\n  imageUrl: \"/item/202502/11efe8378fbdcae28f0ab7d30031e3c9.jpg\",\n  heartCount: 2789,\n  reviewCount: 118,\n  lastSalePercent: 15,\n  lastSalePrice: 132525,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [\"[25SS]\"],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"노스페이스\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 1942207,\n  productName: \"보레알리스 2 NM2DR04A_BLK\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 269100100,\n    largeCategoryName: \"여성가방\",\n    mediumCategoryCode: 269106100,\n    mediumCategoryName: \"백팩\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"남성가방\",\n    mediumCategoryCode: 273104100,\n    mediumCategoryName: \"백팩\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"남성가방\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 269100100,\n    largeCategoryName: \"여성가방\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 169e3,\n  imageUrl: \"/item/202411/11efa7ab6d5d1ecf9316592337ae1aca.jpg\",\n  heartCount: 22,\n  reviewCount: 0,\n  lastSalePercent: 44,\n  lastSalePrice: 94640,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 0,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"노스페이스\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2389405,\n  productName: \"듀얼 백팩 NM2DQ06K_LBE\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"남성가방\",\n    mediumCategoryCode: 273104100,\n    mediumCategoryName: \"백팩\",\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 159e3,\n  imageUrl: \"/item/202411/11efa7a8eb30739b9d18ef45b4791ed5.jpg\",\n  heartCount: 3926,\n  reviewCount: 476,\n  lastSalePercent: 10,\n  lastSalePrice: 143100,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 4.9,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"노스페이스\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 1634106,\n  productName: \"빅 샷 NM2DQ50A_BLK\",\n  isCoupon: false,\n  frontCategories: [{\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"남성가방\",\n    mediumCategoryCode: 273104100,\n    mediumCategoryName: \"백팩\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"남성가방\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 368e3,\n  imageUrl: \"/item/202501/11efc9657db7ebf58521852ca60f84fe.jpg\",\n  heartCount: 3710,\n  reviewCount: 200,\n  lastSalePercent: 0,\n  lastSalePrice: 368e3,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [\"[25SS]\"],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"노스페이스\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2714814,\n  productName: \"여성 노벨티 눕시 RDS 다운 자켓 NJ1DR80J_BLK\",\n  isCoupon: false,\n  frontCategories: [{\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"여성의류\",\n    mediumCategoryCode: 268102100,\n    mediumCategoryName: \"아우터\",\n    smallCategoryCode: 268102117,\n    smallCategoryName: \"숏패딩\"\n  }, {\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"여성의류\",\n    mediumCategoryCode: 268102100,\n    mediumCategoryName: \"아우터\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"여성의류\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 149e3,\n  imageUrl: \"/item/202502/11efe1c52098184b8521d58f5330e571.jpg\",\n  heartCount: 169,\n  reviewCount: 2,\n  lastSalePercent: 15,\n  lastSalePrice: 127395,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"노스페이스\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2715548,\n  productName: \"보레알리스 2 NM2DQ52E_JBK\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"남성가방\",\n    mediumCategoryCode: 273104100,\n    mediumCategoryName: \"백팩\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"남성가방\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 109e3,\n  imageUrl: \"/item/202411/11efa7a909f8dae393166bd9acde4a3d.jpg\",\n  heartCount: 5482,\n  reviewCount: 403,\n  lastSalePercent: 15,\n  lastSalePrice: 93195,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"노스페이스\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 1744341,\n  productName: \"미니샷 NM2DQ53A_BLK\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"남성가방\",\n    mediumCategoryCode: 273104100,\n    mediumCategoryName: \"백팩\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"남성가방\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 398e3,\n  imageUrl: \"/item/202502/11efe1c50372b3098521eff5f021c0b7.jpg\",\n  heartCount: 4450,\n  reviewCount: 500,\n  lastSalePercent: 0,\n  lastSalePrice: 398e3,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"노스페이스\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2158524,\n  productName: \"노벨티 눕시 RDS 다운 자켓 NJ1DQ51J_BLK\",\n  isCoupon: false,\n  frontCategories: [{\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"남성의류\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"아우터\",\n    smallCategoryCode: 272102104,\n    smallCategoryName: \"숏패딩\"\n  }, {\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"여성의류\",\n    mediumCategoryCode: 268116100,\n    mediumCategoryName: \"EXCLUSIVE\",\n    smallCategoryCode: 268116103,\n    smallCategoryName: \"아우터\"\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"남성의류\",\n    mediumCategoryCode: 272111100,\n    mediumCategoryName: \"EXCLUSIVE\",\n    smallCategoryCode: 272111103,\n    smallCategoryName: \"아우터\"\n  }, {\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"여성의류\",\n    mediumCategoryCode: 268116100,\n    mediumCategoryName: \"EXCLUSIVE\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"남성의류\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"남성의류\",\n    mediumCategoryCode: 272111100,\n    mediumCategoryName: \"EXCLUSIVE\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"남성의류\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"아우터\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"여성의류\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 199e3,\n  imageUrl: \"/item/202502/11efe9a806bbc08c8f0af1b717708006.jpg\",\n  heartCount: 1893,\n  reviewCount: 94,\n  lastSalePercent: 5,\n  lastSalePrice: 189050,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [\"[25SS]\"],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"노스페이스\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2326012,\n  productName: \"눕시 온볼 베스트 NV3NR50A_BLK\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"남성의류\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"아우터\",\n    smallCategoryCode: 272102106,\n    smallCategoryName: \"베스트\"\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"남성의류\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"남성의류\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"아우터\",\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 269e3,\n  imageUrl: \"/item/202412/11efb924aca3ec8ead1bbdf9e249e357.jpg\",\n  heartCount: 172,\n  reviewCount: 20,\n  lastSalePercent: 0,\n  lastSalePrice: 269e3,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"노스페이스\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2987892,\n  productName: \"남성 1996 에코 눕시 베스트 NV1DQ55A_BLK\",\n  isCoupon: false,\n  frontCategories: [{\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"여성의류\",\n    mediumCategoryCode: 268102100,\n    mediumCategoryName: \"아우터\",\n    smallCategoryCode: 268102117,\n    smallCategoryName: \"숏패딩\"\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"남성의류\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"아우터\",\n    smallCategoryCode: 272102104,\n    smallCategoryName: \"숏패딩\"\n  }]\n}, {\n  consumerPrice: 398e3,\n  imageUrl: \"/item/202501/11efd3c8584dfacb85218560bb0f3ad4.jpg\",\n  heartCount: 4982,\n  reviewCount: 369,\n  lastSalePercent: 0,\n  lastSalePrice: 398e3,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [\"[25SS]\"],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"노스페이스\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2276799,\n  productName: \"노벨티 눕시 다운 자켓 (RDS) NJ1DR50K_RBK\",\n  isCoupon: false,\n  frontCategories: [{\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"남성의류\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"아우터\",\n    smallCategoryCode: 272102104,\n    smallCategoryName: \"숏패딩\"\n  }, {\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"여성의류\",\n    mediumCategoryCode: 268102100,\n    mediumCategoryName: \"아우터\",\n    smallCategoryCode: 268102117,\n    smallCategoryName: \"숏패딩\"\n  }, {\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"여성의류\",\n    mediumCategoryCode: 268116100,\n    mediumCategoryName: \"EXCLUSIVE\",\n    smallCategoryCode: 268116103,\n    smallCategoryName: \"아우터\"\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"남성의류\",\n    mediumCategoryCode: 272111100,\n    mediumCategoryName: \"EXCLUSIVE\",\n    smallCategoryCode: 272111103,\n    smallCategoryName: \"아우터\"\n  }, {\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"여성의류\",\n    mediumCategoryCode: 268116100,\n    mediumCategoryName: \"EXCLUSIVE\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"남성의류\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"남성의류\",\n    mediumCategoryCode: 272111100,\n    mediumCategoryName: \"EXCLUSIVE\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"남성의류\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"아우터\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"여성의류\",\n    mediumCategoryCode: 268102100,\n    mediumCategoryName: \"아우터\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"여성의류\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 178e3,\n  imageUrl: \"/item/202411/11efa7d791842b119d18ff2e784a1000.jpg\",\n  heartCount: 216,\n  reviewCount: 3,\n  lastSalePercent: 34,\n  lastSalePrice: 118370,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"노스페이스\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2885368,\n  productName: \"밴든 자켓 NJ3BQ53K_GRY\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"남성의류\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"아우터\",\n    smallCategoryCode: 272102129,\n    smallCategoryName: \"바람막이\"\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"남성의류\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"남성의류\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"아우터\",\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 178e3,\n  imageUrl: \"/item/202411/11efa7d93984c9559d1821d6fcb2b98b.jpg\",\n  heartCount: 274,\n  reviewCount: 2,\n  lastSalePercent: 34,\n  lastSalePrice: 118370,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"노스페이스\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2901769,\n  productName: \"밴든 자켓 NJ3BQ53L_BBR\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"남성의류\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"아우터\",\n    smallCategoryCode: 272102104,\n    smallCategoryName: \"숏패딩\"\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"남성의류\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"남성의류\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"아우터\",\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 165e3,\n  imageUrl: \"/item/202411/11efa7ba136c129b9d18835acf182eb2.jpg\",\n  heartCount: 378,\n  reviewCount: 12,\n  lastSalePercent: 36,\n  lastSalePrice: 105600,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"노스페이스\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2652594,\n  productName: \"어센드 엘티 25 NM2SQ11A_BLK\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"남성가방\",\n    mediumCategoryCode: 273104100,\n    mediumCategoryName: \"백팩\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"남성가방\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 179e3,\n  imageUrl: \"/item/202412/11efc64ed7874620ad1be9f7ff63eea8.jpg\",\n  heartCount: 98,\n  reviewCount: 7,\n  lastSalePercent: 15,\n  lastSalePrice: 153045,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [\"[25SS]\"],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"노스페이스\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 3005503,\n  productName: \"슈퍼팩 투 NM2DR01J_BLK\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 269100100,\n    largeCategoryName: \"여성가방\",\n    mediumCategoryCode: 269106100,\n    mediumCategoryName: \"백팩\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 273100100,\n    largeCategoryName: \"남성가방\",\n    mediumCategoryCode: 273104100,\n    mediumCategoryName: \"백팩\",\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 149e3,\n  imageUrl: \"/item/202411/11efa7e13b9316619316a5c4947fa678.jpg\",\n  heartCount: 774,\n  reviewCount: 35,\n  lastSalePercent: 41,\n  lastSalePrice: 88655,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"노스페이스\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2949339,\n  productName: \"여성 스트링 EX 부띠 NS99Q57J_RBK\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 270100100,\n    largeCategoryName: \"여성신발\",\n    mediumCategoryCode: 270103100,\n    mediumCategoryName: \"부츠\",\n    smallCategoryCode: 270103101,\n    smallCategoryName: \"앵클 부츠\"\n  }]\n}, {\n  consumerPrice: 269e3,\n  imageUrl: \"/item/202411/11efad615d9f79558521b5ff60f4e8a3.jpg\",\n  heartCount: 640,\n  reviewCount: 6,\n  lastSalePercent: 44,\n  lastSalePrice: 151050,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"노스페이스\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2923736,\n  productName: \"여성 써밋 히트라인 자켓 NJ3NQ82A_BLK\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"여성의류\",\n    mediumCategoryCode: 268102100,\n    mediumCategoryName: \"아우터\",\n    smallCategoryCode: 268102118,\n    smallCategoryName: \"경량패딩\"\n  }]\n}, {\n  consumerPrice: 178e3,\n  imageUrl: \"/item/202411/11efa7d9f79a488d9316d7182d8c60f0.jpg\",\n  heartCount: 905,\n  reviewCount: 7,\n  lastSalePercent: 24,\n  lastSalePrice: 135280,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 4.5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"노스페이스\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2906821,\n  productName: \"여성 에센셜 라이트 브이모션 자켓 NJ3NQ80J_CRE\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"여성의류\",\n    mediumCategoryCode: 268102100,\n    mediumCategoryName: \"아우터\",\n    smallCategoryCode: 268102118,\n    smallCategoryName: \"경량패딩\"\n  }]\n}, {\n  consumerPrice: 418e3,\n  imageUrl: \"/item/202411/11efad4449d5bb7f8521a9c74e484920.jpg\",\n  heartCount: 971,\n  reviewCount: 28,\n  lastSalePercent: 15,\n  lastSalePrice: 357390,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"노스페이스\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2969341,\n  productName: \"여성 노벨티 눕시 미드 다운 자켓 (RDS) NJ1DQ94J_BLK\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 268100100,\n    largeCategoryName: \"여성의류\",\n    mediumCategoryCode: 268102100,\n    mediumCategoryName: \"아우터\",\n    smallCategoryCode: 268102117,\n    smallCategoryName: \"숏패딩\"\n  }]\n}, {\n  consumerPrice: 89e3,\n  imageUrl: \"/item/202411/11efa7abf5e841e39d18072019049ade.jpg\",\n  heartCount: 3355,\n  reviewCount: 175,\n  lastSalePercent: 15,\n  lastSalePrice: 76095,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"노스페이스\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2417483,\n  productName: \"보레알리스 미니 팩 NM2DQ55A_BLK\",\n  isCoupon: true,\n  frontCategories: [{\n    largeCategoryCode: 269100100,\n    largeCategoryName: \"여성가방\",\n    mediumCategoryCode: 269106100,\n    mediumCategoryName: \"백팩\",\n    smallCategoryCode: 100100100\n  }, {\n    largeCategoryCode: 269100100,\n    largeCategoryName: \"여성가방\",\n    mediumCategoryCode: 100100100,\n    smallCategoryCode: 100100100\n  }]\n}, {\n  consumerPrice: 399e3,\n  imageUrl: \"/item/202411/11efa5991c716fa3afbc4f7994967cf8.jpg\",\n  heartCount: 807,\n  reviewCount: 30,\n  lastSalePercent: 30,\n  lastSalePrice: 279300,\n  isSoldOut: false,\n  isFreeShipping: true,\n  isNew: false,\n  reviewAveragePoint: 5,\n  heartOn: true,\n  subjectDescriptions: [\"[29CM 단독]\"],\n  frontBrand: {\n    frontBrandId: 7789,\n    nameKor: \"노스페이스\",\n    nameEng: \"THE NORTH FACE\"\n  },\n  productId: 2916253,\n  productName: \"써밋 마테호른 RDS 다운 자켓 NJ1DQ90A_RBK\",\n  isCoupon: false,\n  frontCategories: [{\n    largeCategoryCode: 272100100,\n    largeCategoryName: \"남성의류\",\n    mediumCategoryCode: 272102100,\n    mediumCategoryName: \"아우터\",\n    smallCategoryCode: 272102104,\n    smallCategoryName: \"숏패딩\"\n  }]\n}];\nconst createMockProductList = (productIdList) => productIdList.map((productId, index) => ({\n  ...MOCK_PRODUCTS[index % MOCK_PRODUCTS.length],\n  productId\n  // 입력된 ID로 덮어쓰기\n}));\nconst createMockCollection = (collectionId, index) => ({\n  collectionId,\n  title: `원브랜드데이 ${index + 1}일차`,\n  description: \"오늘이 마지막! 전에 없던 강력한 혜택을 붙잡아요\",\n  displayStartAt: \"2026-01-21T00:00:00.000+09:00\",\n  displayEndAt: \"2026-01-21T23:59:59.999+09:00\",\n  couponId: 3e5 + index,\n  coverImageUrl: \"https://img.29cm.co.kr/next-brand/2025/08/29/4c2abdbffea0465ab184c13a12e07d31_20250829132052.jpg\",\n  productGroupList: [{\n    collectionProductGroupId: collectionId * 100 + 1,\n    title: \"BEST\",\n    sort: \"BEST\"\n  }, {\n    collectionProductGroupId: collectionId * 100 + 2,\n    title: \"아우터\",\n    sort: \"BEST\"\n  }, {\n    collectionProductGroupId: collectionId * 100 + 3,\n    title: \"상의\",\n    sort: \"BEST\"\n  }, {\n    collectionProductGroupId: collectionId * 100 + 4,\n    title: \"하의\",\n    sort: \"BEST\"\n  }, {\n    collectionProductGroupId: collectionId * 100 + 5,\n    title: \"원피스\",\n    sort: \"BEST\"\n  }, {\n    collectionProductGroupId: collectionId * 100 + 6,\n    title: \"가방/잡화\",\n    sort: \"BEST\"\n  }]\n});\nexport {\n  MOCK_PRODUCTS,\n  createMockCollection,\n  createMockProductList\n};\n","import { useMemo } from \"react\";\nimport useSWR from \"../../../node_modules/swr/core/dist/index.js\";\nimport useSWRInfinite from \"../../../node_modules/swr/infinite/dist/index.js\";\nimport { keywordCollectionApi } from \"../../../apis/keyword-collections/KeywordCollectionApiService.js\";\nimport { SortType } from \"../../../types/models/sort.js\";\nimport { bestApi } from \"../../../apis/best/BestApiService.js\";\nimport { brandSaleApi } from \"../../../apis/brand-sale/BrandSaleApiService.js\";\nimport { displayBffApi } from \"../../../apis/display-bff/DisplayBffApiService.js\";\nimport { framerApi } from \"../../../apis/framer/FramerApiService.js\";\nimport { preuserApi } from \"../../../apis/preuser/PreuserApiService.js\";\nimport { recommendApi } from \"../../../apis/recommend/RecommendApiService.js\";\nimport \"../../../hooks/stores/content/content.store.js\";\nimport \"../../../utils/event-properties/source.js\";\nimport { isCanvas } from \"../../../utils/framer/isCanvas.js\";\nimport { isFramerPreview } from \"../../../utils/framer/isFramerPreview.js\";\nimport { splitToNumberArray } from \"../../../utils/splitToNumberArray.js\";\nimport { MOCK_PRODUCTS } from \"../mock.js\";\nimport { QueryType, RankingType } from \"../types.js\";\nimport { createMolocoKey } from \"../utils/key.js\";\nimport last from \"../../../node_modules/lodash-es/last.js\";\nconst BRAND_CURATION_PRODUCTS_MAX_SIZE = 60;\nconst RECOMMENDATION_PRODUCTS_MAX_SIZE = 60;\nconst RANKING_PRODUCTS_PER_REQUEST = 24;\nconst RANKING_PRODUCTS_MAX_SIZE = 100;\nconst RANKING_PRODUCTS_DEFAULT_AGE = 30;\nconst getInitialPaginationOptions = (size) => ({\n  page: 1,\n  size\n});\nconst useMolocoProductsQuery = (options) => {\n  const {\n    enabled: _enabled = true,\n    query\n  } = options;\n  const enabled = _enabled && query !== void 0;\n  const cacheKey = enabled && query ? createMolocoKey(query) : null;\n  const {\n    data,\n    isLoading,\n    ...rest\n  } = useSWR(cacheKey, () => fetchMolocoItems(query));\n  const products = useMemo(() => (data == null ? void 0 : data.products) ?? [], [data]);\n  return {\n    isLoading: isLoading || !enabled,\n    products,\n    hasNext: false,\n    page: 1,\n    fetchNextPage: () => {\n    },\n    ...rest\n  };\n};\nconst useProductsQuery = (options) => {\n  const {\n    enabled: _enabled = true,\n    query,\n    size: _size,\n    userSegment\n  } = options;\n  const enabled = _enabled && query !== void 0;\n  const {\n    isLoading,\n    data,\n    size,\n    setSize,\n    ...rest\n  } = useSWRInfinite(getKey(query, getInitialPaginationOptions(_size), enabled), ({\n    key\n  }) => queryProducts(key.query, userSegment, key.pagination));\n  const products = useMemo(() => (data == null ? void 0 : data.flatMap((item) => item.products)) ?? [], [data]);\n  const {\n    hasNext = false\n  } = last(data) ?? {};\n  const fetchNextPage = () => {\n    if (!hasNext) {\n      return;\n    }\n    setSize((prev) => prev + 1);\n  };\n  return {\n    isLoading: isLoading || !enabled,\n    products,\n    hasNext,\n    page: size,\n    fetchNextPage,\n    ...rest\n  };\n};\nconst fetchProducts = async (query, options) => {\n  if (!query.productIds) {\n    return {\n      hasNext: false,\n      products: []\n    };\n  }\n  const {\n    page,\n    size\n  } = options;\n  const offset = page * size;\n  const productIds = splitToNumberArray(query.productIds);\n  const skipped = productIds.slice(offset, productIds.length);\n  const took = skipped.slice(0, size);\n  const hasNext = skipped.length > took.length;\n  const products = await framerApi.getFramerProductListV2(took);\n  return {\n    hasNext,\n    products\n  };\n};\nconst fetchKeywordCollectionProducts = async (query, options) => {\n  var _a, _b;\n  if (!query.keywordCollectionId) {\n    return {\n      hasNext: false,\n      products: []\n    };\n  }\n  const keywordCollectionId = Number(query.keywordCollectionId);\n  const {\n    hasNext,\n    resultList\n  } = await keywordCollectionApi.getCollectionProducts({\n    collectionId: keywordCollectionId,\n    productGroupId: ((_a = query.selectedProductGroup) == null ? void 0 : _a.id) ?? await fetchFirstProductGroupId(keywordCollectionId),\n    sort: ((_b = query.selectedProductGroup) == null ? void 0 : _b.sort) ?? SortType.FEATURED,\n    ...options\n  });\n  return {\n    hasNext,\n    products: resultList\n  };\n};\nconst fetchFirstProductGroupId = async (keywordCollectionId) => {\n  const {\n    data\n  } = await keywordCollectionApi.getKeywordCollection(keywordCollectionId);\n  const [{\n    productGroupId\n  }] = data.productGroups;\n  return productGroupId;\n};\nconst fetchBrandCurationProducts = async (query, options) => {\n  if (!query.brandId) {\n    return {\n      hasNext: false,\n      products: []\n    };\n  }\n  const tagIds = splitToNumberArray(query.brandCurationTagIds);\n  const {\n    products\n  } = await bestApi.getRankedProducts({\n    facetGroupInput: {\n      brandFacetInputs: [{\n        frontBrandNo: query.brandId\n      }],\n      rankingFacetInput: {\n        type: \"POPULARITY\"\n      },\n      periodFacetInput: {\n        type: \"HOURLY\",\n        order: \"DESC\"\n      },\n      stockFacetInputs: [{\n        type: \"IN_STOCK\"\n      }],\n      tagFacetInputs: tagIds.map((tagId) => ({\n        tagId\n      }))\n    },\n    pagination: options\n  });\n  const hasNext = options.page * options.size < BRAND_CURATION_PRODUCTS_MAX_SIZE;\n  return {\n    hasNext,\n    products\n  };\n};\nconst fetchRecommendationProducts = async (query) => {\n  if (!query.recommendationTagIds) {\n    return {\n      hasNext: false,\n      products: []\n    };\n  }\n  if (isCanvas() || isFramerPreview()) {\n    return {\n      hasNext: false,\n      products: MOCK_PRODUCTS\n    };\n  }\n  const tagIds = splitToNumberArray(query.recommendationTagIds).join(\",\");\n  const {\n    data\n  } = await recommendApi.getRecommendedProductsByTagId({\n    limit: RECOMMENDATION_PRODUCTS_MAX_SIZE,\n    tagIds: tagIds || void 0\n  });\n  return {\n    // NOTE(임규민): 개인화 추천 API 는 페이지네이션을 지원하지 않으므로 hasNext 를 false 로 둔다.\n    hasNext: false,\n    products: data.products\n  };\n};\nconst fetchRankingProducts = async (query, userSegment, options) => {\n  if (!query.rankingTagIds) {\n    return {\n      hasNext: false,\n      products: []\n    };\n  }\n  const isTrending = query.rankingType === RankingType.Trending;\n  const hasLargeCategoryId = query.largeCategoryId !== void 0;\n  const hasMiddleCategoryId = query.middleCategoryId !== void 0;\n  const tagIds = splitToNumberArray(query.rankingTagIds);\n  const {\n    products\n  } = await bestApi.getRankedProducts({\n    facetGroupInput: {\n      categoryFacetInputs: hasLargeCategoryId ? [{\n        largeId: query.largeCategoryId,\n        ...hasMiddleCategoryId ? {\n          middleId: query.middleCategoryId\n        } : void 0\n      }] : [],\n      tagFacetInputs: tagIds.map((tagId) => ({\n        tagId\n      })),\n      rankingFacetInput: {\n        type: query.rankingType\n      },\n      periodFacetInput: {\n        type: isTrending ? query.trendingPeriodType : query.popularityPeriodType,\n        order: \"DESC\"\n      }\n    },\n    userSegment: {\n      gender: userSegment.gender ?? \"F\",\n      age: RANKING_PRODUCTS_DEFAULT_AGE\n    },\n    pagination: {\n      ...options,\n      size: RANKING_PRODUCTS_PER_REQUEST\n    }\n  });\n  const hasNext = options.page * options.size < RANKING_PRODUCTS_MAX_SIZE;\n  return {\n    hasNext,\n    products\n  };\n};\nconst fetchCouponCollectionProducts = async (query, options) => {\n  if (!query.couponCollectionId) {\n    return {\n      hasNext: false,\n      products: []\n    };\n  }\n  const {\n    hasNext,\n    resultList\n  } = await brandSaleApi.getCouponCollectionProducts(query.couponCollectionId, {\n    ...options,\n    sort: SortType.BEST\n  });\n  return {\n    hasNext,\n    products: resultList\n  };\n};\nconst fetchPreuserProducts = async (query) => {\n  if (!query.preuserIds) {\n    return {\n      hasNext: false,\n      products: []\n    };\n  }\n  const preuserIds = splitToNumberArray(query.preuserIds);\n  const {\n    products\n  } = await preuserApi.getPreuser(preuserIds);\n  return {\n    hasNext: false,\n    products\n  };\n};\nconst fetchMolocoItems = async (query) => {\n  if (!query.tagId) {\n    return {\n      hasNext: false,\n      products: []\n    };\n  }\n  if (isCanvas() || isFramerPreview()) {\n    const MOCK_TABS = [\"추천\", \"신상품\", \"베스트\"];\n    const allProducts2 = MOCK_TABS.flatMap((tabName) => MOCK_PRODUCTS.map((product) => ({\n      ...product,\n      molocoTab: tabName\n    })));\n    return {\n      hasNext: false,\n      products: allProducts2\n    };\n  }\n  const {\n    categories\n  } = query;\n  const categoryCodes = (categories == null ? void 0 : categories.map((category) => category.categoryId)) || [];\n  const {\n    data\n  } = await displayBffApi.getItems({\n    tagIds: [Number(query.tagId)],\n    inventoryId: query.inventoryId || \"\",\n    pageId: query.pageId || \"\",\n    categoryCodes\n  });\n  const allProducts = data.tabs.flatMap((tab, tabIndex) => tab.items.map((item) => {\n    var _a;\n    return {\n      // 기본 상품 정보 매핑\n      frontBrand: {\n        frontBrandId: item.itemInfo.brandId,\n        nameKor: item.itemInfo.brandName,\n        nameEng: \"\"\n      },\n      productId: item.itemId,\n      productName: item.itemInfo.productName,\n      subjectDescriptions: [],\n      imageUrl: item.itemInfo.thumbnailUrl,\n      consumerPrice: item.itemInfo.originalPrice,\n      lastSalePrice: item.itemInfo.displayPrice,\n      lastSalePercent: item.itemInfo.saleRate,\n      heartCount: item.itemInfo.likeCount,\n      heartOn: item.itemInfo.isLiked,\n      reviewAveragePoint: item.itemInfo.reviewScore,\n      reviewCount: item.itemInfo.reviewCount,\n      isCoupon: false,\n      isFreeShipping: false,\n      isNew: false,\n      isSoldOut: item.itemInfo.isSoldOut,\n      frontCategories: item.itemInfo.extraInfo.categories.map((cat) => ({\n        largeCategoryCode: cat.largeCategoryCode,\n        mediumCategoryCode: cat.mediumCategoryCode,\n        smallCategoryCode: cat.smallCategoryCode\n      })),\n      // 메타데이터: 이 상품이 어느 탭(facet)에서 온 것인지 표시\n      // 컴포넌트에서 query.facetName과 비교하여 필터링에 사용됨\n      molocoTab: ((_a = categories == null ? void 0 : categories[tabIndex]) == null ? void 0 : _a.categoryName) ?? tab.text,\n      // Moloco 트래커 이벤트 데이터 (impression/onClick)\n      itemEvent: item.itemEvent\n    };\n  }));\n  return {\n    hasNext: false,\n    products: allProducts\n  };\n};\nconst fetchRankingCategoryProducts = async (query, options) => {\n  var _a;\n  const categoryIds = (_a = query.categoryIds) == null ? void 0 : _a.map((category) => ({\n    largeId: Number(category.largeCategoryId),\n    ...category.middleCategoryId ? {\n      middleId: Number(category.middleCategoryId)\n    } : void 0\n  }));\n  const hasLargeCategoryId = categoryIds == null ? void 0 : categoryIds.some((category) => category.largeId !== void 0);\n  const tagIds = query.recommendationTagIds ? splitToNumberArray(query.recommendationTagIds) : [];\n  const {\n    products\n  } = await bestApi.getRankedProducts({\n    facetGroupInput: {\n      categoryFacetInputs: hasLargeCategoryId ? categoryIds : [],\n      tagFacetInputs: tagIds.length > 0 ? tagIds.map((tagId) => ({\n        tagId\n      })) : void 0,\n      rankingFacetInput: {\n        type: query.rankingType\n      },\n      periodFacetInput: {\n        type: query.popularityPeriodType,\n        order: \"DESC\"\n      }\n    },\n    userSegment: {\n      gender: query.gender === \"all\" ? void 0 : query.gender,\n      age: query.age === \"all\" ? void 0 : Number(query.age)\n    },\n    pagination: {\n      ...options,\n      size: RANKING_PRODUCTS_PER_REQUEST\n    }\n  });\n  const hasNext = options.page * options.size < RANKING_PRODUCTS_MAX_SIZE;\n  return {\n    hasNext,\n    products\n  };\n};\nconst queryProducts = (query, userSegment, options) => {\n  switch (query.type) {\n    case QueryType.Product:\n      return fetchProducts(query, options);\n    case QueryType.KeywordCollection:\n      return fetchKeywordCollectionProducts(query, options);\n    case QueryType.BrandCuration:\n      return fetchBrandCurationProducts(query, options);\n    case QueryType.Recommendation:\n      return fetchRecommendationProducts(query);\n    case QueryType.Ranking:\n      return fetchRankingProducts(query, userSegment, options);\n    case QueryType.CouponCollection:\n      return fetchCouponCollectionProducts(query, options);\n    case QueryType.Preuser:\n      return fetchPreuserProducts(query);\n    case QueryType.CustomCategory:\n      return fetchRankingCategoryProducts(query, options);\n    case QueryType.Moloco:\n      return fetchMolocoItems(query);\n    default:\n      return {\n        hasNext: false,\n        products: []\n      };\n  }\n};\nconst getKey = (query, options, enabled) => (pageIndex) => {\n  if (!enabled || query === void 0) {\n    return null;\n  }\n  return {\n    key: {\n      query,\n      // 전체 query 사용\n      pagination: {\n        ...options,\n        page: pageIndex\n      }\n    }\n  };\n};\nexport {\n  useMolocoProductsQuery,\n  useProductsQuery\n};\n","import { useSegment } from \"../../../@shared/providers/SegmentProvider/SegmentProvider.js\";\nimport { QueryType } from \"../../types.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 \"../../../../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 \"../../../../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/jsx-runtime\";\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 { useSendProductIds } from \"../../../../hooks/product/useSendProductIds.js\";\nimport \"../../../../constants/snowplow/snowplowSchema.js\";\nimport \"../ProductsElementProvider/ProductsElementProvider.js\";\nimport { useProductsElementContext } from \"../ProductsElementProvider/ProductsElementProvider.hooks.js\";\nimport { useMolocoProductsQuery, useProductsQuery } from \"../ProductsModule.hooks.js\";\nconst useProducts = () => {\n  const user = useCurrentUser();\n  const {\n    isInView\n  } = useIntersectionContext();\n  const {\n    query,\n    size\n  } = useProductsElementContext();\n  const {\n    isVisible\n  } = useSegment();\n  const isMoloco = (query == null ? void 0 : query.type) === QueryType.Moloco;\n  const molocoOptions = {\n    query,\n    size,\n    userSegment: user,\n    enabled: isMoloco && isInView && isVisible\n  };\n  const infiniteOptions = {\n    query,\n    size,\n    userSegment: user,\n    enabled: !isMoloco && isInView && isVisible\n  };\n  const molocoResult = useMolocoProductsQuery(molocoOptions);\n  const infiniteResult = useProductsQuery(infiniteOptions);\n  return isMoloco ? molocoResult : infiniteResult;\n};\nconst useSendProductsElementIds = (query) => {\n  useSendProductIds(getProductIds(query));\n};\nconst getProductIds = (query) => {\n  if (!query) {\n    return \"\";\n  }\n  switch (query.type) {\n    case QueryType.Product:\n      return query.productIds;\n    default:\n      return \"\";\n  }\n};\nexport {\n  useProducts,\n  useSendProductsElementIds\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { Button as Default } from \"../../../../../@shared/Button/Button.js\";\nimport { useProducts } from \"../../ProductsElement.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 \"../../../../../../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\";\nconst ExpandButtonElement = ({\n  pagination,\n  style,\n  ...rest\n}) => {\n  const theme = useTheme();\n  const {\n    page,\n    fetchNextPage,\n    hasNext\n  } = useProducts();\n  const {\n    button,\n    gap\n  } = pagination;\n  const text = button.texts[page - 1];\n  if (text === void 0 || !hasNext) {\n    return null;\n  }\n  return /* @__PURE__ */ jsx(\"div\", { ...rest, style: {\n    ...containerStyle,\n    marginTop: gap,\n    ...style\n  }, children: /* @__PURE__ */ jsx(Default, { ...button, theme, onClick: fetchNextPage, children: text }) });\n};\nconst containerStyle = {\n  display: \"flex\",\n  justifyContent: \"center\",\n  width: \"100%\"\n};\nexport {\n  ExpandButtonElement\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { PaginationType } from \"../../../ProductsModule.types.js\";\nimport { ExpandButtonElement } from \"../ExpandButtonElement/ExpandButtonElement.js\";\nconst VerticalPaginationElement = ({\n  pagination,\n  ...rest\n}) => {\n  if (pagination !== void 0) {\n    switch (pagination.type) {\n      case PaginationType.Default:\n        return null;\n      case PaginationType.ExpandButton:\n        return /* @__PURE__ */ jsx(ExpandButtonElement, { ...rest, pagination });\n      case PaginationType.None:\n        return null;\n    }\n  }\n  return null;\n};\nexport {\n  VerticalPaginationElement\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { ScrollDirection } from \"../../ProductsModule.types.js\";\nimport { VerticalPaginationElement } from \"./VerticalPaginationElement/VerticalPaginationElement.js\";\nconst PaginationElement = ({\n  layout,\n  ...rest\n}) => {\n  switch (layout.direction) {\n    case ScrollDirection.Vertical:\n      return /* @__PURE__ */ jsx(VerticalPaginationElement, { ...rest, pagination: layout.verticalPagination });\n    default:\n      return null;\n  }\n};\nexport {\n  PaginationElement\n};\n","import \"../../../../hooks/stores/content/content.store.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { isCanvas } from \"../../../../utils/framer/isCanvas.js\";\nimport \"framer\";\nimport \"react\";\nimport { ScrollDirection, PaginationType } from \"../ProductsModule.types.js\";\nimport { PRODUCTS_PER_REQUEST } from \"../ProductsModule.constants.js\";\nconst getScrollMargin = (layout) => {\n  switch (layout.direction) {\n    case ScrollDirection.Vertical:\n      return layout.scrollMargin;\n    case ScrollDirection.Horizontal:\n      return 0;\n  }\n};\nconst isElementCrossed = (element, upper = 0) => {\n  const top = (element == null ? void 0 : element.getBoundingClientRect().top) ?? 0;\n  return top - upper <= 0;\n};\nconst initializeScroll = (element, layout) => {\n  setTimeout(() => {\n    if (layout.direction === ScrollDirection.Vertical && isElementCrossed(element, getScrollMargin(layout))) {\n      element == null ? void 0 : element.scrollIntoView({\n        block: \"start\",\n        inline: \"nearest\"\n      });\n    }\n    if (layout.direction === ScrollDirection.Horizontal) {\n      element == null ? void 0 : element.scrollTo({\n        left: 0\n      });\n    }\n  });\n};\nconst isExpandable = (pagination, page) => {\n  return pagination.button.texts[page - 1] !== void 0;\n};\nconst getDisplayCount = (layout, page) => {\n  if (layout.direction === ScrollDirection.Vertical && layout.verticalPagination !== void 0) {\n    switch (layout.verticalPagination.type) {\n      case PaginationType.ExpandButton:\n        return isExpandable(layout.verticalPagination, page) ? layout.verticalPagination.rowDisplayCount * layout.columnCount * page : void 0;\n      case PaginationType.None:\n        return layout.verticalPagination.rowDisplayCount * layout.columnCount * page;\n      default:\n        return void 0;\n    }\n  }\n};\nconst canFetchOnLastItemView = (layout, page) => {\n  if (isCanvas()) {\n    return false;\n  }\n  if (layout.direction === ScrollDirection.Vertical && layout.verticalPagination !== void 0) {\n    switch (layout.verticalPagination.type) {\n      case PaginationType.Default:\n        return true;\n      case PaginationType.ExpandButton:\n        return !isExpandable(layout.verticalPagination, page);\n      case PaginationType.None:\n        return false;\n      default:\n        return true;\n    }\n  }\n  return true;\n};\nconst getRequestSize = (layout) => {\n  if (layout.direction === ScrollDirection.Horizontal || layout.isResponsive) {\n    return PRODUCTS_PER_REQUEST;\n  }\n  if (layout.verticalPagination.type === PaginationType.Default || layout.verticalPagination.type === PaginationType.None) {\n    return PRODUCTS_PER_REQUEST;\n  }\n  return layout.verticalPagination.rowDisplayCount * layout.columnCount;\n};\nexport {\n  canFetchOnLastItemView,\n  getDisplayCount,\n  getRequestSize,\n  getScrollMargin,\n  initializeScroll\n};\n","import { jsx, jsxs } from \"react/jsx-runtime\";\nimport { useRef, useMemo, useEffect } from \"react\";\nimport { EventTrigger } from \"../../../@shared/EventTrigger/index.js\";\nimport { ProductCardType } from \"../../../@shared/ProductCard/ProductCard.types.js\";\nimport { useSegment } from \"../../../@shared/providers/SegmentProvider/SegmentProvider.js\";\nimport { useRootComponentId } from \"../../hooks.js\";\nimport { QueryType } from \"../../types.js\";\nimport { Products } from \"../../../systems/curations/Products/index.js\";\nimport { createOptionTemplate, getResponsiveWidth } from \"../../../systems/curations/Products/Root.utils.js\";\nimport \"../../../../hooks/stores/content/content.store.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { isCanvas } from \"../../../../utils/framer/isCanvas.js\";\nimport \"framer\";\nimport { hideClosestParentByFramerName } from \"../../../../utils/hideParentElement.js\";\nimport { getPadding } from \"../../../../utils/spacing.js\";\nimport { ProductsElementProvider } from \"../ProductsElementProvider/ProductsElementProvider.js\";\nimport { PRODUCTS_PER_REQUEST } from \"../ProductsModule.constants.js\";\nimport { ScrollDirection } from \"../ProductsModule.types.js\";\nimport { PaginationElement } from \"./PaginationElement/PaginationElement.js\";\nimport { useProducts, useSendProductsElementIds } from \"./ProductsElement.hooks.js\";\nimport { getDisplayCount, initializeScroll, getScrollMargin, canFetchOnLastItemView, getRequestSize } from \"./ProductsElement.utils.js\";\nconst ProductsElementInner = ({\n  query,\n  layout\n}) => {\n  const componentId = useRootComponentId(query);\n  const ref = useRef(null);\n  const {\n    isLoading,\n    hasNext,\n    products: _products,\n    page,\n    fetchNextPage\n  } = useProducts();\n  const {\n    isVisible\n  } = useSegment();\n  useSendProductsElementIds(query);\n  const totalProductsLength = _products.length;\n  const loading = isLoading || isCanvas() && totalProductsLength === 0;\n  const displayCount = getDisplayCount(layout, page);\n  const products = useMemo(() => {\n    const filteredProducts = (query == null ? void 0 : query.type) === QueryType.Moloco && query.facetName ? _products.filter((p) => p.molocoTab === query.facetName) : _products;\n    return filteredProducts.slice(0, displayCount).slice(0, isCanvas() ? PRODUCTS_PER_REQUEST : void 0);\n  }, [_products, query, displayCount]);\n  useEffect(() => {\n    initializeScroll(ref.current, layout);\n    window == null ? void 0 : window.dispatchEvent(new Event(\"layout-done\"));\n  }, [query]);\n  useEffect(() => {\n    if (ref.current) {\n      hideClosestParentByFramerName(ref.current, \"광고\", isVisible);\n    }\n  }, [isVisible]);\n  const padding = getPadding(layout);\n  const hasScroll = layout.direction === ScrollDirection.Horizontal && layout.hasScroll;\n  const variant = (query == null ? void 0 : query.type) === QueryType.Preuser ? \"preuser\" : \"default\";\n  if (!isVisible) {\n    window == null ? void 0 : window.dispatchEvent(new Event(\"layout-done\"));\n    return /* @__PURE__ */ jsx(\"div\", { ref });\n  }\n  return /* @__PURE__ */ jsxs(\"div\", { ref, style: {\n    ...containerStyle,\n    paddingTop: padding.top,\n    paddingBottom: padding.bottom,\n    scrollMarginTop: getScrollMargin(layout)\n  }, children: [\n    /* @__PURE__ */ jsx(Products.Root, { loading, padding: {\n      right: padding.right,\n      left: padding.left\n    }, listStyle: hasScroll ? {\n      msOverflowStyle: \"initial\",\n      scrollbarWidth: \"initial\",\n      paddingBottom: \"16px\"\n    } : void 0, options: createOptions(layout), products, hasNext, onLastItemView: canFetchOnLastItemView(layout, page) ? fetchNextPage : void 0, children: ({\n      index\n    }) => /* @__PURE__ */ jsx(EventTrigger.Target, { children: /* @__PURE__ */ jsx(Products.Card, { style: cardStyle, index, componentName: componentId, variant, eventProperties: {\n      tagValue: query == null ? void 0 : query.facetName\n    } }) }) }),\n    /* @__PURE__ */ jsx(PaginationElement, { style: {\n      paddingLeft: padding.left,\n      paddingRight: padding.right\n    }, layout })\n  ] });\n};\nconst ProductsElement = (props) => {\n  return /* @__PURE__ */ jsx(ProductsElementProvider, { query: props.query, size: getRequestSize(props.layout), children: /* @__PURE__ */ jsx(ProductsElementInner, { ...props }) });\n};\nconst containerStyle = {\n  width: \"100%\",\n  display: \"flex\",\n  flexDirection: \"column\"\n};\nconst cardStyle = {\n  paddingBottom: 0\n};\nconst createOptions = (layout) => {\n  switch (layout.direction) {\n    case ScrollDirection.Vertical:\n      return createVerticalOptions(layout);\n    case ScrollDirection.Horizontal:\n      return createHorizontalOptions(layout);\n  }\n};\nconst createVerticalOptions = (layout) => {\n  switch (layout.cardType) {\n    case ProductCardType.CARD:\n    case ProductCardType.CARD_DETAILED:\n      return createOptionTemplate({\n        base: {\n          direction: layout.direction,\n          card: {\n            type: layout.cardType,\n            size: layout.size,\n            hasRank: layout.hasRank,\n            hasName: layout.hasName,\n            hasBrandName: layout.hasBrandName,\n            hasBadges: layout.hasBadges,\n            hasHeart: layout.hasHeart,\n            hasPriceUnit: false\n          },\n          column: {\n            gap: layout.columnGap,\n            width: layout.isResponsive ? void 0 : getResponsiveWidth(layout.columnGap, layout.columnCount),\n            minWidth: layout.isResponsive ? 185 : 0,\n            count: layout.isResponsive ? \"auto\" : layout.columnCount\n          },\n          row: {\n            displayCount: getDisplayCount(layout, 1),\n            gap: layout.rowGap\n          }\n        }\n      });\n    case ProductCardType.BAR:\n      return createOptionTemplate({\n        base: {\n          direction: layout.direction,\n          card: {\n            type: layout.cardType,\n            size: layout.size,\n            hasRank: layout.hasRank,\n            hasName: layout.hasName,\n            hasBrandName: layout.hasBrandName,\n            hasBadges: layout.hasBadges,\n            hasHeart: layout.hasHeart,\n            hasPriceUnit: false\n          },\n          column: {\n            gap: layout.columnGap,\n            width: layout.isResponsive ? void 0 : getResponsiveWidth(layout.columnGap, layout.columnCount),\n            minWidth: layout.isResponsive ? 300 + (layout.hasRank ? 40 : 0) : 0,\n            count: layout.isResponsive ? \"auto\" : layout.columnCount\n          },\n          row: {\n            displayCount: getDisplayCount(layout, 1),\n            gap: layout.rowGap\n          }\n        }\n      });\n  }\n};\nconst createHorizontalOptions = (layout) => {\n  switch (layout.cardType) {\n    case ProductCardType.CARD:\n    case ProductCardType.CARD_DETAILED:\n      return createOptionTemplate({\n        base: {\n          direction: layout.direction,\n          card: {\n            type: layout.cardType,\n            size: layout.size,\n            hasRank: layout.hasRank,\n            hasName: layout.hasName,\n            hasBrandName: layout.hasBrandName,\n            hasBadges: layout.hasBadges,\n            hasHeart: layout.hasHeart,\n            hasPriceUnit: false\n          },\n          column: {\n            gap: layout.columnGap,\n            displayCount: layout.columnDisplayCount,\n            width: getResponsiveWidth(layout.columnGap, layout.columnDisplayCount)\n          },\n          row: {\n            gap: layout.rowGap,\n            count: layout.rowCount\n          }\n        },\n        desktop: {\n          navigator: true\n        }\n      });\n    case ProductCardType.BAR:\n      return createOptionTemplate({\n        base: {\n          direction: layout.direction,\n          card: {\n            type: layout.cardType,\n            size: layout.size,\n            hasRank: layout.hasRank,\n            hasName: layout.hasName,\n            hasBrandName: layout.hasBrandName,\n            hasBadges: layout.hasBadges,\n            hasHeart: layout.hasHeart,\n            hasPriceUnit: false\n          },\n          column: {\n            gap: layout.columnGap,\n            displayCount: layout.columnDisplayCount\n          },\n          row: {\n            gap: layout.rowGap,\n            count: layout.rowCount\n          }\n        },\n        mobile: {\n          column: {\n            width: getResponsiveWidth(layout.columnGap, layout.columnDisplayCount, layout.hasRank ? 44 : 4)\n          }\n        },\n        tablet: {\n          column: {\n            width: getResponsiveWidth(layout.columnGap, layout.columnDisplayCount, layout.hasRank ? 60 : 20)\n          }\n        },\n        desktop: {\n          navigator: true,\n          column: {\n            width: getResponsiveWidth(layout.columnGap, layout.columnDisplayCount)\n          }\n        }\n      });\n  }\n};\nexport {\n  ProductsElement,\n  ProductsElementInner\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { useQueryStore } from \"../../query-store/query.store.js\";\nimport { ProductsElement } from \"../ProductsElement/ProductsElement.js\";\nimport { createKey } from \"../../utils/key.js\";\nconst LinkedProductsModule = ({\n  value,\n  layout\n}) => {\n  const query = useQueryStore((state) => state.queries[value]);\n  return /* @__PURE__ */ jsx(ProductsElement, { query, layout }, createKey(query));\n};\nexport {\n  LinkedProductsModule\n};\n","import { combineObjectPropertyControls } from \"../../../libs/property-controls/helpers.js\";\nimport { QUERY_CONTROL, PREUSER_CONTROLS, RANKING_CONTROLS, RECOMMENDATION_CONTROLS, KEYWORD_COLLECTION_CONTROLS, PRODUCT_CONTROLS } from \"../controls.js\";\nconst MANUAL_PRODUCTS_MODULE_QUERY = {\n  ...QUERY_CONTROL,\n  controls: combineObjectPropertyControls(PRODUCT_CONTROLS, KEYWORD_COLLECTION_CONTROLS, RECOMMENDATION_CONTROLS, RANKING_CONTROLS, PREUSER_CONTROLS)\n};\nexport {\n  MANUAL_PRODUCTS_MODULE_QUERY\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { addPropertyControls, ControlType } from \"framer\";\nimport { ButtonVariant, ButtonSize } from \"../../@shared/Button/Button.types.js\";\nimport { ProductCardType } from \"../../@shared/ProductCard/ProductCard.types.js\";\nimport { SWRErrorBoundary } from \"../../@shared/SWRErrorBoundary/SWRErrorBoundary.js\";\nimport { PREFIX_ICON_OPTIONS, POSTFIX_ICON_OPTIONS } from \"../../systems/Button/Button.constants.js\";\nimport { NoContent } from \"../../systems/curations/NoContent/NoContent.js\";\nimport { SectionLayout } from \"../../systems/curations/SectionLayout/SectionLayout.js\";\nimport { BREAKPOINT_CONTROLS } from \"../../../libs/property-controls/breakpoint.js\";\nimport { COMPONENT_ID_PROPS } from \"../../../libs/property-controls/component-id.js\";\nimport { SEGMENT_CONTROLS } from \"../../../libs/property-controls/segment.js\";\nimport { THEME_CONTROLS } from \"../../../libs/property-controls/theme.js\";\nimport { LinkedProductsModule } from \"./LinkedProductsModule/LinkedProductsModule.js\";\nimport { ProductsElement } from \"./ProductsElement/ProductsElement.js\";\nimport { MANUAL_PRODUCTS_MODULE_QUERY } from \"./ProductsModule.controls.js\";\nimport { ProductsModuleInputType, ScrollDirection, PaginationType } from \"./ProductsModule.types.js\";\nconst ProductsModuleInner = ({\n  input,\n  layout\n}) => {\n  switch (input.type) {\n    case ProductsModuleInputType.Linked:\n      return /* @__PURE__ */ jsx(LinkedProductsModule, { value: input.value, layout });\n    case ProductsModuleInputType.Manual:\n      return /* @__PURE__ */ jsx(ProductsElement, { query: input.query, layout });\n    default:\n      return null;\n  }\n};\nconst ProductsModule = ({\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(NoContent, { onClick: retry }), children: /* @__PURE__ */ jsx(ProductsModuleInner, { ...rest }) }) });\n};\naddPropertyControls(ProductsModule, {\n  ...BREAKPOINT_CONTROLS,\n  ...THEME_CONTROLS,\n  ...SEGMENT_CONTROLS,\n  ...COMPONENT_ID_PROPS,\n  input: {\n    type: ControlType.Object,\n    title: \"입력 값\",\n    controls: {\n      type: {\n        type: ControlType.Enum,\n        title: \"유형\",\n        options: [ProductsModuleInputType.Linked, ProductsModuleInputType.Manual],\n        optionTitles: [\"연결\", \"수동\"]\n      },\n      value: {\n        hidden: ({\n          type\n        }) => type !== ProductsModuleInputType.Linked,\n        type: ControlType.String,\n        title: \"출력 값\",\n        defaultValue: \"\"\n      },\n      query: {\n        hidden: ({\n          type\n        }) => type !== ProductsModuleInputType.Manual,\n        ...MANUAL_PRODUCTS_MODULE_QUERY\n      }\n    }\n  },\n  layout: {\n    type: ControlType.Object,\n    title: \"레이아웃\",\n    controls: {\n      direction: {\n        type: ControlType.Enum,\n        title: \"스크롤 방향\",\n        options: [\"horizontal\", \"vertical\"],\n        optionTitles: [\"수평\", \"수직\"]\n      },\n      cardType: {\n        type: ControlType.Enum,\n        title: \"카드 유형\",\n        options: [ProductCardType.CARD, ProductCardType.CARD_DETAILED, ProductCardType.BAR],\n        optionTitles: [\"compact-card\", \"card\", \"horizontal-card\"]\n      },\n      size: {\n        hidden: ({\n          cardType\n        }) => cardType === ProductCardType.CARD || cardType === ProductCardType.CARD_DETAILED,\n        type: ControlType.Enum,\n        title: \"크기\",\n        options: [\"small\", \"medium\"],\n        optionTitles: [\"small\", \"medium\"],\n        defaultValue: \"medium\"\n      },\n      hasRank: {\n        type: ControlType.Boolean,\n        title: \"순위 노출\",\n        defaultValue: false\n      },\n      hasName: {\n        type: ControlType.Boolean,\n        title: \"상품명 노출\",\n        defaultValue: true\n      },\n      hasBrandName: {\n        type: ControlType.Boolean,\n        title: \"브랜드명 노출\",\n        defaultValue: true\n      },\n      hasBadges: {\n        type: ControlType.Boolean,\n        title: \"뱃지 노출\",\n        defaultValue: true\n      },\n      hasHeart: {\n        type: ControlType.Boolean,\n        title: \"좋아요 노출\",\n        defaultValue: true\n      },\n      // 수평\n      rowCount: {\n        hidden: ({\n          direction\n        }) => direction !== ScrollDirection.Horizontal,\n        type: ControlType.Number,\n        title: \"행 개수\",\n        unit: \"개\",\n        defaultValue: 2,\n        min: 1,\n        max: 10\n      },\n      columnDisplayCount: {\n        hidden: ({\n          direction\n        }) => direction !== ScrollDirection.Horizontal,\n        type: ControlType.Number,\n        title: \"노출 열 개수\",\n        unit: \"개\",\n        description: \"뷰포트에 노출될 열 개수를 설정할 수 있습니다.\",\n        defaultValue: 3,\n        min: 1,\n        max: 6\n      },\n      hasScroll: {\n        hidden: ({\n          direction\n        }) => direction !== ScrollDirection.Horizontal,\n        type: ControlType.Boolean,\n        title: \"스크롤 노출\",\n        defaultValue: false\n      },\n      // 수직\n      isResponsive: {\n        hidden: ({\n          direction\n        }) => direction !== ScrollDirection.Vertical,\n        type: ControlType.Boolean,\n        title: \"반응형\",\n        defaultValue: false\n      },\n      columnCount: {\n        hidden: ({\n          direction,\n          isResponsive\n        }) => direction !== ScrollDirection.Vertical || isResponsive === true,\n        type: ControlType.Number,\n        title: \"열 개수\",\n        unit: \"개\",\n        defaultValue: 2,\n        min: 1,\n        max: 6\n      },\n      scrollMargin: {\n        hidden: ({\n          direction\n        }) => direction !== ScrollDirection.Vertical,\n        type: ControlType.Number,\n        title: \"스크롤 마진\",\n        description: \"자동 스크롤 이동 시 위치 보정 값을 설정할 수 있습니다.\",\n        unit: \"px\",\n        defaultValue: 0\n      },\n      verticalPagination: {\n        hidden: ({\n          direction\n        }) => direction !== ScrollDirection.Vertical,\n        type: ControlType.Object,\n        title: \"페이지네이션\",\n        controls: {\n          type: {\n            type: ControlType.Enum,\n            title: \"유형\",\n            options: [PaginationType.Default, PaginationType.ExpandButton, PaginationType.None],\n            optionTitles: [\"기본\", \"더보기 버튼\", \"없음\"]\n          },\n          gap: {\n            hidden: ({\n              type\n            }) => type !== PaginationType.ExpandButton,\n            type: ControlType.Number,\n            title: \"간격\",\n            description: \"상품 UI 와 페이징 UI 간의 간격을 설정할 수 있습니다.\",\n            unit: \"px\",\n            defaultValue: 16,\n            min: 0,\n            max: 50\n          },\n          rowDisplayCount: {\n            hidden: ({\n              type\n            }) => type === PaginationType.Default,\n            type: ControlType.Number,\n            title: \"노출 행 개수\",\n            description: \"(더보기 마다)노출할 행 개수를 설정할 수 있습니다.\",\n            unit: \"개\",\n            min: 1,\n            max: 10,\n            defaultValue: 4\n          },\n          button: {\n            hidden: ({\n              type\n            }) => type !== PaginationType.ExpandButton,\n            type: ControlType.Object,\n            title: \"버튼\",\n            controls: {\n              variant: {\n                type: ControlType.Enum,\n                title: \"변형\",\n                options: [ButtonVariant.PRIMARY, ButtonVariant.SECONDARY, ButtonVariant.TERTIARY],\n                optionTitles: [\"primary\", \"secondary\", \"tertiary\"]\n              },\n              size: {\n                type: ControlType.Enum,\n                title: \"크기\",\n                options: [ButtonSize.LARGE, ButtonSize.MEDIUM, ButtonSize.SMALL],\n                optionTitles: [\"large\", \"medium\", \"small\"],\n                defaultValue: ButtonSize.MEDIUM\n              },\n              fill: {\n                type: ControlType.Boolean,\n                title: \"채우기\",\n                defaultValue: false\n              },\n              prefixIcon: {\n                hidden: ({\n                  postfixIcon\n                }) => Boolean(postfixIcon),\n                type: ControlType.Enum,\n                title: \"좌측 아이콘\",\n                options: [void 0, ...PREFIX_ICON_OPTIONS],\n                optionTitles: [\"선택 안 함\", ...PREFIX_ICON_OPTIONS]\n              },\n              postfixIcon: {\n                hidden: ({\n                  prefixIcon\n                }) => Boolean(prefixIcon),\n                type: ControlType.Enum,\n                title: \"우측 아이콘\",\n                options: [void 0, ...POSTFIX_ICON_OPTIONS],\n                optionTitles: [\"선택 안 함\", ...POSTFIX_ICON_OPTIONS]\n              },\n              fillIcon: {\n                type: ControlType.Boolean,\n                title: \"아이콘 채우기\",\n                defaultValue: false\n              },\n              texts: {\n                type: ControlType.Array,\n                title: \"버튼 타이틀\",\n                defaultValue: [\"첫 번째 버튼\", \"두 번째 버튼\"],\n                control: {\n                  type: ControlType.String\n                }\n              }\n            }\n          }\n        }\n      },\n      // 공통\n      rowGap: {\n        type: ControlType.Number,\n        title: \"행 간격\",\n        unit: \"px\",\n        defaultValue: 16,\n        min: 0,\n        max: 50\n      },\n      columnGap: {\n        type: ControlType.Number,\n        title: \"열 간격\",\n        unit: \"px\",\n        defaultValue: 6,\n        min: 0,\n        max: 50\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  ProductsModule\n};\n","import{ProductsModule}from\"https://asset.29cm.co.kr/contents/framer/components/modules/ProductsModule/ProductsModule.js\";ProductsModule.displayName=\"[조립형]Products\";export default ProductsModule;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ProductsModule\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ProductsModule.map","var BadgeVariant = /* @__PURE__ */ ((BadgeVariant2) => {\n  BadgeVariant2[\"CUSTOM\"] = \"custom\";\n  BadgeVariant2[\"SYSTEM\"] = \"system\";\n  return BadgeVariant2;\n})(BadgeVariant || {});\nvar BadgePriority = /* @__PURE__ */ ((BadgePriority2) => {\n  BadgePriority2[\"PRIMARY\"] = \"primary\";\n  BadgePriority2[\"SECONDARY\"] = \"secondary\";\n  BadgePriority2[\"TERTIARY\"] = \"tertiary\";\n  return BadgePriority2;\n})(BadgePriority || {});\nvar BadgeTone = /* @__PURE__ */ ((BadgeTone2) => {\n  BadgeTone2[\"DEFAULT\"] = \"default\";\n  BadgeTone2[\"INFORMATION\"] = \"information\";\n  BadgeTone2[\"POSITIVE\"] = \"positive\";\n  BadgeTone2[\"NEGATIVE\"] = \"negative\";\n  return BadgeTone2;\n})(BadgeTone || {});\nvar BadgeSize = /* @__PURE__ */ ((BadgeSize2) => {\n  BadgeSize2[\"SMALL\"] = \"small\";\n  BadgeSize2[\"medium\"] = \"medium\";\n  return BadgeSize2;\n})(BadgeSize || {});\nexport {\n  BadgePriority,\n  BadgeSize,\n  BadgeTone,\n  BadgeVariant\n};\n","import { ControlType } from \"framer\";\nimport { BADGE_PREFIX_ICON_OPTIONS } from \"../../components/ruler/Badge/Badge.constants.js\";\nimport { BadgeVariant, BadgePriority, BadgeTone, BadgeSize } from \"../../components/ruler/Badge/Badge.types.js\";\nconst BADGE_CONTROL_ITEMS = {\n  variant: {\n    type: ControlType.Enum,\n    title: \"variant\",\n    options: [BadgeVariant.SYSTEM, BadgeVariant.CUSTOM],\n    defaultValue: BadgeVariant.SYSTEM\n  },\n  priority: {\n    type: ControlType.Enum,\n    title: \"priority\",\n    options: [BadgePriority.PRIMARY, BadgePriority.SECONDARY, BadgePriority.TERTIARY],\n    defaultValue: BadgePriority.PRIMARY\n  },\n  customBackgroundColor: {\n    hidden: ({\n      variant\n    }) => variant !== BadgeVariant.CUSTOM,\n    type: ControlType.Color,\n    title: \"배경 색상\",\n    defaultValue: \"#000000\"\n  },\n  customTextColor: {\n    hidden: ({\n      variant\n    }) => variant !== BadgeVariant.CUSTOM,\n    type: ControlType.Color,\n    title: \"텍스트 색상\",\n    defaultValue: \"#FFFFFF\"\n  },\n  tone: {\n    hidden: ({\n      variant\n    }) => variant === BadgeVariant.CUSTOM,\n    type: ControlType.Enum,\n    title: \"tone\",\n    options: [BadgeTone.DEFAULT, BadgeTone.INFORMATION, BadgeTone.NEGATIVE, BadgeTone.POSITIVE],\n    defaultValue: BadgeTone.DEFAULT\n  },\n  size: {\n    type: ControlType.Enum,\n    title: \"크기\",\n    options: [BadgeSize.SMALL, BadgeSize.medium],\n    defaultValue: BadgeSize.SMALL\n  },\n  isWhite: {\n    hidden: ({\n      variant\n    }) => variant === BadgeVariant.CUSTOM,\n    type: ControlType.Boolean,\n    defaultValue: false,\n    title: \"화이트 속성 여부\"\n  },\n  isBlur: {\n    hidden: ({\n      variant\n    }) => variant === BadgeVariant.CUSTOM,\n    type: ControlType.Boolean,\n    defaultValue: false,\n    title: \"투명도 여부\"\n  },\n  prefixIcon: {\n    type: ControlType.Enum,\n    title: \"좌측 아이콘\",\n    options: [void 0, ...BADGE_PREFIX_ICON_OPTIONS],\n    optionTitles: [\"선택 안 함\", ...BADGE_PREFIX_ICON_OPTIONS],\n    defaultValue: void 0\n  },\n  label: {\n    type: ControlType.String,\n    defaultValue: \"라벨 텍스트\",\n    title: \"라벨\"\n  }\n};\nconst BADGE_CONTROLS = {\n  badge: ControlType.Object,\n  title: \"뱃지\",\n  controls: BADGE_CONTROL_ITEMS\n};\nexport {\n  BADGE_CONTROLS,\n  BADGE_CONTROL_ITEMS\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { addPropertyControls } from \"framer\";\nimport { Badge } from \"../../ruler/Badge/Badge.js\";\nimport { BADGE_CONTROL_ITEMS } from \"../../../libs/property-controls/badge.js\";\nconst FramerBadge = (props) => {\n  return /* @__PURE__ */ jsx(Badge, { ...props });\n};\naddPropertyControls(FramerBadge, {\n  ...BADGE_CONTROL_ITEMS\n});\nexport {\n  FramerBadge\n};\n","import { FramerBadge } from \"./Badge.js\";\nexport {\n  FramerBadge as Badge\n};\n","/** local */// import { Badge } from \"https://localhost:4173/components/systems/Badge/Badge.js\"\n/** dev */// import { Badge } from \"https://asset.29cm.co.kr/contents/framer/dev/components/systems/Badge/Badge.js\"\n/** production */import{Badge}from\"https://asset.29cm.co.kr/contents/framer/components/systems/Badge/index.js\";/**\n * @framerDisableUnlink\n */export default Badge;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Badge\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./RulerBadge.map","import { jsx } from \"react/jsx-runtime\";\nimport { addPropertyControls, ControlType } from \"framer\";\nimport \"react\";\nimport \"framer-motion\";\nimport \"react-dom\";\nimport { Icon } from \"../../@shared/Icon/Icon.js\";\nimport * as index from \"../../@shared/Icon/assets/index.js\";\nconst ICON_OPTIONS = Object.keys(index);\nconst FramerIcon = (props) => {\n  return /* @__PURE__ */ jsx(\"div\", { style: {\n    lineHeight: 0\n  }, children: /* @__PURE__ */ jsx(Icon, { ...props }) });\n};\naddPropertyControls(FramerIcon, {\n  type: {\n    type: ControlType.Enum,\n    title: \"아이콘\",\n    options: ICON_OPTIONS\n  },\n  weight: {\n    type: ControlType.Enum,\n    title: \"두께\",\n    options: [\"bold\", \"regular\", \"light\"],\n    defaultValue: \"bold\"\n  },\n  color: {\n    type: ControlType.Color,\n    title: \"색상\",\n    optional: true\n  },\n  size: {\n    type: ControlType.Number,\n    title: \"크기\",\n    min: 0,\n    defaultValue: 24,\n    displayStepper: true\n  },\n  fill: {\n    type: ControlType.Boolean,\n    title: \"채우기\",\n    defaultValue: false\n  }\n});\nexport {\n  FramerIcon,\n  ICON_OPTIONS\n};\n","import{FramerIcon as Icon}from\"https://asset.29cm.co.kr/contents/framer/components/systems/Icon/Icon.js\";Icon.displayName=\"Icon\";/**\n * @framerDisableUnlink\n */export default Icon;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Icon.map","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","import{HeadlineModule}from\"https://asset.29cm.co.kr/contents/framer/components/modules/HeadlineModule/HeadlineModule.js\";HeadlineModule.displayName=\"[조립형]Headline\";export default HeadlineModule;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"HeadlineModule\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./HeadlineModule.map","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\";\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(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: \"로라로라\",\n    nameEng: \"rolarola\"\n  },\n  frontCategories: [{\n    largeCode: 268100100,\n    largeName: \"여성의류\",\n    mediumCode: 268103100,\n    mediumName: \"상의\",\n    smallCode: 268103101,\n    smallName: \"반소매 티셔츠\"\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 { createContentEventProperties } from \"../../../../utils/event-properties/content.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport \"framer\";\nimport \"react\";\nimport { createSearchParams } from \"../../../../utils/createSearchParams.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 \"../../../../apis/user-segment/CategoryFirstOrderApiService.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 \"../../../../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 \"../../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\";\nimport { PREVIOUS_SECTION_NAME_QUERY_STRING_KEY, PREVIOUS_SECTION_TITLE_QUERY_STRING_KEY, PREVIOUS_PAGE_NAME_QUERY_STRING_KEY, PREVIOUS_CONTENT_NO_QUERY_STRING_KEY } from \"../../../../constants/query-params.js\";\nconst moreButtonText = \"전체보기\";\nconst RecommendedProductCurationButton = ({\n  tagIds,\n  sectionTitle\n}) => {\n  const componentId = useComponentId();\n  const {\n    curr_screen,\n    content_no\n  } = createContentEventProperties();\n  const theme = useTheme();\n  const searchParams = createSearchParams({\n    tagIds: tagIds.join(\",\") || void 0,\n    [PREVIOUS_SECTION_NAME_QUERY_STRING_KEY]: componentId,\n    [PREVIOUS_SECTION_TITLE_QUERY_STRING_KEY]: sectionTitle,\n    [PREVIOUS_PAGE_NAME_QUERY_STRING_KEY]: curr_screen,\n    [PREVIOUS_CONTENT_NO_QUERY_STRING_KEY]: content_no\n  });\n  const recommendedDetailPageUrl = `${env.workspace.content}/recommendations-for-you?${searchParams}`;\n  const navigateRecommendDetailPage = useNavigatePage(recommendedDetailPageUrl, {\n    webview: {\n      home: true,\n      cart: false,\n      search: false,\n      title: \"당신에게 딱 맞는 추천\"\n    }\n  });\n  const trackSnowplowEvent = useTrackSnowplowEvent();\n  const handleClickButton = () => {\n    trackSnowplowEvent(\"click_button\", {\n      // TODO(한지원): section_name, position, layout_position 프로퍼티에 할당한 약속된 임의 값 수정\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 \"../../../../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 { 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: \"로그인이 필요해요\", descriptions: [\"당신에게 딱 맞는 추천 아이템이\", \"당신을 기다리고 있어요.\"] }),\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: \"로그인\" }) })\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 { jsxs, jsx } from \"react/jsx-runtime\";\nimport { addPropertyControls, ControlType } from \"framer\";\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 { isFramerPreview } from \"../../../../utils/framer/isFramerPreview.js\";\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 \"../../../../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 \"../../../../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 \"../../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 { RecommendedProducts } from \"./RecommendedProducts.js\";\nimport { RecommendedProductCurationButton } from \"./RecommendedProductCurationButton.js\";\nimport { SECTION_CONTROLS } from \"../../../../libs/property-controls/section.js\";\nimport { Headline } from \"../../Headline/Headline.js\";\nimport { SWRErrorBoundary } from \"../../../@shared/SWRErrorBoundary/SWRErrorBoundary.js\";\nimport { NoContent } from \"../NoContent/NoContent.js\";\nimport { SectionLayout } from \"../SectionLayout/SectionLayout.js\";\nimport { LoginActionFallback } from \"./LoginActionFallback.js\";\nimport { splitToNumberArray } from \"../../../../utils/splitToNumberArray.js\";\nconst RecommendedProductCuration = ({\n  componentId,\n  breakpoint,\n  theme,\n  headline,\n  stringTagIds = \"\"\n}) => {\n  const tagIds = splitToNumberArray(stringTagIds);\n  const {\n    logged\n  } = useCurrentUser();\n  const isFramer = isCanvas() || isFramerPreview();\n  const shouldRenderPersonalizedProducts = isFramer || logged;\n  return /* @__PURE__ */ jsxs(SectionLayout, { theme, breakpoint, componentId, children: [\n    /* @__PURE__ */ jsx(Headline, { ...headline, priority: \"primary\", action: shouldRenderPersonalizedProducts ? /* @__PURE__ */ jsx(RecommendedProductCurationButton, { tagIds, sectionTitle: headline.title }) : null }),\n    shouldRenderPersonalizedProducts ? /* @__PURE__ */ jsx(SWRErrorBoundary, { fallback: (retry) => /* @__PURE__ */ jsx(NoContent, { onClick: retry }), children: /* @__PURE__ */ jsx(RecommendedProducts, { isFramer, tagIds }) }) : /* @__PURE__ */ jsx(LoginActionFallback, {})\n  ] });\n};\naddPropertyControls(RecommendedProductCuration, {\n  ...SECTION_CONTROLS,\n  stringTagIds: {\n    title: \"기획전 태그 아이디\",\n    type: ControlType.String,\n    description: \"태그 아이디가 2개 이상일 경우 `,`로 구분\",\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=\"[완성형]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","import { jsx } from \"react/jsx-runtime\";\nimport { createContext, forwardRef } from \"react\";\nimport { ComponentName } from \"../../../styles/ComponentName.js\";\nimport { createWithStyle } from \"../../../styles/createWithStyle.js\";\nimport { css } from \"../../../styles/css.js\";\nimport { useFold } from \"./Root.hooks.js\";\nimport { cx } from \"framer\";\nimport { Skeleton } from \"../Skeleton/Skeleton.js\";\nconst {\n  classNames,\n  withStyle\n} = createWithStyle(ComponentName.FoldableListRoot, {\n  container: css`\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n  `\n});\nconst FoldableListContext = createContext(null);\nconst Root = withStyle(forwardRef(({\n  children,\n  className,\n  theme = \"light\",\n  pending = false,\n  ...rest\n}, ref) => {\n  const {\n    isFolded,\n    toggleFold\n  } = useFold();\n  if (pending) {\n    return /* @__PURE__ */ jsx(Skeleton, { style: {\n      ...skeletonStyle,\n      ...skeletonStyleByTheme[theme]\n    } });\n  }\n  return /* @__PURE__ */ jsx(FoldableListContext.Provider, { value: {\n    theme,\n    isFolded,\n    toggleFold\n  }, children: /* @__PURE__ */ jsx(\"div\", { className: cx(className, classNames.container), ref, ...rest, children }) });\n}));\nconst skeletonStyle = {\n  width: 100,\n  height: 20,\n  borderRadius: 4\n};\nconst skeletonStyleByTheme = {\n  light: {\n    backgroundColor: \"#dee2e6\"\n  },\n  dark: {\n    backgroundColor: \"#27272a\"\n  }\n};\nexport {\n  FoldableListContext,\n  Root\n};\n","import { useState, useContext } from \"react\";\nimport { FoldableListContext } from \"./Root.js\";\nconst useFold = () => {\n  const [isFolded, setIsFolded] = useState(true);\n  const toggleFold = () => {\n    setIsFolded((prev) => !prev);\n  };\n  return {\n    isFolded,\n    toggleFold\n  };\n};\nconst useFoldableListContext = () => {\n  const context = useContext(FoldableListContext);\n  if (!context) {\n    throw new Error(\"useFoldableListContext should be used within Root\");\n  }\n  return context;\n};\nexport {\n  useFold,\n  useFoldableListContext\n};\n","import { useAnimationControls } from \"framer-motion\";\nimport { useFoldableListContext } from \"./Root.hooks.js\";\nimport { useEffect } from \"react\";\nconst useFoldControls = () => {\n  const {\n    isFolded\n  } = useFoldableListContext();\n  const controls = useAnimationControls();\n  useEffect(() => {\n    if (isFolded) {\n      controls.start({\n        height: 0\n      });\n    } else {\n      controls.start({\n        height: \"auto\"\n      });\n    }\n  }, [isFolded]);\n  return controls;\n};\nexport {\n  useFoldControls\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport { ComponentName } from \"../../../styles/ComponentName.js\";\nimport { createWithStyle } from \"../../../styles/createWithStyle.js\";\nimport { css } from \"../../../styles/css.js\";\nimport { motion } from \"framer-motion\";\nimport { cx } from \"framer\";\nimport { useFoldControls } from \"./Content.hooks.js\";\nconst {\n  classNames,\n  withStyle\n} = createWithStyle(ComponentName.FoldableListContent, {\n  container: css`\n    display: flex;\n    flex-direction: column;\n    gap: 2px;\n    padding-top: 7px;\n  `\n});\nconst Content = withStyle(forwardRef(({\n  children,\n  className,\n  ...rest\n}, ref) => {\n  const controls = useFoldControls();\n  return /* @__PURE__ */ jsx(motion.div, { ref, initial: {\n    height: 0\n  }, animate: controls, style: {\n    overflow: \"hidden\"\n  }, transition: {\n    type: \"spring\",\n    stiffness: 500,\n    damping: 60,\n    mass: 1\n  }, children: /* @__PURE__ */ jsx(\"div\", { className: cx(className, classNames.container), ...rest, children }) });\n}));\nexport {\n  Content\n};\n","const textStyleByTheme = {\n  light: {\n    color: \"#474747\"\n  },\n  dark: {\n    color: \"#a0a0a0\"\n  }\n};\nexport {\n  textStyleByTheme\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { cx } from \"framer\";\nimport { forwardRef } from \"react\";\nimport { ComponentName } from \"../../../styles/ComponentName.js\";\nimport { createWithStyle } from \"../../../styles/createWithStyle.js\";\nimport { css } from \"../../../styles/css.js\";\nimport { typographyCSS } from \"../../../styles/typography.js\";\nimport { useFoldableListContext } from \"./Root.hooks.js\";\nimport { textStyleByTheme } from \"./Root.constants.js\";\nconst {\n  classNames,\n  withStyle\n} = createWithStyle(ComponentName.FoldableListItem, {\n  \"container\": css`\n    display: flex;\n\n    ${typographyCSS(12, 400)};\n\n    line-height: 1.6em;\n    white-space: pre-wrap;\n    word-break: keep-all;\n  `,\n  \"container::before\": css`\n    content: '•';\n    font-size: 16px;\n    margin-right: 6px;\n  `\n});\nconst Item = withStyle(forwardRef(({\n  children,\n  className,\n  style,\n  ...rest\n}, ref) => {\n  const {\n    theme\n  } = useFoldableListContext();\n  return /* @__PURE__ */ jsx(\"div\", { ref, className: cx(className, classNames.container), style: {\n    ...textStyleByTheme[theme],\n    ...style\n  }, ...rest, children });\n}));\nexport {\n  Item\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { forwardRef } from \"react\";\nimport { ComponentName } from \"../../../styles/ComponentName.js\";\nimport { createWithStyle } from \"../../../styles/createWithStyle.js\";\nimport { css } from \"../../../styles/css.js\";\nimport { typographyCSS } from \"../../../styles/typography.js\";\nimport { Icon } from \"../Icon/Icon.js\";\nimport { cx } from \"framer\";\nimport { useFoldableListContext } from \"./Root.hooks.js\";\nimport \"../../../hooks/stores/content/content.store.js\";\nimport \"../../../utils/event-properties/source.js\";\nimport { isCanvas } from \"../../../utils/framer/isCanvas.js\";\nimport { textStyleByTheme } from \"./Root.constants.js\";\nconst {\n  classNames,\n  withStyle\n} = createWithStyle(ComponentName.FoldableListTrigger, {\n  container: css`\n    display: flex;\n    align-items: center;\n    gap: 4px;\n    cursor: pointer;\n  `,\n  text: typographyCSS(14, 500, 1.6)\n});\nconst Trigger = withStyle(forwardRef(({\n  children,\n  className,\n  textStyle,\n  icons,\n  onClick,\n  ...rest\n}, ref) => {\n  const {\n    theme,\n    isFolded,\n    toggleFold\n  } = useFoldableListContext();\n  const {\n    initial = \"chevronDown\",\n    active = \"chevronUp\",\n    size = 14\n  } = icons ?? {};\n  const handleClick = (e) => {\n    onClick == null ? void 0 : onClick(e);\n    toggleFold();\n  };\n  return /* @__PURE__ */ jsxs(\"div\", { ref, className: cx(className, classNames.container), onClick: handleClick, ...rest, children: [\n    /* @__PURE__ */ jsx(\"div\", { className: classNames.text, style: {\n      ...textStyleByTheme[theme],\n      ...baseTextStyle,\n      ...textStyle\n    }, children }),\n    /* @__PURE__ */ jsx(AnimatePresence, { mode: \"wait\", children: /* @__PURE__ */ jsx(motion.div, { style: {\n      display: \"flex\",\n      alignItems: \"center\",\n      justifyContent: \"center\"\n    }, animate: {\n      opacity: 1\n    }, initial: {\n      opacity: isCanvas() ? 1 : 0\n    }, exit: {\n      opacity: 0\n    }, transition: {\n      duration: 0.2\n    }, children: /* @__PURE__ */ jsx(Icon, { type: isFolded ? initial : active, color: textStyleByTheme[theme].color, size, weight: \"bold\" }) }, isFolded ? \"plus\" : \"minus\") })\n  ] });\n}));\nconst baseTextStyle = {\n  minHeight: 20,\n  display: \"flex\",\n  alignItems: \"center\"\n};\nexport {\n  Trigger\n};\n","import { Content } from \"./Content.js\";\nimport { Item } from \"./Item.js\";\nimport { Root } from \"./Root.js\";\nimport { Trigger } from \"./Trigger.js\";\nconst FoldableList = {\n  Root,\n  Trigger,\n  Content,\n  Item\n};\nexport {\n  FoldableList\n};\n","const formatToCoupon = (coupon) => {\n  if (!coupon) {\n    return void 0;\n  }\n  return {\n    ...coupon,\n    id: coupon.couponId\n  };\n};\nexport {\n  formatToCoupon\n};\n","import { QueryType } from \"../types.js\";\nimport useSWR from \"../../../node_modules/swr/core/dist/index.js\";\nimport { couponApi } from \"../../../apis/coupon/CouponApiService.js\";\nimport { formatToCoupon } from \"./CouponModule.utils.js\";\nconst COUPONS_FETCHER_KEY = \"@coupon/coupons\";\nconst useCouponsQuery = ({\n  query,\n  couponIds,\n  enabled = true\n}) => {\n  const canFetch = couponIds.length > 0 && enabled && query !== void 0;\n  const {\n    data\n  } = useSWR(canFetch ? [COUPONS_FETCHER_KEY, couponIds] : null, () => queryCoupons(couponIds, query));\n  return {\n    coupons: (data == null ? void 0 : data.coupons) ?? []\n  };\n};\nconst fetchCoupons = async (couponIds) => {\n  const {\n    data\n  } = await couponApi.getCoupons(couponIds);\n  return {\n    coupons: data\n  };\n};\nconst fetchCouponCollectionCoupon = (query) => {\n  const coupon = formatToCoupon(query.coupon);\n  return {\n    coupons: coupon ? [coupon] : []\n  };\n};\nconst fetchKeywordCollectionCoupon = async (query) => {\n  if (!query.couponId) {\n    return {\n      coupons: []\n    };\n  }\n  const {\n    data\n  } = await couponApi.getCoupons([query.couponId]);\n  return {\n    coupons: data\n  };\n};\nconst queryCoupons = (couponIds, query) => {\n  if (query === void 0) {\n    return {\n      coupons: []\n    };\n  }\n  switch (query.type) {\n    case QueryType.Coupon:\n      return fetchCoupons(couponIds);\n    case QueryType.CouponCollection:\n      return fetchCouponCollectionCoupon(query);\n    case QueryType.KeywordCollection:\n      return fetchKeywordCollectionCoupon(query);\n    default:\n      return {\n        coupons: []\n      };\n  }\n};\nexport {\n  useCouponsQuery\n};\n","import { CouponType, DiscountType, AvailableDayType } from \"../../../../types/models/coupon.js\";\nimport { deduplicate } from \"../../../../utils/deduplicate.js\";\nimport head from \"../../../../node_modules/lodash-es/head.js\";\nimport { parseISO } from \"../../../../node_modules/date-fns/parseISO.js\";\nimport { formatDate as format } from \"../../../../node_modules/date-fns/format.js\";\nconst DATE_FORMAT = \"yyyy.MM.dd HH:mm\";\nconst HOURS_IN_DAY = 24;\nconst getCouponNotices = (couponType, coupons) => {\n  const coupon = head(coupons);\n  if (!coupon) {\n    return [];\n  }\n  const formattedAvailablePeriod = formatAvailablePeriod(coupon);\n  const formattedMaxDiscountPrice = formatMaxDiscountPrice(couponType, sortCouponsByDiscountValueAscending(coupons));\n  const maxIssueCountNotice = createMaxIssueCountNotice(coupon.personMaxIssueCount);\n  if (couponType === CouponType.RANDOM) {\n    return getRandomCouponNotices(formattedAvailablePeriod, formattedMaxDiscountPrice);\n  }\n  if (coupon.discountType === DiscountType.FIXED_RATE) {\n    return getRateCouponNotices(formattedAvailablePeriod, formattedMaxDiscountPrice, maxIssueCountNotice);\n  }\n  return getAmountCouponNotices(formattedAvailablePeriod, formattedMaxDiscountPrice, maxIssueCountNotice);\n};\nconst createMaxIssueCountNotice = (maxIssueCount) => {\n  if (!maxIssueCount) {\n    return \"\";\n  }\n  const hasMaxIssueCount = maxIssueCount > 0;\n  if (!hasMaxIssueCount) {\n    return \"쿠폰은 이벤트 기간 중복 발급 가능합니다.\";\n  }\n  return `쿠폰은 이벤트 기간 동안 하나의 ID 당 ${maxIssueCount}회 발급 및 사용 가능합니다.`;\n};\nconst formatMaxDiscountPrice = (couponType, coupons) => {\n  const hasMaxDiscountPrice = coupons.some((coupon2) => coupon2.maxDiscountPrice > 0);\n  if (!hasMaxDiscountPrice) {\n    return \"제한 없음\";\n  }\n  const [coupon] = coupons;\n  if (couponType === CouponType.RANDOM) {\n    return formatRandomCouponMaxDiscountPrice(coupons);\n  }\n  if (coupon.discountType === DiscountType.FIXED_PRICE) {\n    return formatAmountCouponMaxDiscountPrice(coupons);\n  }\n  return formatRateCouponMaxDiscountPrice(coupons);\n};\nconst formatRateCouponMaxDiscountPrice = (coupons) => {\n  return `${composeWithUnit(getMaxDiscountPrice(coupons), \"원\")}`;\n};\nconst formatAmountCouponMaxDiscountPrice = (coupons) => {\n  const uniquified = uniquifyCouponsByMinPayAmount(coupons);\n  const formatted = uniquified.reduce((acc, curr) => {\n    const {\n      maxDiscountPrice,\n      minPayAmount\n    } = curr;\n    acc.push(`${composeWithUnit(minPayAmount, \"원\")} 이상 구매 시 ${composeWithUnit(maxDiscountPrice, \"원\")} 할인`);\n    return acc;\n  }, []);\n  return formatted.join(\", \");\n};\nconst formatRandomCouponMaxDiscountPrice = (coupons) => {\n  const uniquified = uniquifyCouponsByDiscountValue(coupons);\n  const formatted = uniquified.reduce((acc, curr) => {\n    const {\n      discountType,\n      discountValue,\n      maxDiscountPrice\n    } = curr;\n    acc.push(`${composeWithUnitByType(discountType, discountValue)} 쿠폰 ${composeWithUnit(maxDiscountPrice, \"원\")} 할인`);\n    return acc;\n  }, []);\n  return formatted.join(\", \");\n};\nconst formatAvailablePeriod = (coupon) => {\n  if (coupon.useAvailableDayType === AvailableDayType.DAY) {\n    return `쿠폰 발급 후 ${coupon.couponUseAfterDay * HOURS_IN_DAY}시간 이내`;\n  }\n  if (coupon.useAvailableDayType === AvailableDayType.RANGE) {\n    const availableStartAt = parseISO(coupon.couponUseStartAt);\n    const availableEndAt = parseISO(coupon.couponUseEndAt);\n    return `${format(availableStartAt, DATE_FORMAT)} - ${format(availableEndAt, DATE_FORMAT)}`;\n  }\n  return \"없음\";\n};\nconst uniquifyCouponsByDiscountValue = (coupons) => {\n  return deduplicate(coupons, (x, y) => x.discountValue === y.discountValue && x.maxDiscountPrice === y.maxDiscountPrice);\n};\nconst uniquifyCouponsByMinPayAmount = (coupons) => {\n  return deduplicate(coupons, (x, y) => x.minPayAmount === y.minPayAmount && x.maxDiscountPrice === y.maxDiscountPrice);\n};\nconst sortCouponsByDiscountValueAscending = (coupons) => {\n  return [...coupons].sort((x, y) => x.discountValue - y.discountValue);\n};\nconst getMaxDiscountPrice = (coupons) => {\n  return Math.max(...coupons.map((coupon) => coupon.maxDiscountPrice));\n};\nconst RANDOM_COUPON_PERIOD_CUTOFF = new Date(2026, 1, 18, 10, 0, 0);\nconst getRandomCouponUseablePeriod = (now = /* @__PURE__ */ new Date()) => {\n  if (now >= RANDOM_COUPON_PERIOD_CUTOFF) {\n    return \"발급일 기준 당일 23:59 까지\";\n  }\n  return \"발급일 기준 익일 09:59 까지\";\n};\nconst getRandomCouponNotices = (_availablePeriod, maxDiscountPrice) => [`쿠폰 사용 기간 : ${getRandomCouponUseablePeriod()}`, `쿠폰 최대 할인 금액 : ${maxDiscountPrice}`, `다운로드한 쿠폰은 'MY PAGE > 사용 가능 쿠폰'에서 확인 가능합니다.`, `쿠폰을 사용한 이력이 있는 경우 쿠폰은 보이지 않습니다.`, `쿠폰 소멸, 발급 중단, 사용 완료된 쿠폰은 구매 취소 시 별도 재발급이 불가합니다.`, `브랜드 정책에 따라 일부 상품 쿠폰 적용이 불가할 수 있습니다.`];\nconst getRateCouponNotices = (availablePeriod, maxDiscountPrice, maxIssueCountNotice) => [`쿠폰 사용 기간 : ${availablePeriod}`, `쿠폰 최대 할인 금액 : ${maxDiscountPrice}`, maxIssueCountNotice, `다운로드한 쿠폰은 'MY PAGE > 사용 가능 쿠폰'에서 확인 가능합니다.`, `해당 쿠폰은 이벤트 참여 상품 대상으로만 적용 가능합니다.`, `쿠폰 적용 가능 상품은 수시로 변경되며, 일부 품목에 한하여 쿠폰 적용이 제한될 수 있습니다.`, `브랜드 재고 사정에 따라 품절이나 환불 안내를 받게 될 수 있습니다.`];\nconst getAmountCouponNotices = (availablePeriod, maxDiscountPrice, maxIssueCountNotice) => {\n  return [`쿠폰 사용 기간 : ${availablePeriod}`, `쿠폰 최대 할인 금액 : ${maxDiscountPrice}`, maxIssueCountNotice, `다운로드한 쿠폰은 'MY PAGE > 사용 가능 쿠폰'에서 확인 가능합니다.`, `해당 쿠폰은 이벤트 참여 상품 대상으로만 적용 가능합니다.`, `쿠폰 적용 가능 상품은 수시로 변경되며, 일부 품목에 한하여 쿠폰 적용이 제한될 수 있습니다.`, `브랜드 재고 사정에 따라 품절이나 환불 안내를 받게 될 수 있습니다.`];\n};\nconst composeWithUnitByType = (discountType, discountValue) => {\n  switch (discountType) {\n    case DiscountType.FIXED_RATE:\n      return composeWithUnit(discountValue, \"%\");\n    case DiscountType.FIXED_PRICE:\n      return composeWithUnit(discountValue, \"원\");\n  }\n};\nconst composeWithUnit = (discountValue, unit) => {\n  return `${discountValue.toLocaleString(\"ko-KR\")}${unit}`;\n};\nexport {\n  composeWithUnit,\n  composeWithUnitByType,\n  getCouponNotices,\n  getRandomCouponUseablePeriod\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport { useMemo } from \"react\";\nimport { FoldableList } from \"../../../@shared/FoldableList/index.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 \"../../../../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\";\nimport { getCouponNotices } from \"./NoticesElement.utils.js\";\nimport { filterMap } from \"../../../../utils/filterMap.js\";\nconst NoticesElement = ({\n  couponType,\n  coupons,\n  mainNotices,\n  hasAdditionalNotices,\n  additionalNotices\n}) => {\n  const theme = useTheme();\n  const uniqueMainNotices = [...new Set(mainNotices)];\n  const mergedAdditionalNotices = useMemo(() => [...getCouponNotices(couponType, coupons), ...additionalNotices], [couponType, coupons, additionalNotices]);\n  const uniqueAdditionalNotices = [...new Set(mergedAdditionalNotices)];\n  const hasMainNotices = mainNotices.length > 0;\n  const hasNotices = hasMainNotices || hasAdditionalNotices;\n  if (!hasNotices) {\n    return null;\n  }\n  return /* @__PURE__ */ jsxs(\"div\", { style: noticesLayout, children: [\n    hasMainNotices ? /* @__PURE__ */ jsx(\"div\", { style: mainNoticesStyle, children: uniqueMainNotices.map((notice) => /* @__PURE__ */ jsxs(\"div\", { style: {\n      ...typography(12, 400),\n      ...mainNoticeStyleByTheme[theme]\n    }, children: [\n      \"*\",\n      notice\n    ] }, notice)) }) : null,\n    hasAdditionalNotices ? /* @__PURE__ */ jsxs(FoldableList.Root, { theme, children: [\n      /* @__PURE__ */ jsx(FoldableList.Trigger, { style: {\n        gap: 2\n      }, textStyle: typography(12, 700), icons: {\n        initial: \"chevronDown\",\n        active: \"chevronUp\",\n        size: 12\n      }, children: \"유의사항\" }),\n      /* @__PURE__ */ jsx(FoldableList.Content, { children: filterMap(uniqueAdditionalNotices, (notice) => notice !== \"\", (notice) => /* @__PURE__ */ jsx(FoldableList.Item, { children: notice }, notice)) })\n    ] }) : null\n  ] });\n};\nconst noticesLayout = {\n  display: \"flex\",\n  flexDirection: \"column\",\n  gap: \"12px\",\n  marginTop: \"8px\"\n};\nconst mainNoticesStyle = {\n  width: \"100%\",\n  display: \"flex\",\n  flexDirection: \"column\"\n};\nconst mainNoticeStyleByTheme = {\n  light: {\n    color: \"#474747\"\n  },\n  dark: {\n    color: \"#a0a0a0\"\n  }\n};\nexport {\n  NoticesElement\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport { useState } from \"react\";\nimport { DiscountType } from \"../../../types/models/coupon.js\";\nimport \"../Countdown/Countdown.js\";\nimport \"react-dom\";\nimport \"../Dialog/Dialog.module.css.js\";\nimport \"framer-motion\";\nimport \"../Expandable/Expandable.js\";\nimport \"../FixedScrollProgressBar/FixedScrollProgressBar.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 \"../../../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 \"../ShareButtonWithReferralEvent/ShareButtonWithReferralEvent.js\";\nimport \"../../../node_modules/swr/mutation/dist/index.js\";\nimport \"../../@shared/providers/ThemeProvider/ThemeProvider.js\";\nimport \"../../@shared/providers/BreakpointProvider/BreakpointProvider.js\";\nimport \"../../../hooks/stores/bottom-sheet/bottom-sheet.store.js\";\nimport \"../../../containers/DialogContainer/DialogContainer.emitter.js\";\nimport \"../../../utils/redirectLogin.js\";\nimport \"../../../utils/event-properties/source.js\";\nimport \"../../../constants/snowplow/snowplowSchema.js\";\nimport \"../Products/Products.js\";\nimport \"../ResponsiveSplitView/ResponsiveSplitView.js\";\nimport \"../ResponsiveSplitViewOverlayButton/ResponsiveSplitViewOverlayButton.js\";\nimport { RollingNumber } from \"../RollingNumber/RollingNumber.js\";\nimport \"../TabBar/TabBar.js\";\nimport \"../TimeProgressBar/TimeProgressBar.js\";\nimport \"../ViewportContainer/ViewportContainer.js\";\nimport \"../TabBarV2/TabBarV2.js\";\nimport \"../TabBarV3/TabBarV3.js\";\nimport { useVisibilityAwareInterval } from \"../../../hooks/useVisibilityAwareInterval.js\";\nconst RandomDiscountValue = ({\n  discountType,\n  discountValues\n}) => {\n  const [index, setIndex] = useState(0);\n  useVisibilityAwareInterval(() => {\n    setIndex((prev) => (prev + 1) % discountValues.length);\n  }, 800);\n  return /* @__PURE__ */ jsxs(\"div\", { style: {\n    display: \"flex\",\n    alignItems: \"center\"\n  }, children: [\n    /* @__PURE__ */ jsx(RollingNumber, { value: discountValues[index] ?? 0 }),\n    discountType === DiscountType.FIXED_RATE ? \"%\" : \"원\"\n  ] });\n};\nexport {\n  RandomDiscountValue\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport { Countdown } from \"../../../systems/Countdown/Countdown.js\";\nimport \"react-dom\";\nimport \"react\";\nimport \"../../../systems/Dialog/Dialog.module.css.js\";\nimport \"framer-motion\";\nimport \"../../../systems/Expandable/Expandable.js\";\nimport \"../../../systems/FixedScrollProgressBar/FixedScrollProgressBar.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 \"../../../../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 { isCanvas } from \"../../../../utils/framer/isCanvas.js\";\nimport \"framer\";\nimport \"../../../../node_modules/@29cm/snowplow/dist/esm/core/snowplow.js\";\nimport \"../../../systems/ShareButtonWithReferralEvent/ShareButtonWithReferralEvent.js\";\nimport \"../../../../node_modules/swr/mutation/dist/index.js\";\nimport \"../../../@shared/providers/ThemeProvider/ThemeProvider.js\";\nimport \"../../../@shared/providers/BreakpointProvider/BreakpointProvider.js\";\nimport \"../../../../hooks/stores/bottom-sheet/bottom-sheet.store.js\";\nimport \"../../../../containers/DialogContainer/DialogContainer.emitter.js\";\nimport \"../../../../utils/redirectLogin.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { createKRTimeZoneDate } from \"../../../../utils/createUTCDate.js\";\nimport \"../../../../constants/snowplow/snowplowSchema.js\";\nimport \"../../../systems/Products/Products.js\";\nimport \"../../../systems/ResponsiveSplitView/ResponsiveSplitView.js\";\nimport \"../../../systems/ResponsiveSplitViewOverlayButton/ResponsiveSplitViewOverlayButton.js\";\nimport \"../../../systems/RollingNumber/RollingNumber.js\";\nimport \"../../../systems/TabBar/TabBar.js\";\nimport \"../../../systems/TimeProgressBar/TimeProgressBar.js\";\nimport \"../../../systems/ViewportContainer/ViewportContainer.js\";\nimport \"../../../systems/TabBarV2/TabBarV2.js\";\nimport \"../../../systems/TabBarV3/TabBarV3.js\";\nimport { typography } from \"../../../../styles/typography.js\";\nimport { DiscountType, KindType, CouponType, AvailableDayType } from \"../../../../types/models/coupon.js\";\nimport { RandomDiscountValue } from \"../../../systems/RandomDiscountValue/RandomDiscountValue.js\";\nimport { QueryType } from \"../../types.js\";\nimport { isAbove } from \"../../../../utils/date.js\";\nimport head from \"../../../../node_modules/lodash-es/head.js\";\nimport { isBefore } from \"../../../../node_modules/date-fns/isBefore.js\";\nimport { isAfter } from \"../../../../node_modules/date-fns/isAfter.js\";\nimport { formatDate as format } from \"../../../../node_modules/date-fns/format.js\";\nimport { isWithinInterval } from \"../../../../node_modules/date-fns/isWithinInterval.js\";\nimport { differenceInCalendarDays } from \"../../../../node_modules/date-fns/differenceInCalendarDays.js\";\nimport { ko } from \"../../../../node_modules/date-fns/locale/ko.js\";\nconst getCouponUseEndAt = (coupon) => {\n  if (coupon.useAvailableDayType === AvailableDayType.RANGE) {\n    return createKRTimeZoneDate(coupon.couponUseEndAt);\n  }\n  return void 0;\n};\nconst getCouponStatus = (coupon, logged, query, statuses) => {\n  var _a;\n  if (!coupon) {\n    return \"downloadable\";\n  }\n  if (isCanvas()) {\n    return \"downloadable\";\n  }\n  if (query.type === QueryType.Coupon && query.couponType === CouponType.RANDOM) {\n    return \"downloadable\";\n  }\n  const now = createKRTimeZoneDate();\n  const issueStartAt = createKRTimeZoneDate(coupon.couponIssueStartAt);\n  const issueEndAt = createKRTimeZoneDate(coupon.couponIssueEndAt);\n  const useEndAt = getCouponUseEndAt(coupon);\n  const isUpcoming = isBefore(now, issueStartAt);\n  const isEnd = isAfter(now, issueEndAt);\n  const isExpired = useEndAt !== void 0 && isAfter(now, useEndAt);\n  if (isUpcoming) {\n    return \"upcoming\";\n  }\n  if (isExpired || isEnd) {\n    return \"expired\";\n  }\n  if (!logged) {\n    return \"downloadable\";\n  }\n  const status = (_a = statuses.find((_status) => _status.couponId === coupon.id)) == null ? void 0 : _a.couponDownloadStatus;\n  switch (status) {\n    case \"NOT_ISSUED\":\n      return \"upcoming\";\n    case \"DOWNLOADABLE\":\n      return \"downloadable\";\n    case \"ISSUANCE_LIMIT_REACHED\":\n      return \"issuanceLimitedReached\";\n    case \"EXPIRED\":\n      return \"expired\";\n    case \"DOWNLOADED\":\n      return \"downloaded\";\n    case \"DISABLED\":\n      return \"disabled\";\n    default:\n      return \"downloadable\";\n  }\n};\nconst getCouponFallbackDescription = (coupons) => {\n  const discountValues = coupons.map((coupon) => coupon.discountValue);\n  const {\n    discountType = DiscountType.FIXED_RATE,\n    couponKindType = KindType.CART\n  } = head(coupons) ?? {};\n  const minDiscountValue = Math.min(...discountValues).toLocaleString(\"ko-KR\");\n  const maxDiscountValue = Math.max(...discountValues).toLocaleString(\"ko-KR\");\n  const unit = unitByDiscountType[discountType];\n  return `${minDiscountValue}${unit}~${maxDiscountValue}${unit} ${textByCouponKindType[couponKindType]} 쿠폰 랜덤 지급`;\n};\nconst unitByDiscountType = {\n  [DiscountType.FIXED_RATE]: \"%\",\n  [DiscountType.FIXED_PRICE]: \"원\"\n};\nconst textByCouponKindType = {\n  [KindType.CART]: \"장바구니\",\n  [KindType.PRODUCT]: \"상품\"\n};\nconst getUpcomingText = (issueStartAt) => {\n  const hour = format(issueStartAt, \"H\", {\n    locale: ko\n  });\n  const minute = format(issueStartAt, \"m\", {\n    locale: ko\n  });\n  const timeText = minute === \"0\" ? `${hour}시` : `${hour}시 ${minute}분`;\n  return `${format(issueStartAt, \"M월 d일(EEE)\", {\n    locale: ko\n  })} ${timeText} 발행 예정`;\n};\nconst getDescriptionByStatus = (coupon) => {\n  const issueStartAt = createKRTimeZoneDate(coupon.couponIssueStartAt);\n  const issueEndAt = createKRTimeZoneDate(coupon.couponIssueEndAt);\n  const useEndAt = getCouponUseEndAt(coupon);\n  return {\n    upcoming: getUpcomingText(issueStartAt),\n    downloadable: /* @__PURE__ */ jsxs(\"div\", { style: descriptionStyle, children: [\n      /* @__PURE__ */ jsx(Countdown, { targetDateString: format(issueEndAt, \"yyyy-MM-dd\"), targetTimeString: format(issueEndAt, \"HH:mm:ss\"), dateDisplayFormat: \"D일\", timeDisplayFormat: \"H시간 m분 s초\", fontSize: 12, color: \"inherit\", style: typography(12, 400) }),\n      \"남음\"\n    ] }),\n    downloaded: useEndAt ? /* @__PURE__ */ jsxs(\"div\", { style: descriptionStyle, children: [\n      /* @__PURE__ */ jsx(Countdown, { targetDateString: format(useEndAt, \"yyyy-MM-dd\"), targetTimeString: format(useEndAt, \"HH:mm:ss\"), dateDisplayFormat: \"D일\", timeDisplayFormat: \"H시간 m분 s초\", fontSize: 12, color: \"inherit\", style: typography(12, 400) }),\n      \"남음\"\n    ] }) : null,\n    expired: \"쿠폰 사용 기간이 종료되었어요\",\n    disabled: \"사용할 수 없는 쿠폰입니다\",\n    issuanceLimitedReached: \"쿠폰이 모두 소진되었어요\"\n  };\n};\nconst descriptionStyle = {\n  display: \"flex\",\n  alignItems: \"center\",\n  gap: 3,\n  color: \"inherit\"\n};\nconst markAsDownloaded = (statuses, couponIds) => {\n  return statuses.map((status) => ({\n    ...status,\n    couponDownloadStatus: status.couponDownloadStatus === \"DOWNLOADABLE\" && couponIds.includes(status.couponId) ? \"DOWNLOADED\" : status.couponDownloadStatus\n  }));\n};\nconst getCouponCollectionCouponName = (query) => {\n  var _a, _b;\n  const personMaxIssueCount = (_a = query.coupon) == null ? void 0 : _a.personMaxIssueCount;\n  const issueCount = personMaxIssueCount && personMaxIssueCount > 1 ? ` ${personMaxIssueCount}장` : \"\";\n  return `${(_b = query.coupon) == null ? void 0 : _b.couponName}${issueCount}`;\n};\nconst getRandomCouponName = (coupons) => {\n  var _a;\n  const sortByDiscountValue = sortCouponsByDiscountValueAscending(coupons);\n  const couponDiscountValues = sortByDiscountValue.map((coupon) => coupon.discountValue);\n  return /* @__PURE__ */ jsxs(\"div\", { style: {\n    display: \"flex\",\n    alignItems: \"center\",\n    gap: 6\n  }, children: [\n    /* @__PURE__ */ jsx(\"div\", { children: /* @__PURE__ */ jsx(RandomDiscountValue, { discountType: ((_a = head(coupons)) == null ? void 0 : _a.discountType) ?? DiscountType.FIXED_RATE, discountValues: couponDiscountValues }) }),\n    /* @__PURE__ */ jsx(\"span\", { children: \"쿠폰\" })\n  ] });\n};\nconst getGeneralCouponName = (coupons) => {\n  if (coupons.length === 1) {\n    const firstCoupon = coupons[0];\n    const personMaxIssueCount = firstCoupon.personMaxIssueCount;\n    const issueCount = personMaxIssueCount && personMaxIssueCount > 1 ? ` ${personMaxIssueCount}장` : \"\";\n    return getCouponNameByDiscountType(firstCoupon) + issueCount;\n  }\n  const isAllFixedRateCoupon = coupons.every((coupon) => coupon.discountType === DiscountType.FIXED_RATE);\n  const maxDiscountValue = Math.max(...coupons.map((coupon) => coupon.discountValue), 0).toLocaleString(\"ko-KR\");\n  if (isAllFixedRateCoupon) {\n    return `${maxDiscountValue}% 쿠폰 외 ${coupons.length - 1}장`;\n  }\n  return `${maxDiscountValue}원 쿠폰 외 ${coupons.length - 1}장`;\n};\nconst getCouponNameByCouponType = (coupons, query) => {\n  switch (query.couponType) {\n    case CouponType.RANDOM:\n      return getRandomCouponName(coupons);\n    case CouponType.LIMITED:\n    case CouponType.NORMAL:\n      return getGeneralCouponName(coupons);\n  }\n};\nconst getCouponName = (coupons, query) => {\n  if (coupons.length === 0) {\n    return \"\";\n  }\n  switch (query.type) {\n    case QueryType.CouponCollection:\n      return getCouponCollectionCouponName(query);\n    case QueryType.KeywordCollection:\n      return getGeneralCouponName(coupons);\n    case QueryType.Coupon:\n      return getCouponNameByCouponType(coupons, query);\n  }\n};\nconst getCouponNameByDiscountType = (coupon) => {\n  if (!coupon) {\n    return \"\";\n  }\n  const {\n    discountType,\n    discountValue\n  } = coupon;\n  const postfix = discountType === DiscountType.FIXED_PRICE ? \"원 쿠폰\" : \"% 쿠폰\";\n  return discountValue.toLocaleString(\"ko-KR\") + postfix;\n};\nconst sortCouponsByDiscountValueAscending = (coupons) => {\n  return [...coupons].sort((x, y) => x.discountValue - y.discountValue);\n};\nconst findCurrentSchedule = (schedule) => {\n  const now = createKRTimeZoneDate();\n  const scheduleIndex = schedule.findIndex((item, index) => {\n    const {\n      shouldUpdateAt\n    } = item;\n    const next = schedule[index + 1];\n    const hasNext = next !== void 0;\n    const isFirst = index === 0 && isAbove(shouldUpdateAt, now);\n    const isWithin = hasNext && isWithinInterval(now, {\n      start: shouldUpdateAt,\n      end: next.shouldUpdateAt\n    });\n    const isLast = !hasNext && isAbove(now, shouldUpdateAt);\n    return isFirst || isWithin || isLast;\n  });\n  return schedule[scheduleIndex];\n};\nconst toSchedule = (options) => sortScheduleAscending(toCouponSchedule(options));\nconst sortScheduleAscending = (schedule) => {\n  return [...schedule].sort((x, y) => x.shouldUpdateAt.getTime() - y.shouldUpdateAt.getTime());\n};\nconst toCouponSchedule = (options) => {\n  return options.flatMap((option) => {\n    const {\n      dailyCouponIds,\n      updateSchedule,\n      updateAt\n    } = option;\n    const {\n      startAt,\n      endAt\n    } = updateSchedule;\n    if (!startAt || !endAt) {\n      return [];\n    }\n    const diff = differenceInCalendarDays(endAt, startAt);\n    return Array.from({\n      length: diff + 1\n    }, (_, index) => {\n      const {\n        hours,\n        minutes,\n        seconds\n      } = updateAt;\n      const date = createKRTimeZoneDate(startAt);\n      date.setDate(date.getDate() + index);\n      date.setHours(hours, minutes, seconds);\n      return {\n        shouldUpdateAt: date,\n        couponIdList: dailyCouponIds[index]\n      };\n    });\n  });\n};\nexport {\n  findCurrentSchedule,\n  getCouponFallbackDescription,\n  getCouponName,\n  getCouponStatus,\n  getDescriptionByStatus,\n  markAsDownloaded,\n  toSchedule\n};\n","import { toCouponNos } from \"../../../../hooks/useDownloadCoupons.js\";\nimport { CouponUpdateType } from \"../CouponModule.types.js\";\nimport { CouponType } from \"../../../../types/models/coupon.js\";\nimport { shallowUnique } from \"../../../../utils/unique.js\";\nimport { useState, useEffect } from \"react\";\nimport { useVisibilityAwareInterval } from \"../../../../hooks/useVisibilityAwareInterval.js\";\nimport { QueryType } from \"../../types.js\";\nimport { findCurrentSchedule, toSchedule } from \"./CouponElement.utils.js\";\nconst MS_IN_SECOND = 1e3;\nconst DEFAULT_COUPON_ITEM_ENTRY = {\n  couponIds: [],\n  updateType: CouponUpdateType.NORMAL,\n  couponType: CouponType.NORMAL\n};\nconst useCouponIds = ({\n  query\n}) => {\n  const [couponItemEntry, setCouponItemEntry] = useState(getCouponItemEntry({\n    query\n  }) ?? DEFAULT_COUPON_ITEM_ENTRY);\n  useVisibilityAwareInterval(() => {\n    if (couponItemEntry.updateType === CouponUpdateType.NORMAL) {\n      return;\n    }\n    const currentSchedule = findCurrentSchedule(couponItemEntry.schedules ?? []);\n    setCouponItemEntry((prev) => ({\n      ...prev,\n      couponIds: shallowUnique(toCouponNos((currentSchedule == null ? void 0 : currentSchedule.couponIdList) ?? \"\"))\n    }));\n  }, MS_IN_SECOND);\n  useEffect(() => {\n    setCouponItemEntry(getCouponItemEntry({\n      query\n    }) ?? DEFAULT_COUPON_ITEM_ENTRY);\n  }, [query]);\n  return {\n    couponIds: couponItemEntry.couponIds,\n    couponType: couponItemEntry.couponType\n  };\n};\nconst getCouponCollectionCouponItemEntry = ({\n  coupon\n}) => {\n  return {\n    couponIds: coupon ? [coupon.couponId] : [],\n    updateType: CouponUpdateType.NORMAL,\n    couponType: CouponType.NORMAL\n  };\n};\nconst getKeywordCollectionCouponItemEntry = ({\n  couponId\n}) => {\n  return {\n    couponIds: couponId ? [couponId] : [],\n    updateType: CouponUpdateType.NORMAL,\n    couponType: CouponType.NORMAL\n  };\n};\nconst getRandomCouponItemEntry = (query) => {\n  const {\n    couponType,\n    couponIds = \"\"\n  } = query;\n  return {\n    couponIds: shallowUnique(toCouponNos(couponIds)),\n    updateType: CouponUpdateType.NORMAL,\n    couponType\n  };\n};\nconst getNormalCouponItemEntry = (query) => {\n  const {\n    couponType,\n    couponIds = \"\",\n    couponUpdateType\n  } = query;\n  return {\n    couponIds: shallowUnique(toCouponNos(couponIds)),\n    updateType: couponUpdateType,\n    couponType\n  };\n};\nconst getDailyCouponItemEntry = (query) => {\n  const {\n    couponType,\n    dailyCouponOptions = [],\n    couponUpdateType\n  } = query;\n  const schedules = toSchedule(dailyCouponOptions);\n  const currentSchedule = findCurrentSchedule(schedules);\n  return {\n    couponIds: shallowUnique(toCouponNos((currentSchedule == null ? void 0 : currentSchedule.couponIdList) ?? \"\")),\n    updateType: couponUpdateType,\n    couponType,\n    schedules\n  };\n};\nconst getGeneralCouponItemEntry = (query) => {\n  switch (query.couponUpdateType) {\n    case CouponUpdateType.NORMAL:\n      return getNormalCouponItemEntry(query);\n    case CouponUpdateType.DAILY:\n      return getDailyCouponItemEntry(query);\n    default:\n      return null;\n  }\n};\nconst getCouponItemEntryByCouponType = (query) => {\n  switch (query.couponType) {\n    case CouponType.RANDOM:\n      return getRandomCouponItemEntry(query);\n    case CouponType.LIMITED:\n    case CouponType.NORMAL:\n      return getGeneralCouponItemEntry(query);\n    default:\n      return null;\n  }\n};\nconst getCouponItemEntry = ({\n  query\n}) => {\n  if (query === void 0) {\n    return null;\n  }\n  switch (query.type) {\n    case QueryType.CouponCollection:\n      return getCouponCollectionCouponItemEntry(query);\n    case QueryType.KeywordCollection:\n      return getKeywordCollectionCouponItemEntry(query);\n    case QueryType.Coupon:\n      return getCouponItemEntryByCouponType(query);\n    default:\n      return null;\n  }\n};\nexport {\n  useCouponIds\n};\n","import { CouponType } from \"../../../../types/models/coupon.js\";\nimport { QueryType } from \"../../types.js\";\nimport { CouponUpdateType } from \"../CouponModule.types.js\";\nimport { toSchedule } from \"./CouponElement.utils.js\";\nimport { filterMap } from \"../../../../utils/filterMap.js\";\nconst validateCoupon = ({\n  query,\n  enabled\n}) => {\n  if (!enabled) {\n    return {\n      isValid: true\n    };\n  }\n  return validateCouponByQuery(query);\n};\nconst validateDailyUpdateCoupon = (query) => {\n  const schedule = toSchedule(query.dailyCouponOptions ?? []);\n  const isValid = schedule.every(({\n    couponIdList\n  }) => couponIdList !== void 0);\n  const errorMessage = isValid ? void 0 : `[관리자용 메시지] 일자별 쿠폰이 모두 입력되어 있는지 확인해주세요.\n${filterMap(schedule, ({\n    couponIdList\n  }) => couponIdList === void 0, ({\n    shouldUpdateAt\n  }) => {\n    return `[${shouldUpdateAt.toLocaleDateString()}] 쿠폰이 없습니다.`;\n  }).join(\"\\n\")}`;\n  return {\n    isValid,\n    errorMessage\n  };\n};\nconst validateCouponQuery = (query) => {\n  if (query.couponType === CouponType.RANDOM) {\n    return {\n      isValid: true\n    };\n  }\n  switch (query.couponUpdateType) {\n    case CouponUpdateType.DAILY:\n      return validateDailyUpdateCoupon(query);\n    default:\n      return {\n        isValid: true\n      };\n  }\n};\nconst validateCouponByQuery = (query) => {\n  if (query === void 0) {\n    return {\n      isValid: false,\n      errorMessage: \"쿠폰 쿼리가 없습니다.\"\n    };\n  }\n  switch (query.type) {\n    case QueryType.Coupon:\n      return validateCouponQuery(query);\n    default:\n      return {\n        isValid: true\n      };\n  }\n};\nexport {\n  validateCoupon\n};\n","import { jsx, jsxs, Fragment } from \"react/jsx-runtime\";\nimport { useMemo, useRef, useEffect } from \"react\";\nimport { Coupon } from \"../../../@shared/Coupon/index.js\";\nimport { EventTrigger } from \"../../../@shared/EventTrigger/index.js\";\nimport { useSegment } from \"../../../@shared/providers/SegmentProvider/SegmentProvider.js\";\nimport { useRootComponentId, useSetRootModule } from \"../../hooks.js\";\nimport { useQueryStore } from \"../../query-store/query.store.js\";\nimport { QueryType } from \"../../types.js\";\nimport \"../../../systems/curations/IntersectionProvider/IntersectionProvider.js\";\nimport { useIntersectionContext } from \"../../../systems/curations/IntersectionProvider/IntersectionProvider.hooks.js\";\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 \"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 \"../../../../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 \"../../../../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 \"../../../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 { useFetchCouponsDownloadStatus } from \"../../../../hooks/fetchers/useFetchCouponsDownloadStatus.js\";\nimport { useTrackSnowplowEvent } from \"../../../../hooks/snowplow/useTrackSnowplowEvent.js\";\nimport { useDownloadCoupons } from \"../../../../hooks/useDownloadCoupons.js\";\nimport { resolveCouponLayout, toBackgroundColor } from \"../../../../libs/property-controls/coupon.js\";\nimport { CouponType } from \"../../../../types/models/coupon.js\";\nimport { hideClosestParentByFramerName } from \"../../../../utils/hideParentElement.js\";\nimport { getPaddingStyle } from \"../../../../utils/spacing.js\";\nimport { useCouponsQuery } from \"../CouponModule.hooks.js\";\nimport { NoticesElement } from \"../NoticesElement/NoticesElement.js\";\nimport { useCouponIds } from \"./CouponElement.hooks.js\";\nimport { getCouponName, getCouponStatus, getCouponFallbackDescription, getDescriptionByStatus, markAsDownloaded } from \"./CouponElement.utils.js\";\nimport { validateCoupon } from \"./CouponElement.validate.js\";\nimport head from \"../../../../node_modules/lodash-es/head.js\";\nconst CouponElement = ({\n  loading = false,\n  query: _query,\n  output,\n  layout\n}) => {\n  const {\n    logged,\n    userNo\n  } = useCurrentUser();\n  const breakpoint = useBreakpoint();\n  const trackSnowplowEvent = useTrackSnowplowEvent();\n  const dispatchSetQuery = useQueryStore((state) => state.dispatchSetQuery);\n  const theme = useTheme();\n  const {\n    isInView\n  } = useIntersectionContext();\n  const query = useMemo(() => attachAdditionalQuery(_query, output), [_query, output]);\n  const {\n    isVisible,\n    loading: isSegmentLoading\n  } = useSegment();\n  const canFetchBySegment = !isSegmentLoading && isVisible;\n  const rootRef = useRef(null);\n  const componentId = useRootComponentId(query);\n  const {\n    couponIds,\n    couponType\n  } = useCouponIds({\n    query\n  });\n  const isFramer = isCanvas();\n  const {\n    isValid,\n    errorMessage\n  } = validateCoupon({\n    query,\n    enabled: isFramer\n  });\n  const {\n    coupons\n  } = useCouponsQuery({\n    query,\n    couponIds,\n    enabled: isInView && canFetchBySegment\n  });\n  const headCoupon = head(coupons);\n  const hasCoupon = headCoupon !== void 0;\n  const isRandomCoupon = (query == null ? void 0 : query.type) === QueryType.Coupon && (query == null ? void 0 : query.couponType) === CouponType.RANDOM;\n  const enabledFetchCouponDownloadStatus = isInView && !isRandomCoupon && canFetchBySegment;\n  const {\n    statuses,\n    isLoading,\n    mutate\n  } = useFetchCouponsDownloadStatus(couponIds, userNo, enabledFetchCouponDownloadStatus);\n  const handleCouponDownloadSuccess = () => {\n    if (!headCoupon) {\n      return;\n    }\n    trackSnowplowEvent(\"click_button\", {\n      section_name: componentId,\n      section_title: componentId,\n      position: -1,\n      button_id: `coupondown_${headCoupon.id}`,\n      button_name: headCoupon.couponName,\n      layout_position: -1\n    });\n  };\n  const {\n    validate,\n    download\n  } = useDownloadCoupons(couponType, headCoupon == null ? void 0 : headCoupon.discountType, handleCouponDownloadSuccess);\n  const shouldRender = query && hasCoupon && (!loading || !isLoading || !logged);\n  const paddingStyle = getPaddingStyle(layout);\n  useEffect(() => {\n    window == null ? void 0 : window.dispatchEvent(new CustomEvent(\"layout-done\"));\n    if (!query) {\n      return;\n    }\n    if (!output) {\n      return;\n    }\n    dispatchSetQuery(output, query);\n  }, [output, query]);\n  useSetRootModule(query, output);\n  const shouldRenderError = !isValid && isFramer;\n  useEffect(() => {\n    if (rootRef.current) {\n      hideClosestParentByFramerName(rootRef.current, \"카테고리첫구매쿠폰\", isVisible);\n    }\n  }, [isVisible]);\n  if (!isVisible) {\n    window == null ? void 0 : window.dispatchEvent(new CustomEvent(\"layout-done\"));\n    return /* @__PURE__ */ jsx(\"div\", { ref: rootRef });\n  }\n  if (!shouldRender) {\n    return /* @__PURE__ */ jsxs(Fragment, { children: [\n      /* @__PURE__ */ jsx(Coupon.Root, { ref: rootRef, style: {\n        padding: paddingStyle\n      }, loading: true, theme }),\n      shouldRenderError ? /* @__PURE__ */ jsx(\"div\", { style: errorMessageStyle, children: errorMessage ?? \"쿠폰 상태가 올바르지 않습니다.\" }) : null\n    ] });\n  }\n  const downloadCount = Math.max(headCoupon.personMaxIssueCount ?? 1, 1);\n  const downloadCoupon = async () => {\n    await download(couponIds, downloadCount, true);\n    return markAsDownloaded(statuses, couponIds);\n  };\n  const handleClick = () => {\n    if (!validate()) {\n      return;\n    }\n    mutate(downloadCoupon(), {\n      optimisticData: markAsDownloaded(statuses, couponIds),\n      rollbackOnError: true,\n      populateCache: true,\n      revalidate: true\n    });\n  };\n  const handleImpression = () => {\n    trackSnowplowEvent(\"impression_content\", {\n      section_name: componentId,\n      section_title: componentId,\n      position: -1,\n      layout_position: -1,\n      layout_id: `coupondown_${headCoupon.id}`\n    });\n  };\n  const couponName = getCouponName(coupons, query);\n  const status = getCouponStatus(headCoupon, logged, query, statuses);\n  const description = isRandomCoupon ? getCouponFallbackDescription(coupons) : getDescriptionByStatus(headCoupon)[status];\n  const {\n    backgroundColor,\n    ...rest\n  } = layout;\n  const resolvedCouponLayout = resolveCouponLayout(layout.couponLayout, breakpoint);\n  return /* @__PURE__ */ jsxs(EventTrigger.Root, { ref: rootRef, style: {\n    padding: paddingStyle\n  }, types: [\"impression\"], onImpression: handleImpression, children: [\n    /* @__PURE__ */ jsxs(Coupon.Root, { theme, backgroundColor: toBackgroundColor(backgroundColor), status, layout: resolvedCouponLayout, children: [\n      /* @__PURE__ */ jsxs(Coupon.Summary, { children: [\n        /* @__PURE__ */ jsx(Coupon.Title, { children: couponName }),\n        /* @__PURE__ */ jsx(Coupon.Description, { children: description })\n      ] }),\n      /* @__PURE__ */ jsx(Coupon.Divider, {}),\n      /* @__PURE__ */ jsx(EventTrigger.Target, { style: {\n        aspectRatio: resolvedCouponLayout === \"detail\" ? \"1 / 1\" : void 0\n      }, children: /* @__PURE__ */ jsx(Coupon.Button, { onClick: handleClick }) })\n    ] }),\n    /* @__PURE__ */ jsx(NoticesElement, { couponType, coupons, ...rest }),\n    shouldRenderError ? /* @__PURE__ */ jsx(\"div\", { style: errorMessageStyle, children: errorMessage ?? \"쿠폰 상태가 올바르지 않습니다.\" }) : null\n  ] });\n};\nconst errorMessageStyle = {\n  background: \"white\",\n  border: \"0.7px solid #00000066\",\n  borderRadius: \"2px\",\n  padding: \"8px\",\n  whiteSpace: \"pre-line\"\n};\nconst attachAdditionalQuery = (query, output) => {\n  return query ? {\n    ...query,\n    isRoot: query.rootOutput === void 0,\n    rootOutput: query.rootOutput || output\n  } : void 0;\n};\nexport {\n  CouponElement\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { useQueryStore } from \"../../query-store/query.store.js\";\nimport { CouponElement } from \"../CouponElement/CouponElement.js\";\nimport { createKey } from \"../../utils/key.js\";\nconst LinkedCouponModule = ({\n  value,\n  output,\n  layout\n}) => {\n  const query = useQueryStore((state) => state.queries[value]);\n  return /* @__PURE__ */ jsx(CouponElement, { query, output, layout }, createKey(query));\n};\nexport {\n  LinkedCouponModule\n};\n","import { ControlType } from \"framer\";\nconst COUPON_NOTICES_CONTROLS = {\n  mainNotices: {\n    type: ControlType.Array,\n    title: \"메인 유의사항\",\n    description: \"상시 노출되는 유의사항으로, 최대 두 줄 입력이 가능합니다.\",\n    control: {\n      type: ControlType.String\n    },\n    maxCount: 2\n  },\n  hasAdditionalNotices: {\n    type: ControlType.Boolean,\n    title: \"추가 유의사항 노출\",\n    enabledTitle: \"노출\",\n    disabledTitle: \"미노출\",\n    defaultValue: false\n  },\n  additionalNotices: {\n    hidden: ({\n      hasAdditionalNotices\n    }) => hasAdditionalNotices === false,\n    type: ControlType.Array,\n    title: \"추가 유의사항\",\n    description: \"더보기 클릭 시 노출되는 추가 유의사항입니다.\",\n    control: {\n      type: ControlType.String\n    }\n  }\n};\nexport {\n  COUPON_NOTICES_CONTROLS\n};\n","import { combineObjectPropertyControls } from \"../../../libs/property-controls/helpers.js\";\nimport { QUERY_CONTROL, COUPON_CONTROLS, KEYWORD_COLLECTIONS_CONTROLS, KEYWORD_COLLECTION_CONTROLS } from \"../controls.js\";\nconst MANUAL_COUPON_MODULE_QUERY = {\n  ...QUERY_CONTROL,\n  controls: combineObjectPropertyControls(COUPON_CONTROLS)\n};\nconst AUTO_COUPON_MODULE_QUERY = {\n  ...QUERY_CONTROL,\n  controls: combineObjectPropertyControls(KEYWORD_COLLECTION_CONTROLS, KEYWORD_COLLECTIONS_CONTROLS)\n};\nexport {\n  AUTO_COUPON_MODULE_QUERY,\n  MANUAL_COUPON_MODULE_QUERY\n};\n","import useSWR from \"../../../../node_modules/swr/core/dist/index.js\";\nimport { collectionApi } from \"../../../../apis/collection/CollectionApiService.js\";\nimport { keywordCollectionApi } from \"../../../../apis/keyword-collections/KeywordCollectionApiService.js\";\nimport { QueryType } from \"../../types.js\";\nimport { orderByDateAsc, getCurrentScheduleIndex } from \"../../../../utils/date.js\";\nimport { splitToNumberArray } from \"../../../../utils/splitToNumberArray.js\";\nconst COUPON_ID_FETCHER_KEY = \"coupon-module/coupon-id\";\nconst useCouponIdQuery = (options) => {\n  const {\n    enabled: _enabled = true,\n    query\n  } = options;\n  const enabled = _enabled && query !== void 0;\n  const {\n    data,\n    isLoading,\n    ...rest\n  } = useSWR(enabled ? [COUPON_ID_FETCHER_KEY, query] : null, () => queryCouponId(query));\n  return {\n    isLoading: isLoading || !enabled,\n    query: data,\n    ...rest\n  };\n};\nconst fetchKeywordCollectionCouponId = async (query) => {\n  if (!query.keywordCollectionId) {\n    return query;\n  }\n  const {\n    data\n  } = await keywordCollectionApi.getKeywordCollection(Number(query.keywordCollectionId));\n  const {\n    title,\n    description,\n    displayEndAt,\n    productGroups,\n    couponId\n  } = data;\n  const [firstProductGroup] = productGroups;\n  return {\n    ...query,\n    title,\n    description: description ?? void 0,\n    displayEndAt: displayEndAt ?? void 0,\n    couponId: couponId ?? void 0,\n    productGroups,\n    selectedProductGroup: {\n      id: firstProductGroup.productGroupId,\n      sort: firstProductGroup.sort,\n      index: 0\n    }\n  };\n};\nconst fetchKeywordCollectionsCouponId = async (query) => {\n  if (!query.keywordCollectionIds) {\n    return query;\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 query;\n  }\n  const {\n    collectionId,\n    title,\n    description,\n    displayEndAt,\n    productGroupList,\n    couponId\n  } = collection;\n  const [firstProductGroup] = productGroupList;\n  return {\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};\nconst queryCouponId = (query) => {\n  if (!query) {\n    return;\n  }\n  switch (query.type) {\n    case QueryType.KeywordCollection:\n      return fetchKeywordCollectionCouponId(query);\n    case QueryType.KeywordCollections:\n      return fetchKeywordCollectionsCouponId(query);\n    default:\n      return query;\n  }\n};\nexport {\n  useCouponIdQuery\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 { useCouponIdQuery } from \"./AutoCouponModule.hooks.js\";\nimport { CouponElement } from \"../CouponElement/CouponElement.js\";\nconst AutoCouponModule = ({\n  query: _query,\n  output,\n  layout\n}) => {\n  const {\n    isInView\n  } = useIntersectionContext();\n  const {\n    isVisible,\n    loading: isSegmentLoading\n  } = useSegment();\n  const canFetchBySegment = !isSegmentLoading && isVisible;\n  const {\n    isLoading,\n    query\n  } = useCouponIdQuery({\n    query: _query,\n    enabled: isInView && canFetchBySegment\n  });\n  return /* @__PURE__ */ jsx(CouponElement, { loading: isLoading, query, output, layout });\n};\nexport {\n  AutoCouponModule\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { addPropertyControls, ControlType } from \"framer\";\nimport { COUPON_CONTROLS } from \"../../../libs/property-controls/coupon.js\";\nimport { THEME_CONTROLS } from \"../../../libs/property-controls/theme.js\";\nimport { SEGMENT_CONTROLS } from \"../../../libs/property-controls/segment.js\";\nimport { CouponModuleInputType } from \"./CouponModule.types.js\";\nimport { LinkedCouponModule } from \"./LinkedCouponModule/LinkedCouponModule.js\";\nimport { COUPON_NOTICES_CONTROLS } from \"../../../libs/property-controls/coupon-notices.js\";\nimport { COMPONENT_ID_PROPS } from \"../../../libs/property-controls/component-id.js\";\nimport { SectionLayout } from \"../../systems/curations/SectionLayout/SectionLayout.js\";\nimport { MANUAL_COUPON_MODULE_QUERY, AUTO_COUPON_MODULE_QUERY } from \"./CouponModule.controls.js\";\nimport { AutoCouponModule } from \"./AutoCouponModule/AutoCouponModule.js\";\nimport { CouponElement } from \"./CouponElement/CouponElement.js\";\nconst CouponModuleInner = ({\n  input,\n  output,\n  layout\n}) => {\n  switch (input.type) {\n    case CouponModuleInputType.Linked:\n      return /* @__PURE__ */ jsx(LinkedCouponModule, { value: input.value, output, layout });\n    case CouponModuleInputType.Auto:\n      return /* @__PURE__ */ jsx(AutoCouponModule, { query: input.autoQuery, output, layout });\n    case CouponModuleInputType.Manual:\n      return /* @__PURE__ */ jsx(CouponElement, { query: input.query, output, layout });\n    default:\n      return null;\n  }\n};\nconst CouponModule = ({\n  theme,\n  componentId,\n  segment,\n  ...rest\n}) => {\n  return /* @__PURE__ */ jsx(SectionLayout, { componentId, theme, segment, children: /* @__PURE__ */ jsx(CouponModuleInner, { ...rest }) });\n};\naddPropertyControls(CouponModule, {\n  ...THEME_CONTROLS,\n  ...SEGMENT_CONTROLS,\n  componentId: {\n    hidden: ({\n      input\n    }) => (input == null ? void 0 : input.type) === CouponModuleInputType.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: [CouponModuleInputType.Manual, CouponModuleInputType.Linked, CouponModuleInputType.Auto],\n        optionTitles: [\"수동\", \"연결\", \"자동\"],\n        defaultValue: CouponModuleInputType.Manual\n      },\n      value: {\n        hidden: ({\n          type\n        }) => type !== CouponModuleInputType.Linked,\n        type: ControlType.String,\n        title: \"출력 값\",\n        defaultValue: \"\"\n      },\n      query: {\n        hidden: ({\n          type\n        }) => type !== CouponModuleInputType.Manual,\n        ...MANUAL_COUPON_MODULE_QUERY\n      },\n      autoQuery: {\n        hidden: ({\n          type\n        }) => type !== CouponModuleInputType.Auto,\n        ...AUTO_COUPON_MODULE_QUERY\n      }\n    }\n  },\n  output: {\n    type: ControlType.String,\n    title: \"출력 값\",\n    defaultValue: \"\"\n  },\n  layout: {\n    type: ControlType.Object,\n    title: \"레이아웃\",\n    controls: {\n      ...COUPON_CONTROLS,\n      ...COUPON_NOTICES_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  CouponModule\n};\n","import{CouponModule}from\"https://asset.29cm.co.kr/contents/framer/components/modules/CouponModule/CouponModule.js\";CouponModule.displayName=\"[조립형]Coupon\";export default CouponModule;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CouponModule\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CouponModule.map"],"x_google_ignoreList":[6,7,9,10,11,12,13,14,37,38,39,50,56,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,200,204,217,243,244,245,246],"mappings":"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"}