@anker-in/headless-ui 1.1.4 → 1.1.6

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 (344) hide show
  1. package/dist/cjs/biz-components/AccordionCards/index.js.map +2 -2
  2. package/dist/cjs/biz-components/AplusDesc/index.js +1 -1
  3. package/dist/cjs/biz-components/AplusDesc/index.js.map +2 -2
  4. package/dist/cjs/biz-components/Category/SwiperCategory.js +1 -1
  5. package/dist/cjs/biz-components/Category/SwiperCategory.js.map +3 -3
  6. package/dist/cjs/biz-components/Category/index.js +1 -1
  7. package/dist/cjs/biz-components/Category/index.js.map +2 -2
  8. package/dist/cjs/biz-components/CreativeModule/index.js +1 -1
  9. package/dist/cjs/biz-components/CreativeModule/index.js.map +2 -2
  10. package/dist/cjs/biz-components/DownLoad/index.js +1 -1
  11. package/dist/cjs/biz-components/DownLoad/index.js.map +1 -1
  12. package/dist/cjs/biz-components/Evaluate/index.js +1 -1
  13. package/dist/cjs/biz-components/Evaluate/index.js.map +1 -1
  14. package/dist/cjs/biz-components/Faq/Faq.js.map +2 -2
  15. package/dist/cjs/biz-components/Features/index.js +1 -1
  16. package/dist/cjs/biz-components/Features/index.js.map +2 -2
  17. package/dist/cjs/biz-components/FootCharger/index.js +1 -1
  18. package/dist/cjs/biz-components/FootCharger/index.js.map +2 -2
  19. package/dist/cjs/biz-components/FooterNavigation/index.js +1 -1
  20. package/dist/cjs/biz-components/FooterNavigation/index.js.map +2 -2
  21. package/dist/cjs/biz-components/GiftBox/index.js +1 -1
  22. package/dist/cjs/biz-components/GiftBox/index.js.map +1 -1
  23. package/dist/cjs/biz-components/Graphic/index.js +1 -1
  24. package/dist/cjs/biz-components/Graphic/index.js.map +2 -2
  25. package/dist/cjs/biz-components/GraphicMore/index.js +1 -1
  26. package/dist/cjs/biz-components/GraphicMore/index.js.map +2 -2
  27. package/dist/cjs/biz-components/GraphicOverlay/GraphicOverlay.js.map +1 -1
  28. package/dist/cjs/biz-components/HeaderNavigation/NavProvider.js.map +2 -2
  29. package/dist/cjs/biz-components/HeaderNavigation/icons/Polygon.js.map +1 -1
  30. package/dist/cjs/biz-components/HeaderNavigation/index.js +1 -1
  31. package/dist/cjs/biz-components/HeaderNavigation/index.js.map +2 -2
  32. package/dist/cjs/biz-components/HeaderNavigation/withCategory.d.ts +1 -1
  33. package/dist/cjs/biz-components/HeaderNavigation/withCategory.js.map +2 -2
  34. package/dist/cjs/biz-components/HeroBanner/Countdown.js +1 -1
  35. package/dist/cjs/biz-components/HeroBanner/Countdown.js.map +1 -1
  36. package/dist/cjs/biz-components/Listing/BizProductProvider.js.map +2 -2
  37. package/dist/cjs/biz-components/Listing/components/PaidShipping/LearnMore.js +1 -1
  38. package/dist/cjs/biz-components/Listing/components/PaidShipping/LearnMore.js.map +1 -1
  39. package/dist/cjs/biz-components/Listing/components/PaidShipping/ShippingMethod.js +1 -1
  40. package/dist/cjs/biz-components/Listing/components/PaidShipping/ShippingMethod.js.map +2 -2
  41. package/dist/cjs/biz-components/Listing/components/PaidShipping/ShippingPolicyModal.js +1 -1
  42. package/dist/cjs/biz-components/Listing/components/PaidShipping/ShippingPolicyModal.js.map +3 -3
  43. package/dist/cjs/biz-components/Listing/components/PaidShipping/index.js +1 -1
  44. package/dist/cjs/biz-components/Listing/components/PaidShipping/index.js.map +2 -2
  45. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js +5 -6
  46. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js.map +2 -2
  47. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/ModalContainer.js +1 -1
  48. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/ModalContainer.js.map +2 -2
  49. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js +1 -1
  50. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js.map +1 -1
  51. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.js +1 -1
  52. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.js.map +2 -2
  53. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.js +1 -1
  54. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.js.map +2 -2
  55. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js +1 -1
  56. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js.map +2 -2
  57. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js +1 -1
  58. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js.map +2 -2
  59. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductOptions/index.js +1 -1
  60. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductOptions/index.js.map +2 -2
  61. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/index.js +1 -1
  62. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/index.js.map +2 -2
  63. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGallery/components/CompareModal.js +1 -1
  64. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGallery/components/CompareModal.js.map +3 -3
  65. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGallery/components/Select.js +1 -1
  66. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGallery/components/Select.js.map +2 -2
  67. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGallery/components/ShopifyColorOption.js +1 -1
  68. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGallery/components/ShopifyColorOption.js.map +2 -2
  69. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGallery/components/SpecsModal.js +1 -1
  70. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGallery/components/SpecsModal.js.map +3 -3
  71. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGallery/index.js +1 -1
  72. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGallery/index.js.map +2 -2
  73. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGridBox.js +1 -1
  74. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGridBox.js.map +2 -2
  75. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductSummary/index.js +1 -1
  76. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductSummary/index.js.map +2 -2
  77. package/dist/cjs/biz-components/Listing/components/ProductCard/index.js +1 -1
  78. package/dist/cjs/biz-components/Listing/components/ProductCard/index.js.map +2 -2
  79. package/dist/cjs/biz-components/Listing/components/PurchaseBar/ProductActions/index.js +1 -1
  80. package/dist/cjs/biz-components/Listing/components/PurchaseBar/ProductActions/index.js.map +2 -2
  81. package/dist/cjs/biz-components/Listing/components/PurchaseBar/ScrollSpyNav/index.js +1 -1
  82. package/dist/cjs/biz-components/Listing/components/PurchaseBar/ScrollSpyNav/index.js.map +2 -2
  83. package/dist/cjs/biz-components/Listing/components/PurchaseBar/index.js +1 -1
  84. package/dist/cjs/biz-components/Listing/components/PurchaseBar/index.js.map +2 -2
  85. package/dist/cjs/biz-components/Listing/components/index.js.map +1 -1
  86. package/dist/cjs/biz-components/Listing/const.js.map +1 -1
  87. package/dist/cjs/biz-components/Listing/hooks/use-variant-media.d.ts +1 -1
  88. package/dist/cjs/biz-components/Listing/hooks/use-variant-media.js +1 -1
  89. package/dist/cjs/biz-components/Listing/hooks/use-variant-media.js.map +2 -2
  90. package/dist/cjs/biz-components/Listing/hooks/use-variant.js +1 -1
  91. package/dist/cjs/biz-components/Listing/hooks/use-variant.js.map +2 -2
  92. package/dist/cjs/biz-components/Listing/hooks/useBenefits.js +1 -1
  93. package/dist/cjs/biz-components/Listing/hooks/useBenefits.js.map +2 -2
  94. package/dist/cjs/biz-components/Listing/hooks/useDiscountEnable.js.map +2 -2
  95. package/dist/cjs/biz-components/Listing/index.js +1 -1
  96. package/dist/cjs/biz-components/Listing/index.js.map +1 -1
  97. package/dist/cjs/biz-components/Listing/types/product.d.ts +1 -1
  98. package/dist/cjs/biz-components/Listing/types/product.js +1 -1
  99. package/dist/cjs/biz-components/Listing/types/product.js.map +1 -1
  100. package/dist/cjs/biz-components/Listing/types.js.map +1 -1
  101. package/dist/cjs/biz-components/Listing/utils/helper.js +1 -1
  102. package/dist/cjs/biz-components/Listing/utils/helper.js.map +2 -2
  103. package/dist/cjs/biz-components/Listing/utils/index.js +1 -1
  104. package/dist/cjs/biz-components/Listing/utils/index.js.map +2 -2
  105. package/dist/cjs/biz-components/Listing/utils/textFormat.js.map +2 -2
  106. package/dist/cjs/biz-components/MediaPlayerSticky/index.js +1 -1
  107. package/dist/cjs/biz-components/MediaPlayerSticky/index.js.map +3 -3
  108. package/dist/cjs/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.js +1 -1
  109. package/dist/cjs/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.js.map +2 -2
  110. package/dist/cjs/biz-components/NavigationSearch/index.js +2 -2
  111. package/dist/cjs/biz-components/NavigationSearch/index.js.map +2 -2
  112. package/dist/cjs/biz-components/NavigationSearch/types.js.map +1 -1
  113. package/dist/cjs/biz-components/SearchPage/index.js +1 -1
  114. package/dist/cjs/biz-components/SearchPage/index.js.map +2 -2
  115. package/dist/cjs/biz-components/SearchPage/types.js.map +2 -2
  116. package/dist/cjs/biz-components/SelectStore/index.js +1 -1
  117. package/dist/cjs/biz-components/SelectStore/index.js.map +1 -1
  118. package/dist/cjs/biz-components/ShelfDisplay/index.js +1 -1
  119. package/dist/cjs/biz-components/ShelfDisplay/index.js.map +1 -1
  120. package/dist/cjs/biz-components/ShelfDisplay/shelfDisplay.js.map +1 -1
  121. package/dist/cjs/biz-components/ShelfDisplay/shelfDisplayItem.js +1 -1
  122. package/dist/cjs/biz-components/ShelfDisplay/shelfDisplayItem.js.map +1 -1
  123. package/dist/cjs/biz-components/Slogan/index.js.map +2 -2
  124. package/dist/cjs/biz-components/Spacer/index.js +1 -1
  125. package/dist/cjs/biz-components/Spacer/index.js.map +3 -3
  126. package/dist/cjs/biz-components/Specs/dropdown.js +1 -1
  127. package/dist/cjs/biz-components/Specs/dropdown.js.map +1 -1
  128. package/dist/cjs/biz-components/Specs/index.js +1 -1
  129. package/dist/cjs/biz-components/Specs/index.js.map +2 -2
  130. package/dist/cjs/biz-components/Subscribe/index.js +1 -1
  131. package/dist/cjs/biz-components/Subscribe/index.js.map +2 -2
  132. package/dist/cjs/biz-components/SwiperBox/index.js +1 -1
  133. package/dist/cjs/biz-components/SwiperBox/index.js.map +3 -3
  134. package/dist/cjs/biz-components/Tabs/Tabs.js +1 -1
  135. package/dist/cjs/biz-components/Tabs/Tabs.js.map +2 -2
  136. package/dist/cjs/biz-components/Tabs/types.js.map +1 -1
  137. package/dist/cjs/biz-components/TextModal/index.js +1 -1
  138. package/dist/cjs/biz-components/TextModal/index.js.map +1 -1
  139. package/dist/cjs/biz-components/Title/index.js +1 -1
  140. package/dist/cjs/biz-components/Title/index.js.map +2 -2
  141. package/dist/cjs/biz-components/VideoModal/index.js +1 -1
  142. package/dist/cjs/biz-components/VideoModal/index.js.map +2 -2
  143. package/dist/cjs/biz-components/index.d.ts +1 -1
  144. package/dist/cjs/biz-components/index.js +1 -1
  145. package/dist/cjs/biz-components/index.js.map +2 -2
  146. package/dist/cjs/components/ExposureDetector.js.map +1 -1
  147. package/dist/cjs/components/board.js +1 -1
  148. package/dist/cjs/components/board.js.map +3 -3
  149. package/dist/cjs/components/button.js.map +2 -2
  150. package/dist/cjs/components/checkbox.js.map +2 -2
  151. package/dist/cjs/components/dialog.js +1 -1
  152. package/dist/cjs/components/dialog.js.map +1 -1
  153. package/dist/cjs/components/loadingDots.js +1 -1
  154. package/dist/cjs/components/loadingDots.js.map +2 -2
  155. package/dist/cjs/components/picture.js +1 -1
  156. package/dist/cjs/components/picture.js.map +2 -2
  157. package/dist/cjs/cpn-components/CpnNavigation/index.js +1 -1
  158. package/dist/cjs/cpn-components/CpnNavigation/index.js.map +3 -3
  159. package/dist/cjs/cpn-components/CpnNavigation/types.d.ts +1 -0
  160. package/dist/cjs/cpn-components/CpnNavigation/types.js +1 -1
  161. package/dist/cjs/cpn-components/CpnNavigation/types.js.map +3 -3
  162. package/dist/cjs/cpn-components/CpnProductCard/types.d.ts +1 -1
  163. package/dist/cjs/cpn-components/CpnProductCard/types.js.map +1 -1
  164. package/dist/cjs/helpers/utils.js.map +1 -1
  165. package/dist/cjs/hooks/useExposure.js.map +2 -2
  166. package/dist/cjs/hooks/useExposureDetection.js +1 -1
  167. package/dist/cjs/hooks/useExposureDetection.js.map +2 -2
  168. package/dist/cjs/hooks/useIntersectionObserver.js.map +2 -2
  169. package/dist/cjs/hooks/useRollout.js.map +2 -2
  170. package/dist/cjs/stories/board.stories.d.ts +1 -1
  171. package/dist/cjs/stories/board.stories.js +1 -1
  172. package/dist/cjs/stories/board.stories.js.map +2 -2
  173. package/dist/cjs/stories/specs.stories.js.map +2 -2
  174. package/dist/esm/biz-components/AccordionCards/index.js.map +2 -2
  175. package/dist/esm/biz-components/AplusDesc/index.js +1 -1
  176. package/dist/esm/biz-components/AplusDesc/index.js.map +2 -2
  177. package/dist/esm/biz-components/Category/SwiperCategory.js +1 -1
  178. package/dist/esm/biz-components/Category/SwiperCategory.js.map +3 -3
  179. package/dist/esm/biz-components/Category/index.js +1 -1
  180. package/dist/esm/biz-components/Category/index.js.map +2 -2
  181. package/dist/esm/biz-components/CreativeModule/index.js +1 -1
  182. package/dist/esm/biz-components/CreativeModule/index.js.map +2 -2
  183. package/dist/esm/biz-components/DownLoad/index.js +1 -1
  184. package/dist/esm/biz-components/DownLoad/index.js.map +1 -1
  185. package/dist/esm/biz-components/Evaluate/index.js +1 -1
  186. package/dist/esm/biz-components/Evaluate/index.js.map +1 -1
  187. package/dist/esm/biz-components/Faq/Faq.js.map +2 -2
  188. package/dist/esm/biz-components/Features/index.js +1 -1
  189. package/dist/esm/biz-components/Features/index.js.map +2 -2
  190. package/dist/esm/biz-components/FootCharger/index.js +1 -1
  191. package/dist/esm/biz-components/FootCharger/index.js.map +2 -2
  192. package/dist/esm/biz-components/FooterNavigation/index.js +1 -1
  193. package/dist/esm/biz-components/FooterNavigation/index.js.map +2 -2
  194. package/dist/esm/biz-components/GiftBox/index.js +1 -1
  195. package/dist/esm/biz-components/GiftBox/index.js.map +1 -1
  196. package/dist/esm/biz-components/Graphic/index.js +1 -1
  197. package/dist/esm/biz-components/Graphic/index.js.map +2 -2
  198. package/dist/esm/biz-components/GraphicMore/index.js +1 -1
  199. package/dist/esm/biz-components/GraphicMore/index.js.map +2 -2
  200. package/dist/esm/biz-components/GraphicOverlay/GraphicOverlay.js.map +1 -1
  201. package/dist/esm/biz-components/HeaderNavigation/NavProvider.js.map +2 -2
  202. package/dist/esm/biz-components/HeaderNavigation/icons/Polygon.js.map +1 -1
  203. package/dist/esm/biz-components/HeaderNavigation/index.js +1 -1
  204. package/dist/esm/biz-components/HeaderNavigation/index.js.map +2 -2
  205. package/dist/esm/biz-components/HeaderNavigation/withCategory.d.ts +1 -1
  206. package/dist/esm/biz-components/HeaderNavigation/withCategory.js.map +2 -2
  207. package/dist/esm/biz-components/HeroBanner/Countdown.js +1 -1
  208. package/dist/esm/biz-components/HeroBanner/Countdown.js.map +1 -1
  209. package/dist/esm/biz-components/Listing/BizProductProvider.js.map +2 -2
  210. package/dist/esm/biz-components/Listing/components/PaidShipping/LearnMore.js +1 -1
  211. package/dist/esm/biz-components/Listing/components/PaidShipping/LearnMore.js.map +1 -1
  212. package/dist/esm/biz-components/Listing/components/PaidShipping/ShippingMethod.js +1 -1
  213. package/dist/esm/biz-components/Listing/components/PaidShipping/ShippingMethod.js.map +2 -2
  214. package/dist/esm/biz-components/Listing/components/PaidShipping/ShippingPolicyModal.js +1 -1
  215. package/dist/esm/biz-components/Listing/components/PaidShipping/ShippingPolicyModal.js.map +2 -2
  216. package/dist/esm/biz-components/Listing/components/PaidShipping/index.js +1 -1
  217. package/dist/esm/biz-components/Listing/components/PaidShipping/index.js.map +2 -2
  218. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js +5 -6
  219. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js.map +2 -2
  220. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/ModalContainer.js +1 -1
  221. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/ModalContainer.js.map +2 -2
  222. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js +1 -1
  223. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js.map +1 -1
  224. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.js +1 -1
  225. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.js.map +2 -2
  226. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.js +1 -1
  227. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.js.map +2 -2
  228. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js +1 -1
  229. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js.map +2 -2
  230. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js +1 -1
  231. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js.map +2 -2
  232. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductOptions/index.js +1 -1
  233. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductOptions/index.js.map +2 -2
  234. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/index.js +1 -1
  235. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/index.js.map +2 -2
  236. package/dist/esm/biz-components/Listing/components/ProductCard/ProductGallery/components/CompareModal.js +1 -1
  237. package/dist/esm/biz-components/Listing/components/ProductCard/ProductGallery/components/CompareModal.js.map +3 -3
  238. package/dist/esm/biz-components/Listing/components/ProductCard/ProductGallery/components/Select.js +1 -1
  239. package/dist/esm/biz-components/Listing/components/ProductCard/ProductGallery/components/Select.js.map +2 -2
  240. package/dist/esm/biz-components/Listing/components/ProductCard/ProductGallery/components/ShopifyColorOption.js +1 -1
  241. package/dist/esm/biz-components/Listing/components/ProductCard/ProductGallery/components/ShopifyColorOption.js.map +2 -2
  242. package/dist/esm/biz-components/Listing/components/ProductCard/ProductGallery/components/SpecsModal.js +1 -1
  243. package/dist/esm/biz-components/Listing/components/ProductCard/ProductGallery/components/SpecsModal.js.map +3 -3
  244. package/dist/esm/biz-components/Listing/components/ProductCard/ProductGallery/index.js +1 -1
  245. package/dist/esm/biz-components/Listing/components/ProductCard/ProductGallery/index.js.map +2 -2
  246. package/dist/esm/biz-components/Listing/components/ProductCard/ProductGridBox.js +1 -1
  247. package/dist/esm/biz-components/Listing/components/ProductCard/ProductGridBox.js.map +2 -2
  248. package/dist/esm/biz-components/Listing/components/ProductCard/ProductSummary/index.js +1 -1
  249. package/dist/esm/biz-components/Listing/components/ProductCard/ProductSummary/index.js.map +2 -2
  250. package/dist/esm/biz-components/Listing/components/ProductCard/index.js +1 -1
  251. package/dist/esm/biz-components/Listing/components/ProductCard/index.js.map +2 -2
  252. package/dist/esm/biz-components/Listing/components/PurchaseBar/ProductActions/index.js +1 -1
  253. package/dist/esm/biz-components/Listing/components/PurchaseBar/ProductActions/index.js.map +2 -2
  254. package/dist/esm/biz-components/Listing/components/PurchaseBar/ScrollSpyNav/index.js +1 -1
  255. package/dist/esm/biz-components/Listing/components/PurchaseBar/ScrollSpyNav/index.js.map +2 -2
  256. package/dist/esm/biz-components/Listing/components/PurchaseBar/index.js +1 -1
  257. package/dist/esm/biz-components/Listing/components/PurchaseBar/index.js.map +2 -2
  258. package/dist/esm/biz-components/Listing/components/index.js.map +1 -1
  259. package/dist/esm/biz-components/Listing/const.js.map +1 -1
  260. package/dist/esm/biz-components/Listing/hooks/use-variant-media.d.ts +1 -1
  261. package/dist/esm/biz-components/Listing/hooks/use-variant-media.js +1 -1
  262. package/dist/esm/biz-components/Listing/hooks/use-variant-media.js.map +2 -2
  263. package/dist/esm/biz-components/Listing/hooks/use-variant.js +1 -1
  264. package/dist/esm/biz-components/Listing/hooks/use-variant.js.map +2 -2
  265. package/dist/esm/biz-components/Listing/hooks/useBenefits.js +1 -1
  266. package/dist/esm/biz-components/Listing/hooks/useBenefits.js.map +2 -2
  267. package/dist/esm/biz-components/Listing/hooks/useDiscountEnable.js.map +2 -2
  268. package/dist/esm/biz-components/Listing/index.js +1 -1
  269. package/dist/esm/biz-components/Listing/index.js.map +1 -1
  270. package/dist/esm/biz-components/Listing/types/product.d.ts +1 -1
  271. package/dist/esm/biz-components/Listing/types/product.js +1 -1
  272. package/dist/esm/biz-components/Listing/types/product.js.map +1 -1
  273. package/dist/esm/biz-components/Listing/utils/helper.js +1 -1
  274. package/dist/esm/biz-components/Listing/utils/helper.js.map +2 -2
  275. package/dist/esm/biz-components/Listing/utils/index.js +1 -1
  276. package/dist/esm/biz-components/Listing/utils/index.js.map +2 -2
  277. package/dist/esm/biz-components/Listing/utils/textFormat.js.map +2 -2
  278. package/dist/esm/biz-components/MediaPlayerSticky/index.js +1 -1
  279. package/dist/esm/biz-components/MediaPlayerSticky/index.js.map +3 -3
  280. package/dist/esm/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.js +1 -1
  281. package/dist/esm/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.js.map +2 -2
  282. package/dist/esm/biz-components/NavigationSearch/index.js +2 -2
  283. package/dist/esm/biz-components/NavigationSearch/index.js.map +2 -2
  284. package/dist/esm/biz-components/NavigationSearch/types.js.map +1 -1
  285. package/dist/esm/biz-components/SearchPage/index.js +1 -1
  286. package/dist/esm/biz-components/SearchPage/index.js.map +2 -2
  287. package/dist/esm/biz-components/SearchPage/types.js.map +2 -2
  288. package/dist/esm/biz-components/SelectStore/index.js +1 -1
  289. package/dist/esm/biz-components/SelectStore/index.js.map +1 -1
  290. package/dist/esm/biz-components/ShelfDisplay/index.js +1 -1
  291. package/dist/esm/biz-components/ShelfDisplay/index.js.map +1 -1
  292. package/dist/esm/biz-components/ShelfDisplay/shelfDisplay.js.map +1 -1
  293. package/dist/esm/biz-components/ShelfDisplay/shelfDisplayItem.js +1 -1
  294. package/dist/esm/biz-components/ShelfDisplay/shelfDisplayItem.js.map +1 -1
  295. package/dist/esm/biz-components/Slogan/index.js.map +2 -2
  296. package/dist/esm/biz-components/Spacer/index.js +1 -1
  297. package/dist/esm/biz-components/Spacer/index.js.map +3 -3
  298. package/dist/esm/biz-components/Specs/dropdown.js +1 -1
  299. package/dist/esm/biz-components/Specs/dropdown.js.map +1 -1
  300. package/dist/esm/biz-components/Specs/index.js +1 -1
  301. package/dist/esm/biz-components/Specs/index.js.map +2 -2
  302. package/dist/esm/biz-components/Subscribe/index.js +1 -1
  303. package/dist/esm/biz-components/Subscribe/index.js.map +2 -2
  304. package/dist/esm/biz-components/SwiperBox/index.js +1 -1
  305. package/dist/esm/biz-components/SwiperBox/index.js.map +3 -3
  306. package/dist/esm/biz-components/Tabs/Tabs.js +1 -1
  307. package/dist/esm/biz-components/Tabs/Tabs.js.map +2 -2
  308. package/dist/esm/biz-components/TextModal/index.js +1 -1
  309. package/dist/esm/biz-components/TextModal/index.js.map +1 -1
  310. package/dist/esm/biz-components/Title/index.js +1 -1
  311. package/dist/esm/biz-components/Title/index.js.map +2 -2
  312. package/dist/esm/biz-components/VideoModal/index.js +1 -1
  313. package/dist/esm/biz-components/VideoModal/index.js.map +2 -2
  314. package/dist/esm/biz-components/index.d.ts +1 -1
  315. package/dist/esm/biz-components/index.js +1 -1
  316. package/dist/esm/biz-components/index.js.map +2 -2
  317. package/dist/esm/components/ExposureDetector.js.map +1 -1
  318. package/dist/esm/components/board.js +1 -1
  319. package/dist/esm/components/board.js.map +2 -2
  320. package/dist/esm/components/button.js.map +2 -2
  321. package/dist/esm/components/checkbox.js.map +2 -2
  322. package/dist/esm/components/dialog.js +1 -1
  323. package/dist/esm/components/dialog.js.map +1 -1
  324. package/dist/esm/components/loadingDots.js +1 -1
  325. package/dist/esm/components/loadingDots.js.map +2 -2
  326. package/dist/esm/components/picture.js +1 -1
  327. package/dist/esm/components/picture.js.map +2 -2
  328. package/dist/esm/cpn-components/CpnNavigation/index.js +1 -1
  329. package/dist/esm/cpn-components/CpnNavigation/index.js.map +2 -2
  330. package/dist/esm/cpn-components/CpnNavigation/types.d.ts +1 -0
  331. package/dist/esm/cpn-components/CpnNavigation/types.js +1 -0
  332. package/dist/esm/cpn-components/CpnNavigation/types.js.map +3 -3
  333. package/dist/esm/cpn-components/CpnProductCard/types.d.ts +1 -1
  334. package/dist/esm/helpers/utils.js.map +1 -1
  335. package/dist/esm/hooks/useExposure.js.map +2 -2
  336. package/dist/esm/hooks/useExposureDetection.js +1 -1
  337. package/dist/esm/hooks/useExposureDetection.js.map +2 -2
  338. package/dist/esm/hooks/useIntersectionObserver.js.map +2 -2
  339. package/dist/esm/hooks/useRollout.js.map +2 -2
  340. package/dist/esm/stories/board.stories.d.ts +1 -1
  341. package/dist/esm/stories/board.stories.js +1 -1
  342. package/dist/esm/stories/board.stories.js.map +2 -2
  343. package/dist/esm/stories/specs.stories.js.map +2 -2
  344. package/package.json +6 -2
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/hooks/useExposureDetection.ts"],
4
- "sourcesContent": ["import { type RefObject, useRef, useEffect, useCallback } from 'react'\n\n// \u5168\u5C40\u66DD\u5149\u8BB0\u5F55\uFF0C\u786E\u4FDD\u6BCF\u4E2A\u5143\u7D20\u5728\u6574\u4E2A\u9875\u9762\u751F\u547D\u5468\u671F\u4E2D\u53EA\u66DD\u5149\u4E00\u6B21\nconst exposedElementsSet = new Set<string>()\n\nexport interface UseExposureDetectionOptions {\n /**\n * \u552F\u4E00\u6807\u8BC6\uFF0C\u7528\u4E8E\u5224\u65AD\u662F\u5426\u5DF2\u66DD\u5149\n * \u5982\u679C\u4E0D\u63D0\u4F9B\uFF0C\u5C06\u4F7F\u7528\u5143\u7D20\u7684\u552F\u4E00\u6807\u8BC6\uFF08\u5982\u679C\u53EF\u80FD\uFF09\n */\n exposureKey?: string\n /**\n * \u53EF\u89C1\u6027\u9608\u503C\uFF0C0-1 \u4E4B\u95F4\uFF0C\u9ED8\u8BA4 0.5\uFF0850%\uFF09\n */\n threshold?: number\n /**\n * \u505C\u7559\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF09\uFF0C\u9ED8\u8BA4 2000ms\n */\n duration?: number\n /**\n * \u662F\u5426\u53EA\u89E6\u53D1\u4E00\u6B21\uFF0C\u9ED8\u8BA4 true\n */\n once?: boolean\n /**\n * \u66DD\u5149\u56DE\u8C03\u51FD\u6570\n */\n onExposure?: () => void\n /**\n * IntersectionObserver \u7684 rootMargin\n */\n rootMargin?: string\n}\n\n/**\n * \u66DD\u5149\u68C0\u6D4B Hook\n * \u4F7F\u7528 IntersectionObserver \u68C0\u6D4B\u5143\u7D20\u662F\u5426\u81F3\u5C11 50% \u53EF\u89C1\u4E14\u505C\u7559\u65F6\u95F4\u8D85\u8FC7\u6307\u5B9A\u65F6\u95F4\n * \u786E\u4FDD\u5728\u6574\u4E2A\u9875\u9762\u751F\u547D\u5468\u671F\u4E2D\u53EA\u66DD\u5149\u4E00\u6B21\n *\n * @param elementRef - \u8981\u68C0\u6D4B\u7684\u5143\u7D20\u7684 ref\n * @param options - \u914D\u7F6E\u9009\u9879\n * @returns \u8FD4\u56DE\u6E05\u9664\u8BA1\u65F6\u5668\u7684\u65B9\u6CD5\uFF08\u7528\u4E8E\u5207\u6362\u65F6\u6E05\u7406\uFF09\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const ref = useRef<HTMLDivElement>(null)\n * const { clearTimer } = useExposureDetection(ref, {\n * exposureKey: 'my-component-1',\n * threshold: 0.5,\n * duration: 2000,\n * onExposure: () => {\n * console.log('\u5143\u7D20\u5DF2\u66DD\u5149')\n * }\n * })\n *\n * return <div ref={ref}>\u5185\u5BB9</div>\n * }\n * ```\n */\nexport const useExposureDetection = (\n elementRef: RefObject<HTMLElement>,\n options: UseExposureDetectionOptions = {}\n) => {\n const {\n exposureKey,\n threshold = 0.5,\n duration = 2000,\n once = true,\n onExposure,\n rootMargin = '0px',\n } = options\n\n const exposureTimerRef = useRef<NodeJS.Timeout | null>(null)\n const generatedKeyRef = useRef<string | null>(null)\n\n // \u751F\u6210\u552F\u4E00\u7684\u66DD\u5149 key\n const getExposureKey = useCallback(() => {\n if (exposureKey) {\n return exposureKey\n }\n // \u5982\u679C\u6CA1\u6709\u63D0\u4F9B key\uFF0C\u5C1D\u8BD5\u4F7F\u7528\u5143\u7D20\u7684\u552F\u4E00\u6807\u8BC6\n if (elementRef.current && !generatedKeyRef.current) {\n // \u4F7F\u7528\u5143\u7D20\u7684 data-exposure-id \u5C5E\u6027\uFF0C\u6216\u8005\u751F\u6210\u4E00\u4E2A\u57FA\u4E8E\u4F4D\u7F6E\u7684 key\n const dataId = elementRef.current.getAttribute('data-exposure-id')\n if (dataId) {\n generatedKeyRef.current = dataId\n return dataId\n }\n // \u5982\u679C\u6CA1\u6709 data-exposure-id\uFF0C\u4F7F\u7528\u5143\u7D20\u5728 DOM \u4E2D\u7684\u4F4D\u7F6E\u751F\u6210 key\n const path: string[] = []\n let el: Element | null = elementRef.current\n while (el && el !== document.body) {\n const index = Array.from(el.parentElement?.children || []).indexOf(el)\n path.unshift(`${el.tagName.toLowerCase()}[${index}]`)\n el = el.parentElement\n }\n generatedKeyRef.current = path.join(' > ')\n return generatedKeyRef.current\n }\n return generatedKeyRef.current || ''\n }, [exposureKey, elementRef])\n\n // \u6E05\u9664\u8BA1\u65F6\u5668\u7684\u65B9\u6CD5\uFF08\u4E0D\u91CD\u7F6E\u66DD\u5149\u72B6\u6001\uFF09\n const clearTimer = useCallback(() => {\n if (exposureTimerRef.current) {\n clearTimeout(exposureTimerRef.current)\n exposureTimerRef.current = null\n }\n }, [])\n\n useEffect(() => {\n const element = elementRef.current\n if (!element || !onExposure) return\n\n const key = getExposureKey()\n if (!key) {\n console.warn('useExposureDetection: \u65E0\u6CD5\u751F\u6210\u552F\u4E00\u7684 exposureKey\uFF0C\u8BF7\u63D0\u4F9B exposureKey \u53C2\u6570')\n return\n }\n\n // \u5982\u679C\u5DF2\u7ECF\u66DD\u5149\u8FC7\u4E14\u8BBE\u7F6E\u4E86 once\uFF0C\u76F4\u63A5\u8FD4\u56DE\uFF0C\u4E0D\u518D\u76D1\u542C\n if (once && exposedElementsSet.has(key)) {\n return\n }\n\n const observer = new IntersectionObserver(\n entries => {\n entries.forEach(entry => {\n // \u5982\u679C\u53EF\u89C1\u6027\u8FBE\u5230\u9608\u503C\uFF08\u9ED8\u8BA4 50%\uFF09\n if (entry.intersectionRatio >= threshold) {\n // \u5982\u679C\u8FD8\u6CA1\u6709\u89E6\u53D1\u8FC7\u66DD\u5149\u4E14\u6CA1\u6709\u6B63\u5728\u8BA1\u65F6\u7684\u8BA1\u65F6\u5668\uFF0C\u5F00\u59CB\u8BA1\u65F6\n if ((!once || !exposedElementsSet.has(key)) && !exposureTimerRef.current) {\n exposureTimerRef.current = setTimeout(() => {\n // \u518D\u6B21\u68C0\u67E5\u662F\u5426\u5DF2\u66DD\u5149\uFF08\u9632\u6B62\u5728\u8BA1\u65F6\u671F\u95F4\u88AB\u5176\u4ED6\u64CD\u4F5C\u89E6\u53D1\uFF09\n if (once && exposedElementsSet.has(key)) return\n\n // \u6807\u8BB0\u4E3A\u5DF2\u66DD\u5149\n if (once) {\n exposedElementsSet.add(key)\n }\n // \u89E6\u53D1\u66DD\u5149\u4E8B\u4EF6\n onExposure()\n }, duration)\n }\n } else {\n // \u5982\u679C\u53EF\u89C1\u6027\u4F4E\u4E8E\u9608\u503C\uFF0C\u6E05\u9664\u8BA1\u65F6\u5668\uFF08\u4F46\u4E0D\u79FB\u9664\u66DD\u5149\u6807\u8BB0\uFF09\n if (exposureTimerRef.current) {\n clearTimeout(exposureTimerRef.current)\n exposureTimerRef.current = null\n }\n }\n })\n },\n {\n threshold: threshold,\n rootMargin: rootMargin,\n }\n )\n\n observer.observe(element)\n\n return () => {\n observer.disconnect()\n if (exposureTimerRef.current) {\n clearTimeout(exposureTimerRef.current)\n exposureTimerRef.current = null\n }\n }\n }, [elementRef, onExposure, threshold, duration, once, rootMargin, getExposureKey])\n\n return { clearTimer }\n}\n\n/**\n * \u6E05\u9664\u6307\u5B9A key \u7684\u66DD\u5149\u8BB0\u5F55\uFF08\u7528\u4E8E\u6D4B\u8BD5\u6216\u7279\u6B8A\u573A\u666F\uFF09\n */\nexport const clearExposureRecord = (key: string) => {\n exposedElementsSet.delete(key)\n}\n\n/**\n * \u6E05\u9664\u6240\u6709\u66DD\u5149\u8BB0\u5F55\uFF08\u7528\u4E8E\u6D4B\u8BD5\u6216\u7279\u6B8A\u573A\u666F\uFF09\n */\nexport const clearAllExposureRecords = () => {\n exposedElementsSet.clear()\n}\n\n/**\n * \u68C0\u67E5\u6307\u5B9A key \u662F\u5426\u5DF2\u66DD\u5149\n */\nexport const hasExposed = (key: string): boolean => {\n return exposedElementsSet.has(key)\n}\n\n"],
5
- "mappings": "AAAA,OAAyB,UAAAA,EAAQ,aAAAC,EAAW,eAAAC,MAAmB,QAG/D,MAAMC,EAAqB,IAAI,IAwDlBC,EAAuB,CAClCC,EACAC,EAAuC,CAAC,IACrC,CACH,KAAM,CACJ,YAAAC,EACA,UAAAC,EAAY,GACZ,SAAAC,EAAW,IACX,KAAAC,EAAO,GACP,WAAAC,EACA,WAAAC,EAAa,KACf,EAAIN,EAEEO,EAAmBb,EAA8B,IAAI,EACrDc,EAAkBd,EAAsB,IAAI,EAG5Ce,EAAiBb,EAAY,IAAM,CACvC,GAAIK,EACF,OAAOA,EAGT,GAAIF,EAAW,SAAW,CAACS,EAAgB,QAAS,CAElD,MAAME,EAASX,EAAW,QAAQ,aAAa,kBAAkB,EACjE,GAAIW,EACF,OAAAF,EAAgB,QAAUE,EACnBA,EAGT,MAAMC,EAAiB,CAAC,EACxB,IAAIC,EAAqBb,EAAW,QACpC,KAAOa,GAAMA,IAAO,SAAS,MAAM,CACjC,MAAMC,EAAQ,MAAM,KAAKD,EAAG,eAAe,UAAY,CAAC,CAAC,EAAE,QAAQA,CAAE,EACrED,EAAK,QAAQ,GAAGC,EAAG,QAAQ,YAAY,CAAC,IAAIC,CAAK,GAAG,EACpDD,EAAKA,EAAG,aACV,CACA,OAAAJ,EAAgB,QAAUG,EAAK,KAAK,KAAK,EAClCH,EAAgB,OACzB,CACA,OAAOA,EAAgB,SAAW,EACpC,EAAG,CAACP,EAAaF,CAAU,CAAC,EAGtBe,EAAalB,EAAY,IAAM,CAC/BW,EAAiB,UACnB,aAAaA,EAAiB,OAAO,EACrCA,EAAiB,QAAU,KAE/B,EAAG,CAAC,CAAC,EAEL,OAAAZ,EAAU,IAAM,CACd,MAAMoB,EAAUhB,EAAW,QAC3B,GAAI,CAACgB,GAAW,CAACV,EAAY,OAE7B,MAAMW,EAAMP,EAAe,EAC3B,GAAI,CAACO,EAAK,CACR,QAAQ,KAAK,+HAA8D,EAC3E,MACF,CAGA,GAAIZ,GAAQP,EAAmB,IAAImB,CAAG,EACpC,OAGF,MAAMC,EAAW,IAAI,qBACnBC,GAAW,CACTA,EAAQ,QAAQC,GAAS,CAEnBA,EAAM,mBAAqBjB,GAExB,CAACE,GAAQ,CAACP,EAAmB,IAAImB,CAAG,IAAM,CAACT,EAAiB,UAC/DA,EAAiB,QAAU,WAAW,IAAM,CAEtCH,GAAQP,EAAmB,IAAImB,CAAG,IAGlCZ,GACFP,EAAmB,IAAImB,CAAG,EAG5BX,EAAW,EACb,EAAGF,CAAQ,GAITI,EAAiB,UACnB,aAAaA,EAAiB,OAAO,EACrCA,EAAiB,QAAU,KAGjC,CAAC,CACH,EACA,CACE,UAAWL,EACX,WAAYI,CACd,CACF,EAEA,OAAAW,EAAS,QAAQF,CAAO,EAEjB,IAAM,CACXE,EAAS,WAAW,EAChBV,EAAiB,UACnB,aAAaA,EAAiB,OAAO,EACrCA,EAAiB,QAAU,KAE/B,CACF,EAAG,CAACR,EAAYM,EAAYH,EAAWC,EAAUC,EAAME,EAAYG,CAAc,CAAC,EAE3E,CAAE,WAAAK,CAAW,CACtB,EAKaM,EAAuBJ,GAAgB,CAClDnB,EAAmB,OAAOmB,CAAG,CAC/B,EAKaK,EAA0B,IAAM,CAC3CxB,EAAmB,MAAM,CAC3B,EAKayB,EAAcN,GAClBnB,EAAmB,IAAImB,CAAG",
4
+ "sourcesContent": ["import { type RefObject, useRef, useEffect, useCallback } from 'react'\n\n// \u5168\u5C40\u66DD\u5149\u8BB0\u5F55\uFF0C\u786E\u4FDD\u6BCF\u4E2A\u5143\u7D20\u5728\u6574\u4E2A\u9875\u9762\u751F\u547D\u5468\u671F\u4E2D\u53EA\u66DD\u5149\u4E00\u6B21\nconst exposedElementsSet = new Set<string>()\n\nexport interface UseExposureDetectionOptions {\n /**\n * \u552F\u4E00\u6807\u8BC6\uFF0C\u7528\u4E8E\u5224\u65AD\u662F\u5426\u5DF2\u66DD\u5149\n * \u5982\u679C\u4E0D\u63D0\u4F9B\uFF0C\u5C06\u4F7F\u7528\u5143\u7D20\u7684\u552F\u4E00\u6807\u8BC6\uFF08\u5982\u679C\u53EF\u80FD\uFF09\n */\n exposureKey?: string\n /**\n * \u53EF\u89C1\u6027\u9608\u503C\uFF0C0-1 \u4E4B\u95F4\uFF0C\u9ED8\u8BA4 0.5\uFF0850%\uFF09\n */\n threshold?: number\n /**\n * \u505C\u7559\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF09\uFF0C\u9ED8\u8BA4 2000ms\n */\n duration?: number\n /**\n * \u662F\u5426\u53EA\u89E6\u53D1\u4E00\u6B21\uFF0C\u9ED8\u8BA4 true\n */\n once?: boolean\n /**\n * \u66DD\u5149\u56DE\u8C03\u51FD\u6570\n */\n onExposure?: () => void\n /**\n * IntersectionObserver \u7684 rootMargin\n */\n rootMargin?: string\n}\n\n/**\n * \u66DD\u5149\u68C0\u6D4B Hook\n * \u4F7F\u7528 IntersectionObserver \u68C0\u6D4B\u5143\u7D20\u662F\u5426\u81F3\u5C11 50% \u53EF\u89C1\u4E14\u505C\u7559\u65F6\u95F4\u8D85\u8FC7\u6307\u5B9A\u65F6\u95F4\n * \u786E\u4FDD\u5728\u6574\u4E2A\u9875\u9762\u751F\u547D\u5468\u671F\u4E2D\u53EA\u66DD\u5149\u4E00\u6B21\n *\n * @param elementRef - \u8981\u68C0\u6D4B\u7684\u5143\u7D20\u7684 ref\n * @param options - \u914D\u7F6E\u9009\u9879\n * @returns \u8FD4\u56DE\u6E05\u9664\u8BA1\u65F6\u5668\u7684\u65B9\u6CD5\uFF08\u7528\u4E8E\u5207\u6362\u65F6\u6E05\u7406\uFF09\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const ref = useRef<HTMLDivElement>(null)\n * const { clearTimer } = useExposureDetection(ref, {\n * exposureKey: 'my-component-1',\n * threshold: 0.5,\n * duration: 2000,\n * onExposure: () => {\n * console.log('\u5143\u7D20\u5DF2\u66DD\u5149')\n * }\n * })\n *\n * return <div ref={ref}>\u5185\u5BB9</div>\n * }\n * ```\n */\nexport const useExposureDetection = (elementRef: RefObject<HTMLElement>, options: UseExposureDetectionOptions = {}) => {\n const { exposureKey, threshold = 0.5, duration = 2000, once = true, onExposure, rootMargin = '0px' } = options\n\n const exposureTimerRef = useRef<number | null>(null)\n const generatedKeyRef = useRef<string | null>(null)\n\n // \u751F\u6210\u552F\u4E00\u7684\u66DD\u5149 key\n const getExposureKey = useCallback(() => {\n if (exposureKey) {\n return exposureKey\n }\n // \u5982\u679C\u6CA1\u6709\u63D0\u4F9B key\uFF0C\u5C1D\u8BD5\u4F7F\u7528\u5143\u7D20\u7684\u552F\u4E00\u6807\u8BC6\n if (elementRef.current && !generatedKeyRef.current) {\n // \u4F7F\u7528\u5143\u7D20\u7684 data-exposure-id \u5C5E\u6027\uFF0C\u6216\u8005\u751F\u6210\u4E00\u4E2A\u57FA\u4E8E\u4F4D\u7F6E\u7684 key\n const dataId = elementRef.current.getAttribute('data-exposure-id')\n if (dataId) {\n generatedKeyRef.current = dataId\n return dataId\n }\n // \u5982\u679C\u6CA1\u6709 data-exposure-id\uFF0C\u4F7F\u7528\u5143\u7D20\u5728 DOM \u4E2D\u7684\u4F4D\u7F6E\u751F\u6210 key\n const path: string[] = []\n let el: Element | null = elementRef.current\n while (el && el !== document.body) {\n const index = Array.from(el.parentElement?.children || []).indexOf(el)\n path.unshift(`${el.tagName.toLowerCase()}[${index}]`)\n el = el.parentElement\n }\n generatedKeyRef.current = path.join(' > ')\n return generatedKeyRef.current\n }\n return generatedKeyRef.current || ''\n }, [exposureKey, elementRef])\n\n // \u6E05\u9664\u8BA1\u65F6\u5668\u7684\u65B9\u6CD5\uFF08\u4E0D\u91CD\u7F6E\u66DD\u5149\u72B6\u6001\uFF09\n const clearTimer = useCallback(() => {\n if (exposureTimerRef.current) {\n clearTimeout(exposureTimerRef.current)\n exposureTimerRef.current = null\n }\n }, [])\n\n useEffect(() => {\n const element = elementRef.current\n if (!element || !onExposure) return\n\n const key = getExposureKey()\n if (!key) {\n console.warn('useExposureDetection: \u65E0\u6CD5\u751F\u6210\u552F\u4E00\u7684 exposureKey\uFF0C\u8BF7\u63D0\u4F9B exposureKey \u53C2\u6570')\n return\n }\n\n // \u5982\u679C\u5DF2\u7ECF\u66DD\u5149\u8FC7\u4E14\u8BBE\u7F6E\u4E86 once\uFF0C\u76F4\u63A5\u8FD4\u56DE\uFF0C\u4E0D\u518D\u76D1\u542C\n if (once && exposedElementsSet.has(key)) {\n return\n }\n\n const observer = new IntersectionObserver(\n entries => {\n entries.forEach(entry => {\n // \u5982\u679C\u53EF\u89C1\u6027\u8FBE\u5230\u9608\u503C\uFF08\u9ED8\u8BA4 50%\uFF09\n if (entry.intersectionRatio >= threshold) {\n // \u5982\u679C\u8FD8\u6CA1\u6709\u89E6\u53D1\u8FC7\u66DD\u5149\u4E14\u6CA1\u6709\u6B63\u5728\u8BA1\u65F6\u7684\u8BA1\u65F6\u5668\uFF0C\u5F00\u59CB\u8BA1\u65F6\n if ((!once || !exposedElementsSet.has(key)) && !exposureTimerRef.current) {\n exposureTimerRef.current = window.setTimeout(() => {\n // \u518D\u6B21\u68C0\u67E5\u662F\u5426\u5DF2\u66DD\u5149\uFF08\u9632\u6B62\u5728\u8BA1\u65F6\u671F\u95F4\u88AB\u5176\u4ED6\u64CD\u4F5C\u89E6\u53D1\uFF09\n if (once && exposedElementsSet.has(key)) return\n\n // \u6807\u8BB0\u4E3A\u5DF2\u66DD\u5149\n if (once) {\n exposedElementsSet.add(key)\n }\n // \u89E6\u53D1\u66DD\u5149\u4E8B\u4EF6\n onExposure()\n }, duration)\n }\n } else {\n // \u5982\u679C\u53EF\u89C1\u6027\u4F4E\u4E8E\u9608\u503C\uFF0C\u6E05\u9664\u8BA1\u65F6\u5668\uFF08\u4F46\u4E0D\u79FB\u9664\u66DD\u5149\u6807\u8BB0\uFF09\n if (exposureTimerRef.current) {\n clearTimeout(exposureTimerRef.current)\n exposureTimerRef.current = null\n }\n }\n })\n },\n {\n threshold: threshold,\n rootMargin: rootMargin,\n }\n )\n\n observer.observe(element)\n\n return () => {\n observer.disconnect()\n if (exposureTimerRef.current) {\n clearTimeout(exposureTimerRef.current)\n exposureTimerRef.current = null\n }\n }\n }, [elementRef, onExposure, threshold, duration, once, rootMargin, getExposureKey])\n\n return { clearTimer }\n}\n\n/**\n * \u6E05\u9664\u6307\u5B9A key \u7684\u66DD\u5149\u8BB0\u5F55\uFF08\u7528\u4E8E\u6D4B\u8BD5\u6216\u7279\u6B8A\u573A\u666F\uFF09\n */\nexport const clearExposureRecord = (key: string) => {\n exposedElementsSet.delete(key)\n}\n\n/**\n * \u6E05\u9664\u6240\u6709\u66DD\u5149\u8BB0\u5F55\uFF08\u7528\u4E8E\u6D4B\u8BD5\u6216\u7279\u6B8A\u573A\u666F\uFF09\n */\nexport const clearAllExposureRecords = () => {\n exposedElementsSet.clear()\n}\n\n/**\n * \u68C0\u67E5\u6307\u5B9A key \u662F\u5426\u5DF2\u66DD\u5149\n */\nexport const hasExposed = (key: string): boolean => {\n return exposedElementsSet.has(key)\n}\n"],
5
+ "mappings": "AAAA,OAAyB,UAAAA,EAAQ,aAAAC,EAAW,eAAAC,MAAmB,QAG/D,MAAMC,EAAqB,IAAI,IAwDlBC,EAAuB,CAACC,EAAoCC,EAAuC,CAAC,IAAM,CACrH,KAAM,CAAE,YAAAC,EAAa,UAAAC,EAAY,GAAK,SAAAC,EAAW,IAAM,KAAAC,EAAO,GAAM,WAAAC,EAAY,WAAAC,EAAa,KAAM,EAAIN,EAEjGO,EAAmBb,EAAsB,IAAI,EAC7Cc,EAAkBd,EAAsB,IAAI,EAG5Ce,EAAiBb,EAAY,IAAM,CACvC,GAAIK,EACF,OAAOA,EAGT,GAAIF,EAAW,SAAW,CAACS,EAAgB,QAAS,CAElD,MAAME,EAASX,EAAW,QAAQ,aAAa,kBAAkB,EACjE,GAAIW,EACF,OAAAF,EAAgB,QAAUE,EACnBA,EAGT,MAAMC,EAAiB,CAAC,EACxB,IAAIC,EAAqBb,EAAW,QACpC,KAAOa,GAAMA,IAAO,SAAS,MAAM,CACjC,MAAMC,EAAQ,MAAM,KAAKD,EAAG,eAAe,UAAY,CAAC,CAAC,EAAE,QAAQA,CAAE,EACrED,EAAK,QAAQ,GAAGC,EAAG,QAAQ,YAAY,CAAC,IAAIC,CAAK,GAAG,EACpDD,EAAKA,EAAG,aACV,CACA,OAAAJ,EAAgB,QAAUG,EAAK,KAAK,KAAK,EAClCH,EAAgB,OACzB,CACA,OAAOA,EAAgB,SAAW,EACpC,EAAG,CAACP,EAAaF,CAAU,CAAC,EAGtBe,EAAalB,EAAY,IAAM,CAC/BW,EAAiB,UACnB,aAAaA,EAAiB,OAAO,EACrCA,EAAiB,QAAU,KAE/B,EAAG,CAAC,CAAC,EAEL,OAAAZ,EAAU,IAAM,CACd,MAAMoB,EAAUhB,EAAW,QAC3B,GAAI,CAACgB,GAAW,CAACV,EAAY,OAE7B,MAAMW,EAAMP,EAAe,EAC3B,GAAI,CAACO,EAAK,CACR,QAAQ,KAAK,+HAA8D,EAC3E,MACF,CAGA,GAAIZ,GAAQP,EAAmB,IAAImB,CAAG,EACpC,OAGF,MAAMC,EAAW,IAAI,qBACnBC,GAAW,CACTA,EAAQ,QAAQC,GAAS,CAEnBA,EAAM,mBAAqBjB,GAExB,CAACE,GAAQ,CAACP,EAAmB,IAAImB,CAAG,IAAM,CAACT,EAAiB,UAC/DA,EAAiB,QAAU,OAAO,WAAW,IAAM,CAE7CH,GAAQP,EAAmB,IAAImB,CAAG,IAGlCZ,GACFP,EAAmB,IAAImB,CAAG,EAG5BX,EAAW,EACb,EAAGF,CAAQ,GAITI,EAAiB,UACnB,aAAaA,EAAiB,OAAO,EACrCA,EAAiB,QAAU,KAGjC,CAAC,CACH,EACA,CACE,UAAWL,EACX,WAAYI,CACd,CACF,EAEA,OAAAW,EAAS,QAAQF,CAAO,EAEjB,IAAM,CACXE,EAAS,WAAW,EAChBV,EAAiB,UACnB,aAAaA,EAAiB,OAAO,EACrCA,EAAiB,QAAU,KAE/B,CACF,EAAG,CAACR,EAAYM,EAAYH,EAAWC,EAAUC,EAAME,EAAYG,CAAc,CAAC,EAE3E,CAAE,WAAAK,CAAW,CACtB,EAKaM,EAAuBJ,GAAgB,CAClDnB,EAAmB,OAAOmB,CAAG,CAC/B,EAKaK,EAA0B,IAAM,CAC3CxB,EAAmB,MAAM,CAC3B,EAKayB,EAAcN,GAClBnB,EAAmB,IAAImB,CAAG",
6
6
  "names": ["useRef", "useEffect", "useCallback", "exposedElementsSet", "useExposureDetection", "elementRef", "options", "exposureKey", "threshold", "duration", "once", "onExposure", "rootMargin", "exposureTimerRef", "generatedKeyRef", "getExposureKey", "dataId", "path", "el", "index", "clearTimer", "element", "key", "observer", "entries", "entry", "clearExposureRecord", "clearAllExposureRecords", "hasExposed"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/hooks/useIntersectionObserver.ts"],
4
- "sourcesContent": ["import { type RefObject, useRef, useEffect } from 'react'\n\ntype DelayOptions = {\n callback: () => void\n once?: boolean\n threshold?: number\n delay?: number\n}\n\n// \u7F13\u5B58\u53EF\u89C1\u6027\u68C0\u67E5\u7ED3\u679C\uFF0C\u907F\u514D\u91CD\u590D\u8BA1\u7B97\nconst visibilityCache = new WeakMap<Element, { visible: boolean; timestamp: number }>()\nconst CACHE_DURATION = 500 // \u7F13\u5B58500ms\uFF0C\u5E73\u8861\u6027\u80FD\u548C\u51C6\u786E\u6027\n\n/**\n * \u68C0\u67E5\u5143\u7D20\u662F\u5426\u771F\u6B63\u53EF\u89C1\uFF08\u4F18\u5316\u7248\u672C\uFF0C\u5E26\u7F13\u5B58\uFF09\n * @param element \u8981\u68C0\u67E5\u7684\u5143\u7D20\n * @returns \u5143\u7D20\u662F\u5426\u53EF\u89C1\n */\nconst isElementVisible = (element: Element): boolean => {\n const now = Date.now()\n \n // \u68C0\u67E5\u7F13\u5B58\n const cached = visibilityCache.get(element)\n if (cached && (now - cached.timestamp) < CACHE_DURATION) {\n return cached.visible\n }\n \n const el = element as HTMLElement\n \n // \u5FEB\u901F\u68C0\u67E5\uFF1A\u5143\u7D20\u662F\u5426\u5B58\u5728\n if (!el) {\n visibilityCache.set(element, { visible: false, timestamp: now })\n return false\n }\n \n // \u5FEB\u901F\u68C0\u67E5\uFF1A\u5143\u7D20\u662F\u5426\u5728DOM\u4E2D\n if (!document.contains(el)) {\n visibilityCache.set(element, { visible: false, timestamp: now })\n return false\n }\n \n // \u4F7F\u7528 getBoundingClientRect \u8FDB\u884C\u5FEB\u901F\u68C0\u67E5\uFF08\u6BD4 getComputedStyle \u66F4\u5FEB\uFF09\n const rect = el.getBoundingClientRect()\n \n // \u5982\u679C\u5143\u7D20\u6CA1\u6709\u5C3A\u5BF8\uFF0C\u76F4\u63A5\u8FD4\u56DE false\uFF08\u8FD9\u6BD4\u68C0\u67E5 CSS \u6837\u5F0F\u66F4\u5FEB\uFF09\n if (rect.width === 0 || rect.height === 0) {\n visibilityCache.set(element, { visible: false, timestamp: now })\n return false\n }\n \n // \u53EA\u6709\u5728\u5FC5\u8981\u65F6\u624D\u68C0\u67E5 CSS \u6837\u5F0F\uFF08\u5EF6\u8FDF\u68C0\u67E5\uFF09\n // \u5148\u68C0\u67E5\u6700\u5E38\u89C1\u7684\u9690\u85CF\u60C5\u51B5\n const style = el.style\n if (style.display === 'none' || style.visibility === 'hidden' || style.opacity === '0') {\n visibilityCache.set(element, { visible: false, timestamp: now })\n return false\n }\n \n // \u5982\u679C\u5185\u8054\u6837\u5F0F\u6CA1\u6709\u9690\u85CF\uFF0C\u518D\u68C0\u67E5\u8BA1\u7B97\u6837\u5F0F\uFF08\u66F4\u6602\u8D35\u7684\u64CD\u4F5C\uFF09\n // \u4F46\u53EA\u5728\u5143\u7D20\u786E\u5B9E\u6709\u5C3A\u5BF8\u4E14\u5728\u89C6\u53E3\u5185\u65F6\u624D\u68C0\u67E5\n if (rect.width > 0 && rect.height > 0) {\n const computedStyle = window.getComputedStyle(el)\n if (computedStyle.display === 'none' || \n computedStyle.visibility === 'hidden' || \n computedStyle.opacity === '0') {\n visibilityCache.set(element, { visible: false, timestamp: now })\n return false\n }\n }\n \n const visible = true\n visibilityCache.set(element, { visible, timestamp: now })\n return visible\n}\n/**\n * \u53EA\u6709\u63D0\u7559\u8D85\u8FC7delay\u8BBE\u7F6E\u7684\u65F6\u95F4\u624D\u4F1A\u89E6\u53D1callback\n * @param targetRef\n * @param callback\n * @param once\n * @param threshold\n * @param delay\n */\nexport const useIntersectionObserverDelay = (\n targetRef: RefObject<any> | undefined,\n { callback, once, threshold = 0.8, delay = 0 }: DelayOptions\n) => {\n const timeoutRef = useRef<number>(0)\n const triggeredRef = useRef(false)\n\n useEffect(() => {\n if (!targetRef?.current) {\n return\n }\n\n if (typeof IntersectionObserver === 'undefined') {\n return\n }\n\n const current = targetRef.current\n const options = {\n root: null,\n rootMargin: '0px',\n threshold: threshold,\n }\n const observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting && isElementVisible(entry.target)) {\n if (delay) {\n window.clearTimeout(timeoutRef.current)\n if (triggeredRef.current) return\n timeoutRef.current = window.setTimeout(() => {\n callback()\n triggeredRef.current = true\n }, delay)\n } else {\n callback()\n triggeredRef.current = true\n }\n\n if (once && triggeredRef.current) {\n observer.disconnect()\n }\n } else {\n if (timeoutRef.current) {\n window.clearTimeout(timeoutRef.current)\n }\n }\n })\n }, options)\n if (current) {\n observer.observe(current)\n }\n return () => {\n observer.disconnect()\n window.clearTimeout(timeoutRef.current)\n }\n }, [once, threshold, delay, targetRef?.current])\n}\n"],
5
- "mappings": "AAAA,OAAyB,UAAAA,EAAQ,aAAAC,MAAiB,QAUlD,MAAMC,EAAkB,IAAI,QACtBC,EAAiB,IAOjBC,EAAoBC,GAA8B,CACtD,MAAMC,EAAM,KAAK,IAAI,EAGfC,EAASL,EAAgB,IAAIG,CAAO,EAC1C,GAAIE,GAAWD,EAAMC,EAAO,UAAaJ,EACvC,OAAOI,EAAO,QAGhB,MAAMC,EAAKH,EAGX,GAAI,CAACG,EACH,OAAAN,EAAgB,IAAIG,EAAS,CAAE,QAAS,GAAO,UAAWC,CAAI,CAAC,EACxD,GAIT,GAAI,CAAC,SAAS,SAASE,CAAE,EACvB,OAAAN,EAAgB,IAAIG,EAAS,CAAE,QAAS,GAAO,UAAWC,CAAI,CAAC,EACxD,GAIT,MAAMG,EAAOD,EAAG,sBAAsB,EAGtC,GAAIC,EAAK,QAAU,GAAKA,EAAK,SAAW,EACtC,OAAAP,EAAgB,IAAIG,EAAS,CAAE,QAAS,GAAO,UAAWC,CAAI,CAAC,EACxD,GAKT,MAAMI,EAAQF,EAAG,MACjB,GAAIE,EAAM,UAAY,QAAUA,EAAM,aAAe,UAAYA,EAAM,UAAY,IACjF,OAAAR,EAAgB,IAAIG,EAAS,CAAE,QAAS,GAAO,UAAWC,CAAI,CAAC,EACxD,GAKT,GAAIG,EAAK,MAAQ,GAAKA,EAAK,OAAS,EAAG,CACrC,MAAME,EAAgB,OAAO,iBAAiBH,CAAE,EAChD,GAAIG,EAAc,UAAY,QAC1BA,EAAc,aAAe,UAC7BA,EAAc,UAAY,IAC5B,OAAAT,EAAgB,IAAIG,EAAS,CAAE,QAAS,GAAO,UAAWC,CAAI,CAAC,EACxD,EAEX,CAEA,MAAMM,EAAU,GAChB,OAAAV,EAAgB,IAAIG,EAAS,CAAE,QAAAO,EAAS,UAAWN,CAAI,CAAC,EACjDM,CACT,EASaC,EAA+B,CAC1CC,EACA,CAAE,SAAAC,EAAU,KAAAC,EAAM,UAAAC,EAAY,GAAK,MAAAC,EAAQ,CAAE,IAC1C,CACH,MAAMC,EAAanB,EAAe,CAAC,EAC7BoB,EAAepB,EAAO,EAAK,EAEjCC,EAAU,IAAM,CAKd,GAJI,CAACa,GAAW,SAIZ,OAAO,qBAAyB,IAClC,OAGF,MAAMO,EAAUP,EAAU,QACpBQ,EAAU,CACd,KAAM,KACN,WAAY,MACZ,UAAWL,CACb,EACMM,EAAW,IAAI,qBAAqBC,GAAW,CACnDA,EAAQ,QAAQC,GAAS,CACvB,GAAIA,EAAM,gBAAkBrB,EAAiBqB,EAAM,MAAM,EAAG,CAC1D,GAAIP,EAAO,CAET,GADA,OAAO,aAAaC,EAAW,OAAO,EAClCC,EAAa,QAAS,OAC1BD,EAAW,QAAU,OAAO,WAAW,IAAM,CAC3CJ,EAAS,EACTK,EAAa,QAAU,EACzB,EAAGF,CAAK,CACV,MACEH,EAAS,EACTK,EAAa,QAAU,GAGrBJ,GAAQI,EAAa,SACvBG,EAAS,WAAW,CAExB,MACMJ,EAAW,SACb,OAAO,aAAaA,EAAW,OAAO,CAG5C,CAAC,CACH,EAAGG,CAAO,EACV,OAAID,GACFE,EAAS,QAAQF,CAAO,EAEnB,IAAM,CACXE,EAAS,WAAW,EACpB,OAAO,aAAaJ,EAAW,OAAO,CACxC,CACF,EAAG,CAACH,EAAMC,EAAWC,EAAOJ,GAAW,OAAO,CAAC,CACjD",
4
+ "sourcesContent": ["import { type RefObject, useRef, useEffect } from 'react'\n\ntype DelayOptions = {\n callback: () => void\n once?: boolean\n threshold?: number\n delay?: number\n}\n\n// \u7F13\u5B58\u53EF\u89C1\u6027\u68C0\u67E5\u7ED3\u679C\uFF0C\u907F\u514D\u91CD\u590D\u8BA1\u7B97\nconst visibilityCache = new WeakMap<Element, { visible: boolean; timestamp: number }>()\nconst CACHE_DURATION = 500 // \u7F13\u5B58500ms\uFF0C\u5E73\u8861\u6027\u80FD\u548C\u51C6\u786E\u6027\n\n/**\n * \u68C0\u67E5\u5143\u7D20\u662F\u5426\u771F\u6B63\u53EF\u89C1\uFF08\u4F18\u5316\u7248\u672C\uFF0C\u5E26\u7F13\u5B58\uFF09\n * @param element \u8981\u68C0\u67E5\u7684\u5143\u7D20\n * @returns \u5143\u7D20\u662F\u5426\u53EF\u89C1\n */\nconst isElementVisible = (element: Element): boolean => {\n const now = Date.now()\n\n // \u68C0\u67E5\u7F13\u5B58\n const cached = visibilityCache.get(element)\n if (cached && now - cached.timestamp < CACHE_DURATION) {\n return cached.visible\n }\n\n const el = element as HTMLElement\n\n // \u5FEB\u901F\u68C0\u67E5\uFF1A\u5143\u7D20\u662F\u5426\u5B58\u5728\n if (!el) {\n visibilityCache.set(element, { visible: false, timestamp: now })\n return false\n }\n\n // \u5FEB\u901F\u68C0\u67E5\uFF1A\u5143\u7D20\u662F\u5426\u5728DOM\u4E2D\n if (!document.contains(el)) {\n visibilityCache.set(element, { visible: false, timestamp: now })\n return false\n }\n\n // \u4F7F\u7528 getBoundingClientRect \u8FDB\u884C\u5FEB\u901F\u68C0\u67E5\uFF08\u6BD4 getComputedStyle \u66F4\u5FEB\uFF09\n const rect = el.getBoundingClientRect()\n\n // \u5982\u679C\u5143\u7D20\u6CA1\u6709\u5C3A\u5BF8\uFF0C\u76F4\u63A5\u8FD4\u56DE false\uFF08\u8FD9\u6BD4\u68C0\u67E5 CSS \u6837\u5F0F\u66F4\u5FEB\uFF09\n if (rect.width === 0 || rect.height === 0) {\n visibilityCache.set(element, { visible: false, timestamp: now })\n return false\n }\n\n // \u53EA\u6709\u5728\u5FC5\u8981\u65F6\u624D\u68C0\u67E5 CSS \u6837\u5F0F\uFF08\u5EF6\u8FDF\u68C0\u67E5\uFF09\n // \u5148\u68C0\u67E5\u6700\u5E38\u89C1\u7684\u9690\u85CF\u60C5\u51B5\n const style = el.style\n if (style.display === 'none' || style.visibility === 'hidden' || style.opacity === '0') {\n visibilityCache.set(element, { visible: false, timestamp: now })\n return false\n }\n\n // \u5982\u679C\u5185\u8054\u6837\u5F0F\u6CA1\u6709\u9690\u85CF\uFF0C\u518D\u68C0\u67E5\u8BA1\u7B97\u6837\u5F0F\uFF08\u66F4\u6602\u8D35\u7684\u64CD\u4F5C\uFF09\n // \u4F46\u53EA\u5728\u5143\u7D20\u786E\u5B9E\u6709\u5C3A\u5BF8\u4E14\u5728\u89C6\u53E3\u5185\u65F6\u624D\u68C0\u67E5\n if (rect.width > 0 && rect.height > 0) {\n const computedStyle = window.getComputedStyle(el)\n if (computedStyle.display === 'none' || computedStyle.visibility === 'hidden' || computedStyle.opacity === '0') {\n visibilityCache.set(element, { visible: false, timestamp: now })\n return false\n }\n }\n\n const visible = true\n visibilityCache.set(element, { visible, timestamp: now })\n return visible\n}\n/**\n * \u53EA\u6709\u63D0\u7559\u8D85\u8FC7delay\u8BBE\u7F6E\u7684\u65F6\u95F4\u624D\u4F1A\u89E6\u53D1callback\n * @param targetRef\n * @param callback\n * @param once\n * @param threshold\n * @param delay\n */\nexport const useIntersectionObserverDelay = (\n targetRef: RefObject<any> | undefined,\n { callback, once, threshold = 0.8, delay = 0 }: DelayOptions\n) => {\n const timeoutRef = useRef<number>(0)\n const triggeredRef = useRef(false)\n\n useEffect(() => {\n if (!targetRef?.current) {\n return\n }\n\n if (typeof IntersectionObserver === 'undefined') {\n return\n }\n\n const current = targetRef.current\n const options = {\n root: null,\n rootMargin: '0px',\n threshold: threshold,\n }\n const observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting && isElementVisible(entry.target)) {\n if (delay) {\n window.clearTimeout(timeoutRef.current)\n if (triggeredRef.current) return\n timeoutRef.current = window.setTimeout(() => {\n callback()\n triggeredRef.current = true\n }, delay)\n } else {\n callback()\n triggeredRef.current = true\n }\n\n if (once && triggeredRef.current) {\n observer.disconnect()\n }\n } else {\n if (timeoutRef.current) {\n window.clearTimeout(timeoutRef.current)\n }\n }\n })\n }, options)\n if (current) {\n observer.observe(current)\n }\n return () => {\n observer.disconnect()\n window.clearTimeout(timeoutRef.current)\n }\n }, [once, threshold, delay, targetRef?.current])\n}\n"],
5
+ "mappings": "AAAA,OAAyB,UAAAA,EAAQ,aAAAC,MAAiB,QAUlD,MAAMC,EAAkB,IAAI,QACtBC,EAAiB,IAOjBC,EAAoBC,GAA8B,CACtD,MAAMC,EAAM,KAAK,IAAI,EAGfC,EAASL,EAAgB,IAAIG,CAAO,EAC1C,GAAIE,GAAUD,EAAMC,EAAO,UAAYJ,EACrC,OAAOI,EAAO,QAGhB,MAAMC,EAAKH,EAGX,GAAI,CAACG,EACH,OAAAN,EAAgB,IAAIG,EAAS,CAAE,QAAS,GAAO,UAAWC,CAAI,CAAC,EACxD,GAIT,GAAI,CAAC,SAAS,SAASE,CAAE,EACvB,OAAAN,EAAgB,IAAIG,EAAS,CAAE,QAAS,GAAO,UAAWC,CAAI,CAAC,EACxD,GAIT,MAAMG,EAAOD,EAAG,sBAAsB,EAGtC,GAAIC,EAAK,QAAU,GAAKA,EAAK,SAAW,EACtC,OAAAP,EAAgB,IAAIG,EAAS,CAAE,QAAS,GAAO,UAAWC,CAAI,CAAC,EACxD,GAKT,MAAMI,EAAQF,EAAG,MACjB,GAAIE,EAAM,UAAY,QAAUA,EAAM,aAAe,UAAYA,EAAM,UAAY,IACjF,OAAAR,EAAgB,IAAIG,EAAS,CAAE,QAAS,GAAO,UAAWC,CAAI,CAAC,EACxD,GAKT,GAAIG,EAAK,MAAQ,GAAKA,EAAK,OAAS,EAAG,CACrC,MAAME,EAAgB,OAAO,iBAAiBH,CAAE,EAChD,GAAIG,EAAc,UAAY,QAAUA,EAAc,aAAe,UAAYA,EAAc,UAAY,IACzG,OAAAT,EAAgB,IAAIG,EAAS,CAAE,QAAS,GAAO,UAAWC,CAAI,CAAC,EACxD,EAEX,CAEA,MAAMM,EAAU,GAChB,OAAAV,EAAgB,IAAIG,EAAS,CAAE,QAAAO,EAAS,UAAWN,CAAI,CAAC,EACjDM,CACT,EASaC,EAA+B,CAC1CC,EACA,CAAE,SAAAC,EAAU,KAAAC,EAAM,UAAAC,EAAY,GAAK,MAAAC,EAAQ,CAAE,IAC1C,CACH,MAAMC,EAAanB,EAAe,CAAC,EAC7BoB,EAAepB,EAAO,EAAK,EAEjCC,EAAU,IAAM,CAKd,GAJI,CAACa,GAAW,SAIZ,OAAO,qBAAyB,IAClC,OAGF,MAAMO,EAAUP,EAAU,QACpBQ,EAAU,CACd,KAAM,KACN,WAAY,MACZ,UAAWL,CACb,EACMM,EAAW,IAAI,qBAAqBC,GAAW,CACnDA,EAAQ,QAAQC,GAAS,CACvB,GAAIA,EAAM,gBAAkBrB,EAAiBqB,EAAM,MAAM,EAAG,CAC1D,GAAIP,EAAO,CAET,GADA,OAAO,aAAaC,EAAW,OAAO,EAClCC,EAAa,QAAS,OAC1BD,EAAW,QAAU,OAAO,WAAW,IAAM,CAC3CJ,EAAS,EACTK,EAAa,QAAU,EACzB,EAAGF,CAAK,CACV,MACEH,EAAS,EACTK,EAAa,QAAU,GAGrBJ,GAAQI,EAAa,SACvBG,EAAS,WAAW,CAExB,MACMJ,EAAW,SACb,OAAO,aAAaA,EAAW,OAAO,CAG5C,CAAC,CACH,EAAGG,CAAO,EACV,OAAID,GACFE,EAAS,QAAQF,CAAO,EAEnB,IAAM,CACXE,EAAS,WAAW,EACpB,OAAO,aAAaJ,EAAW,OAAO,CACxC,CACF,EAAG,CAACH,EAAMC,EAAWC,EAAOJ,GAAW,OAAO,CAAC,CACjD",
6
6
  "names": ["useRef", "useEffect", "visibilityCache", "CACHE_DURATION", "isElementVisible", "element", "now", "cached", "el", "rect", "style", "computedStyle", "visible", "useIntersectionObserverDelay", "targetRef", "callback", "once", "threshold", "delay", "timeoutRef", "triggeredRef", "current", "options", "observer", "entries", "entry"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/hooks/useRollout.ts"],
4
- "sourcesContent": ["import { useEffect, useRef, useState, type MutableRefObject } from 'react'\n\nexport function useRollout<T extends HTMLElement = HTMLElement>(\n options: any\n): [MutableRefObject<T | null>, boolean] {\n const ref = useRef<T>(null)\n const [inView, setInView] = useState(false)\n useEffect(() => {\n if (inView) return // \u5DF2\u8FDB\u5165\u8FC7\uFF0C\u5219\u4E0D\u518D\u89C2\u5BDF\n const el = ref.current\n if (!el || typeof IntersectionObserver === 'undefined') return\n const observer = new IntersectionObserver(([entry]) => {\n if (entry.isIntersecting) {\n setInView(true)\n observer.disconnect() // \u505C\u6B62\u89C2\u5BDF\n }\n }, options)\n observer.observe(el)\n return () => observer.disconnect()\n }, [inView, options])\n return [ref, inView]\n}\n\n\n"],
5
- "mappings": "AAAA,OAAS,aAAAA,EAAW,UAAAC,EAAQ,YAAAC,MAAuC,QAE5D,SAASC,EACdC,EACuC,CACvC,MAAMC,EAAMJ,EAAU,IAAI,EACpB,CAACK,EAAQC,CAAS,EAAIL,EAAS,EAAK,EAC1C,OAAAF,EAAU,IAAM,CACd,GAAIM,EAAQ,OACZ,MAAME,EAAKH,EAAI,QACf,GAAI,CAACG,GAAM,OAAO,qBAAyB,IAAa,OACxD,MAAMC,EAAW,IAAI,qBAAqB,CAAC,CAACC,CAAK,IAAM,CACjDA,EAAM,iBACRH,EAAU,EAAI,EACdE,EAAS,WAAW,EAExB,EAAGL,CAAO,EACV,OAAAK,EAAS,QAAQD,CAAE,EACZ,IAAMC,EAAS,WAAW,CACnC,EAAG,CAACH,EAAQF,CAAO,CAAC,EACb,CAACC,EAAKC,CAAM,CACrB",
4
+ "sourcesContent": ["import { useEffect, useRef, useState, type MutableRefObject } from 'react'\n\nexport function useRollout<T extends HTMLElement = HTMLElement>(options: any): [MutableRefObject<T | null>, boolean] {\n const ref = useRef<T>(null)\n const [inView, setInView] = useState(false)\n useEffect(() => {\n if (inView) return // \u5DF2\u8FDB\u5165\u8FC7\uFF0C\u5219\u4E0D\u518D\u89C2\u5BDF\n const el = ref.current\n if (!el || typeof IntersectionObserver === 'undefined') return\n const observer = new IntersectionObserver(([entry]) => {\n if (entry.isIntersecting) {\n setInView(true)\n observer.disconnect() // \u505C\u6B62\u89C2\u5BDF\n }\n }, options)\n observer.observe(el)\n return () => observer.disconnect()\n }, [inView, options])\n return [ref, inView]\n}\n"],
5
+ "mappings": "AAAA,OAAS,aAAAA,EAAW,UAAAC,EAAQ,YAAAC,MAAuC,QAE5D,SAASC,EAAgDC,EAAqD,CACnH,MAAMC,EAAMJ,EAAU,IAAI,EACpB,CAACK,EAAQC,CAAS,EAAIL,EAAS,EAAK,EAC1C,OAAAF,EAAU,IAAM,CACd,GAAIM,EAAQ,OACZ,MAAME,EAAKH,EAAI,QACf,GAAI,CAACG,GAAM,OAAO,qBAAyB,IAAa,OACxD,MAAMC,EAAW,IAAI,qBAAqB,CAAC,CAACC,CAAK,IAAM,CACjDA,EAAM,iBACRH,EAAU,EAAI,EACdE,EAAS,WAAW,EAExB,EAAGL,CAAO,EACV,OAAAK,EAAS,QAAQD,CAAE,EACZ,IAAMC,EAAS,WAAW,CACnC,EAAG,CAACH,EAAQF,CAAO,CAAC,EACb,CAACC,EAAKC,CAAM,CACrB",
6
6
  "names": ["useEffect", "useRef", "useState", "useRollout", "options", "ref", "inView", "setInView", "el", "observer", "entry"]
7
7
  }
@@ -1,5 +1,5 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react';
2
- import Board from '../components/board';
2
+ import Board from '../components/board.js';
3
3
  declare const meta: Meta<typeof Board>;
4
4
  export default meta;
5
5
  type Story = StoryObj<typeof Board>;
@@ -1,2 +1,2 @@
1
- import{jsx as r}from"react/jsx-runtime";import o from"../components/board";const t={title:"Components/Board",component:o,tags:["autodocs"]};var a=t;const p={render:()=>r(o,{})};export{p as Default,a as default};
1
+ import{jsx as r}from"react/jsx-runtime";import o from"../components/board.js";const t={title:"Components/Board",component:o,tags:["autodocs"]};var a=t;const p={render:()=>r(o,{})};export{p as Default,a as default};
2
2
  //# sourceMappingURL=board.stories.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/stories/board.stories.tsx"],
4
- "sourcesContent": ["import type { Meta, StoryObj } from '@storybook/react'\nimport Board from '../components/board'\n\nconst meta: Meta<typeof Board> = {\n title: 'Components/Board',\n component: Board,\n tags: ['autodocs'],\n}\n\nexport default meta\n\ntype Story = StoryObj<typeof Board>\n\nexport const Default: Story = {\n render: () => <Board />,\n}"],
5
- "mappings": "AAcgB,cAAAA,MAAA,oBAbhB,OAAOC,MAAW,sBAElB,MAAMC,EAA2B,CAC/B,MAAO,mBACP,UAAWD,EACX,KAAM,CAAC,UAAU,CACnB,EAEA,IAAOE,EAAQD,EAIR,MAAME,EAAiB,CAC5B,OAAQ,IAAMJ,EAACC,EAAA,EAAM,CACvB",
4
+ "sourcesContent": ["import type { Meta, StoryObj } from '@storybook/react'\nimport Board from '../components/board.js'\n\nconst meta: Meta<typeof Board> = {\n title: 'Components/Board',\n component: Board,\n tags: ['autodocs'],\n}\n\nexport default meta\n\ntype Story = StoryObj<typeof Board>\n\nexport const Default: Story = {\n render: () => <Board />,\n}\n"],
5
+ "mappings": "AAcgB,cAAAA,MAAA,oBAbhB,OAAOC,MAAW,yBAElB,MAAMC,EAA2B,CAC/B,MAAO,mBACP,UAAWD,EACX,KAAM,CAAC,UAAU,CACnB,EAEA,IAAOE,EAAQD,EAIR,MAAME,EAAiB,CAC5B,OAAQ,IAAMJ,EAACC,EAAA,EAAM,CACvB",
6
6
  "names": ["jsx", "Board", "meta", "board_stories_default", "Default"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/stories/specs.stories.tsx"],
4
- "sourcesContent": ["import type { Meta, StoryObj } from '@storybook/react'\n\nimport Specs from '../biz-components/Specs/index.js'\nimport { Container } from '../components/container.js'\n\nconst meta = {\n title: 'Biz-Components/Specs',\n component: Specs,\n parameters: {\n layout: 'fullscreen',\n },\n tags: ['autodocs'],\n} satisfies Meta<typeof Specs>\n\nexport default meta\n\ntype Story = StoryObj<typeof meta>\n\nconst data = {\n id: '68ea29e5ca34138c04aec30f',\n display: 'visible',\n items: [\n {\n sku: 'A1340011',\n name: 'Anker <b>325</b> Power Bank (PowerCore 20K)',\n image:\n 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A1268013_1_2430b504-15c6-441e-9914-ae215095e8b4.png?v=1753755824',\n value: 'a1340-250w-power-bank',\n handle: 'a1340-250w-power-bank',\n },\n {\n sku: 'A2524014',\n name: 'Anker <b>337</b> Power Bank (PowerCore 26K)',\n image: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A1277011_V1.png?v=1753755956',\n value: 'a2524',\n handle: 'a2524',\n shopify_id: '10034291441848',\n },\n ],\n data: {\n LeftMenu: {\n data: [\n {\n title: 'Product',\n subTitle: [\n 'Clean Types',\n 'Portable Deep Cleaner',\n 'HydroJet\u2122 Mopping System',\n 'Mop Type',\n 'Downward Pressure',\n 'Rotations Per Minute',\n 'Suction Power',\n 'Auto-Detangling',\n 'Obstacle Avoidance',\n 'Omni Station',\n 'Obstacle Clearance Height',\n 'Minimum Height and Width Restrictions',\n 'Robot/Station',\n 'Run Time',\n 'App Control',\n 'Bluetooth',\n 'Wi-Fi',\n ],\n isProduct: true,\n },\n ],\n },\n RightMenu: {\n menus: [\n {\n sku: 'A1340011',\n handle: 'a1340-250w-power-bank',\n subTitle: {\n 'Wi-Fi': '\u2705',\n 'Mop Type': 'Rolling Mop',\n 'Run Time': 'Vacuum and Mop\uFF1A\\n125 min (Standard)\\n\\nVacuum\uFF1A\\n216 min (Standard)',\n Bluetooth: '\u2705',\n 'App Control': '\u2705',\n 'Clean Types': 'Vacuum and Mop',\n 'Omni Station': '\u2705',\n 'Robot/Station': 'Robot: \\n12.83 \u00D7 13.72 \u00D7 4.40 in\\nStation\uFF1A\\n14.63 \u00D7 19.07 \u00D7 17.29 in',\n 'Suction Power': '20,000 Pa',\n 'Auto-Detangling': 'DuoSpiral\u2122 Brushes',\n 'Downward Pressure': '1.5kg',\n 'Obstacle Avoidance': 'RGB Camera + LED',\n 'Rotations Per Minute': '180RPM',\n 'Portable Deep Cleaner': '\u274C',\n 'Obstacle Clearance Height': '0.83 in',\n 'HydroJet\u2122 Mopping System': '\u2705',\n 'Minimum Height and Width Restrictions': '4.40 in / 12.83 in',\n },\n },\n {\n sku: 'A2524014',\n handle: 'a2524',\n subTitle: {\n 'Wi-Fi': '\u2705',\n 'Mop Type': 'Rolling Mop',\n 'Run Time': 'Vacuum and Mop\uFF1A\\n125 min (Standard)\\n\\nVacuum\uFF1A\\n216 min (Standard)',\n Bluetooth: '\u2705',\n 'App Control': '\u2705',\n 'Clean Types': 'Vacuum and Mop',\n 'Omni Station': '\u2705',\n 'Robot/Station': 'Robot: \\n12.83 \u00D7 13.72 \u00D7 4.40 in\\nStation\uFF1A\\n14.63 \u00D7 19.07 \u00D7 17.29 in',\n 'Suction Power': '20,000 Pa',\n 'Auto-Detangling': 'DuoSpiral\u2122 Brushes',\n 'Downward Pressure': '1.5kg',\n 'Obstacle Avoidance': 'RGB Camera + LED',\n 'Rotations Per Minute': '180RPM',\n 'Portable Deep Cleaner': '\u2705',\n 'Obstacle Clearance Height': '0.83 in',\n 'HydroJet\u2122 Mopping System': '\u2705',\n 'Minimum Height and Width Restrictions': '4.40 in / 12.83 in',\n },\n },\n ],\n },\n DefaultSelectMenu: {\n sku: 'A1340011,A2524014',\n buttonText: 'Buy Now',\n },\n },\n container: {\n mobileSpan: '12',\n desktopSpan: '12',\n },\n style:\n '.specs-wrapper {\\n\\tbackground: #fff !important;\\n}\\n\\n.specs-sku-node-text {\\n\\tborder-radius: 0 !important;\\n}',\n blockName: 'Specs',\n blockType: 'ipc-specs',\n}\n\nconst buildData = {\n products: [\n {\n availableForSale: true,\n productType: 'charging only',\n onlineStoreUrl: null,\n publishedAt: '2025-07-29T03:54:52Z',\n totalInventory: 399,\n description:\n '250W Multi-Device Fast Charging: Powered by the latest PD 3.1 technology, the power bank comes with 2 USB-C ports and 1 USB-A port to deliver up to 250W of power. Boost your MacBook Pro 16\" (M2 Pro) to 50% in just 28 minutes. Intuitive Smart App: Use the Anker app to quickly locate your power bank with sound alerts, access real-time stats, and optimize device battery life with smart charging. Small Size, Huge Power: The power bank is the size of a soda can with a capacity of 27,650mAh and can charge a 13-inch MacBook Air (M2) 1.28 times or an iPhone 14 approximately 4.67 times. Please know that this power bank is 99.54Wh, which meets the requirements of the TSA(<100Wh) to be taken on airplanes as carry-on baggage. 170W Fast USB-C Recharge: Recharge your power bank at lightning speed with the convenience of dual USB-C ports, allowing you to fully replenish it in just 37 minutes. What You Get: Anker Prime 27,650mAh Power Bank (250W), 2 ft / 0.6 m 140W USB-C to USB-C charging cable, travel pouch, quick start guide, our worry-free 24-month warranty, and friendly customer service.',\n descriptionHtml:\n '<div data-mce-fragment=\"1\" data-docx-has-block-data=\"false\" data-page-id=\"BSbwdemQXoJ4lfxBpvVcKIWMnog\">\\n<div data-mce-fragment=\"1\" class=\"ace-line ace-line old-record-id-XkuPddt2Lo3pPXxN9MdcN04HnNb\">\\n<div style=\"font-family: -apple-system, BlinkMacSystemFont, \\'San Francisco\\', \\'Segoe UI\\', Roboto, \\'Helvetica Neue\\', sans-serif; font-size: 0.875rem;\">\\n<div data-docx-has-block-data=\"false\" data-page-id=\"BSbwdemQXoJ4lfxBpvVcKIWMnog\">\\n<div class=\"ace-line ace-line old-record-id-TNa5d1ywEoB7DGxde7Fc1Ua0nbb\">\\n<p>\u00A0</p>\\n<ul>\\n<li>\\n<div style=\"font-family: -apple-system, BlinkMacSystemFont, \\'San Francisco\\', \\'Segoe UI\\', Roboto, \\'Helvetica Neue\\', sans-serif; font-size: 0.875rem; display: inline !important;\">\\n<strong>250W Multi-Device\u00A0</strong><strong>Fast</strong><strong> Charging: </strong>Powered by the latest PD 3.1 technology, the power bank comes with 2 USB-C ports and 1 USB-A port to deliver up to 250W of power. Boost your MacBook Pro 16\" (M2 Pro) to 50% in just 28 minutes.</div>\\n</li>\\n<li>\\n<strong>Intuitive Smart </strong><strong>App</strong><strong>: </strong>Use the Anker app to quickly locate your power bank with sound alerts, access real-time stats, and optimize device battery life with smart charging.</li>\\n<li>\\n<strong>Small Size, Huge Power:</strong> The power bank is the size of a soda can with a capacity of 27,650mAh and can charge a 13-inch MacBook Air (M2) 1.28 times or an iPhone 14 approximately 4.67 times. Please know that this power bank is 99.54Wh, which meets the requirements of the TSA(&lt;100Wh) to be taken on airplanes as carry-on baggage.</li>\\n<li>\\n<strong>1</strong><strong>7</strong><strong>0W Fast </strong><strong>USB-C</strong><strong> Recharge: </strong>Recharge your power bank at lightning speed with the convenience of dual USB-C ports, allowing you to fully replenish it in just 37 minutes.</li>\\n<li>\\n<strong>What You Get: </strong>Anker Prime 27,650mAh Power Bank (250W), 2 ft / 0.6 m 140W USB-C to USB-C charging cable, travel pouch, quick start guide, our worry-free 24-month warranty, and friendly customer service.</li>\\n</ul>\\n</div>\\n</div>\\n</div>\\n</div>\\n</div>\\n<p><span data-mce-fragment=\"1\" class=\"lark-record-clipboard\" data-lark-record-format=\"docx/record\" data-lark-record-data=\\'{\"isCut\":false,\"rootId\":\"BSbwdemQXoJ4lfxBpvVcKIWMnog\",\"parentId\":\"BSbwdemQXoJ4lfxBpvVcKIWMnog\",\"blockIds\":[6,7,8,9,10],\"recordIds\":[\"XkuPddt2Lo3pPXxN9MdcN04HnNb\",\"TNa5d1ywEoB7DGxde7Fc1Ua0nbb\",\"Mbq6dRIj2oN6bDxdHUPcIluUnyg\",\"H9VtdIlVfoyZuhx957Zc3Mnbnnf\",\"KxuyddjiGok1j5xt8odceqn9nif\"],\"recordMap\":{\"XkuPddt2Lo3pPXxN9MdcN04HnNb\":{\"id\":\"XkuPddt2Lo3pPXxN9MdcN04HnNb\",\"snapshot\":{\"type\":\"text\",\"parent_id\":\"BSbwdemQXoJ4lfxBpvVcKIWMnog\",\"comments\":[\"7251516737602732034\"],\"locked\":false,\"hidden\":false,\"author\":\"6960514286405844995\",\"children\":[],\"text\":{\"initialAttributedTexts\":{\"text\":{\"0\":\"250W Multi-Device Fast Charging: Powered by the latest PD 3.1 technology, the power bank comes with 2 USB-C ports and 1 USB-A port to deliver up to 250W of power. Boost your MacBook Pro 16\\\\\" (M2 Pro) to 50% in just 28 minutes.\"},\"attribs\":{\"0\":\"*0*1+i*2*0*1+4*0*1+b*0+m*3*0+2*0+2y*0*4+u*5*4+4*0*4+h*6*4+2*0*4+9\"}},\"apool\":{\"numToAttrib\":{\"0\":[\"author\",\"6960514286405844995\"],\"1\":[\"bold\",\"true\"],\"2\":[\"abbreviation-data\",\"{\\\\\"id\\\\\":\\\\\"d422fb13-aa58-4592-a55c-e906b774afc6\\\\\",\\\\\"abbr_ids\\\\\":\\\\\"enterprise_7181707785976119298\\\\\",\\\\\"is_visible\\\\\":1,\\\\\"is_first\\\\\":1}\"],\"3\":[\"abbreviation-data\",\"{\\\\\"id\\\\\":\\\\\"59fbf9ee-ca61-4090-a3d5-4819f343f070\\\\\",\\\\\"abbr_ids\\\\\":\\\\\"enterprise_7257112388569497604,enterprise_46079230,enterprise_7257075173017862148,enterprise_7250018290582519812\\\\\",\\\\\"is_visible\\\\\":1,\\\\\"is_first\\\\\":1}\"],\"4\":[\"comment-id-7251516737602732034\",\"true\"],\"5\":[\"author\",\"7251397625784664066\"],\"6\":[\"author\",\"6911999026934153218\"]},\"nextNum\":7}},\"align\":\"\",\"folded\":false}},\"TNa5d1ywEoB7DGxde7Fc1Ua0nbb\":{\"id\":\"TNa5d1ywEoB7DGxde7Fc1Ua0nbb\",\"snapshot\":{\"type\":\"text\",\"parent_id\":\"BSbwdemQXoJ4lfxBpvVcKIWMnog\",\"comments\":[],\"locked\":false,\"hidden\":false,\"author\":\"6960514286405844995\",\"children\":[],\"text\":{\"apool\":{\"nextNum\":3,\"numToAttrib\":{\"0\":[\"bold\",\"true\"],\"1\":[\"author\",\"6960514286405844995\"],\"2\":[\"abbreviation-data\",\"{\\\\\"id\\\\\":\\\\\"5689917c-5736-4006-a54b-fa3164aa54f5\\\\\",\\\\\"abbr_ids\\\\\":\\\\\"enterprise_7158749951980011523\\\\\",\\\\\"is_visible\\\\\":1,\\\\\"is_first\\\\\":1}\"]}},\"initialAttributedTexts\":{\"attribs\":{\"0\":\"*1*0+g*2*1*0+3*1*0+2*1+44\"},\"text\":{\"0\":\"Intuitive Smart App: Use the Anker app to quickly locate your power bank with sound alerts, access real-time stats, and optimize device battery life with smart charging.\"}}},\"align\":\"\",\"folded\":false}},\"Mbq6dRIj2oN6bDxdHUPcIluUnyg\":{\"id\":\"Mbq6dRIj2oN6bDxdHUPcIluUnyg\",\"snapshot\":{\"type\":\"text\",\"parent_id\":\"BSbwdemQXoJ4lfxBpvVcKIWMnog\",\"comments\":[\"7251518263719723010\"],\"locked\":false,\"hidden\":false,\"author\":\"6960514286405844995\",\"children\":[],\"text\":{\"apool\":{\"nextNum\":5,\"numToAttrib\":{\"0\":[\"author\",\"6960514286405844995\"],\"1\":[\"bold\",\"true\"],\"2\":[\"comment-id-7251518263719723010\",\"true\"],\"3\":[\"author\",\"6911999026934153218\"],\"4\":[\"textHighlightBackground\",\"rgb(251,191,188)\"]}},\"initialAttributedTexts\":{\"attribs\":{\"0\":\"*0*1+n*0+2f*0*2+1*3*2*4+2*0*2*4+5*3*2*4+1*0*2+c*0*2*4+1*3*2*4+2*0*2*4+1*0*4+1*3*4+a*0+g*0*4+1*3*4+2*0*4+7\"},\"text\":{\"0\":\"Small Size, Huge Power: The power bank is the size of a soda can with a capacity of 27,650mAh and can charge a 13-inch MacBook Air (M2) 1.28 times or an iPhone 14 XX times.\"}}},\"align\":\"\",\"folded\":false}},\"H9VtdIlVfoyZuhx957Zc3Mnbnnf\":{\"id\":\"H9VtdIlVfoyZuhx957Zc3Mnbnnf\",\"snapshot\":{\"type\":\"text\",\"parent_id\":\"BSbwdemQXoJ4lfxBpvVcKIWMnog\",\"comments\":[\"7257138127599321089\",\"7250360979459080193\"],\"locked\":false,\"hidden\":false,\"author\":\"6960514286405844995\",\"children\":[],\"text\":{\"apool\":{\"nextNum\":5,\"numToAttrib\":{\"0\":[\"author\",\"6960514286405844995\"],\"1\":[\"bold\",\"true\"],\"2\":[\"comment-id-7250360979459080193\",\"true\"],\"3\":[\"comment-id-7257138127599321089\",\"true\"],\"4\":[\"author\",\"6911999026934153218\"]}},\"initialAttributedTexts\":{\"attribs\":{\"0\":\"*0*1*2*3+1*4*1*2*3+1*0*1*2*3+o*0*2*3+27*4*2*3+5*0*2*3+i*4*2*3+8*0*2*3+a*4*2*3+1*0*2*3+8*4*2*3+b\"},\"text\":{\"0\":\"170W Fast USB-C Recharge: Recharge your power bank at lightning speed with the convenience of dual USB-C ports, allowing you to fully replenish it in just 37 minutes.\"}}},\"align\":\"\",\"folded\":false}},\"KxuyddjiGok1j5xt8odceqn9nif\":{\"id\":\"KxuyddjiGok1j5xt8odceqn9nif\",\"snapshot\":{\"type\":\"text\",\"parent_id\":\"BSbwdemQXoJ4lfxBpvVcKIWMnog\",\"comments\":[\"7257121236814774275\",\"7251518550442344476\"],\"locked\":false,\"hidden\":false,\"author\":\"6960514286405844995\",\"children\":[],\"text\":{\"initialAttributedTexts\":{\"text\":{\"0\":\"What You Get: Anker Prime 27,650mAh Power Bank (250W), 2 ft (0.6 m) 140W USB-C to USB-C charging cable, travel pouch, quick start guide, our worry-free 24-month warranty, and friendly customer service.\"},\"attribs\":{\"0\":\"*0*1+e*0+14*0*2+1*3*2+1*0*2+c*0+1e*4*3+b*4*0*5+6*0+1u\"}},\"apool\":{\"numToAttrib\":{\"0\":[\"author\",\"6960514286405844995\"],\"1\":[\"bold\",\"true\"],\"2\":[\"comment-id-7257121236814774275\",\"true\"],\"3\":[\"author\",\"6911999026934153218\"],\"4\":[\"abbreviation-data\",\"{\\\\\"id\\\\\":\\\\\"c5b16e2c-8c3b-4d24-b1be-442fbe5196dc\\\\\",\\\\\"abbr_ids\\\\\":\\\\\"enterprise_7125383109633114114\\\\\",\\\\\"is_visible\\\\\":1,\\\\\"is_first\\\\\":1}\"],\"5\":[\"comment-id-7251518550442344476\",\"true\"]},\"nextNum\":6}},\"align\":\"\",\"folded\":false}},\"BSbwdemQXoJ4lfxBpvVcKIWMnog\":{\"id\":\"BSbwdemQXoJ4lfxBpvVcKIWMnog\",\"snapshot\":{\"type\":\"page\",\"parent_id\":\"\",\"comments\":null,\"locked\":false,\"hidden\":false,\"author\":\"6960514286405844995\",\"children\":[\"P1lYdRH7Hor4BNxoOw3c015DnTb\",\"FsSedByPioX2r8xoEfBcJgw8nCe\",\"HE2qdl0viobsm6xdLyyck54ynGb\",\"PMehdKa42ogL1mxIgXWcn4XRnUh\",\"XkuPddt2Lo3pPXxN9MdcN04HnNb\",\"TNa5d1ywEoB7DGxde7Fc1Ua0nbb\",\"Mbq6dRIj2oN6bDxdHUPcIluUnyg\",\"H9VtdIlVfoyZuhx957Zc3Mnbnnf\",\"KxuyddjiGok1j5xt8odceqn9nif\",\"KrUadg8Cdonh42xaKDZc79nJnJf\",\"So00daSORoePWlx8DhAcUjkqn4f\",\"Ebg7dQBveo0026xAneIcaOTcn1g\",\"ZR0sdo11XoHqvGxB8j4cZnC0nee\",\"GcYgdn5rmoLRL6xlLc6cXnY3nHd\",\"LJ7DduoTso3D8mxW6D7cIaDMnph\",\"TuYddBj4jop3wyxuBa3crbPFnwb\",\"L5rldM6ysoM7faxmQFLcE8Ognxg\",\"Bip4d8FKco9aGUxcuU6cWhJSn1b\",\"PhEOdWCP0oAh2KxuZezcJv9inpc\",\"H8GxdNxBwoOO50xHldFcDeYfnld\",\"YGcfdYduQogOd4xnMkQcTJ8Pn7c\",\"VtA6dG2jwoHA4yxNTISc8zRRndb\",\"EnsMdHvDkoPx4cxx8jUcIempnxh\",\"LeX2dWfRZod240xnyGqclSeYnUf\",\"WZ9Jdzp3CodpiOxLlOUcEBP0n6b\",\"Mqkmdz3dao61JOxo032cJ0ZYnvb\",\"IMcdd88teodoW8xsjJtcEn28nsb\",\"GvjFdmlrAoilbbxjqr2c2R5QnFd\",\"YHsTdvEp1o4n4ZxwQCIcnpnFn0e\",\"V9efdxPyioc2P3xzW0Uc7S0Hnif\",\"QCSQdWrTRoCGCFxHz3ccLTHenpd\",\"Rjcad7xCAoOzxBxNaE9cXx5bnQd\",\"R6YedUcCQoFpt5xnU6Ac8xZrnvd\",\"Gi6wd5qRaoewxRxV1H5cksuoneb\",\"EQqZdA903oSF9vxPtQWceWHKnhf\",\"LSu5d2IusoTxXPxmSzucd62Unkd\",\"PIsDdxjDJo34tBxIw0ocu2n6nue\",\"KQJkdl7dCoLIsWxRBhlc1HlMnwb\",\"VuI6dRaTuohYuqxTjiPc8Y2RnTb\",\"BXGqdAZHso4IFDxpme5cApGCnQg\",\"Lrped7kXPocXelx5YthcZ0Kynmc\",\"M7JidVWO5orTtQxMaRKclvHon8b\",\"N33SddXYRowPtYxkIQrc2lc3nw3\",\"Tj3jdoV60o7QSTxLVaJccOb4nAb\",\"DDePdRYj4ojGy5xiU0Nc0Vk3nqg\",\"NLw9dY8Zaod5uxxFTxgcRFVfnog\"],\"text\":{\"apool\":{\"nextNum\":1,\"numToAttrib\":{\"0\":[\"author\",\"6960514286405844995\"]}},\"initialAttributedTexts\":{\"attribs\":{\"0\":\"*0+1j\"},\"text\":{\"0\":\"A1340 Listing - Anker Prime 27,650mAh Power Bank (250W)\"}}},\"align\":\"\",\"doc_info\":{\"editors\":[\"6960514286405844995\",\"6911999026934153218\",\"7020952465340153884\",\"7251397625784664066\"],\"options\":[\"editors\",\"create_time\"],\"deleted_editors\":[]}}}},\"payloadMap\":{\"XkuPddt2Lo3pPXxN9MdcN04HnNb\":{\"level\":1},\"TNa5d1ywEoB7DGxde7Fc1Ua0nbb\":{\"level\":1},\"Mbq6dRIj2oN6bDxdHUPcIluUnyg\":{\"level\":1},\"H9VtdIlVfoyZuhx957Zc3Mnbnnf\":{\"level\":1},\"KxuyddjiGok1j5xt8odceqn9nif\":{\"level\":1}},\"extra\":{\"mention_page_title\":{},\"external_mention_url\":{}},\"isKeepQuoteContainer\":false,\"selection\":[{\"id\":6,\"type\":\"text\",\"selection\":{\"start\":0,\"end\":225},\"recordId\":\"XkuPddt2Lo3pPXxN9MdcN04HnNb\"},{\"id\":7,\"type\":\"text\",\"selection\":{\"start\":0,\"end\":169},\"recordId\":\"TNa5d1ywEoB7DGxde7Fc1Ua0nbb\"},{\"id\":8,\"type\":\"text\",\"selection\":{\"start\":0,\"end\":172},\"recordId\":\"Mbq6dRIj2oN6bDxdHUPcIluUnyg\"},{\"id\":9,\"type\":\"text\",\"selection\":{\"start\":0,\"end\":166},\"recordId\":\"H9VtdIlVfoyZuhx957Zc3Mnbnnf\"},{\"id\":10,\"type\":\"text\",\"selection\":{\"start\":0,\"end\":201},\"recordId\":\"KxuyddjiGok1j5xt8odceqn9nif\"}],\"pasteFlag\":\"e5364435-867e-4bf8-bb9a-74ece20b1280\"}\\'></span> <button id=\"paste-helper-id\" style=\"width: 0px; height: 0px; padding: 0px; margin: 0px; border: 0px; display: none;\"></button></p>\\n<div id=\"gtx-trans\" style=\"position: absolute; left: 35px; top: -3.40625px;\">\\n<div class=\"gtx-trans-icon\"><br></div>\\n</div>',\n title: 'Anker Prime Power Bank (27K, 250W)',\n id: 'gid://shopify/Product/10034291638456',\n name: 'Anker Prime Power Bank (27K, 250W)',\n vendor: 'beta-anker-us',\n handle: 'a1340-250w-power-bank',\n path: '/a1340-250w-power-bank',\n slug: 'a1340-250w-power-bank',\n price: {\n value: 179.99,\n currencyCode: 'USD',\n },\n listPrice: 0,\n images: [\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/Rectangle1_25a10648-8f5f-4fa8-af31-78e60305985d.png?v=1753755974',\n altText: null,\n width: 3000,\n height: 3000,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A1340011_Rich_image_TD01_US_1200x1500px_V3.jpg?v=1753755974',\n altText: null,\n width: 1200,\n height: 1500,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A1340011_TD03_V1_2fb91afe-dc06-4c64-a8ed-d8f17c96c33a.jpg?v=1753755974',\n altText: null,\n width: 1600,\n height: 2000,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A1340011_Rich_image_TD04_US.jpg?v=1753755974',\n altText: null,\n width: 2400,\n height: 3000,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A1340011_TD05_V1_5b0cb041-ccf5-4d89-b5c9-e58fd5f7108a.jpg?v=1753755974',\n altText: null,\n width: 1600,\n height: 2000,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A1340011_Rich_image_TD02_US_1600x2000px_V1.jpg?v=1753755974',\n altText: null,\n width: 1600,\n height: 2000,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A13400B1_20241009_TD_e4a4a55a-6221-494a-aa7e-aa2b8a834e1e.png?v=1753755975',\n altText: '2024-10-09-v1A13400B1',\n width: 2400,\n height: 3000,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A13400B1_Rich_image_TD01_US_1200x1500px_V3.jpg?v=1753755974',\n altText: null,\n width: 1200,\n height: 1500,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/71pS0WHwYbL_f98f499f-1b1c-41b4-8c49-92fd9f5342cc.jpg?v=1753755973',\n altText: null,\n width: 1600,\n height: 2000,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A13400B1_Rich_image_TD04_US.jpg?v=1753755974',\n altText: null,\n width: 2400,\n height: 3000,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/713YBqjTEfL_f9ecda02-b84a-4350-925f-9946b8bbe296.webp?v=1753755974',\n altText: null,\n width: 1600,\n height: 2000,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A13400B1_Rich_image_TD02_US_1600x2000px_V1.jpg?v=1753755974',\n altText: null,\n width: 1600,\n height: 2000,\n },\n ],\n variants: [\n {\n barcode: '194644130886',\n availableForSale: true,\n product: {\n handle: 'a1340-250w-power-bank',\n },\n id: 'gid://shopify/ProductVariant/51588168679608',\n name: 'Black',\n sku: 'A1340011',\n price: 179.99,\n image: {\n altText: null,\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/Rectangle1_25a10648-8f5f-4fa8-af31-78e60305985d.png?v=1753755974',\n width: 3000,\n height: 3000,\n },\n listPrice: null,\n requiresShipping: true,\n quantityAvailable: 199,\n currentlyNotInStock: false,\n sellingPlanAllocations: [],\n productHandle: 'a1340-250w-power-bank',\n coupons: [\n {\n title: 'WS24NJ137G95',\n starts_at: '2025-08-06T07:15:10.000Z',\n ends_at: null,\n variant_shopify_id: 51588168679608,\n value_type: 'fixed_amount',\n value: '-100.0',\n currency: 'USD',\n fixed_value: '100.0',\n value_style: '$100',\n variant_price4wscode: 79.99,\n discount_type: 'WS24',\n amazon_deal: false,\n cdi_id: 45745,\n cdi_updated_at: '2025-08-28T04:15:55.794Z',\n },\n ],\n },\n ],\n options: [\n {\n __typename: 'MultipleChoiceOption',\n id: 'gid://shopify/ProductOption/12066912338104',\n displayName: 'color',\n name: 'Color',\n values: [\n {\n label: 'Black',\n hexColors: ['#000000'],\n },\n {\n label: 'Champagne',\n },\n ],\n },\n ],\n },\n {\n availableForSale: true,\n description:\n \"The Anker Advantage: Join the 55+ million powered by our leading technology A Galaxy of Speed: A high-efficiency chipset provides 10W high-speed charging for Samsung Galaxy. iPhones get a boosted 5W charge at 10% faster than other wireless chargers Flip It: Charge in landscape orientation while watching videos or portrait mode for messaging and facial recognition Case Friendly: Don't fumble with your phone case. PowerWave charges directly through protective cases. Rubber/plastic/TPU cases less than 5 mm thick only. Magnetic and metal attachments or cards will prevent charging What You Get: Anker 313 Wireless Charger (Stand) / PowerWave Stand, 3 ft Micro USB Cable, welcome guide, worry-free 18-month warranty, and friendly customer service.\",\n descriptionHtml:\n '<meta charset=\"utf-8\">\\n<ul class=\"a-unordered-list a-vertical a-spacing-mini\" data-mce-fragment=\"1\">\\n<li data-mce-fragment=\"1\"><span class=\"a-list-item\" data-mce-fragment=\"1\"><strong>The Anker Advantage</strong>: Join the 55+ million powered by our leading technology</span></li>\\n<li data-mce-fragment=\"1\"><span class=\"a-list-item\" data-mce-fragment=\"1\"><strong>A Galaxy of Speed</strong>: A high-efficiency chipset provides 10W high-speed charging for Samsung Galaxy. iPhones get a boosted 5W charge at 10% faster than other wireless chargers</span></li>\\n<li data-mce-fragment=\"1\"><span class=\"a-list-item\" data-mce-fragment=\"1\"><strong>Flip It</strong>: Charge in landscape orientation while watching videos or portrait mode for messaging and facial recognition</span></li>\\n<li data-mce-fragment=\"1\"><span class=\"a-list-item\" data-mce-fragment=\"1\"><strong>Case Friendly</strong>: Don\\'t fumble with your phone case. PowerWave charges directly through protective cases. Rubber/plastic/TPU cases less than 5 mm thick only. Magnetic and metal attachments or cards will prevent charging</span></li>\\n<li data-mce-fragment=\"1\"><span class=\"a-list-item\" data-mce-fragment=\"1\"><strong>What You Ge</strong>t: Anker <strong>313</strong> Wireless Charger (Stand) / PowerWave Stand, 3 ft Micro USB Cable, welcome guide, worry-free 18-month warranty, and friendly customer service.</span></li>\\n</ul>',\n title: 'Anker <b>313</b> Wireless Charger (Stand)',\n id: 'gid://shopify/Product/10034295144632',\n name: 'Anker <b>313</b> Wireless Charger (Stand)',\n vendor: 'Anker',\n handle: 'a2524',\n path: '/a2524',\n slug: 'a2524',\n price: {\n value: 23.99,\n currencyCode: 'USD',\n },\n listPrice: 0,\n images: [\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A2524011-Anker_313_Wireless_Charger_Stand_1.png?v=1753756317',\n altText: null,\n width: 1801,\n height: 1800,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/61Df3AbF-PL.jpg?v=1753756317',\n altText: null,\n width: 1200,\n height: 1500,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/71RT3xSwRJL.jpg?v=1753756317',\n altText: null,\n width: 1200,\n height: 1500,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/61NTug2RRHL.jpg?v=1753756317',\n altText: null,\n width: 1200,\n height: 1500,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/714rrWliSiL.jpg?v=1753756317',\n altText: null,\n width: 1200,\n height: 1500,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/61dbnVj78DL.jpg?v=1753756317',\n altText: null,\n width: 1200,\n height: 1500,\n },\n ],\n variants: [\n {\n barcode: '194644085698',\n availableForSale: true,\n product: {\n handle: 'a2524',\n },\n id: 'gid://shopify/ProductVariant/51588205707448',\n name: 'Black',\n sku: 'A2524014',\n price: 23.99,\n image: {\n altText: null,\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A2524011-Anker_313_Wireless_Charger_Stand_1.png?v=1753756317',\n width: 1801,\n height: 1800,\n },\n listPrice: null,\n requiresShipping: true,\n quantityAvailable: 200,\n currentlyNotInStock: false,\n sellingPlanAllocations: [],\n productHandle: 'a2524',\n },\n ],\n sellingPlanGroups: [],\n options: [\n {\n __typename: 'MultipleChoiceOption',\n id: 'gid://shopify/ProductOption/12066916303032',\n displayName: 'color',\n name: 'Color',\n values: [\n {\n label: 'Black',\n hexColors: ['#000000'],\n },\n ],\n },\n ],\n },\n ],\n categories: [],\n}\n\nexport const Default = () => {\n return (\n <Container>\n <Specs\n data={data}\n buildData={buildData}\n />\n </Container>\n )\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import type { Meta, StoryObj } from '@storybook/react'\n\nimport Specs from '../biz-components/Specs/index.js'\nimport { Container } from '../components/container.js'\n\nconst meta = {\n title: 'Biz-Components/Specs',\n component: Specs,\n parameters: {\n layout: 'fullscreen',\n },\n tags: ['autodocs'],\n} satisfies Meta<typeof Specs>\n\nexport default meta\n\ntype Story = StoryObj<typeof meta>\n\nconst data = {\n id: '68ea29e5ca34138c04aec30f',\n display: 'visible',\n items: [\n {\n sku: 'A1340011',\n name: 'Anker <b>325</b> Power Bank (PowerCore 20K)',\n image:\n 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A1268013_1_2430b504-15c6-441e-9914-ae215095e8b4.png?v=1753755824',\n value: 'a1340-250w-power-bank',\n handle: 'a1340-250w-power-bank',\n },\n {\n sku: 'A2524014',\n name: 'Anker <b>337</b> Power Bank (PowerCore 26K)',\n image: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A1277011_V1.png?v=1753755956',\n value: 'a2524',\n handle: 'a2524',\n shopify_id: '10034291441848',\n },\n ],\n data: {\n LeftMenu: {\n data: [\n {\n title: 'Product',\n subTitle: [\n 'Clean Types',\n 'Portable Deep Cleaner',\n 'HydroJet\u2122 Mopping System',\n 'Mop Type',\n 'Downward Pressure',\n 'Rotations Per Minute',\n 'Suction Power',\n 'Auto-Detangling',\n 'Obstacle Avoidance',\n 'Omni Station',\n 'Obstacle Clearance Height',\n 'Minimum Height and Width Restrictions',\n 'Robot/Station',\n 'Run Time',\n 'App Control',\n 'Bluetooth',\n 'Wi-Fi',\n ],\n isProduct: true,\n },\n ],\n },\n RightMenu: {\n menus: [\n {\n sku: 'A1340011',\n handle: 'a1340-250w-power-bank',\n subTitle: {\n 'Wi-Fi': '\u2705',\n 'Mop Type': 'Rolling Mop',\n 'Run Time': 'Vacuum and Mop\uFF1A\\n125 min (Standard)\\n\\nVacuum\uFF1A\\n216 min (Standard)',\n Bluetooth: '\u2705',\n 'App Control': '\u2705',\n 'Clean Types': 'Vacuum and Mop',\n 'Omni Station': '\u2705',\n 'Robot/Station': 'Robot: \\n12.83 \u00D7 13.72 \u00D7 4.40 in\\nStation\uFF1A\\n14.63 \u00D7 19.07 \u00D7 17.29 in',\n 'Suction Power': '20,000 Pa',\n 'Auto-Detangling': 'DuoSpiral\u2122 Brushes',\n 'Downward Pressure': '1.5kg',\n 'Obstacle Avoidance': 'RGB Camera + LED',\n 'Rotations Per Minute': '180RPM',\n 'Portable Deep Cleaner': '\u274C',\n 'Obstacle Clearance Height': '0.83 in',\n 'HydroJet\u2122 Mopping System': '\u2705',\n 'Minimum Height and Width Restrictions': '4.40 in / 12.83 in',\n },\n },\n {\n sku: 'A2524014',\n handle: 'a2524',\n subTitle: {\n 'Wi-Fi': '\u2705',\n 'Mop Type': 'Rolling Mop',\n 'Run Time': 'Vacuum and Mop\uFF1A\\n125 min (Standard)\\n\\nVacuum\uFF1A\\n216 min (Standard)',\n Bluetooth: '\u2705',\n 'App Control': '\u2705',\n 'Clean Types': 'Vacuum and Mop',\n 'Omni Station': '\u2705',\n 'Robot/Station': 'Robot: \\n12.83 \u00D7 13.72 \u00D7 4.40 in\\nStation\uFF1A\\n14.63 \u00D7 19.07 \u00D7 17.29 in',\n 'Suction Power': '20,000 Pa',\n 'Auto-Detangling': 'DuoSpiral\u2122 Brushes',\n 'Downward Pressure': '1.5kg',\n 'Obstacle Avoidance': 'RGB Camera + LED',\n 'Rotations Per Minute': '180RPM',\n 'Portable Deep Cleaner': '\u2705',\n 'Obstacle Clearance Height': '0.83 in',\n 'HydroJet\u2122 Mopping System': '\u2705',\n 'Minimum Height and Width Restrictions': '4.40 in / 12.83 in',\n },\n },\n ],\n },\n DefaultSelectMenu: {\n sku: 'A1340011,A2524014',\n buttonText: 'Buy Now',\n },\n },\n container: {\n mobileSpan: '12',\n desktopSpan: '12',\n },\n style:\n '.specs-wrapper {\\n\\tbackground: #fff !important;\\n}\\n\\n.specs-sku-node-text {\\n\\tborder-radius: 0 !important;\\n}',\n blockName: 'Specs',\n blockType: 'ipc-specs',\n}\n\nconst buildData = {\n products: [\n {\n availableForSale: true,\n productType: 'charging only',\n onlineStoreUrl: null,\n publishedAt: '2025-07-29T03:54:52Z',\n totalInventory: 399,\n description:\n '250W Multi-Device Fast Charging: Powered by the latest PD 3.1 technology, the power bank comes with 2 USB-C ports and 1 USB-A port to deliver up to 250W of power. Boost your MacBook Pro 16\" (M2 Pro) to 50% in just 28 minutes. Intuitive Smart App: Use the Anker app to quickly locate your power bank with sound alerts, access real-time stats, and optimize device battery life with smart charging. Small Size, Huge Power: The power bank is the size of a soda can with a capacity of 27,650mAh and can charge a 13-inch MacBook Air (M2) 1.28 times or an iPhone 14 approximately 4.67 times. Please know that this power bank is 99.54Wh, which meets the requirements of the TSA(<100Wh) to be taken on airplanes as carry-on baggage. 170W Fast USB-C Recharge: Recharge your power bank at lightning speed with the convenience of dual USB-C ports, allowing you to fully replenish it in just 37 minutes. What You Get: Anker Prime 27,650mAh Power Bank (250W), 2 ft / 0.6 m 140W USB-C to USB-C charging cable, travel pouch, quick start guide, our worry-free 24-month warranty, and friendly customer service.',\n descriptionHtml:\n '<div data-mce-fragment=\"1\" data-docx-has-block-data=\"false\" data-page-id=\"BSbwdemQXoJ4lfxBpvVcKIWMnog\">\\n<div data-mce-fragment=\"1\" class=\"ace-line ace-line old-record-id-XkuPddt2Lo3pPXxN9MdcN04HnNb\">\\n<div style=\"font-family: -apple-system, BlinkMacSystemFont, \\'San Francisco\\', \\'Segoe UI\\', Roboto, \\'Helvetica Neue\\', sans-serif; font-size: 0.875rem;\">\\n<div data-docx-has-block-data=\"false\" data-page-id=\"BSbwdemQXoJ4lfxBpvVcKIWMnog\">\\n<div class=\"ace-line ace-line old-record-id-TNa5d1ywEoB7DGxde7Fc1Ua0nbb\">\\n<p>\u00A0</p>\\n<ul>\\n<li>\\n<div style=\"font-family: -apple-system, BlinkMacSystemFont, \\'San Francisco\\', \\'Segoe UI\\', Roboto, \\'Helvetica Neue\\', sans-serif; font-size: 0.875rem; display: inline !important;\">\\n<strong>250W Multi-Device\u00A0</strong><strong>Fast</strong><strong> Charging: </strong>Powered by the latest PD 3.1 technology, the power bank comes with 2 USB-C ports and 1 USB-A port to deliver up to 250W of power. Boost your MacBook Pro 16\" (M2 Pro) to 50% in just 28 minutes.</div>\\n</li>\\n<li>\\n<strong>Intuitive Smart </strong><strong>App</strong><strong>: </strong>Use the Anker app to quickly locate your power bank with sound alerts, access real-time stats, and optimize device battery life with smart charging.</li>\\n<li>\\n<strong>Small Size, Huge Power:</strong> The power bank is the size of a soda can with a capacity of 27,650mAh and can charge a 13-inch MacBook Air (M2) 1.28 times or an iPhone 14 approximately 4.67 times. Please know that this power bank is 99.54Wh, which meets the requirements of the TSA(&lt;100Wh) to be taken on airplanes as carry-on baggage.</li>\\n<li>\\n<strong>1</strong><strong>7</strong><strong>0W Fast </strong><strong>USB-C</strong><strong> Recharge: </strong>Recharge your power bank at lightning speed with the convenience of dual USB-C ports, allowing you to fully replenish it in just 37 minutes.</li>\\n<li>\\n<strong>What You Get: </strong>Anker Prime 27,650mAh Power Bank (250W), 2 ft / 0.6 m 140W USB-C to USB-C charging cable, travel pouch, quick start guide, our worry-free 24-month warranty, and friendly customer service.</li>\\n</ul>\\n</div>\\n</div>\\n</div>\\n</div>\\n</div>\\n<p><span data-mce-fragment=\"1\" class=\"lark-record-clipboard\" data-lark-record-format=\"docx/record\" data-lark-record-data=\\'{\"isCut\":false,\"rootId\":\"BSbwdemQXoJ4lfxBpvVcKIWMnog\",\"parentId\":\"BSbwdemQXoJ4lfxBpvVcKIWMnog\",\"blockIds\":[6,7,8,9,10],\"recordIds\":[\"XkuPddt2Lo3pPXxN9MdcN04HnNb\",\"TNa5d1ywEoB7DGxde7Fc1Ua0nbb\",\"Mbq6dRIj2oN6bDxdHUPcIluUnyg\",\"H9VtdIlVfoyZuhx957Zc3Mnbnnf\",\"KxuyddjiGok1j5xt8odceqn9nif\"],\"recordMap\":{\"XkuPddt2Lo3pPXxN9MdcN04HnNb\":{\"id\":\"XkuPddt2Lo3pPXxN9MdcN04HnNb\",\"snapshot\":{\"type\":\"text\",\"parent_id\":\"BSbwdemQXoJ4lfxBpvVcKIWMnog\",\"comments\":[\"7251516737602732034\"],\"locked\":false,\"hidden\":false,\"author\":\"6960514286405844995\",\"children\":[],\"text\":{\"initialAttributedTexts\":{\"text\":{\"0\":\"250W Multi-Device Fast Charging: Powered by the latest PD 3.1 technology, the power bank comes with 2 USB-C ports and 1 USB-A port to deliver up to 250W of power. Boost your MacBook Pro 16\\\\\" (M2 Pro) to 50% in just 28 minutes.\"},\"attribs\":{\"0\":\"*0*1+i*2*0*1+4*0*1+b*0+m*3*0+2*0+2y*0*4+u*5*4+4*0*4+h*6*4+2*0*4+9\"}},\"apool\":{\"numToAttrib\":{\"0\":[\"author\",\"6960514286405844995\"],\"1\":[\"bold\",\"true\"],\"2\":[\"abbreviation-data\",\"{\\\\\"id\\\\\":\\\\\"d422fb13-aa58-4592-a55c-e906b774afc6\\\\\",\\\\\"abbr_ids\\\\\":\\\\\"enterprise_7181707785976119298\\\\\",\\\\\"is_visible\\\\\":1,\\\\\"is_first\\\\\":1}\"],\"3\":[\"abbreviation-data\",\"{\\\\\"id\\\\\":\\\\\"59fbf9ee-ca61-4090-a3d5-4819f343f070\\\\\",\\\\\"abbr_ids\\\\\":\\\\\"enterprise_7257112388569497604,enterprise_46079230,enterprise_7257075173017862148,enterprise_7250018290582519812\\\\\",\\\\\"is_visible\\\\\":1,\\\\\"is_first\\\\\":1}\"],\"4\":[\"comment-id-7251516737602732034\",\"true\"],\"5\":[\"author\",\"7251397625784664066\"],\"6\":[\"author\",\"6911999026934153218\"]},\"nextNum\":7}},\"align\":\"\",\"folded\":false}},\"TNa5d1ywEoB7DGxde7Fc1Ua0nbb\":{\"id\":\"TNa5d1ywEoB7DGxde7Fc1Ua0nbb\",\"snapshot\":{\"type\":\"text\",\"parent_id\":\"BSbwdemQXoJ4lfxBpvVcKIWMnog\",\"comments\":[],\"locked\":false,\"hidden\":false,\"author\":\"6960514286405844995\",\"children\":[],\"text\":{\"apool\":{\"nextNum\":3,\"numToAttrib\":{\"0\":[\"bold\",\"true\"],\"1\":[\"author\",\"6960514286405844995\"],\"2\":[\"abbreviation-data\",\"{\\\\\"id\\\\\":\\\\\"5689917c-5736-4006-a54b-fa3164aa54f5\\\\\",\\\\\"abbr_ids\\\\\":\\\\\"enterprise_7158749951980011523\\\\\",\\\\\"is_visible\\\\\":1,\\\\\"is_first\\\\\":1}\"]}},\"initialAttributedTexts\":{\"attribs\":{\"0\":\"*1*0+g*2*1*0+3*1*0+2*1+44\"},\"text\":{\"0\":\"Intuitive Smart App: Use the Anker app to quickly locate your power bank with sound alerts, access real-time stats, and optimize device battery life with smart charging.\"}}},\"align\":\"\",\"folded\":false}},\"Mbq6dRIj2oN6bDxdHUPcIluUnyg\":{\"id\":\"Mbq6dRIj2oN6bDxdHUPcIluUnyg\",\"snapshot\":{\"type\":\"text\",\"parent_id\":\"BSbwdemQXoJ4lfxBpvVcKIWMnog\",\"comments\":[\"7251518263719723010\"],\"locked\":false,\"hidden\":false,\"author\":\"6960514286405844995\",\"children\":[],\"text\":{\"apool\":{\"nextNum\":5,\"numToAttrib\":{\"0\":[\"author\",\"6960514286405844995\"],\"1\":[\"bold\",\"true\"],\"2\":[\"comment-id-7251518263719723010\",\"true\"],\"3\":[\"author\",\"6911999026934153218\"],\"4\":[\"textHighlightBackground\",\"rgb(251,191,188)\"]}},\"initialAttributedTexts\":{\"attribs\":{\"0\":\"*0*1+n*0+2f*0*2+1*3*2*4+2*0*2*4+5*3*2*4+1*0*2+c*0*2*4+1*3*2*4+2*0*2*4+1*0*4+1*3*4+a*0+g*0*4+1*3*4+2*0*4+7\"},\"text\":{\"0\":\"Small Size, Huge Power: The power bank is the size of a soda can with a capacity of 27,650mAh and can charge a 13-inch MacBook Air (M2) 1.28 times or an iPhone 14 XX times.\"}}},\"align\":\"\",\"folded\":false}},\"H9VtdIlVfoyZuhx957Zc3Mnbnnf\":{\"id\":\"H9VtdIlVfoyZuhx957Zc3Mnbnnf\",\"snapshot\":{\"type\":\"text\",\"parent_id\":\"BSbwdemQXoJ4lfxBpvVcKIWMnog\",\"comments\":[\"7257138127599321089\",\"7250360979459080193\"],\"locked\":false,\"hidden\":false,\"author\":\"6960514286405844995\",\"children\":[],\"text\":{\"apool\":{\"nextNum\":5,\"numToAttrib\":{\"0\":[\"author\",\"6960514286405844995\"],\"1\":[\"bold\",\"true\"],\"2\":[\"comment-id-7250360979459080193\",\"true\"],\"3\":[\"comment-id-7257138127599321089\",\"true\"],\"4\":[\"author\",\"6911999026934153218\"]}},\"initialAttributedTexts\":{\"attribs\":{\"0\":\"*0*1*2*3+1*4*1*2*3+1*0*1*2*3+o*0*2*3+27*4*2*3+5*0*2*3+i*4*2*3+8*0*2*3+a*4*2*3+1*0*2*3+8*4*2*3+b\"},\"text\":{\"0\":\"170W Fast USB-C Recharge: Recharge your power bank at lightning speed with the convenience of dual USB-C ports, allowing you to fully replenish it in just 37 minutes.\"}}},\"align\":\"\",\"folded\":false}},\"KxuyddjiGok1j5xt8odceqn9nif\":{\"id\":\"KxuyddjiGok1j5xt8odceqn9nif\",\"snapshot\":{\"type\":\"text\",\"parent_id\":\"BSbwdemQXoJ4lfxBpvVcKIWMnog\",\"comments\":[\"7257121236814774275\",\"7251518550442344476\"],\"locked\":false,\"hidden\":false,\"author\":\"6960514286405844995\",\"children\":[],\"text\":{\"initialAttributedTexts\":{\"text\":{\"0\":\"What You Get: Anker Prime 27,650mAh Power Bank (250W), 2 ft (0.6 m) 140W USB-C to USB-C charging cable, travel pouch, quick start guide, our worry-free 24-month warranty, and friendly customer service.\"},\"attribs\":{\"0\":\"*0*1+e*0+14*0*2+1*3*2+1*0*2+c*0+1e*4*3+b*4*0*5+6*0+1u\"}},\"apool\":{\"numToAttrib\":{\"0\":[\"author\",\"6960514286405844995\"],\"1\":[\"bold\",\"true\"],\"2\":[\"comment-id-7257121236814774275\",\"true\"],\"3\":[\"author\",\"6911999026934153218\"],\"4\":[\"abbreviation-data\",\"{\\\\\"id\\\\\":\\\\\"c5b16e2c-8c3b-4d24-b1be-442fbe5196dc\\\\\",\\\\\"abbr_ids\\\\\":\\\\\"enterprise_7125383109633114114\\\\\",\\\\\"is_visible\\\\\":1,\\\\\"is_first\\\\\":1}\"],\"5\":[\"comment-id-7251518550442344476\",\"true\"]},\"nextNum\":6}},\"align\":\"\",\"folded\":false}},\"BSbwdemQXoJ4lfxBpvVcKIWMnog\":{\"id\":\"BSbwdemQXoJ4lfxBpvVcKIWMnog\",\"snapshot\":{\"type\":\"page\",\"parent_id\":\"\",\"comments\":null,\"locked\":false,\"hidden\":false,\"author\":\"6960514286405844995\",\"children\":[\"P1lYdRH7Hor4BNxoOw3c015DnTb\",\"FsSedByPioX2r8xoEfBcJgw8nCe\",\"HE2qdl0viobsm6xdLyyck54ynGb\",\"PMehdKa42ogL1mxIgXWcn4XRnUh\",\"XkuPddt2Lo3pPXxN9MdcN04HnNb\",\"TNa5d1ywEoB7DGxde7Fc1Ua0nbb\",\"Mbq6dRIj2oN6bDxdHUPcIluUnyg\",\"H9VtdIlVfoyZuhx957Zc3Mnbnnf\",\"KxuyddjiGok1j5xt8odceqn9nif\",\"KrUadg8Cdonh42xaKDZc79nJnJf\",\"So00daSORoePWlx8DhAcUjkqn4f\",\"Ebg7dQBveo0026xAneIcaOTcn1g\",\"ZR0sdo11XoHqvGxB8j4cZnC0nee\",\"GcYgdn5rmoLRL6xlLc6cXnY3nHd\",\"LJ7DduoTso3D8mxW6D7cIaDMnph\",\"TuYddBj4jop3wyxuBa3crbPFnwb\",\"L5rldM6ysoM7faxmQFLcE8Ognxg\",\"Bip4d8FKco9aGUxcuU6cWhJSn1b\",\"PhEOdWCP0oAh2KxuZezcJv9inpc\",\"H8GxdNxBwoOO50xHldFcDeYfnld\",\"YGcfdYduQogOd4xnMkQcTJ8Pn7c\",\"VtA6dG2jwoHA4yxNTISc8zRRndb\",\"EnsMdHvDkoPx4cxx8jUcIempnxh\",\"LeX2dWfRZod240xnyGqclSeYnUf\",\"WZ9Jdzp3CodpiOxLlOUcEBP0n6b\",\"Mqkmdz3dao61JOxo032cJ0ZYnvb\",\"IMcdd88teodoW8xsjJtcEn28nsb\",\"GvjFdmlrAoilbbxjqr2c2R5QnFd\",\"YHsTdvEp1o4n4ZxwQCIcnpnFn0e\",\"V9efdxPyioc2P3xzW0Uc7S0Hnif\",\"QCSQdWrTRoCGCFxHz3ccLTHenpd\",\"Rjcad7xCAoOzxBxNaE9cXx5bnQd\",\"R6YedUcCQoFpt5xnU6Ac8xZrnvd\",\"Gi6wd5qRaoewxRxV1H5cksuoneb\",\"EQqZdA903oSF9vxPtQWceWHKnhf\",\"LSu5d2IusoTxXPxmSzucd62Unkd\",\"PIsDdxjDJo34tBxIw0ocu2n6nue\",\"KQJkdl7dCoLIsWxRBhlc1HlMnwb\",\"VuI6dRaTuohYuqxTjiPc8Y2RnTb\",\"BXGqdAZHso4IFDxpme5cApGCnQg\",\"Lrped7kXPocXelx5YthcZ0Kynmc\",\"M7JidVWO5orTtQxMaRKclvHon8b\",\"N33SddXYRowPtYxkIQrc2lc3nw3\",\"Tj3jdoV60o7QSTxLVaJccOb4nAb\",\"DDePdRYj4ojGy5xiU0Nc0Vk3nqg\",\"NLw9dY8Zaod5uxxFTxgcRFVfnog\"],\"text\":{\"apool\":{\"nextNum\":1,\"numToAttrib\":{\"0\":[\"author\",\"6960514286405844995\"]}},\"initialAttributedTexts\":{\"attribs\":{\"0\":\"*0+1j\"},\"text\":{\"0\":\"A1340 Listing - Anker Prime 27,650mAh Power Bank (250W)\"}}},\"align\":\"\",\"doc_info\":{\"editors\":[\"6960514286405844995\",\"6911999026934153218\",\"7020952465340153884\",\"7251397625784664066\"],\"options\":[\"editors\",\"create_time\"],\"deleted_editors\":[]}}}},\"payloadMap\":{\"XkuPddt2Lo3pPXxN9MdcN04HnNb\":{\"level\":1},\"TNa5d1ywEoB7DGxde7Fc1Ua0nbb\":{\"level\":1},\"Mbq6dRIj2oN6bDxdHUPcIluUnyg\":{\"level\":1},\"H9VtdIlVfoyZuhx957Zc3Mnbnnf\":{\"level\":1},\"KxuyddjiGok1j5xt8odceqn9nif\":{\"level\":1}},\"extra\":{\"mention_page_title\":{},\"external_mention_url\":{}},\"isKeepQuoteContainer\":false,\"selection\":[{\"id\":6,\"type\":\"text\",\"selection\":{\"start\":0,\"end\":225},\"recordId\":\"XkuPddt2Lo3pPXxN9MdcN04HnNb\"},{\"id\":7,\"type\":\"text\",\"selection\":{\"start\":0,\"end\":169},\"recordId\":\"TNa5d1ywEoB7DGxde7Fc1Ua0nbb\"},{\"id\":8,\"type\":\"text\",\"selection\":{\"start\":0,\"end\":172},\"recordId\":\"Mbq6dRIj2oN6bDxdHUPcIluUnyg\"},{\"id\":9,\"type\":\"text\",\"selection\":{\"start\":0,\"end\":166},\"recordId\":\"H9VtdIlVfoyZuhx957Zc3Mnbnnf\"},{\"id\":10,\"type\":\"text\",\"selection\":{\"start\":0,\"end\":201},\"recordId\":\"KxuyddjiGok1j5xt8odceqn9nif\"}],\"pasteFlag\":\"e5364435-867e-4bf8-bb9a-74ece20b1280\"}\\'></span> <button id=\"paste-helper-id\" style=\"width: 0px; height: 0px; padding: 0px; margin: 0px; border: 0px; display: none;\"></button></p>\\n<div id=\"gtx-trans\" style=\"position: absolute; left: 35px; top: -3.40625px;\">\\n<div class=\"gtx-trans-icon\"><br></div>\\n</div>',\n title: 'Anker Prime Power Bank (27K, 250W)',\n id: 'gid://shopify/Product/10034291638456',\n name: 'Anker Prime Power Bank (27K, 250W)',\n vendor: 'beta-anker-us',\n handle: 'a1340-250w-power-bank',\n path: '/a1340-250w-power-bank',\n slug: 'a1340-250w-power-bank',\n price: {\n value: 179.99,\n currencyCode: 'USD',\n },\n listPrice: 0,\n images: [\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/Rectangle1_25a10648-8f5f-4fa8-af31-78e60305985d.png?v=1753755974',\n altText: null,\n width: 3000,\n height: 3000,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A1340011_Rich_image_TD01_US_1200x1500px_V3.jpg?v=1753755974',\n altText: null,\n width: 1200,\n height: 1500,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A1340011_TD03_V1_2fb91afe-dc06-4c64-a8ed-d8f17c96c33a.jpg?v=1753755974',\n altText: null,\n width: 1600,\n height: 2000,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A1340011_Rich_image_TD04_US.jpg?v=1753755974',\n altText: null,\n width: 2400,\n height: 3000,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A1340011_TD05_V1_5b0cb041-ccf5-4d89-b5c9-e58fd5f7108a.jpg?v=1753755974',\n altText: null,\n width: 1600,\n height: 2000,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A1340011_Rich_image_TD02_US_1600x2000px_V1.jpg?v=1753755974',\n altText: null,\n width: 1600,\n height: 2000,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A13400B1_20241009_TD_e4a4a55a-6221-494a-aa7e-aa2b8a834e1e.png?v=1753755975',\n altText: '2024-10-09-v1A13400B1',\n width: 2400,\n height: 3000,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A13400B1_Rich_image_TD01_US_1200x1500px_V3.jpg?v=1753755974',\n altText: null,\n width: 1200,\n height: 1500,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/71pS0WHwYbL_f98f499f-1b1c-41b4-8c49-92fd9f5342cc.jpg?v=1753755973',\n altText: null,\n width: 1600,\n height: 2000,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A13400B1_Rich_image_TD04_US.jpg?v=1753755974',\n altText: null,\n width: 2400,\n height: 3000,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/713YBqjTEfL_f9ecda02-b84a-4350-925f-9946b8bbe296.webp?v=1753755974',\n altText: null,\n width: 1600,\n height: 2000,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A13400B1_Rich_image_TD02_US_1600x2000px_V1.jpg?v=1753755974',\n altText: null,\n width: 1600,\n height: 2000,\n },\n ],\n variants: [\n {\n barcode: '194644130886',\n availableForSale: true,\n product: {\n handle: 'a1340-250w-power-bank',\n },\n id: 'gid://shopify/ProductVariant/51588168679608',\n name: 'Black',\n sku: 'A1340011',\n price: 179.99,\n image: {\n altText: null,\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/Rectangle1_25a10648-8f5f-4fa8-af31-78e60305985d.png?v=1753755974',\n width: 3000,\n height: 3000,\n },\n listPrice: null,\n requiresShipping: true,\n quantityAvailable: 199,\n currentlyNotInStock: false,\n sellingPlanAllocations: [],\n productHandle: 'a1340-250w-power-bank',\n coupons: [\n {\n title: 'WS24NJ137G95',\n starts_at: '2025-08-06T07:15:10.000Z',\n ends_at: null,\n variant_shopify_id: 51588168679608,\n value_type: 'fixed_amount',\n value: '-100.0',\n currency: 'USD',\n fixed_value: '100.0',\n value_style: '$100',\n variant_price4wscode: 79.99,\n discount_type: 'WS24',\n amazon_deal: false,\n cdi_id: 45745,\n cdi_updated_at: '2025-08-28T04:15:55.794Z',\n },\n ],\n },\n ],\n options: [\n {\n __typename: 'MultipleChoiceOption',\n id: 'gid://shopify/ProductOption/12066912338104',\n displayName: 'color',\n name: 'Color',\n values: [\n {\n label: 'Black',\n hexColors: ['#000000'],\n },\n {\n label: 'Champagne',\n },\n ],\n },\n ],\n },\n {\n availableForSale: true,\n description:\n \"The Anker Advantage: Join the 55+ million powered by our leading technology A Galaxy of Speed: A high-efficiency chipset provides 10W high-speed charging for Samsung Galaxy. iPhones get a boosted 5W charge at 10% faster than other wireless chargers Flip It: Charge in landscape orientation while watching videos or portrait mode for messaging and facial recognition Case Friendly: Don't fumble with your phone case. PowerWave charges directly through protective cases. Rubber/plastic/TPU cases less than 5 mm thick only. Magnetic and metal attachments or cards will prevent charging What You Get: Anker 313 Wireless Charger (Stand) / PowerWave Stand, 3 ft Micro USB Cable, welcome guide, worry-free 18-month warranty, and friendly customer service.\",\n descriptionHtml:\n '<meta charset=\"utf-8\">\\n<ul class=\"a-unordered-list a-vertical a-spacing-mini\" data-mce-fragment=\"1\">\\n<li data-mce-fragment=\"1\"><span class=\"a-list-item\" data-mce-fragment=\"1\"><strong>The Anker Advantage</strong>: Join the 55+ million powered by our leading technology</span></li>\\n<li data-mce-fragment=\"1\"><span class=\"a-list-item\" data-mce-fragment=\"1\"><strong>A Galaxy of Speed</strong>: A high-efficiency chipset provides 10W high-speed charging for Samsung Galaxy. iPhones get a boosted 5W charge at 10% faster than other wireless chargers</span></li>\\n<li data-mce-fragment=\"1\"><span class=\"a-list-item\" data-mce-fragment=\"1\"><strong>Flip It</strong>: Charge in landscape orientation while watching videos or portrait mode for messaging and facial recognition</span></li>\\n<li data-mce-fragment=\"1\"><span class=\"a-list-item\" data-mce-fragment=\"1\"><strong>Case Friendly</strong>: Don\\'t fumble with your phone case. PowerWave charges directly through protective cases. Rubber/plastic/TPU cases less than 5 mm thick only. Magnetic and metal attachments or cards will prevent charging</span></li>\\n<li data-mce-fragment=\"1\"><span class=\"a-list-item\" data-mce-fragment=\"1\"><strong>What You Ge</strong>t: Anker <strong>313</strong> Wireless Charger (Stand) / PowerWave Stand, 3 ft Micro USB Cable, welcome guide, worry-free 18-month warranty, and friendly customer service.</span></li>\\n</ul>',\n title: 'Anker <b>313</b> Wireless Charger (Stand)',\n id: 'gid://shopify/Product/10034295144632',\n name: 'Anker <b>313</b> Wireless Charger (Stand)',\n vendor: 'Anker',\n handle: 'a2524',\n path: '/a2524',\n slug: 'a2524',\n price: {\n value: 23.99,\n currencyCode: 'USD',\n },\n listPrice: 0,\n images: [\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A2524011-Anker_313_Wireless_Charger_Stand_1.png?v=1753756317',\n altText: null,\n width: 1801,\n height: 1800,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/61Df3AbF-PL.jpg?v=1753756317',\n altText: null,\n width: 1200,\n height: 1500,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/71RT3xSwRJL.jpg?v=1753756317',\n altText: null,\n width: 1200,\n height: 1500,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/61NTug2RRHL.jpg?v=1753756317',\n altText: null,\n width: 1200,\n height: 1500,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/714rrWliSiL.jpg?v=1753756317',\n altText: null,\n width: 1200,\n height: 1500,\n },\n {\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/61dbnVj78DL.jpg?v=1753756317',\n altText: null,\n width: 1200,\n height: 1500,\n },\n ],\n variants: [\n {\n barcode: '194644085698',\n availableForSale: true,\n product: {\n handle: 'a2524',\n },\n id: 'gid://shopify/ProductVariant/51588205707448',\n name: 'Black',\n sku: 'A2524014',\n price: 23.99,\n image: {\n altText: null,\n url: 'https://cdn.shopify.com/s/files/1/0517/6767/3016/files/A2524011-Anker_313_Wireless_Charger_Stand_1.png?v=1753756317',\n width: 1801,\n height: 1800,\n },\n listPrice: null,\n requiresShipping: true,\n quantityAvailable: 200,\n currentlyNotInStock: false,\n sellingPlanAllocations: [],\n productHandle: 'a2524',\n },\n ],\n sellingPlanGroups: [],\n options: [\n {\n __typename: 'MultipleChoiceOption',\n id: 'gid://shopify/ProductOption/12066916303032',\n displayName: 'color',\n name: 'Color',\n values: [\n {\n label: 'Black',\n hexColors: ['#000000'],\n },\n ],\n },\n ],\n },\n ],\n categories: [],\n}\n\nexport const Default = () => {\n return (\n <Container>\n <Specs data={data} buildData={buildData} />\n </Container>\n )\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["jsx", "Specs", "Container", "meta", "specs_stories_default", "data", "buildData", "Default"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anker-in/headless-ui",
3
- "version": "1.1.4",
3
+ "version": "1.1.6",
4
4
  "type": "commonjs",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "types": "./dist/cjs/index.d.ts",
@@ -71,6 +71,7 @@
71
71
  "@testing-library/jest-dom": "^6.4.6",
72
72
  "@testing-library/react": "^14.3.1",
73
73
  "@types/jest": "^29.5.12",
74
+ "@types/jump.js": "^1.0.6",
74
75
  "@types/node": "^20",
75
76
  "babel-jest": "^29.7.0",
76
77
  "esbuild": "^0.20.2",
@@ -115,6 +116,8 @@
115
116
  "embla-carousel-wheel-gestures": "^8.0.1",
116
117
  "es-toolkit": "^1.36.0",
117
118
  "fitty": "^2.4.2",
119
+ "framer-motion": "^12.23.24",
120
+ "jump.js": "^1.0.2",
118
121
  "postcss": "^8.4.38",
119
122
  "react-fast-marquee": "^1.6.5",
120
123
  "react-intersection-observer": "^9.4.0",
@@ -146,7 +149,8 @@
146
149
  "build:js:esm": "node esbuild-esm.mjs",
147
150
  "build:js:esm:types": "tsc --outdir dist/esm",
148
151
  "build:css": "postcss src/styles/global.css -o style.css",
149
- "lint": "eslint \"src/**/*.ts*\"",
152
+ "lint": "eslint \"src/**/*.ts*\" --quiet",
153
+ "lint:fix": "eslint \"src/**/*.ts*\" --fix",
150
154
  "test": "jest",
151
155
  "test:snapshots:update": "jest -u",
152
156
  "test:coverage": "jest --coverage && jest-coverage-badges output \"./badges\"",