@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.
Files changed (856) hide show
  1. package/dist/cjs/biz-components/AccordionCards/index.d.ts +3 -3
  2. package/dist/cjs/biz-components/ActiveShelf/index.d.ts +222 -0
  3. package/dist/cjs/biz-components/ActiveShelf/index.js +2 -0
  4. package/dist/cjs/biz-components/ActiveShelf/index.js.map +7 -0
  5. package/dist/cjs/biz-components/ActiveShelf/types.d.ts +22 -0
  6. package/dist/cjs/biz-components/ActiveShelf/types.js +2 -0
  7. package/dist/cjs/biz-components/ActiveShelf/types.js.map +7 -0
  8. package/dist/cjs/biz-components/AiuiProvider/index.d.ts +7 -0
  9. package/dist/cjs/biz-components/AiuiProvider/index.js +1 -1
  10. package/dist/cjs/biz-components/AiuiProvider/index.js.map +2 -2
  11. package/dist/cjs/biz-components/AnchorNavigation/index.d.ts +42 -0
  12. package/dist/cjs/biz-components/AnchorNavigation/index.js +2 -0
  13. package/dist/cjs/biz-components/AnchorNavigation/index.js.map +7 -0
  14. package/dist/cjs/biz-components/AnchorNavigation/useAnchorPosition.d.ts +2 -0
  15. package/dist/cjs/biz-components/AnchorNavigation/useAnchorPosition.js +2 -0
  16. package/dist/cjs/biz-components/AnchorNavigation/useAnchorPosition.js.map +7 -0
  17. package/dist/cjs/biz-components/AplusDesc/index.d.ts +3 -3
  18. package/dist/cjs/biz-components/BrandCardLink/BrandCardLink.d.ts +3 -3
  19. package/dist/cjs/biz-components/BrandCardLink/BrandCardLink.js +1 -1
  20. package/dist/cjs/biz-components/BrandCardLink/BrandCardLink.js.map +1 -1
  21. package/dist/cjs/biz-components/BrandEquity/BrandEquity.d.ts +3 -3
  22. package/dist/cjs/biz-components/BrandEquity/BrandEquity.js +1 -1
  23. package/dist/cjs/biz-components/BrandEquity/BrandEquity.js.map +3 -3
  24. package/dist/cjs/biz-components/BrandEquity/types.d.ts +1 -0
  25. package/dist/cjs/biz-components/BrandEquity/types.js +1 -1
  26. package/dist/cjs/biz-components/BrandEquity/types.js.map +1 -1
  27. package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.d.ts +74 -0
  28. package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.js +2 -0
  29. package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.js.map +7 -0
  30. package/dist/cjs/biz-components/BuyOneGetOneShelf/hooks/useBogoDataTransform.d.ts +36 -0
  31. package/dist/cjs/biz-components/BuyOneGetOneShelf/hooks/useBogoDataTransform.js +2 -0
  32. package/dist/cjs/biz-components/BuyOneGetOneShelf/hooks/useBogoDataTransform.js.map +7 -0
  33. package/dist/cjs/biz-components/BuyOneGetOneShelf/index.d.ts +193 -0
  34. package/dist/cjs/biz-components/BuyOneGetOneShelf/index.js +2 -0
  35. package/dist/cjs/biz-components/BuyOneGetOneShelf/index.js.map +7 -0
  36. package/dist/cjs/biz-components/Category/index.d.ts +3 -3
  37. package/dist/cjs/biz-components/CreativeModule/index.d.ts +3 -3
  38. package/dist/cjs/biz-components/DownLoad/index.d.ts +3 -3
  39. package/dist/cjs/biz-components/Evaluate/index.d.ts +3 -3
  40. package/dist/cjs/biz-components/EventSchedule/index.d.ts +63 -0
  41. package/dist/cjs/biz-components/EventSchedule/index.js +2 -0
  42. package/dist/cjs/biz-components/EventSchedule/index.js.map +7 -0
  43. package/dist/cjs/biz-components/Faq/Faq.d.ts +3 -3
  44. package/dist/cjs/biz-components/FeatureCards/FeatureCards.d.ts +3 -3
  45. package/dist/cjs/biz-components/FeatureShowcase/FeatureShowcase.d.ts +3 -3
  46. package/dist/cjs/biz-components/Features/index.d.ts +3 -3
  47. package/dist/cjs/biz-components/FootCharger/index.d.ts +3 -3
  48. package/dist/cjs/biz-components/FooterNavigation/index.d.ts +3 -3
  49. package/dist/cjs/biz-components/GiftBox/index.d.ts +3 -3
  50. package/dist/cjs/biz-components/Graphic/index.d.ts +3 -3
  51. package/dist/cjs/biz-components/GraphicAttractionBlock/index.d.ts +3 -3
  52. package/dist/cjs/biz-components/GraphicMore/index.d.ts +3 -3
  53. package/dist/cjs/biz-components/GraphicOverlay/GraphicOverlay.d.ts +3 -3
  54. package/dist/cjs/biz-components/HeaderNavigation/MobileSidebarMenu.js +1 -1
  55. package/dist/cjs/biz-components/HeaderNavigation/MobileSidebarMenu.js.map +3 -3
  56. package/dist/cjs/biz-components/HeaderNavigation/SidebarDropdown.js +1 -1
  57. package/dist/cjs/biz-components/HeaderNavigation/SidebarDropdown.js.map +2 -2
  58. package/dist/cjs/biz-components/HeaderNavigation/index.d.ts +3 -3
  59. package/dist/cjs/biz-components/HeroBanner/Countdown.js +1 -1
  60. package/dist/cjs/biz-components/HeroBanner/Countdown.js.map +2 -2
  61. package/dist/cjs/biz-components/HeroBanner/HeroBanner.d.ts +6 -3
  62. package/dist/cjs/biz-components/HeroBanner/HeroBanner.js +1 -1
  63. package/dist/cjs/biz-components/HeroBanner/HeroBanner.js.map +3 -3
  64. package/dist/cjs/biz-components/IPRedirect/RegionBanner.d.ts +37 -0
  65. package/dist/cjs/biz-components/IPRedirect/RegionBanner.js +60 -0
  66. package/dist/cjs/biz-components/IPRedirect/RegionBanner.js.map +7 -0
  67. package/dist/cjs/biz-components/IPRedirect/RegionSelectorModal.d.ts +47 -0
  68. package/dist/cjs/biz-components/IPRedirect/RegionSelectorModal.js +69 -0
  69. package/dist/cjs/biz-components/IPRedirect/RegionSelectorModal.js.map +7 -0
  70. package/dist/cjs/biz-components/IPRedirect/index.d.ts +9 -0
  71. package/dist/cjs/biz-components/IPRedirect/index.js +2 -0
  72. package/dist/cjs/biz-components/IPRedirect/index.js.map +7 -0
  73. package/dist/cjs/biz-components/IPRedirect/type.d.ts +36 -0
  74. package/dist/cjs/biz-components/IPRedirect/type.js +2 -0
  75. package/dist/cjs/biz-components/IPRedirect/type.js.map +7 -0
  76. package/dist/cjs/biz-components/IPRedirect/useAutoRedirect.d.ts +66 -0
  77. package/dist/cjs/biz-components/IPRedirect/useAutoRedirect.js +2 -0
  78. package/dist/cjs/biz-components/IPRedirect/useAutoRedirect.js.map +7 -0
  79. package/dist/cjs/biz-components/IPRedirect/useDetectedRegionRedirect.d.ts +51 -0
  80. package/dist/cjs/biz-components/IPRedirect/useDetectedRegionRedirect.js +2 -0
  81. package/dist/cjs/biz-components/IPRedirect/useDetectedRegionRedirect.js.map +7 -0
  82. package/dist/cjs/biz-components/IPRedirect/useIPRedirect.d.ts +42 -0
  83. package/dist/cjs/biz-components/IPRedirect/useIPRedirect.js +2 -0
  84. package/dist/cjs/biz-components/IPRedirect/useIPRedirect.js.map +7 -0
  85. package/dist/cjs/biz-components/IPRedirect/useRedirectBanner.d.ts +108 -0
  86. package/dist/cjs/biz-components/IPRedirect/useRedirectBanner.js +2 -0
  87. package/dist/cjs/biz-components/IPRedirect/useRedirectBanner.js.map +7 -0
  88. package/dist/cjs/biz-components/IPRedirect/useRegionRedirectManager.d.ts +152 -0
  89. package/dist/cjs/biz-components/IPRedirect/useRegionRedirectManager.js +2 -0
  90. package/dist/cjs/biz-components/IPRedirect/useRegionRedirectManager.js.map +7 -0
  91. package/dist/cjs/biz-components/IPRedirect/useSavedRegionRedirect.d.ts +51 -0
  92. package/dist/cjs/biz-components/IPRedirect/useSavedRegionRedirect.js +2 -0
  93. package/dist/cjs/biz-components/IPRedirect/useSavedRegionRedirect.js.map +7 -0
  94. package/dist/cjs/biz-components/IPRedirect/utils.d.ts +222 -0
  95. package/dist/cjs/biz-components/IPRedirect/utils.js +2 -0
  96. package/dist/cjs/biz-components/IPRedirect/utils.js.map +7 -0
  97. package/dist/cjs/biz-components/ImageOverlayShelf/index.d.ts +130 -0
  98. package/dist/cjs/biz-components/ImageOverlayShelf/index.js +2 -0
  99. package/dist/cjs/biz-components/ImageOverlayShelf/index.js.map +7 -0
  100. package/dist/cjs/biz-components/ImageTextFeature/ImageTextFeature.d.ts +3 -3
  101. package/dist/cjs/biz-components/ImageTextFeature/ImageTextFeature.js +1 -1
  102. package/dist/cjs/biz-components/ImageTextFeature/ImageTextFeature.js.map +3 -3
  103. package/dist/cjs/biz-components/ImageWithText/ImageWithText.d.ts +3 -3
  104. package/dist/cjs/biz-components/Ksp/index.d.ts +3 -3
  105. package/dist/cjs/biz-components/Listing/components/PaidShipping/index.d.ts +4 -4
  106. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.d.ts +3 -3
  107. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.d.ts +3 -3
  108. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.d.ts +3 -3
  109. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.d.ts +3 -3
  110. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.d.ts +3 -3
  111. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductOptions/index.d.ts +3 -3
  112. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGallery/index.d.ts +3 -3
  113. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductSummary/index.d.ts +3 -3
  114. package/dist/cjs/biz-components/Listing/components/PurchaseBar/index.d.ts +3 -3
  115. package/dist/cjs/biz-components/Marquee/Marquee.d.ts +3 -3
  116. package/dist/cjs/biz-components/Marquee/Marquee.js +1 -1
  117. package/dist/cjs/biz-components/Marquee/Marquee.js.map +3 -3
  118. package/dist/cjs/biz-components/MarqueeReview/index.d.ts +3 -3
  119. package/dist/cjs/biz-components/Media/index.d.ts +32 -0
  120. package/dist/cjs/biz-components/Media/index.js +2 -0
  121. package/dist/cjs/biz-components/Media/index.js.map +7 -0
  122. package/dist/cjs/biz-components/MediaPlayerBase/index.d.ts +3 -3
  123. package/dist/cjs/biz-components/MediaPlayerMulti/index.d.ts +3 -3
  124. package/dist/cjs/biz-components/MediaPlayerSticky/index.d.ts +4 -4
  125. package/dist/cjs/biz-components/MediaPlayerSticky/types.d.ts +1 -0
  126. package/dist/cjs/biz-components/MediaPlayerSticky/types.js +1 -1
  127. package/dist/cjs/biz-components/MediaPlayerSticky/types.js.map +1 -1
  128. package/dist/cjs/biz-components/MediaSceneSwitcher/MediaSceneSwitcher.d.ts +3 -3
  129. package/dist/cjs/biz-components/MediaShelf/index.d.ts +216 -0
  130. package/dist/cjs/biz-components/MediaShelf/index.js +2 -0
  131. package/dist/cjs/biz-components/MediaShelf/index.js.map +7 -0
  132. package/dist/cjs/biz-components/MediaShelf/types.d.ts +22 -0
  133. package/dist/cjs/biz-components/MediaShelf/types.js +2 -0
  134. package/dist/cjs/biz-components/MediaShelf/types.js.map +7 -0
  135. package/dist/cjs/biz-components/MemberEquity/index.d.ts +3 -3
  136. package/dist/cjs/biz-components/MiniCart/index.d.ts +88 -0
  137. package/dist/cjs/biz-components/MiniCart/index.js +2 -0
  138. package/dist/cjs/biz-components/MiniCart/index.js.map +7 -0
  139. package/dist/cjs/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.d.ts +3 -3
  140. package/dist/cjs/biz-components/ProductCompare/index.d.ts +3 -3
  141. package/dist/cjs/biz-components/ProductHero/ProductHero.d.ts +3 -3
  142. package/dist/cjs/biz-components/ProductNav/ProductNav.d.ts +3 -3
  143. package/dist/cjs/biz-components/PromotionalBar/index.d.ts +49 -0
  144. package/dist/cjs/biz-components/PromotionalBar/index.js +2 -0
  145. package/dist/cjs/biz-components/PromotionalBar/index.js.map +7 -0
  146. package/dist/cjs/biz-components/SecondaryBanner/index.d.ts +69 -0
  147. package/dist/cjs/biz-components/SecondaryBanner/index.js +2 -0
  148. package/dist/cjs/biz-components/SecondaryBanner/index.js.map +7 -0
  149. package/dist/cjs/biz-components/SelectStore/index.d.ts +3 -3
  150. package/dist/cjs/biz-components/ShelfDisplay/index.d.ts +3 -3
  151. package/dist/cjs/biz-components/ShelfDisplay/shelfDisplay.d.ts +0 -11
  152. package/dist/cjs/biz-components/ShelfDisplay/shelfDisplay.js +1 -1
  153. package/dist/cjs/biz-components/ShelfDisplay/shelfDisplay.js.map +3 -3
  154. package/dist/cjs/biz-components/Slogan/index.d.ts +3 -3
  155. package/dist/cjs/biz-components/Spacer/index.d.ts +3 -3
  156. package/dist/cjs/biz-components/Specs/index.d.ts +3 -3
  157. package/dist/cjs/biz-components/Specs/index.js +1 -1
  158. package/dist/cjs/biz-components/Specs/index.js.map +2 -2
  159. package/dist/cjs/biz-components/SpecsComparison/SpecsComparison.d.ts +3 -3
  160. package/dist/cjs/biz-components/TabWithImage/TabWithImage.d.ts +3 -3
  161. package/dist/cjs/biz-components/Tabs/Tabs.d.ts +3 -3
  162. package/dist/cjs/biz-components/TabsGroup/index.d.ts +3 -3
  163. package/dist/cjs/biz-components/TabsWithMedia/TabsWithMedia.d.ts +3 -3
  164. package/dist/cjs/biz-components/ThreeDCarousel/ThreeDCarousel.d.ts +3 -3
  165. package/dist/cjs/biz-components/Title/Countdown.d.ts +14 -0
  166. package/dist/cjs/biz-components/Title/Countdown.js +2 -0
  167. package/dist/cjs/biz-components/Title/Countdown.js.map +7 -0
  168. package/dist/cjs/biz-components/Title/index.d.ts +3 -3
  169. package/dist/cjs/biz-components/Title/index.js +1 -1
  170. package/dist/cjs/biz-components/Title/index.js.map +3 -3
  171. package/dist/cjs/biz-components/Title/types.d.ts +55 -0
  172. package/dist/cjs/biz-components/Title/types.js +1 -1
  173. package/dist/cjs/biz-components/Title/types.js.map +1 -1
  174. package/dist/cjs/biz-components/VideoFeature/VideoFeature.d.ts +3 -3
  175. package/dist/cjs/biz-components/WheelLottery/BaseModal.d.ts +55 -0
  176. package/dist/cjs/biz-components/WheelLottery/BaseModal.js +12 -0
  177. package/dist/cjs/biz-components/WheelLottery/BaseModal.js.map +7 -0
  178. package/dist/cjs/biz-components/WheelLottery/ChanceMethods.d.ts +30 -0
  179. package/dist/cjs/biz-components/WheelLottery/ChanceMethods.js +2 -0
  180. package/dist/cjs/biz-components/WheelLottery/ChanceMethods.js.map +7 -0
  181. package/dist/cjs/biz-components/WheelLottery/ErrorModal.d.ts +42 -0
  182. package/dist/cjs/biz-components/WheelLottery/ErrorModal.js +2 -0
  183. package/dist/cjs/biz-components/WheelLottery/ErrorModal.js.map +7 -0
  184. package/dist/cjs/biz-components/WheelLottery/MyRewardsModal.d.ts +91 -0
  185. package/dist/cjs/biz-components/WheelLottery/MyRewardsModal.js +2 -0
  186. package/dist/cjs/biz-components/WheelLottery/MyRewardsModal.js.map +7 -0
  187. package/dist/cjs/biz-components/WheelLottery/PrizePool.d.ts +26 -0
  188. package/dist/cjs/biz-components/WheelLottery/PrizePool.js +2 -0
  189. package/dist/cjs/biz-components/WheelLottery/PrizePool.js.map +7 -0
  190. package/dist/cjs/biz-components/WheelLottery/RulesModal.d.ts +43 -0
  191. package/dist/cjs/biz-components/WheelLottery/RulesModal.js +2 -0
  192. package/dist/cjs/biz-components/WheelLottery/RulesModal.js.map +7 -0
  193. package/dist/cjs/biz-components/WheelLottery/ShareModal.d.ts +74 -0
  194. package/dist/cjs/biz-components/WheelLottery/ShareModal.js +2 -0
  195. package/dist/cjs/biz-components/WheelLottery/ShareModal.js.map +7 -0
  196. package/dist/cjs/biz-components/WheelLottery/Wheel.d.ts +27 -0
  197. package/dist/cjs/biz-components/WheelLottery/Wheel.js +2 -0
  198. package/dist/cjs/biz-components/WheelLottery/Wheel.js.map +7 -0
  199. package/dist/cjs/biz-components/WheelLottery/WinnerModal.d.ts +25 -0
  200. package/dist/cjs/biz-components/WheelLottery/WinnerModal.js +2 -0
  201. package/dist/cjs/biz-components/WheelLottery/WinnerModal.js.map +7 -0
  202. package/dist/cjs/biz-components/WheelLottery/index.d.ts +52 -0
  203. package/dist/cjs/biz-components/WheelLottery/index.js +2 -0
  204. package/dist/cjs/biz-components/WheelLottery/index.js.map +7 -0
  205. package/dist/cjs/biz-components/WheelLottery/types.d.ts +1193 -0
  206. package/dist/cjs/biz-components/WheelLottery/types.js +2 -0
  207. package/dist/cjs/biz-components/WheelLottery/types.js.map +7 -0
  208. package/dist/cjs/biz-components/WhyChoose/WhyChoose.d.ts +3 -3
  209. package/dist/cjs/biz-components/index.d.ts +30 -2
  210. package/dist/cjs/biz-components/index.js +1 -1
  211. package/dist/cjs/biz-components/index.js.map +3 -3
  212. package/dist/cjs/components/badge.js +1 -1
  213. package/dist/cjs/components/badge.js.map +2 -2
  214. package/dist/cjs/components/index.d.ts +2 -0
  215. package/dist/cjs/components/index.js +1 -1
  216. package/dist/cjs/components/index.js.map +3 -3
  217. package/dist/cjs/components/paginator.d.ts +12 -0
  218. package/dist/cjs/components/paginator.js +7 -0
  219. package/dist/cjs/components/paginator.js.map +7 -0
  220. package/dist/cjs/components/progress.d.ts +46 -0
  221. package/dist/cjs/components/progress.js +2 -0
  222. package/dist/cjs/components/progress.js.map +7 -0
  223. package/dist/cjs/components/tabs.d.ts +2 -1
  224. package/dist/cjs/components/tabs.js +1 -1
  225. package/dist/cjs/components/tabs.js.map +2 -2
  226. package/dist/cjs/helpers/index.d.ts +1 -0
  227. package/dist/cjs/helpers/index.js +1 -1
  228. package/dist/cjs/helpers/index.js.map +3 -3
  229. package/dist/cjs/helpers/priceFormatting.d.ts +11 -0
  230. package/dist/cjs/helpers/priceFormatting.js +2 -0
  231. package/dist/cjs/helpers/priceFormatting.js.map +7 -0
  232. package/dist/cjs/shared/Styles.d.ts +5 -4
  233. package/dist/cjs/shared/Styles.js +1 -1
  234. package/dist/cjs/shared/Styles.js.map +3 -3
  235. package/dist/cjs/types/props.d.ts +0 -3
  236. package/dist/cjs/types/props.js +1 -1
  237. package/dist/cjs/types/props.js.map +1 -1
  238. package/dist/esm/biz-components/AccordionCards/index.d.ts +3 -3
  239. package/dist/esm/biz-components/ActiveShelf/index.d.ts +222 -0
  240. package/dist/esm/biz-components/ActiveShelf/index.js +2 -0
  241. package/dist/esm/biz-components/ActiveShelf/index.js.map +7 -0
  242. package/dist/esm/biz-components/ActiveShelf/types.d.ts +22 -0
  243. package/dist/esm/biz-components/ActiveShelf/types.js +1 -0
  244. package/dist/esm/biz-components/ActiveShelf/types.js.map +7 -0
  245. package/dist/esm/biz-components/AiuiProvider/index.d.ts +7 -0
  246. package/dist/esm/biz-components/AiuiProvider/index.js +1 -1
  247. package/dist/esm/biz-components/AiuiProvider/index.js.map +2 -2
  248. package/dist/esm/biz-components/AnchorNavigation/index.d.ts +42 -0
  249. package/dist/esm/biz-components/AnchorNavigation/index.js +2 -0
  250. package/dist/esm/biz-components/AnchorNavigation/index.js.map +7 -0
  251. package/dist/esm/biz-components/AnchorNavigation/useAnchorPosition.d.ts +2 -0
  252. package/dist/esm/biz-components/AnchorNavigation/useAnchorPosition.js +2 -0
  253. package/dist/esm/biz-components/AnchorNavigation/useAnchorPosition.js.map +7 -0
  254. package/dist/esm/biz-components/AplusDesc/index.d.ts +3 -3
  255. package/dist/esm/biz-components/BrandCardLink/BrandCardLink.d.ts +3 -3
  256. package/dist/esm/biz-components/BrandCardLink/BrandCardLink.js +1 -1
  257. package/dist/esm/biz-components/BrandCardLink/BrandCardLink.js.map +1 -1
  258. package/dist/esm/biz-components/BrandEquity/BrandEquity.d.ts +3 -3
  259. package/dist/esm/biz-components/BrandEquity/BrandEquity.js +1 -1
  260. package/dist/esm/biz-components/BrandEquity/BrandEquity.js.map +3 -3
  261. package/dist/esm/biz-components/BrandEquity/types.d.ts +1 -0
  262. package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.d.ts +74 -0
  263. package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.js +2 -0
  264. package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.js.map +7 -0
  265. package/dist/esm/biz-components/BuyOneGetOneShelf/hooks/useBogoDataTransform.d.ts +36 -0
  266. package/dist/esm/biz-components/BuyOneGetOneShelf/hooks/useBogoDataTransform.js +2 -0
  267. package/dist/esm/biz-components/BuyOneGetOneShelf/hooks/useBogoDataTransform.js.map +7 -0
  268. package/dist/esm/biz-components/BuyOneGetOneShelf/index.d.ts +193 -0
  269. package/dist/esm/biz-components/BuyOneGetOneShelf/index.js +2 -0
  270. package/dist/esm/biz-components/BuyOneGetOneShelf/index.js.map +7 -0
  271. package/dist/esm/biz-components/Category/index.d.ts +3 -3
  272. package/dist/esm/biz-components/CreativeModule/index.d.ts +3 -3
  273. package/dist/esm/biz-components/DownLoad/index.d.ts +3 -3
  274. package/dist/esm/biz-components/Evaluate/index.d.ts +3 -3
  275. package/dist/esm/biz-components/EventSchedule/index.d.ts +63 -0
  276. package/dist/esm/biz-components/EventSchedule/index.js +2 -0
  277. package/dist/esm/biz-components/EventSchedule/index.js.map +7 -0
  278. package/dist/esm/biz-components/Faq/Faq.d.ts +3 -3
  279. package/dist/esm/biz-components/FeatureCards/FeatureCards.d.ts +3 -3
  280. package/dist/esm/biz-components/FeatureShowcase/FeatureShowcase.d.ts +3 -3
  281. package/dist/esm/biz-components/Features/index.d.ts +3 -3
  282. package/dist/esm/biz-components/FootCharger/index.d.ts +3 -3
  283. package/dist/esm/biz-components/FooterNavigation/index.d.ts +3 -3
  284. package/dist/esm/biz-components/GiftBox/index.d.ts +3 -3
  285. package/dist/esm/biz-components/Graphic/index.d.ts +3 -3
  286. package/dist/esm/biz-components/GraphicAttractionBlock/index.d.ts +3 -3
  287. package/dist/esm/biz-components/GraphicMore/index.d.ts +3 -3
  288. package/dist/esm/biz-components/GraphicOverlay/GraphicOverlay.d.ts +3 -3
  289. package/dist/esm/biz-components/HeaderNavigation/MobileSidebarMenu.js +1 -1
  290. package/dist/esm/biz-components/HeaderNavigation/MobileSidebarMenu.js.map +3 -3
  291. package/dist/esm/biz-components/HeaderNavigation/SidebarDropdown.js +1 -1
  292. package/dist/esm/biz-components/HeaderNavigation/SidebarDropdown.js.map +2 -2
  293. package/dist/esm/biz-components/HeaderNavigation/index.d.ts +3 -3
  294. package/dist/esm/biz-components/HeroBanner/Countdown.js +1 -1
  295. package/dist/esm/biz-components/HeroBanner/Countdown.js.map +2 -2
  296. package/dist/esm/biz-components/HeroBanner/HeroBanner.d.ts +6 -3
  297. package/dist/esm/biz-components/HeroBanner/HeroBanner.js +1 -1
  298. package/dist/esm/biz-components/HeroBanner/HeroBanner.js.map +3 -3
  299. package/dist/esm/biz-components/IPRedirect/RegionBanner.d.ts +37 -0
  300. package/dist/esm/biz-components/IPRedirect/RegionBanner.js +60 -0
  301. package/dist/esm/biz-components/IPRedirect/RegionBanner.js.map +7 -0
  302. package/dist/esm/biz-components/IPRedirect/RegionSelectorModal.d.ts +47 -0
  303. package/dist/esm/biz-components/IPRedirect/RegionSelectorModal.js +69 -0
  304. package/dist/esm/biz-components/IPRedirect/RegionSelectorModal.js.map +7 -0
  305. package/dist/esm/biz-components/IPRedirect/index.d.ts +9 -0
  306. package/dist/esm/biz-components/IPRedirect/index.js +2 -0
  307. package/dist/esm/biz-components/IPRedirect/index.js.map +7 -0
  308. package/dist/esm/biz-components/IPRedirect/type.d.ts +36 -0
  309. package/dist/esm/biz-components/IPRedirect/type.js +1 -0
  310. package/dist/esm/biz-components/IPRedirect/type.js.map +7 -0
  311. package/dist/esm/biz-components/IPRedirect/useAutoRedirect.d.ts +66 -0
  312. package/dist/esm/biz-components/IPRedirect/useAutoRedirect.js +2 -0
  313. package/dist/esm/biz-components/IPRedirect/useAutoRedirect.js.map +7 -0
  314. package/dist/esm/biz-components/IPRedirect/useDetectedRegionRedirect.d.ts +51 -0
  315. package/dist/esm/biz-components/IPRedirect/useDetectedRegionRedirect.js +2 -0
  316. package/dist/esm/biz-components/IPRedirect/useDetectedRegionRedirect.js.map +7 -0
  317. package/dist/esm/biz-components/IPRedirect/useIPRedirect.d.ts +42 -0
  318. package/dist/esm/biz-components/IPRedirect/useIPRedirect.js +2 -0
  319. package/dist/esm/biz-components/IPRedirect/useIPRedirect.js.map +7 -0
  320. package/dist/esm/biz-components/IPRedirect/useRedirectBanner.d.ts +108 -0
  321. package/dist/esm/biz-components/IPRedirect/useRedirectBanner.js +2 -0
  322. package/dist/esm/biz-components/IPRedirect/useRedirectBanner.js.map +7 -0
  323. package/dist/esm/biz-components/IPRedirect/useRegionRedirectManager.d.ts +152 -0
  324. package/dist/esm/biz-components/IPRedirect/useRegionRedirectManager.js +2 -0
  325. package/dist/esm/biz-components/IPRedirect/useRegionRedirectManager.js.map +7 -0
  326. package/dist/esm/biz-components/IPRedirect/useSavedRegionRedirect.d.ts +51 -0
  327. package/dist/esm/biz-components/IPRedirect/useSavedRegionRedirect.js +2 -0
  328. package/dist/esm/biz-components/IPRedirect/useSavedRegionRedirect.js.map +7 -0
  329. package/dist/esm/biz-components/IPRedirect/utils.d.ts +222 -0
  330. package/dist/esm/biz-components/IPRedirect/utils.js +2 -0
  331. package/dist/esm/biz-components/IPRedirect/utils.js.map +7 -0
  332. package/dist/esm/biz-components/ImageOverlayShelf/index.d.ts +130 -0
  333. package/dist/esm/biz-components/ImageOverlayShelf/index.js +2 -0
  334. package/dist/esm/biz-components/ImageOverlayShelf/index.js.map +7 -0
  335. package/dist/esm/biz-components/ImageTextFeature/ImageTextFeature.d.ts +3 -3
  336. package/dist/esm/biz-components/ImageTextFeature/ImageTextFeature.js +1 -1
  337. package/dist/esm/biz-components/ImageTextFeature/ImageTextFeature.js.map +3 -3
  338. package/dist/esm/biz-components/ImageWithText/ImageWithText.d.ts +3 -3
  339. package/dist/esm/biz-components/Ksp/index.d.ts +3 -3
  340. package/dist/esm/biz-components/Listing/components/PaidShipping/index.d.ts +4 -4
  341. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.d.ts +3 -3
  342. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.d.ts +3 -3
  343. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.d.ts +3 -3
  344. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.d.ts +3 -3
  345. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.d.ts +3 -3
  346. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductOptions/index.d.ts +3 -3
  347. package/dist/esm/biz-components/Listing/components/ProductCard/ProductGallery/index.d.ts +3 -3
  348. package/dist/esm/biz-components/Listing/components/ProductCard/ProductSummary/index.d.ts +3 -3
  349. package/dist/esm/biz-components/Listing/components/PurchaseBar/index.d.ts +3 -3
  350. package/dist/esm/biz-components/Marquee/Marquee.d.ts +3 -3
  351. package/dist/esm/biz-components/Marquee/Marquee.js +1 -1
  352. package/dist/esm/biz-components/Marquee/Marquee.js.map +3 -3
  353. package/dist/esm/biz-components/MarqueeReview/index.d.ts +3 -3
  354. package/dist/esm/biz-components/Media/index.d.ts +32 -0
  355. package/dist/esm/biz-components/Media/index.js +2 -0
  356. package/dist/esm/biz-components/Media/index.js.map +7 -0
  357. package/dist/esm/biz-components/MediaPlayerBase/index.d.ts +3 -3
  358. package/dist/esm/biz-components/MediaPlayerMulti/index.d.ts +3 -3
  359. package/dist/esm/biz-components/MediaPlayerSticky/index.d.ts +4 -4
  360. package/dist/esm/biz-components/MediaPlayerSticky/types.d.ts +1 -0
  361. package/dist/esm/biz-components/MediaSceneSwitcher/MediaSceneSwitcher.d.ts +3 -3
  362. package/dist/esm/biz-components/MediaShelf/index.d.ts +216 -0
  363. package/dist/esm/biz-components/MediaShelf/index.js +2 -0
  364. package/dist/esm/biz-components/MediaShelf/index.js.map +7 -0
  365. package/dist/esm/biz-components/MediaShelf/types.d.ts +22 -0
  366. package/dist/esm/biz-components/MediaShelf/types.js +1 -0
  367. package/dist/esm/biz-components/MediaShelf/types.js.map +7 -0
  368. package/dist/esm/biz-components/MemberEquity/index.d.ts +3 -3
  369. package/dist/esm/biz-components/MiniCart/index.d.ts +88 -0
  370. package/dist/esm/biz-components/MiniCart/index.js +2 -0
  371. package/dist/esm/biz-components/MiniCart/index.js.map +7 -0
  372. package/dist/esm/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.d.ts +3 -3
  373. package/dist/esm/biz-components/ProductCompare/index.d.ts +3 -3
  374. package/dist/esm/biz-components/ProductHero/ProductHero.d.ts +3 -3
  375. package/dist/esm/biz-components/ProductNav/ProductNav.d.ts +3 -3
  376. package/dist/esm/biz-components/PromotionalBar/index.d.ts +49 -0
  377. package/dist/esm/biz-components/PromotionalBar/index.js +2 -0
  378. package/dist/esm/biz-components/PromotionalBar/index.js.map +7 -0
  379. package/dist/esm/biz-components/SecondaryBanner/index.d.ts +69 -0
  380. package/dist/esm/biz-components/SecondaryBanner/index.js +2 -0
  381. package/dist/esm/biz-components/SecondaryBanner/index.js.map +7 -0
  382. package/dist/esm/biz-components/SelectStore/index.d.ts +3 -3
  383. package/dist/esm/biz-components/ShelfDisplay/index.d.ts +3 -3
  384. package/dist/esm/biz-components/ShelfDisplay/shelfDisplay.d.ts +0 -11
  385. package/dist/esm/biz-components/ShelfDisplay/shelfDisplay.js +1 -1
  386. package/dist/esm/biz-components/ShelfDisplay/shelfDisplay.js.map +3 -3
  387. package/dist/esm/biz-components/Slogan/index.d.ts +3 -3
  388. package/dist/esm/biz-components/Spacer/index.d.ts +3 -3
  389. package/dist/esm/biz-components/Specs/index.d.ts +3 -3
  390. package/dist/esm/biz-components/Specs/index.js +1 -1
  391. package/dist/esm/biz-components/Specs/index.js.map +2 -2
  392. package/dist/esm/biz-components/SpecsComparison/SpecsComparison.d.ts +3 -3
  393. package/dist/esm/biz-components/TabWithImage/TabWithImage.d.ts +3 -3
  394. package/dist/esm/biz-components/Tabs/Tabs.d.ts +3 -3
  395. package/dist/esm/biz-components/TabsGroup/index.d.ts +3 -3
  396. package/dist/esm/biz-components/TabsWithMedia/TabsWithMedia.d.ts +3 -3
  397. package/dist/esm/biz-components/ThreeDCarousel/ThreeDCarousel.d.ts +3 -3
  398. package/dist/esm/biz-components/Title/Countdown.d.ts +14 -0
  399. package/dist/esm/biz-components/Title/Countdown.js +2 -0
  400. package/dist/esm/biz-components/Title/Countdown.js.map +7 -0
  401. package/dist/esm/biz-components/Title/index.d.ts +3 -3
  402. package/dist/esm/biz-components/Title/index.js +1 -1
  403. package/dist/esm/biz-components/Title/index.js.map +3 -3
  404. package/dist/esm/biz-components/Title/types.d.ts +55 -0
  405. package/dist/esm/biz-components/VideoFeature/VideoFeature.d.ts +3 -3
  406. package/dist/esm/biz-components/WheelLottery/BaseModal.d.ts +55 -0
  407. package/dist/esm/biz-components/WheelLottery/BaseModal.js +12 -0
  408. package/dist/esm/biz-components/WheelLottery/BaseModal.js.map +7 -0
  409. package/dist/esm/biz-components/WheelLottery/ChanceMethods.d.ts +30 -0
  410. package/dist/esm/biz-components/WheelLottery/ChanceMethods.js +2 -0
  411. package/dist/esm/biz-components/WheelLottery/ChanceMethods.js.map +7 -0
  412. package/dist/esm/biz-components/WheelLottery/ErrorModal.d.ts +42 -0
  413. package/dist/esm/biz-components/WheelLottery/ErrorModal.js +2 -0
  414. package/dist/esm/biz-components/WheelLottery/ErrorModal.js.map +7 -0
  415. package/dist/esm/biz-components/WheelLottery/MyRewardsModal.d.ts +91 -0
  416. package/dist/esm/biz-components/WheelLottery/MyRewardsModal.js +2 -0
  417. package/dist/esm/biz-components/WheelLottery/MyRewardsModal.js.map +7 -0
  418. package/dist/esm/biz-components/WheelLottery/PrizePool.d.ts +26 -0
  419. package/dist/esm/biz-components/WheelLottery/PrizePool.js +2 -0
  420. package/dist/esm/biz-components/WheelLottery/PrizePool.js.map +7 -0
  421. package/dist/esm/biz-components/WheelLottery/RulesModal.d.ts +43 -0
  422. package/dist/esm/biz-components/WheelLottery/RulesModal.js +2 -0
  423. package/dist/esm/biz-components/WheelLottery/RulesModal.js.map +7 -0
  424. package/dist/esm/biz-components/WheelLottery/ShareModal.d.ts +74 -0
  425. package/dist/esm/biz-components/WheelLottery/ShareModal.js +2 -0
  426. package/dist/esm/biz-components/WheelLottery/ShareModal.js.map +7 -0
  427. package/dist/esm/biz-components/WheelLottery/Wheel.d.ts +27 -0
  428. package/dist/esm/biz-components/WheelLottery/Wheel.js +2 -0
  429. package/dist/esm/biz-components/WheelLottery/Wheel.js.map +7 -0
  430. package/dist/esm/biz-components/WheelLottery/WinnerModal.d.ts +25 -0
  431. package/dist/esm/biz-components/WheelLottery/WinnerModal.js +2 -0
  432. package/dist/esm/biz-components/WheelLottery/WinnerModal.js.map +7 -0
  433. package/dist/esm/biz-components/WheelLottery/index.d.ts +52 -0
  434. package/dist/esm/biz-components/WheelLottery/index.js +2 -0
  435. package/dist/esm/biz-components/WheelLottery/index.js.map +7 -0
  436. package/dist/esm/biz-components/WheelLottery/types.d.ts +1193 -0
  437. package/dist/esm/biz-components/WheelLottery/types.js +2 -0
  438. package/dist/esm/biz-components/WheelLottery/types.js.map +7 -0
  439. package/dist/esm/biz-components/WhyChoose/WhyChoose.d.ts +3 -3
  440. package/dist/esm/biz-components/index.d.ts +30 -2
  441. package/dist/esm/biz-components/index.js +1 -1
  442. package/dist/esm/biz-components/index.js.map +3 -3
  443. package/dist/esm/components/badge.js +1 -1
  444. package/dist/esm/components/badge.js.map +2 -2
  445. package/dist/esm/components/index.d.ts +2 -0
  446. package/dist/esm/components/index.js +1 -1
  447. package/dist/esm/components/index.js.map +2 -2
  448. package/dist/esm/components/paginator.d.ts +12 -0
  449. package/dist/esm/components/paginator.js +7 -0
  450. package/dist/esm/components/paginator.js.map +7 -0
  451. package/dist/esm/components/progress.d.ts +46 -0
  452. package/dist/esm/components/progress.js +2 -0
  453. package/dist/esm/components/progress.js.map +7 -0
  454. package/dist/esm/components/tabs.d.ts +2 -1
  455. package/dist/esm/components/tabs.js +1 -1
  456. package/dist/esm/components/tabs.js.map +2 -2
  457. package/dist/esm/helpers/index.d.ts +1 -0
  458. package/dist/esm/helpers/index.js +1 -1
  459. package/dist/esm/helpers/index.js.map +3 -3
  460. package/dist/esm/helpers/priceFormatting.d.ts +11 -0
  461. package/dist/esm/helpers/priceFormatting.js +2 -0
  462. package/dist/esm/helpers/priceFormatting.js.map +7 -0
  463. package/dist/esm/shared/Styles.d.ts +5 -4
  464. package/dist/esm/shared/Styles.js +1 -1
  465. package/dist/esm/shared/Styles.js.map +3 -3
  466. package/dist/esm/types/props.d.ts +0 -3
  467. package/dist/tokens/base.css +4 -3
  468. package/dist/tokens/eufy.css +1 -0
  469. package/dist/tokens/soundcore.css +4 -3
  470. package/package.json +8 -3
  471. package/style.css +4915 -126
  472. package/tailwind.config.js +19 -2
  473. package/dist/cjs/stories/HeroBanner.stories.d.ts +0 -28
  474. package/dist/cjs/stories/HeroBanner.stories.js +0 -11
  475. package/dist/cjs/stories/HeroBanner.stories.js.map +0 -7
  476. package/dist/cjs/stories/InlineVideo.stories.d.ts +0 -37
  477. package/dist/cjs/stories/InlineVideo.stories.js +0 -164
  478. package/dist/cjs/stories/InlineVideo.stories.js.map +0 -7
  479. package/dist/cjs/stories/MarqueeReview.stories.d.ts +0 -72
  480. package/dist/cjs/stories/MarqueeReview.stories.js +0 -19
  481. package/dist/cjs/stories/MarqueeReview.stories.js.map +0 -7
  482. package/dist/cjs/stories/MediaSceneSwitcher.stories.d.ts +0 -47
  483. package/dist/cjs/stories/MediaSceneSwitcher.stories.js +0 -2
  484. package/dist/cjs/stories/MediaSceneSwitcher.stories.js.map +0 -7
  485. package/dist/cjs/stories/MemberEquity.stories.d.ts +0 -9
  486. package/dist/cjs/stories/MemberEquity.stories.js +0 -31
  487. package/dist/cjs/stories/MemberEquity.stories.js.map +0 -7
  488. package/dist/cjs/stories/MultiLayoutGraphicBlock.stories.d.ts +0 -9
  489. package/dist/cjs/stories/MultiLayoutGraphicBlock.stories.js +0 -2
  490. package/dist/cjs/stories/MultiLayoutGraphicBlock.stories.js.map +0 -7
  491. package/dist/cjs/stories/ProductNav.stories.d.ts +0 -55
  492. package/dist/cjs/stories/ProductNav.stories.js +0 -2
  493. package/dist/cjs/stories/ProductNav.stories.js.map +0 -7
  494. package/dist/cjs/stories/ThreeDCarousel.stories.d.ts +0 -27
  495. package/dist/cjs/stories/ThreeDCarousel.stories.js +0 -118
  496. package/dist/cjs/stories/ThreeDCarousel.stories.js.map +0 -7
  497. package/dist/cjs/stories/accordionCards.stories.d.ts +0 -38
  498. package/dist/cjs/stories/accordionCards.stories.js +0 -2
  499. package/dist/cjs/stories/accordionCards.stories.js.map +0 -7
  500. package/dist/cjs/stories/alert.stories.d.ts +0 -27
  501. package/dist/cjs/stories/alert.stories.js +0 -2
  502. package/dist/cjs/stories/alert.stories.js.map +0 -7
  503. package/dist/cjs/stories/avatar.stories.d.ts +0 -39
  504. package/dist/cjs/stories/avatar.stories.js +0 -2
  505. package/dist/cjs/stories/avatar.stories.js.map +0 -7
  506. package/dist/cjs/stories/badge.stories.d.ts +0 -96
  507. package/dist/cjs/stories/badge.stories.js +0 -2
  508. package/dist/cjs/stories/badge.stories.js.map +0 -7
  509. package/dist/cjs/stories/bizTabs.stories.d.ts +0 -7
  510. package/dist/cjs/stories/bizTabs.stories.js +0 -2
  511. package/dist/cjs/stories/bizTabs.stories.js.map +0 -7
  512. package/dist/cjs/stories/board.stories.d.ts +0 -6
  513. package/dist/cjs/stories/board.stories.js +0 -2
  514. package/dist/cjs/stories/board.stories.js.map +0 -7
  515. package/dist/cjs/stories/brandEquity.stories.d.ts +0 -16
  516. package/dist/cjs/stories/brandEquity.stories.js +0 -2
  517. package/dist/cjs/stories/brandEquity.stories.js.map +0 -7
  518. package/dist/cjs/stories/brandStrip.stories.d.ts +0 -12
  519. package/dist/cjs/stories/brandStrip.stories.js +0 -2
  520. package/dist/cjs/stories/brandStrip.stories.js.map +0 -7
  521. package/dist/cjs/stories/button.stories.d.ts +0 -56
  522. package/dist/cjs/stories/button.stories.js +0 -2
  523. package/dist/cjs/stories/button.stories.js.map +0 -7
  524. package/dist/cjs/stories/card.stories.d.ts +0 -27
  525. package/dist/cjs/stories/card.stories.js +0 -2
  526. package/dist/cjs/stories/card.stories.js.map +0 -7
  527. package/dist/cjs/stories/carousel.stories.d.ts +0 -8
  528. package/dist/cjs/stories/carousel.stories.js +0 -2
  529. package/dist/cjs/stories/carousel.stories.js.map +0 -7
  530. package/dist/cjs/stories/category.stories.d.ts +0 -17
  531. package/dist/cjs/stories/category.stories.js +0 -2
  532. package/dist/cjs/stories/category.stories.js.map +0 -7
  533. package/dist/cjs/stories/checkbox.stories.d.ts +0 -46
  534. package/dist/cjs/stories/checkbox.stories.js +0 -2
  535. package/dist/cjs/stories/checkbox.stories.js.map +0 -7
  536. package/dist/cjs/stories/container.stories.d.ts +0 -28
  537. package/dist/cjs/stories/container.stories.js +0 -15
  538. package/dist/cjs/stories/container.stories.js.map +0 -7
  539. package/dist/cjs/stories/cpnBanner.stories.d.ts +0 -14
  540. package/dist/cjs/stories/cpnBanner.stories.js +0 -2
  541. package/dist/cjs/stories/cpnBanner.stories.js.map +0 -7
  542. package/dist/cjs/stories/cpnCountdown.stories.d.ts +0 -12
  543. package/dist/cjs/stories/cpnCountdown.stories.js +0 -2
  544. package/dist/cjs/stories/cpnCountdown.stories.js.map +0 -7
  545. package/dist/cjs/stories/cpnNavigation.stories.d.ts +0 -14
  546. package/dist/cjs/stories/cpnNavigation.stories.js +0 -2
  547. package/dist/cjs/stories/cpnNavigation.stories.js.map +0 -7
  548. package/dist/cjs/stories/cpnProductcard.stories.d.ts +0 -14
  549. package/dist/cjs/stories/cpnProductcard.stories.js +0 -2
  550. package/dist/cjs/stories/cpnProductcard.stories.js.map +0 -7
  551. package/dist/cjs/stories/cpnTitle.stories.d.ts +0 -14
  552. package/dist/cjs/stories/cpnTitle.stories.js +0 -2
  553. package/dist/cjs/stories/cpnTitle.stories.js.map +0 -7
  554. package/dist/cjs/stories/creativeModule.stories.d.ts +0 -19
  555. package/dist/cjs/stories/creativeModule.stories.js +0 -2
  556. package/dist/cjs/stories/creativeModule.stories.js.map +0 -7
  557. package/dist/cjs/stories/dialog.stories.d.ts +0 -20
  558. package/dist/cjs/stories/dialog.stories.js +0 -2
  559. package/dist/cjs/stories/dialog.stories.js.map +0 -7
  560. package/dist/cjs/stories/drawer.stories.d.ts +0 -20
  561. package/dist/cjs/stories/drawer.stories.js +0 -2
  562. package/dist/cjs/stories/drawer.stories.js.map +0 -7
  563. package/dist/cjs/stories/drop-down.stories.d.ts +0 -16
  564. package/dist/cjs/stories/drop-down.stories.js +0 -2
  565. package/dist/cjs/stories/drop-down.stories.js.map +0 -7
  566. package/dist/cjs/stories/evaluate.stories.d.ts +0 -16
  567. package/dist/cjs/stories/evaluate.stories.js +0 -2
  568. package/dist/cjs/stories/evaluate.stories.js.map +0 -7
  569. package/dist/cjs/stories/faq.stories.d.ts +0 -21
  570. package/dist/cjs/stories/faq.stories.js +0 -2
  571. package/dist/cjs/stories/faq.stories.js.map +0 -7
  572. package/dist/cjs/stories/featureCards.stories.d.ts +0 -30
  573. package/dist/cjs/stories/featureCards.stories.js +0 -61
  574. package/dist/cjs/stories/featureCards.stories.js.map +0 -7
  575. package/dist/cjs/stories/featureShowcase.stories.d.ts +0 -29
  576. package/dist/cjs/stories/featureShowcase.stories.js +0 -44
  577. package/dist/cjs/stories/featureShowcase.stories.js.map +0 -7
  578. package/dist/cjs/stories/graphic.stories.d.ts +0 -64
  579. package/dist/cjs/stories/graphic.stories.js +0 -2
  580. package/dist/cjs/stories/graphic.stories.js.map +0 -7
  581. package/dist/cjs/stories/graphicAttractionBlock.stories.d.ts +0 -6
  582. package/dist/cjs/stories/graphicAttractionBlock.stories.js +0 -2
  583. package/dist/cjs/stories/graphicAttractionBlock.stories.js.map +0 -7
  584. package/dist/cjs/stories/grid.stories.d.ts +0 -22
  585. package/dist/cjs/stories/grid.stories.js +0 -13
  586. package/dist/cjs/stories/grid.stories.js.map +0 -7
  587. package/dist/cjs/stories/heading.stories.d.ts +0 -84
  588. package/dist/cjs/stories/heading.stories.js +0 -15
  589. package/dist/cjs/stories/heading.stories.js.map +0 -7
  590. package/dist/cjs/stories/imageTextFeature.stories.d.ts +0 -28
  591. package/dist/cjs/stories/imageTextFeature.stories.js +0 -50
  592. package/dist/cjs/stories/imageTextFeature.stories.js.map +0 -7
  593. package/dist/cjs/stories/imageWithText.stories.d.ts +0 -51
  594. package/dist/cjs/stories/imageWithText.stories.js +0 -84
  595. package/dist/cjs/stories/imageWithText.stories.js.map +0 -7
  596. package/dist/cjs/stories/input-number.stories.d.ts +0 -39
  597. package/dist/cjs/stories/input-number.stories.js +0 -2
  598. package/dist/cjs/stories/input-number.stories.js.map +0 -7
  599. package/dist/cjs/stories/input.stories.d.ts +0 -35
  600. package/dist/cjs/stories/input.stories.js +0 -2
  601. package/dist/cjs/stories/input.stories.js.map +0 -7
  602. package/dist/cjs/stories/ksp.stories.d.ts +0 -63
  603. package/dist/cjs/stories/ksp.stories.js +0 -128
  604. package/dist/cjs/stories/ksp.stories.js.map +0 -7
  605. package/dist/cjs/stories/link.stories.d.ts +0 -69
  606. package/dist/cjs/stories/link.stories.js +0 -2
  607. package/dist/cjs/stories/link.stories.js.map +0 -7
  608. package/dist/cjs/stories/marquee.stories.d.ts +0 -30
  609. package/dist/cjs/stories/marquee.stories.js +0 -2
  610. package/dist/cjs/stories/marquee.stories.js.map +0 -7
  611. package/dist/cjs/stories/mediaplayerBase.stories.d.ts +0 -6
  612. package/dist/cjs/stories/mediaplayerBase.stories.js +0 -2
  613. package/dist/cjs/stories/mediaplayerBase.stories.js.map +0 -7
  614. package/dist/cjs/stories/mediaplayerMulti.stories.d.ts +0 -16
  615. package/dist/cjs/stories/mediaplayerMulti.stories.js +0 -2
  616. package/dist/cjs/stories/mediaplayerMulti.stories.js.map +0 -7
  617. package/dist/cjs/stories/picture.stories.d.ts +0 -23
  618. package/dist/cjs/stories/picture.stories.js +0 -9
  619. package/dist/cjs/stories/picture.stories.js.map +0 -7
  620. package/dist/cjs/stories/popover.stories.d.ts +0 -17
  621. package/dist/cjs/stories/popover.stories.js +0 -2
  622. package/dist/cjs/stories/popover.stories.js.map +0 -7
  623. package/dist/cjs/stories/productCompare.stories.d.ts +0 -54
  624. package/dist/cjs/stories/productCompare.stories.js +0 -54
  625. package/dist/cjs/stories/productCompare.stories.js.map +0 -7
  626. package/dist/cjs/stories/productHero.stories.d.ts +0 -29
  627. package/dist/cjs/stories/productHero.stories.js +0 -50
  628. package/dist/cjs/stories/productHero.stories.js.map +0 -7
  629. package/dist/cjs/stories/radio.stories.d.ts +0 -39
  630. package/dist/cjs/stories/radio.stories.js +0 -2
  631. package/dist/cjs/stories/radio.stories.js.map +0 -7
  632. package/dist/cjs/stories/shelfDisplay.stories.d.ts +0 -16
  633. package/dist/cjs/stories/shelfDisplay.stories.js +0 -2
  634. package/dist/cjs/stories/shelfDisplay.stories.js.map +0 -7
  635. package/dist/cjs/stories/skeleton.stories.d.ts +0 -20
  636. package/dist/cjs/stories/skeleton.stories.js +0 -2
  637. package/dist/cjs/stories/skeleton.stories.js.map +0 -7
  638. package/dist/cjs/stories/slogan.stories.d.ts +0 -20
  639. package/dist/cjs/stories/slogan.stories.js +0 -6
  640. package/dist/cjs/stories/slogan.stories.js.map +0 -7
  641. package/dist/cjs/stories/specs.stories.d.ts +0 -13
  642. package/dist/cjs/stories/specs.stories.js +0 -57
  643. package/dist/cjs/stories/specs.stories.js.map +0 -7
  644. package/dist/cjs/stories/specsComparison.stories.d.ts +0 -28
  645. package/dist/cjs/stories/specsComparison.stories.js +0 -105
  646. package/dist/cjs/stories/specsComparison.stories.js.map +0 -7
  647. package/dist/cjs/stories/tabWithImage.stories.d.ts +0 -28
  648. package/dist/cjs/stories/tabWithImage.stories.js +0 -53
  649. package/dist/cjs/stories/tabWithImage.stories.js.map +0 -7
  650. package/dist/cjs/stories/tabs.stories.d.ts +0 -373
  651. package/dist/cjs/stories/tabs.stories.js +0 -2
  652. package/dist/cjs/stories/tabs.stories.js.map +0 -7
  653. package/dist/cjs/stories/tabsWithMedia.stories.d.ts +0 -28
  654. package/dist/cjs/stories/tabsWithMedia.stories.js +0 -68
  655. package/dist/cjs/stories/tabsWithMedia.stories.js.map +0 -7
  656. package/dist/cjs/stories/text.stories.d.ts +0 -86
  657. package/dist/cjs/stories/text.stories.js +0 -21
  658. package/dist/cjs/stories/text.stories.js.map +0 -7
  659. package/dist/cjs/stories/videoFeature.stories.d.ts +0 -29
  660. package/dist/cjs/stories/videoFeature.stories.js +0 -56
  661. package/dist/cjs/stories/videoFeature.stories.js.map +0 -7
  662. package/dist/cjs/stories/whychoose.stories.d.ts +0 -21
  663. package/dist/cjs/stories/whychoose.stories.js +0 -2
  664. package/dist/cjs/stories/whychoose.stories.js.map +0 -7
  665. package/dist/esm/stories/HeroBanner.stories.d.ts +0 -28
  666. package/dist/esm/stories/HeroBanner.stories.js +0 -11
  667. package/dist/esm/stories/HeroBanner.stories.js.map +0 -7
  668. package/dist/esm/stories/InlineVideo.stories.d.ts +0 -37
  669. package/dist/esm/stories/InlineVideo.stories.js +0 -164
  670. package/dist/esm/stories/InlineVideo.stories.js.map +0 -7
  671. package/dist/esm/stories/MarqueeReview.stories.d.ts +0 -72
  672. package/dist/esm/stories/MarqueeReview.stories.js +0 -19
  673. package/dist/esm/stories/MarqueeReview.stories.js.map +0 -7
  674. package/dist/esm/stories/MediaSceneSwitcher.stories.d.ts +0 -47
  675. package/dist/esm/stories/MediaSceneSwitcher.stories.js +0 -2
  676. package/dist/esm/stories/MediaSceneSwitcher.stories.js.map +0 -7
  677. package/dist/esm/stories/MemberEquity.stories.d.ts +0 -9
  678. package/dist/esm/stories/MemberEquity.stories.js +0 -31
  679. package/dist/esm/stories/MemberEquity.stories.js.map +0 -7
  680. package/dist/esm/stories/MultiLayoutGraphicBlock.stories.d.ts +0 -9
  681. package/dist/esm/stories/MultiLayoutGraphicBlock.stories.js +0 -2
  682. package/dist/esm/stories/MultiLayoutGraphicBlock.stories.js.map +0 -7
  683. package/dist/esm/stories/ProductNav.stories.d.ts +0 -55
  684. package/dist/esm/stories/ProductNav.stories.js +0 -2
  685. package/dist/esm/stories/ProductNav.stories.js.map +0 -7
  686. package/dist/esm/stories/ThreeDCarousel.stories.d.ts +0 -27
  687. package/dist/esm/stories/ThreeDCarousel.stories.js +0 -118
  688. package/dist/esm/stories/ThreeDCarousel.stories.js.map +0 -7
  689. package/dist/esm/stories/accordionCards.stories.d.ts +0 -38
  690. package/dist/esm/stories/accordionCards.stories.js +0 -2
  691. package/dist/esm/stories/accordionCards.stories.js.map +0 -7
  692. package/dist/esm/stories/alert.stories.d.ts +0 -27
  693. package/dist/esm/stories/alert.stories.js +0 -2
  694. package/dist/esm/stories/alert.stories.js.map +0 -7
  695. package/dist/esm/stories/avatar.stories.d.ts +0 -39
  696. package/dist/esm/stories/avatar.stories.js +0 -2
  697. package/dist/esm/stories/avatar.stories.js.map +0 -7
  698. package/dist/esm/stories/badge.stories.d.ts +0 -96
  699. package/dist/esm/stories/badge.stories.js +0 -2
  700. package/dist/esm/stories/badge.stories.js.map +0 -7
  701. package/dist/esm/stories/bizTabs.stories.d.ts +0 -7
  702. package/dist/esm/stories/bizTabs.stories.js +0 -2
  703. package/dist/esm/stories/bizTabs.stories.js.map +0 -7
  704. package/dist/esm/stories/board.stories.d.ts +0 -6
  705. package/dist/esm/stories/board.stories.js +0 -2
  706. package/dist/esm/stories/board.stories.js.map +0 -7
  707. package/dist/esm/stories/brandEquity.stories.d.ts +0 -16
  708. package/dist/esm/stories/brandEquity.stories.js +0 -2
  709. package/dist/esm/stories/brandEquity.stories.js.map +0 -7
  710. package/dist/esm/stories/brandStrip.stories.d.ts +0 -12
  711. package/dist/esm/stories/brandStrip.stories.js +0 -2
  712. package/dist/esm/stories/brandStrip.stories.js.map +0 -7
  713. package/dist/esm/stories/button.stories.d.ts +0 -56
  714. package/dist/esm/stories/button.stories.js +0 -2
  715. package/dist/esm/stories/button.stories.js.map +0 -7
  716. package/dist/esm/stories/card.stories.d.ts +0 -27
  717. package/dist/esm/stories/card.stories.js +0 -2
  718. package/dist/esm/stories/card.stories.js.map +0 -7
  719. package/dist/esm/stories/carousel.stories.d.ts +0 -8
  720. package/dist/esm/stories/carousel.stories.js +0 -2
  721. package/dist/esm/stories/carousel.stories.js.map +0 -7
  722. package/dist/esm/stories/category.stories.d.ts +0 -17
  723. package/dist/esm/stories/category.stories.js +0 -2
  724. package/dist/esm/stories/category.stories.js.map +0 -7
  725. package/dist/esm/stories/checkbox.stories.d.ts +0 -46
  726. package/dist/esm/stories/checkbox.stories.js +0 -2
  727. package/dist/esm/stories/checkbox.stories.js.map +0 -7
  728. package/dist/esm/stories/container.stories.d.ts +0 -28
  729. package/dist/esm/stories/container.stories.js +0 -15
  730. package/dist/esm/stories/container.stories.js.map +0 -7
  731. package/dist/esm/stories/cpnBanner.stories.d.ts +0 -14
  732. package/dist/esm/stories/cpnBanner.stories.js +0 -2
  733. package/dist/esm/stories/cpnBanner.stories.js.map +0 -7
  734. package/dist/esm/stories/cpnCountdown.stories.d.ts +0 -12
  735. package/dist/esm/stories/cpnCountdown.stories.js +0 -2
  736. package/dist/esm/stories/cpnCountdown.stories.js.map +0 -7
  737. package/dist/esm/stories/cpnNavigation.stories.d.ts +0 -14
  738. package/dist/esm/stories/cpnNavigation.stories.js +0 -2
  739. package/dist/esm/stories/cpnNavigation.stories.js.map +0 -7
  740. package/dist/esm/stories/cpnProductcard.stories.d.ts +0 -14
  741. package/dist/esm/stories/cpnProductcard.stories.js +0 -2
  742. package/dist/esm/stories/cpnProductcard.stories.js.map +0 -7
  743. package/dist/esm/stories/cpnTitle.stories.d.ts +0 -14
  744. package/dist/esm/stories/cpnTitle.stories.js +0 -2
  745. package/dist/esm/stories/cpnTitle.stories.js.map +0 -7
  746. package/dist/esm/stories/creativeModule.stories.d.ts +0 -19
  747. package/dist/esm/stories/creativeModule.stories.js +0 -2
  748. package/dist/esm/stories/creativeModule.stories.js.map +0 -7
  749. package/dist/esm/stories/dialog.stories.d.ts +0 -20
  750. package/dist/esm/stories/dialog.stories.js +0 -2
  751. package/dist/esm/stories/dialog.stories.js.map +0 -7
  752. package/dist/esm/stories/drawer.stories.d.ts +0 -20
  753. package/dist/esm/stories/drawer.stories.js +0 -2
  754. package/dist/esm/stories/drawer.stories.js.map +0 -7
  755. package/dist/esm/stories/drop-down.stories.d.ts +0 -16
  756. package/dist/esm/stories/drop-down.stories.js +0 -2
  757. package/dist/esm/stories/drop-down.stories.js.map +0 -7
  758. package/dist/esm/stories/evaluate.stories.d.ts +0 -16
  759. package/dist/esm/stories/evaluate.stories.js +0 -2
  760. package/dist/esm/stories/evaluate.stories.js.map +0 -7
  761. package/dist/esm/stories/faq.stories.d.ts +0 -21
  762. package/dist/esm/stories/faq.stories.js +0 -2
  763. package/dist/esm/stories/faq.stories.js.map +0 -7
  764. package/dist/esm/stories/featureCards.stories.d.ts +0 -30
  765. package/dist/esm/stories/featureCards.stories.js +0 -61
  766. package/dist/esm/stories/featureCards.stories.js.map +0 -7
  767. package/dist/esm/stories/featureShowcase.stories.d.ts +0 -29
  768. package/dist/esm/stories/featureShowcase.stories.js +0 -44
  769. package/dist/esm/stories/featureShowcase.stories.js.map +0 -7
  770. package/dist/esm/stories/graphic.stories.d.ts +0 -64
  771. package/dist/esm/stories/graphic.stories.js +0 -2
  772. package/dist/esm/stories/graphic.stories.js.map +0 -7
  773. package/dist/esm/stories/graphicAttractionBlock.stories.d.ts +0 -6
  774. package/dist/esm/stories/graphicAttractionBlock.stories.js +0 -2
  775. package/dist/esm/stories/graphicAttractionBlock.stories.js.map +0 -7
  776. package/dist/esm/stories/grid.stories.d.ts +0 -22
  777. package/dist/esm/stories/grid.stories.js +0 -13
  778. package/dist/esm/stories/grid.stories.js.map +0 -7
  779. package/dist/esm/stories/heading.stories.d.ts +0 -84
  780. package/dist/esm/stories/heading.stories.js +0 -15
  781. package/dist/esm/stories/heading.stories.js.map +0 -7
  782. package/dist/esm/stories/imageTextFeature.stories.d.ts +0 -28
  783. package/dist/esm/stories/imageTextFeature.stories.js +0 -50
  784. package/dist/esm/stories/imageTextFeature.stories.js.map +0 -7
  785. package/dist/esm/stories/imageWithText.stories.d.ts +0 -51
  786. package/dist/esm/stories/imageWithText.stories.js +0 -84
  787. package/dist/esm/stories/imageWithText.stories.js.map +0 -7
  788. package/dist/esm/stories/input-number.stories.d.ts +0 -39
  789. package/dist/esm/stories/input-number.stories.js +0 -2
  790. package/dist/esm/stories/input-number.stories.js.map +0 -7
  791. package/dist/esm/stories/input.stories.d.ts +0 -35
  792. package/dist/esm/stories/input.stories.js +0 -2
  793. package/dist/esm/stories/input.stories.js.map +0 -7
  794. package/dist/esm/stories/ksp.stories.d.ts +0 -63
  795. package/dist/esm/stories/ksp.stories.js +0 -128
  796. package/dist/esm/stories/ksp.stories.js.map +0 -7
  797. package/dist/esm/stories/link.stories.d.ts +0 -69
  798. package/dist/esm/stories/link.stories.js +0 -2
  799. package/dist/esm/stories/link.stories.js.map +0 -7
  800. package/dist/esm/stories/marquee.stories.d.ts +0 -30
  801. package/dist/esm/stories/marquee.stories.js +0 -2
  802. package/dist/esm/stories/marquee.stories.js.map +0 -7
  803. package/dist/esm/stories/mediaplayerBase.stories.d.ts +0 -6
  804. package/dist/esm/stories/mediaplayerBase.stories.js +0 -2
  805. package/dist/esm/stories/mediaplayerBase.stories.js.map +0 -7
  806. package/dist/esm/stories/mediaplayerMulti.stories.d.ts +0 -16
  807. package/dist/esm/stories/mediaplayerMulti.stories.js +0 -2
  808. package/dist/esm/stories/mediaplayerMulti.stories.js.map +0 -7
  809. package/dist/esm/stories/picture.stories.d.ts +0 -23
  810. package/dist/esm/stories/picture.stories.js +0 -9
  811. package/dist/esm/stories/picture.stories.js.map +0 -7
  812. package/dist/esm/stories/popover.stories.d.ts +0 -17
  813. package/dist/esm/stories/popover.stories.js +0 -2
  814. package/dist/esm/stories/popover.stories.js.map +0 -7
  815. package/dist/esm/stories/productCompare.stories.d.ts +0 -54
  816. package/dist/esm/stories/productCompare.stories.js +0 -54
  817. package/dist/esm/stories/productCompare.stories.js.map +0 -7
  818. package/dist/esm/stories/productHero.stories.d.ts +0 -29
  819. package/dist/esm/stories/productHero.stories.js +0 -50
  820. package/dist/esm/stories/productHero.stories.js.map +0 -7
  821. package/dist/esm/stories/radio.stories.d.ts +0 -39
  822. package/dist/esm/stories/radio.stories.js +0 -2
  823. package/dist/esm/stories/radio.stories.js.map +0 -7
  824. package/dist/esm/stories/shelfDisplay.stories.d.ts +0 -16
  825. package/dist/esm/stories/shelfDisplay.stories.js +0 -2
  826. package/dist/esm/stories/shelfDisplay.stories.js.map +0 -7
  827. package/dist/esm/stories/skeleton.stories.d.ts +0 -20
  828. package/dist/esm/stories/skeleton.stories.js +0 -2
  829. package/dist/esm/stories/skeleton.stories.js.map +0 -7
  830. package/dist/esm/stories/slogan.stories.d.ts +0 -20
  831. package/dist/esm/stories/slogan.stories.js +0 -6
  832. package/dist/esm/stories/slogan.stories.js.map +0 -7
  833. package/dist/esm/stories/specs.stories.d.ts +0 -13
  834. package/dist/esm/stories/specs.stories.js +0 -57
  835. package/dist/esm/stories/specs.stories.js.map +0 -7
  836. package/dist/esm/stories/specsComparison.stories.d.ts +0 -28
  837. package/dist/esm/stories/specsComparison.stories.js +0 -105
  838. package/dist/esm/stories/specsComparison.stories.js.map +0 -7
  839. package/dist/esm/stories/tabWithImage.stories.d.ts +0 -28
  840. package/dist/esm/stories/tabWithImage.stories.js +0 -53
  841. package/dist/esm/stories/tabWithImage.stories.js.map +0 -7
  842. package/dist/esm/stories/tabs.stories.d.ts +0 -373
  843. package/dist/esm/stories/tabs.stories.js +0 -2
  844. package/dist/esm/stories/tabs.stories.js.map +0 -7
  845. package/dist/esm/stories/tabsWithMedia.stories.d.ts +0 -28
  846. package/dist/esm/stories/tabsWithMedia.stories.js +0 -68
  847. package/dist/esm/stories/tabsWithMedia.stories.js.map +0 -7
  848. package/dist/esm/stories/text.stories.d.ts +0 -86
  849. package/dist/esm/stories/text.stories.js +0 -21
  850. package/dist/esm/stories/text.stories.js.map +0 -7
  851. package/dist/esm/stories/videoFeature.stories.d.ts +0 -29
  852. package/dist/esm/stories/videoFeature.stories.js +0 -56
  853. package/dist/esm/stories/videoFeature.stories.js.map +0 -7
  854. package/dist/esm/stories/whychoose.stories.d.ts +0 -21
  855. package/dist/esm/stories/whychoose.stories.js +0 -2
  856. package/dist/esm/stories/whychoose.stories.js.map +0 -7
@@ -0,0 +1,51 @@
1
+ import type { RegionConfig } from './type.js';
2
+ export interface UseDetectedRegionRedirectOptions {
3
+ /**
4
+ * 检测到的地区代码(从 useIPRedirect 的 onDetectRegion 返回)
5
+ */
6
+ detectedRegion: 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
+ * IP 检测地区跳转监听 Hook
34
+ *
35
+ * 监听 IP 检测到的推荐地区(来自 useIPRedirect 的 detectedRegion),
36
+ * 如果检测到的地区与当前地区不匹配,自动跳转到推荐地区
37
+ *
38
+ * @example
39
+ * ```tsx
40
+ * useDetectedRegionRedirect({
41
+ * detectedRegion, // 从 useIPRedirect 获取
42
+ * currentRegionCode,
43
+ * regions,
44
+ * excludePaths,
45
+ * pathname,
46
+ * userDismissedBanner,
47
+ * onRedirect: handleAutoRedirect, // 从 useAutoRedirect 获取
48
+ * })
49
+ * ```
50
+ */
51
+ export declare function useDetectedRegionRedirect(options: UseDetectedRegionRedirectOptions): void;
@@ -0,0 +1,2 @@
1
+ import{useEffect as R}from"react";import{isPathInWhitelist as f}from"./utils.js";function p(c){const{detectedRegion:e,currentRegionCode:i,regions:t,excludePaths:n=[],pathname:o="",userDismissedBanner:r=!1,onRedirect:s}=c;R(()=>{if(f(o,n)||r||!e||e===i)return;const d=t.find(g=>g.code===e);d&&s(d)},[e,i,t,r,s,o,n])}export{p as useDetectedRegionRedirect};
2
+ //# sourceMappingURL=useDetectedRegionRedirect.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/IPRedirect/useDetectedRegionRedirect.tsx"],
4
+ "sourcesContent": ["import { useEffect } from 'react'\nimport { isPathInWhitelist } from './utils.js'\nimport type { RegionConfig } from './type.js'\n\nexport interface UseDetectedRegionRedirectOptions {\n /**\n * \u68C0\u6D4B\u5230\u7684\u5730\u533A\u4EE3\u7801\uFF08\u4ECE useIPRedirect \u7684 onDetectRegion \u8FD4\u56DE\uFF09\n */\n detectedRegion: 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 * IP \u68C0\u6D4B\u5730\u533A\u8DF3\u8F6C\u76D1\u542C Hook\n *\n * \u76D1\u542C IP \u68C0\u6D4B\u5230\u7684\u63A8\u8350\u5730\u533A\uFF08\u6765\u81EA useIPRedirect \u7684 detectedRegion\uFF09\uFF0C\n * \u5982\u679C\u68C0\u6D4B\u5230\u7684\u5730\u533A\u4E0E\u5F53\u524D\u5730\u533A\u4E0D\u5339\u914D\uFF0C\u81EA\u52A8\u8DF3\u8F6C\u5230\u63A8\u8350\u5730\u533A\n *\n * @example\n * ```tsx\n * useDetectedRegionRedirect({\n * detectedRegion, // \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 useDetectedRegionRedirect(options: UseDetectedRegionRedirectOptions): void {\n const {\n detectedRegion,\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 const inWhitelist = isPathInWhitelist(pathname, excludePaths)\n\n if (inWhitelist) {\n return\n }\n\n // \u5982\u679C\u7528\u6237\u5DF2\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\u68C0\u6D4B\u5230\u5730\u533A\uFF0C\u6216\u5730\u533A\u5339\u914D\uFF0C\u4E0D\u5904\u7406\n if (!detectedRegion || detectedRegion === currentRegionCode) {\n return\n }\n\n // \u83B7\u53D6\u76EE\u6807\u5730\u533A\u4FE1\u606F\u5E76\u81EA\u52A8\u8DF3\u8F6C\n const targetRegion = regions.find(r => r.code === detectedRegion)\n\n if (targetRegion) {\n // \u8C03\u7528\u81EA\u52A8\u8DF3\u8F6C\u903B\u8F91\uFF08\u4FDD\u7559\u5F53\u524D\u8DEF\u5F84\uFF09\n onRedirect(targetRegion)\n }\n }, [detectedRegion, currentRegionCode, regions, userDismissedBanner, onRedirect, pathname, excludePaths])\n}\n"],
5
+ "mappings": "AAAA,OAAS,aAAAA,MAAiB,QAC1B,OAAS,qBAAAC,MAAyB,aA2D3B,SAASC,EAA0BC,EAAiD,CACzF,KAAM,CACJ,eAAAC,EACA,kBAAAC,EACA,QAAAC,EACA,aAAAC,EAAe,CAAC,EAChB,SAAAC,EAAW,GACX,oBAAAC,EAAsB,GACtB,WAAAC,CACF,EAAIP,EAEJH,EAAU,IAAM,CAcd,GAZoBC,EAAkBO,EAAUD,CAAY,GAOxDE,GAKA,CAACL,GAAkBA,IAAmBC,EACxC,OAIF,MAAMM,EAAeL,EAAQ,KAAKM,GAAKA,EAAE,OAASR,CAAc,EAE5DO,GAEFD,EAAWC,CAAY,CAE3B,EAAG,CAACP,EAAgBC,EAAmBC,EAASG,EAAqBC,EAAYF,EAAUD,CAAY,CAAC,CAC1G",
6
+ "names": ["useEffect", "isPathInWhitelist", "useDetectedRegionRedirect", "options", "detectedRegion", "currentRegionCode", "regions", "excludePaths", "pathname", "userDismissedBanner", "onRedirect", "targetRegion", "r"]
7
+ }
@@ -0,0 +1,42 @@
1
+ import type { RegionConfig } from './type.js';
2
+ export type UseIPRedirectOptions = {
3
+ /** Cookie 名称,默认为 'user_region' */
4
+ cookieName?: string;
5
+ /** Cookie 过期天数,默认为 90 天 */
6
+ cookieExpireDays?: number;
7
+ /** 地区配置列表 */
8
+ regions: RegionConfig[];
9
+ /** 当前站点的地区代码(如 'US', 'CN' 等),用于判断是否需要跳转。强烈建议提供此参数以防止无限跳转 */
10
+ currentRegionCode?: string;
11
+ /** 可选的地区检测回调函数,返回检测到的地区代码。如不需要自动检测,可不传此参数 */
12
+ onDetectRegion?: () => Promise<string | null>;
13
+ /** 是否自动显示弹窗,默认为 true */
14
+ autoShow?: boolean;
15
+ /** 白名单列表,这些 URL/路径不会触发 IP 跳转和横幅显示。支持完整 URL(如 'https://www.anker.com/prime-2025')、路径(如 '/checkout')和通配符(如 '/checkout/*' 或 'https://www.anker.com/campaign/*') */
16
+ excludePaths?: string[];
17
+ /** 当前页面路径(用于白名单检查) */
18
+ currentPath?: string;
19
+ /** 当前页面完整 URL(用于白名单检查) */
20
+ currentUrl?: string;
21
+ };
22
+ export type UseIPRedirectReturn = {
23
+ /** 是否显示地区选择弹窗 */
24
+ isOpen: boolean;
25
+ /** 设置弹窗显示状态 */
26
+ setIsOpen: (open: boolean) => void;
27
+ /** 用户已保存的地区代码 */
28
+ savedRegion: string | null;
29
+ /** 检测到的用户地区代码 */
30
+ detectedRegion: string | null;
31
+ /** 保存用户选择的地区 */
32
+ saveRegion: (regionCode: string, languageCode?: string) => void;
33
+ /** 清除已保存的地区选择 */
34
+ clearRegion: () => void;
35
+ /** 根据地区代码获取地区配置 */
36
+ getRegionByCode: (code: string) => RegionConfig | undefined;
37
+ };
38
+ /**
39
+ * 地区选择 Hook
40
+ * 用于管理用户地区选择和 Cookie 存储
41
+ */
42
+ export declare function useIPRedirect(options: UseIPRedirectOptions): UseIPRedirectReturn;
@@ -0,0 +1,2 @@
1
+ import{useState as R,useEffect as x,useCallback as S}from"react";import f from"js-cookie";function _(c,t,r){return!t||t.length===0?!1:t.some(n=>{if(n.startsWith("http://")||n.startsWith("https://")){if(!r)return!1;if(n.includes("*")){const i=n.replace(/\*/g,".*").replace(/\//g,"\\/");return new RegExp(`^${i}$`).test(r)}return r===n}if(n.includes("*")){const i=n.replace(/\*/g,".*");return new RegExp(`^${i}$`).test(c)}return c===n})}function b(c){const{cookieName:t="user_region",cookieExpireDays:r=90,regions:n,currentRegionCode:i,onDetectRegion:s,autoShow:a=!0,excludePaths:p=[],currentPath:m="",currentUrl:h=""}=c,[v,l]=R(!1),[u,d]=R(null),[P,y]=R(null);x(()=>{const e=f.get(t);e&&d(e)},[t]);const w=S((e,g)=>{const o=g?`v1_${e}_${g}`:`v1_${e}`;f.set(t,o,{expires:r}),d(e)},[t,r]);return x(()=>{if(_(m,p,h))return;const e=new URLSearchParams(window.location.search);if(e.get("_region_selected")){sessionStorage.setItem(`${t}_redirected`,"true"),e.delete("_region_selected");const o=window.location.pathname+(e.toString()?"?"+e.toString():"")+window.location.hash;window.history.replaceState({},"",o)}u||sessionStorage.getItem(`${t}_redirected`)||s&&s().then(o=>{o&&(y(o),i?o!==i&&a&&l(!0):a&&l(!0))})},[s,u,a,i,w,t,m,p,h]),{isOpen:v,setIsOpen:l,savedRegion:u,detectedRegion:P,saveRegion:w,clearRegion:()=>{f.remove(t),d(null)},getRegionByCode:e=>n.find(g=>g.code===e)}}export{b as useIPRedirect};
2
+ //# sourceMappingURL=useIPRedirect.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/IPRedirect/useIPRedirect.ts"],
4
+ "sourcesContent": ["import { useState, useEffect, useCallback } from 'react'\nimport Cookies from 'js-cookie'\nimport type { RegionConfig } from './type.js'\n\nexport type UseIPRedirectOptions = {\n /** Cookie \u540D\u79F0,\u9ED8\u8BA4\u4E3A 'user_region' */\n cookieName?: string\n /** Cookie \u8FC7\u671F\u5929\u6570,\u9ED8\u8BA4\u4E3A 90 \u5929 */\n cookieExpireDays?: number\n /** \u5730\u533A\u914D\u7F6E\u5217\u8868 */\n regions: RegionConfig[]\n /** \u5F53\u524D\u7AD9\u70B9\u7684\u5730\u533A\u4EE3\u7801\uFF08\u5982 'US', 'CN' \u7B49\uFF09\uFF0C\u7528\u4E8E\u5224\u65AD\u662F\u5426\u9700\u8981\u8DF3\u8F6C\u3002\u5F3A\u70C8\u5EFA\u8BAE\u63D0\u4F9B\u6B64\u53C2\u6570\u4EE5\u9632\u6B62\u65E0\u9650\u8DF3\u8F6C */\n currentRegionCode?: string\n /** \u53EF\u9009\u7684\u5730\u533A\u68C0\u6D4B\u56DE\u8C03\u51FD\u6570,\u8FD4\u56DE\u68C0\u6D4B\u5230\u7684\u5730\u533A\u4EE3\u7801\u3002\u5982\u4E0D\u9700\u8981\u81EA\u52A8\u68C0\u6D4B,\u53EF\u4E0D\u4F20\u6B64\u53C2\u6570 */\n onDetectRegion?: () => Promise<string | null>\n /** \u662F\u5426\u81EA\u52A8\u663E\u793A\u5F39\u7A97,\u9ED8\u8BA4\u4E3A true */\n autoShow?: boolean\n /** \u767D\u540D\u5355\u5217\u8868\uFF0C\u8FD9\u4E9B URL/\u8DEF\u5F84\u4E0D\u4F1A\u89E6\u53D1 IP \u8DF3\u8F6C\u548C\u6A2A\u5E45\u663E\u793A\u3002\u652F\u6301\u5B8C\u6574 URL\uFF08\u5982 'https://www.anker.com/prime-2025'\uFF09\u3001\u8DEF\u5F84\uFF08\u5982 '/checkout'\uFF09\u548C\u901A\u914D\u7B26\uFF08\u5982 '/checkout/*' \u6216 'https://www.anker.com/campaign/*'\uFF09 */\n excludePaths?: string[]\n /** \u5F53\u524D\u9875\u9762\u8DEF\u5F84\uFF08\u7528\u4E8E\u767D\u540D\u5355\u68C0\u67E5\uFF09 */\n currentPath?: string\n /** \u5F53\u524D\u9875\u9762\u5B8C\u6574 URL\uFF08\u7528\u4E8E\u767D\u540D\u5355\u68C0\u67E5\uFF09 */\n currentUrl?: string\n}\n\nexport type UseIPRedirectReturn = {\n /** \u662F\u5426\u663E\u793A\u5730\u533A\u9009\u62E9\u5F39\u7A97 */\n isOpen: boolean\n /** \u8BBE\u7F6E\u5F39\u7A97\u663E\u793A\u72B6\u6001 */\n setIsOpen: (open: boolean) => void\n /** \u7528\u6237\u5DF2\u4FDD\u5B58\u7684\u5730\u533A\u4EE3\u7801 */\n savedRegion: string | null\n /** \u68C0\u6D4B\u5230\u7684\u7528\u6237\u5730\u533A\u4EE3\u7801 */\n detectedRegion: string | null\n /** \u4FDD\u5B58\u7528\u6237\u9009\u62E9\u7684\u5730\u533A */\n saveRegion: (regionCode: string, languageCode?: string) => void\n /** \u6E05\u9664\u5DF2\u4FDD\u5B58\u7684\u5730\u533A\u9009\u62E9 */\n clearRegion: () => void\n /** \u6839\u636E\u5730\u533A\u4EE3\u7801\u83B7\u53D6\u5730\u533A\u914D\u7F6E */\n getRegionByCode: (code: string) => RegionConfig | undefined\n}\n\n/**\n * \u68C0\u67E5\u5F53\u524D\u8DEF\u5F84\u662F\u5426\u5728\u767D\u540D\u5355\u4E2D\n * \u652F\u6301\u5B8C\u6574 URL \u5339\u914D\uFF08\u5982 https://www.anker.com/prime-2025\uFF09\n * \u4E5F\u652F\u6301\u8DEF\u5F84\u5339\u914D\uFF08\u5982 /prime-2025\uFF09\n */\nfunction isPathExcluded(currentPath: string, excludePaths: string[], currentUrl?: string): boolean {\n if (!excludePaths || excludePaths.length === 0) {\n return false\n }\n\n return excludePaths.some(pattern => {\n // \u5982\u679C pattern \u662F\u5B8C\u6574 URL\uFF08\u4EE5 http:// \u6216 https:// \u5F00\u5934\uFF09\n if (pattern.startsWith('http://') || pattern.startsWith('https://')) {\n if (!currentUrl) return false\n\n // \u652F\u6301\u901A\u914D\u7B26 * \u5339\u914D\u5B8C\u6574 URL\n if (pattern.includes('*')) {\n const regexPattern = pattern.replace(/\\*/g, '.*').replace(/\\//g, '\\\\/')\n const regex = new RegExp(`^${regexPattern}$`)\n return regex.test(currentUrl)\n }\n // \u7CBE\u786E\u5339\u914D\u5B8C\u6574 URL\n return currentUrl === pattern\n }\n\n // \u5426\u5219\u4F5C\u4E3A\u8DEF\u5F84\u5339\u914D\n // \u652F\u6301\u901A\u914D\u7B26 * \u5339\u914D\n if (pattern.includes('*')) {\n const regexPattern = pattern.replace(/\\*/g, '.*')\n const regex = new RegExp(`^${regexPattern}$`)\n return regex.test(currentPath)\n }\n // \u7CBE\u786E\u5339\u914D\n return currentPath === pattern\n })\n}\n\n/**\n * \u5730\u533A\u9009\u62E9 Hook\n * \u7528\u4E8E\u7BA1\u7406\u7528\u6237\u5730\u533A\u9009\u62E9\u548C Cookie \u5B58\u50A8\n */\nexport function useIPRedirect(options: UseIPRedirectOptions): UseIPRedirectReturn {\n const {\n cookieName = 'user_region',\n cookieExpireDays = 90,\n regions,\n currentRegionCode,\n onDetectRegion,\n autoShow = true,\n excludePaths = [],\n currentPath = '',\n currentUrl = '',\n } = options\n\n const [isOpen, setIsOpen] = useState(false)\n const [savedRegion, setSavedRegion] = useState<string | null>(null)\n const [detectedRegion, setDetectedRegion] = useState<string | null>(null)\n\n // \u4ECE Cookie \u8BFB\u53D6\u5DF2\u4FDD\u5B58\u7684\u5730\u533A\n useEffect(() => {\n const saved = Cookies.get(cookieName)\n if (saved) {\n setSavedRegion(saved)\n }\n }, [cookieName])\n\n // \u4FDD\u5B58\u7528\u6237\u9009\u62E9\u7684\u5730\u533A\n const saveRegion = useCallback(\n (regionCode: string, languageCode?: string) => {\n // \u683C\u5F0F\uFF1Av1_\u56FD\u5BB6_\u8BED\u8A00\uFF08\u5982 v1_CA_EN\uFF09\n // \u5982\u679C\u6CA1\u6709\u63D0\u4F9B languageCode\uFF0C\u4F7F\u7528 regionCode\uFF08\u5411\u540E\u517C\u5BB9\uFF09\n const cookieValue = languageCode ? `v1_${regionCode}_${languageCode}` : `v1_${regionCode}`\n Cookies.set(cookieName, cookieValue, { expires: cookieExpireDays })\n setSavedRegion(regionCode)\n },\n [cookieName, cookieExpireDays]\n )\n\n // \u68C0\u6D4B\u7528\u6237\u5730\u533A\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\u4EFB\u4F55\u68C0\u6D4B\u548C\u8DF3\u8F6C\n if (isPathExcluded(currentPath, excludePaths, currentUrl)) {\n return\n }\n\n // \u68C0\u67E5 URL \u53C2\u6570\uFF0C\u5982\u679C\u5B58\u5728 _region_selected \u6807\u8BB0\uFF0C\u6E05\u7406\u6389\u5E76\u6807\u8BB0\u672C\u6B21\u4F1A\u8BDD\u5DF2\u8DF3\u8F6C\n const urlParams = new URLSearchParams(window.location.search)\n const wasRedirected = urlParams.get('_region_selected')\n\n if (wasRedirected) {\n // \u6E05\u7406 URL \u53C2\u6570\uFF0C\u4F46\u4E0D\u4FDD\u5B58 Cookie\n // \u4F7F\u7528 sessionStorage \u8BB0\u5F55\u672C\u6B21\u4F1A\u8BDD\u5DF2\u8DF3\u8F6C\uFF0C\u907F\u514D\u5237\u65B0\u540E\u518D\u6B21\u8DF3\u8F6C\n sessionStorage.setItem(`${cookieName}_redirected`, 'true')\n urlParams.delete('_region_selected')\n const newUrl =\n window.location.pathname + (urlParams.toString() ? '?' + urlParams.toString() : '') + window.location.hash\n window.history.replaceState({}, '', newUrl)\n }\n\n // \u5982\u679C\u5DF2\u6709\u4FDD\u5B58\u7684\u5730\u533A\u9009\u62E9\uFF0C\u4E0D\u518D\u68C0\u6D4B\n if (savedRegion) {\n return\n }\n\n // \u5982\u679C\u672C\u6B21\u4F1A\u8BDD\u5DF2\u7ECF\u8DF3\u8F6C\u8FC7\uFF0C\u4E0D\u518D\u68C0\u6D4B\n if (sessionStorage.getItem(`${cookieName}_redirected`)) {\n return\n }\n\n // \u6267\u884C IP \u68C0\u6D4B\n if (onDetectRegion) {\n onDetectRegion().then(detected => {\n if (detected) {\n setDetectedRegion(detected)\n\n // \u5173\u952E\u5224\u65AD\uFF1A\u53EA\u6709\u5F53\u68C0\u6D4B\u5230\u7684\u5730\u533A\u4E0E\u5F53\u524D\u7AD9\u70B9\u4E0D\u540C\u65F6\u624D\u663E\u793A\u5F39\u7A97\n if (currentRegionCode) {\n if (detected !== currentRegionCode) {\n if (autoShow) {\n setIsOpen(true)\n }\n }\n // \uD83D\uDD27 \u5982\u679C\u68C0\u6D4B\u5230\u7684\u5730\u533A\u4E0E\u5F53\u524D\u7AD9\u70B9\u5339\u914D\uFF0C\u4E0D\u4FDD\u5B58 Cookie\n // Cookie \u53EA\u5728\u4EE5\u4E0B\u60C5\u51B5\u4FDD\u5B58\uFF1A\n // 1. \u7528\u6237\u4ECE\u5176\u4ED6\u7AD9\u70B9\u8DF3\u8F6C\u8FC7\u6765\uFF08URL \u5E26 _region_selected \u53C2\u6570\uFF09\n // 2. \u7528\u6237\u70B9\u51FB \"Stay Here\" \u6309\u94AE\u624B\u52A8\u4FDD\u5B58\n } else {\n // \u5982\u679C\u6CA1\u6709\u63D0\u4F9B currentRegionCode\uFF0C\u4F7F\u7528\u65E7\u7684\u884C\u4E3A\uFF08\u603B\u662F\u663E\u793A\u5F39\u7A97\uFF09\n if (autoShow) {\n setIsOpen(true)\n }\n }\n }\n })\n }\n }, [\n onDetectRegion,\n savedRegion,\n autoShow,\n currentRegionCode,\n saveRegion,\n cookieName,\n currentPath,\n excludePaths,\n currentUrl,\n ])\n\n // \u6E05\u9664\u5DF2\u4FDD\u5B58\u7684\u5730\u533A\u9009\u62E9\n const clearRegion = () => {\n Cookies.remove(cookieName)\n setSavedRegion(null)\n }\n\n // \u6839\u636E\u5730\u533A\u4EE3\u7801\u83B7\u53D6\u5730\u533A\u914D\u7F6E\n const getRegionByCode = (code: string) => {\n return regions.find(region => region.code === code)\n }\n\n return {\n isOpen,\n setIsOpen,\n savedRegion,\n detectedRegion,\n saveRegion,\n clearRegion,\n getRegionByCode,\n }\n}\n"],
5
+ "mappings": "AAAA,OAAS,YAAAA,EAAU,aAAAC,EAAW,eAAAC,MAAmB,QACjD,OAAOC,MAAa,YA8CpB,SAASC,EAAeC,EAAqBC,EAAwBC,EAA8B,CACjG,MAAI,CAACD,GAAgBA,EAAa,SAAW,EACpC,GAGFA,EAAa,KAAKE,GAAW,CAElC,GAAIA,EAAQ,WAAW,SAAS,GAAKA,EAAQ,WAAW,UAAU,EAAG,CACnE,GAAI,CAACD,EAAY,MAAO,GAGxB,GAAIC,EAAQ,SAAS,GAAG,EAAG,CACzB,MAAMC,EAAeD,EAAQ,QAAQ,MAAO,IAAI,EAAE,QAAQ,MAAO,KAAK,EAEtE,OADc,IAAI,OAAO,IAAIC,CAAY,GAAG,EAC/B,KAAKF,CAAU,CAC9B,CAEA,OAAOA,IAAeC,CACxB,CAIA,GAAIA,EAAQ,SAAS,GAAG,EAAG,CACzB,MAAMC,EAAeD,EAAQ,QAAQ,MAAO,IAAI,EAEhD,OADc,IAAI,OAAO,IAAIC,CAAY,GAAG,EAC/B,KAAKJ,CAAW,CAC/B,CAEA,OAAOA,IAAgBG,CACzB,CAAC,CACH,CAMO,SAASE,EAAcC,EAAoD,CAChF,KAAM,CACJ,WAAAC,EAAa,cACb,iBAAAC,EAAmB,GACnB,QAAAC,EACA,kBAAAC,EACA,eAAAC,EACA,SAAAC,EAAW,GACX,aAAAX,EAAe,CAAC,EAChB,YAAAD,EAAc,GACd,WAAAE,EAAa,EACf,EAAII,EAEE,CAACO,EAAQC,CAAS,EAAInB,EAAS,EAAK,EACpC,CAACoB,EAAaC,CAAc,EAAIrB,EAAwB,IAAI,EAC5D,CAACsB,EAAgBC,CAAiB,EAAIvB,EAAwB,IAAI,EAGxEC,EAAU,IAAM,CACd,MAAMuB,EAAQrB,EAAQ,IAAIS,CAAU,EAChCY,GACFH,EAAeG,CAAK,CAExB,EAAG,CAACZ,CAAU,CAAC,EAGf,MAAMa,EAAavB,EACjB,CAACwB,EAAoBC,IAA0B,CAG7C,MAAMC,EAAcD,EAAe,MAAMD,CAAU,IAAIC,CAAY,GAAK,MAAMD,CAAU,GACxFvB,EAAQ,IAAIS,EAAYgB,EAAa,CAAE,QAASf,CAAiB,CAAC,EAClEQ,EAAeK,CAAU,CAC3B,EACA,CAACd,EAAYC,CAAgB,CAC/B,EAGA,OAAAZ,EAAU,IAAM,CAEd,GAAIG,EAAeC,EAAaC,EAAcC,CAAU,EACtD,OAIF,MAAMsB,EAAY,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAG5D,GAFsBA,EAAU,IAAI,kBAAkB,EAEnC,CAGjB,eAAe,QAAQ,GAAGjB,CAAU,cAAe,MAAM,EACzDiB,EAAU,OAAO,kBAAkB,EACnC,MAAMC,EACJ,OAAO,SAAS,UAAYD,EAAU,SAAS,EAAI,IAAMA,EAAU,SAAS,EAAI,IAAM,OAAO,SAAS,KACxG,OAAO,QAAQ,aAAa,CAAC,EAAG,GAAIC,CAAM,CAC5C,CAGIV,GAKA,eAAe,QAAQ,GAAGR,CAAU,aAAa,GAKjDI,GACFA,EAAe,EAAE,KAAKe,GAAY,CAC5BA,IACFR,EAAkBQ,CAAQ,EAGtBhB,EACEgB,IAAahB,GACXE,GACFE,EAAU,EAAI,EASdF,GACFE,EAAU,EAAI,EAItB,CAAC,CAEL,EAAG,CACDH,EACAI,EACAH,EACAF,EACAU,EACAb,EACAP,EACAC,EACAC,CACF,CAAC,EAaM,CACL,OAAAW,EACA,UAAAC,EACA,YAAAC,EACA,eAAAE,EACA,WAAAG,EACA,YAhBkB,IAAM,CACxBtB,EAAQ,OAAOS,CAAU,EACzBS,EAAe,IAAI,CACrB,EAcE,gBAXuBW,GAChBlB,EAAQ,KAAKmB,GAAUA,EAAO,OAASD,CAAI,CAWpD,CACF",
6
+ "names": ["useState", "useEffect", "useCallback", "Cookies", "isPathExcluded", "currentPath", "excludePaths", "currentUrl", "pattern", "regexPattern", "useIPRedirect", "options", "cookieName", "cookieExpireDays", "regions", "currentRegionCode", "onDetectRegion", "autoShow", "isOpen", "setIsOpen", "savedRegion", "setSavedRegion", "detectedRegion", "setDetectedRegion", "saved", "saveRegion", "regionCode", "languageCode", "cookieValue", "urlParams", "newUrl", "detected", "code", "region"]
7
+ }
@@ -0,0 +1,108 @@
1
+ import type { RegionConfig } from './type.js';
2
+ export interface UseRedirectBannerOptions {
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
+ currentRegionCode: string;
23
+ /**
24
+ * 当前路径
25
+ */
26
+ pathname: string;
27
+ /**
28
+ * 白名单路径(在白名单中不显示横幅)
29
+ */
30
+ excludePaths?: string[];
31
+ /**
32
+ * 保存地区选择的函数
33
+ */
34
+ saveRegion: (regionCode: string, languageCode?: string) => void;
35
+ /**
36
+ * 打开地区选择弹窗的函数
37
+ */
38
+ setModalOpen: (open: boolean) => void;
39
+ }
40
+ export interface UseRedirectBannerReturn {
41
+ /**
42
+ * 横幅是否可见
43
+ */
44
+ bannerVisible: boolean;
45
+ /**
46
+ * 设置横幅可见性
47
+ */
48
+ setBannerVisible: (visible: boolean) => void;
49
+ /**
50
+ * 推荐的地区信息
51
+ */
52
+ recommendedRegion: (RegionConfig & {
53
+ userCountry?: string;
54
+ }) | null;
55
+ /**
56
+ * 用户是否手动关闭了横幅
57
+ */
58
+ userDismissedBanner: boolean;
59
+ /**
60
+ * 设置用户已关闭横幅的状态
61
+ */
62
+ setUserDismissedBanner: (dismissed: boolean) => void;
63
+ /**
64
+ * "留在这里"按钮处理函数
65
+ */
66
+ handleStayHere: () => void;
67
+ /**
68
+ * "切换站点"按钮处理函数
69
+ */
70
+ handleSwitchSite: () => void;
71
+ }
72
+ /**
73
+ * 地区重定向横幅控制 Hook
74
+ *
75
+ * 自动检测用户是否被重定向,并显示提示横幅
76
+ * 提供"留在这里"和"切换站点"的交互
77
+ *
78
+ * @example
79
+ * ```tsx
80
+ * const {
81
+ * bannerVisible,
82
+ * setBannerVisible,
83
+ * recommendedRegion,
84
+ * handleStayHere,
85
+ * handleSwitchSite,
86
+ * } = useRedirectBanner({
87
+ * geo,
88
+ * regions,
89
+ * countryToRegionMap,
90
+ * currentRegionCode,
91
+ * pathname,
92
+ * excludePaths,
93
+ * saveRegion,
94
+ * setModalOpen,
95
+ * })
96
+ *
97
+ * return (
98
+ * <RegionBanner
99
+ * visible={bannerVisible}
100
+ * onVisibleChange={setBannerVisible}
101
+ * onStayHere={handleStayHere}
102
+ * onSwitchSite={handleSwitchSite}
103
+ * recommendedRegion={recommendedRegion}
104
+ * />
105
+ * )
106
+ * ```
107
+ */
108
+ export declare function useRedirectBanner(options: UseRedirectBannerOptions): UseRedirectBannerReturn;
@@ -0,0 +1,2 @@
1
+ import{useState as i,useEffect as _,useCallback as R}from"react";import{isPathInWhitelist as I}from"./utils.js";function x(p){const{geo:o,regions:e,countryToRegionMap:s,currentRegionCode:t,pathname:d,excludePaths:a=[],saveRegion:c,setModalOpen:g}=p,[v,r]=i(!1),[C,y]=i(null),[S,u]=i(!1);_(()=>{if(typeof window>"u")return;if(sessionStorage.getItem("auto_redirected")==="true"&&o?.country?.code){if(I(d,a)){sessionStorage.removeItem("auto_redirected"),sessionStorage.removeItem("auto_redirect_from");return}sessionStorage.removeItem("auto_redirected"),sessionStorage.removeItem("auto_redirect_from");const n=o.country.code.toUpperCase(),l=s[n];if(l){const f=e.find(B=>B.code===l);f&&(y({...f,userCountry:n}),r(!0))}}},[o,s,e,d,a]);const b=R(()=>{const m=e.find(n=>n.code===t);c(t,m?.languageCode),typeof window<"u"&&(sessionStorage.removeItem("auto_redirected"),sessionStorage.removeItem("auto_redirect_from")),u(!0),r(!1)},[c,t,e]),h=R(()=>{g(!0)},[g]);return{bannerVisible:v,setBannerVisible:r,recommendedRegion:C,userDismissedBanner:S,setUserDismissedBanner:u,handleStayHere:b,handleSwitchSite:h}}export{x as useRedirectBanner};
2
+ //# sourceMappingURL=useRedirectBanner.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/IPRedirect/useRedirectBanner.tsx"],
4
+ "sourcesContent": ["import { useState, useEffect, useCallback } from 'react'\nimport { isPathInWhitelist } from './utils.js'\nimport type { RegionConfig } from './type.js'\n\nexport interface UseRedirectBannerOptions {\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 * \u5F53\u524D\u7AD9\u70B9\u7684\u5730\u533A\u4EE3\u7801\n */\n currentRegionCode: string\n\n /**\n * \u5F53\u524D\u8DEF\u5F84\n */\n pathname: string\n\n /**\n * \u767D\u540D\u5355\u8DEF\u5F84\uFF08\u5728\u767D\u540D\u5355\u4E2D\u4E0D\u663E\u793A\u6A2A\u5E45\uFF09\n */\n excludePaths?: string[]\n\n /**\n * \u4FDD\u5B58\u5730\u533A\u9009\u62E9\u7684\u51FD\u6570\n */\n saveRegion: (regionCode: string, languageCode?: string) => void\n\n /**\n * \u6253\u5F00\u5730\u533A\u9009\u62E9\u5F39\u7A97\u7684\u51FD\u6570\n */\n setModalOpen: (open: boolean) => void\n}\n\nexport interface UseRedirectBannerReturn {\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 * \u8BBE\u7F6E\u7528\u6237\u5DF2\u5173\u95ED\u6A2A\u5E45\u7684\u72B6\u6001\n */\n setUserDismissedBanner: (dismissed: boolean) => void\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/**\n * \u5730\u533A\u91CD\u5B9A\u5411\u6A2A\u5E45\u63A7\u5236 Hook\n *\n * \u81EA\u52A8\u68C0\u6D4B\u7528\u6237\u662F\u5426\u88AB\u91CD\u5B9A\u5411\uFF0C\u5E76\u663E\u793A\u63D0\u793A\u6A2A\u5E45\n * \u63D0\u4F9B\"\u7559\u5728\u8FD9\u91CC\"\u548C\"\u5207\u6362\u7AD9\u70B9\"\u7684\u4EA4\u4E92\n *\n * @example\n * ```tsx\n * const {\n * bannerVisible,\n * setBannerVisible,\n * recommendedRegion,\n * handleStayHere,\n * handleSwitchSite,\n * } = useRedirectBanner({\n * geo,\n * regions,\n * countryToRegionMap,\n * currentRegionCode,\n * pathname,\n * excludePaths,\n * saveRegion,\n * setModalOpen,\n * })\n *\n * return (\n * <RegionBanner\n * visible={bannerVisible}\n * onVisibleChange={setBannerVisible}\n * onStayHere={handleStayHere}\n * onSwitchSite={handleSwitchSite}\n * recommendedRegion={recommendedRegion}\n * />\n * )\n * ```\n */\nexport function useRedirectBanner(options: UseRedirectBannerOptions): UseRedirectBannerReturn {\n const {\n geo,\n regions,\n countryToRegionMap,\n currentRegionCode,\n pathname,\n excludePaths = [],\n saveRegion,\n setModalOpen,\n } = options\n\n const [bannerVisible, setBannerVisible] = useState(false)\n const [recommendedRegion, setRecommendedRegion] = useState<(RegionConfig & { userCountry?: string }) | null>(null)\n const [userDismissedBanner, setUserDismissedBanner] = useState(false)\n\n // \u68C0\u67E5\u662F\u5426\u662F\u81EA\u52A8\u8DF3\u8F6C\u8FC7\u6765\u7684\uFF0C\u5982\u679C\u662F\u5219\u663E\u793A\u6A2A\u5E45\n useEffect(() => {\n if (typeof window === 'undefined') return\n\n const autoRedirected = sessionStorage.getItem('auto_redirected')\n\n if (autoRedirected === 'true' && geo?.country?.code) {\n // \u68C0\u67E5\u5F53\u524D\u8DEF\u5F84\u662F\u5426\u5728\u767D\u540D\u5355\u4E2D\n if (isPathInWhitelist(pathname, excludePaths)) {\n // \u5728\u767D\u540D\u5355\u4E2D\uFF0C\u6E05\u9664\u6807\u8BB0\u4F46\u4E0D\u663E\u793A\u6A2A\u5E45\n sessionStorage.removeItem('auto_redirected')\n sessionStorage.removeItem('auto_redirect_from')\n return\n }\n\n // \u6E05\u9664\u6807\u8BB0\uFF08\u53EA\u663E\u793A\u4E00\u6B21\uFF09\n sessionStorage.removeItem('auto_redirected')\n sessionStorage.removeItem('auto_redirect_from')\n\n // \u8BBE\u7F6E\u63A8\u8350\u7684\u5730\u533A\u4FE1\u606F\n const userCountry = geo.country.code.toUpperCase()\n const recommendedRegionCode = countryToRegionMap[userCountry]\n\n // \u53EA\u6709\u5728\u7528\u6237\u7684\u56FD\u5BB6\u6709\u6620\u5C04\u914D\u7F6E\u65F6\u624D\u663E\u793A\u6A2A\u5E45\n if (recommendedRegionCode) {\n const targetRegion = regions.find(r => r.code === recommendedRegionCode)\n if (targetRegion) {\n setRecommendedRegion({\n ...targetRegion,\n userCountry,\n })\n // \u663E\u793A\u6A2A\u5E45\n setBannerVisible(true)\n }\n }\n }\n }, [geo, countryToRegionMap, regions, pathname, excludePaths])\n\n // \"\u7559\u5728\u8FD9\u91CC\"\u6309\u94AE\u5904\u7406\n const handleStayHere = useCallback(() => {\n // \u67E5\u627E\u5F53\u524D\u5730\u533A\u7684\u8BED\u8A00\u4EE3\u7801\n const currentRegion = regions.find(r => r.code === currentRegionCode)\n\n // \u4FDD\u5B58\u7528\u6237\u9009\u62E9\u5230 cookie\uFF08\u5305\u542B\u8BED\u8A00\u4EE3\u7801\uFF09\n saveRegion(currentRegionCode, currentRegion?.languageCode)\n\n // \u6E05\u9664 sessionStorage \u6807\u8BB0\uFF08\u5982\u679C\u6709\uFF09\n if (typeof window !== 'undefined') {\n sessionStorage.removeItem('auto_redirected')\n sessionStorage.removeItem('auto_redirect_from')\n }\n\n // \u6807\u8BB0\u7528\u6237\u5DF2\u624B\u52A8\u5173\u95ED\u6A2A\u5E45\n setUserDismissedBanner(true)\n\n // \u9690\u85CF\u6A2A\u5E45\n setBannerVisible(false)\n }, [saveRegion, currentRegionCode, regions])\n\n // \"\u5207\u6362\u7AD9\u70B9\"\u6309\u94AE\u5904\u7406\n const handleSwitchSite = useCallback(() => {\n // \u6253\u5F00\u5F39\u7A97\u8BA9\u7528\u6237\u9009\u62E9\u5730\u533A\n setModalOpen(true)\n }, [setModalOpen])\n\n return {\n bannerVisible,\n setBannerVisible,\n recommendedRegion,\n userDismissedBanner,\n setUserDismissedBanner,\n handleStayHere,\n handleSwitchSite,\n }\n}\n"],
5
+ "mappings": "AAAA,OAAS,YAAAA,EAAU,aAAAC,EAAW,eAAAC,MAAmB,QACjD,OAAS,qBAAAC,MAAyB,aA0H3B,SAASC,EAAkBC,EAA4D,CAC5F,KAAM,CACJ,IAAAC,EACA,QAAAC,EACA,mBAAAC,EACA,kBAAAC,EACA,SAAAC,EACA,aAAAC,EAAe,CAAC,EAChB,WAAAC,EACA,aAAAC,CACF,EAAIR,EAEE,CAACS,EAAeC,CAAgB,EAAIf,EAAS,EAAK,EAClD,CAACgB,EAAmBC,CAAoB,EAAIjB,EAA2D,IAAI,EAC3G,CAACkB,EAAqBC,CAAsB,EAAInB,EAAS,EAAK,EAGpEC,EAAU,IAAM,CACd,GAAI,OAAO,OAAW,IAAa,OAInC,GAFuB,eAAe,QAAQ,iBAAiB,IAExC,QAAUK,GAAK,SAAS,KAAM,CAEnD,GAAIH,EAAkBO,EAAUC,CAAY,EAAG,CAE7C,eAAe,WAAW,iBAAiB,EAC3C,eAAe,WAAW,oBAAoB,EAC9C,MACF,CAGA,eAAe,WAAW,iBAAiB,EAC3C,eAAe,WAAW,oBAAoB,EAG9C,MAAMS,EAAcd,EAAI,QAAQ,KAAK,YAAY,EAC3Ce,EAAwBb,EAAmBY,CAAW,EAG5D,GAAIC,EAAuB,CACzB,MAAMC,EAAef,EAAQ,KAAKgB,GAAKA,EAAE,OAASF,CAAqB,EACnEC,IACFL,EAAqB,CACnB,GAAGK,EACH,YAAAF,CACF,CAAC,EAEDL,EAAiB,EAAI,EAEzB,CACF,CACF,EAAG,CAACT,EAAKE,EAAoBD,EAASG,EAAUC,CAAY,CAAC,EAG7D,MAAMa,EAAiBtB,EAAY,IAAM,CAEvC,MAAMuB,EAAgBlB,EAAQ,KAAKgB,GAAKA,EAAE,OAASd,CAAiB,EAGpEG,EAAWH,EAAmBgB,GAAe,YAAY,EAGrD,OAAO,OAAW,MACpB,eAAe,WAAW,iBAAiB,EAC3C,eAAe,WAAW,oBAAoB,GAIhDN,EAAuB,EAAI,EAG3BJ,EAAiB,EAAK,CACxB,EAAG,CAACH,EAAYH,EAAmBF,CAAO,CAAC,EAGrCmB,EAAmBxB,EAAY,IAAM,CAEzCW,EAAa,EAAI,CACnB,EAAG,CAACA,CAAY,CAAC,EAEjB,MAAO,CACL,cAAAC,EACA,iBAAAC,EACA,kBAAAC,EACA,oBAAAE,EACA,uBAAAC,EACA,eAAAK,EACA,iBAAAE,CACF,CACF",
6
+ "names": ["useState", "useEffect", "useCallback", "isPathInWhitelist", "useRedirectBanner", "options", "geo", "regions", "countryToRegionMap", "currentRegionCode", "pathname", "excludePaths", "saveRegion", "setModalOpen", "bannerVisible", "setBannerVisible", "recommendedRegion", "setRecommendedRegion", "userDismissedBanner", "setUserDismissedBanner", "userCountry", "recommendedRegionCode", "targetRegion", "r", "handleStayHere", "currentRegion", "handleSwitchSite"]
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
+ import{useCallback as E}from"react";import{useIPRedirect as U}from"./useIPRedirect.js";import{useAutoRedirect as B}from"./useAutoRedirect.js";import{useRedirectBanner as A}from"./useRedirectBanner.js";import{useSavedRegionRedirect as T}from"./useSavedRegionRedirect.js";import{useDetectedRegionRedirect as V}from"./useDetectedRegionRedirect.js";function q(l){const{geo:r,regions:e,countryToRegionMap:p,regionToPathMap:u,currentRegionCode:n,locale:m,pathname:o,currentUrl:h,excludePaths:i=[],cookieName:f="user_region",cookieExpireDays:b=90,checkPageExists:y=!0,checkPageApiEndpoint:M="/api/check-page-exists",onDetectRegion:a}=l,{isOpen:v,setIsOpen:s,saveRegion:t,savedRegion:g,detectedRegion:c}=U({regions:e,currentRegionCode:n,cookieName:f,cookieExpireDays:b,autoShow:!1,onDetectRegion:a?()=>a(r):void 0,excludePaths:i,currentPath:o,currentUrl:h}),{handleAutoRedirect:d}=B({regions:e,regionToPathMap:u,geo:r,locale:m,checkPageExists:y,checkPageApiEndpoint:M}),{bannerVisible:C,setBannerVisible:P,recommendedRegion:k,userDismissedBanner:x,handleStayHere:S,handleSwitchSite:O}=A({geo:r,regions:e,countryToRegionMap:p,currentRegionCode:n,pathname:o,excludePaths:i,saveRegion:t,setModalOpen:s});T({savedRegion:g,currentRegionCode:n,regions:e,excludePaths:i,pathname:o,onRedirect:d}),V({detectedRegion:c,currentRegionCode:n,regions:e,excludePaths:i,pathname:o,onRedirect:d});const D=E(R=>{t(R.code,R.languageCode)},[t]);return{isRegionModalOpen:v,setRegionModalOpen:s,saveRegion:t,savedRegion:g,detectedRegion:c,bannerVisible:C,setBannerVisible:P,recommendedRegion:k,userDismissedBanner:x,handleStayHere:S,handleSwitchSite:O,handleRegionSelect:D}}export{q as useRegionRedirectManager};
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": "AAAA,OAAS,eAAAA,MAAmB,QAC5B,OAAS,iBAAAC,MAAqB,qBAC9B,OAAS,mBAAAC,MAAuB,uBAChC,OAAS,qBAAAC,MAAyB,yBAClC,OAAS,0BAAAC,MAA8B,8BACvC,OAAS,6BAAAC,MAAiC,iCAiLnC,SAASC,EAAyBC,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,EAAIzB,EAAc,CAChB,QAAAQ,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,EAAIzB,EAAgB,CAC7C,QAAAO,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,EAChH9B,EAAkB,CAChB,IAAAK,EACA,QAAAC,EACA,mBAAAC,EACA,kBAAAE,EACA,SAAAE,EACA,aAAAE,EACA,WAAAQ,EACA,aAAcD,CAChB,CAAC,EAGHnB,EAAuB,CACrB,YAAAqB,EACA,kBAAAb,EACA,QAAAH,EACA,aAAAO,EACA,SAAAF,EACA,WAAYa,CACd,CAAC,EAGDtB,EAA0B,CACxB,eAAAqB,EACA,kBAAAd,EACA,QAAAH,EACA,aAAAO,EACA,SAAAF,EACA,WAAYa,CACd,CAAC,EAGD,MAAMO,EAAqBlC,EACxBmC,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": ["useCallback", "useIPRedirect", "useAutoRedirect", "useRedirectBanner", "useSavedRegionRedirect", "useDetectedRegionRedirect", "useRegionRedirectManager", "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
+ import{useEffect as f}from"react";import{isPathInWhitelist as u,parseRegionCookie as p}from"./utils.js";function C(R){const{savedRegion:e,currentRegionCode:i,regions:n,excludePaths:o=[],pathname:r="",userDismissedBanner:t=!1,onRedirect:s}=R;f(()=>{if(u(r,o)||t||!e)return;const d=p(e);if(!d)return;const{regionCode:g}=d;if(g===i)return;const a=n.find(c=>c.code===g);a&&s(a,!0)},[e,i,n,t,s,r,o])}export{C as useSavedRegionRedirect};
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": "AAAA,OAAS,aAAAA,MAAiB,QAC1B,OAAS,qBAAAC,EAAmB,qBAAAC,MAAyB,aA2D9C,SAASC,EAAuBC,EAA8C,CACnF,KAAM,CACJ,YAAAC,EACA,kBAAAC,EACA,QAAAC,EACA,aAAAC,EAAe,CAAC,EAChB,SAAAC,EAAW,GACX,oBAAAC,EAAsB,GACtB,WAAAC,CACF,EAAIP,EAEJJ,EAAU,IAAM,CAYd,GAVIC,EAAkBQ,EAAUD,CAAY,GAKxCE,GAKA,CAACL,EACH,OAIF,MAAMO,EAASV,EAAkBG,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": ["useEffect", "isPathInWhitelist", "parseRegionCookie", "useSavedRegionRedirect", "options", "savedRegion", "currentRegionCode", "regions", "excludePaths", "pathname", "userDismissedBanner", "onRedirect", "parsed", "savedRegionCode", "targetRegion", "r"]
7
+ }