@beamimpact/web-sdk 1.55.7 → 1.56.3

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 (354) hide show
  1. package/README.md +5 -0
  2. package/dist/chunks/_share-dialog-dependencies-Bk60ibnw.esm.js +2 -0
  3. package/dist/chunks/{_share-dialog-dependencies-BVNp0oLJ.esm.js.map → _share-dialog-dependencies-Bk60ibnw.esm.js.map} +1 -1
  4. package/dist/chunks/_share-dialog-dependencies-D6vA_2f6.esm.js +2 -0
  5. package/dist/chunks/{_share-dialog-dependencies-D4i8Nvve.esm.js.map → _share-dialog-dependencies-D6vA_2f6.esm.js.map} +1 -1
  6. package/dist/chunks/beam-errors-Ci0d3926.esm.js.map +1 -1
  7. package/dist/chunks/{beam-errors-CCe004HS.esm.d.ts → beam-errors-DUQ9pK2V.esm.d.ts} +7 -1
  8. package/dist/chunks/{cart-contents-CLT7p7Gd.esm.d.ts → cart-contents-CEoSx3y4.esm.d.ts} +1 -1
  9. package/dist/chunks/{css-card-grid-CvoGpsJH.esm.js → css-card-grid-DixMt6ek.esm.js} +2 -2
  10. package/dist/chunks/{css-card-grid-CvoGpsJH.esm.js.map → css-card-grid-DixMt6ek.esm.js.map} +1 -1
  11. package/dist/chunks/enforce-config-DHnpgqSK.esm.js +3 -0
  12. package/dist/chunks/enforce-config-DHnpgqSK.esm.js.map +1 -0
  13. package/dist/chunks/enforce-config-DUbQnaLO.esm.js +3 -0
  14. package/dist/chunks/enforce-config-DUbQnaLO.esm.js.map +1 -0
  15. package/dist/chunks/events-COWOQoLW.esm.js +2 -0
  16. package/dist/chunks/{events-Dki0ka4F.esm.js.map → events-COWOQoLW.esm.js.map} +1 -1
  17. package/dist/chunks/{events-B7l6VPsF.esm.d.ts → events-Dwqfqbij.esm.d.ts} +33 -5
  18. package/dist/chunks/index-8rOpG9kf.esm.js +2 -0
  19. package/dist/chunks/index-8rOpG9kf.esm.js.map +1 -0
  20. package/dist/chunks/{index-BAgWh5OK.esm.js → index-B1GmdVT3.esm.js} +2 -2
  21. package/dist/chunks/index-B1GmdVT3.esm.js.map +1 -0
  22. package/dist/chunks/{index-DKAZRTl5.esm.js → index-B2dxbh1d.esm.js} +2 -2
  23. package/dist/chunks/{index-DKAZRTl5.esm.js.map → index-B2dxbh1d.esm.js.map} +1 -1
  24. package/dist/chunks/{index-DPptZHfR.esm.js → index-BEEmYYxP.esm.js} +28 -18
  25. package/dist/chunks/index-BEEmYYxP.esm.js.map +1 -0
  26. package/dist/chunks/{index-CWnHkgy3.esm.js → index-BIEV1MH0.esm.js} +2 -2
  27. package/dist/chunks/{index-CWnHkgy3.esm.js.map → index-BIEV1MH0.esm.js.map} +1 -1
  28. package/dist/chunks/{index-CBS5Fqry.esm.d.ts → index-BLlSL37B.esm.d.ts} +4 -2
  29. package/dist/chunks/{index-C-hPf29c.esm.d.ts → index-BY5lSRmw.esm.d.ts} +4 -1
  30. package/dist/chunks/index-BaWMWAyt.esm.js +2 -0
  31. package/dist/chunks/index-BaWMWAyt.esm.js.map +1 -0
  32. package/dist/chunks/index-BeX4QeUu.esm.js +2 -0
  33. package/dist/chunks/index-BeX4QeUu.esm.js.map +1 -0
  34. package/dist/chunks/{index-CGKJagBi.esm.js → index-C3v-y56g.esm.js} +2 -2
  35. package/dist/chunks/index-C3v-y56g.esm.js.map +1 -0
  36. package/dist/chunks/{index-DEoMwStx.esm.d.ts → index-C_u1FXtO.esm.d.ts} +33 -5
  37. package/dist/chunks/{index-CG2AhvV9.esm.js → index-CqqF1sQo.esm.js} +2 -2
  38. package/dist/chunks/index-CqqF1sQo.esm.js.map +1 -0
  39. package/dist/chunks/index-Cs4Kp9X4.esm.js +2 -0
  40. package/dist/chunks/index-Cs4Kp9X4.esm.js.map +1 -0
  41. package/dist/chunks/index-D20ifskY.esm.d.ts +21 -0
  42. package/dist/chunks/{index-DmUEFwoM.esm.js → index-D3hxLDQF.esm.js} +2 -2
  43. package/dist/chunks/index-D3hxLDQF.esm.js.map +1 -0
  44. package/dist/chunks/{index-DBb5HSkR.esm.js → index-D5TZB-zM.esm.js} +2 -2
  45. package/dist/chunks/index-D5TZB-zM.esm.js.map +1 -0
  46. package/dist/chunks/{index-DTPlqZRf.esm.d.ts → index-DDCtGN21.esm.d.ts} +15 -2
  47. package/dist/chunks/index-DSJACB_p.esm.js +2 -0
  48. package/dist/chunks/{index-BNjsFEGn.esm.js.map → index-DSJACB_p.esm.js.map} +1 -1
  49. package/dist/chunks/{index-Ct1m4IjM.esm.js → index-DmjZnpod.esm.js} +2 -2
  50. package/dist/chunks/index-DmjZnpod.esm.js.map +1 -0
  51. package/dist/chunks/{index-rxgS4BLp.esm.d.ts → index-DyUuvdr3.esm.d.ts} +6 -2
  52. package/dist/chunks/{index-Bliur1O3.esm.d.ts → index-EJRmgmQu.esm.d.ts} +33 -5
  53. package/dist/chunks/{index-DvhxjeiK.esm.js → index-UMeAzKTG.esm.js} +28 -18
  54. package/dist/chunks/index-UMeAzKTG.esm.js.map +1 -0
  55. package/dist/chunks/index-hghrT7Z_.esm.d.ts +40 -0
  56. package/dist/chunks/index-mppXVWCH.esm.js +2 -0
  57. package/dist/chunks/{index-IKiJwo5v.esm.js.map → index-mppXVWCH.esm.js.map} +1 -1
  58. package/dist/chunks/{index-DjrWwYdg.esm.js → index-n62IxH5D.esm.js} +2 -2
  59. package/dist/chunks/index-n62IxH5D.esm.js.map +1 -0
  60. package/dist/chunks/{index-tbwbkOdj.esm.js → index-nAPzvUWE.esm.js} +2 -2
  61. package/dist/chunks/index-nAPzvUWE.esm.js.map +1 -0
  62. package/dist/chunks/{index-DXj15KHe.esm.d.ts → index-xcGPhpiO.esm.d.ts} +13 -1
  63. package/dist/chunks/lit-JRlupCB5.esm.js +25 -0
  64. package/dist/chunks/lit-JRlupCB5.esm.js.map +1 -0
  65. package/dist/chunks/loading-template-BFvXaTlD.esm.js +2 -0
  66. package/dist/chunks/{loading-template-DG4lkIIc.esm.js.map → loading-template-BFvXaTlD.esm.js.map} +1 -1
  67. package/dist/chunks/{localize-Btu9xYcE.esm.js → localize-Dg7NgKIP.esm.js} +4 -4
  68. package/dist/chunks/localize-Dg7NgKIP.esm.js.map +1 -0
  69. package/dist/chunks/{localize-C25pEGnx.esm.js → localize-DkAbsh05.esm.js} +4 -4
  70. package/dist/chunks/localize-DkAbsh05.esm.js.map +1 -0
  71. package/dist/chunks/lodash-BSs6Il-c.esm.js +2 -0
  72. package/dist/chunks/lodash-BSs6Il-c.esm.js.map +1 -0
  73. package/dist/chunks/{openapi-spec-Bk7E2QQP.esm.d.ts → openapi-spec-B4z4_CMq.esm.d.ts} +18 -0
  74. package/dist/chunks/{order-page-C3b348k0.esm.js → order-page-B0WbVrvh.esm.js} +2 -2
  75. package/dist/chunks/order-page-B0WbVrvh.esm.js.map +1 -0
  76. package/dist/chunks/{order-page-M7a2TINy.esm.d.ts → order-page-CSEjG6ma.esm.d.ts} +19 -18
  77. package/dist/chunks/{order-page-CuL1s6HR.esm.js → order-page-CT3hnhzf.esm.js} +2 -2
  78. package/dist/chunks/order-page-CT3hnhzf.esm.js.map +1 -0
  79. package/dist/chunks/{progress-bar-DF7UuuHb.esm.js → progress-bar-B82FOT8n.esm.js} +2 -2
  80. package/dist/chunks/{progress-bar-DF7UuuHb.esm.js.map → progress-bar-B82FOT8n.esm.js.map} +1 -1
  81. package/dist/chunks/{promo-pill-label-BihVdXIv.esm.js → promo-pill-label-D_4zJ7uy.esm.js} +3 -3
  82. package/dist/chunks/{promo-pill-label-BihVdXIv.esm.js.map → promo-pill-label-D_4zJ7uy.esm.js.map} +1 -1
  83. package/dist/chunks/{promo-pill-label-CD0lWdsv.esm.js → promo-pill-label-DcsiJS_N.esm.js} +3 -3
  84. package/dist/chunks/{promo-pill-label-CD0lWdsv.esm.js.map → promo-pill-label-DcsiJS_N.esm.js.map} +1 -1
  85. package/dist/chunks/{promo-types-BPmDZ5dF.esm.d.ts → promo-types-CmZzhkpN.esm.d.ts} +3 -2
  86. package/dist/chunks/promo-types-DKAOFHJr.esm.js.map +1 -1
  87. package/dist/chunks/{responsive-BR8qUfBa.esm.js → responsive-CIV4sFdH.esm.js} +2 -2
  88. package/dist/chunks/{responsive-BR8qUfBa.esm.js.map → responsive-CIV4sFdH.esm.js.map} +1 -1
  89. package/dist/chunks/routes-BIMwJ8u9.esm.js +2 -0
  90. package/dist/chunks/routes-BIMwJ8u9.esm.js.map +1 -0
  91. package/dist/chunks/routes-DSu5s3K7.esm.js +2 -0
  92. package/dist/chunks/routes-DSu5s3K7.esm.js.map +1 -0
  93. package/dist/chunks/routes-OxC3Ah30.esm.d.ts +638 -0
  94. package/dist/chunks/{share-button-BnNOZHBt.esm.js → share-button-CLMw49f5.esm.js} +2 -2
  95. package/dist/chunks/{share-button-BnNOZHBt.esm.js.map → share-button-CLMw49f5.esm.js.map} +1 -1
  96. package/dist/chunks/{share-button-BzmG48J9.esm.js → share-button-DXS3zbJz.esm.js} +2 -2
  97. package/dist/chunks/{share-button-BzmG48J9.esm.js.map → share-button-DXS3zbJz.esm.js.map} +1 -1
  98. package/dist/chunks/{share-button-BJ8T-uYK.esm.js → share-button-DkTpGZk1.esm.js} +8 -3
  99. package/dist/chunks/share-button-DkTpGZk1.esm.js.map +1 -0
  100. package/dist/chunks/{share-button-VEIdBFu3.esm.js → share-button-Dzc7loia.esm.js} +8 -3
  101. package/dist/chunks/share-button-Dzc7loia.esm.js.map +1 -0
  102. package/dist/chunks/{types-CPxMwnoR.esm.d.ts → types-D_PLq1pj.esm.d.ts} +1 -1
  103. package/dist/chunks/{update-cart-HlVGSYR7.esm.js → update-cart-ByUvNLyZ.esm.js} +2 -2
  104. package/dist/chunks/update-cart-ByUvNLyZ.esm.js.map +1 -0
  105. package/dist/chunks/{update-cart-CauFT0AF.esm.d.ts → update-cart-DWgFuC7U.esm.d.ts} +3 -2
  106. package/dist/chunks/{update-cart-C6BdmBt1.esm.js → update-cart-yj_9VGHp.esm.js} +2 -2
  107. package/dist/chunks/update-cart-yj_9VGHp.esm.js.map +1 -0
  108. package/dist/chunks/vendor-ckSdd6aH.esm.js +1286 -0
  109. package/dist/chunks/vendor-ckSdd6aH.esm.js.map +1 -0
  110. package/dist/components/beam-partner-logos.esm.js +5 -5
  111. package/dist/components/beam-partner-logos.esm.js.map +1 -1
  112. package/dist/components/beam-partner-logos.js +5 -5
  113. package/dist/components/beam-partner-logos.js.map +1 -1
  114. package/dist/components/community-impact.d.ts +1 -3
  115. package/dist/components/community-impact.esm.js +11 -6
  116. package/dist/components/community-impact.esm.js.map +1 -1
  117. package/dist/components/community-impact.js +11 -6
  118. package/dist/components/community-impact.js.map +1 -1
  119. package/dist/components/cumulative-impact.d.ts +1 -1
  120. package/dist/components/cumulative-impact.esm.js +10 -10
  121. package/dist/components/cumulative-impact.esm.js.map +1 -1
  122. package/dist/components/cumulative-impact.js +10 -10
  123. package/dist/components/cumulative-impact.js.map +1 -1
  124. package/dist/components/impact-overview.d.ts +36 -39
  125. package/dist/components/impact-overview.esm.js +11 -6
  126. package/dist/components/impact-overview.esm.js.map +1 -1
  127. package/dist/components/impact-overview.js +11 -6
  128. package/dist/components/impact-overview.js.map +1 -1
  129. package/dist/components/index.d.ts +5 -8
  130. package/dist/components/index.esm.js +1 -1
  131. package/dist/components/index.js +1 -1
  132. package/dist/components/post-purchase.d.ts +11 -12
  133. package/dist/components/post-purchase.esm.js +4 -4
  134. package/dist/components/post-purchase.esm.js.map +1 -1
  135. package/dist/components/post-purchase.js +4 -4
  136. package/dist/components/post-purchase.js.map +1 -1
  137. package/dist/components/product-details-page.d.ts +25 -26
  138. package/dist/components/product-details-page.esm.js +21 -21
  139. package/dist/components/product-details-page.esm.js.map +1 -1
  140. package/dist/components/product-details-page.js +21 -21
  141. package/dist/components/product-details-page.js.map +1 -1
  142. package/dist/components/redeem-transaction.d.ts +4 -7
  143. package/dist/components/redeem-transaction.esm.js +1 -1
  144. package/dist/components/redeem-transaction.js +1 -1
  145. package/dist/components/select-nonprofit.d.ts +4 -16
  146. package/dist/components/select-nonprofit.esm.js +6 -5
  147. package/dist/components/select-nonprofit.esm.js.map +1 -1
  148. package/dist/components/select-nonprofit.js +6 -5
  149. package/dist/components/select-nonprofit.js.map +1 -1
  150. package/dist/components/select-subscription-nonprofit.d.ts +2 -3
  151. package/dist/components/select-subscription-nonprofit.esm.js +42 -21
  152. package/dist/components/select-subscription-nonprofit.esm.js.map +1 -1
  153. package/dist/components/select-subscription-nonprofit.js +42 -21
  154. package/dist/components/select-subscription-nonprofit.js.map +1 -1
  155. package/dist/components/shopify.d.ts +8 -12
  156. package/dist/components/shopify.esm.js +1 -1
  157. package/dist/components/shopify.js +1 -1
  158. package/dist/components/social-share.d.ts +13 -2
  159. package/dist/components/social-share.esm.js +11 -4
  160. package/dist/components/social-share.esm.js.map +1 -1
  161. package/dist/components/social-share.js +11 -4
  162. package/dist/components/social-share.js.map +1 -1
  163. package/dist/components/subscription-impact.d.ts +37 -50
  164. package/dist/components/subscription-impact.esm.js +15 -3
  165. package/dist/components/subscription-impact.esm.js.map +1 -1
  166. package/dist/components/subscription-impact.js +15 -3
  167. package/dist/components/subscription-impact.js.map +1 -1
  168. package/dist/components/subscription-management.d.ts +92 -93
  169. package/dist/components/subscription-management.esm.js +4 -3
  170. package/dist/components/subscription-management.esm.js.map +1 -1
  171. package/dist/components/subscription-management.js +4 -3
  172. package/dist/components/subscription-management.js.map +1 -1
  173. package/dist/index.d.ts +19 -22
  174. package/dist/index.esm.js +1 -1
  175. package/dist/index.js +1 -1
  176. package/dist/integrations/beam.d.ts +3 -2
  177. package/dist/integrations/beam.esm.js +1 -1
  178. package/dist/integrations/beam.esm.js.map +1 -1
  179. package/dist/integrations/beam.js +1 -1
  180. package/dist/integrations/beam.js.map +1 -1
  181. package/dist/integrations/cart.d.ts +3 -3
  182. package/dist/integrations/cart.esm.js +1 -1
  183. package/dist/integrations/cart.js +1 -1
  184. package/dist/integrations/index.d.ts +14 -18
  185. package/dist/integrations/index.esm.js +1 -1
  186. package/dist/integrations/index.js +1 -1
  187. package/dist/integrations/logs.d.ts +2 -2
  188. package/dist/integrations/logs.esm.js +1 -1
  189. package/dist/integrations/logs.js +1 -1
  190. package/dist/integrations/promoManager.d.ts +1 -1
  191. package/dist/integrations/promoManager.esm.js +1 -1
  192. package/dist/integrations/promoManager.esm.js.map +1 -1
  193. package/dist/integrations/promoManager.js +1 -1
  194. package/dist/integrations/promoManager.js.map +1 -1
  195. package/dist/integrations/session.d.ts +1 -1
  196. package/dist/integrations/session.esm.js +1 -1
  197. package/dist/integrations/session.js +1 -1
  198. package/dist/integrations/shopify.d.ts +6 -10
  199. package/dist/integrations/shopify.esm.js +1 -1
  200. package/dist/integrations/shopify.js +1 -1
  201. package/dist/integrations/statsig.d.ts +9 -5
  202. package/dist/integrations/statsig.esm.js +14 -14
  203. package/dist/integrations/statsig.esm.js.map +1 -1
  204. package/dist/integrations/statsig.js +14 -14
  205. package/dist/integrations/statsig.js.map +1 -1
  206. package/dist/integrations/utils.d.ts +7 -7
  207. package/dist/integrations/utils.esm.js +1 -1
  208. package/dist/integrations/utils.js +1 -1
  209. package/dist/react/beam-partner-logos.esm.js +1 -1
  210. package/dist/react/beam-partner-logos.esm.js.map +1 -1
  211. package/dist/react/beam-partner-logos.js +1 -1
  212. package/dist/react/beam-partner-logos.js.map +1 -1
  213. package/dist/react/community-impact.d.ts +1 -3
  214. package/dist/react/community-impact.esm.js +1 -1
  215. package/dist/react/community-impact.esm.js.map +1 -1
  216. package/dist/react/community-impact.js +1 -1
  217. package/dist/react/community-impact.js.map +1 -1
  218. package/dist/react/cumulative-impact.d.ts +1 -1
  219. package/dist/react/cumulative-impact.esm.js +1 -1
  220. package/dist/react/cumulative-impact.esm.js.map +1 -1
  221. package/dist/react/cumulative-impact.js +1 -1
  222. package/dist/react/cumulative-impact.js.map +1 -1
  223. package/dist/react/impact-overview.d.ts +1 -4
  224. package/dist/react/impact-overview.esm.js +1 -1
  225. package/dist/react/impact-overview.esm.js.map +1 -1
  226. package/dist/react/impact-overview.js +1 -1
  227. package/dist/react/impact-overview.js.map +1 -1
  228. package/dist/react/index.d.ts +18 -21
  229. package/dist/react/index.esm.js +1 -1
  230. package/dist/react/index.js +1 -1
  231. package/dist/react/post-purchase.d.ts +3 -7
  232. package/dist/react/post-purchase.esm.js +1 -1
  233. package/dist/react/post-purchase.esm.js.map +1 -1
  234. package/dist/react/post-purchase.js +1 -1
  235. package/dist/react/post-purchase.js.map +1 -1
  236. package/dist/react/product-details-page.d.ts +1 -2
  237. package/dist/react/product-details-page.esm.js +1 -1
  238. package/dist/react/product-details-page.esm.js.map +1 -1
  239. package/dist/react/product-details-page.js +1 -1
  240. package/dist/react/product-details-page.js.map +1 -1
  241. package/dist/react/redeem-transaction.d.ts +5 -8
  242. package/dist/react/redeem-transaction.esm.js +1 -1
  243. package/dist/react/redeem-transaction.esm.js.map +1 -1
  244. package/dist/react/redeem-transaction.js +1 -1
  245. package/dist/react/redeem-transaction.js.map +1 -1
  246. package/dist/react/select-nonprofit.d.ts +5 -7
  247. package/dist/react/select-nonprofit.esm.js +1 -1
  248. package/dist/react/select-nonprofit.esm.js.map +1 -1
  249. package/dist/react/select-nonprofit.js +1 -1
  250. package/dist/react/select-nonprofit.js.map +1 -1
  251. package/dist/react/select-subscription-nonprofit.d.ts +5 -6
  252. package/dist/react/select-subscription-nonprofit.esm.js +1 -1
  253. package/dist/react/select-subscription-nonprofit.esm.js.map +1 -1
  254. package/dist/react/select-subscription-nonprofit.js +1 -1
  255. package/dist/react/select-subscription-nonprofit.js.map +1 -1
  256. package/dist/react/social-share.d.ts +1 -2
  257. package/dist/react/social-share.esm.js +1 -1
  258. package/dist/react/social-share.esm.js.map +1 -1
  259. package/dist/react/social-share.js +1 -1
  260. package/dist/react/social-share.js.map +1 -1
  261. package/dist/react/subscription-impact.d.ts +1 -3
  262. package/dist/react/subscription-impact.esm.js +1 -1
  263. package/dist/react/subscription-impact.esm.js.map +1 -1
  264. package/dist/react/subscription-impact.js +1 -1
  265. package/dist/react/subscription-impact.js.map +1 -1
  266. package/dist/react/subscription-management.d.ts +4 -6
  267. package/dist/react/subscription-management.esm.js +1 -1
  268. package/dist/react/subscription-management.esm.js.map +1 -1
  269. package/dist/react/subscription-management.js +1 -1
  270. package/dist/react/subscription-management.js.map +1 -1
  271. package/dist/utils/beam-errors.d.ts +1 -1
  272. package/dist/utils/cookies.d.ts +1 -41
  273. package/dist/utils/cookies.esm.js +1 -1
  274. package/dist/utils/cookies.esm.js.map +1 -1
  275. package/dist/utils/cookies.js +1 -1
  276. package/dist/utils/cookies.js.map +1 -1
  277. package/dist/utils/debounce.esm.js +1 -1
  278. package/dist/utils/debounce.js +1 -1
  279. package/dist/utils/events.d.ts +5 -5
  280. package/dist/utils/events.esm.js +1 -1
  281. package/dist/utils/events.js +1 -1
  282. package/dist/utils/index.d.ts +7 -7
  283. package/dist/utils/index.esm.js +1 -1
  284. package/dist/utils/index.js +1 -1
  285. package/dist/utils/is-equal.esm.js +1 -1
  286. package/dist/utils/is-equal.js +1 -1
  287. package/dist/utils/makeApiKeyHeader.esm.js.map +1 -1
  288. package/dist/utils/makeApiKeyHeader.js.map +1 -1
  289. package/dist/utils/memoize-last.esm.js +1 -1
  290. package/dist/utils/memoize-last.esm.js.map +1 -1
  291. package/dist/utils/memoize-last.js +1 -1
  292. package/dist/utils/memoize-last.js.map +1 -1
  293. package/dist/utils/network-listeners.esm.js +1 -1
  294. package/dist/utils/network-listeners.esm.js.map +1 -1
  295. package/dist/utils/network-listeners.js +1 -1
  296. package/dist/utils/network-listeners.js.map +1 -1
  297. package/dist/utils/promoManager.d.ts +6 -18
  298. package/dist/utils/promoManager.esm.js.map +1 -1
  299. package/dist/utils/promoManager.js.map +1 -1
  300. package/dist/utils/wait-for-element.esm.js.map +1 -1
  301. package/dist/utils/wait-for-element.js.map +1 -1
  302. package/package.json +42 -39
  303. package/dist/chunks/_share-dialog-dependencies-BVNp0oLJ.esm.js +0 -2
  304. package/dist/chunks/_share-dialog-dependencies-D4i8Nvve.esm.js +0 -2
  305. package/dist/chunks/enforce-config-Ba1JkOHs.esm.js +0 -3
  306. package/dist/chunks/enforce-config-Ba1JkOHs.esm.js.map +0 -1
  307. package/dist/chunks/enforce-config-CZ3ToOgr.esm.js +0 -3
  308. package/dist/chunks/enforce-config-CZ3ToOgr.esm.js.map +0 -1
  309. package/dist/chunks/events-Dki0ka4F.esm.js +0 -2
  310. package/dist/chunks/index-BAgWh5OK.esm.js.map +0 -1
  311. package/dist/chunks/index-BNjsFEGn.esm.js +0 -2
  312. package/dist/chunks/index-C0J0SqUr.esm.js +0 -2
  313. package/dist/chunks/index-C0J0SqUr.esm.js.map +0 -1
  314. package/dist/chunks/index-CG2AhvV9.esm.js.map +0 -1
  315. package/dist/chunks/index-CGKJagBi.esm.js.map +0 -1
  316. package/dist/chunks/index-CLNjLpMX.esm.js +0 -2
  317. package/dist/chunks/index-CLNjLpMX.esm.js.map +0 -1
  318. package/dist/chunks/index-Ct1m4IjM.esm.js.map +0 -1
  319. package/dist/chunks/index-DBb5HSkR.esm.js.map +0 -1
  320. package/dist/chunks/index-DFGxZmsj.esm.js +0 -2
  321. package/dist/chunks/index-DFGxZmsj.esm.js.map +0 -1
  322. package/dist/chunks/index-DHK-p5LV.esm.d.ts +0 -15
  323. package/dist/chunks/index-DPptZHfR.esm.js.map +0 -1
  324. package/dist/chunks/index-DbaDUPup.esm.d.ts +0 -28
  325. package/dist/chunks/index-DjrWwYdg.esm.js.map +0 -1
  326. package/dist/chunks/index-DmUEFwoM.esm.js.map +0 -1
  327. package/dist/chunks/index-DvhxjeiK.esm.js.map +0 -1
  328. package/dist/chunks/index-IKiJwo5v.esm.js +0 -2
  329. package/dist/chunks/index-NHPT4c0V.esm.js +0 -2
  330. package/dist/chunks/index-NHPT4c0V.esm.js.map +0 -1
  331. package/dist/chunks/index-tbwbkOdj.esm.js.map +0 -1
  332. package/dist/chunks/lit-WqMxC_PA.esm.js +0 -34
  333. package/dist/chunks/lit-WqMxC_PA.esm.js.map +0 -1
  334. package/dist/chunks/loading-template-DG4lkIIc.esm.js +0 -2
  335. package/dist/chunks/localize-Btu9xYcE.esm.js.map +0 -1
  336. package/dist/chunks/localize-C25pEGnx.esm.js.map +0 -1
  337. package/dist/chunks/lodash-D3TLHRR_.esm.js +0 -2
  338. package/dist/chunks/lodash-D3TLHRR_.esm.js.map +0 -1
  339. package/dist/chunks/order-page-C3b348k0.esm.js.map +0 -1
  340. package/dist/chunks/order-page-CuL1s6HR.esm.js.map +0 -1
  341. package/dist/chunks/progress-bar-CveZ8E6Q.esm.d.ts +0 -15
  342. package/dist/chunks/promo-pill-label-BXRqZHET.esm.d.ts +0 -19
  343. package/dist/chunks/routes-BHChxaFQ.esm.js +0 -2
  344. package/dist/chunks/routes-BHChxaFQ.esm.js.map +0 -1
  345. package/dist/chunks/routes-BoeGe1RQ.esm.d.ts +0 -638
  346. package/dist/chunks/routes-E1gMJl6d.esm.js +0 -2
  347. package/dist/chunks/routes-E1gMJl6d.esm.js.map +0 -1
  348. package/dist/chunks/share-button-BJ8T-uYK.esm.js.map +0 -1
  349. package/dist/chunks/share-button-CDVVaxEc.esm.d.ts +0 -27
  350. package/dist/chunks/share-button-VEIdBFu3.esm.js.map +0 -1
  351. package/dist/chunks/update-cart-C6BdmBt1.esm.js.map +0 -1
  352. package/dist/chunks/update-cart-HlVGSYR7.esm.js.map +0 -1
  353. package/dist/chunks/vendor-KKSARHWL.esm.js +0 -1284
  354. package/dist/chunks/vendor-KKSARHWL.esm.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"routes-E1gMJl6d.esm.js","sources":["../../src/api-sdk/constants.ts","../../src/api-sdk/fetch-json.ts","../../src/api-sdk/make-openapi-method.ts","../../src/api-sdk/v3/routes.ts"],"sourcesContent":["import { PROMO_LOCAL_STORAGE_KEY } from \"../shared/promo-types\";\nimport { LANGUAGES, TUrl } from \"./types\";\n\nexport const DEFAULT_BASE_URL: TUrl = \"https://api.beamimpact.com\";\n\nexport const DEFAULT_LOG_URL = \"https://production.beamimpactlogs.com\";\n\nexport const SUPPORTED_LANGUAGES: Record<string, LANGUAGES> = {\n en: \"en\",\n fr: \"fr\",\n de: \"de\",\n es: \"es\",\n it: \"it\",\n pl: \"pl\",\n ja: \"ja\",\n};\n\nexport const WIDGET_NAMES = {\n select_nonprofit: \"select-nonprofit\",\n redeem_transaction: \"redeem-transaction\",\n impact_overview: \"impact-overview\",\n community_impact: \"community-impact\",\n cumulative_impact: \"cumulative-impact\",\n product_details_page: \"product-details-page\",\n subscription_management: \"subscription-management\",\n subscription_impact: \"subscription-impact\",\n select_subscription_nonprofit: \"select-subscription-nonprofit\",\n social_share: \"social-share\",\n} as const;\n\nexport const HELPER_NAMES = {\n cart_update: \"cart_update\",\n};\n\n// TODO: https://beamimpact.atlassian.net/browse/ENG-721\nexport const LOCAL_STORAGE_KEYS = {\n TRANSACTION: \"transaction\",\n CART: \"cart\",\n PROMO: PROMO_LOCAL_STORAGE_KEY,\n NONPROFIT: \"nonprofit\",\n NONPROFIT_SELECTED_AT: \"nonprofit_selected_at\",\n} as const;\n","/**\n * Wrapper over window.fetch that expects/returns JSON\n */\nimport { BeamError, NetworkError } from \"../utils/beam-errors\";\nimport { logger } from \"../utils/logger\";\nimport { version as pkgVersion } from \"../../package.json\";\n\nexport async function fetchJson<T = unknown>(url: RequestInfo, options?: RequestInit): Promise<T> {\n const fetchOptions = {\n method: \"GET\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n \"X-Beam-Client\": \"WebSDK\",\n \"X-Beam-Client-Version\": pkgVersion,\n ...options?.headers,\n },\n preflightContinue: true,\n mode: options?.mode || \"cors\",\n body: options?.body != null ? options.body : undefined,\n };\n\n let response;\n try {\n response = await fetch(url, fetchOptions);\n // fetch can throw a TypeError if the server can't be reached, catch and log below\n } catch (err) {\n const error = new BeamError(`Network call failed (${fetchOptions?.method.toUpperCase()} ${url})`);\n error.cause = err;\n logger.error(error, url);\n throw error;\n }\n let body;\n let text;\n // This can throw a SyntaxError if response payload is malformed JSON\n try {\n text = await response.text();\n if (text) {\n // (response can be empty)\n body = JSON.parse(text);\n }\n } catch (err) {\n let error = err as Error;\n if (err instanceof SyntaxError) {\n error = new NetworkError(response, body, `Response invalid. Expected JSON. Received: \"${text}\"`);\n error.cause = err;\n }\n logger.error(error);\n throw error;\n }\n // Translate 4xx, 5xx status to runtime error\n if (!response.ok) {\n const error = new NetworkError(response, body, \"Response was not OK\");\n logger.error(error);\n throw error;\n }\n\n return body;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { DEFAULT_BASE_URL } from \"./constants\";\nimport { fetchJson } from \"./fetch-json\";\nimport { paths } from \"./openapi-spec\";\nimport { THttpMethod } from \"./types\";\n\nexport const makeOpenApiMethod = <\n TPathName extends keyof paths,\n TMethod extends keyof paths[TPathName],\n TStatusCode extends paths[TPathName][TMethod] extends { responses: any }\n ? keyof paths[TPathName][TMethod][\"responses\"]\n : never\n>(\n pathName: TPathName,\n method: TMethod,\n okHttpStatus: TStatusCode\n) => {\n type TRouteSpec = paths[typeof pathName];\n type TRouteMethod = TRouteSpec[typeof method];\n type TParams = \"parameters\" extends keyof TRouteMethod ? TRouteMethod[\"parameters\"] : never;\n type TPathParams = TParams extends { path: any } ? TParams[\"path\"] : Record<string, never>;\n type TQueryParams = TParams extends { query: any } ? TParams[\"query\"] : Record<string, never>;\n type TRequestBody = TRouteMethod extends { requestBody: { content: { \"application/json\": any } } }\n ? TRouteMethod[\"requestBody\"][\"content\"][\"application/json\"]\n : never;\n type TAllResponses = TRouteMethod extends { responses: any } ? TRouteMethod[\"responses\"] : never;\n type TOkResponse = TAllResponses[typeof okHttpStatus] extends { content: { \"application/json\": any } }\n ? TAllResponses[typeof okHttpStatus][\"content\"][\"application/json\"]\n : never;\n const openApi = {\n [pathName]: async function ({\n headers = {},\n baseUrl = DEFAULT_BASE_URL,\n apiRoot = \"/api/v3\",\n pathParams = {},\n queryParams = {},\n requestBody,\n }: {\n baseUrl?: string;\n apiRoot?: string;\n pathParams?: TPathParams;\n queryParams?: TQueryParams;\n requestBody?: TRequestBody;\n headers?: Record<string, string>;\n }) {\n const pathWithParams: string = Object.entries(pathParams).reduce((newPath: string, [k, v]) => {\n return newPath.replace(`{${k}}`, v as string);\n }, pathName as string);\n const cleanQueryParams = JSON.parse(JSON.stringify(queryParams));\n const search = new URLSearchParams(cleanQueryParams as unknown as Record<string, string>).toString();\n const url = baseUrl + apiRoot + pathWithParams + (search && `?${search}`);\n const options = { headers, method: method as THttpMethod, body: JSON.stringify(requestBody) };\n\n return fetchJson<TOkResponse>(url, options);\n },\n };\n\n // Use object to create function with dynamic name, for better stacktraces\n return openApi[pathName];\n};\n","import { makeOpenApiMethod } from \"../make-openapi-method\";\n\nexport const getChainNonprofits = makeOpenApiMethod(\"/chain/{chainId}/nonprofits\", \"get\", 200);\n\nexport const getImpact = makeOpenApiMethod(\"/impact\", \"get\", 200);\n\nexport const getCumulativeImpact = makeOpenApiMethod(\"/chain/{chainId}/cumulativeImpact\", \"get\", 200);\n\nexport const postSelectNonprofit = makeOpenApiMethod(\"/selectNonprofit\", \"post\", 201);\n\nexport const postTransaction = makeOpenApiMethod(\"/transaction\", \"post\", 201);\n\nexport const putTransaction = makeOpenApiMethod(\"/transaction/{transactionId}\", \"put\", 204);\n\nexport const postCart = makeOpenApiMethod(\"/cart\", \"post\", 200);\n\nexport const postChainEligibleNonprofitsForCart = makeOpenApiMethod(\n \"/chain/findEligibleNonprofitsForCart\",\n \"post\",\n 200\n);\n\nexport const postLogs = makeOpenApiMethod(\"/logs\", \"post\", 200);\n\nexport const postExperimentSession = makeOpenApiMethod(\"/experimentSession\", \"post\", 200);\n\nexport const updateSubscription = makeOpenApiMethod(\"/subscriptions/updateSubscriptionNonprofit\", \"post\", 200);\n\nexport const postFindOrCreateSubscription = makeOpenApiMethod(\"/subscriptions/findOrCreateSubscription\", \"post\", 200);\n\nexport const postProductDetailsPage = makeOpenApiMethod(\"/productDetailsPage\", \"post\", 200);\n"],"names":["DEFAULT_BASE_URL","DEFAULT_LOG_URL","SUPPORTED_LANGUAGES","WIDGET_NAMES","HELPER_NAMES","LOCAL_STORAGE_KEYS","fetchJson","url","options","fetchOptions","pkgVersion","response","err","error","BeamError","logger","body","text","NetworkError","makeOpenApiMethod","pathName","method","okHttpStatus","headers","baseUrl","apiRoot","pathParams","queryParams","requestBody","pathWithParams","newPath","k","v","cleanQueryParams","search","getImpact","getCumulativeImpact","postSelectNonprofit","postCart","postChainEligibleNonprofitsForCart","postLogs","postExperimentSession","updateSubscription","postFindOrCreateSubscription","postProductDetailsPage"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"share-button-BJ8T-uYK.esm.js","sources":["../../src/shared/sync-element-heights.ts","../../src/shared/feature-detection.ts","../../src/shared/components/share-button.ts"],"sourcesContent":["import { isAllHtmlElements } from \"./is-all-html-elements\";\n\n/**\n * Synchronize heights of elements\n * @param {Array<HTMLElement|null>} elements - Elements to synchronize\n * @param {'contentLength' | 'currentHeight'} [options.source='contentLength'] -\n * Method used to get the height value to sync across elements. `contentLength`\n * (innerText.length) is reliable for pure text content when responding to\n * window resizing. Otherwise, currentHeight can be used to sync the tallest\n * element's height to all the other elements. Note that this works poorly\n * unless content is allowed to reflow with explicit height attributes removed\n * between synchronization calls.\n */\nexport const syncElementHeights = (\n elements: Array<HTMLElement | null> | NodeList,\n {\n source = \"contentLength\",\n }: {\n source?: \"contentLength\" | \"currentHeight\";\n } = {}\n) => {\n const els = elements instanceof NodeList ? Array.from(elements) : elements;\n\n if (els.length === 0 || !isAllHtmlElements(els)) {\n return;\n }\n\n const heightSource =\n source === \"contentLength\"\n ? els.sort((a, b) => {\n return b.innerText.length - a.innerText.length;\n })[0]\n : els.sort((a, b) => {\n return b.clientHeight - a.clientHeight;\n })[0];\n\n const syncedHeight = heightSource?.clientHeight || 0;\n\n for (const el of els) {\n if (el.clientHeight !== syncedHeight) {\n el.style[\"height\"] = syncedHeight + \"px\";\n }\n }\n};\n","export function isMobile() {\n return /Android|iPhone/i.test(navigator.userAgent);\n}\n\nexport function hasSystemShare() {\n return !!navigator.share;\n}\n","import { LitElement, html, render } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { postSocialShareAnalyticsEvent } from \"../../api-sdk/v2/users/events\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport \"@shoelace-style/shoelace/dist/components/icon/icon.js\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { urlToFile } from \"../files\";\nimport { isMobile } from \"../feature-detection\";\nimport { strings } from \"./strings/share-button\";\n\ninterface SlDialogElement extends HTMLElement {\n show: () => void;\n hide: () => void;\n}\n\nexport class BeamShareButton extends LitElement {\n @property({ type: String }) shareIcon: string | null = null;\n @property({ type: String }) imageUrl?: string | null = null;\n @property({ type: String }) brandName: string | null = null;\n @property({ type: String }) buttonText?: string | null = null;\n @property({ type: String }) configLang: LANGUAGES = \"en\";\n @property({ type: String }) baseUrl: string = DEFAULT_BASE_URL;\n @property({ type: String }) nonprofitId?: number | null = null;\n @property({ type: String }) storeId?: number | null = null;\n @property({ type: String }) transactionId?: number | null = null;\n @property({ type: String }) apiKey!: string;\n\n connectedCallback() {\n super.connectedCallback();\n }\n\n async handleShareClick() {\n try {\n if (!this.imageUrl || !this.brandName || !this.configLang) return;\n await import(\"./_share-dialog-dependencies.js\");\n\n const { nonprofitId, storeId, transactionId, baseUrl, apiKey } = this;\n void postSocialShareAnalyticsEvent({\n baseUrl,\n apiKey,\n requestBody: { eventName: \"shareImageButtonClick\", nonprofitId, storeId, timestamp: Date.now(), transactionId },\n }).catch(() => null);\n\n if (isMobile()) {\n this.openSystemShareSheet(this.imageUrl);\n } else {\n this.handleShareDialog(this.imageUrl, this.brandName);\n }\n } catch (err) {\n console.error(\"Error sharing impact:\", err);\n }\n }\n\n async handleShareDialog(imageUrl: string, brandName: string) {\n if (!imageUrl) return;\n\n const existingDialog = this.shadowRoot?.querySelector(\"sl-dialog\") as SlDialogElement;\n\n if (existingDialog) {\n existingDialog.show();\n return;\n }\n\n await import(\"./_share-dialog-dependencies.js\"); // Import libraries async to reduce bundle size if share feature is unused\n\n const modalRoot = this.shadowRoot?.querySelector(\"#modal-root\") as HTMLElement;\n\n const file = await urlToFile(imageUrl);\n\n const dataUrl = URL.createObjectURL(file);\n\n const handleClickClose = () => {\n (this.shadowRoot?.querySelector(\"sl-dialog\") as SlDialogElement)?.hide();\n };\n\n const handleClickCopy = async () => {\n void postSocialShareAnalyticsEvent({\n baseUrl: this.baseUrl,\n apiKey: this.apiKey,\n requestBody: {\n eventName: \"copyImageButtonClick\",\n nonprofitId: this.nonprofitId,\n storeId: this.storeId,\n timestamp: Date.now(),\n transactionId: this.transactionId,\n },\n }).catch(() => null);\n await navigator.clipboard.write([new ClipboardItem({ \"image/png\": file })]);\n setTimeout(handleClickClose, 250);\n };\n\n const handleClickDownload = () => {\n void postSocialShareAnalyticsEvent({\n baseUrl: this.baseUrl,\n apiKey: this.apiKey,\n requestBody: {\n eventName: \"downloadImageButtonClick\",\n nonprofitId: this.nonprofitId,\n storeId: this.storeId,\n timestamp: Date.now(),\n transactionId: this.transactionId,\n },\n }).catch(() => null);\n setTimeout(handleClickClose, 250);\n };\n\n const dialogTemplate = html`\n <style>\n .plain-button {\n border: none;\n background: none;\n font-size: inherit;\n font-family: inherit;\n }\n .share-dialog::part(panel) {\n padding: var(--beam-share-dialog-padding);\n text-align: center;\n }\n .share-title {\n font-size: var(--beam-share-title-fontSize);\n font-weight: var(--beam-share-title-fontWeight);\n }\n .share-text {\n font-size: var(--beam-share-text-fontSize);\n line-height: var(--beam-share-text-lineHeight);\n margin-top: var(--beam-share-text-marginTop);\n }\n .share-image {\n border-radius: var(--beam-share-image-borderRadius);\n width: var(--beam-share-image-width);\n display: block;\n margin: var(--beam-share-image-margin) auto;\n }\n .share-actions {\n margin: var(--beam-share-actions-margin);\n }\n .share-action-button {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n padding: 5px;\n }\n .share-action-icon {\n font-size: var(--beam-share-action-icon-size);\n }\n .share-action-button:hover .share-action-icon {\n scale: 1.1;\n }\n .share-action-text {\n font-size: var(--beam-share-action-text-fontSize);\n line-height: var(--beam-share-action-text-lineHeight);\n margin-top: var(--beam-share-text-action-marginTop);\n }\n .plain-button {\n border: none;\n background: none;\n font-size: inherit;\n font-family: inherit;\n }\n .plain-link {\n text-decoration: none;\n color: inherit;\n }\n .share-close {\n display: block;\n background-color: var(--beam-share-close-backgroundColor);\n color: var(--beam-share-close-text-color);\n justify-content: center;\n padding: var(--beam-share-close-padding);\n border-radius: var(--beam-share-close-borderRadius);\n width: 100%;\n font-size: var(--beam-share-close-fontSize);\n font-weight: var(--beam-share-close-fontWeight);\n }\n .share-close:hover {\n outline: 2px solid var(--beam-share-close-focus-borderColor);\n }\n </style>\n <sl-dialog open label=\"${strings[this.configLang].impactShareTitle()}\" no-header class=\"share-dialog\">\n <h2 class=\"share-title\">${strings[this.configLang].impactShareTitle()}</h2>\n <p class=\"share-text\">${strings[this.configLang].impactShareText({ brandName })}</p>\n <img src=\"${imageUrl}\" alt=\"${strings[this.configLang].impactShareTitle()}\" class=\"share-image\" />\n <div class=\"share-actions\" style=\"display: flex; justify-content: space-evenly\">\n <div style=\"flex: 1; text-align: center\">\n <button class=\"plain-button button share-action-button\" @click=\"${handleClickCopy}\">\n <sl-icon\n library=\"lucide\"\n name=\"copy\"\n label=\"${strings[this.configLang].impactShareCopy()}\"\n class=\"share-action-icon\"\n ></sl-icon>\n <div class=\"share-action-text\">${strings[this.configLang].impactShareCopy()}</div>\n </button>\n </div>\n <div style=\"flex: 1; text-align: center\">\n <a\n class=\"plain-button button share-action-button plain-link\"\n download=\"${strings[this.configLang].impactShareTitle()}\"\n href=\"${dataUrl}\"\n @click=\"${handleClickDownload}\"\n >\n <sl-icon\n library=\"lucide\"\n name=\"download\"\n label=\"${strings[this.configLang].impactShareDownload()}\"\n class=\"share-action-icon\"\n ></sl-icon>\n <div class=\"share-action-text\">${strings[this.configLang].impactShareDownload()}</div>\n </a>\n </div>\n </div>\n <button class=\"plain-button button share-close\" @click=\"${handleClickClose}\">\n ${strings[this.configLang].impactShareClose()}\n </button>\n </sl-dialog>\n `;\n if (modalRoot) {\n render(dialogTemplate, modalRoot);\n }\n }\n\n async openSystemShareSheet(imageUrl: string) {\n if (!imageUrl) return;\n\n const file = await urlToFile(imageUrl);\n\n if (navigator.share) {\n await navigator\n .share({\n files: [file],\n })\n .then(() => {\n const { nonprofitId, storeId, transactionId, baseUrl, apiKey } = this;\n void postSocialShareAnalyticsEvent({\n baseUrl,\n apiKey,\n requestBody: { eventName: \"shareSheetShare\", nonprofitId, storeId, timestamp: Date.now(), transactionId },\n }).catch(() => null);\n })\n .catch(() => null);\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n }\n render() {\n if (!this.imageUrl || !this.brandName || !this.configLang) return html``;\n return html`\n <style>\n .share-button {\n font-family: var(--beam-share-button-fontFamily);\n font-size: var(--beam-share-button-fontSize);\n font-weight: var(--beam-share-button-fontWeight);\n margin-top: var(--beam-share-button-marginTop);\n margin-bottom: var(--beam-share-button-marginBottom);\n text-transform: var(--beam-share-button-textTransform);\n line-height: var(--beam-share-button-lineHeight);\n background-color: var(--beam-share-button-backgroundColor);\n color: var(--beam-share-button-color, inherit);\n border-radius: var(--beam-share-button-borderRadius);\n border-color: var(--beam-share-button-borderColor);\n border-width: var(--beam-share-button-borderWidth);\n /* add extra padding on side without icon for optical alignment */\n padding: var(--beam-share-button-padding);\n width: var(--beam-share-button-width);\n transition: 0.15s;\n }\n .share-button:hover {\n background-color: var(--beam-share-button-hover-backgroundColor);\n color: var(--beam-share-button-hover-color);\n border-color: var(--beam-share-button-hover-borderColor);\n }\n .share-button-text {\n text-decoration: var(--beam-share-button-text-textDecoration);\n margin-left: 0.33em;\n }\n .share-button-icon {\n font-size: var(--beam-share-button-icon-size);\n }\n .button {\n cursor: pointer;\n }\n .icon-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n </style>\n <button\n @click=\"${this.handleShareClick}\"\n baseUrl=\"${this.baseUrl}\"\n class=\"share-button share-button-inline button icon-button\"\n >\n <sl-icon\n name=\"${this.shareIcon}\"\n library=\"lucide\"\n label=\"${strings[this.configLang].impactShareButton()}\"\n class=\"share-button-icon\"\n ></sl-icon>\n <span class=\"share-button-text\">${this.buttonText || strings[this.configLang].impactShareButton()}</span>\n </button>\n <div id=\"modal-root\"></div>\n `;\n }\n}\n\ncustomElements.get(\"beam-share-button\") || customElements.define(\"beam-share-button\", BeamShareButton);\n\nexport const shareButtonConfigDefaults = {\n \"--beam-share-button-fontFamily\": \"inherit\",\n \"--beam-share-button-fontSize\": \"14px\",\n \"--beam-share-button-fontWeight\": \"600\",\n \"--beam-share-button-textTransform\": \"none\",\n \"--beam-share-button-marginTop\": \"10px\",\n \"--beam-share-button-marginBottom\": \"10px\",\n \"--beam-share-button-padding\": \"8px 18px 8px 16px\",\n \"--beam-share-button-lineHeight\": \"inherit\",\n \"--beam-share-button-color\": \"#0A323C\",\n \"--beam-share-button-backgroundColor\": \"#fff\",\n \"--beam-share-button-borderRadius\": \"30px\",\n \"--beam-share-button-borderColor\": \"#0A323C\",\n \"--beam-share-button-borderWidth\": \"1px\",\n\n \"--beam-share-button-width\": \"auto\",\n\n \"--beam-share-button-hover-borderColor\": \"transparent\",\n \"--beam-share-button-hover-backgroundColor\": \"#0A323C\",\n \"--beam-share-button-hover-color\": \"#fff\",\n\n \"--beam-share-button-icon-size\": \"16px\",\n\n \"--beam-share-button-text-textDecoration\": \"none\",\n\n \"--beam-share-dialog-padding\": \"30px 30px\",\n\n \"--beam-share-title-fontSize\": \"30px\",\n \"--beam-share-title-fontWeight\": \"bold\",\n\n \"--beam-share-text-fontSize\": \"16px\",\n \"--beam-share-text-lineHeight\": \"1.3\",\n \"--beam-share-text-marginTop\": \"10px\",\n\n \"--beam-share-image-borderRadius\": \"4px\",\n \"--beam-share-image-width\": \"200px\",\n \"--beam-share-image-margin\": \"20px\",\n\n \"--beam-share-actions-margin\": \"30px 60px\",\n \"--beam-share-action-icon-size\": \"32px\",\n\n \"--beam-share-action-text-fontSize\": \"16px\",\n \"--beam-share-action-text-lineHeight\": \"1.3\",\n \"--beam-share-text-action-marginTop\": \"10px\",\n\n \"--beam-share-close-backgroundColor\": \"#ffd522\",\n \"--beam-share-close-text-color\": \"#000\",\n \"--beam-share-close-padding\": \"12px\",\n \"--beam-share-close-borderRadius\": \"4px\",\n \"--beam-share-close-fontSize\": \"16px\",\n \"--beam-share-close-fontWeight\": \"bold\",\n\n \"--beam-share-close-focus-borderColor\": \"#c2dcff\",\n} as const;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-share-button\": BeamShareButton;\n }\n}\n"],"names":["syncElementHeights","elements","source","els","isAllHtmlElements","syncedHeight","a","b","el","isMobile","v","o","l","e","n","r","i","BeamShareButton","LitElement","DEFAULT_BASE_URL","nonprofitId","storeId","transactionId","baseUrl","apiKey","postSocialShareAnalyticsEvent","err","imageUrl","brandName","existingDialog","modalRoot","file","urlToFile","dataUrl","handleClickClose","handleClickCopy","handleClickDownload","dialogTemplate","html","strings","render","__decorateClass","property","shareButtonConfigDefaults"],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- import * as lit_html from 'lit-html';
2
- import { LitElement } from 'lit';
3
- import { L as LANGUAGES } from './types-DfRc36jU.esm.js';
4
-
5
- declare class BeamShareButton extends LitElement {
6
- shareIcon: string | null;
7
- imageUrl?: string | null;
8
- brandName: string | null;
9
- buttonText?: string | null;
10
- configLang: LANGUAGES;
11
- baseUrl: string;
12
- nonprofitId?: number | null;
13
- storeId?: number | null;
14
- transactionId?: number | null;
15
- apiKey: string;
16
- connectedCallback(): void;
17
- handleShareClick(): Promise<void>;
18
- handleShareDialog(imageUrl: string, brandName: string): Promise<void>;
19
- openSystemShareSheet(imageUrl: string): Promise<void>;
20
- disconnectedCallback(): void;
21
- render(): lit_html.TemplateResult<1>;
22
- }
23
- declare global {
24
- interface HTMLElementTagNameMap {
25
- "beam-share-button": BeamShareButton;
26
- }
27
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"share-button-VEIdBFu3.esm.js","sources":["../../src/shared/sync-element-heights.ts","../../src/shared/feature-detection.ts","../../src/shared/components/share-button.ts"],"sourcesContent":["import { isAllHtmlElements } from \"./is-all-html-elements\";\n\n/**\n * Synchronize heights of elements\n * @param {Array<HTMLElement|null>} elements - Elements to synchronize\n * @param {'contentLength' | 'currentHeight'} [options.source='contentLength'] -\n * Method used to get the height value to sync across elements. `contentLength`\n * (innerText.length) is reliable for pure text content when responding to\n * window resizing. Otherwise, currentHeight can be used to sync the tallest\n * element's height to all the other elements. Note that this works poorly\n * unless content is allowed to reflow with explicit height attributes removed\n * between synchronization calls.\n */\nexport const syncElementHeights = (\n elements: Array<HTMLElement | null> | NodeList,\n {\n source = \"contentLength\",\n }: {\n source?: \"contentLength\" | \"currentHeight\";\n } = {}\n) => {\n const els = elements instanceof NodeList ? Array.from(elements) : elements;\n\n if (els.length === 0 || !isAllHtmlElements(els)) {\n return;\n }\n\n const heightSource =\n source === \"contentLength\"\n ? els.sort((a, b) => {\n return b.innerText.length - a.innerText.length;\n })[0]\n : els.sort((a, b) => {\n return b.clientHeight - a.clientHeight;\n })[0];\n\n const syncedHeight = heightSource?.clientHeight || 0;\n\n for (const el of els) {\n if (el.clientHeight !== syncedHeight) {\n el.style[\"height\"] = syncedHeight + \"px\";\n }\n }\n};\n","export function isMobile() {\n return /Android|iPhone/i.test(navigator.userAgent);\n}\n\nexport function hasSystemShare() {\n return !!navigator.share;\n}\n","import { LitElement, html, render } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { postSocialShareAnalyticsEvent } from \"../../api-sdk/v2/users/events\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport \"@shoelace-style/shoelace/dist/components/icon/icon.js\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { urlToFile } from \"../files\";\nimport { isMobile } from \"../feature-detection\";\nimport { strings } from \"./strings/share-button\";\n\ninterface SlDialogElement extends HTMLElement {\n show: () => void;\n hide: () => void;\n}\n\nexport class BeamShareButton extends LitElement {\n @property({ type: String }) shareIcon: string | null = null;\n @property({ type: String }) imageUrl?: string | null = null;\n @property({ type: String }) brandName: string | null = null;\n @property({ type: String }) buttonText?: string | null = null;\n @property({ type: String }) configLang: LANGUAGES = \"en\";\n @property({ type: String }) baseUrl: string = DEFAULT_BASE_URL;\n @property({ type: String }) nonprofitId?: number | null = null;\n @property({ type: String }) storeId?: number | null = null;\n @property({ type: String }) transactionId?: number | null = null;\n @property({ type: String }) apiKey!: string;\n\n connectedCallback() {\n super.connectedCallback();\n }\n\n async handleShareClick() {\n try {\n if (!this.imageUrl || !this.brandName || !this.configLang) return;\n await import(\"./_share-dialog-dependencies.js\");\n\n const { nonprofitId, storeId, transactionId, baseUrl, apiKey } = this;\n void postSocialShareAnalyticsEvent({\n baseUrl,\n apiKey,\n requestBody: { eventName: \"shareImageButtonClick\", nonprofitId, storeId, timestamp: Date.now(), transactionId },\n }).catch(() => null);\n\n if (isMobile()) {\n this.openSystemShareSheet(this.imageUrl);\n } else {\n this.handleShareDialog(this.imageUrl, this.brandName);\n }\n } catch (err) {\n console.error(\"Error sharing impact:\", err);\n }\n }\n\n async handleShareDialog(imageUrl: string, brandName: string) {\n if (!imageUrl) return;\n\n const existingDialog = this.shadowRoot?.querySelector(\"sl-dialog\") as SlDialogElement;\n\n if (existingDialog) {\n existingDialog.show();\n return;\n }\n\n await import(\"./_share-dialog-dependencies.js\"); // Import libraries async to reduce bundle size if share feature is unused\n\n const modalRoot = this.shadowRoot?.querySelector(\"#modal-root\") as HTMLElement;\n\n const file = await urlToFile(imageUrl);\n\n const dataUrl = URL.createObjectURL(file);\n\n const handleClickClose = () => {\n (this.shadowRoot?.querySelector(\"sl-dialog\") as SlDialogElement)?.hide();\n };\n\n const handleClickCopy = async () => {\n void postSocialShareAnalyticsEvent({\n baseUrl: this.baseUrl,\n apiKey: this.apiKey,\n requestBody: {\n eventName: \"copyImageButtonClick\",\n nonprofitId: this.nonprofitId,\n storeId: this.storeId,\n timestamp: Date.now(),\n transactionId: this.transactionId,\n },\n }).catch(() => null);\n await navigator.clipboard.write([new ClipboardItem({ \"image/png\": file })]);\n setTimeout(handleClickClose, 250);\n };\n\n const handleClickDownload = () => {\n void postSocialShareAnalyticsEvent({\n baseUrl: this.baseUrl,\n apiKey: this.apiKey,\n requestBody: {\n eventName: \"downloadImageButtonClick\",\n nonprofitId: this.nonprofitId,\n storeId: this.storeId,\n timestamp: Date.now(),\n transactionId: this.transactionId,\n },\n }).catch(() => null);\n setTimeout(handleClickClose, 250);\n };\n\n const dialogTemplate = html`\n <style>\n .plain-button {\n border: none;\n background: none;\n font-size: inherit;\n font-family: inherit;\n }\n .share-dialog::part(panel) {\n padding: var(--beam-share-dialog-padding);\n text-align: center;\n }\n .share-title {\n font-size: var(--beam-share-title-fontSize);\n font-weight: var(--beam-share-title-fontWeight);\n }\n .share-text {\n font-size: var(--beam-share-text-fontSize);\n line-height: var(--beam-share-text-lineHeight);\n margin-top: var(--beam-share-text-marginTop);\n }\n .share-image {\n border-radius: var(--beam-share-image-borderRadius);\n width: var(--beam-share-image-width);\n display: block;\n margin: var(--beam-share-image-margin) auto;\n }\n .share-actions {\n margin: var(--beam-share-actions-margin);\n }\n .share-action-button {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n padding: 5px;\n }\n .share-action-icon {\n font-size: var(--beam-share-action-icon-size);\n }\n .share-action-button:hover .share-action-icon {\n scale: 1.1;\n }\n .share-action-text {\n font-size: var(--beam-share-action-text-fontSize);\n line-height: var(--beam-share-action-text-lineHeight);\n margin-top: var(--beam-share-text-action-marginTop);\n }\n .plain-button {\n border: none;\n background: none;\n font-size: inherit;\n font-family: inherit;\n }\n .plain-link {\n text-decoration: none;\n color: inherit;\n }\n .share-close {\n display: block;\n background-color: var(--beam-share-close-backgroundColor);\n color: var(--beam-share-close-text-color);\n justify-content: center;\n padding: var(--beam-share-close-padding);\n border-radius: var(--beam-share-close-borderRadius);\n width: 100%;\n font-size: var(--beam-share-close-fontSize);\n font-weight: var(--beam-share-close-fontWeight);\n }\n .share-close:hover {\n outline: 2px solid var(--beam-share-close-focus-borderColor);\n }\n </style>\n <sl-dialog open label=\"${strings[this.configLang].impactShareTitle()}\" no-header class=\"share-dialog\">\n <h2 class=\"share-title\">${strings[this.configLang].impactShareTitle()}</h2>\n <p class=\"share-text\">${strings[this.configLang].impactShareText({ brandName })}</p>\n <img src=\"${imageUrl}\" alt=\"${strings[this.configLang].impactShareTitle()}\" class=\"share-image\" />\n <div class=\"share-actions\" style=\"display: flex; justify-content: space-evenly\">\n <div style=\"flex: 1; text-align: center\">\n <button class=\"plain-button button share-action-button\" @click=\"${handleClickCopy}\">\n <sl-icon\n library=\"lucide\"\n name=\"copy\"\n label=\"${strings[this.configLang].impactShareCopy()}\"\n class=\"share-action-icon\"\n ></sl-icon>\n <div class=\"share-action-text\">${strings[this.configLang].impactShareCopy()}</div>\n </button>\n </div>\n <div style=\"flex: 1; text-align: center\">\n <a\n class=\"plain-button button share-action-button plain-link\"\n download=\"${strings[this.configLang].impactShareTitle()}\"\n href=\"${dataUrl}\"\n @click=\"${handleClickDownload}\"\n >\n <sl-icon\n library=\"lucide\"\n name=\"download\"\n label=\"${strings[this.configLang].impactShareDownload()}\"\n class=\"share-action-icon\"\n ></sl-icon>\n <div class=\"share-action-text\">${strings[this.configLang].impactShareDownload()}</div>\n </a>\n </div>\n </div>\n <button class=\"plain-button button share-close\" @click=\"${handleClickClose}\">\n ${strings[this.configLang].impactShareClose()}\n </button>\n </sl-dialog>\n `;\n if (modalRoot) {\n render(dialogTemplate, modalRoot);\n }\n }\n\n async openSystemShareSheet(imageUrl: string) {\n if (!imageUrl) return;\n\n const file = await urlToFile(imageUrl);\n\n if (navigator.share) {\n await navigator\n .share({\n files: [file],\n })\n .then(() => {\n const { nonprofitId, storeId, transactionId, baseUrl, apiKey } = this;\n void postSocialShareAnalyticsEvent({\n baseUrl,\n apiKey,\n requestBody: { eventName: \"shareSheetShare\", nonprofitId, storeId, timestamp: Date.now(), transactionId },\n }).catch(() => null);\n })\n .catch(() => null);\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n }\n render() {\n if (!this.imageUrl || !this.brandName || !this.configLang) return html``;\n return html`\n <style>\n .share-button {\n font-family: var(--beam-share-button-fontFamily);\n font-size: var(--beam-share-button-fontSize);\n font-weight: var(--beam-share-button-fontWeight);\n margin-top: var(--beam-share-button-marginTop);\n margin-bottom: var(--beam-share-button-marginBottom);\n text-transform: var(--beam-share-button-textTransform);\n line-height: var(--beam-share-button-lineHeight);\n background-color: var(--beam-share-button-backgroundColor);\n color: var(--beam-share-button-color, inherit);\n border-radius: var(--beam-share-button-borderRadius);\n border-color: var(--beam-share-button-borderColor);\n border-width: var(--beam-share-button-borderWidth);\n /* add extra padding on side without icon for optical alignment */\n padding: var(--beam-share-button-padding);\n width: var(--beam-share-button-width);\n transition: 0.15s;\n }\n .share-button:hover {\n background-color: var(--beam-share-button-hover-backgroundColor);\n color: var(--beam-share-button-hover-color);\n border-color: var(--beam-share-button-hover-borderColor);\n }\n .share-button-text {\n text-decoration: var(--beam-share-button-text-textDecoration);\n margin-left: 0.33em;\n }\n .share-button-icon {\n font-size: var(--beam-share-button-icon-size);\n }\n .button {\n cursor: pointer;\n }\n .icon-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n </style>\n <button\n @click=\"${this.handleShareClick}\"\n baseUrl=\"${this.baseUrl}\"\n class=\"share-button share-button-inline button icon-button\"\n >\n <sl-icon\n name=\"${this.shareIcon}\"\n library=\"lucide\"\n label=\"${strings[this.configLang].impactShareButton()}\"\n class=\"share-button-icon\"\n ></sl-icon>\n <span class=\"share-button-text\">${this.buttonText || strings[this.configLang].impactShareButton()}</span>\n </button>\n <div id=\"modal-root\"></div>\n `;\n }\n}\n\ncustomElements.get(\"beam-share-button\") || customElements.define(\"beam-share-button\", BeamShareButton);\n\nexport const shareButtonConfigDefaults = {\n \"--beam-share-button-fontFamily\": \"inherit\",\n \"--beam-share-button-fontSize\": \"14px\",\n \"--beam-share-button-fontWeight\": \"600\",\n \"--beam-share-button-textTransform\": \"none\",\n \"--beam-share-button-marginTop\": \"10px\",\n \"--beam-share-button-marginBottom\": \"10px\",\n \"--beam-share-button-padding\": \"8px 18px 8px 16px\",\n \"--beam-share-button-lineHeight\": \"inherit\",\n \"--beam-share-button-color\": \"#0A323C\",\n \"--beam-share-button-backgroundColor\": \"#fff\",\n \"--beam-share-button-borderRadius\": \"30px\",\n \"--beam-share-button-borderColor\": \"#0A323C\",\n \"--beam-share-button-borderWidth\": \"1px\",\n\n \"--beam-share-button-width\": \"auto\",\n\n \"--beam-share-button-hover-borderColor\": \"transparent\",\n \"--beam-share-button-hover-backgroundColor\": \"#0A323C\",\n \"--beam-share-button-hover-color\": \"#fff\",\n\n \"--beam-share-button-icon-size\": \"16px\",\n\n \"--beam-share-button-text-textDecoration\": \"none\",\n\n \"--beam-share-dialog-padding\": \"30px 30px\",\n\n \"--beam-share-title-fontSize\": \"30px\",\n \"--beam-share-title-fontWeight\": \"bold\",\n\n \"--beam-share-text-fontSize\": \"16px\",\n \"--beam-share-text-lineHeight\": \"1.3\",\n \"--beam-share-text-marginTop\": \"10px\",\n\n \"--beam-share-image-borderRadius\": \"4px\",\n \"--beam-share-image-width\": \"200px\",\n \"--beam-share-image-margin\": \"20px\",\n\n \"--beam-share-actions-margin\": \"30px 60px\",\n \"--beam-share-action-icon-size\": \"32px\",\n\n \"--beam-share-action-text-fontSize\": \"16px\",\n \"--beam-share-action-text-lineHeight\": \"1.3\",\n \"--beam-share-text-action-marginTop\": \"10px\",\n\n \"--beam-share-close-backgroundColor\": \"#ffd522\",\n \"--beam-share-close-text-color\": \"#000\",\n \"--beam-share-close-padding\": \"12px\",\n \"--beam-share-close-borderRadius\": \"4px\",\n \"--beam-share-close-fontSize\": \"16px\",\n \"--beam-share-close-fontWeight\": \"bold\",\n\n \"--beam-share-close-focus-borderColor\": \"#c2dcff\",\n} as const;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-share-button\": BeamShareButton;\n }\n}\n"],"names":["syncElementHeights","elements","source","els","isAllHtmlElements","syncedHeight","a","b","el","isMobile","v","o","l","e","n","r","i","BeamShareButton","LitElement","DEFAULT_BASE_URL","nonprofitId","storeId","transactionId","baseUrl","apiKey","postSocialShareAnalyticsEvent","err","imageUrl","brandName","existingDialog","modalRoot","file","urlToFile","dataUrl","handleClickClose","handleClickCopy","handleClickDownload","dialogTemplate","html","strings","render","__decorateClass","property","shareButtonConfigDefaults"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-cart-C6BdmBt1.esm.js","sources":["../../src/integrations/cart/update-cart.ts"],"sourcesContent":["import isEqual from \"lodash-es/isEqual\";\nimport { DEFAULT_BASE_URL, HELPER_NAMES } from \"../../api-sdk/constants\";\nimport { BeamBaseAPIConfig } from \"../../api-sdk/types\";\nimport { postCart } from \"../../api-sdk/v3/routes\";\nimport { debounce, memoizeLast } from \"../../utils\";\nimport { BeamError } from \"../../utils/beam-errors\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCartApi } from \"../../shared/cart-contents\";\nimport { setCookieValue } from \"../../utils/cookies\";\nimport { BeamCartChangeEvent, BeamCartCreatedEvent, BeamWidgetStoredPromoCodesEvent } from \"../../utils/events\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { getRemoteSession } from \"../../utils/remote-session\";\nimport { getBeamCartId } from \"../../utils/cart\";\nimport { formatStoreAndReturnPromoCodes } from \"../../utils/promoManager\";\n\nexport type BeamCartAPIConfig = BeamBaseAPIConfig & {\n storeId: number;\n domain?: string; // Domain to set cookies on\n statsigExperiment?: string;\n};\n\nexport type BeamCartValues = {\n cartId?: string; // External (partner) cart ID\n itemCount?: number;\n subtotal?: number;\n currencyCode?: string;\n} & Partial<TCartApi>;\n\n/**\n * The debounce time in milliseconds for updating the cart - updateCart will delay until it hasn't been called for\n * this long before handling the last call.\n */\nconst UPDATE_CART_DEBOUNCE_MS = 50;\n\n/**\n * Sends cart information to Beam\n * Memoized based on previous arguments - if the objects are deep-equal, no update is made.\n * @side-effects Sets beam_cart cookie, set cart data in localstorage\n * @example\n * const BeamConfig = { apiKey: 'abc-123' }\n * const { beamCartId } = await updateCart(BeamConfig, { beamCartId, itemCount, subtotal, currencyCode })\n * */\nconst updateCart = debounce(\n memoizeLast(async function updateCart(\n config: BeamCartAPIConfig,\n cartValues: BeamCartValues,\n isFirstCartUpdateOnPageLoad = false\n ) {\n try {\n const localStorage = createScopedLocalStorage({ apiKey: config.apiKey });\n const baseUrl = config.baseUrl ?? DEFAULT_BASE_URL;\n\n // The cart cache is used to detect changes after page refreshes / across tabs\n const cachedCart: TBeamCartLocalStorage | null = localStorage.getItemJson(\"cart\");\n // The Beam cart cookie is used to identify the cart across subdomains\n // Use explicit null if empty because API requires it\n const beamCartId: string | null = getBeamCartId(BEAM_CART_COOKIE_NAME, config);\n // Remote session ID (ie, device ID from an A/B testing tool) will be linked to the cart\n const remoteSessionId: string | undefined = getRemoteSession(config) ?? undefined;\n\n const {\n cartId,\n subtotal,\n itemCount,\n currencyCode,\n content: { items = [], discounts = [] } = {},\n schema = { source: \"generic\" },\n } = cartValues;\n\n const cartWithDefaults = {\n cartId,\n subtotal,\n itemCount,\n currencyCode,\n content: { items, discounts },\n schema,\n beamCartId,\n };\n\n // If this is our first time calling \"updateCart\" on page load, and there is\n // no prior \"cachedCart\", and the current Platform cart is not empty,\n // we should assume that the cart has not been interacted with.\n // In this case, we want to cache the current cart, but not send it to Beam\n // so that the next time we call this method, it will compare to the existing\n // Platform cart\n if (isFirstCartUpdateOnPageLoad && !cachedCart && !!cartValues?.itemCount) {\n // logger.debug(\n // \"[update-cart] first attempt to update cart; no prior cart found, cart is not empty; skipping update to Beam\"\n // );\n localStorage.setItemJson(\"cart\", {\n ...cartWithDefaults,\n beamCartId: beamCartId,\n });\n\n return;\n }\n\n // Early return conditions. Skip sending cart to Beam if any apply:\n // 1. The cart has not changed\n // 2. Cart is empty, unless the cart was not empty before\n if (\n isEqual(cartWithDefaults, {\n ...cachedCart,\n cartId: cachedCart?.cartId /* make sure optional key is defined even if empty */,\n }) || // cart has not changed, OR\n (cartValues.itemCount === 0 && // nothing in current cart, AND\n (!beamCartId || cachedCart?.itemCount === 0)) // no/expired prev cart or prev cart was empty\n ) {\n // logger.debug(\"[update-cart] cart not changed\");\n // If the cart has not changed because the cart is empty now,\n // we still want to save that this changed happened in our cached cart\n // so the next update will compare against a current cart\n localStorage.setItemJson(\"cart\", {\n ...cartWithDefaults,\n beamCartId: beamCartId,\n });\n\n return;\n }\n\n formatStoreAndReturnPromoCodes(\n (discounts ?? []).map((discount) => ({ value: discount?.code })),\n config.apiKey\n );\n window.dispatchEvent(new BeamWidgetStoredPromoCodesEvent({ source: HELPER_NAMES.cart_update }));\n // logger.debug(\"[update-cart] sending cart update request\");\n const response = await postCart({\n baseUrl,\n headers: {\n authorization: `Api-Key ${config.apiKey}`,\n },\n requestBody: {\n beamCartId, // backwards compat: explicitly sending null here is required to get initial beamCartId\n storeId: config.storeId,\n remoteSessionId,\n cartId,\n subtotal,\n itemCount,\n currencyCode,\n },\n });\n\n // Response will contain a new beamCartId if one was not provided, or old one expired\n const { beamCartId: newBeamCartId, expiresAt, beamCartCreated } = response;\n\n if (newBeamCartId && expiresAt) {\n await setCookieValue({\n name: BEAM_CART_COOKIE_NAME,\n domain: config.domain,\n value: newBeamCartId,\n path: \"/\",\n // If we don't set an expiration, the cookie will be cleared when the tab is closed\n expires: new Date(expiresAt).getTime(),\n });\n }\n\n localStorage.setItemJson(\"cart\", {\n ...cartWithDefaults,\n beamCartId: newBeamCartId,\n });\n\n const eventDetail = {\n schema: schema as any, // TS union type can't figure out what variant applies here\n content: {\n items: items as any,\n discounts: discounts as any,\n },\n subtotal,\n itemCount,\n currencyCode,\n cartId,\n beamCartId: newBeamCartId,\n };\n\n // emit change event on any create/update/delete of cart items\n window.dispatchEvent(new BeamCartChangeEvent(eventDetail));\n\n // emit created event only when the cart is new according to Beam\n if (beamCartCreated) {\n window.dispatchEvent(new BeamCartCreatedEvent(eventDetail));\n }\n } catch (err) {\n throw new BeamError(\"Could not update cart in Beam\", { cause: err });\n }\n }),\n UPDATE_CART_DEBOUNCE_MS,\n { leading: true } // handle first call immediately but delay for more calls within debounce window\n);\n\nexport { updateCart };\n"],"names":["UPDATE_CART_DEBOUNCE_MS","updateCart","debounce","memoizeLast","config","cartValues","isFirstCartUpdateOnPageLoad","localStorage","createScopedLocalStorage","baseUrl","DEFAULT_BASE_URL","cachedCart","beamCartId","getBeamCartId","BEAM_CART_COOKIE_NAME","remoteSessionId","getRemoteSession","cartId","subtotal","itemCount","currencyCode","items","discounts","schema","cartWithDefaults","isEqual","formatStoreAndReturnPromoCodes","discount","BeamWidgetStoredPromoCodesEvent","HELPER_NAMES","response","postCart","newBeamCartId","expiresAt","beamCartCreated","setCookieValue","eventDetail","BeamCartChangeEvent","BeamCartCreatedEvent","err","BeamError"],"mappings":"goBA+BMA,EAA0B,GAU1BC,EAAaC,EACjBC,EAAY,eACVC,EACAC,EACAC,EAA8B,GAC9B,CACA,GAAI,CACF,MAAMC,EAAeC,EAAyB,CAAE,OAAQJ,EAAO,MAAO,CAAC,EACjEK,EAAUL,EAAO,SAAWM,EAG5BC,EAA2CJ,EAAa,YAAY,MAAM,EAG1EK,EAA4BC,EAAcC,EAAuBV,CAAM,EAEvEW,EAAsCC,EAAiBZ,CAAM,GAAK,OAElE,CACJ,OAAAa,EACA,SAAAC,EACA,UAAAC,EACA,aAAAC,EACA,QAAS,CAAE,MAAAC,EAAQ,CAAI,EAAA,UAAAC,EAAY,CAAG,CAAA,EAAI,CAAA,EAC1C,OAAAC,EAAS,CAAE,OAAQ,SAAU,CAC/B,EAAIlB,EAEEmB,EAAmB,CACvB,OAAAP,EACA,SAAAC,EACA,UAAAC,EACA,aAAAC,EACA,QAAS,CAAE,MAAAC,EAAO,UAAAC,CAAU,EAC5B,OAAAC,EACA,WAAAX,CACF,EAQA,GAAIN,GAA+B,CAACK,GAAgBN,GAAY,UAAW,CAIzEE,EAAa,YAAY,OAAQ,CAC/B,GAAGiB,EACH,WAAYZ,CACd,CAAC,EAED,MACF,CAKA,GACEa,EAAQD,EAAkB,CACxB,GAAGb,EACH,OAAQA,GAAY,MACtB,CAAC,GACAN,EAAW,YAAc,IACvB,CAACO,GAAcD,GAAY,YAAc,GAC5C,CAKAJ,EAAa,YAAY,OAAQ,CAC/B,GAAGiB,EACH,WAAYZ,CACd,CAAC,EAED,MACF,CAEAc,GACGJ,GAAa,CAAC,GAAG,IAAKK,IAAc,CAAE,MAAOA,GAAU,IAAK,EAAE,EAC/DvB,EAAO,MACT,EACA,OAAO,cAAc,IAAIwB,EAAgC,CAAE,OAAQC,EAAa,WAAY,CAAC,CAAC,EAE9F,MAAMC,EAAW,MAAMC,EAAS,CAC9B,QAAAtB,EACA,QAAS,CACP,cAAe,WAAWL,EAAO,MAAM,EACzC,EACA,YAAa,CACX,WAAAQ,EACA,QAASR,EAAO,QAChB,gBAAAW,EACA,OAAAE,EACA,SAAAC,EACA,UAAAC,EACA,aAAAC,CACF,CACF,CAAC,EAGK,CAAE,WAAYY,EAAe,UAAAC,EAAW,gBAAAC,CAAgB,EAAIJ,EAE9DE,GAAiBC,GACnB,MAAME,EAAe,CACnB,KAAMrB,EACN,OAAQV,EAAO,OACf,MAAO4B,EACP,KAAM,IAEN,QAAS,IAAI,KAAKC,CAAS,EAAE,QAAA,CAC/B,CAAC,EAGH1B,EAAa,YAAY,OAAQ,CAC/B,GAAGiB,EACH,WAAYQ,CACd,CAAC,EAED,MAAMI,EAAc,CAClB,OAAQb,EACR,QAAS,CACP,MAAOF,EACP,UAAWC,CACb,EACA,SAAAJ,EACA,UAAAC,EACA,aAAAC,EACA,OAAAH,EACA,WAAYe,CACd,EAGA,OAAO,cAAc,IAAIK,EAAoBD,CAAW,CAAC,EAGrDF,GACF,OAAO,cAAc,IAAII,EAAqBF,CAAW,CAAC,CAE9D,OAASG,EAAK,CACZ,MAAM,IAAIC,EAAU,gCAAiC,CAAE,MAAOD,CAAI,CAAC,CACrE,CACF,CAAC,EACDvC,EACA,CAAE,QAAS,EAAK,CAClB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-cart-HlVGSYR7.esm.js","sources":["../../src/integrations/cart/update-cart.ts"],"sourcesContent":["import isEqual from \"lodash-es/isEqual\";\nimport { DEFAULT_BASE_URL, HELPER_NAMES } from \"../../api-sdk/constants\";\nimport { BeamBaseAPIConfig } from \"../../api-sdk/types\";\nimport { postCart } from \"../../api-sdk/v3/routes\";\nimport { debounce, memoizeLast } from \"../../utils\";\nimport { BeamError } from \"../../utils/beam-errors\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCartApi } from \"../../shared/cart-contents\";\nimport { setCookieValue } from \"../../utils/cookies\";\nimport { BeamCartChangeEvent, BeamCartCreatedEvent, BeamWidgetStoredPromoCodesEvent } from \"../../utils/events\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { getRemoteSession } from \"../../utils/remote-session\";\nimport { getBeamCartId } from \"../../utils/cart\";\nimport { formatStoreAndReturnPromoCodes } from \"../../utils/promoManager\";\n\nexport type BeamCartAPIConfig = BeamBaseAPIConfig & {\n storeId: number;\n domain?: string; // Domain to set cookies on\n statsigExperiment?: string;\n};\n\nexport type BeamCartValues = {\n cartId?: string; // External (partner) cart ID\n itemCount?: number;\n subtotal?: number;\n currencyCode?: string;\n} & Partial<TCartApi>;\n\n/**\n * The debounce time in milliseconds for updating the cart - updateCart will delay until it hasn't been called for\n * this long before handling the last call.\n */\nconst UPDATE_CART_DEBOUNCE_MS = 50;\n\n/**\n * Sends cart information to Beam\n * Memoized based on previous arguments - if the objects are deep-equal, no update is made.\n * @side-effects Sets beam_cart cookie, set cart data in localstorage\n * @example\n * const BeamConfig = { apiKey: 'abc-123' }\n * const { beamCartId } = await updateCart(BeamConfig, { beamCartId, itemCount, subtotal, currencyCode })\n * */\nconst updateCart = debounce(\n memoizeLast(async function updateCart(\n config: BeamCartAPIConfig,\n cartValues: BeamCartValues,\n isFirstCartUpdateOnPageLoad = false\n ) {\n try {\n const localStorage = createScopedLocalStorage({ apiKey: config.apiKey });\n const baseUrl = config.baseUrl ?? DEFAULT_BASE_URL;\n\n // The cart cache is used to detect changes after page refreshes / across tabs\n const cachedCart: TBeamCartLocalStorage | null = localStorage.getItemJson(\"cart\");\n // The Beam cart cookie is used to identify the cart across subdomains\n // Use explicit null if empty because API requires it\n const beamCartId: string | null = getBeamCartId(BEAM_CART_COOKIE_NAME, config);\n // Remote session ID (ie, device ID from an A/B testing tool) will be linked to the cart\n const remoteSessionId: string | undefined = getRemoteSession(config) ?? undefined;\n\n const {\n cartId,\n subtotal,\n itemCount,\n currencyCode,\n content: { items = [], discounts = [] } = {},\n schema = { source: \"generic\" },\n } = cartValues;\n\n const cartWithDefaults = {\n cartId,\n subtotal,\n itemCount,\n currencyCode,\n content: { items, discounts },\n schema,\n beamCartId,\n };\n\n // If this is our first time calling \"updateCart\" on page load, and there is\n // no prior \"cachedCart\", and the current Platform cart is not empty,\n // we should assume that the cart has not been interacted with.\n // In this case, we want to cache the current cart, but not send it to Beam\n // so that the next time we call this method, it will compare to the existing\n // Platform cart\n if (isFirstCartUpdateOnPageLoad && !cachedCart && !!cartValues?.itemCount) {\n // logger.debug(\n // \"[update-cart] first attempt to update cart; no prior cart found, cart is not empty; skipping update to Beam\"\n // );\n localStorage.setItemJson(\"cart\", {\n ...cartWithDefaults,\n beamCartId: beamCartId,\n });\n\n return;\n }\n\n // Early return conditions. Skip sending cart to Beam if any apply:\n // 1. The cart has not changed\n // 2. Cart is empty, unless the cart was not empty before\n if (\n isEqual(cartWithDefaults, {\n ...cachedCart,\n cartId: cachedCart?.cartId /* make sure optional key is defined even if empty */,\n }) || // cart has not changed, OR\n (cartValues.itemCount === 0 && // nothing in current cart, AND\n (!beamCartId || cachedCart?.itemCount === 0)) // no/expired prev cart or prev cart was empty\n ) {\n // logger.debug(\"[update-cart] cart not changed\");\n // If the cart has not changed because the cart is empty now,\n // we still want to save that this changed happened in our cached cart\n // so the next update will compare against a current cart\n localStorage.setItemJson(\"cart\", {\n ...cartWithDefaults,\n beamCartId: beamCartId,\n });\n\n return;\n }\n\n formatStoreAndReturnPromoCodes(\n (discounts ?? []).map((discount) => ({ value: discount?.code })),\n config.apiKey\n );\n window.dispatchEvent(new BeamWidgetStoredPromoCodesEvent({ source: HELPER_NAMES.cart_update }));\n // logger.debug(\"[update-cart] sending cart update request\");\n const response = await postCart({\n baseUrl,\n headers: {\n authorization: `Api-Key ${config.apiKey}`,\n },\n requestBody: {\n beamCartId, // backwards compat: explicitly sending null here is required to get initial beamCartId\n storeId: config.storeId,\n remoteSessionId,\n cartId,\n subtotal,\n itemCount,\n currencyCode,\n },\n });\n\n // Response will contain a new beamCartId if one was not provided, or old one expired\n const { beamCartId: newBeamCartId, expiresAt, beamCartCreated } = response;\n\n if (newBeamCartId && expiresAt) {\n await setCookieValue({\n name: BEAM_CART_COOKIE_NAME,\n domain: config.domain,\n value: newBeamCartId,\n path: \"/\",\n // If we don't set an expiration, the cookie will be cleared when the tab is closed\n expires: new Date(expiresAt).getTime(),\n });\n }\n\n localStorage.setItemJson(\"cart\", {\n ...cartWithDefaults,\n beamCartId: newBeamCartId,\n });\n\n const eventDetail = {\n schema: schema as any, // TS union type can't figure out what variant applies here\n content: {\n items: items as any,\n discounts: discounts as any,\n },\n subtotal,\n itemCount,\n currencyCode,\n cartId,\n beamCartId: newBeamCartId,\n };\n\n // emit change event on any create/update/delete of cart items\n window.dispatchEvent(new BeamCartChangeEvent(eventDetail));\n\n // emit created event only when the cart is new according to Beam\n if (beamCartCreated) {\n window.dispatchEvent(new BeamCartCreatedEvent(eventDetail));\n }\n } catch (err) {\n throw new BeamError(\"Could not update cart in Beam\", { cause: err });\n }\n }),\n UPDATE_CART_DEBOUNCE_MS,\n { leading: true } // handle first call immediately but delay for more calls within debounce window\n);\n\nexport { updateCart };\n"],"names":["UPDATE_CART_DEBOUNCE_MS","updateCart","debounce","memoizeLast","config","cartValues","isFirstCartUpdateOnPageLoad","localStorage","createScopedLocalStorage","baseUrl","DEFAULT_BASE_URL","cachedCart","beamCartId","getBeamCartId","BEAM_CART_COOKIE_NAME","remoteSessionId","getRemoteSession","cartId","subtotal","itemCount","currencyCode","items","discounts","schema","cartWithDefaults","isEqual","formatStoreAndReturnPromoCodes","discount","BeamWidgetStoredPromoCodesEvent","HELPER_NAMES","response","postCart","newBeamCartId","expiresAt","beamCartCreated","setCookieValue","eventDetail","BeamCartChangeEvent","BeamCartCreatedEvent","err","BeamError"],"mappings":"wpBA+BMA,EAA0B,GAU1BC,EAAaC,EACjBC,EAAY,eACVC,EACAC,EACAC,EAA8B,GAC9B,CACA,GAAI,CACF,MAAMC,EAAeC,EAAyB,CAAE,OAAQJ,EAAO,MAAO,CAAC,EACjEK,EAAUL,EAAO,SAAWM,EAG5BC,EAA2CJ,EAAa,YAAY,MAAM,EAG1EK,EAA4BC,EAAcC,EAAuBV,CAAM,EAEvEW,EAAsCC,EAAiBZ,CAAM,GAAK,OAElE,CACJ,OAAAa,EACA,SAAAC,EACA,UAAAC,EACA,aAAAC,EACA,QAAS,CAAE,MAAAC,EAAQ,CAAI,EAAA,UAAAC,EAAY,CAAG,CAAA,EAAI,CAAA,EAC1C,OAAAC,EAAS,CAAE,OAAQ,SAAU,CAC/B,EAAIlB,EAEEmB,EAAmB,CACvB,OAAAP,EACA,SAAAC,EACA,UAAAC,EACA,aAAAC,EACA,QAAS,CAAE,MAAAC,EAAO,UAAAC,CAAU,EAC5B,OAAAC,EACA,WAAAX,CACF,EAQA,GAAIN,GAA+B,CAACK,GAAgBN,GAAY,UAAW,CAIzEE,EAAa,YAAY,OAAQ,CAC/B,GAAGiB,EACH,WAAYZ,CACd,CAAC,EAED,MACF,CAKA,GACEa,EAAQD,EAAkB,CACxB,GAAGb,EACH,OAAQA,GAAY,MACtB,CAAC,GACAN,EAAW,YAAc,IACvB,CAACO,GAAcD,GAAY,YAAc,GAC5C,CAKAJ,EAAa,YAAY,OAAQ,CAC/B,GAAGiB,EACH,WAAYZ,CACd,CAAC,EAED,MACF,CAEAc,GACGJ,GAAa,CAAC,GAAG,IAAKK,IAAc,CAAE,MAAOA,GAAU,IAAK,EAAE,EAC/DvB,EAAO,MACT,EACA,OAAO,cAAc,IAAIwB,EAAgC,CAAE,OAAQC,EAAa,WAAY,CAAC,CAAC,EAE9F,MAAMC,EAAW,MAAMC,EAAS,CAC9B,QAAAtB,EACA,QAAS,CACP,cAAe,WAAWL,EAAO,MAAM,EACzC,EACA,YAAa,CACX,WAAAQ,EACA,QAASR,EAAO,QAChB,gBAAAW,EACA,OAAAE,EACA,SAAAC,EACA,UAAAC,EACA,aAAAC,CACF,CACF,CAAC,EAGK,CAAE,WAAYY,EAAe,UAAAC,EAAW,gBAAAC,CAAgB,EAAIJ,EAE9DE,GAAiBC,GACnB,MAAME,EAAe,CACnB,KAAMrB,EACN,OAAQV,EAAO,OACf,MAAO4B,EACP,KAAM,IAEN,QAAS,IAAI,KAAKC,CAAS,EAAE,QAAA,CAC/B,CAAC,EAGH1B,EAAa,YAAY,OAAQ,CAC/B,GAAGiB,EACH,WAAYQ,CACd,CAAC,EAED,MAAMI,EAAc,CAClB,OAAQb,EACR,QAAS,CACP,MAAOF,EACP,UAAWC,CACb,EACA,SAAAJ,EACA,UAAAC,EACA,aAAAC,EACA,OAAAH,EACA,WAAYe,CACd,EAGA,OAAO,cAAc,IAAIK,EAAoBD,CAAW,CAAC,EAGrDF,GACF,OAAO,cAAc,IAAII,EAAqBF,CAAW,CAAC,CAE9D,OAASG,EAAK,CACZ,MAAM,IAAIC,EAAU,gCAAiC,CAAE,MAAOD,CAAI,CAAC,CACrE,CACF,CAAC,EACDvC,EACA,CAAE,QAAS,EAAK,CAClB"}