@beamimpact/web-sdk 1.55.8 → 1.57.0

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 (409) hide show
  1. package/README.md +5 -0
  2. package/dist/chunks/_share-dialog-dependencies-U9953n3E.esm.js +2 -0
  3. package/dist/chunks/{_share-dialog-dependencies-BG0p8uUr.esm.js.map → _share-dialog-dependencies-U9953n3E.esm.js.map} +1 -1
  4. package/dist/chunks/{order-page-Qn1yyNbN.esm.d.ts → cart-ChovPXmM.esm.d.ts} +19 -41
  5. package/dist/chunks/css-card-grid-BUidQqf0.esm.js +21 -0
  6. package/dist/chunks/css-card-grid-BUidQqf0.esm.js.map +1 -0
  7. package/dist/chunks/handlebars-B_i-to-h.esm.js +23 -0
  8. package/dist/chunks/handlebars-B_i-to-h.esm.js.map +1 -0
  9. package/dist/chunks/index--PfL-_nX.esm.js +2 -0
  10. package/dist/chunks/index--PfL-_nX.esm.js.map +1 -0
  11. package/dist/chunks/index-B4xKTDaF.esm.js +2 -0
  12. package/dist/chunks/index-B4xKTDaF.esm.js.map +1 -0
  13. package/dist/chunks/index-BG4XJXUa.esm.d.ts +28 -0
  14. package/dist/chunks/index-BHglsF5j.esm.js +2 -0
  15. package/dist/chunks/index-BHglsF5j.esm.js.map +1 -0
  16. package/dist/chunks/{index-C-hPf29c.esm.d.ts → index-BY5lSRmw.esm.d.ts} +4 -1
  17. package/dist/chunks/{index-BjGPkgs-.esm.d.ts → index-BoIHE1tC.esm.d.ts} +16 -1
  18. package/dist/chunks/index-CTsxQr7R.esm.js +32 -0
  19. package/dist/chunks/index-CTsxQr7R.esm.js.map +1 -0
  20. package/dist/chunks/{index-2OQzw7UI.esm.js → index-CVmIOuEY.esm.js} +28 -18
  21. package/dist/chunks/index-CVmIOuEY.esm.js.map +1 -0
  22. package/dist/chunks/{index-CBS5Fqry.esm.d.ts → index-CdinWvYu.esm.d.ts} +4 -2
  23. package/dist/chunks/index-DBKUxzAl.esm.js +32 -0
  24. package/dist/chunks/index-DBKUxzAl.esm.js.map +1 -0
  25. package/dist/chunks/{index-C5gnsl34.esm.js → index-DTw-q6W4.esm.js} +28 -18
  26. package/dist/chunks/index-DTw-q6W4.esm.js.map +1 -0
  27. package/dist/chunks/index-DhHhFTBE.esm.js +31 -0
  28. package/dist/chunks/index-DhHhFTBE.esm.js.map +1 -0
  29. package/dist/chunks/index-IQOpw0qx.esm.d.ts +65 -0
  30. package/dist/chunks/{index-rxgS4BLp.esm.d.ts → index-_0XeyyF9.esm.d.ts} +6 -2
  31. package/dist/chunks/index-cb5vYQx0.esm.js +2 -0
  32. package/dist/chunks/index-cb5vYQx0.esm.js.map +1 -0
  33. package/dist/chunks/lit-BEag9MFp.esm.js +25 -0
  34. package/dist/chunks/lit-BEag9MFp.esm.js.map +1 -0
  35. package/dist/chunks/lodash-CrMU6wKg.esm.js +2 -0
  36. package/dist/chunks/lodash-CrMU6wKg.esm.js.map +1 -0
  37. package/dist/chunks/{promo-pill-label-ByFGhdxh.esm.js → promo-pill-label-BdTmmg_U.esm.js} +3 -3
  38. package/dist/chunks/{promo-pill-label-ByFGhdxh.esm.js.map → promo-pill-label-BdTmmg_U.esm.js.map} +1 -1
  39. package/dist/chunks/{responsive-BR8qUfBa.esm.js → responsive-aN8P5PqD.esm.js} +2 -2
  40. package/dist/chunks/{responsive-BR8qUfBa.esm.js.map → responsive-aN8P5PqD.esm.js.map} +1 -1
  41. package/dist/chunks/routes-D6Gtw6kZ.esm.d.ts +638 -0
  42. package/dist/chunks/share-button-7sI6zg-x.esm.js +54 -0
  43. package/dist/chunks/share-button-7sI6zg-x.esm.js.map +1 -0
  44. package/dist/chunks/{share-button-DmjRJmXh.esm.js → share-button-BaIbuJOl.esm.js} +9 -4
  45. package/dist/chunks/share-button-BaIbuJOl.esm.js.map +1 -0
  46. package/dist/chunks/{update-cart-CauFT0AF.esm.d.ts → update-cart-CcgzHTEm.esm.d.ts} +3 -3
  47. package/dist/chunks/utils-BjhsDvuU.esm.js +2 -0
  48. package/dist/chunks/utils-BjhsDvuU.esm.js.map +1 -0
  49. package/dist/chunks/{openapi-spec-Bk7E2QQP.esm.d.ts → utils-D8HO_RIu.esm.d.ts} +615 -11
  50. package/dist/chunks/vendor-DUOg5fL-.esm.js +1286 -0
  51. package/dist/chunks/vendor-DUOg5fL-.esm.js.map +1 -0
  52. package/dist/components/beam-partner-logos.d.ts +3 -1
  53. package/dist/components/beam-partner-logos.esm.js +5 -5
  54. package/dist/components/beam-partner-logos.esm.js.map +1 -1
  55. package/dist/components/beam-partner-logos.js +5 -5
  56. package/dist/components/beam-partner-logos.js.map +1 -1
  57. package/dist/components/community-impact.d.ts +3 -4
  58. package/dist/components/community-impact.esm.js +13 -8
  59. package/dist/components/community-impact.esm.js.map +1 -1
  60. package/dist/components/community-impact.js +13 -8
  61. package/dist/components/community-impact.js.map +1 -1
  62. package/dist/components/cumulative-impact.d.ts +3 -2
  63. package/dist/components/cumulative-impact.esm.js +3 -3
  64. package/dist/components/cumulative-impact.esm.js.map +1 -1
  65. package/dist/components/cumulative-impact.js +3 -3
  66. package/dist/components/cumulative-impact.js.map +1 -1
  67. package/dist/components/impact-overview.d.ts +38 -40
  68. package/dist/components/impact-overview.esm.js +10 -5
  69. package/dist/components/impact-overview.esm.js.map +1 -1
  70. package/dist/components/impact-overview.js +10 -5
  71. package/dist/components/impact-overview.js.map +1 -1
  72. package/dist/components/index.d.ts +6 -9
  73. package/dist/components/index.esm.js +1 -1
  74. package/dist/components/index.js +1 -1
  75. package/dist/components/post-purchase.d.ts +9 -12
  76. package/dist/components/post-purchase.esm.js +1 -31
  77. package/dist/components/post-purchase.esm.js.map +1 -1
  78. package/dist/components/post-purchase.js +1 -31
  79. package/dist/components/post-purchase.js.map +1 -1
  80. package/dist/components/product-details-page.d.ts +29 -28
  81. package/dist/components/product-details-page.esm.js +19 -19
  82. package/dist/components/product-details-page.esm.js.map +1 -1
  83. package/dist/components/product-details-page.js +19 -19
  84. package/dist/components/product-details-page.js.map +1 -1
  85. package/dist/components/redeem-transaction.d.ts +3 -7
  86. package/dist/components/redeem-transaction.esm.js +1 -1
  87. package/dist/components/redeem-transaction.js +1 -1
  88. package/dist/components/select-nonprofit.d.ts +3 -16
  89. package/dist/components/select-nonprofit.esm.js +8 -7
  90. package/dist/components/select-nonprofit.esm.js.map +1 -1
  91. package/dist/components/select-nonprofit.js +8 -7
  92. package/dist/components/select-nonprofit.js.map +1 -1
  93. package/dist/components/select-subscription-nonprofit.d.ts +3 -3
  94. package/dist/components/select-subscription-nonprofit.esm.js +44 -23
  95. package/dist/components/select-subscription-nonprofit.esm.js.map +1 -1
  96. package/dist/components/select-subscription-nonprofit.js +44 -23
  97. package/dist/components/select-subscription-nonprofit.js.map +1 -1
  98. package/dist/components/shopify.d.ts +9 -16
  99. package/dist/components/shopify.esm.js +1 -1
  100. package/dist/components/shopify.esm.js.map +1 -1
  101. package/dist/components/shopify.js +1 -1
  102. package/dist/components/shopify.js.map +1 -1
  103. package/dist/components/social-share.d.ts +15 -3
  104. package/dist/components/social-share.esm.js +12 -5
  105. package/dist/components/social-share.esm.js.map +1 -1
  106. package/dist/components/social-share.js +12 -5
  107. package/dist/components/social-share.js.map +1 -1
  108. package/dist/components/subscriber-select-nonprofit.d.ts +59 -0
  109. package/dist/components/subscriber-select-nonprofit.esm.js +137 -0
  110. package/dist/components/subscriber-select-nonprofit.esm.js.map +1 -0
  111. package/dist/components/subscriber-select-nonprofit.js +137 -0
  112. package/dist/components/subscriber-select-nonprofit.js.map +1 -0
  113. package/dist/components/subscription-impact.d.ts +38 -50
  114. package/dist/components/subscription-impact.esm.js +20 -8
  115. package/dist/components/subscription-impact.esm.js.map +1 -1
  116. package/dist/components/subscription-impact.js +20 -8
  117. package/dist/components/subscription-impact.js.map +1 -1
  118. package/dist/components/subscription-management.d.ts +91 -93
  119. package/dist/components/subscription-management.esm.js +7 -6
  120. package/dist/components/subscription-management.esm.js.map +1 -1
  121. package/dist/components/subscription-management.js +7 -6
  122. package/dist/components/subscription-management.js.map +1 -1
  123. package/dist/index.d.ts +40 -42
  124. package/dist/index.esm.js +1 -1
  125. package/dist/index.js +1 -1
  126. package/dist/integrations/beam.d.ts +5 -2
  127. package/dist/integrations/beam.esm.js +1 -1
  128. package/dist/integrations/beam.esm.js.map +1 -1
  129. package/dist/integrations/beam.js +1 -1
  130. package/dist/integrations/beam.js.map +1 -1
  131. package/dist/integrations/cart.d.ts +4 -4
  132. package/dist/integrations/cart.esm.js +1 -1
  133. package/dist/integrations/cart.js +1 -1
  134. package/dist/integrations/logs.d.ts +4 -2
  135. package/dist/integrations/logs.esm.js +1 -1
  136. package/dist/integrations/logs.js +1 -1
  137. package/dist/integrations/promoManager.d.ts +3 -1
  138. package/dist/integrations/promoManager.esm.js +1 -1
  139. package/dist/integrations/promoManager.esm.js.map +1 -1
  140. package/dist/integrations/promoManager.js +1 -1
  141. package/dist/integrations/promoManager.js.map +1 -1
  142. package/dist/integrations/session.d.ts +1 -1
  143. package/dist/integrations/session.esm.js +1 -1
  144. package/dist/integrations/session.js +1 -1
  145. package/dist/integrations/shopify-order.d.ts +38 -0
  146. package/dist/integrations/shopify-order.esm.js +2 -0
  147. package/dist/integrations/shopify-order.esm.js.map +1 -0
  148. package/dist/integrations/shopify-order.js +2 -0
  149. package/dist/integrations/shopify-order.js.map +1 -0
  150. package/dist/integrations/shopify.d.ts +5 -16
  151. package/dist/integrations/shopify.esm.js +1 -1
  152. package/dist/integrations/shopify.js +1 -1
  153. package/dist/integrations/statsig.d.ts +11 -5
  154. package/dist/integrations/statsig.esm.js +14 -14
  155. package/dist/integrations/statsig.esm.js.map +1 -1
  156. package/dist/integrations/statsig.js +14 -14
  157. package/dist/integrations/statsig.js.map +1 -1
  158. package/dist/integrations/utils.d.ts +1 -14
  159. package/dist/integrations/utils.esm.js +1 -1
  160. package/dist/integrations/utils.js +1 -1
  161. package/dist/react/beam-partner-logos.d.ts +3 -1
  162. package/dist/react/beam-partner-logos.esm.js +1 -1
  163. package/dist/react/beam-partner-logos.js +1 -1
  164. package/dist/react/community-impact.d.ts +3 -4
  165. package/dist/react/community-impact.esm.js +1 -1
  166. package/dist/react/community-impact.esm.js.map +1 -1
  167. package/dist/react/community-impact.js +1 -1
  168. package/dist/react/community-impact.js.map +1 -1
  169. package/dist/react/cumulative-impact.d.ts +3 -2
  170. package/dist/react/cumulative-impact.esm.js +1 -1
  171. package/dist/react/cumulative-impact.esm.js.map +1 -1
  172. package/dist/react/cumulative-impact.js +1 -1
  173. package/dist/react/cumulative-impact.js.map +1 -1
  174. package/dist/react/impact-overview.d.ts +3 -5
  175. package/dist/react/impact-overview.esm.js +1 -1
  176. package/dist/react/impact-overview.esm.js.map +1 -1
  177. package/dist/react/impact-overview.js +1 -1
  178. package/dist/react/impact-overview.js.map +1 -1
  179. package/dist/react/index.d.ts +7 -11
  180. package/dist/react/index.esm.js +1 -1
  181. package/dist/react/index.js +1 -1
  182. package/dist/react/post-purchase.d.ts +3 -8
  183. package/dist/react/post-purchase.esm.js +1 -1
  184. package/dist/react/post-purchase.esm.js.map +1 -1
  185. package/dist/react/post-purchase.js +1 -1
  186. package/dist/react/post-purchase.js.map +1 -1
  187. package/dist/react/product-details-page.d.ts +4 -3
  188. package/dist/react/product-details-page.esm.js +1 -1
  189. package/dist/react/product-details-page.esm.js.map +1 -1
  190. package/dist/react/product-details-page.js +1 -1
  191. package/dist/react/product-details-page.js.map +1 -1
  192. package/dist/react/redeem-transaction.d.ts +3 -9
  193. package/dist/react/redeem-transaction.esm.js +1 -1
  194. package/dist/react/redeem-transaction.esm.js.map +1 -1
  195. package/dist/react/redeem-transaction.js +1 -1
  196. package/dist/react/redeem-transaction.js.map +1 -1
  197. package/dist/react/select-nonprofit.d.ts +3 -8
  198. package/dist/react/select-nonprofit.esm.js +1 -1
  199. package/dist/react/select-nonprofit.esm.js.map +1 -1
  200. package/dist/react/select-nonprofit.js +1 -1
  201. package/dist/react/select-nonprofit.js.map +1 -1
  202. package/dist/react/select-subscription-nonprofit.d.ts +3 -7
  203. package/dist/react/select-subscription-nonprofit.esm.js +1 -1
  204. package/dist/react/select-subscription-nonprofit.esm.js.map +1 -1
  205. package/dist/react/select-subscription-nonprofit.js +1 -1
  206. package/dist/react/select-subscription-nonprofit.js.map +1 -1
  207. package/dist/react/shopify.d.ts +2 -2
  208. package/dist/react/shopify.esm.js +1 -1
  209. package/dist/react/shopify.esm.js.map +1 -1
  210. package/dist/react/shopify.js +1 -1
  211. package/dist/react/shopify.js.map +1 -1
  212. package/dist/react/social-share.d.ts +3 -3
  213. package/dist/react/social-share.esm.js +1 -1
  214. package/dist/react/social-share.esm.js.map +1 -1
  215. package/dist/react/social-share.js +1 -1
  216. package/dist/react/social-share.js.map +1 -1
  217. package/dist/react/subscriber-select-nonprofit.d.ts +14 -0
  218. package/dist/react/subscriber-select-nonprofit.esm.js +2 -0
  219. package/dist/react/subscriber-select-nonprofit.esm.js.map +1 -0
  220. package/dist/react/subscriber-select-nonprofit.js +2 -0
  221. package/dist/react/subscriber-select-nonprofit.js.map +1 -0
  222. package/dist/react/subscription-impact.d.ts +3 -4
  223. package/dist/react/subscription-impact.esm.js +1 -1
  224. package/dist/react/subscription-impact.esm.js.map +1 -1
  225. package/dist/react/subscription-impact.js +1 -1
  226. package/dist/react/subscription-impact.js.map +1 -1
  227. package/dist/react/subscription-management.d.ts +4 -7
  228. package/dist/react/subscription-management.esm.js +1 -1
  229. package/dist/react/subscription-management.esm.js.map +1 -1
  230. package/dist/react/subscription-management.js +1 -1
  231. package/dist/react/subscription-management.js.map +1 -1
  232. package/dist/utils/beam-errors.d.ts +3 -1
  233. package/dist/utils/beam-errors.esm.js +1 -1
  234. package/dist/utils/beam-errors.js +1 -1
  235. package/dist/utils/cart.d.ts +3 -18
  236. package/dist/utils/cart.esm.js +1 -1
  237. package/dist/utils/cart.esm.js.map +1 -1
  238. package/dist/utils/cart.js +1 -1
  239. package/dist/utils/cart.js.map +1 -1
  240. package/dist/utils/cookies.d.ts +3 -58
  241. package/dist/utils/cookies.esm.js +1 -1
  242. package/dist/utils/cookies.esm.js.map +1 -1
  243. package/dist/utils/cookies.js +1 -1
  244. package/dist/utils/cookies.js.map +1 -1
  245. package/dist/utils/debounce.esm.js +1 -1
  246. package/dist/utils/debounce.js +1 -1
  247. package/dist/utils/events.d.ts +3 -5
  248. package/dist/utils/events.esm.js +1 -1
  249. package/dist/utils/events.js +1 -1
  250. package/dist/utils/is-equal.esm.js +1 -1
  251. package/dist/utils/is-equal.js +1 -1
  252. package/dist/utils/local-storage.d.ts +3 -19
  253. package/dist/utils/local-storage.esm.js +1 -1
  254. package/dist/utils/local-storage.esm.js.map +1 -1
  255. package/dist/utils/local-storage.js +1 -1
  256. package/dist/utils/local-storage.js.map +1 -1
  257. package/dist/utils/logger.d.ts +3 -8
  258. package/dist/utils/logger.esm.js +1 -1
  259. package/dist/utils/logger.esm.js.map +1 -1
  260. package/dist/utils/logger.js +1 -1
  261. package/dist/utils/logger.js.map +1 -1
  262. package/dist/utils/makeApiKeyHeader.d.ts +3 -5
  263. package/dist/utils/makeApiKeyHeader.esm.js +1 -1
  264. package/dist/utils/makeApiKeyHeader.esm.js.map +1 -1
  265. package/dist/utils/makeApiKeyHeader.js +1 -1
  266. package/dist/utils/makeApiKeyHeader.js.map +1 -1
  267. package/dist/utils/memoize-last.d.ts +3 -17
  268. package/dist/utils/memoize-last.esm.js +1 -1
  269. package/dist/utils/memoize-last.esm.js.map +1 -1
  270. package/dist/utils/memoize-last.js +1 -1
  271. package/dist/utils/memoize-last.js.map +1 -1
  272. package/dist/utils/network-listeners.d.ts +3 -3
  273. package/dist/utils/network-listeners.esm.js +1 -1
  274. package/dist/utils/network-listeners.esm.js.map +1 -1
  275. package/dist/utils/network-listeners.js +1 -1
  276. package/dist/utils/network-listeners.js.map +1 -1
  277. package/dist/utils/promoManager.d.ts +3 -123
  278. package/dist/utils/promoManager.esm.js +1 -1
  279. package/dist/utils/promoManager.esm.js.map +1 -1
  280. package/dist/utils/promoManager.js +1 -1
  281. package/dist/utils/promoManager.js.map +1 -1
  282. package/dist/utils/remote-session.d.ts +3 -9
  283. package/dist/utils/remote-session.esm.js +1 -1
  284. package/dist/utils/remote-session.esm.js.map +1 -1
  285. package/dist/utils/remote-session.js +1 -1
  286. package/dist/utils/remote-session.js.map +1 -1
  287. package/dist/utils/wait-for-element.d.ts +3 -5
  288. package/dist/utils/wait-for-element.esm.js +1 -1
  289. package/dist/utils/wait-for-element.esm.js.map +1 -1
  290. package/dist/utils/wait-for-element.js +1 -1
  291. package/dist/utils/wait-for-element.js.map +1 -1
  292. package/package.json +45 -39
  293. package/dist/chunks/_share-dialog-dependencies-BG0p8uUr.esm.js +0 -2
  294. package/dist/chunks/_share-dialog-dependencies-dHlBUqo0.esm.js +0 -2
  295. package/dist/chunks/_share-dialog-dependencies-dHlBUqo0.esm.js.map +0 -1
  296. package/dist/chunks/beam-errors-CCe004HS.esm.d.ts +0 -40
  297. package/dist/chunks/beam-errors-Ci0d3926.esm.js +0 -2
  298. package/dist/chunks/beam-errors-Ci0d3926.esm.js.map +0 -1
  299. package/dist/chunks/cart-contents-CLT7p7Gd.esm.d.ts +0 -18
  300. package/dist/chunks/cart-contents-DkoytiZh.esm.js +0 -2
  301. package/dist/chunks/cart-contents-DkoytiZh.esm.js.map +0 -1
  302. package/dist/chunks/css-card-grid-CvoGpsJH.esm.js +0 -20
  303. package/dist/chunks/css-card-grid-CvoGpsJH.esm.js.map +0 -1
  304. package/dist/chunks/enforce-config-Ba1JkOHs.esm.js +0 -3
  305. package/dist/chunks/enforce-config-Ba1JkOHs.esm.js.map +0 -1
  306. package/dist/chunks/enforce-config-CZ3ToOgr.esm.js +0 -3
  307. package/dist/chunks/enforce-config-CZ3ToOgr.esm.js.map +0 -1
  308. package/dist/chunks/events-CSyogxoH.esm.d.ts +0 -186
  309. package/dist/chunks/events-Dki0ka4F.esm.js +0 -2
  310. package/dist/chunks/events-Dki0ka4F.esm.js.map +0 -1
  311. package/dist/chunks/index-2OQzw7UI.esm.js.map +0 -1
  312. package/dist/chunks/index-B1Y88trP.esm.js +0 -2
  313. package/dist/chunks/index-B1Y88trP.esm.js.map +0 -1
  314. package/dist/chunks/index-B1lGZARl.esm.d.ts +0 -46
  315. package/dist/chunks/index-B7hOLixE.esm.d.ts +0 -15
  316. package/dist/chunks/index-BNjsFEGn.esm.js +0 -2
  317. package/dist/chunks/index-BNjsFEGn.esm.js.map +0 -1
  318. package/dist/chunks/index-BTDB5Gk-.esm.js +0 -2
  319. package/dist/chunks/index-BTDB5Gk-.esm.js.map +0 -1
  320. package/dist/chunks/index-BX6GnRsb.esm.js +0 -2
  321. package/dist/chunks/index-BX6GnRsb.esm.js.map +0 -1
  322. package/dist/chunks/index-C3hpHWh1.esm.js +0 -2
  323. package/dist/chunks/index-C3hpHWh1.esm.js.map +0 -1
  324. package/dist/chunks/index-C5gnsl34.esm.js.map +0 -1
  325. package/dist/chunks/index-CGKJagBi.esm.js +0 -2
  326. package/dist/chunks/index-CGKJagBi.esm.js.map +0 -1
  327. package/dist/chunks/index-CJ1y1kTs.esm.d.ts +0 -46
  328. package/dist/chunks/index-CWKcDbs6.esm.js +0 -2
  329. package/dist/chunks/index-CWKcDbs6.esm.js.map +0 -1
  330. package/dist/chunks/index-Cg65EbvX.esm.js +0 -2
  331. package/dist/chunks/index-Cg65EbvX.esm.js.map +0 -1
  332. package/dist/chunks/index-Ct1m4IjM.esm.js +0 -2
  333. package/dist/chunks/index-Ct1m4IjM.esm.js.map +0 -1
  334. package/dist/chunks/index-D6qJfs7_.esm.js +0 -2
  335. package/dist/chunks/index-D6qJfs7_.esm.js.map +0 -1
  336. package/dist/chunks/index-DBb5HSkR.esm.js +0 -2
  337. package/dist/chunks/index-DBb5HSkR.esm.js.map +0 -1
  338. package/dist/chunks/index-DEaZqGi7.esm.js +0 -2
  339. package/dist/chunks/index-DEaZqGi7.esm.js.map +0 -1
  340. package/dist/chunks/index-DXj15KHe.esm.d.ts +0 -32
  341. package/dist/chunks/index-DnTE6QlY.esm.js +0 -2
  342. package/dist/chunks/index-DnTE6QlY.esm.js.map +0 -1
  343. package/dist/chunks/index-DrxhkT6Y.esm.js +0 -2
  344. package/dist/chunks/index-DrxhkT6Y.esm.js.map +0 -1
  345. package/dist/chunks/index-IKiJwo5v.esm.js +0 -2
  346. package/dist/chunks/index-IKiJwo5v.esm.js.map +0 -1
  347. package/dist/chunks/index-RhV6PBPH.esm.js +0 -2
  348. package/dist/chunks/index-RhV6PBPH.esm.js.map +0 -1
  349. package/dist/chunks/index-eCVyk0rc.esm.js +0 -2
  350. package/dist/chunks/index-eCVyk0rc.esm.js.map +0 -1
  351. package/dist/chunks/index-iqYDqEil.esm.d.ts +0 -19
  352. package/dist/chunks/index-tbwbkOdj.esm.js +0 -2
  353. package/dist/chunks/index-tbwbkOdj.esm.js.map +0 -1
  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/lit-WqMxC_PA.esm.js +0 -34
  357. package/dist/chunks/lit-WqMxC_PA.esm.js.map +0 -1
  358. package/dist/chunks/loading-template-DG4lkIIc.esm.js +0 -2
  359. package/dist/chunks/loading-template-DG4lkIIc.esm.js.map +0 -1
  360. package/dist/chunks/localize-Btu9xYcE.esm.js +0 -31
  361. package/dist/chunks/localize-Btu9xYcE.esm.js.map +0 -1
  362. package/dist/chunks/localize-C25pEGnx.esm.js +0 -31
  363. package/dist/chunks/localize-C25pEGnx.esm.js.map +0 -1
  364. package/dist/chunks/lodash-D3TLHRR_.esm.js +0 -2
  365. package/dist/chunks/lodash-D3TLHRR_.esm.js.map +0 -1
  366. package/dist/chunks/order-page-BRG7MXZ2.esm.js +0 -2
  367. package/dist/chunks/order-page-BRG7MXZ2.esm.js.map +0 -1
  368. package/dist/chunks/order-page-BbHDQfmy.esm.js +0 -2
  369. package/dist/chunks/order-page-BbHDQfmy.esm.js.map +0 -1
  370. package/dist/chunks/progress-bar-CveZ8E6Q.esm.d.ts +0 -15
  371. package/dist/chunks/progress-bar-DF7UuuHb.esm.js +0 -54
  372. package/dist/chunks/progress-bar-DF7UuuHb.esm.js.map +0 -1
  373. package/dist/chunks/promo-pill-label-BXRqZHET.esm.d.ts +0 -19
  374. package/dist/chunks/promo-pill-label-WGLW3bql.esm.js +0 -16
  375. package/dist/chunks/promo-pill-label-WGLW3bql.esm.js.map +0 -1
  376. package/dist/chunks/promo-types-7r9-UuiP.esm.d.ts +0 -14
  377. package/dist/chunks/promo-types-DKAOFHJr.esm.js +0 -2
  378. package/dist/chunks/promo-types-DKAOFHJr.esm.js.map +0 -1
  379. package/dist/chunks/routes-BvX92EDq.esm.js +0 -2
  380. package/dist/chunks/routes-BvX92EDq.esm.js.map +0 -1
  381. package/dist/chunks/routes-DahRzf8t.esm.d.ts +0 -638
  382. package/dist/chunks/routes-DguZveS3.esm.js +0 -2
  383. package/dist/chunks/routes-DguZveS3.esm.js.map +0 -1
  384. package/dist/chunks/share-button-BRjKJc5L.esm.js +0 -167
  385. package/dist/chunks/share-button-BRjKJc5L.esm.js.map +0 -1
  386. package/dist/chunks/share-button-CDVVaxEc.esm.d.ts +0 -27
  387. package/dist/chunks/share-button-DPNNnXeM.esm.js +0 -2
  388. package/dist/chunks/share-button-DPNNnXeM.esm.js.map +0 -1
  389. package/dist/chunks/share-button-DmjRJmXh.esm.js.map +0 -1
  390. package/dist/chunks/share-button-M8cMa6ol.esm.js +0 -2
  391. package/dist/chunks/share-button-M8cMa6ol.esm.js.map +0 -1
  392. package/dist/chunks/types-CPxMwnoR.esm.d.ts +0 -28
  393. package/dist/chunks/types-DfRc36jU.esm.d.ts +0 -15
  394. package/dist/chunks/update-cart-CJywJNax.esm.js +0 -2
  395. package/dist/chunks/update-cart-CJywJNax.esm.js.map +0 -1
  396. package/dist/chunks/update-cart-gwNcGXkd.esm.js +0 -2
  397. package/dist/chunks/update-cart-gwNcGXkd.esm.js.map +0 -1
  398. package/dist/chunks/vendor-KKSARHWL.esm.js +0 -1284
  399. package/dist/chunks/vendor-KKSARHWL.esm.js.map +0 -1
  400. package/dist/integrations/index.d.ts +0 -35
  401. package/dist/integrations/index.esm.js +0 -2
  402. package/dist/integrations/index.esm.js.map +0 -1
  403. package/dist/integrations/index.js +0 -2
  404. package/dist/integrations/index.js.map +0 -1
  405. package/dist/utils/index.d.ts +0 -16
  406. package/dist/utils/index.esm.js +0 -2
  407. package/dist/utils/index.esm.js.map +0 -1
  408. package/dist/utils/index.js +0 -2
  409. package/dist/utils/index.js.map +0 -1
@@ -1,8 +1,13 @@
1
- import{f as m,g as o,t as n,h as g,y as f}from"../chunks/lit-WqMxC_PA.esm.js";import"../chunks/vendor-KKSARHWL.esm.js";import"../chunks/_share-dialog-dependencies-BG0p8uUr.esm.js";import"../chunks/progress-bar-DF7UuuHb.esm.js";import"./beam-partner-logos.js";import{c as b,d as y,e as u}from"../chunks/enforce-config-Ba1JkOHs.esm.js";import{D as w,S as x,g as I,W as U}from"../chunks/routes-BvX92EDq.esm.js";import{_ as S}from"../chunks/loading-template-DG4lkIIc.esm.js";import{u as d,s as r,p}from"../chunks/share-button-DPNNnXeM.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../utils/logger.js";import"../chunks/promo-types-DKAOFHJr.esm.js";var k=Object.defineProperty,a=(l,t,i,v)=>{for(var s=void 0,c=l.length-1,h;c>=0;c--)(h=l[c])&&(s=h(t,i,s)||s);return s&&k(t,i,s),s};class e extends g{constructor(){super(...arguments),this.baseUrl=w,this.lang="en",this.debug=!1,this.brandName=null,this.shareImageUrl=null,this.isMobile=!1,this.windowResized=!1,this.checkViewport=()=>{this.windowResized=window.innerWidth<=768}}get configLang(){return x[this.lang]||"en"}connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this.checkViewport),this.checkViewport()}disconnectedCallback(){window.removeEventListener("resize",this.checkViewport),super.disconnectedCallback()}async fetchImpactData(){u(["apiKey","storeId","nonprofitId"],this);try{return await I({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},queryParams:{storeId:this.storeId,personalImpactLimit:0,nonprofitId:this.nonprofitId,widgetName:U.community_impact,version:"1.0.0",lang:this.configLang,transactionId:this.transactionId??void 0}})}catch(t){throw this.debug&&console.error("Failed to fetch impact data",t),t}}async updateImpactData(){try{const t=await this.fetchImpactData();if(t&&(this.brandName=t.chain.name,this.shareImageUrl=t.promoAssetUrl||t.personalImpactAssetUrl||t.community[0].share.imageUrl,this.shareImageUrl)){const i=await d(this.shareImageUrl);this.file=i,this.dataUrl=URL.createObjectURL(i)}}catch(t){this.debug&&console.error("Error updating impact data:",t)}}async firstUpdated(){await this.updateImpactData(),this.isMobile=/Mobi|Android/i.test(navigator.userAgent)||"ontouchstart"in window||navigator.maxTouchPoints>0}async openSystemShareSheet(t){if(t)try{const i=await d(t);navigator.share&&this.brandName&&await navigator.share({files:[i],title:r[this.lang].impactShareTitle(),text:r[this.lang].impactShareText({brandName:this.brandName})})}catch(i){this.debug&&console.error("Failed to open share sheet",i)}}async handleClickCopy(){if(this.file)try{this.apiKey&&this.transactionId?p({baseUrl:this.baseUrl,apiKey:this.apiKey||"",requestBody:{eventName:"ExtensibilityCopyImageButtonClick",nonprofitId:this.nonprofitId,storeId:this.storeId,timestamp:Date.now(),transactionId:Number(this.transactionId)}}).catch(()=>null):console.error("Missing data for social share analytics. Skipping send"),await navigator.clipboard.write([new ClipboardItem({"image/png":this.file})])}catch(t){this.debug&&console.error("Failed to copy image to clipboard:",t)}}handleClickDownload(t){this.apiKey&&this.transactionId?p({baseUrl:this.baseUrl,apiKey:this.apiKey||"",requestBody:{eventName:"ExtensibilityDownloadImageButtonClick",nonprofitId:this.nonprofitId,storeId:this.storeId,timestamp:Date.now(),transactionId:Number(this.transactionId)}}).catch(()=>null):console.error("Missing data for social share analytics. Skipping send");const i=t.currentTarget;this.isMobile&&this.shareImageUrl?(t.preventDefault(),this.openSystemShareSheet(this.shareImageUrl)):this.dataUrl&&(i.href=this.dataUrl,i.download=r[this.lang].impactShareTitle())}render(){return!this.brandName||!this.shareImageUrl||!this.dataUrl?S():f`
1
+ import{i as m,n as s,r as n,a as g,b}from"../chunks/lit-BEag9MFp.esm.js";import"../chunks/vendor-DUOg5fL-.esm.js";import"../chunks/_share-dialog-dependencies-U9953n3E.esm.js";import{u as d,s as r,p}from"../chunks/share-button-7sI6zg-x.esm.js";import"./beam-partner-logos.js";import{c as f,d as y,e as u}from"../chunks/css-card-grid-BUidQqf0.esm.js";import{D as w,S as x,g as I,W as U,_ as S}from"../chunks/index-DhHhFTBE.esm.js";import"../chunks/utils-BjhsDvuU.esm.js";import"../chunks/lodash-CrMU6wKg.esm.js";var k=Object.defineProperty,a=(l,t,i,v)=>{for(var o=void 0,c=l.length-1,h;c>=0;c--)(h=l[c])&&(o=h(t,i,o)||o);return o&&k(t,i,o),o};class e extends g{constructor(){super(...arguments),this.baseUrl=w,this.lang="en",this.debug=!1,this.brandName=null,this.shareImageUrl=null,this.isMobile=!1,this.windowResized=!1,this.checkViewport=()=>{this.windowResized=window.innerWidth<=768}}get configLang(){return x[this.lang]||"en"}connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this.checkViewport),this.checkViewport()}disconnectedCallback(){window.removeEventListener("resize",this.checkViewport),super.disconnectedCallback()}async fetchImpactData(){u(["apiKey","storeId","nonprofitId"],this);try{return await I({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},queryParams:{storeId:this.storeId,personalImpactLimit:0,nonprofitId:this.nonprofitId,widgetName:U.community_impact,version:"1.0.0",lang:this.configLang,transactionId:this.transactionId??void 0}})}catch(t){throw this.debug&&console.error("Failed to fetch impact data",t),t}}async updateImpactData(){try{const t=await this.fetchImpactData();if(t&&(this.brandName=t.chain.name,this.shareImageUrl=t.promoAssetUrl||t.personalImpactAssetUrl||t.community[0].share.imageUrl,this.shareImageUrl)){const i=await d(this.shareImageUrl);this.file=i,this.dataUrl=URL.createObjectURL(i)}}catch(t){this.debug&&console.error("Error updating impact data:",t)}}async firstUpdated(){await this.updateImpactData(),this.isMobile=/Mobi|Android/i.test(navigator.userAgent)||"ontouchstart"in window||navigator.maxTouchPoints>0}async openSystemShareSheet(t){if(t)try{const i=await d(t);navigator.share&&this.brandName&&await navigator.share({files:[i],title:r[this.lang].impactShareTitle(),text:r[this.lang].impactShareText({brandName:this.brandName})})}catch(i){this.debug&&console.error("Failed to open share sheet",i)}}async handleClickCopy(){if(this.file)try{this.apiKey&&this.transactionId?p({baseUrl:this.baseUrl,apiKey:this.apiKey||"",requestBody:{eventName:"ExtensibilityCopyImageButtonClick",nonprofitId:this.nonprofitId,storeId:this.storeId,timestamp:Date.now(),transactionId:Number(this.transactionId)}}).catch(()=>null):console.error("Missing data for social share analytics. Skipping send"),await navigator.clipboard.write([new ClipboardItem({"image/png":this.file})])}catch(t){this.debug&&console.error("Failed to copy image to clipboard:",t)}}handleClickDownload(t){this.apiKey&&this.transactionId?p({baseUrl:this.baseUrl,apiKey:this.apiKey||"",requestBody:{eventName:"ExtensibilityDownloadImageButtonClick",nonprofitId:this.nonprofitId,storeId:this.storeId,timestamp:Date.now(),transactionId:Number(this.transactionId)}}).catch(()=>null):console.error("Missing data for social share analytics. Skipping send");const i=t.currentTarget;this.isMobile&&this.shareImageUrl?(t.preventDefault(),this.openSystemShareSheet(this.shareImageUrl)):this.dataUrl&&(i.href=this.dataUrl,i.download=r[this.lang].impactShareTitle())}render(){return!this.brandName||!this.shareImageUrl||!this.dataUrl?S():b`
2
2
  <div class="share-container ${this.windowResized||this.isMobile?"mobile":"desktop"}">
3
3
  <h2 class="share-title">${r[this.lang].impactShareTitle()}</h2>
4
4
  <p class="share-text">${r[this.lang].impactShareText({brandName:this.brandName})}</p>
5
- <img src="${this.shareImageUrl}" alt="${r[this.lang].impactShareTitle()}" class="share-image" />
5
+ <img
6
+ data-speedsize-ignore="true"
7
+ src="${this.shareImageUrl}"
8
+ alt="${r[this.lang].impactShareTitle()}"
9
+ class="share-image"
10
+ />
6
11
  <div class="share-actions">
7
12
  <button class="plain-button button share-action-button" @click="${this.handleClickCopy}">
8
13
  <sl-icon
@@ -29,7 +34,7 @@ import{f as m,g as o,t as n,h as g,y as f}from"../chunks/lit-WqMxC_PA.esm.js";im
29
34
  </a>
30
35
  </div>
31
36
  </div>
32
- `}}e.tagName="beam-social-share",e.styles=[b,m`
37
+ `}}e.tagName="beam-social-share",e.styles=[f,m`
33
38
  @font-face {
34
39
  font-family: "Mabry-Bold";
35
40
  src: url("../../../assets/fonts/mabry-bold.otf") format("opentype");
@@ -122,7 +127,9 @@ import{f as m,g as o,t as n,h as g,y as f}from"../chunks/lit-WqMxC_PA.esm.js";im
122
127
  text-decoration: none;
123
128
  color: #333;
124
129
  cursor: pointer;
125
- transition: background-color 0.3s, border-color 0.3s;
130
+ transition:
131
+ background-color 0.3s,
132
+ border-color 0.3s;
126
133
  }
127
134
 
128
135
  .share-action-button:hover {
@@ -166,5 +173,5 @@ import{f as m,g as o,t as n,h as g,y as f}from"../chunks/lit-WqMxC_PA.esm.js";im
166
173
  margin: 5px 0;
167
174
  }
168
175
  }
169
- `],a([o({type:String})],e.prototype,"apiKey"),a([o({type:Number})],e.prototype,"storeId"),a([o({type:Number})],e.prototype,"nonprofitId"),a([o({type:String})],e.prototype,"baseUrl"),a([o({type:String})],e.prototype,"lang"),a([o({type:Boolean})],e.prototype,"debug"),a([o({type:String})],e.prototype,"transactionId"),a([n()],e.prototype,"brandName"),a([n()],e.prototype,"shareImageUrl"),a([n()],e.prototype,"dataUrl"),a([n()],e.prototype,"file"),a([n()],e.prototype,"isMobile"),a([n()],e.prototype,"windowResized"),y(e);export{e as BeamSocialShare};
176
+ `],a([s({type:String})],e.prototype,"apiKey"),a([s({type:Number})],e.prototype,"storeId"),a([s({type:Number})],e.prototype,"nonprofitId"),a([s({type:String})],e.prototype,"baseUrl"),a([s({type:String})],e.prototype,"lang"),a([s({type:Boolean})],e.prototype,"debug"),a([s({type:String})],e.prototype,"transactionId"),a([n()],e.prototype,"brandName"),a([n()],e.prototype,"shareImageUrl"),a([n()],e.prototype,"dataUrl"),a([n()],e.prototype,"file"),a([n()],e.prototype,"isMobile"),a([n()],e.prototype,"windowResized"),y(e);export{e as BeamSocialShare};
170
177
  //# sourceMappingURL=social-share.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"social-share.js","sources":["../../src/components/social-share/index.ts"],"sourcesContent":["import { css, html, LitElement } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport \"@shoelace-style/shoelace/dist/components/icon/icon.js\";\nimport \"../../shared/components/_share-dialog-dependencies\";\nimport \"../../shared/components/progress-bar\";\nimport \"../beam-partner-logos\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { getImpact } from \"../../api-sdk/v3/routes\";\nimport { _loading } from \"../../shared/fragments/loading-template\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES, WIDGET_NAMES } from \"../../api-sdk/constants\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { TNumericId } from \"../../shared/types\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { strings } from \"../../shared/components/strings/share-button\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { urlToFile } from \"../../shared/files\";\nimport { postSocialShareAnalyticsEvent } from \"../../api-sdk/v2/users/events\";\n\ntype RequiredConfig = {\n apiKey: string;\n storeId: TNumericId;\n nonprofitId: TNumericId;\n};\n\nexport class BeamSocialShare extends LitElement {\n static tagName = \"beam-social-share\";\n\n @property({ type: String }) public apiKey?: RequiredConfig[\"apiKey\"];\n @property({ type: Number }) storeId?: RequiredConfig[\"storeId\"];\n @property({ type: Number }) nonprofitId?: RequiredConfig[\"nonprofitId\"];\n @property({ type: String }) public baseUrl = DEFAULT_BASE_URL;\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n @property({ type: Boolean }) public debug = false;\n @property({ type: String }) transactionId?: string;\n\n @state() private brandName: string | null = null;\n @state() private shareImageUrl: string | null = null;\n @state() private dataUrl?: string;\n @state() private file?: File;\n @state() private isMobile = false;\n @state() private windowResized = false;\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener(\"resize\", this.checkViewport);\n this.checkViewport();\n }\n\n disconnectedCallback() {\n window.removeEventListener(\"resize\", this.checkViewport);\n super.disconnectedCallback();\n }\n\n checkViewport = () => {\n this.windowResized = window.innerWidth <= 768;\n };\n\n private async fetchImpactData() {\n if (!enforceConfig<RequiredConfig>([\"apiKey\", \"storeId\", \"nonprofitId\"], this)) {\n throw new MissingConfig();\n }\n try {\n const res = await getImpact({\n baseUrl: this.baseUrl,\n headers: { authorization: `Api-Key ${this.apiKey}` },\n queryParams: {\n storeId: this.storeId,\n personalImpactLimit: 0,\n nonprofitId: this.nonprofitId,\n widgetName: WIDGET_NAMES.community_impact,\n version: \"1.0.0\",\n lang: this.configLang,\n transactionId: this.transactionId ?? undefined,\n },\n });\n return res;\n } catch (error) {\n if (this.debug) {\n console.error(\"Failed to fetch impact data\", error);\n }\n throw error;\n }\n }\n\n // Updates component state with fetched impact data\n private async updateImpactData() {\n try {\n const data = await this.fetchImpactData();\n if (data) {\n this.brandName = data.chain.name;\n this.shareImageUrl = data.promoAssetUrl || data.personalImpactAssetUrl || data.community[0].share.imageUrl;\n\n if (this.shareImageUrl) {\n const file = await urlToFile(this.shareImageUrl);\n this.file = file;\n this.dataUrl = URL.createObjectURL(file);\n }\n }\n } catch (error) {\n if (this.debug) {\n console.error(\"Error updating impact data:\", error);\n }\n }\n }\n\n async firstUpdated() {\n await this.updateImpactData();\n this.isMobile =\n /Mobi|Android/i.test(navigator.userAgent) || \"ontouchstart\" in window || navigator.maxTouchPoints > 0;\n }\n\n private async openSystemShareSheet(imageUrl: string) {\n if (!imageUrl) return;\n\n try {\n const file = await urlToFile(imageUrl);\n if (navigator.share && this.brandName) {\n await navigator.share({\n files: [file],\n title: strings[this.lang].impactShareTitle(),\n text: strings[this.lang].impactShareText({ brandName: this.brandName }),\n });\n }\n } catch (error) {\n if (this.debug) {\n console.error(\"Failed to open share sheet\", error);\n }\n }\n }\n\n private async handleClickCopy() {\n if (this.file) {\n try {\n if (this.apiKey && this.transactionId) {\n void postSocialShareAnalyticsEvent({\n baseUrl: this.baseUrl,\n apiKey: this.apiKey || \"\",\n requestBody: {\n eventName: \"ExtensibilityCopyImageButtonClick\",\n nonprofitId: this.nonprofitId,\n storeId: this.storeId,\n timestamp: Date.now(),\n transactionId: Number(this.transactionId),\n },\n }).catch(() => null);\n } else {\n console.error(\"Missing data for social share analytics. Skipping send\");\n }\n await navigator.clipboard.write([new ClipboardItem({ \"image/png\": this.file })]);\n } catch (error) {\n if (this.debug) {\n console.error(\"Failed to copy image to clipboard:\", error);\n }\n }\n }\n }\n\n private handleClickDownload(event: Event) {\n if (this.apiKey && this.transactionId) {\n void postSocialShareAnalyticsEvent({\n baseUrl: this.baseUrl,\n apiKey: this.apiKey || \"\",\n requestBody: {\n eventName: \"ExtensibilityDownloadImageButtonClick\",\n nonprofitId: this.nonprofitId,\n storeId: this.storeId,\n timestamp: Date.now(),\n transactionId: Number(this.transactionId),\n },\n }).catch(() => null);\n } else {\n console.error(\"Missing data for social share analytics. Skipping send\");\n }\n const target = event.currentTarget as HTMLAnchorElement;\n if (this.isMobile && this.shareImageUrl) {\n event.preventDefault();\n this.openSystemShareSheet(this.shareImageUrl);\n } else if (this.dataUrl) {\n target.href = this.dataUrl;\n target.download = strings[this.lang].impactShareTitle();\n }\n }\n\n render() {\n if (!this.brandName || !this.shareImageUrl || !this.dataUrl) {\n return _loading();\n }\n\n return html`\n <div class=\"share-container ${this.windowResized || this.isMobile ? \"mobile\" : \"desktop\"}\">\n <h2 class=\"share-title\">${strings[this.lang].impactShareTitle()}</h2>\n <p class=\"share-text\">${strings[this.lang].impactShareText({ brandName: this.brandName })}</p>\n <img src=\"${this.shareImageUrl}\" alt=\"${strings[this.lang].impactShareTitle()}\" class=\"share-image\" />\n <div class=\"share-actions\">\n <button class=\"plain-button button share-action-button\" @click=\"${this.handleClickCopy}\">\n <sl-icon\n library=\"lucide\"\n name=\"copy\"\n label=\"${strings[this.lang].impactShareCopy()}\"\n class=\"share-action-icon\"\n ></sl-icon>\n <div class=\"share-action-text\">${strings[this.lang].impactShareCopy()}</div>\n </button>\n <a\n class=\"plain-button button share-action-button plain-link\"\n download=\"${strings[this.lang].impactShareTitle()}\"\n href=\"${this.dataUrl}\"\n @click=\"${this.handleClickDownload}\"\n >\n <sl-icon\n library=\"lucide\"\n name=\"download\"\n label=\"${strings[this.lang].impactShareDownload()}\"\n class=\"share-action-icon\"\n ></sl-icon>\n <div class=\"share-action-text\">${strings[this.lang].impactShareDownload()}</div>\n </a>\n </div>\n </div>\n `;\n }\n\n static styles = [\n cssReset,\n css`\n @font-face {\n font-family: \"Mabry-Bold\";\n src: url(\"../../../assets/fonts/mabry-bold.otf\") format(\"opentype\");\n font-weight: bold;\n font-style: normal;\n }\n @font-face {\n font-family: \"Mabry-Medium\";\n src: url(\"../../../assets/fonts/mabry-medium.otf\") format(\"opentype\");\n font-weight: bold;\n font-style: normal;\n }\n :host {\n align-items: center;\n justify-content: center;\n display: flex;\n box-sizing: border-box;\n width: 100%;\n }\n\n .share-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n max-width: 700px;\n text-align: center;\n }\n\n .share-container.mobile {\n padding: 1rem;\n max-width: 100%;\n }\n\n .share-title {\n font-family: \"Mabry-Bold\", sans-serif;\n font-size: 2.5rem;\n font-weight: bold;\n word-break: break-word;\n margin: 10px 0;\n }\n\n .share-title.mobile {\n font-size: 1.5rem;\n }\n\n .share-text {\n font-family: \"Mabry-Medium\", sans-serif;\n font-size: 1.25rem;\n line-height: 1.4;\n word-break: break-word;\n margin: 10px 0;\n max-width: 500px;\n }\n\n .share-text.mobile {\n font-size: 1rem;\n }\n\n .share-image {\n border-radius: 8px;\n width: 100%;\n max-width: 300px;\n height: auto;\n display: block;\n margin: 20px auto;\n }\n\n .share-actions {\n display: flex;\n flex-direction: row;\n justify-content: center;\n gap: 10px;\n align-items: center;\n margin: 20px 0;\n }\n\n .share-actions.mobile {\n flex-direction: column;\n }\n\n .share-action-button {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 10px 20px;\n border: 1px solid #ccc;\n border-radius: 4px;\n background-color: #fff;\n text-decoration: none;\n color: #333;\n cursor: pointer;\n transition: background-color 0.3s, border-color 0.3s;\n }\n\n .share-action-button:hover {\n background-color: #f0f0f0;\n border-color: #bbb;\n }\n\n .share-action-icon {\n font-size: 1.25rem;\n margin-right: 8px;\n }\n\n .share-action-text {\n font-family: \"Mabry-Medium\", sans-serif;\n font-size: 1rem;\n line-height: 1.4;\n margin-top: 5px;\n }\n\n @media (max-width: 600px) {\n .share-title {\n font-size: 1.5rem;\n }\n\n .share-text {\n font-size: 1rem;\n }\n\n .share-image {\n max-width: 240px;\n }\n\n .share-actions {\n flex-direction: row;\n width: 50%;\n margin: 10px 0;\n }\n\n .share-action-button {\n width: 100%;\n margin: 5px 0;\n }\n }\n `,\n ];\n}\n\ndefineCustomElement(BeamSocialShare);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-social-share\": BeamSocialShare;\n }\n}\n"],"names":["m","i","s","t","e","r","d","BeamSocialShare","LitElement","DEFAULT_BASE_URL","SUPPORTED_LANGUAGES","enforceConfig","getImpact","WIDGET_NAMES","error","data","file","urlToFile","imageUrl","strings","postSocialShareAnalyticsEvent","event","target","_loading","html","cssReset","css","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
1
+ {"version":3,"file":"social-share.js","sources":["../../src/components/social-share/index.ts"],"sourcesContent":["import { css, html, LitElement } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport \"@shoelace-style/shoelace/dist/components/icon/icon.js\";\nimport \"../../shared/components/_share-dialog-dependencies\";\nimport \"../../shared/components/progress-bar\";\nimport \"../beam-partner-logos\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { getImpact } from \"../../api-sdk/v3/routes\";\nimport { _loading } from \"../../shared/fragments/loading-template\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES, WIDGET_NAMES } from \"../../api-sdk/constants\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { TNumericId } from \"../../shared/types\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { strings } from \"../../shared/components/strings/share-button\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { urlToFile } from \"../../shared/files\";\nimport { postSocialShareAnalyticsEvent } from \"../../api-sdk/v2/users/events\";\n\ntype RequiredConfig = {\n apiKey: string;\n storeId: TNumericId;\n nonprofitId: TNumericId;\n};\n\nexport class BeamSocialShare extends LitElement {\n static tagName = \"beam-social-share\";\n\n @property({ type: String }) public apiKey?: RequiredConfig[\"apiKey\"];\n @property({ type: Number }) storeId?: RequiredConfig[\"storeId\"];\n @property({ type: Number }) nonprofitId?: RequiredConfig[\"nonprofitId\"];\n @property({ type: String }) public baseUrl = DEFAULT_BASE_URL;\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n @property({ type: Boolean }) public debug = false;\n @property({ type: String }) transactionId?: string;\n\n @state() private brandName: string | null = null;\n @state() private shareImageUrl: string | null = null;\n @state() private dataUrl?: string;\n @state() private file?: File;\n @state() private isMobile = false;\n @state() private windowResized = false;\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener(\"resize\", this.checkViewport);\n this.checkViewport();\n }\n\n disconnectedCallback() {\n window.removeEventListener(\"resize\", this.checkViewport);\n super.disconnectedCallback();\n }\n\n checkViewport = () => {\n this.windowResized = window.innerWidth <= 768;\n };\n\n private async fetchImpactData() {\n if (!enforceConfig<RequiredConfig>([\"apiKey\", \"storeId\", \"nonprofitId\"], this)) {\n throw new MissingConfig();\n }\n try {\n const res = await getImpact({\n baseUrl: this.baseUrl,\n headers: { authorization: `Api-Key ${this.apiKey}` },\n queryParams: {\n storeId: this.storeId,\n personalImpactLimit: 0,\n nonprofitId: this.nonprofitId,\n widgetName: WIDGET_NAMES.community_impact,\n version: \"1.0.0\",\n lang: this.configLang,\n transactionId: this.transactionId ?? undefined,\n },\n });\n return res;\n } catch (error) {\n if (this.debug) {\n console.error(\"Failed to fetch impact data\", error);\n }\n throw error;\n }\n }\n\n // Updates component state with fetched impact data\n private async updateImpactData() {\n try {\n const data = await this.fetchImpactData();\n if (data) {\n this.brandName = data.chain.name;\n this.shareImageUrl = data.promoAssetUrl || data.personalImpactAssetUrl || data.community[0].share.imageUrl;\n\n if (this.shareImageUrl) {\n const file = await urlToFile(this.shareImageUrl);\n this.file = file;\n this.dataUrl = URL.createObjectURL(file);\n }\n }\n } catch (error) {\n if (this.debug) {\n console.error(\"Error updating impact data:\", error);\n }\n }\n }\n\n async firstUpdated() {\n await this.updateImpactData();\n this.isMobile =\n /Mobi|Android/i.test(navigator.userAgent) || \"ontouchstart\" in window || navigator.maxTouchPoints > 0;\n }\n\n private async openSystemShareSheet(imageUrl: string) {\n if (!imageUrl) return;\n\n try {\n const file = await urlToFile(imageUrl);\n if (navigator.share && this.brandName) {\n await navigator.share({\n files: [file],\n title: strings[this.lang].impactShareTitle(),\n text: strings[this.lang].impactShareText({ brandName: this.brandName }),\n });\n }\n } catch (error) {\n if (this.debug) {\n console.error(\"Failed to open share sheet\", error);\n }\n }\n }\n\n private async handleClickCopy() {\n if (this.file) {\n try {\n if (this.apiKey && this.transactionId) {\n void postSocialShareAnalyticsEvent({\n baseUrl: this.baseUrl,\n apiKey: this.apiKey || \"\",\n requestBody: {\n eventName: \"ExtensibilityCopyImageButtonClick\",\n nonprofitId: this.nonprofitId,\n storeId: this.storeId,\n timestamp: Date.now(),\n transactionId: Number(this.transactionId),\n },\n }).catch(() => null);\n } else {\n console.error(\"Missing data for social share analytics. Skipping send\");\n }\n await navigator.clipboard.write([new ClipboardItem({ \"image/png\": this.file })]);\n } catch (error) {\n if (this.debug) {\n console.error(\"Failed to copy image to clipboard:\", error);\n }\n }\n }\n }\n\n private handleClickDownload(event: Event) {\n if (this.apiKey && this.transactionId) {\n void postSocialShareAnalyticsEvent({\n baseUrl: this.baseUrl,\n apiKey: this.apiKey || \"\",\n requestBody: {\n eventName: \"ExtensibilityDownloadImageButtonClick\",\n nonprofitId: this.nonprofitId,\n storeId: this.storeId,\n timestamp: Date.now(),\n transactionId: Number(this.transactionId),\n },\n }).catch(() => null);\n } else {\n console.error(\"Missing data for social share analytics. Skipping send\");\n }\n const target = event.currentTarget as HTMLAnchorElement;\n if (this.isMobile && this.shareImageUrl) {\n event.preventDefault();\n this.openSystemShareSheet(this.shareImageUrl);\n } else if (this.dataUrl) {\n target.href = this.dataUrl;\n target.download = strings[this.lang].impactShareTitle();\n }\n }\n\n render() {\n if (!this.brandName || !this.shareImageUrl || !this.dataUrl) {\n return _loading();\n }\n\n return html`\n <div class=\"share-container ${this.windowResized || this.isMobile ? \"mobile\" : \"desktop\"}\">\n <h2 class=\"share-title\">${strings[this.lang].impactShareTitle()}</h2>\n <p class=\"share-text\">${strings[this.lang].impactShareText({ brandName: this.brandName })}</p>\n <img\n data-speedsize-ignore=\"true\"\n src=\"${this.shareImageUrl}\"\n alt=\"${strings[this.lang].impactShareTitle()}\"\n class=\"share-image\"\n />\n <div class=\"share-actions\">\n <button class=\"plain-button button share-action-button\" @click=\"${this.handleClickCopy}\">\n <sl-icon\n library=\"lucide\"\n name=\"copy\"\n label=\"${strings[this.lang].impactShareCopy()}\"\n class=\"share-action-icon\"\n ></sl-icon>\n <div class=\"share-action-text\">${strings[this.lang].impactShareCopy()}</div>\n </button>\n <a\n class=\"plain-button button share-action-button plain-link\"\n download=\"${strings[this.lang].impactShareTitle()}\"\n href=\"${this.dataUrl}\"\n @click=\"${this.handleClickDownload}\"\n >\n <sl-icon\n library=\"lucide\"\n name=\"download\"\n label=\"${strings[this.lang].impactShareDownload()}\"\n class=\"share-action-icon\"\n ></sl-icon>\n <div class=\"share-action-text\">${strings[this.lang].impactShareDownload()}</div>\n </a>\n </div>\n </div>\n `;\n }\n\n static styles = [\n cssReset,\n css`\n @font-face {\n font-family: \"Mabry-Bold\";\n src: url(\"../../../assets/fonts/mabry-bold.otf\") format(\"opentype\");\n font-weight: bold;\n font-style: normal;\n }\n @font-face {\n font-family: \"Mabry-Medium\";\n src: url(\"../../../assets/fonts/mabry-medium.otf\") format(\"opentype\");\n font-weight: bold;\n font-style: normal;\n }\n :host {\n align-items: center;\n justify-content: center;\n display: flex;\n box-sizing: border-box;\n width: 100%;\n }\n\n .share-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n max-width: 700px;\n text-align: center;\n }\n\n .share-container.mobile {\n padding: 1rem;\n max-width: 100%;\n }\n\n .share-title {\n font-family: \"Mabry-Bold\", sans-serif;\n font-size: 2.5rem;\n font-weight: bold;\n word-break: break-word;\n margin: 10px 0;\n }\n\n .share-title.mobile {\n font-size: 1.5rem;\n }\n\n .share-text {\n font-family: \"Mabry-Medium\", sans-serif;\n font-size: 1.25rem;\n line-height: 1.4;\n word-break: break-word;\n margin: 10px 0;\n max-width: 500px;\n }\n\n .share-text.mobile {\n font-size: 1rem;\n }\n\n .share-image {\n border-radius: 8px;\n width: 100%;\n max-width: 300px;\n height: auto;\n display: block;\n margin: 20px auto;\n }\n\n .share-actions {\n display: flex;\n flex-direction: row;\n justify-content: center;\n gap: 10px;\n align-items: center;\n margin: 20px 0;\n }\n\n .share-actions.mobile {\n flex-direction: column;\n }\n\n .share-action-button {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 10px 20px;\n border: 1px solid #ccc;\n border-radius: 4px;\n background-color: #fff;\n text-decoration: none;\n color: #333;\n cursor: pointer;\n transition:\n background-color 0.3s,\n border-color 0.3s;\n }\n\n .share-action-button:hover {\n background-color: #f0f0f0;\n border-color: #bbb;\n }\n\n .share-action-icon {\n font-size: 1.25rem;\n margin-right: 8px;\n }\n\n .share-action-text {\n font-family: \"Mabry-Medium\", sans-serif;\n font-size: 1rem;\n line-height: 1.4;\n margin-top: 5px;\n }\n\n @media (max-width: 600px) {\n .share-title {\n font-size: 1.5rem;\n }\n\n .share-text {\n font-size: 1rem;\n }\n\n .share-image {\n max-width: 240px;\n }\n\n .share-actions {\n flex-direction: row;\n width: 50%;\n margin: 10px 0;\n }\n\n .share-action-button {\n width: 100%;\n margin: 5px 0;\n }\n }\n `,\n ];\n}\n\ndefineCustomElement(BeamSocialShare);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-social-share\": BeamSocialShare;\n }\n}\n"],"names":["m","i","o","t","e","r","d","BeamSocialShare","LitElement","DEFAULT_BASE_URL","SUPPORTED_LANGUAGES","enforceConfig","getImpact","WIDGET_NAMES","error","data","file","urlToFile","imageUrl","strings","postSocialShareAnalyticsEvent","event","target","_loading","html","cssReset","css","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import * as lit_html from 'lit-html';
2
+ import * as lit from 'lit';
3
+ import { LitElement, PropertyValues } from 'lit';
4
+ import { b as TNumericId, L as LANGUAGES } from '../chunks/utils-D8HO_RIu.esm.js';
5
+ import 'lodash-es/debounce';
6
+ import 'lodash-es/isEqual';
7
+
8
+ interface RequiredDataPropsWithEmail {
9
+ email: string;
10
+ apiKey: string;
11
+ subscriptionId: string;
12
+ }
13
+ interface RequiredDataPropsWithPartnerUserId {
14
+ partnerUserId: string;
15
+ apiKey: string;
16
+ subscriptionId: string;
17
+ }
18
+ declare class BeamSubscriberSelectNonprofit extends LitElement {
19
+ static tagName: string;
20
+ baseUrl: string;
21
+ apiKey: string;
22
+ subscriptionId: string;
23
+ storeId?: number;
24
+ email?: RequiredDataPropsWithEmail["email"];
25
+ partnerUserId?: RequiredDataPropsWithPartnerUserId["partnerUserId"];
26
+ postalCode?: string;
27
+ countryCode?: string;
28
+ selectedNonprofitId?: TNumericId;
29
+ preselectNonprofitAtIndex?: number;
30
+ lang: LANGUAGES;
31
+ debug: boolean;
32
+ draftConfig: boolean;
33
+ templateData: Record<string, any>;
34
+ private chain;
35
+ private subscriptionLookup;
36
+ get configLang(): LANGUAGES;
37
+ private getChainNonprofits;
38
+ private fetchSubscription;
39
+ private updateNonprofitForSubscription;
40
+ private nonprofitListDataController;
41
+ private subscriptionDataController;
42
+ private selectionDataController;
43
+ private getNonprofitById;
44
+ connectedCallback(): Promise<void>;
45
+ firstUpdated(): Promise<void>;
46
+ updated(changedProperties: PropertyValues): Promise<void>;
47
+ disconnectedCallback(): void;
48
+ private makeHandleSelect;
49
+ get cssVariables(): any;
50
+ static styles: lit.CSSResult[];
51
+ protected render(): "" | lit_html.TemplateResult<1>;
52
+ }
53
+ declare global {
54
+ interface HTMLElementTagNameMap {
55
+ "beam-subscriber-select-nonprofit": BeamSubscriberSelectNonprofit;
56
+ }
57
+ }
58
+
59
+ export { BeamSubscriberSelectNonprofit };
@@ -0,0 +1,137 @@
1
+ import{h as A,i as E,n as b,r as T,a as L,b as N,k as H,j as U}from"../chunks/lit-BEag9MFp.esm.js";import{e as P,u as h,D as B,j as z,W as D,k as _,l as W,m as K,A as C,S as O,f as g,h as R,_ as j,d as k}from"../chunks/index-DhHhFTBE.esm.js";import{c as F,d as q,e as w}from"../chunks/css-card-grid-BUidQqf0.esm.js";import{t as v,B as G}from"../chunks/utils-BjhsDvuU.esm.js";import{a as V}from"../chunks/share-button-7sI6zg-x.esm.js";import{c as J}from"../chunks/responsive-aN8P5PqD.esm.js";import{h as o,g as $}from"../chunks/handlebars-B_i-to-h.esm.js";import"../chunks/lodash-CrMU6wKg.esm.js";const M={long:"dddd, MMMM D, YYYY",short:"MMM D, YYYY",numeric:"MM/DD/YYYY",iso:"YYYY-MM-DD",time:"h:mm A",time24:"HH:mm",datetime:"MMMM D, YYYY h:mm A",month:"MMMM YYYY",monthShort:"MMM YYYY",dayMonth:"MMMM D"},x=(t,e)=>{const r=M[e??"long"]??e??M.long;return $(t).format(r)};o.registerHelper("currentDate",t=>x(new Date,typeof t=="string"?t:void 0)),o.registerHelper("nextMonth",t=>{const e=$().add(1,"month").toDate();return x(e,typeof t=="string"?t:void 0)}),o.registerHelper("dateOffset",(t,e,r)=>{const s=typeof e=="string"?e:void 0,i=(typeof e=="string"?r:e)?.hash?.from,n=i?new Date(i):new Date,p=$(n).add(t,"day").toDate();return s==="relative"?t===-1?"yesterday":t===0?"today":t===1?"tomorrow":t<0?`${Math.abs(t)} days ago`:`${t} days from now`:x(p,s)}),o.registerHelper("formatDate",(t,e)=>{const r=t instanceof Date?t:new Date(t);return isNaN(r.getTime())?"":x(r,typeof e=="string"?e:void 0)}),o.registerHelper("color",(t,e)=>{const r=o.escapeExpression(e),s=o.escapeExpression(t);return new o.SafeString(`<span style="color:${s}">${r}</span>`)}),o.registerHelper("br",()=>new o.SafeString("<br>")),o.registerHelper("bold",t=>{const e=o.escapeExpression(t);return new o.SafeString(`<strong>${e}</strong>`)}),o.registerHelper("italic",t=>{const e=o.escapeExpression(t);return new o.SafeString(`<em>${e}</em>`)}),o.registerHelper("underline",t=>{const e=o.escapeExpression(t);return new o.SafeString(`<span style="text-decoration:underline">${e}</span>`)}),o.registerHelper("strikethrough",t=>{const e=o.escapeExpression(t);return new o.SafeString(`<s>${e}</s>`)}),o.registerHelper("uppercase",t=>{const e=o.escapeExpression(t);return new o.SafeString(`<span style="text-transform:uppercase">${e}</span>`)}),o.registerHelper("lowercase",t=>{const e=o.escapeExpression(t);return new o.SafeString(`<span style="text-transform:lowercase">${e}</span>`)}),o.registerHelper("capitalize",t=>{const e=String(t??""),r=e.charAt(0).toUpperCase()+e.slice(1);return new o.SafeString(o.escapeExpression(r))}),o.registerHelper("style",(t,e)=>{const{bold:r,italic:s,underline:i,strikethrough:n,uppercase:p,lowercase:a,color:m,fontSize:f,fontFamily:y}=e.hash;let d=o.escapeExpression(t);r&&(d=`<strong>${d}</strong>`),s&&(d=`<em>${d}</em>`),n&&(d=`<s>${d}</s>`);const u=[];return i&&u.push("text-decoration:underline"),p&&u.push("text-transform:uppercase"),a&&u.push("text-transform:lowercase"),m&&u.push(`color:${o.escapeExpression(m)}`),f&&u.push(`font-size:${o.escapeExpression(f)}`),y&&u.push(`font-family:${o.escapeExpression(y)}`),u.length&&(d=`<span style="${u.join(";")}">${d}</span>`),new o.SafeString(d)});const Q="en",Y=(t,e={},r="")=>{const s=e.lang||Q,i=t||r,n=P(s,i)??i;return o.compile(n)(e)},S=(t,e={},r="")=>A(Y(t,e,r)),I={en:{beamAttribution:()=>"Powered by Beam",ctaTitle:()=>"Choose Your Impact",ctaMessage:({donationPercentage:t="1%"}={})=>`Choose a nonprofit and ${t} will be donated there for you,at no extra cost, with every order of your subscription.`},fr:{beamAttribution:()=>"Optimis\xE9 par Beam",ctaTitle:()=>"Choose Your Impact",ctaMessage:({donationPercentage:t="1%"}={})=>`Choose a nonprofit and ${t} will be donated there for you,at no extra cost, with every order of your subscription.`},de:{beamAttribution:()=>"Unterst\xFCtzt von Beam",ctaTitle:()=>"Choose Your Impact",ctaMessage:({donationPercentage:t="1%"}={})=>`Choose a nonprofit and ${t} will be donated there for you,at no extra cost, with every order of your subscription.`},es:{beamAttribution:()=>"Desarrollado por Beam",ctaTitle:()=>"Choose Your Impact",ctaMessage:({donationPercentage:t="1%"}={})=>`Choose a nonprofit and ${t} will be donated there for you,at no extra cost, with every order of your subscription.`},it:{beamAttribution:()=>"Offerto da Beam",ctaTitle:()=>"Choose Your Impact",ctaMessage:({donationPercentage:t="1%"}={})=>`Choose a nonprofit and ${t} will be donated there for you,at no extra cost, with every order of your subscription.`},pl:{beamAttribution:()=>"Wspierane przez Beam",ctaTitle:()=>"Choose Your Impact",ctaMessage:({donationPercentage:t="1%"}={})=>`Choose a nonprofit and ${t} will be donated there for you,at no extra cost, with every order of your subscription.`},ja:{beamAttribution:()=>"Powered by Beam",ctaTitle:()=>"Choose Your Impact",ctaMessage:({donationPercentage:t="1%"}={})=>`Choose a nonprofit and ${t} will be donated there for you,at no extra cost, with every order of your subscription.`}};var X=Object.defineProperty,c=(t,e,r,s)=>{for(var i=void 0,n=t.length-1,p;n>=0;n--)(p=t[n])&&(i=p(e,r,i)||i);return i&&X(e,r,i),i};class l extends L{constructor(){super(...arguments),this.baseUrl=B,this.lang="en",this.debug=!1,this.draftConfig=!1,this.templateData={},this.chain={},this.subscriptionLookup=Promise.resolve(),this.getChainNonprofits=async()=>{w(["apiKey","subscriptionId"],this);const e=await z({baseUrl:this.baseUrl,headers:v(this.apiKey),requestBody:{storeId:this.storeId,widgetName:D.subscriber_select_nonprofit,postalCode:this.postalCode,countryCode:this.countryCode,version:"1.0.0",lang:this.configLang,options:{config:{draftConfig:this.draftConfig}}}});if(e.store?.id&&e.store.id!==this.storeId&&(this.storeId=e.store.id),await this.subscriptionLookup,this.selectedNonprofitId!=null&&!e.nonprofits.map(r=>r.nonprofit.id).includes(this.selectedNonprofitId)&&(this.selectedNonprofitId=void 0),this.selectedNonprofitId==null&&this.preselectNonprofitAtIndex!=null){const r=e.nonprofits[this.preselectNonprofitAtIndex-1];r&&(this.selectedNonprofitId=r.nonprofit.id,await this.selectionDataController.exec({selectedNonprofitId:r.nonprofit.id}))}return this.chain={...e?.chain},e},this.fetchSubscription=async()=>{w(["apiKey","subscriptionId"],this);const e=await _({baseUrl:this.baseUrl,headers:v(this.apiKey),requestBody:{remoteSubscriptionId:this.subscriptionId,email:this.email,partnerUserId:this.partnerUserId}});return e.nonprofit?.id&&this.selectedNonprofitId===void 0&&(this.selectedNonprofitId=e.nonprofit.id),e},this.updateNonprofitForSubscription=async({selectedNonprofitId:e})=>{w(["apiKey","subscriptionId"],this);const r=await W({baseUrl:this.baseUrl,headers:v(this.apiKey),requestBody:{remoteSubscriptionId:this.subscriptionId,nonprofitId:e,selectionMethod:K.subscriber_select_nonprofit_widget}});await this.updateComplete;const s=this.getNonprofitById(e);return this.dispatchEvent(new G({selectedNonprofitId:e,nonprofitName:s?.nonprofit?.name??null,source:D.subscriber_select_nonprofit,timestamp:new Date})),r},this.nonprofitListDataController=new C(this,this.getChainNonprofits),this.subscriptionDataController=new C(this,this.fetchSubscription),this.selectionDataController=new C(this,this.updateNonprofitForSubscription),this.makeHandleSelect=(e,r,s)=>async i=>{const n=this.selectedNonprofitId;if(i instanceof KeyboardEvent){let p=null;switch(i.key){case"ArrowUp":case"ArrowLeft":p=r===0?s[s.length-1]:s[r-1],i.preventDefault();break;case"ArrowRight":case"ArrowDown":p=r===s.length-1?s[0]:s[r+1],i.preventDefault();break;case"Enter":case" ":i.preventDefault();break;default:return}if(p){n!=null&&(this.selectedNonprofitId=p.nonprofit.id);const a=this.renderRoot.querySelector(`[data-value="${p.nonprofit.id}"]`);a!==null&&(a.tabIndex=0,a.focus());return}}!(i.currentTarget instanceof HTMLElement)||n===e||(this.selectedNonprofitId=e,await this.selectionDataController.exec({selectedNonprofitId:e}))}}get configLang(){return O[this.lang]||"en"}getNonprofitById(e){return e?this.nonprofitListDataController?.data?.nonprofits.find(r=>r.nonprofit.id===e):null}async connectedCallback(){super.connectedCallback(),this.nonprofitListDataController.loading=!0}async firstUpdated(){!this.apiKey||!this.email&&!this.partnerUserId||(this.subscriptionLookup=this.subscriptionDataController.exec(),await this.subscriptionLookup)}async updated(e){const r=["baseUrl","storeId","apiKey","countryCode","postalCode","lang"];for(const s of r)if(e.has(s)){await this.nonprofitListDataController.exec();break}}disconnectedCallback(){super.disconnectedCallback()}get cssVariables(){const e={"--beam-fontFamily":"inherit","--beam-fontStyle":"inherit","--beam-fontSize":"inherit","--beam-textColor":"inherit","--beam-backgroundColor":"inherit",...V,"--beam-SubscriberSelectNonprofit-title-textAlign":"inherit","--beam-SubscriberSelectNonprofit-description-textAlign":"inherit","--beam-SubscriberSelectNonprofit-maxWidth":"800px","--beam-SubscriberSelectNonprofit-options-marginTop":"0px","--beam-SubscriberSelectNonprofit-options-iconHeight":"20px","--beam-SubscriberSelectNonprofit-options-padding":"6px 4px","--beam-SubscriberSelectNonprofit-options-borderRadius":"4px","--beam-SubscriberSelectNonprofit-options-borderColor":"currentColor","--beam-SubscriberSelectNonprofit-options-borderWidth":"1px","--beam-SubscriberSelectNonprofit-options--selected-borderColor":"currentColor","--beam-SubscriberSelectNonprofit-options-backgroundColor":"transparent","--beam-SubscriberSelectNonprofit-options-gap":"8px","--beam-SubscriberSelectNonprofit-options-margin":"14px 0 0 0","--beam-SubscriberSelectNonprofit-width":"100%","--beam-SubscriberSelectNonprofit-options--selected-backgroundColor":"currentColor","--beam-SubscriberSelectNonprofit-details-marginTop":"6px","--beam-SubscriberSelectNonprofit-details-borderRadius":"4px","--beam-SubscriberSelectNonprofit-details-borderWidth":"1px","--beam-SubscriberSelectNonprofit-details-borderColor":"currentColor","--beam-SubscriberSelectNonprofit-details-backgroundColor":"inherit","--beam-SubscriberSelectNonprofit-details-padding":"10px",...g("--beam-SubscriberSelectNonprofit-title",{fontSize:"1em",fontWeight:"bold"}),...g("--beam-SubscriberSelectNonprofit-description",{marginTop:"1em",fontSize:".85em"}),"--beam-SubscriberSelectNonprofit-title-block-margin-right":"8px",...g("--beam-SubscriberSelectNonprofit-details-cause",{fontSize:"0.85em",fontWeight:"bold",textTransform:"uppercase"}),...g("--beam-SubscriberSelectNonprofit-details-beamAttribution",{fontSize:"0.85em"}),...g("--beam-SubscriberSelectNonprofit-details-impactDescription",{fontSize:".85em",marginTop:"10px",lineHeight:"normal"}),"--beam-SubscriberSelectNonprofit-details-nonprofitName-fontWeight":"bold","--beam-SubscriberSelectNonprofit-details-nonprofitName-fontStyle":"inherit","--beam-SubscriberSelectNonprofit-details-fundingProgress-marginTop":"10px",...g("--beam-SubscriberSelectNonprofit-details-fundingProgressLabel",{fontSize:"0.85em"})},r=this.nonprofitListDataController?.data?.config?.web?.theme||{},s={...e,...r};return Object.assign(Object.create({toCSS(){return R(this)}}),s)}render(){if(!this.apiKey||!this.email&&!this.partnerUserId)return N``;const{selectedNonprofitId:e}=this,{data:r,loading:s}=this.nonprofitListDataController;if(s&&!r)return j();if(this.nonprofitListDataController.error)return this.debug?k({error:this.nonprofitListDataController.error}):"";if(this.selectionDataController.error&&this.debug)return k({error:this.selectionDataController.error});const i=r?.nonprofits||[],n=i.find(a=>a.nonprofit.id===e)||null,p={custom:{...this.templateData},chain:{...this.chain},selectedNonprofit:{...n?.nonprofit},lang:this.configLang};return N`
2
+ <style>
3
+ :host {
4
+ ${this.cssVariables.toCSS()}
5
+ }
6
+ </style>
7
+ <div part="heading">
8
+ <h3 class="title-block" part="title" id="beam-SubscriberSelectNonprofit-title">
9
+ ${S(r?.config?.web?.title||"",p,I[this.configLang].ctaTitle())}
10
+ </h3>
11
+ <p class="description" part="description">
12
+ ${S(r?.config?.web?.description||"",p,I[this.configLang].ctaMessage())}
13
+ </p>
14
+ </div>
15
+ <div
16
+ class="options"
17
+ part="options"
18
+ role="radiogroup"
19
+ aria-labelledby="beam-SubscriberSelectNonprofit-title"
20
+ style="display: flex; gap: var(--beam-SubscriberSelectNonprofit-options-gap); margin: var(--beam-SubscriberSelectNonprofit-options-margin, 12px 0 0 0);"
21
+ >
22
+ ${H(i,a=>a.nonprofit.id,({nonprofit:a},m)=>{const f=e===a.id,y=f||n==null&&m===0,d={...p,nonprofit:a};return N`
23
+ <div
24
+ class="option"
25
+ part="option"
26
+ role="radio"
27
+ tabindex="${y?0:-1}"
28
+ data-value=${a.id}
29
+ aria-checked=${f}
30
+ @click=${this.makeHandleSelect(a.id,m,i)}
31
+ @keydown=${this.makeHandleSelect(a.id,m,i)}
32
+ aria-label="${Y(a.cause||"",d)}"
33
+ style="${U({cursor:"pointer",flex:"1",textAlign:"center",lineHeight:"1",marginTop:"var(--beam-SubscriberSelectNonprofit-options-marginTop, 0px)",padding:"var(--beam-SubscriberSelectNonprofit-options-padding, 6px 4px)",borderStyle:"solid",position:"relative",borderRadius:"var(--beam-SubscriberSelectNonprofit-options-borderRadius, 4px)",borderColor:f?a.causeColor||"var(--beam-SubscriberSelectNonprofit-options--selected-borderColor, currentColor)":"var(--beam-SubscriberSelectNonprofit-options-borderColor, currentColor)",borderWidth:"var(--beam-SubscriberSelectNonprofit-options-borderWidth, 1px)",backgroundColor:f?a.causeColor||"var(--beam-SubscriberSelectNonprofit-options--selected-backgroundColor, currentColor)":"var(--beam-SubscriberSelectNonprofit-options-backgroundColor, transparent)"})}"
34
+ >
35
+ <img
36
+ src="${f?a.causeIconSelectedUrl:a.causeIconUrl}"
37
+ alt=""
38
+ role="presentation"
39
+ data-speedsize-ignore="true"
40
+ style="
41
+ height: var(--beam-SubscriberSelectNonprofit-options-iconHeight, 24px);
42
+ user-select: none;
43
+ vertical-align: -webkit-baseline-middle;
44
+ "
45
+ />
46
+ </div>
47
+ `})}
48
+ </div>
49
+ ${n!=null?N`
50
+ <div
51
+ class="details"
52
+ part="details"
53
+ style="
54
+ border: var(--beam-SubscriberSelectNonprofit-details-borderWidth) solid var(--beam-SubscriberSelectNonprofit-details-borderColor);
55
+ border-radius: var(--beam-SubscriberSelectNonprofit-details-borderRadius);
56
+ background-color: var(--beam-SubscriberSelectNonprofit-details-backgroundColor);
57
+ padding: var(--beam-SubscriberSelectNonprofit-details-padding);
58
+ margin-top: var(--beam-SubscriberSelectNonprofit-details-marginTop);
59
+ "
60
+ aria-label="Funding information for selected nonprofit ${n.nonprofit?.name}. Powered by Beam"
61
+ >
62
+ <div style="display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap-reverse">
63
+ <span
64
+ class="details-cause"
65
+ style="flex: 0 1; white-space: nowrap; ${h("--beam-SubscriberSelectNonprofit-details-cause")}"
66
+ >
67
+ ${S(n.nonprofit.cause||"",p)}
68
+ </span>
69
+ <div aria-hidden="true">
70
+ <span
71
+ class="details-beamAttribution"
72
+ aria-hidden="true"
73
+ style="flex: 0 1; white-space: nowrap; ${h("--beam-SubscriberSelectNonprofit-details-beamAttribution")}"
74
+ >
75
+ ${I[this.configLang].beamAttribution()}
76
+ </span>
77
+ </div>
78
+ </div>
79
+ <p class="details-impactDescription">
80
+ ${S(n.impact.description||"",p)}
81
+ </p>
82
+ <div
83
+ style="display: flex; margin-top: var(--beam-SubscriberSelectNonprofit-details-fundingProgress-marginTop); align-items: center;"
84
+ >
85
+ <beam-progress-bar
86
+ value="${n.impact.goalProgressPercentage}"
87
+ style="flex: 1 0;"
88
+ ></beam-progress-bar>
89
+ <span
90
+ class="details-fundingProgressLabel"
91
+ style="${h("--beam-SubscriberSelectNonprofit-details-fundingProgressLabel")} white-space: nowrap; text-align: right; flex: 0 1; margin-left: 15px;"
92
+ >
93
+ ${S(n.impact.goalProgressText,p)}
94
+ </span>
95
+ </div>
96
+ </div>
97
+ `:""}
98
+ `}}l.tagName="beam-subscriber-select-nonprofit",l.styles=[F,J,E`
99
+ :host {
100
+ display: block;
101
+ width: var(--beam-SubscriberSelectNonprofit-width, 100%);
102
+ max-width: var(--beam-SubscriberSelectNonprofit-maxWidth, 800px);
103
+ font-family: var(--beam-fontFamily);
104
+ font-style: var(--beam-fontStyle);
105
+ font-size: var(--beam-fontSize);
106
+ background-color: var(--beam-backgroundColor);
107
+ color: var(--beam-textColor);
108
+ word-break: normal;
109
+ }
110
+
111
+ .details-impactDescription {
112
+ ${h("--beam-SubscriberSelectNonprofit-details-impactDescription")}
113
+ }
114
+
115
+ .details-impactDescription .nonprofitName {
116
+ font-weight: var(--beam-SubscriberSelectNonprofit-details-nonprofitName-fontWeight);
117
+ font-style: var(--beam-SubscriberSelectNonprofit-details-nonprofitName-fontStyle, inherit);
118
+ }
119
+
120
+ .title-block {
121
+ margin-right: var(--beam-SubscriberSelectNonprofit-title-block-margin-right);
122
+ ${h("--beam-SubscriberSelectNonprofit-title")}
123
+ text-align: var(--beam-SubscriberSelectNonprofit-title-textAlign);
124
+ }
125
+
126
+ .description {
127
+ ${h("--beam-SubscriberSelectNonprofit-description")}
128
+ text-align: var(--beam-SubscriberSelectNonprofit-description-textAlign);
129
+ }
130
+
131
+ .option {
132
+ display: flex;
133
+ justify-content: center;
134
+ align-items: center;
135
+ }
136
+ `],c([b({type:String})],l.prototype,"baseUrl"),c([b({type:String})],l.prototype,"apiKey"),c([b({type:String})],l.prototype,"subscriptionId"),c([b({type:Number,reflect:!0})],l.prototype,"storeId"),c([b({type:String})],l.prototype,"email"),c([b({type:String})],l.prototype,"partnerUserId"),c([b({type:String})],l.prototype,"postalCode"),c([b({type:String})],l.prototype,"countryCode"),c([b({type:Number,reflect:!0})],l.prototype,"selectedNonprofitId"),c([b({type:Number})],l.prototype,"preselectNonprofitAtIndex"),c([b({type:String})],l.prototype,"lang"),c([b({type:Boolean})],l.prototype,"debug"),c([b({type:Boolean})],l.prototype,"draftConfig"),c([b({type:Object})],l.prototype,"templateData"),c([T()],l.prototype,"chain"),q(l);export{l as BeamSubscriberSelectNonprofit};
137
+ //# sourceMappingURL=subscriber-select-nonprofit.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriber-select-nonprofit.esm.js","sources":["../../src/shared/handlebars-helpers.ts","../../src/shared/fragments/user-strings.ts","../../src/components/subscriber-select-nonprofit/strings.ts","../../src/components/subscriber-select-nonprofit/index.ts"],"sourcesContent":["import * as Handlebars from \"handlebars\";\nimport dayjs from \"dayjs\";\n\n// ── Date helpers ────────────────────────────────────────────────────────────\n\n// Named presets so callers don't need to remember dayjs tokens\nconst PRESETS: Record<string, string> = {\n long: \"dddd, MMMM D, YYYY\", // Sunday, June 15, 2026\n short: \"MMM D, YYYY\", // Jun 15, 2026\n numeric: \"MM/DD/YYYY\", // 06/15/2026\n iso: \"YYYY-MM-DD\", // 2026-06-15\n time: \"h:mm A\", // 3:45 PM\n time24: \"HH:mm\", // 15:45\n datetime: \"MMMM D, YYYY h:mm A\", // June 15, 2026 3:45 PM\n month: \"MMMM YYYY\", // June 2026\n monthShort: \"MMM YYYY\", // Jun 2026\n dayMonth: \"MMMM D\", // June 15\n};\n\nconst formatDate = (date: Date, fmt?: string): string => {\n const resolved = PRESETS[fmt ?? \"long\"] ?? fmt ?? PRESETS.long;\n return dayjs(date).format(resolved);\n};\n\n/**\n * Accepts named presets or any dayjs format string.\n *\n * Presets: long · short · numeric · iso · time · time24 · datetime · month · monthShort · dayMonth\n * Tokens: any dayjs format string, e.g. \"Do [of] MMMM\" → \"15th of June\"\n *\n * {{currentDate}} → \"Sunday, June 15, 2026\"\n * {{currentDate \"short\"}} → \"Jun 15, 2026\"\n * {{currentDate \"iso\"}} → \"2026-06-15\"\n * {{currentDate \"time\"}} → \"3:45 PM\"\n * {{currentDate \"Do [of] MMMM\"}} → \"15th of June\"\n */\nHandlebars.registerHelper(\"currentDate\", (format?: string) => {\n return formatDate(new Date(), typeof format === \"string\" ? format : undefined);\n});\n\n/**\n * {{nextMonth}} → \"Wednesday, July 15, 2026\"\n * {{nextMonth \"short\"}} → \"Jul 15, 2026\"\n * {{nextMonth \"iso\"}} → \"2026-07-15\"\n * {{nextMonth \"month\"}} → \"July 2026\"\n *\n * Advances by one calendar month, clamping to the last day of the target month\n * (e.g. Jan 31 → Feb 28).\n */\nHandlebars.registerHelper(\"nextMonth\", (format?: string) => {\n // dayjs clamps month-end naturally (e.g. Jan 31 → Feb 28)\n const target = dayjs().add(1, \"month\").toDate();\n return formatDate(target, typeof format === \"string\" ? format : undefined);\n});\n\n/**\n * {{dateOffset -1}} → \"Saturday, June 14, 2026\"\n * {{dateOffset 1}} → \"Monday, June 16, 2026\"\n * {{dateOffset -1 \"relative\"}} → \"yesterday\"\n * {{dateOffset 0 \"relative\"}} → \"today\"\n * {{dateOffset 1 \"relative\"}} → \"tomorrow\"\n * {{dateOffset -7 \"relative\"}} → \"7 days ago\"\n * {{dateOffset 7 \"relative\"}} → \"7 days from now\"\n * {{dateOffset 7 \"short\"}} → \"Jun 22, 2026\"\n * {{dateOffset 7 \"Do [of] MMMM\"}} → \"22nd of June\"\n * {{dateOffset -30 \"iso\"}} → \"2026-05-16\"\n * {{dateOffset 7 from=orderDate}} → \"Sunday, June 22, 2026\" (7 days after orderDate)\n * {{dateOffset 7 \"short\" from=orderDate}} → \"Jun 22, 2026\" (7 days after orderDate)\n *\n * `from` accepts a Date object, ISO string, or timestamp number.\n */\nHandlebars.registerHelper(\n \"dateOffset\",\n (days: number, format?: string | Handlebars.HelperOptions, options?: Handlebars.HelperOptions) => {\n const fmt = typeof format === \"string\" ? format : undefined;\n const opts = typeof format === \"string\" ? options : (format as Handlebars.HelperOptions);\n const fromVal = opts?.hash?.from;\n const baseDate = fromVal ? new Date(fromVal as string | number) : new Date();\n const d = dayjs(baseDate).add(days, \"day\").toDate();\n\n if (fmt === \"relative\") {\n if (days === -1) return \"yesterday\";\n if (days === 0) return \"today\";\n if (days === 1) return \"tomorrow\";\n return days < 0 ? `${Math.abs(days)} days ago` : `${days} days from now`;\n }\n\n return formatDate(d, fmt);\n },\n);\n\n/**\n * Format a date value from context using any preset or date-fns format string.\n * Accepts a Date object, ISO string, or timestamp number.\n *\n * {{formatDate orderDate \"short\"}} → \"Jun 15, 2026\"\n * {{formatDate orderDate \"iso\"}} → \"2026-06-15\"\n * {{formatDate orderDate \"Do [of] MMMM\"}} → \"15th of June\"\n * {{formatDate orderDate}} → \"Sunday, June 15, 2026\"\n */\nHandlebars.registerHelper(\"formatDate\", (value: unknown, format?: string) => {\n const date = value instanceof Date ? value : new Date(value as string | number);\n if (isNaN(date.getTime())) return \"\";\n return formatDate(date, typeof format === \"string\" ? format : undefined);\n});\n\n// ── Color helper ─────────────────────────────────────────────────────────────\n\n/**\n * {{color \"red\" \"Sale ends today!\"}}\n * {{color \"#ff6600\" someVar}}\n *\n * Accepts any valid CSS color value (named color, hex, rgb(), hsl(), etc.).\n */\nHandlebars.registerHelper(\"color\", (colorValue: string, text: unknown) => {\n const escaped = Handlebars.escapeExpression(text as any);\n const safeColor = Handlebars.escapeExpression(colorValue);\n return new Handlebars.SafeString(`<span style=\"color:${safeColor}\">${escaped}</span>`);\n});\n\n// ── Layout helpers ───────────────────────────────────────────────────────────\n\n/** {{br}} → inserts a line break */\nHandlebars.registerHelper(\"br\", () => new Handlebars.SafeString(\"<br>\"));\n\n// ── Font-style helpers ────────────────────────────────────────────────────────\n\n/** {{bold \"Important!\"}} */\nHandlebars.registerHelper(\"bold\", (text: unknown) => {\n const escaped = Handlebars.escapeExpression(text as any);\n return new Handlebars.SafeString(`<strong>${escaped}</strong>`);\n});\n\n/** {{italic \"Note:\"}} */\nHandlebars.registerHelper(\"italic\", (text: unknown) => {\n const escaped = Handlebars.escapeExpression(text as any);\n return new Handlebars.SafeString(`<em>${escaped}</em>`);\n});\n\n/** {{underline \"Click here\"}} */\nHandlebars.registerHelper(\"underline\", (text: unknown) => {\n const escaped = Handlebars.escapeExpression(text as any);\n return new Handlebars.SafeString(`<span style=\"text-decoration:underline\">${escaped}</span>`);\n});\n\n/** {{strikethrough \"Was $99\"}} */\nHandlebars.registerHelper(\"strikethrough\", (text: unknown) => {\n const escaped = Handlebars.escapeExpression(text as any);\n return new Handlebars.SafeString(`<s>${escaped}</s>`);\n});\n\n/** {{uppercase \"hello\"}} → renders as \"HELLO\" via CSS so the source text is preserved */\nHandlebars.registerHelper(\"uppercase\", (text: unknown) => {\n const escaped = Handlebars.escapeExpression(text as any);\n return new Handlebars.SafeString(`<span style=\"text-transform:uppercase\">${escaped}</span>`);\n});\n\n/** {{lowercase \"HELLO\"}} */\nHandlebars.registerHelper(\"lowercase\", (text: unknown) => {\n const escaped = Handlebars.escapeExpression(text as any);\n return new Handlebars.SafeString(`<span style=\"text-transform:lowercase\">${escaped}</span>`);\n});\n\n/**\n * {{capitalize \"hello world\"}} → \"Hello world\" (first letter only — use uppercase for ALL CAPS)\n * Note: CSS text-transform:capitalize uppercases every word; this helper only touches the first character.\n */\nHandlebars.registerHelper(\"capitalize\", (text: unknown) => {\n const str = String(text ?? \"\");\n const capitalized = str.charAt(0).toUpperCase() + str.slice(1);\n return new Handlebars.SafeString(Handlebars.escapeExpression(capitalized));\n});\n\n/**\n * Combine multiple styles at once.\n *\n * {{style text bold=true italic=true color=\"#333\" underline=true strikethrough=false fontSize=\"16px\" fontFamily=\"Georgia, serif\"}}\n */\nHandlebars.registerHelper(\n \"style\",\n (\n text: unknown,\n options: Handlebars.HelperOptions & {\n hash: {\n bold?: boolean;\n italic?: boolean;\n underline?: boolean;\n strikethrough?: boolean;\n uppercase?: boolean;\n lowercase?: boolean;\n color?: string;\n fontSize?: string;\n fontFamily?: string;\n };\n },\n ) => {\n const { bold, italic, underline, strikethrough, uppercase, lowercase, color, fontSize, fontFamily } = options.hash;\n\n let content = Handlebars.escapeExpression(text as any);\n\n if (bold) content = `<strong>${content}</strong>`;\n if (italic) content = `<em>${content}</em>`;\n if (strikethrough) content = `<s>${content}</s>`;\n\n const cssProps: string[] = [];\n if (underline) cssProps.push(\"text-decoration:underline\");\n if (uppercase) cssProps.push(\"text-transform:uppercase\");\n if (lowercase) cssProps.push(\"text-transform:lowercase\");\n if (color) cssProps.push(`color:${Handlebars.escapeExpression(color)}`);\n if (fontSize) cssProps.push(`font-size:${Handlebars.escapeExpression(fontSize)}`);\n if (fontFamily) cssProps.push(`font-family:${Handlebars.escapeExpression(fontFamily)}`);\n\n if (cssProps.length) {\n content = `<span style=\"${cssProps.join(\";\")}\">${content}</span>`;\n }\n\n return new Handlebars.SafeString(content);\n },\n);\n\nexport { Handlebars };\n","import { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport { Handlebars } from \"../handlebars-helpers\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { localizeUserString } from \"../localize\";\n\nconst DEFAULT_LANGUAGE_CODE = \"en\";\n\n/**\n * Compile a string through Handlebars and return the raw HTML string.\n * If `context.lang` is set, the string is first passed through localizeUserString\n * so JSON-encoded multilingual strings ({\"en\":\"...\",\"fr\":\"...\"}) are resolved\n * before Handlebars processes them — no call to localizeUserString needed at call sites.\n */\nconst compileUserString = (str: string, context: Record<string, unknown> = {}, fallback = \"\"): string => {\n const lang = (context.lang || DEFAULT_LANGUAGE_CODE) as LANGUAGES;\n const source = str || fallback;\n const localized = localizeUserString(lang, source) ?? source;\n return Handlebars.compile(localized)(context);\n};\n\n/**\n * Compile a string through Handlebars and return a Lit TemplateResult safe for rendering HTML.\n * Equivalent to unsafeHTML(compileUserString(str, context, fallback)).\n */\nconst renderUserString = (str: string, context: Record<string, unknown> = {}, fallback = \"\") =>\n unsafeHTML(compileUserString(str, context, fallback));\n\nexport { compileUserString, renderUserString };\n","export const strings = {\n en: {\n beamAttribution: () => `Powered by Beam`,\n ctaTitle: () => `Choose Your Impact`,\n ctaMessage: ({ donationPercentage = \"1%\" } = {}) =>\n `Choose a nonprofit and ${donationPercentage} will be donated there for you,at no extra cost, with every order of your subscription.`,\n },\n fr: {\n beamAttribution: () => `Optimisé par Beam`,\n ctaTitle: () => `Choose Your Impact`,\n ctaMessage: ({ donationPercentage = \"1%\" } = {}) =>\n `Choose a nonprofit and ${donationPercentage} will be donated there for you,at no extra cost, with every order of your subscription.`,\n },\n de: {\n beamAttribution: () => `Unterstützt von Beam`,\n ctaTitle: () => `Choose Your Impact`,\n ctaMessage: ({ donationPercentage = \"1%\" } = {}) =>\n `Choose a nonprofit and ${donationPercentage} will be donated there for you,at no extra cost, with every order of your subscription.`,\n },\n es: {\n beamAttribution: () => `Desarrollado por Beam`,\n ctaTitle: () => `Choose Your Impact`,\n ctaMessage: ({ donationPercentage = \"1%\" } = {}) =>\n `Choose a nonprofit and ${donationPercentage} will be donated there for you,at no extra cost, with every order of your subscription.`,\n },\n it: {\n beamAttribution: () => `Offerto da Beam`,\n ctaTitle: () => `Choose Your Impact`,\n ctaMessage: ({ donationPercentage = \"1%\" } = {}) =>\n `Choose a nonprofit and ${donationPercentage} will be donated there for you,at no extra cost, with every order of your subscription.`,\n },\n pl: {\n beamAttribution: () => `Wspierane przez Beam`,\n ctaTitle: () => `Choose Your Impact`,\n ctaMessage: ({ donationPercentage = \"1%\" } = {}) =>\n `Choose a nonprofit and ${donationPercentage} will be donated there for you,at no extra cost, with every order of your subscription.`,\n },\n ja: {\n beamAttribution: () => `Powered by Beam`,\n ctaTitle: () => `Choose Your Impact`,\n ctaMessage: ({ donationPercentage = \"1%\" } = {}) =>\n `Choose a nonprofit and ${donationPercentage} will be donated there for you,at no extra cost, with every order of your subscription.`,\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 { styleMap } from \"lit/directives/style-map.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { DEFAULT_BASE_URL, SELECTION_METHODS, 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 } from \"../../shared/enforce-config\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { TNumericId } from \"../../shared/types\";\nimport {\n postChainEligibleNonprofitsForCart,\n postFindOrCreateSubscription,\n updateSubscription,\n} from \"../../api-sdk/v3/routes\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { BeamNonprofitSelectEvent } from \"../../utils/events\";\nimport { progressBarConfigDefaults } from \"../../shared/components/progress-bar\";\nimport { cssResponsiveUtils } from \"../../shared/responsive\";\nimport { makeApiKeyHeader } from \"../../utils/makeApiKeyHeader\";\nimport { compileUserString, renderUserString } from \"../../shared/fragments/user-strings\";\nimport { strings } from \"./strings\";\n\ninterface RequiredDataPropsWithEmail {\n email: string;\n apiKey: string;\n subscriptionId: string;\n}\n\ninterface RequiredDataPropsWithPartnerUserId {\n partnerUserId: string;\n apiKey: string;\n subscriptionId: string;\n}\n\ninterface RequiredConfig {\n apiKey: string;\n subscriptionId: string;\n}\n\nexport class BeamSubscriberSelectNonprofit extends LitElement {\n static tagName = \"beam-subscriber-select-nonprofit\";\n\n @property({ type: String }) public baseUrl: string = DEFAULT_BASE_URL;\n @property({ type: String }) public apiKey!: string;\n @property({ type: String }) public subscriptionId!: string;\n @property({ type: Number, reflect: true }) public storeId?: number;\n @property({ type: String }) public email?: RequiredDataPropsWithEmail[\"email\"];\n @property({ type: String }) public partnerUserId?: RequiredDataPropsWithPartnerUserId[\"partnerUserId\"];\n @property({ type: String }) public postalCode?: string;\n @property({ type: String }) public countryCode?: string;\n @property({ type: Number, reflect: true }) public selectedNonprofitId?: TNumericId;\n @property({ type: Number }) public preselectNonprofitAtIndex?: number;\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n @property({ type: Boolean }) public debug = false;\n @property({ type: Boolean }) public draftConfig = false;\n @property({ type: Object }) public templateData: Record<string, any> = {};\n @state() private chain: Record<string, any> = {};\n\n // Resolves once the subscription find/create lookup (if any) has settled, so nonprofit\n // list handling can tell whether the subscriber already has a saved selection\n private subscriptionLookup: Promise<unknown> = Promise.resolve();\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n private getChainNonprofits = async () => {\n if (!enforceConfig<RequiredConfig>([\"apiKey\", \"subscriptionId\"], this)) {\n throw new MissingConfig();\n }\n\n const res = await postChainEligibleNonprofitsForCart({\n baseUrl: this.baseUrl,\n headers: makeApiKeyHeader(this.apiKey),\n requestBody: {\n storeId: this.storeId,\n widgetName: WIDGET_NAMES.subscriber_select_nonprofit,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n version: \"1.0.0\",\n lang: this.configLang,\n options: {\n config: {\n draftConfig: this.draftConfig,\n },\n },\n },\n });\n\n if (res.store?.id && res.store.id !== this.storeId) {\n this.storeId = res.store.id;\n }\n\n // Wait for the subscription to be found/created (if applicable) so we know whether\n // it already has a saved nonprofit selection before we clear or preselect one\n await this.subscriptionLookup;\n\n // Clear selection if the saved nonprofit is no longer in the eligible list\n if (\n this.selectedNonprofitId != null &&\n !res.nonprofits.map((np) => np.nonprofit.id).includes(this.selectedNonprofitId)\n ) {\n this.selectedNonprofitId = undefined;\n }\n\n // Auto-select the nonprofit at the given 1-based position if there is no existing selection\n if (this.selectedNonprofitId == null && this.preselectNonprofitAtIndex != null) {\n const preselectedNonprofit = res.nonprofits[this.preselectNonprofitAtIndex - 1];\n if (preselectedNonprofit) {\n this.selectedNonprofitId = preselectedNonprofit.nonprofit.id;\n await this.selectionDataController.exec({ selectedNonprofitId: preselectedNonprofit.nonprofit.id });\n }\n }\n\n this.chain = { ...res?.chain };\n\n return res;\n };\n\n private fetchSubscription = async () => {\n if (!enforceConfig<RequiredConfig>([\"apiKey\", \"subscriptionId\"], this)) {\n throw new MissingConfig();\n }\n\n const result = await postFindOrCreateSubscription({\n baseUrl: this.baseUrl,\n headers: makeApiKeyHeader(this.apiKey),\n requestBody: {\n remoteSubscriptionId: this.subscriptionId,\n email: this.email,\n partnerUserId: this.partnerUserId,\n },\n });\n\n // Pre-populate selection from the subscription record if not already set\n if (result.nonprofit?.id && this.selectedNonprofitId === undefined) {\n this.selectedNonprofitId = result.nonprofit.id;\n }\n\n return result;\n };\n\n private updateNonprofitForSubscription = async ({ selectedNonprofitId }: { selectedNonprofitId: TNumericId }) => {\n if (!enforceConfig<RequiredConfig>([\"apiKey\", \"subscriptionId\"], this)) {\n throw new MissingConfig();\n }\n\n const result = await updateSubscription({\n baseUrl: this.baseUrl,\n headers: makeApiKeyHeader(this.apiKey),\n requestBody: {\n remoteSubscriptionId: this.subscriptionId,\n nonprofitId: selectedNonprofitId,\n selectionMethod: SELECTION_METHODS.subscriber_select_nonprofit_widget,\n },\n });\n\n await this.updateComplete;\n\n const selectedNonprofit = this.getNonprofitById(selectedNonprofitId);\n\n this.dispatchEvent(\n new BeamNonprofitSelectEvent({\n selectedNonprofitId,\n nonprofitName: selectedNonprofit?.nonprofit?.name ?? null,\n source: WIDGET_NAMES.subscriber_select_nonprofit,\n timestamp: new Date(),\n }),\n );\n\n return result;\n };\n\n private nonprofitListDataController = new AsyncController<typeof this.getChainNonprofits>(\n this,\n this.getChainNonprofits,\n );\n\n private subscriptionDataController = new AsyncController<typeof this.fetchSubscription>(this, this.fetchSubscription);\n\n private selectionDataController = new AsyncController<typeof this.updateNonprofitForSubscription>(\n this,\n this.updateNonprofitForSubscription,\n );\n\n private getNonprofitById(id: number | null) {\n if (!id) return null;\n return this.nonprofitListDataController?.data?.nonprofits.find((np) => np.nonprofit.id === id);\n }\n\n async connectedCallback() {\n super.connectedCallback();\n this.nonprofitListDataController.loading = true;\n }\n\n async firstUpdated() {\n if (!this.apiKey || (!this.email && !this.partnerUserId)) return;\n this.subscriptionLookup = this.subscriptionDataController.exec();\n await this.subscriptionLookup;\n }\n\n async updated(changedProperties: PropertyValues) {\n const requireNewDataProps = [\"baseUrl\", \"storeId\", \"apiKey\", \"countryCode\", \"postalCode\", \"lang\"];\n for (const prop of requireNewDataProps) {\n if (changedProperties.has(prop)) {\n await this.nonprofitListDataController.exec();\n break;\n }\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n }\n\n private makeHandleSelect =\n (id: number, index: number, nonprofits: { nonprofit: { id: number } }[]) => async (evt: Event) => {\n const currentId = this.selectedNonprofitId;\n if (evt instanceof KeyboardEvent) {\n let nextFocus = null;\n switch (evt.key) {\n case \"ArrowUp\":\n case \"ArrowLeft\":\n nextFocus = index === 0 ? nonprofits[nonprofits.length - 1] : nonprofits[index - 1];\n evt.preventDefault();\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n nextFocus = index === nonprofits.length - 1 ? nonprofits[0] : nonprofits[index + 1];\n evt.preventDefault();\n break;\n case \"Enter\":\n case \" \":\n evt.preventDefault();\n break;\n default:\n return;\n }\n if (nextFocus) {\n if (currentId != null) {\n this.selectedNonprofitId = nextFocus.nonprofit.id;\n }\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 const targetEl = evt.currentTarget;\n if (!(targetEl instanceof HTMLElement) || currentId === id) return;\n this.selectedNonprofitId = id;\n await this.selectionDataController.exec({ selectedNonprofitId: id });\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 ...progressBarConfigDefaults,\n \"--beam-SubscriberSelectNonprofit-title-textAlign\": \"inherit\",\n \"--beam-SubscriberSelectNonprofit-description-textAlign\": \"inherit\",\n \"--beam-SubscriberSelectNonprofit-maxWidth\": \"800px\",\n \"--beam-SubscriberSelectNonprofit-options-marginTop\": \"0px\",\n \"--beam-SubscriberSelectNonprofit-options-iconHeight\": \"20px\",\n \"--beam-SubscriberSelectNonprofit-options-padding\": \"6px 4px\",\n \"--beam-SubscriberSelectNonprofit-options-borderRadius\": \"4px\",\n \"--beam-SubscriberSelectNonprofit-options-borderColor\": \"currentColor\",\n \"--beam-SubscriberSelectNonprofit-options-borderWidth\": \"1px\",\n \"--beam-SubscriberSelectNonprofit-options--selected-borderColor\": \"currentColor\",\n \"--beam-SubscriberSelectNonprofit-options-backgroundColor\": \"transparent\",\n \"--beam-SubscriberSelectNonprofit-options-gap\": \"8px\",\n \"--beam-SubscriberSelectNonprofit-options-margin\": \"14px 0 0 0\",\n \"--beam-SubscriberSelectNonprofit-width\": \"100%\",\n \"--beam-SubscriberSelectNonprofit-options--selected-backgroundColor\": \"currentColor\",\n \"--beam-SubscriberSelectNonprofit-details-marginTop\": \"6px\",\n \"--beam-SubscriberSelectNonprofit-details-borderRadius\": \"4px\",\n \"--beam-SubscriberSelectNonprofit-details-borderWidth\": \"1px\",\n \"--beam-SubscriberSelectNonprofit-details-borderColor\": \"currentColor\",\n \"--beam-SubscriberSelectNonprofit-details-backgroundColor\": \"inherit\",\n \"--beam-SubscriberSelectNonprofit-details-padding\": \"10px\",\n ...defineCustomText(\"--beam-SubscriberSelectNonprofit-title\", {\n fontSize: \"1em\",\n fontWeight: \"bold\",\n }),\n ...defineCustomText(\"--beam-SubscriberSelectNonprofit-description\", {\n marginTop: \"1em\",\n fontSize: \".85em\",\n }),\n \"--beam-SubscriberSelectNonprofit-title-block-margin-right\": \"8px\",\n ...defineCustomText(\"--beam-SubscriberSelectNonprofit-details-cause\", {\n fontSize: \"0.85em\",\n fontWeight: \"bold\",\n textTransform: \"uppercase\",\n }),\n ...defineCustomText(\"--beam-SubscriberSelectNonprofit-details-beamAttribution\", {\n fontSize: \"0.85em\",\n }),\n ...defineCustomText(\"--beam-SubscriberSelectNonprofit-details-impactDescription\", {\n fontSize: \".85em\",\n marginTop: \"10px\",\n lineHeight: \"normal\",\n }),\n \"--beam-SubscriberSelectNonprofit-details-nonprofitName-fontWeight\": \"bold\",\n \"--beam-SubscriberSelectNonprofit-details-nonprofitName-fontStyle\": \"inherit\",\n \"--beam-SubscriberSelectNonprofit-details-fundingProgress-marginTop\": \"10px\",\n ...defineCustomText(\"--beam-SubscriberSelectNonprofit-details-fundingProgressLabel\", {\n fontSize: \"0.85em\",\n }),\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 cssResponsiveUtils,\n css`\n :host {\n display: block;\n width: var(--beam-SubscriberSelectNonprofit-width, 100%);\n max-width: var(--beam-SubscriberSelectNonprofit-maxWidth, 800px);\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 .details-impactDescription {\n ${useCustomText(\"--beam-SubscriberSelectNonprofit-details-impactDescription\")}\n }\n\n .details-impactDescription .nonprofitName {\n font-weight: var(--beam-SubscriberSelectNonprofit-details-nonprofitName-fontWeight);\n font-style: var(--beam-SubscriberSelectNonprofit-details-nonprofitName-fontStyle, inherit);\n }\n\n .title-block {\n margin-right: var(--beam-SubscriberSelectNonprofit-title-block-margin-right);\n ${useCustomText(\"--beam-SubscriberSelectNonprofit-title\")}\n text-align: var(--beam-SubscriberSelectNonprofit-title-textAlign);\n }\n\n .description {\n ${useCustomText(\"--beam-SubscriberSelectNonprofit-description\")}\n text-align: var(--beam-SubscriberSelectNonprofit-description-textAlign);\n }\n\n .option {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n `,\n ];\n\n protected render() {\n if (!this.apiKey || (!this.email && !this.partnerUserId)) {\n return html``;\n }\n\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 && this.debug) {\n return _errorMessage({ error: this.selectionDataController.error });\n }\n\n const nonprofits = data?.nonprofits || [];\n const selectedNonprofit = nonprofits.find((np) => np.nonprofit.id === selectedNonprofitId) || null;\n\n const templateContext: Record<string, any> = {\n custom: { ...this.templateData },\n chain: { ...this.chain },\n selectedNonprofit: { ...selectedNonprofit?.nonprofit },\n lang: this.configLang,\n };\n\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n <div part=\"heading\">\n <h3 class=\"title-block\" part=\"title\" id=\"beam-SubscriberSelectNonprofit-title\">\n ${renderUserString(data?.config?.web?.title || \"\", templateContext, strings[this.configLang].ctaTitle())}\n </h3>\n <p class=\"description\" part=\"description\">\n ${renderUserString(\n data?.config?.web?.description || \"\",\n templateContext,\n strings[this.configLang].ctaMessage(),\n )}\n </p>\n </div>\n <div\n class=\"options\"\n part=\"options\"\n role=\"radiogroup\"\n aria-labelledby=\"beam-SubscriberSelectNonprofit-title\"\n style=\"display: flex; gap: var(--beam-SubscriberSelectNonprofit-options-gap); margin: var(--beam-SubscriberSelectNonprofit-options-margin, 12px 0 0 0);\"\n >\n ${repeat(\n nonprofits,\n (i) => i.nonprofit.id,\n ({ nonprofit }, index) => {\n const isSelected = selectedNonprofitId === nonprofit.id;\n const isFocusable = isSelected || (selectedNonprofit == null && index === 0);\n const optionTemplateContext: Record<string, any> = {\n ...templateContext,\n nonprofit,\n };\n\n return html`\n <div\n class=\"option\"\n part=\"option\"\n role=\"radio\"\n tabindex=\"${isFocusable ? 0 : -1}\"\n data-value=${nonprofit.id}\n aria-checked=${isSelected}\n @click=${this.makeHandleSelect(nonprofit.id, index, nonprofits)}\n @keydown=${this.makeHandleSelect(nonprofit.id, index, nonprofits)}\n aria-label=\"${compileUserString(nonprofit.cause || \"\", optionTemplateContext)}\"\n style=\"${styleMap({\n cursor: \"pointer\",\n flex: \"1\",\n textAlign: \"center\",\n lineHeight: \"1\",\n marginTop: \"var(--beam-SubscriberSelectNonprofit-options-marginTop, 0px)\",\n padding: \"var(--beam-SubscriberSelectNonprofit-options-padding, 6px 4px)\",\n borderStyle: \"solid\",\n position: \"relative\",\n borderRadius: \"var(--beam-SubscriberSelectNonprofit-options-borderRadius, 4px)\",\n borderColor: isSelected\n ? nonprofit.causeColor ||\n \"var(--beam-SubscriberSelectNonprofit-options--selected-borderColor, currentColor)\"\n : \"var(--beam-SubscriberSelectNonprofit-options-borderColor, currentColor)\",\n borderWidth: \"var(--beam-SubscriberSelectNonprofit-options-borderWidth, 1px)\",\n backgroundColor: isSelected\n ? nonprofit.causeColor ||\n \"var(--beam-SubscriberSelectNonprofit-options--selected-backgroundColor, currentColor)\"\n : \"var(--beam-SubscriberSelectNonprofit-options-backgroundColor, transparent)\",\n })}\"\n >\n <img\n src=\"${isSelected ? nonprofit.causeIconSelectedUrl : nonprofit.causeIconUrl}\"\n alt=\"\"\n role=\"presentation\"\n data-speedsize-ignore=\"true\"\n style=\"\n height: var(--beam-SubscriberSelectNonprofit-options-iconHeight, 24px);\n user-select: none;\n vertical-align: -webkit-baseline-middle;\n \"\n />\n </div>\n `;\n },\n )}\n </div>\n ${selectedNonprofit != null\n ? html`\n <div\n class=\"details\"\n part=\"details\"\n style=\"\n border: var(--beam-SubscriberSelectNonprofit-details-borderWidth) solid var(--beam-SubscriberSelectNonprofit-details-borderColor);\n border-radius: var(--beam-SubscriberSelectNonprofit-details-borderRadius);\n background-color: var(--beam-SubscriberSelectNonprofit-details-backgroundColor);\n padding: var(--beam-SubscriberSelectNonprofit-details-padding);\n margin-top: var(--beam-SubscriberSelectNonprofit-details-marginTop);\n \"\n aria-label=\"Funding information for selected nonprofit ${selectedNonprofit.nonprofit\n ?.name}. Powered by Beam\"\n >\n <div style=\"display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap-reverse\">\n <span\n class=\"details-cause\"\n style=\"flex: 0 1; white-space: nowrap; ${useCustomText(\n \"--beam-SubscriberSelectNonprofit-details-cause\",\n )}\"\n >\n ${renderUserString(selectedNonprofit.nonprofit.cause || \"\", templateContext)}\n </span>\n <div aria-hidden=\"true\">\n <span\n class=\"details-beamAttribution\"\n aria-hidden=\"true\"\n style=\"flex: 0 1; white-space: nowrap; ${useCustomText(\n \"--beam-SubscriberSelectNonprofit-details-beamAttribution\",\n )}\"\n >\n ${strings[this.configLang].beamAttribution()}\n </span>\n </div>\n </div>\n <p class=\"details-impactDescription\">\n ${renderUserString(selectedNonprofit.impact.description || \"\", templateContext)}\n </p>\n <div\n style=\"display: flex; margin-top: var(--beam-SubscriberSelectNonprofit-details-fundingProgress-marginTop); align-items: center;\"\n >\n <beam-progress-bar\n value=\"${selectedNonprofit.impact.goalProgressPercentage}\"\n style=\"flex: 1 0;\"\n ></beam-progress-bar>\n <span\n class=\"details-fundingProgressLabel\"\n style=\"${useCustomText(\n \"--beam-SubscriberSelectNonprofit-details-fundingProgressLabel\",\n )} white-space: nowrap; text-align: right; flex: 0 1; margin-left: 15px;\"\n >\n ${renderUserString(selectedNonprofit.impact.goalProgressText, templateContext)}\n </span>\n </div>\n </div>\n `\n : \"\"}\n `;\n }\n}\n\ndefineCustomElement(BeamSubscriberSelectNonprofit);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-subscriber-select-nonprofit\": BeamSubscriberSelectNonprofit;\n }\n}\n"],"names":["PRESETS","formatDate","date","fmt","resolved","dayjs","Handlebars","format","target","days","options","fromVal","baseDate","d","value","colorValue","text","escaped","safeColor","str","capitalized","bold","italic","underline","strikethrough","uppercase","lowercase","color","fontSize","fontFamily","content","cssProps","DEFAULT_LANGUAGE_CODE","compileUserString","context","fallback","lang","source","localized","localizeUserString","renderUserString","unsafeHTML","strings","donationPercentage","BeamSubscriberSelectNonprofit","LitElement","DEFAULT_BASE_URL","enforceConfig","res","postChainEligibleNonprofitsForCart","makeApiKeyHeader","WIDGET_NAMES","np","preselectedNonprofit","result","postFindOrCreateSubscription","selectedNonprofitId","updateSubscription","SELECTION_METHODS","selectedNonprofit","BeamNonprofitSelectEvent","AsyncController","id","index","nonprofits","evt","currentId","nextFocus","focusTarget","SUPPORTED_LANGUAGES","changedProperties","requireNewDataProps","prop","defaults","progressBarConfigDefaults","defineCustomText","remoteConfig","config","_cssVariableMap","html","data","loading","_loading","_errorMessage","templateContext","repeat","i","nonprofit","isSelected","isFocusable","optionTemplateContext","styleMap","useCustomText","cssReset","cssResponsiveUtils","css","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}