@beamimpact/web-sdk 1.56.3 → 1.57.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 (398) hide show
  1. package/dist/chunks/_share-dialog-dependencies-BEUnzuWq.esm.js +2 -0
  2. package/dist/chunks/{_share-dialog-dependencies-Bk60ibnw.esm.js.map → _share-dialog-dependencies-BEUnzuWq.esm.js.map} +1 -1
  3. package/dist/chunks/{order-page-CSEjG6ma.esm.d.ts → cart-CKltrzQt.esm.d.ts} +22 -34
  4. package/dist/chunks/css-card-grid-CiqEjkwR.esm.js +21 -0
  5. package/dist/chunks/css-card-grid-CiqEjkwR.esm.js.map +1 -0
  6. package/dist/chunks/handlebars-B_i-to-h.esm.js +23 -0
  7. package/dist/chunks/handlebars-B_i-to-h.esm.js.map +1 -0
  8. package/dist/chunks/index-B4xKTDaF.esm.js +2 -0
  9. package/dist/chunks/index-B4xKTDaF.esm.js.map +1 -0
  10. package/dist/chunks/{index-C_u1FXtO.esm.d.ts → index-BAROgNYE.esm.d.ts} +7 -10
  11. package/dist/chunks/{index-BLlSL37B.esm.d.ts → index-BH3YaPLG.esm.d.ts} +1 -1
  12. package/dist/chunks/index-BHglsF5j.esm.js +2 -0
  13. package/dist/chunks/index-BHglsF5j.esm.js.map +1 -0
  14. package/dist/chunks/index-BgalrCS_.esm.js +32 -0
  15. package/dist/chunks/index-BgalrCS_.esm.js.map +1 -0
  16. package/dist/chunks/{index-hghrT7Z_.esm.d.ts → index-BoIHE1tC.esm.d.ts} +3 -0
  17. package/dist/chunks/index-C60Vejym.esm.js +32 -0
  18. package/dist/chunks/index-C60Vejym.esm.js.map +1 -0
  19. package/dist/chunks/{index-DDCtGN21.esm.d.ts → index-C6a13iqC.esm.d.ts} +3 -5
  20. package/dist/chunks/index-D6aFJ4cU.esm.js +2 -0
  21. package/dist/chunks/index-D6aFJ4cU.esm.js.map +1 -0
  22. package/dist/chunks/index-Dm-K2MLY.esm.js +31 -0
  23. package/dist/chunks/index-Dm-K2MLY.esm.js.map +1 -0
  24. package/dist/chunks/{index-BEEmYYxP.esm.js → index-DqhM4Yoj.esm.js} +11 -11
  25. package/dist/chunks/index-DqhM4Yoj.esm.js.map +1 -0
  26. package/dist/chunks/{index-UMeAzKTG.esm.js → index-HqfLVFOU.esm.js} +11 -11
  27. package/dist/chunks/index-HqfLVFOU.esm.js.map +1 -0
  28. package/dist/chunks/index-MAMeVd6l.esm.js +2 -0
  29. package/dist/chunks/index-MAMeVd6l.esm.js.map +1 -0
  30. package/dist/chunks/{index-DyUuvdr3.esm.d.ts → index-OYSJ-2mk.esm.d.ts} +1 -1
  31. package/dist/chunks/{index-BY5lSRmw.esm.d.ts → index-mBTWm4YP.esm.d.ts} +2 -2
  32. package/dist/chunks/{lit-JRlupCB5.esm.js → lit-BEag9MFp.esm.js} +2 -2
  33. package/dist/chunks/{lit-JRlupCB5.esm.js.map → lit-BEag9MFp.esm.js.map} +1 -1
  34. package/dist/chunks/{lodash-BSs6Il-c.esm.js → lodash-CrMU6wKg.esm.js} +2 -2
  35. package/dist/chunks/{lodash-BSs6Il-c.esm.js.map → lodash-CrMU6wKg.esm.js.map} +1 -1
  36. package/dist/chunks/{promo-pill-label-D_4zJ7uy.esm.js → promo-pill-label-5HmbDVmU.esm.js} +2 -2
  37. package/dist/chunks/{promo-pill-label-D_4zJ7uy.esm.js.map → promo-pill-label-5HmbDVmU.esm.js.map} +1 -1
  38. package/dist/chunks/{responsive-CIV4sFdH.esm.js → responsive-aN8P5PqD.esm.js} +2 -2
  39. package/dist/chunks/{responsive-CIV4sFdH.esm.js.map → responsive-aN8P5PqD.esm.js.map} +1 -1
  40. package/dist/chunks/{routes-OxC3Ah30.esm.d.ts → routes-D6Gtw6kZ.esm.d.ts} +1 -1
  41. package/dist/chunks/share-button-5gfPmeEh.esm.js +54 -0
  42. package/dist/chunks/share-button-5gfPmeEh.esm.js.map +1 -0
  43. package/dist/chunks/{share-button-Dzc7loia.esm.js → share-button-C4yPLL_t.esm.js} +2 -2
  44. package/dist/chunks/{share-button-DkTpGZk1.esm.js.map → share-button-C4yPLL_t.esm.js.map} +1 -1
  45. package/dist/chunks/{update-cart-DWgFuC7U.esm.d.ts → update-cart-DoJGAdoU.esm.d.ts} +2 -3
  46. package/dist/chunks/utils-C5hmbxa4.esm.js +2 -0
  47. package/dist/chunks/utils-C5hmbxa4.esm.js.map +1 -0
  48. package/dist/chunks/{openapi-spec-B4z4_CMq.esm.d.ts → utils-COGFpDER.esm.d.ts} +597 -11
  49. package/dist/chunks/{vendor-ckSdd6aH.esm.js → vendor-DUOg5fL-.esm.js} +2 -2
  50. package/dist/chunks/{vendor-ckSdd6aH.esm.js.map → vendor-DUOg5fL-.esm.js.map} +1 -1
  51. package/dist/components/beam-partner-logos.d.ts +3 -1
  52. package/dist/components/beam-partner-logos.esm.js +1 -1
  53. package/dist/components/beam-partner-logos.js +1 -1
  54. package/dist/components/community-impact.d.ts +3 -2
  55. package/dist/components/community-impact.esm.js +6 -6
  56. package/dist/components/community-impact.esm.js.map +1 -1
  57. package/dist/components/community-impact.js +6 -6
  58. package/dist/components/community-impact.js.map +1 -1
  59. package/dist/components/cumulative-impact.d.ts +3 -2
  60. package/dist/components/cumulative-impact.esm.js +11 -11
  61. package/dist/components/cumulative-impact.esm.js.map +1 -1
  62. package/dist/components/cumulative-impact.js +11 -11
  63. package/dist/components/cumulative-impact.js.map +1 -1
  64. package/dist/components/impact-overview.d.ts +3 -2
  65. package/dist/components/impact-overview.esm.js +5 -5
  66. package/dist/components/impact-overview.esm.js.map +1 -1
  67. package/dist/components/impact-overview.js +5 -5
  68. package/dist/components/impact-overview.js.map +1 -1
  69. package/dist/components/index.d.ts +5 -5
  70. package/dist/components/index.esm.js +1 -1
  71. package/dist/components/index.js +1 -1
  72. package/dist/components/post-purchase.d.ts +3 -4
  73. package/dist/components/post-purchase.esm.js +1 -31
  74. package/dist/components/post-purchase.esm.js.map +1 -1
  75. package/dist/components/post-purchase.js +1 -31
  76. package/dist/components/post-purchase.js.map +1 -1
  77. package/dist/components/product-details-page.d.ts +4 -2
  78. package/dist/components/product-details-page.esm.js +4 -4
  79. package/dist/components/product-details-page.esm.js.map +1 -1
  80. package/dist/components/product-details-page.js +4 -4
  81. package/dist/components/product-details-page.js.map +1 -1
  82. package/dist/components/redeem-transaction.d.ts +3 -4
  83. package/dist/components/redeem-transaction.esm.js +1 -1
  84. package/dist/components/redeem-transaction.js +1 -1
  85. package/dist/components/select-nonprofit.d.ts +3 -4
  86. package/dist/components/select-nonprofit.esm.js +12 -12
  87. package/dist/components/select-nonprofit.esm.js.map +1 -1
  88. package/dist/components/select-nonprofit.js +12 -12
  89. package/dist/components/select-nonprofit.js.map +1 -1
  90. package/dist/components/select-subscription-nonprofit.d.ts +3 -2
  91. package/dist/components/select-subscription-nonprofit.esm.js +11 -11
  92. package/dist/components/select-subscription-nonprofit.esm.js.map +1 -1
  93. package/dist/components/select-subscription-nonprofit.js +11 -11
  94. package/dist/components/select-subscription-nonprofit.js.map +1 -1
  95. package/dist/components/shopify.d.ts +9 -12
  96. package/dist/components/shopify.esm.js +1 -1
  97. package/dist/components/shopify.esm.js.map +1 -1
  98. package/dist/components/shopify.js +1 -1
  99. package/dist/components/shopify.js.map +1 -1
  100. package/dist/components/social-share.d.ts +3 -2
  101. package/dist/components/social-share.esm.js +2 -2
  102. package/dist/components/social-share.esm.js.map +1 -1
  103. package/dist/components/social-share.js +2 -2
  104. package/dist/components/social-share.js.map +1 -1
  105. package/dist/components/subscriber-select-nonprofit.d.ts +59 -0
  106. package/dist/components/subscriber-select-nonprofit.esm.js +137 -0
  107. package/dist/components/subscriber-select-nonprofit.esm.js.map +1 -0
  108. package/dist/components/subscriber-select-nonprofit.js +137 -0
  109. package/dist/components/subscriber-select-nonprofit.js.map +1 -0
  110. package/dist/components/subscription-impact.d.ts +3 -2
  111. package/dist/components/subscription-impact.esm.js +6 -6
  112. package/dist/components/subscription-impact.esm.js.map +1 -1
  113. package/dist/components/subscription-impact.js +6 -6
  114. package/dist/components/subscription-impact.js.map +1 -1
  115. package/dist/components/subscription-management.d.ts +4 -5
  116. package/dist/components/subscription-management.esm.js +3 -3
  117. package/dist/components/subscription-management.esm.js.map +1 -1
  118. package/dist/components/subscription-management.js +3 -3
  119. package/dist/components/subscription-management.js.map +1 -1
  120. package/dist/index.d.ts +39 -38
  121. package/dist/index.esm.js +1 -1
  122. package/dist/index.js +1 -1
  123. package/dist/integrations/beam.d.ts +3 -1
  124. package/dist/integrations/beam.esm.js +1 -1
  125. package/dist/integrations/beam.esm.js.map +1 -1
  126. package/dist/integrations/beam.js +1 -1
  127. package/dist/integrations/beam.js.map +1 -1
  128. package/dist/integrations/cart.d.ts +4 -4
  129. package/dist/integrations/cart.esm.js +1 -1
  130. package/dist/integrations/cart.js +1 -1
  131. package/dist/integrations/logs.d.ts +4 -2
  132. package/dist/integrations/logs.esm.js +1 -1
  133. package/dist/integrations/logs.js +1 -1
  134. package/dist/integrations/promoManager.d.ts +3 -1
  135. package/dist/integrations/promoManager.esm.js +1 -1
  136. package/dist/integrations/promoManager.esm.js.map +1 -1
  137. package/dist/integrations/promoManager.js +1 -1
  138. package/dist/integrations/promoManager.js.map +1 -1
  139. package/dist/integrations/session.d.ts +1 -1
  140. package/dist/integrations/session.esm.js +1 -1
  141. package/dist/integrations/session.js +1 -1
  142. package/dist/integrations/shopify-order.d.ts +38 -0
  143. package/dist/integrations/shopify-order.esm.js +2 -0
  144. package/dist/integrations/shopify-order.esm.js.map +1 -0
  145. package/dist/integrations/shopify-order.js +2 -0
  146. package/dist/integrations/shopify-order.js.map +1 -0
  147. package/dist/integrations/shopify.d.ts +5 -12
  148. package/dist/integrations/shopify.esm.js +1 -1
  149. package/dist/integrations/shopify.js +1 -1
  150. package/dist/integrations/statsig.d.ts +3 -1
  151. package/dist/integrations/statsig.esm.js +3 -3
  152. package/dist/integrations/statsig.esm.js.map +1 -1
  153. package/dist/integrations/statsig.js +3 -3
  154. package/dist/integrations/statsig.js.map +1 -1
  155. package/dist/integrations/utils.d.ts +1 -14
  156. package/dist/integrations/utils.esm.js +1 -1
  157. package/dist/integrations/utils.js +1 -1
  158. package/dist/react/beam-partner-logos.d.ts +3 -1
  159. package/dist/react/beam-partner-logos.esm.js +1 -1
  160. package/dist/react/beam-partner-logos.js +1 -1
  161. package/dist/react/community-impact.d.ts +3 -2
  162. package/dist/react/community-impact.esm.js +1 -1
  163. package/dist/react/community-impact.esm.js.map +1 -1
  164. package/dist/react/community-impact.js +1 -1
  165. package/dist/react/community-impact.js.map +1 -1
  166. package/dist/react/cumulative-impact.d.ts +3 -2
  167. package/dist/react/cumulative-impact.esm.js +1 -1
  168. package/dist/react/cumulative-impact.esm.js.map +1 -1
  169. package/dist/react/cumulative-impact.js +1 -1
  170. package/dist/react/cumulative-impact.js.map +1 -1
  171. package/dist/react/impact-overview.d.ts +3 -2
  172. package/dist/react/impact-overview.esm.js +1 -1
  173. package/dist/react/impact-overview.esm.js.map +1 -1
  174. package/dist/react/impact-overview.js +1 -1
  175. package/dist/react/impact-overview.js.map +1 -1
  176. package/dist/react/index.d.ts +6 -7
  177. package/dist/react/index.esm.js +1 -1
  178. package/dist/react/index.js +1 -1
  179. package/dist/react/post-purchase.d.ts +3 -4
  180. package/dist/react/post-purchase.esm.js +1 -1
  181. package/dist/react/post-purchase.esm.js.map +1 -1
  182. package/dist/react/post-purchase.js +1 -1
  183. package/dist/react/post-purchase.js.map +1 -1
  184. package/dist/react/product-details-page.d.ts +4 -2
  185. package/dist/react/product-details-page.esm.js +1 -1
  186. package/dist/react/product-details-page.esm.js.map +1 -1
  187. package/dist/react/product-details-page.js +1 -1
  188. package/dist/react/product-details-page.js.map +1 -1
  189. package/dist/react/redeem-transaction.d.ts +3 -6
  190. package/dist/react/redeem-transaction.esm.js +1 -1
  191. package/dist/react/redeem-transaction.esm.js.map +1 -1
  192. package/dist/react/redeem-transaction.js +1 -1
  193. package/dist/react/redeem-transaction.js.map +1 -1
  194. package/dist/react/select-nonprofit.d.ts +3 -6
  195. package/dist/react/select-nonprofit.esm.js +1 -1
  196. package/dist/react/select-nonprofit.esm.js.map +1 -1
  197. package/dist/react/select-nonprofit.js +1 -1
  198. package/dist/react/select-nonprofit.js.map +1 -1
  199. package/dist/react/select-subscription-nonprofit.d.ts +3 -6
  200. package/dist/react/select-subscription-nonprofit.esm.js +1 -1
  201. package/dist/react/select-subscription-nonprofit.esm.js.map +1 -1
  202. package/dist/react/select-subscription-nonprofit.js +1 -1
  203. package/dist/react/select-subscription-nonprofit.js.map +1 -1
  204. package/dist/react/shopify.d.ts +2 -2
  205. package/dist/react/shopify.esm.js +1 -1
  206. package/dist/react/shopify.esm.js.map +1 -1
  207. package/dist/react/shopify.js +1 -1
  208. package/dist/react/shopify.js.map +1 -1
  209. package/dist/react/social-share.d.ts +3 -2
  210. package/dist/react/social-share.esm.js +1 -1
  211. package/dist/react/social-share.esm.js.map +1 -1
  212. package/dist/react/social-share.js +1 -1
  213. package/dist/react/social-share.js.map +1 -1
  214. package/dist/react/subscriber-select-nonprofit.d.ts +14 -0
  215. package/dist/react/subscriber-select-nonprofit.esm.js +2 -0
  216. package/dist/react/subscriber-select-nonprofit.esm.js.map +1 -0
  217. package/dist/react/subscriber-select-nonprofit.js +2 -0
  218. package/dist/react/subscriber-select-nonprofit.js.map +1 -0
  219. package/dist/react/subscription-impact.d.ts +3 -2
  220. package/dist/react/subscription-impact.esm.js +1 -1
  221. package/dist/react/subscription-impact.esm.js.map +1 -1
  222. package/dist/react/subscription-impact.js +1 -1
  223. package/dist/react/subscription-impact.js.map +1 -1
  224. package/dist/react/subscription-management.d.ts +4 -5
  225. package/dist/react/subscription-management.esm.js +1 -1
  226. package/dist/react/subscription-management.esm.js.map +1 -1
  227. package/dist/react/subscription-management.js +1 -1
  228. package/dist/react/subscription-management.js.map +1 -1
  229. package/dist/utils/beam-errors.d.ts +3 -1
  230. package/dist/utils/beam-errors.esm.js +1 -1
  231. package/dist/utils/beam-errors.js +1 -1
  232. package/dist/utils/cart.d.ts +3 -18
  233. package/dist/utils/cart.esm.js +1 -1
  234. package/dist/utils/cart.esm.js.map +1 -1
  235. package/dist/utils/cart.js +1 -1
  236. package/dist/utils/cart.js.map +1 -1
  237. package/dist/utils/clear-beam-storage.d.ts +3 -0
  238. package/dist/utils/clear-beam-storage.esm.js +2 -0
  239. package/dist/utils/clear-beam-storage.esm.js.map +1 -0
  240. package/dist/utils/clear-beam-storage.js +2 -0
  241. package/dist/utils/clear-beam-storage.js.map +1 -0
  242. package/dist/utils/cookies.d.ts +3 -18
  243. package/dist/utils/cookies.esm.js +1 -1
  244. package/dist/utils/cookies.esm.js.map +1 -1
  245. package/dist/utils/cookies.js +1 -1
  246. package/dist/utils/cookies.js.map +1 -1
  247. package/dist/utils/debounce.esm.js +1 -1
  248. package/dist/utils/debounce.js +1 -1
  249. package/dist/utils/events.d.ts +3 -5
  250. package/dist/utils/events.esm.js +1 -1
  251. package/dist/utils/events.js +1 -1
  252. package/dist/utils/is-equal.esm.js +1 -1
  253. package/dist/utils/is-equal.js +1 -1
  254. package/dist/utils/local-storage.d.ts +3 -19
  255. package/dist/utils/local-storage.esm.js +1 -1
  256. package/dist/utils/local-storage.esm.js.map +1 -1
  257. package/dist/utils/local-storage.js +1 -1
  258. package/dist/utils/local-storage.js.map +1 -1
  259. package/dist/utils/logger.d.ts +3 -8
  260. package/dist/utils/logger.esm.js +1 -1
  261. package/dist/utils/logger.esm.js.map +1 -1
  262. package/dist/utils/logger.js +1 -1
  263. package/dist/utils/logger.js.map +1 -1
  264. package/dist/utils/makeApiKeyHeader.d.ts +3 -5
  265. package/dist/utils/makeApiKeyHeader.esm.js +1 -1
  266. package/dist/utils/makeApiKeyHeader.esm.js.map +1 -1
  267. package/dist/utils/makeApiKeyHeader.js +1 -1
  268. package/dist/utils/makeApiKeyHeader.js.map +1 -1
  269. package/dist/utils/memoize-last.d.ts +3 -17
  270. package/dist/utils/memoize-last.esm.js +1 -1
  271. package/dist/utils/memoize-last.esm.js.map +1 -1
  272. package/dist/utils/memoize-last.js +1 -1
  273. package/dist/utils/memoize-last.js.map +1 -1
  274. package/dist/utils/network-listeners.d.ts +3 -3
  275. package/dist/utils/network-listeners.esm.js +1 -1
  276. package/dist/utils/network-listeners.esm.js.map +1 -1
  277. package/dist/utils/network-listeners.js +1 -1
  278. package/dist/utils/network-listeners.js.map +1 -1
  279. package/dist/utils/promoManager.d.ts +3 -111
  280. package/dist/utils/promoManager.esm.js +1 -1
  281. package/dist/utils/promoManager.esm.js.map +1 -1
  282. package/dist/utils/promoManager.js +1 -1
  283. package/dist/utils/promoManager.js.map +1 -1
  284. package/dist/utils/remote-session.d.ts +3 -9
  285. package/dist/utils/remote-session.esm.js +1 -1
  286. package/dist/utils/remote-session.esm.js.map +1 -1
  287. package/dist/utils/remote-session.js +1 -1
  288. package/dist/utils/remote-session.js.map +1 -1
  289. package/dist/utils/wait-for-element.d.ts +3 -5
  290. package/dist/utils/wait-for-element.esm.js +1 -1
  291. package/dist/utils/wait-for-element.esm.js.map +1 -1
  292. package/dist/utils/wait-for-element.js +1 -1
  293. package/dist/utils/wait-for-element.js.map +1 -1
  294. package/package.json +9 -6
  295. package/dist/chunks/_share-dialog-dependencies-Bk60ibnw.esm.js +0 -2
  296. package/dist/chunks/_share-dialog-dependencies-D6vA_2f6.esm.js +0 -2
  297. package/dist/chunks/_share-dialog-dependencies-D6vA_2f6.esm.js.map +0 -1
  298. package/dist/chunks/beam-errors-Ci0d3926.esm.js +0 -2
  299. package/dist/chunks/beam-errors-Ci0d3926.esm.js.map +0 -1
  300. package/dist/chunks/beam-errors-DUQ9pK2V.esm.d.ts +0 -46
  301. package/dist/chunks/cart-contents-CEoSx3y4.esm.d.ts +0 -18
  302. package/dist/chunks/cart-contents-DkoytiZh.esm.js +0 -2
  303. package/dist/chunks/cart-contents-DkoytiZh.esm.js.map +0 -1
  304. package/dist/chunks/css-card-grid-DixMt6ek.esm.js +0 -20
  305. package/dist/chunks/css-card-grid-DixMt6ek.esm.js.map +0 -1
  306. package/dist/chunks/enforce-config-DHnpgqSK.esm.js +0 -3
  307. package/dist/chunks/enforce-config-DHnpgqSK.esm.js.map +0 -1
  308. package/dist/chunks/enforce-config-DUbQnaLO.esm.js +0 -3
  309. package/dist/chunks/enforce-config-DUbQnaLO.esm.js.map +0 -1
  310. package/dist/chunks/events-COWOQoLW.esm.js +0 -2
  311. package/dist/chunks/events-COWOQoLW.esm.js.map +0 -1
  312. package/dist/chunks/events-Dwqfqbij.esm.d.ts +0 -214
  313. package/dist/chunks/index-8rOpG9kf.esm.js +0 -2
  314. package/dist/chunks/index-8rOpG9kf.esm.js.map +0 -1
  315. package/dist/chunks/index-B1GmdVT3.esm.js +0 -2
  316. package/dist/chunks/index-B1GmdVT3.esm.js.map +0 -1
  317. package/dist/chunks/index-B2dxbh1d.esm.js +0 -2
  318. package/dist/chunks/index-B2dxbh1d.esm.js.map +0 -1
  319. package/dist/chunks/index-BEEmYYxP.esm.js.map +0 -1
  320. package/dist/chunks/index-BIEV1MH0.esm.js +0 -2
  321. package/dist/chunks/index-BIEV1MH0.esm.js.map +0 -1
  322. package/dist/chunks/index-BaWMWAyt.esm.js +0 -2
  323. package/dist/chunks/index-BaWMWAyt.esm.js.map +0 -1
  324. package/dist/chunks/index-BeX4QeUu.esm.js +0 -2
  325. package/dist/chunks/index-BeX4QeUu.esm.js.map +0 -1
  326. package/dist/chunks/index-C3hpHWh1.esm.js +0 -2
  327. package/dist/chunks/index-C3hpHWh1.esm.js.map +0 -1
  328. package/dist/chunks/index-C3v-y56g.esm.js +0 -2
  329. package/dist/chunks/index-C3v-y56g.esm.js.map +0 -1
  330. package/dist/chunks/index-CqqF1sQo.esm.js +0 -2
  331. package/dist/chunks/index-CqqF1sQo.esm.js.map +0 -1
  332. package/dist/chunks/index-Cs4Kp9X4.esm.js +0 -2
  333. package/dist/chunks/index-Cs4Kp9X4.esm.js.map +0 -1
  334. package/dist/chunks/index-D20ifskY.esm.d.ts +0 -21
  335. package/dist/chunks/index-D3hxLDQF.esm.js +0 -2
  336. package/dist/chunks/index-D3hxLDQF.esm.js.map +0 -1
  337. package/dist/chunks/index-D5TZB-zM.esm.js +0 -2
  338. package/dist/chunks/index-D5TZB-zM.esm.js.map +0 -1
  339. package/dist/chunks/index-D6qJfs7_.esm.js +0 -2
  340. package/dist/chunks/index-D6qJfs7_.esm.js.map +0 -1
  341. package/dist/chunks/index-DSJACB_p.esm.js +0 -2
  342. package/dist/chunks/index-DSJACB_p.esm.js.map +0 -1
  343. package/dist/chunks/index-DmjZnpod.esm.js +0 -2
  344. package/dist/chunks/index-DmjZnpod.esm.js.map +0 -1
  345. package/dist/chunks/index-EJRmgmQu.esm.d.ts +0 -74
  346. package/dist/chunks/index-UMeAzKTG.esm.js.map +0 -1
  347. package/dist/chunks/index-mppXVWCH.esm.js +0 -2
  348. package/dist/chunks/index-mppXVWCH.esm.js.map +0 -1
  349. package/dist/chunks/index-n62IxH5D.esm.js +0 -2
  350. package/dist/chunks/index-n62IxH5D.esm.js.map +0 -1
  351. package/dist/chunks/index-nAPzvUWE.esm.js +0 -2
  352. package/dist/chunks/index-nAPzvUWE.esm.js.map +0 -1
  353. package/dist/chunks/index-xcGPhpiO.esm.d.ts +0 -44
  354. package/dist/chunks/is-all-html-elements-fcB7UUA1.esm.js +0 -2
  355. package/dist/chunks/is-all-html-elements-fcB7UUA1.esm.js.map +0 -1
  356. package/dist/chunks/loading-template-BFvXaTlD.esm.js +0 -2
  357. package/dist/chunks/loading-template-BFvXaTlD.esm.js.map +0 -1
  358. package/dist/chunks/localize-Dg7NgKIP.esm.js +0 -31
  359. package/dist/chunks/localize-Dg7NgKIP.esm.js.map +0 -1
  360. package/dist/chunks/localize-DkAbsh05.esm.js +0 -31
  361. package/dist/chunks/localize-DkAbsh05.esm.js.map +0 -1
  362. package/dist/chunks/order-page-B0WbVrvh.esm.js +0 -2
  363. package/dist/chunks/order-page-B0WbVrvh.esm.js.map +0 -1
  364. package/dist/chunks/order-page-CT3hnhzf.esm.js +0 -2
  365. package/dist/chunks/order-page-CT3hnhzf.esm.js.map +0 -1
  366. package/dist/chunks/progress-bar-B82FOT8n.esm.js +0 -54
  367. package/dist/chunks/progress-bar-B82FOT8n.esm.js.map +0 -1
  368. package/dist/chunks/promo-pill-label-DcsiJS_N.esm.js +0 -16
  369. package/dist/chunks/promo-pill-label-DcsiJS_N.esm.js.map +0 -1
  370. package/dist/chunks/promo-types-CmZzhkpN.esm.d.ts +0 -15
  371. package/dist/chunks/promo-types-DKAOFHJr.esm.js +0 -2
  372. package/dist/chunks/promo-types-DKAOFHJr.esm.js.map +0 -1
  373. package/dist/chunks/routes-BIMwJ8u9.esm.js +0 -2
  374. package/dist/chunks/routes-BIMwJ8u9.esm.js.map +0 -1
  375. package/dist/chunks/routes-DSu5s3K7.esm.js +0 -2
  376. package/dist/chunks/routes-DSu5s3K7.esm.js.map +0 -1
  377. package/dist/chunks/share-button-CLMw49f5.esm.js +0 -2
  378. package/dist/chunks/share-button-CLMw49f5.esm.js.map +0 -1
  379. package/dist/chunks/share-button-DXS3zbJz.esm.js +0 -2
  380. package/dist/chunks/share-button-DXS3zbJz.esm.js.map +0 -1
  381. package/dist/chunks/share-button-DkTpGZk1.esm.js +0 -172
  382. package/dist/chunks/share-button-Dzc7loia.esm.js.map +0 -1
  383. package/dist/chunks/types-D_PLq1pj.esm.d.ts +0 -28
  384. package/dist/chunks/types-DfRc36jU.esm.d.ts +0 -15
  385. package/dist/chunks/update-cart-ByUvNLyZ.esm.js +0 -2
  386. package/dist/chunks/update-cart-ByUvNLyZ.esm.js.map +0 -1
  387. package/dist/chunks/update-cart-yj_9VGHp.esm.js +0 -2
  388. package/dist/chunks/update-cart-yj_9VGHp.esm.js.map +0 -1
  389. package/dist/integrations/index.d.ts +0 -31
  390. package/dist/integrations/index.esm.js +0 -2
  391. package/dist/integrations/index.esm.js.map +0 -1
  392. package/dist/integrations/index.js +0 -2
  393. package/dist/integrations/index.js.map +0 -1
  394. package/dist/utils/index.d.ts +0 -16
  395. package/dist/utils/index.esm.js +0 -2
  396. package/dist/utils/index.esm.js.map +0 -1
  397. package/dist/utils/index.js +0 -2
  398. package/dist/utils/index.js.map +0 -1
@@ -1,2 +0,0 @@
1
- import{v as d}from"./vendor-ckSdd6aH.esm.js";import{getCookieValue as i,setCookieValue as p,deleteCookieValue as l}from"../utils/cookies.js";import{createScopedLocalStorage as n}from"../utils/local-storage.js";const s="beam_session";async function r({cookieName:e=s,domain:o=window.location.hostname,apiKey:t=""}={}){if(await i(e))return;const a=d(),m=Date.now()+720*60*60*1e3;await p({name:e,value:a,domain:o,path:"/",expires:m}),n({apiKey:t}).setItemJson("cart",{cartId:a})}async function c({cookieName:e=s,domain:o=window.location.hostname,apiKey:t=""}={}){const a=await i(e);a&&(n({apiKey:t}).setItemJson("cart",{cartId:a}),await l({name:e,domain:o}))}var u=Object.freeze({__proto__:null,createSession:r,endSession:c});export{r as c,c as e,u as i};
2
- //# sourceMappingURL=index-DSJACB_p.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DSJACB_p.esm.js","sources":["../../src/integrations/session/index.ts"],"sourcesContent":["/**\n If checkout and order page are on different subdomains, we can't access localStorage for nonprofitId/selectionId\n We can make post-transaction work by copying a \"cartID\"-style cookie to the expected localStorage key on the current\n domain, which will allow the post-transaction widgets to send that to the backend which can restore the selection\n from the cart.\n\n This will also work if we don't have a cart cookie for some other reason, although it is not directly integrated\n with the host site's concept of a cart (e.g., line items and expiration dates).\n\n Note: Use a module import rather than a self-executing script so that we can set cookies on the host domain\n rather than our 3rd party CDN domain, and customize the options via arguments.\n\n Usage:\n <script type=\"module\">\n import { createSession } from 'https://...';\n createSession({domain: 'mystore.com'})\n </script>\n */\n\nimport { v4 as uuid } from \"@lukeed/uuid/secure\";\nimport { deleteCookieValue, getCookieValue, setCookieValue } from \"../../utils/cookies\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\n\nconst DEFAULT_COOKIE_NAME = \"beam_session\";\n\nexport async function createSession({\n cookieName = DEFAULT_COOKIE_NAME,\n domain = window.location.hostname, // domain or subdomain to set cookie on\n apiKey = \"\", // optional unless scoping localStorage to api key\n} = {}) {\n const existingValue = await getCookieValue(cookieName);\n\n if (existingValue) {\n return; // do nothing\n }\n\n const cookieValue = uuid();\n\n const expires = Date.now() + 30 * 24 * 60 * 60 * 1000; // 30 days\n\n await setCookieValue({ name: cookieName, value: cookieValue, domain, path: \"/\", expires });\n\n const beamLocalStorage = createScopedLocalStorage({ apiKey });\n beamLocalStorage.setItemJson(\"cart\", { cartId: cookieValue });\n}\n\nexport async function endSession({\n cookieName = DEFAULT_COOKIE_NAME,\n domain = window.location.hostname, // domain to remove cookie from\n apiKey = \"\", // optional unless scoping localStorage to api key\n} = {}) {\n const cookieValue = await getCookieValue(cookieName);\n\n if (!cookieValue) {\n return; // do nothing\n }\n\n // copy cookie value into localStorage for widgets to use\n const beamLocalStorage = createScopedLocalStorage({ apiKey });\n beamLocalStorage.setItemJson(\"cart\", { cartId: cookieValue });\n\n // delete cookie to end session (will generate new one on next visit)\n await deleteCookieValue({ name: cookieName, domain });\n}\n"],"names":["DEFAULT_COOKIE_NAME","createSession","cookieName","domain","apiKey","getCookieValue","cookieValue","uuid","expires","setCookieValue","createScopedLocalStorage","endSession","deleteCookieValue"],"mappings":"kNAuBA,MAAMA,EAAsB,eAE5B,eAAsBC,EAAc,CAClC,WAAAC,EAAaF,EACb,OAAAG,EAAS,OAAO,SAAS,SACzB,OAAAC,EAAS,EACX,EAAI,CAAA,EAAI,CAGN,GAFsB,MAAMC,EAAeH,CAAU,EAGnD,OAGF,MAAMI,EAAcC,EAAAA,EAEdC,EAAU,KAAK,MAAQ,IAAU,GAAK,GAAK,IAEjD,MAAMC,EAAe,CAAE,KAAMP,EAAY,MAAOI,EAAa,OAAAH,EAAQ,KAAM,IAAK,QAAAK,CAAQ,CAAC,EAEhEE,EAAyB,CAAE,OAAAN,CAAO,CAAC,EAC3C,YAAY,OAAQ,CAAE,OAAQE,CAAY,CAAC,CAC9D,CAEA,eAAsBK,EAAW,CAC/B,WAAAT,EAAaF,EACb,OAAAG,EAAS,OAAO,SAAS,SACzB,OAAAC,EAAS,EACX,EAAI,GAAI,CACN,MAAME,EAAc,MAAMD,EAAeH,CAAU,EAE9CI,IAKoBI,EAAyB,CAAE,OAAAN,CAAO,CAAC,EAC3C,YAAY,OAAQ,CAAE,OAAQE,CAAY,CAAC,EAG5D,MAAMM,EAAkB,CAAE,KAAMV,EAAY,OAAAC,CAAO,CAAC,EACtD"}
@@ -1,2 +0,0 @@
1
- import{b as o}from"./beam-errors-Ci0d3926.esm.js";import{e}from"./events-COWOQoLW.esm.js";import{logger as r}from"../utils/logger.esm.js";import{initNetworkListeners as t}from"../utils/network-listeners.esm.js";import{createScopedLocalStorage as m}from"../utils/local-storage.esm.js";import{waitForElement as a}from"../utils/wait-for-element.esm.js";import{deleteCookieValue as i,getCookieMap as s,getCookieValue as d,setCookieValue as n}from"../utils/cookies.esm.js";import{getRemoteSession as C,saveRemoteSession as g}from"../utils/remote-session.esm.js";import{memoizeLast as l}from"../utils/memoize-last.esm.js";import{d as p,i as S}from"./lodash-BSs6Il-c.esm.js";import{formatStoreAndReturnPromoCodes as P,getAllPromoCodesFromCookie as u,getPromoCodeFromShopifyCookie as f,getPromoCodesFromCart as k,getPromoCodesLocalStorage as c,getSanitizedUrlForStorage as A,isEmptyPromoData as F,mapToUnvalidatedPromoCodes as L,mergeStoreAndReturnPromos as E,parseJsonStringArray as R,promoCodesAreEqual as v,setPromoCodeInCookie as y,setPromoCodesInLocalStorage as V}from"../utils/promoManager.esm.js";var b=Object.freeze({__proto__:null,createScopedLocalStorage:m,debounce:p,deleteCookieValue:i,errors:o,events:e,formatStoreAndReturnPromoCodes:P,getAllPromoCodesFromCookie:u,getCookieMap:s,getCookieValue:d,getPromoCodeFromShopifyCookie:f,getPromoCodesFromCart:k,getPromoCodesLocalStorage:c,getRemoteSession:C,getSanitizedUrlForStorage:A,initNetworkListeners:t,isEmptyPromoData:F,isEqual:S,logger:r,mapToUnvalidatedPromoCodes:L,memoizeLast:l,mergeStoreAndReturnPromos:E,parseJsonStringArray:R,promoCodesAreEqual:v,saveRemoteSession:g,setCookieValue:n,setPromoCodeInCookie:y,setPromoCodesInLocalStorage:V,waitForElement:a});export{b as i};
2
- //# sourceMappingURL=index-DmjZnpod.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DmjZnpod.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,74 +0,0 @@
1
- import { b as beamErrors } from './beam-errors-DUQ9pK2V.esm.js';
2
- import { e as events } from './events-Dwqfqbij.esm.js';
3
- import { logger } from '../utils/logger.js';
4
- import { initNetworkListeners } from '../utils/network-listeners.js';
5
- import { createScopedLocalStorage } from '../utils/local-storage.js';
6
- import { waitForElement } from '../utils/wait-for-element.js';
7
- import { deleteCookieValue, getCookieMap, getCookieValue, setCookieValue } from '../utils/cookies.js';
8
- import { getRemoteSession, saveRemoteSession } from '../utils/remote-session.js';
9
- import { memoizeLast } from '../utils/memoize-last.js';
10
- import debounce from 'lodash-es/debounce';
11
- import isEqual from 'lodash-es/isEqual';
12
- import { formatStoreAndReturnPromoCodes, getAllPromoCodesFromCookie, getPromoCodeFromShopifyCookie, getPromoCodesFromCart, getPromoCodesLocalStorage, getSanitizedUrlForStorage, isEmptyPromoData, mapToUnvalidatedPromoCodes, mergeStoreAndReturnPromos, parseJsonStringArray, promoCodesAreEqual, setPromoCodeInCookie, setPromoCodesInLocalStorage } from '../utils/promoManager.js';
13
-
14
- declare const index_createScopedLocalStorage: typeof createScopedLocalStorage;
15
- declare const index_debounce: typeof debounce;
16
- declare const index_deleteCookieValue: typeof deleteCookieValue;
17
- declare const index_events: typeof events;
18
- declare const index_formatStoreAndReturnPromoCodes: typeof formatStoreAndReturnPromoCodes;
19
- declare const index_getAllPromoCodesFromCookie: typeof getAllPromoCodesFromCookie;
20
- declare const index_getCookieMap: typeof getCookieMap;
21
- declare const index_getCookieValue: typeof getCookieValue;
22
- declare const index_getPromoCodeFromShopifyCookie: typeof getPromoCodeFromShopifyCookie;
23
- declare const index_getPromoCodesFromCart: typeof getPromoCodesFromCart;
24
- declare const index_getPromoCodesLocalStorage: typeof getPromoCodesLocalStorage;
25
- declare const index_getRemoteSession: typeof getRemoteSession;
26
- declare const index_getSanitizedUrlForStorage: typeof getSanitizedUrlForStorage;
27
- declare const index_initNetworkListeners: typeof initNetworkListeners;
28
- declare const index_isEmptyPromoData: typeof isEmptyPromoData;
29
- declare const index_isEqual: typeof isEqual;
30
- declare const index_logger: typeof logger;
31
- declare const index_mapToUnvalidatedPromoCodes: typeof mapToUnvalidatedPromoCodes;
32
- declare const index_memoizeLast: typeof memoizeLast;
33
- declare const index_mergeStoreAndReturnPromos: typeof mergeStoreAndReturnPromos;
34
- declare const index_parseJsonStringArray: typeof parseJsonStringArray;
35
- declare const index_promoCodesAreEqual: typeof promoCodesAreEqual;
36
- declare const index_saveRemoteSession: typeof saveRemoteSession;
37
- declare const index_setCookieValue: typeof setCookieValue;
38
- declare const index_setPromoCodeInCookie: typeof setPromoCodeInCookie;
39
- declare const index_setPromoCodesInLocalStorage: typeof setPromoCodesInLocalStorage;
40
- declare const index_waitForElement: typeof waitForElement;
41
- declare namespace index {
42
- export {
43
- index_createScopedLocalStorage as createScopedLocalStorage,
44
- index_debounce as debounce,
45
- index_deleteCookieValue as deleteCookieValue,
46
- beamErrors as errors,
47
- index_events as events,
48
- index_formatStoreAndReturnPromoCodes as formatStoreAndReturnPromoCodes,
49
- index_getAllPromoCodesFromCookie as getAllPromoCodesFromCookie,
50
- index_getCookieMap as getCookieMap,
51
- index_getCookieValue as getCookieValue,
52
- index_getPromoCodeFromShopifyCookie as getPromoCodeFromShopifyCookie,
53
- index_getPromoCodesFromCart as getPromoCodesFromCart,
54
- index_getPromoCodesLocalStorage as getPromoCodesLocalStorage,
55
- index_getRemoteSession as getRemoteSession,
56
- index_getSanitizedUrlForStorage as getSanitizedUrlForStorage,
57
- index_initNetworkListeners as initNetworkListeners,
58
- index_isEmptyPromoData as isEmptyPromoData,
59
- index_isEqual as isEqual,
60
- index_logger as logger,
61
- index_mapToUnvalidatedPromoCodes as mapToUnvalidatedPromoCodes,
62
- index_memoizeLast as memoizeLast,
63
- index_mergeStoreAndReturnPromos as mergeStoreAndReturnPromos,
64
- index_parseJsonStringArray as parseJsonStringArray,
65
- index_promoCodesAreEqual as promoCodesAreEqual,
66
- index_saveRemoteSession as saveRemoteSession,
67
- index_setCookieValue as setCookieValue,
68
- index_setPromoCodeInCookie as setPromoCodeInCookie,
69
- index_setPromoCodesInLocalStorage as setPromoCodesInLocalStorage,
70
- index_waitForElement as waitForElement,
71
- };
72
- }
73
-
74
- export { index as i };
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-UMeAzKTG.esm.js","sources":["../../src/api-sdk/v4/routes.ts","../../src/shared/fragments/radioButton.ts","../../src/components/redeem-transaction/strings.ts","../../src/components/redeem-transaction/index.ts"],"sourcesContent":["import { makeOpenApiMethod } from \"../make-openapi-method\";\n\nexport const postTransaction = makeOpenApiMethod(\"/v4/transaction\", \"post\", 201);\n\nexport const putTransaction = makeOpenApiMethod(\"/v4/transaction/redeem/{transactionId}\", \"put\", 200);\n","import { html } from \"lit\";\nimport { styleMap } from \"lit/directives/style-map.js\";\n\nexport const _radioButton = ({ height = \"1em\", width = \"1em\" } = {}) => html`\n <svg\n style=\"${styleMap({ height, width, position: \"relative\", bottom: \"0\" })}\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n >\n <!-- Filled Circle -->\n <circle cx=\"12\" cy=\"12\" r=\"10\" fill=\"currentColor\" />\n </svg>\n`;\n","export const strings = {\n en: {\n beamAttribution: () => `Powered by Beam`,\n ctaTitle: () => `Choose your impact`,\n ctaPromoPrefixMessage: () => `At no extra cost,`,\n ctaPromoMessage: ({ donationPercentage = \"1\" } = {}) =>\n `select a nonprofit and ${donationPercentage}% will be donated there for you.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `At no extra cost, select a nonprofit and ${donationPercentage}% will be donated there for you.`,\n submitButtonText: () => `Confirm`,\n submitButtonTextCompleted: () => `Confirmed!`,\n chooseButtonText: () => `Choose a nonprofit`,\n },\n fr: {\n beamAttribution: () => `Optimisé par Beam`,\n ctaTitle: () => `Choisissez votre cause`,\n ctaPromoPrefixMessage: () => `Sans frais supplémentaires,`,\n ctaPromoMessage: ({ donationPercentage = \"1\" } = {}) =>\n `sélectionnez une association et ${donationPercentage} % sera reversé en votre nom.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Sans frais supplémentaires, choisissez une association et ${donationPercentage} % de votre commande lui sera reversé en votre nom.`,\n submitButtonText: () => `Confirmer`,\n submitButtonTextCompleted: () => `Confirmé !`,\n chooseButtonText: () => `Choisir une association`,\n },\n de: {\n beamAttribution: () => `Unterstützt von Beam`,\n ctaTitle: () => `Wähle deine Wirkung`,\n ctaPromoPrefixMessage: () => `Ohne zusätzliche Kosten,`,\n ctaPromoMessage: ({ donationPercentage = \"1\" } = {}) =>\n `wähle eine gemeinnützige Organisation und ${donationPercentage}% werden in deinem Namen gespendet.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Ohne zusätzliche Kosten kannst du eine Organisation auswählen, und ${donationPercentage}% deiner Bestellung werden gespendet.`,\n submitButtonText: () => `Bestätigen`,\n submitButtonTextCompleted: () => `Bestätigt!`,\n chooseButtonText: () => `Wähle eine Organisation`,\n },\n es: {\n beamAttribution: () => `Ofrecido por Beam`,\n ctaTitle: () => `Elige tu impacto`,\n ctaPromoPrefixMessage: () => `Sin coste adicional,`,\n ctaPromoMessage: ({ donationPercentage = \"1\" } = {}) =>\n `elige una organización y donaremos el ${donationPercentage}% en tu nombre.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Sin coste adicional, elige una organización sin ánimo de lucro y donaremos el ${donationPercentage}% de tu compra en tu nombre.`,\n submitButtonText: () => `Confirmar`,\n submitButtonTextCompleted: () => `¡Confirmado!`,\n chooseButtonText: () => `Elige una organización`,\n },\n it: {\n beamAttribution: () => `Promosso da Beam`,\n ctaTitle: () => `Scegli il tuo impatto`,\n ctaPromoPrefixMessage: () => `Senza costi aggiuntivi,`,\n ctaPromoMessage: ({ donationPercentage = \"1\" } = {}) =>\n `scegli un'organizzazione e doneremo l’${donationPercentage}% per te.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Senza costi aggiuntivi, scegli un'organizzazione no profit e doneremo l’${donationPercentage}% del tuo acquisto a suo favore.`,\n submitButtonText: () => `Conferma`,\n submitButtonTextCompleted: () => `Confermato!`,\n chooseButtonText: () => `Scegli un'organizzazione`,\n },\n pl: {\n beamAttribution: () => `Obsługiwane przez Beam`,\n ctaTitle: () => `Wybierz swój wpływ`,\n ctaPromoPrefixMessage: () => `Bez dodatkowych kosztów,`,\n ctaPromoMessage: ({ donationPercentage = \"1\" } = {}) =>\n `wybierz organizację, a ${donationPercentage}% zostanie przekazane w Twoim imieniu.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Bez dodatkowych kosztów możesz wybrać organizację, której przekażemy ${donationPercentage}% wartości Twojego zamówienia w Twoim imieniu.`,\n submitButtonText: () => `Potwierdź`,\n submitButtonTextCompleted: () => `Potwierdzono!`,\n chooseButtonText: () => `Wybierz organizację`,\n },\n ja: {\n beamAttribution: () => `Powered by Beam`,\n ctaTitle: () => `寄付先をお選びください。`,\n ctaPromoPrefixMessage: () => `追加費用なしで、`,\n ctaPromoMessage: ({ donationPercentage = \"1\" } = {}) =>\n `非営利団体を選ぶと、${donationPercentage}%がその団体に寄付されます。`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `追加費用なしで非営利団体をお選びいただくと、ご購入金額の${donationPercentage}%が寄付されます。`,\n submitButtonText: () => `確認する`,\n submitButtonTextCompleted: () => `確認済み`,\n chooseButtonText: () => `非営利団体を選択してください`,\n },\n};\n","import { css, html, LitElement, PropertyValues } from \"lit\";\nimport { repeat } from \"lit/directives/repeat.js\";\nimport { property } from \"lit/decorators/property.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport debounce from \"lodash-es/debounce\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES, WIDGET_NAMES } from \"../../api-sdk/constants\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { _loading } from \"../../shared/fragments/loading-template\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { defineCustomText, useCustomText } from \"../../shared/fragments/custom-text\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { _cssVariableMap } from \"../../shared/fragments/css-variable-map\";\nimport { enforceConfig, areRequiredKeysDefined } from \"../../shared/enforce-config\";\nimport { BeamError, MissingConfig } from \"../../utils/beam-errors\";\nimport { TId, TNumericId } from \"../../shared/types\";\nimport { TCart } from \"../../shared/cart-contents\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { cssCardGrid } from \"../../shared/fragments/css-card-grid\";\nimport { postChainEligibleNonprofitsForCart } from \"../../api-sdk/v3/routes\";\nimport { putTransaction } from \"../../api-sdk/v4/routes\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { BeamNonprofitSelectEvent } from \"../../utils/events\";\nimport { localizeUserString } from \"../../shared/localize\";\nimport { progressBarConfigDefaults } from \"../../shared/components/progress-bar\";\nimport { partnerLogosConfigDefaults } from \"../beam-partner-logos\";\nimport { promoPillLabelConfigDefaults } from \"../../shared/components/promo-pill-label\";\nimport { _radioButton } from \"../../shared/fragments/radioButton\";\nimport { strings } from \"./strings\";\n\ninterface TRequiredConfig {\n apiKey: string;\n transactionId: TId;\n}\n\ntype TIAPIV3GetChainNonprofits = Awaited<ReturnType<typeof import(\"../../api-sdk/v3/routes\").getChainNonprofits>>;\ntype TIAPIV3EligibleNonprofits = Awaited<\n ReturnType<typeof import(\"../../api-sdk/v3/routes\").getChainNonprofits>\n>[\"nonprofits\"];\ntype TIAPIV3Nonprofit = TIAPIV3EligibleNonprofits[number];\nexport class BeamRedeemTransaction extends LitElement {\n static tagName = \"beam-redeem-transaction\";\n\n @property({ type: String }) public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String }) public apiKey?: TRequiredConfig[\"apiKey\"];\n\n @property({ type: Number }) public transactionId?: TRequiredConfig[\"transactionId\"];\n\n @property({ type: Number }) public storeId?: TNumericId;\n\n @property({ type: String }) public countryCode?: string;\n\n @property({ type: String }) public postalCode?: string;\n\n @property({ type: Object }) public cart?: TCart;\n\n @property({ type: Number, reflect: true })\n public selectedNonprofitId?: TNumericId;\n\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n\n @property({ type: Boolean }) public debug = false;\n\n @property({ type: Boolean }) public draftConfig = false;\n\n @state() private isMobile = window.innerWidth < 768;\n\n @state() private didUserExpandNonprofits = false;\n\n @state() private shouldUsePromoUI = false;\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n private get hasCorrectTransactionConfig(): boolean {\n const requiredKeys: (keyof TRequiredConfig)[] = [\"apiKey\", \"transactionId\"];\n const isTransactionConfigCorrect = areRequiredKeysDefined(requiredKeys, this);\n return isTransactionConfigCorrect;\n }\n\n private getChainNonprofits = async () => {\n if (!this.hasCorrectTransactionConfig) {\n throw new MissingConfig();\n }\n\n const res = await postChainEligibleNonprofitsForCart({\n baseUrl: this.baseUrl,\n headers: { authorization: `Api-Key ${this.apiKey}` },\n requestBody: {\n storeId: this.storeId,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n transactionId: String(this.transactionId),\n cart: this.cart ?? undefined,\n widgetName: WIDGET_NAMES.redeem_transaction,\n options: {\n config: {\n draftConfig: this.draftConfig,\n },\n },\n version: \"2.0.0\",\n lang: this.configLang,\n },\n });\n\n // If store ID was not provided, get the store ID from response here\n if (res.store?.id && res.store.id !== this.storeId) {\n this.storeId = res.store.id;\n }\n\n this.localStorage.setItemJson(\"chainNonprofits\", {\n createdAt: new Date(),\n data: res,\n });\n\n return res;\n };\n\n private updateNonprofitIdForRecord = async ({ selectedNonprofitId }: { selectedNonprofitId: TNumericId }) => {\n if (this.transactionId) {\n return this.putTransaction({ selectedNonprofitId });\n }\n return null;\n };\n private putTransaction = async ({ selectedNonprofitId }: { selectedNonprofitId: TNumericId }) => {\n if (!enforceConfig<TRequiredConfig>([\"apiKey\", \"transactionId\"], this)) {\n throw new MissingConfig();\n }\n return putTransaction({\n baseUrl: this.baseUrl,\n apiRoot: \"/api\",\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n pathParams: {\n transactionId: this.transactionId,\n },\n requestBody: {\n nonprofitId: selectedNonprofitId,\n },\n });\n };\n\n private nonprofitListDataController = new AsyncController<typeof this.getChainNonprofits>(\n this,\n this.getChainNonprofits,\n );\n\n private selectionDataController = new AsyncController<typeof this.updateNonprofitIdForRecord>(\n this,\n this.updateNonprofitIdForRecord,\n );\n\n private localStorage = createScopedLocalStorage(this as LitElement & TRequiredConfig);\n\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener(\"resize\", this.evaluateBreakPoints);\n }\n\n async firstUpdated(_changedProperties: PropertyValues) {\n await this.restoreStateFromCache();\n }\n\n async updated(previousPropertyValues: PropertyValues) {\n // Reload nonprofit list on change of any of these props:\n // Also fires on first load as props go from undefined => value\n const requireNewDataProps = [\"baseUrl\", \"storeId\", \"apiKey\", \"countryCode\", \"postalCode\", \"lang\"];\n for (const prop of requireNewDataProps) {\n if (previousPropertyValues.has(prop)) {\n await this.nonprofitListDataController.exec();\n break;\n }\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n }\n\n private restoreStateFromCache() {\n if (!enforceConfig<TRequiredConfig>([\"apiKey\"], this)) throw new MissingConfig();\n\n this.selectedNonprofitId = parseInt(this.localStorage.getItem(\"nonprofit\") || \"\") || undefined;\n try {\n // try to restore nonprofit list if we have data and it's not too old\n // list will continue to refresh async and replace this data when ready\n const { createdAt = 0, data } =\n this.localStorage.getItemJson<{ createdAt: string; data: any }>(\"chainNonprofits\") || {};\n const cacheTtl = 2 * 60 * 60 * 1000;\n if (new Date(createdAt).valueOf() + cacheTtl > new Date().valueOf()) {\n this.nonprofitListDataController.data = data;\n this.nonprofitListDataController.loading = false;\n }\n } catch (err) {\n // ignore cache retrieval error and continue to fetch data\n }\n }\n\n /**\n * Factory for selection event handler\n *\n * Nonprofit selector implements radio-button semantics:\n * * If nothing is selected, tabbing into selector selects first card\n * * Arrow keys changes focus between cards, but doesn't select\n * * Enter/Space sets selection\n * * If a nonprofit is selected, arrow keys change focus AND selection\n * * Click sets selection\n * @param {number} id\n * @param {number} index\n * @param {{id: number}[]} nonprofits\n * @returns {(evt: Event) => void}\n */\n private makeHandleSelect =\n (id: number, index: number, nonprofits: { nonprofit: { id: number } }[]): ((event: Event) => void) =>\n async (event: Event) => {\n if (!this.allowChange) return;\n const currentId = this.selectedNonprofitId;\n if (event instanceof KeyboardEvent) {\n let nextFocus = null;\n switch (event.key) {\n case \"ArrowUp\":\n case \"ArrowLeft\":\n if (index === 0) {\n nextFocus = nonprofits[nonprofits.length - 1];\n } else {\n nextFocus = nonprofits[index - 1];\n }\n event.preventDefault();\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n if (index === nonprofits.length - 1) {\n nextFocus = nonprofits[0];\n } else {\n nextFocus = nonprofits[index + 1];\n }\n event.preventDefault();\n break;\n case \"Enter\":\n case \" \":\n event.preventDefault();\n break; // continue to toggle-selection block below\n default:\n return;\n }\n if (nextFocus) {\n const focusTarget = this.renderRoot.querySelector(`[data-value=\"${nextFocus.nonprofit.id}\"]`) as HTMLElement;\n if (focusTarget !== null) {\n focusTarget.tabIndex = 0;\n focusTarget.focus();\n }\n return;\n }\n }\n // Handle selection with click or Enter/Space key\n const targetEl = event.currentTarget;\n if (targetEl instanceof HTMLElement) {\n if (currentId === id) {\n // this[\"selected-nonprofit-id\"] = undefined; // unset (not supported)\n return; // no API call or localStorage change needed\n } else {\n this.selectedNonprofitId = id;\n }\n }\n };\n\n get allowChange() {\n // Disallow change if already submitted\n return this.selectionDataController.data == null && !this.selectionDataController.loading;\n }\n\n get allowSubmit() {\n // Disabled if no nonprofit has been selected yet or if submission was already received\n return Boolean(this.selectedNonprofitId && this.allowChange);\n }\n\n handleSubmit = async () => {\n const { selectedNonprofitId } = this;\n if (!this.allowSubmit || selectedNonprofitId == null) return;\n await this.selectionDataController.exec({ selectedNonprofitId });\n\n this.localStorage.setItem(\"nonprofit\", selectedNonprofitId);\n this.localStorage.setItem(\"nonprofit_selected_at\", new Date().toISOString());\n\n const selectedNonprofit = this.nonprofitListDataController?.data?.nonprofits.find(\n (np) => np.nonprofit.id === selectedNonprofitId,\n );\n\n this.dispatchEvent(\n new BeamNonprofitSelectEvent({\n selectedNonprofitId,\n nonprofitName: selectedNonprofit?.nonprofit.name,\n source: WIDGET_NAMES.redeem_transaction,\n timestamp: new Date(),\n }),\n );\n };\n\n evaluateBreakPoints = debounce(\n () => {\n this.isMobile = window.innerWidth < 768;\n },\n 50,\n { maxWait: 50, leading: true },\n );\n\n public get cssVariables() {\n const defaults = {\n \"--beam-fontFamily\": \"inherit\",\n \"--beam-fontStyle\": \"inherit\",\n \"--beam-fontSize\": \"inherit\",\n \"--beam-textColor\": \"inherit\",\n \"--beam-backgroundColor\": \"inherit\",\n ...defineCustomText(\"--beam-RedeemTransaction-title\", {\n fontSize: \"1.25em\",\n fontWeight: \"bold\",\n }),\n ...defineCustomText(\"--beam-RedeemTransaction-description\", {\n marginTop: \"0.5em\",\n lineHeight: \"normal\",\n }),\n ...partnerLogosConfigDefaults,\n ...progressBarConfigDefaults,\n \"--beam-RedeemTransaction-maxWidth\": \"1000px\",\n \"--beam-RedeemTransaction-submitButton-fontSize\": \"14px\",\n \"--beam-RedeemTransaction-submitButton-fontWeight\": \"inherit\",\n \"--beam-RedeemTransaction-submitButton-fontFamily\": \"inherit\",\n \"--beam-RedeemTransaction-submitButton-textTransform\": \"uppercase\",\n \"--beam-RedeemTransaction-submitButton-color\": \"#fff\",\n \"--beam-RedeemTransaction-submitButton-backgroundColor\": \"#000000\",\n \"--beam-RedeemTransaction-submitButton-borderRadius\": \"0px\",\n \"--beam-RedeemTransaction-submitButton-borderColor\": \"#000000\",\n \"--beam-RedeemTransaction-submitButton-padding\": \"16px 0px\",\n \"--beam-RedeemTransaction-submitButton-width\": \"100%\",\n \"--beam-RedeemTransaction-submitButton-marginTop\": \"10px\",\n \"--beam-RedeemTransaction-submitButton-marginBottom\": \"10px\",\n \"--beam-RedeemTransaction-submitButtonContainer-display\": \"flex\",\n \"--beam-RedeemTransaction-submitButtonContainer-backgroundColor\": \"#fff\",\n \"--beam-RedeemTransaction-submitButton-hover-backgroundColor\": \"#000000\",\n \"--beam-RedeemTransaction-submitButton-hover-borderColor\": \"#000000\",\n \"--beam-RedeemTransaction-submitButton-hover-color\": \"#fff\",\n \"--beam-RedeemTransaction-submitButton-disabled-borderColor\": \"#767676\",\n \"--beam-RedeemTransaction-submitButton-disabled-backgroundColor\": \"#767676\",\n \"--beam-RedeemTransaction-submitButton-disabled-color\": \"#fff\",\n \"--beam-RedeemTransaction-radioButton-color\": \"transparent\",\n \"--beam-RedeemTransaction-radioButton-borderColor\": \"#707070\",\n \"--beam-RedeemTransaction-radioButton-backgroundColor\": \"#fff\",\n \"--beam-RedeemTransaction-radioButton-hover-color\": \"#fff\",\n \"--beam-RedeemTransaction-radioButton-hover-backgroundColor\": \"#000\",\n \"--beam-RedeemTransaction-radioButton-hover-borderColor\": \"#000\",\n \"--beam-RedeemTransaction-radioButton-selected-borderColor\": \"#000\",\n \"--beam-RedeemTransaction-radioButton-selected-backgroundColor\": \"#000\",\n \"--beam-RedeemTransaction-radioButton-selected-color\": \"#fff\",\n \"--beam-RedeemTransaction-options-minWidth\": \"0px\",\n \"--beam-RedeemTransaction-options-columnCount\": \"1\",\n \"--beam-RedeemTransaction-options-borderWidth\": \"1px\",\n \"--beam-RedeemTransaction-options-image-borderRadius\": \"8px\",\n \"--beam-RedeemTransaction-options-image-height\": \"70px\",\n \"--beam-RedeemTransaction-options-image-height-mobile\": \"75px\",\n \"--beam-RedeemTransaction-options-borderColor\": \"#d9d9d9\",\n \"--beam-RedeemTransaction-options-backgroundColor\": \"transparent\",\n \"--beam-RedeemTransaction-options-marginTop\": \"15px\",\n \"--beam-RedeemTransaction-options-hover-backgroundColor\": \"#f1f1f1\",\n \"--beam-RedeemTransaction-options-hover-borderWidth\": \".5px\",\n \"--beam-RedeemTransaction-options-hover-borderColor\": \"#000000\",\n \"--beam-RedeemTransaction-options-selected-borderColor\": \"#000000\",\n \"--beam-RedeemTransaction-options-selected-borderWidth\": \".5px\",\n \"--beam-RedeemTransaction-options-selected-backgroundColor\": \"#eee\",\n ...defineCustomText(\"--beam-RedeemTransaction-options-details\", {\n fontSize: \"0.85em\",\n marginTop: \"0px\",\n lineHeight: \"normal\",\n letterSpacing: \"-0.45px\",\n }),\n ...defineCustomText(\"--beam-RedeemTransaction-options-details-cause\", {\n fontSize: \"1em\",\n fontWeight: \"bold\",\n }),\n \"--beam-RedeemTransaction-options-details-nonprofitName-fontWeight\": \"normal\",\n \"--beam-RedeemTransaction-options-details-nonprofitName-fontStyle\": \"inherit\",\n \"--beam-RedeemTransaction-options-details-fundingProgress-marginTop\": \"3px\", // update after class name addition\n ...defineCustomText(\"--beam-RedeemTransaction-options-details-fundingProgressLabel\", {\n fontSize: \"0.85em\",\n textTransform: \"capitalize\",\n }),\n \"--beam-RedeemTransaction-cardStyle\": \"'image'\", // icon, selected_icon, image\n \"--beam-RedeemTransaction-options-icon-padding\": \"0px\",\n \"--beam-RedeemTransaction-options-icon-backgroundColor\": \"#F3F3F3\",\n \"--beam-RedeemTransaction-options-collapseNonprofits-mobile\": \"false\",\n \"--beam-RedeemTransaction-options-collapseNonprofits-desktop\": \"false\",\n \"--beam-RedeemTransaction-image-width\": \"13%\",\n \"--beam-RedeemTransaction-image-height\": \"50%\",\n \"--beam-RedeemTransaction-image-width-mobile\": \"16%\",\n ...promoPillLabelConfigDefaults,\n };\n\n const remoteConfig = this.nonprofitListDataController?.data?.config?.web?.theme || {};\n\n const config = { ...defaults, ...remoteConfig };\n\n const serializable = Object.create({\n toCSS() {\n return _cssVariableMap(this as Record<string, string>);\n },\n });\n\n return Object.assign(serializable, config);\n }\n\n static styles = [\n cssReset,\n css`\n :host {\n display: block;\n max-width: var(--beam-RedeemTransaction-maxWidth);\n font-family: var(--beam-fontFamily);\n font-style: var(--beam-fontStyle);\n font-size: var(--beam-fontSize);\n background-color: var(--beam-backgroundColor);\n color: var(--beam-textColor);\n word-break: normal;\n }\n\n .headerContainer {\n align-items: flex-start;\n justify-content: space-between;\n display: flex;\n order: 2;\n }\n\n .submitButtonContainer {\n margin-top: var(--beam-RedeemTransaction-submitButton-marginTop);\n margin-bottom: var(--beam-RedeemTransaction-submitButton-marginBottom);\n background-color: var(--beam-RedeemTransaction-submitButtonContainer-backgroundColor);\n display: var(--beam-RedeemTransaction-submitButtonContainer-display);\n }\n\n .submitButton {\n color: var(--beam-RedeemTransaction-submitButton-color);\n background-color: var(--beam-RedeemTransaction-submitButton-backgroundColor);\n border: 1px solid var(--beam-RedeemTransaction-submitButton-borderColor);\n font-size: var(--beam-RedeemTransaction-submitButton-fontSize);\n font-weight: var(--beam-RedeemTransaction-submitButton-fontWeight);\n font-family: var(--beam-RedeemTransaction-submitButton-fontFamily);\n text-transform: var(--beam-RedeemTransaction-submitButton-textTransform);\n border-radius: var(--beam-RedeemTransaction-submitButton-borderRadius);\n padding: var(--beam-RedeemTransaction-submitButton-padding);\n width: var(--beam-RedeemTransaction-submitButton-width);\n transition:\n background-color 0.2s,\n border-color 0.2s,\n color 0.2s;\n cursor: pointer;\n }\n\n .submitButton:not(.isDisabled):focus-visible,\n .submitButton:not(.isDisabled):hover {\n background-color: var(--beam-RedeemTransaction-submitButton-hover-backgroundColor);\n border-color: var(--beam-RedeemTransaction-submitButton-hover-borderColor);\n color: var(--beam-RedeemTransaction-submitButton-hover-color);\n }\n\n .submitButton.isDisabled {\n color: var(--beam-RedeemTransaction-submitButton-disabled-color);\n background-color: var(--beam-RedeemTransaction-submitButton-disabled-backgroundColor);\n border-color: var(--beam-RedeemTransaction-submitButton-disabled-borderColor);\n cursor: not-allowed;\n }\n\n .options {\n margin-top: var(--beam-RedeemTransaction-options-marginTop);\n order: 3;\n flex-grow: 1;\n }\n\n .options.isHidden {\n display: none;\n }\n\n .option {\n border: var(--beam-RedeemTransaction-options-borderWidth) solid\n var(--beam-RedeemTransaction-options-borderColor);\n border-bottom: none;\n background-color: var(--beam-RedeemTransaction-options-backgroundColor);\n cursor: pointer;\n transition:\n border-color 0.2s,\n background-color 0.2s,\n outline 0.2s;\n }\n\n .option:first-child {\n border-radius: 8px 8px 0 0; /* Top corners rounded */\n }\n\n .option:last-child {\n border-bottom: var(--beam-RedeemTransaction-options-borderWidth) solid\n var(--beam-RedeemTransaction-options-borderColor);\n border-radius: 0 0 8px 8px; /* Bottom corners rounded */\n }\n\n .option:not(.isDisabled):not(:last-child):focus-visible,\n .option:not(.isDisabled):not(:last-child):hover,\n .option:not(.isSelected):not(:last-child):focus-visible,\n .option:not(.isSelected):not(:last-child):hover {\n background-color: var(--beam-RedeemTransaction-options-hover-backgroundColor);\n outline: var(--beam-RedeemTransaction-options-hover-borderWidth) solid\n var(--beam-RedeemTransaction-options-hover-borderColor);\n border-bottom: var(--beam-RedeemTransaction-options-hover-borderWidth) solid\n var(--beam-RedeemTransaction-options-hover-borderColor);\n }\n\n .option:not(.isDisabled):focus-visible,\n .option:not(.isDisabled):hover,\n .option:not(.isSelected):focus-visible,\n .option:not(.isSelected):hover {\n background-color: var(--beam-RedeemTransaction-options-hover-backgroundColor);\n outline: var(--beam-RedeemTransaction-options-hover-borderWidth) solid\n var(--beam-RedeemTransaction-options-hover-borderColor);\n }\n\n .option.isDisabled {\n cursor: not-allowed;\n }\n\n .option.isSelected {\n outline: var(--beam-RedeemTransaction-options-selected-borderWidth) solid\n var(--beam-RedeemTransaction-options-selected-borderColor);\n background-color: var(--beam-RedeemTransaction-options-selected-backgroundColor);\n border-bottom: var(--beam-RedeemTransaction-options-selected-borderWidth) solid\n var(--beam-RedeemTransaction-options-selected-borderColor);\n }\n\n .option.isSelected:focus-visible,\n .option.isSelected:hover {\n outline: var(--beam-RedeemTransaction-options-selected-borderWidth) solid\n var(--beam-RedeemTransaction-options-selected-borderColor);\n border-bottom: var(--beam-RedeemTransaction-options-selected-borderWidth) solid\n var(--beam-RedeemTransaction-options-selected-borderColor);\n }\n\n .option .radioButton {\n border-width: 1px;\n border-style: solid;\n transition:\n background-color 0.2s,\n color 0.2s,\n border-color 0.2s;\n color: var(--beam-RedeemTransaction-radioButton-color);\n background-color: var(--beam-RedeemTransaction-radioButton-backgroundColor);\n border-color: var(--beam-RedeemTransaction-radioButton-borderColor);\n }\n\n .option.isSelected .radioButton,\n .option.isSelected:focus-visible .radioButton,\n .option.isSelected:hover .radioButton {\n color: var(--beam-RedeemTransaction-radioButton-selected-color);\n background-color: var(--beam-RedeemTransaction-radioButton-selected-backgroundColor);\n border-color: var(--beam-RedeemTransaction-radioButton-selected-borderColor);\n }\n\n .option:not(.isSelected):focus-visible .radioButton,\n .option:not(.isSelected):hover .radioButton {\n color: var(--beam-RedeemTransaction-radioButton-hover-color);\n background-color: var(--beam-RedeemTransaction-radioButton-hover-backgroundColor);\n border-color: var(--beam-RedeemTransaction-radioButton-hover-borderColor);\n }\n\n .detailsDescription {\n ${useCustomText(\"--beam-RedeemTransaction-options-details\")}\n }\n\n .detailsDescription .nonprofitName {\n font-weight: var(--beam-RedeemTransaction-options-details-nonprofitName-fontWeight);\n font-style: var(--beam-RedeemTransaction-options-details-nonprofitName-fontStyle);\n }\n\n .radioButtonContainer {\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 auto;\n }\n\n .radioButton {\n padding: 5px;\n border-radius: 100%;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .imageContainer {\n flex: 1 0 var(--beam-RedeemTransaction-image-width);\n display: flex;\n flex-direction: column;\n }\n\n .progressBarContainer {\n display: flex;\n align-items: center;\n }\n\n .details-progressBarLabel {\n ${useCustomText(\"--beam-RedeemTransaction-options-details-fundingProgressLabel\")}\n white-space: nowrap;\n text-align: right;\n margin-left: 15px;\n }\n\n .details {\n flex: 1 1 100%;\n display: flex;\n flex-direction: column;\n gap: 5px;\n }\n\n .root {\n display: flex;\n flex-direction: column;\n }\n\n .submitButtonContainer {\n order: 4;\n position: sticky;\n bottom: 0;\n z-index: 999;\n }\n\n .icon-background {\n width: 50px;\n height: 50px;\n border-radius: 50%;\n overflow: hidden;\n background: var(--beam-RedeemTransaction-options-icon-backgroundColor);\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .icon {\n height: var(--beam-RedeemTransaction-image-height);\n }\n\n .icon-container {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n `,\n cssCardGrid({\n gap: \"0px\",\n itemMinWidth: \"var(--beam-RedeemTransaction-options-minWidth, 0px)\",\n columnCount: \"var(--beam-RedeemTransaction-options-columnCount, 1)\",\n }),\n ];\n\n private handleChooseClick() {\n this.didUserExpandNonprofits = true;\n }\n\n get shouldCollapse() {\n const enableMobileCollapse = this.cssVariables[\"--beam-RedeemTransaction-options-collapseNonprofits-mobile\"];\n const enableDesktopCollapse = this.cssVariables[\"--beam-RedeemTransaction-options-collapseNonprofits-desktop\"];\n const isMobileCollapseEnabled = enableMobileCollapse?.toLowerCase() === \"true\";\n const isDesktopCollapseEnabled = enableDesktopCollapse?.toLowerCase() === \"true\";\n\n return (this.isMobile && isMobileCollapseEnabled) || (!this.isMobile && isDesktopCollapseEnabled);\n }\n\n private renderSubmitButton(data: TIAPIV3GetChainNonprofits) {\n return html`\n ${this.didUserExpandNonprofits || !this.shouldCollapse\n ? html` <button\n type=\"button\"\n ?aria-disabled=${!this.allowSubmit}\n @click=\"${this.handleSubmit}\"\n class=\"${classMap({\n isDisabled: !this.allowSubmit,\n submitButton: true,\n })}\"\n part=\"submitButton\"\n >\n ${this.selectionDataController.data !== null\n ? localizeUserString(\n this.configLang,\n data?.config?.web?.confirmedButton || strings[this.configLang].submitButtonTextCompleted(),\n )\n : localizeUserString(\n this.configLang,\n data?.config?.web?.confirmButton || strings[this.configLang].submitButtonText(),\n )}\n </button>`\n : html`\n <button type=\"button\" @click=\"${this.handleChooseClick}\" class=\"submitButton\" part=\"submitButton\">\n ${localizeUserString(\n this.configLang,\n data?.config?.web?.collapsedButton || strings[this.configLang].chooseButtonText(),\n )}\n </button>\n `}\n `;\n }\n\n private renderRadioButton() {\n return html`\n <div class=\"radioButtonContainer\">\n <span part=\"radioButton\" class=\"radioButton\">\n <span style=\"line-height: 0;\"> ${_radioButton({ height: \"7px\", width: \"7px\" })} </span>\n </span>\n </div>\n `;\n }\n\n private renderNonprofitImage(np: TIAPIV3Nonprofit, displayIcon: boolean) {\n const cardStyle = this.cssVariables[\"--beam-RedeemTransaction-cardStyle\"];\n\n const imageUrl = displayIcon\n ? cardStyle === \"'icon'\"\n ? np.nonprofit.causeIconUrl\n : cardStyle === \"'selected_icon'\"\n ? np.nonprofit.causeIconSelectedUrl\n : np.imageUrl\n : np.imageUrl;\n\n return html`\n ${displayIcon\n ? html` <div class=\"icon-container\">\n <div class=\"icon-background\">\n <img src=\"${imageUrl}\" alt=\"\" data-speedsize-ignore=\"true\" role=\"presentation\" class=\"icon\" />\n </div>\n </div>`\n : html` <div\n class=\"image-container\"\n style=\"${this.isMobile\n ? \"flex: 1 0 var(--beam-RedeemTransaction-image-width-mobile)\"\n : \"flex: 1 0 var(--beam-RedeemTransaction-image-width)\"}\"\n >\n <img\n src=\"${imageUrl}\"\n alt=\"\"\n role=\"presentation\"\n data-speedsize-ignore=\"true\"\n class=\"image\"\n style=\"\n width: 100%;\n height: ${this.isMobile\n ? \"var(--beam-RedeemTransaction-options-image-height-mobile)\"\n : \"var(--beam-RedeemTransaction-options-image-height)\"};\n object-fit: cover;\n border-radius: var(--beam-RedeemTransaction-options-image-borderRadius);}\n \"\n />\n </div>`}\n `;\n }\n\n private renderOptionDetail(np: TIAPIV3Nonprofit) {\n return html`\n <div class=\"detailsCause\" style=\"${useCustomText(\"--beam-RedeemTransaction-options-details-cause\")}\">\n ${localizeUserString(this.configLang, np.nonprofit.cause || \"\")}\n </div>\n <p class=\"detailsDescription\">${unsafeHTML(localizeUserString(this.configLang, np.impact.description || \"\"))}</p>\n `;\n }\n\n private renderProgressBar(np: TIAPIV3Nonprofit) {\n return html`\n <div class=\"progressBarContainer\">\n <beam-progress-bar value=\"${np.impact.goalProgressPercentage}\" style=\"flex: 1;\"></beam-progress-bar>\n <span class=\"details-progressBarLabel\">\n ${localizeUserString(this.configLang, np.impact.goalProgressText)}\n </span>\n </div>\n `;\n }\n\n private renderNonprofitDetails(\n np: TIAPIV3Nonprofit,\n hasNonprofitWithInactivePromo: boolean,\n data: TIAPIV3GetChainNonprofits,\n ) {\n return html`\n <div class=\"details\" part=\"details\">\n ${this.renderOptionDetail(np)} ${this.renderPromoPill(np, hasNonprofitWithInactivePromo, data)}\n </div>\n `;\n }\n\n private renderPromoPill(\n np: TIAPIV3Nonprofit,\n hasNonprofitWithInactivePromo: boolean,\n data: TIAPIV3GetChainNonprofits,\n ) {\n return html`\n ${np.promo?.isActive && this.shouldUsePromoUI && hasNonprofitWithInactivePromo\n ? html`<beam-promo-info-pill .promo=${data?.config?.web?.promo} shortVersion></beam-promo-info-pill>`\n : html``}\n `;\n }\n\n protected render() {\n const { selectedNonprofitId } = this;\n const { data, loading } = this.nonprofitListDataController;\n\n if (loading && !data) {\n return _loading();\n }\n if (this.nonprofitListDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.nonprofitListDataController.error });\n }\n return \"\";\n }\n if (this.selectionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.selectionDataController.error });\n }\n // do not show error screen for interactive errors by default\n }\n if (data == null) {\n if (this.debug) {\n return _errorMessage({ error: new BeamError(\"No data\") });\n }\n return \"\";\n }\n const nonprofits = data?.nonprofits || [];\n const selectedNonprofit = nonprofits.find((np) => np.nonprofit.id === selectedNonprofitId) || null;\n // changes images in widget to icons\n const displayIcon =\n this.cssVariables[\"--beam-RedeemTransaction-cardStyle\"] === \"'icon'\" ||\n this.cssVariables[\"--beam-RedeemTransaction-cardStyle\"] === \"'selected_icon'\";\n const livePromo = data?.config?.web?.promo;\n this.shouldUsePromoUI = livePromo ? true : false; // new promo UI\n const hasNonprofitWithInactivePromo = nonprofits.some((nonprofit) => !nonprofit.promo || !nonprofit.promo.isActive);\n\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n <!-- Custom flex order fixes tab cycling so submit button is after content -->\n <div style=\"display: flex; flex-direction: column;\" class=\"root\">\n <div\n style=\"order: 3;\"\n tabindex=\"-1\"\n class=\"options cardGrid ${classMap({ isHidden: !this.didUserExpandNonprofits && this.shouldCollapse })}\"\n part=\"options\"\n role=\"radiogroup\"\n aria-labelledby=\"beam-RedeemTransaction-title\"\n ?aria-disabled=${!this.allowChange}\n >\n ${repeat(\n nonprofits,\n (i) => i.nonprofit.id,\n (np, index) => {\n const isSelected = selectedNonprofitId === np.nonprofit.id;\n const isFocusable = isSelected || (selectedNonprofit == null && index === 0);\n return html`\n <div\n class=\"option ${classMap({\n isSelected: isSelected,\n isDisabled: !this.allowChange,\n })}\"\n part=\"option\"\n role=\"radio\"\n tabindex=\"${isFocusable ? 0 : -1}\"\n data-value=${np.nonprofit.id}\n ?aria-checked=${isSelected}\n @click=${this.makeHandleSelect(np.nonprofit.id, index, nonprofits)}\n @keydown=${this.makeHandleSelect(np.nonprofit.id, index, nonprofits)}\n aria-label=\"${localizeUserString(this.configLang, np.nonprofit.cause || \"\")}\"\n style=\"display: flex; flex-direction: column; padding: 11px; justify-content:center;\"\n >\n <div class=\"optionContainer\" style=\"display: flex; align-items: flex-start; gap: 8px;\">\n ${this.renderRadioButton()}\n <div\n class=\"nonprofitInfoContainer\"\n style=\"flex: 1; display: flex; flex-direction: column; gap: 5px;\"\n >\n <div class=\"imageDetailContainer\" style=\"display: flex; gap: 8px;\">\n ${this.renderNonprofitImage(np, displayIcon)}\n ${this.renderNonprofitDetails(np, hasNonprofitWithInactivePromo, data)}\n </div>\n ${this.renderProgressBar(np)}\n </div>\n </div>\n </div>\n `;\n },\n )}\n </div>\n\n <div class=\"submitButtonContainer\" part=\"submit-button-container\">${this.renderSubmitButton(data)}</div>\n\n <div class=\"headerContainer\" part=\"header-container\">\n <div>\n <div\n class=\"header-promo-pill-container\"\n style=\"display: flex; ${this.isMobile && \"flex-direction: column; align-items: flex-start;\"}\"\n >\n <h3\n class=\"title\"\n part=\"title\"\n id=\"beam-RedeemTransaction-title\"\n style=\"${useCustomText(\"--beam-RedeemTransaction-title\")}; margin-right: 8px;\"\n >\n ${localizeUserString(this.configLang, data?.config?.web?.title) || strings[this.configLang].ctaTitle()}\n </h3>\n ${this.shouldUsePromoUI\n ? html`<beam-promo-info-pill\n .promo=${livePromo}\n style=\"${this.isMobile && \"order: -1; margin-bottom:10px;\"}\"\n ></beam-promo-info-pill>`\n : html``}\n </div>\n <p class=\"description\" part=\"description\" style=\"${useCustomText(\"--beam-RedeemTransaction-description\")}\">\n ${this.shouldUsePromoUI\n ? html`<span style=\"font-weight:bold\">\n ${localizeUserString(this.configLang, data?.config?.web?.promoDescriptionPrefix || \"\") ||\n strings[this.configLang].ctaPromoPrefixMessage()}\n </span>\n <span>\n ${localizeUserString(this.configLang, data?.config?.web?.promoDescription || \"\") ||\n strings[this.configLang].ctaPromoMessage()}\n </span>`\n : html`<span\n >${localizeUserString(this.configLang, data?.config?.web?.description || \"\") ||\n strings[this.configLang].ctaMessage()}\n </span>`}\n </p>\n </div>\n </div>\n\n <beam-partner-logos\n partnerName=\"${data.chain.name}\"\n partnerLogoUrl=\"${data.chain.logoUrl}\"\n style=\"order: 1\"\n part=\"logos\"\n ></beam-partner-logos>\n </div>\n `;\n }\n}\n\ndefineCustomElement(BeamRedeemTransaction);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-redeem-transaction\": BeamRedeemTransaction;\n }\n}\n"],"names":["postTransaction","makeOpenApiMethod","putTransaction","_radioButton","height","width","html","styleMap","strings","donationPercentage","BeamRedeemTransaction","LitElement","DEFAULT_BASE_URL","MissingConfig","res","postChainEligibleNonprofitsForCart","WIDGET_NAMES","selectedNonprofitId","enforceConfig","AsyncController","createScopedLocalStorage","id","index","nonprofits","event","currentId","nextFocus","focusTarget","selectedNonprofit","np","BeamNonprofitSelectEvent","debounce","SUPPORTED_LANGUAGES","areRequiredKeysDefined","_changedProperties","previousPropertyValues","requireNewDataProps","prop","createdAt","data","cacheTtl","defaults","defineCustomText","partnerLogosConfigDefaults","progressBarConfigDefaults","promoPillLabelConfigDefaults","remoteConfig","config","_cssVariableMap","enableMobileCollapse","enableDesktopCollapse","isMobileCollapseEnabled","isDesktopCollapseEnabled","classMap","localizeUserString","displayIcon","cardStyle","imageUrl","useCustomText","unsafeHTML","hasNonprofitWithInactivePromo","loading","_loading","_errorMessage","BeamError","livePromo","nonprofit","repeat","i","isSelected","isFocusable","cssReset","css","cssCardGrid","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{v as d}from"./vendor-ckSdd6aH.esm.js";import{getCookieValue as i,setCookieValue as p,deleteCookieValue as l}from"../utils/cookies.esm.js";import{createScopedLocalStorage as n}from"../utils/local-storage.esm.js";const s="beam_session";async function r({cookieName:e=s,domain:o=window.location.hostname,apiKey:t=""}={}){if(await i(e))return;const a=d(),m=Date.now()+720*60*60*1e3;await p({name:e,value:a,domain:o,path:"/",expires:m}),n({apiKey:t}).setItemJson("cart",{cartId:a})}async function c({cookieName:e=s,domain:o=window.location.hostname,apiKey:t=""}={}){const a=await i(e);a&&(n({apiKey:t}).setItemJson("cart",{cartId:a}),await l({name:e,domain:o}))}var u=Object.freeze({__proto__:null,createSession:r,endSession:c});export{r as c,c as e,u as i};
2
- //# sourceMappingURL=index-mppXVWCH.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-mppXVWCH.esm.js","sources":["../../src/integrations/session/index.ts"],"sourcesContent":["/**\n If checkout and order page are on different subdomains, we can't access localStorage for nonprofitId/selectionId\n We can make post-transaction work by copying a \"cartID\"-style cookie to the expected localStorage key on the current\n domain, which will allow the post-transaction widgets to send that to the backend which can restore the selection\n from the cart.\n\n This will also work if we don't have a cart cookie for some other reason, although it is not directly integrated\n with the host site's concept of a cart (e.g., line items and expiration dates).\n\n Note: Use a module import rather than a self-executing script so that we can set cookies on the host domain\n rather than our 3rd party CDN domain, and customize the options via arguments.\n\n Usage:\n <script type=\"module\">\n import { createSession } from 'https://...';\n createSession({domain: 'mystore.com'})\n </script>\n */\n\nimport { v4 as uuid } from \"@lukeed/uuid/secure\";\nimport { deleteCookieValue, getCookieValue, setCookieValue } from \"../../utils/cookies\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\n\nconst DEFAULT_COOKIE_NAME = \"beam_session\";\n\nexport async function createSession({\n cookieName = DEFAULT_COOKIE_NAME,\n domain = window.location.hostname, // domain or subdomain to set cookie on\n apiKey = \"\", // optional unless scoping localStorage to api key\n} = {}) {\n const existingValue = await getCookieValue(cookieName);\n\n if (existingValue) {\n return; // do nothing\n }\n\n const cookieValue = uuid();\n\n const expires = Date.now() + 30 * 24 * 60 * 60 * 1000; // 30 days\n\n await setCookieValue({ name: cookieName, value: cookieValue, domain, path: \"/\", expires });\n\n const beamLocalStorage = createScopedLocalStorage({ apiKey });\n beamLocalStorage.setItemJson(\"cart\", { cartId: cookieValue });\n}\n\nexport async function endSession({\n cookieName = DEFAULT_COOKIE_NAME,\n domain = window.location.hostname, // domain to remove cookie from\n apiKey = \"\", // optional unless scoping localStorage to api key\n} = {}) {\n const cookieValue = await getCookieValue(cookieName);\n\n if (!cookieValue) {\n return; // do nothing\n }\n\n // copy cookie value into localStorage for widgets to use\n const beamLocalStorage = createScopedLocalStorage({ apiKey });\n beamLocalStorage.setItemJson(\"cart\", { cartId: cookieValue });\n\n // delete cookie to end session (will generate new one on next visit)\n await deleteCookieValue({ name: cookieName, domain });\n}\n"],"names":["DEFAULT_COOKIE_NAME","createSession","cookieName","domain","apiKey","getCookieValue","cookieValue","uuid","expires","setCookieValue","createScopedLocalStorage","endSession","deleteCookieValue"],"mappings":"0NAuBA,MAAMA,EAAsB,eAE5B,eAAsBC,EAAc,CAClC,WAAAC,EAAaF,EACb,OAAAG,EAAS,OAAO,SAAS,SACzB,OAAAC,EAAS,EACX,EAAI,CAAA,EAAI,CAGN,GAFsB,MAAMC,EAAeH,CAAU,EAGnD,OAGF,MAAMI,EAAcC,EAAAA,EAEdC,EAAU,KAAK,MAAQ,IAAU,GAAK,GAAK,IAEjD,MAAMC,EAAe,CAAE,KAAMP,EAAY,MAAOI,EAAa,OAAAH,EAAQ,KAAM,IAAK,QAAAK,CAAQ,CAAC,EAEhEE,EAAyB,CAAE,OAAAN,CAAO,CAAC,EAC3C,YAAY,OAAQ,CAAE,OAAQE,CAAY,CAAC,CAC9D,CAEA,eAAsBK,EAAW,CAC/B,WAAAT,EAAaF,EACb,OAAAG,EAAS,OAAO,SAAS,SACzB,OAAAC,EAAS,EACX,EAAI,GAAI,CACN,MAAME,EAAc,MAAMD,EAAeH,CAAU,EAE9CI,IAKoBI,EAAyB,CAAE,OAAAN,CAAO,CAAC,EAC3C,YAAY,OAAQ,CAAE,OAAQE,CAAY,CAAC,EAG5D,MAAMM,EAAkB,CAAE,KAAMV,EAAY,OAAAC,CAAO,CAAC,EACtD"}
@@ -1,2 +0,0 @@
1
- import{BeamCommunityImpact as m}from"../components/community-impact.esm.js";import{BeamCumulativeImpact as e}from"../components/cumulative-impact.esm.js";import{BeamImpactOverview as a}from"../components/impact-overview.esm.js";import{BeamSelectNonprofit as t}from"../components/select-nonprofit.esm.js";import{B as o}from"./index-UMeAzKTG.esm.js";import{BeamPostPurchase as r}from"../components/post-purchase.esm.js";import{BeamSubscriptionManagement as i}from"../components/subscription-management.esm.js";import{BeamSubscriptionImpact as p}from"../components/subscription-impact.esm.js";import{BeamProductDetailsPage as c}from"../components/product-details-page.esm.js";import{BeamSelectSubscriptionNonprofit as B}from"../components/select-subscription-nonprofit.esm.js";import{BeamSocialShare as n}from"../components/social-share.esm.js";var u=Object.freeze({__proto__:null,BeamCommunityImpact:m,BeamCumulativeImpact:e,BeamImpactOverview:a,BeamPostPurchase:r,BeamProductDetailsPage:c,BeamRedeemTransaction:o,BeamSelectNonprofit:t,BeamSelectSubscriptionNonprofit:B,BeamSocialShare:n,BeamSubscriptionImpact:p,BeamSubscriptionManagement:i});export{u as i};
2
- //# sourceMappingURL=index-n62IxH5D.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-n62IxH5D.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- import{b as o}from"./beam-errors-Ci0d3926.esm.js";import{e}from"./events-COWOQoLW.esm.js";import{logger as r}from"../utils/logger.js";import{initNetworkListeners as t}from"../utils/network-listeners.js";import{createScopedLocalStorage as m}from"../utils/local-storage.js";import{waitForElement as a}from"../utils/wait-for-element.js";import{deleteCookieValue as i,getCookieMap as s,getCookieValue as d,setCookieValue as n}from"../utils/cookies.js";import{getRemoteSession as C,saveRemoteSession as g}from"../utils/remote-session.js";import{memoizeLast as l}from"../utils/memoize-last.js";import{d as p,i as S}from"./lodash-BSs6Il-c.esm.js";import{formatStoreAndReturnPromoCodes as P,getAllPromoCodesFromCookie as u,getPromoCodeFromShopifyCookie as f,getPromoCodesFromCart as k,getPromoCodesLocalStorage as c,getSanitizedUrlForStorage as A,isEmptyPromoData as F,mapToUnvalidatedPromoCodes as L,mergeStoreAndReturnPromos as E,parseJsonStringArray as R,promoCodesAreEqual as v,setPromoCodeInCookie as y,setPromoCodesInLocalStorage as V}from"../utils/promoManager.js";var b=Object.freeze({__proto__:null,createScopedLocalStorage:m,debounce:p,deleteCookieValue:i,errors:o,events:e,formatStoreAndReturnPromoCodes:P,getAllPromoCodesFromCookie:u,getCookieMap:s,getCookieValue:d,getPromoCodeFromShopifyCookie:f,getPromoCodesFromCart:k,getPromoCodesLocalStorage:c,getRemoteSession:C,getSanitizedUrlForStorage:A,initNetworkListeners:t,isEmptyPromoData:F,isEqual:S,logger:r,mapToUnvalidatedPromoCodes:L,memoizeLast:l,mergeStoreAndReturnPromos:E,parseJsonStringArray:R,promoCodesAreEqual:v,saveRemoteSession:g,setCookieValue:n,setPromoCodeInCookie:y,setPromoCodesInLocalStorage:V,waitForElement:a});export{b as i};
2
- //# sourceMappingURL=index-nAPzvUWE.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-nAPzvUWE.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,44 +0,0 @@
1
- import { BeamCommunityImpact } from '../components/community-impact.js';
2
- import { BeamCumulativeImpact } from '../components/cumulative-impact.js';
3
- import { BeamImpactOverview } from '../components/impact-overview.js';
4
- import { BeamSelectNonprofit } from '../components/select-nonprofit.js';
5
- import { BeamRedeemTransaction } from '../components/redeem-transaction.js';
6
- import { BeamPostPurchase } from '../components/post-purchase.js';
7
- import { BeamSubscriptionManagement } from '../components/subscription-management.js';
8
- import { BeamSubscriptionImpact } from '../components/subscription-impact.js';
9
- import { BeamProductDetailsPage } from '../components/product-details-page.js';
10
- import { BeamSelectSubscriptionNonprofit } from '../components/select-subscription-nonprofit.js';
11
- import { BeamSocialShare } from '../components/social-share.js';
12
-
13
- /**
14
- * This file is used to provide type definitions
15
- */
16
-
17
- declare const index_BeamCommunityImpact: typeof BeamCommunityImpact;
18
- declare const index_BeamCumulativeImpact: typeof BeamCumulativeImpact;
19
- declare const index_BeamImpactOverview: typeof BeamImpactOverview;
20
- declare const index_BeamPostPurchase: typeof BeamPostPurchase;
21
- declare const index_BeamProductDetailsPage: typeof BeamProductDetailsPage;
22
- declare const index_BeamRedeemTransaction: typeof BeamRedeemTransaction;
23
- declare const index_BeamSelectNonprofit: typeof BeamSelectNonprofit;
24
- declare const index_BeamSelectSubscriptionNonprofit: typeof BeamSelectSubscriptionNonprofit;
25
- declare const index_BeamSocialShare: typeof BeamSocialShare;
26
- declare const index_BeamSubscriptionImpact: typeof BeamSubscriptionImpact;
27
- declare const index_BeamSubscriptionManagement: typeof BeamSubscriptionManagement;
28
- declare namespace index {
29
- export {
30
- index_BeamCommunityImpact as BeamCommunityImpact,
31
- index_BeamCumulativeImpact as BeamCumulativeImpact,
32
- index_BeamImpactOverview as BeamImpactOverview,
33
- index_BeamPostPurchase as BeamPostPurchase,
34
- index_BeamProductDetailsPage as BeamProductDetailsPage,
35
- index_BeamRedeemTransaction as BeamRedeemTransaction,
36
- index_BeamSelectNonprofit as BeamSelectNonprofit,
37
- index_BeamSelectSubscriptionNonprofit as BeamSelectSubscriptionNonprofit,
38
- index_BeamSocialShare as BeamSocialShare,
39
- index_BeamSubscriptionImpact as BeamSubscriptionImpact,
40
- index_BeamSubscriptionManagement as BeamSubscriptionManagement,
41
- };
42
- }
43
-
44
- export { index as i };
@@ -1,2 +0,0 @@
1
- const l=e=>e.every(t=>t instanceof HTMLElement);export{l as i};
2
- //# sourceMappingURL=is-all-html-elements-fcB7UUA1.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"is-all-html-elements-fcB7UUA1.esm.js","sources":["../../src/shared/is-all-html-elements.ts"],"sourcesContent":["export const isAllHtmlElements = (a: Array<unknown>): a is Array<HTMLElement> => {\n return a.every((el) => el instanceof HTMLElement);\n};\n"],"names":["isAllHtmlElements","a","el"],"mappings":"AAAO,MAAMA,EAAqBC,GACzBA,EAAE,MAAOC,GAAOA,aAAc,WAAW"}
@@ -1,2 +0,0 @@
1
- import{b as o}from"./lit-JRlupCB5.esm.js";const a={loading:""},n=()=>o`<p class="beam-loading">${a.loading}</p>`;export{n as _};
2
- //# sourceMappingURL=loading-template-BFvXaTlD.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loading-template-BFvXaTlD.esm.js","sources":["../../src/shared/fragments/loading-template.ts"],"sourcesContent":["import { html } from \"lit\";\n\nconst strings = {\n loading: \"\", // Default is no loading content\n};\n\nexport const _loading = () => {\n return html`<p class=\"beam-loading\">${strings.loading}</p>`;\n};\n"],"names":["strings","_loading","html"],"mappings":"0CAEA,MAAMA,EAAU,CACd,QAAS,EACX,EAEaC,EAAW,IACfC,4BAA+BF,EAAQ,OAAO"}
@@ -1,31 +0,0 @@
1
- import{b as i,g as $}from"./lit-JRlupCB5.esm.js";import{N as g,M as u,B as y}from"./beam-errors-Ci0d3926.esm.js";import{logger as d}from"../utils/logger.esm.js";const b=t=>Object.entries(t).map(([r,n])=>`${r}: ${n};`).join(`
2
- `);class x{constructor(r,n){this.data=null,this.loading=!1,this.error=null,(this.host=r).addController(this),this.asyncFn=n}async exec(...r){this.lastArgs=r,this.loading=!0,this.host.requestUpdate();try{this.data=await this.asyncFn(...r),this.error=null}catch(n){n instanceof Error&&(this.error=n,this.data=null)}return this.loading=!1,this.host.requestUpdate(),this.data}async retry(){return this.exec(...this.lastArgs||[])}hostDisconnected(){}}const m={errorTitle:"Beam encountered an error. Please try again.",retry:"Retry"},S=({error:t,retry:r})=>{let n=i``;if(t instanceof g){const o=JSON.stringify({status:t.response.status,statusText:t.response.statusText,url:t.response.url,body:t.body},null,4);n=i`
3
- <p><b>Network Response:</b></p>
4
- <p>${o}</p>
5
- `}return t instanceof u&&(n=i`
6
- <p><b>Missing Required Config Options:</b></p>
7
- <p>${t.missingConfigKeyNames.join(", ")}</p>
8
- `),i`<div class="beam-error" style="text-align: left">
9
- <p>${m.errorTitle} ${r?i` <button type="reset" @click="${r}">${m.retry}</button>`:""}</p>
10
- <br />
11
- <details>
12
- <div style="white-space: pre-wrap; font-family: monospace; line-height: 1;">
13
- ${n}
14
- <p><b>Message:</b> ${t.message||i`<i>None</i>`}</p>
15
- <p><b>Stack:</b> ${t.stack}</p>
16
- </div>
17
- </details>
18
- <br />
19
- <p>Help: <a href="https://www.beamimpact.com">www.beamimpact.com</a></p>
20
- </div>`},v=(t="",{fontFamily:r="inherit",fontStyle:n="inherit",fontSize:o="inherit",fontWeight:s="inherit",textTransform:a="none",textDecoration:l="none",marginTop:c="0",lineHeight:h="inherit",color:p="inherit",letterSpacing:f="normal"}={})=>{const e=t.startsWith("--beam-")?t:`--beam-${t}`;return{[`${e}-fontFamily`]:r,[`${e}-fontStyle`]:n,[`${e}-fontSize`]:o,[`${e}-fontWeight`]:s,[`${e}-textTransform`]:a,[`${e}-marginTop`]:c,[`${e}-lineHeight`]:h,[`${e}-color`]:p,[`${e}-letterSpacing`]:f,[`${e}-textDecoration`]:l}},T=(t="",{fontFamily:r="inherit",fontStyle:n="inherit",fontSize:o="inherit",fontWeight:s="inherit",textTransform:a="none",textDecoration:l="none",marginTop:c="0",lineHeight:h="inherit",color:p="inherit",letterSpacing:f="normal"}={})=>{const e=t.startsWith("--beam-")?t:`--beam-${t}`;return $(` font-family: var(${e}-fontFamily, ${r});
21
- font-style: var(${e}-fontStyle, ${n});
22
- font-size: var(${e}-fontSize, ${o});
23
- font-weight: var(${e}-fontWeight, ${s});
24
- text-transform: var(${e}-textTransform, ${a});
25
- margin-top: var(${e}-marginTop, ${c});
26
- line-height: var(${e}-lineHeight, ${h});
27
- text-decoration: var(${e}-textDecoration, ${l});
28
- color: var(${e}-color, ${p});
29
- letter-spacing: var(${e}-letterSpacing, ${f});
30
- `)},w=(t,r)=>{if(r.startsWith("{"))try{const n=JSON.parse(r);return n[t]??n.en??r}catch{return d.error(new y("Failed to extract JSON translation from string"),r),r}return r};export{x as A,S as _,b as a,v as d,w as i,T as u};
31
- //# sourceMappingURL=localize-Dg7NgKIP.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"localize-Dg7NgKIP.esm.js","sources":["../../src/shared/fragments/css-variable-map.ts","../../src/shared/controllers/async-controller.ts","../../src/shared/fragments/error-message-template.ts","../../src/shared/fragments/custom-text.ts","../../src/shared/localize.ts"],"sourcesContent":["export const _cssVariableMap = (variables: Record<string, string>) => {\n return Object.entries(variables)\n .map(([k, v]) => `${k}: ${v};`)\n .join(\"\\n\");\n};\n","import { ReactiveController, ReactiveControllerHost } from \"lit\";\n\ntype AsyncFunction = (...args: any[]) => Promise<any>;\n\n/**\n * Creates a declarative wrapper around async operations\n * @example\n * class MyElement extends LitElement {\n * private user = new AsyncController(\n * this,\n * async ({ id }) => get(url, { id }));\n *\n * async updated(changedProperties) {\n * if (changedProperties.has(\"userId\")) {\n * await this.user.exec({ id: this.userId })\n * }\n * }\n *\n * render() {\n * const { data, loading, error } = this.user;\n * if (loading) return html`Please wait...`\n * if (error) return html`Error! <button @click=${this.user.retry}>Reload</button>`;\n * return html`My name is: ${data.name}`\n * }\n * }\n */\nexport class AsyncController<TFn extends AsyncFunction> implements ReactiveController {\n public data: Awaited<ReturnType<TFn>> | null = null;\n public loading = false;\n public error: Error | null = null;\n\n private readonly host: ReactiveControllerHost;\n private readonly asyncFn: TFn;\n private lastArgs?: Parameters<TFn>;\n\n constructor(host: ReactiveControllerHost, asyncFn: TFn) {\n (this.host = host).addController(this);\n this.asyncFn = asyncFn;\n }\n\n public async exec(...args: Parameters<TFn>): Promise<ReturnType<TFn> | null> {\n this.lastArgs = args;\n this.loading = true;\n this.host.requestUpdate();\n try {\n // TODO: prevent race condition if later invocation returns before earlier\n this.data = await this.asyncFn(...args);\n this.error = null;\n } catch (err) {\n if (err instanceof Error) {\n this.error = err;\n this.data = null;\n }\n }\n this.loading = false;\n this.host.requestUpdate();\n return this.data;\n }\n\n public async retry() {\n return this.exec(...((this.lastArgs || []) as Parameters<TFn>));\n }\n\n hostDisconnected() {\n // TODO: cancel API calls\n }\n}\n","import { html } from \"lit\";\nimport { MissingConfig, NetworkError } from \"../../utils/beam-errors\";\n\nconst strings = {\n errorTitle: `Beam encountered an error. Please try again.`,\n retry: `Retry`,\n};\n\nexport const _errorMessage = ({ error, retry }: { error: Error; retry?: (...args: never) => void }) => {\n let details = html``;\n if (error instanceof NetworkError) {\n const response = JSON.stringify(\n {\n status: error.response.status,\n statusText: error.response.statusText,\n url: error.response.url,\n body: error.body,\n },\n null,\n 4,\n );\n details = html`\n <p><b>Network Response:</b></p>\n <p>${response}</p>\n `;\n }\n if (error instanceof MissingConfig) {\n details = html`\n <p><b>Missing Required Config Options:</b></p>\n <p>${error.missingConfigKeyNames.join(\", \")}</p>\n `;\n }\n return html`<div class=\"beam-error\" style=\"text-align: left\">\n <p>${strings.errorTitle} ${retry ? html` <button type=\"reset\" @click=\"${retry}\">${strings.retry}</button>` : \"\"}</p>\n <br />\n <details>\n <div style=\"white-space: pre-wrap; font-family: monospace; line-height: 1;\">\n ${details}\n <p><b>Message:</b> ${error.message || html`<i>None</i>`}</p>\n <p><b>Stack:</b> ${error.stack}</p>\n </div>\n </details>\n <br />\n <p>Help: <a href=\"https://www.beamimpact.com\">www.beamimpact.com</a></p>\n </div>`;\n};\n","import { CSSResult, unsafeCSS } from \"lit\";\n\n/**\n * Create an object that can be passed to cssVariableMap\n * to define CSS variables in a style tag. The default properties\n * are the ones exposed for customization in the remote config interface.\n * @example\n * const variables = {\n * ...customizableTextJs(\"widget-header\",\n * \"widget-border-color\": \"red\"\n * };\n *\n * html`<style>:host { ${_cssVariableMap(variables)} }</style>`;\n * @returns {{[p: string]: string}}\n */\nexport const defineCustomText = (\n namespace = \"\",\n {\n fontFamily = \"inherit\",\n fontStyle = \"inherit\",\n fontSize = \"inherit\",\n fontWeight = \"inherit\",\n textTransform = \"none\",\n textDecoration = \"none\",\n marginTop = \"0\",\n lineHeight = \"inherit\",\n color = \"inherit\",\n letterSpacing = \"normal\",\n } = {},\n): Record<string, string> => {\n const prefix = namespace.startsWith(\"--beam-\") ? namespace : `--beam-${namespace}`;\n return {\n [`${prefix}-fontFamily`]: fontFamily,\n [`${prefix}-fontStyle`]: fontStyle,\n [`${prefix}-fontSize`]: fontSize,\n [`${prefix}-fontWeight`]: fontWeight,\n [`${prefix}-textTransform`]: textTransform,\n [`${prefix}-marginTop`]: marginTop,\n [`${prefix}-lineHeight`]: lineHeight,\n [`${prefix}-color`]: color,\n [`${prefix}-letterSpacing`]: letterSpacing,\n [`${prefix}-textDecoration`]: textDecoration,\n };\n};\n\n/**\n * Returns a string that defines css properties based on variables,\n * which can be used in a css`` template. The default properties are the\n * ones exposed for customization in the remote config interface.\n * @example\n * css`.widget-header { ${customizableTextCss(\"widget-header\")} border: none; }`\n * @returns {CSSResult}\n */\nexport const useCustomText = (\n namespace = \"\",\n {\n fontFamily = \"inherit\",\n fontStyle = \"inherit\",\n fontSize = \"inherit\",\n fontWeight = \"inherit\",\n textTransform = \"none\",\n textDecoration = \"none\",\n marginTop = \"0\",\n lineHeight = \"inherit\",\n color = \"inherit\",\n letterSpacing = \"normal\",\n } = {},\n): CSSResult => {\n const prefix = namespace.startsWith(\"--beam-\") ? namespace : `--beam-${namespace}`;\n return unsafeCSS(`\\\n font-family: var(${prefix}-fontFamily, ${fontFamily});\n font-style: var(${prefix}-fontStyle, ${fontStyle});\n font-size: var(${prefix}-fontSize, ${fontSize});\n font-weight: var(${prefix}-fontWeight, ${fontWeight});\n text-transform: var(${prefix}-textTransform, ${textTransform});\n margin-top: var(${prefix}-marginTop, ${marginTop});\n line-height: var(${prefix}-lineHeight, ${lineHeight});\n text-decoration: var(${prefix}-textDecoration, ${textDecoration});\n color: var(${prefix}-color, ${color});\n letter-spacing: var(${prefix}-letterSpacing, ${letterSpacing});\n `);\n};\n\n/**\n * Same as useCustomText except returns an object that can be passed to styleMap\n */\nexport const useCustomTextMap = (\n namespace = \"\",\n {\n fontSize = \"inherit\",\n fontStyle = \"inherit\",\n fontWeight = \"inherit\",\n textTransform = \"none\",\n textDecoration = \"none\",\n marginTop = \"0\",\n lineHeight = \"inherit\",\n letterSpacing = \"normal\",\n } = {},\n): Record<string, string> => {\n const prefix = namespace.startsWith(\"--beam-\") ? namespace : `--beam-${namespace}`;\n return {\n fontSize: `var(${prefix}-fontSize, ${fontSize})`,\n fontStyle: `var(${prefix}-fontStyle, ${fontStyle})`,\n fontWeight: `var(${prefix}-fontWeight, ${fontWeight})`,\n textTransform: `var(${prefix}-textTransform, ${textTransform})`,\n textDecoration: `var(${prefix}-textDecoration, ${textDecoration})`,\n marginTop: `var(${prefix}-marginTop, ${marginTop})`,\n lineHeight: `var(${prefix}-lineHeight, ${lineHeight})`,\n letterSpacing: `var(${prefix}-letterSpacing, ${letterSpacing})`,\n };\n};\n","import { LANGUAGES } from \"../api-sdk/types\";\nimport { logger } from \"../utils/logger\";\nimport { BeamError } from \"../utils/beam-errors\";\n\n/**\n * User-provided strings may include embedded translations in JSON form\n * This function extracts the string for the provided language\n * If it fails to parse, or the string is not json-like, it returns the whole string\n */\nconst localizeUserString = (lang: LANGUAGES, str: string): string => {\n const isJson = str.startsWith(\"{\");\n if (isJson) {\n try {\n const json = JSON.parse(str);\n return json[lang] ?? json[\"en\"] ?? str;\n } catch (err) {\n logger.error(new BeamError(\"Failed to extract JSON translation from string\"), str);\n return str;\n }\n }\n return str;\n};\n\nexport { localizeUserString };\n"],"names":["_cssVariableMap","variables","k","v","AsyncController","host","asyncFn","args","err","strings","_errorMessage","error","retry","details","html","NetworkError","response","MissingConfig","defineCustomText","namespace","fontFamily","fontStyle","fontSize","fontWeight","textTransform","textDecoration","marginTop","lineHeight","color","letterSpacing","prefix","useCustomText","unsafeCSS","localizeUserString","lang","str","json","logger","BeamError"],"mappings":"iKAAO,MAAMA,EAAmBC,GACvB,OAAO,QAAQA,CAAS,EAC5B,IAAI,CAAC,CAACC,EAAGC,CAAC,IAAM,GAAGD,CAAC,KAAKC,CAAC,GAAG,EAC7B,KAAK;AAAA,CAAI,ECuBP,MAAMC,CAAyE,CASpF,YAAYC,EAA8BC,EAAc,CARxD,KAAO,KAAwC,KAC/C,KAAO,QAAU,GACjB,KAAO,MAAsB,MAO1B,KAAK,KAAOD,GAAM,cAAc,IAAI,EACrC,KAAK,QAAUC,CACjB,CAEA,MAAa,QAAQC,EAAwD,CAC3E,KAAK,SAAWA,EAChB,KAAK,QAAU,GACf,KAAK,KAAK,cAAA,EACV,GAAI,CAEF,KAAK,KAAO,MAAM,KAAK,QAAQ,GAAGA,CAAI,EACtC,KAAK,MAAQ,IACf,OAASC,EAAK,CACRA,aAAe,QACjB,KAAK,MAAQA,EACb,KAAK,KAAO,KAEhB,CACA,YAAK,QAAU,GACf,KAAK,KAAK,gBACH,KAAK,IACd,CAEA,MAAa,OAAQ,CACnB,OAAO,KAAK,KAAK,GAAK,KAAK,UAAY,EAAuB,CAChE,CAEA,kBAAmB,CAEnB,CACF,CC/DA,MAAMC,EAAU,CACd,WAAY,+CACZ,MAAO,OACT,EAEaC,EAAgB,CAAC,CAAE,MAAAC,EAAO,MAAAC,CAAM,IAA0D,CACrG,IAAIC,EAAUC,IACd,GAAIH,aAAiBI,EAAc,CACjC,MAAMC,EAAW,KAAK,UACpB,CACE,OAAQL,EAAM,SAAS,OACvB,WAAYA,EAAM,SAAS,WAC3B,IAAKA,EAAM,SAAS,IACpB,KAAMA,EAAM,IACd,EACA,KACA,CACF,EACAE,EAAUC;AAAAA;AAAAA,WAEHE,CAAQ;AAAA,KAEjB,CACA,OAAIL,aAAiBM,IACnBJ,EAAUC;AAAAA;AAAAA,WAEHH,EAAM,sBAAsB,KAAK,IAAI,CAAC;AAAA,OAGxCG;AAAAA,SACAL,EAAQ,UAAU,IAAIG,EAAQE,kCAAqCF,CAAK,KAAKH,EAAQ,KAAK,YAAc,EAAE;AAAA;AAAA;AAAA;AAAA,UAIzGI,CAAO;AAAA,6BACYF,EAAM,SAAWG,cAAiB;AAAA,2BACpCH,EAAM,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,SAMtC,EC9BaO,EAAmB,CAC9BC,EAAY,GACZ,CACE,WAAAC,EAAa,UACb,UAAAC,EAAY,UACZ,SAAAC,EAAW,UACX,WAAAC,EAAa,UACb,cAAAC,EAAgB,OAChB,eAAAC,EAAiB,OACjB,UAAAC,EAAY,IACZ,WAAAC,EAAa,UACb,MAAAC,EAAQ,UACR,cAAAC,EAAgB,QAClB,EAAI,CAAA,IACuB,CAC3B,MAAMC,EAASX,EAAU,WAAW,SAAS,EAAIA,EAAY,UAAUA,CAAS,GAChF,MAAO,CACL,CAAC,GAAGW,CAAM,aAAa,EAAGV,EAC1B,CAAC,GAAGU,CAAM,YAAY,EAAGT,EACzB,CAAC,GAAGS,CAAM,WAAW,EAAGR,EACxB,CAAC,GAAGQ,CAAM,aAAa,EAAGP,EAC1B,CAAC,GAAGO,CAAM,gBAAgB,EAAGN,EAC7B,CAAC,GAAGM,CAAM,YAAY,EAAGJ,EACzB,CAAC,GAAGI,CAAM,aAAa,EAAGH,EAC1B,CAAC,GAAGG,CAAM,QAAQ,EAAGF,EACrB,CAAC,GAAGE,CAAM,gBAAgB,EAAGD,EAC7B,CAAC,GAAGC,CAAM,iBAAiB,EAAGL,CAChC,CACF,EAUaM,EAAgB,CAC3BZ,EAAY,GACZ,CACE,WAAAC,EAAa,UACb,UAAAC,EAAY,UACZ,SAAAC,EAAW,UACX,WAAAC,EAAa,UACb,cAAAC,EAAgB,OAChB,eAAAC,EAAiB,OACjB,UAAAC,EAAY,IACZ,WAAAC,EAAa,UACb,MAAAC,EAAQ,UACR,cAAAC,EAAgB,QAClB,EAAI,CAAA,IACU,CACd,MAAMC,EAASX,EAAU,WAAW,SAAS,EAAIA,EAAY,UAAUA,CAAS,GAChF,OAAOa,EAAU,4BACQF,CAAM,gBAAgBV,CAAU;AAAA,0BACjCU,CAAM,eAAeT,CAAS;AAAA,yBAC/BS,CAAM,cAAcR,CAAQ;AAAA,2BAC1BQ,CAAM,gBAAgBP,CAAU;AAAA,8BAC7BO,CAAM,mBAAmBN,CAAa;AAAA,0BAC1CM,CAAM,eAAeJ,CAAS;AAAA,2BAC7BI,CAAM,gBAAgBH,CAAU;AAAA,+BAC5BG,CAAM,oBAAoBL,CAAc;AAAA,qBAClDK,CAAM,WAAWF,CAAK;AAAA,8BACbE,CAAM,mBAAmBD,CAAa;AAAA,KAC/D,CACL,ECxEMI,EAAqB,CAACC,EAAiBC,IAAwB,CAEnE,GADeA,EAAI,WAAW,GAAG,EAE/B,GAAI,CACF,MAAMC,EAAO,KAAK,MAAMD,CAAG,EAC3B,OAAOC,EAAKF,CAAI,GAAKE,EAAK,IAASD,CACrC,MAAc,CACZ,OAAAE,EAAO,MAAM,IAAIC,EAAU,gDAAgD,EAAGH,CAAG,EAC1EA,CACT,CAEF,OAAOA,CACT"}
@@ -1,31 +0,0 @@
1
- import{b as i,g as $}from"./lit-JRlupCB5.esm.js";import{N as g,M as u,B as y}from"./beam-errors-Ci0d3926.esm.js";import{logger as d}from"../utils/logger.js";const b=t=>Object.entries(t).map(([r,n])=>`${r}: ${n};`).join(`
2
- `);class x{constructor(r,n){this.data=null,this.loading=!1,this.error=null,(this.host=r).addController(this),this.asyncFn=n}async exec(...r){this.lastArgs=r,this.loading=!0,this.host.requestUpdate();try{this.data=await this.asyncFn(...r),this.error=null}catch(n){n instanceof Error&&(this.error=n,this.data=null)}return this.loading=!1,this.host.requestUpdate(),this.data}async retry(){return this.exec(...this.lastArgs||[])}hostDisconnected(){}}const m={errorTitle:"Beam encountered an error. Please try again.",retry:"Retry"},S=({error:t,retry:r})=>{let n=i``;if(t instanceof g){const o=JSON.stringify({status:t.response.status,statusText:t.response.statusText,url:t.response.url,body:t.body},null,4);n=i`
3
- <p><b>Network Response:</b></p>
4
- <p>${o}</p>
5
- `}return t instanceof u&&(n=i`
6
- <p><b>Missing Required Config Options:</b></p>
7
- <p>${t.missingConfigKeyNames.join(", ")}</p>
8
- `),i`<div class="beam-error" style="text-align: left">
9
- <p>${m.errorTitle} ${r?i` <button type="reset" @click="${r}">${m.retry}</button>`:""}</p>
10
- <br />
11
- <details>
12
- <div style="white-space: pre-wrap; font-family: monospace; line-height: 1;">
13
- ${n}
14
- <p><b>Message:</b> ${t.message||i`<i>None</i>`}</p>
15
- <p><b>Stack:</b> ${t.stack}</p>
16
- </div>
17
- </details>
18
- <br />
19
- <p>Help: <a href="https://www.beamimpact.com">www.beamimpact.com</a></p>
20
- </div>`},v=(t="",{fontFamily:r="inherit",fontStyle:n="inherit",fontSize:o="inherit",fontWeight:s="inherit",textTransform:a="none",textDecoration:l="none",marginTop:c="0",lineHeight:h="inherit",color:p="inherit",letterSpacing:f="normal"}={})=>{const e=t.startsWith("--beam-")?t:`--beam-${t}`;return{[`${e}-fontFamily`]:r,[`${e}-fontStyle`]:n,[`${e}-fontSize`]:o,[`${e}-fontWeight`]:s,[`${e}-textTransform`]:a,[`${e}-marginTop`]:c,[`${e}-lineHeight`]:h,[`${e}-color`]:p,[`${e}-letterSpacing`]:f,[`${e}-textDecoration`]:l}},T=(t="",{fontFamily:r="inherit",fontStyle:n="inherit",fontSize:o="inherit",fontWeight:s="inherit",textTransform:a="none",textDecoration:l="none",marginTop:c="0",lineHeight:h="inherit",color:p="inherit",letterSpacing:f="normal"}={})=>{const e=t.startsWith("--beam-")?t:`--beam-${t}`;return $(` font-family: var(${e}-fontFamily, ${r});
21
- font-style: var(${e}-fontStyle, ${n});
22
- font-size: var(${e}-fontSize, ${o});
23
- font-weight: var(${e}-fontWeight, ${s});
24
- text-transform: var(${e}-textTransform, ${a});
25
- margin-top: var(${e}-marginTop, ${c});
26
- line-height: var(${e}-lineHeight, ${h});
27
- text-decoration: var(${e}-textDecoration, ${l});
28
- color: var(${e}-color, ${p});
29
- letter-spacing: var(${e}-letterSpacing, ${f});
30
- `)},w=(t,r)=>{if(r.startsWith("{"))try{const n=JSON.parse(r);return n[t]??n.en??r}catch{return d.error(new y("Failed to extract JSON translation from string"),r),r}return r};export{x as A,S as _,b as a,v as d,w as i,T as u};
31
- //# sourceMappingURL=localize-DkAbsh05.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"localize-DkAbsh05.esm.js","sources":["../../src/shared/fragments/css-variable-map.ts","../../src/shared/controllers/async-controller.ts","../../src/shared/fragments/error-message-template.ts","../../src/shared/fragments/custom-text.ts","../../src/shared/localize.ts"],"sourcesContent":["export const _cssVariableMap = (variables: Record<string, string>) => {\n return Object.entries(variables)\n .map(([k, v]) => `${k}: ${v};`)\n .join(\"\\n\");\n};\n","import { ReactiveController, ReactiveControllerHost } from \"lit\";\n\ntype AsyncFunction = (...args: any[]) => Promise<any>;\n\n/**\n * Creates a declarative wrapper around async operations\n * @example\n * class MyElement extends LitElement {\n * private user = new AsyncController(\n * this,\n * async ({ id }) => get(url, { id }));\n *\n * async updated(changedProperties) {\n * if (changedProperties.has(\"userId\")) {\n * await this.user.exec({ id: this.userId })\n * }\n * }\n *\n * render() {\n * const { data, loading, error } = this.user;\n * if (loading) return html`Please wait...`\n * if (error) return html`Error! <button @click=${this.user.retry}>Reload</button>`;\n * return html`My name is: ${data.name}`\n * }\n * }\n */\nexport class AsyncController<TFn extends AsyncFunction> implements ReactiveController {\n public data: Awaited<ReturnType<TFn>> | null = null;\n public loading = false;\n public error: Error | null = null;\n\n private readonly host: ReactiveControllerHost;\n private readonly asyncFn: TFn;\n private lastArgs?: Parameters<TFn>;\n\n constructor(host: ReactiveControllerHost, asyncFn: TFn) {\n (this.host = host).addController(this);\n this.asyncFn = asyncFn;\n }\n\n public async exec(...args: Parameters<TFn>): Promise<ReturnType<TFn> | null> {\n this.lastArgs = args;\n this.loading = true;\n this.host.requestUpdate();\n try {\n // TODO: prevent race condition if later invocation returns before earlier\n this.data = await this.asyncFn(...args);\n this.error = null;\n } catch (err) {\n if (err instanceof Error) {\n this.error = err;\n this.data = null;\n }\n }\n this.loading = false;\n this.host.requestUpdate();\n return this.data;\n }\n\n public async retry() {\n return this.exec(...((this.lastArgs || []) as Parameters<TFn>));\n }\n\n hostDisconnected() {\n // TODO: cancel API calls\n }\n}\n","import { html } from \"lit\";\nimport { MissingConfig, NetworkError } from \"../../utils/beam-errors\";\n\nconst strings = {\n errorTitle: `Beam encountered an error. Please try again.`,\n retry: `Retry`,\n};\n\nexport const _errorMessage = ({ error, retry }: { error: Error; retry?: (...args: never) => void }) => {\n let details = html``;\n if (error instanceof NetworkError) {\n const response = JSON.stringify(\n {\n status: error.response.status,\n statusText: error.response.statusText,\n url: error.response.url,\n body: error.body,\n },\n null,\n 4,\n );\n details = html`\n <p><b>Network Response:</b></p>\n <p>${response}</p>\n `;\n }\n if (error instanceof MissingConfig) {\n details = html`\n <p><b>Missing Required Config Options:</b></p>\n <p>${error.missingConfigKeyNames.join(\", \")}</p>\n `;\n }\n return html`<div class=\"beam-error\" style=\"text-align: left\">\n <p>${strings.errorTitle} ${retry ? html` <button type=\"reset\" @click=\"${retry}\">${strings.retry}</button>` : \"\"}</p>\n <br />\n <details>\n <div style=\"white-space: pre-wrap; font-family: monospace; line-height: 1;\">\n ${details}\n <p><b>Message:</b> ${error.message || html`<i>None</i>`}</p>\n <p><b>Stack:</b> ${error.stack}</p>\n </div>\n </details>\n <br />\n <p>Help: <a href=\"https://www.beamimpact.com\">www.beamimpact.com</a></p>\n </div>`;\n};\n","import { CSSResult, unsafeCSS } from \"lit\";\n\n/**\n * Create an object that can be passed to cssVariableMap\n * to define CSS variables in a style tag. The default properties\n * are the ones exposed for customization in the remote config interface.\n * @example\n * const variables = {\n * ...customizableTextJs(\"widget-header\",\n * \"widget-border-color\": \"red\"\n * };\n *\n * html`<style>:host { ${_cssVariableMap(variables)} }</style>`;\n * @returns {{[p: string]: string}}\n */\nexport const defineCustomText = (\n namespace = \"\",\n {\n fontFamily = \"inherit\",\n fontStyle = \"inherit\",\n fontSize = \"inherit\",\n fontWeight = \"inherit\",\n textTransform = \"none\",\n textDecoration = \"none\",\n marginTop = \"0\",\n lineHeight = \"inherit\",\n color = \"inherit\",\n letterSpacing = \"normal\",\n } = {},\n): Record<string, string> => {\n const prefix = namespace.startsWith(\"--beam-\") ? namespace : `--beam-${namespace}`;\n return {\n [`${prefix}-fontFamily`]: fontFamily,\n [`${prefix}-fontStyle`]: fontStyle,\n [`${prefix}-fontSize`]: fontSize,\n [`${prefix}-fontWeight`]: fontWeight,\n [`${prefix}-textTransform`]: textTransform,\n [`${prefix}-marginTop`]: marginTop,\n [`${prefix}-lineHeight`]: lineHeight,\n [`${prefix}-color`]: color,\n [`${prefix}-letterSpacing`]: letterSpacing,\n [`${prefix}-textDecoration`]: textDecoration,\n };\n};\n\n/**\n * Returns a string that defines css properties based on variables,\n * which can be used in a css`` template. The default properties are the\n * ones exposed for customization in the remote config interface.\n * @example\n * css`.widget-header { ${customizableTextCss(\"widget-header\")} border: none; }`\n * @returns {CSSResult}\n */\nexport const useCustomText = (\n namespace = \"\",\n {\n fontFamily = \"inherit\",\n fontStyle = \"inherit\",\n fontSize = \"inherit\",\n fontWeight = \"inherit\",\n textTransform = \"none\",\n textDecoration = \"none\",\n marginTop = \"0\",\n lineHeight = \"inherit\",\n color = \"inherit\",\n letterSpacing = \"normal\",\n } = {},\n): CSSResult => {\n const prefix = namespace.startsWith(\"--beam-\") ? namespace : `--beam-${namespace}`;\n return unsafeCSS(`\\\n font-family: var(${prefix}-fontFamily, ${fontFamily});\n font-style: var(${prefix}-fontStyle, ${fontStyle});\n font-size: var(${prefix}-fontSize, ${fontSize});\n font-weight: var(${prefix}-fontWeight, ${fontWeight});\n text-transform: var(${prefix}-textTransform, ${textTransform});\n margin-top: var(${prefix}-marginTop, ${marginTop});\n line-height: var(${prefix}-lineHeight, ${lineHeight});\n text-decoration: var(${prefix}-textDecoration, ${textDecoration});\n color: var(${prefix}-color, ${color});\n letter-spacing: var(${prefix}-letterSpacing, ${letterSpacing});\n `);\n};\n\n/**\n * Same as useCustomText except returns an object that can be passed to styleMap\n */\nexport const useCustomTextMap = (\n namespace = \"\",\n {\n fontSize = \"inherit\",\n fontStyle = \"inherit\",\n fontWeight = \"inherit\",\n textTransform = \"none\",\n textDecoration = \"none\",\n marginTop = \"0\",\n lineHeight = \"inherit\",\n letterSpacing = \"normal\",\n } = {},\n): Record<string, string> => {\n const prefix = namespace.startsWith(\"--beam-\") ? namespace : `--beam-${namespace}`;\n return {\n fontSize: `var(${prefix}-fontSize, ${fontSize})`,\n fontStyle: `var(${prefix}-fontStyle, ${fontStyle})`,\n fontWeight: `var(${prefix}-fontWeight, ${fontWeight})`,\n textTransform: `var(${prefix}-textTransform, ${textTransform})`,\n textDecoration: `var(${prefix}-textDecoration, ${textDecoration})`,\n marginTop: `var(${prefix}-marginTop, ${marginTop})`,\n lineHeight: `var(${prefix}-lineHeight, ${lineHeight})`,\n letterSpacing: `var(${prefix}-letterSpacing, ${letterSpacing})`,\n };\n};\n","import { LANGUAGES } from \"../api-sdk/types\";\nimport { logger } from \"../utils/logger\";\nimport { BeamError } from \"../utils/beam-errors\";\n\n/**\n * User-provided strings may include embedded translations in JSON form\n * This function extracts the string for the provided language\n * If it fails to parse, or the string is not json-like, it returns the whole string\n */\nconst localizeUserString = (lang: LANGUAGES, str: string): string => {\n const isJson = str.startsWith(\"{\");\n if (isJson) {\n try {\n const json = JSON.parse(str);\n return json[lang] ?? json[\"en\"] ?? str;\n } catch (err) {\n logger.error(new BeamError(\"Failed to extract JSON translation from string\"), str);\n return str;\n }\n }\n return str;\n};\n\nexport { localizeUserString };\n"],"names":["_cssVariableMap","variables","k","v","AsyncController","host","asyncFn","args","err","strings","_errorMessage","error","retry","details","html","NetworkError","response","MissingConfig","defineCustomText","namespace","fontFamily","fontStyle","fontSize","fontWeight","textTransform","textDecoration","marginTop","lineHeight","color","letterSpacing","prefix","useCustomText","unsafeCSS","localizeUserString","lang","str","json","logger","BeamError"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{o as O,i as T,a as J}from"./lodash-BSs6Il-c.esm.js";import{j as W,k as K,d as M,c as q,l as F,h as G,g as V}from"./events-COWOQoLW.esm.js";import{logger as g}from"../utils/logger.esm.js";import{initNetworkListeners as $}from"../utils/network-listeners.esm.js";import{createScopedLocalStorage as j}from"../utils/local-storage.esm.js";import{memoizeLast as U}from"../utils/memoize-last.esm.js";import"./promo-types-DKAOFHJr.esm.js";import{B as D}from"./cart-contents-DkoytiZh.esm.js";import{O as E}from"./update-cart-ByUvNLyZ.esm.js";import{W as z,D as X}from"./routes-DSu5s3K7.esm.js";import{getExternalCartId as Z,getBeamCartId as A}from"../utils/cart.esm.js";import"../components/post-purchase.esm.js";import{waitForElement as H}from"../utils/wait-for-element.esm.js";import{B as Q}from"./beam-errors-Ci0d3926.esm.js";import{getCookieValue as Y}from"../utils/cookies.esm.js";const N=window.Shopify?.routes?.root||"/";let P=!1,R=!0,k=!1;const tt="cart";async function et(t,c=!0){if(P)return!1;$(),window.addEventListener(K.eventName,async()=>{k=!0}),window.addEventListener(M.eventName,async r=>{const e=r,o=/cart\/(add|change|update|clear)/,i=e.detail.type==="xhr"?e.detail.xhr.responseURL:e.detail.response.url,n=new URL(i);if(!o.test(n.pathname))return;const s=await B(t);s.changed&&E(t,s.cart)});let m,d;window.addEventListener(q.eventName,async r=>{const e=r;g.debug("[cart-page][BeamNonprofitSelectEvent]",e.detail);const{source:o,selectedNonprofitId:i,selectionId:n}=e.detail;if(o===z.select_nonprofit){if(m===i&&d===n)return;const s=await y(t);await h({...s,selectedNonprofitId:i,selectionId:n}),d=n,m=i}}),window.addEventListener(F.eventName,async r=>{const e=r;g.debug("[cart-page][BeamNonprofitSelectionRemovedEvent]",e.detail);const{newNonprofitId:o,selectionId:i}=e.detail;if(m===o&&d===i)return;const n=await y(t);await h({...n,selectedNonprofitId:null,selectionId:i}),d=i,m=o}),window.addEventListener(G.eventName,async r=>{const e=r;if(g.debug("[cart-page][BeamCartCreatedEvent]",e.detail),window.statsig||c){const o=await y(t);await h(o)}}),window.addEventListener(V.eventName,async r=>{const e=r;if(g.debug("[cart-page][BeamCartChangeEvent]",e.detail),window.statsig||c){const o=await y(t);await h(o)}});const p=await B(t);return await E(t,p.cart,!0),P=!0,!0}async function x(t){const c=await y(t);await h(c)}async function y(t){let c,m;if(window.statsig)try{const o=window.statsig;typeof o?.getLayer("beam_trial_layer")?.get("show_beam")=="boolean"&&(c=o.getLayer("beam_trial_layer").get("show_beam",!1),m=o.getStableID())}catch{}const d=Z(tt,t),p=A(D,t),{chainId:r,storeId:e}=t;return{showBeam:c??void 0,remoteSessionId:m??void 0,beamCartId:p&&p!=="null"?p:void 0,cartId:d&&d!=="null"?d:void 0,chainId:r,storeId:e}}const ot=x;async function B(t){const{token:c,total_price:m,item_count:d,currency:p,items:r,cart_level_discount_applications:e,attributes:o}=await L();let i=!1;const n=j(t),s=n.getItemJson("cart"),b=A(D,t),u={cartId:c,beamCartId:b,subtotal:m/100,itemCount:d,currencyCode:p,schema:{source:"generic"},content:{items:r.map(({sku:l,final_line_price:f,product_id:C,line_level_discount_allocations:I})=>{const w=l||String(C),a=f/100,v=I?.map(({discount_application:S})=>({code:S?.title,applicable:!0}));return{remoteProductIdentifier:w,localAmount:a,discounts:v}}),discounts:e.map(({title:l})=>({code:l,applicable:!0}))}};let _=null;try{o?.beam&&(_=JSON.parse(o.beam))}catch(l){g.error(l)}if(_&&R&&!k){R=!1;const{nonprofit_id:l,selection_id:f}=_,C=n.getItem("nonprofit"),I=n.getItem("transaction"),w=l!==void 0&&String(l)!==C,a=f!=null&&String(f)!==I;(w||a)&&(w&&(n.setItem("nonprofit",String(l)),n.setItem("nonprofit_selected_at",new Date().toISOString())),a&&(n.setItem("transaction",String(f)),n.setItem("nonprofit_selected_at",new Date().toISOString())),window.dispatchEvent(new W({nonprofitId:l,nonprofitIdChanged:w,selectionId:f,selectionIdChanged:a})))}return T(u,{...s,beamCartId:s?.beamCartId})||(i=!0),{changed:i,cart:u}}const at=E,L=async function(){return await window.fetch(N+"cart.js",{method:"GET",headers:{"Content-Type":"application/json"}}).then(t=>t.json())},h=U(async function({selectedNonprofitId:t,selectionId:c,beamCartId:m,cartId:d,chainId:p,storeId:r,showBeam:e,remoteSessionId:o}){const{attributes:i}=await L(),n=i?.beam;let s={};try{n&&(s=JSON.parse(n))}catch(l){g.error(l)}const b=O({nonprofit_id:t,selection_id:c,beam_cart_id:m,shopify_cart_id:d,chain_id:p,store_id:r,show_beam:e,remote_session_id:o},J),u={...s,...b};t===null&&(u.nonprofit_id=void 0);const _={beam:JSON.stringify(u)};if(!T(u,s))try{await window.fetch(N+"cart/update.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({attributes:_})})}catch(l){g.error(l)}}),nt=U(async function({selectedNonprofitId:t,selectionId:c,beamCartId:m,cartId:d,chainId:p,storeId:r}){let e,o;if(window.statsig)try{const s=window.statsig;typeof s?.getLayer("beam_trial_layer")?.get("show_beam")=="boolean"&&(e=s.getLayer("beam_trial_layer").get("show_beam",!1),o=s.getStableID())}catch{}const i=O({nonprofit_id:t,selection_id:c,beam_cart_id:m,shopify_cart_id:d,chain_id:p,store_id:r,show_beam:e,remote_session_id:o},J);t===null&&(i.nonprofit_id=void 0);const n={beam:JSON.stringify(i)};try{await window.fetch(N+"cart/update.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({attributes:n})})}catch(s){g.error(s)}});async function rt({parentSelector:t=".step__sections",apiKey:c,baseUrl:m=X,storeId:d,postalCode:p,discountCodes:r,countryCode:e,orderId:o,email:i,cartTotal:n,cart:s,promoCodes:b,htmlPromoCodes:u,currencyCode:_="USD",domain:l,lang:f="en",debug:C=!1}){const I=document.querySelector(t)||await H(t);if(!I)throw new Q(`Timed out waiting for selector '${t}'. Could not render Beam post-purchase widget.`);const w=await Y("cart");if(w){const v=j({apiKey:c}),S=v.getItemJson("cart")||{};v.setItemJson("cart",{...S,cartId:w})}const a=document.createElement("beam-post-purchase");a.apiKey=c,a.baseUrl=m,a.storeId=d,a.postalCode=p,a.countryCode=e,a.orderId=String(o),a.email=i,a.cartTotal=n,a.cart=s,a.promoCodes=b,a.htmlPromoCodes=u,a.discountCodes=r,a.currencyCode=_,a.domain=l,a.lang=f,a.debug=C,I.appendChild(a)}export{at as $,y as C,L as E,et as X,ot as Z,h as b,rt as s,nt as t,B as v,x};
2
- //# sourceMappingURL=order-page-B0WbVrvh.esm.js.map