@anker-in/headless-ui 1.1.33 → 1.1.34-alpha.1768461697532
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/biz-components/AccordionCards/index.d.ts +3 -3
- package/dist/cjs/biz-components/ActiveShelf/index.d.ts +222 -0
- package/dist/cjs/biz-components/ActiveShelf/index.js +2 -0
- package/dist/cjs/biz-components/ActiveShelf/index.js.map +7 -0
- package/dist/cjs/biz-components/ActiveShelf/types.d.ts +22 -0
- package/dist/cjs/biz-components/ActiveShelf/types.js +2 -0
- package/dist/cjs/biz-components/ActiveShelf/types.js.map +7 -0
- package/dist/cjs/biz-components/AiuiProvider/index.d.ts +7 -0
- package/dist/cjs/biz-components/AiuiProvider/index.js +1 -1
- package/dist/cjs/biz-components/AiuiProvider/index.js.map +2 -2
- package/dist/cjs/biz-components/AnchorNavigation/index.d.ts +42 -0
- package/dist/cjs/biz-components/AnchorNavigation/index.js +2 -0
- package/dist/cjs/biz-components/AnchorNavigation/index.js.map +7 -0
- package/dist/cjs/biz-components/AnchorNavigation/useAnchorPosition.d.ts +2 -0
- package/dist/cjs/biz-components/AnchorNavigation/useAnchorPosition.js +2 -0
- package/dist/cjs/biz-components/AnchorNavigation/useAnchorPosition.js.map +7 -0
- package/dist/cjs/biz-components/AplusDesc/index.d.ts +3 -3
- package/dist/cjs/biz-components/BrandCardLink/BrandCardLink.d.ts +3 -3
- package/dist/cjs/biz-components/BrandCardLink/BrandCardLink.js +1 -1
- package/dist/cjs/biz-components/BrandCardLink/BrandCardLink.js.map +1 -1
- package/dist/cjs/biz-components/BrandEquity/BrandEquity.d.ts +3 -3
- package/dist/cjs/biz-components/BrandEquity/BrandEquity.js +1 -1
- package/dist/cjs/biz-components/BrandEquity/BrandEquity.js.map +3 -3
- package/dist/cjs/biz-components/BrandEquity/types.d.ts +1 -0
- package/dist/cjs/biz-components/BrandEquity/types.js +1 -1
- package/dist/cjs/biz-components/BrandEquity/types.js.map +1 -1
- package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.d.ts +74 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.js +2 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.js.map +7 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/hooks/useBogoDataTransform.d.ts +36 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/hooks/useBogoDataTransform.js +2 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/hooks/useBogoDataTransform.js.map +7 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/index.d.ts +193 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/index.js +2 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/index.js.map +7 -0
- package/dist/cjs/biz-components/Category/index.d.ts +3 -3
- package/dist/cjs/biz-components/CreativeModule/index.d.ts +3 -3
- package/dist/cjs/biz-components/DownLoad/index.d.ts +3 -3
- package/dist/cjs/biz-components/Evaluate/index.d.ts +3 -3
- package/dist/cjs/biz-components/EventSchedule/index.d.ts +63 -0
- package/dist/cjs/biz-components/EventSchedule/index.js +2 -0
- package/dist/cjs/biz-components/EventSchedule/index.js.map +7 -0
- package/dist/cjs/biz-components/Faq/Faq.d.ts +3 -3
- package/dist/cjs/biz-components/FeatureCards/FeatureCards.d.ts +3 -3
- package/dist/cjs/biz-components/FeatureShowcase/FeatureShowcase.d.ts +3 -3
- package/dist/cjs/biz-components/Features/index.d.ts +3 -3
- package/dist/cjs/biz-components/FootCharger/index.d.ts +3 -3
- package/dist/cjs/biz-components/FooterNavigation/index.d.ts +3 -3
- package/dist/cjs/biz-components/GiftBox/index.d.ts +3 -3
- package/dist/cjs/biz-components/Graphic/index.d.ts +3 -3
- package/dist/cjs/biz-components/GraphicAttractionBlock/index.d.ts +3 -3
- package/dist/cjs/biz-components/GraphicMore/index.d.ts +3 -3
- package/dist/cjs/biz-components/GraphicOverlay/GraphicOverlay.d.ts +3 -3
- package/dist/cjs/biz-components/HeaderNavigation/MobileSidebarMenu.js +1 -1
- package/dist/cjs/biz-components/HeaderNavigation/MobileSidebarMenu.js.map +3 -3
- package/dist/cjs/biz-components/HeaderNavigation/SidebarDropdown.js +1 -1
- package/dist/cjs/biz-components/HeaderNavigation/SidebarDropdown.js.map +2 -2
- package/dist/cjs/biz-components/HeaderNavigation/index.d.ts +3 -3
- package/dist/cjs/biz-components/HeroBanner/Countdown.js +1 -1
- package/dist/cjs/biz-components/HeroBanner/Countdown.js.map +2 -2
- package/dist/cjs/biz-components/HeroBanner/HeroBanner.d.ts +6 -3
- package/dist/cjs/biz-components/HeroBanner/HeroBanner.js +1 -1
- package/dist/cjs/biz-components/HeroBanner/HeroBanner.js.map +3 -3
- package/dist/cjs/biz-components/IPRedirect/RegionBanner.d.ts +37 -0
- package/dist/cjs/biz-components/IPRedirect/RegionBanner.js +60 -0
- package/dist/cjs/biz-components/IPRedirect/RegionBanner.js.map +7 -0
- package/dist/cjs/biz-components/IPRedirect/RegionSelectorModal.d.ts +47 -0
- package/dist/cjs/biz-components/IPRedirect/RegionSelectorModal.js +69 -0
- package/dist/cjs/biz-components/IPRedirect/RegionSelectorModal.js.map +7 -0
- package/dist/cjs/biz-components/IPRedirect/index.d.ts +9 -0
- package/dist/cjs/biz-components/IPRedirect/index.js +2 -0
- package/dist/cjs/biz-components/IPRedirect/index.js.map +7 -0
- package/dist/cjs/biz-components/IPRedirect/type.d.ts +36 -0
- package/dist/cjs/biz-components/IPRedirect/type.js +2 -0
- package/dist/cjs/biz-components/IPRedirect/type.js.map +7 -0
- package/dist/cjs/biz-components/IPRedirect/useAutoRedirect.d.ts +66 -0
- package/dist/cjs/biz-components/IPRedirect/useAutoRedirect.js +2 -0
- package/dist/cjs/biz-components/IPRedirect/useAutoRedirect.js.map +7 -0
- package/dist/cjs/biz-components/IPRedirect/useDetectedRegionRedirect.d.ts +51 -0
- package/dist/cjs/biz-components/IPRedirect/useDetectedRegionRedirect.js +2 -0
- package/dist/cjs/biz-components/IPRedirect/useDetectedRegionRedirect.js.map +7 -0
- package/dist/cjs/biz-components/IPRedirect/useIPRedirect.d.ts +42 -0
- package/dist/cjs/biz-components/IPRedirect/useIPRedirect.js +2 -0
- package/dist/cjs/biz-components/IPRedirect/useIPRedirect.js.map +7 -0
- package/dist/cjs/biz-components/IPRedirect/useRedirectBanner.d.ts +108 -0
- package/dist/cjs/biz-components/IPRedirect/useRedirectBanner.js +2 -0
- package/dist/cjs/biz-components/IPRedirect/useRedirectBanner.js.map +7 -0
- package/dist/cjs/biz-components/IPRedirect/useRegionRedirectManager.d.ts +152 -0
- package/dist/cjs/biz-components/IPRedirect/useRegionRedirectManager.js +2 -0
- package/dist/cjs/biz-components/IPRedirect/useRegionRedirectManager.js.map +7 -0
- package/dist/cjs/biz-components/IPRedirect/useSavedRegionRedirect.d.ts +51 -0
- package/dist/cjs/biz-components/IPRedirect/useSavedRegionRedirect.js +2 -0
- package/dist/cjs/biz-components/IPRedirect/useSavedRegionRedirect.js.map +7 -0
- package/dist/cjs/biz-components/IPRedirect/utils.d.ts +222 -0
- package/dist/cjs/biz-components/IPRedirect/utils.js +2 -0
- package/dist/cjs/biz-components/IPRedirect/utils.js.map +7 -0
- package/dist/cjs/biz-components/ImageOverlayShelf/index.d.ts +130 -0
- package/dist/cjs/biz-components/ImageOverlayShelf/index.js +2 -0
- package/dist/cjs/biz-components/ImageOverlayShelf/index.js.map +7 -0
- package/dist/cjs/biz-components/ImageTextFeature/ImageTextFeature.d.ts +3 -3
- package/dist/cjs/biz-components/ImageTextFeature/ImageTextFeature.js +1 -1
- package/dist/cjs/biz-components/ImageTextFeature/ImageTextFeature.js.map +3 -3
- package/dist/cjs/biz-components/ImageWithText/ImageWithText.d.ts +3 -3
- package/dist/cjs/biz-components/Ksp/index.d.ts +3 -3
- package/dist/cjs/biz-components/Listing/components/PaidShipping/index.d.ts +4 -4
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.d.ts +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.d.ts +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.d.ts +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.d.ts +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.d.ts +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductOptions/index.d.ts +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGallery/index.d.ts +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductSummary/index.d.ts +3 -3
- package/dist/cjs/biz-components/Listing/components/PurchaseBar/index.d.ts +3 -3
- package/dist/cjs/biz-components/Marquee/Marquee.d.ts +3 -3
- package/dist/cjs/biz-components/Marquee/Marquee.js +1 -1
- package/dist/cjs/biz-components/Marquee/Marquee.js.map +3 -3
- package/dist/cjs/biz-components/MarqueeReview/index.d.ts +3 -3
- package/dist/cjs/biz-components/Media/index.d.ts +32 -0
- package/dist/cjs/biz-components/Media/index.js +2 -0
- package/dist/cjs/biz-components/Media/index.js.map +7 -0
- package/dist/cjs/biz-components/MediaPlayerBase/index.d.ts +3 -3
- package/dist/cjs/biz-components/MediaPlayerMulti/index.d.ts +3 -3
- package/dist/cjs/biz-components/MediaPlayerSticky/index.d.ts +4 -4
- package/dist/cjs/biz-components/MediaPlayerSticky/types.d.ts +1 -0
- package/dist/cjs/biz-components/MediaPlayerSticky/types.js +1 -1
- package/dist/cjs/biz-components/MediaPlayerSticky/types.js.map +1 -1
- package/dist/cjs/biz-components/MediaSceneSwitcher/MediaSceneSwitcher.d.ts +3 -3
- package/dist/cjs/biz-components/MediaShelf/index.d.ts +216 -0
- package/dist/cjs/biz-components/MediaShelf/index.js +2 -0
- package/dist/cjs/biz-components/MediaShelf/index.js.map +7 -0
- package/dist/cjs/biz-components/MediaShelf/types.d.ts +22 -0
- package/dist/cjs/biz-components/MediaShelf/types.js +2 -0
- package/dist/cjs/biz-components/MediaShelf/types.js.map +7 -0
- package/dist/cjs/biz-components/MemberEquity/index.d.ts +3 -3
- package/dist/cjs/biz-components/MiniCart/index.d.ts +88 -0
- package/dist/cjs/biz-components/MiniCart/index.js +2 -0
- package/dist/cjs/biz-components/MiniCart/index.js.map +7 -0
- package/dist/cjs/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.d.ts +3 -3
- package/dist/cjs/biz-components/ProductCompare/index.d.ts +3 -3
- package/dist/cjs/biz-components/ProductHero/ProductHero.d.ts +3 -3
- package/dist/cjs/biz-components/ProductNav/ProductNav.d.ts +3 -3
- package/dist/cjs/biz-components/PromotionalBar/index.d.ts +49 -0
- package/dist/cjs/biz-components/PromotionalBar/index.js +2 -0
- package/dist/cjs/biz-components/PromotionalBar/index.js.map +7 -0
- package/dist/cjs/biz-components/SecondaryBanner/index.d.ts +69 -0
- package/dist/cjs/biz-components/SecondaryBanner/index.js +2 -0
- package/dist/cjs/biz-components/SecondaryBanner/index.js.map +7 -0
- package/dist/cjs/biz-components/SelectStore/index.d.ts +3 -3
- package/dist/cjs/biz-components/ShelfDisplay/index.d.ts +3 -3
- package/dist/cjs/biz-components/ShelfDisplay/shelfDisplay.d.ts +0 -11
- package/dist/cjs/biz-components/ShelfDisplay/shelfDisplay.js +1 -1
- package/dist/cjs/biz-components/ShelfDisplay/shelfDisplay.js.map +3 -3
- package/dist/cjs/biz-components/Slogan/index.d.ts +3 -3
- package/dist/cjs/biz-components/Spacer/index.d.ts +3 -3
- package/dist/cjs/biz-components/Specs/index.d.ts +3 -3
- package/dist/cjs/biz-components/Specs/index.js +1 -1
- package/dist/cjs/biz-components/Specs/index.js.map +2 -2
- package/dist/cjs/biz-components/SpecsComparison/SpecsComparison.d.ts +3 -3
- package/dist/cjs/biz-components/TabWithImage/TabWithImage.d.ts +3 -3
- package/dist/cjs/biz-components/Tabs/Tabs.d.ts +3 -3
- package/dist/cjs/biz-components/TabsGroup/index.d.ts +3 -3
- package/dist/cjs/biz-components/TabsWithMedia/TabsWithMedia.d.ts +3 -3
- package/dist/cjs/biz-components/ThreeDCarousel/ThreeDCarousel.d.ts +3 -3
- package/dist/cjs/biz-components/Title/Countdown.d.ts +14 -0
- package/dist/cjs/biz-components/Title/Countdown.js +2 -0
- package/dist/cjs/biz-components/Title/Countdown.js.map +7 -0
- package/dist/cjs/biz-components/Title/index.d.ts +3 -3
- package/dist/cjs/biz-components/Title/index.js +1 -1
- package/dist/cjs/biz-components/Title/index.js.map +3 -3
- package/dist/cjs/biz-components/Title/types.d.ts +55 -0
- package/dist/cjs/biz-components/Title/types.js +1 -1
- package/dist/cjs/biz-components/Title/types.js.map +1 -1
- package/dist/cjs/biz-components/VideoFeature/VideoFeature.d.ts +3 -3
- package/dist/cjs/biz-components/WheelLottery/BaseModal.d.ts +55 -0
- package/dist/cjs/biz-components/WheelLottery/BaseModal.js +12 -0
- package/dist/cjs/biz-components/WheelLottery/BaseModal.js.map +7 -0
- package/dist/cjs/biz-components/WheelLottery/ChanceMethods.d.ts +30 -0
- package/dist/cjs/biz-components/WheelLottery/ChanceMethods.js +2 -0
- package/dist/cjs/biz-components/WheelLottery/ChanceMethods.js.map +7 -0
- package/dist/cjs/biz-components/WheelLottery/ErrorModal.d.ts +42 -0
- package/dist/cjs/biz-components/WheelLottery/ErrorModal.js +2 -0
- package/dist/cjs/biz-components/WheelLottery/ErrorModal.js.map +7 -0
- package/dist/cjs/biz-components/WheelLottery/MyRewardsModal.d.ts +91 -0
- package/dist/cjs/biz-components/WheelLottery/MyRewardsModal.js +2 -0
- package/dist/cjs/biz-components/WheelLottery/MyRewardsModal.js.map +7 -0
- package/dist/cjs/biz-components/WheelLottery/PrizePool.d.ts +26 -0
- package/dist/cjs/biz-components/WheelLottery/PrizePool.js +2 -0
- package/dist/cjs/biz-components/WheelLottery/PrizePool.js.map +7 -0
- package/dist/cjs/biz-components/WheelLottery/RulesModal.d.ts +43 -0
- package/dist/cjs/biz-components/WheelLottery/RulesModal.js +2 -0
- package/dist/cjs/biz-components/WheelLottery/RulesModal.js.map +7 -0
- package/dist/cjs/biz-components/WheelLottery/ShareModal.d.ts +74 -0
- package/dist/cjs/biz-components/WheelLottery/ShareModal.js +2 -0
- package/dist/cjs/biz-components/WheelLottery/ShareModal.js.map +7 -0
- package/dist/cjs/biz-components/WheelLottery/Wheel.d.ts +27 -0
- package/dist/cjs/biz-components/WheelLottery/Wheel.js +2 -0
- package/dist/cjs/biz-components/WheelLottery/Wheel.js.map +7 -0
- package/dist/cjs/biz-components/WheelLottery/WinnerModal.d.ts +25 -0
- package/dist/cjs/biz-components/WheelLottery/WinnerModal.js +2 -0
- package/dist/cjs/biz-components/WheelLottery/WinnerModal.js.map +7 -0
- package/dist/cjs/biz-components/WheelLottery/index.d.ts +52 -0
- package/dist/cjs/biz-components/WheelLottery/index.js +2 -0
- package/dist/cjs/biz-components/WheelLottery/index.js.map +7 -0
- package/dist/cjs/biz-components/WheelLottery/types.d.ts +1193 -0
- package/dist/cjs/biz-components/WheelLottery/types.js +2 -0
- package/dist/cjs/biz-components/WheelLottery/types.js.map +7 -0
- package/dist/cjs/biz-components/WhyChoose/WhyChoose.d.ts +3 -3
- package/dist/cjs/biz-components/index.d.ts +30 -2
- package/dist/cjs/biz-components/index.js +1 -1
- package/dist/cjs/biz-components/index.js.map +3 -3
- package/dist/cjs/components/badge.js +1 -1
- package/dist/cjs/components/badge.js.map +2 -2
- package/dist/cjs/components/index.d.ts +2 -0
- package/dist/cjs/components/index.js +1 -1
- package/dist/cjs/components/index.js.map +3 -3
- package/dist/cjs/components/paginator.d.ts +12 -0
- package/dist/cjs/components/paginator.js +7 -0
- package/dist/cjs/components/paginator.js.map +7 -0
- package/dist/cjs/components/progress.d.ts +46 -0
- package/dist/cjs/components/progress.js +2 -0
- package/dist/cjs/components/progress.js.map +7 -0
- package/dist/cjs/components/tabs.d.ts +2 -1
- package/dist/cjs/components/tabs.js +1 -1
- package/dist/cjs/components/tabs.js.map +2 -2
- package/dist/cjs/helpers/index.d.ts +1 -0
- package/dist/cjs/helpers/index.js +1 -1
- package/dist/cjs/helpers/index.js.map +3 -3
- package/dist/cjs/helpers/priceFormatting.d.ts +11 -0
- package/dist/cjs/helpers/priceFormatting.js +2 -0
- package/dist/cjs/helpers/priceFormatting.js.map +7 -0
- package/dist/cjs/shared/Styles.d.ts +5 -4
- package/dist/cjs/shared/Styles.js +1 -1
- package/dist/cjs/shared/Styles.js.map +3 -3
- package/dist/cjs/types/props.d.ts +0 -3
- package/dist/cjs/types/props.js +1 -1
- package/dist/cjs/types/props.js.map +1 -1
- package/dist/esm/biz-components/AccordionCards/index.d.ts +3 -3
- package/dist/esm/biz-components/ActiveShelf/index.d.ts +222 -0
- package/dist/esm/biz-components/ActiveShelf/index.js +2 -0
- package/dist/esm/biz-components/ActiveShelf/index.js.map +7 -0
- package/dist/esm/biz-components/ActiveShelf/types.d.ts +22 -0
- package/dist/esm/biz-components/ActiveShelf/types.js +1 -0
- package/dist/esm/biz-components/ActiveShelf/types.js.map +7 -0
- package/dist/esm/biz-components/AiuiProvider/index.d.ts +7 -0
- package/dist/esm/biz-components/AiuiProvider/index.js +1 -1
- package/dist/esm/biz-components/AiuiProvider/index.js.map +2 -2
- package/dist/esm/biz-components/AnchorNavigation/index.d.ts +42 -0
- package/dist/esm/biz-components/AnchorNavigation/index.js +2 -0
- package/dist/esm/biz-components/AnchorNavigation/index.js.map +7 -0
- package/dist/esm/biz-components/AnchorNavigation/useAnchorPosition.d.ts +2 -0
- package/dist/esm/biz-components/AnchorNavigation/useAnchorPosition.js +2 -0
- package/dist/esm/biz-components/AnchorNavigation/useAnchorPosition.js.map +7 -0
- package/dist/esm/biz-components/AplusDesc/index.d.ts +3 -3
- package/dist/esm/biz-components/BrandCardLink/BrandCardLink.d.ts +3 -3
- package/dist/esm/biz-components/BrandCardLink/BrandCardLink.js +1 -1
- package/dist/esm/biz-components/BrandCardLink/BrandCardLink.js.map +1 -1
- package/dist/esm/biz-components/BrandEquity/BrandEquity.d.ts +3 -3
- package/dist/esm/biz-components/BrandEquity/BrandEquity.js +1 -1
- package/dist/esm/biz-components/BrandEquity/BrandEquity.js.map +3 -3
- package/dist/esm/biz-components/BrandEquity/types.d.ts +1 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.d.ts +74 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.js +2 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.js.map +7 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/hooks/useBogoDataTransform.d.ts +36 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/hooks/useBogoDataTransform.js +2 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/hooks/useBogoDataTransform.js.map +7 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/index.d.ts +193 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/index.js +2 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/index.js.map +7 -0
- package/dist/esm/biz-components/Category/index.d.ts +3 -3
- package/dist/esm/biz-components/CreativeModule/index.d.ts +3 -3
- package/dist/esm/biz-components/DownLoad/index.d.ts +3 -3
- package/dist/esm/biz-components/Evaluate/index.d.ts +3 -3
- package/dist/esm/biz-components/EventSchedule/index.d.ts +63 -0
- package/dist/esm/biz-components/EventSchedule/index.js +2 -0
- package/dist/esm/biz-components/EventSchedule/index.js.map +7 -0
- package/dist/esm/biz-components/Faq/Faq.d.ts +3 -3
- package/dist/esm/biz-components/FeatureCards/FeatureCards.d.ts +3 -3
- package/dist/esm/biz-components/FeatureShowcase/FeatureShowcase.d.ts +3 -3
- package/dist/esm/biz-components/Features/index.d.ts +3 -3
- package/dist/esm/biz-components/FootCharger/index.d.ts +3 -3
- package/dist/esm/biz-components/FooterNavigation/index.d.ts +3 -3
- package/dist/esm/biz-components/GiftBox/index.d.ts +3 -3
- package/dist/esm/biz-components/Graphic/index.d.ts +3 -3
- package/dist/esm/biz-components/GraphicAttractionBlock/index.d.ts +3 -3
- package/dist/esm/biz-components/GraphicMore/index.d.ts +3 -3
- package/dist/esm/biz-components/GraphicOverlay/GraphicOverlay.d.ts +3 -3
- package/dist/esm/biz-components/HeaderNavigation/MobileSidebarMenu.js +1 -1
- package/dist/esm/biz-components/HeaderNavigation/MobileSidebarMenu.js.map +3 -3
- package/dist/esm/biz-components/HeaderNavigation/SidebarDropdown.js +1 -1
- package/dist/esm/biz-components/HeaderNavigation/SidebarDropdown.js.map +2 -2
- package/dist/esm/biz-components/HeaderNavigation/index.d.ts +3 -3
- package/dist/esm/biz-components/HeroBanner/Countdown.js +1 -1
- package/dist/esm/biz-components/HeroBanner/Countdown.js.map +2 -2
- package/dist/esm/biz-components/HeroBanner/HeroBanner.d.ts +6 -3
- package/dist/esm/biz-components/HeroBanner/HeroBanner.js +1 -1
- package/dist/esm/biz-components/HeroBanner/HeroBanner.js.map +3 -3
- package/dist/esm/biz-components/IPRedirect/RegionBanner.d.ts +37 -0
- package/dist/esm/biz-components/IPRedirect/RegionBanner.js +60 -0
- package/dist/esm/biz-components/IPRedirect/RegionBanner.js.map +7 -0
- package/dist/esm/biz-components/IPRedirect/RegionSelectorModal.d.ts +47 -0
- package/dist/esm/biz-components/IPRedirect/RegionSelectorModal.js +69 -0
- package/dist/esm/biz-components/IPRedirect/RegionSelectorModal.js.map +7 -0
- package/dist/esm/biz-components/IPRedirect/index.d.ts +9 -0
- package/dist/esm/biz-components/IPRedirect/index.js +2 -0
- package/dist/esm/biz-components/IPRedirect/index.js.map +7 -0
- package/dist/esm/biz-components/IPRedirect/type.d.ts +36 -0
- package/dist/esm/biz-components/IPRedirect/type.js +1 -0
- package/dist/esm/biz-components/IPRedirect/type.js.map +7 -0
- package/dist/esm/biz-components/IPRedirect/useAutoRedirect.d.ts +66 -0
- package/dist/esm/biz-components/IPRedirect/useAutoRedirect.js +2 -0
- package/dist/esm/biz-components/IPRedirect/useAutoRedirect.js.map +7 -0
- package/dist/esm/biz-components/IPRedirect/useDetectedRegionRedirect.d.ts +51 -0
- package/dist/esm/biz-components/IPRedirect/useDetectedRegionRedirect.js +2 -0
- package/dist/esm/biz-components/IPRedirect/useDetectedRegionRedirect.js.map +7 -0
- package/dist/esm/biz-components/IPRedirect/useIPRedirect.d.ts +42 -0
- package/dist/esm/biz-components/IPRedirect/useIPRedirect.js +2 -0
- package/dist/esm/biz-components/IPRedirect/useIPRedirect.js.map +7 -0
- package/dist/esm/biz-components/IPRedirect/useRedirectBanner.d.ts +108 -0
- package/dist/esm/biz-components/IPRedirect/useRedirectBanner.js +2 -0
- package/dist/esm/biz-components/IPRedirect/useRedirectBanner.js.map +7 -0
- package/dist/esm/biz-components/IPRedirect/useRegionRedirectManager.d.ts +152 -0
- package/dist/esm/biz-components/IPRedirect/useRegionRedirectManager.js +2 -0
- package/dist/esm/biz-components/IPRedirect/useRegionRedirectManager.js.map +7 -0
- package/dist/esm/biz-components/IPRedirect/useSavedRegionRedirect.d.ts +51 -0
- package/dist/esm/biz-components/IPRedirect/useSavedRegionRedirect.js +2 -0
- package/dist/esm/biz-components/IPRedirect/useSavedRegionRedirect.js.map +7 -0
- package/dist/esm/biz-components/IPRedirect/utils.d.ts +222 -0
- package/dist/esm/biz-components/IPRedirect/utils.js +2 -0
- package/dist/esm/biz-components/IPRedirect/utils.js.map +7 -0
- package/dist/esm/biz-components/ImageOverlayShelf/index.d.ts +130 -0
- package/dist/esm/biz-components/ImageOverlayShelf/index.js +2 -0
- package/dist/esm/biz-components/ImageOverlayShelf/index.js.map +7 -0
- package/dist/esm/biz-components/ImageTextFeature/ImageTextFeature.d.ts +3 -3
- package/dist/esm/biz-components/ImageTextFeature/ImageTextFeature.js +1 -1
- package/dist/esm/biz-components/ImageTextFeature/ImageTextFeature.js.map +3 -3
- package/dist/esm/biz-components/ImageWithText/ImageWithText.d.ts +3 -3
- package/dist/esm/biz-components/Ksp/index.d.ts +3 -3
- package/dist/esm/biz-components/Listing/components/PaidShipping/index.d.ts +4 -4
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.d.ts +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.d.ts +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.d.ts +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.d.ts +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.d.ts +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductOptions/index.d.ts +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductGallery/index.d.ts +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductSummary/index.d.ts +3 -3
- package/dist/esm/biz-components/Listing/components/PurchaseBar/index.d.ts +3 -3
- package/dist/esm/biz-components/Marquee/Marquee.d.ts +3 -3
- package/dist/esm/biz-components/Marquee/Marquee.js +1 -1
- package/dist/esm/biz-components/Marquee/Marquee.js.map +3 -3
- package/dist/esm/biz-components/MarqueeReview/index.d.ts +3 -3
- package/dist/esm/biz-components/Media/index.d.ts +32 -0
- package/dist/esm/biz-components/Media/index.js +2 -0
- package/dist/esm/biz-components/Media/index.js.map +7 -0
- package/dist/esm/biz-components/MediaPlayerBase/index.d.ts +3 -3
- package/dist/esm/biz-components/MediaPlayerMulti/index.d.ts +3 -3
- package/dist/esm/biz-components/MediaPlayerSticky/index.d.ts +4 -4
- package/dist/esm/biz-components/MediaPlayerSticky/types.d.ts +1 -0
- package/dist/esm/biz-components/MediaSceneSwitcher/MediaSceneSwitcher.d.ts +3 -3
- package/dist/esm/biz-components/MediaShelf/index.d.ts +216 -0
- package/dist/esm/biz-components/MediaShelf/index.js +2 -0
- package/dist/esm/biz-components/MediaShelf/index.js.map +7 -0
- package/dist/esm/biz-components/MediaShelf/types.d.ts +22 -0
- package/dist/esm/biz-components/MediaShelf/types.js +1 -0
- package/dist/esm/biz-components/MediaShelf/types.js.map +7 -0
- package/dist/esm/biz-components/MemberEquity/index.d.ts +3 -3
- package/dist/esm/biz-components/MiniCart/index.d.ts +88 -0
- package/dist/esm/biz-components/MiniCart/index.js +2 -0
- package/dist/esm/biz-components/MiniCart/index.js.map +7 -0
- package/dist/esm/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.d.ts +3 -3
- package/dist/esm/biz-components/ProductCompare/index.d.ts +3 -3
- package/dist/esm/biz-components/ProductHero/ProductHero.d.ts +3 -3
- package/dist/esm/biz-components/ProductNav/ProductNav.d.ts +3 -3
- package/dist/esm/biz-components/PromotionalBar/index.d.ts +49 -0
- package/dist/esm/biz-components/PromotionalBar/index.js +2 -0
- package/dist/esm/biz-components/PromotionalBar/index.js.map +7 -0
- package/dist/esm/biz-components/SecondaryBanner/index.d.ts +69 -0
- package/dist/esm/biz-components/SecondaryBanner/index.js +2 -0
- package/dist/esm/biz-components/SecondaryBanner/index.js.map +7 -0
- package/dist/esm/biz-components/SelectStore/index.d.ts +3 -3
- package/dist/esm/biz-components/ShelfDisplay/index.d.ts +3 -3
- package/dist/esm/biz-components/ShelfDisplay/shelfDisplay.d.ts +0 -11
- package/dist/esm/biz-components/ShelfDisplay/shelfDisplay.js +1 -1
- package/dist/esm/biz-components/ShelfDisplay/shelfDisplay.js.map +3 -3
- package/dist/esm/biz-components/Slogan/index.d.ts +3 -3
- package/dist/esm/biz-components/Spacer/index.d.ts +3 -3
- package/dist/esm/biz-components/Specs/index.d.ts +3 -3
- package/dist/esm/biz-components/Specs/index.js +1 -1
- package/dist/esm/biz-components/Specs/index.js.map +2 -2
- package/dist/esm/biz-components/SpecsComparison/SpecsComparison.d.ts +3 -3
- package/dist/esm/biz-components/TabWithImage/TabWithImage.d.ts +3 -3
- package/dist/esm/biz-components/Tabs/Tabs.d.ts +3 -3
- package/dist/esm/biz-components/TabsGroup/index.d.ts +3 -3
- package/dist/esm/biz-components/TabsWithMedia/TabsWithMedia.d.ts +3 -3
- package/dist/esm/biz-components/ThreeDCarousel/ThreeDCarousel.d.ts +3 -3
- package/dist/esm/biz-components/Title/Countdown.d.ts +14 -0
- package/dist/esm/biz-components/Title/Countdown.js +2 -0
- package/dist/esm/biz-components/Title/Countdown.js.map +7 -0
- package/dist/esm/biz-components/Title/index.d.ts +3 -3
- package/dist/esm/biz-components/Title/index.js +1 -1
- package/dist/esm/biz-components/Title/index.js.map +3 -3
- package/dist/esm/biz-components/Title/types.d.ts +55 -0
- package/dist/esm/biz-components/VideoFeature/VideoFeature.d.ts +3 -3
- package/dist/esm/biz-components/WheelLottery/BaseModal.d.ts +55 -0
- package/dist/esm/biz-components/WheelLottery/BaseModal.js +12 -0
- package/dist/esm/biz-components/WheelLottery/BaseModal.js.map +7 -0
- package/dist/esm/biz-components/WheelLottery/ChanceMethods.d.ts +30 -0
- package/dist/esm/biz-components/WheelLottery/ChanceMethods.js +2 -0
- package/dist/esm/biz-components/WheelLottery/ChanceMethods.js.map +7 -0
- package/dist/esm/biz-components/WheelLottery/ErrorModal.d.ts +42 -0
- package/dist/esm/biz-components/WheelLottery/ErrorModal.js +2 -0
- package/dist/esm/biz-components/WheelLottery/ErrorModal.js.map +7 -0
- package/dist/esm/biz-components/WheelLottery/MyRewardsModal.d.ts +91 -0
- package/dist/esm/biz-components/WheelLottery/MyRewardsModal.js +2 -0
- package/dist/esm/biz-components/WheelLottery/MyRewardsModal.js.map +7 -0
- package/dist/esm/biz-components/WheelLottery/PrizePool.d.ts +26 -0
- package/dist/esm/biz-components/WheelLottery/PrizePool.js +2 -0
- package/dist/esm/biz-components/WheelLottery/PrizePool.js.map +7 -0
- package/dist/esm/biz-components/WheelLottery/RulesModal.d.ts +43 -0
- package/dist/esm/biz-components/WheelLottery/RulesModal.js +2 -0
- package/dist/esm/biz-components/WheelLottery/RulesModal.js.map +7 -0
- package/dist/esm/biz-components/WheelLottery/ShareModal.d.ts +74 -0
- package/dist/esm/biz-components/WheelLottery/ShareModal.js +2 -0
- package/dist/esm/biz-components/WheelLottery/ShareModal.js.map +7 -0
- package/dist/esm/biz-components/WheelLottery/Wheel.d.ts +27 -0
- package/dist/esm/biz-components/WheelLottery/Wheel.js +2 -0
- package/dist/esm/biz-components/WheelLottery/Wheel.js.map +7 -0
- package/dist/esm/biz-components/WheelLottery/WinnerModal.d.ts +25 -0
- package/dist/esm/biz-components/WheelLottery/WinnerModal.js +2 -0
- package/dist/esm/biz-components/WheelLottery/WinnerModal.js.map +7 -0
- package/dist/esm/biz-components/WheelLottery/index.d.ts +52 -0
- package/dist/esm/biz-components/WheelLottery/index.js +2 -0
- package/dist/esm/biz-components/WheelLottery/index.js.map +7 -0
- package/dist/esm/biz-components/WheelLottery/types.d.ts +1193 -0
- package/dist/esm/biz-components/WheelLottery/types.js +2 -0
- package/dist/esm/biz-components/WheelLottery/types.js.map +7 -0
- package/dist/esm/biz-components/WhyChoose/WhyChoose.d.ts +3 -3
- package/dist/esm/biz-components/index.d.ts +30 -2
- package/dist/esm/biz-components/index.js +1 -1
- package/dist/esm/biz-components/index.js.map +3 -3
- package/dist/esm/components/badge.js +1 -1
- package/dist/esm/components/badge.js.map +2 -2
- package/dist/esm/components/index.d.ts +2 -0
- package/dist/esm/components/index.js +1 -1
- package/dist/esm/components/index.js.map +2 -2
- package/dist/esm/components/paginator.d.ts +12 -0
- package/dist/esm/components/paginator.js +7 -0
- package/dist/esm/components/paginator.js.map +7 -0
- package/dist/esm/components/progress.d.ts +46 -0
- package/dist/esm/components/progress.js +2 -0
- package/dist/esm/components/progress.js.map +7 -0
- package/dist/esm/components/tabs.d.ts +2 -1
- package/dist/esm/components/tabs.js +1 -1
- package/dist/esm/components/tabs.js.map +2 -2
- package/dist/esm/helpers/index.d.ts +1 -0
- package/dist/esm/helpers/index.js +1 -1
- package/dist/esm/helpers/index.js.map +3 -3
- package/dist/esm/helpers/priceFormatting.d.ts +11 -0
- package/dist/esm/helpers/priceFormatting.js +2 -0
- package/dist/esm/helpers/priceFormatting.js.map +7 -0
- package/dist/esm/shared/Styles.d.ts +5 -4
- package/dist/esm/shared/Styles.js +1 -1
- package/dist/esm/shared/Styles.js.map +3 -3
- package/dist/esm/types/props.d.ts +0 -3
- package/dist/tokens/base.css +4 -3
- package/dist/tokens/eufy.css +1 -0
- package/dist/tokens/soundcore.css +4 -3
- package/package.json +8 -3
- package/style.css +4915 -126
- package/tailwind.config.js +19 -2
- package/dist/cjs/stories/HeroBanner.stories.d.ts +0 -28
- package/dist/cjs/stories/HeroBanner.stories.js +0 -11
- package/dist/cjs/stories/HeroBanner.stories.js.map +0 -7
- package/dist/cjs/stories/InlineVideo.stories.d.ts +0 -37
- package/dist/cjs/stories/InlineVideo.stories.js +0 -164
- package/dist/cjs/stories/InlineVideo.stories.js.map +0 -7
- package/dist/cjs/stories/MarqueeReview.stories.d.ts +0 -72
- package/dist/cjs/stories/MarqueeReview.stories.js +0 -19
- package/dist/cjs/stories/MarqueeReview.stories.js.map +0 -7
- package/dist/cjs/stories/MediaSceneSwitcher.stories.d.ts +0 -47
- package/dist/cjs/stories/MediaSceneSwitcher.stories.js +0 -2
- package/dist/cjs/stories/MediaSceneSwitcher.stories.js.map +0 -7
- package/dist/cjs/stories/MemberEquity.stories.d.ts +0 -9
- package/dist/cjs/stories/MemberEquity.stories.js +0 -31
- package/dist/cjs/stories/MemberEquity.stories.js.map +0 -7
- package/dist/cjs/stories/MultiLayoutGraphicBlock.stories.d.ts +0 -9
- package/dist/cjs/stories/MultiLayoutGraphicBlock.stories.js +0 -2
- package/dist/cjs/stories/MultiLayoutGraphicBlock.stories.js.map +0 -7
- package/dist/cjs/stories/ProductNav.stories.d.ts +0 -55
- package/dist/cjs/stories/ProductNav.stories.js +0 -2
- package/dist/cjs/stories/ProductNav.stories.js.map +0 -7
- package/dist/cjs/stories/ThreeDCarousel.stories.d.ts +0 -27
- package/dist/cjs/stories/ThreeDCarousel.stories.js +0 -118
- package/dist/cjs/stories/ThreeDCarousel.stories.js.map +0 -7
- package/dist/cjs/stories/accordionCards.stories.d.ts +0 -38
- package/dist/cjs/stories/accordionCards.stories.js +0 -2
- package/dist/cjs/stories/accordionCards.stories.js.map +0 -7
- package/dist/cjs/stories/alert.stories.d.ts +0 -27
- package/dist/cjs/stories/alert.stories.js +0 -2
- package/dist/cjs/stories/alert.stories.js.map +0 -7
- package/dist/cjs/stories/avatar.stories.d.ts +0 -39
- package/dist/cjs/stories/avatar.stories.js +0 -2
- package/dist/cjs/stories/avatar.stories.js.map +0 -7
- package/dist/cjs/stories/badge.stories.d.ts +0 -96
- package/dist/cjs/stories/badge.stories.js +0 -2
- package/dist/cjs/stories/badge.stories.js.map +0 -7
- package/dist/cjs/stories/bizTabs.stories.d.ts +0 -7
- package/dist/cjs/stories/bizTabs.stories.js +0 -2
- package/dist/cjs/stories/bizTabs.stories.js.map +0 -7
- package/dist/cjs/stories/board.stories.d.ts +0 -6
- package/dist/cjs/stories/board.stories.js +0 -2
- package/dist/cjs/stories/board.stories.js.map +0 -7
- package/dist/cjs/stories/brandEquity.stories.d.ts +0 -16
- package/dist/cjs/stories/brandEquity.stories.js +0 -2
- package/dist/cjs/stories/brandEquity.stories.js.map +0 -7
- package/dist/cjs/stories/brandStrip.stories.d.ts +0 -12
- package/dist/cjs/stories/brandStrip.stories.js +0 -2
- package/dist/cjs/stories/brandStrip.stories.js.map +0 -7
- package/dist/cjs/stories/button.stories.d.ts +0 -56
- package/dist/cjs/stories/button.stories.js +0 -2
- package/dist/cjs/stories/button.stories.js.map +0 -7
- package/dist/cjs/stories/card.stories.d.ts +0 -27
- package/dist/cjs/stories/card.stories.js +0 -2
- package/dist/cjs/stories/card.stories.js.map +0 -7
- package/dist/cjs/stories/carousel.stories.d.ts +0 -8
- package/dist/cjs/stories/carousel.stories.js +0 -2
- package/dist/cjs/stories/carousel.stories.js.map +0 -7
- package/dist/cjs/stories/category.stories.d.ts +0 -17
- package/dist/cjs/stories/category.stories.js +0 -2
- package/dist/cjs/stories/category.stories.js.map +0 -7
- package/dist/cjs/stories/checkbox.stories.d.ts +0 -46
- package/dist/cjs/stories/checkbox.stories.js +0 -2
- package/dist/cjs/stories/checkbox.stories.js.map +0 -7
- package/dist/cjs/stories/container.stories.d.ts +0 -28
- package/dist/cjs/stories/container.stories.js +0 -15
- package/dist/cjs/stories/container.stories.js.map +0 -7
- package/dist/cjs/stories/cpnBanner.stories.d.ts +0 -14
- package/dist/cjs/stories/cpnBanner.stories.js +0 -2
- package/dist/cjs/stories/cpnBanner.stories.js.map +0 -7
- package/dist/cjs/stories/cpnCountdown.stories.d.ts +0 -12
- package/dist/cjs/stories/cpnCountdown.stories.js +0 -2
- package/dist/cjs/stories/cpnCountdown.stories.js.map +0 -7
- package/dist/cjs/stories/cpnNavigation.stories.d.ts +0 -14
- package/dist/cjs/stories/cpnNavigation.stories.js +0 -2
- package/dist/cjs/stories/cpnNavigation.stories.js.map +0 -7
- package/dist/cjs/stories/cpnProductcard.stories.d.ts +0 -14
- package/dist/cjs/stories/cpnProductcard.stories.js +0 -2
- package/dist/cjs/stories/cpnProductcard.stories.js.map +0 -7
- package/dist/cjs/stories/cpnTitle.stories.d.ts +0 -14
- package/dist/cjs/stories/cpnTitle.stories.js +0 -2
- package/dist/cjs/stories/cpnTitle.stories.js.map +0 -7
- package/dist/cjs/stories/creativeModule.stories.d.ts +0 -19
- package/dist/cjs/stories/creativeModule.stories.js +0 -2
- package/dist/cjs/stories/creativeModule.stories.js.map +0 -7
- package/dist/cjs/stories/dialog.stories.d.ts +0 -20
- package/dist/cjs/stories/dialog.stories.js +0 -2
- package/dist/cjs/stories/dialog.stories.js.map +0 -7
- package/dist/cjs/stories/drawer.stories.d.ts +0 -20
- package/dist/cjs/stories/drawer.stories.js +0 -2
- package/dist/cjs/stories/drawer.stories.js.map +0 -7
- package/dist/cjs/stories/drop-down.stories.d.ts +0 -16
- package/dist/cjs/stories/drop-down.stories.js +0 -2
- package/dist/cjs/stories/drop-down.stories.js.map +0 -7
- package/dist/cjs/stories/evaluate.stories.d.ts +0 -16
- package/dist/cjs/stories/evaluate.stories.js +0 -2
- package/dist/cjs/stories/evaluate.stories.js.map +0 -7
- package/dist/cjs/stories/faq.stories.d.ts +0 -21
- package/dist/cjs/stories/faq.stories.js +0 -2
- package/dist/cjs/stories/faq.stories.js.map +0 -7
- package/dist/cjs/stories/featureCards.stories.d.ts +0 -30
- package/dist/cjs/stories/featureCards.stories.js +0 -61
- package/dist/cjs/stories/featureCards.stories.js.map +0 -7
- package/dist/cjs/stories/featureShowcase.stories.d.ts +0 -29
- package/dist/cjs/stories/featureShowcase.stories.js +0 -44
- package/dist/cjs/stories/featureShowcase.stories.js.map +0 -7
- package/dist/cjs/stories/graphic.stories.d.ts +0 -64
- package/dist/cjs/stories/graphic.stories.js +0 -2
- package/dist/cjs/stories/graphic.stories.js.map +0 -7
- package/dist/cjs/stories/graphicAttractionBlock.stories.d.ts +0 -6
- package/dist/cjs/stories/graphicAttractionBlock.stories.js +0 -2
- package/dist/cjs/stories/graphicAttractionBlock.stories.js.map +0 -7
- package/dist/cjs/stories/grid.stories.d.ts +0 -22
- package/dist/cjs/stories/grid.stories.js +0 -13
- package/dist/cjs/stories/grid.stories.js.map +0 -7
- package/dist/cjs/stories/heading.stories.d.ts +0 -84
- package/dist/cjs/stories/heading.stories.js +0 -15
- package/dist/cjs/stories/heading.stories.js.map +0 -7
- package/dist/cjs/stories/imageTextFeature.stories.d.ts +0 -28
- package/dist/cjs/stories/imageTextFeature.stories.js +0 -50
- package/dist/cjs/stories/imageTextFeature.stories.js.map +0 -7
- package/dist/cjs/stories/imageWithText.stories.d.ts +0 -51
- package/dist/cjs/stories/imageWithText.stories.js +0 -84
- package/dist/cjs/stories/imageWithText.stories.js.map +0 -7
- package/dist/cjs/stories/input-number.stories.d.ts +0 -39
- package/dist/cjs/stories/input-number.stories.js +0 -2
- package/dist/cjs/stories/input-number.stories.js.map +0 -7
- package/dist/cjs/stories/input.stories.d.ts +0 -35
- package/dist/cjs/stories/input.stories.js +0 -2
- package/dist/cjs/stories/input.stories.js.map +0 -7
- package/dist/cjs/stories/ksp.stories.d.ts +0 -63
- package/dist/cjs/stories/ksp.stories.js +0 -128
- package/dist/cjs/stories/ksp.stories.js.map +0 -7
- package/dist/cjs/stories/link.stories.d.ts +0 -69
- package/dist/cjs/stories/link.stories.js +0 -2
- package/dist/cjs/stories/link.stories.js.map +0 -7
- package/dist/cjs/stories/marquee.stories.d.ts +0 -30
- package/dist/cjs/stories/marquee.stories.js +0 -2
- package/dist/cjs/stories/marquee.stories.js.map +0 -7
- package/dist/cjs/stories/mediaplayerBase.stories.d.ts +0 -6
- package/dist/cjs/stories/mediaplayerBase.stories.js +0 -2
- package/dist/cjs/stories/mediaplayerBase.stories.js.map +0 -7
- package/dist/cjs/stories/mediaplayerMulti.stories.d.ts +0 -16
- package/dist/cjs/stories/mediaplayerMulti.stories.js +0 -2
- package/dist/cjs/stories/mediaplayerMulti.stories.js.map +0 -7
- package/dist/cjs/stories/picture.stories.d.ts +0 -23
- package/dist/cjs/stories/picture.stories.js +0 -9
- package/dist/cjs/stories/picture.stories.js.map +0 -7
- package/dist/cjs/stories/popover.stories.d.ts +0 -17
- package/dist/cjs/stories/popover.stories.js +0 -2
- package/dist/cjs/stories/popover.stories.js.map +0 -7
- package/dist/cjs/stories/productCompare.stories.d.ts +0 -54
- package/dist/cjs/stories/productCompare.stories.js +0 -54
- package/dist/cjs/stories/productCompare.stories.js.map +0 -7
- package/dist/cjs/stories/productHero.stories.d.ts +0 -29
- package/dist/cjs/stories/productHero.stories.js +0 -50
- package/dist/cjs/stories/productHero.stories.js.map +0 -7
- package/dist/cjs/stories/radio.stories.d.ts +0 -39
- package/dist/cjs/stories/radio.stories.js +0 -2
- package/dist/cjs/stories/radio.stories.js.map +0 -7
- package/dist/cjs/stories/shelfDisplay.stories.d.ts +0 -16
- package/dist/cjs/stories/shelfDisplay.stories.js +0 -2
- package/dist/cjs/stories/shelfDisplay.stories.js.map +0 -7
- package/dist/cjs/stories/skeleton.stories.d.ts +0 -20
- package/dist/cjs/stories/skeleton.stories.js +0 -2
- package/dist/cjs/stories/skeleton.stories.js.map +0 -7
- package/dist/cjs/stories/slogan.stories.d.ts +0 -20
- package/dist/cjs/stories/slogan.stories.js +0 -6
- package/dist/cjs/stories/slogan.stories.js.map +0 -7
- package/dist/cjs/stories/specs.stories.d.ts +0 -13
- package/dist/cjs/stories/specs.stories.js +0 -57
- package/dist/cjs/stories/specs.stories.js.map +0 -7
- package/dist/cjs/stories/specsComparison.stories.d.ts +0 -28
- package/dist/cjs/stories/specsComparison.stories.js +0 -105
- package/dist/cjs/stories/specsComparison.stories.js.map +0 -7
- package/dist/cjs/stories/tabWithImage.stories.d.ts +0 -28
- package/dist/cjs/stories/tabWithImage.stories.js +0 -53
- package/dist/cjs/stories/tabWithImage.stories.js.map +0 -7
- package/dist/cjs/stories/tabs.stories.d.ts +0 -373
- package/dist/cjs/stories/tabs.stories.js +0 -2
- package/dist/cjs/stories/tabs.stories.js.map +0 -7
- package/dist/cjs/stories/tabsWithMedia.stories.d.ts +0 -28
- package/dist/cjs/stories/tabsWithMedia.stories.js +0 -68
- package/dist/cjs/stories/tabsWithMedia.stories.js.map +0 -7
- package/dist/cjs/stories/text.stories.d.ts +0 -86
- package/dist/cjs/stories/text.stories.js +0 -21
- package/dist/cjs/stories/text.stories.js.map +0 -7
- package/dist/cjs/stories/videoFeature.stories.d.ts +0 -29
- package/dist/cjs/stories/videoFeature.stories.js +0 -56
- package/dist/cjs/stories/videoFeature.stories.js.map +0 -7
- package/dist/cjs/stories/whychoose.stories.d.ts +0 -21
- package/dist/cjs/stories/whychoose.stories.js +0 -2
- package/dist/cjs/stories/whychoose.stories.js.map +0 -7
- package/dist/esm/stories/HeroBanner.stories.d.ts +0 -28
- package/dist/esm/stories/HeroBanner.stories.js +0 -11
- package/dist/esm/stories/HeroBanner.stories.js.map +0 -7
- package/dist/esm/stories/InlineVideo.stories.d.ts +0 -37
- package/dist/esm/stories/InlineVideo.stories.js +0 -164
- package/dist/esm/stories/InlineVideo.stories.js.map +0 -7
- package/dist/esm/stories/MarqueeReview.stories.d.ts +0 -72
- package/dist/esm/stories/MarqueeReview.stories.js +0 -19
- package/dist/esm/stories/MarqueeReview.stories.js.map +0 -7
- package/dist/esm/stories/MediaSceneSwitcher.stories.d.ts +0 -47
- package/dist/esm/stories/MediaSceneSwitcher.stories.js +0 -2
- package/dist/esm/stories/MediaSceneSwitcher.stories.js.map +0 -7
- package/dist/esm/stories/MemberEquity.stories.d.ts +0 -9
- package/dist/esm/stories/MemberEquity.stories.js +0 -31
- package/dist/esm/stories/MemberEquity.stories.js.map +0 -7
- package/dist/esm/stories/MultiLayoutGraphicBlock.stories.d.ts +0 -9
- package/dist/esm/stories/MultiLayoutGraphicBlock.stories.js +0 -2
- package/dist/esm/stories/MultiLayoutGraphicBlock.stories.js.map +0 -7
- package/dist/esm/stories/ProductNav.stories.d.ts +0 -55
- package/dist/esm/stories/ProductNav.stories.js +0 -2
- package/dist/esm/stories/ProductNav.stories.js.map +0 -7
- package/dist/esm/stories/ThreeDCarousel.stories.d.ts +0 -27
- package/dist/esm/stories/ThreeDCarousel.stories.js +0 -118
- package/dist/esm/stories/ThreeDCarousel.stories.js.map +0 -7
- package/dist/esm/stories/accordionCards.stories.d.ts +0 -38
- package/dist/esm/stories/accordionCards.stories.js +0 -2
- package/dist/esm/stories/accordionCards.stories.js.map +0 -7
- package/dist/esm/stories/alert.stories.d.ts +0 -27
- package/dist/esm/stories/alert.stories.js +0 -2
- package/dist/esm/stories/alert.stories.js.map +0 -7
- package/dist/esm/stories/avatar.stories.d.ts +0 -39
- package/dist/esm/stories/avatar.stories.js +0 -2
- package/dist/esm/stories/avatar.stories.js.map +0 -7
- package/dist/esm/stories/badge.stories.d.ts +0 -96
- package/dist/esm/stories/badge.stories.js +0 -2
- package/dist/esm/stories/badge.stories.js.map +0 -7
- package/dist/esm/stories/bizTabs.stories.d.ts +0 -7
- package/dist/esm/stories/bizTabs.stories.js +0 -2
- package/dist/esm/stories/bizTabs.stories.js.map +0 -7
- package/dist/esm/stories/board.stories.d.ts +0 -6
- package/dist/esm/stories/board.stories.js +0 -2
- package/dist/esm/stories/board.stories.js.map +0 -7
- package/dist/esm/stories/brandEquity.stories.d.ts +0 -16
- package/dist/esm/stories/brandEquity.stories.js +0 -2
- package/dist/esm/stories/brandEquity.stories.js.map +0 -7
- package/dist/esm/stories/brandStrip.stories.d.ts +0 -12
- package/dist/esm/stories/brandStrip.stories.js +0 -2
- package/dist/esm/stories/brandStrip.stories.js.map +0 -7
- package/dist/esm/stories/button.stories.d.ts +0 -56
- package/dist/esm/stories/button.stories.js +0 -2
- package/dist/esm/stories/button.stories.js.map +0 -7
- package/dist/esm/stories/card.stories.d.ts +0 -27
- package/dist/esm/stories/card.stories.js +0 -2
- package/dist/esm/stories/card.stories.js.map +0 -7
- package/dist/esm/stories/carousel.stories.d.ts +0 -8
- package/dist/esm/stories/carousel.stories.js +0 -2
- package/dist/esm/stories/carousel.stories.js.map +0 -7
- package/dist/esm/stories/category.stories.d.ts +0 -17
- package/dist/esm/stories/category.stories.js +0 -2
- package/dist/esm/stories/category.stories.js.map +0 -7
- package/dist/esm/stories/checkbox.stories.d.ts +0 -46
- package/dist/esm/stories/checkbox.stories.js +0 -2
- package/dist/esm/stories/checkbox.stories.js.map +0 -7
- package/dist/esm/stories/container.stories.d.ts +0 -28
- package/dist/esm/stories/container.stories.js +0 -15
- package/dist/esm/stories/container.stories.js.map +0 -7
- package/dist/esm/stories/cpnBanner.stories.d.ts +0 -14
- package/dist/esm/stories/cpnBanner.stories.js +0 -2
- package/dist/esm/stories/cpnBanner.stories.js.map +0 -7
- package/dist/esm/stories/cpnCountdown.stories.d.ts +0 -12
- package/dist/esm/stories/cpnCountdown.stories.js +0 -2
- package/dist/esm/stories/cpnCountdown.stories.js.map +0 -7
- package/dist/esm/stories/cpnNavigation.stories.d.ts +0 -14
- package/dist/esm/stories/cpnNavigation.stories.js +0 -2
- package/dist/esm/stories/cpnNavigation.stories.js.map +0 -7
- package/dist/esm/stories/cpnProductcard.stories.d.ts +0 -14
- package/dist/esm/stories/cpnProductcard.stories.js +0 -2
- package/dist/esm/stories/cpnProductcard.stories.js.map +0 -7
- package/dist/esm/stories/cpnTitle.stories.d.ts +0 -14
- package/dist/esm/stories/cpnTitle.stories.js +0 -2
- package/dist/esm/stories/cpnTitle.stories.js.map +0 -7
- package/dist/esm/stories/creativeModule.stories.d.ts +0 -19
- package/dist/esm/stories/creativeModule.stories.js +0 -2
- package/dist/esm/stories/creativeModule.stories.js.map +0 -7
- package/dist/esm/stories/dialog.stories.d.ts +0 -20
- package/dist/esm/stories/dialog.stories.js +0 -2
- package/dist/esm/stories/dialog.stories.js.map +0 -7
- package/dist/esm/stories/drawer.stories.d.ts +0 -20
- package/dist/esm/stories/drawer.stories.js +0 -2
- package/dist/esm/stories/drawer.stories.js.map +0 -7
- package/dist/esm/stories/drop-down.stories.d.ts +0 -16
- package/dist/esm/stories/drop-down.stories.js +0 -2
- package/dist/esm/stories/drop-down.stories.js.map +0 -7
- package/dist/esm/stories/evaluate.stories.d.ts +0 -16
- package/dist/esm/stories/evaluate.stories.js +0 -2
- package/dist/esm/stories/evaluate.stories.js.map +0 -7
- package/dist/esm/stories/faq.stories.d.ts +0 -21
- package/dist/esm/stories/faq.stories.js +0 -2
- package/dist/esm/stories/faq.stories.js.map +0 -7
- package/dist/esm/stories/featureCards.stories.d.ts +0 -30
- package/dist/esm/stories/featureCards.stories.js +0 -61
- package/dist/esm/stories/featureCards.stories.js.map +0 -7
- package/dist/esm/stories/featureShowcase.stories.d.ts +0 -29
- package/dist/esm/stories/featureShowcase.stories.js +0 -44
- package/dist/esm/stories/featureShowcase.stories.js.map +0 -7
- package/dist/esm/stories/graphic.stories.d.ts +0 -64
- package/dist/esm/stories/graphic.stories.js +0 -2
- package/dist/esm/stories/graphic.stories.js.map +0 -7
- package/dist/esm/stories/graphicAttractionBlock.stories.d.ts +0 -6
- package/dist/esm/stories/graphicAttractionBlock.stories.js +0 -2
- package/dist/esm/stories/graphicAttractionBlock.stories.js.map +0 -7
- package/dist/esm/stories/grid.stories.d.ts +0 -22
- package/dist/esm/stories/grid.stories.js +0 -13
- package/dist/esm/stories/grid.stories.js.map +0 -7
- package/dist/esm/stories/heading.stories.d.ts +0 -84
- package/dist/esm/stories/heading.stories.js +0 -15
- package/dist/esm/stories/heading.stories.js.map +0 -7
- package/dist/esm/stories/imageTextFeature.stories.d.ts +0 -28
- package/dist/esm/stories/imageTextFeature.stories.js +0 -50
- package/dist/esm/stories/imageTextFeature.stories.js.map +0 -7
- package/dist/esm/stories/imageWithText.stories.d.ts +0 -51
- package/dist/esm/stories/imageWithText.stories.js +0 -84
- package/dist/esm/stories/imageWithText.stories.js.map +0 -7
- package/dist/esm/stories/input-number.stories.d.ts +0 -39
- package/dist/esm/stories/input-number.stories.js +0 -2
- package/dist/esm/stories/input-number.stories.js.map +0 -7
- package/dist/esm/stories/input.stories.d.ts +0 -35
- package/dist/esm/stories/input.stories.js +0 -2
- package/dist/esm/stories/input.stories.js.map +0 -7
- package/dist/esm/stories/ksp.stories.d.ts +0 -63
- package/dist/esm/stories/ksp.stories.js +0 -128
- package/dist/esm/stories/ksp.stories.js.map +0 -7
- package/dist/esm/stories/link.stories.d.ts +0 -69
- package/dist/esm/stories/link.stories.js +0 -2
- package/dist/esm/stories/link.stories.js.map +0 -7
- package/dist/esm/stories/marquee.stories.d.ts +0 -30
- package/dist/esm/stories/marquee.stories.js +0 -2
- package/dist/esm/stories/marquee.stories.js.map +0 -7
- package/dist/esm/stories/mediaplayerBase.stories.d.ts +0 -6
- package/dist/esm/stories/mediaplayerBase.stories.js +0 -2
- package/dist/esm/stories/mediaplayerBase.stories.js.map +0 -7
- package/dist/esm/stories/mediaplayerMulti.stories.d.ts +0 -16
- package/dist/esm/stories/mediaplayerMulti.stories.js +0 -2
- package/dist/esm/stories/mediaplayerMulti.stories.js.map +0 -7
- package/dist/esm/stories/picture.stories.d.ts +0 -23
- package/dist/esm/stories/picture.stories.js +0 -9
- package/dist/esm/stories/picture.stories.js.map +0 -7
- package/dist/esm/stories/popover.stories.d.ts +0 -17
- package/dist/esm/stories/popover.stories.js +0 -2
- package/dist/esm/stories/popover.stories.js.map +0 -7
- package/dist/esm/stories/productCompare.stories.d.ts +0 -54
- package/dist/esm/stories/productCompare.stories.js +0 -54
- package/dist/esm/stories/productCompare.stories.js.map +0 -7
- package/dist/esm/stories/productHero.stories.d.ts +0 -29
- package/dist/esm/stories/productHero.stories.js +0 -50
- package/dist/esm/stories/productHero.stories.js.map +0 -7
- package/dist/esm/stories/radio.stories.d.ts +0 -39
- package/dist/esm/stories/radio.stories.js +0 -2
- package/dist/esm/stories/radio.stories.js.map +0 -7
- package/dist/esm/stories/shelfDisplay.stories.d.ts +0 -16
- package/dist/esm/stories/shelfDisplay.stories.js +0 -2
- package/dist/esm/stories/shelfDisplay.stories.js.map +0 -7
- package/dist/esm/stories/skeleton.stories.d.ts +0 -20
- package/dist/esm/stories/skeleton.stories.js +0 -2
- package/dist/esm/stories/skeleton.stories.js.map +0 -7
- package/dist/esm/stories/slogan.stories.d.ts +0 -20
- package/dist/esm/stories/slogan.stories.js +0 -6
- package/dist/esm/stories/slogan.stories.js.map +0 -7
- package/dist/esm/stories/specs.stories.d.ts +0 -13
- package/dist/esm/stories/specs.stories.js +0 -57
- package/dist/esm/stories/specs.stories.js.map +0 -7
- package/dist/esm/stories/specsComparison.stories.d.ts +0 -28
- package/dist/esm/stories/specsComparison.stories.js +0 -105
- package/dist/esm/stories/specsComparison.stories.js.map +0 -7
- package/dist/esm/stories/tabWithImage.stories.d.ts +0 -28
- package/dist/esm/stories/tabWithImage.stories.js +0 -53
- package/dist/esm/stories/tabWithImage.stories.js.map +0 -7
- package/dist/esm/stories/tabs.stories.d.ts +0 -373
- package/dist/esm/stories/tabs.stories.js +0 -2
- package/dist/esm/stories/tabs.stories.js.map +0 -7
- package/dist/esm/stories/tabsWithMedia.stories.d.ts +0 -28
- package/dist/esm/stories/tabsWithMedia.stories.js +0 -68
- package/dist/esm/stories/tabsWithMedia.stories.js.map +0 -7
- package/dist/esm/stories/text.stories.d.ts +0 -86
- package/dist/esm/stories/text.stories.js +0 -21
- package/dist/esm/stories/text.stories.js.map +0 -7
- package/dist/esm/stories/videoFeature.stories.d.ts +0 -29
- package/dist/esm/stories/videoFeature.stories.js +0 -56
- package/dist/esm/stories/videoFeature.stories.js.map +0 -7
- package/dist/esm/stories/whychoose.stories.d.ts +0 -21
- package/dist/esm/stories/whychoose.stories.js +0 -2
- package/dist/esm/stories/whychoose.stories.js.map +0 -7
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import type { RegionConfig } from './type.js';
|
|
2
|
+
export interface UseRegionRedirectManagerOptions {
|
|
3
|
+
/**
|
|
4
|
+
* 地理位置信息
|
|
5
|
+
*/
|
|
6
|
+
geo?: {
|
|
7
|
+
country?: {
|
|
8
|
+
code?: string;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* 地区配置列表
|
|
13
|
+
*/
|
|
14
|
+
regions: RegionConfig[];
|
|
15
|
+
/**
|
|
16
|
+
* 国家到地区的映射
|
|
17
|
+
*/
|
|
18
|
+
countryToRegionMap: Record<string, string>;
|
|
19
|
+
/**
|
|
20
|
+
* 地区代码到路径前缀的映射
|
|
21
|
+
*/
|
|
22
|
+
regionToPathMap: Record<string, string>;
|
|
23
|
+
/**
|
|
24
|
+
* 当前站点的地区代码
|
|
25
|
+
*/
|
|
26
|
+
currentRegionCode: string;
|
|
27
|
+
/**
|
|
28
|
+
* 当前站点的 locale
|
|
29
|
+
*/
|
|
30
|
+
locale?: string;
|
|
31
|
+
/**
|
|
32
|
+
* 当前路径
|
|
33
|
+
*/
|
|
34
|
+
pathname: string;
|
|
35
|
+
/**
|
|
36
|
+
* 当前完整 URL
|
|
37
|
+
*/
|
|
38
|
+
currentUrl?: string;
|
|
39
|
+
/**
|
|
40
|
+
* 白名单路径(在白名单中不跳转)
|
|
41
|
+
*/
|
|
42
|
+
excludePaths?: string[];
|
|
43
|
+
/**
|
|
44
|
+
* Cookie 名称
|
|
45
|
+
* @default 'user_region'
|
|
46
|
+
*/
|
|
47
|
+
cookieName?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Cookie 过期天数
|
|
50
|
+
* @default 90
|
|
51
|
+
*/
|
|
52
|
+
cookieExpireDays?: number;
|
|
53
|
+
/**
|
|
54
|
+
* 是否检查目标站点页面存在
|
|
55
|
+
* @default true
|
|
56
|
+
*/
|
|
57
|
+
checkPageExists?: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* 页面存在检查的 API 端点
|
|
60
|
+
* @default '/api/check-page-exists'
|
|
61
|
+
*/
|
|
62
|
+
checkPageApiEndpoint?: string;
|
|
63
|
+
/**
|
|
64
|
+
* 地区检测回调
|
|
65
|
+
*/
|
|
66
|
+
onDetectRegion?: (geo: any) => Promise<any>;
|
|
67
|
+
}
|
|
68
|
+
export interface UseRegionRedirectManagerReturn {
|
|
69
|
+
/**
|
|
70
|
+
* 地区选择弹窗是否打开
|
|
71
|
+
*/
|
|
72
|
+
isRegionModalOpen: boolean;
|
|
73
|
+
/**
|
|
74
|
+
* 设置地区选择弹窗状态
|
|
75
|
+
*/
|
|
76
|
+
setRegionModalOpen: (open: boolean) => void;
|
|
77
|
+
/**
|
|
78
|
+
* 保存地区选择
|
|
79
|
+
*/
|
|
80
|
+
saveRegion: (regionCode: string, languageCode?: string) => void;
|
|
81
|
+
/**
|
|
82
|
+
* 保存的地区信息
|
|
83
|
+
*/
|
|
84
|
+
savedRegion: any;
|
|
85
|
+
/**
|
|
86
|
+
* 检测到的地区信息
|
|
87
|
+
*/
|
|
88
|
+
detectedRegion: any;
|
|
89
|
+
/**
|
|
90
|
+
* 横幅是否可见
|
|
91
|
+
*/
|
|
92
|
+
bannerVisible: boolean;
|
|
93
|
+
/**
|
|
94
|
+
* 设置横幅可见性
|
|
95
|
+
*/
|
|
96
|
+
setBannerVisible: (visible: boolean) => void;
|
|
97
|
+
/**
|
|
98
|
+
* 推荐的地区信息
|
|
99
|
+
*/
|
|
100
|
+
recommendedRegion: (RegionConfig & {
|
|
101
|
+
userCountry?: string;
|
|
102
|
+
}) | null;
|
|
103
|
+
/**
|
|
104
|
+
* 用户是否手动关闭了横幅
|
|
105
|
+
*/
|
|
106
|
+
userDismissedBanner: boolean;
|
|
107
|
+
/**
|
|
108
|
+
* "留在这里"按钮处理函数
|
|
109
|
+
*/
|
|
110
|
+
handleStayHere: () => void;
|
|
111
|
+
/**
|
|
112
|
+
* "切换站点"按钮处理函数
|
|
113
|
+
*/
|
|
114
|
+
handleSwitchSite: () => void;
|
|
115
|
+
/**
|
|
116
|
+
* 手动选择地区的回调
|
|
117
|
+
*/
|
|
118
|
+
handleRegionSelect: (region: RegionConfig) => void;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* 统一的地区重定向管理 Hook
|
|
122
|
+
*
|
|
123
|
+
* 整合了以下功能:
|
|
124
|
+
* - IP 检测和地区推荐
|
|
125
|
+
* - Cookie 偏好记忆
|
|
126
|
+
* - 自动跳转处理
|
|
127
|
+
* - 横幅显示管理
|
|
128
|
+
* - 地区选择交互
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* ```tsx
|
|
132
|
+
* const {
|
|
133
|
+
* isRegionModalOpen,
|
|
134
|
+
* setRegionModalOpen,
|
|
135
|
+
* bannerVisible,
|
|
136
|
+
* recommendedRegion,
|
|
137
|
+
* handleStayHere,
|
|
138
|
+
* handleSwitchSite,
|
|
139
|
+
* handleRegionSelect,
|
|
140
|
+
* } = useRegionRedirectManager({
|
|
141
|
+
* geo,
|
|
142
|
+
* regions,
|
|
143
|
+
* countryToRegionMap,
|
|
144
|
+
* regionToPathMap,
|
|
145
|
+
* currentRegionCode,
|
|
146
|
+
* locale,
|
|
147
|
+
* pathname,
|
|
148
|
+
* excludePaths,
|
|
149
|
+
* })
|
|
150
|
+
* ```
|
|
151
|
+
*/
|
|
152
|
+
export declare function useRegionRedirectManager(options: UseRegionRedirectManagerOptions): UseRegionRedirectManagerReturn;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var c=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var N=Object.prototype.hasOwnProperty;var j=(o,e)=>{for(var n in e)c(o,n,{get:e[n],enumerable:!0})},_=(o,e,n,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of I(e))!N.call(o,i)&&i!==n&&c(o,i,{get:()=>e[i],enumerable:!(t=H(e,i))||t.enumerable});return o};var q=o=>_(c({},"__esModule",{value:!0}),o);var F={};j(F,{useRegionRedirectManager:()=>z});module.exports=q(F);var h=require("react"),f=require("./useIPRedirect.js"),b=require("./useAutoRedirect.js"),y=require("./useRedirectBanner.js"),M=require("./useSavedRegionRedirect.js"),v=require("./useDetectedRegionRedirect.js");function z(o){const{geo:e,regions:n,countryToRegionMap:t,regionToPathMap:i,currentRegionCode:r,locale:C,pathname:a,currentUrl:P,excludePaths:s=[],cookieName:k="user_region",cookieExpireDays:x=90,checkPageExists:S=!0,checkPageApiEndpoint:O="/api/check-page-exists",onDetectRegion:d}=o,{isOpen:D,setIsOpen:R,saveRegion:g,savedRegion:l,detectedRegion:p}=(0,f.useIPRedirect)({regions:n,currentRegionCode:r,cookieName:k,cookieExpireDays:x,autoShow:!1,onDetectRegion:d?()=>d(e):void 0,excludePaths:s,currentPath:a,currentUrl:P}),{handleAutoRedirect:u}=(0,b.useAutoRedirect)({regions:n,regionToPathMap:i,geo:e,locale:C,checkPageExists:S,checkPageApiEndpoint:O}),{bannerVisible:E,setBannerVisible:U,recommendedRegion:B,userDismissedBanner:A,handleStayHere:T,handleSwitchSite:V}=(0,y.useRedirectBanner)({geo:e,regions:n,countryToRegionMap:t,currentRegionCode:r,pathname:a,excludePaths:s,saveRegion:g,setModalOpen:R});(0,M.useSavedRegionRedirect)({savedRegion:l,currentRegionCode:r,regions:n,excludePaths:s,pathname:a,onRedirect:u}),(0,v.useDetectedRegionRedirect)({detectedRegion:p,currentRegionCode:r,regions:n,excludePaths:s,pathname:a,onRedirect:u});const w=(0,h.useCallback)(m=>{g(m.code,m.languageCode)},[g]);return{isRegionModalOpen:D,setRegionModalOpen:R,saveRegion:g,savedRegion:l,detectedRegion:p,bannerVisible:E,setBannerVisible:U,recommendedRegion:B,userDismissedBanner:A,handleStayHere:T,handleSwitchSite:V,handleRegionSelect:w}}
|
|
2
|
+
//# sourceMappingURL=useRegionRedirectManager.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/biz-components/IPRedirect/useRegionRedirectManager.tsx"],
|
|
4
|
+
"sourcesContent": ["import { useCallback } from 'react'\nimport { useIPRedirect } from './useIPRedirect.js'\nimport { useAutoRedirect } from './useAutoRedirect.js'\nimport { useRedirectBanner } from './useRedirectBanner.js'\nimport { useSavedRegionRedirect } from './useSavedRegionRedirect.js'\nimport { useDetectedRegionRedirect } from './useDetectedRegionRedirect.js'\nimport type { RegionConfig } from './type.js'\n\nexport interface UseRegionRedirectManagerOptions {\n /**\n * \u5730\u7406\u4F4D\u7F6E\u4FE1\u606F\n */\n geo?: {\n country?: {\n code?: string\n }\n }\n\n /**\n * \u5730\u533A\u914D\u7F6E\u5217\u8868\n */\n regions: RegionConfig[]\n\n /**\n * \u56FD\u5BB6\u5230\u5730\u533A\u7684\u6620\u5C04\n */\n countryToRegionMap: Record<string, string>\n\n /**\n * \u5730\u533A\u4EE3\u7801\u5230\u8DEF\u5F84\u524D\u7F00\u7684\u6620\u5C04\n */\n regionToPathMap: Record<string, string>\n\n /**\n * \u5F53\u524D\u7AD9\u70B9\u7684\u5730\u533A\u4EE3\u7801\n */\n currentRegionCode: string\n\n /**\n * \u5F53\u524D\u7AD9\u70B9\u7684 locale\n */\n locale?: string\n\n /**\n * \u5F53\u524D\u8DEF\u5F84\n */\n pathname: string\n\n /**\n * \u5F53\u524D\u5B8C\u6574 URL\n */\n currentUrl?: string\n\n /**\n * \u767D\u540D\u5355\u8DEF\u5F84\uFF08\u5728\u767D\u540D\u5355\u4E2D\u4E0D\u8DF3\u8F6C\uFF09\n */\n excludePaths?: string[]\n\n /**\n * Cookie \u540D\u79F0\n * @default 'user_region'\n */\n cookieName?: string\n\n /**\n * Cookie \u8FC7\u671F\u5929\u6570\n * @default 90\n */\n cookieExpireDays?: number\n\n /**\n * \u662F\u5426\u68C0\u67E5\u76EE\u6807\u7AD9\u70B9\u9875\u9762\u5B58\u5728\n * @default true\n */\n checkPageExists?: boolean\n\n /**\n * \u9875\u9762\u5B58\u5728\u68C0\u67E5\u7684 API \u7AEF\u70B9\n * @default '/api/check-page-exists'\n */\n checkPageApiEndpoint?: string\n\n /**\n * \u5730\u533A\u68C0\u6D4B\u56DE\u8C03\n */\n onDetectRegion?: (geo: any) => Promise<any>\n}\n\nexport interface UseRegionRedirectManagerReturn {\n /**\n * \u5730\u533A\u9009\u62E9\u5F39\u7A97\u662F\u5426\u6253\u5F00\n */\n isRegionModalOpen: boolean\n\n /**\n * \u8BBE\u7F6E\u5730\u533A\u9009\u62E9\u5F39\u7A97\u72B6\u6001\n */\n setRegionModalOpen: (open: boolean) => void\n\n /**\n * \u4FDD\u5B58\u5730\u533A\u9009\u62E9\n */\n saveRegion: (regionCode: string, languageCode?: string) => void\n\n /**\n * \u4FDD\u5B58\u7684\u5730\u533A\u4FE1\u606F\n */\n savedRegion: any\n\n /**\n * \u68C0\u6D4B\u5230\u7684\u5730\u533A\u4FE1\u606F\n */\n detectedRegion: any\n\n /**\n * \u6A2A\u5E45\u662F\u5426\u53EF\u89C1\n */\n bannerVisible: boolean\n\n /**\n * \u8BBE\u7F6E\u6A2A\u5E45\u53EF\u89C1\u6027\n */\n setBannerVisible: (visible: boolean) => void\n\n /**\n * \u63A8\u8350\u7684\u5730\u533A\u4FE1\u606F\n */\n recommendedRegion: (RegionConfig & { userCountry?: string }) | null\n\n /**\n * \u7528\u6237\u662F\u5426\u624B\u52A8\u5173\u95ED\u4E86\u6A2A\u5E45\n */\n userDismissedBanner: boolean\n\n /**\n * \"\u7559\u5728\u8FD9\u91CC\"\u6309\u94AE\u5904\u7406\u51FD\u6570\n */\n handleStayHere: () => void\n\n /**\n * \"\u5207\u6362\u7AD9\u70B9\"\u6309\u94AE\u5904\u7406\u51FD\u6570\n */\n handleSwitchSite: () => void\n\n /**\n * \u624B\u52A8\u9009\u62E9\u5730\u533A\u7684\u56DE\u8C03\n */\n handleRegionSelect: (region: RegionConfig) => void\n}\n\n/**\n * \u7EDF\u4E00\u7684\u5730\u533A\u91CD\u5B9A\u5411\u7BA1\u7406 Hook\n *\n * \u6574\u5408\u4E86\u4EE5\u4E0B\u529F\u80FD\uFF1A\n * - IP \u68C0\u6D4B\u548C\u5730\u533A\u63A8\u8350\n * - Cookie \u504F\u597D\u8BB0\u5FC6\n * - \u81EA\u52A8\u8DF3\u8F6C\u5904\u7406\n * - \u6A2A\u5E45\u663E\u793A\u7BA1\u7406\n * - \u5730\u533A\u9009\u62E9\u4EA4\u4E92\n *\n * @example\n * ```tsx\n * const {\n * isRegionModalOpen,\n * setRegionModalOpen,\n * bannerVisible,\n * recommendedRegion,\n * handleStayHere,\n * handleSwitchSite,\n * handleRegionSelect,\n * } = useRegionRedirectManager({\n * geo,\n * regions,\n * countryToRegionMap,\n * regionToPathMap,\n * currentRegionCode,\n * locale,\n * pathname,\n * excludePaths,\n * })\n * ```\n */\nexport function useRegionRedirectManager(options: UseRegionRedirectManagerOptions): UseRegionRedirectManagerReturn {\n const {\n geo,\n regions,\n countryToRegionMap,\n regionToPathMap,\n currentRegionCode,\n locale,\n pathname,\n currentUrl,\n excludePaths = [],\n cookieName = 'user_region',\n cookieExpireDays = 90,\n checkPageExists = true,\n checkPageApiEndpoint = '/api/check-page-exists',\n onDetectRegion,\n } = options\n\n // 1. \u6838\u5FC3 IP \u68C0\u6D4B Hook\n const {\n isOpen: isRegionModalOpen,\n setIsOpen: setRegionModalOpen,\n saveRegion,\n savedRegion,\n detectedRegion,\n } = useIPRedirect({\n regions,\n currentRegionCode,\n cookieName,\n cookieExpireDays,\n autoShow: false,\n onDetectRegion: onDetectRegion ? () => onDetectRegion(geo) : undefined,\n excludePaths,\n currentPath: pathname,\n currentUrl,\n })\n\n // 2. \u81EA\u52A8\u8DF3\u8F6C\u5904\u7406 Hook\n const { handleAutoRedirect } = useAutoRedirect({\n regions,\n regionToPathMap,\n geo,\n locale,\n checkPageExists,\n checkPageApiEndpoint,\n })\n\n // 3. \u6A2A\u5E45\u7BA1\u7406 Hook\n const { bannerVisible, setBannerVisible, recommendedRegion, userDismissedBanner, handleStayHere, handleSwitchSite } =\n useRedirectBanner({\n geo,\n regions,\n countryToRegionMap,\n currentRegionCode,\n pathname,\n excludePaths,\n saveRegion,\n setModalOpen: setRegionModalOpen,\n })\n\n // 4. Cookie \u504F\u597D\u76D1\u542C Hook\uFF08\u81EA\u52A8\u6267\u884C\uFF09\n useSavedRegionRedirect({\n savedRegion,\n currentRegionCode,\n regions,\n excludePaths,\n pathname,\n onRedirect: handleAutoRedirect,\n })\n\n // 5. IP \u68C0\u6D4B\u76D1\u542C Hook\uFF08\u81EA\u52A8\u6267\u884C\uFF09\n useDetectedRegionRedirect({\n detectedRegion,\n currentRegionCode,\n regions,\n excludePaths,\n pathname,\n onRedirect: handleAutoRedirect,\n })\n\n // \u624B\u52A8\u9009\u62E9\u5730\u533A\u7684\u56DE\u8C03\n const handleRegionSelect = useCallback(\n (region: RegionConfig) => {\n // \u4FDD\u5B58\u7528\u6237\u9009\u62E9\u7684\u5730\u533A\u5230 cookie\uFF08\u5305\u542B\u8BED\u8A00\u4EE3\u7801\uFF09\n saveRegion(region.code, region.languageCode)\n // \u8DF3\u8F6C\u903B\u8F91\u7531 RegionSelectorModal \u5185\u90E8\u5904\u7406\uFF08autoRedirect + redirectToHomepage\uFF09\n },\n [saveRegion]\n )\n\n return {\n isRegionModalOpen,\n setRegionModalOpen,\n saveRegion,\n savedRegion,\n detectedRegion,\n bannerVisible,\n setBannerVisible,\n recommendedRegion,\n userDismissedBanner,\n handleStayHere,\n handleSwitchSite,\n handleRegionSelect,\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA4B,iBAC5BC,EAA8B,8BAC9BC,EAAgC,gCAChCC,EAAkC,kCAClCC,EAAuC,uCACvCC,EAA0C,0CAiLnC,SAASP,EAAyBQ,EAA0E,CACjH,KAAM,CACJ,IAAAC,EACA,QAAAC,EACA,mBAAAC,EACA,gBAAAC,EACA,kBAAAC,EACA,OAAAC,EACA,SAAAC,EACA,WAAAC,EACA,aAAAC,EAAe,CAAC,EAChB,WAAAC,EAAa,cACb,iBAAAC,EAAmB,GACnB,gBAAAC,EAAkB,GAClB,qBAAAC,EAAuB,yBACvB,eAAAC,CACF,EAAId,EAGE,CACJ,OAAQe,EACR,UAAWC,EACX,WAAAC,EACA,YAAAC,EACA,eAAAC,CACF,KAAI,iBAAc,CAChB,QAAAjB,EACA,kBAAAG,EACA,WAAAK,EACA,iBAAAC,EACA,SAAU,GACV,eAAgBG,EAAiB,IAAMA,EAAeb,CAAG,EAAI,OAC7D,aAAAQ,EACA,YAAaF,EACb,WAAAC,CACF,CAAC,EAGK,CAAE,mBAAAY,CAAmB,KAAI,mBAAgB,CAC7C,QAAAlB,EACA,gBAAAE,EACA,IAAAH,EACA,OAAAK,EACA,gBAAAM,EACA,qBAAAC,CACF,CAAC,EAGK,CAAE,cAAAQ,EAAe,iBAAAC,EAAkB,kBAAAC,EAAmB,oBAAAC,EAAqB,eAAAC,EAAgB,iBAAAC,CAAiB,KAChH,qBAAkB,CAChB,IAAAzB,EACA,QAAAC,EACA,mBAAAC,EACA,kBAAAE,EACA,SAAAE,EACA,aAAAE,EACA,WAAAQ,EACA,aAAcD,CAChB,CAAC,KAGH,0BAAuB,CACrB,YAAAE,EACA,kBAAAb,EACA,QAAAH,EACA,aAAAO,EACA,SAAAF,EACA,WAAYa,CACd,CAAC,KAGD,6BAA0B,CACxB,eAAAD,EACA,kBAAAd,EACA,QAAAH,EACA,aAAAO,EACA,SAAAF,EACA,WAAYa,CACd,CAAC,EAGD,MAAMO,KAAqB,eACxBC,GAAyB,CAExBX,EAAWW,EAAO,KAAMA,EAAO,YAAY,CAE7C,EACA,CAACX,CAAU,CACb,EAEA,MAAO,CACL,kBAAAF,EACA,mBAAAC,EACA,WAAAC,EACA,YAAAC,EACA,eAAAC,EACA,cAAAE,EACA,iBAAAC,EACA,kBAAAC,EACA,oBAAAC,EACA,eAAAC,EACA,iBAAAC,EACA,mBAAAC,CACF,CACF",
|
|
6
|
+
"names": ["useRegionRedirectManager_exports", "__export", "useRegionRedirectManager", "__toCommonJS", "import_react", "import_useIPRedirect", "import_useAutoRedirect", "import_useRedirectBanner", "import_useSavedRegionRedirect", "import_useDetectedRegionRedirect", "options", "geo", "regions", "countryToRegionMap", "regionToPathMap", "currentRegionCode", "locale", "pathname", "currentUrl", "excludePaths", "cookieName", "cookieExpireDays", "checkPageExists", "checkPageApiEndpoint", "onDetectRegion", "isRegionModalOpen", "setRegionModalOpen", "saveRegion", "savedRegion", "detectedRegion", "handleAutoRedirect", "bannerVisible", "setBannerVisible", "recommendedRegion", "userDismissedBanner", "handleStayHere", "handleSwitchSite", "handleRegionSelect", "region"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { RegionConfig } from './type.js';
|
|
2
|
+
export interface UseSavedRegionRedirectOptions {
|
|
3
|
+
/**
|
|
4
|
+
* 从 cookie 中读取的已保存地区信息(格式:'DE:de')
|
|
5
|
+
*/
|
|
6
|
+
savedRegion: string | null;
|
|
7
|
+
/**
|
|
8
|
+
* 当前站点的地区代码
|
|
9
|
+
*/
|
|
10
|
+
currentRegionCode: string;
|
|
11
|
+
/**
|
|
12
|
+
* 地区配置列表
|
|
13
|
+
*/
|
|
14
|
+
regions: RegionConfig[];
|
|
15
|
+
/**
|
|
16
|
+
* 白名单路径(在白名单中不执行跳转)
|
|
17
|
+
*/
|
|
18
|
+
excludePaths?: string[];
|
|
19
|
+
/**
|
|
20
|
+
* 当前路径
|
|
21
|
+
*/
|
|
22
|
+
pathname?: string;
|
|
23
|
+
/**
|
|
24
|
+
* 用户是否手动关闭了横幅(关闭横幅后不再自动跳转)
|
|
25
|
+
*/
|
|
26
|
+
userDismissedBanner?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* 自动跳转处理函数
|
|
29
|
+
*/
|
|
30
|
+
onRedirect: (region: RegionConfig, isCookieRedirect?: boolean) => void | Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Cookie 保存地区跳转监听 Hook
|
|
34
|
+
*
|
|
35
|
+
* 监听用户之前保存的地区偏好(存储在 cookie 中),
|
|
36
|
+
* 如果保存的地区与当前地区不匹配,自动跳转到保存的地区
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```tsx
|
|
40
|
+
* useSavedRegionRedirect({
|
|
41
|
+
* savedRegion, // 从 useIPRedirect 获取
|
|
42
|
+
* currentRegionCode,
|
|
43
|
+
* regions,
|
|
44
|
+
* excludePaths,
|
|
45
|
+
* pathname,
|
|
46
|
+
* userDismissedBanner,
|
|
47
|
+
* onRedirect: handleAutoRedirect, // 从 useAutoRedirect 获取
|
|
48
|
+
* })
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function useSavedRegionRedirect(options: UseSavedRegionRedirectOptions): void;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var s=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var l=(i,e)=>{for(var o in e)s(i,o,{get:e[o],enumerable:!0})},h=(i,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of v(e))!C.call(i,n)&&n!==o&&s(i,n,{get:()=>e[n],enumerable:!(r=m(e,n))||r.enumerable});return i};var x=i=>h(s({},"__esModule",{value:!0}),i);var S={};l(S,{useSavedRegionRedirect:()=>P});module.exports=x(S);var u=require("react"),t=require("./utils.js");function P(i){const{savedRegion:e,currentRegionCode:o,regions:r,excludePaths:n=[],pathname:d="",userDismissedBanner:g=!1,onRedirect:a}=i;(0,u.useEffect)(()=>{if((0,t.isPathInWhitelist)(d,n)||g||!e)return;const R=(0,t.parseRegionCookie)(e);if(!R)return;const{regionCode:c}=R;if(c===o)return;const f=r.find(p=>p.code===c);f&&a(f,!0)},[e,o,r,g,a,d,n])}
|
|
2
|
+
//# sourceMappingURL=useSavedRegionRedirect.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/biz-components/IPRedirect/useSavedRegionRedirect.tsx"],
|
|
4
|
+
"sourcesContent": ["import { useEffect } from 'react'\nimport { isPathInWhitelist, parseRegionCookie } from './utils.js'\nimport type { RegionConfig } from './type.js'\n\nexport interface UseSavedRegionRedirectOptions {\n /**\n * \u4ECE cookie \u4E2D\u8BFB\u53D6\u7684\u5DF2\u4FDD\u5B58\u5730\u533A\u4FE1\u606F\uFF08\u683C\u5F0F\uFF1A'DE:de'\uFF09\n */\n savedRegion: string | null\n\n /**\n * \u5F53\u524D\u7AD9\u70B9\u7684\u5730\u533A\u4EE3\u7801\n */\n currentRegionCode: string\n\n /**\n * \u5730\u533A\u914D\u7F6E\u5217\u8868\n */\n regions: RegionConfig[]\n\n /**\n * \u767D\u540D\u5355\u8DEF\u5F84\uFF08\u5728\u767D\u540D\u5355\u4E2D\u4E0D\u6267\u884C\u8DF3\u8F6C\uFF09\n */\n excludePaths?: string[]\n\n /**\n * \u5F53\u524D\u8DEF\u5F84\n */\n pathname?: string\n\n /**\n * \u7528\u6237\u662F\u5426\u624B\u52A8\u5173\u95ED\u4E86\u6A2A\u5E45\uFF08\u5173\u95ED\u6A2A\u5E45\u540E\u4E0D\u518D\u81EA\u52A8\u8DF3\u8F6C\uFF09\n */\n userDismissedBanner?: boolean\n\n /**\n * \u81EA\u52A8\u8DF3\u8F6C\u5904\u7406\u51FD\u6570\n */\n onRedirect: (region: RegionConfig, isCookieRedirect?: boolean) => void | Promise<void>\n}\n\n/**\n * Cookie \u4FDD\u5B58\u5730\u533A\u8DF3\u8F6C\u76D1\u542C Hook\n *\n * \u76D1\u542C\u7528\u6237\u4E4B\u524D\u4FDD\u5B58\u7684\u5730\u533A\u504F\u597D\uFF08\u5B58\u50A8\u5728 cookie \u4E2D\uFF09\uFF0C\n * \u5982\u679C\u4FDD\u5B58\u7684\u5730\u533A\u4E0E\u5F53\u524D\u5730\u533A\u4E0D\u5339\u914D\uFF0C\u81EA\u52A8\u8DF3\u8F6C\u5230\u4FDD\u5B58\u7684\u5730\u533A\n *\n * @example\n * ```tsx\n * useSavedRegionRedirect({\n * savedRegion, // \u4ECE useIPRedirect \u83B7\u53D6\n * currentRegionCode,\n * regions,\n * excludePaths,\n * pathname,\n * userDismissedBanner,\n * onRedirect: handleAutoRedirect, // \u4ECE useAutoRedirect \u83B7\u53D6\n * })\n * ```\n */\nexport function useSavedRegionRedirect(options: UseSavedRegionRedirectOptions): void {\n const {\n savedRegion,\n currentRegionCode,\n regions,\n excludePaths = [],\n pathname = '',\n userDismissedBanner = false,\n onRedirect,\n } = options\n\n useEffect(() => {\n // \u767D\u540D\u5355\u68C0\u67E5\uFF1A\u5982\u679C\u5F53\u524D URL/\u8DEF\u5F84\u5728\u767D\u540D\u5355\u4E2D\uFF0C\u4E0D\u6267\u884C\u81EA\u52A8\u8DF3\u8F6C\n if (isPathInWhitelist(pathname, excludePaths)) {\n return\n }\n\n // \u5982\u679C\u7528\u6237\u5DF2\u7ECF\u624B\u52A8\u5173\u95ED\u6A2A\u5E45\uFF0C\u4E0D\u518D\u81EA\u52A8\u8DF3\u8F6C\n if (userDismissedBanner) {\n return\n }\n\n // \u5982\u679C\u6CA1\u6709\u4FDD\u5B58\u7684\u5730\u533A\u504F\u597D\uFF0C\u4E0D\u5904\u7406\n if (!savedRegion) {\n return\n }\n\n // \u89E3\u6790 cookie \u4E2D\u4FDD\u5B58\u7684\u5730\u533A\u4EE3\u7801\n const parsed = parseRegionCookie(savedRegion)\n if (!parsed) {\n return\n }\n\n const { regionCode: savedRegionCode } = parsed\n\n // \u5982\u679C\u4FDD\u5B58\u7684\u5730\u533A\u4E0E\u5F53\u524D\u5730\u533A\u5339\u914D\uFF0C\u4E0D\u5904\u7406\n if (savedRegionCode === currentRegionCode) {\n return\n }\n\n // \u67E5\u627E\u4FDD\u5B58\u7684\u5730\u533A\u914D\u7F6E\n const targetRegion = regions.find(r => r.code === savedRegionCode)\n if (!targetRegion) {\n return\n }\n\n // \u4F7F\u7528 onRedirect \u8DF3\u8F6C\uFF08\u590D\u7528\u9875\u9762\u68C0\u67E5\u548C UTM \u5904\u7406\u903B\u8F91\uFF09\n onRedirect(targetRegion, true)\n }, [savedRegion, currentRegionCode, regions, userDismissedBanner, onRedirect, pathname, excludePaths])\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA0B,iBAC1BC,EAAqD,sBA2D9C,SAASH,EAAuBI,EAA8C,CACnF,KAAM,CACJ,YAAAC,EACA,kBAAAC,EACA,QAAAC,EACA,aAAAC,EAAe,CAAC,EAChB,SAAAC,EAAW,GACX,oBAAAC,EAAsB,GACtB,WAAAC,CACF,EAAIP,KAEJ,aAAU,IAAM,CAYd,MAVI,qBAAkBK,EAAUD,CAAY,GAKxCE,GAKA,CAACL,EACH,OAIF,MAAMO,KAAS,qBAAkBP,CAAW,EAC5C,GAAI,CAACO,EACH,OAGF,KAAM,CAAE,WAAYC,CAAgB,EAAID,EAGxC,GAAIC,IAAoBP,EACtB,OAIF,MAAMQ,EAAeP,EAAQ,KAAKQ,GAAKA,EAAE,OAASF,CAAe,EAC5DC,GAKLH,EAAWG,EAAc,EAAI,CAC/B,EAAG,CAACT,EAAaC,EAAmBC,EAASG,EAAqBC,EAAYF,EAAUD,CAAY,CAAC,CACvG",
|
|
6
|
+
"names": ["useSavedRegionRedirect_exports", "__export", "useSavedRegionRedirect", "__toCommonJS", "import_react", "import_utils", "options", "savedRegion", "currentRegionCode", "regions", "excludePaths", "pathname", "userDismissedBanner", "onRedirect", "parsed", "savedRegionCode", "targetRegion", "r"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 从路径中移除 locale 前缀
|
|
3
|
+
* @param path - 当前路径(如 '/uk/products/a1234' 或 '/eu-de')
|
|
4
|
+
* @param locales - locale 列表(如 ['us', 'uk', 'eu-de', 'ca'])
|
|
5
|
+
* @returns 去除 locale 后的路径(如 '/products/a1234' 或 '/')
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* removeLocalePrefix('/uk/products/a1234', ['uk', 'us'])
|
|
9
|
+
* // 返回: '/products/a1234'
|
|
10
|
+
*
|
|
11
|
+
* removeLocalePrefix('/eu-de', ['eu-de', 'us'])
|
|
12
|
+
* // 返回: '/'
|
|
13
|
+
*
|
|
14
|
+
* removeLocalePrefix('/products/a1234', ['uk', 'us'])
|
|
15
|
+
* // 返回: '/products/a1234' (没有匹配的 locale,原样返回)
|
|
16
|
+
*/
|
|
17
|
+
export declare function removeLocalePrefix(path: string, locales: string[]): string;
|
|
18
|
+
/**
|
|
19
|
+
* 检查 URL 搜索参数中是否包含标准 UTM 参数
|
|
20
|
+
* (如 utm_source, utm_medium, utm_campaign 等)
|
|
21
|
+
*
|
|
22
|
+
* @param searchParams - URL 搜索参数字符串(如 '?utm_source=google&foo=bar')
|
|
23
|
+
* @returns 是否包含 UTM 参数
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* hasUtmParams('?utm_source=google')
|
|
27
|
+
* // 返回: true
|
|
28
|
+
*
|
|
29
|
+
* hasUtmParams('?utm_medium=cpc&utm_campaign=summer')
|
|
30
|
+
* // 返回: true
|
|
31
|
+
*
|
|
32
|
+
* hasUtmParams('?foo=bar')
|
|
33
|
+
* // 返回: false
|
|
34
|
+
*
|
|
35
|
+
* hasUtmParams('')
|
|
36
|
+
* // 返回: false
|
|
37
|
+
*/
|
|
38
|
+
export declare function hasUtmParams(searchParams: string): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* 向 URL 添加 ref 参数
|
|
41
|
+
*
|
|
42
|
+
* @param url - 目标 URL(可以是完整 URL 或相对路径)
|
|
43
|
+
* @param refValue - ref 参数的值
|
|
44
|
+
* @returns 添加了 ref 参数的 URL
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* appendRefParam('https://example.com/products', 'geo_redirect_auto_de')
|
|
48
|
+
* // 返回: 'https://example.com/products?ref=geo_redirect_auto_de'
|
|
49
|
+
*
|
|
50
|
+
* appendRefParam('https://example.com/products?utm_source=google', 'geo_redirect_auto_de')
|
|
51
|
+
* // 返回: 'https://example.com/products?utm_source=google&ref=geo_redirect_auto_de'
|
|
52
|
+
*
|
|
53
|
+
* appendRefParam('/products', 'affiliate_123')
|
|
54
|
+
* // 返回: '/products?ref=affiliate_123'
|
|
55
|
+
*/
|
|
56
|
+
export declare function appendRefParam(url: string, refValue: string): string;
|
|
57
|
+
/**
|
|
58
|
+
* 构建地理重定向的 ref 参数值
|
|
59
|
+
*
|
|
60
|
+
* @param countryCode - 国家代码(如 'DE', 'US', 'HK')
|
|
61
|
+
* @returns 格式化的 ref 参数值(如 'geo_redirect_auto_de')
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* buildGeoRedirectRef('DE')
|
|
65
|
+
* // 返回: 'geo_redirect_auto_de'
|
|
66
|
+
*
|
|
67
|
+
* buildGeoRedirectRef('HK')
|
|
68
|
+
* // 返回: 'geo_redirect_auto_hk'
|
|
69
|
+
*/
|
|
70
|
+
export declare function buildGeoRedirectRef(countryCode: string): string;
|
|
71
|
+
/**
|
|
72
|
+
* 构建地区重定向的 ref 参数值(手动切换)
|
|
73
|
+
*
|
|
74
|
+
* @param countryCode - 国家代码(如 'DE', 'US', 'HK')
|
|
75
|
+
* @returns 格式化的 ref 参数值(如 'geo_redirect_manual_de')
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* buildGeoRedirectRefManual('DE')
|
|
79
|
+
* // 返回: 'geo_redirect_manual_de'
|
|
80
|
+
*
|
|
81
|
+
* buildGeoRedirectRefManual('HK')
|
|
82
|
+
* // 返回: 'geo_redirect_manual_hk'
|
|
83
|
+
*/
|
|
84
|
+
export declare function buildGeoRedirectRefManual(countryCode: string): string;
|
|
85
|
+
/**
|
|
86
|
+
* 解析用户地区偏好 cookie 值
|
|
87
|
+
*
|
|
88
|
+
* @param cookieValue - Cookie 值(如 'v1_CA_EN' 或 'v1_CA')
|
|
89
|
+
* @returns 解析后的地区代码和语言代码,如果格式无效返回 null
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* parseRegionCookie('v1_CA_EN')
|
|
93
|
+
* // 返回: { regionCode: 'CA', languageCode: 'EN' }
|
|
94
|
+
*
|
|
95
|
+
* parseRegionCookie('v1_CA')
|
|
96
|
+
* // 返回: { regionCode: 'CA', languageCode: undefined }
|
|
97
|
+
*
|
|
98
|
+
* parseRegionCookie('invalid')
|
|
99
|
+
* // 返回: null
|
|
100
|
+
*/
|
|
101
|
+
export declare function parseRegionCookie(cookieValue: string): {
|
|
102
|
+
regionCode: string;
|
|
103
|
+
languageCode?: string;
|
|
104
|
+
} | null;
|
|
105
|
+
/**
|
|
106
|
+
* 从 regions 数组自动生成地区代码到路径前缀的映射
|
|
107
|
+
*
|
|
108
|
+
* @param regions - 地区配置数组
|
|
109
|
+
* @param customMap - 可选的自定义映射(优先级高于自动生成)
|
|
110
|
+
* @returns 地区代码到路径前缀的映射对象
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* const regions = [
|
|
114
|
+
* { code: 'US', url: 'https://www.anker.com' },
|
|
115
|
+
* { code: 'CA', url: 'https://www.anker.com/ca' },
|
|
116
|
+
* { code: 'DE', url: 'https://www.anker.com/eu-de' }
|
|
117
|
+
* ]
|
|
118
|
+
* generateRegionToPathMap(regions)
|
|
119
|
+
* // 返回: { US: '', CA: 'ca', DE: 'eu-de' }
|
|
120
|
+
*
|
|
121
|
+
* generateRegionToPathMap(regions, { UK: 'uk' })
|
|
122
|
+
* // 返回: { US: '', CA: 'ca', DE: 'eu-de', UK: 'uk' }
|
|
123
|
+
*/
|
|
124
|
+
export declare function generateRegionToPathMap(regions: Array<{
|
|
125
|
+
code: string;
|
|
126
|
+
url: string;
|
|
127
|
+
}>, customMap?: Record<string, string>): Record<string, string>;
|
|
128
|
+
/**
|
|
129
|
+
* 检查路径/URL 是否在白名单中
|
|
130
|
+
* 支持:通配符匹配、忽略域名差异、忽略尾部斜杠
|
|
131
|
+
*
|
|
132
|
+
* @param path - 当前路径(如 '/ca' 或 '/products/123')
|
|
133
|
+
* @param whitelist - 白名单数组(支持路径或完整 URL,支持通配符 *)
|
|
134
|
+
* @returns 是否在白名单中
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* isPathInWhitelist('/ca', ['/ca', '/uk'])
|
|
138
|
+
* // 返回: true
|
|
139
|
+
*
|
|
140
|
+
* isPathInWhitelist('/ca/', ['/ca'])
|
|
141
|
+
* // 返回: true(忽略尾部斜杠)
|
|
142
|
+
*
|
|
143
|
+
* isPathInWhitelist('/products/123', ['/products/*'])
|
|
144
|
+
* // 返回: true(通配符匹配)
|
|
145
|
+
*
|
|
146
|
+
* isPathInWhitelist('/checkout', ['https://www.anker.com/checkout'])
|
|
147
|
+
* // 返回: true(忽略域名差异)
|
|
148
|
+
*
|
|
149
|
+
* isPathInWhitelist('/about', ['/ca', '/uk'])
|
|
150
|
+
* // 返回: false
|
|
151
|
+
*/
|
|
152
|
+
export declare function isPathInWhitelist(path: string, whitelist: string[]): boolean;
|
|
153
|
+
/**
|
|
154
|
+
* 验证地区配置的完整性和正确性
|
|
155
|
+
*
|
|
156
|
+
* @param options - 验证选项
|
|
157
|
+
* @param options.regions - 地区配置数组
|
|
158
|
+
* @param options.countryToRegionMap - 国家到地区的映射
|
|
159
|
+
* @param options.userCountry - 用户的国家代码(可选)
|
|
160
|
+
* @returns 验证结果
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* const validation = validateRegionConfig({
|
|
164
|
+
* regions: [{ code: 'US', ... }, { code: 'CA', ... }],
|
|
165
|
+
* countryToRegionMap: { US: 'US', CA: 'CA', HK: 'DE' },
|
|
166
|
+
* userCountry: 'HK'
|
|
167
|
+
* })
|
|
168
|
+
*
|
|
169
|
+
* if (validation.valid) {
|
|
170
|
+
* console.log('映射的地区:', validation.mappedRegion) // 'DE'
|
|
171
|
+
* } else {
|
|
172
|
+
* console.warn('验证失败:', validation.error)
|
|
173
|
+
* }
|
|
174
|
+
*/
|
|
175
|
+
export declare function validateRegionConfig(options: {
|
|
176
|
+
regions?: Array<{
|
|
177
|
+
code: string;
|
|
178
|
+
[key: string]: any;
|
|
179
|
+
}>;
|
|
180
|
+
countryToRegionMap?: Record<string, string>;
|
|
181
|
+
userCountry?: string;
|
|
182
|
+
}): {
|
|
183
|
+
valid: boolean;
|
|
184
|
+
error?: string;
|
|
185
|
+
mappedRegion?: string;
|
|
186
|
+
};
|
|
187
|
+
/**
|
|
188
|
+
* 将 locale 字符串转换为地区代码
|
|
189
|
+
*
|
|
190
|
+
* @param locale - 当前 locale(如 'us', 'ca', 'eu-de')
|
|
191
|
+
* @param regionToPathMap - 地区代码到路径前缀的映射
|
|
192
|
+
* @returns 地区代码(如 'US', 'CA', 'DE')
|
|
193
|
+
*
|
|
194
|
+
* @example
|
|
195
|
+
* const regionToPathMap = { US: '', CA: 'ca', DE: 'eu-de' }
|
|
196
|
+
*
|
|
197
|
+
* localeToRegionCode('ca', regionToPathMap)
|
|
198
|
+
* // 返回: 'CA'
|
|
199
|
+
*
|
|
200
|
+
* localeToRegionCode('eu-de', regionToPathMap)
|
|
201
|
+
* // 返回: 'DE'
|
|
202
|
+
*
|
|
203
|
+
* localeToRegionCode('us', regionToPathMap)
|
|
204
|
+
* // 返回: 'US'
|
|
205
|
+
*
|
|
206
|
+
* localeToRegionCode('unknown', regionToPathMap)
|
|
207
|
+
* // 返回: 'UNKNOWN'(找不到时使用大写形式)
|
|
208
|
+
*/
|
|
209
|
+
export declare function localeToRegionCode(locale: string | null | undefined, regionToPathMap: Record<string, string>): string;
|
|
210
|
+
/**
|
|
211
|
+
* 从 regionToPathMap 生成所有 locale 列表(用于移除路径前缀)
|
|
212
|
+
*
|
|
213
|
+
* @param regionToPathMap - 地区代码到路径前缀的映射
|
|
214
|
+
* @returns locale 列表(过滤掉空字符串)
|
|
215
|
+
*
|
|
216
|
+
* @example
|
|
217
|
+
* const regionToPathMap = { US: '', CA: 'ca', DE: 'eu-de', UK: 'uk' }
|
|
218
|
+
*
|
|
219
|
+
* generateAllLocales(regionToPathMap)
|
|
220
|
+
* // 返回: ['ca', 'eu-de', 'uk']
|
|
221
|
+
*/
|
|
222
|
+
export declare function generateAllLocales(regionToPathMap: Record<string, string>): string[];
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var a=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var f=(e,r)=>{for(var t in r)a(e,t,{get:r[t],enumerable:!0})},p=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of l(r))!d.call(e,i)&&i!==t&&a(e,i,{get:()=>r[i],enumerable:!(o=u(r,i))||o.enumerable});return e};var R=e=>p(a({},"__esModule",{value:!0}),e);var W={};f(W,{appendRefParam:()=>h,buildGeoRedirectRef:()=>m,buildGeoRedirectRefManual:()=>y,generateAllLocales:()=>L,generateRegionToPathMap:()=>b,hasUtmParams:()=>x,isPathInWhitelist:()=>v,localeToRegionCode:()=>_,parseRegionCookie:()=>$,removeLocalePrefix:()=>C,validateRegionConfig:()=>U});module.exports=R(W);function C(e,r){for(const t of r)if(e===`/${t}`||e.startsWith(`/${t}/`))return e.substring(`/${t}`.length)||"/";return e}function x(e){return/[?&]utm_/i.test(e)}function h(e,r){const t=e.includes("?")?"&":"?";return`${e}${t}ref=${encodeURIComponent(r)}`}function m(e){return`geo_redirect_auto_${e.toLowerCase()}`}function y(e){return`geo_redirect_manual_${e.toLowerCase()}`}function $(e){if(!e||!e.startsWith("v1_"))return null;const r=e.substring(3).split("_");return r.length===0||!r[0]?null:{regionCode:r[0],languageCode:r[1]}}function b(e,r){const t={};return e&&e.length>0&&e.forEach(o=>{try{const n=new URL(o.url).pathname.replace(/^\//,"").replace(/\/$/,"");t[o.code]=n}catch{t[o.code]=o.code==="US"?"":o.code.toLowerCase()}}),r&&Object.keys(r).length>0&&Object.assign(t,r),t}function v(e,r){if(!r||r.length===0)return!1;const t=n=>n?.endsWith("/")?n.slice(0,-1):n,o=n=>{if(!n)return"";if(n.startsWith("http://")||n.startsWith("https://"))try{return new URL(n).pathname}catch{return n}return n},i=t(e);return r.some(n=>{const g=o(n),s=t(g);if(s.includes("*")){const c=s.replace(/\*/g,".*");return new RegExp(`^${c}$`).test(i)}return i===s})}function U(e){const{regions:r,countryToRegionMap:t,userCountry:o}=e;if(!r||r.length===0)return{valid:!1,error:"\u26A0\uFE0F regions \u672A\u914D\u7F6E\uFF0C\u65E0\u6CD5\u6267\u884C\u5730\u533A\u8DF3\u8F6C"};if(!t||Object.keys(t).length===0)return{valid:!1,error:"\u26A0\uFE0F countryToRegionMap \u672A\u914D\u7F6E\uFF0C\u65E0\u6CD5\u6267\u884C\u5730\u533A\u8DF3\u8F6C"};if(o){const i=o.toUpperCase(),n=t[i];return n?r.some(s=>s.code===n)?{valid:!0,mappedRegion:n}:{valid:!1,error:`\u26A0\uFE0F \u5730\u533A\u4EE3\u7801 ${n} \u5728 regions \u4E2D\u4E0D\u5B58\u5728\uFF0C\u8BF7\u68C0\u67E5\u914D\u7F6E`}:{valid:!1,error:`\u2139\uFE0F \u56FD\u5BB6 ${i} \u672A\u914D\u7F6E\u5730\u533A\u6620\u5C04\uFF0C\u4E0D\u6267\u884C\u8DF3\u8F6C`}}return{valid:!0}}function _(e,r){return e?Object.keys(r).find(o=>r[o]===e.toLowerCase()||o===e.toUpperCase())||e.toUpperCase():"US"}function L(e){return Object.values(e).filter(r=>r!=="")}
|
|
2
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/biz-components/IPRedirect/utils.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * \u4ECE\u8DEF\u5F84\u4E2D\u79FB\u9664 locale \u524D\u7F00\n * @param path - \u5F53\u524D\u8DEF\u5F84\uFF08\u5982 '/uk/products/a1234' \u6216 '/eu-de'\uFF09\n * @param locales - locale \u5217\u8868\uFF08\u5982 ['us', 'uk', 'eu-de', 'ca']\uFF09\n * @returns \u53BB\u9664 locale \u540E\u7684\u8DEF\u5F84\uFF08\u5982 '/products/a1234' \u6216 '/'\uFF09\n *\n * @example\n * removeLocalePrefix('/uk/products/a1234', ['uk', 'us'])\n * // \u8FD4\u56DE: '/products/a1234'\n *\n * removeLocalePrefix('/eu-de', ['eu-de', 'us'])\n * // \u8FD4\u56DE: '/'\n *\n * removeLocalePrefix('/products/a1234', ['uk', 'us'])\n * // \u8FD4\u56DE: '/products/a1234' (\u6CA1\u6709\u5339\u914D\u7684 locale\uFF0C\u539F\u6837\u8FD4\u56DE)\n */\nexport function removeLocalePrefix(path: string, locales: string[]): string {\n for (const locale of locales) {\n if (path === `/${locale}` || path.startsWith(`/${locale}/`)) {\n return path.substring(`/${locale}`.length) || '/'\n }\n }\n return path\n}\n\n/**\n * \u68C0\u67E5 URL \u641C\u7D22\u53C2\u6570\u4E2D\u662F\u5426\u5305\u542B\u6807\u51C6 UTM \u53C2\u6570\n * \uFF08\u5982 utm_source, utm_medium, utm_campaign \u7B49\uFF09\n *\n * @param searchParams - URL \u641C\u7D22\u53C2\u6570\u5B57\u7B26\u4E32\uFF08\u5982 '?utm_source=google&foo=bar'\uFF09\n * @returns \u662F\u5426\u5305\u542B UTM \u53C2\u6570\n *\n * @example\n * hasUtmParams('?utm_source=google')\n * // \u8FD4\u56DE: true\n *\n * hasUtmParams('?utm_medium=cpc&utm_campaign=summer')\n * // \u8FD4\u56DE: true\n *\n * hasUtmParams('?foo=bar')\n * // \u8FD4\u56DE: false\n *\n * hasUtmParams('')\n * // \u8FD4\u56DE: false\n */\nexport function hasUtmParams(searchParams: string): boolean {\n return /[?&]utm_/i.test(searchParams)\n}\n\n/**\n * \u5411 URL \u6DFB\u52A0 ref \u53C2\u6570\n *\n * @param url - \u76EE\u6807 URL\uFF08\u53EF\u4EE5\u662F\u5B8C\u6574 URL \u6216\u76F8\u5BF9\u8DEF\u5F84\uFF09\n * @param refValue - ref \u53C2\u6570\u7684\u503C\n * @returns \u6DFB\u52A0\u4E86 ref \u53C2\u6570\u7684 URL\n *\n * @example\n * appendRefParam('https://example.com/products', 'geo_redirect_auto_de')\n * // \u8FD4\u56DE: 'https://example.com/products?ref=geo_redirect_auto_de'\n *\n * appendRefParam('https://example.com/products?utm_source=google', 'geo_redirect_auto_de')\n * // \u8FD4\u56DE: 'https://example.com/products?utm_source=google&ref=geo_redirect_auto_de'\n *\n * appendRefParam('/products', 'affiliate_123')\n * // \u8FD4\u56DE: '/products?ref=affiliate_123'\n */\nexport function appendRefParam(url: string, refValue: string): string {\n const separator = url.includes('?') ? '&' : '?'\n return `${url}${separator}ref=${encodeURIComponent(refValue)}`\n}\n\n/**\n * \u6784\u5EFA\u5730\u7406\u91CD\u5B9A\u5411\u7684 ref \u53C2\u6570\u503C\n *\n * @param countryCode - \u56FD\u5BB6\u4EE3\u7801\uFF08\u5982 'DE', 'US', 'HK'\uFF09\n * @returns \u683C\u5F0F\u5316\u7684 ref \u53C2\u6570\u503C\uFF08\u5982 'geo_redirect_auto_de'\uFF09\n *\n * @example\n * buildGeoRedirectRef('DE')\n * // \u8FD4\u56DE: 'geo_redirect_auto_de'\n *\n * buildGeoRedirectRef('HK')\n * // \u8FD4\u56DE: 'geo_redirect_auto_hk'\n */\nexport function buildGeoRedirectRef(countryCode: string): string {\n return `geo_redirect_auto_${countryCode.toLowerCase()}`\n}\n\n/**\n * \u6784\u5EFA\u5730\u533A\u91CD\u5B9A\u5411\u7684 ref \u53C2\u6570\u503C\uFF08\u624B\u52A8\u5207\u6362\uFF09\n *\n * @param countryCode - \u56FD\u5BB6\u4EE3\u7801\uFF08\u5982 'DE', 'US', 'HK'\uFF09\n * @returns \u683C\u5F0F\u5316\u7684 ref \u53C2\u6570\u503C\uFF08\u5982 'geo_redirect_manual_de'\uFF09\n *\n * @example\n * buildGeoRedirectRefManual('DE')\n * // \u8FD4\u56DE: 'geo_redirect_manual_de'\n *\n * buildGeoRedirectRefManual('HK')\n * // \u8FD4\u56DE: 'geo_redirect_manual_hk'\n */\nexport function buildGeoRedirectRefManual(countryCode: string): string {\n return `geo_redirect_manual_${countryCode.toLowerCase()}`\n}\n\n/**\n * \u89E3\u6790\u7528\u6237\u5730\u533A\u504F\u597D cookie \u503C\n *\n * @param cookieValue - Cookie \u503C\uFF08\u5982 'v1_CA_EN' \u6216 'v1_CA'\uFF09\n * @returns \u89E3\u6790\u540E\u7684\u5730\u533A\u4EE3\u7801\u548C\u8BED\u8A00\u4EE3\u7801\uFF0C\u5982\u679C\u683C\u5F0F\u65E0\u6548\u8FD4\u56DE null\n *\n * @example\n * parseRegionCookie('v1_CA_EN')\n * // \u8FD4\u56DE: { regionCode: 'CA', languageCode: 'EN' }\n *\n * parseRegionCookie('v1_CA')\n * // \u8FD4\u56DE: { regionCode: 'CA', languageCode: undefined }\n *\n * parseRegionCookie('invalid')\n * // \u8FD4\u56DE: null\n */\nexport function parseRegionCookie(cookieValue: string): {\n regionCode: string\n languageCode?: string\n} | null {\n if (!cookieValue || !cookieValue.startsWith('v1_')) {\n return null\n }\n\n // \u53BB\u9664 'v1_' \u524D\u7F00\n const parts = cookieValue.substring(3).split('_')\n\n if (parts.length === 0 || !parts[0]) {\n return null\n }\n\n return {\n regionCode: parts[0],\n languageCode: parts[1],\n }\n}\n\n/**\n * \u4ECE regions \u6570\u7EC4\u81EA\u52A8\u751F\u6210\u5730\u533A\u4EE3\u7801\u5230\u8DEF\u5F84\u524D\u7F00\u7684\u6620\u5C04\n *\n * @param regions - \u5730\u533A\u914D\u7F6E\u6570\u7EC4\n * @param customMap - \u53EF\u9009\u7684\u81EA\u5B9A\u4E49\u6620\u5C04\uFF08\u4F18\u5148\u7EA7\u9AD8\u4E8E\u81EA\u52A8\u751F\u6210\uFF09\n * @returns \u5730\u533A\u4EE3\u7801\u5230\u8DEF\u5F84\u524D\u7F00\u7684\u6620\u5C04\u5BF9\u8C61\n *\n * @example\n * const regions = [\n * { code: 'US', url: 'https://www.anker.com' },\n * { code: 'CA', url: 'https://www.anker.com/ca' },\n * { code: 'DE', url: 'https://www.anker.com/eu-de' }\n * ]\n * generateRegionToPathMap(regions)\n * // \u8FD4\u56DE: { US: '', CA: 'ca', DE: 'eu-de' }\n *\n * generateRegionToPathMap(regions, { UK: 'uk' })\n * // \u8FD4\u56DE: { US: '', CA: 'ca', DE: 'eu-de', UK: 'uk' }\n */\nexport function generateRegionToPathMap(\n regions: Array<{ code: string; url: string }>,\n customMap?: Record<string, string>\n): Record<string, string> {\n const map: Record<string, string> = {}\n\n // \u4ECE regions \u6570\u7EC4\u81EA\u52A8\u751F\u6210\u6620\u5C04\n if (regions && regions.length > 0) {\n regions.forEach(region => {\n try {\n const url = new URL(region.url)\n // \u63D0\u53D6\u8DEF\u5F84\u90E8\u5206\uFF08\u79FB\u9664\u9996\u5C3E\u659C\u6760\uFF09\n const path = url.pathname.replace(/^\\//, '').replace(/\\/$/, '')\n map[region.code] = path\n } catch (e) {\n // URL \u89E3\u6790\u5931\u8D25\uFF0C\u4F7F\u7528 code \u7684\u5C0F\u5199\u5F62\u5F0F\n // \u7279\u6B8A\u5904\u7406 US\uFF1A\u4F7F\u7528\u7A7A\u5B57\u7B26\u4E32\n map[region.code] = region.code === 'US' ? '' : region.code.toLowerCase()\n }\n })\n }\n\n // \u5408\u5E76\u81EA\u5B9A\u4E49\u6620\u5C04\uFF08\u4F18\u5148\u7EA7\u66F4\u9AD8\uFF09\n if (customMap && Object.keys(customMap).length > 0) {\n Object.assign(map, customMap)\n }\n\n return map\n}\n\n/**\n * \u68C0\u67E5\u8DEF\u5F84/URL \u662F\u5426\u5728\u767D\u540D\u5355\u4E2D\n * \u652F\u6301\uFF1A\u901A\u914D\u7B26\u5339\u914D\u3001\u5FFD\u7565\u57DF\u540D\u5DEE\u5F02\u3001\u5FFD\u7565\u5C3E\u90E8\u659C\u6760\n *\n * @param path - \u5F53\u524D\u8DEF\u5F84\uFF08\u5982 '/ca' \u6216 '/products/123'\uFF09\n * @param whitelist - \u767D\u540D\u5355\u6570\u7EC4\uFF08\u652F\u6301\u8DEF\u5F84\u6216\u5B8C\u6574 URL\uFF0C\u652F\u6301\u901A\u914D\u7B26 *\uFF09\n * @returns \u662F\u5426\u5728\u767D\u540D\u5355\u4E2D\n *\n * @example\n * isPathInWhitelist('/ca', ['/ca', '/uk'])\n * // \u8FD4\u56DE: true\n *\n * isPathInWhitelist('/ca/', ['/ca'])\n * // \u8FD4\u56DE: true\uFF08\u5FFD\u7565\u5C3E\u90E8\u659C\u6760\uFF09\n *\n * isPathInWhitelist('/products/123', ['/products/*'])\n * // \u8FD4\u56DE: true\uFF08\u901A\u914D\u7B26\u5339\u914D\uFF09\n *\n * isPathInWhitelist('/checkout', ['https://www.anker.com/checkout'])\n * // \u8FD4\u56DE: true\uFF08\u5FFD\u7565\u57DF\u540D\u5DEE\u5F02\uFF09\n *\n * isPathInWhitelist('/about', ['/ca', '/uk'])\n * // \u8FD4\u56DE: false\n */\nexport function isPathInWhitelist(path: string, whitelist: string[]): boolean {\n if (!whitelist || whitelist.length === 0) {\n return false\n }\n\n // \u8F85\u52A9\u51FD\u6570\uFF1A\u79FB\u9664\u5C3E\u90E8\u659C\u6760\n const removeTrailingSlash = (str: string): string => {\n return str?.endsWith('/') ? str.slice(0, -1) : str\n }\n\n // \u8F85\u52A9\u51FD\u6570\uFF1A\u4ECE URL \u4E2D\u63D0\u53D6\u8DEF\u5F84\u90E8\u5206\uFF08\u5FFD\u7565\u57DF\u540D\uFF09\n const extractPath = (urlOrPath: string): string => {\n if (!urlOrPath) return ''\n\n // \u5982\u679C\u662F\u5B8C\u6574 URL\uFF0C\u63D0\u53D6\u8DEF\u5F84\u90E8\u5206\n if (urlOrPath.startsWith('http://') || urlOrPath.startsWith('https://')) {\n try {\n const url = new URL(urlOrPath)\n return url.pathname\n } catch (e) {\n return urlOrPath\n }\n }\n\n // \u5426\u5219\u5DF2\u7ECF\u662F\u8DEF\u5F84\uFF0C\u76F4\u63A5\u8FD4\u56DE\n return urlOrPath\n }\n\n // \u6807\u51C6\u5316\u5F53\u524D\u8DEF\u5F84\uFF08\u79FB\u9664\u5C3E\u90E8\u659C\u6760\uFF09\n const normalizedPath = removeTrailingSlash(path)\n\n return whitelist.some(pattern => {\n // \u5982\u679C pattern \u662F\u5B8C\u6574 URL\uFF0C\u53EA\u63D0\u53D6\u8DEF\u5F84\u90E8\u5206\u8FDB\u884C\u6BD4\u8F83\n const patternPath = extractPath(pattern)\n const normalizedPatternPath = removeTrailingSlash(patternPath)\n\n // \u652F\u6301\u901A\u914D\u7B26 * \u5339\u914D\n if (normalizedPatternPath.includes('*')) {\n const regexPattern = normalizedPatternPath.replace(/\\*/g, '.*')\n const regex = new RegExp(`^${regexPattern}$`)\n return regex.test(normalizedPath)\n }\n\n // \u7CBE\u786E\u5339\u914D\u8DEF\u5F84\uFF08\u5FFD\u7565\u5C3E\u90E8\u659C\u6760\uFF0C\u5FFD\u7565\u57DF\u540D\u5DEE\u5F02\uFF09\n return normalizedPath === normalizedPatternPath\n })\n}\n\n/**\n * \u9A8C\u8BC1\u5730\u533A\u914D\u7F6E\u7684\u5B8C\u6574\u6027\u548C\u6B63\u786E\u6027\n *\n * @param options - \u9A8C\u8BC1\u9009\u9879\n * @param options.regions - \u5730\u533A\u914D\u7F6E\u6570\u7EC4\n * @param options.countryToRegionMap - \u56FD\u5BB6\u5230\u5730\u533A\u7684\u6620\u5C04\n * @param options.userCountry - \u7528\u6237\u7684\u56FD\u5BB6\u4EE3\u7801\uFF08\u53EF\u9009\uFF09\n * @returns \u9A8C\u8BC1\u7ED3\u679C\n *\n * @example\n * const validation = validateRegionConfig({\n * regions: [{ code: 'US', ... }, { code: 'CA', ... }],\n * countryToRegionMap: { US: 'US', CA: 'CA', HK: 'DE' },\n * userCountry: 'HK'\n * })\n *\n * if (validation.valid) {\n * console.log('\u6620\u5C04\u7684\u5730\u533A:', validation.mappedRegion) // 'DE'\n * } else {\n * console.warn('\u9A8C\u8BC1\u5931\u8D25:', validation.error)\n * }\n */\nexport function validateRegionConfig(options: {\n regions?: Array<{ code: string; [key: string]: any }>\n countryToRegionMap?: Record<string, string>\n userCountry?: string\n}): {\n valid: boolean\n error?: string\n mappedRegion?: string\n} {\n const { regions, countryToRegionMap, userCountry } = options\n\n // \u68C0\u67E5 regions \u662F\u5426\u914D\u7F6E\n if (!regions || regions.length === 0) {\n return {\n valid: false,\n error: '\u26A0\uFE0F regions \u672A\u914D\u7F6E\uFF0C\u65E0\u6CD5\u6267\u884C\u5730\u533A\u8DF3\u8F6C',\n }\n }\n\n // \u68C0\u67E5 countryToRegionMap \u662F\u5426\u914D\u7F6E\n if (!countryToRegionMap || Object.keys(countryToRegionMap).length === 0) {\n return {\n valid: false,\n error: '\u26A0\uFE0F countryToRegionMap \u672A\u914D\u7F6E\uFF0C\u65E0\u6CD5\u6267\u884C\u5730\u533A\u8DF3\u8F6C',\n }\n }\n\n // \u5982\u679C\u63D0\u4F9B\u4E86 userCountry\uFF0C\u9A8C\u8BC1\u6620\u5C04\u5173\u7CFB\n if (userCountry) {\n const upperUserCountry = userCountry.toUpperCase()\n const mappedRegion = countryToRegionMap[upperUserCountry]\n\n // \u68C0\u67E5\u5F53\u524D\u56FD\u5BB6\u662F\u5426\u6709\u6620\u5C04\n if (!mappedRegion) {\n return {\n valid: false,\n error: `\u2139\uFE0F \u56FD\u5BB6 ${upperUserCountry} \u672A\u914D\u7F6E\u5730\u533A\u6620\u5C04\uFF0C\u4E0D\u6267\u884C\u8DF3\u8F6C`,\n }\n }\n\n // \u786E\u4FDD\u6620\u5C04\u7684\u5730\u533A\u5728 regions \u4E2D\u5B58\u5728\n const regionExists = regions.some(r => r.code === mappedRegion)\n if (!regionExists) {\n return {\n valid: false,\n error: `\u26A0\uFE0F \u5730\u533A\u4EE3\u7801 ${mappedRegion} \u5728 regions \u4E2D\u4E0D\u5B58\u5728\uFF0C\u8BF7\u68C0\u67E5\u914D\u7F6E`,\n }\n }\n\n return {\n valid: true,\n mappedRegion,\n }\n }\n\n // \u672A\u63D0\u4F9B userCountry\uFF0C\u53EA\u9A8C\u8BC1\u914D\u7F6E\u5B58\u5728\u6027\n return {\n valid: true,\n }\n}\n\n/**\n * \u5C06 locale \u5B57\u7B26\u4E32\u8F6C\u6362\u4E3A\u5730\u533A\u4EE3\u7801\n *\n * @param locale - \u5F53\u524D locale\uFF08\u5982 'us', 'ca', 'eu-de'\uFF09\n * @param regionToPathMap - \u5730\u533A\u4EE3\u7801\u5230\u8DEF\u5F84\u524D\u7F00\u7684\u6620\u5C04\n * @returns \u5730\u533A\u4EE3\u7801\uFF08\u5982 'US', 'CA', 'DE'\uFF09\n *\n * @example\n * const regionToPathMap = { US: '', CA: 'ca', DE: 'eu-de' }\n *\n * localeToRegionCode('ca', regionToPathMap)\n * // \u8FD4\u56DE: 'CA'\n *\n * localeToRegionCode('eu-de', regionToPathMap)\n * // \u8FD4\u56DE: 'DE'\n *\n * localeToRegionCode('us', regionToPathMap)\n * // \u8FD4\u56DE: 'US'\n *\n * localeToRegionCode('unknown', regionToPathMap)\n * // \u8FD4\u56DE: 'UNKNOWN'\uFF08\u627E\u4E0D\u5230\u65F6\u4F7F\u7528\u5927\u5199\u5F62\u5F0F\uFF09\n */\nexport function localeToRegionCode(locale: string | null | undefined, regionToPathMap: Record<string, string>): string {\n if (!locale) return 'US'\n\n // \u67E5\u627E\u5BF9\u5E94\u7684 region code\n const regionCode = Object.keys(regionToPathMap).find(\n key => regionToPathMap[key] === locale.toLowerCase() || key === locale.toUpperCase()\n )\n\n return regionCode || locale.toUpperCase()\n}\n\n/**\n * \u4ECE regionToPathMap \u751F\u6210\u6240\u6709 locale \u5217\u8868\uFF08\u7528\u4E8E\u79FB\u9664\u8DEF\u5F84\u524D\u7F00\uFF09\n *\n * @param regionToPathMap - \u5730\u533A\u4EE3\u7801\u5230\u8DEF\u5F84\u524D\u7F00\u7684\u6620\u5C04\n * @returns locale \u5217\u8868\uFF08\u8FC7\u6EE4\u6389\u7A7A\u5B57\u7B26\u4E32\uFF09\n *\n * @example\n * const regionToPathMap = { US: '', CA: 'ca', DE: 'eu-de', UK: 'uk' }\n *\n * generateAllLocales(regionToPathMap)\n * // \u8FD4\u56DE: ['ca', 'eu-de', 'uk']\n */\nexport function generateAllLocales(regionToPathMap: Record<string, string>): string[] {\n return Object.values(regionToPathMap).filter(path => path !== '')\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,EAAA,wBAAAC,EAAA,8BAAAC,EAAA,uBAAAC,EAAA,4BAAAC,EAAA,iBAAAC,EAAA,sBAAAC,EAAA,uBAAAC,EAAA,sBAAAC,EAAA,uBAAAC,EAAA,yBAAAC,IAAA,eAAAC,EAAAb,GAgBO,SAASW,EAAmBG,EAAcC,EAA2B,CAC1E,UAAWC,KAAUD,EACnB,GAAID,IAAS,IAAIE,CAAM,IAAMF,EAAK,WAAW,IAAIE,CAAM,GAAG,EACxD,OAAOF,EAAK,UAAU,IAAIE,CAAM,GAAG,MAAM,GAAK,IAGlD,OAAOF,CACT,CAsBO,SAASP,EAAaU,EAA+B,CAC1D,MAAO,YAAY,KAAKA,CAAY,CACtC,CAmBO,SAASf,EAAegB,EAAaC,EAA0B,CACpE,MAAMC,EAAYF,EAAI,SAAS,GAAG,EAAI,IAAM,IAC5C,MAAO,GAAGA,CAAG,GAAGE,CAAS,OAAO,mBAAmBD,CAAQ,CAAC,EAC9D,CAeO,SAAShB,EAAoBkB,EAA6B,CAC/D,MAAO,qBAAqBA,EAAY,YAAY,CAAC,EACvD,CAeO,SAASjB,EAA0BiB,EAA6B,CACrE,MAAO,uBAAuBA,EAAY,YAAY,CAAC,EACzD,CAkBO,SAASX,EAAkBY,EAGzB,CACP,GAAI,CAACA,GAAe,CAACA,EAAY,WAAW,KAAK,EAC/C,OAAO,KAIT,MAAMC,EAAQD,EAAY,UAAU,CAAC,EAAE,MAAM,GAAG,EAEhD,OAAIC,EAAM,SAAW,GAAK,CAACA,EAAM,CAAC,EACzB,KAGF,CACL,WAAYA,EAAM,CAAC,EACnB,aAAcA,EAAM,CAAC,CACvB,CACF,CAqBO,SAASjB,EACdkB,EACAC,EACwB,CACxB,MAAMC,EAA8B,CAAC,EAGrC,OAAIF,GAAWA,EAAQ,OAAS,GAC9BA,EAAQ,QAAQG,GAAU,CACxB,GAAI,CAGF,MAAMb,EAFM,IAAI,IAAIa,EAAO,GAAG,EAEb,SAAS,QAAQ,MAAO,EAAE,EAAE,QAAQ,MAAO,EAAE,EAC9DD,EAAIC,EAAO,IAAI,EAAIb,CACrB,MAAY,CAGVY,EAAIC,EAAO,IAAI,EAAIA,EAAO,OAAS,KAAO,GAAKA,EAAO,KAAK,YAAY,CACzE,CACF,CAAC,EAICF,GAAa,OAAO,KAAKA,CAAS,EAAE,OAAS,GAC/C,OAAO,OAAOC,EAAKD,CAAS,EAGvBC,CACT,CA0BO,SAASlB,EAAkBM,EAAcc,EAA8B,CAC5E,GAAI,CAACA,GAAaA,EAAU,SAAW,EACrC,MAAO,GAIT,MAAMC,EAAuBC,GACpBA,GAAK,SAAS,GAAG,EAAIA,EAAI,MAAM,EAAG,EAAE,EAAIA,EAI3CC,EAAeC,GAA8B,CACjD,GAAI,CAACA,EAAW,MAAO,GAGvB,GAAIA,EAAU,WAAW,SAAS,GAAKA,EAAU,WAAW,UAAU,EACpE,GAAI,CAEF,OADY,IAAI,IAAIA,CAAS,EAClB,QACb,MAAY,CACV,OAAOA,CACT,CAIF,OAAOA,CACT,EAGMC,EAAiBJ,EAAoBf,CAAI,EAE/C,OAAOc,EAAU,KAAKM,GAAW,CAE/B,MAAMC,EAAcJ,EAAYG,CAAO,EACjCE,EAAwBP,EAAoBM,CAAW,EAG7D,GAAIC,EAAsB,SAAS,GAAG,EAAG,CACvC,MAAMC,EAAeD,EAAsB,QAAQ,MAAO,IAAI,EAE9D,OADc,IAAI,OAAO,IAAIC,CAAY,GAAG,EAC/B,KAAKJ,CAAc,CAClC,CAGA,OAAOA,IAAmBG,CAC5B,CAAC,CACH,CAwBO,SAASxB,EAAqB0B,EAQnC,CACA,KAAM,CAAE,QAAAd,EAAS,mBAAAe,EAAoB,YAAAC,CAAY,EAAIF,EAGrD,GAAI,CAACd,GAAWA,EAAQ,SAAW,EACjC,MAAO,CACL,MAAO,GACP,MAAO,+FACT,EAIF,GAAI,CAACe,GAAsB,OAAO,KAAKA,CAAkB,EAAE,SAAW,EACpE,MAAO,CACL,MAAO,GACP,MAAO,0GACT,EAIF,GAAIC,EAAa,CACf,MAAMC,EAAmBD,EAAY,YAAY,EAC3CE,EAAeH,EAAmBE,CAAgB,EAGxD,OAAKC,EAQgBlB,EAAQ,KAAKmB,GAAKA,EAAE,OAASD,CAAY,EAQvD,CACL,MAAO,GACP,aAAAA,CACF,EATS,CACL,MAAO,GACP,MAAO,yCAAWA,CAAY,8EAChC,EAZO,CACL,MAAO,GACP,MAAO,6BAASD,CAAgB,iFAClC,CAgBJ,CAGA,MAAO,CACL,MAAO,EACT,CACF,CAwBO,SAAShC,EAAmBO,EAAmC4B,EAAiD,CACrH,OAAK5B,EAGc,OAAO,KAAK4B,CAAe,EAAE,KAC9CC,GAAOD,EAAgBC,CAAG,IAAM7B,EAAO,YAAY,GAAK6B,IAAQ7B,EAAO,YAAY,CACrF,GAEqBA,EAAO,YAAY,EAPpB,IAQtB,CAcO,SAASX,EAAmBuC,EAAmD,CACpF,OAAO,OAAO,OAAOA,CAAe,EAAE,OAAO9B,GAAQA,IAAS,EAAE,CAClE",
|
|
6
|
+
"names": ["utils_exports", "__export", "appendRefParam", "buildGeoRedirectRef", "buildGeoRedirectRefManual", "generateAllLocales", "generateRegionToPathMap", "hasUtmParams", "isPathInWhitelist", "localeToRegionCode", "parseRegionCookie", "removeLocalePrefix", "validateRegionConfig", "__toCommonJS", "path", "locales", "locale", "searchParams", "url", "refValue", "separator", "countryCode", "cookieValue", "parts", "regions", "customMap", "map", "region", "whitelist", "removeTrailingSlash", "str", "extractPath", "urlOrPath", "normalizedPath", "pattern", "patternPath", "normalizedPatternPath", "regexPattern", "options", "countryToRegionMap", "userCountry", "upperUserCountry", "mappedRegion", "r", "regionToPathMap", "key"]
|
|
7
|
+
}
|