{"version":3,"file":"shared.B_EB21cF.mjs","names":["clamp","length","platform","computePosition","i","x","autoPlacement","d","a","shift","min","max","clamp","isHTMLElement","getComputedStyle","css","css","getComputedStyle","isHTMLElement","x","$","e","cache","window","useRef","x","useState","useRef","e","styles","styles","index","Icon","addPropertyOverrides","IconFonts","Icon","cycleOrder","serializationHash","variantClassNames","transition1","Transition","React.useContext","React.useMemo","Variants","React.Fragment","humanReadableVariantMap","getProps","createLayoutDependency","useRef","React.useId","className","classNames","RichText","Children","isValidElement","cloneElement","COMPONENT_NAME","BrandProvider","BaseBrandProvider","addPropertyOverrides","Icon","cycleOrder","serializationHash","variantClassNames","transition1","Transition","React.useContext","React.useMemo","Variants","React.Fragment","humanReadableVariantMap","getProps","createLayoutDependency","useRef","React.useId","className","classNames","RichText","BrandHeaderChildren","BrandHeaderChildren1","serializationHash","variantClassNames","transition1","Transition","React.useContext","React.useMemo","Variants","React.Fragment","getProps","createLayoutDependency","useRef","React.useId","className","classNames","createContext","useState","useCurrentUser","useMemo","useContext","createContext","useRef","useContext","initialState","set","createContext","Root","forwardRef","useRef","useState","clamp","containerStyle","useContext","forwardRef","useState","container","COMPONENT_NAME","css","List","forwardRef","useState","clamp","container","containerStyle","Panel","forwardRef","e","containerStyle","isFunction","useContext","Breakpoint","createContext","Root","forwardRef","Breakpoint","useContext","useContext","Breakpoint","containerStyle","Fragment","Default","forwardRef","t","a","C","s","e","a$1","o","useCallback","useMemo","a","N","a","forwardRef","t","e","s","r","l","i","p","C","n","forwardRef","baseStyleByTheme","Item","forwardRef","Fragment","Default","createContext","useContext","useRef","set","module","root","useRef","useCallback","createContext","Root","forwardRef","useRef","useContext","forwardRef","e","useMemo","formatProducts","formatProducts","a","x","x","format","offset","isLast","title","x","description","x","useRef","useState","Breakpoint","useMemo","format","useRef","useState","useRef","memo","e","COMPONENT_NAME","useState","styles","isArray","isObject","isPlainObject","React__default","length","isUndefined","isFunction","isString","e","form","min","max","o","comment","createContext","useContext","form","comment","form","comment","createComment","useState","useMemo","e","container","styles","comment","styles","e","container","styles","styles","title","description","e","styles","styles","e","container","styles","React__default","useState","useRef","styles","createdAt","Fragment","totalCount","comment","e","styles","useState","totalCount","Fragment","styles","e","CommentSection","BaseComponentSection","containerStyle","wrapperStyle","wrapperStyleByBreakpoint","iconColorByTheme","title","description","Default","forwardRef","useContext","containerStyle","forwardRef","useRef","useState","container","containerStyle","Default","wrapperResetStyle","wrapperStyleByBreakpoint","listStyle","offset","noop","noop","forwardRef","Default","createContext","forwardRef","getDisplayCount","List","PRODUCTS_PER_REQUEST","entries","e","length","length","length","getPrototype","objectTag","getPrototype","hasOwnProperty","hasOwnProperty","length","hasOwnProperty","isFunction","length","baseSetToString","length","length","getPrototype","length","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","styles","containerStyle","useRef","Default","forwardRef","Default","containerStyle","createContext","PRODUCTS_PER_REQUEST","useContext","getKey","useRef","get","set","useCallback","i","r","length","useMemo","offset","button","containerStyle","useRef","useMemo","p","containerStyle","useRef","useState","useCallback","isLast","x","useMemo","useState","Countdown","Schedulable","React.useContext","React.useMemo","React.Fragment","_","useRef","React.useId","className","classNames","RichText","e","t","u","a","s","n","o","r","t","e","i","n","r","n","e","t","o","n","e","t","a","n","e","r","t","s","o","i","u","d","l","g","m","p","M","n","e","t","o","a","i","s","r","A","l","u","d","O","g","m","q","j","x","V","se","b","isCanvas","Children","useRef","useMemo","useState","useCallback","isRTL","startTransition","offset","i","min","max","Dot","dotStyle","fonts","css","className","fonts","css","className"],"sources":["https:/asset.29cm.co.kr/contents/framer/components/@shared/icons/PlusIcon.js","https:/asset.29cm.co.kr/contents/framer/components/systems/PinProductBannerV2/PinProductBannerV2.constants.effect.js","https:/asset.29cm.co.kr/contents/framer/node_modules/@floating-ui/utils/dist/floating-ui.utils.js","https:/asset.29cm.co.kr/contents/framer/node_modules/@floating-ui/core/dist/floating-ui.core.js","https:/asset.29cm.co.kr/contents/framer/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js","https:/asset.29cm.co.kr/contents/framer/node_modules/@floating-ui/dom/dist/floating-ui.dom.js","https:/asset.29cm.co.kr/contents/framer/hooks/useComputeFloatingPosition.js","https:/asset.29cm.co.kr/contents/framer/hooks/useOutsideClick.js","https:/asset.29cm.co.kr/contents/framer/components/systems/PinProductBannerV2/PinProductBannerV2.hooks.event.js","https:/asset.29cm.co.kr/contents/framer/components/systems/PinProductBannerV2/PinProductBannerV2.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/systems/PinProductBannerV2/PinProductBannerV2.module.css.js","https:/asset.29cm.co.kr/contents/framer/libs/property-controls/component-id.js","https:/asset.29cm.co.kr/contents/framer/components/systems/PinProductBannerV2/PinProductBannerV2.js","https:/framerusercontent.com/modules/4gBB3FGqrvzyxmz8kQhP/sy94cNAaDGLYG1eHXw27/PinProductCard.js","https:/asset.29cm.co.kr/contents/framer/components/systems/Icon/Icon.js","https:/framerusercontent.com/modules/SG4xUagjjnWfRbTksrvL/1SmWPZhe6a5JiRkDyVjO/Icon.js","https:/framerusercontent.com/modules/xLE5HG7olMmFPcKyHrCu/fNcuq4mkZo0kWAFi6ZTO/UsLepqFCr.js","https:/asset.29cm.co.kr/contents/framer/components/canvas/BrandProvider/BrandProvider.hooks.event.js","https:/asset.29cm.co.kr/contents/framer/utils/cloneFramerChildren.js","https:/asset.29cm.co.kr/contents/framer/apis/brand/BrandApiService.js","https:/asset.29cm.co.kr/contents/framer/apis/brand/BrandApiService.types.js","https:/asset.29cm.co.kr/contents/framer/components/canvas/BrandProvider/BrandProvider.js","https:/framerusercontent.com/modules/ynFW5DHzbfEoPYWosWPd/N5eZOcQgqgLslScjgNGi/BrandProvider.js","https:/framerusercontent.com/modules/4MOzEkRrnIG5afEDcX08/4vk3fj2hmbm8jVW1P0eQ/oMWf1EYGO.js","https:/framerusercontent.com/modules/AMXKg9sx6qcx6omuOONa/AKpjBQwd8XhkOkgV4WBL/U6xwJDOvA.js","https:/asset.29cm.co.kr/contents/framer/components/modules/TagsModule/TagsModule.types.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/IntersectionProvider/IntersectionProvider.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/IntersectionProvider/IntersectionProvider.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/modules/query-store/query.store.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/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/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/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/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/utils/spacing.js","https:/asset.29cm.co.kr/contents/framer/components/modules/TagsModule/TagsElement/TagsElement.js","https:/asset.29cm.co.kr/contents/framer/apis/best/BestApiService.js","https:/asset.29cm.co.kr/contents/framer/apis/brand-curation/BrandCurationApiService.js","https:/asset.29cm.co.kr/contents/framer/apis/brand-sale/BrandSaleApiService.js","https:/asset.29cm.co.kr/contents/framer/apis/collection/CollectionApiService.js","https:/asset.29cm.co.kr/contents/framer/apis/keyword-collections/KeywordCollectionApiService.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/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/node_modules/date-fns/isWithinInterval.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/KeywordCollectionV2/TimeSaleCollectionTags/TimeSaleCollectionTags.utils.js","https:/asset.29cm.co.kr/contents/framer/utils/date.js","https:/asset.29cm.co.kr/contents/framer/components/modules/types.js","https:/asset.29cm.co.kr/contents/framer/components/modules/utils/facet.js","https:/asset.29cm.co.kr/contents/framer/components/systems/KeywordCollection/KeywordCollectionTags/KeywordCollectionTags.utils.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/components/systems/curations/CouponCollection/CalendarTags/CalendarTags.utils.js","https:/asset.29cm.co.kr/contents/framer/components/modules/TagsModule/TagsModule.utils.js","https:/asset.29cm.co.kr/contents/framer/components/modules/TagsModule/TagsModule.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/modules/TagsModule/AutoTagsModule/AutoTagsModule.js","https:/asset.29cm.co.kr/contents/framer/components/systems/curations/SectionLayout/SectionLayout.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/SWRErrorBoundary/SWRErrorBoundary.js","https:/asset.29cm.co.kr/contents/framer/libs/property-controls/breakpoint.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/helpers.js","https:/asset.29cm.co.kr/contents/framer/types/models/coupon.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/TagsModule/TagsModule.controls.js","https:/asset.29cm.co.kr/contents/framer/components/modules/TagsModule/LinkedTagsModule/LinkedTagsModule.utils.js","https:/asset.29cm.co.kr/contents/framer/components/modules/utils/key.js","https:/asset.29cm.co.kr/contents/framer/components/modules/TagsModule/LinkedTagsModule/LinkedTagsModule.js","https:/asset.29cm.co.kr/contents/framer/libs/property-controls/segment.js","https:/asset.29cm.co.kr/contents/framer/components/modules/TagsModule/TagsModule.js","https:/framerusercontent.com/modules/DStTfEFbFoRFY0iTlJH6/R9TqDIHCJQZjfhknPfKC/TagsModule.js","https:/asset.29cm.co.kr/contents/framer/utils/mediaBuilder.js","https:/asset.29cm.co.kr/contents/framer/components/systems/KeyVisual/KeyVisualImage/KeyVisualImage.js","https:/asset.29cm.co.kr/contents/framer/hooks/useVideoVisibility.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/components/systems/ResponsiveSplitViewV3/styles.js","https:/asset.29cm.co.kr/contents/framer/components/systems/ResponsiveSplitViewV3/ResponsiveSplitViewV3.module.css.js","https:/asset.29cm.co.kr/contents/framer/components/systems/ResponsiveSplitViewV3/ResponsiveSplitViewV3.js","https:/framerusercontent.com/modules/O0K3KTtU12sLvFyHu6Iq/Z6tkNXdSALllB99jm7SB/ResponsiveSplitViewV3.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentForm/CommentForm.constants.js","https:/asset.29cm.co.kr/contents/framer/node_modules/react-hook-form/dist/index.esm.js","https:/asset.29cm.co.kr/contents/framer/apis/comment/CommentApiService.js","https:/asset.29cm.co.kr/contents/framer/hooks/fetchers/useFetchPaginatedCommentList.js","https:/asset.29cm.co.kr/contents/framer/hooks/mutations/useCommentCreateMutation.js","https:/asset.29cm.co.kr/contents/framer/utils/concatDateTime.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentInfoProvider/CommentInfoProvider.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentInfoProvider/CommentInfoProvider.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentSection.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentForm/CommentForm.utils.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentForm/CommentForm.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentForm/CommentForm.module.css.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentForm/CommentForm.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentHeader/CommentHeader.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentHeader/CommentHeader.module.css.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentHeader/CommentHeader.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentCollection/ReadMoreButton/ReadMoreButton.module.css.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentCollection/ReadMoreButton/ReadMoreButton.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentCollection/CommentItem/CommentItem.module.css.js","https:/asset.29cm.co.kr/contents/framer/hooks/mutations/useCommentDeleteMutation.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentCollection/CommentItem/CommentItem.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentCollection/CommentItem/DeleteButton/DeleteButton.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentCollection/CommentItem/CommentItem.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentCollection/CommentList/CommentList.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentSection.constants.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentCollection/CommentCollection.module.css.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentCollection/CommentCollection.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentCollection/CommentCollection.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentSection.module.css.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/CommentSection.js","https:/asset.29cm.co.kr/contents/framer/components/systems/CommentSection/index.js","https:/framerusercontent.com/modules/qeinm3S99PewfpGqyHmu/vpUGqZCDfTFftlPHvtKB/CommentSection.js","https:/asset.29cm.co.kr/contents/framer/components/systems/Button/Button.constants.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/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/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/node_modules/swr/infinite/dist/index.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/node_modules/lodash-es/last.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/UnITERExs97OfV6awrNb/up61MPn9MW2s72h831vs/ProductsModule.js","https:/asset.29cm.co.kr/contents/framer/components/primitives/Schedulable/Schedulable.types.js","https:/asset.29cm.co.kr/contents/framer/hooks/useVisibilityAwareInterval.js","https:/asset.29cm.co.kr/contents/framer/components/primitives/Schedulable/Schedulable.utils.js","https:/asset.29cm.co.kr/contents/framer/components/primitives/Schedulable/Schedulable.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/primitives/Schedulable/Schedulable.js","https:/framerusercontent.com/modules/bv2yzxT3iEOjAMleVPGP/8UbCcuQA0I1fhMsF0CR6/Schedulable.js","https:/framerusercontent.com/modules/MYr1AFTnHiOBXB2sbTDs/T8xt0iX6DU3QCLROaNw1/Countdown.js","https:/framerusercontent.com/modules/UtriMZNreMlYjnOdTaqJ/aFAC6NILFEzy27DwfoNC/Tyu7EX3in.js","https:/ga.jspm.io/npm:@motionone/utils@10.14.0/dist/index.es.js","https:/ga.jspm.io/npm:@motionone/easing@10.12.0/dist/index.es.js","https:/ga.jspm.io/npm:@motionone/animation@10.12.0/dist/index.es.js","https:/ga.jspm.io/npm:tslib@2.4.0/tslib.es6.js","https:/ga.jspm.io/npm:hey-listen@1.0.8/dist/index.js","https:/ga.jspm.io/npm:@motionone/generators@10.12.0/dist/index.es.js","https:/ga.jspm.io/npm:@motionone/dom@10.12.0/dist/index.es.js","https:/framerusercontent.com/modules/zvkTOpMSuRzRhLzZZIwG/yCImoe7N6FDrwtjU8MPe/SlideShow.js","https:/framerusercontent.com/modules/T6h4TEnK3kSQBerFXf31/7dO9i3ymptjFbMpuVWZJ/nYZM4hrEZ.js","https:/framerusercontent.com/modules/ir0Kv6dgKveBJNrnDzfn/OlHRr94l1XQQ8SYsyrDN/pPw5RoUzX.js","https:/framerusercontent.com/modules/RerA9LkjlrHTjhLqfrFV/ZL6zjTafFOIp7UpU3rcX/Ws8DUaABw.js"],"sourcesContent":["import { jsx } from \"react/jsx-runtime\";\nconst PlusIcon = ({\n  className\n}) => {\n  return /* @__PURE__ */ jsx(\"svg\", { className, style: {\n    width: \"16px\",\n    height: \"16px\"\n  }, xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 24 24\", children: /* @__PURE__ */ jsx(\"path\", { fill: \"#fff\", d: \"M13 3h-2v8H3v2h8v8h2v-8h8v-2h-8V3z\" }) });\n};\nexport {\n  PlusIcon\n};\n","const TYPE_SPRING_TRANSITION = {\n  type: \"spring\",\n  stiffness: 400,\n  damping: 30,\n  mass: 1\n};\nconst PIN_BUTTON_HOVER_EFFECT = {\n  scale: 1.2,\n  transition: TYPE_SPRING_TRANSITION\n};\nconst PIN_BUTTON_TAP_EFFECT = {\n  scale: 0.9,\n  transition: TYPE_SPRING_TRANSITION\n};\nconst PRODUCT_BANNER_EFFECT = {\n  animate: {\n    opacity: 1\n  },\n  exit: {\n    opacity: 0\n  },\n  transition: TYPE_SPRING_TRANSITION\n};\nconst PRODUCT_BANNER_EFFECT_INITIAL = {\n  opacity: 0\n};\nexport {\n  PIN_BUTTON_HOVER_EFFECT,\n  PIN_BUTTON_TAP_EFFECT,\n  PRODUCT_BANNER_EFFECT,\n  PRODUCT_BANNER_EFFECT_INITIAL,\n  TYPE_SPRING_TRANSITION\n};\n","const sides = [\"top\", \"right\", \"bottom\", \"left\"];\nconst alignments = [\"start\", \"end\"];\nconst placements = /* @__PURE__ */ sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst createCoords = (v) => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: \"right\",\n  right: \"left\",\n  bottom: \"top\",\n  top: \"bottom\"\n};\nconst oppositeAlignmentMap = {\n  start: \"end\",\n  end: \"start\"\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === \"function\" ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split(\"-\")[0];\n}\nfunction getAlignment(placement) {\n  return placement.split(\"-\")[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === \"x\" ? \"y\" : \"x\";\n}\nfunction getAxisLength(axis) {\n  return axis === \"y\" ? \"height\" : \"width\";\n}\nfunction getSideAxis(placement) {\n  return [\"top\", \"bottom\"].includes(getSide(placement)) ? \"y\" : \"x\";\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === \"x\" ? alignment === (rtl ? \"end\" : \"start\") ? \"right\" : \"left\" : alignment === \"start\" ? \"bottom\" : \"top\";\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, (alignment) => oppositeAlignmentMap[alignment]);\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, (side) => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== \"number\" ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  return {\n    ...rect,\n    top: rect.y,\n    left: rect.x,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  };\n}\nexport {\n  alignments,\n  clamp,\n  createCoords,\n  evaluate,\n  expandPaddingObject,\n  getAlignment,\n  getAlignmentAxis,\n  getAlignmentSides,\n  getAxisLength,\n  getOppositeAlignmentPlacement,\n  getOppositeAxis,\n  getOppositePlacement,\n  getPaddingObject,\n  getSide,\n  getSideAxis,\n  max,\n  min,\n  placements,\n  rectToClientRect,\n  round,\n  sides\n};\n","import { evaluate, placements, getAlignmentSides, getSide, getAlignment, getSideAxis, clamp, getAlignmentAxis, getPaddingObject, rectToClientRect, getOppositeAlignmentPlacement, getOppositeAxis, getAxisLength } from \"../../utils/dist/floating-ui.utils.js\";\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === \"y\";\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case \"top\":\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case \"bottom\":\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case \"right\":\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case \"left\":\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case \"start\":\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case \"end\":\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = \"bottom\",\n    strategy = \"absolute\",\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === \"object\") {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = \"clippingAncestors\",\n    rootBoundary = \"viewport\",\n    elementContext = \"floating\",\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === \"floating\" ? \"reference\" : \"floating\";\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating)),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === \"floating\" ? {\n    ...rects.floating,\n    x,\n    y\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = await (platform.isElement == null ? void 0 : platform.isElement(offsetParent)) ? await (platform.getScale == null ? void 0 : platform.getScale(offsetParent)) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter((placement) => getAlignment(placement) === alignment), ...allowedPlacements.filter((placement) => getAlignment(placement) !== alignment)] : allowedPlacements.filter((placement) => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter((placement) => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\nconst autoPlacement = function(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: \"autoPlacement\",\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== void 0 || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || [], {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map((d) => {\n        const alignment2 = getAlignment(d.placement);\n        return [d.placement, alignment2 && crossAxis ? (\n          // Check along the mainAxis and main crossAxis side.\n          d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0)\n        ) : (\n          // Check only the mainAxis.\n          d.overflows[0]\n        ), d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter((d) => d[2].slice(\n        0,\n        // Aligned placements should not check their opposite crossAxis\n        // side.\n        getAlignment(d[0]) ? 2 : 3\n      ).every((v) => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === \"y\";\n  const mainAxisMulti = [\"left\", \"top\"].includes(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === \"number\" ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: 0,\n    crossAxis: 0,\n    alignmentAxis: null,\n    ...rawValue\n  };\n  if (alignment && typeof alignmentAxis === \"number\") {\n    crossAxis = alignment === \"end\" ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\nconst offset = function(options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: \"offset\",\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\nconst shift = function(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: \"shift\",\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: (_ref) => {\n            let {\n              x: x2,\n              y: y2\n            } = _ref;\n            return {\n              x: x2,\n              y: y2\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === \"y\" ? \"top\" : \"left\";\n        const maxSide = mainAxis === \"y\" ? \"bottom\" : \"right\";\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === \"y\" ? \"top\" : \"left\";\n        const maxSide = crossAxis === \"y\" ? \"bottom\" : \"right\";\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y\n        }\n      };\n    }\n  };\n};\nexport {\n  autoPlacement,\n  computePosition,\n  detectOverflow,\n  offset,\n  rectToClientRect,\n  shift\n};\n","function getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || \"\").toLowerCase();\n  }\n  return \"#document\";\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (typeof ShadowRoot === \"undefined\") {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && ![\"inline\", \"contents\"].includes(display);\n}\nfunction isTableElement(element) {\n  return [\"table\", \"td\", \"th\"].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n  const webkit = isWebKit();\n  const css = getComputedStyle(element);\n  return css.transform !== \"none\" || css.perspective !== \"none\" || (css.containerType ? css.containerType !== \"normal\" : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== \"none\" : false) || !webkit && (css.filter ? css.filter !== \"none\" : false) || [\"transform\", \"perspective\", \"filter\"].some((value) => (css.willChange || \"\").includes(value)) || [\"paint\", \"layout\", \"strict\", \"content\"].some((value) => (css.contain || \"\").includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else {\n      currentNode = getParentNode(currentNode);\n    }\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === \"undefined\" || !CSS.supports)\n    return false;\n  return CSS.supports(\"-webkit-backdrop-filter\", \"none\");\n}\nfunction isLastTraversableNode(node) {\n  return [\"html\", \"body\", \"#document\"].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.pageXOffset,\n    scrollTop: element.pageYOffset\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === \"html\") {\n    return node;\n  }\n  const result = (\n    // Step into the shadow DOM of the parent of a slotted node.\n    node.assignedSlot || // DOM Element detected.\n    node.parentNode || // ShadowRoot detected.\n    isShadowRoot(node) && node.host || // Fallback.\n    getDocumentElement(node)\n  );\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nexport {\n  getComputedStyle,\n  getContainingBlock,\n  getDocumentElement,\n  getNearestOverflowAncestor,\n  getNodeName,\n  getNodeScroll,\n  getOverflowAncestors,\n  getParentNode,\n  getWindow,\n  isContainingBlock,\n  isElement,\n  isHTMLElement,\n  isLastTraversableNode,\n  isNode,\n  isOverflowElement,\n  isShadowRoot,\n  isTableElement,\n  isWebKit\n};\n","import { autoPlacement as autoPlacement$1, shift as shift$1, computePosition as computePosition$1 } from \"../../core/dist/floating-ui.core.js\";\nimport { detectOverflow, offset } from \"../../core/dist/floating-ui.core.js\";\nimport { createCoords, round, max, min, rectToClientRect } from \"../../utils/dist/floating-ui.utils.js\";\nimport { getDocumentElement, isElement, isHTMLElement, getNodeName, isOverflowElement, getNodeScroll, getWindow, isTableElement, getComputedStyle, isContainingBlock, getContainingBlock, getOverflowAncestors, getParentNode, isLastTraversableNode, isWebKit } from \"../../utils/dist/floating-ui.utils.dom.js\";\nfunction getCssDimensions(element) {\n  const css = getComputedStyle(element);\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\nconst noOffsets = /* @__PURE__ */ createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = currentWin.frameElement;\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = currentWin.frameElement;\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\nconst topLayerSelectors = [\":popover-open\", \":modal\"];\nfunction isTopLayer(floating) {\n  return topLayerSelectors.some((selector) => {\n    try {\n      return floating.matches(selector);\n    } catch (e) {\n      return false;\n    }\n  });\n}\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === \"fixed\";\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== \"body\" || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n  };\n}\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\nfunction getWindowScrollBarX(element) {\n  return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle(body).direction === \"rtl\") {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === \"fixed\") {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === \"fixed\");\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === \"viewport\") {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === \"document\") {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      ...clippingAncestor,\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle(parentNode).position === \"fixed\" || hasFixedPositionAncestor(parentNode, stopNode);\n}\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter((el) => isElement(el) && getNodeName(el) !== \"body\");\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle(element).position === \"fixed\";\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === \"fixed\") {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === \"static\" && !!currentContainingBlockComputedStyle && [\"absolute\", \"fixed\"].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      result = result.filter((ancestor) => ancestor !== currentNode);\n    } else {\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === \"clippingAncestors\" ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === \"fixed\";\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== \"body\" || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n  const x = rect.left + scroll.scrollLeft - offsets.x;\n  const y = rect.top + scroll.scrollTop - offsets.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle(element).position === \"fixed\") {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  return element.offsetParent;\n}\nfunction getOffsetParent(element, polyfill) {\n  const window = getWindow(element);\n  if (!isHTMLElement(element) || isTopLayer(element)) {\n    return window;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === \"static\") {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && (getNodeName(offsetParent) === \"html\" || getNodeName(offsetParent) === \"body\" && getComputedStyle(offsetParent).position === \"static\" && !isContainingBlock(offsetParent))) {\n    return window;\n  }\n  return offsetParent || getContainingBlock(element) || window;\n}\nconst getElementRects = async function(data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      ...await getDimensionsFn(data.floating)\n    }\n  };\n};\nfunction isRTL(element) {\n  return getComputedStyle(element).direction === \"rtl\";\n}\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\nconst autoPlacement = autoPlacement$1;\nconst shift = shift$1;\nconst computePosition = (reference, floating, options) => {\n  const cache = /* @__PURE__ */ new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\nexport {\n  autoPlacement,\n  computePosition,\n  detectOverflow,\n  getOverflowAncestors,\n  offset,\n  platform,\n  shift\n};\n","import { useRef } from \"react\";\nimport { computePosition, autoPlacement, shift } from \"../node_modules/@floating-ui/dom/dist/floating-ui.dom.js\";\nimport { offset } from \"../node_modules/@floating-ui/core/dist/floating-ui.core.js\";\nconst useComputeFloatingPosition = () => {\n  const referenceElementRef = useRef(null);\n  const floatingElementRef = useRef(null);\n  const computeFloatingPosition = async (params = {}) => {\n    if (!referenceElementRef.current || !floatingElementRef.current) {\n      return;\n    }\n    const {\n      x,\n      y\n    } = await computePosition(referenceElementRef.current, floatingElementRef.current, {\n      middleware: [autoPlacement(params.autoPlacement), offset(params.offset), shift(params.shift)]\n    });\n    Object.assign(floatingElementRef.current.style, {\n      left: `${x}px`,\n      top: `${y}px`\n    });\n  };\n  return {\n    referenceElementRef,\n    floatingElementRef,\n    computeFloatingPosition\n  };\n};\nexport {\n  useComputeFloatingPosition\n};\n","import { useEffect } from \"react\";\nconst useOutsideClick = (ref, handler) => {\n  useEffect(() => {\n    const listener = (event) => {\n      if (!ref.current || ref.current.contains(event.target)) {\n        return;\n      }\n      handler();\n    };\n    document.addEventListener(\"mousedown\", listener);\n    document.addEventListener(\"touchstart\", listener);\n    return () => {\n      document.removeEventListener(\"mousedown\", listener);\n      document.removeEventListener(\"touchstart\", listener);\n    };\n  }, [ref, handler]);\n};\nexport {\n  useOutsideClick\n};\n","import { useTrackClickComponent } from \"../../canvas/ComponentEventTracker/ComponentEventTracker.hooks.event.js\";\nconst useTrackClickRoundPlusComponent = () => {\n  const {\n    trackClickComponent\n  } = useTrackClickComponent();\n  const trackClickRoundPlusComponent = () => {\n    trackClickComponent(\"RoundPlus\");\n  };\n  return {\n    trackClickRoundPlusComponent\n  };\n};\nexport {\n  useTrackClickRoundPlusComponent\n};\n","import { useState, useRef, useEffect } from \"react\";\nimport { useComputeFloatingPosition } from \"../../../hooks/useComputeFloatingPosition.js\";\nimport { useOutsideClick } from \"../../../hooks/useOutsideClick.js\";\nimport { useTrackClickRoundPlusComponent } from \"./PinProductBannerV2.hooks.event.js\";\nimport { isCanvas } from \"../../../utils/framer/isCanvas.js\";\nimport \"framer\";\nimport { useInView } from \"framer-motion\";\nconst PRODUCT_OFFSET = 15;\nconst PRODUCT_SHIFT_PADDING = 20;\nconst usePinProductBannerV2 = (initialIsActive) => {\n  const [isActive, setIsActive] = useState(initialIsActive);\n  const containerRef = useRef(null);\n  const {\n    referenceElementRef,\n    floatingElementRef,\n    computeFloatingPosition\n  } = useComputeFloatingPosition();\n  const isAllInViewOnce = useInView(containerRef, {\n    amount: 1,\n    once: true\n  });\n  const {\n    trackClickRoundPlusComponent\n  } = useTrackClickRoundPlusComponent();\n  useEffect(() => {\n    if (!isCanvas()) {\n      return;\n    }\n    setIsActive(initialIsActive);\n  }, [initialIsActive]);\n  useEffect(() => {\n    if (!isActive) {\n      return;\n    }\n    computeFloatingPosition({\n      offset: PRODUCT_OFFSET,\n      shift: {\n        padding: PRODUCT_SHIFT_PADDING\n      },\n      autoPlacement: {\n        allowedPlacements: [\"top\", \"bottom\"]\n      }\n    });\n  }, [isActive]);\n  useOutsideClick(containerRef, () => {\n    if (!isAllInViewOnce) {\n      return;\n    }\n    if (!isActive) {\n      return;\n    }\n    setIsActive(false);\n  });\n  const handlePinButtonClick = () => {\n    trackClickRoundPlusComponent();\n    setIsActive((prev) => !prev);\n  };\n  return {\n    isActive,\n    containerRef,\n    referenceElementRef,\n    floatingElementRef,\n    handlePinButtonClick\n  };\n};\nexport {\n  usePinProductBannerV2\n};\n","(function() {\n  \"use strict\";\n  try {\n    if (typeof document != \"undefined\") {\n      var elementStyle = document.createElement(\"style\");\n      elementStyle.appendChild(document.createTextNode(\"._pinButtonWrapper_1wlij_1 {\\n  padding: 8px;\\n  width: fit-content;\\n  height: fit-content;\\n  cursor: pointer;\\n}\\n\\n._pinButton_1wlij_1 {\\n  position: relative;\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0;\\n  width: 20px;\\n  height: 20px;\\n  background-color: #000;\\n  border: none;\\n  border-radius: 50%;\\n\\n  &[data-color-theme='light'] {\\n    background-color: #fff;\\n\\n    > svg > path {\\n      fill: #000;\\n    }\\n  }\\n}\\n\\n._productWrapper_1wlij_29 {\\n  /* Float on top of the UI */\\n  position: absolute;\\n\\n  /* Avoid layout interference */\\n  width: max-content;\\n  top: 0px;\\n  left: 0px;\\n}\\n\\n._productContainer_1wlij_39 {\\n  display: flex;\\n  justify-content: center;\\n\\n  width: 100%;\\n  height: 100%;\\n  cursor: pointer;\\n\\n  width: 196px;\\n  background: white;\\n  border: 0.7px solid #00000066;\\n  border-radius: 2px;\\n  padding: 8px;\\n}\\n\\n._productContainer_1wlij_39 > :first-child {\\n  width: 100% !important;\\n  height: 100% !important;\\n}\"));\n      document.head.appendChild(elementStyle);\n    }\n  } catch (e) {\n    console.error(\"vite-plugin-css-injected-by-js\", e);\n  }\n})();\nconst pinButtonWrapper = \"_pinButtonWrapper_1wlij_1\";\nconst pinButton = \"_pinButton_1wlij_1\";\nconst productWrapper = \"_productWrapper_1wlij_29\";\nconst productContainer = \"_productContainer_1wlij_39\";\nconst styles = {\n  pinButtonWrapper,\n  pinButton,\n  productWrapper,\n  productContainer\n};\nexport {\n  styles as default,\n  pinButton,\n  pinButtonWrapper,\n  productContainer,\n  productWrapper\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","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport { addPropertyControls, ControlType } from \"framer\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { PlusIcon } from \"../../@shared/icons/PlusIcon.js\";\nimport { isCanvas } from \"../../../utils/framer/isCanvas.js\";\nimport { isFramerPreview } from \"../../../utils/framer/isFramerPreview.js\";\nimport { PIN_BUTTON_HOVER_EFFECT, PIN_BUTTON_TAP_EFFECT, PRODUCT_BANNER_EFFECT, PRODUCT_BANNER_EFFECT_INITIAL } from \"./PinProductBannerV2.constants.effect.js\";\nimport { usePinProductBannerV2 } from \"./PinProductBannerV2.hooks.js\";\nimport styles from \"./PinProductBannerV2.module.css.js\";\nimport { COMPONENT_ID_PROPS } from \"../../../libs/property-controls/component-id.js\";\nimport { ProductCard } from \"../../@shared/ProductCard/ProductCard.js\";\nimport { ProductCardType } from \"../../@shared/ProductCard/ProductCard.types.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 { formatFramerProduct2Product } from \"../../../apis/framer/FramerApiService.js\";\nimport \"../../../config/index.js\";\nimport { useFetchProductList } from \"../../../hooks/fetchers/useFetchProductList.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 \"../../@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 \"../../../utils/redirectLogin.js\";\nimport \"../../../utils/event-properties/source.js\";\nimport { useSendProductIds } from \"../../../hooks/product/useSendProductIds.js\";\nimport \"../../../constants/snowplow/snowplowSchema.js\";\nconst PinProductBannerV2 = ({\n  productId,\n  isActive: initialIsActive,\n  buttonTheme,\n  style,\n  componentId\n}) => {\n  const {\n    isActive,\n    containerRef,\n    referenceElementRef,\n    floatingElementRef,\n    handlePinButtonClick\n  } = usePinProductBannerV2(initialIsActive);\n  useSendProductIds(productId);\n  const {\n    productList\n  } = useFetchProductList([Number(productId)]);\n  const framerProduct = productList.find(({\n    itemNo\n  }) => itemNo === Number(productId));\n  const product = formatFramerProduct2Product(framerProduct);\n  const isFramer = isCanvas() || isFramerPreview();\n  if (!product && !isFramer) {\n    return null;\n  }\n  return /* @__PURE__ */ jsxs(\"div\", { ref: containerRef, style, children: [\n    /* @__PURE__ */ jsx(\"div\", { className: styles.pinButtonWrapper, onClick: handlePinButtonClick, children: /* @__PURE__ */ jsx(motion.button, { className: styles.pinButton, ref: referenceElementRef, \"data-color-theme\": buttonTheme, whileHover: PIN_BUTTON_HOVER_EFFECT, whileTap: PIN_BUTTON_TAP_EFFECT, children: /* @__PURE__ */ jsx(PlusIcon, {}) }) }),\n    /* @__PURE__ */ jsx(motion.div, { className: styles.productWrapper, ref: floatingElementRef, children: /* @__PURE__ */ jsx(AnimatePresence, { children: isActive ? /* @__PURE__ */ jsx(motion.div, { ...PRODUCT_BANNER_EFFECT, initial: isCanvas() ? void 0 : PRODUCT_BANNER_EFFECT_INITIAL, children: /* @__PURE__ */ jsx(\"div\", { className: styles.productContainer, style, children: product ? /* @__PURE__ */ jsx(ProductCard, { product, type: ProductCardType.BAR, size: \"small\", eventProperties: {\n      product,\n      isProductGroup: false,\n      componentName: componentId\n    }, hasBadges: false, hasSoldOutBadge: false, hasHeart: false, hasPriceUnit: false, isHeartOn: \"OFF\", style: {\n      overflow: \"hidden\"\n    }, onHeartOn: () => {\n    }, onHeartOff: () => {\n    } }) : /* @__PURE__ */ jsx(Fallback, { productId, isFramer }) }) }) : null }) })\n  ] });\n};\nconst Fallback = ({\n  productId,\n  isFramer\n}) => {\n  if (!isFramer) {\n    return null;\n  }\n  if (!productId) {\n    return \"[관리자용 메시지] 상품 번호를 입력해주세요. 상품 번호가 없을 경우 배포된 페이지에서 본 컴포넌트 자체가 표시되지 않습니다.\";\n  }\n  return \"[관리자용 메시지] 완전 품절된 상품입니다. 완전 품절된 상품은 정책에 따라 배포된 페이지에서 본 컴포넌트 자체가 표시되지 않습니다.\";\n};\naddPropertyControls(PinProductBannerV2, {\n  isActive: {\n    title: \"상품 배너 오픈\",\n    type: ControlType.Boolean,\n    defaultValue: false\n  },\n  productId: {\n    title: \"상품 번호\",\n    type: ControlType.String,\n    placeholder: \"상품 번호를 입력\",\n    description: \"단수만 입력\"\n  },\n  buttonTheme: {\n    title: \"핀 버튼 색상\",\n    type: ControlType.Enum,\n    displaySegmentedControl: true,\n    options: [\"dark\", \"light\"],\n    optionTitles: [\"검은색\", \"하얀색\"],\n    defaultValue: \"dark\"\n  },\n  ...COMPONENT_ID_PROPS\n});\nexport {\n  PinProductBannerV2\n};\n","import{PinProductBannerV2}from\"https://asset.29cm.co.kr/contents/framer/components/systems/PinProductBannerV2/PinProductBannerV2.js\";// import { PinProductBannerV2 } from \"http://localhost:4173/components/systems/PinProductBannerV2/PinProductBannerV2.js\"\nPinProductBannerV2.displayName=\"PinProductCard\";/**\n * @framerDisableUnlink\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default PinProductBannerV2;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"PinProductBannerV2\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\",\"framerDisableUnlink\":\"* @framerSupportedLayoutWidth auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./PinProductCard.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","// Generated by Framer (013b13c)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,Link,RichText,SmartComponentScopedContainer,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import Icon from\"https://framerusercontent.com/modules/SG4xUagjjnWfRbTksrvL/1SmWPZhe6a5JiRkDyVjO/Icon.js\";const IconFonts=getFonts(Icon);const cycleOrder=[\"yxwPcMEIL\",\"eoFCvyQvv\"];const serializationHash=\"framer-YqTwb\";const variantClassNames={eoFCvyQvv:\"framer-v-1x68ull\",yxwPcMEIL:\"framer-v-el9xs8\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableVariantMap={\"Desktop \":\"eoFCvyQvv\",Mobile:\"yxwPcMEIL\"};const getProps=({brandNameEng,brandNameKor,height,id,onClick,url,width,...props})=>{return{...props,kT8IypM42:brandNameKor??props.kT8IypM42??\"브랜드이름\",Pyudersl5:onClick??props.Pyudersl5,SqoVHJxLr:brandNameEng??props.SqoVHJxLr??\"BrandName\",variant:humanReadableVariantMap[props.variant]??props.variant??\"yxwPcMEIL\",zDbc9iCls:url??props.zDbc9iCls};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,kT8IypM42,zDbc9iCls,Pyudersl5,SqoVHJxLr,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"yxwPcMEIL\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap4fyqkj=activeVariantCallback(async(...args)=>{if(Pyudersl5){const res=await Pyudersl5(...args);if(res===false)return false;}});const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-el9xs8\",className,classNames),\"data-framer-name\":\"Mobile\",layoutDependency:layoutDependency,layoutId:\"yxwPcMEIL\",ref:refBinding,style:{...style},...addPropertyOverrides({eoFCvyQvv:{\"data-framer-name\":\"Desktop \"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h1,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgQm9sZA==\",\"--framer-font-family\":'\"Pretendard Bold\", \"Pretendard Bold Placeholder\", sans-serif',\"--framer-font-size\":\"32px\",\"--framer-letter-spacing\":\"0px\",\"--framer-text-alignment\":\"left\",\"--framer-text-transform\":\"uppercase\"},children:\"BrandName\"})}),className:\"framer-1e4xogz\",\"data-framer-name\":\"BrandEngName\",fonts:[\"CUSTOM;Pretendard Bold\"],layoutDependency:layoutDependency,layoutId:\"WhcIZ1UyL\",style:{\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:SqoVHJxLr,verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({eoFCvyQvv:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h1,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgQm9sZA==\",\"--framer-font-family\":'\"Pretendard Bold\", \"Pretendard Bold Placeholder\", sans-serif',\"--framer-font-size\":\"50px\",\"--framer-letter-spacing\":\"0px\",\"--framer-text-alignment\":\"left\",\"--framer-text-transform\":\"uppercase\"},children:\"BrandName\"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(Link,{href:zDbc9iCls,motionChild:true,nodeId:\"YFRoZ5WVO\",scopeId:\"UsLepqFCr\",children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-50pebo framer-1y0t5x5\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"YFRoZ5WVO\",onTap:onTap4fyqkj,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1ugkllw\",\"data-framer-name\":\"BrandButton\",layoutDependency:layoutDependency,layoutId:\"yBB9f9Td6\",children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-xhpv1i\",layoutDependency:layoutDependency,layoutId:\"FuTw7FCiO\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-17k3gnn\",layoutDependency:layoutDependency,layoutId:\"xKaZtyrDS\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h1,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgTWVkaXVt\",\"--framer-font-family\":'\"Pretendard Medium\", \"Pretendard Medium Placeholder\", sans-serif',\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"-0.5px\",\"--framer-text-alignment\":\"left\"},children:\"브랜드이름\"})}),className:\"framer-7ew7o9\",\"data-framer-name\":\"BrandKoName\",fonts:[\"CUSTOM;Pretendard Medium\"],layoutDependency:layoutDependency,layoutId:\"R0qt72Pig\",text:kT8IypM42,verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({eoFCvyQvv:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h1,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgTWVkaXVt\",\"--framer-font-family\":'\"Pretendard Medium\", \"Pretendard Medium Placeholder\", sans-serif',\"--framer-font-size\":\"21px\",\"--framer-letter-spacing\":\"-0.5px\",\"--framer-text-alignment\":\"left\"},children:\"브랜드이름\"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-100uvd8-container\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"OmZIA3t96-container\",nodeId:\"OmZIA3t96\",rendersWithMotion:true,scopeId:\"UsLepqFCr\",children:/*#__PURE__*/_jsx(Icon,{fill:false,height:\"100%\",id:\"OmZIA3t96\",layoutId:\"OmZIA3t96\",size:18,type:\"chevronRight\",weight:\"bold\",width:\"100%\",...addPropertyOverrides({eoFCvyQvv:{size:21}},baseVariant,gestureVariant)})})})]})})})})})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-YqTwb.framer-1y0t5x5, .framer-YqTwb .framer-1y0t5x5 { display: block; }\",\".framer-YqTwb.framer-el9xs8 { align-content: flex-start; align-items: flex-start; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 390px; }\",\".framer-YqTwb .framer-1e4xogz { flex: none; height: auto; max-width: 100%; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\".framer-YqTwb .framer-50pebo { align-content: center; align-items: center; cursor: pointer; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 0px 0px 4px 0px; position: relative; text-decoration: none; width: min-content; }\",\".framer-YqTwb .framer-1ugkllw { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: flex-start; overflow: hidden; padding: 0px 20px 0px 0px; position: relative; width: min-content; }\",\".framer-YqTwb .framer-xhpv1i { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-YqTwb .framer-17k3gnn { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 3px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: min-content; }\",\".framer-YqTwb .framer-7ew7o9 { flex: none; height: auto; overflow: visible; position: relative; white-space: pre; width: auto; }\",\".framer-YqTwb .framer-100uvd8-container { flex: none; height: auto; position: relative; width: auto; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-YqTwb.framer-el9xs8, .framer-YqTwb .framer-50pebo, .framer-YqTwb .framer-1ugkllw, .framer-YqTwb .framer-xhpv1i, .framer-YqTwb .framer-17k3gnn { gap: 0px; } .framer-YqTwb.framer-el9xs8 > * { margin: 0px; margin-bottom: calc(8px / 2); margin-top: calc(8px / 2); } .framer-YqTwb.framer-el9xs8 > :first-child { margin-top: 0px; } .framer-YqTwb.framer-el9xs8 > :last-child { margin-bottom: 0px; } .framer-YqTwb .framer-50pebo > *, .framer-YqTwb .framer-1ugkllw > *, .framer-YqTwb .framer-xhpv1i > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } .framer-YqTwb .framer-50pebo > :first-child, .framer-YqTwb .framer-1ugkllw > :first-child, .framer-YqTwb .framer-xhpv1i > :first-child, .framer-YqTwb .framer-17k3gnn > :first-child { margin-left: 0px; } .framer-YqTwb .framer-50pebo > :last-child, .framer-YqTwb .framer-1ugkllw > :last-child, .framer-YqTwb .framer-xhpv1i > :last-child, .framer-YqTwb .framer-17k3gnn > :last-child { margin-right: 0px; } .framer-YqTwb .framer-17k3gnn > * { margin: 0px; margin-left: calc(3px / 2); margin-right: calc(3px / 2); } }\",\".framer-YqTwb.framer-v-1x68ull.framer-el9xs8 { width: 1080px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 72\n * @framerIntrinsicWidth 390\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"eoFCvyQvv\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"kT8IypM42\":\"brandNameKor\",\"zDbc9iCls\":\"url\",\"Pyudersl5\":\"onClick\",\"SqoVHJxLr\":\"brandNameEng\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerUsLepqFCr=withCSS(Component,css,\"framer-YqTwb\");export default FramerUsLepqFCr;FramerUsLepqFCr.displayName=\"BrandHeaderChildren\";FramerUsLepqFCr.defaultProps={height:72,width:390};addPropertyControls(FramerUsLepqFCr,{variant:{options:[\"yxwPcMEIL\",\"eoFCvyQvv\"],optionTitles:[\"Mobile\",\"Desktop \"],title:\"Variant\",type:ControlType.Enum},kT8IypM42:{defaultValue:\"브랜드이름\",displayTextArea:false,title:\"brandNameKor\",type:ControlType.String},zDbc9iCls:{title:\"url\",type:ControlType.Link},Pyudersl5:{title:\"OnClick\",type:ControlType.EventHandler},SqoVHJxLr:{defaultValue:\"BrandName\",description:\"\",displayTextArea:true,title:\"brandNameEng\",type:ControlType.String}});addFonts(FramerUsLepqFCr,[{explicitInter:true,fonts:[{family:\"Pretendard Bold\",source:\"custom\",url:\"https://framerusercontent.com/assets/crzkHU25cJonwO6VK1IAv8AG9g.woff2\"},{family:\"Pretendard Medium\",source:\"custom\",url:\"https://framerusercontent.com/assets/waOxuECzY3vThkoEawEKHBrPQB4.woff2\"}]},...IconFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerUsLepqFCr\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"72\",\"framerIntrinsicWidth\":\"390\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"eoFCvyQvv\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerVariables\":\"{\\\"kT8IypM42\\\":\\\"brandNameKor\\\",\\\"zDbc9iCls\\\":\\\"url\\\",\\\"Pyudersl5\\\":\\\"onClick\\\",\\\"SqoVHJxLr\\\":\\\"brandNameEng\\\"}\",\"framerImmutableVariables\":\"true\",\"framerComponentViewportWidth\":\"true\",\"framerDisplayContentsDiv\":\"false\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./UsLepqFCr.map","import { useAnalytics } from \"../../../hooks/analytics/useAnalytics.js\";\nimport { createContentEventProperties } from \"../../../utils/event-properties/content.js\";\nconst useTrackClickBrand = (brandNo) => {\n  const {\n    trackFirebase,\n    trackAmplitude\n  } = useAnalytics();\n  const trackClickBrand = () => {\n    const properties = {\n      ...createContentEventProperties(),\n      brand_no: brandNo\n    };\n    trackAmplitude(\"click_brand_home_content\", properties);\n    trackFirebase(\"click_brand_home_content\", properties);\n  };\n  return {\n    trackClickBrand\n  };\n};\nexport {\n  useTrackClickBrand\n};\n","import { Children, isValidElement, cloneElement } from \"react\";\nconst cloneFramerChildren = (children, props) => {\n  return Children.map(children, (child) => cloneLastDepthChild(child, props));\n};\nconst cloneLastDepthChild = (child, props) => {\n  if (!isValidElement(child)) {\n    return child;\n  }\n  if (!isValidElement(child.props.children)) {\n    return cloneElement(child, props);\n  }\n  return cloneElement(child, {\n    ...child.props,\n    children: cloneLastDepthChild(child.props.children, props)\n  });\n};\nexport {\n  cloneFramerChildren\n};\n","import { env } from \"../../config/index.js\";\nclass BrandApiService {\n  async getBrand(brandNo) {\n    return fetch(`${env.api.content}/api/v4/framers/front-brands/${brandNo}`, {\n      credentials: \"include\"\n    }).then((res) => res.json()).then((json) => json);\n  }\n}\nconst brandApi = new BrandApiService();\nexport {\n  brandApi\n};\n","var BrandImageTypes = /* @__PURE__ */ ((BrandImageTypes2) => {\n  BrandImageTypes2[\"ABOUT_IMAGE\"] = \"ABOUT\";\n  BrandImageTypes2[\"INITIAL_IMAGE\"] = \"ICON\";\n  return BrandImageTypes2;\n})(BrandImageTypes || {});\nexport {\n  BrandImageTypes\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport useSWR from \"../../../node_modules/swr/core/dist/index.js\";\nimport { withCSS } from \"framer\";\nimport { useTrackClickBrand } from \"./BrandProvider.hooks.event.js\";\nimport { cloneFramerChildren } from \"../../../utils/cloneFramerChildren.js\";\nimport { brandApi } from \"../../../apis/brand/BrandApiService.js\";\nimport { BrandImageTypes } from \"../../../apis/brand/BrandApiService.types.js\";\nimport { useTrackSnowplowEvent } from \"../../../hooks/snowplow/useTrackSnowplowEvent.js\";\nimport { querify } from \"../../../utils/querify.js\";\nimport { getImageUrl } from \"../../../utils/image/getImageUrl.js\";\nvar SortType = /* @__PURE__ */ ((SortType2) => {\n  SortType2[\"Recommend\"] = \"RECOMMEND\";\n  SortType2[\"New\"] = \"NEW\";\n  SortType2[\"Review\"] = \"REVIEW\";\n  SortType2[\"Price\"] = \"PRICE\";\n  SortType2[\"Discount\"] = \"DISCOUNT\";\n  SortType2[\"Like\"] = \"LIKE\";\n  SortType2[\"Order\"] = \"ORDER\";\n  return SortType2;\n})(SortType || {});\nvar SortOrderType = /* @__PURE__ */ ((SortOrderType2) => {\n  SortOrderType2[\"Asc\"] = \"ASC\";\n  SortOrderType2[\"Desc\"] = \"DESC\";\n  return SortOrderType2;\n})(SortOrderType || {});\nconst SortQuery = {\n  Recommend: {\n    sort: \"RECOMMEND\",\n    sortOrder: \"DESC\"\n    /* Desc */\n  },\n  New: {\n    sort: \"NEW\",\n    sortOrder: \"DESC\"\n    /* Desc */\n  },\n  Review: {\n    sort: \"REVIEW\",\n    sortOrder: \"DESC\"\n    /* Desc */\n  },\n  MinPrice: {\n    sort: \"PRICE\",\n    sortOrder: \"ASC\"\n    /* Asc */\n  },\n  MaxPrice: {\n    sort: \"PRICE\",\n    sortOrder: \"DESC\"\n    /* Desc */\n  },\n  Discount: {\n    sort: \"DISCOUNT\",\n    sortOrder: \"DESC\"\n    /* Desc */\n  },\n  Like: {\n    sort: \"LIKE\",\n    sortOrder: \"DESC\"\n    /* Desc */\n  },\n  Order: {\n    sort: \"ORDER\",\n    sortOrder: \"DESC\"\n    /* Desc */\n  }\n};\nconst COMPONENT_NAME = \"brand-provider\";\nconst css = [`\n    .${COMPONENT_NAME}-container {\n      width: 100%;\n      height: 100%;\n    }\n  `, `\n    .${COMPONENT_NAME}-container > div {\n      width: 100% !important;\n      height: 100% !important;\n    }\n  `];\nconst BrandProvider = withCSS(({\n  children,\n  brandNo = \"\",\n  sort = \"Recommend\"\n}) => {\n  const {\n    trackClickBrand\n  } = useTrackClickBrand(brandNo);\n  const trackSnowplowEvent = useTrackSnowplowEvent();\n  const {\n    data\n  } = useSWR(brandNo ? `brand_${brandNo}` : null, () => brandApi.getBrand(brandNo));\n  const query = querify(SortQuery[sort]);\n  const url = `https://shop.29cm.co.kr/brand/${brandNo}?${query}`;\n  if (!data || !data.data) {\n    return null;\n  }\n  const {\n    data: brand\n  } = data;\n  const handleClick = () => {\n    trackClickBrand();\n    trackSnowplowEvent(\"click_brand\", {\n      brand_no: brand.id,\n      brand_name: brand.brandNameKor\n    });\n  };\n  const brandImage = brand.images.find((image) => image.type === BrandImageTypes.INITIAL_IMAGE);\n  return /* @__PURE__ */ jsx(\"div\", { className: `${COMPONENT_NAME}-container`, children: cloneFramerChildren(children, {\n    ...brand,\n    image: brandImage ? getImageUrl(brandImage.url) : \"\",\n    url,\n    onClick: handleClick\n  }) });\n}, css);\nexport {\n  BrandProvider,\n  SortOrderType,\n  SortType\n};\n","import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useIsOnFramerCanvas}from\"framer\";import{BrandProvider as BaseBrandProvider}from\"https://asset.29cm.co.kr/contents/framer/components/canvas/BrandProvider/BrandProvider.js\";/**\n * @framerSupportedLayoutWidth fixed\n * @framerDisableUnlink\n */export default function BrandProvider({children,brandNo,sort}){const isOnFramerCanvas=useIsOnFramerCanvas();if(isOnFramerCanvas){return children;}return /*#__PURE__*/_jsx(BaseBrandProvider,{brandNo:brandNo,sort:sort,children:children});}addPropertyControls(BrandProvider,{children:{type:ControlType.ComponentInstance,description:\"컴포넌트\"},brandNo:{type:ControlType.String,description:\"브랜드 번호\",defaultValue:\"4054\"},sort:{type:ControlType.Enum,title:\"브랜드홈 상품 정렬\",defaultValue:\"Recommend\",options:[\"Recommend\",\"New\",\"Review\",\"MinPrice\",\"MaxPrice\",\"Discount\",\"Like\",\"Order\"],optionTitles:[\"추천순\",\"신상품순\",\"리뷰많은순\",\"낮은가격순\",\"높은가격순\",\"높은할인순\",\"좋아요많은순\",\"판매순\"]}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"BrandProvider\",\"slots\":[\"children\"],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./BrandProvider.map","// Generated by Framer (9e04080)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,Link,RichText,SmartComponentScopedContainer,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import Icon from\"https://framerusercontent.com/modules/SG4xUagjjnWfRbTksrvL/1SmWPZhe6a5JiRkDyVjO/Icon.js\";const IconFonts=getFonts(Icon);const cycleOrder=[\"qkU7Wt9Hq\",\"sX8kP8qOc\"];const serializationHash=\"framer-Q73qa\";const variantClassNames={qkU7Wt9Hq:\"framer-v-1ybrwu0\",sX8kP8qOc:\"framer-v-1d3cbso\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableVariantMap={\"Desktop \":\"sX8kP8qOc\",Mobile:\"qkU7Wt9Hq\"};const getProps=({brandNameEng,brandNameKor,height,id,onClick,url,width,...props})=>{return{...props,kT8IypM42:brandNameKor??props.kT8IypM42??\"브랜드이름\",Pyudersl5:onClick??props.Pyudersl5,SqoVHJxLr:brandNameEng??props.SqoVHJxLr??\"BrandName\",variant:humanReadableVariantMap[props.variant]??props.variant??\"qkU7Wt9Hq\",zDbc9iCls:url??props.zDbc9iCls};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,kT8IypM42,zDbc9iCls,Pyudersl5,SqoVHJxLr,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"qkU7Wt9Hq\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap4fyqkj=activeVariantCallback(async(...args)=>{if(Pyudersl5){const res=await Pyudersl5(...args);if(res===false)return false;}});const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-1ybrwu0\",className,classNames),\"data-framer-name\":\"Mobile\",layoutDependency:layoutDependency,layoutId:\"qkU7Wt9Hq\",ref:refBinding,style:{...style},...addPropertyOverrides({sX8kP8qOc:{\"data-framer-name\":\"Desktop \"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h1,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgQm9sZA==\",\"--framer-font-family\":'\"Pretendard Bold\", \"Pretendard Bold Placeholder\", sans-serif',\"--framer-font-size\":\"32px\",\"--framer-letter-spacing\":\"0px\",\"--framer-text-alignment\":\"left\",\"--framer-text-transform\":\"uppercase\"},children:\"BrandName\"})}),className:\"framer-6c7hxt\",\"data-framer-name\":\"BrandEngName\",fonts:[\"CUSTOM;Pretendard Bold\"],layoutDependency:layoutDependency,layoutId:\"COnmTWHnj\",style:{\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:SqoVHJxLr,verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({sX8kP8qOc:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h1,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgQm9sZA==\",\"--framer-font-family\":'\"Pretendard Bold\", \"Pretendard Bold Placeholder\", sans-serif',\"--framer-font-size\":\"50px\",\"--framer-letter-spacing\":\"0px\",\"--framer-text-alignment\":\"left\",\"--framer-text-transform\":\"uppercase\"},children:\"BrandName\"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(Link,{href:zDbc9iCls,motionChild:true,nodeId:\"TkskEDnYE\",scopeId:\"oMWf1EYGO\",children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-jepcc6 framer-1gmqm35\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"TkskEDnYE\",onTap:onTap4fyqkj,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1qxs5f1\",\"data-framer-name\":\"BrandButton\",layoutDependency:layoutDependency,layoutId:\"xyk1ivBou\",children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-qdk3tm\",layoutDependency:layoutDependency,layoutId:\"i2sWGnEbX\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-hvik0l\",layoutDependency:layoutDependency,layoutId:\"H5QxH_cyH\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h1,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgTWVkaXVt\",\"--framer-font-family\":'\"Pretendard Medium\", \"Pretendard Medium Placeholder\", sans-serif',\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"-0.5px\",\"--framer-text-alignment\":\"left\"},children:\"브랜드이름\"})}),className:\"framer-1gl0wvw\",\"data-framer-name\":\"BrandKoName\",fonts:[\"CUSTOM;Pretendard Medium\"],layoutDependency:layoutDependency,layoutId:\"kYqacNFkC\",text:kT8IypM42,verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({sX8kP8qOc:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h1,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgTWVkaXVt\",\"--framer-font-family\":'\"Pretendard Medium\", \"Pretendard Medium Placeholder\", sans-serif',\"--framer-font-size\":\"21px\",\"--framer-letter-spacing\":\"-0.5px\",\"--framer-text-alignment\":\"left\"},children:\"브랜드이름\"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-s5rn8j-container\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"CueQ1g8ma-container\",nodeId:\"CueQ1g8ma\",rendersWithMotion:true,scopeId:\"oMWf1EYGO\",children:/*#__PURE__*/_jsx(Icon,{fill:false,height:\"100%\",id:\"CueQ1g8ma\",layoutId:\"CueQ1g8ma\",size:18,type:\"chevronRight\",weight:\"bold\",width:\"100%\",...addPropertyOverrides({sX8kP8qOc:{size:21}},baseVariant,gestureVariant)})})})]})})})})})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-Q73qa.framer-1gmqm35, .framer-Q73qa .framer-1gmqm35 { display: block; }\",\".framer-Q73qa.framer-1ybrwu0 { align-content: flex-start; align-items: flex-start; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 390px; }\",\".framer-Q73qa .framer-6c7hxt { flex: none; height: auto; max-width: 100%; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\".framer-Q73qa .framer-jepcc6 { align-content: center; align-items: center; cursor: pointer; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 0px 0px 4px 0px; position: relative; text-decoration: none; width: min-content; }\",\".framer-Q73qa .framer-1qxs5f1 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: flex-start; overflow: hidden; padding: 0px 20px 0px 0px; position: relative; width: min-content; }\",\".framer-Q73qa .framer-qdk3tm { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-Q73qa .framer-hvik0l { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 3px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: min-content; }\",\".framer-Q73qa .framer-1gl0wvw { flex: none; height: auto; overflow: visible; position: relative; white-space: pre; width: auto; }\",\".framer-Q73qa .framer-s5rn8j-container { flex: none; height: auto; position: relative; width: auto; }\",\".framer-Q73qa.framer-v-1d3cbso.framer-1ybrwu0 { width: 1080px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 72\n * @framerIntrinsicWidth 390\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"sX8kP8qOc\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"kT8IypM42\":\"brandNameKor\",\"zDbc9iCls\":\"url\",\"Pyudersl5\":\"onClick\",\"SqoVHJxLr\":\"brandNameEng\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FrameroMWf1EYGO=withCSS(Component,css,\"framer-Q73qa\");export default FrameroMWf1EYGO;FrameroMWf1EYGO.displayName=\"BrandHeaderChildren\";FrameroMWf1EYGO.defaultProps={height:72,width:390};addPropertyControls(FrameroMWf1EYGO,{variant:{options:[\"qkU7Wt9Hq\",\"sX8kP8qOc\"],optionTitles:[\"Mobile\",\"Desktop \"],title:\"Variant\",type:ControlType.Enum},kT8IypM42:{defaultValue:\"브랜드이름\",displayTextArea:false,title:\"brandNameKor\",type:ControlType.String},zDbc9iCls:{title:\"url\",type:ControlType.Link},Pyudersl5:{title:\"OnClick\",type:ControlType.EventHandler},SqoVHJxLr:{defaultValue:\"BrandName\",description:\"\",displayTextArea:true,title:\"brandNameEng\",type:ControlType.String}});addFonts(FrameroMWf1EYGO,[{explicitInter:true,fonts:[{family:\"Pretendard Bold\",source:\"custom\",url:\"https://framerusercontent.com/assets/TDgt4wnSbW6ssMiUHMKSTjZfpQ.woff2\"},{family:\"Pretendard Medium\",source:\"custom\",url:\"https://framerusercontent.com/assets/Zz1SyNcAE05UfirXmAdWGcSx5I.woff2\"}]},...IconFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FrameroMWf1EYGO\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerImmutableVariables\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerComponentViewportWidth\":\"true\",\"framerColorSyntax\":\"true\",\"framerVariables\":\"{\\\"kT8IypM42\\\":\\\"brandNameKor\\\",\\\"zDbc9iCls\\\":\\\"url\\\",\\\"Pyudersl5\\\":\\\"onClick\\\",\\\"SqoVHJxLr\\\":\\\"brandNameEng\\\"}\",\"framerIntrinsicHeight\":\"72\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"sX8kP8qOc\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerIntrinsicWidth\":\"390\",\"framerDisplayContentsDiv\":\"false\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./oMWf1EYGO.map","// Generated by Framer (9e04080)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getPropertyControls,SmartComponentScopedContainer,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import BrandHeaderChildren1 from\"https://framerusercontent.com/modules/xLE5HG7olMmFPcKyHrCu/fNcuq4mkZo0kWAFi6ZTO/UsLepqFCr.js\";import BrandProvider from\"https://framerusercontent.com/modules/ynFW5DHzbfEoPYWosWPd/N5eZOcQgqgLslScjgNGi/BrandProvider.js\";import BrandHeaderChildren from\"https://framerusercontent.com/modules/4MOzEkRrnIG5afEDcX08/4vk3fj2hmbm8jVW1P0eQ/oMWf1EYGO.js\";const BrandHeaderChildrenFonts=getFonts(BrandHeaderChildren);const BrandProviderFonts=getFonts(BrandProvider);const BrandHeaderChildren1Controls=getPropertyControls(BrandHeaderChildren1);const serializationHash=\"framer-HewUi\";const variantClassNames={hrevUeyTR:\"framer-v-h9zrhp\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableEnumMap={\"Desktop \":\"eoFCvyQvv\",Mobile:\"yxwPcMEIL\"};const getProps=({brandNo,height,id,variant1,width,...props})=>{return{...props,NH81jFlWy:brandNo??props.NH81jFlWy,tS_Stomtq:humanReadableEnumMap[variant1]??variant1??props.tS_Stomtq??\"yxwPcMEIL\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,NH81jFlWy,c1wtB7UoY,tS_Stomtq,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"hrevUeyTR\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-h9zrhp\",className,classNames),\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"hrevUeyTR\",ref:refBinding,style:{...style},children:/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-5hyl63-container\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"AXbevo8Ix-container\",nodeId:\"AXbevo8Ix\",rendersWithMotion:true,scopeId:\"U6xwJDOvA\",children:/*#__PURE__*/_jsx(BrandProvider,{brandNo:NH81jFlWy,height:\"100%\",id:\"AXbevo8Ix\",layoutId:\"AXbevo8Ix\",sort:c1wtB7UoY,style:{width:\"100%\"},width:\"100%\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:72,width:\"1200px\",children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1oh74na-container\",inComponentSlot:true,layoutDependency:layoutDependency,layoutId:\"RVjFrSVnP-container\",nodeId:\"RVjFrSVnP\",rendersWithMotion:true,scopeId:\"U6xwJDOvA\",children:/*#__PURE__*/_jsx(BrandHeaderChildren,{height:\"100%\",id:\"RVjFrSVnP\",kT8IypM42:\"브랜드이름\",layoutId:\"RVjFrSVnP\",SqoVHJxLr:\"BrandName\",style:{width:\"100%\"},variant:tS_Stomtq,width:\"100%\"})})})})})})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-HewUi.framer-pulxkv, .framer-HewUi .framer-pulxkv { display: block; }\",\".framer-HewUi.framer-h9zrhp { align-content: flex-start; align-items: flex-start; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 1440px; }\",\".framer-HewUi .framer-5hyl63-container { flex: 1 0 0px; height: auto; position: relative; width: 1px; }\",\".framer-HewUi .framer-1oh74na-container { height: auto; position: relative; width: 1200px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 72\n * @framerIntrinsicWidth 1440\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"NH81jFlWy\":\"brandNo\",\"tS_Stomtq\":\"variant1\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerU6xwJDOvA=withCSS(Component,css,\"framer-HewUi\");export default FramerU6xwJDOvA;FramerU6xwJDOvA.displayName=\"BrandHeader\";FramerU6xwJDOvA.defaultProps={height:72,width:1440};addPropertyControls(FramerU6xwJDOvA,{NH81jFlWy:{defaultValue:\"\",title:\"Brand No\",type:ControlType.String},tS_Stomtq:BrandHeaderChildren1Controls?.[\"variant\"]&&{...BrandHeaderChildren1Controls[\"variant\"],defaultValue:\"yxwPcMEIL\",description:undefined,hidden:undefined,title:\"Variant\"}});addFonts(FramerU6xwJDOvA,[{explicitInter:true,fonts:[]},...BrandHeaderChildrenFonts,...BrandProviderFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerU6xwJDOvA\",\"slots\":[],\"annotations\":{\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicWidth\":\"1440\",\"framerImmutableVariables\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerDisplayContentsDiv\":\"false\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"72\",\"framerColorSyntax\":\"true\",\"framerVariables\":\"{\\\"NH81jFlWy\\\":\\\"brandNo\\\",\\\"tS_Stomtq\\\":\\\"variant1\\\"}\",\"framerAutoSizeImages\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./U6xwJDOvA.map","var TagsModuleInputType = /* @__PURE__ */ ((TagsModuleInputType2) => {\n  TagsModuleInputType2[TagsModuleInputType2[\"Linked\"] = 0] = \"Linked\";\n  TagsModuleInputType2[TagsModuleInputType2[\"Manual\"] = 1] = \"Manual\";\n  TagsModuleInputType2[TagsModuleInputType2[\"Auto\"] = 2] = \"Auto\";\n  return TagsModuleInputType2;\n})(TagsModuleInputType || {});\nexport {\n  TagsModuleInputType\n};\n","import 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 { 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","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","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 { 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 { 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 { 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","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","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 { jsx } from \"react/jsx-runtime\";\nimport { useMemo, useEffect } from \"react\";\nimport { useQueryStore } from \"../../query-store/query.store.js\";\nimport { Tags } from \"../../../systems/curations/Tags/index.js\";\nimport { useTrackClickButtonEvent, useSetRootModule } from \"../../hooks.js\";\nimport { EventTrigger } from \"../../../@shared/EventTrigger/index.js\";\nimport { getPadding } from \"../../../../utils/spacing.js\";\nimport { useSegment } from \"../../../@shared/providers/SegmentProvider/SegmentProvider.js\";\nconst TagsElement = ({\n  loading = false,\n  currentIndex = 0,\n  inputs: _inputs,\n  output,\n  layout\n}) => {\n  const dispatchSetQuery = useQueryStore((state) => state.dispatchSetQuery);\n  const inputs = useMemo(() => attachAdditionalQuery(_inputs, output), [_inputs, output]);\n  const currentInput = inputs[currentIndex];\n  const {\n    isVisible\n  } = useSegment();\n  const trackClickButtonEvent = useTrackClickButtonEvent(currentInput == null ? void 0 : currentInput.query);\n  const handleClick = (index, name = \"\") => () => {\n    trackClickButtonEvent({\n      type: \"tag\",\n      layoutPosition: index + 1,\n      name\n    });\n  };\n  const handleValueChange = (value) => {\n    if (!output) {\n      return;\n    }\n    const index = Number(value);\n    const input = inputs[index];\n    dispatchSetQuery(output, input.query);\n  };\n  useEffect(() => {\n    window == null ? void 0 : window.dispatchEvent(new CustomEvent(\"layout-done\"));\n    if (!currentInput) {\n      return;\n    }\n    if (!output) {\n      return;\n    }\n    dispatchSetQuery(output, currentInput.query);\n  }, [output, currentInput]);\n  useSetRootModule(currentInput == null ? void 0 : currentInput.query, output);\n  const padding = getPadding(layout);\n  if (!loading && inputs.length === 0 || !isVisible) {\n    window == null ? void 0 : window.dispatchEvent(new CustomEvent(\"layout-done\"));\n    return null;\n  }\n  return /* @__PURE__ */ jsx(Tags.Root, { loading, defaultValue: 0, value: currentIndex, dragPaddingLeft: padding.left, dragPaddingRight: padding.right, onValueChange: handleValueChange, children: /* @__PURE__ */ jsx(Tags.List, { style: {\n    margin: 0,\n    paddingTop: padding.top,\n    paddingBottom: padding.bottom,\n    lineHeight: 0\n  }, list: inputs, children: ({\n    item,\n    index\n  }) => /* @__PURE__ */ jsx(EventTrigger.Target, { onClick: handleClick(index, item == null ? void 0 : item.label), children: /* @__PURE__ */ jsx(Tags.Item, { value: index, children: item == null ? void 0 : item.label }) }) }) });\n};\nconst attachAdditionalQuery = (values, output) => {\n  return values.map((value, index) => ({\n    ...value,\n    query: {\n      ...value.query,\n      facetName: value.label,\n      keys: [...value.query.keys ?? [], `tags-${index}`],\n      isRoot: value.query.rootOutput === void 0,\n      rootOutput: value.query.rootOutput || output\n    }\n  }));\n};\nexport {\n  TagsElement\n};\n","import { 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 { env } from \"../../config/index.js\";\nimport { throwFailError } from \"../@middlewares/throwFailError.js\";\nimport { APIService } from \"../APIService.js\";\nclass BrandCurationApiService extends APIService {\n  constructor() {\n    super();\n    this.setMiddleware(throwFailError);\n  }\n  async getFavoriteBrands({\n    size,\n    brandGroupIds\n  }) {\n    return this.get(`${env.api.content}/api/v4/framers/proxy/content-api/api/v5/brand-curations/favorite`, {\n      size,\n      brandGroupIds\n    });\n  }\n}\nconst brandCurationApi = new BrandCurationApiService();\nexport {\n  brandCurationApi\n};\n","import { APIService } from \"../APIService.js\";\nimport { throwFailError } from \"../@middlewares/throwFailError.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 { 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 { 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 { 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","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 { 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 \"../../../../../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","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","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 { CategoryType } from \"../types.js\";\nconst CATEGORY_MIN_PRODUCT_COUNT = 12;\nconst mergeByLargeCategories = (values, excludeCategories) => {\n  const map = values.reduce(\n    (prev, curr) => {\n      const {\n        count = 0,\n        children = []\n      } = prev[curr.largeId] ?? {};\n      if (excludeCategories.largeIds.includes(curr.largeId)) {\n        return prev;\n      }\n      return {\n        ...prev,\n        [curr.largeId]: {\n          id: curr.largeId,\n          name: curr.largeName,\n          count: count + curr.count,\n          children: concatMiddleCategories(children, curr, excludeCategories.middleIds)\n        }\n      };\n    },\n    // 중복 카테고리를 솎아내기 쉽도록 카테고리 id 가 key 인 객체로 정의한다.\n    {}\n  );\n  return Object.values(map);\n};\nconst concatMiddleCategories = (categories, value, excludeMiddleCategoryIds) => {\n  if (!value.middleId || !value.middleName || excludeMiddleCategoryIds.includes(value.middleId)) {\n    return categories;\n  }\n  const has = categories.findIndex((category) => category.id === value.middleId) !== -1;\n  return has ? categories : [...categories, {\n    id: value.middleId,\n    name: value.middleName,\n    parentId: value.largeId\n  }];\n};\nconst filterByOverMinProductCount = (values) => {\n  return values.filter(({\n    count = 0\n  }) => count >= CATEGORY_MIN_PRODUCT_COUNT);\n};\nconst orderByGender = (values, matcher, gender) => {\n  const oppositeGender = getOppositeGender(gender);\n  return [...values].sort((x, y) => (\n    // 현재 성별을 우선적으로 검사하여 해당되는 카테고리를 앞으로 보낸다.\n    matcher(y, gender) - matcher(x, gender) || // 현재 성별과 반대되는 성별을 기준으로 검사하여 해당되는 카테고리를 뒤로 보낸다.\n    matcher(x, oppositeGender) - matcher(y, oppositeGender)\n  ));\n};\nconst getOppositeGender = (gender) => {\n  return gender === \"F\" ? \"M\" : \"F\";\n};\nconst isGenderCategoryMatches = (value, gender) => {\n  return Number(value.name.includes(gender === \"F\" ? \"여성\" : \"남성\"));\n};\nconst isGenderProductGroupMatches = (value, gender) => {\n  return Number(value.gender === gender);\n};\nconst reshapeCategoryFacetValues = (values, options) => {\n  const {\n    categoryType,\n    gender,\n    excludeCategories\n  } = options;\n  const categories = orderByGender(filterByOverMinProductCount(mergeByLargeCategories(values, excludeCategories)), isGenderCategoryMatches, gender);\n  switch (categoryType) {\n    case CategoryType.Large:\n      return categories;\n    case CategoryType.Middle:\n      return categories.flatMap((category) => category.children ?? []);\n  }\n};\nexport {\n  filterByOverMinProductCount,\n  isGenderCategoryMatches,\n  isGenderProductGroupMatches,\n  mergeByLargeCategories,\n  orderByGender,\n  reshapeCategoryFacetValues\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 { 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 { 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 { getProductGroupType } from \"../../systems/KeywordCollection/KeywordCollectionTags/KeywordCollectionTags.utils.js\";\nimport { reshapeProductGroups } from \"../../systems/curations/KeywordCollectionV2/TimeSaleCollection.utils.js\";\nimport { orderByDateAsc, getCurrentScheduleIndex } from \"../../../utils/date.js\";\nimport { getCalendarTagName, getCurrentBrandSaleIndex } from \"../../systems/curations/CouponCollection/CalendarTags/CalendarTags.utils.js\";\nimport { orderByGender, isGenderProductGroupMatches } from \"../utils/facet.js\";\nconst GENDER_PREFIX = \"GENDER@\";\nconst GENDER_SEPARATOR = \":\";\nconst reshapeProductGroupsByGender = (groups) => groups.map((group) => {\n  const [gender, title] = group.title.replace(GENDER_PREFIX, \"\").trim().split(GENDER_SEPARATOR);\n  return {\n    ...group,\n    title: group.title.includes(GENDER_PREFIX) ? title : group.title,\n    gender\n  };\n});\nconst getKeywordCollectionTagsResult = (query, userSegment) => {\n  const {\n    displayEndAt,\n    productGroups = []\n  } = query;\n  const type = getProductGroupType(productGroups);\n  if (type === \"DATE\") {\n    const groups = orderByDateAsc(reshapeProductGroups(productGroups, displayEndAt ?? \"\"), (x) => x.startAt);\n    const currentIndex = getCurrentScheduleIndex(groups, (x) => x.startAt, (x) => x.endAt);\n    return {\n      values: groups.map((group, index) => ({\n        label: group.title,\n        query: {\n          ...query,\n          selectedProductGroup: {\n            id: group.productGroupId,\n            index,\n            sort: group.sort,\n            startAt: group.startAt,\n            endAt: group.endAt\n          }\n        }\n      })),\n      currentIndex\n    };\n  }\n  if (type === \"GENDER\") {\n    const gender = userSegment.gender ?? \"F\";\n    const groups = orderByGender(reshapeProductGroupsByGender(productGroups), isGenderProductGroupMatches, gender);\n    return {\n      values: groups.map((group, index) => ({\n        label: group.title,\n        query: {\n          ...query,\n          selectedProductGroup: {\n            id: group.productGroupId,\n            sort: group.sort,\n            index\n          }\n        }\n      }))\n    };\n  }\n  return {\n    values: productGroups.map((group, index) => ({\n      label: group.title,\n      query: {\n        ...query,\n        selectedProductGroup: {\n          id: group.productGroupId,\n          index,\n          sort: group.sort\n        }\n      }\n    }))\n  };\n};\nconst getCouponCollectionTagsResult = (query) => {\n  const {\n    brandSales = []\n  } = query;\n  const values = brandSales.map((brandSale, index) => ({\n    label: getCalendarTagName(brandSale),\n    query: {\n      ...query,\n      brandSaleId: brandSale.brandSaleId,\n      index,\n      displayStartAt: brandSale.displayStartAt,\n      displayEndAt: brandSale.displayEndAt\n    }\n  }));\n  const currentIndex = getCurrentBrandSaleIndex(brandSales);\n  return {\n    values,\n    currentIndex\n  };\n};\nexport {\n  getCouponCollectionTagsResult,\n  getKeywordCollectionTagsResult,\n  reshapeProductGroupsByGender\n};\n","import useSWR from \"../../../node_modules/swr/core/dist/index.js\";\nimport { bestApi } from \"../../../apis/best/BestApiService.js\";\nimport { brandCurationApi } from \"../../../apis/brand-curation/BrandCurationApiService.js\";\nimport { brandSaleApi } from \"../../../apis/brand-sale/BrandSaleApiService.js\";\nimport { collectionApi } from \"../../../apis/collection/CollectionApiService.js\";\nimport { keywordCollectionApi } from \"../../../apis/keyword-collections/KeywordCollectionApiService.js\";\nimport { formatSchedule } from \"../../systems/curations/KeywordCollectionV2/TimeSaleCollectionTags/TimeSaleCollectionTags.utils.js\";\nimport { orderByDateAsc, getCurrentScheduleIndex } from \"../../../utils/date.js\";\nimport { splitToNumberArray } from \"../../../utils/splitToNumberArray.js\";\nimport { QueryType, CategoryType, RankingType } from \"../types.js\";\nimport { reshapeCategoryFacetValues } from \"../utils/facet.js\";\nimport { getKeywordCollectionTagsResult, getCouponCollectionTagsResult } from \"./TagsModule.utils.js\";\nconst TAGS_FETCHER_KEY = \"tags-module/tags\";\nconst useTagsQuery = (options) => {\n  const {\n    enabled: _enabled = true,\n    query,\n    userSegment\n  } = options;\n  const enabled = _enabled && query !== void 0;\n  const {\n    data,\n    isLoading,\n    ...rest\n  } = useSWR(enabled ? [TAGS_FETCHER_KEY, query] : null, () => queryTags(query, userSegment));\n  const {\n    values = [],\n    currentIndex\n  } = data ?? {};\n  const hasTags = values.length > 0;\n  return {\n    isLoading: isLoading || !enabled || !hasTags,\n    tags: values,\n    currentIndex,\n    ...rest\n  };\n};\nconst fetchKeywordCollectionTags = async (query, userSegment) => {\n  if (!query.keywordCollectionId) {\n    return {\n      values: []\n    };\n  }\n  const {\n    data\n  } = await keywordCollectionApi.getKeywordCollection(Number(query.keywordCollectionId));\n  const {\n    title,\n    description,\n    displayEndAt,\n    productGroups\n  } = data;\n  return getKeywordCollectionTagsResult({\n    ...query,\n    title,\n    description: description ?? void 0,\n    displayEndAt: displayEndAt ?? void 0,\n    couponId: data.couponId ?? void 0,\n    productGroups\n  }, userSegment);\n};\nconst fetchKeywordCollectionsTags = async (query) => {\n  if (!query.keywordCollectionIds) {\n    return {\n      values: []\n    };\n  }\n  const {\n    data\n  } = await collectionApi.getCollections(splitToNumberArray(query.keywordCollectionIds));\n  const collections = orderByDateAsc(data, (x) => x.displayStartAt);\n  const currentIndex = getCurrentScheduleIndex(collections, (current) => current.displayStartAt, (_, next) => next == null ? void 0 : next.displayStartAt);\n  return {\n    values: collections.map((collection) => {\n      const {\n        collectionId,\n        title,\n        description,\n        displayStartAt,\n        displayEndAt,\n        productGroupList,\n        couponId\n      } = collection;\n      const [firstProductGroup] = productGroupList;\n      return {\n        label: formatSchedule(displayStartAt),\n        query: {\n          // NOTE(임규민): 다중 키워드 컬렉션의 개별 요소는 결국 키워드 컬렉션이므로, 연결되는 모듈에서 KeywordCollectionQuery 로 식별되도록 한다.\n          type: QueryType.KeywordCollection,\n          keywordCollectionId: `${collectionId}`,\n          title,\n          description: description ?? void 0,\n          displayEndAt: displayEndAt ?? void 0,\n          couponId: couponId ?? void 0,\n          productGroups: productGroupList.map((group) => ({\n            productGroupId: group.collectionProductGroupId,\n            title: group.title,\n            sort: group.sort\n          })),\n          selectedProductGroup: {\n            id: firstProductGroup.collectionProductGroupId,\n            sort: firstProductGroup.sort,\n            index: 0\n          }\n        }\n      };\n    }),\n    currentIndex\n  };\n};\nconst fetchBrandCurationTags = async (query) => {\n  if (!query.brandGroupIds) {\n    return {\n      values: []\n    };\n  }\n  const brandGroupIds = splitToNumberArray(query.brandGroupIds).join(\",\");\n  const {\n    data\n  } = await brandCurationApi.getFavoriteBrands({\n    size: query.brandSize,\n    brandGroupIds\n  });\n  const values = data.frontBrands.map((brand) => ({\n    label: brand.nameKor,\n    query: {\n      ...query,\n      brandId: brand.frontBrandId\n    }\n  }));\n  return {\n    values\n  };\n};\nconst fetchRankingTags = async (query, userSegment) => {\n  if (!query.rankingTagIds) {\n    return {\n      values: []\n    };\n  }\n  const tagIds = splitToNumberArray(query.rankingTagIds);\n  const {\n    data\n  } = await bestApi.getPLPFacetGroup({\n    facetGroupInput: {\n      tagFacetInputs: tagIds.map((tagId) => ({\n        tagId\n      }))\n    }\n  });\n  const gender = userSegment.gender ?? \"F\";\n  const categories = reshapeCategoryFacetValues(data.categoryFacet.values, {\n    categoryType: query.categoryType,\n    gender,\n    excludeCategories: {\n      largeIds: splitToNumberArray(query.excludeLargeCategoryIds),\n      middleIds: splitToNumberArray(query.excludeMiddleCategoryIds)\n    }\n  });\n  const inputs = categories.map((category) => {\n    const categoryProperties = {\n      [CategoryType.Large]: {\n        largeCategoryId: category.id\n      },\n      [CategoryType.Middle]: {\n        largeCategoryId: category.parentId,\n        middleCategoryId: category.id\n      }\n    };\n    return {\n      label: category.name,\n      query: {\n        ...query,\n        ...categoryProperties[query.categoryType],\n        childCategories: category.children ?? []\n      }\n    };\n  });\n  const allCategory = {\n    label: \"전체\",\n    query\n  };\n  const isTrending = query.rankingType === RankingType.Trending;\n  return {\n    values: isTrending ? [allCategory, ...inputs] : inputs\n  };\n};\nconst fetchCouponCollectionTags = async (query) => {\n  if (!query.brandSaleGroupId) {\n    return {\n      values: []\n    };\n  }\n  const {\n    data\n  } = await brandSaleApi.getBrandSaleGroup(Number(query.brandSaleGroupId));\n  const {\n    title,\n    description,\n    brandSaleList\n  } = data;\n  return getCouponCollectionTagsResult({\n    ...query,\n    title,\n    description: description ?? void 0,\n    brandSales: brandSaleList\n  });\n};\nconst queryTags = (query, userSegment) => {\n  if (!query) {\n    return {\n      values: []\n    };\n  }\n  switch (query.type) {\n    case QueryType.KeywordCollection:\n      return fetchKeywordCollectionTags(query, userSegment);\n    case QueryType.KeywordCollections:\n      return fetchKeywordCollectionsTags(query);\n    case QueryType.BrandCuration:\n      return fetchBrandCurationTags(query);\n    case QueryType.Ranking:\n      return fetchRankingTags(query, userSegment);\n    case QueryType.CouponCollection:\n      return fetchCouponCollectionTags(query);\n    default:\n      return {\n        values: []\n      };\n  }\n};\nexport {\n  useTagsQuery\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { useSegment } from \"../../../@shared/providers/SegmentProvider/SegmentProvider.js\";\nimport \"../../../systems/curations/IntersectionProvider/IntersectionProvider.js\";\nimport { useIntersectionContext } from \"../../../systems/curations/IntersectionProvider/IntersectionProvider.hooks.js\";\nimport \"react\";\nimport \"../../../../node_modules/@firebase/analytics/dist/esm/index.esm2017.js\";\nimport \"../../../../node_modules/firebase/app/dist/esm/index.esm.js\";\nimport { useCurrentUser } from \"../../../../hooks/useCurrentUser.js\";\nimport \"framer\";\nimport \"../../../../node_modules/@29cm/snowplow/dist/esm/core/snowplow.js\";\nimport \"../../../../node_modules/swr/core/dist/index.js\";\nimport \"../../../../apis/user-segment/CategoryFirstOrderApiService.js\";\nimport \"../../../../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 \"../../../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 { TagsElement } from \"../TagsElement/TagsElement.js\";\nimport { useTagsQuery } from \"../TagsModule.hooks.js\";\nconst AutoTagsModule = ({\n  query,\n  output,\n  layout\n}) => {\n  const {\n    isInView\n  } = useIntersectionContext();\n  const {\n    isVisible\n  } = useSegment();\n  const user = useCurrentUser();\n  const {\n    isLoading,\n    tags,\n    currentIndex\n  } = useTagsQuery({\n    query,\n    userSegment: user,\n    enabled: isInView && isVisible\n  });\n  return /* @__PURE__ */ jsx(TagsElement, { loading: isLoading, currentIndex, inputs: tags, output, layout });\n};\nexport {\n  AutoTagsModule\n};\n","import { 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 { 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","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 { 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 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","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 { combineObjectPropertyControls } from \"../../../libs/property-controls/helpers.js\";\nimport { QUERY_CONTROL, COUPON_COLLECTION_CONTROLS, RANKING_CONTROLS, BRAND_CURATION_CONTROLS, KEYWORD_COLLECTIONS_CONTROLS, KEYWORD_COLLECTION_CONTROLS, RECOMMENDATION_CONTROLS, PRODUCT_CONTROLS } from \"../controls.js\";\nconst AUTO_TAGS_MODULE_QUERY = {\n  ...QUERY_CONTROL,\n  controls: combineObjectPropertyControls(KEYWORD_COLLECTION_CONTROLS, KEYWORD_COLLECTIONS_CONTROLS, BRAND_CURATION_CONTROLS, RANKING_CONTROLS, COUPON_COLLECTION_CONTROLS)\n};\nconst MANUAL_TAGS_MODULE_QUERY = {\n  ...QUERY_CONTROL,\n  controls: combineObjectPropertyControls(PRODUCT_CONTROLS, RECOMMENDATION_CONTROLS)\n};\nexport {\n  AUTO_TAGS_MODULE_QUERY,\n  MANUAL_TAGS_MODULE_QUERY\n};\n","import { QueryType } from \"../../types.js\";\nimport { getKeywordCollectionTagsResult, getCouponCollectionTagsResult } from \"../TagsModule.utils.js\";\nconst getKeywordCollectionTags = (query, userSegment) => {\n  if (query.productGroups === void 0) {\n    return {\n      values: []\n    };\n  }\n  return getKeywordCollectionTagsResult(query, userSegment);\n};\nconst getCouponCollectionTags = (query) => {\n  if (query.brandSales === void 0) {\n    return {\n      values: []\n    };\n  }\n  return getCouponCollectionTagsResult(query);\n};\nconst getRankingTags = (query) => {\n  if (query.childCategories === void 0) {\n    return {\n      values: []\n    };\n  }\n  const {\n    childCategories\n  } = query;\n  const inputs = childCategories.map((category) => ({\n    label: category.name,\n    query: {\n      ...query,\n      middleCategoryId: category.id\n    }\n  }));\n  const allCategory = {\n    label: \"전체\",\n    query\n  };\n  return {\n    values: [allCategory, ...inputs]\n  };\n};\nconst getTags = (query, userSegment) => {\n  if (!query) {\n    return {\n      values: []\n    };\n  }\n  switch (query.type) {\n    case QueryType.KeywordCollection:\n      return getKeywordCollectionTags(query, userSegment);\n    case QueryType.CouponCollection:\n      return getCouponCollectionTags(query);\n    case QueryType.Ranking:\n      return getRankingTags(query);\n    default:\n      return {\n        values: []\n      };\n  }\n};\nexport {\n  getTags\n};\n","import { 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 { jsx } from \"react/jsx-runtime\";\nimport { useQueryStore } from \"../../query-store/query.store.js\";\nimport { TagsElement } from \"../TagsElement/TagsElement.js\";\nimport { useMemo, useEffect } from \"react\";\nimport \"../../../../node_modules/@firebase/analytics/dist/esm/index.esm2017.js\";\nimport \"../../../../node_modules/firebase/app/dist/esm/index.esm.js\";\nimport { useCurrentUser } from \"../../../../hooks/useCurrentUser.js\";\nimport \"framer\";\nimport \"../../../../node_modules/@29cm/snowplow/dist/esm/core/snowplow.js\";\nimport \"../../../../node_modules/swr/core/dist/index.js\";\nimport \"../../../../apis/user-segment/CategoryFirstOrderApiService.js\";\nimport \"../../../../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 \"../../../systems/Dialog/Dialog.module.css.js\";\nimport \"framer-motion\";\nimport \"../../../../containers/DialogContainer/DialogContainer.emitter.js\";\nimport { shallow as shallow$1 } from \"../../../../node_modules/zustand/esm/shallow.js\";\nimport \"../../../../utils/redirectLogin.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport { getTags } from \"./LinkedTagsModule.utils.js\";\nimport { createKey } from \"../../utils/key.js\";\nconst LinkedTagsModule = ({\n  value,\n  output,\n  layout\n}) => {\n  const user = useCurrentUser();\n  const [query, dispatchSetQuery] = useQueryStore((state) => [state.queries[value], state.dispatchSetQuery], shallow$1);\n  const {\n    values,\n    currentIndex\n  } = useMemo(() => getTags(query, user), [query, user]);\n  useEffect(() => {\n    if (values.length > 0 || !query) {\n      return;\n    }\n    dispatchSetQuery(output, query);\n  }, [query, values.length]);\n  return /* @__PURE__ */ jsx(TagsElement, { inputs: values, output, currentIndex, layout }, createKey(query));\n};\nexport {\n  LinkedTagsModule\n};\n","import { 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 { jsx } from \"react/jsx-runtime\";\nimport { addPropertyControls, ControlType } from \"framer\";\nimport { TagsModuleInputType } from \"./TagsModule.types.js\";\nimport { AutoTagsModule } from \"./AutoTagsModule/AutoTagsModule.js\";\nimport { SectionLayout } from \"../../systems/curations/SectionLayout/SectionLayout.js\";\nimport { SWRErrorBoundary } from \"../../@shared/SWRErrorBoundary/SWRErrorBoundary.js\";\nimport { BREAKPOINT_CONTROLS } from \"../../../libs/property-controls/breakpoint.js\";\nimport { THEME_CONTROLS } from \"../../../libs/property-controls/theme.js\";\nimport { COMPONENT_ID_PROPS } from \"../../../libs/property-controls/component-id.js\";\nimport { TagsElement } from \"./TagsElement/TagsElement.js\";\nimport { MANUAL_TAGS_MODULE_QUERY, AUTO_TAGS_MODULE_QUERY } from \"./TagsModule.controls.js\";\nimport { LinkedTagsModule } from \"./LinkedTagsModule/LinkedTagsModule.js\";\nimport { SEGMENT_CONTROLS } from \"../../../libs/property-controls/segment.js\";\nconst TagsModuleInner = ({\n  input,\n  output,\n  layout\n}) => {\n  switch (input.type) {\n    case TagsModuleInputType.Linked:\n      return /* @__PURE__ */ jsx(LinkedTagsModule, { value: input.value, output, layout });\n    case TagsModuleInputType.Auto:\n      return /* @__PURE__ */ jsx(AutoTagsModule, { query: input.query, output, layout });\n    case TagsModuleInputType.Manual:\n      return /* @__PURE__ */ jsx(TagsElement, { inputs: input.values, output, layout });\n    default:\n      return null;\n  }\n};\nconst TagsModule = ({\n  theme,\n  breakpoint,\n  componentId,\n  segment,\n  ...rest\n}) => {\n  return /* @__PURE__ */ jsx(SectionLayout, { theme, breakpoint, componentId, segment, children: /* @__PURE__ */ jsx(SWRErrorBoundary, { children: /* @__PURE__ */ jsx(TagsModuleInner, { ...rest }) }) });\n};\naddPropertyControls(TagsModule, {\n  ...BREAKPOINT_CONTROLS,\n  ...THEME_CONTROLS,\n  ...SEGMENT_CONTROLS,\n  componentId: {\n    hidden: ({\n      input\n    }) => (input == null ? void 0 : input.type) === TagsModuleInputType.Linked,\n    ...COMPONENT_ID_PROPS.componentId\n  },\n  input: {\n    type: ControlType.Object,\n    title: \"입력 값\",\n    controls: {\n      type: {\n        type: ControlType.Enum,\n        title: \"유형\",\n        options: [TagsModuleInputType.Linked, TagsModuleInputType.Auto, TagsModuleInputType.Manual],\n        optionTitles: [\"연결\", \"자동\", \"수동\"]\n      },\n      value: {\n        hidden: ({\n          type\n        }) => type !== TagsModuleInputType.Linked,\n        type: ControlType.String,\n        title: \"출력 값\",\n        defaultValue: \"\"\n      },\n      values: {\n        hidden: ({\n          type\n        }) => type !== TagsModuleInputType.Manual,\n        type: ControlType.Array,\n        title: \"입력 값 목록\",\n        control: {\n          type: ControlType.Object,\n          title: \"입력 값\",\n          controls: {\n            label: {\n              type: ControlType.String,\n              title: \"이름\",\n              defaultValue: \"텍스트\"\n            },\n            query: MANUAL_TAGS_MODULE_QUERY\n          }\n        },\n        defaultValue: [{\n          label: \"텍스트\"\n        }]\n      },\n      query: {\n        hidden: ({\n          type\n        }) => type !== TagsModuleInputType.Auto,\n        ...AUTO_TAGS_MODULE_QUERY\n      }\n    }\n  },\n  output: {\n    type: ControlType.String,\n    title: \"출력 값\"\n  },\n  layout: {\n    type: ControlType.Object,\n    title: \"레이아웃\",\n    controls: {\n      padding: {\n        type: ControlType.FusedNumber,\n        title: \"패딩\",\n        defaultValue: 0,\n        toggleKey: \"isMixed\",\n        toggleTitles: [\"All\", \"Individual\"],\n        valueKeys: [\"paddingTop\", \"paddingRight\", \"paddingBottom\", \"paddingLeft\"],\n        valueLabels: [\"T\", \"R\", \"B\", \"L\"],\n        min: 0\n      }\n    }\n  }\n});\nexport {\n  TagsModule\n};\n","import{TagsModule}from\"https://asset.29cm.co.kr/contents/framer/components/modules/TagsModule/TagsModule.js\";TagsModule.displayName=\"TagsModule\";export default TagsModule;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TagsModule\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TagsModule.map","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n  __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nclass MediaBuilder {\n  constructor(src) {\n    __publicField(this, \"src\");\n    this.src = new URL(src);\n  }\n  set(name, value) {\n    this.src.searchParams.set(name, value);\n  }\n  setQuality(quality) {\n    this.set(\"q\", `${quality}`);\n    return this;\n  }\n  setFormat(format) {\n    this.set(\"format\", format);\n    return this;\n  }\n  setWidth(width) {\n    this.set(\"width\", `${width}`);\n    return this;\n  }\n  getSrc() {\n    return this.src.href;\n  }\n  getSrcSet(...widths) {\n    const unique = Array.from(new Set(widths));\n    const array = unique.map((width) => {\n      const url = new URL(this.src);\n      url.searchParams.set(\"width\", `${width * 2}`);\n      return `${url.href} ${width}w`;\n    });\n    return array.join(\",\");\n  }\n}\nconst mediaBuilder = (src) => new MediaBuilder(src);\nexport {\n  mediaBuilder\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","import { useInView } from \"framer-motion\";\nimport { useRef, useState, useEffect } from \"react\";\nimport { usePageVisibility } from \"./usePageVisibility.js\";\nconst useVideoVisibility = () => {\n  const videoRef = useRef(null);\n  const isInView = useInView(videoRef);\n  const isPageVisible = usePageVisibility();\n  const [shouldLoadSources, setShouldLoadSources] = useState(false);\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 (isInView) {\n      (_a = videoRef.current) == null ? void 0 : _a.play().catch(() => {\n      });\n    } else {\n      videoRef.current.pause();\n    }\n  }, [isInView, isPageVisible]);\n  return {\n    videoRef,\n    isInView,\n    shouldLoadSources\n  };\n};\nexport {\n  useVideoVisibility\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, autoPlay: true, 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 { createUseStyles } from \"../../../styles/createUseStyle.js\";\nconst createUseStylesForResponsiveSplitView = createUseStyles({\n  [\"split-view\"]: 780,\n  [\"split-view-small\"]: 615,\n  [\"unified-view\"]: 0\n});\nexport {\n  createUseStylesForResponsiveSplitView\n};\n","(function() {\n  \"use strict\";\n  try {\n    if (typeof document != \"undefined\") {\n      var elementStyle = document.createElement(\"style\");\n      elementStyle.appendChild(document.createTextNode(\".hide-scroll-bar {\\n  -ms-overflow-style: none !important; /* Internet Explorer 10+ */\\n  scrollbar-width: none !important; /* Firefox */\\n}\\n\\n.hide-scroll-bar::-webkit-scrollbar {\\n  display: none !important; /* Safari and Chrome */\\n}\"));\n      document.head.appendChild(elementStyle);\n    }\n  } catch (e) {\n    console.error(\"vite-plugin-css-injected-by-js\", e);\n  }\n})();\nconst ResponsiveSplitViewV3_module = {};\nexport {\n  ResponsiveSplitViewV3_module as default\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport { withCSS, addPropertyControls, ControlType } from \"framer\";\nimport { useScroll, useSpring, useTransform, motion } from \"framer-motion\";\nimport { useState, useEffect } from \"react\";\nimport \"../../../hooks/stores/content/content.store.js\";\nimport \"../../../hooks/stores/dialog/dialog.store.js\";\nimport { useGlobalLayoutStore } from \"../../../hooks/stores/global-layout/global-layout.store.js\";\nimport \"../../../hooks/stores/toast/toast.store.js\";\nimport { useDeviceInfo } from \"../../../hooks/useDeviceInfo.js\";\nimport { isCanvas } from \"../../../utils/framer/isCanvas.js\";\nimport { ShareButton } from \"../ShareButton/ShareButton.js\";\nimport { createUseStylesForResponsiveSplitView } from \"./styles.js\";\nimport { TabBarV2 } from \"../TabBarV2/TabBarV2.js\";\nimport \"./ResponsiveSplitViewV3.module.css.js\";\nconst useStyles = createUseStylesForResponsiveSplitView({\n  container: {\n    \"base\": {\n      minHeight: 400,\n      display: \"flex\"\n    },\n    \"unified-view\": {\n      height: \"auto\",\n      maxWidth: 540,\n      flexDirection: \"column\"\n    }\n  },\n  mainContent: {\n    \"split-view\": {\n      width: 540\n    },\n    \"split-view-small\": {\n      flex: 1\n    }\n  },\n  sideContent: {\n    \"base\": {\n      position: \"sticky\",\n      top: 0,\n      backgroundColor: \"#ffffff\",\n      height: \"100vh\",\n      overflow: \"auto\"\n    },\n    \"split-view\": {\n      flex: 1\n    },\n    \"split-view-small\": {\n      width: 240\n    }\n  },\n  progressBarContainer: {\n    \"base\": {\n      position: \"fixed\",\n      top: 0,\n      left: 0,\n      width: \"\",\n      height: 2,\n      zIndex: 20,\n      backgroundColor: \"transparent\"\n    },\n    \"split-view\": {\n      width: 540\n    },\n    \"split-view-small\": {\n      width: \"calc(100% - 240px)\"\n    }\n  },\n  progressBar: {\n    base: {\n      width: \"100%\",\n      height: \"100%\",\n      backgroundColor: \"#FF4800\"\n    }\n  },\n  buttonContainer: {\n    base: {\n      position: \"fixed\",\n      right: \"calc(env(safe-area-inset-right) + 20px)\",\n      bottom: \"calc(env(safe-area-inset-bottom) + 12px)\",\n      left: \"calc(env(safe-area-inset-left) + 20px)\",\n      zIndex: 3e3,\n      display: \"flex\",\n      flexDirection: \"column\",\n      gap: 20\n    }\n  },\n  shareButtonContainer: {\n    \"base\": {\n      position: \"fixed\",\n      bottom: 20,\n      zIndex: 3e3,\n      paddingRight: 20\n    },\n    \"split-view\": {\n      right: \"calc(100% - 540px)\"\n    },\n    \"split-view-small\": {\n      right: 240\n    }\n  }\n});\nconst BASE_INSET_BOTTOM = 12;\nconst SAFE_AREA_INSET_BOTTOM = 35;\nconst COMPONENT_NAME = \"responsive-split-view-v3\";\nconst css = [`\n    .${COMPONENT_NAME}-container > div {\n        width: 100% !important;\n    }\n  `];\nconst ResponsiveSplitViewV3 = withCSS(({\n  style,\n  bigBanner,\n  mainContent,\n  sideContent,\n  bottomContent,\n  buttonVisibilityThresholdVh,\n  isTabBarVisible,\n  tabBar\n}) => {\n  const {\n    breakpoint,\n    styles\n  } = useStyles();\n  const isSplitView = breakpoint !== \"unified-view\";\n  const {\n    dispatchSetGlobalLayout\n  } = useGlobalLayoutStore();\n  const {\n    isWebview,\n    isTabView,\n    isIos\n  } = useDeviceInfo();\n  const {\n    scrollY,\n    scrollYProgress\n  } = useScroll();\n  const springScrollYProgress = useSpring(scrollYProgress, {\n    bounce: 0\n  });\n  const progressBarX = useTransform(springScrollYProgress, [0, 1], [\"-100%\", \"0%\"]);\n  const [isButtonVisible, setIsButtonVisible] = useState(false);\n  const items = [...tabBar.items, ...isSplitView ? [] : [tabBar.sideContentTabItem]];\n  useEffect(() => {\n    scrollY.on(\"change\", (value) => {\n      setIsButtonVisible(value >= ((window == null ? void 0 : window.innerHeight) ?? 900) * buttonVisibilityThresholdVh / 100);\n    });\n  }, [buttonVisibilityThresholdVh, scrollY]);\n  useEffect(() => {\n    dispatchSetGlobalLayout(\"responsive-split-view\");\n    return () => dispatchSetGlobalLayout(\"default\");\n  }, [dispatchSetGlobalLayout]);\n  useEffect(() => {\n    if (breakpoint === \"split-view\" || breakpoint === \"split-view-small\") {\n      document.documentElement.classList.add(\"hide-scroll-bar\");\n      document.body.classList.add(\"hide-scroll-bar\");\n      return () => {\n        document.documentElement.classList.remove(\"hide-scroll-bar\");\n        document.body.classList.remove(\"hide-scroll-bar\");\n      };\n    }\n  }, [breakpoint]);\n  if (isSplitView) {\n    return /* @__PURE__ */ jsxs(\"div\", { style: {\n      ...styles.container,\n      width: style == null ? void 0 : style.width,\n      // NOTE: 반응형으로 다른 높이를 적용하기 위해 height는 코드에서 관리한다\n      height: isCanvas() ? 900 : void 0\n    }, children: [\n      /* @__PURE__ */ jsxs(\"div\", { className: `${COMPONENT_NAME}-container`, style: styles.mainContent, children: [\n        /* @__PURE__ */ jsx(\"div\", { className: `${COMPONENT_NAME}-container`, children: bigBanner }),\n        isTabBarVisible ? /* @__PURE__ */ jsx(TabBarV2, { ...tabBar, items, useSmallTypography: true }) : null,\n        /* @__PURE__ */ jsx(\"div\", { className: `${COMPONENT_NAME}-container`, children: mainContent })\n      ] }),\n      /* @__PURE__ */ jsx(\"div\", { className: `${COMPONENT_NAME}-container`, style: styles.sideContent, children: sideContent }),\n      isCanvas() ? null : /* @__PURE__ */ jsx(\"div\", { style: styles.progressBarContainer, children: /* @__PURE__ */ jsx(motion.div, { style: {\n        ...styles.progressBar,\n        x: progressBarX\n      } }) }),\n      /* @__PURE__ */ jsx(\"div\", { style: styles.shareButtonContainer, children: /* @__PURE__ */ jsx(ShareButton, {}) })\n    ] });\n  }\n  const getBottom = () => {\n    if (isTabView) {\n      return BASE_INSET_BOTTOM;\n    }\n    if (isWebview && isIos) {\n      return SAFE_AREA_INSET_BOTTOM + BASE_INSET_BOTTOM;\n    }\n    return `calc(env(safe-area-inset-bottom) + ${BASE_INSET_BOTTOM}px)`;\n  };\n  return /* @__PURE__ */ jsxs(\"div\", { style: {\n    ...styles.container,\n    width: style == null ? void 0 : style.width\n    // NOTE: 반응형으로 다른 높이를 적용하기 위해 height는 코드에서 관리한다\n  }, children: [\n    /* @__PURE__ */ jsx(\"div\", { className: `${COMPONENT_NAME}-container`, children: bigBanner }),\n    isTabBarVisible ? /* @__PURE__ */ jsx(TabBarV2, { ...tabBar, items, useSmallTypography: true }) : null,\n    /* @__PURE__ */ jsx(\"div\", { className: `${COMPONENT_NAME}-container`, children: mainContent }),\n    /* @__PURE__ */ jsx(\"div\", { className: `${COMPONENT_NAME}-container`, id: tabBar.sideContentTabItem.sectionId, children: bottomContent ?? sideContent }),\n    /* @__PURE__ */ jsx(motion.div, { style: {\n      ...styles.buttonContainer,\n      bottom: getBottom()\n    }, initial: {\n      opacity: 0\n    }, animate: {\n      opacity: isButtonVisible ? 1 : 0,\n      pointerEvents: isButtonVisible ? void 0 : \"none\"\n    }, children: /* @__PURE__ */ jsx(ShareButton, { style: {\n      alignSelf: \"flex-end\"\n    } }) })\n  ] });\n}, css);\naddPropertyControls(ResponsiveSplitViewV3, {\n  bigBanner: {\n    title: \"빅배너\",\n    type: ControlType.ComponentInstance\n  },\n  mainContent: {\n    title: \"메인 콘텐츠\",\n    type: ControlType.ComponentInstance\n  },\n  sideContent: {\n    title: \"사이드 콘텐츠\",\n    type: ControlType.ComponentInstance\n  },\n  bottomContent: {\n    title: \"바텀 콘텐츠\",\n    description: \"모바일 분기점 최하단에 배치될 콘텐츠를 연결합니다.\\n연결하지 않을 경우 기본 값으로 사이드 콘텐츠가 전달됩니다.\",\n    type: ControlType.ComponentInstance\n  },\n  buttonVisibilityThresholdVh: {\n    title: \"공유하기 버튼 등장 시점\",\n    type: ControlType.Number,\n    displayStepper: true,\n    defaultValue: 100,\n    unit: \"vh\"\n  },\n  isTabBarVisible: {\n    title: \"탭바 유무\",\n    type: ControlType.Boolean,\n    defaultValue: true\n  },\n  tabBar: {\n    hidden: ({\n      isTabBarVisible\n    }) => isTabBarVisible === false,\n    title: \"탭바\",\n    type: ControlType.Object,\n    controls: {\n      theme: {\n        type: ControlType.Enum,\n        title: \"테마\",\n        options: [\"default\", \"negative\"],\n        optionTitles: [\"기본\", \"반전\"],\n        defaultValue: \"default\",\n        displaySegmentedControl: true\n      },\n      fadeInOut: {\n        type: ControlType.Boolean,\n        title: \"페이드\",\n        description: \"활성화 시 탭바가 상단에 붙은 상태로 스크롤되면 배경색의 투명도가 서서히 증감합니다.\",\n        defaultValue: false\n      },\n      sideContentTabItem: {\n        title: \"사이드 콘텐츠 탭\",\n        type: ControlType.Object,\n        controls: {\n          label: {\n            title: \"탭 이름\",\n            type: ControlType.String,\n            defaultValue: \"사이드 콘텐츠\"\n          },\n          sectionId: {\n            title: \"스크롤 섹션 ID\",\n            type: ControlType.String,\n            defaultValue: \"side-content\"\n          }\n        }\n      },\n      items: {\n        title: \"탭\",\n        type: ControlType.Array,\n        control: {\n          type: ControlType.Object,\n          controls: {\n            label: {\n              title: \"탭 이름\",\n              type: ControlType.String,\n              defaultValue: \"탭\"\n            },\n            sectionId: {\n              title: \"스크롤 섹션 ID\",\n              type: ControlType.String\n            }\n          }\n        },\n        defaultValue: [{\n          label: \"Chapter 1\",\n          sectionId: \"chapter1\"\n        }, {\n          label: \"Chapter 2\",\n          sectionId: \"chapter2\"\n        }, {\n          label: \"Chapter 3\",\n          sectionId: \"chapter3\"\n        }]\n      },\n      padding: {\n        type: ControlType.FusedNumber,\n        title: \"Padding\",\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      toggleMaxWidth: {\n        type: ControlType.Boolean,\n        title: \"MaxWidth\",\n        enabledTitle: \"SET\",\n        disabledTitle: \"UNSET\",\n        defaultValue: false\n      },\n      maxWidth: {\n        hidden: ({\n          toggleMaxWidth\n        }) => toggleMaxWidth === false,\n        type: ControlType.Number,\n        defaultValue: 1114,\n        min: 50,\n        unit: \"px\",\n        step: 1,\n        displayStepper: true\n      }\n    }\n  }\n});\nexport {\n  ResponsiveSplitViewV3\n};\n","import{ResponsiveSplitViewV3}from\"https://asset.29cm.co.kr/contents/framer/components/systems/ResponsiveSplitViewV3/ResponsiveSplitViewV3.js\";ResponsiveSplitViewV3.displayName=\"ResponsiveSplitViewV3\";export default ResponsiveSplitViewV3;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ResponsiveSplitViewV3\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ResponsiveSplitViewV3.map","const FORM_NAME = \"comment\";\nconst COMMENT_GUIDE = {\n  ROWS: 8,\n  COLS: 90,\n  MAX_LENGTH: 5e3\n};\nconst PLACE_HOLDER = {\n  NEED_LOGIN: \"로그인 후 글을 남기실 수 있어요.\",\n  UPCOMMING_EVENT: \"아직 응모기간이 시작되지 않았어요.\",\n  CLOSED_EVENT: \"응모기간이 마감되었어요.\"\n};\nconst BUTTON_TEXT = {\n  SUBMIT: \"등록\",\n  SUBMIT_IN_PROGRESS: \"등록중...\"\n};\nconst DIALOG_CONTENT = {\n  NEED_LOGIN: \"로그인 후, 댓글 작성이 가능해요.\",\n  DIALOG_CONTENT_EMPTY_INPUT: \"댓글을 입력해 주세요\",\n  DIALOG_CONTENT_UPCOMMING_EVENT: \"아직 응모기간이 시작되지 않았어요.\",\n  DIALOG_CONTENT_CLOSED_EVENT: \"응모기간이 마감되었어요.\",\n  DIALOG_CONTENT_SUCCESS: \"댓글이 등록되었어요.\",\n  DIALOG_CONTENT_FAIL: \"댓글이 등록되지 않았어요. 다시 시도해주세요.\"\n};\nexport {\n  BUTTON_TEXT,\n  COMMENT_GUIDE,\n  DIALOG_CONTENT,\n  FORM_NAME,\n  PLACE_HOLDER\n};\n","import React__default from \"react\";\nvar isCheckBoxInput = (element) => element.type === \"checkbox\";\nvar isDateObject = (value) => value instanceof Date;\nvar isNullOrUndefined = (value) => value == null;\nconst isObjectType = (value) => typeof value === \"object\";\nvar isObject = (value) => !isNullOrUndefined(value) && !Array.isArray(value) && isObjectType(value) && !isDateObject(value);\nvar getEventValue = (event) => isObject(event) && event.target ? isCheckBoxInput(event.target) ? event.target.checked : event.target.value : event;\nvar getNodeParentName = (name) => name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\nvar isNameInFieldArray = (names, name) => names.has(getNodeParentName(name));\nvar isPlainObject = (tempObject) => {\n  const prototypeCopy = tempObject.constructor && tempObject.constructor.prototype;\n  return isObject(prototypeCopy) && prototypeCopy.hasOwnProperty(\"isPrototypeOf\");\n};\nvar isWeb = typeof window !== \"undefined\" && typeof window.HTMLElement !== \"undefined\" && typeof document !== \"undefined\";\nfunction cloneObject(data) {\n  let copy;\n  const isArray = Array.isArray(data);\n  if (data instanceof Date) {\n    copy = new Date(data);\n  } else if (data instanceof Set) {\n    copy = new Set(data);\n  } else if (!(isWeb && (data instanceof Blob || data instanceof FileList)) && (isArray || isObject(data))) {\n    copy = isArray ? [] : {};\n    if (!isArray && !isPlainObject(data)) {\n      copy = data;\n    } else {\n      for (const key in data) {\n        if (data.hasOwnProperty(key)) {\n          copy[key] = cloneObject(data[key]);\n        }\n      }\n    }\n  } else {\n    return data;\n  }\n  return copy;\n}\nvar compact = (value) => Array.isArray(value) ? value.filter(Boolean) : [];\nvar isUndefined = (val) => val === void 0;\nvar get = (object, path, defaultValue) => {\n  if (!path || !isObject(object)) {\n    return defaultValue;\n  }\n  const result = compact(path.split(/[,[\\].]+?/)).reduce((result2, key) => isNullOrUndefined(result2) ? result2 : result2[key], object);\n  return isUndefined(result) || result === object ? isUndefined(object[path]) ? defaultValue : object[path] : result;\n};\nvar isBoolean = (value) => typeof value === \"boolean\";\nconst EVENTS = {\n  BLUR: \"blur\",\n  FOCUS_OUT: \"focusout\",\n  CHANGE: \"change\"\n};\nconst VALIDATION_MODE = {\n  onBlur: \"onBlur\",\n  onChange: \"onChange\",\n  onSubmit: \"onSubmit\",\n  onTouched: \"onTouched\",\n  all: \"all\"\n};\nconst INPUT_VALIDATION_RULES = {\n  max: \"max\",\n  min: \"min\",\n  maxLength: \"maxLength\",\n  minLength: \"minLength\",\n  pattern: \"pattern\",\n  required: \"required\",\n  validate: \"validate\"\n};\nconst HookFormContext = React__default.createContext(null);\nconst useFormContext = () => React__default.useContext(HookFormContext);\nvar getProxyFormState = (formState, control, localProxyFormState, isRoot = true) => {\n  const result = {\n    defaultValues: control._defaultValues\n  };\n  for (const key in formState) {\n    Object.defineProperty(result, key, {\n      get: () => {\n        const _key = key;\n        if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\n          control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n        }\n        localProxyFormState && (localProxyFormState[_key] = true);\n        return formState[_key];\n      }\n    });\n  }\n  return result;\n};\nvar isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;\nvar shouldRenderFormState = (formStateData, _proxyFormState, updateFormState, isRoot) => {\n  updateFormState(formStateData);\n  const { name, ...formState } = formStateData;\n  return isEmptyObject(formState) || Object.keys(formState).length >= Object.keys(_proxyFormState).length || Object.keys(formState).find((key) => _proxyFormState[key] === (!isRoot || VALIDATION_MODE.all));\n};\nvar convertToArrayPayload = (value) => Array.isArray(value) ? value : [value];\nvar shouldSubscribeByName = (name, signalName, exact) => !name || !signalName || name === signalName || convertToArrayPayload(name).some((currentName) => currentName && (exact ? currentName === signalName : currentName.startsWith(signalName) || signalName.startsWith(currentName)));\nfunction useSubscribe(props) {\n  const _props = React__default.useRef(props);\n  _props.current = props;\n  React__default.useEffect(() => {\n    const subscription = !props.disabled && _props.current.subject && _props.current.subject.subscribe({\n      next: _props.current.next\n    });\n    return () => {\n      subscription && subscription.unsubscribe();\n    };\n  }, [props.disabled]);\n}\nvar isString = (value) => typeof value === \"string\";\nvar generateWatchOutput = (names, _names, formValues, isGlobal, defaultValue) => {\n  if (isString(names)) {\n    isGlobal && _names.watch.add(names);\n    return get(formValues, names, defaultValue);\n  }\n  if (Array.isArray(names)) {\n    return names.map((fieldName) => (isGlobal && _names.watch.add(fieldName), get(formValues, fieldName)));\n  }\n  isGlobal && (_names.watchAll = true);\n  return formValues;\n};\nfunction useWatch(props) {\n  const methods = useFormContext();\n  const { control = methods.control, name, defaultValue, disabled, exact } = props || {};\n  const _name = React__default.useRef(name);\n  _name.current = name;\n  useSubscribe({\n    disabled,\n    subject: control._subjects.values,\n    next: (formState) => {\n      if (shouldSubscribeByName(_name.current, formState.name, exact)) {\n        updateValue(cloneObject(generateWatchOutput(_name.current, control._names, formState.values || control._formValues, false, defaultValue)));\n      }\n    }\n  });\n  const [value, updateValue] = React__default.useState(control._getWatch(name, defaultValue));\n  React__default.useEffect(() => control._removeUnmounted());\n  return value;\n}\nvar isKey = (value) => /^\\w*$/.test(value);\nvar stringToPath = (input) => compact(input.replace(/[\"|']|\\]/g, \"\").split(/\\.|\\[/));\nvar set = (object, path, value) => {\n  let index = -1;\n  const tempPath = isKey(path) ? [path] : stringToPath(path);\n  const length = tempPath.length;\n  const lastIndex = length - 1;\n  while (++index < length) {\n    const key = tempPath[index];\n    let newValue = value;\n    if (index !== lastIndex) {\n      const objValue = object[key];\n      newValue = isObject(objValue) || Array.isArray(objValue) ? objValue : !isNaN(+tempPath[index + 1]) ? [] : {};\n    }\n    object[key] = newValue;\n    object = object[key];\n  }\n  return object;\n};\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria ? {\n  ...errors[name],\n  types: {\n    ...errors[name] && errors[name].types ? errors[name].types : {},\n    [type]: message || true\n  }\n} : {};\nvar getValidationModes = (mode) => ({\n  isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n  isOnBlur: mode === VALIDATION_MODE.onBlur,\n  isOnChange: mode === VALIDATION_MODE.onChange,\n  isOnAll: mode === VALIDATION_MODE.all,\n  isOnTouch: mode === VALIDATION_MODE.onTouched\n});\nvar isWatched = (name, _names, isBlurEvent) => !isBlurEvent && (_names.watchAll || _names.watch.has(name) || [..._names.watch].some((watchName) => name.startsWith(watchName) && /^\\.\\w+/.test(name.slice(watchName.length))));\nconst iterateFieldsByAction = (fields, action, fieldsNames, abortEarly) => {\n  for (const key of fieldsNames || Object.keys(fields)) {\n    const field = get(fields, key);\n    if (field) {\n      const { _f, ...currentField } = field;\n      if (_f) {\n        if (_f.refs && _f.refs[0] && action(_f.refs[0], key) && !abortEarly) {\n          break;\n        } else if (_f.ref && action(_f.ref, _f.name) && !abortEarly) {\n          break;\n        } else {\n          iterateFieldsByAction(currentField, action);\n        }\n      } else if (isObject(currentField)) {\n        iterateFieldsByAction(currentField, action);\n      }\n    }\n  }\n};\nvar updateFieldArrayRootError = (errors, error, name) => {\n  const fieldArrayErrors = compact(get(errors, name));\n  set(fieldArrayErrors, \"root\", error[name]);\n  set(errors, name, fieldArrayErrors);\n  return errors;\n};\nvar isFileInput = (element) => element.type === \"file\";\nvar isFunction = (value) => typeof value === \"function\";\nvar isHTMLElement = (value) => {\n  if (!isWeb) {\n    return false;\n  }\n  const owner = value ? value.ownerDocument : 0;\n  return value instanceof (owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement);\n};\nvar isMessage = (value) => isString(value);\nvar isRadioInput = (element) => element.type === \"radio\";\nvar isRegex = (value) => value instanceof RegExp;\nconst defaultResult = {\n  value: false,\n  isValid: false\n};\nconst validResult = { value: true, isValid: true };\nvar getCheckboxValue = (options) => {\n  if (Array.isArray(options)) {\n    if (options.length > 1) {\n      const values = options.filter((option) => option && option.checked && !option.disabled).map((option) => option.value);\n      return { value: values, isValid: !!values.length };\n    }\n    return options[0].checked && !options[0].disabled ? (\n      // @ts-expect-error expected to work in the browser\n      options[0].attributes && !isUndefined(options[0].attributes.value) ? isUndefined(options[0].value) || options[0].value === \"\" ? validResult : { value: options[0].value, isValid: true } : validResult\n    ) : defaultResult;\n  }\n  return defaultResult;\n};\nconst defaultReturn = {\n  isValid: false,\n  value: null\n};\nvar getRadioValue = (options) => Array.isArray(options) ? options.reduce((previous, option) => option && option.checked && !option.disabled ? {\n  isValid: true,\n  value: option.value\n} : previous, defaultReturn) : defaultReturn;\nfunction getValidateError(result, ref, type = \"validate\") {\n  if (isMessage(result) || Array.isArray(result) && result.every(isMessage) || isBoolean(result) && !result) {\n    return {\n      type,\n      message: isMessage(result) ? result : \"\",\n      ref\n    };\n  }\n}\nvar getValueAndMessage = (validationData) => isObject(validationData) && !isRegex(validationData) ? validationData : {\n  value: validationData,\n  message: \"\"\n};\nvar validateField = async (field, formValues, validateAllFieldCriteria, shouldUseNativeValidation, isFieldArray) => {\n  const { ref, refs, required, maxLength, minLength, min, max, pattern, validate, name, valueAsNumber, mount, disabled } = field._f;\n  const inputValue = get(formValues, name);\n  if (!mount || disabled) {\n    return {};\n  }\n  const inputRef = refs ? refs[0] : ref;\n  const setCustomValidity = (message) => {\n    if (shouldUseNativeValidation && inputRef.reportValidity) {\n      inputRef.setCustomValidity(isBoolean(message) ? \"\" : message || \"\");\n      inputRef.reportValidity();\n    }\n  };\n  const error = {};\n  const isRadio = isRadioInput(ref);\n  const isCheckBox = isCheckBoxInput(ref);\n  const isRadioOrCheckbox2 = isRadio || isCheckBox;\n  const isEmpty = (valueAsNumber || isFileInput(ref)) && isUndefined(ref.value) && isUndefined(inputValue) || isHTMLElement(ref) && ref.value === \"\" || inputValue === \"\" || Array.isArray(inputValue) && !inputValue.length;\n  const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\n  const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\n    const message = exceedMax ? maxLengthMessage : minLengthMessage;\n    error[name] = {\n      type: exceedMax ? maxType : minType,\n      message,\n      ref,\n      ...appendErrorsCurry(exceedMax ? maxType : minType, message)\n    };\n  };\n  if (isFieldArray ? !Array.isArray(inputValue) || !inputValue.length : required && (!isRadioOrCheckbox2 && (isEmpty || isNullOrUndefined(inputValue)) || isBoolean(inputValue) && !inputValue || isCheckBox && !getCheckboxValue(refs).isValid || isRadio && !getRadioValue(refs).isValid)) {\n    const { value, message } = isMessage(required) ? { value: !!required, message: required } : getValueAndMessage(required);\n    if (value) {\n      error[name] = {\n        type: INPUT_VALIDATION_RULES.required,\n        message,\n        ref: inputRef,\n        ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message)\n      };\n      if (!validateAllFieldCriteria) {\n        setCustomValidity(message);\n        return error;\n      }\n    }\n  }\n  if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\n    let exceedMax;\n    let exceedMin;\n    const maxOutput = getValueAndMessage(max);\n    const minOutput = getValueAndMessage(min);\n    if (!isNullOrUndefined(inputValue) && !isNaN(inputValue)) {\n      const valueNumber = ref.valueAsNumber || (inputValue ? +inputValue : inputValue);\n      if (!isNullOrUndefined(maxOutput.value)) {\n        exceedMax = valueNumber > maxOutput.value;\n      }\n      if (!isNullOrUndefined(minOutput.value)) {\n        exceedMin = valueNumber < minOutput.value;\n      }\n    } else {\n      const valueDate = ref.valueAsDate || new Date(inputValue);\n      const convertTimeToDate = (time) => /* @__PURE__ */ new Date((/* @__PURE__ */ new Date()).toDateString() + \" \" + time);\n      const isTime = ref.type == \"time\";\n      const isWeek = ref.type == \"week\";\n      if (isString(maxOutput.value) && inputValue) {\n        exceedMax = isTime ? convertTimeToDate(inputValue) > convertTimeToDate(maxOutput.value) : isWeek ? inputValue > maxOutput.value : valueDate > new Date(maxOutput.value);\n      }\n      if (isString(minOutput.value) && inputValue) {\n        exceedMin = isTime ? convertTimeToDate(inputValue) < convertTimeToDate(minOutput.value) : isWeek ? inputValue < minOutput.value : valueDate < new Date(minOutput.value);\n      }\n    }\n    if (exceedMax || exceedMin) {\n      getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\n      if (!validateAllFieldCriteria) {\n        setCustomValidity(error[name].message);\n        return error;\n      }\n    }\n  }\n  if ((maxLength || minLength) && !isEmpty && (isString(inputValue) || isFieldArray && Array.isArray(inputValue))) {\n    const maxLengthOutput = getValueAndMessage(maxLength);\n    const minLengthOutput = getValueAndMessage(minLength);\n    const exceedMax = !isNullOrUndefined(maxLengthOutput.value) && inputValue.length > +maxLengthOutput.value;\n    const exceedMin = !isNullOrUndefined(minLengthOutput.value) && inputValue.length < +minLengthOutput.value;\n    if (exceedMax || exceedMin) {\n      getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\n      if (!validateAllFieldCriteria) {\n        setCustomValidity(error[name].message);\n        return error;\n      }\n    }\n  }\n  if (pattern && !isEmpty && isString(inputValue)) {\n    const { value: patternValue, message } = getValueAndMessage(pattern);\n    if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n      error[name] = {\n        type: INPUT_VALIDATION_RULES.pattern,\n        message,\n        ref,\n        ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message)\n      };\n      if (!validateAllFieldCriteria) {\n        setCustomValidity(message);\n        return error;\n      }\n    }\n  }\n  if (validate) {\n    if (isFunction(validate)) {\n      const result = await validate(inputValue, formValues);\n      const validateError = getValidateError(result, inputRef);\n      if (validateError) {\n        error[name] = {\n          ...validateError,\n          ...appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message)\n        };\n        if (!validateAllFieldCriteria) {\n          setCustomValidity(validateError.message);\n          return error;\n        }\n      }\n    } else if (isObject(validate)) {\n      let validationResult = {};\n      for (const key in validate) {\n        if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n          break;\n        }\n        const validateError = getValidateError(await validate[key](inputValue, formValues), inputRef, key);\n        if (validateError) {\n          validationResult = {\n            ...validateError,\n            ...appendErrorsCurry(key, validateError.message)\n          };\n          setCustomValidity(validateError.message);\n          if (validateAllFieldCriteria) {\n            error[name] = validationResult;\n          }\n        }\n      }\n      if (!isEmptyObject(validationResult)) {\n        error[name] = {\n          ref: inputRef,\n          ...validationResult\n        };\n        if (!validateAllFieldCriteria) {\n          return error;\n        }\n      }\n    }\n  }\n  setCustomValidity(true);\n  return error;\n};\nfunction baseGet(object, updatePath) {\n  const length = updatePath.slice(0, -1).length;\n  let index = 0;\n  while (index < length) {\n    object = isUndefined(object) ? index++ : object[updatePath[index++]];\n  }\n  return object;\n}\nfunction isEmptyArray(obj) {\n  for (const key in obj) {\n    if (obj.hasOwnProperty(key) && !isUndefined(obj[key])) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction unset(object, path) {\n  const paths = Array.isArray(path) ? path : isKey(path) ? [path] : stringToPath(path);\n  const childObject = paths.length === 1 ? object : baseGet(object, paths);\n  const index = paths.length - 1;\n  const key = paths[index];\n  if (childObject) {\n    delete childObject[key];\n  }\n  if (index !== 0 && (isObject(childObject) && isEmptyObject(childObject) || Array.isArray(childObject) && isEmptyArray(childObject))) {\n    unset(object, paths.slice(0, -1));\n  }\n  return object;\n}\nvar createSubject = () => {\n  let _observers = [];\n  const next = (value) => {\n    for (const observer of _observers) {\n      observer.next && observer.next(value);\n    }\n  };\n  const subscribe = (observer) => {\n    _observers.push(observer);\n    return {\n      unsubscribe: () => {\n        _observers = _observers.filter((o) => o !== observer);\n      }\n    };\n  };\n  const unsubscribe = () => {\n    _observers = [];\n  };\n  return {\n    get observers() {\n      return _observers;\n    },\n    next,\n    subscribe,\n    unsubscribe\n  };\n};\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\nfunction deepEqual(object1, object2) {\n  if (isPrimitive(object1) || isPrimitive(object2)) {\n    return object1 === object2;\n  }\n  if (isDateObject(object1) && isDateObject(object2)) {\n    return object1.getTime() === object2.getTime();\n  }\n  const keys1 = Object.keys(object1);\n  const keys2 = Object.keys(object2);\n  if (keys1.length !== keys2.length) {\n    return false;\n  }\n  for (const key of keys1) {\n    const val1 = object1[key];\n    if (!keys2.includes(key)) {\n      return false;\n    }\n    if (key !== \"ref\") {\n      const val2 = object2[key];\n      if (isDateObject(val1) && isDateObject(val2) || isObject(val1) && isObject(val2) || Array.isArray(val1) && Array.isArray(val2) ? !deepEqual(val1, val2) : val1 !== val2) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\nvar isMultipleSelect = (element) => element.type === `select-multiple`;\nvar isRadioOrCheckbox = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\nvar live = (ref) => isHTMLElement(ref) && ref.isConnected;\nvar objectHasFunction = (data) => {\n  for (const key in data) {\n    if (isFunction(data[key])) {\n      return true;\n    }\n  }\n  return false;\n};\nfunction markFieldsDirty(data, fields = {}) {\n  const isParentNodeArray = Array.isArray(data);\n  if (isObject(data) || isParentNodeArray) {\n    for (const key in data) {\n      if (Array.isArray(data[key]) || isObject(data[key]) && !objectHasFunction(data[key])) {\n        fields[key] = Array.isArray(data[key]) ? [] : {};\n        markFieldsDirty(data[key], fields[key]);\n      } else if (!isNullOrUndefined(data[key])) {\n        fields[key] = true;\n      }\n    }\n  }\n  return fields;\n}\nfunction getDirtyFieldsFromDefaultValues(data, formValues, dirtyFieldsFromValues) {\n  const isParentNodeArray = Array.isArray(data);\n  if (isObject(data) || isParentNodeArray) {\n    for (const key in data) {\n      if (Array.isArray(data[key]) || isObject(data[key]) && !objectHasFunction(data[key])) {\n        if (isUndefined(formValues) || isPrimitive(dirtyFieldsFromValues[key])) {\n          dirtyFieldsFromValues[key] = Array.isArray(data[key]) ? markFieldsDirty(data[key], []) : { ...markFieldsDirty(data[key]) };\n        } else {\n          getDirtyFieldsFromDefaultValues(data[key], isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key]);\n        }\n      } else {\n        dirtyFieldsFromValues[key] = !deepEqual(data[key], formValues[key]);\n      }\n    }\n  }\n  return dirtyFieldsFromValues;\n}\nvar getDirtyFields = (defaultValues, formValues) => getDirtyFieldsFromDefaultValues(defaultValues, formValues, markFieldsDirty(formValues));\nvar getFieldValueAs = (value, { valueAsNumber, valueAsDate, setValueAs }) => isUndefined(value) ? value : valueAsNumber ? value === \"\" ? NaN : value ? +value : value : valueAsDate && isString(value) ? new Date(value) : setValueAs ? setValueAs(value) : value;\nfunction getFieldValue(_f) {\n  const ref = _f.ref;\n  if (_f.refs ? _f.refs.every((ref2) => ref2.disabled) : ref.disabled) {\n    return;\n  }\n  if (isFileInput(ref)) {\n    return ref.files;\n  }\n  if (isRadioInput(ref)) {\n    return getRadioValue(_f.refs).value;\n  }\n  if (isMultipleSelect(ref)) {\n    return [...ref.selectedOptions].map(({ value }) => value);\n  }\n  if (isCheckBoxInput(ref)) {\n    return getCheckboxValue(_f.refs).value;\n  }\n  return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\n}\nvar getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {\n  const fields = {};\n  for (const name of fieldsNames) {\n    const field = get(_fields, name);\n    field && set(fields, name, field._f);\n  }\n  return {\n    criteriaMode,\n    names: [...fieldsNames],\n    fields,\n    shouldUseNativeValidation\n  };\n};\nvar getRuleValue = (rule) => isUndefined(rule) ? rule : isRegex(rule) ? rule.source : isObject(rule) ? isRegex(rule.value) ? rule.value.source : rule.value : rule;\nvar hasValidation = (options) => options.mount && (options.required || options.min || options.max || options.maxLength || options.minLength || options.pattern || options.validate);\nfunction schemaErrorLookup(errors, _fields, name) {\n  const error = get(errors, name);\n  if (error || isKey(name)) {\n    return {\n      error,\n      name\n    };\n  }\n  const names = name.split(\".\");\n  while (names.length) {\n    const fieldName = names.join(\".\");\n    const field = get(_fields, fieldName);\n    const foundError = get(errors, fieldName);\n    if (field && !Array.isArray(field) && name !== fieldName) {\n      return { name };\n    }\n    if (foundError && foundError.type) {\n      return {\n        name: fieldName,\n        error: foundError\n      };\n    }\n    names.pop();\n  }\n  return {\n    name\n  };\n}\nvar skipValidation = (isBlurEvent, isTouched, isSubmitted, reValidateMode, mode) => {\n  if (mode.isOnAll) {\n    return false;\n  } else if (!isSubmitted && mode.isOnTouch) {\n    return !(isTouched || isBlurEvent);\n  } else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n    return !isBlurEvent;\n  } else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n    return isBlurEvent;\n  }\n  return true;\n};\nvar unsetEmptyArray = (ref, name) => !compact(get(ref, name)).length && unset(ref, name);\nconst defaultOptions = {\n  mode: VALIDATION_MODE.onSubmit,\n  reValidateMode: VALIDATION_MODE.onChange,\n  shouldFocusError: true\n};\nfunction createFormControl(props = {}, flushRootRender) {\n  let _options = {\n    ...defaultOptions,\n    ...props\n  };\n  let _formState = {\n    submitCount: 0,\n    isDirty: false,\n    isLoading: isFunction(_options.defaultValues),\n    isValidating: false,\n    isSubmitted: false,\n    isSubmitting: false,\n    isSubmitSuccessful: false,\n    isValid: false,\n    touchedFields: {},\n    dirtyFields: {},\n    errors: _options.errors || {},\n    disabled: _options.disabled || false\n  };\n  let _fields = {};\n  let _defaultValues = isObject(_options.values) || isObject(_options.defaultValues) ? cloneObject(_options.values || _options.defaultValues) || {} : {};\n  let _formValues = _options.shouldUnregister ? {} : cloneObject(_defaultValues);\n  let _state = {\n    action: false,\n    mount: false,\n    watch: false\n  };\n  let _names = {\n    mount: /* @__PURE__ */ new Set(),\n    unMount: /* @__PURE__ */ new Set(),\n    array: /* @__PURE__ */ new Set(),\n    watch: /* @__PURE__ */ new Set()\n  };\n  let delayErrorCallback;\n  let timer = 0;\n  const _proxyFormState = {\n    isDirty: false,\n    dirtyFields: false,\n    touchedFields: false,\n    isValidating: false,\n    isValid: false,\n    errors: false\n  };\n  const _subjects = {\n    values: createSubject(),\n    array: createSubject(),\n    state: createSubject()\n  };\n  const validationModeBeforeSubmit = getValidationModes(_options.mode);\n  const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n  const shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;\n  const debounce = (callback) => (wait) => {\n    clearTimeout(timer);\n    timer = setTimeout(callback, wait);\n  };\n  const _updateValid = async (shouldUpdateValid) => {\n    if (_proxyFormState.isValid || shouldUpdateValid) {\n      const isValid = _options.resolver ? isEmptyObject((await _executeSchema()).errors) : await executeBuiltInValidation(_fields, true);\n      if (isValid !== _formState.isValid) {\n        _subjects.state.next({\n          isValid\n        });\n      }\n    }\n  };\n  const _updateIsValidating = (value) => _proxyFormState.isValidating && _subjects.state.next({\n    isValidating: value\n  });\n  const _updateFieldArray = (name, values = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndState = true) => {\n    if (args && method) {\n      _state.action = true;\n      if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\n        const fieldValues = method(get(_fields, name), args.argA, args.argB);\n        shouldSetValues && set(_fields, name, fieldValues);\n      }\n      if (shouldUpdateFieldsAndState && Array.isArray(get(_formState.errors, name))) {\n        const errors = method(get(_formState.errors, name), args.argA, args.argB);\n        shouldSetValues && set(_formState.errors, name, errors);\n        unsetEmptyArray(_formState.errors, name);\n      }\n      if (_proxyFormState.touchedFields && shouldUpdateFieldsAndState && Array.isArray(get(_formState.touchedFields, name))) {\n        const touchedFields = method(get(_formState.touchedFields, name), args.argA, args.argB);\n        shouldSetValues && set(_formState.touchedFields, name, touchedFields);\n      }\n      if (_proxyFormState.dirtyFields) {\n        _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n      }\n      _subjects.state.next({\n        name,\n        isDirty: _getDirty(name, values),\n        dirtyFields: _formState.dirtyFields,\n        errors: _formState.errors,\n        isValid: _formState.isValid\n      });\n    } else {\n      set(_formValues, name, values);\n    }\n  };\n  const updateErrors = (name, error) => {\n    set(_formState.errors, name, error);\n    _subjects.state.next({\n      errors: _formState.errors\n    });\n  };\n  const _setErrors = (errors) => {\n    _formState.errors = errors;\n    _subjects.state.next({\n      errors: _formState.errors,\n      isValid: false\n    });\n  };\n  const updateValidAndValue = (name, shouldSkipSetValueAs, value, ref) => {\n    const field = get(_fields, name);\n    if (field) {\n      const defaultValue = get(_formValues, name, isUndefined(value) ? get(_defaultValues, name) : value);\n      isUndefined(defaultValue) || ref && ref.defaultChecked || shouldSkipSetValueAs ? set(_formValues, name, shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f)) : setFieldValue(name, defaultValue);\n      _state.mount && _updateValid();\n    }\n  };\n  const updateTouchAndDirty = (name, fieldValue, isBlurEvent, shouldDirty, shouldRender) => {\n    let shouldUpdateField = false;\n    let isPreviousDirty = false;\n    const output = {\n      name\n    };\n    const disabledField = !!(get(_fields, name) && get(_fields, name)._f.disabled);\n    if (!isBlurEvent || shouldDirty) {\n      if (_proxyFormState.isDirty) {\n        isPreviousDirty = _formState.isDirty;\n        _formState.isDirty = output.isDirty = _getDirty();\n        shouldUpdateField = isPreviousDirty !== output.isDirty;\n      }\n      const isCurrentFieldPristine = disabledField || deepEqual(get(_defaultValues, name), fieldValue);\n      isPreviousDirty = !!(!disabledField && get(_formState.dirtyFields, name));\n      isCurrentFieldPristine || disabledField ? unset(_formState.dirtyFields, name) : set(_formState.dirtyFields, name, true);\n      output.dirtyFields = _formState.dirtyFields;\n      shouldUpdateField = shouldUpdateField || _proxyFormState.dirtyFields && isPreviousDirty !== !isCurrentFieldPristine;\n    }\n    if (isBlurEvent) {\n      const isPreviousFieldTouched = get(_formState.touchedFields, name);\n      if (!isPreviousFieldTouched) {\n        set(_formState.touchedFields, name, isBlurEvent);\n        output.touchedFields = _formState.touchedFields;\n        shouldUpdateField = shouldUpdateField || _proxyFormState.touchedFields && isPreviousFieldTouched !== isBlurEvent;\n      }\n    }\n    shouldUpdateField && shouldRender && _subjects.state.next(output);\n    return shouldUpdateField ? output : {};\n  };\n  const shouldRenderByError = (name, isValid, error, fieldState) => {\n    const previousFieldError = get(_formState.errors, name);\n    const shouldUpdateValid = _proxyFormState.isValid && isBoolean(isValid) && _formState.isValid !== isValid;\n    if (props.delayError && error) {\n      delayErrorCallback = debounce(() => updateErrors(name, error));\n      delayErrorCallback(props.delayError);\n    } else {\n      clearTimeout(timer);\n      delayErrorCallback = null;\n      error ? set(_formState.errors, name, error) : unset(_formState.errors, name);\n    }\n    if ((error ? !deepEqual(previousFieldError, error) : previousFieldError) || !isEmptyObject(fieldState) || shouldUpdateValid) {\n      const updatedFormState = {\n        ...fieldState,\n        ...shouldUpdateValid && isBoolean(isValid) ? { isValid } : {},\n        errors: _formState.errors,\n        name\n      };\n      _formState = {\n        ..._formState,\n        ...updatedFormState\n      };\n      _subjects.state.next(updatedFormState);\n    }\n    _updateIsValidating(false);\n  };\n  const _executeSchema = async (name) => _options.resolver(_formValues, _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation));\n  const executeSchemaAndUpdateState = async (names) => {\n    const { errors } = await _executeSchema(names);\n    if (names) {\n      for (const name of names) {\n        const error = get(errors, name);\n        error ? set(_formState.errors, name, error) : unset(_formState.errors, name);\n      }\n    } else {\n      _formState.errors = errors;\n    }\n    return errors;\n  };\n  const executeBuiltInValidation = async (fields, shouldOnlyCheckValid, context = {\n    valid: true\n  }) => {\n    for (const name in fields) {\n      const field = fields[name];\n      if (field) {\n        const { _f, ...fieldValue } = field;\n        if (_f) {\n          const isFieldArrayRoot = _names.array.has(_f.name);\n          const fieldError = await validateField(field, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation && !shouldOnlyCheckValid, isFieldArrayRoot);\n          if (fieldError[_f.name]) {\n            context.valid = false;\n            if (shouldOnlyCheckValid) {\n              break;\n            }\n          }\n          !shouldOnlyCheckValid && (get(fieldError, _f.name) ? isFieldArrayRoot ? updateFieldArrayRootError(_formState.errors, fieldError, _f.name) : set(_formState.errors, _f.name, fieldError[_f.name]) : unset(_formState.errors, _f.name));\n        }\n        fieldValue && await executeBuiltInValidation(fieldValue, shouldOnlyCheckValid, context);\n      }\n    }\n    return context.valid;\n  };\n  const _removeUnmounted = () => {\n    for (const name of _names.unMount) {\n      const field = get(_fields, name);\n      field && (field._f.refs ? field._f.refs.every((ref) => !live(ref)) : !live(field._f.ref)) && unregister(name);\n    }\n    _names.unMount = /* @__PURE__ */ new Set();\n  };\n  const _getDirty = (name, data) => (name && data && set(_formValues, name, data), !deepEqual(getValues(), _defaultValues));\n  const _getWatch = (names, defaultValue, isGlobal) => generateWatchOutput(names, _names, {\n    ..._state.mount ? _formValues : isUndefined(defaultValue) ? _defaultValues : isString(names) ? { [names]: defaultValue } : defaultValue\n  }, isGlobal, defaultValue);\n  const _getFieldArray = (name) => compact(get(_state.mount ? _formValues : _defaultValues, name, props.shouldUnregister ? get(_defaultValues, name, []) : []));\n  const setFieldValue = (name, value, options = {}) => {\n    const field = get(_fields, name);\n    let fieldValue = value;\n    if (field) {\n      const fieldReference = field._f;\n      if (fieldReference) {\n        !fieldReference.disabled && set(_formValues, name, getFieldValueAs(value, fieldReference));\n        fieldValue = isHTMLElement(fieldReference.ref) && isNullOrUndefined(value) ? \"\" : value;\n        if (isMultipleSelect(fieldReference.ref)) {\n          [...fieldReference.ref.options].forEach((optionRef) => optionRef.selected = fieldValue.includes(optionRef.value));\n        } else if (fieldReference.refs) {\n          if (isCheckBoxInput(fieldReference.ref)) {\n            fieldReference.refs.length > 1 ? fieldReference.refs.forEach((checkboxRef) => (!checkboxRef.defaultChecked || !checkboxRef.disabled) && (checkboxRef.checked = Array.isArray(fieldValue) ? !!fieldValue.find((data) => data === checkboxRef.value) : fieldValue === checkboxRef.value)) : fieldReference.refs[0] && (fieldReference.refs[0].checked = !!fieldValue);\n          } else {\n            fieldReference.refs.forEach((radioRef) => radioRef.checked = radioRef.value === fieldValue);\n          }\n        } else if (isFileInput(fieldReference.ref)) {\n          fieldReference.ref.value = \"\";\n        } else {\n          fieldReference.ref.value = fieldValue;\n          if (!fieldReference.ref.type) {\n            _subjects.values.next({\n              name,\n              values: { ..._formValues }\n            });\n          }\n        }\n      }\n    }\n    (options.shouldDirty || options.shouldTouch) && updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty, true);\n    options.shouldValidate && trigger(name);\n  };\n  const setValues = (name, value, options) => {\n    for (const fieldKey in value) {\n      const fieldValue = value[fieldKey];\n      const fieldName = `${name}.${fieldKey}`;\n      const field = get(_fields, fieldName);\n      (_names.array.has(name) || !isPrimitive(fieldValue) || field && !field._f) && !isDateObject(fieldValue) ? setValues(fieldName, fieldValue, options) : setFieldValue(fieldName, fieldValue, options);\n    }\n  };\n  const setValue = (name, value, options = {}) => {\n    const field = get(_fields, name);\n    const isFieldArray = _names.array.has(name);\n    const cloneValue = cloneObject(value);\n    set(_formValues, name, cloneValue);\n    if (isFieldArray) {\n      _subjects.array.next({\n        name,\n        values: { ..._formValues }\n      });\n      if ((_proxyFormState.isDirty || _proxyFormState.dirtyFields) && options.shouldDirty) {\n        _subjects.state.next({\n          name,\n          dirtyFields: getDirtyFields(_defaultValues, _formValues),\n          isDirty: _getDirty(name, cloneValue)\n        });\n      }\n    } else {\n      field && !field._f && !isNullOrUndefined(cloneValue) ? setValues(name, cloneValue, options) : setFieldValue(name, cloneValue, options);\n    }\n    isWatched(name, _names) && _subjects.state.next({ ..._formState });\n    _subjects.values.next({\n      name,\n      values: { ..._formValues }\n    });\n    !_state.mount && flushRootRender();\n  };\n  const onChange = async (event) => {\n    const target = event.target;\n    let name = target.name;\n    let isFieldValueUpdated = true;\n    const field = get(_fields, name);\n    const getCurrentFieldValue = () => target.type ? getFieldValue(field._f) : getEventValue(event);\n    const _updateIsFieldValueUpdated = (fieldValue) => {\n      isFieldValueUpdated = Number.isNaN(fieldValue) || fieldValue === get(_formValues, name, fieldValue);\n    };\n    if (field) {\n      let error;\n      let isValid;\n      const fieldValue = getCurrentFieldValue();\n      const isBlurEvent = event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n      const shouldSkipValidation = !hasValidation(field._f) && !_options.resolver && !get(_formState.errors, name) && !field._f.deps || skipValidation(isBlurEvent, get(_formState.touchedFields, name), _formState.isSubmitted, validationModeAfterSubmit, validationModeBeforeSubmit);\n      const watched = isWatched(name, _names, isBlurEvent);\n      set(_formValues, name, fieldValue);\n      if (isBlurEvent) {\n        field._f.onBlur && field._f.onBlur(event);\n        delayErrorCallback && delayErrorCallback(0);\n      } else if (field._f.onChange) {\n        field._f.onChange(event);\n      }\n      const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent, false);\n      const shouldRender = !isEmptyObject(fieldState) || watched;\n      !isBlurEvent && _subjects.values.next({\n        name,\n        type: event.type,\n        values: { ..._formValues }\n      });\n      if (shouldSkipValidation) {\n        _proxyFormState.isValid && _updateValid();\n        return shouldRender && _subjects.state.next({ name, ...watched ? {} : fieldState });\n      }\n      !isBlurEvent && watched && _subjects.state.next({ ..._formState });\n      _updateIsValidating(true);\n      if (_options.resolver) {\n        const { errors } = await _executeSchema([name]);\n        _updateIsFieldValueUpdated(fieldValue);\n        if (isFieldValueUpdated) {\n          const previousErrorLookupResult = schemaErrorLookup(_formState.errors, _fields, name);\n          const errorLookupResult = schemaErrorLookup(errors, _fields, previousErrorLookupResult.name || name);\n          error = errorLookupResult.error;\n          name = errorLookupResult.name;\n          isValid = isEmptyObject(errors);\n        }\n      } else {\n        error = (await validateField(field, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation))[name];\n        _updateIsFieldValueUpdated(fieldValue);\n        if (isFieldValueUpdated) {\n          if (error) {\n            isValid = false;\n          } else if (_proxyFormState.isValid) {\n            isValid = await executeBuiltInValidation(_fields, true);\n          }\n        }\n      }\n      if (isFieldValueUpdated) {\n        field._f.deps && trigger(field._f.deps);\n        shouldRenderByError(name, isValid, error, fieldState);\n      }\n    }\n  };\n  const _focusInput = (ref, key) => {\n    if (get(_formState.errors, key) && ref.focus) {\n      ref.focus();\n      return 1;\n    }\n    return;\n  };\n  const trigger = async (name, options = {}) => {\n    let isValid;\n    let validationResult;\n    const fieldNames = convertToArrayPayload(name);\n    _updateIsValidating(true);\n    if (_options.resolver) {\n      const errors = await executeSchemaAndUpdateState(isUndefined(name) ? name : fieldNames);\n      isValid = isEmptyObject(errors);\n      validationResult = name ? !fieldNames.some((name2) => get(errors, name2)) : isValid;\n    } else if (name) {\n      validationResult = (await Promise.all(fieldNames.map(async (fieldName) => {\n        const field = get(_fields, fieldName);\n        return await executeBuiltInValidation(field && field._f ? { [fieldName]: field } : field);\n      }))).every(Boolean);\n      !(!validationResult && !_formState.isValid) && _updateValid();\n    } else {\n      validationResult = isValid = await executeBuiltInValidation(_fields);\n    }\n    _subjects.state.next({\n      ...!isString(name) || _proxyFormState.isValid && isValid !== _formState.isValid ? {} : { name },\n      ..._options.resolver || !name ? { isValid } : {},\n      errors: _formState.errors,\n      isValidating: false\n    });\n    options.shouldFocus && !validationResult && iterateFieldsByAction(_fields, _focusInput, name ? fieldNames : _names.mount);\n    return validationResult;\n  };\n  const getValues = (fieldNames) => {\n    const values = {\n      ..._defaultValues,\n      ..._state.mount ? _formValues : {}\n    };\n    return isUndefined(fieldNames) ? values : isString(fieldNames) ? get(values, fieldNames) : fieldNames.map((name) => get(values, name));\n  };\n  const getFieldState = (name, formState) => ({\n    invalid: !!get((formState || _formState).errors, name),\n    isDirty: !!get((formState || _formState).dirtyFields, name),\n    isTouched: !!get((formState || _formState).touchedFields, name),\n    error: get((formState || _formState).errors, name)\n  });\n  const clearErrors = (name) => {\n    name && convertToArrayPayload(name).forEach((inputName) => unset(_formState.errors, inputName));\n    _subjects.state.next({\n      errors: name ? _formState.errors : {}\n    });\n  };\n  const setError = (name, error, options) => {\n    const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\n    set(_formState.errors, name, {\n      ...error,\n      ref\n    });\n    _subjects.state.next({\n      name,\n      errors: _formState.errors,\n      isValid: false\n    });\n    options && options.shouldFocus && ref && ref.focus && ref.focus();\n  };\n  const watch = (name, defaultValue) => isFunction(name) ? _subjects.values.subscribe({\n    next: (payload) => name(_getWatch(void 0, defaultValue), payload)\n  }) : _getWatch(name, defaultValue, true);\n  const unregister = (name, options = {}) => {\n    for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n      _names.mount.delete(fieldName);\n      _names.array.delete(fieldName);\n      if (!options.keepValue) {\n        unset(_fields, fieldName);\n        unset(_formValues, fieldName);\n      }\n      !options.keepError && unset(_formState.errors, fieldName);\n      !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n      !options.keepTouched && unset(_formState.touchedFields, fieldName);\n      !_options.shouldUnregister && !options.keepDefaultValue && unset(_defaultValues, fieldName);\n    }\n    _subjects.values.next({\n      values: { ..._formValues }\n    });\n    _subjects.state.next({\n      ..._formState,\n      ...!options.keepDirty ? {} : { isDirty: _getDirty() }\n    });\n    !options.keepIsValid && _updateValid();\n  };\n  const _updateDisabledField = ({ disabled, name, field, fields, value }) => {\n    if (isBoolean(disabled)) {\n      const inputValue = disabled ? void 0 : isUndefined(value) ? getFieldValue(field ? field._f : get(fields, name)._f) : value;\n      set(_formValues, name, inputValue);\n      updateTouchAndDirty(name, inputValue, false, false, true);\n    }\n  };\n  const register = (name, options = {}) => {\n    let field = get(_fields, name);\n    const disabledIsDefined = isBoolean(options.disabled);\n    set(_fields, name, {\n      ...field || {},\n      _f: {\n        ...field && field._f ? field._f : { ref: { name } },\n        name,\n        mount: true,\n        ...options\n      }\n    });\n    _names.mount.add(name);\n    if (field) {\n      _updateDisabledField({\n        field,\n        disabled: options.disabled,\n        name,\n        value: options.value\n      });\n    } else {\n      updateValidAndValue(name, true, options.value);\n    }\n    return {\n      ...disabledIsDefined ? { disabled: options.disabled } : {},\n      ..._options.progressive ? {\n        required: !!options.required,\n        min: getRuleValue(options.min),\n        max: getRuleValue(options.max),\n        minLength: getRuleValue(options.minLength),\n        maxLength: getRuleValue(options.maxLength),\n        pattern: getRuleValue(options.pattern)\n      } : {},\n      name,\n      onChange,\n      onBlur: onChange,\n      ref: (ref) => {\n        if (ref) {\n          register(name, options);\n          field = get(_fields, name);\n          const fieldRef = isUndefined(ref.value) ? ref.querySelectorAll ? ref.querySelectorAll(\"input,select,textarea\")[0] || ref : ref : ref;\n          const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n          const refs = field._f.refs || [];\n          if (radioOrCheckbox ? refs.find((option) => option === fieldRef) : fieldRef === field._f.ref) {\n            return;\n          }\n          set(_fields, name, {\n            _f: {\n              ...field._f,\n              ...radioOrCheckbox ? {\n                refs: [\n                  ...refs.filter(live),\n                  fieldRef,\n                  ...Array.isArray(get(_defaultValues, name)) ? [{}] : []\n                ],\n                ref: { type: fieldRef.type, name }\n              } : { ref: fieldRef }\n            }\n          });\n          updateValidAndValue(name, false, void 0, fieldRef);\n        } else {\n          field = get(_fields, name, {});\n          if (field._f) {\n            field._f.mount = false;\n          }\n          (_options.shouldUnregister || options.shouldUnregister) && !(isNameInFieldArray(_names.array, name) && _state.action) && _names.unMount.add(name);\n        }\n      }\n    };\n  };\n  const _focusError = () => _options.shouldFocusError && iterateFieldsByAction(_fields, _focusInput, _names.mount);\n  const _disableForm = (disabled) => {\n    if (isBoolean(disabled)) {\n      _subjects.state.next({ disabled });\n      iterateFieldsByAction(_fields, (ref, name) => {\n        let requiredDisabledState = disabled;\n        const currentField = get(_fields, name);\n        if (currentField && isBoolean(currentField._f.disabled)) {\n          requiredDisabledState || (requiredDisabledState = currentField._f.disabled);\n        }\n        ref.disabled = requiredDisabledState;\n      }, 0, false);\n    }\n  };\n  const handleSubmit = (onValid, onInvalid) => async (e) => {\n    let onValidError = void 0;\n    if (e) {\n      e.preventDefault && e.preventDefault();\n      e.persist && e.persist();\n    }\n    let fieldValues = cloneObject(_formValues);\n    _subjects.state.next({\n      isSubmitting: true\n    });\n    if (_options.resolver) {\n      const { errors, values } = await _executeSchema();\n      _formState.errors = errors;\n      fieldValues = values;\n    } else {\n      await executeBuiltInValidation(_fields);\n    }\n    unset(_formState.errors, \"root\");\n    if (isEmptyObject(_formState.errors)) {\n      _subjects.state.next({\n        errors: {}\n      });\n      try {\n        await onValid(fieldValues, e);\n      } catch (error) {\n        onValidError = error;\n      }\n    } else {\n      if (onInvalid) {\n        await onInvalid({ ..._formState.errors }, e);\n      }\n      _focusError();\n      setTimeout(_focusError);\n    }\n    _subjects.state.next({\n      isSubmitted: true,\n      isSubmitting: false,\n      isSubmitSuccessful: isEmptyObject(_formState.errors) && !onValidError,\n      submitCount: _formState.submitCount + 1,\n      errors: _formState.errors\n    });\n    if (onValidError) {\n      throw onValidError;\n    }\n  };\n  const resetField = (name, options = {}) => {\n    if (get(_fields, name)) {\n      if (isUndefined(options.defaultValue)) {\n        setValue(name, cloneObject(get(_defaultValues, name)));\n      } else {\n        setValue(name, options.defaultValue);\n        set(_defaultValues, name, cloneObject(options.defaultValue));\n      }\n      if (!options.keepTouched) {\n        unset(_formState.touchedFields, name);\n      }\n      if (!options.keepDirty) {\n        unset(_formState.dirtyFields, name);\n        _formState.isDirty = options.defaultValue ? _getDirty(name, cloneObject(get(_defaultValues, name))) : _getDirty();\n      }\n      if (!options.keepError) {\n        unset(_formState.errors, name);\n        _proxyFormState.isValid && _updateValid();\n      }\n      _subjects.state.next({ ..._formState });\n    }\n  };\n  const _reset = (formValues, keepStateOptions = {}) => {\n    const updatedValues = formValues ? cloneObject(formValues) : _defaultValues;\n    const cloneUpdatedValues = cloneObject(updatedValues);\n    const values = formValues && !isEmptyObject(formValues) ? cloneUpdatedValues : _defaultValues;\n    if (!keepStateOptions.keepDefaultValues) {\n      _defaultValues = updatedValues;\n    }\n    if (!keepStateOptions.keepValues) {\n      if (keepStateOptions.keepDirtyValues) {\n        for (const fieldName of _names.mount) {\n          get(_formState.dirtyFields, fieldName) ? set(values, fieldName, get(_formValues, fieldName)) : setValue(fieldName, get(values, fieldName));\n        }\n      } else {\n        if (isWeb && isUndefined(formValues)) {\n          for (const name of _names.mount) {\n            const field = get(_fields, name);\n            if (field && field._f) {\n              const fieldReference = Array.isArray(field._f.refs) ? field._f.refs[0] : field._f.ref;\n              if (isHTMLElement(fieldReference)) {\n                const form = fieldReference.closest(\"form\");\n                if (form) {\n                  form.reset();\n                  break;\n                }\n              }\n            }\n          }\n        }\n        _fields = {};\n      }\n      _formValues = props.shouldUnregister ? keepStateOptions.keepDefaultValues ? cloneObject(_defaultValues) : {} : cloneObject(values);\n      _subjects.array.next({\n        values: { ...values }\n      });\n      _subjects.values.next({\n        values: { ...values }\n      });\n    }\n    _names = {\n      mount: /* @__PURE__ */ new Set(),\n      unMount: /* @__PURE__ */ new Set(),\n      array: /* @__PURE__ */ new Set(),\n      watch: /* @__PURE__ */ new Set(),\n      watchAll: false,\n      focus: \"\"\n    };\n    !_state.mount && flushRootRender();\n    _state.mount = !_proxyFormState.isValid || !!keepStateOptions.keepIsValid || !!keepStateOptions.keepDirtyValues;\n    _state.watch = !!props.shouldUnregister;\n    _subjects.state.next({\n      submitCount: keepStateOptions.keepSubmitCount ? _formState.submitCount : 0,\n      isDirty: keepStateOptions.keepDirty ? _formState.isDirty : !!(keepStateOptions.keepDefaultValues && !deepEqual(formValues, _defaultValues)),\n      isSubmitted: keepStateOptions.keepIsSubmitted ? _formState.isSubmitted : false,\n      dirtyFields: keepStateOptions.keepDirtyValues ? keepStateOptions.keepDefaultValues && _formValues ? getDirtyFields(_defaultValues, _formValues) : _formState.dirtyFields : keepStateOptions.keepDefaultValues && formValues ? getDirtyFields(_defaultValues, formValues) : {},\n      touchedFields: keepStateOptions.keepTouched ? _formState.touchedFields : {},\n      errors: keepStateOptions.keepErrors ? _formState.errors : {},\n      isSubmitSuccessful: keepStateOptions.keepIsSubmitSuccessful ? _formState.isSubmitSuccessful : false,\n      isSubmitting: false\n    });\n  };\n  const reset = (formValues, keepStateOptions) => _reset(isFunction(formValues) ? formValues(_formValues) : formValues, keepStateOptions);\n  const setFocus = (name, options = {}) => {\n    const field = get(_fields, name);\n    const fieldReference = field && field._f;\n    if (fieldReference) {\n      const fieldRef = fieldReference.refs ? fieldReference.refs[0] : fieldReference.ref;\n      if (fieldRef.focus) {\n        fieldRef.focus();\n        options.shouldSelect && fieldRef.select();\n      }\n    }\n  };\n  const _updateFormState = (updatedFormState) => {\n    _formState = {\n      ..._formState,\n      ...updatedFormState\n    };\n  };\n  const _resetDefaultValues = () => isFunction(_options.defaultValues) && _options.defaultValues().then((values) => {\n    reset(values, _options.resetOptions);\n    _subjects.state.next({\n      isLoading: false\n    });\n  });\n  return {\n    control: {\n      register,\n      unregister,\n      getFieldState,\n      handleSubmit,\n      setError,\n      _executeSchema,\n      _getWatch,\n      _getDirty,\n      _updateValid,\n      _removeUnmounted,\n      _updateFieldArray,\n      _updateDisabledField,\n      _getFieldArray,\n      _reset,\n      _resetDefaultValues,\n      _updateFormState,\n      _disableForm,\n      _subjects,\n      _proxyFormState,\n      _setErrors,\n      get _fields() {\n        return _fields;\n      },\n      get _formValues() {\n        return _formValues;\n      },\n      get _state() {\n        return _state;\n      },\n      set _state(value) {\n        _state = value;\n      },\n      get _defaultValues() {\n        return _defaultValues;\n      },\n      get _names() {\n        return _names;\n      },\n      set _names(value) {\n        _names = value;\n      },\n      get _formState() {\n        return _formState;\n      },\n      set _formState(value) {\n        _formState = value;\n      },\n      get _options() {\n        return _options;\n      },\n      set _options(value) {\n        _options = {\n          ..._options,\n          ...value\n        };\n      }\n    },\n    trigger,\n    register,\n    handleSubmit,\n    watch,\n    setValue,\n    getValues,\n    reset,\n    resetField,\n    clearErrors,\n    unregister,\n    setError,\n    setFocus,\n    getFieldState\n  };\n}\nfunction useForm(props = {}) {\n  const _formControl = React__default.useRef();\n  const _values = React__default.useRef();\n  const [formState, updateFormState] = React__default.useState({\n    isDirty: false,\n    isValidating: false,\n    isLoading: isFunction(props.defaultValues),\n    isSubmitted: false,\n    isSubmitting: false,\n    isSubmitSuccessful: false,\n    isValid: false,\n    submitCount: 0,\n    dirtyFields: {},\n    touchedFields: {},\n    errors: props.errors || {},\n    disabled: props.disabled || false,\n    defaultValues: isFunction(props.defaultValues) ? void 0 : props.defaultValues\n  });\n  if (!_formControl.current) {\n    _formControl.current = {\n      ...createFormControl(props, () => updateFormState((formState2) => ({ ...formState2 }))),\n      formState\n    };\n  }\n  const control = _formControl.current.control;\n  control._options = props;\n  useSubscribe({\n    subject: control._subjects.state,\n    next: (value) => {\n      if (shouldRenderFormState(value, control._proxyFormState, control._updateFormState, true)) {\n        updateFormState({ ...control._formState });\n      }\n    }\n  });\n  React__default.useEffect(() => control._disableForm(props.disabled), [control, props.disabled]);\n  React__default.useEffect(() => {\n    if (control._proxyFormState.isDirty) {\n      const isDirty = control._getDirty();\n      if (isDirty !== formState.isDirty) {\n        control._subjects.state.next({\n          isDirty\n        });\n      }\n    }\n  }, [control, formState.isDirty]);\n  React__default.useEffect(() => {\n    if (props.values && !deepEqual(props.values, _values.current)) {\n      control._reset(props.values, control._options.resetOptions);\n      _values.current = props.values;\n      updateFormState((state) => ({ ...state }));\n    } else {\n      control._resetDefaultValues();\n    }\n  }, [props.values, control]);\n  React__default.useEffect(() => {\n    if (props.errors) {\n      control._setErrors(props.errors);\n    }\n  }, [props.errors, control]);\n  React__default.useEffect(() => {\n    if (!control._state.mount) {\n      control._updateValid();\n      control._state.mount = true;\n    }\n    if (control._state.watch) {\n      control._state.watch = false;\n      control._subjects.state.next({ ...control._formState });\n    }\n    control._removeUnmounted();\n  });\n  React__default.useEffect(() => {\n    props.shouldUnregister && control._subjects.values.next({\n      values: control._getWatch()\n    });\n  }, [props.shouldUnregister, control]);\n  _formControl.current.formState = getProxyFormState(formState, control);\n  return _formControl.current;\n}\nexport {\n  appendErrors,\n  get,\n  set,\n  useForm,\n  useFormContext,\n  useWatch\n};\n","import { env } from \"../../config/index.js\";\nclass CommentApiService {\n  async getCommentList({\n    onSiteContentId,\n    page,\n    size\n  }) {\n    const params = {\n      onSiteContentId: `${onSiteContentId}`,\n      page: `${page}`,\n      size: `${size}`\n    };\n    const queryString = new URLSearchParams(params).toString();\n    return fetch(`${env.api.content}/api/v4/on-site-content/comments?${queryString}`, {\n      credentials: \"include\"\n    }).then((res) => res.json()).then((json) => json);\n  }\n  async createComment({\n    onSiteContentId,\n    comment\n  }) {\n    const body = {\n      onSiteContentId,\n      text: comment\n    };\n    return fetch(`${env.api.content}/api/v4/on-site-content/comments`, {\n      method: \"POST\",\n      body: JSON.stringify(body),\n      headers: {\n        \"Content-Type\": \"application/json\",\n        \"accept\": \"application/json\"\n      },\n      credentials: \"include\"\n    }).then((res) => res.json()).then((json) => json);\n  }\n  async deleteComment(commentId) {\n    return fetch(`${env.api.content}/api/v4/on-site-content/comments/${commentId}`, {\n      method: \"DELETE\",\n      credentials: \"include\"\n    }).then((res) => res.json()).then((json) => json);\n  }\n}\nconst commentApi = new CommentApiService();\nexport {\n  commentApi\n};\n","import useSWR from \"../../node_modules/swr/core/dist/index.js\";\nimport { commentApi } from \"../../apis/comment/CommentApiService.js\";\nimport { useSWRConfig } from \"../../node_modules/swr/_internal/dist/index.js\";\nconst COMMENT_LIST_FETCHER_KEY = \"comment-list\";\nconst getPaginatedCommentListCacheKey = ({\n  page,\n  size,\n  onSiteContentId\n}) => {\n  return `${COMMENT_LIST_FETCHER_KEY}?onSiteContentId=${onSiteContentId}&page=${page}&size=${size}`;\n};\nconst commentListFetcher = ({\n  onSiteContentId,\n  ...paginationParams\n}) => async () => {\n  const res = await commentApi.getCommentList({\n    onSiteContentId: Number(onSiteContentId),\n    ...paginationParams\n  });\n  return res.data;\n};\nconst useFetchInfinityCommentList = ({\n  onSiteContentId,\n  onSuccess,\n  ...paginationParams\n}) => {\n  const hasOnsiteContentId = Boolean(onSiteContentId);\n  return useSWR(hasOnsiteContentId ? getPaginatedCommentListCacheKey({\n    onSiteContentId,\n    ...paginationParams\n  }) : null, commentListFetcher({\n    onSiteContentId,\n    ...paginationParams\n  }), {\n    revalidateOnFocus: false,\n    onSuccess\n  });\n};\nconst useRevalidateCommentList = () => {\n  const {\n    mutate\n  } = useSWRConfig();\n  const revalidateCommentList = (onSiteContentId) => {\n    const filter = (key) => typeof key === \"string\" && key.startsWith(`${COMMENT_LIST_FETCHER_KEY}?onSiteContentId=${onSiteContentId}`);\n    mutate(filter, void 0, {\n      revalidate: true\n    });\n  };\n  return {\n    revalidateCommentList\n  };\n};\nexport {\n  COMMENT_LIST_FETCHER_KEY,\n  getPaginatedCommentListCacheKey,\n  useFetchInfinityCommentList,\n  useRevalidateCommentList\n};\n","import useSWRMutation from \"../../node_modules/swr/mutation/dist/index.js\";\nimport { commentApi } from \"../../apis/comment/CommentApiService.js\";\nconst COMMENT_CREATE_FETCHER_KEY = \"comment-create\";\nconst createComment = (_key, {\n  arg\n}) => commentApi.createComment(arg);\nconst useCommentCreateMutation = ({\n  enabled = true,\n  onError,\n  onSuccess\n} = {}) => {\n  return useSWRMutation(enabled ? COMMENT_CREATE_FETCHER_KEY : null, createComment, {\n    onError,\n    onSuccess\n  });\n};\nexport {\n  COMMENT_CREATE_FETCHER_KEY,\n  useCommentCreateMutation\n};\n","import { createKRTimeZoneDate } from \"./createUTCDate.js\";\nconst concatDateTime = ({\n  date,\n  hours,\n  minutes\n}) => {\n  if (!date) {\n    return null;\n  }\n  const copiedDate = createKRTimeZoneDate(date);\n  copiedDate.setHours(hours);\n  copiedDate.setMinutes(minutes);\n  return copiedDate;\n};\nexport {\n  concatDateTime\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { createContext } from \"react\";\nimport { concatDateTime } from \"../../../../utils/concatDateTime.js\";\nconst CommentInfoContext = createContext(null);\nconst CommentInfoProvider = ({\n  children,\n  onSiteContentId,\n  title,\n  description,\n  eventStartAt,\n  eventEndAt\n}) => {\n  const value = {\n    onSiteContentId: onSiteContentId.trim(),\n    title,\n    description,\n    eventStartAt: concatDateTime(eventStartAt),\n    eventEndAt: concatDateTime(eventEndAt)\n  };\n  return /* @__PURE__ */ jsx(CommentInfoContext.Provider, { value, children });\n};\nexport {\n  CommentInfoContext,\n  CommentInfoProvider\n};\n","import { useContext } from \"react\";\nimport { CommentInfoContext } from \"./CommentInfoProvider.js\";\nconst useCommentInfoContext = () => {\n  const context = useContext(CommentInfoContext);\n  if (!context) {\n    throw new Error(\"useCommentInfoContext should be used within Root\");\n  }\n  return context;\n};\nexport {\n  useCommentInfoContext\n};\n","import \"../../../node_modules/swr/core/dist/index.js\";\nimport \"../../../apis/user-segment/CategoryFirstOrderApiService.js\";\nimport { useFetchFramerContentIdCollection } from \"../../../hooks/fetchers/useFetchFramerContentIdCollection.js\";\nimport \"../../../config/index.js\";\nimport \"../../../apis/taste-sharing/TasteSharingApiService.js\";\nimport \"react\";\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 { useContentStore } from \"../../../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 { useDialog } from \"../../../hooks/useDialog.js\";\nconst useCommentSectionDialog = () => {\n  const dialog = useDialog();\n  const showOneButtonDialog = (content) => {\n    dialog.show({\n      content\n    });\n  };\n  const showTwoButtonDialog = (params) => {\n    dialog.show({\n      secondaryButtonText: \"취소\",\n      ...params\n    });\n  };\n  return {\n    showOneButtonDialog,\n    showTwoButtonDialog\n  };\n};\nconst useOnsiteContentId = () => {\n  const contentId = useContentStore((state) => state.summary.contentId);\n  const {\n    data\n  } = useFetchFramerContentIdCollection({\n    contentId,\n    enabled: Boolean(contentId)\n  });\n  return data == null ? void 0 : data.onSiteContentId;\n};\nexport {\n  useCommentSectionDialog,\n  useOnsiteContentId\n};\n","const verify = (conditionFn, onFalsy, onTruthy) => (form) => {\n  const conditionValue = conditionFn(form);\n  if (conditionValue) {\n    onTruthy == null ? void 0 : onTruthy();\n  } else {\n    onFalsy == null ? void 0 : onFalsy();\n  }\n  return conditionValue;\n};\nconst isCommentFilled = ({\n  comment\n}) => {\n  return Boolean(comment) && (comment == null ? void 0 : comment.trim()) !== \"\";\n};\nexport {\n  isCommentFilled,\n  verify\n};\n","import { useState, useEffect, useMemo } from \"react\";\nimport { useForm, useWatch } from \"../../../../node_modules/react-hook-form/dist/index.esm.js\";\nimport { useAnalytics } from \"../../../../hooks/analytics/useAnalytics.js\";\nimport { useRevalidateCommentList } from \"../../../../hooks/fetchers/useFetchPaginatedCommentList.js\";\nimport \"../../../../node_modules/swr/mutation/dist/index.js\";\nimport \"../../../../config/index.js\";\nimport { useCommentCreateMutation } from \"../../../../hooks/mutations/useCommentCreateMutation.js\";\nimport \"../../../../apis/taste-sharing/TasteSharingApiService.js\";\nimport { useContentStore } from \"../../../../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 { useCurrentUser } from \"../../../../hooks/useCurrentUser.js\";\nimport { useRedirectLoginDialog } from \"../../../../hooks/useRedirectLoginDialog.js\";\nimport { isContentOrigin, parsePathname } from \"../../../../utils/location.js\";\nimport \"../CommentInfoProvider/CommentInfoProvider.js\";\nimport { useCommentInfoContext } from \"../CommentInfoProvider/CommentInfoProvider.hooks.js\";\nimport { useCommentSectionDialog } from \"../CommentSection.hooks.js\";\nimport { DIALOG_CONTENT, PLACE_HOLDER, FORM_NAME } from \"./CommentForm.constants.js\";\nimport { verify, isCommentFilled } from \"./CommentForm.utils.js\";\nimport { isAfter } from \"../../../../node_modules/date-fns/isAfter.js\";\nconst useCreateValidationActions = () => {\n  const {\n    showOneButtonDialog\n  } = useCommentSectionDialog();\n  const {\n    showRedirectLoginDialog\n  } = useRedirectLoginDialog();\n  const onCommentEventOpenInvalid = () => {\n    showOneButtonDialog(DIALOG_CONTENT.DIALOG_CONTENT_UPCOMMING_EVENT);\n  };\n  const onCommentEventOngoingInvalid = () => {\n    showOneButtonDialog(DIALOG_CONTENT.DIALOG_CONTENT_CLOSED_EVENT);\n  };\n  const onLoggedInvalid = () => {\n    showRedirectLoginDialog(DIALOG_CONTENT.NEED_LOGIN);\n  };\n  const onCommentFilledInvalid = () => {\n    showOneButtonDialog(DIALOG_CONTENT.DIALOG_CONTENT_EMPTY_INPUT);\n  };\n  return {\n    onCommentEventOpenInvalid,\n    onCommentEventOngoingInvalid,\n    onLoggedInvalid,\n    onCommentFilledInvalid\n  };\n};\nconst useCreateValidationFunctions = () => {\n  const {\n    onCommentEventOpenInvalid,\n    onCommentEventOngoingInvalid,\n    onLoggedInvalid,\n    onCommentFilledInvalid\n  } = useCreateValidationActions();\n  const {\n    isOpen,\n    isClosed\n  } = useEventInterval();\n  const {\n    logged\n  } = useCurrentUser();\n  const isCommentEventOpen = () => isOpen;\n  const isCommentEventOngoing = () => !isClosed;\n  const isLogged = () => logged;\n  const validations = [verify(isCommentEventOpen, onCommentEventOpenInvalid), verify(isCommentEventOngoing, onCommentEventOngoingInvalid), verify(isLogged, onLoggedInvalid), verify(isCommentFilled, onCommentFilledInvalid)];\n  return validations;\n};\nconst useValidateCommentForm = () => {\n  const validations = useCreateValidationFunctions();\n  const validate = (form) => validations.every((validation) => validation(form));\n  return {\n    validate\n  };\n};\nconst useCommentFormAction = () => {\n  const form = useForm();\n  const {\n    register,\n    control,\n    handleSubmit: handleFormSubmit,\n    setValue\n  } = form;\n  const comment = useWatch({\n    control,\n    name: FORM_NAME\n  });\n  const {\n    validate\n  } = useValidateCommentForm();\n  const {\n    trigger: createComment,\n    isMutating: isLoading\n  } = useCommentCreateMutation();\n  const {\n    onSiteContentId\n  } = useCommentInfoContext();\n  const {\n    revalidateCommentList\n  } = useRevalidateCommentList();\n  const {\n    showOneButtonDialog\n  } = useCommentSectionDialog();\n  const {\n    trackClickCommentSubmitButton\n  } = useTrackClickCommentSubmitButton();\n  const handleSubmit = handleFormSubmit(async (data) => {\n    var _a;\n    if (!validate(data)) {\n      return;\n    }\n    const incoming = ((_a = data.comment) == null ? void 0 : _a.trim()) ?? \"\";\n    try {\n      const res = await createComment({\n        onSiteContentId: Number(onSiteContentId),\n        comment: incoming\n      });\n      if (res.result === \"FAIL\") {\n        throw new Error(res.message ?? DIALOG_CONTENT.DIALOG_CONTENT_FAIL);\n      }\n      showOneButtonDialog(DIALOG_CONTENT.DIALOG_CONTENT_SUCCESS);\n      setValue(\"comment\", \"\");\n      revalidateCommentList(onSiteContentId);\n      trackClickCommentSubmitButton();\n    } catch (err) {\n      showOneButtonDialog(err.message);\n    }\n  }, (err) => {\n    var _a;\n    showOneButtonDialog(((_a = err.comment) == null ? void 0 : _a.message) ?? DIALOG_CONTENT.DIALOG_CONTENT_FAIL);\n  });\n  return {\n    register,\n    comment,\n    handleSubmit,\n    isLoading\n  };\n};\nconst createCommentSubmitFormEventProperties = () => {\n  const {\n    summary\n  } = useContentStore.getState();\n  return {\n    component: \"submit_comment\",\n    curr_screen: \"FRAMER\",\n    content_format: \"FRAMER\",\n    content_no: summary.contentId,\n    content_path: parsePathname()\n  };\n};\nconst useTrackClickCommentSubmitButton = () => {\n  const {\n    trackFirebase,\n    trackAmplitude\n  } = useAnalytics();\n  const trackClickCommentSubmitButton = () => {\n    if (!isContentOrigin()) {\n      return;\n    }\n    const properties = createCommentSubmitFormEventProperties();\n    trackAmplitude(\"click_button\", properties);\n    trackFirebase(\"click_button\", properties);\n  };\n  return {\n    trackClickCommentSubmitButton\n  };\n};\nconst useEventInterval = () => {\n  const {\n    eventStartAt,\n    eventEndAt\n  } = useCommentInfoContext();\n  const [now, setNow] = useState();\n  useEffect(() => {\n    setNow(/* @__PURE__ */ new Date());\n  }, []);\n  const isOpen = now != null && eventStartAt != null ? isAfter(now, eventStartAt) : false;\n  const isClosed = now != null && eventEndAt != null ? isAfter(now, eventEndAt) : false;\n  return {\n    isOpen,\n    isClosed\n  };\n};\nconst useCommentInput = () => {\n  const {\n    logged\n  } = useCurrentUser();\n  const {\n    showRedirectLoginDialog\n  } = useRedirectLoginDialog();\n  const {\n    isOpen,\n    isClosed\n  } = useEventInterval();\n  const [isReadOnly, setIsReadOnly] = useState(false);\n  useEffect(() => {\n    setIsReadOnly(getReadOnlyStatus({\n      isOpen,\n      isClosed\n    }));\n  }, [isOpen, isClosed]);\n  const handleFocus = () => {\n    if (!logged) {\n      showRedirectLoginDialog(DIALOG_CONTENT.NEED_LOGIN);\n    }\n  };\n  const placeHolder = useMemo(() => getPlaceHolder({\n    logged,\n    isOpen,\n    isClosed\n  }), [logged, isOpen, isClosed]);\n  return {\n    handleFocus,\n    placeHolder,\n    isReadOnly\n  };\n};\nconst getPlaceHolder = ({\n  logged,\n  isOpen,\n  isClosed\n}) => {\n  switch (true) {\n    case !isOpen:\n      return PLACE_HOLDER.UPCOMMING_EVENT;\n    case isClosed:\n      return PLACE_HOLDER.CLOSED_EVENT;\n    case !logged:\n      return PLACE_HOLDER.NEED_LOGIN;\n    default:\n      return \"\";\n  }\n};\nconst getReadOnlyStatus = ({\n  isOpen,\n  isClosed\n}) => {\n  switch (true) {\n    case !isOpen:\n    case isClosed:\n      return true;\n    default:\n      return false;\n  }\n};\nexport {\n  useCommentFormAction,\n  useCommentInput,\n  useEventInterval,\n  useTrackClickCommentSubmitButton\n};\n","(function() {\n  \"use strict\";\n  try {\n    if (typeof document != \"undefined\") {\n      var elementStyle = document.createElement(\"style\");\n      elementStyle.appendChild(document.createTextNode(\"._container_knsoh_1 {\\n  margin: 19px 0 11px;\\n  width: 100%;\\n}\\n\\n._form_knsoh_6 {\\n  display: flex;\\n  justify-content: space-between;\\n  height: 130px;\\n}\\n\\n._textAreaWrapper_knsoh_12 {\\n  flex: 1;\\n  padding: 15px;\\n\\n  border: 1px solid #d4d4d4;\\n}\\n\\n._textArea_knsoh_12 {\\n  width: 100%;\\n  height: 100%;\\n\\n  font-size: 16px;\\n  resize: none;\\n  outline: none;\\n  border: 0;\\n\\n  color: #000000;\\n}\\n\\n._submitInput_knsoh_31 {\\n  margin-left: 12px;\\n  width: 130px;\\n  height: 130px;\\n\\n  border: 0;\\n  font-size: 18px;\\n  background-color: #303033;\\n  color: #ffffff;\\n\\n  cursor: pointer;\\n\\n  -webkit-appearance: none;\\n  -moz-appearance: none;\\n  appearance: none;\\n\\n  -webkit-border-radius: 0;\\n  -moz-border-radius: 0;\\n  border-radius: 0;\\n}\\n\\n._validationMessage_knsoh_52 {\\n  font-size: 13px;\\n  color: #ff4800;\\n}\\n\\n@media (max-width: 540px) {\\n  ._form_knsoh_6 {\\n    height: 100px;\\n  }\\n\\n  ._textAreaWrapper_knsoh_12 {\\n    padding: 10px 15px;\\n  }\\n\\n  ._textArea_knsoh_12 {\\n    font-size: 12px;\\n  }\\n\\n  ._submitInput_knsoh_31 {\\n    margin-left: 0;\\n    width: 80px;\\n    height: 100px;\\n\\n    font-size: 14px;\\n  }\\n\\n  ._validationMessage_knsoh_52 {\\n    font-size: 11px;\\n  }\\n}\"));\n      document.head.appendChild(elementStyle);\n    }\n  } catch (e) {\n    console.error(\"vite-plugin-css-injected-by-js\", e);\n  }\n})();\nconst container = \"_container_knsoh_1\";\nconst form = \"_form_knsoh_6\";\nconst textAreaWrapper = \"_textAreaWrapper_knsoh_12\";\nconst textArea = \"_textArea_knsoh_12\";\nconst submitInput = \"_submitInput_knsoh_31\";\nconst validationMessage = \"_validationMessage_knsoh_52\";\nconst styles = {\n  container,\n  form,\n  textAreaWrapper,\n  textArea,\n  submitInput,\n  validationMessage\n};\nexport {\n  container,\n  styles as default,\n  form,\n  submitInput,\n  textArea,\n  textAreaWrapper,\n  validationMessage\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport { COMMENT_GUIDE, FORM_NAME, BUTTON_TEXT } from \"./CommentForm.constants.js\";\nimport { useCommentFormAction, useCommentInput } from \"./CommentForm.hooks.js\";\nimport styles from \"./CommentForm.module.css.js\";\nconst CommentForm = () => {\n  const {\n    register,\n    comment = \"\",\n    handleSubmit,\n    isLoading\n  } = useCommentFormAction();\n  const {\n    handleFocus,\n    placeHolder,\n    isReadOnly\n  } = useCommentInput();\n  const showShowValidationMessage = comment.length > COMMENT_GUIDE.MAX_LENGTH;\n  return /* @__PURE__ */ jsxs(\"div\", { className: styles.container, children: [\n    /* @__PURE__ */ jsxs(\"form\", { className: styles.form, onSubmit: handleSubmit, children: [\n      /* @__PURE__ */ jsx(\"div\", { className: styles.textAreaWrapper, children: /* @__PURE__ */ jsx(\"textarea\", { className: styles.textArea, ...register(FORM_NAME, {\n        maxLength: {\n          value: COMMENT_GUIDE.MAX_LENGTH,\n          message: `${COMMENT_GUIDE.MAX_LENGTH}자까지 자까지 작성할 수 있어요`\n        }\n      }), placeholder: placeHolder, readOnly: isReadOnly, onFocus: handleFocus, rows: COMMENT_GUIDE.ROWS, cols: COMMENT_GUIDE.COLS }) }),\n      /* @__PURE__ */ jsx(\"input\", { className: styles.submitInput, type: \"submit\", value: isLoading ? BUTTON_TEXT.SUBMIT_IN_PROGRESS : BUTTON_TEXT.SUBMIT, disabled: isLoading })\n    ] }),\n    /* @__PURE__ */ jsx(\"div\", { style: {\n      height: \"16px\",\n      marginTop: \"6px\"\n    }, children: showShowValidationMessage ? /* @__PURE__ */ jsxs(\"p\", { className: styles.validationMessage, children: [\n      \"∗\",\n      `${COMMENT_GUIDE.MAX_LENGTH}자까지 작성할 수 있어요`\n    ] }) : null })\n  ] });\n};\nexport {\n  CommentForm\n};\n","import { isDate } from \"../../../../node_modules/date-fns/isDate.js\";\nimport { formatDate as format } from \"../../../../node_modules/date-fns/format.js\";\nconst EVENT_START_DATE_FORMAT = \"yyyy. M. d.\";\nconst EVENT_END_DATE_FORMAT = \"M. d.\";\nconst formatEventDate = (date, formatFor) => {\n  if (!isDate(date)) {\n    return \"\";\n  }\n  return format(date, formatFor === \"start\" ? EVENT_START_DATE_FORMAT : EVENT_END_DATE_FORMAT);\n};\nexport {\n  formatEventDate\n};\n","(function() {\n  \"use strict\";\n  try {\n    if (typeof document != \"undefined\") {\n      var elementStyle = document.createElement(\"style\");\n      elementStyle.appendChild(document.createTextNode(\"._container_4bm7f_1 {\\n  padding: 0 20px 20px 0;\\n  border-bottom: 4px solid #303033;\\n  word-wrap: break-word;\\n}\\n\\n._container_4bm7f_1[data-layout='responsive'] {\\n  padding: 0 130px 22px 0;\\n}\\n\\n._title_4bm7f_11 {\\n  font-size: 34px;\\n  font-weight: 500;\\n  line-height: 1.3;\\n}\\n\\n._description_4bm7f_17 {\\n  margin-top: 36px;\\n  font-size: 16px;\\n  line-height: 1.63;\\n  white-space: pre-line;\\n}\\n\\n._timePeriod_4bm7f_24 {\\n  display: inline-block;\\n  margin-top: 11px;\\n  font-size: 13px;\\n  color: #000000;\\n  white-space: pre-wrap;\\n}\\n\\n@media (max-width: 540px) {\\n  ._container_4bm7f_1 {\\n    padding: 0 20px 20px 0;\\n  }\\n\\n  ._title_4bm7f_11 {\\n    font-size: 26px;\\n  }\\n\\n  ._description_4bm7f_17 {\\n    margin-top: 11px;\\n    font-size: 14px;\\n  }\\n}\"));\n      document.head.appendChild(elementStyle);\n    }\n  } catch (e) {\n    console.error(\"vite-plugin-css-injected-by-js\", e);\n  }\n})();\nconst container = \"_container_4bm7f_1\";\nconst title = \"_title_4bm7f_11\";\nconst description = \"_description_4bm7f_17\";\nconst timePeriod = \"_timePeriod_4bm7f_24\";\nconst styles = {\n  container,\n  title,\n  description,\n  timePeriod\n};\nexport {\n  container,\n  styles as default,\n  description,\n  timePeriod,\n  title\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport \"../CommentInfoProvider/CommentInfoProvider.js\";\nimport { useCommentInfoContext } from \"../CommentInfoProvider/CommentInfoProvider.hooks.js\";\nimport { formatEventDate } from \"./CommentHeader.hooks.js\";\nimport styles from \"./CommentHeader.module.css.js\";\nconst CommentHeader = ({\n  layout\n}) => {\n  const {\n    title,\n    description,\n    eventStartAt,\n    eventEndAt\n  } = useCommentInfoContext();\n  return /* @__PURE__ */ jsxs(\"div\", { className: styles.container, \"data-layout\": layout, children: [\n    /* @__PURE__ */ jsx(\"h1\", { className: styles.title, children: title }),\n    eventStartAt ? /* @__PURE__ */ jsx(\"p\", { className: styles.timePeriod, children: formatEventDate(eventStartAt, \"start\") }) : null,\n    eventEndAt ? /* @__PURE__ */ jsxs(\"p\", { className: styles.timePeriod, children: [\n      \" − \",\n      formatEventDate(eventEndAt, \"end\")\n    ] }) : null,\n    /* @__PURE__ */ jsx(\"p\", { className: styles.description, children: description })\n  ] });\n};\nexport {\n  CommentHeader\n};\n","(function() {\n  \"use strict\";\n  try {\n    if (typeof document != \"undefined\") {\n      var elementStyle = document.createElement(\"style\");\n      elementStyle.appendChild(document.createTextNode(\"._moreIcon_vgsjo_1 {\\n  width: 30px;\\n  height: 15px;\\n\\n  margin-left: 10px;\\n}\\n\\n._button_vgsjo_8 {\\n  display: flex;\\n  align-items: center;\\n\\n  font-size: 30px;\\n  color: '#000000';\\n  border: 0;\\n  background: transparent;\\n  cursor: pointer;\\n  outline: none;\\n}\\n\\n@media (max-width: 540px) {\\n  ._moreIcon_vgsjo_1 {\\n    width: 20px;\\n    height: 10px;\\n  }\\n\\n  ._button_vgsjo_8 {\\n    font-size: 20px;\\n  }\\n}\"));\n      document.head.appendChild(elementStyle);\n    }\n  } catch (e) {\n    console.error(\"vite-plugin-css-injected-by-js\", e);\n  }\n})();\nconst moreIcon = \"_moreIcon_vgsjo_1\";\nconst button = \"_button_vgsjo_8\";\nconst styles = {\n  moreIcon,\n  button\n};\nexport {\n  button,\n  styles as default,\n  moreIcon\n};\n","import { jsxs, jsx } from \"react/jsx-runtime\";\nimport styles from \"./ReadMoreButton.module.css.js\";\nconst MoreIcon = () => {\n  return /* @__PURE__ */ jsx(\"svg\", { className: styles.moreIcon, xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 28 16\", children: /* @__PURE__ */ jsx(\"g\", { fill: \"none\", fillRule: \"evenodd\", stroke: \"rgb(158, 158, 158)\", strokeWidth: \"3\", children: /* @__PURE__ */ jsx(\"path\", { d: \"M28 1L13.97 15 0 1.058\" }) }) });\n};\nconst ReadMoreButton = ({\n  onClick\n}) => {\n  return /* @__PURE__ */ jsxs(\"button\", { className: styles.button, onClick, children: [\n    \"더보기\",\n    /* @__PURE__ */ jsx(MoreIcon, {})\n  ] });\n};\nexport {\n  ReadMoreButton\n};\n","(function() {\n  \"use strict\";\n  try {\n    if (typeof document != \"undefined\") {\n      var elementStyle = document.createElement(\"style\");\n      elementStyle.appendChild(document.createTextNode(\"._open_1rqyp_1 {\\n  margin-top: -1px;\\n  border-top: 1px solid #f4f4f4 !important;\\n  border-bottom: 1px solid #f4f4f4 !important;\\n}\\n\\n._container_1rqyp_7 {\\n  position: relative;\\n  padding: 15px 10px 13px;\\n\\n  border-bottom: 1px solid #d4d4d4;\\n}\\n\\n._author_1rqyp_14 {\\n  width: 160px;\\n\\n  font-size: 13px;\\n  line-height: 26px;\\n\\n  text-align: right;\\n  text-overflow: ellipsis;\\n  white-space: nowrap;\\n  overflow: hidden;\\n}\\n\\n._createdAt_1rqyp_26 {\\n  width: 115px;\\n\\n  font-size: 13px;\\n  line-height: 26px;\\n\\n  text-align: right;\\n}\\n\\n._comment_1rqyp_35 {\\n  flex: 1;\\n  line-height: 26px;\\n\\n  text-align: left;\\n  text-overflow: ellipsis;\\n  white-space: nowrap;\\n  word-break: break-all;\\n  color: #000000;\\n\\n  overflow: hidden;\\n}\\n\\n._commentOpen_1rqyp_48 {\\n  height: auto;\\n\\n  text-overflow: clip;\\n  white-space: pre-line;\\n}\\n\\n@media (max-width: 540px) {\\n  ._container_1rqyp_7 {\\n    padding: 15px 0;\\n    margin-right: 20px;\\n    margin-left: 20px;\\n  }\\n\\n  ._createdAt_1rqyp_26 {\\n    font-size: 12px;\\n    color: #a0a0a0;\\n  }\\n\\n  ._author_1rqyp_14 {\\n    width: auto;\\n    margin-left: 16px;\\n\\n    font-size: 12px;\\n    color: #a0a0a0;\\n  }\\n}\"));\n      document.head.appendChild(elementStyle);\n    }\n  } catch (e) {\n    console.error(\"vite-plugin-css-injected-by-js\", e);\n  }\n})();\nconst open = \"_open_1rqyp_1\";\nconst container = \"_container_1rqyp_7\";\nconst author = \"_author_1rqyp_14\";\nconst createdAt = \"_createdAt_1rqyp_26\";\nconst comment = \"_comment_1rqyp_35\";\nconst commentOpen = \"_commentOpen_1rqyp_48\";\nconst styles = {\n  open,\n  container,\n  author,\n  createdAt,\n  comment,\n  commentOpen\n};\nexport {\n  author,\n  comment,\n  commentOpen,\n  container,\n  createdAt,\n  styles as default,\n  open\n};\n","import useSWRMutation from \"../../node_modules/swr/mutation/dist/index.js\";\nimport { commentApi } from \"../../apis/comment/CommentApiService.js\";\nconst COMMENT_DELETE_FETCHER_KEY = \"comment-delete\";\nconst ceateComment = (_key, {\n  arg\n}) => commentApi.deleteComment(arg);\nconst useCommentDeleteMutation = ({\n  enabled = true,\n  onError,\n  onSuccess\n} = {}) => {\n  return useSWRMutation(enabled ? COMMENT_DELETE_FETCHER_KEY : null, ceateComment, {\n    onError,\n    onSuccess\n  });\n};\nexport {\n  COMMENT_DELETE_FETCHER_KEY,\n  useCommentDeleteMutation\n};\n","import \"../../../../../node_modules/swr/mutation/dist/index.js\";\nimport \"../../../../../config/index.js\";\nimport { useCommentDeleteMutation } from \"../../../../../hooks/mutations/useCommentDeleteMutation.js\";\nimport \"../../../../../apis/taste-sharing/TasteSharingApiService.js\";\nimport \"../../CommentInfoProvider/CommentInfoProvider.js\";\nimport { useCommentInfoContext } from \"../../CommentInfoProvider/CommentInfoProvider.hooks.js\";\nimport { useRevalidateCommentList } from \"../../../../../hooks/fetchers/useFetchPaginatedCommentList.js\";\nimport { useCommentSectionDialog } from \"../../CommentSection.hooks.js\";\nimport { parseISO } from \"../../../../../node_modules/date-fns/parseISO.js\";\nimport { formatDate as format } from \"../../../../../node_modules/date-fns/format.js\";\nconst CREATED_DATE_FORMAT = \"yyyy.MM.dd\";\nconst formatCreatedAt = (value) => {\n  const parsedCreatedAt = parseISO(value);\n  return format(parsedCreatedAt, CREATED_DATE_FORMAT);\n};\nconst useDeleteCommentAction = () => {\n  const {\n    showOneButtonDialog,\n    showTwoButtonDialog\n  } = useCommentSectionDialog();\n  const {\n    trigger: deleteCommentAsync,\n    isMutating\n  } = useCommentDeleteMutation();\n  const {\n    onSiteContentId\n  } = useCommentInfoContext();\n  const {\n    revalidateCommentList\n  } = useRevalidateCommentList();\n  const handleDeleteConfirm = async (commentId) => {\n    try {\n      const res = await deleteCommentAsync(commentId);\n      if (res.result === \"FAIL\") {\n        throw new Error(res.message ?? \"일시적인 오류가 발생하였습니다.\\n잠시 후 다시 시도해주세요.\");\n      }\n      revalidateCommentList(onSiteContentId);\n    } catch (err) {\n      showOneButtonDialog(err.message);\n    }\n  };\n  const deleteComment = (commentId) => {\n    if (isMutating) {\n      return;\n    }\n    showTwoButtonDialog({\n      content: \"댓글을 삭제하시겠습니까?\",\n      onPrimaryButtonClick: () => {\n        handleDeleteConfirm(commentId);\n      }\n    });\n  };\n  return {\n    deleteComment\n  };\n};\nexport {\n  formatCreatedAt,\n  useDeleteCommentAction\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport React__default from \"react\";\nconst DeleteButton = React__default.memo(() => {\n  return /* @__PURE__ */ jsx(\"button\", { type: \"button\", style: {\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    padding: 0,\n    width: \"18px\",\n    height: \"18px\",\n    border: 0,\n    borderRadius: \"50%\",\n    cursor: \"pointer\",\n    outline: \"none\",\n    backgroundColor: \"#a0a0a0\"\n  }, children: /* @__PURE__ */ jsx(ClearIcon, {}) });\n});\nconst ClearIcon = () => {\n  return /* @__PURE__ */ jsx(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"8px\", height: \"8px\", viewBox: \"0 0 10 8\", children: /* @__PURE__ */ jsx(\"g\", { fill: \"none\", fillRule: \"evenodd\", stroke: \"#ffffff\", strokeWidth: 1, strokeLinecap: \"square\", children: /* @__PURE__ */ jsx(\"path\", { d: \"M8.966.034l-7.95 7.95M8.966 7.966L1.016.016\" }) }) });\n};\nexport {\n  DeleteButton\n};\n","import { jsx, jsxs, Fragment } from \"react/jsx-runtime\";\nimport styles from \"./CommentItem.module.css.js\";\nimport { useState, useRef } from \"react\";\nimport { clsx } from \"../../../../../utils/clsx.js\";\nimport { useIsMobileDevice } from \"../../../../../hooks/useIsMobileDevice.js\";\nimport { useDeleteCommentAction, formatCreatedAt } from \"./CommentItem.hooks.js\";\nimport { DeleteButton } from \"./DeleteButton/DeleteButton.js\";\nconst CommentItem = ({\n  value\n}) => {\n  const [isOpen, setIsOpen] = useState(false);\n  const isMobileDevice = useIsMobileDevice();\n  const ref = useRef(null);\n  const handleClick = () => {\n    setIsOpen((prev) => !prev);\n  };\n  const {\n    deleteComment\n  } = useDeleteCommentAction();\n  const {\n    id,\n    createdAt,\n    loginId,\n    isOwner,\n    text\n  } = value;\n  const handleDelete = (event) => {\n    event.stopPropagation();\n    deleteComment(id);\n  };\n  return /* @__PURE__ */ jsx(\"li\", { style: {\n    margin: 0,\n    padding: 0,\n    listStyle: \"none\",\n    backgroundColor: isOpen ? \"#f4f4f4\" : \"#ffffff\"\n  }, children: /* @__PURE__ */ jsxs(\"div\", { ref, className: clsx(styles.container, isOpen ? styles.open : void 0), onClick: handleClick, children: [\n    isMobileDevice ? /* @__PURE__ */ jsxs(\"section\", { style: {\n      display: \"flex\",\n      justifyContent: \"space-between\",\n      height: \"32px\"\n    }, children: [\n      /* @__PURE__ */ jsxs(\"div\", { children: [\n        /* @__PURE__ */ jsx(\"span\", { className: styles.createdAt, children: formatCreatedAt(createdAt) }),\n        /* @__PURE__ */ jsx(\"span\", { className: styles.author, children: loginId })\n      ] }),\n      isOwner ? /* @__PURE__ */ jsx(\"div\", { style: {\n        padding: \"4px\"\n      }, onClick: handleDelete, children: /* @__PURE__ */ jsx(DeleteButton, {}) }) : null\n    ] }) : null,\n    /* @__PURE__ */ jsxs(\"div\", { style: {\n      position: \"relative\",\n      display: \"flex\",\n      fontSize: \"14px\",\n      cursor: \"pointer\"\n    }, children: [\n      /* @__PURE__ */ jsx(\"p\", { className: clsx(styles.comment, isOpen ? styles.commentOpen : void 0), children: text }),\n      !isMobileDevice ? /* @__PURE__ */ jsxs(Fragment, { children: [\n        /* @__PURE__ */ jsx(\"span\", { className: styles.author, children: loginId }),\n        isOwner ? /* @__PURE__ */ jsx(\"div\", { style: {\n          position: \"absolute\",\n          padding: \"4px\",\n          right: \"84px\"\n        }, onClick: handleDelete, children: /* @__PURE__ */ jsx(DeleteButton, {}) }) : null,\n        /* @__PURE__ */ jsx(\"span\", { className: styles.createdAt, children: formatCreatedAt(createdAt) })\n      ] }) : null\n    ] })\n  ] }) });\n};\nexport {\n  CommentItem\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { CommentItem } from \"../CommentItem/CommentItem.js\";\nimport \"../../CommentInfoProvider/CommentInfoProvider.js\";\nimport { useCommentInfoContext } from \"../../CommentInfoProvider/CommentInfoProvider.hooks.js\";\nimport \"../../../../../node_modules/swr/core/dist/index.js\";\nimport \"../../../../../apis/user-segment/CategoryFirstOrderApiService.js\";\nimport \"../../../../../config/index.js\";\nimport { useFetchInfinityCommentList } from \"../../../../../hooks/fetchers/useFetchPaginatedCommentList.js\";\nimport \"../../../../../apis/taste-sharing/TasteSharingApiService.js\";\nimport \"react\";\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\";\nconst CommentList = ({\n  page,\n  size,\n  onCommentFetched\n}) => {\n  const {\n    onSiteContentId\n  } = useCommentInfoContext();\n  const {\n    data: commentList\n  } = useFetchInfinityCommentList({\n    onSiteContentId,\n    page,\n    size,\n    onSuccess: (data) => {\n      const totalCount = (data == null ? void 0 : data.totalCount) ?? 0;\n      onCommentFetched == null ? void 0 : onCommentFetched(totalCount);\n    }\n  });\n  if (!commentList) {\n    return null;\n  }\n  const {\n    resultList\n  } = commentList;\n  return /* @__PURE__ */ jsx(\"ul\", { style: {\n    margin: 0,\n    padding: 0\n  }, children: resultList.map((comment) => {\n    return /* @__PURE__ */ jsx(CommentItem, { value: comment }, comment.id);\n  }) });\n};\nexport {\n  CommentList\n};\n","const PAGINATION_PARAMS = {\n  PAGE: 1,\n  SIZE: 20\n};\nexport {\n  PAGINATION_PARAMS\n};\n","(function() {\n  \"use strict\";\n  try {\n    if (typeof document != \"undefined\") {\n      var elementStyle = document.createElement(\"style\");\n      elementStyle.appendChild(document.createTextNode(\"._readMoreButtonWrapper_1fnuh_1 {\\n  display: flex;\\n  justify-content: center;\\n  align-items: flex-end;\\n\\n  height: 68px;\\n}\\n\\n._totalCount_1fnuh_9 {\\n  padding: 12px 0 15px;\\n\\n  font-weight: 600;\\n  font-size: 15px;\\n  color: '#303033';\\n}\\n\\n@media (max-width: 540px) {\\n  ._readMoreButtonWrapper_1fnuh_1 {\\n    height: 55px;\\n  }\\n\\n  ._totalCount_1fnuh_9 {\\n    padding: 0 0 15px 20px;\\n  }\\n\\n  ._bottomLine_1fnuh_26 {\\n    height: 1px;\\n\\n    margin: 0 20px;\\n    padding: 0;\\n\\n    border: 0;\\n    background-color: #d4d4d4;\\n  }\\n}\"));\n      document.head.appendChild(elementStyle);\n    }\n  } catch (e) {\n    console.error(\"vite-plugin-css-injected-by-js\", e);\n  }\n})();\nconst readMoreButtonWrapper = \"_readMoreButtonWrapper_1fnuh_1\";\nconst totalCount = \"_totalCount_1fnuh_9\";\nconst bottomLine = \"_bottomLine_1fnuh_26\";\nconst styles = {\n  readMoreButtonWrapper,\n  totalCount,\n  bottomLine\n};\nexport {\n  bottomLine,\n  styles as default,\n  readMoreButtonWrapper,\n  totalCount\n};\n","import { useAnalytics } from \"../../../../hooks/analytics/useAnalytics.js\";\nimport { useContentStore } from \"../../../../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 { isContentOrigin, parsePathname } from \"../../../../utils/location.js\";\nconst createReviewListEventProperties = () => {\n  const {\n    summary\n  } = useContentStore.getState();\n  return {\n    content_no: summary.contentId,\n    curr_screen: \"FRAMER\",\n    content_format: \"FRAMER\",\n    content_path: parsePathname()\n  };\n};\nconst useTrackViewReviewList = () => {\n  const {\n    trackFirebase\n  } = useAnalytics();\n  const trackViewReviewList = (reviewCount) => () => {\n    if (!isContentOrigin()) {\n      return;\n    }\n    const properties = {\n      ...createReviewListEventProperties(),\n      review_count: `${reviewCount}`\n    };\n    trackFirebase(\"view_review_list\", properties);\n  };\n  return {\n    trackViewReviewList\n  };\n};\nexport {\n  useTrackViewReviewList\n};\n","import { jsxs, jsx, Fragment } from \"react/jsx-runtime\";\nimport { useState } from \"react\";\nimport { ReadMoreButton } from \"./ReadMoreButton/ReadMoreButton.js\";\nimport { CommentList } from \"./CommentList/CommentList.js\";\nimport { PAGINATION_PARAMS } from \"../CommentSection.constants.js\";\nimport styles from \"./CommentCollection.module.css.js\";\nimport { Intersection } from \"../../../@shared/Intersection/Intersection.js\";\nimport \"react-dom\";\nimport \"../../../@shared/Icon/Icon.js\";\nimport { useTrackViewReviewList } from \"./CommentCollection.hooks.js\";\nconst VOID_VALUE = 0;\nconst CommentCollection = () => {\n  const [page, setPage] = useState(PAGINATION_PARAMS.PAGE);\n  const [totalCount, setTotalCount] = useState(0);\n  const pages = new Array(page).fill(VOID_VALUE);\n  const handleClick = () => {\n    setPage((prev) => prev + 1);\n  };\n  const handleCommentFetch = (count) => {\n    setTotalCount(count);\n  };\n  const hasNextPage = page * PAGINATION_PARAMS.SIZE < totalCount;\n  const {\n    trackViewReviewList\n  } = useTrackViewReviewList();\n  return /* @__PURE__ */ jsxs(\"div\", { style: {\n    width: \"100%\",\n    maxWidth: \"100vw\"\n  }, children: [\n    /* @__PURE__ */ jsx(Intersection, { onView: trackViewReviewList(totalCount) }),\n    totalCount ? /* @__PURE__ */ jsxs(Fragment, { children: [\n      /* @__PURE__ */ jsx(\"p\", { className: styles.totalCount, children: `댓글 ${totalCount}` }),\n      /* @__PURE__ */ jsx(\"hr\", { className: styles.bottomLine })\n    ] }) : null,\n    pages.map((_, index) => /* @__PURE__ */ jsx(CommentList, { page: index + 1, size: PAGINATION_PARAMS.SIZE, onCommentFetched: handleCommentFetch }, index)),\n    hasNextPage ? /* @__PURE__ */ jsx(\"div\", { className: styles.readMoreButtonWrapper, children: /* @__PURE__ */ jsx(ReadMoreButton, { onClick: handleClick }) }) : null\n  ] });\n};\nexport {\n  CommentCollection\n};\n","(function() {\n  \"use strict\";\n  try {\n    if (typeof document != \"undefined\") {\n      var elementStyle = document.createElement(\"style\");\n      elementStyle.appendChild(document.createTextNode(\"._container_9mbm4_1 {\\n  font-family:\\n    'Pretendard Variable',\\n    Pretendard,\\n    -apple-system,\\n    BlinkMacSystemFont,\\n    system-ui,\\n    Roboto,\\n    'Helvetica Neue',\\n    'Segoe UI',\\n    'Apple SD Gothic Neo',\\n    'Noto Sans KR',\\n    'Malgun Gothic',\\n    'Apple Color Emoji',\\n    'Segoe UI Emoji',\\n    'Segoe UI Symbol',\\n    sans-serif;\\n}\\n\\n._contentGuide_9mbm4_20[data-layout='margin'] {\\n  padding-right: 20px;\\n  padding-left: 20px;\\n}\\n\\n@media (max-width: 540px) {\\n  ._contentGuide_9mbm4_20[data-layout='responsive'] {\\n    padding-right: 20px;\\n    padding-left: 20px;\\n  }\\n}\"));\n      document.head.appendChild(elementStyle);\n    }\n  } catch (e) {\n    console.error(\"vite-plugin-css-injected-by-js\", e);\n  }\n})();\nconst container = \"_container_9mbm4_1\";\nconst contentGuide = \"_contentGuide_9mbm4_20\";\nconst styles = {\n  container,\n  contentGuide\n};\nexport {\n  container,\n  contentGuide,\n  styles as default\n};\n","import { jsx, jsxs } from \"react/jsx-runtime\";\nimport { CommentForm } from \"./CommentForm/CommentForm.js\";\nimport { CommentHeader } from \"./CommentHeader/CommentHeader.js\";\nimport { CommentCollection } from \"./CommentCollection/CommentCollection.js\";\nimport styles from \"./CommentSection.module.css.js\";\nimport { CommentInfoProvider } from \"./CommentInfoProvider/CommentInfoProvider.js\";\nimport \"react\";\nimport { useOnsiteContentId } from \"./CommentSection.hooks.js\";\nconst defaultDateTime = {\n  hours: 0,\n  minutes: 0\n};\nconst CommentSection = ({\n  style,\n  layoutOption = \"responsive\",\n  ...restProps\n}) => {\n  const onSiteContentId = useOnsiteContentId();\n  const commentInfo = {\n    onSiteContentId: `${onSiteContentId ?? \"\"}`,\n    title: restProps.title ?? \"\",\n    description: restProps.description ?? \"\",\n    eventStartAt: restProps.eventStartAt ?? defaultDateTime,\n    eventEndAt: restProps.eventEndAt ?? defaultDateTime\n  };\n  return /* @__PURE__ */ jsx(\"div\", { className: styles.container, style: {\n    ...style,\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"100%\"\n  }, children: /* @__PURE__ */ jsxs(CommentInfoProvider, { ...commentInfo, children: [\n    /* @__PURE__ */ jsxs(\"div\", { className: styles.contentGuide, \"data-layout\": layoutOption, children: [\n      /* @__PURE__ */ jsx(CommentHeader, { layout: layoutOption }),\n      /* @__PURE__ */ jsx(CommentForm, {})\n    ] }),\n    /* @__PURE__ */ jsx(CommentCollection, {})\n  ] }) });\n};\nexport {\n  CommentSection\n};\n","import { CommentSection } from \"./CommentSection.js\";\nexport {\n  CommentSection\n};\n","import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{CommentSection as BaseComponentSection}from\"https://asset.29cm.co.kr/contents/framer/components/systems/CommentSection/index.js\";/**\n *  @framerDisableUnlink\n */export default function CommentSection({toggleDevControl,...props}){return /*#__PURE__*/_jsx(BaseComponentSection,{...props,style:{backgroundColor:\"#ffffff\"}});}addPropertyControls(CommentSection,{title:{type:ControlType.String,description:\"댓글 이벤트 제목\",defaultValue:\"댓글 이벤트 제목을 입력해 주세요\",displayTextArea:true},description:{type:ControlType.String,description:\"댓글 이벤트 상세 설명\",defaultValue:\"댓글 이벤트 상세 설명을 입력해 주세요\",displayTextArea:true},eventStartAt:{type:ControlType.Object,description:\"댓글 이벤트 시작일시\",controls:{date:{type:ControlType.Date,defaultValue:new Date,description:\"날짜\"},hours:{type:ControlType.Number,defaultValue:0,min:0,max:23,unit:\"시\",step:1,displayStepper:true,description:\"시\"},minutes:{type:ControlType.Number,defaultValue:0,min:0,max:59,unit:\"분\",step:1,displayStepper:true,description:\"분\"}}},eventEndAt:{type:ControlType.Object,description:\"댓글 이벤트 종료일시\",controls:{date:{type:ControlType.Date,defaultValue:new Date,description:\"날짜\"},hours:{type:ControlType.Number,defaultValue:0,min:0,max:23,unit:\"시\",step:1,displayStepper:true,description:\"시\"},minutes:{type:ControlType.Number,defaultValue:0,min:0,max:59,unit:\"분\",step:1,displayStepper:true,description:\"분\"}}},layoutOption:{type:ControlType.Enum,defaultValue:\"responsive\",options:[\"responsive\",\"full\",\"margin\"],optionTitles:[\"반응형\",\"풀\",\"마진\"]}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CommentSection\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CommentSection.map","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","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 { 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  ...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: /* @__PURE__ */ jsx(ProductRank, { hidden: hideBarTypeRank, position, children: /* @__PURE__ */ jsx(ProductCardSkeleton, { theme, ...card, style: rest.style }) }), 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","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","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","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","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 { 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=\"ProductsModule\";export default ProductsModule;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ProductsModule\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ProductsModule.map","var ScheduleType = /* @__PURE__ */ ((ScheduleType2) => {\n  ScheduleType2[ScheduleType2[\"MANUAL\"] = 0] = \"MANUAL\";\n  ScheduleType2[ScheduleType2[\"REPEAT\"] = 1] = \"REPEAT\";\n  return ScheduleType2;\n})(ScheduleType || {});\nexport {\n  ScheduleType\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 { createKRTimeZoneDate } from \"../../../utils/createUTCDate.js\";\nimport { ScheduleType } from \"./Schedulable.types.js\";\nimport { isAbove, composeFramerDateTime } from \"../../../utils/date.js\";\nimport { isWithinInterval } from \"../../../node_modules/date-fns/isWithinInterval.js\";\nimport { differenceInCalendarDays } from \"../../../node_modules/date-fns/differenceInCalendarDays.js\";\nconst findCurrentSchedule = (schedules) => {\n  const now = createKRTimeZoneDate();\n  return schedules.find((schedule, index) => {\n    const {\n      scheduledAt\n    } = schedule;\n    const nextSchedule = schedules[index + 1];\n    const nextScheduledAt = (nextSchedule == null ? void 0 : nextSchedule.scheduledAt) ? nextSchedule.scheduledAt : null;\n    const hasNextSchedule = nextScheduledAt != null;\n    const isLast = !hasNextSchedule && isAbove(now, scheduledAt);\n    const isWithin = hasNextSchedule && isWithinInterval(now, {\n      start: scheduledAt,\n      end: nextScheduledAt\n    });\n    return isLast || isWithin;\n  });\n};\nconst toSchedules = (scheduleType, manualSchedules, repeatSchedules) => {\n  const schedules = [];\n  switch (scheduleType) {\n    case ScheduleType.MANUAL:\n      schedules.push(...convertManualSchedulesToSchedules(manualSchedules));\n      break;\n    case ScheduleType.REPEAT:\n      schedules.push(...convertRepeatSchedulesToSchedules(repeatSchedules));\n      break;\n  }\n  return sortSchedulesAscending(schedules);\n};\nconst convertManualSchedulesToSchedules = (manualSchedules) => {\n  return manualSchedules.map(({\n    scheduledAt,\n    sequence\n  }) => ({\n    scheduledAt: composeFramerDateTime(scheduledAt),\n    sequence\n  }));\n};\nconst convertRepeatSchedulesToSchedules = (repeatSchedules) => {\n  const isMultiple = repeatSchedules.length > 1;\n  return repeatSchedules.flatMap((repeatSchedule, repeatScheduleIndex) => {\n    const {\n      startAt,\n      endAt,\n      repeatAt\n    } = repeatSchedule;\n    const diff = differenceInCalendarDays(endAt, startAt);\n    return Array.from({\n      length: diff + 1\n    }, (_, index) => {\n      const date = createKRTimeZoneDate(startAt);\n      const {\n        hours,\n        minutes,\n        seconds\n      } = repeatAt;\n      date.setDate(date.getDate() + index);\n      date.setHours(hours, minutes, seconds);\n      return {\n        scheduledAt: date,\n        sequence: (isMultiple ? repeatScheduleIndex : index) + 1\n      };\n    });\n  });\n};\nconst sortSchedulesAscending = (schedules) => {\n  return [...schedules].sort((x, y) => x.scheduledAt.getTime() - y.scheduledAt.getTime());\n};\nexport {\n  findCurrentSchedule,\n  toSchedules\n};\n","import { useMemo, useState } from \"react\";\nimport { useVisibilityAwareInterval } from \"../../../hooks/useVisibilityAwareInterval.js\";\nimport { toSchedules, findCurrentSchedule } from \"./Schedulable.utils.js\";\nconst MS_IN_SECOND = 1e3;\nconst useCurrentSchedule = (scheduleType, manualSchedules, repeatSchedules) => {\n  const schedules = useMemo(() => toSchedules(scheduleType, manualSchedules, repeatSchedules), [scheduleType, manualSchedules, repeatSchedules]);\n  const [schedule, setSchedule] = useState(findCurrentSchedule(schedules));\n  const isLastScheduleReached = useMemo(() => {\n    if (schedules.length === 0) {\n      return true;\n    }\n    const lastSchedule = schedules[schedules.length - 1];\n    const now = /* @__PURE__ */ new Date();\n    return lastSchedule && lastSchedule.scheduledAt.getTime() <= now.getTime();\n  }, [schedules]);\n  useVisibilityAwareInterval(() => {\n    const current = findCurrentSchedule(schedules);\n    const isEquals = (schedule == null ? void 0 : schedule.scheduledAt) === (current == null ? void 0 : current.scheduledAt);\n    if (isEquals) {\n      return;\n    }\n    setSchedule(current);\n  }, isLastScheduleReached ? null : MS_IN_SECOND);\n  return schedule;\n};\nexport {\n  useCurrentSchedule\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { withCSS, addPropertyControls, ControlType } from \"framer\";\nimport { ScheduleType } from \"./Schedulable.types.js\";\nimport { useCurrentSchedule } from \"./Schedulable.hooks.js\";\nimport { Placeholder } from \"../../@shared/Placeholder/Placeholder.js\";\nimport { useIsMounted } from \"../../../hooks/useIsMounted.js\";\nconst COMPONENT_NAME = \"schedulable\";\nconst css = [`\n    .${COMPONENT_NAME}-container {\n      width: 100%;\n      height: auto;\n    }\n  `, `\n    .${COMPONENT_NAME}-container > div {\n      width: 100% !important;\n    }\n  `];\nconst Schedulable = withCSS(({\n  scheduleType,\n  schedules,\n  repeatSchedules,\n  components\n}) => {\n  const schedule = useCurrentSchedule(scheduleType, schedules, repeatSchedules);\n  const isMounted = useIsMounted();\n  const hasSequence = (schedule == null ? void 0 : schedule.sequence) !== void 0;\n  if (components.length === 0) {\n    return /* @__PURE__ */ jsx(Placeholder, {});\n  }\n  if (!isMounted) {\n    return null;\n  }\n  return /* @__PURE__ */ jsx(\"div\", { className: `${COMPONENT_NAME}-container`, children: hasSequence ? components[schedule.sequence - 1] : null }, `schedulable-${(schedule == null ? void 0 : schedule.sequence) ?? 0}`);\n}, css);\naddPropertyControls(Schedulable, {\n  scheduleType: {\n    type: ControlType.Enum,\n    title: \"노출 예약 유형\",\n    options: [ScheduleType.MANUAL, ScheduleType.REPEAT],\n    optionTitles: [\"수동\", \"반복\"],\n    displaySegmentedControl: true\n  },\n  schedules: {\n    hidden: ({\n      scheduleType\n    }) => scheduleType !== ScheduleType.MANUAL,\n    title: \"수동 노출 일정 목록\",\n    type: ControlType.Array,\n    control: {\n      title: \"날짜 및 요소 번호\",\n      type: ControlType.Object,\n      controls: {\n        scheduledAt: {\n          title: \"요소 노출 시작일시\",\n          type: ControlType.Object,\n          controls: {\n            date: {\n              type: ControlType.Date,\n              title: \"날짜\",\n              defaultValue: (/* @__PURE__ */ new Date()).toString()\n            },\n            hours: {\n              type: ControlType.Number,\n              title: \"시\",\n              description: \"0 ~ 23시 기준\",\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        sequence: {\n          title: \"요소 번호\",\n          type: ControlType.Number,\n          defaultValue: 1,\n          unit: \"번째\",\n          min: 1,\n          displayStepper: true\n        }\n      }\n    }\n  },\n  repeatSchedules: {\n    hidden: ({\n      scheduleType\n    }) => scheduleType !== ScheduleType.REPEAT,\n    type: ControlType.Array,\n    title: \"반복 노출 일정 목록\",\n    description: \"하나의 일정만 입력한 경우 - 하나의 일정에 따라 요소들이 반복됩니다.\\nex. 일정 A 에 따라 요소 X, Y 반복\\n\\n여러 일정을 입력한 경우 - 여러 개의 일정에 따라 요소들이 각각 반복됩니다.\\nex. 일정 A 에 요소 X, 일정 B 에 요소 Y 반복\",\n    control: {\n      type: ControlType.Object,\n      title: \"반복 일정\",\n      controls: {\n        startAt: {\n          type: ControlType.Date,\n          title: \"시작일\",\n          description: \"반복 일정이 시작되는 날짜를 입력합니다.\",\n          defaultValue: (/* @__PURE__ */ new Date()).toString()\n        },\n        endAt: {\n          type: ControlType.Date,\n          title: \"종료일\",\n          description: \"반복 일정이 종료되는 날짜를 입력합니다.\",\n          defaultValue: (/* @__PURE__ */ new Date()).toString()\n        },\n        repeatAt: {\n          type: ControlType.Object,\n          title: \"반복 시작 시간\",\n          description: \"일정이 매일 반복되는 시간을 입력합니다.\\nex) 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  components: {\n    title: \"요소 목록\",\n    description: \"최상단부터 1번째로 시작\",\n    type: ControlType.Array,\n    control: {\n      title: \"요소\",\n      type: ControlType.ComponentInstance\n    }\n  }\n});\nexport {\n  Schedulable\n};\n","import{Schedulable}from\"https://asset.29cm.co.kr/contents/framer/components/primitives/Schedulable/Schedulable.js\";Schedulable.displayName=\"Schedulable\";/**\n * @framerDisableUnlink\n */export default Schedulable;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Schedulable\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Schedulable.map","import{Countdown}from\"https://asset.29cm.co.kr/contents/framer/components/systems/Countdown/Countdown.js\";Countdown.displayName=\"Countdown\";/**\n * @framerDisableUnlink\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default Countdown;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Countdown\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerDisableUnlink\":\"* @framerSupportedLayoutWidth auto\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Countdown.map","// Generated by Framer (808fccf)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,RichText,SmartComponentScopedContainer,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import Schedulable from\"https://framerusercontent.com/modules/bv2yzxT3iEOjAMleVPGP/8UbCcuQA0I1fhMsF0CR6/Schedulable.js\";import Countdown from\"https://framerusercontent.com/modules/MYr1AFTnHiOBXB2sbTDs/T8xt0iX6DU3QCLROaNw1/Countdown.js\";const CountdownFonts=getFonts(Countdown);const SchedulableFonts=getFonts(Schedulable);const cycleOrder=[\"InbSkRciy\",\"bGyzOaTLX\",\"cZmw3YLA8\",\"fld32NRlk\"];const serializationHash=\"framer-yGcOx\";const variantClassNames={bGyzOaTLX:\"framer-v-5l3ake\",cZmw3YLA8:\"framer-v-1m3syqy\",fld32NRlk:\"framer-v-15frcss\",InbSkRciy:\"framer-v-10txde5\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableVariantMap={\"Mo-Dark\":\"bGyzOaTLX\",\"Mo-Light\":\"InbSkRciy\",\"Web-Dark\":\"fld32NRlk\",\"Web-Light\":\"cZmw3YLA8\"};const getProps=({_,_1,_2,_3,_4,_5,_6,_7,_8,height,id,width,...props})=>{return{...props,A65qOvpHN:_??props.A65qOvpHN??\"Ep.30\",cvRPfO_oF:_7??props.cvRPfO_oF??\"rgb(255, 255, 255)\",E_bCBBmYS:_3??props.E_bCBBmYS??true,i6ShT9Z79:_5??props.i6ShT9Z79??true,I750mv33P:_4??props.I750mv33P??\"한겨울 추위를 완벽하게 막아줄 단 하나의 아이템, 헤비 아우터. 패딩부터 퍼, 무스탕까지 최대 57% 혜택으로 겨울 스타일에 자유를 더하세요.\",j6wLiMkYg:_6??props.j6wLiMkYg??\"2025-03-11T00:00:00.000Z\",jq1oSTO8b:_1??props.jq1oSTO8b??true,L0bgxUyiY:_2??props.L0bgxUyiY??\"한겨울에 맞설 헤비 아우터\",qIYt8wsAH:_8??props.qIYt8wsAH??true,variant:humanReadableVariantMap[props.variant]??props.variant??\"InbSkRciy\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,A65qOvpHN,jq1oSTO8b,L0bgxUyiY,E_bCBBmYS,I750mv33P,i6ShT9Z79,j6wLiMkYg,cvRPfO_oF,qIYt8wsAH,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"InbSkRciy\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-10txde5\",className,classNames),\"data-framer-name\":\"Mo-Light\",layoutDependency:layoutDependency,layoutId:\"InbSkRciy\",ref:refBinding,style:{backgroundColor:cvRPfO_oF,...style},...addPropertyOverrides({bGyzOaTLX:{\"data-framer-name\":\"Mo-Dark\"},cZmw3YLA8:{\"data-framer-name\":\"Web-Light\"},fld32NRlk:{\"data-framer-name\":\"Web-Dark\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-ghv9t1\",\"data-framer-name\":\"IntroTxt\",layoutDependency:layoutDependency,layoutId:\"cPMtu9WK2\",children:[jq1oSTO8b&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-19k7mu9\",\"data-framer-name\":\"IntroHeader\",layoutDependency:layoutDependency,layoutId:\"ICr5IlSiM\",children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h1,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgQm9sZA==\",\"--framer-font-family\":'\"Pretendard Bold\", \"Pretendard Bold Placeholder\", sans-serif',\"--framer-font-size\":\"14px\",\"--framer-font-weight\":\"700\",\"--framer-letter-spacing\":\"0.05em\",\"--framer-line-height\":\"1em\",\"--framer-text-alignment\":\"center\"},children:\"Ep.30\"})}),className:\"framer-1ysixwg\",fonts:[\"CUSTOM;Pretendard Bold\"],layoutDependency:layoutDependency,layoutId:\"fGi4M3wF4\",style:{\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:A65qOvpHN,variants:{bGyzOaTLX:{\"--extracted-gdpscs\":\"rgb(255, 255, 255)\"},fld32NRlk:{\"--extracted-gdpscs\":\"rgb(255, 255, 255)\"}},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({bGyzOaTLX:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h1,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgQm9sZA==\",\"--framer-font-family\":'\"Pretendard Bold\", \"Pretendard Bold Placeholder\", sans-serif',\"--framer-font-size\":\"14px\",\"--framer-font-weight\":\"700\",\"--framer-letter-spacing\":\"0.05em\",\"--framer-line-height\":\"1em\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-gdpscs, rgb(255, 255, 255))\"},children:\"Ep.30\"})})},fld32NRlk:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h1,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgQm9sZA==\",\"--framer-font-family\":'\"Pretendard Bold\", \"Pretendard Bold Placeholder\", sans-serif',\"--framer-font-size\":\"14px\",\"--framer-font-weight\":\"700\",\"--framer-letter-spacing\":\"0.05em\",\"--framer-line-height\":\"1em\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-gdpscs, rgb(255, 255, 255))\"},children:\"Ep.30\"})})}},baseVariant,gestureVariant)})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1hfajhs\",\"data-framer-name\":\"IntroDescription\",layoutDependency:layoutDependency,layoutId:\"YvpveF1Ia\",children:[E_bCBBmYS&&/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgU2VtaUJvbGQ=\",\"--framer-font-family\":'\"Pretendard SemiBold\", \"Pretendard SemiBold Placeholder\", sans-serif',\"--framer-font-size\":\"22px\",\"--framer-font-weight\":\"600\",\"--framer-line-height\":\"1.3em\",\"--framer-text-alignment\":\"center\"},children:\"한겨울에 맞설 헤비 아우터\"})}),className:\"framer-32cc3l\",fonts:[\"CUSTOM;Pretendard SemiBold\"],layoutDependency:layoutDependency,layoutId:\"f7reQ5VUf\",style:{\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:L0bgxUyiY,variants:{bGyzOaTLX:{\"--extracted-r6o4lv\":\"rgb(255, 255, 255)\"},fld32NRlk:{\"--extracted-r6o4lv\":\"rgb(255, 255, 255)\"}},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({bGyzOaTLX:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgU2VtaUJvbGQ=\",\"--framer-font-family\":'\"Pretendard SemiBold\", \"Pretendard SemiBold Placeholder\", sans-serif',\"--framer-font-size\":\"22px\",\"--framer-font-weight\":\"600\",\"--framer-line-height\":\"1.3em\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(255, 255, 255))\"},children:\"한겨울에 맞설 헤비 아우터\"})})},cZmw3YLA8:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgU2VtaUJvbGQ=\",\"--framer-font-family\":'\"Pretendard SemiBold\", \"Pretendard SemiBold Placeholder\", sans-serif',\"--framer-font-size\":\"28px\",\"--framer-font-weight\":\"600\",\"--framer-line-height\":\"1.3em\",\"--framer-text-alignment\":\"center\"},children:\"한겨울에 맞설 헤비 아우터\"})})},fld32NRlk:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgU2VtaUJvbGQ=\",\"--framer-font-family\":'\"Pretendard SemiBold\", \"Pretendard SemiBold Placeholder\", sans-serif',\"--framer-font-size\":\"28px\",\"--framer-font-weight\":\"600\",\"--framer-line-height\":\"1.3em\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(255, 255, 255))\"},children:\"한겨울에 맞설 헤비 아우터\"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgUmVndWxhcg==\",\"--framer-font-family\":'\"Pretendard Regular\", \"Pretendard Regular Placeholder\", sans-serif',\"--framer-line-height\":\"1.6em\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgba(0, 0, 0, 0.8))\",\"--framer-text-transform\":\"inherit\"},children:\"한겨울 추위를 완벽하게 막아줄 단 하나의 아이템, 헤비 아우터. 패딩부터 퍼, 무스탕까지 최대 57% 혜택으로 겨울 스타일에 자유를 더하세요.\"})}),className:\"framer-1dlpiuo\",fonts:[\"CUSTOM;Pretendard Regular\"],layoutDependency:layoutDependency,layoutId:\"UK3hlMHoJ\",style:{\"--extracted-r6o4lv\":\"rgba(0, 0, 0, 0.8)\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:I750mv33P,variants:{bGyzOaTLX:{\"--extracted-r6o4lv\":\"rgba(255, 255, 255, 0.8)\"},fld32NRlk:{\"--extracted-r6o4lv\":\"rgba(255, 255, 255, 0.8)\"}},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({bGyzOaTLX:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgUmVndWxhcg==\",\"--framer-font-family\":'\"Pretendard Regular\", \"Pretendard Regular Placeholder\", sans-serif',\"--framer-line-height\":\"1.6em\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgba(255, 255, 255, 0.8))\",\"--framer-text-transform\":\"inherit\"},children:\"한겨울 추위를 완벽하게 막아줄 단 하나의 아이템, 헤비 아우터. 패딩부터 퍼, 무스탕까지 최대 57% 혜택으로 겨울 스타일에 자유를 더하세요.\"})})},cZmw3YLA8:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgUmVndWxhcg==\",\"--framer-font-family\":'\"Pretendard Regular\", \"Pretendard Regular Placeholder\", sans-serif',\"--framer-font-size\":\"18px\",\"--framer-line-height\":\"1.6em\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgba(0, 0, 0, 0.8))\",\"--framer-text-transform\":\"inherit\"},children:\"한겨울 추위를 완벽하게 막아줄 단 하나의 아이템, 헤비 아우터. 패딩부터 퍼, 무스탕까지 최대 57% 혜택으로 겨울 스타일에 자유를 더하세요.\"})})},fld32NRlk:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgUmVndWxhcg==\",\"--framer-font-family\":'\"Pretendard Regular\", \"Pretendard Regular Placeholder\", sans-serif',\"--framer-font-size\":\"18px\",\"--framer-line-height\":\"1.6em\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgba(255, 255, 255, 0.8))\",\"--framer-text-transform\":\"inherit\"},children:\"한겨울 추위를 완벽하게 막아줄 단 하나의 아이템, 헤비 아우터. 패딩부터 퍼, 무스탕까지 최대 57% 혜택으로 겨울 스타일에 자유를 더하세요.\"})})}},baseVariant,gestureVariant)})]})]}),i6ShT9Z79&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1e41ywk-container\",\"data-framer-name\":\"SchedulableDatePC\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"s1KkadnSE-container\",name:\"SchedulableDatePC\",nodeId:\"s1KkadnSE\",rendersWithMotion:true,scopeId:\"Tyu7EX3in\",children:/*#__PURE__*/_jsx(Schedulable,{components:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-19k5oez\",\"data-framer-name\":\"ClosePC\",layoutDependency:layoutDependency,layoutId:\"jE4vZfLMe\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h4,{style:{\"--font-selector\":\"Q1VTVE9NO1ByZXRlbmRhcmQgQm9sZA==\",\"--framer-font-family\":'\"Pretendard Bold\", \"Pretendard Bold Placeholder\", sans-serif',\"--framer-font-size\":\"14px\",\"--framer-font-weight\":\"700\",\"--framer-line-height\":\"1.4em\",\"--framer-text-color\":\"var(--extracted-1eung3n, var(--token-b1ac08ad-7b4b-4c67-863f-b6610ebf6923, rgb(196, 196, 196)))\"},children:\"이벤트 종료\"})}),className:\"framer-njnrdf\",fonts:[\"CUSTOM;Pretendard Bold\"],layoutDependency:layoutDependency,layoutId:\"tNeTnCqFO\",style:{\"--extracted-1eung3n\":\"var(--token-b1ac08ad-7b4b-4c67-863f-b6610ebf6923, rgb(196, 196, 196))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-sshjpi-container\",inComponentSlot:true,isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"CGCD0e4rL-container\",nodeId:\"CGCD0e4rL\",rendersWithMotion:true,scopeId:\"Tyu7EX3in\",children:/*#__PURE__*/_jsx(Countdown,{color:\"var(--token-a0534043-0dde-4df4-ae78-dd811455e368, rgb(160, 160, 160))\",dateDisplayFormat:\"'D'-D\",fontSize:14,height:\"100%\",id:\"CGCD0e4rL\",layoutId:\"CGCD0e4rL\",targetDateString:j6wLiMkYg,targetTimeString:\"23:59:59\",timeDisplayFormat:\"none\",width:\"100%\"})})})]})],height:\"100%\",id:\"s1KkadnSE\",layoutId:\"s1KkadnSE\",name:\"SchedulableDatePC\",repeatSchedules:[],schedules:[{scheduledAt:{date:\"2024-02-23T00:00:00.000Z\",hours:10,minutes:0,seconds:0},sequence:1}],scheduleType:0,width:\"100%\"})})}),qIYt8wsAH&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1ru61gx\",layoutDependency:layoutDependency,layoutId:\"QObkLMvPI\"})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-yGcOx.framer-mfh7yw, .framer-yGcOx .framer-mfh7yw { display: block; }\",\".framer-yGcOx.framer-10txde5 { align-content: center; align-items: center; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 16px; height: min-content; justify-content: center; overflow: hidden; padding: 56px 20px 32px 20px; position: relative; width: 335px; }\",\".framer-yGcOx .framer-ghv9t1 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 24px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-yGcOx .framer-19k7mu9 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-yGcOx .framer-1ysixwg { flex: none; height: auto; overflow: visible; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\".framer-yGcOx .framer-1hfajhs { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: 100%; }\",\".framer-yGcOx .framer-32cc3l, .framer-yGcOx .framer-1dlpiuo { flex: none; height: auto; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\".framer-yGcOx .framer-1e41ywk-container, .framer-yGcOx .framer-sshjpi-container { flex: none; height: auto; position: relative; width: auto; }\",\".framer-yGcOx .framer-19k5oez { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 5px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: min-content; }\",\".framer-yGcOx .framer-njnrdf { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-yGcOx .framer-1ru61gx { flex: none; height: 8px; overflow: hidden; position: relative; width: 100%; }\",\".framer-yGcOx.framer-v-1m3syqy.framer-10txde5 { padding: 72px 50px 32px 50px; width: 1180px; }\",\".framer-yGcOx.framer-v-1m3syqy .framer-1ru61gx, .framer-yGcOx.framer-v-15frcss .framer-1ru61gx { height: 24px; }\",\".framer-yGcOx.framer-v-15frcss.framer-10txde5 { padding: 72px 20px 32px 20px; width: 1180px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 299\n * @framerIntrinsicWidth 335\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"bGyzOaTLX\":{\"layout\":[\"fixed\",\"auto\"]},\"cZmw3YLA8\":{\"layout\":[\"fixed\",\"auto\"]},\"fld32NRlk\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"A65qOvpHN\":\"_\",\"jq1oSTO8b\":\"_1\",\"L0bgxUyiY\":\"_2\",\"E_bCBBmYS\":\"_3\",\"I750mv33P\":\"_4\",\"i6ShT9Z79\":\"_5\",\"j6wLiMkYg\":\"_6\",\"cvRPfO_oF\":\"_7\",\"qIYt8wsAH\":\"_8\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerTyu7EX3in=withCSS(Component,css,\"framer-yGcOx\");export default FramerTyu7EX3in;FramerTyu7EX3in.displayName=\"[Smart]Intro\";FramerTyu7EX3in.defaultProps={height:299,width:335};addPropertyControls(FramerTyu7EX3in,{variant:{options:[\"InbSkRciy\",\"bGyzOaTLX\",\"cZmw3YLA8\",\"fld32NRlk\"],optionTitles:[\"Mo-Light\",\"Mo-Dark\",\"Web-Light\",\"Web-Dark\"],title:\"Variant\",type:ControlType.Enum},A65qOvpHN:{defaultValue:\"Ep.30\",displayTextArea:false,title:\"에피소드\",type:ControlType.String},jq1oSTO8b:{defaultValue:true,title:\"에피소드 노출\",type:ControlType.Boolean},L0bgxUyiY:{defaultValue:\"한겨울에 맞설 헤비 아우터\",description:\"\",displayTextArea:true,title:\"타이틀\",type:ControlType.String},E_bCBBmYS:{defaultValue:true,title:\"타이틀 노출\",type:ControlType.Boolean},I750mv33P:{defaultValue:\"한겨울 추위를 완벽하게 막아줄 단 하나의 아이템, 헤비 아우터. 패딩부터 퍼, 무스탕까지 최대 57% 혜택으로 겨울 스타일에 자유를 더하세요.\",displayTextArea:true,title:\"텍스트\",type:ControlType.String},i6ShT9Z79:{defaultValue:true,title:\"이벤트 종료일\",type:ControlType.Boolean},j6wLiMkYg:{defaultValue:\"2025-03-11T00:00:00.000Z\",title:\"날짜\",type:ControlType.Date},cvRPfO_oF:{defaultValue:\"rgb(255, 255, 255)\",title:\"배경 컬러\",type:ControlType.Color},qIYt8wsAH:{defaultValue:true,title:\"하단패딩\",type:ControlType.Boolean}});addFonts(FramerTyu7EX3in,[{explicitInter:true,fonts:[{cssFamilyName:\"Pretendard Bold\",source:\"custom\",style:\"normal\",uiFamilyName:\"Pretendard\",url:\"https://framerusercontent.com/assets/TDgt4wnSbW6ssMiUHMKSTjZfpQ.woff2\",weight:\"700\"},{cssFamilyName:\"Pretendard SemiBold\",source:\"custom\",style:\"normal\",uiFamilyName:\"Pretendard\",url:\"https://framerusercontent.com/assets/bUf4UcuhtdSAGwhiC3unbHsuLB0.woff2\",weight:\"600\"},{cssFamilyName:\"Pretendard Regular\",source:\"custom\",style:\"normal\",uiFamilyName:\"Pretendard\",url:\"https://framerusercontent.com/assets/t7lebLYx2xwMs9MrDdMh5EKeA.woff2\",weight:\"400\"}]},...CountdownFonts,...SchedulableFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerTyu7EX3in\",\"slots\":[],\"annotations\":{\"framerComponentViewportWidth\":\"true\",\"framerContractVersion\":\"1\",\"framerColorSyntax\":\"true\",\"framerVariables\":\"{\\\"A65qOvpHN\\\":\\\"_\\\",\\\"jq1oSTO8b\\\":\\\"_1\\\",\\\"L0bgxUyiY\\\":\\\"_2\\\",\\\"E_bCBBmYS\\\":\\\"_3\\\",\\\"I750mv33P\\\":\\\"_4\\\",\\\"i6ShT9Z79\\\":\\\"_5\\\",\\\"j6wLiMkYg\\\":\\\"_6\\\",\\\"cvRPfO_oF\\\":\\\"_7\\\",\\\"qIYt8wsAH\\\":\\\"_8\\\"}\",\"framerIntrinsicHeight\":\"299\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicWidth\":\"335\",\"framerAutoSizeImages\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"bGyzOaTLX\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"cZmw3YLA8\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"fld32NRlk\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerDisplayContentsDiv\":\"false\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Tyu7EX3in.map","function addUniqueItem(t,e){-1===t.indexOf(e)&&t.push(e)}function removeItem(t,e){const n=t.indexOf(e);n>-1&&t.splice(n,1)}const clamp=(t,e,n)=>Math.min(Math.max(n,t),e);const t={duration:.3,delay:0,endDelay:0,repeat:0,easing:\"ease\"};const isNumber=t=>\"number\"===typeof t;const isEasingList=t=>Array.isArray(t)&&!isNumber(t[0]);const wrap=(t,e,n)=>{const o=e-t;return((n-t)%o+o)%o+t};function getEasingForSegment(t,e){return isEasingList(t)?t[wrap(0,t.length,e)]:t}const mix=(t,e,n)=>-n*t+n*e+t;const noop=()=>{};const noopReturn=t=>t;const progress=(t,e,n)=>e-t===0?1:(n-t)/(e-t);function fillOffset(t,e){const n=t[t.length-1];for(let o=1;o<=e;o++){const s=progress(0,e,o);t.push(mix(n,1,s))}}function defaultOffset(t){const e=[0];fillOffset(e,t-1);return e}function interpolate(t,e=defaultOffset(t.length),n=noopReturn){const o=t.length;const s=o-e.length;s>0&&fillOffset(e,s);return s=>{let f=0;for(;f<o-2;f++)if(s<e[f+1])break;let r=clamp(0,1,progress(e[f],e[f+1],s));const c=getEasingForSegment(n,f);r=c(r);return mix(t[f],t[f+1],r)}}const isCubicBezier=t=>Array.isArray(t)&&isNumber(t[0]);const isEasingGenerator=t=>\"object\"===typeof t&&Boolean(t.createAnimation);const isFunction=t=>\"function\"===typeof t;const isString=t=>\"string\"===typeof t;const e={ms:t=>1e3*t,s:t=>t/1e3};\n/*\n  Convert velocity into velocity per second\n\n  @param [number]: Unit per frame\n  @param [number]: Frame duration in ms\n*/function velocityPerSecond(t,e){return e?t*(1e3/e):0}export{addUniqueItem,clamp,defaultOffset,t as defaults,fillOffset,getEasingForSegment,interpolate,isCubicBezier,isEasingGenerator,isEasingList,isFunction,isNumber,isString,mix,noop,noopReturn,progress,removeItem,e as time,velocityPerSecond,wrap};\n\n//# sourceMappingURL=index.es.js.map","import{noopReturn as t,clamp as n}from\"@motionone/utils\";const calcBezier=(t,n,e)=>(((1-3*e+3*n)*t+(3*e-6*n))*t+3*n)*t;const e=1e-7;const i=12;function binarySubdivide(t,n,o,r,c){let u;let a;let s=0;do{a=n+(o-n)/2;u=calcBezier(a,r,c)-t;u>0?o=a:n=a}while(Math.abs(u)>e&&++s<i);return a}function cubicBezier(n,e,i,o){if(n===e&&i===o)return t;const getTForX=t=>binarySubdivide(t,0,1,n,i);return t=>0===t||1===t?t:calcBezier(getTForX(t),e,o)}const steps=(t,e=\"end\")=>i=>{i=\"end\"===e?Math.min(i,.999):Math.max(i,.001);const o=i*t;const r=\"end\"===e?Math.floor(o):Math.ceil(o);return n(0,1,r/t)};export{cubicBezier,steps};\n\n//# sourceMappingURL=index.es.js.map","import{noopReturn as t,defaults as i,isEasingGenerator as e,isEasingList as s,interpolate as a}from\"@motionone/utils\";import{cubicBezier as n,steps as r}from\"@motionone/easing\";const o={ease:n(.25,.1,.25,1),\"ease-in\":n(.42,0,1,1),\"ease-in-out\":n(.42,0,.58,1),\"ease-out\":n(0,0,.58,1)};const h=/\\((.*?)\\)/;function getEasingFunction(i){if(\"function\"===typeof i)return i;if(Array.isArray(i))return n(...i);if(o[i])return o[i];if(i.startsWith(\"steps\")){const t=h.exec(i);if(t){const i=t[1].split(\",\");return r(parseFloat(i[0]),i[1].trim())}}return t}class Animation{constructor(n,r=[0,1],{easing:o,duration:h=i.duration,delay:u=i.delay,endDelay:l=i.endDelay,repeat:m=i.repeat,offset:c,direction:p=\"normal\"}={}){this.startTime=null;this.rate=1;this.t=0;this.cancelTimestamp=null;this.easing=t;this.duration=0;this.totalDuration=0;this.repeat=0;this.playState=\"idle\";this.finished=new Promise(((t,i)=>{this.resolve=t;this.reject=i}));o=o||i.easing;if(e(o)){const t=o.createAnimation(r,(()=>\"0\"),true);o=t.easing;void 0!==t.keyframes&&(r=t.keyframes);void 0!==t.duration&&(h=t.duration)}this.repeat=m;this.easing=s(o)?t:getEasingFunction(o);this.updateDuration(h);const d=a(r,c,s(o)?o.map(getEasingFunction):t);this.tick=t=>{var i;u=u;let e=0;e=void 0!==this.pauseTime?this.pauseTime:(t-this.startTime)*this.rate;this.t=e;e/=1e3;e=Math.max(e-u,0);\"finished\"===this.playState&&void 0===this.pauseTime&&(e=this.totalDuration);const s=e/this.duration;let a=Math.floor(s);let r=s%1;!r&&s>=1&&(r=1);1===r&&a--;const o=a%2;(\"reverse\"===p||\"alternate\"===p&&o||\"alternate-reverse\"===p&&!o)&&(r=1-r);const h=e>=this.totalDuration?1:Math.min(r,1);const m=d(this.easing(h));n(m);const c=void 0===this.pauseTime&&(\"finished\"===this.playState||e>=this.totalDuration+l);if(c){this.playState=\"finished\";null===(i=this.resolve)||void 0===i?void 0:i.call(this,m)}else\"idle\"!==this.playState&&(this.frameRequestId=requestAnimationFrame(this.tick))};this.play()}play(){const t=performance.now();this.playState=\"running\";void 0!==this.pauseTime?this.startTime=t-this.pauseTime:this.startTime||(this.startTime=t);this.cancelTimestamp=this.startTime;this.pauseTime=void 0;this.frameRequestId=requestAnimationFrame(this.tick)}pause(){this.playState=\"paused\";this.pauseTime=this.t}finish(){this.playState=\"finished\";this.tick(0)}stop(){var t;this.playState=\"idle\";void 0!==this.frameRequestId&&cancelAnimationFrame(this.frameRequestId);null===(t=this.reject)||void 0===t?void 0:t.call(this,false)}cancel(){this.stop();this.tick(this.cancelTimestamp)}reverse(){this.rate*=-1}commitStyles(){}updateDuration(t){this.duration=t;this.totalDuration=t*(this.repeat+1)}get currentTime(){return this.t}set currentTime(t){void 0!==this.pauseTime||0===this.rate?this.pauseTime=t:this.startTime=performance.now()-t/this.rate}get playbackRate(){return this.rate}set playbackRate(t){this.rate=t}}export{Animation,getEasingFunction};\n\n//# sourceMappingURL=index.es.js.map","var extendStatics=function(e,t){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])};return extendStatics(e,t)};function __extends(e,t){if(\"function\"!==typeof t&&null!==t)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");extendStatics(e,t);function __(){this.constructor=e}e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)}var __assign=function(){__assign=Object.assign||function __assign(e){for(var t,r=1,n=arguments.length;r<n;r++){t=arguments[r];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e};return __assign.apply(this,arguments)};function __rest(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&\"function\"===typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r}function __decorate(e,t,r,n){var o,a=arguments.length,i=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var c=e.length-1;c>=0;c--)(o=e[c])&&(i=(a<3?o(i):a>3?o(t,r,i):o(t,r))||i);return a>3&&i&&Object.defineProperty(t,r,i),i}function __param(e,t){return function(r,n){t(r,n,e)}}function __metadata(e,t){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(e,t)}function __awaiter(e,t,r,n){function adopt(e){return e instanceof r?e:new r((function(t){t(e)}))}return new(r||(r=Promise))((function(r,o){function fulfilled(e){try{step(n.next(e))}catch(e){o(e)}}function rejected(e){try{step(n.throw(e))}catch(e){o(e)}}function step(e){e.done?r(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())}))}function __generator(e,t){var r,n,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:verb(0),throw:verb(1),return:verb(2)},\"function\"===typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function verb(e){return function(t){return step([e,t])}}function step(a){if(r)throw new TypeError(\"Generator is already executing.\");while(i)try{if(r=1,n&&(o=2&a[0]?n.return:a[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,a[1])).done)return o;(n=0,o)&&(a=[2&a[0],o.value]);switch(a[0]){case 0:case 1:o=a;break;case 4:i.label++;return{value:a[1],done:false};case 5:i.label++;n=a[1];a=[0];continue;case 7:a=i.ops.pop();i.trys.pop();continue;default:if(!(o=i.trys,o=o.length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){i.label=a[1];break}if(6===a[0]&&i.label<o[1]){i.label=o[1];o=a;break}if(o&&i.label<o[2]){i.label=o[2];i.ops.push(a);break}o[2]&&i.ops.pop();i.trys.pop();continue}a=t.call(e,i)}catch(e){a=[6,e];n=0}finally{r=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:true}}}var e=Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!(\"get\"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:true,get:function(){return t[r]}});Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r);e[n]=t[r]};function __exportStar(t,r){for(var n in t)\"default\"===n||Object.prototype.hasOwnProperty.call(r,n)||e(r,t,n)}function __values(e){var t=\"function\"===typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&\"number\"===typeof e.length)return{next:function(){e&&n>=e.length&&(e=void 0);return{value:e&&e[n++],done:!e}}};throw new TypeError(t?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function __read(e,t){var r=\"function\"===typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,a=r.call(e),i=[];try{while((void 0===t||t-- >0)&&!(n=a.next()).done)i.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(o)throw o.error}}return i}\n/** @deprecated */function __spread(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(__read(arguments[t]));return e}\n/** @deprecated */function __spreadArrays(){for(var e=0,t=0,r=arguments.length;t<r;t++)e+=arguments[t].length;var n=Array(e),o=0;for(t=0;t<r;t++)for(var a=arguments[t],i=0,c=a.length;i<c;i++,o++)n[o]=a[i];return n}function __spreadArray(e,t,r){if(r||2===arguments.length)for(var n,o=0,a=t.length;o<a;o++)if(n||!(o in t)){n||(n=Array.prototype.slice.call(t,0,o));n[o]=t[o]}return e.concat(n||Array.prototype.slice.call(t))}function __await(e){return this instanceof __await?(this.v=e,this):new __await(e)}function __asyncGenerator(e,t,r){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var n,o=r.apply(e,t||[]),a=[];return n={},verb(\"next\"),verb(\"throw\"),verb(\"return\"),n[Symbol.asyncIterator]=function(){return this},n;function verb(e){o[e]&&(n[e]=function(t){return new Promise((function(r,n){a.push([e,t,r,n])>1||resume(e,t)}))})}function resume(e,t){try{step(o[e](t))}catch(e){settle(a[0][3],e)}}function step(e){e.value instanceof __await?Promise.resolve(e.value.v).then(fulfill,reject):settle(a[0][2],e)}function fulfill(e){resume(\"next\",e)}function reject(e){resume(\"throw\",e)}function settle(e,t){(e(t),a.shift(),a.length)&&resume(a[0][0],a[0][1])}}function __asyncDelegator(e){var t,r;return t={},verb(\"next\"),verb(\"throw\",(function(e){throw e})),verb(\"return\"),t[Symbol.iterator]=function(){return this},t;function verb(n,o){t[n]=e[n]?function(t){return(r=!r)?{value:__await(e[n](t)),done:\"return\"===n}:o?o(t):t}:o}}function __asyncValues(e){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=\"function\"===typeof __values?__values(e):e[Symbol.iterator](),t={},verb(\"next\"),verb(\"throw\"),verb(\"return\"),t[Symbol.asyncIterator]=function(){return this},t);function verb(r){t[r]=e[r]&&function(t){return new Promise((function(n,o){t=e[r](t),settle(n,o,t.done,t.value)}))}}function settle(e,t,r,n){Promise.resolve(n).then((function(t){e({value:t,done:r})}),t)}}function __makeTemplateObject(e,t){Object.defineProperty?Object.defineProperty(e,\"raw\",{value:t}):e.raw=t;return e}var t=Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e.default=t};function __importStar(r){if(r&&r.__esModule)return r;var n={};if(null!=r)for(var o in r)\"default\"!==o&&Object.prototype.hasOwnProperty.call(r,o)&&e(n,r,o);t(n,r);return n}function __importDefault(e){return e&&e.__esModule?e:{default:e}}function __classPrivateFieldGet(e,t,r,n){if(\"a\"===r&&!n)throw new TypeError(\"Private accessor was defined without a getter\");if(\"function\"===typeof t?e!==t||!n:!t.has(e))throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");return\"m\"===r?n:\"a\"===r?n.call(e):n?n.value:t.get(e)}function __classPrivateFieldSet(e,t,r,n,o){if(\"m\"===n)throw new TypeError(\"Private method is not writable\");if(\"a\"===n&&!o)throw new TypeError(\"Private accessor was defined without a setter\");if(\"function\"===typeof t?e!==t||!o:!t.has(e))throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");return\"a\"===n?o.call(e,r):o?o.value=r:t.set(e,r),r}function __classPrivateFieldIn(e,t){if(null===t||\"object\"!==typeof t&&\"function\"!==typeof t)throw new TypeError(\"Cannot use 'in' operator on non-object\");return\"function\"===typeof e?t===e:e.has(t)}export{__assign,__asyncDelegator,__asyncGenerator,__asyncValues,__await,__awaiter,__classPrivateFieldGet,__classPrivateFieldIn,__classPrivateFieldSet,e as __createBinding,__decorate,__exportStar,__extends,__generator,__importDefault,__importStar,__makeTemplateObject,__metadata,__param,__read,__rest,__spread,__spreadArray,__spreadArrays,__values};\n\n//# sourceMappingURL=tslib.es6.js.map","var n={};Object.defineProperty(n,\"__esModule\",{value:true});n.warning=function(){};n.invariant=function(){};const e=n.__esModule,t=n.warning,r=n.invariant;export default n;export{e as __esModule,r as invariant,t as warning};\n\n//# sourceMappingURL=index.js.map","import{velocityPerSecond as e,time as t}from\"@motionone/utils\";const s=5;function calcGeneratorVelocity(t,n,r){const a=Math.max(n-s,0);return e(r-t(a),n-a)}const n={stiffness:100,damping:10,mass:1};const calcDampingRatio=(e=n.stiffness,t=n.damping,s=n.mass)=>t/(2*Math.sqrt(e*s));function hasReachedTarget(e,t,s){return e<t&&s>=t||e>t&&s<=t}const spring=({stiffness:e=n.stiffness,damping:s=n.damping,mass:r=n.mass,from:a=0,to:o=1,velocity:c=0,restSpeed:i=2,restDistance:h=.5}={})=>{c=c?t.s(c):0;const u={done:false,hasReachedTarget:false,current:a,target:o};const d=o-a;const f=Math.sqrt(e/r)/1e3;const l=calcDampingRatio(e,s,r);let g;if(l<1){const e=f*Math.sqrt(1-l*l);g=t=>o-Math.exp(-l*f*t)*((l*f*d-c)/e*Math.sin(e*t)+d*Math.cos(e*t))}else g=e=>o-Math.exp(-f*e)*(d+(f*d-c)*e);return e=>{u.current=g(e);const t=0===e?c:calcGeneratorVelocity(g,e,u.current);const s=Math.abs(t)<=i;const n=Math.abs(o-u.current)<=h;u.done=s&&n;u.hasReachedTarget=hasReachedTarget(a,o,u.current);return u}};const glide=({from:e=0,velocity:s=0,power:n=.8,decay:r=.325,bounceDamping:a,bounceStiffness:o,changeTarget:c,min:i,max:h,restDistance:u=.5,restSpeed:d})=>{r=t.ms(r);const f={hasReachedTarget:false,done:false,current:e,target:e};const isOutOfBounds=e=>void 0!==i&&e<i||void 0!==h&&e>h;const nearestBoundary=e=>void 0===i?h:void 0===h||Math.abs(i-e)<Math.abs(h-e)?i:h;let l=n*s;const g=e+l;const m=void 0===c?g:c(g);f.target=m;m!==g&&(l=m-e);const calcDelta=e=>-l*Math.exp(-e/r);const calcLatest=e=>m+calcDelta(e);const applyFriction=e=>{const t=calcDelta(e);const s=calcLatest(e);f.done=Math.abs(t)<=u;f.current=f.done?m:s};let p;let M;const checkCatchBoundary=e=>{if(isOutOfBounds(f.current)){p=e;M=spring({from:f.current,to:nearestBoundary(f.current),velocity:calcGeneratorVelocity(calcLatest,e,f.current),damping:a,stiffness:o,restDistance:u,restSpeed:d})}};checkCatchBoundary(0);return e=>{let t=false;if(!M&&void 0===p){t=true;applyFriction(e);checkCatchBoundary(e)}if(void 0!==p&&e>p){f.hasReachedTarget=true;return M(e-p)}f.hasReachedTarget=false;!t&&applyFriction(e);return f}};const r=10;const a=1e4;function pregenerateKeyframes(e){let t;let s=r;let n=e(0);const o=[n.current];while(!n.done&&s<a){n=e(s);o.push(n.done?n.target:n.current);void 0===t&&n.hasReachedTarget&&(t=s);s+=r}const c=s-r;1===o.length&&o.push(n.current);return{keyframes:o,duration:c/1e3,overshootDuration:(null!==t&&void 0!==t?t:c)/1e3}}export{calcGeneratorVelocity,glide,pregenerateKeyframes,spring};\n\n//# sourceMappingURL=index.es.js.map","import{MotionValue as e}from\"@motionone/types\";import{noopReturn as t,addUniqueItem as n,isCubicBezier as o,defaults as i,isEasingGenerator as s,isNumber as r,time as a,isEasingList as c,noop as l,removeItem as f,mix as u,getEasingForSegment as d,isString as g,defaultOffset as m,fillOffset as h,progress as p,velocityPerSecond as v,interpolate as y}from\"@motionone/utils\";import{Animation as w,getEasingFunction as E}from\"@motionone/animation\";import{__rest as b}from\"tslib\";import{invariant as S}from\"hey-listen\";import{pregenerateKeyframes as A,calcGeneratorVelocity as O,spring as x,glide as V}from\"@motionone/generators\";const z=new WeakMap;function getAnimationData(e){z.has(e)||z.set(e,{transforms:[],values:new Map});return z.get(e)}function getMotionValue(t,n){t.has(n)||t.set(n,new e);return t.get(n)}const W=[\"\",\"X\",\"Y\",\"Z\"];const L=[\"translate\",\"scale\",\"rotate\",\"skew\"];const T={x:\"translateX\",y:\"translateY\",z:\"translateZ\"};const D={syntax:\"<angle>\",initialValue:\"0deg\",toDefaultUnit:e=>e+\"deg\"};const M={translate:{syntax:\"<length-percentage>\",initialValue:\"0px\",toDefaultUnit:e=>e+\"px\"},rotate:D,scale:{syntax:\"<number>\",initialValue:1,toDefaultUnit:t},skew:D};const k=new Map;const asTransformCssVar=e=>`--motion-${e}`;const B=[\"x\",\"y\",\"z\"];L.forEach((e=>{W.forEach((t=>{B.push(e+t);k.set(asTransformCssVar(e+t),M[e])}))}));const compareTransformOrder=(e,t)=>B.indexOf(e)-B.indexOf(t);const j=new Set(B);const isTransform=e=>j.has(e);const addTransformToElement=(e,t)=>{T[t]&&(t=T[t]);const{transforms:o}=getAnimationData(e);n(o,t);e.style.transform=buildTransformTemplate(o)};const buildTransformTemplate=e=>e.sort(compareTransformOrder).reduce(transformListToString,\"\").trim();const transformListToString=(e,t)=>`${e} ${t}(var(${asTransformCssVar(t)}))`;const isCssVar=e=>e.startsWith(\"--\");const P=new Set;function registerCssVariable(e){if(!P.has(e)){P.add(e);try{const{syntax:t,initialValue:n}=k.has(e)?k.get(e):{};CSS.registerProperty({name:e,inherits:false,syntax:t,initialValue:n})}catch(e){}}}const convertEasing=e=>o(e)?cubicBezierAsString(e):e;const cubicBezierAsString=([e,t,n,o])=>`cubic-bezier(${e}, ${t}, ${n}, ${o})`;const testAnimation=e=>document.createElement(\"div\").animate(e,{duration:.001});const C={cssRegisterProperty:()=>\"undefined\"!==typeof CSS&&Object.hasOwnProperty.call(CSS,\"registerProperty\"),waapi:()=>Object.hasOwnProperty.call(Element.prototype,\"animate\"),partialKeyframes:()=>{try{testAnimation({opacity:[1]})}catch(e){return false}return true},finished:()=>Boolean(testAnimation({opacity:[0,1]}).finished)};const $={};const R={};for(const e in C)R[e]=()=>{void 0===$[e]&&($[e]=C[e]());return $[e]};function hydrateKeyframes(e,t){for(let n=0;n<e.length;n++)null===e[n]&&(e[n]=n?e[n-1]:t());return e}const keyframesList=e=>Array.isArray(e)?e:[e];function getStyleName(e){T[e]&&(e=T[e]);return isTransform(e)?asTransformCssVar(e):e}const H={get:(e,t)=>{t=getStyleName(t);let n=isCssVar(t)?e.style.getPropertyValue(t):getComputedStyle(e)[t];if(!n&&0!==n){const e=k.get(t);e&&(n=e.initialValue)}return n},set:(e,t,n)=>{t=getStyleName(t);isCssVar(t)?e.style.setProperty(t,n):e.style[t]=n}};function stopAnimation(e,t=true){if(e&&\"finished\"!==e.playState)try{if(e.stop)e.stop();else{t&&e.commitStyles();e.cancel()}}catch(e){}}function getDevToolsRecord(){return window.__MOTION_DEV_TOOLS_RECORD}function animateStyle(e,t,n,o={}){const f=getDevToolsRecord();const u=false!==o.record&&f;let d;let{duration:g=i.duration,delay:m=i.delay,endDelay:h=i.endDelay,repeat:p=i.repeat,easing:v=i.easing,direction:y,offset:E,allowWebkitAcceleration:b=false}=o;const S=getAnimationData(e);let A=R.waapi();const O=isTransform(t);O&&addTransformToElement(e,t);const x=getStyleName(t);const V=getMotionValue(S.values,x);const z=k.get(x);stopAnimation(V.animation,!(s(v)&&V.generator)&&false!==o.record);return()=>{const readInitialValue=()=>{var t,n;return null!==(n=null!==(t=H.get(e,x))&&void 0!==t?t:null===z||void 0===z?void 0:z.initialValue)&&void 0!==n?n:0};let i=hydrateKeyframes(keyframesList(n),readInitialValue);if(s(v)){const e=v.createAnimation(i,readInitialValue,O,x,V);v=e.easing;void 0!==e.keyframes&&(i=e.keyframes);void 0!==e.duration&&(g=e.duration)}isCssVar(x)&&(R.cssRegisterProperty()?registerCssVariable(x):A=false);if(A){z&&(i=i.map((e=>r(e)?z.toDefaultUnit(e):e)));1!==i.length||R.partialKeyframes()&&!u||i.unshift(readInitialValue());const t={delay:a.ms(m),duration:a.ms(g),endDelay:a.ms(h),easing:c(v)?void 0:convertEasing(v),direction:y,iterations:p+1,fill:\"both\"};d=e.animate({[x]:i,offset:E,easing:c(v)?v.map(convertEasing):void 0},t);d.finished||(d.finished=new Promise(((e,t)=>{d.onfinish=e;d.oncancel=t})));const n=i[i.length-1];d.finished.then((()=>{H.set(e,x,n);d.cancel()})).catch(l);b||(d.playbackRate=1.000001)}else if(O){i=i.map((e=>\"string\"===typeof e?parseFloat(e):e));1===i.length&&i.unshift(parseFloat(readInitialValue()));const render=t=>{z&&(t=z.toDefaultUnit(t));H.set(e,x,t)};d=new w(render,i,Object.assign(Object.assign({},o),{duration:g,easing:v}))}else{const t=i[i.length-1];H.set(e,x,z&&r(t)?z.toDefaultUnit(t):t)}u&&f(e,t,i,{duration:g,delay:m,easing:v,repeat:p,offset:E},\"motion-one\");V.setAnimation(d);return d}}const getOptions=(e,t)=>e[t]?Object.assign(Object.assign({},e),e[t]):Object.assign({},e);function resolveElements(e,t){var n;if(\"string\"===typeof e)if(t){null!==(n=t[e])&&void 0!==n?n:t[e]=document.querySelectorAll(e);e=t[e]}else e=document.querySelectorAll(e);else e instanceof Element&&(e=[e]);return Array.from(e||[])}const createAnimation=e=>e();const withControls=(e,t,n=i.duration)=>new Proxy({animations:e.map(createAnimation).filter(Boolean),duration:n,options:t},I);const getActiveAnimation=e=>e.animations[0];const I={get:(e,t)=>{const n=getActiveAnimation(e);switch(t){case\"duration\":return e.duration;case\"currentTime\":return a.s((null===n||void 0===n?void 0:n[t])||0);case\"playbackRate\":case\"playState\":return null===n||void 0===n?void 0:n[t];case\"finished\":e.finished||(e.finished=Promise.all(e.animations.map(selectFinished)).catch(l));return e.finished;case\"stop\":return()=>{e.animations.forEach((e=>stopAnimation(e)))};case\"forEachNative\":return t=>{e.animations.forEach((n=>t(n,e)))};default:return\"undefined\"===typeof(null===n||void 0===n?void 0:n[t])?void 0:()=>e.animations.forEach((e=>e[t]()))}},set:(e,t,n)=>{switch(t){case\"currentTime\":n=a.ms(n);case\"currentTime\":case\"playbackRate\":for(let o=0;o<e.animations.length;o++)e.animations[o][t]=n;return true}return false}};const selectFinished=e=>e.finished;function stagger(e=.1,{start:t=0,from:n=0,easing:o}={}){return(i,s)=>{const a=r(n)?n:getFromIndex(n,s);const c=Math.abs(a-i);let l=e*c;if(o){const t=s*e;const n=E(o);l=n(l/t)*t}return t+l}}function getFromIndex(e,t){if(\"first\"===e)return 0;{const n=t-1;return\"last\"===e?n:n/2}}function resolveOption(e,t,n){return\"function\"===typeof e?e(t,n):e}function animate(e,t,n={}){e=resolveElements(e);const o=e.length;const i=[];for(let s=0;s<o;s++){const r=e[s];for(const e in t){const a=getOptions(n,e);a.delay=resolveOption(a.delay,s,o);const c=animateStyle(r,e,t[e],a);i.push(c)}}return withControls(i,n,n.duration)}function calcNextTime(e,t,n,o){var i;return r(t)?t:t.startsWith(\"-\")||t.startsWith(\"+\")?Math.max(0,e+parseFloat(t)):\"<\"===t?n:null!==(i=o.get(t))&&void 0!==i?i:e}function eraseKeyframes(e,t,n){for(let o=0;o<e.length;o++){const i=e[o];if(i.at>t&&i.at<n){f(e,i);o--}}}function addKeyframes(e,t,n,o,i,s){eraseKeyframes(e,i,s);for(let r=0;r<t.length;r++)e.push({value:t[r],at:u(i,s,o[r]),easing:d(n,r)})}function compareByTime(e,t){return e.at===t.at?null===e.value?1:-1:e.at-t.at}function timeline(e,t={}){var n;const o=createAnimationsFromTimeline(e,t);const i=o.map((e=>animateStyle(...e))).filter(Boolean);return withControls(i,t,null===(n=o[0])||void 0===n?void 0:n[3].duration)}function createAnimationsFromTimeline(e,t={}){var{defaultOptions:n={}}=t,o=b(t,[\"defaultOptions\"]);const r=[];const a=new Map;const c={};const l=new Map;let f=0;let u=0;let d=0;for(let t=0;t<e.length;t++){const o=e[t];if(g(o)){l.set(o,u);continue}if(!Array.isArray(o)){l.set(o.name,calcNextTime(u,o.at,f,l));continue}const[r,p,v={}]=o;void 0!==v.at&&(u=calcNextTime(u,v.at,f,l));let y=0;const w=resolveElements(r,c);const E=w.length;for(let e=0;e<E;e++){const t=w[e];const o=getElementSequence(t,a);for(const t in p){const r=getValueSequence(t,o);let a=keyframesList(p[t]);const c=getOptions(v,t);let{duration:l=n.duration||i.duration,easing:f=n.easing||i.easing}=c;if(s(f)){const e=isTransform(t);S(2===a.length||!e,\"spring must be provided 2 keyframes within timeline\");const n=f.createAnimation(a,(()=>\"0\"),e);f=n.easing;void 0!==n.keyframes&&(a=n.keyframes);void 0!==n.duration&&(l=n.duration)}const g=resolveOption(v.delay,e,E)||0;const w=u+g;const b=w+l;let{offset:A=m(a.length)}=c;1===A.length&&0===A[0]&&(A[1]=1);const O=length-a.length;O>0&&h(A,O);1===a.length&&a.unshift(null);addKeyframes(r,a,f,A,w,b);y=Math.max(g+l,y);d=Math.max(b,d)}}f=u;u+=y}a.forEach(((e,t)=>{for(const s in e){const a=e[s];a.sort(compareByTime);const c=[];const l=[];const f=[];for(let e=0;e<a.length;e++){const{at:t,value:n,easing:o}=a[e];c.push(n);l.push(p(0,d,t));f.push(o||i.easing)}if(0!==l[0]){l.unshift(0);c.unshift(c[0]);f.unshift(\"linear\")}if(1!==l[l.length-1]){l.push(1);c.push(null)}r.push([t,s,c,Object.assign(Object.assign(Object.assign({},n),{duration:d,easing:f,offset:l}),o)])}}));return r}function getElementSequence(e,t){!t.has(e)&&t.set(e,{});return t.get(e)}function getValueSequence(e,t){t[e]||(t[e]=[]);return t[e]}function createGeneratorEasing(e){const t=new WeakMap;return(n={})=>{const o=new Map;const getGenerator=(t=0,i=100,s=0,r=false)=>{const a=`${t}-${i}-${s}-${r}`;o.has(a)||o.set(a,e(Object.assign({from:t,to:i,velocity:s,restSpeed:r?.05:2,restDistance:r?.01:.5},n)));return o.get(a)};const getKeyframes=e=>{t.has(e)||t.set(e,A(e));return t.get(e)};return{createAnimation:(e,t,n,o,i)=>{var s,r;let a;const c=e.length;let l=n&&c<=2&&e.every(isNumberOrNull);if(l){const n=e[c-1];const l=1===c?null:e[0];let f=0;let u=0;const d=null===i||void 0===i?void 0:i.generator;if(d){const{animation:t,generatorStartTime:n}=i;const o=(null===t||void 0===t?void 0:t.startTime)||n||0;const r=(null===t||void 0===t?void 0:t.currentTime)||performance.now()-o;const a=d(r).current;u=null!==(s=l)&&void 0!==s?s:a;(1===c||2===c&&null===e[0])&&(f=O((e=>d(e).current),r,a))}else u=null!==(r=l)&&void 0!==r?r:parseFloat(t());const g=getGenerator(u,n,f,null===o||void 0===o?void 0:o.includes(\"scale\"));const m=getKeyframes(g);a=Object.assign(Object.assign({},m),{easing:\"linear\"});if(i){i.generator=g;i.generatorStartTime=performance.now()}}else{const e=getKeyframes(getGenerator(0,100));a={easing:\"ease\",duration:e.overshootDuration}}return a}}}}const isNumberOrNull=e=>\"string\"!==typeof e;const N=createGeneratorEasing(x);const F=createGeneratorEasing(V);const U={any:0,all:1};function inView$1(e,t,{root:n,margin:o,amount:i=\"any\"}={}){if(\"undefined\"===typeof IntersectionObserver)return()=>{};const s=resolveElements(e);const r=new WeakMap;const onIntersectionChange=e=>{e.forEach((e=>{const n=r.get(e.target);if(e.isIntersecting!==Boolean(n))if(e.isIntersecting){const n=t(e);\"function\"===typeof n?r.set(e.target,n):a.unobserve(e.target)}else if(n){n(e);r.delete(e.target)}}))};const a=new IntersectionObserver(onIntersectionChange,{root:n,rootMargin:o,threshold:\"number\"===typeof i?i:U[i]});s.forEach((e=>a.observe(e)));return()=>a.disconnect()}const q=new WeakMap;let K;function getElementSize(e,t){if(t){const{inlineSize:e,blockSize:n}=t[0];return{width:e,height:n}}return e instanceof SVGElement&&\"getBBox\"in e?e.getBBox():{width:e.offsetWidth,height:e.offsetHeight}}function notifyTarget({target:e,contentRect:t,borderBoxSize:n}){var o;null===(o=q.get(e))||void 0===o?void 0:o.forEach((o=>{o({target:e,contentSize:t,get size(){return getElementSize(e,n)}})}))}function notifyAll(e){e.forEach(notifyTarget)}function createResizeObserver(){\"undefined\"!==typeof ResizeObserver&&(K=new ResizeObserver(notifyAll))}function resizeElement(e,t){K||createResizeObserver();const n=resolveElements(e);n.forEach((e=>{let n=q.get(e);if(!n){n=new Set;q.set(e,n)}n.add(t);null===K||void 0===K?void 0:K.observe(e)}));return()=>{n.forEach((e=>{const n=q.get(e);null===n||void 0===n?void 0:n.delete(t);(null===n||void 0===n?void 0:n.size)||(null===K||void 0===K?void 0:K.unobserve(e))}))}}const G=new Set;let _;function createWindowResizeHandler(){_=()=>{const e={width:window.innerWidth,height:window.innerHeight};const t={target:window,size:e,contentSize:e};G.forEach((e=>e(t)))};window.addEventListener(\"resize\",_)}function resizeWindow(e){G.add(e);_||createWindowResizeHandler();return()=>{G.delete(e);!G.size&&_&&(_=void 0)}}function resize(e,t){return\"function\"===typeof e?resizeWindow(e):resizeElement(e,t)}const Z=50;const createAxisInfo=()=>({current:0,offset:[],progress:0,scrollLength:0,targetOffset:0,targetLength:0,containerLength:0,velocity:0});const createScrollInfo=()=>({time:0,x:createAxisInfo(),y:createAxisInfo()});const X={x:{length:\"Width\",position:\"Left\"},y:{length:\"Height\",position:\"Top\"}};function updateAxisInfo(e,t,n,o){const i=n[t];const{length:s,position:r}=X[t];const a=i.current;const c=n.time;i.current=e[\"scroll\"+r];i.scrollLength=e[\"scroll\"+s]-e[\"client\"+s];i.offset.length=0;i.offset[0]=0;i.offset[1]=i.scrollLength;i.progress=p(0,i.scrollLength,i.current);const l=o-c;i.velocity=l>Z?0:v(i.current-a,l)}function updateScrollInfo(e,t,n){updateAxisInfo(e,\"x\",t,n);updateAxisInfo(e,\"y\",t,n);t.time=n}function calcInset(e,t){let n={x:0,y:0};let o=e;while(o&&o!==t)if(o instanceof HTMLElement){n.x+=o.offsetLeft;n.y+=o.offsetTop;o=o.offsetParent}else if(o instanceof SVGGraphicsElement&&\"getBBox\"in o){const{top:e,left:t}=o.getBBox();n.x+=t;n.y+=e;while(o&&\"svg\"!==o.tagName)o=o.parentNode}return n}const Y={Enter:[[0,1],[1,1]],Exit:[[0,0],[1,0]],Any:[[1,0],[0,1]],All:[[0,0],[1,1]]};const J={start:0,center:.5,end:1};function resolveEdge(e,t,n=0){let o=0;void 0!==J[e]&&(e=J[e]);if(g(e)){const t=parseFloat(e);e.endsWith(\"px\")?o=t:e.endsWith(\"%\")?e=t/100:e.endsWith(\"vw\")?o=t/100*document.documentElement.clientWidth:e.endsWith(\"vh\")?o=t/100*document.documentElement.clientHeight:e=t}r(e)&&(o=t*e);return n+o}const Q=[0,0];function resolveOffset(e,t,n,o){let i=Array.isArray(e)?e:Q;let s=0;let a=0;if(r(e))i=[e,e];else if(g(e)){e=e.trim();i=e.includes(\" \")?e.split(\" \"):[e,J[e]?e:\"0\"]}s=resolveEdge(i[0],n,o);a=resolveEdge(i[1],t);return s-a}const ee={x:0,y:0};function resolveOffsets(e,t,n){let{offset:o=Y.All}=n;const{target:i=e,axis:s=\"y\"}=n;const r=\"y\"===s?\"height\":\"width\";const a=i!==e?calcInset(i,e):ee;const c=i===e?{width:e.scrollWidth,height:e.scrollHeight}:{width:i.clientWidth,height:i.clientHeight};const l={width:e.clientWidth,height:e.clientHeight};t[s].offset.length=0;let f=!t[s].interpolate;const u=o.length;for(let e=0;e<u;e++){const n=resolveOffset(o[e],l[r],c[r],a[s]);f||n===t[s].interpolatorOffsets[e]||(f=true);t[s].offset[e]=n}if(f){t[s].interpolate=y(m(u),t[s].offset);t[s].interpolatorOffsets=[...t[s].offset]}t[s].progress=t[s].interpolate(t[s].current)}function measure(e,t=e,n){n.x.targetOffset=0;n.y.targetOffset=0;if(t!==e){let o=t;while(o&&o!=e){n.x.targetOffset+=o.offsetLeft;n.y.targetOffset+=o.offsetTop;o=o.offsetParent}}n.x.targetLength=t===e?t.scrollWidth:t.clientWidth;n.y.targetLength=t===e?t.scrollHeight:t.clientHeight;n.x.containerLength=e.clientWidth;n.y.containerLength=e.clientHeight}function createOnScrollHandler(e,t,n,o={}){const i=o.axis||\"y\";return{measure:()=>measure(e,o.target,n),update:t=>{updateScrollInfo(e,n,t);(o.offset||o.target)&&resolveOffsets(e,n,o)},notify:\"function\"===typeof t?()=>t(n):scrubAnimation(t,n[i])}}function scrubAnimation(e,n){e.pause();e.forEachNative(((e,{easing:n})=>{var o,i;if(e.updateDuration){n||(e.easing=t);e.updateDuration(1)}else{const t={duration:1e3};n||(t.easing=\"linear\");null===(i=null===(o=e.effect)||void 0===o?void 0:o.updateTiming)||void 0===i?void 0:i.call(o,t)}}));return()=>{e.currentTime=n.progress}}const te=new WeakMap;const ne=new WeakMap;const oe=new WeakMap;const getEventTarget=e=>e===document.documentElement?window:e;function scroll(e,t={}){var{container:n=document.documentElement}=t,o=b(t,[\"container\"]);let i=oe.get(n);if(!i){i=new Set;oe.set(n,i)}const s=createScrollInfo();const r=createOnScrollHandler(n,e,s,o);i.add(r);if(!te.has(n)){const listener=()=>{const e=performance.now();for(const e of i)e.measure();for(const t of i)t.update(e);for(const e of i)e.notify()};te.set(n,listener);const e=getEventTarget(n);window.addEventListener(\"resize\",listener,{passive:true});n!==document.documentElement&&ne.set(n,resize(n,listener));e.addEventListener(\"scroll\",listener,{passive:true})}const a=te.get(n);const c=requestAnimationFrame(a);return()=>{var t;\"function\"!==typeof e&&e.stop();cancelAnimationFrame(c);const o=oe.get(n);if(!o)return;o.delete(r);if(o.size)return;const i=te.get(n);te.delete(n);if(i){getEventTarget(n).removeEventListener(\"scroll\",i);null===(t=ne.get(n))||void 0===t?void 0:t();window.removeEventListener(\"resize\",i)}}}function hasChanged(e,t){return typeof e!==typeof t||(Array.isArray(e)&&Array.isArray(t)?!shallowCompare(e,t):e!==t)}function shallowCompare(e,t){const n=t.length;if(n!==e.length)return false;for(let o=0;o<n;o++)if(t[o]!==e[o])return false;return true}function isVariant(e){return\"object\"===typeof e}function resolveVariant(e,t){return isVariant(e)?e:e&&t?t[e]:void 0}let ie;function processScheduledAnimations(){if(!ie)return;const e=ie.sort(compareByDepth).map(fireAnimateUpdates);e.forEach(fireNext);e.forEach(fireNext);ie=void 0}function scheduleAnimation(e){if(ie)n(ie,e);else{ie=[e];requestAnimationFrame(processScheduledAnimations)}}function unscheduleAnimation(e){ie&&f(ie,e)}const compareByDepth=(e,t)=>e.getDepth()-t.getDepth();const fireAnimateUpdates=e=>e.animateUpdates();const fireNext=e=>e.next();const motionEvent=(e,t)=>new CustomEvent(e,{detail:{target:t}});function dispatchPointerEvent(e,t,n){e.dispatchEvent(new CustomEvent(t,{detail:{originalEvent:n}}))}function dispatchViewEvent(e,t,n){e.dispatchEvent(new CustomEvent(t,{detail:{originalEntry:n}}))}const se={isActive:e=>Boolean(e.inView),subscribe:(e,{enable:t,disable:n},{inViewOptions:o={}})=>{const{once:i}=o,s=b(o,[\"once\"]);return inView$1(e,(o=>{t();dispatchViewEvent(e,\"viewenter\",o);if(!i)return t=>{n();dispatchViewEvent(e,\"viewleave\",t)}}),s)}};const mouseEvent=(e,t,n)=>o=>{if(!o.pointerType||\"mouse\"===o.pointerType){n();dispatchPointerEvent(e,t,o)}};const re={isActive:e=>Boolean(e.hover),subscribe:(e,{enable:t,disable:n})=>{const o=mouseEvent(e,\"hoverstart\",t);const i=mouseEvent(e,\"hoverend\",n);e.addEventListener(\"pointerenter\",o);e.addEventListener(\"pointerleave\",i);return()=>{e.removeEventListener(\"pointerenter\",o);e.removeEventListener(\"pointerleave\",i)}}};const ae={isActive:e=>Boolean(e.press),subscribe:(e,{enable:t,disable:n})=>{const onPointerUp=t=>{n();dispatchPointerEvent(e,\"pressend\",t);window.removeEventListener(\"pointerup\",onPointerUp)};const onPointerDown=n=>{t();dispatchPointerEvent(e,\"pressstart\",n);window.addEventListener(\"pointerup\",onPointerUp)};e.addEventListener(\"pointerdown\",onPointerDown);return()=>{e.removeEventListener(\"pointerdown\",onPointerDown);window.removeEventListener(\"pointerup\",onPointerUp)}}};const ce={inView:se,hover:re,press:ae};const le=[\"initial\",\"animate\",...Object.keys(ce),\"exit\"];const fe=new WeakMap;function createMotionState(e={},t){let n;let o=t?t.getDepth()+1:0;const i={initial:true,animate:true};const s={};const r={};for(const n of le)r[n]=\"string\"===typeof e[n]?e[n]:null===t||void 0===t?void 0:t.getContext()[n];const a=false===e.initial?\"animate\":\"initial\";let c=resolveVariant(e[a]||r[a],e.variants)||{},f=b(c,[\"transition\"]);const u=Object.assign({},f);function*animateUpdates(){var t,o;const s=f;f={};const r={};for(const n of le){if(!i[n])continue;const s=resolveVariant(e[n]);if(s)for(const n in s)if(\"transition\"!==n){f[n]=s[n];r[n]=getOptions(null!==(o=null!==(t=s.transition)&&void 0!==t?t:e.transition)&&void 0!==o?o:{},n)}}const a=new Set([...Object.keys(f),...Object.keys(s)]);const c=[];a.forEach((e=>{var t;void 0===f[e]&&(f[e]=u[e]);if(hasChanged(s[e],f[e])){null!==(t=u[e])&&void 0!==t?t:u[e]=H.get(n,e);c.push(animateStyle(n,e,f[e],r[e]))}}));yield;const d=c.map((e=>e())).filter(Boolean);if(!d.length)return;const g=f;n.dispatchEvent(motionEvent(\"motionstart\",g));Promise.all(d.map((e=>e.finished))).then((()=>{n.dispatchEvent(motionEvent(\"motioncomplete\",g))})).catch(l)}const setGesture=(e,t)=>()=>{i[e]=t;scheduleAnimation(d)};const updateGestureSubscriptions=()=>{for(const t in ce){const o=ce[t].isActive(e);const i=s[t];if(o&&!i)s[t]=ce[t].subscribe(n,{enable:setGesture(t,true),disable:setGesture(t,false)},e);else if(!o&&i){i();delete s[t]}}};const d={update:t=>{if(n){e=t;updateGestureSubscriptions();scheduleAnimation(d)}},setActive:(e,t)=>{if(n){i[e]=t;scheduleAnimation(d)}},animateUpdates:animateUpdates,getDepth:()=>o,getTarget:()=>f,getOptions:()=>e,getContext:()=>r,mount:e=>{S(Boolean(e),\"Animation state must be mounted with valid Element\");n=e;fe.set(n,d);updateGestureSubscriptions();return()=>{fe.delete(n);unscheduleAnimation(d);for(const e in s)s[e]()}},isMounted:()=>Boolean(n)};return d}function createStyles(e){const t={};const n=[];for(let o in e){const i=e[o];if(isTransform(o)){T[o]&&(o=T[o]);n.push(o);o=asTransformCssVar(o)}let s=Array.isArray(i)?i[0]:i;const a=k.get(o);a&&(s=r(i)?a.toDefaultUnit(i):i);t[o]=s}n.length&&(t.transform=buildTransformTemplate(n));return t}const camelLetterToPipeLetter=e=>`-${e.toLowerCase()}`;const camelToPipeCase=e=>e.replace(/[A-Z]/g,camelLetterToPipeLetter);function createStyleString(e={}){const t=createStyles(e);let n=\"\";for(const e in t){n+=e.startsWith(\"--\")?e:camelToPipeCase(e);n+=`: ${t[e]}; `}return n}export{Y as ScrollOffset,animate,animateStyle,createMotionState,createStyleString,createStyles,getAnimationData,getStyleName,F as glide,inView$1 as inView,fe as mountedStates,resize,scroll,N as spring,stagger,H as style,timeline,withControls};\n\n//# sourceMappingURL=index.es.js.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{resize}from\"@motionone/dom\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{animate,LayoutGroup,mix,motion,frame,useInView,useMotionValue,useTransform,wrap,usePageInView}from\"framer-motion\";import{Children,cloneElement,forwardRef,memo,startTransition,useCallback,useEffect,useLayoutEffect,useMemo,useRef,useState}from\"react\";function awaitRefCallback(element,controller){let refCallbackResolve;// we need to listen to the ref setter, so let's override `current` - we can do that, because we don't use React's `useRef` hook for those refs.\nlet current=element.current;Object.defineProperty(element,\"current\",{get(){return current;},set(node){current=node;if(node===null){// React calls with null when the element is unmounted\n// we abort here so that the promise isn't left around in case the ref is never set\ncontroller.abort();return;}refCallbackResolve?.(node);},configurable:true});// no need to create a promise if current already exists\nif(current)return current;const refCallbackPromise=new Promise((resolve,reject)=>{refCallbackResolve=resolve;controller.signal.addEventListener(\"abort\",reject);}).catch(()=>{});return refCallbackPromise;}// Using opacity: 0.001 instead of 0 as an LCP hack. (opacity: 0.001 is still 0\n// to a human eye but makes Google think the elements are visible)\nconst OPACITY_0=.001;/**\n *\n * SLIDESHOW\n * V2 with Drag\n * By Benjamin and Matt\n *\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 200\n *\n * @framerDisableUnlink\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function Slideshow(props){/**\n     * Properties\n     */const{slots=[],startFrom,direction,effectsOptions,autoPlayControl,dragControl,alignment,gap,padding,paddingPerSide,paddingTop,paddingRight,paddingBottom,paddingLeft,itemAmount,fadeOptions,intervalControl,transitionControl,arrowOptions,borderRadius,progressOptions,style}=props;const{effectsOpacity,effectsScale,effectsRotate,effectsPerspective,effectsHover,playOffscreen}=effectsOptions;const{fadeContent,overflow,fadeWidth,fadeInset,fadeAlpha}=fadeOptions;const{showMouseControls,arrowSize,arrowRadius,arrowFill,leftArrow,rightArrow,arrowShouldSpace=true,arrowShouldFadeIn=false,arrowPosition,arrowPadding,arrowGap,arrowPaddingTop,arrowPaddingRight,arrowPaddingBottom,arrowPaddingLeft}=arrowOptions;const{showProgressDots,dotSize,dotsInset,dotsRadius,dotsPadding,dotsGap,dotsFill,dotsBackground,dotsActiveOpacity,dotsOpacity,dotsBlur}=progressOptions;const paddingValue=paddingPerSide?`${paddingTop}px ${paddingRight}px ${paddingBottom}px ${paddingLeft}px`:`${padding}px`;/**\n     * Checks\n     */const isCanvas=RenderTarget.current()===RenderTarget.canvas;// Remove empty slots (such as hidden layers)\nconst filteredSlots=slots.filter(Boolean);const amountChildren=Children.count(filteredSlots);const hasChildren=amountChildren>0;/**\n     * Empty state for Canvas\n     */if(!hasChildren){return /*#__PURE__*/_jsxs(\"section\",{style:placeholderStyles,children:[/*#__PURE__*/_jsx(\"div\",{style:emojiStyles,children:\"⭐️\"}),/*#__PURE__*/_jsx(\"p\",{style:titleStyles,children:\"Connect to Content\"}),/*#__PURE__*/_jsx(\"p\",{style:subtitleStyles,children:\"Add layers or components to make infinite auto-playing slideshows.\"})]});}/**\n     * Refs, State\n     */const parentRef=useRef(null);const childrenRef=useMemo(()=>{return[{current:null},{current:null}];// when the slots change, generate new array\n},[filteredSlots]);const timeoutRef=useRef(undefined);const[size,setSize]=useState({parent:null,children:null,item:null,itemWidth:null,itemHeight:null,viewportLength:null});const writingDirection=useWritingDirection();const resolvedDirection=getSlideshowResolvedDirection(direction,writingDirection);const isHorizontal=resolvedDirection===\"left\"||resolvedDirection===\"right\";const isInverted=resolvedDirection===\"right\"||resolvedDirection===\"bottom\";const rtlDirectionModifier=isHorizontal&&writingDirection===\"rtl\"?-1:1;/* For pausing on hover */const[isHovering,setIsHovering]=useState(false);const[shouldPlayOnHover,setShouldPlayOnHover]=useState(autoPlayControl);/* For cursor updates */const[isMouseDown,setIsMouseDown]=useState(false);/* Check if resizing */const[isResizing,setIsResizing]=useState(false);/**\n     * Array for children\n     */let dupedChildren=[];let duplicateBy=4;if(isCanvas){duplicateBy=1;}/**\n     * Measure parent, child, items\n     */const measure=useCallback(()=>{if(!parentRef.current)return;// Might be RTL but executing before writingDirection is set so derive from positions of elements\nconst isRTL=isHorizontal&&childrenRef[0].current&&childrenRef[1].current&&childrenRef[1].current.offsetLeft<childrenRef[0].current.offsetLeft;const firstChild=isRTL?childrenRef[1].current:childrenRef[0].current;const lastChild=isRTL?childrenRef[0].current:childrenRef[1].current;const parentLength=isHorizontal?parentRef.current.offsetWidth:parentRef.current.offsetHeight;const start=firstChild?isHorizontal?firstChild.offsetLeft:firstChild.offsetTop:0;const end=lastChild?isHorizontal?lastChild.offsetLeft+lastChild.offsetWidth:lastChild.offsetTop+lastChild.offsetHeight:0;const childrenLength=end-start+gap;const itemSize=firstChild?isHorizontal?firstChild.offsetWidth:firstChild.offsetHeight:0;const itemWidth=firstChild?firstChild.offsetWidth:0;const itemHeight=firstChild?firstChild.offsetHeight:0;const viewportLength=isHorizontal?Math.max(document.documentElement.clientWidth||0,window.innerWidth||0,parentRef.current.offsetWidth):Math.max(document.documentElement.clientHeight||0,window.innerHeight||0,parentRef.current.offsetHeight);setSize({parent:parentLength,children:childrenLength,item:itemSize,itemWidth,itemHeight,viewportLength});},[]);const scheduleMeasure=useCallback(async()=>{const controller=new AbortController;/**\n         * The elements in the set are refs of children. If they're wrapped in Suspense, they could mount later than the parent.\n         * Thus, we wait for each ref to be set step by step if required.\n         */const[firstChild,lastChild]=childrenRef;if(!isCanvas&&(!firstChild.current||!lastChild.current))try{await Promise.all([awaitRefCallback(firstChild,controller),amountChildren>1?awaitRefCallback(lastChild,controller):true]);}catch{controller.abort();}frame.read(measure,false,true);},[measure]);/**\n     * Add refs to all children\n     * Added itemAmount for resizing\n     */useLayoutEffect(()=>{scheduleMeasure();},[itemAmount]);/**\n     * Track whether this is the initial resize event. By default this will fire on mount,\n     * which we do in the useEffect. We should only fire it on subsequent resizes.\n     */const initialResize=useRef(true);useEffect(()=>{return resize(parentRef.current,({contentSize})=>{if(!initialResize.current&&(contentSize.width||contentSize.height)){scheduleMeasure();startTransition(()=>setIsResizing(true));}initialResize.current=false;});},[]);useEffect(()=>{if(isResizing){const timer=setTimeout(()=>startTransition(()=>setIsResizing(false)),500);return()=>clearTimeout(timer);}},[isResizing]);/**\n     * Animation, pagination\n     */const totalItems=filteredSlots?.length;const childrenSize=isCanvas?0:size?.children;const itemWithGap=size?.item+gap;const itemOffset=startFrom*itemWithGap;const[currentItem,setCurrentItem]=useState(startFrom+totalItems);const[isDragging,setIsDragging]=useState(false);if(isCanvas){if(currentItem!==startFrom){setCurrentItem(startFrom);}}/* Check for browser window visibility *//* Otherwise, it will re-play all the item increments */const visibilityRef=useRef(null);const isInView=useInView(visibilityRef);const isVisible=usePageInView()&&isInView;const factor=isInverted?1:-1;/* The x and y values to start from */const xOrY=useMotionValue(childrenSize);/* For canvas only. Using xOrY is slower upon page switching */const canvasPosition=isHorizontal?-startFrom*(size?.itemWidth+gap):-startFrom*(size?.itemHeight+gap);/* Calculate the new value to animate to */const newPosition=()=>factor*currentItem*itemWithGap;/* Wrapped values for infinite looping *//* Instead of 0 to a negative full duplicated row, we start with an offset */const wrappedValue=!isCanvas?useTransform(xOrY,value=>{const wrapped=wrap(-childrenSize*rtlDirectionModifier,-childrenSize*rtlDirectionModifier*2,value*rtlDirectionModifier);return isNaN(wrapped)?0:wrapped;}):0;/* Convert the current item to a wrapping index for dots */const wrappedIndex=wrap(0,totalItems,currentItem);const wrappedIndexInverted=wrap(0,-totalItems,currentItem);/* Update x or y with the provided starting point *//* The subtraction of a full row of children is for overflow */useLayoutEffect(()=>{if(size?.children===null)return;/* Initial measure */// if (initialResize.current) {\n//     xOrY.set((childrenSize + itemOffset) * factor)\n// }\n/* Subsequent resizes */if(!initialResize.current&&isResizing){xOrY.set(newPosition());}},[size,childrenSize,factor,itemOffset,currentItem,itemWithGap,isResizing]);/**\n     * Page item methods\n     * Switching, deltas, autoplaying\n     *//* Next and previous function, animates the X */const switchPages=()=>{if(isCanvas||!hasChildren||!size.parent||isDragging)return;if(xOrY.get()!==newPosition()){animate(xOrY,newPosition(),transitionControl);}if(autoPlayControl&&shouldPlayOnHover&&(playOffscreen||isVisible)){timeoutRef.current=setTimeout(()=>{startTransition(()=>setCurrentItem(item=>item+1*rtlDirectionModifier));switchPages();},intervalControl*1e3);}};/* Page navigation functions */const setDelta=(delta,transition=false)=>{if(!isInverted){if(transition)startTransition(()=>setCurrentItem(item=>item+delta));else setCurrentItem(item=>item+delta);}else{if(transition)startTransition(()=>setCurrentItem(item=>item-delta));else setCurrentItem(item=>item-delta);}};const setPage=index=>{const currentItemWrapped=wrap(0,totalItems,currentItem);const currentItemWrappedInvert=wrap(0,-totalItems,currentItem);const goto=index-currentItemWrapped;const gotoInverted=index-Math.abs(currentItemWrappedInvert);if(!isInverted){startTransition(()=>setCurrentItem(item=>item+goto));}else{startTransition(()=>setCurrentItem(item=>item-gotoInverted));}};/**\n     * Drag\n     */const handleDragStart=()=>{startTransition(()=>setIsDragging(true));};const handleDragEnd=(event,{offset,velocity})=>{startTransition(()=>setIsDragging(false));const offsetXorY=isHorizontal?offset.x:offset.y;const velocityThreshold=200// Based on testing, can be tweaked or could be 0\n;const velocityXorY=isHorizontal?velocity.x:velocity.y;const isHalfOfNext=offsetXorY<-size.item/2;const isHalfOfPrev=offsetXorY>size.item/2;/* In case you drag more than 1 item left or right */const normalizedOffset=Math.abs(offsetXorY);const itemDelta=Math.round(normalizedOffset/size.item);/* Minimum delta is 1 to initiate a page switch *//* For velocity use only */const itemDeltaFromOne=itemDelta===0?1:itemDelta;/* For quick flicks, even with low offsets */if(velocityXorY>velocityThreshold){setDelta(-itemDeltaFromOne*rtlDirectionModifier,true);}else if(velocityXorY<-velocityThreshold){setDelta(itemDeltaFromOne*rtlDirectionModifier,true);}else{/* For dragging over half of the current item with 0 velocity */if(isHalfOfNext){setDelta(itemDelta*rtlDirectionModifier,true);}if(isHalfOfPrev){setDelta(-itemDelta*rtlDirectionModifier,true);}}};/* Kickstart the auto-playing once we have all the children */useEffect(()=>{if(!isVisible||isResizing||amountChildren<=1)return;switchPages();return()=>timeoutRef.current&&clearTimeout(timeoutRef.current);},[dupedChildren,isVisible,isResizing]);/* Create copies of our children to create a perfect loop */let childCounter=0;/**\n     * Sizing\n     * */const columnOrRowValue=`calc(${100/itemAmount}% - ${gap}px + ${gap/itemAmount}px)`;/**\n     * Nested array to create duplicates of the children for infinite looping\n     * These are wrapped around, and start at a full \"page\" worth of offset\n     * as defined above.\n     */for(let index=0;index<duplicateBy;index++){dupedChildren=dupedChildren.concat(Children.map(filteredSlots,(child,childIndex)=>{let ref;if(index===0){if(childIndex===0){ref=childrenRef[0];}else if(childIndex===filteredSlots.length-1){ref=childrenRef[1];}}return /*#__PURE__*/_jsx(Slide,{ref:ref,slideKey:index+childIndex+\"lg\",index:index,width:isHorizontal?itemAmount>1?columnOrRowValue:\"100%\":\"100%\",height:!isHorizontal?itemAmount>1?columnOrRowValue:\"100%\":\"100%\",size:size,child:child,numChildren:filteredSlots?.length,wrappedValue:wrappedValue,childCounter:childCounter++,gap:gap,isCanvas:isCanvas,isHorizontal:isHorizontal,effectsOpacity:effectsOpacity,effectsScale:effectsScale,effectsRotate:effectsRotate,directionModifier:rtlDirectionModifier,children:index+childIndex},index+childIndex+\"lg\");}));}/**\n     * Fades with masks\n     */const fadeDirection=isHorizontal?\"to right\":\"to bottom\";const fadeWidthStart=fadeWidth/2;const fadeWidthEnd=100-fadeWidth/2;const fadeInsetStart=clamp(fadeInset,0,fadeWidthStart);const fadeInsetEnd=100-fadeInset;const fadeMask=`linear-gradient(${fadeDirection}, rgba(0, 0, 0, ${fadeAlpha}) ${fadeInsetStart}%, rgba(0, 0, 0, 1) ${fadeWidthStart}%, rgba(0, 0, 0, 1) ${fadeWidthEnd}%, rgba(0, 0, 0, ${fadeAlpha}) ${fadeInsetEnd}%)`;/**\n     * Dots\n     */const dots=[];const dotsBlurStyle={};if(showProgressDots){for(let i=0;i<filteredSlots?.length;i++){dots.push(/*#__PURE__*/_jsx(Dot,{dotStyle:{...dotStyle,width:dotSize,height:dotSize,backgroundColor:dotsFill},buttonStyle:baseButtonStyles,selectedOpacity:dotsActiveOpacity,opacity:dotsOpacity,onClick:()=>setPage(i),wrappedIndex:wrappedIndex,wrappedIndexInverted:wrappedIndexInverted,total:totalItems,index:i,gap:dotsGap,padding:dotsPadding,isHorizontal:isHorizontal,isInverted:isInverted},i));}if(dotsBlur>0){dotsBlurStyle.backdropFilter=dotsBlurStyle.WebkitBackdropFilter=`blur(${dotsBlur}px)`;}}const dragProps=dragControl?{drag:isHorizontal?\"x\":\"y\",onDragStart:handleDragStart,onDragEnd:handleDragEnd,dragDirectionLock:true,values:{x:writingDirection===\"rtl\"?-xOrY:xOrY,y:xOrY},dragMomentum:false}:{};const arrowHasTop=arrowPosition===\"top-left\"||arrowPosition===\"top-mid\"||arrowPosition===\"top-right\";const arrowHasBottom=arrowPosition===\"bottom-left\"||arrowPosition===\"bottom-mid\"||arrowPosition===\"bottom-right\";const arrowHasLeft=arrowPosition===\"top-left\"||arrowPosition===\"bottom-left\";const arrowHasRight=arrowPosition===\"top-right\"||arrowPosition===\"bottom-right\";const arrowHasMid=arrowPosition===\"top-mid\"||arrowPosition===\"bottom-mid\"||arrowPosition===\"auto\";const leftArrowSrc=leftArrow||\"https://framerusercontent.com/images/6tTbkXggWgQCAJ4DO2QEdXXmgM.svg?arrow=left\";const rightArrowSrc=rightArrow||\"https://framerusercontent.com/images/11KSGbIZoRSg4pjdnUoif6MKHI.svg?arrow=right\";return /*#__PURE__*/_jsxs(\"section\",{style:{...containerStyle,padding:paddingValue,WebkitMaskImage:fadeContent?fadeMask:undefined,maskImage:fadeContent?fadeMask:undefined,opacity:size?.item!==null?1:OPACITY_0,userSelect:\"none\"},onMouseEnter:()=>{setIsHovering(true);if(!effectsHover)setShouldPlayOnHover(false);},onMouseLeave:()=>{setIsHovering(false);if(!effectsHover)setShouldPlayOnHover(true);},onMouseDown:event=>{// Preventdefault fixes the cursor switching to text on drag on safari\nevent.preventDefault();startTransition(()=>setIsMouseDown(true));},onMouseUp:()=>startTransition(()=>setIsMouseDown(false)),ref:visibilityRef,children:[/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",margin:0,padding:\"inherit\",position:\"absolute\",inset:0,overflow:overflow?\"visible\":\"hidden\",borderRadius:borderRadius,userSelect:\"none\",perspective:isCanvas?\"none\":effectsPerspective},children:/*#__PURE__*/_jsx(motion.ul,{ref:parentRef,...dragProps,style:{...containerStyle,gap:gap,placeItems:alignment,x:isHorizontal?isCanvas?canvasPosition:wrappedValue:0,y:!isHorizontal?isCanvas?canvasPosition:wrappedValue:0,flexDirection:isHorizontal?\"row\":\"column\",transformStyle:effectsRotate!==0&&!isCanvas?\"preserve-3d\":undefined,cursor:dragControl?isMouseDown?\"grabbing\":\"grab\":\"auto\",userSelect:\"none\",...style},children:dupedChildren})}),/*#__PURE__*/_jsxs(\"fieldset\",{style:{...controlsStyles},\"aria-label\":\"Slideshow pagination controls\",className:\"framer--slideshow-controls\",children:[/*#__PURE__*/_jsxs(motion.div,{style:{position:\"absolute\",display:\"flex\",flexDirection:isHorizontal?\"row\":\"column\",justifyContent:arrowShouldSpace?\"space-between\":\"center\",gap:arrowShouldSpace?\"unset\":arrowGap,opacity:arrowShouldFadeIn?OPACITY_0:1,alignItems:\"center\",inset:arrowPadding,top:arrowShouldSpace?arrowPadding:arrowHasTop?arrowPaddingTop:\"unset\",left:arrowShouldSpace?arrowPadding:arrowHasLeft?arrowPaddingLeft:arrowHasMid?0:\"unset\",right:arrowShouldSpace?arrowPadding:arrowHasRight?arrowPaddingRight:arrowHasMid?0:\"unset\",bottom:arrowShouldSpace?arrowPadding:arrowHasBottom?arrowPaddingBottom:\"unset\"},animate:arrowShouldFadeIn&&{opacity:isHovering?1:OPACITY_0},transition:transitionControl,children:[/*#__PURE__*/_jsx(motion.button,{type:\"button\",style:{...baseButtonStyles,backgroundColor:arrowFill,width:arrowSize,height:arrowSize,borderRadius:arrowRadius,rotate:!isHorizontal?90:0,display:showMouseControls?\"block\":\"none\",pointerEvents:\"auto\"},onClick:()=>setDelta(-1,true),\"aria-label\":\"Previous\",whileTap:{scale:.9},transition:{duration:.15},children:/*#__PURE__*/_jsx(\"img\",{decoding:\"async\",width:arrowSize,height:arrowSize,src:isHorizontal&&writingDirection===\"rtl\"?rightArrowSrc:leftArrowSrc,alt:\"Back Arrow\"})}),/*#__PURE__*/_jsx(motion.button,{type:\"button\",style:{...baseButtonStyles,backgroundColor:arrowFill,width:arrowSize,height:arrowSize,borderRadius:arrowRadius,rotate:!isHorizontal?90:0,display:showMouseControls?\"block\":\"none\",pointerEvents:\"auto\"},onClick:()=>setDelta(1,true),\"aria-label\":\"Next\",whileTap:{scale:.9},transition:{duration:.15},children:/*#__PURE__*/_jsx(\"img\",{decoding:\"async\",width:arrowSize,height:arrowSize,src:isHorizontal&&writingDirection===\"rtl\"?leftArrowSrc:rightArrowSrc,alt:\"Next Arrow\"})})]}),dots.length>1?/*#__PURE__*/_jsx(\"div\",{style:{...dotsContainerStyle,left:isHorizontal?\"50%\":dotsInset,top:!isHorizontal?\"50%\":\"unset\",transform:isHorizontal?\"translateX(-50%)\":\"translateY(-50%)\",flexDirection:isHorizontal?\"row\":\"column\",bottom:isHorizontal?dotsInset:\"unset\",borderRadius:dotsRadius,backgroundColor:dotsBackground,userSelect:\"none\",...dotsBlurStyle},children:dots}):null]})]});}/* Default Properties */Slideshow.defaultProps={direction:\"left\",dragControl:false,startFrom:0,itemAmount:1,infinity:true,gap:10,padding:10,autoPlayControl:true,effectsOptions:{effectsOpacity:1,effectsScale:1,effectsRotate:0,effectsPerspective:1200,effectsHover:true,playOffscreen:false},transitionControl:{type:\"spring\",stiffness:200,damping:40},fadeOptions:{fadeContent:false,overflow:false,fadeWidth:25,fadeAlpha:0,fadeInset:0},arrowOptions:{showMouseControls:true,arrowShouldFadeIn:false,arrowShouldSpace:true,arrowFill:\"rgba(0,0,0,0.2)\",arrowSize:40},progressOptions:{showProgressDots:true}};/* Property Controls */addPropertyControls(Slideshow,{slots:{type:ControlType.Array,title:\"Content\",control:{type:ControlType.ComponentInstance}},direction:{type:ControlType.Enum,title:\"Direction\",options:[\"left\",\"right\",\"top\",\"bottom\"],optionIcons:[\"direction-left\",\"direction-right\",\"direction-up\",\"direction-down\"],optionTitles:[\"Left\",\"Right\",\"Top\",\"Bottom\"],displaySegmentedControl:true,defaultValue:Slideshow.defaultProps.direction},autoPlayControl:{type:ControlType.Boolean,title:\"Auto Play\",defaultValue:true},intervalControl:{type:ControlType.Number,title:\"Interval\",defaultValue:1.5,min:.5,max:10,step:.1,displayStepper:true,unit:\"s\",hidden:props=>!props.autoPlayControl},dragControl:{type:ControlType.Boolean,title:\"Draggable\",defaultValue:false},startFrom:{type:ControlType.Number,title:\"Current\",min:0,max:10,displayStepper:true,defaultValue:Slideshow.defaultProps.startFrom},effectsOptions:{type:ControlType.Object,title:\"Effects\",controls:{effectsOpacity:{type:ControlType.Number,title:\"Opacity\",defaultValue:Slideshow.defaultProps.effectsOptions.effectsOpacity,min:0,max:1,step:.01,displayStepper:true},effectsScale:{type:ControlType.Number,title:\"Scale\",defaultValue:Slideshow.defaultProps.effectsOptions.effectsScale,min:0,max:1,step:.01,displayStepper:true},effectsPerspective:{type:ControlType.Number,title:\"Perspective\",defaultValue:Slideshow.defaultProps.effectsOptions.effectsPerspective,min:200,max:2e3,step:1},effectsRotate:{type:ControlType.Number,title:\"Rotate\",defaultValue:Slideshow.defaultProps.effectsOptions.effectsRotate,min:-180,max:180,step:1},effectsHover:{type:ControlType.Boolean,title:\"On Hover\",enabledTitle:\"Play\",disabledTitle:\"Pause\",defaultValue:Slideshow.defaultProps.effectsOptions.effectsHover},playOffscreen:{type:ControlType.Boolean,title:\"Offscreen\",enabledTitle:\"Play\",disabledTitle:\"Pause\",defaultValue:Slideshow.defaultProps.effectsOptions.playOffscreen}}},alignment:{type:ControlType.Enum,title:\"Align\",options:[\"flex-start\",\"center\",\"flex-end\"],optionIcons:{direction:{right:[\"align-top\",\"align-middle\",\"align-bottom\"],left:[\"align-top\",\"align-middle\",\"align-bottom\"],top:[\"align-left\",\"align-center\",\"align-right\"],bottom:[\"align-left\",\"align-center\",\"align-right\"]}},defaultValue:\"center\",displaySegmentedControl:true},itemAmount:{type:ControlType.Number,title:\"Items\",min:1,max:10,displayStepper:true,defaultValue:Slideshow.defaultProps.itemAmount},gap:{type:ControlType.Number,title:\"Gap\",min:0},padding:{title:\"Padding\",type:ControlType.FusedNumber,toggleKey:\"paddingPerSide\",toggleTitles:[\"Padding\",\"Padding per side\"],defaultValue:0,valueKeys:[\"paddingTop\",\"paddingRight\",\"paddingBottom\",\"paddingLeft\"],valueLabels:[\"T\",\"R\",\"B\",\"L\"],min:0},borderRadius:{type:ControlType.Number,title:\"Radius\",min:0,max:500,displayStepper:true,defaultValue:0},transitionControl:{type:ControlType.Transition,defaultValue:Slideshow.defaultProps.transitionControl,title:\"Transition\"},fadeOptions:{type:ControlType.Object,title:\"Clipping\",controls:{fadeContent:{type:ControlType.Boolean,title:\"Fade\",defaultValue:false},overflow:{type:ControlType.Boolean,title:\"Overflow\",enabledTitle:\"Show\",disabledTitle:\"Hide\",defaultValue:false,hidden(props){return props.fadeContent===true;}},fadeWidth:{type:ControlType.Number,title:\"Width\",defaultValue:25,min:0,max:100,unit:\"%\",hidden(props){return props.fadeContent===false;}},fadeInset:{type:ControlType.Number,title:\"Inset\",defaultValue:0,min:0,max:100,unit:\"%\",hidden(props){return props.fadeContent===false;}},fadeAlpha:{type:ControlType.Number,title:\"Opacity\",defaultValue:0,min:0,max:1,step:.05,hidden(props){return props.fadeContent===false;}}}},arrowOptions:{type:ControlType.Object,title:\"Arrows\",controls:{showMouseControls:{type:ControlType.Boolean,title:\"Show\",defaultValue:Slideshow.defaultProps.arrowOptions.showMouseControls},arrowFill:{type:ControlType.Color,title:\"Fill\",hidden:props=>!props.showMouseControls,defaultValue:Slideshow.defaultProps.arrowOptions.arrowFill},leftArrow:{type:ControlType.Image,title:\"Previous\",hidden:props=>!props.showMouseControls},rightArrow:{type:ControlType.Image,title:\"Next\",hidden:props=>!props.showMouseControls},arrowSize:{type:ControlType.Number,title:\"Size\",min:0,max:200,displayStepper:true,defaultValue:Slideshow.defaultProps.arrowOptions.arrowSize,hidden:props=>!props.showMouseControls},arrowRadius:{type:ControlType.Number,title:\"Radius\",min:0,max:500,defaultValue:40,hidden:props=>!props.showMouseControls},arrowShouldFadeIn:{type:ControlType.Boolean,title:\"Fade In\",defaultValue:false,hidden:props=>!props.showMouseControls},arrowShouldSpace:{type:ControlType.Boolean,title:\"Distance\",enabledTitle:\"Space\",disabledTitle:\"Group\",defaultValue:Slideshow.defaultProps.arrowOptions.arrowShouldSpace,hidden:props=>!props.showMouseControls},arrowPosition:{type:ControlType.Enum,title:\"Position\",options:[\"auto\",\"top-left\",\"top-mid\",\"top-right\",\"bottom-left\",\"bottom-mid\",\"bottom-right\"],optionTitles:[\"Center\",\"Top Left\",\"Top Middle\",\"Top Right\",\"Bottom Left\",\"Bottom Middle\",\"Bottom Right\"],hidden:props=>!props.showMouseControls||props.arrowShouldSpace},arrowPadding:{type:ControlType.Number,title:\"Inset\",min:-100,max:100,defaultValue:20,displayStepper:true,hidden:props=>!props.showMouseControls||!props.arrowShouldSpace},arrowPaddingTop:{type:ControlType.Number,title:\"Top\",min:-500,max:500,defaultValue:0,displayStepper:true,hidden:props=>!props.showMouseControls||props.arrowShouldSpace||props.arrowPosition===\"auto\"||props.arrowPosition===\"bottom-mid\"||props.arrowPosition===\"bottom-left\"||props.arrowPosition===\"bottom-right\"},arrowPaddingBottom:{type:ControlType.Number,title:\"Bottom\",min:-500,max:500,defaultValue:0,displayStepper:true,hidden:props=>!props.showMouseControls||props.arrowShouldSpace||props.arrowPosition===\"auto\"||props.arrowPosition===\"top-mid\"||props.arrowPosition===\"top-left\"||props.arrowPosition===\"top-right\"},arrowPaddingRight:{type:ControlType.Number,title:\"Right\",min:-500,max:500,defaultValue:0,displayStepper:true,hidden:props=>!props.showMouseControls||props.arrowShouldSpace||props.arrowPosition===\"auto\"||props.arrowPosition===\"top-left\"||props.arrowPosition===\"top-mid\"||props.arrowPosition===\"bottom-left\"||props.arrowPosition===\"bottom-mid\"},arrowPaddingLeft:{type:ControlType.Number,title:\"Left\",min:-500,max:500,defaultValue:0,displayStepper:true,hidden:props=>!props.showMouseControls||props.arrowShouldSpace||props.arrowPosition===\"auto\"||props.arrowPosition===\"top-right\"||props.arrowPosition===\"top-mid\"||props.arrowPosition===\"bottom-right\"||props.arrowPosition===\"bottom-mid\"},arrowGap:{type:ControlType.Number,title:\"Gap\",min:0,max:100,defaultValue:10,displayStepper:true,hidden:props=>!props.showMouseControls||props.arrowShouldSpace}}},progressOptions:{type:ControlType.Object,title:\"Dots\",controls:{showProgressDots:{type:ControlType.Boolean,title:\"Show\",defaultValue:false},dotSize:{type:ControlType.Number,title:\"Size\",min:1,max:100,defaultValue:10,displayStepper:true,hidden:props=>!props.showProgressDots||props.showScrollbar},dotsInset:{type:ControlType.Number,title:\"Inset\",min:-100,max:100,defaultValue:10,displayStepper:true,hidden:props=>!props.showProgressDots||props.showScrollbar},dotsGap:{type:ControlType.Number,title:\"Gap\",min:0,max:100,defaultValue:10,displayStepper:true,hidden:props=>!props.showProgressDots||props.showScrollbar},dotsPadding:{type:ControlType.Number,title:\"Padding\",min:0,max:100,defaultValue:10,displayStepper:true,hidden:props=>!props.showProgressDots||props.showScrollbar},dotsFill:{type:ControlType.Color,title:\"Fill\",defaultValue:\"#fff\",hidden:props=>!props.showProgressDots||props.showScrollbar},dotsBackground:{type:ControlType.Color,title:\"Backdrop\",defaultValue:\"rgba(0,0,0,0.2)\",hidden:props=>!props.showProgressDots||props.showScrollbar},dotsRadius:{type:ControlType.Number,title:\"Radius\",min:0,max:200,defaultValue:50,hidden:props=>!props.showProgressDots||props.showScrollbar},dotsOpacity:{type:ControlType.Number,title:\"Opacity\",min:0,max:1,defaultValue:.5,step:.1,displayStepper:true,hidden:props=>!props.showProgressDots||props.showScrollbar},dotsActiveOpacity:{type:ControlType.Number,title:\"Current\",min:0,max:1,defaultValue:1,step:.1,displayStepper:true,hidden:props=>!props.showProgressDots||props.showScrollbar},dotsBlur:{type:ControlType.Number,title:\"Blur\",min:0,max:50,defaultValue:0,step:1,hidden:props=>!props.showProgressDots||props.showScrollbar}}}});/* Placeholder Styles */const containerStyle={display:\"flex\",flexDirection:\"row\",width:\"100%\",height:\"100%\",maxWidth:\"100%\",maxHeight:\"100%\",placeItems:\"center\",margin:0,padding:0,listStyleType:\"none\",textIndent:\"none\"};/* Component Styles */const placeholderStyles={display:\"flex\",width:\"100%\",height:\"100%\",placeContent:\"center\",placeItems:\"center\",flexDirection:\"column\",color:\"#96F\",background:\"rgba(136, 85, 255, 0.1)\",fontSize:11,overflow:\"hidden\",padding:\"20px 20px 30px 20px\"};const emojiStyles={fontSize:32,marginBottom:10};const titleStyles={margin:0,marginBottom:10,fontWeight:600,textAlign:\"center\"};const subtitleStyles={margin:0,opacity:.7,maxWidth:180,lineHeight:1.5,textAlign:\"center\"};/* Control Styles */const baseButtonStyles={border:\"none\",display:\"flex\",placeContent:\"center\",placeItems:\"center\",overflow:\"hidden\",background:\"transparent\",cursor:\"pointer\",margin:0,padding:0};const controlsStyles={display:\"flex\",justifyContent:\"space-between\",alignItems:\"center\",position:\"absolute\",pointerEvents:\"none\",userSelect:\"none\",top:0,left:0,right:0,bottom:0,border:0,padding:0,margin:0};/* Clamp function, used for fadeInset */const clamp=(num,min,max)=>Math.min(Math.max(num,min),max);/* Slide Component */const Slide=/*#__PURE__*/memo(/*#__PURE__*/forwardRef(function Component(props,ref){const{slideKey,width,height,child,size,gap,wrappedValue,numChildren,childCounter,isCanvas,effects,effectsOpacity,effectsScale,effectsRotate,isHorizontal,isLast,index,/** 1 or -1 depending on if horizontal and rtl writing direction */directionModifier}=props;const fallbackRef=useRef();/**\n         * Unique offsets + scroll range [0, 1, 1, 0]\n         */const childOffset=(size?.item+gap)*childCounter;const scrollRange=[-size?.item,0,size?.parent-size?.item+gap,size?.parent].map(val=>val-childOffset*directionModifier);/**\n         * Effects\n         */const rotateY=!isCanvas&&useTransform(wrappedValue,scrollRange,[-effectsRotate,0,0,effectsRotate]);const rotateX=!isCanvas&&useTransform(wrappedValue,scrollRange,[effectsRotate,0,0,-effectsRotate]);const opacity=!isCanvas&&useTransform(wrappedValue,scrollRange,[effectsOpacity,1,1,effectsOpacity]);const scale=!isCanvas&&useTransform(wrappedValue,scrollRange,[effectsScale,1,1,effectsScale]);const originXorY=!isCanvas&&useTransform(wrappedValue,scrollRange,[1,1,0,0]);const isVisible=!isCanvas&&useTransform(wrappedValue,latest=>latest>=scrollRange[1]&&latest<=scrollRange[2]);useEffect(()=>{if(!isVisible)return;function manageVisibility(visible){const node=ref?.current??fallbackRef.current;if(!node)return;// for a11y: Manage tabIndex on focusable descendants & aria-hidden on the parent.\nif(visible){node.querySelectorAll(\"button,a\").forEach(el=>{const orig=el.dataset.origTabIndex;if(orig)el.tabIndex=orig;else el.removeAttribute(\"tabIndex\");});}else{node.querySelectorAll(\"button,a\").forEach(el=>{const orig=el.getAttribute(\"tabIndex\");if(orig)el.dataset.origTabIndex=orig;el.tabIndex=-1;});}node.setAttribute(\"aria-hidden\",!visible);}manageVisibility(isVisible);return isVisible.on(\"change\",visible=>{manageVisibility(visible);});},[]);const visibility=isCanvas?\"visible\":useTransform(wrappedValue,[scrollRange[0]-size.viewportLength,mix(scrollRange[1],scrollRange[2],.5),scrollRange[3]+size.viewportLength],[\"hidden\",\"visible\",\"hidden\"]);const key=slideKey+\"child\";return /*#__PURE__*/_jsx(LayoutGroup,{inherit:\"id\",id:key,children:/*#__PURE__*/_jsx(\"li\",{style:{display:\"contents\"},children:/*#__PURE__*/cloneElement(child,{ref:ref??fallbackRef,key,style:{...child.props?.style,flexShrink:0,userSelect:\"none\",width,height,opacity:opacity,scale:scale,originX:isHorizontal?originXorY:.5,originY:!isHorizontal?originXorY:.5,rotateY:isHorizontal?rotateY:0,rotateX:!isHorizontal?rotateX:0,visibility},layoutId:child.props.layoutId?child.props.layoutId+\"-original-\"+index:undefined})})});}));const Dot=/*#__PURE__*/memo(function Dot({selectedOpacity,opacity,total,index,wrappedIndex,wrappedIndexInverted,dotStyle,buttonStyle,gap,padding,isHorizontal,isInverted,...props}){/* Check active item *//* Go 0—1—2—3—4—5—0 */let isSelected=wrappedIndex===index;/* Go 0—5—4—3—2—1—0—5 instead when inverted */if(isInverted){isSelected=Math.abs(wrappedIndexInverted)===index;}const inlinePadding=gap/2;const top=!isHorizontal&&index>0?inlinePadding:padding;const bottom=!isHorizontal&&index!==total-1?inlinePadding:padding;const right=isHorizontal&&index!==total-1?inlinePadding:padding;const left=isHorizontal&&index>0?inlinePadding:padding;return /*#__PURE__*/_jsx(\"button\",{\"aria-label\":`Scroll to page ${index+1}`,type:\"button\",...props,style:{...buttonStyle,padding:`${top}px ${right}px ${bottom}px ${left}px`},children:/*#__PURE__*/_jsx(motion.div,{style:{...dotStyle},initial:false,animate:{opacity:isSelected?selectedOpacity:opacity},transition:{duration:.3}})});});/* Dot Styles */const dotsContainerStyle={display:\"flex\",placeContent:\"center\",placeItems:\"center\",overflow:\"hidden\",position:\"absolute\",pointerEvents:\"auto\"};const dotStyle={borderRadius:\"50%\",background:\"white\",cursor:\"pointer\",border:\"none\",placeContent:\"center\",placeItems:\"center\",padding:0};function useWritingDirection(){const[writingDirection,setWritingDirection]=useState(\"ltr\");// must be done this way to ensure that there isn't a mismatch with SSG\n// which leads to button images not updating for the real writing direction\nuseEffect(()=>{if(window?.document?.documentElement?.dir===\"rtl\"){setWritingDirection(\"rtl\");}},[]);return writingDirection;}function getSlideshowResolvedDirection(direction,writingDirection){if(writingDirection!==\"rtl\")return direction;if(direction===\"left\")return\"right\";if(direction===\"right\")return\"left\";return direction;}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Slideshow\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"200\",\"framerIntrinsicWidth\":\"400\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerDisableUnlink\":\"*\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SlideShow.map","// Generated by Framer (3406f4c)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"CUSTOM;Pretendard SemiBold\"]);export const fonts=[{explicitInter:true,fonts:[{family:\"Pretendard SemiBold\",source:\"custom\",url:\"https://framerusercontent.com/assets/E17LcCMFePu0INVp2cAUUVroewU.woff2\"}]}];export const css=['.framer-WrmTl .framer-styles-preset-1mmeaok:not(.rich-text-wrapper), .framer-WrmTl .framer-styles-preset-1mmeaok.rich-text-wrapper p { --framer-font-family: \"Pretendard SemiBold\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: calc(var(--framer-root-font-size, 1rem) * 1.25); --framer-font-style: normal; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-letter-spacing: -0.4px; --framer-line-height: 1.2em; --framer-paragraph-spacing: 20px; --framer-text-alignment: left; --framer-text-color: #000000; --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: uppercase; }'];export const className=\"framer-WrmTl\";\nexport const __FramerMetadata__ = {\"exports\":{\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (2797bee)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"CUSTOM;Pretendard Regular\"]);export const fonts=[{explicitInter:true,fonts:[{family:\"Pretendard Regular\",source:\"custom\",url:\"https://framerusercontent.com/assets/qaw3yIgC8TiP4kMN2BaWGREjykY.woff2\"}]}];export const css=[\".framer-Ufrdn .framer-styles-preset-cdbh5g:not(.rich-text-wrapper), .framer-Ufrdn .framer-styles-preset-cdbh5g.rich-text-wrapper p { --framer-font-family: \\\"Pretendard Regular\\\", \\\"Pretendard Regular Placeholder\\\", sans-serif; --framer-font-open-type-features: 'blwf' on, 'cv09' on, 'cv03' on, 'cv04' on, 'cv11' on; --framer-font-size: calc(var(--framer-root-font-size, 1rem) * 0.95); --framer-font-style: normal; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-letter-spacing: 0em; --framer-line-height: 1.4em; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: #000000; --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }\"];export const className=\"framer-Ufrdn\";\nexport const __FramerMetadata__ = {\"exports\":{\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (2797bee)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"CUSTOM;Pretendard Light\"]);export const fonts=[{explicitInter:true,fonts:[{family:\"Pretendard Light\",source:\"custom\",url:\"https://framerusercontent.com/assets/fcTizu3U5hO3KR3Gd9x5tDDZ8.woff2\"}]}];export const css=['.framer-D7cH4 .framer-styles-preset-1ao1r2p:not(.rich-text-wrapper), .framer-D7cH4 .framer-styles-preset-1ao1r2p.rich-text-wrapper p { --framer-font-family: \"Pretendard Light\", \"Pretendard Light Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: calc(var(--framer-root-font-size, 1rem) * 0.95); --framer-font-style: normal; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-letter-spacing: 0em; --framer-line-height: 1.5em; --framer-paragraph-spacing: 20px; --framer-text-alignment: left; --framer-text-color: #000000; --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: uppercase; }'];export const className=\"framer-D7cH4\";\nexport const __FramerMetadata__ = {\"exports\":{\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"x_google_ignoreList":[2,3,4,5,48,49,50,75,76,77,78,79,80,81,82,88,89,90,91,125,164,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,232,237],"mappings":"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"}