@anker-in/lib 1.1.0 → 1.1.2-beta.1

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 (371) hide show
  1. package/.turbo/turbo-build.log +10 -6
  2. package/.turbo/turbo-test.log +1 -1
  3. package/dist/cart/context/index.d.ts +47 -0
  4. package/dist/cart/context/index.d.ts.map +1 -0
  5. package/dist/cart/hooks/basic/useAddToCart.d.ts +30 -0
  6. package/dist/cart/hooks/basic/useAddToCart.d.ts.map +1 -0
  7. package/dist/cart/hooks/basic/useApplyCartCodes.d.ts +11 -0
  8. package/dist/cart/hooks/basic/useApplyCartCodes.d.ts.map +1 -0
  9. package/dist/cart/hooks/basic/useCreateCart.d.ts +7 -0
  10. package/dist/cart/hooks/basic/useCreateCart.d.ts.map +1 -0
  11. package/dist/cart/hooks/basic/useRemoveCartCodes.d.ts +11 -0
  12. package/dist/cart/hooks/basic/useRemoveCartCodes.d.ts.map +1 -0
  13. package/dist/cart/hooks/basic/useRemoveCartLines.d.ts +11 -0
  14. package/dist/cart/hooks/basic/useRemoveCartLines.d.ts.map +1 -0
  15. package/dist/cart/hooks/basic/useUpdateCartAttributes.d.ts +8 -0
  16. package/dist/cart/hooks/basic/useUpdateCartAttributes.d.ts.map +1 -0
  17. package/dist/cart/hooks/basic/useUpdateCartBuyerIdentity.d.ts +8 -0
  18. package/dist/cart/hooks/basic/useUpdateCartBuyerIdentity.d.ts.map +1 -0
  19. package/dist/cart/hooks/basic/useUpdateCartLines.d.ts +8 -0
  20. package/dist/cart/hooks/basic/useUpdateCartLines.d.ts.map +1 -0
  21. package/dist/cart/hooks/feature/useCalcAutoFreeGift.d.ts +10 -0
  22. package/dist/cart/hooks/feature/useCalcAutoFreeGift.d.ts.map +1 -0
  23. package/dist/cart/hooks/feature/useCalcOrderDiscount.d.ts +21 -0
  24. package/dist/cart/hooks/feature/useCalcOrderDiscount.d.ts.map +1 -0
  25. package/dist/cart/hooks/feature/useCartAttributes.d.ts +10 -0
  26. package/dist/cart/hooks/feature/useCartAttributes.d.ts.map +1 -0
  27. package/dist/cart/hooks/feature/useCartItemQuantityLimit.d.ts +19 -0
  28. package/dist/cart/hooks/feature/useCartItemQuantityLimit.d.ts.map +1 -0
  29. package/dist/cart/hooks/feature/useScriptAutoFreeGift.d.ts +37 -0
  30. package/dist/cart/hooks/feature/useScriptAutoFreeGift.d.ts.map +1 -0
  31. package/dist/cart/hooks/feature/useUpdateLineCodeAmountAttributes.d.ts +9 -0
  32. package/dist/cart/hooks/feature/useUpdateLineCodeAmountAttributes.d.ts.map +1 -0
  33. package/dist/cart/track/gtm.d.ts +26 -0
  34. package/dist/cart/track/gtm.d.ts.map +1 -0
  35. package/dist/cart/types/autoFreeGift.d.ts +135 -0
  36. package/dist/cart/types/autoFreeGift.d.ts.map +1 -0
  37. package/dist/cart/types/orderDiscount.d.ts +35 -0
  38. package/dist/cart/types/orderDiscount.d.ts.map +1 -0
  39. package/dist/cart/types/priceDiscount.d.ts +20 -0
  40. package/dist/cart/types/priceDiscount.d.ts.map +1 -0
  41. package/dist/cart/utils/autoFreeGift.d.ts +21 -0
  42. package/dist/cart/utils/autoFreeGift.d.ts.map +1 -0
  43. package/dist/cjs/cart/context/index.d.ts +47 -0
  44. package/dist/cjs/cart/context/index.d.ts.map +1 -0
  45. package/dist/cjs/cart/context/index.js +2 -0
  46. package/dist/cjs/cart/context/index.js.map +7 -0
  47. package/dist/cjs/cart/hooks/basic/useAddToCart.d.ts +30 -0
  48. package/dist/cjs/cart/hooks/basic/useAddToCart.d.ts.map +1 -0
  49. package/dist/cjs/cart/hooks/basic/useAddToCart.js +2 -0
  50. package/dist/cjs/cart/hooks/basic/useAddToCart.js.map +7 -0
  51. package/dist/cjs/cart/hooks/basic/useApplyCartCodes.d.ts +11 -0
  52. package/dist/cjs/cart/hooks/basic/useApplyCartCodes.d.ts.map +1 -0
  53. package/dist/cjs/cart/hooks/basic/useApplyCartCodes.js +2 -0
  54. package/dist/cjs/cart/hooks/basic/useApplyCartCodes.js.map +7 -0
  55. package/dist/cjs/cart/hooks/basic/useBuyNow.d.ts +1 -1
  56. package/dist/cjs/cart/hooks/basic/useBuyNow.d.ts.map +1 -1
  57. package/dist/cjs/cart/hooks/basic/useBuyNow.js +1 -1
  58. package/dist/cjs/cart/hooks/basic/useBuyNow.js.map +3 -3
  59. package/dist/cjs/cart/hooks/basic/useCreateCart.d.ts +7 -0
  60. package/dist/cjs/cart/hooks/basic/useCreateCart.d.ts.map +1 -0
  61. package/dist/cjs/cart/hooks/basic/useCreateCart.js +2 -0
  62. package/dist/cjs/cart/hooks/basic/useCreateCart.js.map +7 -0
  63. package/dist/cjs/cart/hooks/basic/useRemoveCartCodes.d.ts +11 -0
  64. package/dist/cjs/cart/hooks/basic/useRemoveCartCodes.d.ts.map +1 -0
  65. package/dist/cjs/cart/hooks/basic/useRemoveCartCodes.js +2 -0
  66. package/dist/cjs/cart/hooks/basic/useRemoveCartCodes.js.map +7 -0
  67. package/dist/cjs/cart/hooks/basic/useRemoveCartLines.d.ts +11 -0
  68. package/dist/cjs/cart/hooks/basic/useRemoveCartLines.d.ts.map +1 -0
  69. package/dist/cjs/cart/hooks/basic/useRemoveCartLines.js +2 -0
  70. package/dist/cjs/cart/hooks/basic/useRemoveCartLines.js.map +7 -0
  71. package/dist/cjs/cart/hooks/basic/useUpdateCartAttributes.d.ts +8 -0
  72. package/dist/cjs/cart/hooks/basic/useUpdateCartAttributes.d.ts.map +1 -0
  73. package/dist/cjs/cart/hooks/basic/useUpdateCartAttributes.js +2 -0
  74. package/dist/cjs/cart/hooks/basic/useUpdateCartAttributes.js.map +7 -0
  75. package/dist/cjs/cart/hooks/basic/useUpdateCartBuyerIdentity.d.ts +8 -0
  76. package/dist/cjs/cart/hooks/basic/useUpdateCartBuyerIdentity.d.ts.map +1 -0
  77. package/dist/cjs/cart/hooks/basic/useUpdateCartBuyerIdentity.js +2 -0
  78. package/dist/cjs/cart/hooks/basic/useUpdateCartBuyerIdentity.js.map +7 -0
  79. package/dist/cjs/cart/hooks/basic/useUpdateCartLines.d.ts +8 -0
  80. package/dist/cjs/cart/hooks/basic/useUpdateCartLines.d.ts.map +1 -0
  81. package/dist/cjs/cart/hooks/basic/useUpdateCartLines.js +2 -0
  82. package/dist/cjs/cart/hooks/basic/useUpdateCartLines.js.map +7 -0
  83. package/dist/cjs/cart/hooks/feature/useCalcAutoFreeGift.d.ts +10 -0
  84. package/dist/cjs/cart/hooks/feature/useCalcAutoFreeGift.d.ts.map +1 -0
  85. package/dist/cjs/cart/hooks/feature/useCalcAutoFreeGift.js +2 -0
  86. package/dist/cjs/cart/hooks/feature/useCalcAutoFreeGift.js.map +7 -0
  87. package/dist/cjs/cart/hooks/feature/useCalcOrderDiscount.d.ts +21 -0
  88. package/dist/cjs/cart/hooks/feature/useCalcOrderDiscount.d.ts.map +1 -0
  89. package/dist/cjs/cart/hooks/feature/useCalcOrderDiscount.js +2 -0
  90. package/dist/cjs/cart/hooks/feature/useCalcOrderDiscount.js.map +7 -0
  91. package/dist/cjs/cart/hooks/feature/useCartAttributes.d.ts +10 -0
  92. package/dist/cjs/cart/hooks/feature/useCartAttributes.d.ts.map +1 -0
  93. package/dist/cjs/cart/hooks/feature/useCartAttributes.js +2 -0
  94. package/dist/cjs/cart/hooks/feature/useCartAttributes.js.map +7 -0
  95. package/dist/cjs/cart/hooks/feature/useCartItemQuantityLimit.d.ts +19 -0
  96. package/dist/cjs/cart/hooks/feature/useCartItemQuantityLimit.d.ts.map +1 -0
  97. package/dist/cjs/cart/hooks/feature/useCartItemQuantityLimit.js +2 -0
  98. package/dist/cjs/cart/hooks/feature/useCartItemQuantityLimit.js.map +7 -0
  99. package/dist/cjs/cart/hooks/feature/useScriptAutoFreeGift.d.ts +37 -0
  100. package/dist/cjs/cart/hooks/feature/useScriptAutoFreeGift.d.ts.map +1 -0
  101. package/dist/cjs/cart/hooks/feature/useScriptAutoFreeGift.js +2 -0
  102. package/dist/cjs/cart/hooks/feature/useScriptAutoFreeGift.js.map +7 -0
  103. package/dist/cjs/cart/hooks/feature/useUpdateLineCodeAmountAttributes.d.ts +9 -0
  104. package/dist/cjs/cart/hooks/feature/useUpdateLineCodeAmountAttributes.d.ts.map +1 -0
  105. package/dist/cjs/cart/hooks/feature/useUpdateLineCodeAmountAttributes.js +2 -0
  106. package/dist/cjs/cart/hooks/feature/useUpdateLineCodeAmountAttributes.js.map +7 -0
  107. package/dist/cjs/cart/track/fbq.d.ts +2 -9
  108. package/dist/cjs/cart/track/fbq.d.ts.map +1 -1
  109. package/dist/cjs/cart/track/fbq.js +1 -1
  110. package/dist/cjs/cart/track/fbq.js.map +3 -3
  111. package/dist/cjs/cart/track/gtm.d.ts +26 -0
  112. package/dist/cjs/cart/track/gtm.d.ts.map +1 -0
  113. package/dist/cjs/cart/track/gtm.js +2 -0
  114. package/dist/cjs/cart/track/gtm.js.map +7 -0
  115. package/dist/cjs/cart/types/autoFreeGift.d.ts +135 -0
  116. package/dist/cjs/cart/types/autoFreeGift.d.ts.map +1 -0
  117. package/dist/cjs/cart/types/autoFreeGift.js +2 -0
  118. package/dist/cjs/cart/types/autoFreeGift.js.map +7 -0
  119. package/dist/cjs/cart/types/index.d.ts +1 -0
  120. package/dist/cjs/cart/types/index.d.ts.map +1 -1
  121. package/dist/cjs/cart/types/index.js +1 -1
  122. package/dist/cjs/cart/types/index.js.map +1 -1
  123. package/dist/cjs/cart/types/orderDiscount.d.ts +35 -0
  124. package/dist/cjs/cart/types/orderDiscount.d.ts.map +1 -0
  125. package/dist/cjs/cart/types/orderDiscount.js +2 -0
  126. package/dist/cjs/cart/types/orderDiscount.js.map +7 -0
  127. package/dist/cjs/cart/types/priceDiscount.d.ts +20 -0
  128. package/dist/cjs/cart/types/priceDiscount.d.ts.map +1 -0
  129. package/dist/cjs/cart/types/priceDiscount.js +2 -0
  130. package/dist/cjs/cart/types/priceDiscount.js.map +7 -0
  131. package/dist/cjs/cart/utils/autoFreeGift.d.ts +21 -0
  132. package/dist/cjs/cart/utils/autoFreeGift.d.ts.map +1 -0
  133. package/dist/cjs/cart/utils/autoFreeGift.js +2 -0
  134. package/dist/cjs/cart/utils/autoFreeGift.js.map +7 -0
  135. package/dist/cjs/cart/utils/index.d.ts +1 -0
  136. package/dist/cjs/cart/utils/index.d.ts.map +1 -1
  137. package/dist/cjs/cart/utils/index.js +1 -1
  138. package/dist/cjs/cart/utils/index.js.map +3 -3
  139. package/dist/cjs/constants.d.ts +2 -0
  140. package/dist/cjs/constants.d.ts.map +1 -0
  141. package/dist/cjs/constants.js +2 -0
  142. package/dist/cjs/constants.js.map +7 -0
  143. package/dist/cjs/context/index.js.map +1 -1
  144. package/dist/cjs/index.d.ts +1 -0
  145. package/dist/cjs/index.d.ts.map +1 -1
  146. package/dist/cjs/index.js +1 -1
  147. package/dist/cjs/index.js.map +2 -2
  148. package/dist/cjs/registration/hooks/index.d.ts +1 -0
  149. package/dist/cjs/registration/hooks/index.d.ts.map +1 -1
  150. package/dist/cjs/registration/hooks/index.js +1 -1
  151. package/dist/cjs/registration/hooks/index.js.map +2 -2
  152. package/dist/cjs/registration/hooks/useEmailValidation.d.ts.map +1 -1
  153. package/dist/cjs/registration/hooks/useEmailValidation.js +1 -1
  154. package/dist/cjs/registration/hooks/useEmailValidation.js.map +3 -3
  155. package/dist/cjs/registration/hooks/useSendEmailValidation.d.ts.map +1 -1
  156. package/dist/cjs/registration/hooks/useSendEmailValidation.js +1 -1
  157. package/dist/cjs/registration/hooks/useSendEmailValidation.js.map +3 -3
  158. package/dist/cjs/registration/hooks/useSubscriptions.d.ts +15 -0
  159. package/dist/cjs/registration/hooks/useSubscriptions.d.ts.map +1 -0
  160. package/dist/cjs/registration/hooks/useSubscriptions.js +2 -0
  161. package/dist/cjs/registration/hooks/useSubscriptions.js.map +7 -0
  162. package/dist/cjs/registration/index.d.ts +0 -1
  163. package/dist/cjs/registration/index.d.ts.map +1 -1
  164. package/dist/cjs/registration/index.js +1 -1
  165. package/dist/cjs/registration/index.js.map +2 -2
  166. package/dist/cjs/shopify/fetchers/index.d.ts +2 -0
  167. package/dist/cjs/shopify/fetchers/index.d.ts.map +1 -1
  168. package/dist/cjs/shopify/fetchers/index.js +1 -1
  169. package/dist/cjs/shopify/fetchers/index.js.map +3 -3
  170. package/dist/esm/cart/context/index.d.ts +47 -0
  171. package/dist/esm/cart/context/index.d.ts.map +1 -0
  172. package/dist/esm/cart/context/index.js +2 -0
  173. package/dist/esm/cart/context/index.js.map +7 -0
  174. package/dist/esm/cart/hooks/basic/useAddToCart.d.ts +30 -0
  175. package/dist/esm/cart/hooks/basic/useAddToCart.d.ts.map +1 -0
  176. package/dist/esm/cart/hooks/basic/useAddToCart.js +2 -0
  177. package/dist/esm/cart/hooks/basic/useAddToCart.js.map +7 -0
  178. package/dist/esm/cart/hooks/basic/useApplyCartCodes.d.ts +11 -0
  179. package/dist/esm/cart/hooks/basic/useApplyCartCodes.d.ts.map +1 -0
  180. package/dist/esm/cart/hooks/basic/useApplyCartCodes.js +2 -0
  181. package/dist/esm/cart/hooks/basic/useApplyCartCodes.js.map +7 -0
  182. package/dist/esm/cart/hooks/basic/useBuyNow.d.ts +1 -1
  183. package/dist/esm/cart/hooks/basic/useBuyNow.d.ts.map +1 -1
  184. package/dist/esm/cart/hooks/basic/useBuyNow.js +1 -1
  185. package/dist/esm/cart/hooks/basic/useBuyNow.js.map +3 -3
  186. package/dist/esm/cart/hooks/basic/useCreateCart.d.ts +7 -0
  187. package/dist/esm/cart/hooks/basic/useCreateCart.d.ts.map +1 -0
  188. package/dist/esm/cart/hooks/basic/useCreateCart.js +2 -0
  189. package/dist/esm/cart/hooks/basic/useCreateCart.js.map +7 -0
  190. package/dist/esm/cart/hooks/basic/useRemoveCartCodes.d.ts +11 -0
  191. package/dist/esm/cart/hooks/basic/useRemoveCartCodes.d.ts.map +1 -0
  192. package/dist/esm/cart/hooks/basic/useRemoveCartCodes.js +2 -0
  193. package/dist/esm/cart/hooks/basic/useRemoveCartCodes.js.map +7 -0
  194. package/dist/esm/cart/hooks/basic/useRemoveCartLines.d.ts +11 -0
  195. package/dist/esm/cart/hooks/basic/useRemoveCartLines.d.ts.map +1 -0
  196. package/dist/esm/cart/hooks/basic/useRemoveCartLines.js +2 -0
  197. package/dist/esm/cart/hooks/basic/useRemoveCartLines.js.map +7 -0
  198. package/dist/esm/cart/hooks/basic/useUpdateCartAttributes.d.ts +8 -0
  199. package/dist/esm/cart/hooks/basic/useUpdateCartAttributes.d.ts.map +1 -0
  200. package/dist/esm/cart/hooks/basic/useUpdateCartAttributes.js +2 -0
  201. package/dist/esm/cart/hooks/basic/useUpdateCartAttributes.js.map +7 -0
  202. package/dist/esm/cart/hooks/basic/useUpdateCartBuyerIdentity.d.ts +8 -0
  203. package/dist/esm/cart/hooks/basic/useUpdateCartBuyerIdentity.d.ts.map +1 -0
  204. package/dist/esm/cart/hooks/basic/useUpdateCartBuyerIdentity.js +2 -0
  205. package/dist/esm/cart/hooks/basic/useUpdateCartBuyerIdentity.js.map +7 -0
  206. package/dist/esm/cart/hooks/basic/useUpdateCartLines.d.ts +8 -0
  207. package/dist/esm/cart/hooks/basic/useUpdateCartLines.d.ts.map +1 -0
  208. package/dist/esm/cart/hooks/basic/useUpdateCartLines.js +2 -0
  209. package/dist/esm/cart/hooks/basic/useUpdateCartLines.js.map +7 -0
  210. package/dist/esm/cart/hooks/feature/useCalcAutoFreeGift.d.ts +10 -0
  211. package/dist/esm/cart/hooks/feature/useCalcAutoFreeGift.d.ts.map +1 -0
  212. package/dist/esm/cart/hooks/feature/useCalcAutoFreeGift.js +2 -0
  213. package/dist/esm/cart/hooks/feature/useCalcAutoFreeGift.js.map +7 -0
  214. package/dist/esm/cart/hooks/feature/useCalcOrderDiscount.d.ts +21 -0
  215. package/dist/esm/cart/hooks/feature/useCalcOrderDiscount.d.ts.map +1 -0
  216. package/dist/esm/cart/hooks/feature/useCalcOrderDiscount.js +2 -0
  217. package/dist/esm/cart/hooks/feature/useCalcOrderDiscount.js.map +7 -0
  218. package/dist/esm/cart/hooks/feature/useCartAttributes.d.ts +10 -0
  219. package/dist/esm/cart/hooks/feature/useCartAttributes.d.ts.map +1 -0
  220. package/dist/esm/cart/hooks/feature/useCartAttributes.js +2 -0
  221. package/dist/esm/cart/hooks/feature/useCartAttributes.js.map +7 -0
  222. package/dist/esm/cart/hooks/feature/useCartItemQuantityLimit.d.ts +19 -0
  223. package/dist/esm/cart/hooks/feature/useCartItemQuantityLimit.d.ts.map +1 -0
  224. package/dist/esm/cart/hooks/feature/useCartItemQuantityLimit.js +2 -0
  225. package/dist/esm/cart/hooks/feature/useCartItemQuantityLimit.js.map +7 -0
  226. package/dist/esm/cart/hooks/feature/useScriptAutoFreeGift.d.ts +37 -0
  227. package/dist/esm/cart/hooks/feature/useScriptAutoFreeGift.d.ts.map +1 -0
  228. package/dist/esm/cart/hooks/feature/useScriptAutoFreeGift.js +2 -0
  229. package/dist/esm/cart/hooks/feature/useScriptAutoFreeGift.js.map +7 -0
  230. package/dist/esm/cart/hooks/feature/useUpdateLineCodeAmountAttributes.d.ts +9 -0
  231. package/dist/esm/cart/hooks/feature/useUpdateLineCodeAmountAttributes.d.ts.map +1 -0
  232. package/dist/esm/cart/hooks/feature/useUpdateLineCodeAmountAttributes.js +2 -0
  233. package/dist/esm/cart/hooks/feature/useUpdateLineCodeAmountAttributes.js.map +7 -0
  234. package/dist/esm/cart/track/fbq.d.ts +2 -9
  235. package/dist/esm/cart/track/fbq.d.ts.map +1 -1
  236. package/dist/esm/cart/track/fbq.js +1 -1
  237. package/dist/esm/cart/track/fbq.js.map +3 -3
  238. package/dist/esm/cart/track/gtm.d.ts +26 -0
  239. package/dist/esm/cart/track/gtm.d.ts.map +1 -0
  240. package/dist/esm/cart/track/gtm.js +2 -0
  241. package/dist/esm/cart/track/gtm.js.map +7 -0
  242. package/dist/esm/cart/types/autoFreeGift.d.ts +135 -0
  243. package/dist/esm/cart/types/autoFreeGift.d.ts.map +1 -0
  244. package/dist/esm/cart/types/autoFreeGift.js +2 -0
  245. package/dist/esm/cart/types/autoFreeGift.js.map +7 -0
  246. package/dist/esm/cart/types/index.d.ts +1 -0
  247. package/dist/esm/cart/types/index.d.ts.map +1 -1
  248. package/dist/esm/cart/types/orderDiscount.d.ts +35 -0
  249. package/dist/esm/cart/types/orderDiscount.d.ts.map +1 -0
  250. package/dist/esm/cart/types/orderDiscount.js +2 -0
  251. package/dist/esm/cart/types/orderDiscount.js.map +7 -0
  252. package/dist/esm/cart/types/priceDiscount.d.ts +20 -0
  253. package/dist/esm/cart/types/priceDiscount.d.ts.map +1 -0
  254. package/dist/esm/cart/types/priceDiscount.js +2 -0
  255. package/dist/esm/cart/types/priceDiscount.js.map +7 -0
  256. package/dist/esm/cart/utils/autoFreeGift.d.ts +21 -0
  257. package/dist/esm/cart/utils/autoFreeGift.d.ts.map +1 -0
  258. package/dist/esm/cart/utils/autoFreeGift.js +2 -0
  259. package/dist/esm/cart/utils/autoFreeGift.js.map +7 -0
  260. package/dist/esm/cart/utils/index.d.ts +1 -0
  261. package/dist/esm/cart/utils/index.d.ts.map +1 -1
  262. package/dist/esm/cart/utils/index.js +1 -1
  263. package/dist/esm/cart/utils/index.js.map +3 -3
  264. package/dist/esm/constants.d.ts +2 -0
  265. package/dist/esm/constants.d.ts.map +1 -0
  266. package/dist/esm/constants.js +2 -0
  267. package/dist/esm/constants.js.map +7 -0
  268. package/dist/esm/context/index.js.map +1 -1
  269. package/dist/esm/index.d.ts +1 -0
  270. package/dist/esm/index.d.ts.map +1 -1
  271. package/dist/esm/index.js +1 -1
  272. package/dist/esm/index.js.map +2 -2
  273. package/dist/esm/registration/hooks/index.d.ts +1 -0
  274. package/dist/esm/registration/hooks/index.d.ts.map +1 -1
  275. package/dist/esm/registration/hooks/index.js +1 -1
  276. package/dist/esm/registration/hooks/index.js.map +2 -2
  277. package/dist/esm/registration/hooks/useEmailValidation.d.ts.map +1 -1
  278. package/dist/esm/registration/hooks/useEmailValidation.js +1 -1
  279. package/dist/esm/registration/hooks/useEmailValidation.js.map +3 -3
  280. package/dist/esm/registration/hooks/useSendEmailValidation.d.ts.map +1 -1
  281. package/dist/esm/registration/hooks/useSendEmailValidation.js +1 -1
  282. package/dist/esm/registration/hooks/useSendEmailValidation.js.map +2 -2
  283. package/dist/esm/registration/hooks/useSubscriptions.d.ts +15 -0
  284. package/dist/esm/registration/hooks/useSubscriptions.d.ts.map +1 -0
  285. package/dist/esm/registration/hooks/useSubscriptions.js +2 -0
  286. package/dist/esm/registration/hooks/useSubscriptions.js.map +7 -0
  287. package/dist/esm/registration/index.d.ts +0 -1
  288. package/dist/esm/registration/index.d.ts.map +1 -1
  289. package/dist/esm/registration/index.js +1 -1
  290. package/dist/esm/registration/index.js.map +2 -2
  291. package/dist/esm/shopify/fetchers/index.d.ts +2 -0
  292. package/dist/esm/shopify/fetchers/index.d.ts.map +1 -1
  293. package/dist/esm/shopify/fetchers/index.js +1 -1
  294. package/dist/esm/shopify/fetchers/index.js.map +3 -3
  295. package/dist/registration/hooks/index.d.ts +4 -0
  296. package/dist/registration/hooks/index.d.ts.map +1 -0
  297. package/dist/registration/hooks/useEmailValidation.d.ts +17 -0
  298. package/dist/registration/hooks/useEmailValidation.d.ts.map +1 -0
  299. package/dist/registration/hooks/useSendEmailValidation.d.ts +9 -0
  300. package/dist/registration/hooks/useSendEmailValidation.d.ts.map +1 -0
  301. package/dist/registration/hooks/useSubscriptions.d.ts +15 -0
  302. package/dist/registration/hooks/useSubscriptions.d.ts.map +1 -0
  303. package/dist/registration/index.d.ts +2 -0
  304. package/dist/registration/index.d.ts.map +1 -0
  305. package/dist/utils/classnames.d.ts +3 -0
  306. package/dist/utils/classnames.d.ts.map +1 -0
  307. package/dist/utils/fetcher/fetchResponse.d.ts +14 -0
  308. package/dist/utils/fetcher/fetchResponse.d.ts.map +1 -0
  309. package/dist/utils/fetcher/fetcher.d.ts +2 -0
  310. package/dist/utils/fetcher/fetcher.d.ts.map +1 -0
  311. package/dist/utils/fetcher/index.d.ts +3 -0
  312. package/dist/utils/fetcher/index.d.ts.map +1 -0
  313. package/dist/utils/index.d.ts +5 -0
  314. package/dist/utils/index.d.ts.map +1 -0
  315. package/dist/utils/track.d.ts +16 -0
  316. package/dist/utils/track.d.ts.map +1 -0
  317. package/dist/utils/useCountDown.d.ts +6 -0
  318. package/dist/utils/useCountDown.d.ts.map +1 -0
  319. package/esbuild-esm.mjs +1 -0
  320. package/jest.config.ts +3 -0
  321. package/package.json +4 -5
  322. package/src/cart/context/index.tsx +310 -0
  323. package/src/cart/hooks/basic/useAddToCart.ts +161 -0
  324. package/src/cart/hooks/basic/useApplyCartCodes.ts +72 -0
  325. package/src/cart/hooks/basic/useBuyNow.ts +10 -7
  326. package/src/cart/hooks/basic/useCreateCart.ts +32 -0
  327. package/src/cart/hooks/basic/useRemoveCartCodes.ts +55 -0
  328. package/src/cart/hooks/basic/useRemoveCartLines.ts +51 -0
  329. package/src/cart/hooks/basic/useUpdateCartAttributes.ts +42 -0
  330. package/src/cart/hooks/basic/useUpdateCartBuyerIdentity.ts +34 -0
  331. package/src/cart/hooks/basic/useUpdateCartLines.ts +34 -0
  332. package/src/cart/hooks/feature/useCalcAutoFreeGift.tsx +178 -0
  333. package/src/cart/hooks/feature/useCalcOrderDiscount.tsx +127 -0
  334. package/src/cart/hooks/feature/useCartAttributes.tsx +133 -0
  335. package/src/cart/hooks/feature/useCartItemQuantityLimit.tsx +59 -0
  336. package/src/cart/hooks/feature/useScriptAutoFreeGift.tsx +256 -0
  337. package/src/cart/hooks/feature/useUpdateLineCodeAmountAttributes.tsx +184 -0
  338. package/src/cart/track/fbq.ts +4 -29
  339. package/src/cart/track/gtm.ts +159 -0
  340. package/src/cart/types/autoFreeGift.ts +169 -0
  341. package/src/cart/types/index.ts +1 -0
  342. package/src/cart/types/orderDiscount.ts +38 -0
  343. package/src/cart/types/priceDiscount.ts +21 -0
  344. package/src/cart/utils/autoFreeGift.ts +297 -0
  345. package/src/cart/utils/index.ts +13 -0
  346. package/src/constants.ts +1 -0
  347. package/src/context/index.ts +0 -1
  348. package/src/index.ts +6 -0
  349. package/src/registration/hooks/index.ts +3 -0
  350. package/src/registration/hooks/useEmailValidation.ts +28 -0
  351. package/src/registration/hooks/useSendEmailValidation.ts +21 -0
  352. package/src/registration/hooks/useSubscriptions.ts +36 -0
  353. package/src/registration/index.ts +2 -0
  354. package/src/shopify/fetchers/index.ts +2 -0
  355. package/src/utils/classnames.ts +6 -0
  356. package/src/utils/fetcher/fetchResponse.ts +33 -0
  357. package/src/utils/fetcher/fetcher.ts +38 -0
  358. package/src/utils/fetcher/index.ts +2 -0
  359. package/src/utils/index.ts +4 -0
  360. package/src/utils/track.ts +57 -0
  361. package/src/utils/useCountDown.tsx +41 -0
  362. package/tsconfig.json +4 -0
  363. package/tsup.config.ts +10 -8
  364. package/dist/cjs/registration/context/index.d.ts +0 -24
  365. package/dist/cjs/registration/context/index.d.ts.map +0 -1
  366. package/dist/cjs/registration/context/index.js +0 -2
  367. package/dist/cjs/registration/context/index.js.map +0 -7
  368. package/dist/esm/registration/context/index.d.ts +0 -24
  369. package/dist/esm/registration/context/index.d.ts.map +0 -1
  370. package/dist/esm/registration/context/index.js +0 -2
  371. package/dist/esm/registration/context/index.js.map +0 -7
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/cart/hooks/feature/useCalcAutoFreeGift.tsx"],
4
+ "sourcesContent": ["import { useMemo, useRef } from 'react'\nimport { FunctionGiftResult, FormattedGift, CartLineInput, AutoFreeGiftConfig } from '../../types/autoFreeGift'\nimport { preCheck } from '../../utils/autoFreeGift'\nimport { getMatchedMainProductSubTotal } from '../../utils/autoFreeGift'\nimport { CUSTOMER_ATTRIBUTE_KEY } from '../../../shopify/utils/const'\nimport { btoaID } from '../../../shopify/utils/helper'\nimport { getProductsByHandles } from '../../../shopify/fetchers'\nimport useSWR from 'swr'\nimport { useHeadlessContext } from '../../../context'\n\n/**\n * [\u8BA1\u7B97\u578B Hook]\n * \u6839\u636E\u8D2D\u7269\u8F66\u3001\u6D3B\u52A8\u914D\u7F6E\u548C\u7528\u6237\u4FE1\u606F\uFF0C\u8BA1\u7B97\u51FA\u5E94\u5F97\u7684\u8D60\u54C1\u548C\u4E0B\u4E00\u4E2A\u76EE\u6807\u3002\n * \u6B64 Hook \u4E0D\u4EA7\u751F\u4EFB\u4F55\u526F\u4F5C\u7528\u3002\n * \u4F7F\u7528\u793A\u4F8B\uFF1A\n * const { qualifyingGift, nextTierGoal, activeCampaign, isLoading } = useCalcAutoFreeGift(cart, autoFreeGiftConfig);\n */\nexport const useCalcAutoFreeGift = (\n cart: any,\n autoFreeGiftConfig: AutoFreeGiftConfig,\n customer: any\n): FunctionGiftResult => {\n const tags = useMemo(() => customer?.tags || [], [customer?.tags])\n const isCustomerLoading = useMemo(() => (!customer ? true : false), [customer])\n const dealsType: string = '' // \u53EF\u4ECEURL\u6216Context\u83B7\u53D6\n const { storefrontToken, storeDomain } = useHeadlessContext()\n\n // \u4F7F\u7528 useRef \u7F13\u5B58 giftProductsResult\uFF0C\u786E\u4FDD\u53EA\u6267\u884C\u4E00\u6B21\n const giftProductsCache = useRef<{\n data: any[] | null\n giftHandles: string[]\n } | null>(null)\n\n // 1. \u627E\u5230\u5F53\u524D\u751F\u6548\u7684\u6D3B\u52A8\u548C\u7528\u4E8E\u8BA1\u7B97\u7684\u5B50\u603B\u4EF7\n const { activeCampaign, subtotal } = useMemo(() => {\n // \u904D\u5386\u6240\u6709\u6D3B\u52A8\u914D\u7F6E\n for (const campaign of autoFreeGiftConfig) {\n const { rule_conditions = [], rule_result } = campaign\n const { spend_get_reward } = rule_result || {}\n\n // \u524D\u7F6E\u68C0\u67E5\uFF0C\u5224\u65AD\u7528\u6237\u548C\u73AF\u5883\u662F\u5426\u6EE1\u8DB3\u6D3B\u52A8\u6761\u4EF6\n const isPreCheckPassed = preCheck(rule_conditions, tags, dealsType ? [dealsType] : [])\n\n if (isPreCheckPassed && spend_get_reward) {\n // \u8BA1\u7B97\u53C2\u4E0E\u6D3B\u52A8\u7684\u4E3B\u5546\u54C1\u7684\u603B\u4EF7\n const matchedSubtotal = getMatchedMainProductSubTotal(\n cart,\n spend_get_reward.main_product?.variant_list?.map((v: any) => v.variant_id) || [],\n {\n spend_money_type: spend_get_reward.main_product?.spend_money_type || 1,\n variant_id_list: spend_get_reward.main_product?.variant_list?.map((v: any) => v.variant_id) || [],\n all_store_variant: spend_get_reward.main_product?.all_store_variant || false,\n }\n )\n\n // \u5982\u679C\u6709\u4E3B\u5546\u54C1\u5728\u8D2D\u7269\u8F66\u4E2D\uFF0C\u5219\u6B64\u6D3B\u52A8\u4E3A\u5F53\u524D\u751F\u6548\u7684\u6D3B\u52A8\n if (matchedSubtotal > 0) {\n return { activeCampaign: campaign, subtotal: matchedSubtotal }\n }\n }\n }\n // \u6CA1\u6709\u627E\u5230\u751F\u6548\u7684\u6D3B\u52A8\n return { activeCampaign: null, subtotal: 0 }\n }, [autoFreeGiftConfig, cart, tags, dealsType])\n\n // 2. \u6839\u636E\u5B50\u603B\u4EF7\uFF0C\u8BA1\u7B97\u5E94\u5F97\u8D60\u54C1\u548C\u4E0B\u4E00\u4E2A\u76EE\u6807\n const { qualifyingGift, nextTierGoal } = useMemo(() => {\n if (!activeCampaign || !activeCampaign.rule_result?.spend_get_reward?.gift_product) {\n return { qualifyingGift: null, nextTierGoal: null }\n }\n\n const giftTiers = activeCampaign.rule_result.spend_get_reward.gift_product\n\n // a. \u627E\u5230\u5F53\u524D\u6EE1\u8DB3\u6761\u4EF6\u7684\u6700\u9AD8\u9636\u68AF (findLast)\n const qualifyingTier = giftTiers.findLast(tier => subtotal >= Number(tier.spend_sum_money))\n\n // b. \u627E\u5230\u4E0B\u4E00\u4E2A\u76EE\u6807\u9636\u68AF (\u7B2C\u4E00\u4E2A\u95E8\u69DB\u6BD4\u5F53\u524Dsubtotal\u9AD8\u7684)\n const nextGoal = giftTiers.find(tier => subtotal < Number(tier.spend_sum_money))\n\n if (!qualifyingTier) {\n return { qualifyingGift: null, nextTierGoal: nextGoal || null }\n }\n\n // c. \u5C06\u5E94\u5F97\u7684\u8D60\u54C1\u9636\u68AF\u683C\u5F0F\u5316\u4E3A\u5F85\u6DFB\u52A0\u8D2D\u7269\u8F66\u7684\u7ED3\u6784\n const formattedGift: FormattedGift = {\n tier: qualifyingTier,\n itemsToAdd: qualifyingTier.reward_list\n ?.map(reward => {\n const giftProduct = reward?.variant_list?.[0]\n if (!giftProduct) return null\n return {\n variant: {\n id: btoaID(giftProduct.variant_id),\n handle: giftProduct.handle,\n sku: giftProduct.sku,\n },\n quantity: reward?.get_unit || 1,\n attributes: [\n {\n key: CUSTOMER_ATTRIBUTE_KEY,\n value: JSON.stringify({\n is_gift: true,\n rule_id: activeCampaign.rule_id,\n spend_sum_money: qualifyingTier.spend_sum_money,\n }),\n },\n ],\n }\n })\n .filter((item): item is CartLineInput => item !== null),\n }\n\n return { qualifyingGift: formattedGift, nextTierGoal: nextGoal || null }\n }, [activeCampaign, subtotal])\n\n const giftHandles = useMemo(() => {\n const giftVariant = autoFreeGiftConfig\n .map(item =>\n item.rule_result?.spend_get_reward?.gift_product\n ?.map(v => v.reward_list.map(reward => reward.variant_list.map(variant => variant.handle)))\n .flat()\n )\n .flat()\n return giftVariant.flat(2)\n }, [autoFreeGiftConfig])\n\n // \u68C0\u67E5\u662F\u5426\u9700\u8981\u91CD\u65B0\u83B7\u53D6\u6570\u636E\n const shouldFetch = useMemo(() => {\n if (!giftHandles.length) return false\n\n // \u5982\u679C\u7F13\u5B58\u5B58\u5728\u4E14 handles \u76F8\u540C\uFF0C\u76F4\u63A5\u4F7F\u7528\u7F13\u5B58\n if (\n giftProductsCache.current &&\n JSON.stringify(giftProductsCache.current.giftHandles) === JSON.stringify(giftHandles)\n ) {\n return false\n }\n\n return true\n }, [giftHandles])\n\n const { data: giftProductsResult } = useSWR(shouldFetch ? giftHandles : null, async () => {\n const res = await getProductsByHandles({\n options: {\n handles: giftHandles,\n },\n config: {\n storefrontToken: storefrontToken,\n storeDomain: storeDomain,\n },\n })\n const result = Array.isArray(res) ? res : []\n\n // \u7F13\u5B58\u7ED3\u679C\n giftProductsCache.current = {\n data: result,\n giftHandles: [...giftHandles],\n }\n\n return result\n })\n\n // \u4F7F\u7528\u7F13\u5B58\u7684\u6570\u636E\u6216\u65B0\u83B7\u53D6\u7684\u6570\u636E\n const finalGiftProductsResult = useMemo(() => {\n if (giftProductsCache.current && !shouldFetch) {\n return giftProductsCache.current.data || undefined\n }\n return giftProductsResult\n }, [giftProductsResult, shouldFetch])\n\n return {\n qualifyingGift,\n nextTierGoal,\n activeCampaign,\n isLoading: isCustomerLoading,\n giftProductsResult: finalGiftProductsResult,\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["useCalcAutoFreeGift_exports", "__export", "useCalcAutoFreeGift", "__toCommonJS", "import_react", "import_autoFreeGift", "import_const", "import_helper", "import_fetchers", "import_swr", "import_context", "cart", "autoFreeGiftConfig", "customer", "tags", "isCustomerLoading", "dealsType", "storefrontToken", "storeDomain", "giftProductsCache", "activeCampaign", "subtotal", "campaign", "rule_conditions", "rule_result", "spend_get_reward", "matchedSubtotal", "qualifyingGift", "nextTierGoal", "giftTiers", "qualifyingTier", "tier", "nextGoal", "reward", "giftProduct", "item", "giftHandles", "v", "variant", "shouldFetch", "giftProductsResult", "useSWR", "res", "result", "finalGiftProductsResult"]
7
+ }
@@ -0,0 +1,21 @@
1
+ import { OrderDiscountConfig, TieredDiscount } from '../../types/orderDiscount';
2
+ export interface OrderDiscountResult {
3
+ qualifyingDiscount: TieredDiscount | null;
4
+ nextTierGoal: TieredDiscount | null;
5
+ activeCampaign: OrderDiscountConfig | null;
6
+ discountAmount: number;
7
+ cartTotalForDiscount: number;
8
+ isLoading: boolean;
9
+ }
10
+ /**
11
+ * [计算型 Hook]
12
+ * 根据购物车、活动配置和用户信息,计算出应得的订单折扣和下一个目标。
13
+ * 此 Hook 不产生任何副作用。
14
+ * 使用示例:
15
+ * const { qualifyingDiscount, nextTierGoal, activeCampaign, discountAmount, isLoading } = useCalcOrderDiscount(cart, orderDiscountConfig);
16
+ * @param cart - 购物车
17
+ * @param orderDiscountConfig - 订单折扣配置
18
+ * @returns { OrderDiscountResult }
19
+ */
20
+ export declare const useCalcOrderDiscount: (cart: any, orderDiscountConfig: OrderDiscountConfig[], customer: any) => OrderDiscountResult;
21
+ //# sourceMappingURL=useCalcOrderDiscount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCalcOrderDiscount.d.ts","sourceRoot":"","sources":["../../../../../src/cart/hooks/feature/useCalcOrderDiscount.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAA+B,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAG5G,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,EAAE,cAAc,GAAG,IAAI,CAAA;IACzC,YAAY,EAAE,cAAc,GAAG,IAAI,CAAA;IACnC,cAAc,EAAE,mBAAmB,GAAG,IAAI,CAAA;IAC1C,cAAc,EAAE,MAAM,CAAA;IACtB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,SAAS,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,GAAG,EACT,qBAAqB,mBAAmB,EAAE,EAC1C,UAAU,GAAG,KACZ,mBAiGF,CAAA"}
@@ -0,0 +1,2 @@
1
+ "use strict";var D=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var O=(n,t)=>{for(var e in t)D(n,e,{get:t[e],enumerable:!0})},h=(n,t,e,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of P(t))!x.call(n,a)&&a!==e&&D(n,a,{get:()=>t[a],enumerable:!(c=E(t,a))||c.enumerable});return n};var A=n=>h(D({},"__esModule",{value:!0}),n);var k={};O(k,{useCalcOrderDiscount:()=>G});module.exports=A(k);var _=require("react"),T=require("../../utils/autoFreeGift"),C=require("../../utils/autoFreeGift"),u=require("../../types/orderDiscount");const G=(n,t,e)=>{const c=(0,_.useMemo)(()=>e?.tags||[],[e?.tags]),a=(0,_.useMemo)(()=>!e,[e]),f="",{activeCampaign:l,subtotal:s}=(0,_.useMemo)(()=>{for(const d of t){const{rule_conditions:o=[],result_detail:m}=d,{main_product:i,order_discount_conf:r}=m||{};if((0,T.preCheck)(o,c,f?[f]:[])&&i&&r){const g=(0,C.getMatchedMainProductSubTotal)(n,i?.variant_list?.map(p=>p.variant_id)||[],{spend_money_type:r.base_price===u.BasePriceType.MIN_DISCOUNTED_PRICE?2:1,variant_id_list:i?.variant_list?.map(p=>p.variant_id)||[],all_store_variant:i?.all_store_variant||!1});if(g>0)return{activeCampaign:d,subtotal:g}}}return{activeCampaign:null,subtotal:0}},[t,n,c,f]),{qualifyingDiscount:b,nextTierGoal:y,discountAmount:v}=(0,_.useMemo)(()=>{if(!l||!l.result_detail?.order_discount_conf?.tiered_discounts)return{qualifyingDiscount:null,nextTierGoal:null,discountAmount:0};const d=l.result_detail.order_discount_conf.tiered_discounts,o=d.findLast(r=>s>=Number(r.amount)),m=d.find(r=>s<Number(r.amount));if(!o)return{qualifyingDiscount:null,nextTierGoal:m||null,discountAmount:0};let i=0;switch(o.discount_type){case u.DiscountType.PERCENTAGE:i=s*o.discount/100;break;case u.DiscountType.FIXED_AMOUNT:i=o.discount;break;case u.DiscountType.REDUCE_PRICE:i=Math.min(s,o.discount);break;default:i=0}return{qualifyingDiscount:o,nextTierGoal:m||null,discountAmount:i}},[l,s]);return{qualifyingDiscount:b,nextTierGoal:y,activeCampaign:l,discountAmount:v,cartTotalForDiscount:s,isLoading:a}};
2
+ //# sourceMappingURL=useCalcOrderDiscount.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/cart/hooks/feature/useCalcOrderDiscount.tsx"],
4
+ "sourcesContent": ["import { useMemo } from 'react'\nimport { preCheck } from '../../utils/autoFreeGift'\nimport { getMatchedMainProductSubTotal } from '../../utils/autoFreeGift'\nimport { OrderDiscountConfig, DiscountType, BasePriceType, TieredDiscount } from '../../types/orderDiscount'\n\n// \u8FD4\u56DE\u7ED3\u679C\u7C7B\u578B\nexport interface OrderDiscountResult {\n qualifyingDiscount: TieredDiscount | null // \u5F53\u524D\u5E94\u5F97\u7684\u6298\u6263\n nextTierGoal: TieredDiscount | null // \u4E0B\u4E00\u4E2A\u76EE\u6807\u9636\u68AF\n activeCampaign: OrderDiscountConfig | null // \u5F53\u524D\u751F\u6548\u7684\u6D3B\u52A8\u914D\u7F6E\n discountAmount: number // \u6298\u6263\u91D1\u989D\n cartTotalForDiscount: number // \u7528\u4E8E\u8BA1\u7B97\u6298\u6263\u7684\u8D2D\u7269\u8F66\u603B\u989D\n isLoading: boolean // \u4F9D\u8D56\u6570\u636E\u662F\u5426\u52A0\u8F7D\u4E2D\n}\n\n/**\n * [\u8BA1\u7B97\u578B Hook]\n * \u6839\u636E\u8D2D\u7269\u8F66\u3001\u6D3B\u52A8\u914D\u7F6E\u548C\u7528\u6237\u4FE1\u606F\uFF0C\u8BA1\u7B97\u51FA\u5E94\u5F97\u7684\u8BA2\u5355\u6298\u6263\u548C\u4E0B\u4E00\u4E2A\u76EE\u6807\u3002\n * \u6B64 Hook \u4E0D\u4EA7\u751F\u4EFB\u4F55\u526F\u4F5C\u7528\u3002\n * \u4F7F\u7528\u793A\u4F8B\uFF1A\n * const { qualifyingDiscount, nextTierGoal, activeCampaign, discountAmount, isLoading } = useCalcOrderDiscount(cart, orderDiscountConfig);\n * @param cart - \u8D2D\u7269\u8F66\n * @param orderDiscountConfig - \u8BA2\u5355\u6298\u6263\u914D\u7F6E\n * @returns { OrderDiscountResult }\n */\nexport const useCalcOrderDiscount = (\n cart: any,\n orderDiscountConfig: OrderDiscountConfig[],\n customer: any\n): OrderDiscountResult => {\n const tags = useMemo(() => customer?.tags || [], [customer?.tags])\n const isCustomerLoading = useMemo(() => (!customer ? true : false), [customer])\n const dealsType: string = '' // \u53EF\u4ECEURL\u6216Context\u83B7\u53D6\n\n // 1. \u627E\u5230\u5F53\u524D\u751F\u6548\u7684\u6D3B\u52A8\u548C\u7528\u4E8E\u8BA1\u7B97\u7684\u5B50\u603B\u4EF7\n const { activeCampaign, subtotal } = useMemo(() => {\n // \u904D\u5386\u6240\u6709\u6D3B\u52A8\u914D\u7F6E\n for (const campaign of orderDiscountConfig) {\n const { rule_conditions = [], result_detail } = campaign\n const { main_product, order_discount_conf } = result_detail || {}\n\n // \u524D\u7F6E\u68C0\u67E5\uFF0C\u5224\u65AD\u7528\u6237\u548C\u73AF\u5883\u662F\u5426\u6EE1\u8DB3\u6D3B\u52A8\u6761\u4EF6\n const isPreCheckPassed = preCheck(rule_conditions, tags, dealsType ? [dealsType] : [])\n\n if (isPreCheckPassed && main_product && order_discount_conf) {\n // \u8BA1\u7B97\u53C2\u4E0E\u6D3B\u52A8\u7684\u4E3B\u5546\u54C1\u7684\u603B\u4EF7\n const matchedSubtotal = getMatchedMainProductSubTotal(\n cart,\n main_product?.variant_list?.map(v => v.variant_id) || [],\n {\n spend_money_type: order_discount_conf.base_price === BasePriceType.MIN_DISCOUNTED_PRICE ? 2 : 1, // \u6839\u636E\u57FA\u7840\u4EF7\u683C\u7C7B\u578B\u8BBE\u7F6E\n variant_id_list: main_product?.variant_list?.map(v => v.variant_id) || [],\n all_store_variant: main_product?.all_store_variant || false,\n }\n )\n\n // \u5982\u679C\u6709\u4E3B\u5546\u54C1\u5728\u8D2D\u7269\u8F66\u4E2D\uFF0C\u5219\u6B64\u6D3B\u52A8\u4E3A\u5F53\u524D\u751F\u6548\u7684\u6D3B\u52A8\n if (matchedSubtotal > 0) {\n return { activeCampaign: campaign, subtotal: matchedSubtotal }\n }\n }\n }\n // \u6CA1\u6709\u627E\u5230\u751F\u6548\u7684\u6D3B\u52A8\n return { activeCampaign: null, subtotal: 0 }\n }, [orderDiscountConfig, cart, tags, dealsType])\n\n // 2. \u6839\u636E\u5B50\u603B\u4EF7\uFF0C\u8BA1\u7B97\u5E94\u5F97\u6298\u6263\u548C\u4E0B\u4E00\u4E2A\u76EE\u6807\n const { qualifyingDiscount, nextTierGoal, discountAmount } = useMemo(() => {\n if (!activeCampaign || !activeCampaign.result_detail?.order_discount_conf?.tiered_discounts) {\n return {\n qualifyingDiscount: null,\n nextTierGoal: null,\n discountAmount: 0,\n }\n }\n\n const tieredDiscounts = activeCampaign.result_detail.order_discount_conf.tiered_discounts\n\n // a. \u627E\u5230\u5F53\u524D\u6EE1\u8DB3\u6761\u4EF6\u7684\u6700\u9AD8\u9636\u68AF (findLast)\n const qualifyingTier = tieredDiscounts.findLast(tier => subtotal >= Number(tier.amount))\n\n // b. \u627E\u5230\u4E0B\u4E00\u4E2A\u76EE\u6807\u9636\u68AF (\u7B2C\u4E00\u4E2A\u95E8\u69DB\u6BD4\u5F53\u524Dsubtotal\u9AD8\u7684)\n const nextGoal = tieredDiscounts.find(tier => subtotal < Number(tier.amount))\n\n if (!qualifyingTier) {\n return {\n qualifyingDiscount: null,\n nextTierGoal: nextGoal || null,\n discountAmount: 0,\n }\n }\n\n // c. \u8BA1\u7B97\u6298\u6263\u91D1\u989D\n let calculatedDiscount = 0\n switch (qualifyingTier.discount_type) {\n case DiscountType.PERCENTAGE:\n // \u767E\u5206\u6BD4\u6298\u6263\n calculatedDiscount = (subtotal * qualifyingTier.discount) / 100\n break\n case DiscountType.FIXED_AMOUNT:\n // \u56FA\u5B9A\u91D1\u989D\u6298\u6263\n calculatedDiscount = qualifyingTier.discount\n break\n case DiscountType.REDUCE_PRICE:\n // \u964D\u4F4E\u6307\u5B9A\u4EF7\u683C\n calculatedDiscount = Math.min(subtotal, qualifyingTier.discount)\n break\n default:\n calculatedDiscount = 0\n }\n\n return {\n qualifyingDiscount: qualifyingTier,\n nextTierGoal: nextGoal || null,\n discountAmount: calculatedDiscount,\n }\n }, [activeCampaign, subtotal])\n\n return {\n qualifyingDiscount,\n nextTierGoal,\n activeCampaign,\n discountAmount,\n cartTotalForDiscount: subtotal,\n isLoading: isCustomerLoading,\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAwB,iBACxBC,EAAyB,oCACzBA,EAA8C,oCAC9CC,EAAiF,qCAsB1E,MAAMJ,EAAuB,CAClCK,EACAC,EACAC,IACwB,CACxB,MAAMC,KAAO,WAAQ,IAAMD,GAAU,MAAQ,CAAC,EAAG,CAACA,GAAU,IAAI,CAAC,EAC3DE,KAAoB,WAAQ,IAAQ,CAAAF,EAA0B,CAACA,CAAQ,CAAC,EACxEG,EAAoB,GAGpB,CAAE,eAAAC,EAAgB,SAAAC,CAAS,KAAI,WAAQ,IAAM,CAEjD,UAAWC,KAAYP,EAAqB,CAC1C,KAAM,CAAE,gBAAAQ,EAAkB,CAAC,EAAG,cAAAC,CAAc,EAAIF,EAC1C,CAAE,aAAAG,EAAc,oBAAAC,CAAoB,EAAIF,GAAiB,CAAC,EAKhE,MAFyB,YAASD,EAAiBN,EAAME,EAAY,CAACA,CAAS,EAAI,CAAC,CAAC,GAE7DM,GAAgBC,EAAqB,CAE3D,MAAMC,KAAkB,iCACtBb,EACAW,GAAc,cAAc,IAAIG,GAAKA,EAAE,UAAU,GAAK,CAAC,EACvD,CACE,iBAAkBF,EAAoB,aAAe,gBAAc,qBAAuB,EAAI,EAC9F,gBAAiBD,GAAc,cAAc,IAAIG,GAAKA,EAAE,UAAU,GAAK,CAAC,EACxE,kBAAmBH,GAAc,mBAAqB,EACxD,CACF,EAGA,GAAIE,EAAkB,EACpB,MAAO,CAAE,eAAgBL,EAAU,SAAUK,CAAgB,CAEjE,CACF,CAEA,MAAO,CAAE,eAAgB,KAAM,SAAU,CAAE,CAC7C,EAAG,CAACZ,EAAqBD,EAAMG,EAAME,CAAS,CAAC,EAGzC,CAAE,mBAAAU,EAAoB,aAAAC,EAAc,eAAAC,CAAe,KAAI,WAAQ,IAAM,CACzE,GAAI,CAACX,GAAkB,CAACA,EAAe,eAAe,qBAAqB,iBACzE,MAAO,CACL,mBAAoB,KACpB,aAAc,KACd,eAAgB,CAClB,EAGF,MAAMY,EAAkBZ,EAAe,cAAc,oBAAoB,iBAGnEa,EAAiBD,EAAgB,SAASE,GAAQb,GAAY,OAAOa,EAAK,MAAM,CAAC,EAGjFC,EAAWH,EAAgB,KAAKE,GAAQb,EAAW,OAAOa,EAAK,MAAM,CAAC,EAE5E,GAAI,CAACD,EACH,MAAO,CACL,mBAAoB,KACpB,aAAcE,GAAY,KAC1B,eAAgB,CAClB,EAIF,IAAIC,EAAqB,EACzB,OAAQH,EAAe,cAAe,CACpC,KAAK,eAAa,WAEhBG,EAAsBf,EAAWY,EAAe,SAAY,IAC5D,MACF,KAAK,eAAa,aAEhBG,EAAqBH,EAAe,SACpC,MACF,KAAK,eAAa,aAEhBG,EAAqB,KAAK,IAAIf,EAAUY,EAAe,QAAQ,EAC/D,MACF,QACEG,EAAqB,CACzB,CAEA,MAAO,CACL,mBAAoBH,EACpB,aAAcE,GAAY,KAC1B,eAAgBC,CAClB,CACF,EAAG,CAAChB,EAAgBC,CAAQ,CAAC,EAE7B,MAAO,CACL,mBAAAQ,EACA,aAAAC,EACA,eAAAV,EACA,eAAAW,EACA,qBAAsBV,EACtB,UAAWH,CACb,CACF",
6
+ "names": ["useCalcOrderDiscount_exports", "__export", "useCalcOrderDiscount", "__toCommonJS", "import_react", "import_autoFreeGift", "import_orderDiscount", "cart", "orderDiscountConfig", "customer", "tags", "isCustomerLoading", "dealsType", "activeCampaign", "subtotal", "campaign", "rule_conditions", "result_detail", "main_product", "order_discount_conf", "matchedSubtotal", "v", "qualifyingDiscount", "nextTierGoal", "discountAmount", "tieredDiscounts", "qualifyingTier", "tier", "nextGoal", "calculatedDiscount"]
7
+ }
@@ -0,0 +1,10 @@
1
+ import { AttributeInput } from '../../../shopify/gql';
2
+ import { Cart } from '../../../shopify/types/cart';
3
+ export declare const useCartAttributes: ({ profile, customer, cart, }: {
4
+ profile: any;
5
+ customer: any;
6
+ cart?: Cart;
7
+ }) => {
8
+ attributes: AttributeInput[];
9
+ };
10
+ //# sourceMappingURL=useCartAttributes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCartAttributes.d.ts","sourceRoot":"","sources":["../../../../../src/cart/hooks/feature/useCartAttributes.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAGlD,eAAO,MAAM,iBAAiB,GAAI,8BAI/B;IACD,OAAO,EAAE,GAAG,CAAA;IACZ,QAAQ,EAAE,GAAG,CAAA;IACb,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ,KAAG;IAAE,UAAU,EAAE,cAAc,EAAE,CAAA;CAsHjC,CAAA"}
@@ -0,0 +1,2 @@
1
+ "use strict";var v=Object.create;var l=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var A=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty;var C=(e,t)=>{for(var r in t)l(e,r,{get:t[r],enumerable:!0})},y=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let u of w(t))!h.call(e,u)&&u!==r&&l(e,u,{get:()=>t[u],enumerable:!(o=I(t,u))||o.enumerable});return e};var b=(e,t,r)=>(r=e!=null?v(A(e)):{},y(t||!e||!e.__esModule?l(r,"default",{value:e,enumerable:!0}):r,e)),N=e=>y(l({},"__esModule",{value:!0}),e);var T={};C(T,{useCartAttributes:()=>S});module.exports=N(T);var g=b(require("js-cookie")),s=require("react"),k=b(require("decimal.js"));const S=({profile:e,customer:t,cart:r})=>{const[o,u]=(0,s.useState)("");(0,s.useEffect)(()=>{u(window.location.href)},[]);const a=(0,s.useMemo)(()=>{let n=g.default.get("userInfo");if(n){n=JSON.parse(n);let i=typeof n?.id=="string"&&n?.id.split("/");n.setId=i[i.length-1]}if(!(n||t))return"new_user_unlogin";if(t){const{orders:i={}}=t;if(i?.edges?.length===1)return"old_user_orders_once";if(i?.edges?.length>1)return"old_user_orders_twice"}return"new_user_login"},[t]),m=(0,s.useMemo)(()=>[{key:"_token",value:e?.token},{key:"_member_type",value:e?.memberType},{key:"_user_type",value:a},{key:"_is_login",value:e?.token?"true":"false"}],[e?.memberType,e?.token,a]),_=(0,s.useMemo)(()=>[r?.discountCodes&&{key:"_discounts_function_env",value:JSON.stringify({discount_code:r?.discountCodes.map(n=>n.code),user_tags:t?.tags||[]})}],[r]),p=(0,s.useMemo)(()=>[{key:"_presale",value:r?.lineItems.some(n=>n?.variant?.metafields?.presell==="presell")}],[r]),c=(0,s.useMemo)(()=>[{key:"_weight",value:r?.lineItems.reduce((n,f)=>new k.default(n).plus(f.variant.weight?.value??0).toNumber(),0)},{key:"_app_source_name",value:"dtc"}],[r]),d=(0,s.useMemo)(()=>[{key:"utm_params",value:o}],[o]);return(0,s.useMemo)(()=>({attributes:[...m,..._,...p,...c,...d].filter(n=>n?.value)}),[m,_,p,c,d])};
2
+ //# sourceMappingURL=useCartAttributes.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/cart/hooks/feature/useCartAttributes.tsx"],
4
+ "sourcesContent": ["import Cookies from 'js-cookie'\nimport { AttributeInput } from '../../../shopify/gql'\nimport { useEffect, useMemo, useState } from 'react'\nimport { Cart } from '../../../shopify/types/cart'\nimport Decimal from 'decimal.js'\n\nexport const useCartAttributes = ({\n profile,\n customer,\n cart,\n}: {\n profile: any\n customer: any\n cart?: Cart\n}): { attributes: AttributeInput[] } => {\n const [currentUrl, setCurrentUrl] = useState('')\n\n useEffect(() => {\n setCurrentUrl(window.location.href)\n }, [])\n\n const userType = useMemo(() => {\n let userInfo: any = Cookies.get('userInfo')\n if (userInfo) {\n userInfo = JSON.parse(userInfo)\n let arr = typeof userInfo?.id == 'string' && userInfo?.id.split('/')\n userInfo.setId = arr[arr.length - 1]\n }\n const customerInfo = userInfo || customer\n if (!customerInfo) {\n return 'new_user_unlogin'\n }\n if (customer) {\n const { orders = {} } = customer\n if (orders?.edges?.length === 1) {\n return 'old_user_orders_once'\n } else if (orders?.edges?.length > 1) {\n return 'old_user_orders_twice'\n }\n }\n return 'new_user_login'\n }, [customer])\n\n // \u7528\u6237\u76F8\u5173\n const memberAttributes = useMemo(() => {\n return [\n {\n key: '_token',\n value: profile?.token, //\u662F\u5426\u767B\u5F55\n },\n {\n key: '_member_type',\n value: profile?.memberType, //\uFF1A0(\u6E38\u5BA2)\uFF0C1(\u666E\u901A\u4F1A\u5458)\uFF0C2(\u4ED8\u8D39\u4F1A\u5458)\n },\n {\n key: '_user_type',\n value: userType, // n\n },\n {\n key: '_is_login',\n value: profile?.token ? 'true' : 'false',\n },\n ]\n }, [profile?.memberType, profile?.token, userType])\n\n const functionAttributes = useMemo(() => {\n return [\n cart?.discountCodes && {\n key: '_discounts_function_env',\n value: JSON.stringify({\n discount_code: cart?.discountCodes.map((item) => item.code),\n user_tags: customer?.tags || [],\n }),\n },\n ]\n }, [cart])\n\n const presellAttributes = useMemo(() => {\n return [\n {\n key: '_presale',\n value: cart?.lineItems.some(\n (item) => item?.variant?.metafields?.presell === 'presell'\n ),\n },\n ]\n }, [cart])\n\n const weightAttributes = useMemo(() => {\n return [\n {\n key: '_weight',\n value: cart?.lineItems.reduce<number>((acc, item) => {\n return new Decimal(acc)\n .plus(item.variant.weight?.value ?? 0)\n .toNumber()\n }, 0),\n },\n {\n key: '_app_source_name',\n value: 'dtc',\n },\n ]\n }, [cart])\n\n const trackingAttributes = useMemo(() => {\n return [\n {\n key: 'utm_params',\n value: currentUrl,\n },\n ]\n }, [currentUrl])\n\n return useMemo(\n () => ({\n attributes: [\n ...memberAttributes,\n ...functionAttributes,\n ...presellAttributes,\n ...weightAttributes,\n ...trackingAttributes,\n ].filter((item) => item?.value) as AttributeInput[],\n }),\n [\n memberAttributes,\n functionAttributes,\n presellAttributes,\n weightAttributes,\n trackingAttributes,\n ]\n )\n}\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAoB,wBAEpBC,EAA6C,iBAE7CC,EAAoB,yBAEb,MAAMJ,EAAoB,CAAC,CAChC,QAAAK,EACA,SAAAC,EACA,KAAAC,CACF,IAIwC,CACtC,KAAM,CAACC,EAAYC,CAAa,KAAI,YAAS,EAAE,KAE/C,aAAU,IAAM,CACdA,EAAc,OAAO,SAAS,IAAI,CACpC,EAAG,CAAC,CAAC,EAEL,MAAMC,KAAW,WAAQ,IAAM,CAC7B,IAAIC,EAAgB,EAAAC,QAAQ,IAAI,UAAU,EAC1C,GAAID,EAAU,CACZA,EAAW,KAAK,MAAMA,CAAQ,EAC9B,IAAIE,EAAM,OAAOF,GAAU,IAAM,UAAYA,GAAU,GAAG,MAAM,GAAG,EACnEA,EAAS,MAAQE,EAAIA,EAAI,OAAS,CAAC,CACrC,CAEA,GAAI,EADiBF,GAAYL,GAE/B,MAAO,mBAET,GAAIA,EAAU,CACZ,KAAM,CAAE,OAAAQ,EAAS,CAAC,CAAE,EAAIR,EACxB,GAAIQ,GAAQ,OAAO,SAAW,EAC5B,MAAO,uBACF,GAAIA,GAAQ,OAAO,OAAS,EACjC,MAAO,uBAEX,CACA,MAAO,gBACT,EAAG,CAACR,CAAQ,CAAC,EAGPS,KAAmB,WAAQ,IACxB,CACL,CACE,IAAK,SACL,MAAOV,GAAS,KAClB,EACA,CACE,IAAK,eACL,MAAOA,GAAS,UAClB,EACA,CACE,IAAK,aACL,MAAOK,CACT,EACA,CACE,IAAK,YACL,MAAOL,GAAS,MAAQ,OAAS,OACnC,CACF,EACC,CAACA,GAAS,WAAYA,GAAS,MAAOK,CAAQ,CAAC,EAE5CM,KAAqB,WAAQ,IAC1B,CACLT,GAAM,eAAiB,CACrB,IAAK,0BACL,MAAO,KAAK,UAAU,CACpB,cAAeA,GAAM,cAAc,IAAKU,GAASA,EAAK,IAAI,EAC1D,UAAWX,GAAU,MAAQ,CAAC,CAChC,CAAC,CACH,CACF,EACC,CAACC,CAAI,CAAC,EAEHW,KAAoB,WAAQ,IACzB,CACL,CACE,IAAK,WACL,MAAOX,GAAM,UAAU,KACpBU,GAASA,GAAM,SAAS,YAAY,UAAY,SACnD,CACF,CACF,EACC,CAACV,CAAI,CAAC,EAEHY,KAAmB,WAAQ,IACxB,CACL,CACE,IAAK,UACL,MAAOZ,GAAM,UAAU,OAAe,CAACa,EAAKH,IACnC,IAAI,EAAAI,QAAQD,CAAG,EACnB,KAAKH,EAAK,QAAQ,QAAQ,OAAS,CAAC,EACpC,SAAS,EACX,CAAC,CACN,EACA,CACE,IAAK,mBACL,MAAO,KACT,CACF,EACC,CAACV,CAAI,CAAC,EAEHe,KAAqB,WAAQ,IAC1B,CACL,CACE,IAAK,aACL,MAAOd,CACT,CACF,EACC,CAACA,CAAU,CAAC,EAEf,SAAO,WACL,KAAO,CACL,WAAY,CACV,GAAGO,EACH,GAAGC,EACH,GAAGE,EACH,GAAGC,EACH,GAAGG,CACL,EAAE,OAAQL,GAASA,GAAM,KAAK,CAChC,GACA,CACEF,EACAC,EACAE,EACAC,EACAG,CACF,CACF,CACF",
6
+ "names": ["useCartAttributes_exports", "__export", "useCartAttributes", "__toCommonJS", "import_js_cookie", "import_react", "import_decimal", "profile", "customer", "cart", "currentUrl", "setCurrentUrl", "userType", "userInfo", "Cookies", "arr", "orders", "memberAttributes", "functionAttributes", "item", "presellAttributes", "weightAttributes", "acc", "Decimal", "trackingAttributes"]
7
+ }
@@ -0,0 +1,19 @@
1
+ import { LineItem, Cart } from '../../../shopify/types/cart';
2
+ export declare const useCartItemQuantityLimit: ({ cart, cartItem, config, }: {
3
+ cart?: Cart;
4
+ cartItem: LineItem;
5
+ config: {
6
+ handle: Record<string, {
7
+ min: number;
8
+ max: number;
9
+ }>;
10
+ sku: Record<string, {
11
+ min: number;
12
+ max: number;
13
+ }>;
14
+ };
15
+ }) => {
16
+ min: number;
17
+ max: number;
18
+ };
19
+ //# sourceMappingURL=useCartItemQuantityLimit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCartItemQuantityLimit.d.ts","sourceRoot":"","sources":["../../../../../src/cart/hooks/feature/useCartItemQuantityLimit.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAK5D,eAAO,MAAM,wBAAwB,GAAI,6BAItC;IACD,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,QAAQ,EAAE,QAAQ,CAAA;IAClB,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;QACpD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAClD,CAAA;CACF;;;CAwCA,CAAA"}
@@ -0,0 +1,2 @@
1
+ "use strict";var m=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var y=(i,t)=>{for(var r in t)m(i,r,{get:t[r],enumerable:!0})},h=(i,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of L(t))!c.call(i,n)&&n!==r&&m(i,n,{get:()=>t[n],enumerable:!(a=x(t,n))||a.enumerable});return i};var k=i=>h(m({},"__esModule",{value:!0}),i);var b={};y(b,{useCartItemQuantityLimit:()=>p});module.exports=k(b);var d=require("react");const u=1,s=999,p=({cart:i,cartItem:t,config:r})=>(0,d.useMemo)(()=>{if(r?.handle){const n=r?.handle?.[t?.product?.handle||""],l=i?.lineItems.reduce((o,e)=>(e.product?.handle===t?.product?.handle&&e.variant.sku!==t.variant.sku&&(o+=e.quantity),o),0)||0;return{min:n?.min||u,max:n?.max?n?.max-l:s}}else if(r?.sku){const n=r?.sku?.[t?.variant?.sku];return{min:n?.min||u,max:n?.max||s}}return{min:u,max:s}},[t,i]);
2
+ //# sourceMappingURL=useCartItemQuantityLimit.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/cart/hooks/feature/useCartItemQuantityLimit.tsx"],
4
+ "sourcesContent": ["import { useMemo } from 'react'\n\nimport { LineItem, Cart } from '../../../shopify/types/cart'\n\nconst DEFAULT_MIN = 1\nconst DEFAULT_MAX = 999\n\nexport const useCartItemQuantityLimit = ({\n cart,\n cartItem,\n config,\n}: {\n cart?: Cart\n cartItem: LineItem\n config: {\n handle: Record<string, { min: number; max: number }>\n sku: Record<string, { min: number; max: number }>\n }\n}) => {\n const quantityLimit = useMemo(() => {\n if (config?.handle) {\n // \u6309handle\u7EF4\u5EA6\u9650\u5236\n const cartItemQuantityLimit =\n config?.handle?.[cartItem?.product?.handle || '']\n\n const sameHandleTotalQuantity =\n cart?.lineItems.reduce((acc, item) => {\n if (\n item.product?.handle === cartItem?.product?.handle &&\n item.variant.sku !== cartItem.variant.sku\n ) {\n acc += item.quantity\n }\n return acc\n }, 0) || 0\n\n return {\n min: cartItemQuantityLimit?.min || DEFAULT_MIN,\n max: cartItemQuantityLimit?.max\n ? cartItemQuantityLimit?.max - sameHandleTotalQuantity\n : DEFAULT_MAX,\n }\n } else if (config?.sku) {\n const cartItemQuantityLimit = config?.sku?.[cartItem?.variant?.sku]\n\n return {\n min: cartItemQuantityLimit?.min || DEFAULT_MIN,\n max: cartItemQuantityLimit?.max || DEFAULT_MAX,\n }\n }\n\n return {\n min: DEFAULT_MIN,\n max: DEFAULT_MAX,\n }\n }, [cartItem, cart])\n\n return quantityLimit\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAwB,iBAIxB,MAAMC,EAAc,EACdC,EAAc,IAEPJ,EAA2B,CAAC,CACvC,KAAAK,EACA,SAAAC,EACA,OAAAC,CACF,OAQwB,WAAQ,IAAM,CAClC,GAAIA,GAAQ,OAAQ,CAElB,MAAMC,EACJD,GAAQ,SAASD,GAAU,SAAS,QAAU,EAAE,EAE5CG,EACJJ,GAAM,UAAU,OAAO,CAACK,EAAKC,KAEzBA,EAAK,SAAS,SAAWL,GAAU,SAAS,QAC5CK,EAAK,QAAQ,MAAQL,EAAS,QAAQ,MAEtCI,GAAOC,EAAK,UAEPD,GACN,CAAC,GAAK,EAEX,MAAO,CACL,IAAKF,GAAuB,KAAOL,EACnC,IAAKK,GAAuB,IACxBA,GAAuB,IAAMC,EAC7BL,CACN,CACF,SAAWG,GAAQ,IAAK,CACtB,MAAMC,EAAwBD,GAAQ,MAAMD,GAAU,SAAS,GAAG,EAElE,MAAO,CACL,IAAKE,GAAuB,KAAOL,EACnC,IAAKK,GAAuB,KAAOJ,CACrC,CACF,CAEA,MAAO,CACL,IAAKD,EACL,IAAKC,CACP,CACF,EAAG,CAACE,EAAUD,CAAI,CAAC",
6
+ "names": ["useCartItemQuantityLimit_exports", "__export", "useCartItemQuantityLimit", "__toCommonJS", "import_react", "DEFAULT_MIN", "DEFAULT_MAX", "cart", "cartItem", "config", "cartItemQuantityLimit", "sameHandleTotalQuantity", "acc", "item"]
7
+ }
@@ -0,0 +1,37 @@
1
+ import Decimal from 'decimal.js';
2
+ import { Cart, LineItem } from '../../../shopify/types/cart';
3
+ import { Product } from '../../../shopify/types';
4
+ interface GiveawayProduct {
5
+ handle: string;
6
+ sku: string;
7
+ }
8
+ interface Breakpoint {
9
+ breakpoint: string;
10
+ giveawayProducts: GiveawayProduct[];
11
+ }
12
+ interface Campaign {
13
+ activityAvailableQuery?: string;
14
+ activityQroperty?: string;
15
+ breakpoints?: Array<{
16
+ breakpoint: string;
17
+ giveawayProducts: GiveawayProduct[];
18
+ }>;
19
+ includeTags?: string[];
20
+ useTotalAmount?: boolean;
21
+ }
22
+ export interface UseScriptAutoFreeGiftResult {
23
+ involvedLines: LineItem[];
24
+ reorder: (a: LineItem, b: LineItem) => number;
25
+ disableCodeRemove: boolean;
26
+ nextFreeGiftLevel: Breakpoint | null;
27
+ freeGiftLevel: Breakpoint | null;
28
+ involvedSubTotal: Decimal;
29
+ giftProductsResult?: Product[];
30
+ }
31
+ declare const useScriptAutoFreeGift: ({ campaign, _giveaway, cart, }: {
32
+ campaign: Campaign | null;
33
+ _giveaway: string;
34
+ cart: Cart | undefined;
35
+ }) => UseScriptAutoFreeGiftResult;
36
+ export default useScriptAutoFreeGift;
37
+ //# sourceMappingURL=useScriptAutoFreeGift.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScriptAutoFreeGift.d.ts","sourceRoot":"","sources":["../../../../../src/cart/hooks/feature/useScriptAutoFreeGift.tsx"],"names":[],"mappings":"AAGA,OAAO,OAAO,MAAM,YAAY,CAAA;AAEhC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAG5D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAIhD,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,UAAU,UAAU;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,eAAe,EAAE,CAAA;CACpC;AAED,UAAU,QAAQ;IAChB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,KAAK,CAAC;QAClB,UAAU,EAAE,MAAM,CAAA;QAClB,gBAAgB,EAAE,eAAe,EAAE,CAAA;KACpC,CAAC,CAAA;IACF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AACD,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,QAAQ,EAAE,CAAA;IACzB,OAAO,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,KAAK,MAAM,CAAA;IAC7C,iBAAiB,EAAE,OAAO,CAAA;IAC1B,iBAAiB,EAAE,UAAU,GAAG,IAAI,CAAA;IACpC,aAAa,EAAE,UAAU,GAAG,IAAI,CAAA;IAChC,gBAAgB,EAAE,OAAO,CAAA;IACzB,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAA;CAC/B;AAGD,QAAA,MAAM,qBAAqB,GAAI,gCAI5B;IACD,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,IAAI,GAAG,SAAS,CAAA;CACvB,KAAG,2BA0MH,CAAA;AAED,eAAe,qBAAqB,CAAA"}
@@ -0,0 +1,2 @@
1
+ "use strict";var H=Object.create;var b=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var U=Object.getPrototypeOf,J=Object.prototype.hasOwnProperty;var M=(t,o)=>{for(var i in o)b(t,i,{get:o[i],enumerable:!0})},h=(t,o,i,m)=>{if(o&&typeof o=="object"||typeof o=="function")for(let c of E(o))!J.call(t,c)&&c!==i&&b(t,c,{get:()=>o[c],enumerable:!(m=O(o,c))||m.enumerable});return t};var y=(t,o,i)=>(i=t!=null?H(U(t)):{},h(o||!t||!t.__esModule?b(i,"default",{value:t,enumerable:!0}):i,t)),Q=t=>h(b({},"__esModule",{value:!0}),t);var q={};M(q,{default:()=>j});module.exports=Q(q);var A=require("next/router"),n=require("react"),a=y(require("decimal.js")),I=y(require("js-cookie")),_=y(require("swr")),G=require("../../../shopify/fetchers"),R=require("../../../context");const W=({campaign:t,_giveaway:o,cart:i})=>{const{locale:m}=(0,A.useRouter)(),[c,S]=(0,n.useState)(!1),{storefrontToken:C,storeDomain:T}=(0,R.useHeadlessContext)(),g=(0,n.useRef)(null);(0,n.useEffect)(()=>{if(m==="au"){const e=I.default.get("points_subscribe");S(!!e)}},[m]);const[P,L]=(0,n.useMemo)(()=>{let e=1,r=0;return c&&(e=1.2,r=40),i?.lineItems?.forEach(({customAttributes:u})=>{u?.forEach(({key:s,value:l})=>{s==="_amount_upgrade_multiple"&&(e=Number(l)||1),s==="_amount_upgrade_value"&&(r=Number(l)||0)})}),[e,r]},[i?.lineItems,c]),p=(0,n.useMemo)(()=>t?(t.breakpoints||[]).map(e=>({breakpoint:new a.default(e.breakpoint).minus(new a.default(L)).dividedBy(new a.default(P)).toFixed(2,a.default.ROUND_DOWN),giveawayProducts:e.giveawayProducts||[]})):[],[t,P,L]),d=(0,n.useMemo)(()=>[...new Set(p.flatMap(e=>e.giveawayProducts.map(r=>r.handle)).filter(Boolean))],[p]),v=(0,n.useMemo)(()=>!(!d.length||g.current&&JSON.stringify(g.current.giftHandles)===JSON.stringify(d)),[d]),f=(0,n.useMemo)(()=>t?(i?.lineItems||[]).filter(e=>{const r=e?.totalAmount&&Number(e.totalAmount)>0&&e.customAttributes?.every(s=>s.key!==o),u=e.product?.tags?.some(s=>t.includeTags?.includes(s.trim())&&e.variant?.availableForSale);return r&&u}):[],[i?.lineItems,t,o]),k=(0,n.useMemo)(()=>t?f.reduce((e,r)=>{const u=t.useTotalAmount?r.totalAmount:r.subtotalAmount;return new a.default(e).plus(new a.default(u||0))},new a.default(0)):new a.default(0),[f,t]),[N,x]=(0,n.useMemo)(()=>{const e=[...p].sort((l,D)=>Number(D.breakpoint)-Number(l.breakpoint)),r=e.findIndex(l=>k.gte(new a.default(l.breakpoint))&&f.length>0);if(r===-1)return[null,e.length>0?e[e.length-1]:null];const u=e[r],s=r>0?e[r-1]:null;return[u,s]},[p,k,f.length]),{data:w}=(0,_.default)(v?d:null,async()=>{const e=await(0,G.getProductsByHandles)({options:{handles:d},config:{storefrontToken:C,storeDomain:T}}),r=Array.isArray(e)?e:[];return g.current={data:r,giftHandles:[...d]},r}),B=(0,n.useMemo)(()=>g.current&&!v?g.current.data||void 0:w,[w,v]),F=(0,n.useCallback)((e,r)=>{const u=s=>s.customAttributes?.some(l=>l.key===o)?0:s.product?.tags?.some(l=>t?.includeTags?.includes(l))?1:2;return u(r)-u(e)},[t?.includeTags,o]);return{involvedLines:f,reorder:F,disableCodeRemove:f.length>0,nextFreeGiftLevel:x,freeGiftLevel:N,involvedSubTotal:k,giftProductsResult:B}};var j=W;
2
+ //# sourceMappingURL=useScriptAutoFreeGift.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/cart/hooks/feature/useScriptAutoFreeGift.tsx"],
4
+ "sourcesContent": ["\nimport { useRouter } from 'next/router'\nimport { useEffect, useMemo, useCallback, useState, useRef } from 'react'\nimport Decimal from 'decimal.js'\nimport Cookies from 'js-cookie'\nimport { Cart, LineItem } from '../../../shopify/types/cart'\nimport useSWR from 'swr'\nimport { getProductsByHandles } from '../../../shopify/fetchers'\nimport { Product } from '../../../shopify/types'\nimport { useHeadlessContext } from '../../../context'\n\n// \u517C\u5BB9\u8001script\u6EE1\u8D60 ----- \u5F85\u62C6\u89E3\u4F18\u5316\ninterface GiveawayProduct {\n handle: string\n sku: string\n}\n\ninterface Breakpoint {\n breakpoint: string\n giveawayProducts: GiveawayProduct[]\n}\n\ninterface Campaign {\n activityAvailableQuery?: string\n activityQroperty?: string\n breakpoints?: Array<{\n breakpoint: string\n giveawayProducts: GiveawayProduct[]\n }>\n includeTags?: string[]\n useTotalAmount?: boolean\n}\nexport interface UseScriptAutoFreeGiftResult {\n involvedLines: LineItem[]\n reorder: (a: LineItem, b: LineItem) => number\n disableCodeRemove: boolean\n nextFreeGiftLevel: Breakpoint | null\n freeGiftLevel: Breakpoint | null\n involvedSubTotal: Decimal\n giftProductsResult?: Product[]\n}\n\n// --- 3. \u4F18\u5316\u540E\u7684 Hook \u4E3B\u4F53 ---\nconst useScriptAutoFreeGift = ({\n campaign,\n _giveaway,\n cart,\n}: {\n campaign: Campaign | null\n _giveaway: string\n cart: Cart | undefined\n}): UseScriptAutoFreeGiftResult => {\n // const { cart } = useCartContext()\n const { locale } = useRouter()\n\n // --- \u72B6\u6001\u7BA1\u7406 ---\n const [points_subscribe, set_points_subscribe] = useState<boolean>(false)\n const { storefrontToken, storeDomain } = useHeadlessContext()\n\n // \u4F7F\u7528 useRef \u7F13\u5B58 giftProductsResult\uFF0C\u786E\u4FDD\u53EA\u6267\u884C\u4E00\u6B21\n const giftProductsCache = useRef<{\n data: any[] | null\n giftHandles: string[]\n } | null>(null)\n\n useEffect(() => {\n if (locale === 'au') {\n const isPointsSubscribe = Cookies.get('points_subscribe')\n set_points_subscribe(!!isPointsSubscribe)\n }\n }, [locale])\n\n // --- \u8BA1\u7B97\u5C42 ---\n // \u4F7F\u7528 useMemo \u8FDB\u884C\u6027\u80FD\u4F18\u5316\uFF0C\u5904\u7406\u6240\u6709\u7EAF\u8BA1\u7B97\u903B\u8F91\u3002\n\n const [upgrade_multiple, upgrade_value] = useMemo((): [number, number] => {\n let upgrade_multiple = 1\n let upgrade_value = 0\n if (points_subscribe) {\n upgrade_multiple = 1.2\n upgrade_value = 40\n }\n cart?.lineItems?.forEach(({ customAttributes }) => {\n customAttributes?.forEach(({ key, value }: { key: string; value: string }) => {\n if (key === '_amount_upgrade_multiple')\n upgrade_multiple = Number(value) || 1\n if (key === '_amount_upgrade_value') upgrade_value = Number(value) || 0\n })\n })\n return [upgrade_multiple, upgrade_value]\n }, [cart?.lineItems, points_subscribe])\n\n const breakpoints = useMemo((): Breakpoint[] => {\n if (!campaign) return []\n return (campaign.breakpoints || []).map((item) => ({\n breakpoint: new Decimal(item.breakpoint)\n .minus(new Decimal(upgrade_value))\n .dividedBy(new Decimal(upgrade_multiple))\n .toFixed(2, Decimal.ROUND_DOWN),\n giveawayProducts: item.giveawayProducts || [],\n }))\n }, [campaign, upgrade_multiple, upgrade_value])\n\n const giftHandles = useMemo(\n (): string[] =>\n // \u4F7F\u7528 Set \u53BB\u91CD\uFF0C\u7136\u540E\u62FC\u63A5\u5B57\u7B26\u4E32\n [\n ...new Set(\n breakpoints\n .flatMap((b) => b.giveawayProducts.map((p) => p.handle))\n .filter(Boolean)\n ),\n ],\n [breakpoints]\n )\n\n // \u68C0\u67E5\u662F\u5426\u9700\u8981\u91CD\u65B0\u83B7\u53D6\u6570\u636E\n const shouldFetch = useMemo(() => {\n if (!giftHandles.length) return false\n\n // \u5982\u679C\u7F13\u5B58\u5B58\u5728\u4E14 handles \u76F8\u540C\uFF0C\u76F4\u63A5\u4F7F\u7528\u7F13\u5B58\n if (\n giftProductsCache.current &&\n JSON.stringify(giftProductsCache.current.giftHandles) ===\n JSON.stringify(giftHandles)\n ) {\n return false\n }\n\n return true\n }, [giftHandles])\n\n const involvedLines = useMemo((): LineItem[] => {\n if (!campaign) return []\n return (cart?.lineItems || []).filter((line) => {\n const isNotGift =\n line?.totalAmount &&\n Number(line.totalAmount) > 0 &&\n line.customAttributes?.every((item: { key: string; value: string }) => item.key !== _giveaway)\n const hasCampaignTag = line.product?.tags?.some(\n (tag) =>\n campaign.includeTags?.includes(tag.trim()) &&\n line.variant?.availableForSale\n )\n return isNotGift && hasCampaignTag\n })\n }, [cart?.lineItems, campaign, _giveaway])\n\n const involvedSubTotal = useMemo((): Decimal => {\n if (!campaign) return new Decimal(0)\n return involvedLines.reduce((prev, item) => {\n const amount = campaign.useTotalAmount\n ? item.totalAmount\n : item.subtotalAmount\n return new Decimal(prev).plus(new Decimal(amount || 0))\n }, new Decimal(0))\n }, [involvedLines, campaign])\n\n const [freeGiftLevel, nextFreeGiftLevel] = useMemo((): [\n Breakpoint | null,\n Breakpoint | null\n ] => {\n const sortedLevels = [...breakpoints].sort(\n (a, b) => Number(b.breakpoint) - Number(a.breakpoint)\n )\n const levelIndex = sortedLevels.findIndex(\n (level) =>\n involvedSubTotal.gte(new Decimal(level.breakpoint)) &&\n involvedLines.length > 0\n )\n\n if (levelIndex === -1) {\n return [\n null,\n sortedLevels.length > 0 ? sortedLevels[sortedLevels.length - 1] : null,\n ]\n }\n\n const currentLevel = sortedLevels[levelIndex]\n const nextLevel = levelIndex > 0 ? sortedLevels[levelIndex - 1] : null\n return [currentLevel, nextLevel]\n }, [breakpoints, involvedSubTotal, involvedLines.length])\n\n // --- \u6570\u636E\u83B7\u53D6\u5C42 ---\n const { data: giftProductsResult } = useSWR(\n shouldFetch ? giftHandles : null,\n async () => {\n const res = await getProductsByHandles({\n options: {\n handles: giftHandles,\n },\n config: {\n storefrontToken: storefrontToken,\n storeDomain: storeDomain,\n },\n })\n const result = Array.isArray(res) ? res : []\n\n // \u7F13\u5B58\u7ED3\u679C\n giftProductsCache.current = {\n data: result,\n giftHandles: [...giftHandles],\n }\n\n return result\n }\n )\n\n // \u4F7F\u7528\u7F13\u5B58\u7684\u6570\u636E\u6216\u65B0\u83B7\u53D6\u7684\u6570\u636E\n const finalGiftProductsResult = useMemo(() => {\n if (giftProductsCache.current && !shouldFetch) {\n return giftProductsCache.current.data || undefined\n }\n return giftProductsResult\n }, [giftProductsResult, shouldFetch])\n\n // \u4F7F\u7528 useCallback \u521B\u5EFA\u4E00\u4E2A\u7A33\u5B9A\u7684\u6392\u5E8F\u51FD\u6570\uFF0C\u7528\u4E8E\u4F18\u5316\u6E32\u67D3\u3002\n // \u5B83\u4F1A\u6839\u636E\u5546\u54C1\u7C7B\u578B\uFF08\u8D60\u54C1\u3001\u6D3B\u52A8\u5546\u54C1\u3001\u666E\u901A\u5546\u54C1\uFF09\u8FDB\u884C\u6392\u5E8F\u3002\n const reorder = useCallback(\n (a: LineItem, b: LineItem): number => {\n const getPriority = (item: LineItem): number => {\n // \u4F18\u5148\u7EA7 0: \u8D60\u54C1 (\u6392\u5728\u6700\u540E)\n if (\n item.customAttributes?.some(\n (attribute: { key: string; value: string }) => attribute.key === _giveaway\n )\n )\n return 0\n // \u4F18\u5148\u7EA7 1: \u53C2\u4E0E\u6D3B\u52A8\u7684\u5546\u54C1 (BUG\u4FEE\u590D\uFF1A\u5E94\u68C0\u67E5 product.tags)\n if (\n item.product?.tags?.some((tag) =>\n campaign?.includeTags?.includes(tag)\n )\n )\n return 1\n // \u4F18\u5148\u7EA7 2: \u5176\u4ED6\u666E\u901A\u5546\u54C1 (\u6392\u5728\u6700\u524D)\n return 2\n }\n // b \u7684\u4F18\u5148\u7EA7\u51CF a \u7684\u4F18\u5148\u7EA7\uFF0C\u5B9E\u73B0\u964D\u5E8F\u6392\u5217\n return getPriority(b) - getPriority(a)\n },\n [campaign?.includeTags, _giveaway]\n )\n\n return {\n involvedLines,\n reorder,\n disableCodeRemove: involvedLines.length > 0,\n nextFreeGiftLevel,\n freeGiftLevel,\n involvedSubTotal,\n giftProductsResult: finalGiftProductsResult,\n }\n}\n\nexport default useScriptAutoFreeGift\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAA0B,uBAC1BC,EAAkE,iBAClEC,EAAoB,yBACpBC,EAAoB,wBAEpBC,EAAmB,kBACnBC,EAAqC,qCAErCC,EAAmC,4BAkCnC,MAAMC,EAAwB,CAAC,CAC7B,SAAAC,EACA,UAAAC,EACA,KAAAC,CACF,IAImC,CAEjC,KAAM,CAAE,OAAAC,CAAO,KAAI,aAAU,EAGvB,CAACC,EAAkBC,CAAoB,KAAI,YAAkB,EAAK,EAClE,CAAE,gBAAAC,EAAiB,YAAAC,CAAY,KAAI,sBAAmB,EAGtDC,KAAoB,UAGhB,IAAI,KAEd,aAAU,IAAM,CACd,GAAIL,IAAW,KAAM,CACnB,MAAMM,EAAoB,EAAAC,QAAQ,IAAI,kBAAkB,EACxDL,EAAqB,CAAC,CAACI,CAAiB,CAC1C,CACF,EAAG,CAACN,CAAM,CAAC,EAKX,KAAM,CAACQ,EAAkBC,CAAa,KAAI,WAAQ,IAAwB,CACxE,IAAID,EAAmB,EACnBC,EAAgB,EACpB,OAAIR,IACFO,EAAmB,IACnBC,EAAgB,IAElBV,GAAM,WAAW,QAAQ,CAAC,CAAE,iBAAAW,CAAiB,IAAM,CACjDA,GAAkB,QAAQ,CAAC,CAAE,IAAAC,EAAK,MAAAC,CAAM,IAAsC,CACxED,IAAQ,6BACVH,EAAmB,OAAOI,CAAK,GAAK,GAClCD,IAAQ,0BAAyBF,EAAgB,OAAOG,CAAK,GAAK,EACxE,CAAC,CACH,CAAC,EACM,CAACJ,EAAkBC,CAAa,CACzC,EAAG,CAACV,GAAM,UAAWE,CAAgB,CAAC,EAEhCY,KAAc,WAAQ,IACrBhB,GACGA,EAAS,aAAe,CAAC,GAAG,IAAKiB,IAAU,CACjD,WAAY,IAAI,EAAAC,QAAQD,EAAK,UAAU,EACpC,MAAM,IAAI,EAAAC,QAAQN,CAAa,CAAC,EAChC,UAAU,IAAI,EAAAM,QAAQP,CAAgB,CAAC,EACvC,QAAQ,EAAG,EAAAO,QAAQ,UAAU,EAChC,iBAAkBD,EAAK,kBAAoB,CAAC,CAC9C,EAAE,EAPoB,CAAC,EAQtB,CAACjB,EAAUW,EAAkBC,CAAa,CAAC,EAExCO,KAAc,WAClB,IAEE,CACE,GAAG,IAAI,IACLH,EACG,QAASI,GAAMA,EAAE,iBAAiB,IAAKC,GAAMA,EAAE,MAAM,CAAC,EACtD,OAAO,OAAO,CACnB,CACF,EACF,CAACL,CAAW,CACd,EAGMM,KAAc,WAAQ,IACtB,GAACH,EAAY,QAIfX,EAAkB,SAClB,KAAK,UAAUA,EAAkB,QAAQ,WAAW,IAClD,KAAK,UAAUW,CAAW,GAM7B,CAACA,CAAW,CAAC,EAEVI,KAAgB,WAAQ,IACvBvB,GACGE,GAAM,WAAa,CAAC,GAAG,OAAQsB,GAAS,CAC9C,MAAMC,EACJD,GAAM,aACN,OAAOA,EAAK,WAAW,EAAI,GAC3BA,EAAK,kBAAkB,MAAOP,GAAyCA,EAAK,MAAQhB,CAAS,EACzFyB,EAAiBF,EAAK,SAAS,MAAM,KACxCG,GACC3B,EAAS,aAAa,SAAS2B,EAAI,KAAK,CAAC,GACzCH,EAAK,SAAS,gBAClB,EACA,OAAOC,GAAaC,CACtB,CAAC,EAZqB,CAAC,EAatB,CAACxB,GAAM,UAAWF,EAAUC,CAAS,CAAC,EAEnC2B,KAAmB,WAAQ,IAC1B5B,EACEuB,EAAc,OAAO,CAACM,EAAMZ,IAAS,CAC1C,MAAMa,EAAS9B,EAAS,eACpBiB,EAAK,YACLA,EAAK,eACT,OAAO,IAAI,EAAAC,QAAQW,CAAI,EAAE,KAAK,IAAI,EAAAX,QAAQY,GAAU,CAAC,CAAC,CACxD,EAAG,IAAI,EAAAZ,QAAQ,CAAC,CAAC,EANK,IAAI,EAAAA,QAAQ,CAAC,EAOlC,CAACK,EAAevB,CAAQ,CAAC,EAEtB,CAAC+B,EAAeC,CAAiB,KAAI,WAAQ,IAG9C,CACH,MAAMC,EAAe,CAAC,GAAGjB,CAAW,EAAE,KACpC,CAACkB,EAAGd,IAAM,OAAOA,EAAE,UAAU,EAAI,OAAOc,EAAE,UAAU,CACtD,EACMC,EAAaF,EAAa,UAC7BG,GACCR,EAAiB,IAAI,IAAI,EAAAV,QAAQkB,EAAM,UAAU,CAAC,GAClDb,EAAc,OAAS,CAC3B,EAEA,GAAIY,IAAe,GACjB,MAAO,CACL,KACAF,EAAa,OAAS,EAAIA,EAAaA,EAAa,OAAS,CAAC,EAAI,IACpE,EAGF,MAAMI,EAAeJ,EAAaE,CAAU,EACtCG,EAAYH,EAAa,EAAIF,EAAaE,EAAa,CAAC,EAAI,KAClE,MAAO,CAACE,EAAcC,CAAS,CACjC,EAAG,CAACtB,EAAaY,EAAkBL,EAAc,MAAM,CAAC,EAGlD,CAAE,KAAMgB,CAAmB,KAAI,EAAAC,SACnClB,EAAcH,EAAc,KAC5B,SAAY,CACV,MAAMsB,EAAM,QAAM,wBAAqB,CACrC,QAAS,CACP,QAAStB,CACX,EACA,OAAQ,CACN,gBAAiBb,EACjB,YAAaC,CACf,CACF,CAAC,EACKmC,EAAS,MAAM,QAAQD,CAAG,EAAIA,EAAM,CAAC,EAG3C,OAAAjC,EAAkB,QAAU,CAC1B,KAAMkC,EACN,YAAa,CAAC,GAAGvB,CAAW,CAC9B,EAEOuB,CACT,CACF,EAGMC,KAA0B,WAAQ,IAClCnC,EAAkB,SAAW,CAACc,EACzBd,EAAkB,QAAQ,MAAQ,OAEpC+B,EACN,CAACA,EAAoBjB,CAAW,CAAC,EAI9BsB,KAAU,eACd,CAACV,EAAad,IAAwB,CACpC,MAAMyB,EAAe5B,GAGjBA,EAAK,kBAAkB,KACpB6B,GAA8CA,EAAU,MAAQ7C,CACnE,EAEO,EAGPgB,EAAK,SAAS,MAAM,KAAMU,GACxB3B,GAAU,aAAa,SAAS2B,CAAG,CACrC,EAEO,EAEF,EAGT,OAAOkB,EAAYzB,CAAC,EAAIyB,EAAYX,CAAC,CACvC,EACA,CAAClC,GAAU,YAAaC,CAAS,CACnC,EAEA,MAAO,CACL,cAAAsB,EACA,QAAAqB,EACA,kBAAmBrB,EAAc,OAAS,EAC1C,kBAAAS,EACA,cAAAD,EACA,iBAAAH,EACA,mBAAoBe,CACtB,CACF,EAEA,IAAOrD,EAAQS",
6
+ "names": ["useScriptAutoFreeGift_exports", "__export", "useScriptAutoFreeGift_default", "__toCommonJS", "import_router", "import_react", "import_decimal", "import_js_cookie", "import_swr", "import_fetchers", "import_context", "useScriptAutoFreeGift", "campaign", "_giveaway", "cart", "locale", "points_subscribe", "set_points_subscribe", "storefrontToken", "storeDomain", "giftProductsCache", "isPointsSubscribe", "Cookies", "upgrade_multiple", "upgrade_value", "customAttributes", "key", "value", "breakpoints", "item", "Decimal", "giftHandles", "b", "p", "shouldFetch", "involvedLines", "line", "isNotGift", "hasCampaignTag", "tag", "involvedSubTotal", "prev", "amount", "freeGiftLevel", "nextFreeGiftLevel", "sortedLevels", "a", "levelIndex", "level", "currentLevel", "nextLevel", "giftProductsResult", "useSWR", "res", "result", "finalGiftProductsResult", "reorder", "getPriority", "attribute"]
7
+ }
@@ -0,0 +1,9 @@
1
+ import { Cart } from '../../../shopify/types/cart';
2
+ import { LoadingState } from '../../context';
3
+ export declare const useUpdateLineCodeAmountAttributes: ({ cart, mutateCart, isCartLoading, setLoadingState, }: {
4
+ cart?: Cart;
5
+ mutateCart: (cart: Cart) => void;
6
+ isCartLoading: boolean;
7
+ setLoadingState: React.Dispatch<React.SetStateAction<LoadingState>>;
8
+ }) => void;
9
+ //# sourceMappingURL=useUpdateLineCodeAmountAttributes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUpdateLineCodeAmountAttributes.d.ts","sourceRoot":"","sources":["../../../../../src/cart/hooks/feature/useUpdateLineCodeAmountAttributes.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAK5C,eAAO,MAAM,iCAAiC,GAAI,uDAK/C;IACD,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAChC,aAAa,EAAE,OAAO,CAAA;IACtB,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAA;CACpE,SA8JA,CAAA"}
@@ -0,0 +1,2 @@
1
+ "use strict";var l=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var O=(s,n)=>{for(var r in n)l(s,r,{get:n[r],enumerable:!0})},L=(s,n,r,c)=>{if(n&&typeof n=="object"||typeof n=="function")for(let a of T(n))!I.call(s,a)&&a!==r&&l(s,a,{get:()=>n[a],enumerable:!(c=_(n,a))||c.enumerable});return s};var N=s=>L(l({},"__esModule",{value:!0}),s);var U={};O(U,{useUpdateLineCodeAmountAttributes:()=>R});module.exports=N(U);var d=require("react"),e=require("../../../shopify/utils/const"),y=require("../../../shopify/fetchers/update-cart-lines"),C=require("ahooks"),k=require("../../utils/autoFreeGift"),v=require("../../../context");const R=({cart:s,mutateCart:n,isCartLoading:r,setLoadingState:c})=>{const{storefrontToken:a,storeDomain:E}=(0,v.useHeadlessContext)(),p=(0,d.useMemo)(()=>s?.discountCodes.filter(({code:t,applicable:o})=>o&&e.MAIN_PRODUCT_CODE.some(u=>t.startsWith(u))).map(({code:t})=>t),[s]),A=(0,d.useMemo)(()=>s?.lineItems.map(t=>{const o=[],u=[],m=t.discountAllocations?.find(i=>p?.includes(i.code)),g=t.customAttributes?.find(i=>i.key===e.CUSTOMER_ATTRIBUTE_KEY),h=(0,k.getDiscountEnvAttributeValue)(t.customAttributes);!(Number(h.discounted_amount)===Number(t.totalAmount))&&g&&o.push({key:e.CUSTOMER_ATTRIBUTE_KEY,value:JSON.stringify({...h,discounted_amount:Number(t.totalAmount)})});const f=m?.amount||0,S=t.customAttributes?.find(i=>i.key===e.CODE_AMOUNT_KEY||i.key===e.SCRIPT_CODE_AMOUNT_KEY),D=t.customAttributes?.find(i=>i.key===e.CODE_AMOUNT_KEY&&i.value===String(f))&&t.customAttributes?.find(i=>i.key===e.SCRIPT_CODE_AMOUNT_KEY&&i.value===String(f));return m&&!D?(o.push({key:e.CODE_AMOUNT_KEY,value:String(f)}),o.push({key:e.SCRIPT_CODE_AMOUNT_KEY,value:String(f)})):!m&&S&&(u.push(e.CODE_AMOUNT_KEY),u.push(e.SCRIPT_CODE_AMOUNT_KEY)),{line:t,attrNeedUpdate:o,attrNeedDelete:u}}).filter(({attrNeedUpdate:t,attrNeedDelete:o})=>t.length||o.length).map(({line:t,attrNeedUpdate:o,attrNeedDelete:u})=>o.length?{id:t.id,attributes:[...t.customAttributes?.filter(m=>!o.some(g=>g.key===m.key))||[],...o]}:u.length?{id:t.id,attributes:t.customAttributes?.filter(m=>!u.includes(m.key))||[]}:{id:t.id,attributes:t.customAttributes||[]}),[s?.lineItems,p]),{loading:b}=(0,C.useRequest)(async()=>{if(A?.length&&!r){const t=await(0,y.updateCartLines)({options:{cartId:s?.id||"",lines:A},config:{storefrontToken:a,storeDomain:E}});t&&n(t)}},{throttleWait:3e3,throttleTrailing:!0,refreshDeps:[A,r]});(0,d.useEffect)(()=>{c(t=>({...t,editLineCodeAmountLoading:b}))},[b,c])};
2
+ //# sourceMappingURL=useUpdateLineCodeAmountAttributes.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/cart/hooks/feature/useUpdateLineCodeAmountAttributes.tsx"],
4
+ "sourcesContent": ["import { useEffect, useMemo } from 'react'\nimport {\n CODE_AMOUNT_KEY,\n CUSTOMER_ATTRIBUTE_KEY,\n MAIN_PRODUCT_CODE,\n SCRIPT_CODE_AMOUNT_KEY,\n} from '../../../shopify/utils/const'\nimport { updateCartLines as updateCartLinesFetcher } from '../../../shopify/fetchers/update-cart-lines'\nimport { Cart } from '../../../shopify/types/cart'\nimport { useRequest } from 'ahooks'\nimport { LoadingState } from '../../context'\nimport { getDiscountEnvAttributeValue } from '../../utils/autoFreeGift'\nimport { AttributeInput } from '../../../shopify/gql'\nimport { useHeadlessContext } from '../../../context'\n\nexport const useUpdateLineCodeAmountAttributes = ({\n cart,\n mutateCart,\n isCartLoading,\n setLoadingState,\n}: {\n cart?: Cart\n mutateCart: (cart: Cart) => void\n isCartLoading: boolean\n setLoadingState: React.Dispatch<React.SetStateAction<LoadingState>>\n}) => {\n const { storefrontToken, storeDomain } = useHeadlessContext()\n \n const mainProductDiscountCodes = useMemo(\n () =>\n cart?.discountCodes\n .filter(\n ({ code, applicable }) =>\n applicable &&\n MAIN_PRODUCT_CODE.some((codePrefix) => code.startsWith(codePrefix))\n )\n .map(({ code }) => code),\n [cart]\n )\n\n const linesNeedUpdate = useMemo(\n () =>\n cart?.lineItems\n .map((line) => {\n const attrNeedUpdate: AttributeInput[] = []\n const attrNeedDelete = []\n\n const codeDiscount = line.discountAllocations?.find((allocation) =>\n mainProductDiscountCodes?.includes(allocation.code)\n )\n\n // \u662F\u5426\u6709 _discounts_function_env \u5C5E\u6027\n const hasFunctionEnvAttribute = line.customAttributes?.find(\n (attr: { key: string; value: string }) => attr.key === CUSTOMER_ATTRIBUTE_KEY\n )\n const functionEnvValue = getDiscountEnvAttributeValue(\n line.customAttributes\n )\n // lineItem \u6298\u540E\u603B\u4EF7\u4E0Eattr\u4E2D\u7684\u4E0D\u4E00\u81F4\u7684\u60C5\u51B5\n const hasSameFunctionEnvAttribute =\n Number(functionEnvValue.discounted_amount) ===\n Number(line.totalAmount)\n\n if (!hasSameFunctionEnvAttribute && hasFunctionEnvAttribute) {\n attrNeedUpdate.push({\n key: CUSTOMER_ATTRIBUTE_KEY,\n value: JSON.stringify({\n ...functionEnvValue,\n discounted_amount: Number(line.totalAmount),\n }),\n })\n }\n\n const codeDiscountAmount = codeDiscount?.amount || 0\n // \u662F\u5426\u6709 code_money \u5C5E\u6027\n const hasCodeAmountAttribute = line.customAttributes?.find(\n (attr: { key: string; value: string }) =>\n attr.key === CODE_AMOUNT_KEY ||\n attr.key === SCRIPT_CODE_AMOUNT_KEY\n )\n // \u4E24\u4E2A\u5C5E\u6027\u90FD\u5B58\u5728\u4E14\u503C\u76F8\u540C\uFF0C\u5219\u4E0D\u66F4\u65B0\n const hasSameCodeAmountAttribute =\n line.customAttributes?.find(\n (attr: { key: string; value: string }) =>\n attr.key === CODE_AMOUNT_KEY &&\n attr.value === String(codeDiscountAmount)\n ) &&\n line.customAttributes?.find(\n (attr: { key: string; value: string }) =>\n attr.key === SCRIPT_CODE_AMOUNT_KEY &&\n attr.value === String(codeDiscountAmount)\n )\n\n if (codeDiscount && !hasSameCodeAmountAttribute) {\n attrNeedUpdate.push({\n key: CODE_AMOUNT_KEY,\n value: String(codeDiscountAmount),\n })\n attrNeedUpdate.push({\n key: SCRIPT_CODE_AMOUNT_KEY,\n value: String(codeDiscountAmount),\n })\n } else if (!codeDiscount && hasCodeAmountAttribute) {\n // \u6CA1\u6709 code \u9700\u8981\u5220\u9664\u7684\u60C5\u51B5\n attrNeedDelete.push(CODE_AMOUNT_KEY)\n attrNeedDelete.push(SCRIPT_CODE_AMOUNT_KEY)\n }\n\n return {\n line,\n attrNeedUpdate,\n attrNeedDelete,\n }\n })\n .filter(\n ({ attrNeedUpdate, attrNeedDelete }) =>\n attrNeedUpdate.length || attrNeedDelete.length\n )\n .map(({ line, attrNeedUpdate, attrNeedDelete }) => {\n if (attrNeedUpdate.length) {\n return {\n id: line.id,\n attributes: [\n ...(line.customAttributes?.filter(\n (attr: { key: string; value: string }) =>\n !attrNeedUpdate.some(\n (updateAttr) => updateAttr.key === attr.key\n )\n ) || []),\n ...attrNeedUpdate,\n ],\n }\n } else if (attrNeedDelete.length) {\n return {\n id: line.id,\n attributes:\n line.customAttributes?.filter(\n (attr: { key: string; value: string }) => !attrNeedDelete.includes(attr.key)\n ) || [],\n }\n } else {\n return {\n id: line.id,\n attributes: line.customAttributes || [],\n }\n }\n }),\n [cart?.lineItems, mainProductDiscountCodes]\n )\n\n const { loading } = useRequest(\n async () => {\n if (linesNeedUpdate?.length && !isCartLoading) {\n const result = await updateCartLinesFetcher({\n options: {\n cartId: cart?.id || '',\n lines: linesNeedUpdate,\n },\n config: {\n storefrontToken,\n storeDomain,\n },\n })\n if (result) {\n mutateCart(result)\n }\n }\n },\n {\n throttleWait: 3000, // 3 \u79D2\u5185\u53EA\u89E6\u53D1\u6700\u540E\u4E00\u6B21\u66F4\u65B0\n throttleTrailing: true,\n refreshDeps: [linesNeedUpdate, isCartLoading],\n }\n )\n\n useEffect(() => {\n setLoadingState((prev) => {\n return {\n ...prev,\n editLineCodeAmountLoading: loading,\n }\n })\n }, [loading, setLoadingState])\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["useUpdateLineCodeAmountAttributes_exports", "__export", "useUpdateLineCodeAmountAttributes", "__toCommonJS", "import_react", "import_const", "import_update_cart_lines", "import_ahooks", "import_autoFreeGift", "import_context", "cart", "mutateCart", "isCartLoading", "setLoadingState", "storefrontToken", "storeDomain", "mainProductDiscountCodes", "code", "applicable", "codePrefix", "linesNeedUpdate", "line", "attrNeedUpdate", "attrNeedDelete", "codeDiscount", "allocation", "hasFunctionEnvAttribute", "attr", "functionEnvValue", "codeDiscountAmount", "hasCodeAmountAttribute", "hasSameCodeAmountAttribute", "updateAttr", "loading", "result", "updateCartLinesFetcher", "prev"]
7
+ }
@@ -1,21 +1,14 @@
1
1
  import { AddToCartLineItems } from '../types';
2
- declare global {
3
- interface Window {
4
- fbq?: (...args: any) => void;
5
- gtag?: (...args: any) => void;
6
- }
7
- }
8
2
  export declare const addToCartFbq: ({ lineItems }: {
9
3
  lineItems: AddToCartLineItems;
10
4
  }) => void;
11
5
  export type FbqBuyNowTrackConfig = {
6
+ gtagId: string;
12
7
  fbqBuyNowEvent: string;
13
8
  gtagBuyNowLabel: string;
14
9
  gtagBuyNowConversion: string;
15
10
  };
16
- export declare const buyNowFbq: ({ trackConfig, gtagId, }: {
17
- router: any;
11
+ export declare const buyNowFbq: ({ trackConfig }: {
18
12
  trackConfig: FbqBuyNowTrackConfig;
19
- gtagId: string;
20
13
  }) => void;
21
14
  //# sourceMappingURL=fbq.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fbq.d.ts","sourceRoot":"","sources":["../../../../src/cart/track/fbq.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAE7C,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;QAC5B,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;KAC9B;CACF;AAID,eAAO,MAAM,YAAY,GAAI,eAAoB;IAAE,SAAS,EAAE,kBAAkB,CAAA;CAAE,SAajF,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,oBAAoB,EAAE,MAAM,CAAA;CAC7B,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,0BAGvB;IACD,MAAM,EAAE,GAAG,CAAA;IACX,WAAW,EAAE,oBAAoB,CAAA;IACjC,MAAM,EAAE,MAAM,CAAA;CACf,SAYA,CAAA"}
1
+ {"version":3,"file":"fbq.d.ts","sourceRoot":"","sources":["../../../../src/cart/track/fbq.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAE7C,eAAO,MAAM,YAAY,GAAI,eAAoB;IAAE,SAAS,EAAE,kBAAkB,CAAA;CAAE,SAajF,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,oBAAoB,EAAE,MAAM,CAAA;CAC7B,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,iBAAiB;IAAE,WAAW,EAAE,oBAAoB,CAAA;CAAE,SAY/E,CAAA"}
@@ -1,2 +1,2 @@
1
- "use strict";var a=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var y=(t,o)=>{for(var n in o)a(t,n,{get:o[n],enumerable:!0})},s=(t,o,n,r)=>{if(o&&typeof o=="object"||typeof o=="function")for(let e of d(o))!u.call(t,e)&&e!==n&&a(t,e,{get:()=>o[e],enumerable:!(r=c(o,e))||r.enumerable});return t};var w=t=>s(a({},"__esModule",{value:!0}),t);var p={};y(p,{addToCartFbq:()=>b,buyNowFbq:()=>f,fbq:()=>i,gtag:()=>g});module.exports=w(p);const i=(...t)=>{window.fbq&&window.fbq(...t)},g=(...t)=>{window.gtag&&window.gtag(...t)},b=({lineItems:t=[]})=>{if(t.length&&t[0].variant){const{variant:o,quantity:n,finalPrice:r}=t[0];i("track","AddToCart",{value:r?.amount||o?.price?.amount,num_items:n,currency:o?.price?.currencyCode,content_name:o?.product?.title,content_type:"product_group",content_ids:String(o?.id),content_category:o?.product?.metafields?.global?.trafficType||"public"})}},f=({trackConfig:t,gtagId:o})=>{try{t?.fbqBuyNowEvent&&i("trackCustom",t?.fbqBuyNowEvent),t?.gtagBuyNowLabel&&g("event",t?.gtagBuyNowConversion||"conversion",{send_to:`${o}/${t?.gtagBuyNowLabel}`})}catch{}};
1
+ "use strict";var i=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var y=(t,o)=>{for(var e in o)i(t,e,{get:o[e],enumerable:!0})},d=(t,o,e,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of c(o))!g.call(t,r)&&r!==e&&i(t,r,{get:()=>o[r],enumerable:!(a=u(o,r))||a.enumerable});return t};var s=t=>d(i({},"__esModule",{value:!0}),t);var m={};y(m,{addToCartFbq:()=>p,buyNowFbq:()=>b});module.exports=s(m);var n=require("../../utils/track");const p=({lineItems:t=[]})=>{if(t.length&&t[0].variant){const{variant:o,quantity:e,finalPrice:a}=t[0];(0,n.fbq)("track","AddToCart",{value:a?.amount||o?.price?.amount,num_items:e,currency:o?.price?.currencyCode,content_name:o?.product?.title,content_type:"product_group",content_ids:String(o?.id),content_category:o?.product?.metafields?.global?.trafficType||"public"})}},b=({trackConfig:t})=>{try{t?.fbqBuyNowEvent&&(0,n.fbq)("trackCustom",t?.fbqBuyNowEvent),t?.gtagBuyNowLabel&&(0,n.gtag)("event",t?.gtagBuyNowConversion||"conversion",{send_to:`${t?.gtagId}/${t?.gtagBuyNowLabel}`})}catch{}};
2
2
  //# sourceMappingURL=fbq.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/cart/track/fbq.ts"],
4
- "sourcesContent": ["import { AddToCartLineItems } from '../types'\n\ndeclare global {\n interface Window {\n fbq?: (...args: any) => void\n gtag?: (...args: any) => void\n }\n}\n\n// facebook \u57CB\u70B9\nexport const fbq = (...args: any) => {\n if (window.fbq) {\n window.fbq(...args)\n }\n}\n\nexport const gtag = (...args: any) => {\n if (window.gtag) {\n window.gtag(...args)\n }\n}\n\nexport const addToCartFbq = ({ lineItems = [] }: { lineItems: AddToCartLineItems }) => {\n if (lineItems.length && lineItems[0].variant) {\n const { variant, quantity, finalPrice } = lineItems[0]\n fbq('track', 'AddToCart', {\n value: finalPrice?.amount || variant?.price?.amount,\n num_items: quantity,\n currency: variant?.price?.currencyCode,\n content_name: variant?.product?.title, // \u4EA7\u54C1\u5185\u5BB9\u7684\u540D\u5B57\n content_type: 'product_group',\n content_ids: String(variant?.id), // \u4EA7\u54C1\u7684varaint id\n content_category: variant?.product?.metafields?.global?.trafficType || 'public', // \u4EA7\u54C1\u5206\u7C7B\n })\n }\n}\n\nexport type FbqBuyNowTrackConfig = {\n fbqBuyNowEvent: string\n gtagBuyNowLabel: string\n gtagBuyNowConversion: string\n}\n\nexport const buyNowFbq = ({\n trackConfig,\n gtagId,\n}: {\n router: any\n trackConfig: FbqBuyNowTrackConfig\n gtagId: string\n}) => {\n try {\n if (trackConfig?.fbqBuyNowEvent) {\n fbq('trackCustom', trackConfig?.fbqBuyNowEvent)\n }\n\n if (trackConfig?.gtagBuyNowLabel) {\n gtag('event', trackConfig?.gtagBuyNowConversion || 'conversion', {\n send_to: `${gtagId}/${trackConfig?.gtagBuyNowLabel}`,\n })\n }\n } catch (error) {}\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,EAAA,cAAAC,EAAA,QAAAC,EAAA,SAAAC,IAAA,eAAAC,EAAAN,GAUO,MAAMI,EAAM,IAAIG,IAAc,CAC/B,OAAO,KACT,OAAO,IAAI,GAAGA,CAAI,CAEtB,EAEaF,EAAO,IAAIE,IAAc,CAChC,OAAO,MACT,OAAO,KAAK,GAAGA,CAAI,CAEvB,EAEaL,EAAe,CAAC,CAAE,UAAAM,EAAY,CAAC,CAAE,IAAyC,CACrF,GAAIA,EAAU,QAAUA,EAAU,CAAC,EAAE,QAAS,CAC5C,KAAM,CAAE,QAAAC,EAAS,SAAAC,EAAU,WAAAC,CAAW,EAAIH,EAAU,CAAC,EACrDJ,EAAI,QAAS,YAAa,CACxB,MAAOO,GAAY,QAAUF,GAAS,OAAO,OAC7C,UAAWC,EACX,SAAUD,GAAS,OAAO,aAC1B,aAAcA,GAAS,SAAS,MAChC,aAAc,gBACd,YAAa,OAAOA,GAAS,EAAE,EAC/B,iBAAkBA,GAAS,SAAS,YAAY,QAAQ,aAAe,QACzE,CAAC,CACH,CACF,EAQaN,EAAY,CAAC,CACxB,YAAAS,EACA,OAAAC,CACF,IAIM,CACJ,GAAI,CACED,GAAa,gBACfR,EAAI,cAAeQ,GAAa,cAAc,EAG5CA,GAAa,iBACfP,EAAK,QAASO,GAAa,sBAAwB,aAAc,CAC/D,QAAS,GAAGC,CAAM,IAAID,GAAa,eAAe,EACpD,CAAC,CAEL,MAAgB,CAAC,CACnB",
6
- "names": ["fbq_exports", "__export", "addToCartFbq", "buyNowFbq", "fbq", "gtag", "__toCommonJS", "args", "lineItems", "variant", "quantity", "finalPrice", "trackConfig", "gtagId"]
4
+ "sourcesContent": ["import { fbq, gtag } from '../../utils/track'\nimport { AddToCartLineItems } from '../types'\n\nexport const addToCartFbq = ({ lineItems = [] }: { lineItems: AddToCartLineItems }) => {\n if (lineItems.length && lineItems[0].variant) {\n const { variant, quantity, finalPrice } = lineItems[0]\n fbq('track', 'AddToCart', {\n value: finalPrice?.amount || variant?.price?.amount,\n num_items: quantity,\n currency: variant?.price?.currencyCode,\n content_name: variant?.product?.title, // \u4EA7\u54C1\u5185\u5BB9\u7684\u540D\u5B57\n content_type: 'product_group',\n content_ids: String(variant?.id), // \u4EA7\u54C1\u7684varaint id\n content_category: variant?.product?.metafields?.global?.trafficType || 'public', // \u4EA7\u54C1\u5206\u7C7B\n })\n }\n}\n\nexport type FbqBuyNowTrackConfig = {\n gtagId: string\n fbqBuyNowEvent: string\n gtagBuyNowLabel: string\n gtagBuyNowConversion: string\n}\n\nexport const buyNowFbq = ({ trackConfig }: { trackConfig: FbqBuyNowTrackConfig }) => {\n try {\n if (trackConfig?.fbqBuyNowEvent) {\n fbq('trackCustom', trackConfig?.fbqBuyNowEvent)\n }\n\n if (trackConfig?.gtagBuyNowLabel) {\n gtag('event', trackConfig?.gtagBuyNowConversion || 'conversion', {\n send_to: `${trackConfig?.gtagId}/${trackConfig?.gtagBuyNowLabel}`,\n })\n }\n } catch (error) {}\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,EAAA,cAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAA0B,6BAGnB,MAAMH,EAAe,CAAC,CAAE,UAAAI,EAAY,CAAC,CAAE,IAAyC,CACrF,GAAIA,EAAU,QAAUA,EAAU,CAAC,EAAE,QAAS,CAC5C,KAAM,CAAE,QAAAC,EAAS,SAAAC,EAAU,WAAAC,CAAW,EAAIH,EAAU,CAAC,KACrD,OAAI,QAAS,YAAa,CACxB,MAAOG,GAAY,QAAUF,GAAS,OAAO,OAC7C,UAAWC,EACX,SAAUD,GAAS,OAAO,aAC1B,aAAcA,GAAS,SAAS,MAChC,aAAc,gBACd,YAAa,OAAOA,GAAS,EAAE,EAC/B,iBAAkBA,GAAS,SAAS,YAAY,QAAQ,aAAe,QACzE,CAAC,CACH,CACF,EASaJ,EAAY,CAAC,CAAE,YAAAO,CAAY,IAA6C,CACnF,GAAI,CACEA,GAAa,mBACf,OAAI,cAAeA,GAAa,cAAc,EAG5CA,GAAa,oBACf,QAAK,QAASA,GAAa,sBAAwB,aAAc,CAC/D,QAAS,GAAGA,GAAa,MAAM,IAAIA,GAAa,eAAe,EACjE,CAAC,CAEL,MAAgB,CAAC,CACnB",
6
+ "names": ["fbq_exports", "__export", "addToCartFbq", "buyNowFbq", "__toCommonJS", "import_track", "lineItems", "variant", "quantity", "finalPrice", "trackConfig"]
7
7
  }
@@ -0,0 +1,26 @@
1
+ import { AddToCartLineItems, BuyNowLineItems, GtmParams } from '../types';
2
+ import { Cart } from '../../shopify/types/cart';
3
+ declare global {
4
+ interface Window {
5
+ dataLayer?: any[];
6
+ gtag?: (...args: any) => void;
7
+ }
8
+ }
9
+ export declare const gaTrack: (data: any) => "" | undefined;
10
+ export declare const addToCartGa: ({ lineItems, gtmParams, }: {
11
+ lineItems: AddToCartLineItems;
12
+ gtmParams?: GtmParams;
13
+ }) => void;
14
+ export declare const buyNowGa: ({ lineItems, gtmParams }: {
15
+ lineItems: BuyNowLineItems;
16
+ gtmParams?: GtmParams;
17
+ }) => void;
18
+ export declare const cartCheckoutGa: ({ cart, gtmParams }: {
19
+ cart: Cart;
20
+ gtmParams?: GtmParams;
21
+ }) => void;
22
+ export declare function gaNormalClick({ position, label }: {
23
+ position: string;
24
+ label: string;
25
+ }): void;
26
+ //# sourceMappingURL=gtm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gtm.d.ts","sourceRoot":"","sources":["../../../../src/cart/track/gtm.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACzE,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAG/C,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,SAAS,CAAC,EAAE,GAAG,EAAE,CAAA;QACjB,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;KAC9B;CACF;AAED,eAAO,MAAM,OAAO,GAAI,MAAM,GAAG,mBAehC,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,2BAGzB;IACD,SAAS,EAAE,kBAAkB,CAAA;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,SAwCA,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,0BAAoC;IAAE,SAAS,EAAE,eAAe,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,CAAA;CAAE,SAwCjH,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,qBAA0B;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,CAAA;CAAE,SAyB7F,CAAA;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,QAUrF"}
@@ -0,0 +1,2 @@
1
+ "use strict";var p=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var g=(e,t)=>{for(var n in t)p(e,n,{get:t[n],enumerable:!0})},v=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of _(t))!y.call(e,i)&&i!==n&&p(e,i,{get:()=>t[i],enumerable:!(o=d(t,i))||o.enumerable});return e};var l=e=>v(p({},"__esModule",{value:!0}),e);var b={};g(b,{addToCartGa:()=>w,buyNowGa:()=>h,cartCheckoutGa:()=>f,gaNormalClick:()=>C,gaTrack:()=>c});module.exports=l(b);var m=require("decimal.js"),s=require("../utils");const c=e=>{if(typeof window>"u"||(window.dataLayer=window?.dataLayer||[],!Array.isArray(window.dataLayer)))return"";try{window?.dataLayer?.push({event_parameters:null}),window?.dataLayer?.push(e||{})}catch(t){console.log("pageGTMEvent error",t)}},w=({lineItems:e=[],gtmParams:t={}})=>{if(!e.length)return;const{variant:n}=e[0],o=n?.price?.currencyCode,i=e?.reduce((r,{variant:u})=>new m.Decimal(r||0).plus(u?.price?.amount||0).toNumber(),0),a=(0,s.getQuery)().searchTerm;c({event:"ga4Event",event_name:"add_to_cart",event_parameters:{page_group:t?.pageGroup,currency:o,value:i,position:t?.position||"",...a&&{search_term:a,item_list_name:"innersite_search"},items:e?.map(({variant:r,quantity:u})=>({item_id:r?.sku,item_name:r?.product?.title||r?.product?.name,item_brand:t?.brand||"",item_category:r?.product?.productType||"",item_variant:r?.title||r?.name,price:r?.finalPrice?.amount??r?.price?.amount,quantity:u||1})),...t?.ga4Params}})},h=({lineItems:e=[],gtmParams:t={}})=>{if(e.length){const n=e[0].variant.price.currencyCode,o=e?.reduce((a,r)=>new m.Decimal(a||0).plus(r?.finalPrice?.amount??(r?.variant.price.amount||0)).mul(r.quantity||1).toNumber(),0),i=(0,s.getQuery)().searchTerm;c({event:"ga4Event",event_name:"begin_checkout",value:o,event_parameters:{...i&&{search_term:i,item_list_name:"innersite_search"},position:t?.position,page_group:t.pageGroup,currency:n,value:o,items:e?.map(a=>({item_id:a.variant.sku,item_name:a.variant.product.title,item_brand:a.variant.product.vendor||t?.brand||"",item_category:a.variant.product.productType,item_variant:a.variant.title,price:a.finalPrice?.amount||a.variant.price.amount,quantity:a.quantity||1})),...t.ga4Params}})}else return},f=({cart:e,gtmParams:t={}})=>{e?.lineItems.length&&c({event:"ga4Event",event_name:"begin_checkout",event_parameters:{page_group:t?.pageGroup,position:"Cart Pop Up_Checkout",currency:e?.currency?.code,value:e?.totalPrice,items:e?.lineItems.map(n=>{const o=n?.variant;return{item_id:o?.sku,item_name:n?.name,item_variant:o?.title,price:o?.price,quantity:n?.quantity||1}})}})};function C({position:e,label:t}){c({event:"ga4Event",event_name:"lp_button",event_parameters:{page_group:"soundcoreCredits Rewards Program",position:e,button_name:t}})}
2
+ //# sourceMappingURL=gtm.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/cart/track/gtm.ts"],
4
+ "sourcesContent": ["// GA \u57CB\u70B9\nimport { Decimal } from 'decimal.js'\n\nimport { AddToCartLineItems, BuyNowLineItems, GtmParams } from '../types'\nimport { Cart } from '../../shopify/types/cart'\nimport { getQuery } from '../utils'\n\ndeclare global {\n interface Window {\n dataLayer?: any[]\n gtag?: (...args: any) => void\n }\n}\n\nexport const gaTrack = (data: any) => {\n if (typeof window === 'undefined') {\n return ''\n }\n window.dataLayer = window?.dataLayer || []\n if (!Array.isArray(window.dataLayer)) {\n return ''\n }\n\n try {\n window?.dataLayer?.push({ event_parameters: null })\n window?.dataLayer?.push(data || {})\n } catch (error) {\n console.log('pageGTMEvent error', error)\n }\n}\n\nexport const addToCartGa = ({\n lineItems = [],\n gtmParams = {},\n}: {\n lineItems: AddToCartLineItems\n gtmParams?: GtmParams\n}) => {\n if (!lineItems.length) {\n return\n }\n\n const { variant } = lineItems[0]\n\n const currencyCode = variant?.price?.currencyCode\n const totalPrice = lineItems?.reduce(\n (prev, { variant }) => new Decimal(prev || 0).plus(variant?.price?.amount || 0).toNumber(),\n 0\n )\n\n const searchTerm = getQuery().searchTerm\n\n gaTrack({\n event: 'ga4Event',\n event_name: 'add_to_cart',\n event_parameters: {\n page_group: gtmParams?.pageGroup,\n currency: currencyCode,\n value: totalPrice, // Total price after discount\n position: gtmParams?.position || '', // Module name\n ...(searchTerm && {\n // \u7AD9\u5185\u641C\u7D22\u53C2\u6570\n search_term: searchTerm,\n item_list_name: 'innersite_search',\n }),\n items: lineItems?.map(({ variant, quantity }) => ({\n item_id: variant?.sku,\n item_name: variant?.product?.title || variant?.product?.name,\n item_brand: gtmParams?.brand || '',\n item_category: variant?.product?.productType || '',\n item_variant: variant?.title || variant?.name,\n price: variant?.finalPrice?.amount ?? variant?.price?.amount, // Product unit price\n quantity: quantity || 1,\n })),\n ...gtmParams?.ga4Params,\n },\n })\n}\n\nexport const buyNowGa = ({ lineItems = [], gtmParams = {} }: { lineItems: BuyNowLineItems; gtmParams?: GtmParams }) => {\n if (!lineItems.length) {\n return\n } else {\n const currencyCode = lineItems[0].variant.price.currencyCode\n const totalPrice = lineItems?.reduce(\n (prev, lineItem) =>\n new Decimal(prev || 0)\n .plus(lineItem?.finalPrice?.amount ?? (lineItem?.variant.price.amount || 0))\n .mul(lineItem.quantity || 1)\n .toNumber(),\n 0\n )\n const searchTerm = getQuery().searchTerm\n gaTrack({\n event: 'ga4Event',\n event_name: 'begin_checkout',\n value: totalPrice, // Total price after discount\n event_parameters: {\n ...(searchTerm && {\n search_term: searchTerm, // Use query directly\n item_list_name: 'innersite_search',\n }),\n position: gtmParams?.position,\n page_group: gtmParams.pageGroup,\n currency: currencyCode,\n value: totalPrice, // Total price after discount\n items: lineItems?.map(lineItem => ({\n item_id: lineItem.variant.sku,\n item_name: lineItem.variant.product.title,\n item_brand: lineItem.variant.product.vendor || gtmParams?.brand || '',\n item_category: lineItem.variant.product.productType,\n item_variant: lineItem.variant.title,\n price: lineItem.finalPrice?.amount || lineItem.variant.price.amount, //\u4EA7\u54C1\u5355\u4EF7\n quantity: lineItem.quantity || 1,\n })),\n ...gtmParams.ga4Params,\n },\n })\n }\n}\n\nexport const cartCheckoutGa = ({ cart, gtmParams = {} }: { cart: Cart; gtmParams?: GtmParams }) => {\n if (!cart?.lineItems.length) {\n return\n }\n\n gaTrack({\n event: 'ga4Event',\n event_name: 'begin_checkout',\n event_parameters: {\n page_group: gtmParams?.pageGroup,\n position: 'Cart Pop Up_Checkout',\n currency: cart?.currency?.code,\n value: cart?.totalPrice,\n items: cart?.lineItems.map(product => {\n const variant = product?.variant\n return {\n item_id: variant?.sku,\n item_name: product?.name,\n item_variant: variant?.title,\n price: variant?.price,\n quantity: product?.quantity || 1,\n }\n }),\n },\n })\n}\n\nexport function gaNormalClick({ position, label }: { position: string; label: string }) {\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_button',\n event_parameters: {\n page_group: 'soundcoreCredits Rewards Program',\n position: position,\n button_name: label,\n },\n })\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["gtm_exports", "__export", "addToCartGa", "buyNowGa", "cartCheckoutGa", "gaNormalClick", "gaTrack", "__toCommonJS", "import_decimal", "import_utils", "data", "error", "lineItems", "gtmParams", "variant", "currencyCode", "totalPrice", "prev", "searchTerm", "quantity", "lineItem", "cart", "product", "position", "label"]
7
+ }
@@ -0,0 +1,135 @@
1
+ import { ProductVariant } from '../../shopify/types/product';
2
+ import { Product } from '../../shopify/types';
3
+ import { LineItem } from '../../shopify/types/cart';
4
+ export type AutoFreeGift = {
5
+ currentTier: {
6
+ amount: number;
7
+ gift?: ProductVariant;
8
+ };
9
+ nextTierGoal: {
10
+ amount: number;
11
+ gift?: ProductVariant;
12
+ };
13
+ };
14
+ export type DiscountLabel = {
15
+ cart_checkout_label: string;
16
+ product_label: string;
17
+ sold_out_label: string;
18
+ };
19
+ export type AutoFreeGiftMainProduct = {
20
+ spend_money_type: number;
21
+ variant_id_list: string[];
22
+ all_store_variant: boolean;
23
+ };
24
+ export type GiftProduct = {
25
+ spend_sum_money: number;
26
+ gift_type: number;
27
+ reward_list: {
28
+ get_unit: number;
29
+ variant_id: string;
30
+ bak_variant_id_list: null;
31
+ }[];
32
+ };
33
+ export type AutoFreeGiftConfig = Config[];
34
+ export type RuleCondition = {
35
+ with_special_url_params: string[];
36
+ without_special_url_params: string[];
37
+ with_user_tags: string[];
38
+ without_user_tags: string[];
39
+ };
40
+ export type MainProductInfo = {
41
+ spend_money_type: SpendMoneyType;
42
+ variant_list: VariantItem[];
43
+ all_store_variant: boolean;
44
+ };
45
+ export type Config = {
46
+ rule_id: number;
47
+ rule_type: RuleType;
48
+ discount_label: {
49
+ cart_checkout_label: string;
50
+ product_label: string;
51
+ sold_out_label: string;
52
+ };
53
+ frontend_labels: {
54
+ key: string;
55
+ label: string;
56
+ desc: string;
57
+ }[];
58
+ apply_unit: number;
59
+ rule_result: {
60
+ buy_rule_type: BuyRuleType;
61
+ spend_get_reward: {
62
+ main_product: MainProductInfo;
63
+ gift_product: GiftProductItem[];
64
+ };
65
+ buy_get_reward: {
66
+ main_product: MainProductInfo;
67
+ gift_product: GiftProductItem[] | null;
68
+ };
69
+ };
70
+ rule_conditions?: RuleCondition[];
71
+ };
72
+ export interface GiftTier {
73
+ spend_sum_money: number;
74
+ gift_type: number;
75
+ reward_list: RewardItem[];
76
+ }
77
+ export interface RewardItem {
78
+ get_unit: number;
79
+ variant_list: VariantItem[];
80
+ }
81
+ export interface VariantItem {
82
+ variant_id: string;
83
+ sku: string;
84
+ handle: string;
85
+ discount_value: number;
86
+ }
87
+ export interface GiftProductItem {
88
+ spend_sum_money: number;
89
+ gift_type: number;
90
+ reward_list: RewardItem[];
91
+ }
92
+ export declare enum RuleType {
93
+ AUTO_FREE_GIFT = 1,// 自动赠品
94
+ BUNDLE = 2,// 组合
95
+ VOLUME_DISCOUNT = 3,// 量价折扣
96
+ ORDER_DISCOUNT = 4,// 订单折扣
97
+ PRICE_DISCOUNT = 5
98
+ }
99
+ export declare enum BuyRuleType {
100
+ BUY_GET_GIFT = 1,// 买赠
101
+ SPEND_GET_GIFT = 2
102
+ }
103
+ export declare enum SpendMoneyType {
104
+ ORIGIN_PRICE = 1,// 原价
105
+ DISCOUNT_PRICE = 2
106
+ }
107
+ export interface FunctionGiftResult {
108
+ qualifyingGift: FormattedGift | null;
109
+ nextTierGoal: GiftTier | null;
110
+ activeCampaign: Config | null;
111
+ isLoading: boolean;
112
+ giftProductsResult?: Product[] | [];
113
+ }
114
+ export interface FormattedGift {
115
+ tier: GiftTier;
116
+ itemsToAdd: CartLineInput[];
117
+ }
118
+ export interface CartLineInput {
119
+ variant: {
120
+ id: string;
121
+ handle: string;
122
+ sku: string;
123
+ };
124
+ quantity: number;
125
+ attributes: {
126
+ key: string;
127
+ value: string;
128
+ }[];
129
+ }
130
+ export type AutoFreeGiftItem = {
131
+ line: LineItem;
132
+ isSoldOut: boolean;
133
+ };
134
+ export type AutoFreeGiftList = AutoFreeGiftItem[] | [];
135
+ //# sourceMappingURL=autoFreeGift.d.ts.map