@beamimpact/web-sdk 1.47.1 → 1.50.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (280) hide show
  1. package/dist/chunks/_share-dialog-dependencies-RmYWlyJ0.esm.js +2 -0
  2. package/dist/chunks/_share-dialog-dependencies-RmYWlyJ0.esm.js.map +1 -0
  3. package/dist/chunks/_share-dialog-dependencies-yCBFjXxQ.esm.js +2 -0
  4. package/dist/chunks/_share-dialog-dependencies-yCBFjXxQ.esm.js.map +1 -0
  5. package/dist/chunks/beam-errors-AMvTvR1C.esm.js +2 -0
  6. package/dist/chunks/beam-errors-AMvTvR1C.esm.js.map +1 -0
  7. package/dist/chunks/{beam-errors-fXDkG1zo.esm.d.ts → beam-errors-bKCZlkvr.esm.d.ts} +2 -7
  8. package/dist/chunks/cart-contents-6_ztOjrx.esm.d.ts +18 -0
  9. package/dist/chunks/cart-contents-h60geKWa.esm.js.map +1 -1
  10. package/dist/chunks/enforce-config-S8EGgEnO.esm.js +3 -0
  11. package/dist/chunks/enforce-config-S8EGgEnO.esm.js.map +1 -0
  12. package/dist/chunks/enforce-config-l-tNb_z7.esm.js +3 -0
  13. package/dist/chunks/enforce-config-l-tNb_z7.esm.js.map +1 -0
  14. package/dist/chunks/events-T3hYV1LF.esm.js +2 -0
  15. package/dist/chunks/events-T3hYV1LF.esm.js.map +1 -0
  16. package/dist/chunks/{events-ZCTR9JGZ.esm.d.ts → events-u_8n2LIU.esm.d.ts} +33 -4
  17. package/dist/chunks/{index-PA0NAKHV.esm.d.ts → index-0X3JKFYs.esm.d.ts} +1 -1
  18. package/dist/chunks/{index-XH3OS_sy.esm.d.ts → index-2qmtuEV_.esm.d.ts} +4 -4
  19. package/dist/chunks/index-44clOvXJ.esm.js +2 -0
  20. package/dist/chunks/index-44clOvXJ.esm.js.map +1 -0
  21. package/dist/chunks/index-B-9JPaCH.esm.js +2 -0
  22. package/dist/chunks/index-B-9JPaCH.esm.js.map +1 -0
  23. package/dist/chunks/{index-b3WjW4PD.esm.js → index-CNVMNDM4.esm.js} +2 -2
  24. package/dist/chunks/index-CNVMNDM4.esm.js.map +1 -0
  25. package/dist/chunks/{index-59K_SAPn.esm.js → index-HVGMpZIV.esm.js} +2 -2
  26. package/dist/chunks/{index-59K_SAPn.esm.js.map → index-HVGMpZIV.esm.js.map} +1 -1
  27. package/dist/chunks/{index-cuCnejll.esm.js → index-UHchr4H_.esm.js} +2 -2
  28. package/dist/chunks/index-UHchr4H_.esm.js.map +1 -0
  29. package/dist/chunks/{index-KOSC2Z9-.esm.js → index-XPlAZw7t.esm.js} +2 -2
  30. package/dist/chunks/{index-KOSC2Z9-.esm.js.map → index-XPlAZw7t.esm.js.map} +1 -1
  31. package/dist/chunks/{index-v6fG3D6u.esm.d.ts → index-bhqIqVQJ.esm.d.ts} +1 -1
  32. package/dist/chunks/{index--z5MSe4-.esm.d.ts → index-cznI-EZa.esm.d.ts} +1 -1
  33. package/dist/chunks/index-dLnZQZlT.esm.js +2 -0
  34. package/dist/chunks/index-dLnZQZlT.esm.js.map +1 -0
  35. package/dist/chunks/index-f7fp9odj.esm.js +2 -0
  36. package/dist/chunks/index-f7fp9odj.esm.js.map +1 -0
  37. package/dist/chunks/index-kFulvjM4.esm.js +2 -0
  38. package/dist/chunks/index-kFulvjM4.esm.js.map +1 -0
  39. package/dist/chunks/index-m1LRybiJ.esm.js +2 -0
  40. package/dist/chunks/index-m1LRybiJ.esm.js.map +1 -0
  41. package/dist/chunks/index-puZGYsUA.esm.d.ts +46 -0
  42. package/dist/chunks/index-q2vZ79t1.esm.d.ts +46 -0
  43. package/dist/chunks/index-smGc5rsi.esm.js +2 -0
  44. package/dist/chunks/index-smGc5rsi.esm.js.map +1 -0
  45. package/dist/chunks/index-wz6Yfo37.esm.js +2 -0
  46. package/dist/chunks/index-wz6Yfo37.esm.js.map +1 -0
  47. package/dist/chunks/{localize-o-cYvHQf.esm.js → localize-7sMSg1W9.esm.js} +2 -2
  48. package/dist/chunks/{localize-o-cYvHQf.esm.js.map → localize-7sMSg1W9.esm.js.map} +1 -1
  49. package/dist/chunks/{localize-m-_ESmpk.esm.js → localize-OiRewTgu.esm.js} +2 -2
  50. package/dist/chunks/{localize-m-_ESmpk.esm.js.map → localize-OiRewTgu.esm.js.map} +1 -1
  51. package/dist/chunks/{openapi-spec-hjdK2L9Q.esm.d.ts → openapi-spec-bxGNhNMa.esm.d.ts} +332 -0
  52. package/dist/chunks/order-page-WPxvCNLM.esm.js +2 -0
  53. package/dist/chunks/order-page-WPxvCNLM.esm.js.map +1 -0
  54. package/dist/chunks/order-page-ZpOf35sP.esm.js +2 -0
  55. package/dist/chunks/order-page-ZpOf35sP.esm.js.map +1 -0
  56. package/dist/chunks/{order-page-9clVUPaS.esm.d.ts → order-page-dlXIs0gJ.esm.d.ts} +6 -4
  57. package/dist/chunks/promo-types-aQ_hre6t.esm.d.ts +14 -0
  58. package/dist/chunks/promoManager--3WXq4at.esm.js +2 -0
  59. package/dist/chunks/promoManager--3WXq4at.esm.js.map +1 -0
  60. package/dist/chunks/promoManager-YUzbMtwY.esm.js +2 -0
  61. package/dist/chunks/promoManager-YUzbMtwY.esm.js.map +1 -0
  62. package/dist/chunks/routes-YPOoVIR2.esm.js +2 -0
  63. package/dist/chunks/routes-YPOoVIR2.esm.js.map +1 -0
  64. package/dist/chunks/{routes-iurI6dvR.esm.d.ts → routes-lGXt7ttd.esm.d.ts} +76 -3
  65. package/dist/chunks/routes-o-phF_L1.esm.js +2 -0
  66. package/dist/chunks/routes-o-phF_L1.esm.js.map +1 -0
  67. package/dist/chunks/{share-button-bUM2WBaV.esm.js → share-button-EsUPw38-.esm.js} +2 -2
  68. package/dist/chunks/{share-button-DeVQh1aE.esm.js.map → share-button-EsUPw38-.esm.js.map} +1 -1
  69. package/dist/chunks/{share-button-DeVQh1aE.esm.js → share-button-r0y-bbwR.esm.js} +2 -2
  70. package/dist/chunks/{share-button-bUM2WBaV.esm.js.map → share-button-r0y-bbwR.esm.js.map} +1 -1
  71. package/dist/chunks/{shoelace-components-JZANE20x.esm.js → shoelace-components-PB22pjfM.esm.js} +2 -2
  72. package/dist/chunks/{shoelace-components-JZANE20x.esm.js.map → shoelace-components-PB22pjfM.esm.js.map} +1 -1
  73. package/dist/chunks/{shoelace-components-Jghvahj3.esm.js → shoelace-components-lr4iB8kL.esm.js} +2 -2
  74. package/dist/chunks/{shoelace-components-Jghvahj3.esm.js.map → shoelace-components-lr4iB8kL.esm.js.map} +1 -1
  75. package/dist/chunks/{types-zbTZ8-KP.esm.d.ts → types-IbMT3Nwn.esm.d.ts} +5 -1
  76. package/dist/chunks/{update-cart-l86bU5uS.esm.d.ts → update-cart-JO4fuiim.esm.d.ts} +1 -1
  77. package/dist/chunks/update-cart-UuMHYehB.esm.js +2 -0
  78. package/dist/chunks/update-cart-UuMHYehB.esm.js.map +1 -0
  79. package/dist/chunks/update-cart-mNsQ9K-k.esm.js +2 -0
  80. package/dist/chunks/update-cart-mNsQ9K-k.esm.js.map +1 -0
  81. package/dist/components/community-impact.d.ts +1 -1
  82. package/dist/components/community-impact.esm.js +1 -1
  83. package/dist/components/community-impact.js +1 -1
  84. package/dist/components/cumulative-impact.d.ts +1 -1
  85. package/dist/components/cumulative-impact.esm.js +1 -1
  86. package/dist/components/cumulative-impact.js +1 -1
  87. package/dist/components/impact-overview.d.ts +6 -2
  88. package/dist/components/impact-overview.esm.js +2 -2
  89. package/dist/components/impact-overview.esm.js.map +1 -1
  90. package/dist/components/impact-overview.js +2 -2
  91. package/dist/components/impact-overview.js.map +1 -1
  92. package/dist/components/index.d.ts +4 -4
  93. package/dist/components/index.esm.js +1 -1
  94. package/dist/components/index.js +1 -1
  95. package/dist/components/post-purchase.d.ts +11 -3
  96. package/dist/components/post-purchase.esm.js +4 -4
  97. package/dist/components/post-purchase.esm.js.map +1 -1
  98. package/dist/components/post-purchase.js +4 -4
  99. package/dist/components/post-purchase.js.map +1 -1
  100. package/dist/components/product-details-page.d.ts +23 -4
  101. package/dist/components/product-details-page.esm.js +24 -24
  102. package/dist/components/product-details-page.esm.js.map +1 -1
  103. package/dist/components/product-details-page.js +24 -24
  104. package/dist/components/product-details-page.js.map +1 -1
  105. package/dist/components/redeem-transaction.d.ts +5 -14
  106. package/dist/components/redeem-transaction.esm.js +27 -27
  107. package/dist/components/redeem-transaction.esm.js.map +1 -1
  108. package/dist/components/redeem-transaction.js +27 -27
  109. package/dist/components/redeem-transaction.js.map +1 -1
  110. package/dist/components/select-nonprofit.d.ts +10 -3
  111. package/dist/components/select-nonprofit.esm.js +50 -45
  112. package/dist/components/select-nonprofit.esm.js.map +1 -1
  113. package/dist/components/select-nonprofit.js +50 -45
  114. package/dist/components/select-nonprofit.js.map +1 -1
  115. package/dist/components/select-subscription-nonprofit.d.ts +1 -1
  116. package/dist/components/select-subscription-nonprofit.esm.js +1 -1
  117. package/dist/components/select-subscription-nonprofit.js +1 -1
  118. package/dist/components/shopify.d.ts +8 -7
  119. package/dist/components/shopify.esm.js +1 -1
  120. package/dist/components/shopify.esm.js.map +1 -1
  121. package/dist/components/shopify.js +1 -1
  122. package/dist/components/shopify.js.map +1 -1
  123. package/dist/components/social-share.d.ts +1 -1
  124. package/dist/components/social-share.esm.js +1 -1
  125. package/dist/components/social-share.js +1 -1
  126. package/dist/components/subscription-impact.d.ts +2 -1
  127. package/dist/components/subscription-impact.esm.js +1 -1
  128. package/dist/components/subscription-impact.js +1 -1
  129. package/dist/components/subscription-management.d.ts +15 -4
  130. package/dist/components/subscription-management.esm.js +1 -1
  131. package/dist/components/subscription-management.js +1 -1
  132. package/dist/index.d.ts +16 -14
  133. package/dist/index.esm.js +1 -1
  134. package/dist/index.js +1 -1
  135. package/dist/integrations/beam.d.ts +1 -1
  136. package/dist/integrations/beam.esm.js +1 -1
  137. package/dist/integrations/beam.js +1 -1
  138. package/dist/integrations/cart.d.ts +3 -3
  139. package/dist/integrations/cart.esm.js +1 -1
  140. package/dist/integrations/cart.js +1 -1
  141. package/dist/integrations/index.d.ts +14 -12
  142. package/dist/integrations/index.esm.js +1 -1
  143. package/dist/integrations/index.js +1 -1
  144. package/dist/integrations/logs.d.ts +2 -2
  145. package/dist/integrations/logs.esm.js +1 -1
  146. package/dist/integrations/logs.js +1 -1
  147. package/dist/integrations/promoManager.d.ts +36 -0
  148. package/dist/integrations/promoManager.esm.js +2 -0
  149. package/dist/integrations/promoManager.esm.js.map +1 -0
  150. package/dist/integrations/promoManager.js +2 -0
  151. package/dist/integrations/promoManager.js.map +1 -0
  152. package/dist/integrations/session.esm.js +1 -1
  153. package/dist/integrations/session.js +1 -1
  154. package/dist/integrations/shopify.d.ts +6 -6
  155. package/dist/integrations/shopify.esm.js +1 -1
  156. package/dist/integrations/shopify.js +1 -1
  157. package/dist/integrations/statsig.d.ts +1 -1
  158. package/dist/integrations/statsig.esm.js +1 -1
  159. package/dist/integrations/statsig.js +1 -1
  160. package/dist/integrations/utils.d.ts +7 -5
  161. package/dist/integrations/utils.esm.js +1 -1
  162. package/dist/integrations/utils.js +1 -1
  163. package/dist/react/community-impact.d.ts +1 -1
  164. package/dist/react/community-impact.esm.js +1 -1
  165. package/dist/react/community-impact.js +1 -1
  166. package/dist/react/cumulative-impact.d.ts +1 -1
  167. package/dist/react/cumulative-impact.esm.js +1 -1
  168. package/dist/react/cumulative-impact.js +1 -1
  169. package/dist/react/impact-overview.d.ts +1 -1
  170. package/dist/react/impact-overview.esm.js +1 -1
  171. package/dist/react/impact-overview.js +1 -1
  172. package/dist/react/index.d.ts +6 -5
  173. package/dist/react/index.esm.js +1 -1
  174. package/dist/react/index.js +1 -1
  175. package/dist/react/post-purchase.d.ts +3 -3
  176. package/dist/react/post-purchase.esm.js +1 -1
  177. package/dist/react/post-purchase.esm.js.map +1 -1
  178. package/dist/react/post-purchase.js +1 -1
  179. package/dist/react/post-purchase.js.map +1 -1
  180. package/dist/react/product-details-page.d.ts +1 -1
  181. package/dist/react/product-details-page.esm.js +1 -1
  182. package/dist/react/product-details-page.esm.js.map +1 -1
  183. package/dist/react/product-details-page.js +1 -1
  184. package/dist/react/product-details-page.js.map +1 -1
  185. package/dist/react/redeem-transaction.d.ts +5 -4
  186. package/dist/react/redeem-transaction.esm.js +1 -1
  187. package/dist/react/redeem-transaction.js +1 -1
  188. package/dist/react/select-nonprofit.d.ts +5 -4
  189. package/dist/react/select-nonprofit.esm.js +1 -1
  190. package/dist/react/select-nonprofit.esm.js.map +1 -1
  191. package/dist/react/select-nonprofit.js +1 -1
  192. package/dist/react/select-nonprofit.js.map +1 -1
  193. package/dist/react/select-subscription-nonprofit.d.ts +5 -4
  194. package/dist/react/select-subscription-nonprofit.esm.js +1 -1
  195. package/dist/react/select-subscription-nonprofit.js +1 -1
  196. package/dist/react/social-share.d.ts +1 -1
  197. package/dist/react/social-share.esm.js +1 -1
  198. package/dist/react/social-share.js +1 -1
  199. package/dist/react/subscription-impact.d.ts +1 -1
  200. package/dist/react/subscription-impact.esm.js +1 -1
  201. package/dist/react/subscription-impact.js +1 -1
  202. package/dist/react/subscription-management.d.ts +4 -4
  203. package/dist/react/subscription-management.esm.js +1 -1
  204. package/dist/react/subscription-management.js +1 -1
  205. package/dist/utils/beam-errors.d.ts +1 -1
  206. package/dist/utils/beam-errors.esm.js +1 -1
  207. package/dist/utils/beam-errors.js +1 -1
  208. package/dist/utils/cart.esm.js +1 -1
  209. package/dist/utils/cart.js +1 -1
  210. package/dist/utils/cookies.esm.js +1 -1
  211. package/dist/utils/cookies.esm.js.map +1 -1
  212. package/dist/utils/cookies.js +1 -1
  213. package/dist/utils/cookies.js.map +1 -1
  214. package/dist/utils/events.d.ts +5 -4
  215. package/dist/utils/events.esm.js +1 -1
  216. package/dist/utils/events.js +1 -1
  217. package/dist/utils/index.d.ts +7 -5
  218. package/dist/utils/index.esm.js +1 -1
  219. package/dist/utils/index.js +1 -1
  220. package/dist/utils/local-storage.esm.js +1 -1
  221. package/dist/utils/local-storage.js +1 -1
  222. package/dist/utils/network-listeners.esm.js +1 -1
  223. package/dist/utils/network-listeners.esm.js.map +1 -1
  224. package/dist/utils/network-listeners.js +1 -1
  225. package/dist/utils/network-listeners.js.map +1 -1
  226. package/dist/utils/promoManager.d.ts +123 -0
  227. package/dist/utils/promoManager.esm.js +2 -0
  228. package/dist/utils/promoManager.esm.js.map +1 -0
  229. package/dist/utils/promoManager.js +2 -0
  230. package/dist/utils/promoManager.js.map +1 -0
  231. package/dist/utils/remote-session.esm.js +1 -1
  232. package/dist/utils/remote-session.js +1 -1
  233. package/dist/utils/wait-for-element.esm.js +1 -1
  234. package/dist/utils/wait-for-element.js +1 -1
  235. package/package.json +2 -2
  236. package/dist/chunks/_share-dialog-dependencies-0ivyNKvC.esm.js +0 -2
  237. package/dist/chunks/_share-dialog-dependencies-0ivyNKvC.esm.js.map +0 -1
  238. package/dist/chunks/_share-dialog-dependencies-tTzjG045.esm.js +0 -2
  239. package/dist/chunks/_share-dialog-dependencies-tTzjG045.esm.js.map +0 -1
  240. package/dist/chunks/beam-errors-P-Lu07Ce.esm.js +0 -2
  241. package/dist/chunks/beam-errors-P-Lu07Ce.esm.js.map +0 -1
  242. package/dist/chunks/cart-contents-CMm57qu0.esm.d.ts +0 -11
  243. package/dist/chunks/enforce-config-ZAI7WYAd.esm.js +0 -3
  244. package/dist/chunks/enforce-config-ZAI7WYAd.esm.js.map +0 -1
  245. package/dist/chunks/enforce-config-ZyPq_4CF.esm.js +0 -3
  246. package/dist/chunks/enforce-config-ZyPq_4CF.esm.js.map +0 -1
  247. package/dist/chunks/events-6Z5MkCRr.esm.js +0 -2
  248. package/dist/chunks/events-6Z5MkCRr.esm.js.map +0 -1
  249. package/dist/chunks/index-2bLOkP4H.esm.d.ts +0 -32
  250. package/dist/chunks/index-B6jnCB4o.esm.js +0 -2
  251. package/dist/chunks/index-B6jnCB4o.esm.js.map +0 -1
  252. package/dist/chunks/index-BPg2EdL3.esm.js +0 -2
  253. package/dist/chunks/index-BPg2EdL3.esm.js.map +0 -1
  254. package/dist/chunks/index-CsWTfuok.esm.js +0 -2
  255. package/dist/chunks/index-CsWTfuok.esm.js.map +0 -1
  256. package/dist/chunks/index-GynYZRPI.esm.d.ts +0 -32
  257. package/dist/chunks/index-MIp7LlXH.esm.js +0 -2
  258. package/dist/chunks/index-MIp7LlXH.esm.js.map +0 -1
  259. package/dist/chunks/index-YJNgLCif.esm.js +0 -2
  260. package/dist/chunks/index-YJNgLCif.esm.js.map +0 -1
  261. package/dist/chunks/index-YcyQB-6f.esm.js +0 -2
  262. package/dist/chunks/index-YcyQB-6f.esm.js.map +0 -1
  263. package/dist/chunks/index-ZZthq-Fl.esm.js +0 -2
  264. package/dist/chunks/index-ZZthq-Fl.esm.js.map +0 -1
  265. package/dist/chunks/index-b3WjW4PD.esm.js.map +0 -1
  266. package/dist/chunks/index-cuCnejll.esm.js.map +0 -1
  267. package/dist/chunks/index-iK195-B9.esm.js +0 -2
  268. package/dist/chunks/index-iK195-B9.esm.js.map +0 -1
  269. package/dist/chunks/order-page-84vnjksY.esm.js +0 -2
  270. package/dist/chunks/order-page-84vnjksY.esm.js.map +0 -1
  271. package/dist/chunks/order-page-dERTuQ8T.esm.js +0 -2
  272. package/dist/chunks/order-page-dERTuQ8T.esm.js.map +0 -1
  273. package/dist/chunks/routes-Jhhqcsg7.esm.js +0 -2
  274. package/dist/chunks/routes-Jhhqcsg7.esm.js.map +0 -1
  275. package/dist/chunks/routes-tB5fHy2T.esm.js +0 -2
  276. package/dist/chunks/routes-tB5fHy2T.esm.js.map +0 -1
  277. package/dist/chunks/update-cart-i5yZ2fyd.esm.js +0 -2
  278. package/dist/chunks/update-cart-i5yZ2fyd.esm.js.map +0 -1
  279. package/dist/chunks/update-cart-v61CI4O9.esm.js +0 -2
  280. package/dist/chunks/update-cart-v61CI4O9.esm.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import{h as x,f as w,y as c,g as f,t as E,q as T,m as M,k as B}from"../chunks/lit-iNN5L_Qk.esm.js";import{d as F,i as W}from"../chunks/lodash-P8OIs-at.esm.js";import{u as h,A as I,d as b,a as _,_ as k,i as p}from"../chunks/localize-o-cYvHQf.esm.js";import{D as U,f as K,W as N,i as O,S as R}from"../chunks/routes-Jhhqcsg7.esm.js";import{p as j}from"../chunks/progress-bar-PMU_xI3L.esm.js";import{p as H}from"../chunks/promo-pill-label-P1X4xeAx.esm.js";import{c as q,d as G,e as v}from"../chunks/enforce-config-ZAI7WYAd.esm.js";import{_ as V}from"../chunks/loading-template-t4fFsYtr.esm.js";import{b as $,g as J,d as P}from"../chunks/events-6Z5MkCRr.esm.js";import{logger as Q}from"../utils/logger.esm.js";import{createScopedLocalStorage as X}from"../utils/local-storage.esm.js";import{c as Y}from"../chunks/responsive-2lC2Wrtg.esm.js";import{B as Z}from"../chunks/cart-contents-h60geKWa.esm.js";import{getExternalCartId as ee,getBeamCartId as te}from"../utils/cart.esm.js";import"../chunks/beam-errors-P-Lu07Ce.esm.js";import"../chunks/vendor-GKiOHg2N.esm.js";import"../utils/cookies.esm.js";class oe extends x{static get styles(){return w`
1
+ import{h as w,f as I,y as d,g as f,t as P,q as W,m as U,k as O}from"../chunks/lit-iNN5L_Qk.esm.js";import{d as R,i as j}from"../chunks/lodash-P8OIs-at.esm.js";import{u as b,A as k,d as h,a as H,_ as $,i as m}from"../chunks/localize-7sMSg1W9.esm.js";import{D as V,W as N,f as q,i as J,S as G}from"../chunks/routes-o-phF_L1.esm.js";import{p as Q}from"../chunks/progress-bar-PMU_xI3L.esm.js";import{p as X}from"../chunks/promo-pill-label-P1X4xeAx.esm.js";import{c as Y,d as Z,e as v}from"../chunks/enforce-config-l-tNb_z7.esm.js";import{_ as ee}from"../chunks/loading-template-t4fFsYtr.esm.js";import{f as L,c as D,i as te,g as E,a as z}from"../chunks/events-T3hYV1LF.esm.js";import{logger as oe}from"../utils/logger.esm.js";import{createScopedLocalStorage as ie}from"../utils/local-storage.esm.js";import{f as ne,i as re,e as ae,h as se,k as le,s as ce}from"../chunks/promoManager-YUzbMtwY.esm.js";import{c as pe}from"../chunks/responsive-2lC2Wrtg.esm.js";import{B as A}from"../chunks/cart-contents-h60geKWa.esm.js";import{getBeamCartId as M,getExternalCartId as T}from"../utils/cart.esm.js";import"../chunks/beam-errors-AMvTvR1C.esm.js";import"../chunks/vendor-GKiOHg2N.esm.js";import"../utils/cookies.esm.js";class de extends w{static get styles(){return I`
2
2
  :host {
3
3
  }
4
4
 
@@ -12,51 +12,51 @@ import{h as x,f as w,y as c,g as f,t as E,q as T,m as M,k as B}from"../chunks/li
12
12
  align-items: center;
13
13
  font-size: 12px;
14
14
  }
15
- `}render(){return c`<div
15
+ `}render(){return d`<div
16
16
  class="notification-blip-container"
17
17
  part="notification-blip-container"
18
18
  aria-label="Notification Blip"
19
19
  >
20
20
  <span class="notification-blip" part="notification-blip" role="button" tabindex="0" aria-hidden="true"></span>
21
- </div>`}}customElements.get("beam-notification-blip")||customElements.define("beam-notification-blip",oe);const ie={"--beam-notificationBlip-color-background":"#000"},m={en:{beamAttribution:()=>"Powered by Beam",ctaTitle:()=>"Choose your impact",ctaPromoPrefixMessage:()=>"At no extra cost,",ctaPromoMessage:({donationPercentage:n="1"}={})=>`select a nonprofit and ${n}% of your purchase will be donated.`,ctaMessage:({donationPercentage:n="1"}={})=>`At no extra cost, select a nonprofit and ${n}% of your purchase will be donated.`,inlineSeparator:()=>": "},fr:{beamAttribution:()=>"Optimis\xE9 par Beam",ctaTitle:()=>"Choisissez votre cause",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:n="1"}={})=>`Sans frais suppl\xE9mentaires, choisissez un organisme \xE0 but non lucratif et ${n} % lui sera vers\xE9 en votre nom.`,inlineSeparator:()=>" : "},de:{beamAttribution:()=>"Unterst\xFCtzt von Beam",ctaTitle:()=>"W\xE4hle deinen Impact",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:n="1"}={})=>`Ohne zus\xE4tzliche Kosten, w\xE4hle eine der gemeinn\xFCtzigen Organisationen und spende ${n}% deines Einkaufs`,inlineSeparator:()=>": "},es:{beamAttribution:()=>"Ofrecido por Beam",ctaTitle:()=>"Elige tu contribuci\xF3n",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:n="1"}={})=>`Sin coste adicional, elige una organizaci\xF3n sin fines de lucro y donaremos ${n}% de tu compra.`,inlineSeparator:()=>": "},it:{beamAttribution:()=>"Gestito da Beam",ctaTitle:()=>"Scegli dove fare la differenza",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:n="1"}={})=>`Senza costi aggiuntivi, seleziona un'organizzazione no-profit a cui devolvere l\u2019${n}% del tuo acquisto`,inlineSeparator:()=>": "},pl:{beamAttribution:()=>"Wspierany przez Beam",ctaTitle:()=>"Wybierz inicjatyw\u0119, kt\xF3r\u0105 chcesz wesprze\u0107",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:n="1"}={})=>`Bez \u017Cadnych dodatkowych koszt\xF3w wybierz organizacj\u0119, kt\xF3rej przeka\u017Cesz ${n}% warto\u015Bci Twoich zakup\xF3w!`,inlineSeparator:()=>": "}};var ne=Object.defineProperty,ae=Object.getOwnPropertyDescriptor,d=(n,t,e,i)=>{for(var o=i>1?void 0:i?ae(t,e):t,a=n.length-1,r;a>=0;a--)(r=n[a])&&(o=(i?r(t,e,o):r(o))||o);return i&&o&&ne(t,e,o),o};class l extends x{constructor(){super(...arguments),this.baseUrl=U,this.selectedNonprofitId=null,this.lang="en",this.debug=!1,this.draftConfig=!1,this.isMobile=window.innerWidth<768,this.enableNonprofitDeselection=!1,this.didTryToCreateNewSelectionFromCache=!1,this.getChainNonprofits=async()=>{v(["apiKey"],this);const t=this.cart?.content?{schema:this.cart?.schema,content:this.cart?.content}:void 0,e=await K({baseUrl:this.baseUrl,apiRoot:"/api/v3",headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{storeId:this.storeId,widgetName:N.select_nonprofit,postalCode:this.postalCode,countryCode:this.countryCode,version:"1.0.0",lang:this.configLang,options:{config:{draftConfig:this.draftConfig}},cart:t}});return this.enableNonprofitDeselection=!!e.config.enableNonprofitDeselection,this.selectedNonprofitId!==null&&this.selectedNonprofitId&&!e.nonprofits.map(i=>i.nonprofit.id).includes(this.selectedNonprofitId)&&(this.selectedNonprofitId=null,await this.postSelectNonprofit({selectedNonprofitId:null}),this.localStorage.setItem("nonprofit",null)),e.store?.id&&e.store.id!==this.storeId&&(this.storeId=e.store.id),await this.createNewSelectionForCachedNonprofit(),this.localStorage.setItemJson("chainNonprofits",{createdAt:new Date,data:e}),e},this.postSelectNonprofit=async({selectedNonprofitId:t})=>{v(["apiKey","storeId"],this);const e=ee("cart",{apiKey:this.apiKey}),i=te(Z,{apiKey:this.apiKey}),o=await O({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{nonprofitId:t,selectionId:this.selectionId,storeId:this.storeId,cartId:e||void 0,beamCartId:i||void 0,postalCode:this.postalCode,countryCode:this.countryCode}});this.selectionId=o?.selectionId,this.localStorage.setItem("transaction",this.selectionId),this.localStorage.setItem("nonprofit",t),this.localStorage.setItem("nonprofit_selected_at",new Date().toISOString()),await this.updateComplete;const a=this.getNonprofitById(t);t!==null&&this.dispatchEvent(new $({selectedNonprofitId:t,selectionId:this.selectionId,nonprofitName:a?.nonprofit?.name??null,source:N.select_nonprofit})),t===null&&this.dispatchEvent(new J({newNonprofitId:null,selectionId:this.selectionId}))},this.nonprofitListDataController=new I(this,this.getChainNonprofits),this.selectionDataController=new I(this,this.postSelectNonprofit),this.localStorage=X(this),this.handleCartChange=t=>{this.cart=t.detail},this.makeHandleSelect=(t,e,i)=>async o=>{const a=this.selectedNonprofitId;if(o instanceof KeyboardEvent){let r=null;switch(o.key){case"ArrowUp":case"ArrowLeft":e===0?r=i[i.length-1]:r=i[e-1],o.preventDefault();break;case"ArrowRight":case"ArrowDown":e===i.length-1?r=i[0]:r=i[e+1],o.preventDefault();break;case"Enter":case" ":o.preventDefault();break;default:return}if(r){a!=null&&(this.selectedNonprofitId=r.nonprofit.id);const g=this.renderRoot.querySelector(`[data-value="${r.nonprofit.id}"]`);g!==null&&(g.tabIndex=0,g.focus());return}}if(o.currentTarget instanceof HTMLElement)if(a===t)if(this.enableNonprofitDeselection)this.selectedNonprofitId=null,this.localStorage.setItem("nonprofit",null);else return;else this.selectedNonprofitId=t;await this.selectionDataController.exec({selectedNonprofitId:this.selectedNonprofitId})},this.evaluateBreakPoints=F(()=>{this.isMobile=window.innerWidth<768},50,{maxWait:50,leading:!0})}get configLang(){return R[this.lang]||"en"}getNonprofitById(t){return t?this.nonprofitListDataController?.data?.nonprofits.find(e=>e.nonprofit.id===t):null}async connectedCallback(){super.connectedCallback(),this.nonprofitListDataController.loading=!0,window.addEventListener(P.eventName,this.handleCartChange),window.addEventListener("resize",this.evaluateBreakPoints)}async firstUpdated(){await this.restoreStateFromCache()}async updated(t){const e=["baseUrl","storeId","apiKey","countryCode","postalCode","cart","lang"];for(const i of e)if(t.has(i)){await this.nonprofitListDataController.exec();break}}disconnectedCallback(){window.removeEventListener(P.eventName,this.handleCartChange),window.removeEventListener("resize",this.evaluateBreakPoints),super.disconnectedCallback()}async restoreStateFromCache(){try{const t=new Date().valueOf();this.cart=this.localStorage.getItemJson("cart")??void 0;const e=30*24*60*60*1e3,i=this.localStorage.getItem("nonprofit_selected_at")??0,o=t>new Date(i).valueOf()+e;o?o&&this.selectedNonprofitId!==null&&(await this.postSelectNonprofit({selectedNonprofitId:null}),this.localStorage.setItem("nonprofit",null)):(this.selectedNonprofitId=parseInt(this.localStorage.getItem("nonprofit")||"")||null,this.selectionId=this.localStorage.getItem("transaction")??void 0);const{createdAt:a=0,data:r}=this.localStorage.getItemJson("chainNonprofits")||{},g=2*60*60*1e3;!(t>new Date(a).valueOf()+g)&&this.nonprofitListDataController.loading&&(this.nonprofitListDataController.data=r,this.nonprofitListDataController.loading=!1)}catch(t){Q.error(t)}}async createNewSelectionForCachedNonprofit(){if(v(["apiKey"],this),!(!this.storeId||this.didTryToCreateNewSelectionFromCache))try{if(this.didTryToCreateNewSelectionFromCache=!0,this.selectedNonprofitId){this.selectionId||await this.selectionDataController.exec({selectedNonprofitId:this.selectedNonprofitId});const t=this.getNonprofitById(this.selectedNonprofitId);this.dispatchEvent(new $({selectedNonprofitId:this.selectedNonprofitId,selectionId:this.selectionId,nonprofitName:t?.nonprofit?.name,source:N.select_nonprofit}))}}catch{}}get cssVariables(){const t={"--beam-fontFamily":"inherit","--beam-fontStyle":"inherit","--beam-fontSize":"inherit","--beam-textColor":"inherit","--beam-backgroundColor":"inherit",...j,"--beam-SelectNonprofit-title-textAlign":"inherit","--beam-SelectNonprofit-description-textAlign":"inherit","--beam-SelectNonprofit-maxWidth":"800px","--beam-SelectNonprofit-options-marginTop":"0px","--beam-SelectNonprofit-options-iconHeight":"24px","--beam-SelectNonprofit-options-padding":"10px","--beam-SelectNonprofit-options-borderRadius":"0px","--beam-SelectNonprofit-options-borderColor":"currentColor","--beam-SelectNonprofit-options--selected-borderColor":"currentColor","--beam-SelectNonprofit-options-backgroundColor":"transparent","--beam-SelectNonprofit-options-gap":"8px","--beam-SelectNonprofit-options--selected-backgroundColor":"currentColor","--beam-SelectNonprofit-details-marginTop":"10px","--beam-SelectNonprofit-details-borderRadius":"0px","--beam-SelectNonprofit-details-borderColor":"currentColor","--beam-SelectNonprofit-details-backgroundColor":"inherit","--beam-SelectNonprofit-details-padding":"10px",...b("--beam-SelectNonprofit-title",{fontSize:"1.25em",fontWeight:"bold"}),"--beam-SelectNonprofit-header-inline-lineHeight":"inherit",...b("--beam-SelectNonprofit-title-inline",{fontWeight:"bold"}),"--beam-SelectNonprofit-title-inline-textTransform":"none","--beam-SelectNonprofit-title-block-margin-right":"8px",...b("--beam-SelectNonprofit-description",{marginTop:"0.5em"}),...b("--beam-SelectNonprofit-description-inline"),...b("--beam-SelectNonprofit-details-cause",{fontSize:"0.85em",fontWeight:"bold"}),...b("--beam-SelectNonprofit-details-beamAttribution",{fontSize:"0.85em"}),...b("--beam-SelectNonprofit-details-impactDescription",{fontSize:"1em",marginTop:"10px"}),"--beam-SelectNonprofit-details-nonprofitName-fontWeight":"bold","--beam-SelectNonprofit-details-nonprofitName-fontStyle":"inherit","--beam-SelectNonprofit-details-fundingProgress-marginTop":"10px",...b("--beam-SelectNonprofit-details-fundingProgressLabel",{fontSize:"0.85em"}),...ie,...H,"--beam-SelectNonprofit-promo-block-header-justifyContent":"initial","--beam-SelectNonprofit-notification-blip-top":"4px","--beam-SelectNonprofit-notification-blip-left":"50%"},e=this.nonprofitListDataController?.data?.config?.web?.theme||{},i={...t,...e};return Object.assign(Object.create({toCSS(){return _(this)}}),i)}render(){const{selectedNonprofitId:t}=this,{data:e,loading:i}=this.nonprofitListDataController;if(i&&!e)return V();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 o=e?.nonprofits||[],a=o.find(s=>s.nonprofit.id===t)||null,r=!!e?.config?.web?.promo,g=o.some(s=>!s.promo||!s.promo.isActive),y=this.cssVariables["--beam-SelectNonprofit-title-textAlign"]==="center",C=c`<h3 class="title-block d-none d-lg-block" part="title" id="beam-SelectNonprofit-title">
22
- ${p(this.configLang,e?.config?.web?.title||"")||m[this.configLang].ctaTitle()}
23
- </h3>`,L=()=>r?c`<div
21
+ </div>`}}customElements.get("beam-notification-blip")||customElements.define("beam-notification-blip",de);const fe={"--beam-notificationBlip-color-background":"#000"},g={en:{beamAttribution:()=>"Powered by Beam",ctaTitle:()=>"Choose your impact",ctaPromoPrefixMessage:()=>"At no extra cost,",ctaPromoMessage:({donationPercentage:r="1"}={})=>`select a nonprofit and ${r}% of your purchase will be donated.`,ctaMessage:({donationPercentage:r="1"}={})=>`At no extra cost, select a nonprofit and ${r}% of your purchase will be donated.`,inlineSeparator:()=>": "},fr:{beamAttribution:()=>"Optimis\xE9 par Beam",ctaTitle:()=>"Choisissez votre cause",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:r="1"}={})=>`Sans frais suppl\xE9mentaires, choisissez un organisme \xE0 but non lucratif et ${r} % lui sera vers\xE9 en votre nom.`,inlineSeparator:()=>" : "},de:{beamAttribution:()=>"Unterst\xFCtzt von Beam",ctaTitle:()=>"W\xE4hle deinen Impact",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:r="1"}={})=>`Ohne zus\xE4tzliche Kosten, w\xE4hle eine der gemeinn\xFCtzigen Organisationen und spende ${r}% deines Einkaufs`,inlineSeparator:()=>": "},es:{beamAttribution:()=>"Ofrecido por Beam",ctaTitle:()=>"Elige tu contribuci\xF3n",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:r="1"}={})=>`Sin coste adicional, elige una organizaci\xF3n sin fines de lucro y donaremos ${r}% de tu compra.`,inlineSeparator:()=>": "},it:{beamAttribution:()=>"Gestito da Beam",ctaTitle:()=>"Scegli dove fare la differenza",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:r="1"}={})=>`Senza costi aggiuntivi, seleziona un'organizzazione no-profit a cui devolvere l\u2019${r}% del tuo acquisto`,inlineSeparator:()=>": "},pl:{beamAttribution:()=>"Wspierany przez Beam",ctaTitle:()=>"Wybierz inicjatyw\u0119, kt\xF3r\u0105 chcesz wesprze\u0107",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:r="1"}={})=>`Bez \u017Cadnych dodatkowych koszt\xF3w wybierz organizacj\u0119, kt\xF3rej przeka\u017Cesz ${r}% warto\u015Bci Twoich zakup\xF3w!`,inlineSeparator:()=>": "}};var me=Object.defineProperty,ge=Object.getOwnPropertyDescriptor,p=(r,e,t,i)=>{for(var o=i>1?void 0:i?ge(e,t):e,n=r.length-1,a;n>=0;n--)(a=r[n])&&(o=(i?a(e,t,o):a(o))||o);return i&&o&&me(e,t,o),o};class s extends w{constructor(){super(...arguments),this.baseUrl=V,this.selectedNonprofitId=null,this.lang="en",this.debug=!1,this.draftConfig=!1,this.isMobile=window.innerWidth<768,this.enableNonprofitDeselection=!1,this.didTryToCreateNewSelectionFromCache=!1,this.pluginPromoCodes=[],this.handlePromoCodesStored=e=>{const t=(e.detail.promoCodes?.unvalidatedPromoCodes??[]).map(i=>i.attributes?.value??i.attributes?.url??"").sort();this.pluginPromoCodes=t},this.getChainNonprofits=async()=>{v(["apiKey"],this);const e=M(A,{apiKey:this.apiKey}),t=T("cart",{apiKey:this.apiKey}),i=this.cart?.content?{schema:this.cart?.schema,content:this.cart?.content}:void 0,o=this.getManualPromoCodes(),n=ne(o.map(u=>({value:u})),this.apiKey),a=n&&!re(n);a&&this.dispatchEvent(new L({source:N.select_nonprofit}));const l=await q({baseUrl:this.baseUrl,apiRoot:"/api/v3",headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{storeId:this.storeId,widgetName:N.select_nonprofit,postalCode:this.postalCode,countryCode:this.countryCode,beamCartId:e||void 0,cartId:t||void 0,version:"1.0.0",lang:this.configLang,...a&&{promos:n},options:{config:{draftConfig:this.draftConfig}},cart:i}});return this.enableNonprofitDeselection=!!l.config.enableNonprofitDeselection,this.selectedNonprofitId!==null&&this.selectedNonprofitId&&!l.nonprofits.map(u=>u.nonprofit.id).includes(this.selectedNonprofitId)&&(this.selectedNonprofitId=null,await this.postSelectNonprofit({selectedNonprofitId:null}),this.localStorage.setItem("nonprofit",null)),l.store?.id&&l.store.id!==this.storeId&&(this.storeId=l.store.id),await this.createNewSelectionForCachedNonprofit(),this.localStorage.setItemJson("chainNonprofits",{createdAt:new Date,data:l}),this.handleValidatedPromoCodes(l),l},this.postSelectNonprofit=async({selectedNonprofitId:e})=>{v(["apiKey","storeId"],this);const t=T("cart",{apiKey:this.apiKey}),i=M(A,{apiKey:this.apiKey}),o=await J({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{nonprofitId:e,selectionId:this.selectionId,storeId:this.storeId,cartId:t||void 0,beamCartId:i||void 0,postalCode:this.postalCode,countryCode:this.countryCode}});this.selectionId=o?.selectionId,this.localStorage.setItem("transaction",this.selectionId),this.localStorage.setItem("nonprofit",e),this.localStorage.setItem("nonprofit_selected_at",new Date().toISOString()),await this.updateComplete;const n=this.getNonprofitById(e);e!==null&&this.dispatchEvent(new D({selectedNonprofitId:e,selectionId:this.selectionId,nonprofitName:n?.nonprofit?.name??null,source:N.select_nonprofit})),e===null&&this.dispatchEvent(new te({newNonprofitId:null,selectionId:this.selectionId}))},this.nonprofitListDataController=new k(this,this.getChainNonprofits),this.selectionDataController=new k(this,this.postSelectNonprofit),this.localStorage=ie(this),this.handleCartChange=e=>{this.cart=e.detail},this.makeHandleSelect=(e,t,i)=>async o=>{const n=this.selectedNonprofitId;if(o instanceof KeyboardEvent){let a=null;switch(o.key){case"ArrowUp":case"ArrowLeft":t===0?a=i[i.length-1]:a=i[t-1],o.preventDefault();break;case"ArrowRight":case"ArrowDown":t===i.length-1?a=i[0]:a=i[t+1],o.preventDefault();break;case"Enter":case" ":o.preventDefault();break;default:return}if(a){n!=null&&(this.selectedNonprofitId=a.nonprofit.id);const l=this.renderRoot.querySelector(`[data-value="${a.nonprofit.id}"]`);l!==null&&(l.tabIndex=0,l.focus());return}}if(o.currentTarget instanceof HTMLElement)if(n===e)if(this.enableNonprofitDeselection)this.selectedNonprofitId=null,this.localStorage.setItem("nonprofit",null);else return;else this.selectedNonprofitId=e;await this.selectionDataController.exec({selectedNonprofitId:this.selectedNonprofitId})},this.evaluateBreakPoints=R(()=>{this.isMobile=window.innerWidth<768},50,{maxWait:50,leading:!0})}get configLang(){return G[this.lang]||"en"}get parsedPromoCodes(){return ae(this.promoCodes)}getManualPromoCodes(){if(this.parsedPromoCodes&&this.parsedPromoCodes.length>0)return this.parsedPromoCodes;const e=this.localStorage.getItemJson("cart");return e?se(e):[]}async handleValidatedPromoCodes(e){e.promos?.validatedPromoCodes&&(await Promise.all([le({apiKey:this.apiKey,promoCodes:{validatedPromoCodes:e.promos.validatedPromoCodes,unvalidatedPromoCodes:[]}}),ce({validatedPromoCodes:e.promos.validatedPromoCodes,domain:this.domain})]),this.dispatchEvent(new L({source:N.select_nonprofit})))}getNonprofitById(e){return e?this.nonprofitListDataController?.data?.nonprofits.find(t=>t.nonprofit.id===e):null}async connectedCallback(){super.connectedCallback(),this.nonprofitListDataController.loading=!0,window.addEventListener(E.eventName,this.handleCartChange),window.addEventListener("resize",this.evaluateBreakPoints)}async firstUpdated(){await this.restoreStateFromCache(),window.addEventListener(z.eventName,this.handlePromoCodesStored)}async updated(e){const t=["baseUrl","storeId","apiKey","countryCode","postalCode","cart","lang","pluginPromoCodes"];this.pluginPromoCodes;for(const i of t)if(e.has(i)){await this.nonprofitListDataController.exec();break}}disconnectedCallback(){window.removeEventListener(E.eventName,this.handleCartChange),window.removeEventListener("resize",this.evaluateBreakPoints),window.removeEventListener(z.eventName,this.handlePromoCodesStored),super.disconnectedCallback()}async restoreStateFromCache(){try{const e=new Date().valueOf();this.cart=this.localStorage.getItemJson("cart")??void 0;const t=30*24*60*60*1e3,i=this.localStorage.getItem("nonprofit_selected_at")??0,o=e>new Date(i).valueOf()+t;o?o&&this.selectedNonprofitId!==null&&(await this.postSelectNonprofit({selectedNonprofitId:null}),this.localStorage.setItem("nonprofit",null)):(this.selectedNonprofitId=parseInt(this.localStorage.getItem("nonprofit")||"")||null,this.selectionId=this.localStorage.getItem("transaction")??void 0);const{createdAt:n=0,data:a}=this.localStorage.getItemJson("chainNonprofits")||{},l=2*60*60*1e3;!(e>new Date(n).valueOf()+l)&&this.nonprofitListDataController.loading&&(this.nonprofitListDataController.data=a,this.nonprofitListDataController.loading=!1)}catch(e){oe.error(e)}}async createNewSelectionForCachedNonprofit(){if(v(["apiKey"],this),!(!this.storeId||this.didTryToCreateNewSelectionFromCache))try{if(this.didTryToCreateNewSelectionFromCache=!0,this.selectedNonprofitId){this.selectionId||await this.selectionDataController.exec({selectedNonprofitId:this.selectedNonprofitId});const e=this.getNonprofitById(this.selectedNonprofitId);this.dispatchEvent(new D({selectedNonprofitId:this.selectedNonprofitId,selectionId:this.selectionId,nonprofitName:e?.nonprofit?.name,source:N.select_nonprofit}))}}catch{}}get cssVariables(){const e={"--beam-fontFamily":"inherit","--beam-fontStyle":"inherit","--beam-fontSize":"inherit","--beam-textColor":"inherit","--beam-backgroundColor":"inherit",...Q,"--beam-SelectNonprofit-title-textAlign":"inherit","--beam-SelectNonprofit-description-textAlign":"inherit","--beam-SelectNonprofit-maxWidth":"800px","--beam-SelectNonprofit-options-marginTop":"0px","--beam-SelectNonprofit-options-iconHeight":"24px","--beam-SelectNonprofit-options-padding":"10px","--beam-SelectNonprofit-options-borderRadius":"0px","--beam-SelectNonprofit-options-borderColor":"currentColor","--beam-SelectNonprofit-options--selected-borderColor":"currentColor","--beam-SelectNonprofit-options-backgroundColor":"transparent","--beam-SelectNonprofit-options-gap":"8px","--beam-SelectNonprofit-options--selected-backgroundColor":"currentColor","--beam-SelectNonprofit-details-marginTop":"10px","--beam-SelectNonprofit-details-borderRadius":"0px","--beam-SelectNonprofit-details-borderColor":"currentColor","--beam-SelectNonprofit-details-backgroundColor":"inherit","--beam-SelectNonprofit-details-padding":"10px",...h("--beam-SelectNonprofit-title",{fontSize:"1.25em",fontWeight:"bold"}),"--beam-SelectNonprofit-header-inline-lineHeight":"inherit",...h("--beam-SelectNonprofit-title-inline",{fontWeight:"bold"}),"--beam-SelectNonprofit-title-inline-textTransform":"none","--beam-SelectNonprofit-title-block-margin-right":"8px",...h("--beam-SelectNonprofit-description",{marginTop:"0.5em"}),...h("--beam-SelectNonprofit-description-inline"),...h("--beam-SelectNonprofit-details-cause",{fontSize:"0.85em",fontWeight:"bold"}),...h("--beam-SelectNonprofit-details-beamAttribution",{fontSize:"0.85em"}),...h("--beam-SelectNonprofit-details-impactDescription",{fontSize:"1em",marginTop:"10px"}),"--beam-SelectNonprofit-details-nonprofitName-fontWeight":"bold","--beam-SelectNonprofit-details-nonprofitName-fontStyle":"inherit","--beam-SelectNonprofit-details-fundingProgress-marginTop":"10px",...h("--beam-SelectNonprofit-details-fundingProgressLabel",{fontSize:"0.85em"}),...fe,...X,"--beam-SelectNonprofit-promo-block-header-justifyContent":"initial","--beam-SelectNonprofit-notification-blip-top":"4px","--beam-SelectNonprofit-notification-blip-left":"50%","--beam-SelectNonprofit-display-notification-blip":"true"},t=this.nonprofitListDataController?.data?.config?.web?.theme||{},i={...e,...t};return Object.assign(Object.create({toCSS(){return H(this)}}),i)}render(){const{selectedNonprofitId:e}=this,{data:t,loading:i}=this.nonprofitListDataController;if(i&&!t)return ee();if(this.nonprofitListDataController.error)return this.debug?$({error:this.nonprofitListDataController.error}):"";if(this.selectionDataController.error&&this.debug)return $({error:this.selectionDataController.error});const o=t?.nonprofits||[],n=o.find(c=>c.nonprofit.id===e)||null,a=!!t?.config?.web?.promo,l=o.some(c=>!c.promo||!c.promo.isActive),u=this.cssVariables["--beam-SelectNonprofit-display-notification-blip"]==="true",y=this.cssVariables["--beam-SelectNonprofit-title-textAlign"]==="center",x=d`<h3 class="title-block d-none d-lg-block" part="title" id="beam-SelectNonprofit-title">
22
+ ${m(this.configLang,t?.config?.web?.title||"")||g[this.configLang].ctaTitle()}
23
+ </h3>`,B=()=>a?d`<div
24
24
  class="${this.isMobile?y?"block-header-promo-pill-center-block-container-responsive":"block-header-promo-pill-container-responsive":y?"block-header-promo-pill-center-block-container-responsive":"block-header-promo-pill-container"}"
25
25
  style="${this.isMobile?"display: flex":""}"
26
26
  >
27
- ${C}
28
- <beam-promo-info-pill .promo=${e?.config?.web?.promo}></beam-promo-info-pill>
29
- </div>`:C;return c`
27
+ ${x}
28
+ <beam-promo-info-pill .promo=${t?.config?.web?.promo}></beam-promo-info-pill>
29
+ </div>`:x;return d`
30
30
  <style>
31
31
  :host {
32
32
  ${this.cssVariables.toCSS()}
33
33
  }
34
34
  </style>
35
35
  <div part="heading">
36
- ${L()}
36
+ ${B()}
37
37
  <p class="description" part="description">
38
38
  <span class="d-none d-lg-inline">
39
- ${r?c`<span style="font-weight:bold">
40
- ${p(this.configLang,e?.config?.web?.promoDescriptionPrefix||"")||m[this.configLang].ctaPromoPrefixMessage()}
39
+ ${a?d`<span style="font-weight:bold">
40
+ ${m(this.configLang,t?.config?.web?.promoDescriptionPrefix||"")||g[this.configLang].ctaPromoPrefixMessage()}
41
41
  </span>
42
42
  <span>
43
- ${p(this.configLang,e?.config?.web?.promoDescription||"")||m[this.configLang].ctaPromoMessage()}
44
- </span>`:c`<span>
45
- ${p(this.configLang,e?.config?.web?.description||"")||m[this.configLang].ctaMessage()}
43
+ ${m(this.configLang,t?.config?.web?.promoDescription||"")||g[this.configLang].ctaPromoMessage()}
44
+ </span>`:d`<span>
45
+ ${m(this.configLang,t?.config?.web?.description||"")||g[this.configLang].ctaMessage()}
46
46
  </span>`}
47
47
  </span>
48
48
  <div class="d-lg-none header-inline">
49
49
  <span class="title-inline" part="title">
50
- ${(p(this.configLang,e?.config?.web?.title||"")||m[this.configLang].ctaTitle())+m[this.configLang].inlineSeparator()}
50
+ ${(m(this.configLang,t?.config?.web?.title||"")||g[this.configLang].ctaTitle())+g[this.configLang].inlineSeparator()}
51
51
  </span>
52
52
  <span class="description-inline" part="description">
53
- ${r?c`<span style="font-weight:bold">
54
- ${p(this.configLang,e?.config?.web?.promoDescriptionPrefix||"")||m[this.configLang].ctaPromoPrefixMessage()}
53
+ ${a?d`<span style="font-weight:bold">
54
+ ${m(this.configLang,t?.config?.web?.promoDescriptionPrefix||"")||g[this.configLang].ctaPromoPrefixMessage()}
55
55
  </span>
56
56
  <span>
57
- ${p(this.configLang,e?.config?.web?.promoDescription||"")||m[this.configLang].ctaPromoMessage()}
58
- </span>`:c`<span
59
- >${p(this.configLang,e?.config?.web?.description||"")||m[this.configLang].ctaMessage()}
57
+ ${m(this.configLang,t?.config?.web?.promoDescription||"")||g[this.configLang].ctaPromoMessage()}
58
+ </span>`:d`<span
59
+ >${m(this.configLang,t?.config?.web?.description||"")||g[this.configLang].ctaMessage()}
60
60
  </span>`}
61
61
  </div>
62
62
  </p>
@@ -68,21 +68,21 @@ import{h as x,f as w,y as c,g as f,t as E,q as T,m as M,k as B}from"../chunks/li
68
68
  aria-labelledby="beam-SelectNonprofit-title"
69
69
  style="display: flex; gap: var(--beam-SelectNonprofit-options-gap); margin: 10px 0 0 0;"
70
70
  >
71
- ${T(o,s=>s.nonprofit.id,({nonprofit:s,promo:D},S)=>{const u=t===s.id,z=u||a==null&&S===0,A=D?.isActive&&e?.config.web.promo&&g;return c`
71
+ ${W(o,c=>c.nonprofit.id,({nonprofit:c,promo:F},C)=>{const S=e===c.id,K=S||n==null&&C===0,_=F?.isActive&&t?.config.web.promo&&l&&u;return d`
72
72
  <div
73
73
  class="option"
74
74
  part="option"
75
75
  role="radio"
76
- tabindex="${z?0:-1}"
77
- data-value=${s.id}
78
- aria-checked=${u}
79
- @click=${this.makeHandleSelect(s.id,S,o)}
80
- @keydown=${this.makeHandleSelect(s.id,S,o)}
81
- aria-label="${p(this.configLang,s.cause||"")}"
82
- style="${M({cursor:"pointer",flex:"1",textAlign:"center",lineHeight:"1",marginTop:"var(--beam-SelectNonprofit-options-marginTop, 0px)",padding:"var(--beam-SelectNonprofit-options-padding, 10px)",borderWidth:"var(--beam-SelectNonprofit-options-borderWidth, 1px)",borderStyle:"solid",position:"relative",borderRadius:"var(--beam-SelectNonprofit-options-borderRadius, 0)",borderColor:u?s.causeColor||"var(--beam-SelectNonprofit-options--selected-borderColor, currentColor)":"var(--beam-SelectNonprofit-options-borderColor, currentColor)",backgroundColor:u?s.causeColor||"var(--beam-SelectNonprofit-options--selected-backgroundColor, currentColor)":"var(--beam-SelectNonprofit-options-backgroundColor, transparent)"})}"
76
+ tabindex="${K?0:-1}"
77
+ data-value=${c.id}
78
+ aria-checked=${S}
79
+ @click=${this.makeHandleSelect(c.id,C,o)}
80
+ @keydown=${this.makeHandleSelect(c.id,C,o)}
81
+ aria-label="${m(this.configLang,c.cause||"")}"
82
+ style="${U({cursor:"pointer",flex:"1",textAlign:"center",lineHeight:"1",marginTop:"var(--beam-SelectNonprofit-options-marginTop, 0px)",padding:"var(--beam-SelectNonprofit-options-padding, 10px)",borderWidth:"var(--beam-SelectNonprofit-options-borderWidth, 1px)",borderStyle:"solid",position:"relative",borderRadius:"var(--beam-SelectNonprofit-options-borderRadius, 0)",borderColor:S?c.causeColor||"var(--beam-SelectNonprofit-options--selected-borderColor, currentColor)":"var(--beam-SelectNonprofit-options-borderColor, currentColor)",backgroundColor:S?c.causeColor||"var(--beam-SelectNonprofit-options--selected-backgroundColor, currentColor)":"var(--beam-SelectNonprofit-options-backgroundColor, transparent)"})}"
83
83
  >
84
84
  <img
85
- src="${u?s.causeIconSelectedUrl:s.causeIconUrl}"
85
+ src="${S?c.causeIconSelectedUrl:c.causeIconUrl}"
86
86
  alt=""
87
87
  role="presentation"
88
88
  style="
@@ -91,11 +91,11 @@ import{h as x,f as w,y as c,g as f,t as E,q as T,m as M,k as B}from"../chunks/li
91
91
  vertical-align: -webkit-baseline-middle;
92
92
  "
93
93
  />
94
- ${A?c`<beam-notification-blip></beam-notification-blip>`:c``}
94
+ ${_?d`<beam-notification-blip></beam-notification-blip>`:d``}
95
95
  </div>
96
96
  `})}
97
97
  </div>
98
- ${a!=null?c`
98
+ ${n!=null?d`
99
99
  <div
100
100
  class="details"
101
101
  part="details"
@@ -106,47 +106,47 @@ import{h as x,f as w,y as c,g as f,t as E,q as T,m as M,k as B}from"../chunks/li
106
106
  padding: var(--beam-SelectNonprofit-details-padding);
107
107
  margin-top: var(--beam-SelectNonprofit-details-marginTop);
108
108
  "
109
- aria-label="Funding information for selected nonprofit ${a.nonprofit?.name}. Powered by Beam"
109
+ aria-label="Funding information for selected nonprofit ${n.nonprofit?.name}. Powered by Beam"
110
110
  >
111
111
  <div
112
112
  style="display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap-reverse"
113
113
  >
114
114
  <span
115
115
  class="details-cause"
116
- style="flex: 0 1; white-space: nowrap; ${h("--beam-SelectNonprofit-details-cause")}"
116
+ style="flex: 0 1; white-space: nowrap; ${b("--beam-SelectNonprofit-details-cause")}"
117
117
  >
118
- ${a?.promo?.isActive&&g?e?.config.web.promo?.["promo-cause-alt-text"]||a.nonprofit.cause:p(this.configLang,a.nonprofit.cause||"")}
118
+ ${n?.promo?.isActive&&l?t?.config.web.promo?.["promo-cause-alt-text"]||n.nonprofit.cause:m(this.configLang,n.nonprofit.cause||"")}
119
119
  </span>
120
120
  <div aria-hidden="true">
121
121
  <span
122
122
  class="details-beamAttribution"
123
123
  aria-hidden="true"
124
- style="flex: 0 1; white-space: nowrap; ${h("--beam-SelectNonprofit-details-beamAttribution")}"
124
+ style="flex: 0 1; white-space: nowrap; ${b("--beam-SelectNonprofit-details-beamAttribution")}"
125
125
  >
126
- ${m[this.configLang].beamAttribution()}
126
+ ${g[this.configLang].beamAttribution()}
127
127
  </span>
128
128
  </div>
129
129
  </div>
130
130
  <p class="details-impactDescription">
131
- ${B(p(this.configLang,a.impact.description||""))}
131
+ ${O(m(this.configLang,n.impact.description||""))}
132
132
  </p>
133
133
  <div
134
134
  style="display: flex; margin-top: var(--beam-SelectNonprofit-details-fundingProgress-marginTop); align-items: center;"
135
135
  >
136
136
  <beam-progress-bar
137
- value="${a.impact.goalProgressPercentage}"
137
+ value="${n.impact.goalProgressPercentage}"
138
138
  style="flex: 1 0;"
139
139
  ></beam-progress-bar>
140
140
  <span
141
141
  class="details-fundingProgressLabel"
142
- style="${h("--beam-SelectNonprofit-details-fundingProgressLabel")} white-space: nowrap; text-align: right; flex: 0 1; margin-left: 15px;"
142
+ style="${b("--beam-SelectNonprofit-details-fundingProgressLabel")} white-space: nowrap; text-align: right; flex: 0 1; margin-left: 15px;"
143
143
  >
144
- ${p(this.configLang,a.impact.goalProgressText)}
144
+ ${m(this.configLang,n.impact.goalProgressText)}
145
145
  </span>
146
146
  </div>
147
147
  </div>
148
148
  `:""}
149
- `}}l.tagName="beam-select-nonprofit",l.styles=[q,Y,w`
149
+ `}}s.tagName="beam-select-nonprofit",s.styles=[Y,pe,I`
150
150
  :host {
151
151
  display: block;
152
152
  max-width: var(--beam-SelectNonprofit-maxWidth, 800px);
@@ -159,7 +159,7 @@ import{h as x,f as w,y as c,g as f,t as E,q as T,m as M,k as B}from"../chunks/li
159
159
  }
160
160
 
161
161
  .details-impactDescription {
162
- ${h("--beam-SelectNonprofit-details-impactDescription")}
162
+ ${b("--beam-SelectNonprofit-details-impactDescription")}
163
163
  }
164
164
 
165
165
  .details-impactDescription .nonprofitName {
@@ -171,7 +171,7 @@ import{h as x,f as w,y as c,g as f,t as E,q as T,m as M,k as B}from"../chunks/li
171
171
 
172
172
  .title-block {
173
173
  margin-right: var(--beam-SelectNonprofit-title-block-margin-right);
174
- ${h("--beam-SelectNonprofit-title")}
174
+ ${b("--beam-SelectNonprofit-title")}
175
175
  text-align: var(--beam-SelectNonprofit-title-textAlign);
176
176
  }
177
177
 
@@ -196,7 +196,7 @@ import{h as x,f as w,y as c,g as f,t as E,q as T,m as M,k as B}from"../chunks/li
196
196
  }
197
197
 
198
198
  .description {
199
- ${h("--beam-SelectNonprofit-description")}
199
+ ${b("--beam-SelectNonprofit-description")}
200
200
  text-align: var(--beam-SelectNonprofit-description-textAlign);
201
201
  }
202
202
 
@@ -222,10 +222,15 @@ import{h as x,f as w,y as c,g as f,t as E,q as T,m as M,k as B}from"../chunks/li
222
222
  .block-header-promo-pill-center-block-container-responsive beam-promo-info-pill {
223
223
  order: -1;
224
224
  }
225
+ .option {
226
+ display: flex;
227
+ justify-content: center;
228
+ align-items: center;
229
+ }
225
230
  beam-notification-blip::part(notification-blip-container) {
226
231
  position: absolute;
227
232
  top: var(--beam-SelectNonprofit-notification-blip-top);
228
233
  left: var(--beam-SelectNonprofit-notification-blip-left);
229
234
  }
230
- `],d([f({type:String})],l.prototype,"baseUrl",2),d([f({type:String})],l.prototype,"apiKey",2),d([f({type:Number,reflect:!0})],l.prototype,"storeId",2),d([f({type:String})],l.prototype,"countryCode",2),d([f({type:String})],l.prototype,"postalCode",2),d([f({attribute:!1,hasChanged:(n,t)=>!W(n,t)})],l.prototype,"cart",2),d([f({type:Number,reflect:!0})],l.prototype,"selectedNonprofitId",2),d([f({type:String})],l.prototype,"lang",2),d([f({type:Boolean})],l.prototype,"debug",2),d([f({type:Boolean})],l.prototype,"draftConfig",2),d([E()],l.prototype,"isMobile",2),G(l);export{l as BeamSelectNonprofit};
235
+ `],p([f({type:String})],s.prototype,"baseUrl",2),p([f({type:String})],s.prototype,"apiKey",2),p([f({type:Number,reflect:!0})],s.prototype,"storeId",2),p([f({type:String})],s.prototype,"countryCode",2),p([f({type:String})],s.prototype,"postalCode",2),p([f({attribute:!1,hasChanged:(r,e)=>!j(r,e)})],s.prototype,"cart",2),p([f({type:Number,reflect:!0})],s.prototype,"selectedNonprofitId",2),p([f({type:String})],s.prototype,"lang",2),p([f({type:Boolean})],s.prototype,"debug",2),p([f({type:Boolean})],s.prototype,"draftConfig",2),p([f({type:String})],s.prototype,"promoCodes",2),p([f({type:String})],s.prototype,"domain",2),p([P()],s.prototype,"isMobile",2),p([P()],s.prototype,"pluginPromoCodes",2),Z(s);export{s as BeamSelectNonprofit};
231
236
  //# sourceMappingURL=select-nonprofit.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"select-nonprofit.esm.js","sources":["../../src/shared/components/notification-blip.ts","../../src/components/select-nonprofit/strings.ts","../../src/components/select-nonprofit/index.ts"],"sourcesContent":["import { LitElement, html, css } from \"lit\";\n\nclass BeamNotificationBlip extends LitElement {\n static get styles() {\n return css`\n :host {\n }\n\n .notification-blip {\n background-color: var(--beam-notificationBlip-color-background, #000);\n border-radius: 50%;\n width: 12px;\n height: 12px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 12px;\n }\n `;\n }\n\n render() {\n return html`<div\n class=\"notification-blip-container\"\n part=\"notification-blip-container\"\n aria-label=\"Notification Blip\"\n >\n <span class=\"notification-blip\" part=\"notification-blip\" role=\"button\" tabindex=\"0\" aria-hidden=\"true\"></span>\n </div>`;\n }\n}\n\ncustomElements.get(\"beam-notification-blip\") || customElements.define(\"beam-notification-blip\", BeamNotificationBlip);\n\nexport const notificationBlipConfigDefaults = {\n \"--beam-notificationBlip-color-background\": \"#000\",\n} as const;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-notification-blip\": BeamNotificationBlip;\n }\n}\n","export const strings = {\n en: {\n beamAttribution: () => `Powered by Beam`,\n ctaTitle: () => `Choose your impact`,\n ctaPromoPrefixMessage: () => `At no extra cost,`,\n ctaPromoMessage: ({ donationPercentage = \"1\" } = {}) =>\n `select a nonprofit and ${donationPercentage}% of your purchase will be donated.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `At no extra cost, select a nonprofit and ${donationPercentage}% of your purchase will be donated.`,\n inlineSeparator: () => `: `,\n },\n fr: {\n beamAttribution: () => `Optimisé par Beam`,\n ctaTitle: () => `Choisissez votre cause`,\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Sans frais supplémentaires, choisissez un organisme à but non lucratif et ${donationPercentage} % lui sera versé en votre nom.`,\n inlineSeparator: () => ` : `,\n },\n de: {\n beamAttribution: () => `Unterstützt von Beam`,\n ctaTitle: () => `Wähle deinen Impact`,\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Ohne zusätzliche Kosten, wähle eine der gemeinnützigen Organisationen und spende ${donationPercentage}% deines Einkaufs`,\n inlineSeparator: () => `: `,\n },\n es: {\n beamAttribution: () => \"Ofrecido por Beam\",\n ctaTitle: () => \"Elige tu contribución\",\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Sin coste adicional, elige una organización sin fines de lucro y donaremos ${donationPercentage}% de tu compra.`,\n inlineSeparator: () => \": \",\n },\n it: {\n beamAttribution: () => \"Gestito da Beam\",\n ctaTitle: () => \"Scegli dove fare la differenza\",\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Senza costi aggiuntivi, seleziona un'organizzazione no-profit a cui devolvere l’${donationPercentage}% del tuo acquisto`,\n inlineSeparator: () => \": \",\n },\n pl: {\n beamAttribution: () => `Wspierany przez Beam`,\n ctaTitle: () => `Wybierz inicjatywę, którą chcesz wesprzeć`,\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Bez żadnych dodatkowych kosztów wybierz organizację, której przekażesz ${donationPercentage}% wartości Twoich zakupów!`,\n inlineSeparator: () => `: `,\n },\n};\n","import { css, html, LitElement, PropertyValues } from \"lit\";\nimport { repeat } from \"lit/directives/repeat.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport { property } from \"lit/decorators/property.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport debounce from \"lodash-es/debounce\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES, WIDGET_NAMES } from \"../../api-sdk/constants\";\nimport \"../../shared/components/progress-bar\";\nimport \"../../shared/components/promo-pill-label\";\nimport \"../../shared/components/notification-blip\";\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 { isEqual, logger } from \"../../utils\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { TNumericId } from \"../../shared/types\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { postChainEligibleNonprofitsForCart, postSelectNonprofit } from \"../../api-sdk/v3/routes\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { BeamCartChangeEvent, BeamNonprofitSelectEvent, BeamNonprofitSelectionRemovedEvent } from \"../../utils/events\";\nimport { localizeUserString } from \"../../shared/localize\";\nimport { progressBarConfigDefaults } from \"../../shared/components/progress-bar\";\nimport { cssResponsiveUtils } from \"../../shared/responsive\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { notificationBlipConfigDefaults } from \"../../shared/components/notification-blip\";\nimport { promoPillLabelConfigDefaults } from \"../../shared/components/promo-pill-label\";\nimport { getBeamCartId, getExternalCartId } from \"../../utils/cart\";\nimport { strings } from \"./strings\";\n\ninterface RequiredConfig {\n apiKey: string;\n storeId: TNumericId; // Can be set async by postalCode + countryCode lookup\n}\n\nexport class BeamSelectNonprofit extends LitElement {\n static tagName = \"beam-select-nonprofit\";\n\n @property({ type: String }) public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String }) public apiKey?: RequiredConfig[\"apiKey\"];\n\n // storeId can be omitted if countryCode + postalCode are provided\n @property({ type: Number, reflect: true }) public storeId?: TNumericId;\n\n @property({ type: String }) public countryCode?: string;\n\n @property({ type: String }) public postalCode?: string;\n\n @property({ attribute: false, hasChanged: (a, b) => !isEqual(a, b) }) public cart?: TCart;\n\n @property({ type: Number, reflect: true }) public selectedNonprofitId: TNumericId | null = null;\n\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n\n @property({ type: Boolean }) public debug = false;\n\n @property({ type: Boolean }) public draftConfig = false;\n\n @state() private isMobile = window.innerWidth < 768;\n\n private enableNonprofitDeselection = false;\n\n private selectionId?: string;\n\n private didTryToCreateNewSelectionFromCache = false; // Should only create selection once\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n private getChainNonprofits = async () => {\n // logger.debug(\"[select-nonprofit][getChainNonprofits]\");\n if (!enforceConfig<RequiredConfig>([\"apiKey\"], this)) {\n throw new MissingConfig();\n }\n\n const cart: any = this.cart?.content\n ? {\n schema: this.cart?.schema,\n content: this.cart?.content,\n }\n : undefined;\n\n // We use a POST method because we send a nested JSON with data that we don't want to serialize/expose in URL\n const res = await postChainEligibleNonprofitsForCart({\n baseUrl: this.baseUrl,\n apiRoot: \"/api/v3\",\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n storeId: this.storeId,\n widgetName: WIDGET_NAMES.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 cart,\n },\n });\n\n this.enableNonprofitDeselection = !!res.config.enableNonprofitDeselection;\n\n // Reset selection if list doesn't include the current selected nonprofit and if it's not set to null\n if (\n this.selectedNonprofitId !== null &&\n this.selectedNonprofitId &&\n !res.nonprofits.map((np) => np.nonprofit.id).includes(this.selectedNonprofitId)\n ) {\n this.selectedNonprofitId = null;\n await this.postSelectNonprofit({ selectedNonprofitId: null });\n this.localStorage.setItem(\"nonprofit\", null);\n }\n\n // If store ID was not provided, get the store ID from response here\n if (res.store?.id && res.store.id !== this.storeId) {\n this.storeId = res.store.id;\n }\n\n await this.createNewSelectionForCachedNonprofit();\n\n this.localStorage.setItemJson(\"chainNonprofits\", {\n createdAt: new Date(),\n data: res,\n });\n\n return res;\n };\n\n private postSelectNonprofit = async ({ selectedNonprofitId }: { selectedNonprofitId: TNumericId | null }) => {\n if (!enforceConfig<RequiredConfig>([\"apiKey\", \"storeId\"], this)) {\n throw new MissingConfig();\n }\n\n const cartId = getExternalCartId(\"cart\", { apiKey: this.apiKey });\n const beamCartId = getBeamCartId(BEAM_CART_COOKIE_NAME, { apiKey: this.apiKey });\n const result = await postSelectNonprofit({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n nonprofitId: selectedNonprofitId,\n selectionId: this.selectionId,\n storeId: this.storeId,\n cartId: cartId ? cartId : undefined,\n beamCartId: beamCartId ? beamCartId : undefined,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n },\n });\n\n this.selectionId = result?.selectionId;\n this.localStorage.setItem(\"transaction\", this.selectionId);\n this.localStorage.setItem(\"nonprofit\", selectedNonprofitId);\n this.localStorage.setItem(\"nonprofit_selected_at\", new Date().toISOString());\n\n await this.updateComplete;\n\n const selectedNonprofit = this.getNonprofitById(selectedNonprofitId);\n\n if (selectedNonprofitId !== null)\n this.dispatchEvent(\n new BeamNonprofitSelectEvent({\n selectedNonprofitId,\n selectionId: this.selectionId,\n nonprofitName: selectedNonprofit?.nonprofit?.name ?? null,\n source: WIDGET_NAMES.select_nonprofit,\n })\n );\n if (selectedNonprofitId === null)\n this.dispatchEvent(\n new BeamNonprofitSelectionRemovedEvent({\n newNonprofitId: null,\n selectionId: this.selectionId,\n })\n );\n };\n\n private nonprofitListDataController = new AsyncController<typeof this.getChainNonprofits>(\n this,\n this.getChainNonprofits\n );\n\n private selectionDataController = new AsyncController<typeof this.postSelectNonprofit>(\n this,\n this.postSelectNonprofit\n );\n\n private localStorage = createScopedLocalStorage(this as LitElement & RequiredConfig);\n\n private getNonprofitById(selectedNonprofitId: number | null) {\n if (!selectedNonprofitId) return null;\n return this.nonprofitListDataController?.data?.nonprofits.find((np) => np.nonprofit.id === selectedNonprofitId);\n }\n\n private handleCartChange = (evt: BeamCartChangeEvent) => {\n this.cart = evt.detail;\n };\n\n async connectedCallback() {\n // logger.debug(\"[select-nonprofit][connectedCallback]\");\n super.connectedCallback();\n\n this.nonprofitListDataController.loading = true;\n window.addEventListener(BeamCartChangeEvent.eventName, this.handleCartChange as EventListener);\n window.addEventListener(\"resize\", this.evaluateBreakPoints);\n }\n\n async firstUpdated() {\n await this.restoreStateFromCache();\n }\n\n async updated(changedProperties: PropertyValues) {\n // logger.debug(\"[select-nonprofit][updated] changedProperties\", changedProperties);\n\n // Reload nonprofit list on change of any of these props:\n // Also fires on first load as props go from undefined => value\n const requireNewDataProps = [\"baseUrl\", \"storeId\", \"apiKey\", \"countryCode\", \"postalCode\", \"cart\", \"lang\"];\n for (const prop of requireNewDataProps) {\n if (changedProperties.has(prop)) {\n // logger.debug(\n // \"[select-nonprofit][updated] triggering new load from prop change\",\n // prop,\n // changedProperties.get(prop)\n // );\n await this.nonprofitListDataController.exec();\n break;\n }\n }\n }\n\n disconnectedCallback() {\n window.removeEventListener(BeamCartChangeEvent.eventName, this.handleCartChange as EventListener);\n window.removeEventListener(\"resize\", this.evaluateBreakPoints);\n super.disconnectedCallback();\n }\n\n private async restoreStateFromCache() {\n try {\n const currentTimestamp = new Date().valueOf();\n\n this.cart = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\") ?? undefined;\n\n // Restore the previous nonprofit selection unless it exceeds the defined time limit, in which case clear the selection\n // (Note: localStorage key is called \"transaction\" for backwards compatibility with legacy SDK)\n const selectionTtl = 30 * 24 * 60 * 60 * 1000; // 30 days in milliseconds\n const selectionCreatedAt = this.localStorage.getItem(\"nonprofit_selected_at\") ?? 0;\n const isSelectionExpired = currentTimestamp > new Date(selectionCreatedAt).valueOf() + selectionTtl;\n if (!isSelectionExpired) {\n this.selectedNonprofitId = parseInt(this.localStorage.getItem(\"nonprofit\") || \"\") || null;\n this.selectionId = this.localStorage.getItem(\"transaction\") ?? undefined;\n } else if (isSelectionExpired && this.selectedNonprofitId !== null) {\n await this.postSelectNonprofit({ selectedNonprofitId: null });\n this.localStorage.setItem(\"nonprofit\", null);\n }\n\n // Try to restore nonprofit list if we have data and it's not too old\n // list will continue to refresh async and replace this data when ready\n const { createdAt = 0, data } =\n this.localStorage.getItemJson<{ createdAt: string; data: any }>(\"chainNonprofits\") || {};\n const cacheTtl = 2 * 60 * 60 * 1000; // 2 hours in milliseconds\n const isCacheExpired = currentTimestamp > new Date(createdAt).valueOf() + cacheTtl;\n if (!isCacheExpired && this.nonprofitListDataController.loading) {\n this.nonprofitListDataController.data = data;\n this.nonprofitListDataController.loading = false;\n }\n } catch (err) {\n logger.error(err);\n // ignore cache retrieval error and continue to fetch data\n }\n }\n\n private async createNewSelectionForCachedNonprofit() {\n if (!enforceConfig<RequiredConfig>([\"apiKey\"], this)) {\n throw new MissingConfig();\n }\n if (!this.storeId || this.didTryToCreateNewSelectionFromCache) {\n return; // storeId can be set async as a result of calling find nonprofits with postalCode + zipCode\n }\n try {\n // Immediately set flag to prevent more cache restore attempts from triggering\n this.didTryToCreateNewSelectionFromCache = true;\n\n // Create a new selection ID for the session (e.g., if restoring nonprofit after a completed order)\n\n if (this.selectedNonprofitId) {\n if (!this.selectionId) {\n await this.selectionDataController.exec({ selectedNonprofitId: this.selectedNonprofitId });\n }\n const selectedNonprofit = this.getNonprofitById(this.selectedNonprofitId);\n this.dispatchEvent(\n new BeamNonprofitSelectEvent({\n selectedNonprofitId: this.selectedNonprofitId,\n selectionId: this.selectionId,\n nonprofitName: selectedNonprofit?.nonprofit?.name,\n source: WIDGET_NAMES.select_nonprofit,\n })\n );\n }\n } catch (err) {\n // Ignore error\n }\n }\n\n /**\n * Factory for selection event handler\n *\n * Nonprofit selector implements radio-button semantics:\n * * If nothing is selected, tabbing into selector selects first card\n * * Arrow keys changes focus between cards, but doesn't select\n * * Enter/Space sets selection\n * * If a nonprofit is selected, arrow keys change focus AND selection\n * * Click sets selection\n * @param {number} id\n * @param {number} index\n * @param {{id: number}[]} nonprofits\n * @returns {(evt: Event) => void}\n */\n private makeHandleSelect =\n (id: number, index: number, nonprofits: { nonprofit: { id: number } }[]) => 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 if (index === 0) {\n nextFocus = nonprofits[nonprofits.length - 1];\n } else {\n nextFocus = nonprofits[index - 1];\n }\n evt.preventDefault();\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n if (index === nonprofits.length - 1) {\n nextFocus = nonprofits[0];\n } else {\n nextFocus = nonprofits[index + 1];\n }\n evt.preventDefault();\n break;\n case \"Enter\":\n case \" \":\n evt.preventDefault();\n break; // continue to toggle-selection block below\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 // Handle selection with click or Enter/Space key\n const targetEl = evt.currentTarget;\n if (targetEl instanceof HTMLElement) {\n if (currentId === id) {\n if (this.enableNonprofitDeselection) {\n this.selectedNonprofitId = null; // unset\n this.localStorage.setItem(\"nonprofit\", null);\n } else {\n return;\n }\n } else {\n this.selectedNonprofitId = id;\n }\n }\n await this.selectionDataController.exec({ selectedNonprofitId: this.selectedNonprofitId });\n };\n\n evaluateBreakPoints = debounce(\n () => {\n this.isMobile = window.innerWidth < 768;\n },\n 50,\n { maxWait: 50, leading: true }\n );\n\n public get cssVariables() {\n const defaults = {\n \"--beam-fontFamily\": \"inherit\",\n \"--beam-fontStyle\": \"inherit\",\n \"--beam-fontSize\": \"inherit\",\n \"--beam-textColor\": \"inherit\",\n \"--beam-backgroundColor\": \"inherit\",\n ...progressBarConfigDefaults,\n \"--beam-SelectNonprofit-title-textAlign\": \"inherit\",\n \"--beam-SelectNonprofit-description-textAlign\": \"inherit\",\n \"--beam-SelectNonprofit-maxWidth\": \"800px\",\n \"--beam-SelectNonprofit-options-marginTop\": \"0px\",\n \"--beam-SelectNonprofit-options-iconHeight\": \"24px\",\n \"--beam-SelectNonprofit-options-padding\": \"10px\",\n \"--beam-SelectNonprofit-options-borderRadius\": \"0px\",\n \"--beam-SelectNonprofit-options-borderColor\": \"currentColor\",\n \"--beam-SelectNonprofit-options--selected-borderColor\": \"currentColor\",\n \"--beam-SelectNonprofit-options-backgroundColor\": \"transparent\",\n \"--beam-SelectNonprofit-options-gap\": \"8px\",\n \"--beam-SelectNonprofit-options--selected-backgroundColor\": \"currentColor\",\n \"--beam-SelectNonprofit-details-marginTop\": \"10px\",\n \"--beam-SelectNonprofit-details-borderRadius\": \"0px\",\n \"--beam-SelectNonprofit-details-borderColor\": \"currentColor\",\n \"--beam-SelectNonprofit-details-backgroundColor\": \"inherit\",\n \"--beam-SelectNonprofit-details-padding\": \"10px\",\n ...defineCustomText(\"--beam-SelectNonprofit-title\", {\n fontSize: \"1.25em\",\n fontWeight: \"bold\",\n }),\n \"--beam-SelectNonprofit-header-inline-lineHeight\": \"inherit\",\n ...defineCustomText(\"--beam-SelectNonprofit-title-inline\", {\n fontWeight: \"bold\",\n }),\n \"--beam-SelectNonprofit-title-inline-textTransform\": \"none\",\n \"--beam-SelectNonprofit-title-block-margin-right\": \"8px\",\n ...defineCustomText(\"--beam-SelectNonprofit-description\", {\n marginTop: \"0.5em\",\n }),\n ...defineCustomText(\"--beam-SelectNonprofit-description-inline\"),\n ...defineCustomText(\"--beam-SelectNonprofit-details-cause\", {\n fontSize: \"0.85em\",\n fontWeight: \"bold\",\n }),\n ...defineCustomText(\"--beam-SelectNonprofit-details-beamAttribution\", {\n fontSize: \"0.85em\",\n }),\n ...defineCustomText(\"--beam-SelectNonprofit-details-impactDescription\", {\n fontSize: \"1em\",\n marginTop: \"10px\",\n }),\n \"--beam-SelectNonprofit-details-nonprofitName-fontWeight\": \"bold\",\n \"--beam-SelectNonprofit-details-nonprofitName-fontStyle\": \"inherit\",\n \"--beam-SelectNonprofit-details-fundingProgress-marginTop\": \"10px\",\n ...defineCustomText(\"--beam-SelectNonprofit-details-fundingProgressLabel\", {\n fontSize: \"0.85em\",\n }),\n ...notificationBlipConfigDefaults,\n ...promoPillLabelConfigDefaults,\n \"--beam-SelectNonprofit-promo-block-header-justifyContent\": \"initial\",\n \"--beam-SelectNonprofit-notification-blip-top\": \"4px\",\n \"--beam-SelectNonprofit-notification-blip-left\": \"50%\",\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 max-width: var(--beam-SelectNonprofit-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-SelectNonprofit-details-impactDescription\")}\n }\n\n .details-impactDescription .nonprofitName {\n font-weight: var(--beam-SelectNonprofit-details-nonprofitName-fontWeight);\n font-style: var(--beam-SelectNonprofit-details-nonprofitName-fontStyle, inherit);\n }\n\n /* Note: title/description display is responsive */\n\n .title-block {\n margin-right: var(--beam-SelectNonprofit-title-block-margin-right);\n ${useCustomText(\"--beam-SelectNonprofit-title\")}\n text-align: var(--beam-SelectNonprofit-title-textAlign);\n }\n\n .header-inline {\n line-height: var(--beam-SelectNonprofit-header-inline-lineHeight);\n }\n\n .title-inline {\n font-size: var(--beam-SelectNonprofit-title-inline-fontSize);\n font-weight: var(--beam-SelectNonprofit-title-inline-fontWeight);\n color: var(--beam-SelectNonprofit-title-inline-color);\n font-family: var(--beam-SelectNonprofit-title-inline-fontFamily);\n text-transform: var(--beam-SelectNonprofit-title-inline-textTransform);\n }\n\n .description-inline {\n font-family: var(--beam-SelectNonprofit-description-inline-fontFamily);\n font-weight: var(--beam-SelectNonprofit-description-inline-fontWeight);\n color: var(--beam-SelectNonprofit-description-inline-color);\n text-transform: var(--beam-SelectNonprofit-description-inline-textTransform);\n font-size: var(--beam-SelectNonprofit-description-inline-fontSize);\n }\n\n .description {\n ${useCustomText(\"--beam-SelectNonprofit-description\")}\n text-align: var(--beam-SelectNonprofit-description-textAlign);\n }\n\n .block-header-promo-pill-container {\n display: flex;\n align-items: center;\n justify-content: var(--beam-SelectNonprofit-promo-block-header-justifyContent);\n }\n\n .block-header-promo-pill-container-responsive {\n flex-direction: column;\n align-items: flex-start;\n }\n .block-header-promo-pill-center-block-container-responsive {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n }\n .block-header-promo-pill-container-responsive beam-promo-info-pill {\n order: -1;\n }\n .block-header-promo-pill-center-block-container-responsive beam-promo-info-pill {\n order: -1;\n }\n beam-notification-blip::part(notification-blip-container) {\n position: absolute;\n top: var(--beam-SelectNonprofit-notification-blip-top);\n left: var(--beam-SelectNonprofit-notification-blip-left);\n }\n `,\n ];\n\n protected render() {\n const { selectedNonprofitId } = this;\n const { data, loading } = this.nonprofitListDataController;\n\n if (loading && !data) {\n return _loading();\n }\n if (this.nonprofitListDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.nonprofitListDataController.error });\n }\n return \"\";\n }\n if (this.selectionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.selectionDataController.error });\n }\n // do not show error screen for interactive errors by default\n }\n const nonprofits = data?.nonprofits || [];\n const selectedNonprofit = nonprofits.find((np) => np.nonprofit.id === selectedNonprofitId) || null;\n const shouldUseNewPromoUI = !!data?.config?.web?.promo;\n const hasNonprofitWithInactivePromo = nonprofits.some((nonprofit) => !nonprofit.promo || !nonprofit.promo.isActive);\n const isTitleTextCenterAligned = this.cssVariables[\"--beam-SelectNonprofit-title-textAlign\"] === \"center\";\n const defaultHeader = html`<h3 class=\"title-block d-none d-lg-block\" part=\"title\" id=\"beam-SelectNonprofit-title\">\n ${localizeUserString(this.configLang, data?.config?.web?.title || \"\") || strings[this.configLang].ctaTitle()}\n </h3>`;\n const renderHeader = () => {\n return shouldUseNewPromoUI\n ? html`<div\n class=\"${this.isMobile\n ? isTitleTextCenterAligned\n ? \"block-header-promo-pill-center-block-container-responsive\"\n : \"block-header-promo-pill-container-responsive\"\n : isTitleTextCenterAligned\n ? \"block-header-promo-pill-center-block-container-responsive\"\n : \"block-header-promo-pill-container\"}\"\n style=\"${this.isMobile ? \"display: flex\" : \"\"}\"\n >\n ${defaultHeader}\n <beam-promo-info-pill .promo=${data?.config?.web?.promo}></beam-promo-info-pill>\n </div>`\n : defaultHeader;\n };\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n <div part=\"heading\">\n ${renderHeader()}\n <p class=\"description\" part=\"description\">\n <span class=\"d-none d-lg-inline\">\n ${\n shouldUseNewPromoUI\n ? html`<span style=\"font-weight:bold\">\n ${localizeUserString(this.configLang, data?.config?.web?.promoDescriptionPrefix || \"\") ||\n strings[this.configLang].ctaPromoPrefixMessage()}\n </span>\n <span>\n ${localizeUserString(this.configLang, data?.config?.web?.promoDescription || \"\") ||\n strings[this.configLang].ctaPromoMessage()}\n </span>`\n : html`<span>\n ${localizeUserString(this.configLang, data?.config?.web?.description || \"\") ||\n strings[this.configLang].ctaMessage()}\n </span>`\n }\n </span>\n <div class=\"d-lg-none header-inline\">\n <span class=\"title-inline\" part=\"title\">\n ${\n (localizeUserString(this.configLang, data?.config?.web?.title || \"\") ||\n strings[this.configLang].ctaTitle()) + strings[this.configLang].inlineSeparator()\n }\n </span>\n <span class=\"description-inline\" part=\"description\">\n ${\n shouldUseNewPromoUI\n ? html`<span style=\"font-weight:bold\">\n ${localizeUserString(this.configLang, data?.config?.web?.promoDescriptionPrefix || \"\") ||\n strings[this.configLang].ctaPromoPrefixMessage()}\n </span>\n <span>\n ${localizeUserString(this.configLang, data?.config?.web?.promoDescription || \"\") ||\n strings[this.configLang].ctaPromoMessage()}\n </span>`\n : html`<span\n >${localizeUserString(this.configLang, data?.config?.web?.description || \"\") ||\n strings[this.configLang].ctaMessage()}\n </span>`\n }\n </div>\n </p>\n </div>\n <div\n class=\"options\"\n part=\"options\"\n role=\"radiogroup\"\n aria-labelledby=\"beam-SelectNonprofit-title\"\n style=\"display: flex; gap: var(--beam-SelectNonprofit-options-gap); margin: 10px 0 0 0;\"\n >\n ${repeat(\n nonprofits,\n (i) => i.nonprofit.id,\n ({ nonprofit, promo }, index) => {\n const isSelected = selectedNonprofitId === nonprofit.id;\n const isFocusable = isSelected || (selectedNonprofit == null && index === 0);\n const shouldAddPromoBlip = promo?.isActive && data?.config.web.promo && hasNonprofitWithInactivePromo;\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=\"${localizeUserString(this.configLang, nonprofit.cause || \"\")}\"\n style=\"${styleMap({\n cursor: \"pointer\",\n flex: \"1\",\n textAlign: \"center\",\n lineHeight: \"1\",\n marginTop: \"var(--beam-SelectNonprofit-options-marginTop, 0px)\",\n padding: \"var(--beam-SelectNonprofit-options-padding, 10px)\",\n borderWidth: \"var(--beam-SelectNonprofit-options-borderWidth, 1px)\",\n borderStyle: \"solid\",\n position: \"relative\",\n borderRadius: \"var(--beam-SelectNonprofit-options-borderRadius, 0)\",\n borderColor: isSelected\n ? nonprofit.causeColor || \"var(--beam-SelectNonprofit-options--selected-borderColor, currentColor)\"\n : \"var(--beam-SelectNonprofit-options-borderColor, currentColor)\",\n backgroundColor: isSelected\n ? nonprofit.causeColor ||\n \"var(--beam-SelectNonprofit-options--selected-backgroundColor, currentColor)\"\n : \"var(--beam-SelectNonprofit-options-backgroundColor, transparent)\",\n })}\"\n >\n <img\n src=\"${isSelected ? nonprofit.causeIconSelectedUrl : nonprofit.causeIconUrl}\"\n alt=\"\"\n role=\"presentation\"\n style=\"\n height: var(--beam-SelectNonprofit-options-iconHeight, 24px);\n user-select: none;\n vertical-align: -webkit-baseline-middle;\n \"\n />\n ${shouldAddPromoBlip ? html`<beam-notification-blip></beam-notification-blip>` : html``}\n </div>\n `;\n }\n )}\n </div>\n ${\n selectedNonprofit != null\n ? html`\n <div\n class=\"details\"\n part=\"details\"\n style=\"\n border: 1px solid var(--beam-SelectNonprofit-details-borderColor);\n border-radius: var(--beam-SelectNonprofit-details-borderRadius);\n background-color: var(--beam-SelectNonprofit-details-backgroundColor);\n padding: var(--beam-SelectNonprofit-details-padding);\n margin-top: var(--beam-SelectNonprofit-details-marginTop);\n \"\n aria-label=\"Funding information for selected nonprofit ${selectedNonprofit.nonprofit\n ?.name}. Powered by Beam\"\n >\n <div\n style=\"display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap-reverse\"\n >\n <span\n class=\"details-cause\"\n style=\"flex: 0 1; white-space: nowrap; ${useCustomText(\"--beam-SelectNonprofit-details-cause\")}\"\n >\n ${selectedNonprofit?.promo?.isActive && hasNonprofitWithInactivePromo\n ? data?.config.web.promo?.[\"promo-cause-alt-text\"] || selectedNonprofit.nonprofit.cause\n : localizeUserString(this.configLang, selectedNonprofit.nonprofit.cause || \"\")}\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-SelectNonprofit-details-beamAttribution\"\n )}\"\n >\n ${strings[this.configLang].beamAttribution()}\n </span>\n </div>\n </div>\n <p class=\"details-impactDescription\">\n ${unsafeHTML(localizeUserString(this.configLang, selectedNonprofit.impact.description || \"\"))}\n </p>\n <div\n style=\"display: flex; margin-top: var(--beam-SelectNonprofit-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-SelectNonprofit-details-fundingProgressLabel\"\n )} white-space: nowrap; text-align: right; flex: 0 1; margin-left: 15px;\"\n >\n ${localizeUserString(this.configLang, selectedNonprofit.impact.goalProgressText)}\n </span>\n </div>\n </div>\n `\n : \"\"\n }\n `;\n }\n}\n\ndefineCustomElement(BeamSelectNonprofit);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-select-nonprofit\": BeamSelectNonprofit;\n }\n}\n"],"names":["BeamNotificationBlip","LitElement","css","html","notificationBlipConfigDefaults","strings","donationPercentage","A","P","s","u","m","t","e","i","n","BeamSelectNonprofit","DEFAULT_BASE_URL","enforceConfig","cart","res","postChainEligibleNonprofitsForCart","WIDGET_NAMES","np","selectedNonprofitId","cartId","getExternalCartId","beamCartId","getBeamCartId","BEAM_CART_COOKIE_NAME","result","postSelectNonprofit","selectedNonprofit","BeamNonprofitSelectEvent","BeamNonprofitSelectionRemovedEvent","AsyncController","createScopedLocalStorage","evt","id","index","nonprofits","currentId","nextFocus","focusTarget","debounce","SUPPORTED_LANGUAGES","BeamCartChangeEvent","changedProperties","requireNewDataProps","prop","currentTimestamp","selectionTtl","selectionCreatedAt","isSelectionExpired","createdAt","data","cacheTtl","err","logger","defaults","progressBarConfigDefaults","defineCustomText","promoPillLabelConfigDefaults","remoteConfig","config","_cssVariableMap","loading","_loading","_errorMessage","shouldUseNewPromoUI","hasNonprofitWithInactivePromo","nonprofit","isTitleTextCenterAligned","defaultHeader","localizeUserString","renderHeader","repeat","promo","isSelected","isFocusable","shouldAddPromoBlip","styleMap","useCustomText","unsafeHTML","cssReset","cssResponsiveUtils","__decorateClass","property","a","b","isEqual","state","defineCustomElement"],"mappings":"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"}
1
+ {"version":3,"file":"select-nonprofit.esm.js","sources":["../../src/shared/components/notification-blip.ts","../../src/components/select-nonprofit/strings.ts","../../src/components/select-nonprofit/index.ts"],"sourcesContent":["import { LitElement, html, css } from \"lit\";\n\nclass BeamNotificationBlip extends LitElement {\n static get styles() {\n return css`\n :host {\n }\n\n .notification-blip {\n background-color: var(--beam-notificationBlip-color-background, #000);\n border-radius: 50%;\n width: 12px;\n height: 12px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 12px;\n }\n `;\n }\n\n render() {\n return html`<div\n class=\"notification-blip-container\"\n part=\"notification-blip-container\"\n aria-label=\"Notification Blip\"\n >\n <span class=\"notification-blip\" part=\"notification-blip\" role=\"button\" tabindex=\"0\" aria-hidden=\"true\"></span>\n </div>`;\n }\n}\n\ncustomElements.get(\"beam-notification-blip\") || customElements.define(\"beam-notification-blip\", BeamNotificationBlip);\n\nexport const notificationBlipConfigDefaults = {\n \"--beam-notificationBlip-color-background\": \"#000\",\n} as const;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-notification-blip\": BeamNotificationBlip;\n }\n}\n","export const strings = {\n en: {\n beamAttribution: () => `Powered by Beam`,\n ctaTitle: () => `Choose your impact`,\n ctaPromoPrefixMessage: () => `At no extra cost,`,\n ctaPromoMessage: ({ donationPercentage = \"1\" } = {}) =>\n `select a nonprofit and ${donationPercentage}% of your purchase will be donated.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `At no extra cost, select a nonprofit and ${donationPercentage}% of your purchase will be donated.`,\n inlineSeparator: () => `: `,\n },\n fr: {\n beamAttribution: () => `Optimisé par Beam`,\n ctaTitle: () => `Choisissez votre cause`,\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Sans frais supplémentaires, choisissez un organisme à but non lucratif et ${donationPercentage} % lui sera versé en votre nom.`,\n inlineSeparator: () => ` : `,\n },\n de: {\n beamAttribution: () => `Unterstützt von Beam`,\n ctaTitle: () => `Wähle deinen Impact`,\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Ohne zusätzliche Kosten, wähle eine der gemeinnützigen Organisationen und spende ${donationPercentage}% deines Einkaufs`,\n inlineSeparator: () => `: `,\n },\n es: {\n beamAttribution: () => \"Ofrecido por Beam\",\n ctaTitle: () => \"Elige tu contribución\",\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Sin coste adicional, elige una organización sin fines de lucro y donaremos ${donationPercentage}% de tu compra.`,\n inlineSeparator: () => \": \",\n },\n it: {\n beamAttribution: () => \"Gestito da Beam\",\n ctaTitle: () => \"Scegli dove fare la differenza\",\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Senza costi aggiuntivi, seleziona un'organizzazione no-profit a cui devolvere l’${donationPercentage}% del tuo acquisto`,\n inlineSeparator: () => \": \",\n },\n pl: {\n beamAttribution: () => `Wspierany przez Beam`,\n ctaTitle: () => `Wybierz inicjatywę, którą chcesz wesprzeć`,\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Bez żadnych dodatkowych kosztów wybierz organizację, której przekażesz ${donationPercentage}% wartości Twoich zakupów!`,\n inlineSeparator: () => `: `,\n },\n};\n","import { css, html, LitElement, PropertyValues } from \"lit\";\nimport { repeat } from \"lit/directives/repeat.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport { property } from \"lit/decorators/property.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport debounce from \"lodash-es/debounce\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES, WIDGET_NAMES } from \"../../api-sdk/constants\";\nimport \"../../shared/components/progress-bar\";\nimport \"../../shared/components/promo-pill-label\";\nimport \"../../shared/components/notification-blip\";\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 { isEqual, logger } from \"../../utils\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { TNumericId } from \"../../shared/types\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { postChainEligibleNonprofitsForCart, postSelectNonprofit } from \"../../api-sdk/v3/routes\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport {\n BeamCartChangeEvent,\n BeamNonprofitSelectEvent,\n BeamNonprofitSelectionRemovedEvent,\n BeamPromoCodesStoredEvent,\n BeamWidgetStoredPromoCodesEvent,\n} from \"../../utils/events\";\nimport { localizeUserString } from \"../../shared/localize\";\nimport { progressBarConfigDefaults } from \"../../shared/components/progress-bar\";\nimport { cssResponsiveUtils } from \"../../shared/responsive\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { notificationBlipConfigDefaults } from \"../../shared/components/notification-blip\";\nimport { promoPillLabelConfigDefaults } from \"../../shared/components/promo-pill-label\";\nimport { getBeamCartId, getExternalCartId } from \"../../utils/cart\";\nimport {\n getPromoCodesFromCart,\n setPromoCodeInCookie,\n parseJsonStringArray,\n formatStoreAndReturnPromoCodes,\n setPromoCodesInLocalStorage,\n isEmptyPromoData,\n} from \"../../utils/promoManager\";\nimport { strings } from \"./strings\";\n\ntype IAPIV3PostChainEligibleNonprofitsForCart = Awaited<ReturnType<typeof postChainEligibleNonprofitsForCart>>;\ninterface RequiredConfig {\n apiKey: string;\n storeId: TNumericId; // Can be set async by postalCode + countryCode lookup\n}\n\nexport class BeamSelectNonprofit extends LitElement {\n static tagName = \"beam-select-nonprofit\";\n\n @property({ type: String }) public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String }) public apiKey?: RequiredConfig[\"apiKey\"];\n\n // storeId can be omitted if countryCode + postalCode are provided\n @property({ type: Number, reflect: true }) public storeId?: TNumericId;\n\n @property({ type: String }) public countryCode?: string;\n\n @property({ type: String }) public postalCode?: string;\n\n @property({ attribute: false, hasChanged: (a, b) => !isEqual(a, b) }) public cart?: TCart;\n\n @property({ type: Number, reflect: true }) public selectedNonprofitId: TNumericId | null = null;\n\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n\n @property({ type: Boolean }) public debug = false;\n\n @property({ type: Boolean }) public draftConfig = false;\n\n @property({ type: String }) public promoCodes?: string;\n\n @property({ type: String }) public domain?: string;\n\n @state() private isMobile = window.innerWidth < 768;\n\n private enableNonprofitDeselection = false;\n\n private selectionId?: string;\n\n private didTryToCreateNewSelectionFromCache = false; // Should only create selection once\n @state() private pluginPromoCodes: string[] = [];\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n get parsedPromoCodes(): string[] {\n return parseJsonStringArray(this.promoCodes);\n }\n\n private handlePromoCodesStored = (evt: BeamPromoCodesStoredEvent) => {\n const promoCodesFromPlugin = (evt.detail.promoCodes?.unvalidatedPromoCodes ?? [])\n .map((c) => c.attributes?.value ?? c.attributes?.url ?? \"\")\n .sort();\n\n this.pluginPromoCodes = promoCodesFromPlugin;\n };\n\n private getManualPromoCodes(): string[] {\n // Priority 1: Widget passed discount codes\n if (this.parsedPromoCodes && this.parsedPromoCodes.length > 0) {\n return this.parsedPromoCodes;\n }\n\n // Priority 2: Cart fallback\n const cart = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\");\n return cart ? getPromoCodesFromCart(cart) : [];\n }\n\n private async handleValidatedPromoCodes(response: IAPIV3PostChainEligibleNonprofitsForCart) {\n if (response.promos?.validatedPromoCodes) {\n await Promise.all([\n setPromoCodesInLocalStorage({\n apiKey: this.apiKey,\n promoCodes: { validatedPromoCodes: response.promos.validatedPromoCodes, unvalidatedPromoCodes: [] },\n }),\n setPromoCodeInCookie({\n validatedPromoCodes: response.promos.validatedPromoCodes,\n domain: this.domain,\n }),\n ]);\n this.dispatchEvent(\n new BeamWidgetStoredPromoCodesEvent({\n source: WIDGET_NAMES.select_nonprofit,\n })\n );\n }\n }\n\n private getChainNonprofits = async () => {\n // logger.debug(\"[select-nonprofit][getChainNonprofits]\");\n if (!enforceConfig<RequiredConfig>([\"apiKey\"], this)) {\n throw new MissingConfig();\n }\n const beamCartId = getBeamCartId(BEAM_CART_COOKIE_NAME, { apiKey: this.apiKey });\n const cartId = getExternalCartId(\"cart\", { apiKey: this.apiKey });\n\n const cart: any = this.cart?.content\n ? {\n schema: this.cart?.schema,\n content: this.cart?.content,\n }\n : undefined;\n\n const manualPromoCodes = this.getManualPromoCodes();\n const formattedPromos = formatStoreAndReturnPromoCodes(\n manualPromoCodes.map((code) => ({ value: code })),\n this.apiKey\n );\n const shouldSendPromos = formattedPromos && !isEmptyPromoData(formattedPromos);\n\n if (shouldSendPromos) {\n this.dispatchEvent(\n new BeamWidgetStoredPromoCodesEvent({\n source: WIDGET_NAMES.select_nonprofit,\n })\n );\n }\n // We use a POST method because we send a nested JSON with data that we don't want to serialize/expose in URL\n const res = await postChainEligibleNonprofitsForCart({\n baseUrl: this.baseUrl,\n apiRoot: \"/api/v3\",\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n storeId: this.storeId,\n widgetName: WIDGET_NAMES.select_nonprofit,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n beamCartId: beamCartId ? beamCartId : undefined,\n cartId: cartId ? cartId : undefined,\n version: \"1.0.0\",\n lang: this.configLang,\n ...(shouldSendPromos && { promos: formattedPromos }),\n options: {\n config: {\n draftConfig: this.draftConfig,\n },\n },\n cart,\n },\n });\n\n this.enableNonprofitDeselection = !!res.config.enableNonprofitDeselection;\n\n // Reset selection if list doesn't include the current selected nonprofit and if it's not set to null\n if (\n this.selectedNonprofitId !== null &&\n this.selectedNonprofitId &&\n !res.nonprofits.map((np) => np.nonprofit.id).includes(this.selectedNonprofitId)\n ) {\n this.selectedNonprofitId = null;\n await this.postSelectNonprofit({ selectedNonprofitId: null });\n this.localStorage.setItem(\"nonprofit\", null);\n }\n\n // If store ID was not provided, get the store ID from response here\n if (res.store?.id && res.store.id !== this.storeId) {\n this.storeId = res.store.id;\n }\n\n await this.createNewSelectionForCachedNonprofit();\n\n this.localStorage.setItemJson(\"chainNonprofits\", {\n createdAt: new Date(),\n data: res,\n });\n\n this.handleValidatedPromoCodes(res);\n return res;\n };\n\n private postSelectNonprofit = async ({ selectedNonprofitId }: { selectedNonprofitId: TNumericId | null }) => {\n if (!enforceConfig<RequiredConfig>([\"apiKey\", \"storeId\"], this)) {\n throw new MissingConfig();\n }\n\n const cartId = getExternalCartId(\"cart\", { apiKey: this.apiKey });\n const beamCartId = getBeamCartId(BEAM_CART_COOKIE_NAME, { apiKey: this.apiKey });\n const result = await postSelectNonprofit({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n nonprofitId: selectedNonprofitId,\n selectionId: this.selectionId,\n storeId: this.storeId,\n cartId: cartId ? cartId : undefined,\n beamCartId: beamCartId ? beamCartId : undefined,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n },\n });\n\n this.selectionId = result?.selectionId;\n this.localStorage.setItem(\"transaction\", this.selectionId);\n this.localStorage.setItem(\"nonprofit\", selectedNonprofitId);\n this.localStorage.setItem(\"nonprofit_selected_at\", new Date().toISOString());\n\n await this.updateComplete;\n\n const selectedNonprofit = this.getNonprofitById(selectedNonprofitId);\n\n if (selectedNonprofitId !== null)\n this.dispatchEvent(\n new BeamNonprofitSelectEvent({\n selectedNonprofitId,\n selectionId: this.selectionId,\n nonprofitName: selectedNonprofit?.nonprofit?.name ?? null,\n source: WIDGET_NAMES.select_nonprofit,\n })\n );\n if (selectedNonprofitId === null)\n this.dispatchEvent(\n new BeamNonprofitSelectionRemovedEvent({\n newNonprofitId: null,\n selectionId: this.selectionId,\n })\n );\n };\n\n private nonprofitListDataController = new AsyncController<typeof this.getChainNonprofits>(\n this,\n this.getChainNonprofits\n );\n\n private selectionDataController = new AsyncController<typeof this.postSelectNonprofit>(\n this,\n this.postSelectNonprofit\n );\n\n private localStorage = createScopedLocalStorage(this as LitElement & RequiredConfig);\n\n private getNonprofitById(selectedNonprofitId: number | null) {\n if (!selectedNonprofitId) return null;\n return this.nonprofitListDataController?.data?.nonprofits.find((np) => np.nonprofit.id === selectedNonprofitId);\n }\n\n private handleCartChange = (evt: BeamCartChangeEvent) => {\n this.cart = evt.detail;\n };\n\n async connectedCallback() {\n // logger.debug(\"[select-nonprofit][connectedCallback]\");\n super.connectedCallback();\n\n this.nonprofitListDataController.loading = true;\n window.addEventListener(BeamCartChangeEvent.eventName, this.handleCartChange as EventListener);\n window.addEventListener(\"resize\", this.evaluateBreakPoints);\n }\n\n async firstUpdated() {\n await this.restoreStateFromCache();\n window.addEventListener(BeamPromoCodesStoredEvent.eventName, this.handlePromoCodesStored as EventListener);\n }\n\n async updated(changedProperties: PropertyValues) {\n // logger.debug(\"[select-nonprofit][updated] changedProperties\", changedProperties);\n\n // Reload nonprofit list on change of any of these props:\n // Also fires on first load as props go from undefined => value\n const requireNewDataProps = [\n \"baseUrl\",\n \"storeId\",\n \"apiKey\",\n \"countryCode\",\n \"postalCode\",\n \"cart\",\n \"lang\",\n \"pluginPromoCodes\",\n ];\n void this.pluginPromoCodes;\n for (const prop of requireNewDataProps) {\n if (changedProperties.has(prop)) {\n // logger.debug(\n // \"[select-nonprofit][updated] triggering new load from prop change\",\n // prop,\n // changedProperties.get(prop)\n // );\n await this.nonprofitListDataController.exec();\n break;\n }\n }\n }\n\n disconnectedCallback() {\n window.removeEventListener(BeamCartChangeEvent.eventName, this.handleCartChange as EventListener);\n window.removeEventListener(\"resize\", this.evaluateBreakPoints);\n window.removeEventListener(BeamPromoCodesStoredEvent.eventName, this.handlePromoCodesStored as EventListener);\n super.disconnectedCallback();\n }\n\n private async restoreStateFromCache() {\n try {\n const currentTimestamp = new Date().valueOf();\n\n this.cart = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\") ?? undefined;\n\n // Restore the previous nonprofit selection unless it exceeds the defined time limit, in which case clear the selection\n // (Note: localStorage key is called \"transaction\" for backwards compatibility with legacy SDK)\n const selectionTtl = 30 * 24 * 60 * 60 * 1000; // 30 days in milliseconds\n const selectionCreatedAt = this.localStorage.getItem(\"nonprofit_selected_at\") ?? 0;\n const isSelectionExpired = currentTimestamp > new Date(selectionCreatedAt).valueOf() + selectionTtl;\n if (!isSelectionExpired) {\n this.selectedNonprofitId = parseInt(this.localStorage.getItem(\"nonprofit\") || \"\") || null;\n this.selectionId = this.localStorage.getItem(\"transaction\") ?? undefined;\n } else if (isSelectionExpired && this.selectedNonprofitId !== null) {\n await this.postSelectNonprofit({ selectedNonprofitId: null });\n this.localStorage.setItem(\"nonprofit\", null);\n }\n\n // Try to restore nonprofit list if we have data and it's not too old\n // list will continue to refresh async and replace this data when ready\n const { createdAt = 0, data } =\n this.localStorage.getItemJson<{ createdAt: string; data: any }>(\"chainNonprofits\") || {};\n const cacheTtl = 2 * 60 * 60 * 1000; // 2 hours in milliseconds\n const isCacheExpired = currentTimestamp > new Date(createdAt).valueOf() + cacheTtl;\n if (!isCacheExpired && this.nonprofitListDataController.loading) {\n this.nonprofitListDataController.data = data;\n this.nonprofitListDataController.loading = false;\n }\n } catch (err) {\n logger.error(err);\n // ignore cache retrieval error and continue to fetch data\n }\n }\n\n private async createNewSelectionForCachedNonprofit() {\n if (!enforceConfig<RequiredConfig>([\"apiKey\"], this)) {\n throw new MissingConfig();\n }\n if (!this.storeId || this.didTryToCreateNewSelectionFromCache) {\n return; // storeId can be set async as a result of calling find nonprofits with postalCode + zipCode\n }\n try {\n // Immediately set flag to prevent more cache restore attempts from triggering\n this.didTryToCreateNewSelectionFromCache = true;\n\n // Create a new selection ID for the session (e.g., if restoring nonprofit after a completed order)\n\n if (this.selectedNonprofitId) {\n if (!this.selectionId) {\n await this.selectionDataController.exec({ selectedNonprofitId: this.selectedNonprofitId });\n }\n const selectedNonprofit = this.getNonprofitById(this.selectedNonprofitId);\n this.dispatchEvent(\n new BeamNonprofitSelectEvent({\n selectedNonprofitId: this.selectedNonprofitId,\n selectionId: this.selectionId,\n nonprofitName: selectedNonprofit?.nonprofit?.name,\n source: WIDGET_NAMES.select_nonprofit,\n })\n );\n }\n } catch (err) {\n // Ignore error\n }\n }\n\n /**\n * Factory for selection event handler\n *\n * Nonprofit selector implements radio-button semantics:\n * * If nothing is selected, tabbing into selector selects first card\n * * Arrow keys changes focus between cards, but doesn't select\n * * Enter/Space sets selection\n * * If a nonprofit is selected, arrow keys change focus AND selection\n * * Click sets selection\n * @param {number} id\n * @param {number} index\n * @param {{id: number}[]} nonprofits\n * @returns {(evt: Event) => void}\n */\n private makeHandleSelect =\n (id: number, index: number, nonprofits: { nonprofit: { id: number } }[]) => 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 if (index === 0) {\n nextFocus = nonprofits[nonprofits.length - 1];\n } else {\n nextFocus = nonprofits[index - 1];\n }\n evt.preventDefault();\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n if (index === nonprofits.length - 1) {\n nextFocus = nonprofits[0];\n } else {\n nextFocus = nonprofits[index + 1];\n }\n evt.preventDefault();\n break;\n case \"Enter\":\n case \" \":\n evt.preventDefault();\n break; // continue to toggle-selection block below\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 // Handle selection with click or Enter/Space key\n const targetEl = evt.currentTarget;\n if (targetEl instanceof HTMLElement) {\n if (currentId === id) {\n if (this.enableNonprofitDeselection) {\n this.selectedNonprofitId = null; // unset\n this.localStorage.setItem(\"nonprofit\", null);\n } else {\n return;\n }\n } else {\n this.selectedNonprofitId = id;\n }\n }\n await this.selectionDataController.exec({ selectedNonprofitId: this.selectedNonprofitId });\n };\n\n evaluateBreakPoints = debounce(\n () => {\n this.isMobile = window.innerWidth < 768;\n },\n 50,\n { maxWait: 50, leading: true }\n );\n\n public get cssVariables() {\n const defaults = {\n \"--beam-fontFamily\": \"inherit\",\n \"--beam-fontStyle\": \"inherit\",\n \"--beam-fontSize\": \"inherit\",\n \"--beam-textColor\": \"inherit\",\n \"--beam-backgroundColor\": \"inherit\",\n ...progressBarConfigDefaults,\n \"--beam-SelectNonprofit-title-textAlign\": \"inherit\",\n \"--beam-SelectNonprofit-description-textAlign\": \"inherit\",\n \"--beam-SelectNonprofit-maxWidth\": \"800px\",\n \"--beam-SelectNonprofit-options-marginTop\": \"0px\",\n \"--beam-SelectNonprofit-options-iconHeight\": \"24px\",\n \"--beam-SelectNonprofit-options-padding\": \"10px\",\n \"--beam-SelectNonprofit-options-borderRadius\": \"0px\",\n \"--beam-SelectNonprofit-options-borderColor\": \"currentColor\",\n \"--beam-SelectNonprofit-options--selected-borderColor\": \"currentColor\",\n \"--beam-SelectNonprofit-options-backgroundColor\": \"transparent\",\n \"--beam-SelectNonprofit-options-gap\": \"8px\",\n \"--beam-SelectNonprofit-options--selected-backgroundColor\": \"currentColor\",\n \"--beam-SelectNonprofit-details-marginTop\": \"10px\",\n \"--beam-SelectNonprofit-details-borderRadius\": \"0px\",\n \"--beam-SelectNonprofit-details-borderColor\": \"currentColor\",\n \"--beam-SelectNonprofit-details-backgroundColor\": \"inherit\",\n \"--beam-SelectNonprofit-details-padding\": \"10px\",\n ...defineCustomText(\"--beam-SelectNonprofit-title\", {\n fontSize: \"1.25em\",\n fontWeight: \"bold\",\n }),\n \"--beam-SelectNonprofit-header-inline-lineHeight\": \"inherit\",\n ...defineCustomText(\"--beam-SelectNonprofit-title-inline\", {\n fontWeight: \"bold\",\n }),\n \"--beam-SelectNonprofit-title-inline-textTransform\": \"none\",\n \"--beam-SelectNonprofit-title-block-margin-right\": \"8px\",\n ...defineCustomText(\"--beam-SelectNonprofit-description\", {\n marginTop: \"0.5em\",\n }),\n ...defineCustomText(\"--beam-SelectNonprofit-description-inline\"),\n ...defineCustomText(\"--beam-SelectNonprofit-details-cause\", {\n fontSize: \"0.85em\",\n fontWeight: \"bold\",\n }),\n ...defineCustomText(\"--beam-SelectNonprofit-details-beamAttribution\", {\n fontSize: \"0.85em\",\n }),\n ...defineCustomText(\"--beam-SelectNonprofit-details-impactDescription\", {\n fontSize: \"1em\",\n marginTop: \"10px\",\n }),\n \"--beam-SelectNonprofit-details-nonprofitName-fontWeight\": \"bold\",\n \"--beam-SelectNonprofit-details-nonprofitName-fontStyle\": \"inherit\",\n \"--beam-SelectNonprofit-details-fundingProgress-marginTop\": \"10px\",\n ...defineCustomText(\"--beam-SelectNonprofit-details-fundingProgressLabel\", {\n fontSize: \"0.85em\",\n }),\n ...notificationBlipConfigDefaults,\n ...promoPillLabelConfigDefaults,\n \"--beam-SelectNonprofit-promo-block-header-justifyContent\": \"initial\",\n \"--beam-SelectNonprofit-notification-blip-top\": \"4px\",\n \"--beam-SelectNonprofit-notification-blip-left\": \"50%\",\n \"--beam-SelectNonprofit-display-notification-blip\": \"true\",\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 max-width: var(--beam-SelectNonprofit-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-SelectNonprofit-details-impactDescription\")}\n }\n\n .details-impactDescription .nonprofitName {\n font-weight: var(--beam-SelectNonprofit-details-nonprofitName-fontWeight);\n font-style: var(--beam-SelectNonprofit-details-nonprofitName-fontStyle, inherit);\n }\n\n /* Note: title/description display is responsive */\n\n .title-block {\n margin-right: var(--beam-SelectNonprofit-title-block-margin-right);\n ${useCustomText(\"--beam-SelectNonprofit-title\")}\n text-align: var(--beam-SelectNonprofit-title-textAlign);\n }\n\n .header-inline {\n line-height: var(--beam-SelectNonprofit-header-inline-lineHeight);\n }\n\n .title-inline {\n font-size: var(--beam-SelectNonprofit-title-inline-fontSize);\n font-weight: var(--beam-SelectNonprofit-title-inline-fontWeight);\n color: var(--beam-SelectNonprofit-title-inline-color);\n font-family: var(--beam-SelectNonprofit-title-inline-fontFamily);\n text-transform: var(--beam-SelectNonprofit-title-inline-textTransform);\n }\n\n .description-inline {\n font-family: var(--beam-SelectNonprofit-description-inline-fontFamily);\n font-weight: var(--beam-SelectNonprofit-description-inline-fontWeight);\n color: var(--beam-SelectNonprofit-description-inline-color);\n text-transform: var(--beam-SelectNonprofit-description-inline-textTransform);\n font-size: var(--beam-SelectNonprofit-description-inline-fontSize);\n }\n\n .description {\n ${useCustomText(\"--beam-SelectNonprofit-description\")}\n text-align: var(--beam-SelectNonprofit-description-textAlign);\n }\n\n .block-header-promo-pill-container {\n display: flex;\n align-items: center;\n justify-content: var(--beam-SelectNonprofit-promo-block-header-justifyContent);\n }\n\n .block-header-promo-pill-container-responsive {\n flex-direction: column;\n align-items: flex-start;\n }\n .block-header-promo-pill-center-block-container-responsive {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n }\n .block-header-promo-pill-container-responsive beam-promo-info-pill {\n order: -1;\n }\n .block-header-promo-pill-center-block-container-responsive beam-promo-info-pill {\n order: -1;\n }\n .option {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n beam-notification-blip::part(notification-blip-container) {\n position: absolute;\n top: var(--beam-SelectNonprofit-notification-blip-top);\n left: var(--beam-SelectNonprofit-notification-blip-left);\n }\n `,\n ];\n\n protected render() {\n const { selectedNonprofitId } = this;\n const { data, loading } = this.nonprofitListDataController;\n\n if (loading && !data) {\n return _loading();\n }\n if (this.nonprofitListDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.nonprofitListDataController.error });\n }\n return \"\";\n }\n if (this.selectionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.selectionDataController.error });\n }\n // do not show error screen for interactive errors by default\n }\n const nonprofits = data?.nonprofits || [];\n const selectedNonprofit = nonprofits.find((np) => np.nonprofit.id === selectedNonprofitId) || null;\n const shouldUseNewPromoUI = !!data?.config?.web?.promo;\n const hasNonprofitWithInactivePromo = nonprofits.some((nonprofit) => !nonprofit.promo || !nonprofit.promo.isActive);\n const shouldDisplayPromoBlip = this.cssVariables[\"--beam-SelectNonprofit-display-notification-blip\"] === \"true\";\n const isTitleTextCenterAligned = this.cssVariables[\"--beam-SelectNonprofit-title-textAlign\"] === \"center\";\n const defaultHeader = html`<h3 class=\"title-block d-none d-lg-block\" part=\"title\" id=\"beam-SelectNonprofit-title\">\n ${localizeUserString(this.configLang, data?.config?.web?.title || \"\") || strings[this.configLang].ctaTitle()}\n </h3>`;\n const renderHeader = () => {\n return shouldUseNewPromoUI\n ? html`<div\n class=\"${this.isMobile\n ? isTitleTextCenterAligned\n ? \"block-header-promo-pill-center-block-container-responsive\"\n : \"block-header-promo-pill-container-responsive\"\n : isTitleTextCenterAligned\n ? \"block-header-promo-pill-center-block-container-responsive\"\n : \"block-header-promo-pill-container\"}\"\n style=\"${this.isMobile ? \"display: flex\" : \"\"}\"\n >\n ${defaultHeader}\n <beam-promo-info-pill .promo=${data?.config?.web?.promo}></beam-promo-info-pill>\n </div>`\n : defaultHeader;\n };\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n <div part=\"heading\">\n ${renderHeader()}\n <p class=\"description\" part=\"description\">\n <span class=\"d-none d-lg-inline\">\n ${\n shouldUseNewPromoUI\n ? html`<span style=\"font-weight:bold\">\n ${localizeUserString(this.configLang, data?.config?.web?.promoDescriptionPrefix || \"\") ||\n strings[this.configLang].ctaPromoPrefixMessage()}\n </span>\n <span>\n ${localizeUserString(this.configLang, data?.config?.web?.promoDescription || \"\") ||\n strings[this.configLang].ctaPromoMessage()}\n </span>`\n : html`<span>\n ${localizeUserString(this.configLang, data?.config?.web?.description || \"\") ||\n strings[this.configLang].ctaMessage()}\n </span>`\n }\n </span>\n <div class=\"d-lg-none header-inline\">\n <span class=\"title-inline\" part=\"title\">\n ${\n (localizeUserString(this.configLang, data?.config?.web?.title || \"\") ||\n strings[this.configLang].ctaTitle()) + strings[this.configLang].inlineSeparator()\n }\n </span>\n <span class=\"description-inline\" part=\"description\">\n ${\n shouldUseNewPromoUI\n ? html`<span style=\"font-weight:bold\">\n ${localizeUserString(this.configLang, data?.config?.web?.promoDescriptionPrefix || \"\") ||\n strings[this.configLang].ctaPromoPrefixMessage()}\n </span>\n <span>\n ${localizeUserString(this.configLang, data?.config?.web?.promoDescription || \"\") ||\n strings[this.configLang].ctaPromoMessage()}\n </span>`\n : html`<span\n >${localizeUserString(this.configLang, data?.config?.web?.description || \"\") ||\n strings[this.configLang].ctaMessage()}\n </span>`\n }\n </div>\n </p>\n </div>\n <div\n class=\"options\"\n part=\"options\"\n role=\"radiogroup\"\n aria-labelledby=\"beam-SelectNonprofit-title\"\n style=\"display: flex; gap: var(--beam-SelectNonprofit-options-gap); margin: 10px 0 0 0;\"\n >\n ${repeat(\n nonprofits,\n (i) => i.nonprofit.id,\n ({ nonprofit, promo }, index) => {\n const isSelected = selectedNonprofitId === nonprofit.id;\n const isFocusable = isSelected || (selectedNonprofit == null && index === 0);\n const shouldAddPromoBlip =\n promo?.isActive && data?.config.web.promo && hasNonprofitWithInactivePromo && shouldDisplayPromoBlip;\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=\"${localizeUserString(this.configLang, nonprofit.cause || \"\")}\"\n style=\"${styleMap({\n cursor: \"pointer\",\n flex: \"1\",\n textAlign: \"center\",\n lineHeight: \"1\",\n marginTop: \"var(--beam-SelectNonprofit-options-marginTop, 0px)\",\n padding: \"var(--beam-SelectNonprofit-options-padding, 10px)\",\n borderWidth: \"var(--beam-SelectNonprofit-options-borderWidth, 1px)\",\n borderStyle: \"solid\",\n position: \"relative\",\n borderRadius: \"var(--beam-SelectNonprofit-options-borderRadius, 0)\",\n borderColor: isSelected\n ? nonprofit.causeColor || \"var(--beam-SelectNonprofit-options--selected-borderColor, currentColor)\"\n : \"var(--beam-SelectNonprofit-options-borderColor, currentColor)\",\n backgroundColor: isSelected\n ? nonprofit.causeColor ||\n \"var(--beam-SelectNonprofit-options--selected-backgroundColor, currentColor)\"\n : \"var(--beam-SelectNonprofit-options-backgroundColor, transparent)\",\n })}\"\n >\n <img\n src=\"${isSelected ? nonprofit.causeIconSelectedUrl : nonprofit.causeIconUrl}\"\n alt=\"\"\n role=\"presentation\"\n style=\"\n height: var(--beam-SelectNonprofit-options-iconHeight, 24px);\n user-select: none;\n vertical-align: -webkit-baseline-middle;\n \"\n />\n ${shouldAddPromoBlip ? html`<beam-notification-blip></beam-notification-blip>` : html``}\n </div>\n `;\n }\n )}\n </div>\n ${\n selectedNonprofit != null\n ? html`\n <div\n class=\"details\"\n part=\"details\"\n style=\"\n border: 1px solid var(--beam-SelectNonprofit-details-borderColor);\n border-radius: var(--beam-SelectNonprofit-details-borderRadius);\n background-color: var(--beam-SelectNonprofit-details-backgroundColor);\n padding: var(--beam-SelectNonprofit-details-padding);\n margin-top: var(--beam-SelectNonprofit-details-marginTop);\n \"\n aria-label=\"Funding information for selected nonprofit ${selectedNonprofit.nonprofit\n ?.name}. Powered by Beam\"\n >\n <div\n style=\"display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap-reverse\"\n >\n <span\n class=\"details-cause\"\n style=\"flex: 0 1; white-space: nowrap; ${useCustomText(\"--beam-SelectNonprofit-details-cause\")}\"\n >\n ${selectedNonprofit?.promo?.isActive && hasNonprofitWithInactivePromo\n ? data?.config.web.promo?.[\"promo-cause-alt-text\"] || selectedNonprofit.nonprofit.cause\n : localizeUserString(this.configLang, selectedNonprofit.nonprofit.cause || \"\")}\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-SelectNonprofit-details-beamAttribution\"\n )}\"\n >\n ${strings[this.configLang].beamAttribution()}\n </span>\n </div>\n </div>\n <p class=\"details-impactDescription\">\n ${unsafeHTML(localizeUserString(this.configLang, selectedNonprofit.impact.description || \"\"))}\n </p>\n <div\n style=\"display: flex; margin-top: var(--beam-SelectNonprofit-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-SelectNonprofit-details-fundingProgressLabel\"\n )} white-space: nowrap; text-align: right; flex: 0 1; margin-left: 15px;\"\n >\n ${localizeUserString(this.configLang, selectedNonprofit.impact.goalProgressText)}\n </span>\n </div>\n </div>\n `\n : \"\"\n }\n `;\n }\n}\n\ndefineCustomElement(BeamSelectNonprofit);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-select-nonprofit\": BeamSelectNonprofit;\n }\n}\n"],"names":["BeamNotificationBlip","LitElement","css","html","notificationBlipConfigDefaults","strings","donationPercentage","z","_","s","u","h","e","t","i","r","BeamSelectNonprofit","DEFAULT_BASE_URL","evt","promoCodesFromPlugin","c","enforceConfig","beamCartId","getBeamCartId","BEAM_CART_COOKIE_NAME","cartId","getExternalCartId","cart","manualPromoCodes","formattedPromos","formatStoreAndReturnPromoCodes","code","shouldSendPromos","isEmptyPromoData","BeamWidgetStoredPromoCodesEvent","WIDGET_NAMES","res","postChainEligibleNonprofitsForCart","np","selectedNonprofitId","result","postSelectNonprofit","selectedNonprofit","BeamNonprofitSelectEvent","BeamNonprofitSelectionRemovedEvent","AsyncController","createScopedLocalStorage","id","index","nonprofits","currentId","nextFocus","focusTarget","debounce","SUPPORTED_LANGUAGES","parseJsonStringArray","getPromoCodesFromCart","response","setPromoCodesInLocalStorage","setPromoCodeInCookie","BeamCartChangeEvent","BeamPromoCodesStoredEvent","changedProperties","requireNewDataProps","prop","currentTimestamp","selectionTtl","selectionCreatedAt","isSelectionExpired","createdAt","data","cacheTtl","err","logger","defaults","progressBarConfigDefaults","defineCustomText","promoPillLabelConfigDefaults","remoteConfig","config","_cssVariableMap","loading","_loading","_errorMessage","shouldUseNewPromoUI","hasNonprofitWithInactivePromo","nonprofit","shouldDisplayPromoBlip","isTitleTextCenterAligned","defaultHeader","localizeUserString","renderHeader","repeat","promo","isSelected","isFocusable","shouldAddPromoBlip","styleMap","useCustomText","unsafeHTML","cssReset","cssResponsiveUtils","__decorateClass","property","a","b","isEqual","state","defineCustomElement"],"mappings":"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"}