@beamimpact/web-sdk 1.53.1 → 1.54.5

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 (251) hide show
  1. package/dist/chunks/_share-dialog-dependencies-DQlABdY4.esm.js +2 -0
  2. package/dist/chunks/{_share-dialog-dependencies-Cirjl8zP.esm.js.map → _share-dialog-dependencies-DQlABdY4.esm.js.map} +1 -1
  3. package/dist/chunks/_share-dialog-dependencies-Dg-9riak.esm.js +2 -0
  4. package/dist/chunks/{_share-dialog-dependencies-DElW9Yip.esm.js.map → _share-dialog-dependencies-Dg-9riak.esm.js.map} +1 -1
  5. package/dist/chunks/{events-BMTcECV9.esm.d.ts → events-C55rozsO.esm.d.ts} +33 -2
  6. package/dist/chunks/events-Dki0ka4F.esm.js +2 -0
  7. package/dist/chunks/{events-BohmT6Lp.esm.js.map → events-Dki0ka4F.esm.js.map} +1 -1
  8. package/dist/chunks/{index-C4P0R2un.esm.d.ts → index-B6EWjlNI.esm.d.ts} +1 -1
  9. package/dist/chunks/index-B9cvR1bA.esm.js +2 -0
  10. package/dist/chunks/index-B9cvR1bA.esm.js.map +1 -0
  11. package/dist/chunks/index-BBU6h_u0.esm.js +2 -0
  12. package/dist/chunks/index-BBU6h_u0.esm.js.map +1 -0
  13. package/dist/chunks/index-BJWJMzYy.esm.js +2 -0
  14. package/dist/chunks/index-BJWJMzYy.esm.js.map +1 -0
  15. package/dist/chunks/index-BXVkhkpJ.esm.js +2 -0
  16. package/dist/chunks/index-BXVkhkpJ.esm.js.map +1 -0
  17. package/dist/chunks/{index-vH6HFI2B.esm.js → index-Bp9sWMsk.esm.js} +35 -35
  18. package/dist/chunks/index-Bp9sWMsk.esm.js.map +1 -0
  19. package/dist/chunks/{index-DZyO6--E.esm.js → index-BzcA5RKX.esm.js} +2 -2
  20. package/dist/chunks/{index-DZyO6--E.esm.js.map → index-BzcA5RKX.esm.js.map} +1 -1
  21. package/dist/chunks/index-CGKJagBi.esm.js +2 -0
  22. package/dist/chunks/index-CGKJagBi.esm.js.map +1 -0
  23. package/dist/chunks/{index-IZJ4xhyj.esm.js → index-Cb7X_azQ.esm.js} +2 -2
  24. package/dist/chunks/{index-IZJ4xhyj.esm.js.map → index-Cb7X_azQ.esm.js.map} +1 -1
  25. package/dist/chunks/index-Ct1m4IjM.esm.js +2 -0
  26. package/dist/chunks/index-Ct1m4IjM.esm.js.map +1 -0
  27. package/dist/chunks/{index-CjT2ycv5.esm.js → index-DA4pws6n.esm.js} +35 -35
  28. package/dist/chunks/index-DA4pws6n.esm.js.map +1 -0
  29. package/dist/chunks/index-DBb5HSkR.esm.js +2 -0
  30. package/dist/chunks/index-DBb5HSkR.esm.js.map +1 -0
  31. package/dist/chunks/{index-Ca8xkEwS.esm.d.ts → index-DjSzY8-j.esm.d.ts} +1 -1
  32. package/dist/chunks/index-Dw8XJ6pi.esm.js +2 -0
  33. package/dist/chunks/index-Dw8XJ6pi.esm.js.map +1 -0
  34. package/dist/chunks/{index-DUeE7FLq.esm.js → index-MGQHF6Jd.esm.js} +2 -2
  35. package/dist/chunks/index-MGQHF6Jd.esm.js.map +1 -0
  36. package/dist/chunks/{index-DqffUXvi.esm.d.ts → index-OTDSwrqr.esm.d.ts} +1 -1
  37. package/dist/chunks/index-VrM10qBv.esm.js +2 -0
  38. package/dist/chunks/index-VrM10qBv.esm.js.map +1 -0
  39. package/dist/chunks/{index-sUGvOawY.esm.js → index-ayo08Z4n.esm.js} +2 -2
  40. package/dist/chunks/index-ayo08Z4n.esm.js.map +1 -0
  41. package/dist/chunks/index-tbwbkOdj.esm.js +2 -0
  42. package/dist/chunks/index-tbwbkOdj.esm.js.map +1 -0
  43. package/dist/chunks/order-page-Bowqodk5.esm.js +2 -0
  44. package/dist/chunks/order-page-Bowqodk5.esm.js.map +1 -0
  45. package/dist/chunks/order-page-C2wPfn6k.esm.js +2 -0
  46. package/dist/chunks/order-page-C2wPfn6k.esm.js.map +1 -0
  47. package/dist/chunks/promo-types-DKAOFHJr.esm.js +2 -0
  48. package/dist/chunks/promo-types-DKAOFHJr.esm.js.map +1 -0
  49. package/dist/chunks/routes-DCT5U9dA.esm.js +2 -0
  50. package/dist/chunks/routes-DCT5U9dA.esm.js.map +1 -0
  51. package/dist/chunks/routes-DelUpFFo.esm.js +2 -0
  52. package/dist/chunks/routes-DelUpFFo.esm.js.map +1 -0
  53. package/dist/chunks/{share-button-8zVx6bYw.esm.js → share-button-7um4cBYz.esm.js} +2 -2
  54. package/dist/chunks/{share-button-8zVx6bYw.esm.js.map → share-button-7um4cBYz.esm.js.map} +1 -1
  55. package/dist/chunks/{share-button-CM4kwufS.esm.js → share-button-B376j4qt.esm.js} +2 -2
  56. package/dist/chunks/{share-button-CM4kwufS.esm.js.map → share-button-B376j4qt.esm.js.map} +1 -1
  57. package/dist/chunks/{share-button-DNyMCeHQ.esm.js → share-button-BEXn6SRs.esm.js} +2 -2
  58. package/dist/chunks/{share-button-DNyMCeHQ.esm.js.map → share-button-BEXn6SRs.esm.js.map} +1 -1
  59. package/dist/chunks/{share-button-CWFcBlaF.esm.js → share-button-BZ9Dmpsy.esm.js} +2 -2
  60. package/dist/chunks/{share-button-CWFcBlaF.esm.js.map → share-button-BZ9Dmpsy.esm.js.map} +1 -1
  61. package/dist/chunks/update-cart-BGAM3i5j.esm.js +2 -0
  62. package/dist/chunks/{update-cart-BQHJ9lRb.esm.js.map → update-cart-BGAM3i5j.esm.js.map} +1 -1
  63. package/dist/chunks/update-cart-pMo1b75q.esm.js +2 -0
  64. package/dist/chunks/{update-cart-DCxR1dVX.esm.js.map → update-cart-pMo1b75q.esm.js.map} +1 -1
  65. package/dist/components/community-impact.esm.js +1 -1
  66. package/dist/components/community-impact.esm.js.map +1 -1
  67. package/dist/components/community-impact.js +1 -1
  68. package/dist/components/community-impact.js.map +1 -1
  69. package/dist/components/cumulative-impact.esm.js +1 -1
  70. package/dist/components/cumulative-impact.esm.js.map +1 -1
  71. package/dist/components/cumulative-impact.js +1 -1
  72. package/dist/components/cumulative-impact.js.map +1 -1
  73. package/dist/components/impact-overview.esm.js +35 -35
  74. package/dist/components/impact-overview.esm.js.map +1 -1
  75. package/dist/components/impact-overview.js +35 -35
  76. package/dist/components/impact-overview.js.map +1 -1
  77. package/dist/components/index.esm.js +1 -1
  78. package/dist/components/index.js +1 -1
  79. package/dist/components/post-purchase.d.ts +1 -1
  80. package/dist/components/post-purchase.esm.js +3 -3
  81. package/dist/components/post-purchase.esm.js.map +1 -1
  82. package/dist/components/post-purchase.js +3 -3
  83. package/dist/components/post-purchase.js.map +1 -1
  84. package/dist/components/product-details-page.d.ts +1 -1
  85. package/dist/components/product-details-page.esm.js +7 -7
  86. package/dist/components/product-details-page.esm.js.map +1 -1
  87. package/dist/components/product-details-page.js +7 -7
  88. package/dist/components/product-details-page.js.map +1 -1
  89. package/dist/components/redeem-transaction.d.ts +1 -1
  90. package/dist/components/redeem-transaction.esm.js +1 -1
  91. package/dist/components/redeem-transaction.js +1 -1
  92. package/dist/components/select-nonprofit.d.ts +2 -1
  93. package/dist/components/select-nonprofit.esm.js +24 -24
  94. package/dist/components/select-nonprofit.esm.js.map +1 -1
  95. package/dist/components/select-nonprofit.js +24 -24
  96. package/dist/components/select-nonprofit.js.map +1 -1
  97. package/dist/components/select-subscription-nonprofit.d.ts +1 -1
  98. package/dist/components/select-subscription-nonprofit.esm.js +16 -16
  99. package/dist/components/select-subscription-nonprofit.esm.js.map +1 -1
  100. package/dist/components/select-subscription-nonprofit.js +16 -16
  101. package/dist/components/select-subscription-nonprofit.js.map +1 -1
  102. package/dist/components/shopify.d.ts +1 -1
  103. package/dist/components/shopify.esm.js +1 -1
  104. package/dist/components/shopify.esm.js.map +1 -1
  105. package/dist/components/shopify.js +1 -1
  106. package/dist/components/shopify.js.map +1 -1
  107. package/dist/components/social-share.esm.js +1 -1
  108. package/dist/components/social-share.esm.js.map +1 -1
  109. package/dist/components/social-share.js +1 -1
  110. package/dist/components/social-share.js.map +1 -1
  111. package/dist/components/subscription-impact.d.ts +1 -1
  112. package/dist/components/subscription-impact.esm.js +14 -14
  113. package/dist/components/subscription-impact.esm.js.map +1 -1
  114. package/dist/components/subscription-impact.js +14 -14
  115. package/dist/components/subscription-impact.js.map +1 -1
  116. package/dist/components/subscription-management.d.ts +1 -1
  117. package/dist/components/subscription-management.esm.js +1 -1
  118. package/dist/components/subscription-management.esm.js.map +1 -1
  119. package/dist/components/subscription-management.js +1 -1
  120. package/dist/components/subscription-management.js.map +1 -1
  121. package/dist/index.d.ts +4 -4
  122. package/dist/index.esm.js +1 -1
  123. package/dist/index.js +1 -1
  124. package/dist/integrations/beam.esm.js +1 -1
  125. package/dist/integrations/beam.esm.js.map +1 -1
  126. package/dist/integrations/beam.js +1 -1
  127. package/dist/integrations/beam.js.map +1 -1
  128. package/dist/integrations/cart.esm.js +1 -1
  129. package/dist/integrations/cart.js +1 -1
  130. package/dist/integrations/index.d.ts +2 -2
  131. package/dist/integrations/index.esm.js +1 -1
  132. package/dist/integrations/index.js +1 -1
  133. package/dist/integrations/logs.esm.js +1 -1
  134. package/dist/integrations/logs.js +1 -1
  135. package/dist/integrations/promoManager.esm.js +1 -1
  136. package/dist/integrations/promoManager.esm.js.map +1 -1
  137. package/dist/integrations/promoManager.js +1 -1
  138. package/dist/integrations/promoManager.js.map +1 -1
  139. package/dist/integrations/shopify.esm.js +1 -1
  140. package/dist/integrations/shopify.js +1 -1
  141. package/dist/integrations/statsig.esm.js +1 -1
  142. package/dist/integrations/statsig.esm.js.map +1 -1
  143. package/dist/integrations/statsig.js +1 -1
  144. package/dist/integrations/statsig.js.map +1 -1
  145. package/dist/integrations/utils.d.ts +1 -1
  146. package/dist/integrations/utils.esm.js +1 -1
  147. package/dist/integrations/utils.js +1 -1
  148. package/dist/react/community-impact.esm.js +1 -1
  149. package/dist/react/community-impact.esm.js.map +1 -1
  150. package/dist/react/community-impact.js +1 -1
  151. package/dist/react/community-impact.js.map +1 -1
  152. package/dist/react/cumulative-impact.esm.js +1 -1
  153. package/dist/react/cumulative-impact.esm.js.map +1 -1
  154. package/dist/react/cumulative-impact.js +1 -1
  155. package/dist/react/cumulative-impact.js.map +1 -1
  156. package/dist/react/impact-overview.esm.js +1 -1
  157. package/dist/react/impact-overview.esm.js.map +1 -1
  158. package/dist/react/impact-overview.js +1 -1
  159. package/dist/react/impact-overview.js.map +1 -1
  160. package/dist/react/index.d.ts +1 -1
  161. package/dist/react/index.esm.js +1 -1
  162. package/dist/react/index.js +1 -1
  163. package/dist/react/post-purchase.esm.js +1 -1
  164. package/dist/react/post-purchase.esm.js.map +1 -1
  165. package/dist/react/post-purchase.js +1 -1
  166. package/dist/react/post-purchase.js.map +1 -1
  167. package/dist/react/product-details-page.esm.js +1 -1
  168. package/dist/react/product-details-page.esm.js.map +1 -1
  169. package/dist/react/product-details-page.js +1 -1
  170. package/dist/react/product-details-page.js.map +1 -1
  171. package/dist/react/redeem-transaction.d.ts +1 -1
  172. package/dist/react/redeem-transaction.esm.js +1 -1
  173. package/dist/react/redeem-transaction.esm.js.map +1 -1
  174. package/dist/react/redeem-transaction.js +1 -1
  175. package/dist/react/redeem-transaction.js.map +1 -1
  176. package/dist/react/select-nonprofit.d.ts +1 -1
  177. package/dist/react/select-nonprofit.esm.js +1 -1
  178. package/dist/react/select-nonprofit.esm.js.map +1 -1
  179. package/dist/react/select-nonprofit.js +1 -1
  180. package/dist/react/select-nonprofit.js.map +1 -1
  181. package/dist/react/select-subscription-nonprofit.d.ts +1 -1
  182. package/dist/react/select-subscription-nonprofit.esm.js +1 -1
  183. package/dist/react/select-subscription-nonprofit.esm.js.map +1 -1
  184. package/dist/react/select-subscription-nonprofit.js +1 -1
  185. package/dist/react/select-subscription-nonprofit.js.map +1 -1
  186. package/dist/react/social-share.esm.js +1 -1
  187. package/dist/react/social-share.esm.js.map +1 -1
  188. package/dist/react/social-share.js +1 -1
  189. package/dist/react/social-share.js.map +1 -1
  190. package/dist/react/subscription-impact.esm.js +1 -1
  191. package/dist/react/subscription-impact.esm.js.map +1 -1
  192. package/dist/react/subscription-impact.js +1 -1
  193. package/dist/react/subscription-impact.js.map +1 -1
  194. package/dist/react/subscription-management.esm.js +1 -1
  195. package/dist/react/subscription-management.esm.js.map +1 -1
  196. package/dist/react/subscription-management.js +1 -1
  197. package/dist/react/subscription-management.js.map +1 -1
  198. package/dist/utils/events.d.ts +1 -1
  199. package/dist/utils/events.esm.js +1 -1
  200. package/dist/utils/events.js +1 -1
  201. package/dist/utils/index.d.ts +1 -1
  202. package/dist/utils/index.esm.js +1 -1
  203. package/dist/utils/index.js +1 -1
  204. package/dist/utils/network-listeners.esm.js +1 -1
  205. package/dist/utils/network-listeners.js +1 -1
  206. package/dist/utils/promoManager.esm.js +1 -1
  207. package/dist/utils/promoManager.esm.js.map +1 -1
  208. package/dist/utils/promoManager.js +1 -1
  209. package/dist/utils/promoManager.js.map +1 -1
  210. package/package.json +1 -1
  211. package/dist/chunks/_share-dialog-dependencies-Cirjl8zP.esm.js +0 -2
  212. package/dist/chunks/_share-dialog-dependencies-DElW9Yip.esm.js +0 -2
  213. package/dist/chunks/events-BohmT6Lp.esm.js +0 -2
  214. package/dist/chunks/index-2vxtp84k.esm.js +0 -2
  215. package/dist/chunks/index-2vxtp84k.esm.js.map +0 -1
  216. package/dist/chunks/index-AEnQH-so.esm.js +0 -2
  217. package/dist/chunks/index-AEnQH-so.esm.js.map +0 -1
  218. package/dist/chunks/index-Bs4Q42bL.esm.js +0 -2
  219. package/dist/chunks/index-Bs4Q42bL.esm.js.map +0 -1
  220. package/dist/chunks/index-CaBSaNNT.esm.js +0 -2
  221. package/dist/chunks/index-CaBSaNNT.esm.js.map +0 -1
  222. package/dist/chunks/index-CjT2ycv5.esm.js.map +0 -1
  223. package/dist/chunks/index-CtYbieoH.esm.js +0 -2
  224. package/dist/chunks/index-CtYbieoH.esm.js.map +0 -1
  225. package/dist/chunks/index-DGyP7M3g.esm.js +0 -2
  226. package/dist/chunks/index-DGyP7M3g.esm.js.map +0 -1
  227. package/dist/chunks/index-DUeE7FLq.esm.js.map +0 -1
  228. package/dist/chunks/index-D_L-n4we.esm.js +0 -2
  229. package/dist/chunks/index-D_L-n4we.esm.js.map +0 -1
  230. package/dist/chunks/index-DhhPQ773.esm.js +0 -2
  231. package/dist/chunks/index-DhhPQ773.esm.js.map +0 -1
  232. package/dist/chunks/index-DtfQd6C4.esm.js +0 -2
  233. package/dist/chunks/index-DtfQd6C4.esm.js.map +0 -1
  234. package/dist/chunks/index-Z9-EAuWk.esm.js +0 -2
  235. package/dist/chunks/index-Z9-EAuWk.esm.js.map +0 -1
  236. package/dist/chunks/index-sUGvOawY.esm.js.map +0 -1
  237. package/dist/chunks/index-vH6HFI2B.esm.js.map +0 -1
  238. package/dist/chunks/order-page-O5u1cAz8.esm.js +0 -2
  239. package/dist/chunks/order-page-O5u1cAz8.esm.js.map +0 -1
  240. package/dist/chunks/order-page-Vk9anZAb.esm.js +0 -2
  241. package/dist/chunks/order-page-Vk9anZAb.esm.js.map +0 -1
  242. package/dist/chunks/promoManager-B9cTR1R3.esm.js +0 -2
  243. package/dist/chunks/promoManager-B9cTR1R3.esm.js.map +0 -1
  244. package/dist/chunks/promoManager-fl54hq13.esm.js +0 -2
  245. package/dist/chunks/promoManager-fl54hq13.esm.js.map +0 -1
  246. package/dist/chunks/routes-BnPd0lrO.esm.js +0 -2
  247. package/dist/chunks/routes-BnPd0lrO.esm.js.map +0 -1
  248. package/dist/chunks/routes-D7s2_Xn5.esm.js +0 -2
  249. package/dist/chunks/routes-D7s2_Xn5.esm.js.map +0 -1
  250. package/dist/chunks/update-cart-BQHJ9lRb.esm.js +0 -2
  251. package/dist/chunks/update-cart-DCxR1dVX.esm.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"subscription-management.js","sources":["../../src/components/subscription-management/strings.ts","../../src/components/subscription-management/index.ts"],"sourcesContent":["export const strings = {\n en: {\n changeNonprofitButton: () => `Change Nonprofit`,\n previousImpactHeader: () => `Your Previous Impact`,\n previousNonprofitButton: () => `Back to Previous Nonprofit`,\n supportAgainButton: () => `Support Again`,\n via: () => `via`,\n showAllButton: () => `Show All`,\n showLessButton: () => `Show Less`,\n },\n fr: {\n changeNonprofitButton: () => `Change Nonprofit`,\n previousImpactHeader: () => `Your Previous Impact`,\n previousNonprofitButton: () => `Back to Previous Nonprofit`,\n supportAgainButton: () => `Support Again`,\n via: () => `via`,\n showAllButton: () => `Show All`,\n showLessButton: () => `Show Less`,\n },\n de: {\n changeNonprofitButton: () => `Change Nonprofit`,\n previousImpactHeader: () => `Your Previous Impact`,\n previousNonprofitButton: () => `Back to Previous Nonprofit`,\n supportAgainButton: () => `Support Again`,\n via: () => `via`,\n showAllButton: () => `Show All`,\n showLessButton: () => `Show Less`,\n },\n es: {\n changeNonprofitButton: () => `Change Nonprofit`,\n previousImpactHeader: () => `Your Previous Impact`,\n previousNonprofitButton: () => `Back to Previous Nonprofit`,\n supportAgainButton: () => `Support Again`,\n via: () => `via`,\n showAllButton: () => `Show All`,\n showLessButton: () => `Show Less`,\n },\n it: {\n changeNonprofitButton: () => `Change Nonprofit`,\n previousImpactHeader: () => `Your Previous Impact`,\n previousNonprofitButton: () => `Back to Previous Nonprofit`,\n supportAgainButton: () => `Support Again`,\n via: () => `via`,\n showAllButton: () => `Show All`,\n showLessButton: () => `Show Less`,\n },\n pl: {\n changeNonprofitButton: () => `Change Nonprofit`,\n previousImpactHeader: () => `Your Previous Impact`,\n previousNonprofitButton: () => `Back to Previous Nonprofit`,\n supportAgainButton: () => `Support Again`,\n via: () => `via`,\n showAllButton: () => `Show All`,\n showLessButton: () => `Show Less`,\n },\n};\n","import { css, html, LitElement } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES, WIDGET_NAMES } from \"../../api-sdk/constants\";\nimport { TCart } from \"../../shared/cart-contents\";\nimport { progressBarConfigDefaults } from \"../../shared/components/progress-bar\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { postFindOrCreateSubscription, postChainEligibleNonprofitsForCart, getImpact } from \"../../api-sdk/v3/routes\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomText, useCustomText } from \"../../shared/fragments/custom-text\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { _cssVariableMap } from \"../../shared/fragments/css-variable-map\";\nimport { BeamNonprofitSelectEvent } from \"../../utils/events\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport \"../select-subscription-nonprofit\";\nimport \"../subscription-impact\";\nimport \"../beam-partner-logos\";\nimport \"../../shared/components/progress-bar\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { partnerLogosConfigDefaults } from \"../beam-partner-logos\";\nimport { makeApiKeyHeader } from \"../../utils/makeApiKeyHeader\";\nimport { _loading } from \"../../shared/fragments/loading-template\";\nimport { localizeUserString } from \"../../shared/localize\";\nimport { TNumericId } from \"../../shared/types\";\nimport { cssCardGrid } from \"../../shared/fragments/css-card-grid\";\nimport { strings } from \"./strings\";\n\ninterface RequiredDataPropsWithEmail {\n email: string;\n apiKey: string;\n subscriptionId: string;\n}\n\ninterface RequiredDataPropsWithPartnerUserId {\n partnerUserId: string;\n apiKey: string;\n subscriptionId: string;\n}\n\ntype TRequiredDataProps = RequiredDataPropsWithEmail | RequiredDataPropsWithPartnerUserId;\nexport type TIAPIV3PersonalImpact = Awaited<ReturnType<typeof import(\"../../api-sdk/v3/routes\").getImpact>>[\"personal\"];\nexport type TIAPIV3EligibleNonprofits = Awaited<\n ReturnType<typeof import(\"../../api-sdk/v3/routes\").getChainNonprofits>\n>[\"nonprofits\"];\nexport type TIAPIV3EligibleNonprofitConfig = Awaited<\n ReturnType<typeof import(\"../../api-sdk/v3/routes\").getChainNonprofits>\n>[\"config\"];\n\nconst INITIAL_TILE_COUNT = 3;\nconst MIN_PREVIOUS_IMPACT = 0;\nconst MIN_PROGRESS_THRESHOLD = 1;\nconst MAX_PROGRESS_THRESHOLD = 98;\n\nexport class BeamSubscriptionManagement extends LitElement {\n static tagName = \"beam-subscription-management\";\n\n @property({ type: String })\n public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String })\n public apiKey!: TRequiredDataProps[\"apiKey\"];\n\n @property({ type: String })\n public subscriptionId!: TRequiredDataProps[\"subscriptionId\"];\n\n @property({ type: Number, reflect: true })\n public storeId?: number; // Either storeId or postalCode, countryCode must be provided\n\n @property({ type: String })\n public email?: RequiredDataPropsWithEmail[\"email\"]; // Either email or partnerUserId must be provided\n\n @property({ type: String })\n public partnerUserId?: RequiredDataPropsWithPartnerUserId[\"partnerUserId\"]; // Either email or partnerUserId must be provided\n\n @property({ type: String })\n public postalCode?: string;\n\n @property({ type: String })\n public countryCode?: string;\n\n @property({ type: Number, reflect: true })\n public selectedNonprofitId?: TNumericId;\n\n @property({ type: String })\n public lang: LANGUAGES = \"en\";\n\n @property({ type: Object })\n public cart?: TCart;\n\n @property({ type: Boolean })\n public debug = false;\n\n @property({ type: Boolean })\n public draftConfig = false;\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n @state() private activeWidget: \"select-subscription-nonprofit\" | \"subscription-impact\" | null = null; // Based on /findSubscriptionByRemoteId\n @state() private nonprofitId: number | null = null; // From /findSubscriptionByRemoteId response\n @state() private beamUserId: string | null = null; // From findSubscriptionByRemoteId\n @state() private eligibleNonprofits: TIAPIV3EligibleNonprofits = [];\n @state() private showAllTiles = false;\n @state() private isMobile = window.innerWidth < 720;\n @state() private dropdownVisible = false;\n @state() private emojis = [\"👏\", \"💪\", \"🙌\", \"✨\", \"🥇\"];\n\n private subscriptionDataController = new AsyncController<typeof this.fetchSubscription>(this, this.fetchSubscription);\n private eligibleNonprofitsDataController = new AsyncController<typeof this.fetchEligibleNonprofits>(\n this,\n this.fetchEligibleNonprofits\n );\n private personalImpactDataController = new AsyncController<typeof this.fetchImpact>(this, this.fetchImpact);\n\n async firstUpdated() {\n if (!this.email && !this.partnerUserId) {\n throw new MissingConfig(\n [\"email\", \"partnerUserId\"],\n \"One of the following properties needs to be specified: email, partnerUserId \"\n );\n }\n enforceConfig<TRequiredDataProps>([\"apiKey\", \"subscriptionId\"], this);\n await this.loadWidget();\n }\n\n async loadWidget() {\n // In parallel:\n // (1). Fetch eligible nonprofits [storeId and chainName]\n // (2). Fetch subscription [userId and nonprofitId]\n await Promise.all([this.fetchEligibleNonprofits(), this.fetchSubscription()]);\n await this.fetchImpact();\n this.activeWidget = this.nonprofitId ? \"subscription-impact\" : \"select-subscription-nonprofit\";\n }\n\n async fetchEligibleNonprofits() {\n enforceConfig<TRequiredDataProps>([\"apiKey\", \"subscriptionId\"], this);\n const eligibleNonprofitResult = await postChainEligibleNonprofitsForCart({\n baseUrl: this.baseUrl,\n headers: makeApiKeyHeader(this.apiKey),\n requestBody: {\n storeId: this.storeId || undefined,\n postalCode: this.postalCode || undefined,\n countryCode: this.countryCode || undefined,\n widgetName: WIDGET_NAMES.subscription_management,\n version: \"1.0.0\",\n },\n });\n this.storeId = eligibleNonprofitResult.store.id;\n this.eligibleNonprofits = eligibleNonprofitResult.nonprofits;\n this.eligibleNonprofitsDataController.data = eligibleNonprofitResult;\n return eligibleNonprofitResult;\n }\n\n async fetchSubscription() {\n enforceConfig<TRequiredDataProps>([\"apiKey\", \"subscriptionId\"], this);\n const subscriptionResult = await postFindOrCreateSubscription({\n baseUrl: this.baseUrl,\n headers: makeApiKeyHeader(this.apiKey),\n requestBody: {\n remoteSubscriptionId: this.subscriptionId,\n email: this.email,\n partnerUserId: this.partnerUserId,\n },\n });\n\n this.beamUserId = subscriptionResult.beamUserId; // Returned in response regardless of subscription redemption\n this.nonprofitId = subscriptionResult.nonprofit?.id || null;\n return subscriptionResult;\n }\n\n async fetchImpact() {\n enforceConfig<TRequiredDataProps>([\"apiKey\"], this);\n\n const impactResult = await getImpact({\n baseUrl: this.baseUrl,\n headers: makeApiKeyHeader(this.apiKey),\n queryParams: {\n beamUserId: this.beamUserId ? this.beamUserId : undefined,\n widgetName: \"subscription-management\",\n version: \"1.0.0\",\n lang: this.configLang,\n },\n });\n\n this.personalImpactDataController.data = impactResult;\n return impactResult;\n }\n\n // Used to filter the full personal impact results to\n // just ones that are displayable\n // 1. Checks \"includeInPersonalImpact\" for each nonprofit\n // 2. Checks if it's the currently supported nonprofit, and if it's been funded at least once\n getDisplayablePreviousImpacts() {\n const personalImpacts = this.personalImpactDataController.data?.personal;\n if (!personalImpacts || personalImpacts?.length < 1) {\n return [];\n }\n\n return personalImpacts.filter((impact) => {\n if (!impact.nonprofit.includeInPersonalImpact) {\n return false;\n }\n if (\n impact.nonprofit.id === this.nonprofitId &&\n (!impact.impact.goalCompletionText || impact.impact.goalCompletionText?.length < 1)\n ) {\n return false;\n }\n return true;\n });\n }\n\n handleSwapNonprofitButtonClick() {\n this.activeWidget = \"select-subscription-nonprofit\";\n }\n\n handleBackToSubscriptionImpactButtonClick() {\n this.activeWidget = \"subscription-impact\";\n }\n\n handleSupportAgainButtonClick(nonprofitId: TNumericId, nonprofitName: string) {\n this.activeWidget = \"select-subscription-nonprofit\";\n this.selectedNonprofitId = nonprofitId;\n\n const event = new BeamNonprofitSelectEvent({\n selectedNonprofitId: nonprofitId,\n nonprofitName: nonprofitName,\n source: WIDGET_NAMES.subscription_management,\n });\n this.dispatchEvent(event);\n }\n\n handleNonprofitSelect(event: Event) {\n if (!(event instanceof BeamNonprofitSelectEvent)) return; // TypeScript guard\n const { selectedNonprofitId } = event.detail;\n this.nonprofitId = selectedNonprofitId ?? null;\n this.activeWidget = \"subscription-impact\";\n }\n\n isNonprofitEligible(nonprofitId: TNumericId) {\n return this.eligibleNonprofits.some((np: TIAPIV3EligibleNonprofits[0]) => np.nonprofit.id === nonprofitId);\n }\n\n shouldDisplayProgressBar(progressValue: number) {\n return progressValue > MIN_PROGRESS_THRESHOLD && progressValue < MAX_PROGRESS_THRESHOLD;\n }\n\n public get cssVariables() {\n const defaults = {\n ...partnerLogosConfigDefaults,\n ...progressBarConfigDefaults,\n \"--beam-fontFamily\": \"inherit\",\n \"--beam-fontStyle\": \"inherit\",\n \"--beam-fontSize\": \"inherit\",\n \"--beam-textColor\": \"inherit\",\n \"--beam-backgroundColor\": \"inherit\",\n \"--beam-SubscriptionManagement-widgetContainer-borderColor\": \"#d5d5d5\",\n \"--beam-SubscriptionManagement-widgetContainer-borderRadius\": \"4px\",\n \"--beam-SubscriptionManagement-widgetContainer-padding\": \"8px 20px\",\n \"--beam-SubscriptionManagement-widgetContainer-backgroundColor\": \"inherit\",\n \"--beam-SubscriptionManagement-widgetContainer-maxWidth\": \"820px\",\n \"--beam-SubscriptionManagement-logo-align-desktop\": \"left\",\n \"--beam-SubscriptionManagement-logo-align-mobile\": \"center\",\n \"--beam-SubscriptionManagement-previousImpact-cardStyle\": \"'selected_icon'\",\n \"--beam-SubscriptionManagement-header-padding\": \"10px 20px 10px 0px\",\n \"--beam-SubscriptionManagement-header-borderRadius\": \"0px\",\n \"--beam-SubscriptionManagement-header-backgroundColor\": \"#fff\",\n \"--beam-SubscriptionManagement-header-meatballsMenu-fontSize\": \"24px\",\n \"--beam-SubscriptionManagement-header-meatballsMenu-color\": \"24px\",\n \"--beam-SubscriptionManagement-lineBreak-color\": \"#ddd\",\n \"--beam-SubscriptionManagement-lineBreak-width\": \"1px\",\n \"--beam-SubscriptionManagement-lineBreak-margin\": \"10px 0 20px 0\",\n \"--beam-SubscriptionManagement-tile-marginBottom\": \"20px\",\n \"--beam-SubscriptionManagement-tile-border-width\": \"0px\",\n \"--beam-SubscriptionManagement-tile-border-color\": \"#ddd\",\n \"--beam-SubscriptionManagement-tile-padding\": \"12.5px\",\n \"--beam-SubscriptionManagement-tile-borderRadius\": \"8px\",\n \"--beam-SubscriptionManagement-tile-background\": \"#f8fbfb\",\n \"--beam-SubscriptionManagement-tileContent-gap\": \" 15px\",\n \"--beam-SubscriptionManagement-tileContent-padding\": \"5px 0px\",\n \"--beam-SubscriptionManagement-tile-icon-borderRadius\": \"4px\",\n \"--beam-SubscriptionManagement-tile-icon-height\": \"28px\",\n \"--beam-SubscriptionManagement-tile-icon-background-borderRadius\": \"50%\",\n \"--beam-SubscriptionManagement-tile-icon-background-width\": \"50px\",\n \"--beam-SubscriptionManagement-tile-icon-background-height\": \"50px\",\n \"--beam-SubscriptionManagement-tile-icon-background-backgroundColor\": \"#0a323c\",\n \"--beam-SubscriptionManagement-tile-icon-background-padding\": \"10px\",\n \"--beam-SubscriptionManagement-blockTileDescription-gap\": \"5px\",\n \"--beam-SubscriptionManagement-blockTileDescription-padding\": \"0px\",\n \"--beam-SubscriptionManagement-blockTileDescription-lineHeight\": \"130%\",\n \"--beam-SubscriptionManagement-blockTileDescription-progressBar-width-desktop\": \"60%\",\n \"--beam-SubscriptionManagement-blockTileDescription-progressBar-width-mobile\": \"100%\",\n \"--beam-SubscriptionManagement-subWidgetContainer-padding\": \"0px 0px 10px\",\n \"--beam-SubscriptionManagement-previousImpactContainer-padding-desktop\": \"10px 24px 10px 0px\",\n \"--beam-SubscriptionManagement-previousImpactContainer-padding-mobile\": \"0px\",\n \"--beam-SubscriptionManagement-dropDown-padding\": \"15px 8px\",\n \"--beam-SubscriptionManagement-dropDown-borderRadius\": \"8px\",\n \"--beam-SubscriptionManagement-dropDown-backgroundColor\": \"#f8fbfb\",\n \"--beam-SubscriptionManagement-dropDown-boxShadow\": \"0px 4px 28px 0px rgba(0, 0, 0, 0.04)\",\n \"--beam-SubscriptionManagement-dropDown-width\": \"128px\",\n \"--beam-SubscriptionManagement-dropDown-hover-backgroundColor\": \"#E1F1EE\",\n \"--beam-SubscriptionManagement-dropDownOptions-textDecoration\": \"underline\",\n ...defineCustomText(\"--beam-SubscriptionManagement-dropDownOptions\", {\n fontSize: \"12px\",\n fontWeight: \"400\",\n textTransform: \"capitalize\",\n fontStyle: \"normal\",\n color: \"#0a323c\",\n }),\n \"--beam-SubscriptionManagement-yourPreviousImpactTitle-marginBottom\": \"15px\",\n ...defineCustomText(\"--beam-SubscriptionManagement-yourPreviousImpactTitle\", {\n fontSize: \"18px\",\n fontWeight: \"bold\",\n lineHeight: \"120%\",\n textTransform: \"capitalize\",\n fontStyle: \"normal\",\n color: \"#0a323c\",\n }),\n \"--beam-SubscriptionManagement-yourPreviousImpact-showAllButton-textDecoration\": \"underline\",\n ...defineCustomText(\"--beam-SubscriptionManagement-yourPreviousImpact-showAllButton\", {\n fontSize: \"12px\",\n fontWeight: \"bold\",\n lineHeight: \"120%\",\n textTransform: \"capitalize\",\n fontStyle: \"normal\",\n color: \"#0a323c\",\n }),\n \"--beam-SubscriptionManagement-tile-title-letterSpacing\": \"0.36px\",\n ...defineCustomText(\"--beam-SubscriptionManagement-tile-title\", {\n fontSize: \"12px\",\n fontWeight: \"bold\",\n lineHeight: \"120%\",\n textTransform: \"uppercase\",\n fontStyle: \"normal\",\n color: \"#0a323c\",\n }),\n ...defineCustomText(\"--beam-SubscriptionManagement-tile-description\", {\n fontSize: \"14px\",\n lineHeight: \"120%\",\n fontStyle: \"normal\",\n color: \"#454a47\",\n }),\n ...defineCustomText(\"--beam-SubscriptionManagement-tile-via\", {\n fontSize: \"14px\",\n lineHeight: \"120%\",\n fontStyle: \"normal\",\n color: \"#454a47\",\n }),\n \"--beam-SubscriptionManagement-tile-nonprofitLink-textDecoration\": \"underline\",\n ...defineCustomText(\"--beam-SubscriptionManagement-tile-nonprofitLink\", {\n fontSize: \"14px\",\n fontWeight: \"400\",\n lineHeight: \"120%\",\n textTransform: \"capitalize\",\n fontStyle: \"normal\",\n color: \"#0a323c\",\n }),\n \"--beam-SubscriptionManagement-tile-supportAgainButton-textDecoration\": \"underline\",\n ...defineCustomText(\"--beam-SubscriptionManagement-tile-supportAgainButton\", {\n fontSize: \"14px\",\n fontWeight: \"400\",\n lineHeight: \"120%\",\n textTransform: \"capitalize\",\n fontStyle: \"normal\",\n color: \"#0a323c\",\n }),\n \"--beam-SubscriptionManagement-tile-progressBarLabel-marginLeft\": \"8px\",\n ...defineCustomText(\"--beam-SubscriptionManagement-tile-progressBarLabel\", {\n fontSize: \"10px\",\n fontWeight: \"bold\",\n fontStyle: \"normal\",\n color: \"#878a92\",\n }),\n \"--beam-SubscriptionManagement-tile-fundedAmount-lineHeight\": \"16px\",\n ...defineCustomText(\"--beam-SubscriptionManagement-tile-fundedAmount\", {\n fontSize: \"14px\",\n fontWeight: \"400\",\n lineHeight: \"120%\",\n fontStyle: \"italic\",\n color: \"#0a323c\",\n }),\n };\n\n const remoteConfig = this.eligibleNonprofitsDataController?.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 return Object.assign(serializable, config);\n }\n\n static styles = [\n cssReset,\n css`\n :host {\n display: block;\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 .drop-down-options {\n text-decoration: var(--beam-SubscriptionManagement-dropDownOptions-textDecoration);\n ${useCustomText(\"--beam-SubscriptionManagement-dropDownOptions\")};\n }\n .widget-container {\n background-color: var(--beam-SubscriptionManagement-widgetContainer-backgroundColor);\n border: 1px solid var(--beam-SubscriptionManagement-widgetContainer-borderColor);\n border-radius: var(--beam-SubscriptionManagement-widgetContainer-borderRadius);\n padding: var(--beam-SubscriptionManagement-widgetContainer-padding);\n max-width: var(--beam-SubscriptionManagement-widgetContainer-maxWidth);\n }\n .header {\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n padding: var(--beam-SubscriptionManagement-header-padding);\n border-radius: var(--beam-SubscriptionManagement-header-borderRadius);\n background-color: var(--beam-SubscriptionManagement-header-backgroundColor);\n }\n .header-content {\n display: flex;\n justify-content: space-between;\n width: 100%;\n }\n .button {\n cursor: pointer;\n background: none;\n border: none;\n }\n .header .meatballsMenu {\n position: relative;\n cursor: pointer;\n }\n .header .meatballsMenu span {\n font-size: var(--beam-SubscriptionManagement-header-meatballsMenu-fontSize);\n color: var(--beam-SubscriptionManagement-header-meatballsMenu-color);\n }\n .dropdown-container {\n display: none;\n position: absolute;\n right: 0;\n z-index: 1;\n padding: var(--beam-SubscriptionManagement-dropDown-padding);\n border-radius: var(--beam-SubscriptionManagement-dropDown-borderRadius);\n background: var(--beam-SubscriptionManagement-dropDown-backgroundColor);\n box-shadow: var(--beam-SubscriptionManagement-dropDown-boxShadow);\n width: var(--beam-SubscriptionManagement-dropDown-width);\n }\n .dropdown-container.visible {\n display: block;\n }\n .dropdown-container:hover {\n background-color: var(--beam-SubscriptionManagement-dropDown-hover-backgroundColor);\n }\n .line-break {\n border-top: var(--beam-SubscriptionManagement-lineBreak-width) solid\n var(--beam-SubscriptionManagement-lineBreak-color);\n margin: var(--beam-SubscriptionManagement-lineBreak-margin);\n }\n .tile {\n border: var(--beam-SubscriptionManagement-tile-border-width) solid\n var(--beam-SubscriptionManagement-tile-border-color);\n padding: var(--beam-SubscriptionManagement-tile-padding);\n border-radius: var(--beam-SubscriptionManagement-tile-borderRadius);\n background: var(--beam-SubscriptionManagement-tile-background);\n }\n .tile-title {\n letter-spacing: var(--beam-SubscriptionManagement-tile-title-letterSpacing);\n ${useCustomText(\"--beam-SubscriptionManagement-tile-title\")};\n }\n .tile-content {\n display: flex;\n flex-direction: row;\n gap: var(--beam-SubscriptionManagement-tileContent-gap);\n padding: var(--beam-SubscriptionManagement-tileContent-padding);\n }\n .tile-description-block-container {\n flex: 1 1 67%;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: var(--beam-SubscriptionManagement-blockTileDescription-gap);\n padding: var(--beam-SubscriptionManagement-blockTileDescription-padding);\n line-height: var(--beam-SubscriptionManagement-blockTileDescription-lineHeight);\n }\n .sub-widget-container {\n padding: var(--beam-SubscriptionManagement-subWidgetContainer-padding);\n }\n .previous-impact-title {\n margin-bottom: var(--beam-SubscriptionManagement-yourPreviousImpactTitle-marginBottom);\n ${useCustomText(\"--beam-SubscriptionManagement-yourPreviousImpactTitle\")};\n }\n .tile-description {\n ${useCustomText(\"--beam-SubscriptionManagement-tile-description\")};\n }\n .via {\n ${useCustomText(\"--beam-SubscriptionManagement-tile-via\")};\n }\n .center-align-logo {\n margin-left: auto;\n margin-right: auto;\n }\n .left-align-logo {\n margin-left: 0;\n margin-right: auto;\n }\n .previous-impact-link-container {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .previous-impact-link {\n text-decoration-line: var(--beam-SubscriptionManagement-yourPreviousImpact-showAllButton-textDecoration);\n ${useCustomText(\"--beam-SubscriptionManagement-yourPreviousImpact-showAllButton\")};\n }\n .icon-background {\n width: var(--beam-SubscriptionManagement-tile-icon-background-width);\n height: var(--beam-SubscriptionManagement-tile-icon-background-height);\n border-radius: var(--beam-SubscriptionManagement-tile-icon-background-borderRadius);\n padding: var(--beam-SubscriptionManagement-tile-icon-background-padding);\n overflow: hidden;\n background: var(--beam-SubscriptionManagement-tile-icon-background-backgroundColor);\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .icon {\n display: block;\n margin: auto;\n border-radius: var(--beam-SubscriptionManagement-tile-icon-borderRadius);\n height: var(--beam-SubscriptionManagement-tile-icon-height);\n }\n .tile-progress-bar-container-desktop {\n display: flex;\n align-items: center;\n width: var(--beam-SubscriptionManagement-blockTileDescription-progressBar-width-desktop);\n }\n .tile-progress-bar-container-mobile {\n display: flex;\n align-items: center;\n width: var(--beam-SubscriptionManagement-blockTileDescription-progressBar-width-mobile);\n }\n .previous-impact-nonprofit-link {\n text-decoration-line: var(--beam-SubscriptionManagement-tile-nonprofitLink-textDecoration);\n ${useCustomText(\"--beam-SubscriptionManagement-tile-nonprofitLink\")};\n }\n .details-funding-progress-label {\n white-space: nowrap;\n flex: 0 1;\n margin-left: var(--beam-SubscriptionManagement-tile-progressBarLabel-marginLeft);\n ${useCustomText(\"--beam-SubscriptionManagement-tile-progressBarLabel\")};\n }\n .funded-times {\n line-height: var(--beam-SubscriptionManagement-tile-fundedAmount-lineHeight);\n ${useCustomText(\"--beam-SubscriptionManagement-tile-fundedAmount\")};\n }\n .tile-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n .tile-support-again {\n text-decoration-line: var(--beam-SubscriptionManagement-tile-supportAgainButton-textDecoration);\n ${useCustomText(\"--beam-SubscriptionManagement-tile-supportAgainButton\")};\n }\n `,\n cssCardGrid({\n gap: \"var(--beam-SubscriptionManagement-tile-marginBottom)\",\n itemMinWidth: \"250px\",\n columnCount: \"1\",\n }),\n ];\n\n private renderPreviousImpactTiles({\n personalImpact,\n cardStyle,\n eligibleNonprofitConfig,\n }: {\n personalImpact?: TIAPIV3PersonalImpact;\n cardStyle: string;\n eligibleNonprofitConfig?: TIAPIV3EligibleNonprofitConfig;\n }) {\n if (!personalImpact) {\n return html``;\n }\n if (!eligibleNonprofitConfig) {\n return html``;\n }\n\n const tilesToShow = this.showAllTiles ? personalImpact : personalImpact.slice(0, INITIAL_TILE_COUNT);\n let emojiIndex = 0;\n return html`\n ${tilesToShow.map((previousImpact) => {\n const {\n impact: { goalCompletionText, description, goalProgressPercentage, goalProgressText },\n nonprofit: { cause, causeIconSelectedUrl, causeIconUrl, website, name, id },\n } = previousImpact;\n\n const isEligibleToSupportAgain = this.nonprofitId !== id && this.isNonprofitEligible(id);\n const showProgressBar = isEligibleToSupportAgain && this.shouldDisplayProgressBar(goalProgressPercentage);\n const emoji = goalCompletionText ? `${this.emojis[emojiIndex]} ` : \"\";\n emojiIndex = (emojiIndex + 1) % this.emojis.length;\n\n return html`\n <div class=\"tile\">\n <div class=\"tile-header\">\n <div class=\"tile-title\">${localizeUserString(this.configLang, cause || \"\")}</div>\n ${isEligibleToSupportAgain\n ? html` <button\n class=\"tile-support-again button\"\n @click=\"${() => this.handleSupportAgainButtonClick(id, name)}\"\n >\n ${localizeUserString(\n this.configLang,\n eligibleNonprofitConfig?.web?.additionalStrings?.[\"supportAgainButton\"] || \"\"\n ) || strings[this.configLang].supportAgainButton()}\n </button>`\n : html``}\n </div>\n <div class=\"tile-content\">\n <div class=\"icon-background\">\n <img\n src=\"${cardStyle === \"'selected_icon'\" ? causeIconSelectedUrl : causeIconUrl}\"\n alt=\"${cause}\"\n class=\"icon\"\n />\n </div>\n <div class=\"tile-description-block-container\">\n <div class=\"tile-description-container\">\n <span class=\"tile-description\">${localizeUserString(this.configLang, description || \"\")}</span>\n <span class=\"via\"\n >${localizeUserString(\n this.configLang,\n eligibleNonprofitConfig?.web?.additionalStrings?.[\"via\"] || \"\"\n ) || strings[this.configLang].via()}</span\n >\n <a href=\"${website}\" target=\"_blank\" class=\"previous-impact-nonprofit-link\">\n ${localizeUserString(this.configLang, name || \"\")}\n </a>\n </div>\n ${showProgressBar\n ? html` <div\n class=\"${this.isMobile\n ? \"tile-progress-bar-container-mobile\"\n : \"tile-progress-bar-container-desktop\"}\"\n >\n <beam-progress-bar value=\"${goalProgressPercentage}\" style=\"flex: 1 0;\"></beam-progress-bar>\n <span class=\"details-funding-progress-label\">${goalProgressText}</span>\n </div>`\n : html``}\n <div class=\"funded-times\">\n ${emoji}${unsafeHTML(localizeUserString(this.configLang, goalCompletionText))}\n </div>\n </div>\n </div>\n </div>\n `;\n })}\n `;\n }\n\n render() {\n const { data, loading, error } = this.eligibleNonprofitsDataController;\n if (loading) {\n return _loading();\n }\n const excludeDonationsForRecurringTransactions = data?.settings?.excludeDonationsForRecurringTransactions;\n if (excludeDonationsForRecurringTransactions) {\n return html``;\n }\n if (error || data == null) {\n return this.debug ? _errorMessage({ error: error || new Error(\"No data\") }) : \"\";\n }\n let content;\n const cardStyle = this.cssVariables[\"--beam-SubscriptionManagement-previousImpact-cardStyle\"];\n const logoAlignDesktop = this.cssVariables[\"--beam-SubscriptionManagement-logo-align-desktop\"];\n const logoAlignMobile = this.cssVariables[\"--beam-SubscriptionManagement-logo-align-mobile\"];\n const previousImpactCount = this.getDisplayablePreviousImpacts().length ?? 0;\n if (\n this.subscriptionDataController.loading ||\n this.eligibleNonprofitsDataController.loading ||\n this.personalImpactDataController.loading\n ) {\n _loading();\n }\n\n if (\n (this.subscriptionDataController.error ||\n this.eligibleNonprofitsDataController.error ||\n this.personalImpactDataController.error) &&\n this.debug\n ) {\n if (this.subscriptionDataController.error !== null) {\n return _errorMessage({ error: this.subscriptionDataController.error });\n } else if (this.eligibleNonprofitsDataController.error !== null) {\n return _errorMessage({ error: this.eligibleNonprofitsDataController.error });\n } else if (this.personalImpactDataController.error !== null) {\n return _errorMessage({ error: this.personalImpactDataController.error });\n }\n } else {\n content = \"\";\n }\n\n if (this.activeWidget === \"select-subscription-nonprofit\") {\n content = html` <beam-select-subscription-nonprofit\n part=\"subscription-nonprofit\"\n storeId=\"${this.storeId}\"\n subscriptionId=\"${this.subscriptionId}\"\n nonprofitId=${this.nonprofitId}\n selectedNonprofitId=${this.selectedNonprofitId}\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n postalCode=\"${this.postalCode}\"\n countryCode=\"${this.countryCode}\"\n lang=\"${this.lang}\"\n ?draftConfig=\"${this.draftConfig}\"\n ?debug=\"${this.debug}\"\n @beamnonprofitselect=\"${(event: Event) => this.handleNonprofitSelect(event)}\"\n ></beam-select-subscription-nonprofit>`;\n } else if (this.activeWidget === \"subscription-impact\") {\n content = html`\n <beam-subscription-impact\n part=\"subscription-impact\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n storeId=\"${this.storeId}\"\n beamUserId=\"${this.beamUserId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n ?draftConfig=\"${this.draftConfig}\"\n ?debug=\"${this.debug}\"\n ></beam-subscription-impact>\n `;\n }\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n <div class=\"widget-container\">\n <div class=\"header\">\n <div class=\"header-content\">\n <div\n class=\"logo ${this.isMobile\n ? logoAlignMobile === \"center\"\n ? \"center-align-logo\"\n : \"left-align-logo\"\n : logoAlignDesktop === \"center\"\n ? \"center-align-logo\"\n : \"left-align-logo\"}\"\n >\n <beam-partner-logos\n partnerName=\"${this.eligibleNonprofitsDataController.data?.chain.name}\"\n partnerLogoUrl=\"${this.eligibleNonprofitsDataController.data?.chain.logoUrl}\"\n ></beam-partner-logos>\n </div>\n ${this.nonprofitId\n ? html` <div class=\"meatballsMenu\" @click=\"${() => (this.dropdownVisible = !this.dropdownVisible)}\">\n <span>&#8230;</span>\n <div class=\"dropdown-container ${this.dropdownVisible ? \"visible\" : \"\"}\">\n ${this.activeWidget === \"select-subscription-nonprofit\"\n ? html`<button\n @click=\"${this.handleBackToSubscriptionImpactButtonClick}\"\n class=\"drop-down-options button\"\n >\n ${localizeUserString(\n this.configLang,\n data?.config?.web?.additionalStrings?.[\"previousNonprofitButtonText\"] || \"\"\n ) || strings[this.configLang].previousNonprofitButton()}\n </button>`\n : this.activeWidget === \"subscription-impact\"\n ? html`<button @click=\"${this.handleSwapNonprofitButtonClick}\" class=\"drop-down-options button\">\n ${localizeUserString(\n this.configLang,\n data?.config?.web?.additionalStrings?.[\"changeNonprofitButtonText\"] || \"\"\n ) || strings[this.configLang].changeNonprofitButton()}\n </button>`\n : \"\"}\n </div>\n </div>`\n : html``}\n </div>\n </div>\n <div class=\"sub-widget-container\" part=\"previous-impact\">${content}</div>\n ${previousImpactCount > MIN_PREVIOUS_IMPACT\n ? html` <div class=\"line-break\"></div>\n\n <div\n class=\"previous-impact-container ${this.isMobile\n ? \"--beam-SubscriptionManagement-previousImpactContainer-padding-mobile\"\n : \"--beam-SubscriptionManagement-previousImpactContainer-padding-desktop\"}\"\n >\n <h2 class=\"previous-impact-title\">\n ${localizeUserString(\n this.configLang,\n data?.config?.web?.additionalStrings?.[\"previousImpactHeader\"] || \"\"\n ) || strings[this.configLang].previousImpactHeader()}\n </h2>\n <div class=\"cardGrid\">\n ${this.renderPreviousImpactTiles({\n personalImpact: this.getDisplayablePreviousImpacts(),\n cardStyle,\n eligibleNonprofitConfig: this.eligibleNonprofitsDataController.data?.config,\n })}\n </div>\n ${previousImpactCount > INITIAL_TILE_COUNT\n ? html`\n <div class=\"previous-impact-link-container\">\n <button\n @click=\"${() => (this.showAllTiles = !this.showAllTiles)}\"\n class=\"previous-impact-link button\"\n >\n ${this.showAllTiles\n ? localizeUserString(\n this.configLang,\n data?.config?.web?.additionalStrings?.[\"showLessButton\"] || \"\"\n ) || strings[this.configLang].showLessButton()\n : localizeUserString(\n this.configLang,\n data?.config?.web?.additionalStrings?.[\"showAllButton\"] || \"\"\n ) || strings[this.configLang].showAllButton()}\n </button>\n </div>\n `\n : html``}\n </div>`\n : html``}\n </div>\n `;\n }\n}\n\ndefineCustomElement(BeamSubscriptionManagement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-subscription-management\": BeamSubscriptionManagement;\n }\n}\n"],"names":["strings","INITIAL_TILE_COUNT","MIN_PREVIOUS_IMPACT","MIN_PROGRESS_THRESHOLD","MAX_PROGRESS_THRESHOLD","BeamSubscriptionManagement","LitElement","DEFAULT_BASE_URL","AsyncController","SUPPORTED_LANGUAGES","MissingConfig","enforceConfig","eligibleNonprofitResult","postChainEligibleNonprofitsForCart","makeApiKeyHeader","WIDGET_NAMES","subscriptionResult","postFindOrCreateSubscription","impactResult","getImpact","personalImpacts","impact","nonprofitId","nonprofitName","event","BeamNonprofitSelectEvent","selectedNonprofitId","np","progressValue","defaults","partnerLogosConfigDefaults","progressBarConfigDefaults","defineCustomText","remoteConfig","config","_cssVariableMap","personalImpact","cardStyle","eligibleNonprofitConfig","html","tilesToShow","emojiIndex","previousImpact","goalCompletionText","description","goalProgressPercentage","goalProgressText","cause","causeIconSelectedUrl","causeIconUrl","website","name","id","isEligibleToSupportAgain","showProgressBar","emoji","localizeUserString","unsafeHTML","data","loading","error","_loading","_errorMessage","content","logoAlignDesktop","logoAlignMobile","previousImpactCount","cssReset","css","useCustomText","cssCardGrid","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
1
+ {"version":3,"file":"subscription-management.js","sources":["../../src/components/subscription-management/strings.ts","../../src/components/subscription-management/index.ts"],"sourcesContent":["export const strings = {\n en: {\n changeNonprofitButton: () => `Change Nonprofit`,\n previousImpactHeader: () => `Your Previous Impact`,\n previousNonprofitButton: () => `Back to Previous Nonprofit`,\n supportAgainButton: () => `Support Again`,\n via: () => `via`,\n showAllButton: () => `Show All`,\n showLessButton: () => `Show Less`,\n },\n fr: {\n changeNonprofitButton: () => `Change Nonprofit`,\n previousImpactHeader: () => `Your Previous Impact`,\n previousNonprofitButton: () => `Back to Previous Nonprofit`,\n supportAgainButton: () => `Support Again`,\n via: () => `via`,\n showAllButton: () => `Show All`,\n showLessButton: () => `Show Less`,\n },\n de: {\n changeNonprofitButton: () => `Change Nonprofit`,\n previousImpactHeader: () => `Your Previous Impact`,\n previousNonprofitButton: () => `Back to Previous Nonprofit`,\n supportAgainButton: () => `Support Again`,\n via: () => `via`,\n showAllButton: () => `Show All`,\n showLessButton: () => `Show Less`,\n },\n es: {\n changeNonprofitButton: () => `Change Nonprofit`,\n previousImpactHeader: () => `Your Previous Impact`,\n previousNonprofitButton: () => `Back to Previous Nonprofit`,\n supportAgainButton: () => `Support Again`,\n via: () => `via`,\n showAllButton: () => `Show All`,\n showLessButton: () => `Show Less`,\n },\n it: {\n changeNonprofitButton: () => `Change Nonprofit`,\n previousImpactHeader: () => `Your Previous Impact`,\n previousNonprofitButton: () => `Back to Previous Nonprofit`,\n supportAgainButton: () => `Support Again`,\n via: () => `via`,\n showAllButton: () => `Show All`,\n showLessButton: () => `Show Less`,\n },\n pl: {\n changeNonprofitButton: () => `Change Nonprofit`,\n previousImpactHeader: () => `Your Previous Impact`,\n previousNonprofitButton: () => `Back to Previous Nonprofit`,\n supportAgainButton: () => `Support Again`,\n via: () => `via`,\n showAllButton: () => `Show All`,\n showLessButton: () => `Show Less`,\n },\n};\n","import { css, html, LitElement } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES, WIDGET_NAMES } from \"../../api-sdk/constants\";\nimport { TCart } from \"../../shared/cart-contents\";\nimport { progressBarConfigDefaults } from \"../../shared/components/progress-bar\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { postFindOrCreateSubscription, postChainEligibleNonprofitsForCart, getImpact } from \"../../api-sdk/v3/routes\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomText, useCustomText } from \"../../shared/fragments/custom-text\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { _cssVariableMap } from \"../../shared/fragments/css-variable-map\";\nimport { BeamNonprofitSelectEvent } from \"../../utils/events\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport \"../select-subscription-nonprofit\";\nimport \"../subscription-impact\";\nimport \"../beam-partner-logos\";\nimport \"../../shared/components/progress-bar\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { partnerLogosConfigDefaults } from \"../beam-partner-logos\";\nimport { makeApiKeyHeader } from \"../../utils/makeApiKeyHeader\";\nimport { _loading } from \"../../shared/fragments/loading-template\";\nimport { localizeUserString } from \"../../shared/localize\";\nimport { TNumericId } from \"../../shared/types\";\nimport { cssCardGrid } from \"../../shared/fragments/css-card-grid\";\nimport { strings } from \"./strings\";\n\ninterface RequiredDataPropsWithEmail {\n email: string;\n apiKey: string;\n subscriptionId: string;\n}\n\ninterface RequiredDataPropsWithPartnerUserId {\n partnerUserId: string;\n apiKey: string;\n subscriptionId: string;\n}\n\ntype TRequiredDataProps = RequiredDataPropsWithEmail | RequiredDataPropsWithPartnerUserId;\nexport type TIAPIV3PersonalImpact = Awaited<ReturnType<typeof import(\"../../api-sdk/v3/routes\").getImpact>>[\"personal\"];\nexport type TIAPIV3EligibleNonprofits = Awaited<\n ReturnType<typeof import(\"../../api-sdk/v3/routes\").getChainNonprofits>\n>[\"nonprofits\"];\nexport type TIAPIV3EligibleNonprofitConfig = Awaited<\n ReturnType<typeof import(\"../../api-sdk/v3/routes\").getChainNonprofits>\n>[\"config\"];\n\nconst INITIAL_TILE_COUNT = 3;\nconst MIN_PREVIOUS_IMPACT = 0;\nconst MIN_PROGRESS_THRESHOLD = 1;\nconst MAX_PROGRESS_THRESHOLD = 98;\n\nexport class BeamSubscriptionManagement extends LitElement {\n static tagName = \"beam-subscription-management\";\n\n @property({ type: String })\n public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String })\n public apiKey!: TRequiredDataProps[\"apiKey\"];\n\n @property({ type: String })\n public subscriptionId!: TRequiredDataProps[\"subscriptionId\"];\n\n @property({ type: Number, reflect: true })\n public storeId?: number; // Either storeId or postalCode, countryCode must be provided\n\n @property({ type: String })\n public email?: RequiredDataPropsWithEmail[\"email\"]; // Either email or partnerUserId must be provided\n\n @property({ type: String })\n public partnerUserId?: RequiredDataPropsWithPartnerUserId[\"partnerUserId\"]; // Either email or partnerUserId must be provided\n\n @property({ type: String })\n public postalCode?: string;\n\n @property({ type: String })\n public countryCode?: string;\n\n @property({ type: Number, reflect: true })\n public selectedNonprofitId?: TNumericId;\n\n @property({ type: String })\n public lang: LANGUAGES = \"en\";\n\n @property({ type: Object })\n public cart?: TCart;\n\n @property({ type: Boolean })\n public debug = false;\n\n @property({ type: Boolean })\n public draftConfig = false;\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n @state() private activeWidget: \"select-subscription-nonprofit\" | \"subscription-impact\" | null = null; // Based on /findSubscriptionByRemoteId\n @state() private nonprofitId: number | null = null; // From /findSubscriptionByRemoteId response\n @state() private beamUserId: string | null = null; // From findSubscriptionByRemoteId\n @state() private eligibleNonprofits: TIAPIV3EligibleNonprofits = [];\n @state() private showAllTiles = false;\n @state() private isMobile = window.innerWidth < 720;\n @state() private dropdownVisible = false;\n @state() private emojis = [\"👏\", \"💪\", \"🙌\", \"✨\", \"🥇\"];\n\n private subscriptionDataController = new AsyncController<typeof this.fetchSubscription>(this, this.fetchSubscription);\n private eligibleNonprofitsDataController = new AsyncController<typeof this.fetchEligibleNonprofits>(\n this,\n this.fetchEligibleNonprofits\n );\n private personalImpactDataController = new AsyncController<typeof this.fetchImpact>(this, this.fetchImpact);\n\n async firstUpdated() {\n if (!this.email && !this.partnerUserId) {\n throw new MissingConfig(\n [\"email\", \"partnerUserId\"],\n \"One of the following properties needs to be specified: email, partnerUserId \"\n );\n }\n enforceConfig<TRequiredDataProps>([\"apiKey\", \"subscriptionId\"], this);\n await this.loadWidget();\n }\n\n async loadWidget() {\n // In parallel:\n // (1). Fetch eligible nonprofits [storeId and chainName]\n // (2). Fetch subscription [userId and nonprofitId]\n await Promise.all([this.fetchEligibleNonprofits(), this.fetchSubscription()]);\n await this.fetchImpact();\n this.activeWidget = this.nonprofitId ? \"subscription-impact\" : \"select-subscription-nonprofit\";\n }\n\n async fetchEligibleNonprofits() {\n enforceConfig<TRequiredDataProps>([\"apiKey\", \"subscriptionId\"], this);\n const eligibleNonprofitResult = await postChainEligibleNonprofitsForCart({\n baseUrl: this.baseUrl,\n headers: makeApiKeyHeader(this.apiKey),\n requestBody: {\n storeId: this.storeId || undefined,\n postalCode: this.postalCode || undefined,\n countryCode: this.countryCode || undefined,\n widgetName: WIDGET_NAMES.subscription_management,\n version: \"1.0.0\",\n },\n });\n this.storeId = eligibleNonprofitResult.store.id;\n this.eligibleNonprofits = eligibleNonprofitResult.nonprofits;\n this.eligibleNonprofitsDataController.data = eligibleNonprofitResult;\n return eligibleNonprofitResult;\n }\n\n async fetchSubscription() {\n enforceConfig<TRequiredDataProps>([\"apiKey\", \"subscriptionId\"], this);\n const subscriptionResult = await postFindOrCreateSubscription({\n baseUrl: this.baseUrl,\n headers: makeApiKeyHeader(this.apiKey),\n requestBody: {\n remoteSubscriptionId: this.subscriptionId,\n email: this.email,\n partnerUserId: this.partnerUserId,\n },\n });\n\n this.beamUserId = subscriptionResult.beamUserId; // Returned in response regardless of subscription redemption\n this.nonprofitId = subscriptionResult.nonprofit?.id || null;\n return subscriptionResult;\n }\n\n async fetchImpact() {\n enforceConfig<TRequiredDataProps>([\"apiKey\"], this);\n\n const impactResult = await getImpact({\n baseUrl: this.baseUrl,\n headers: makeApiKeyHeader(this.apiKey),\n queryParams: {\n beamUserId: this.beamUserId ? this.beamUserId : undefined,\n widgetName: \"subscription-management\",\n version: \"1.0.0\",\n lang: this.configLang,\n },\n });\n\n this.personalImpactDataController.data = impactResult;\n return impactResult;\n }\n\n // Used to filter the full personal impact results to\n // just ones that are displayable\n // 1. Checks \"includeInPersonalImpact\" for each nonprofit\n // 2. Checks if it's the currently supported nonprofit, and if it's been funded at least once\n getDisplayablePreviousImpacts() {\n const personalImpacts = this.personalImpactDataController.data?.personal;\n if (!personalImpacts || personalImpacts?.length < 1) {\n return [];\n }\n\n return personalImpacts.filter((impact) => {\n if (!impact.nonprofit.includeInPersonalImpact) {\n return false;\n }\n if (\n impact.nonprofit.id === this.nonprofitId &&\n (!impact.impact.goalCompletionText || impact.impact.goalCompletionText?.length < 1)\n ) {\n return false;\n }\n return true;\n });\n }\n\n handleSwapNonprofitButtonClick() {\n this.activeWidget = \"select-subscription-nonprofit\";\n }\n\n handleBackToSubscriptionImpactButtonClick() {\n this.activeWidget = \"subscription-impact\";\n }\n\n handleSupportAgainButtonClick(nonprofitId: TNumericId, nonprofitName: string) {\n this.activeWidget = \"select-subscription-nonprofit\";\n this.selectedNonprofitId = nonprofitId;\n\n const event = new BeamNonprofitSelectEvent({\n selectedNonprofitId: nonprofitId,\n nonprofitName: nonprofitName,\n source: WIDGET_NAMES.subscription_management,\n });\n this.dispatchEvent(event);\n }\n\n handleNonprofitSelect(event: Event) {\n if (!(event instanceof BeamNonprofitSelectEvent)) return; // TypeScript guard\n const { selectedNonprofitId } = event.detail;\n this.nonprofitId = selectedNonprofitId ?? null;\n this.activeWidget = \"subscription-impact\";\n }\n\n isNonprofitEligible(nonprofitId: TNumericId) {\n return this.eligibleNonprofits.some((np: TIAPIV3EligibleNonprofits[0]) => np.nonprofit.id === nonprofitId);\n }\n\n shouldDisplayProgressBar(progressValue: number) {\n return progressValue > MIN_PROGRESS_THRESHOLD && progressValue < MAX_PROGRESS_THRESHOLD;\n }\n\n public get cssVariables() {\n const defaults = {\n ...partnerLogosConfigDefaults,\n ...progressBarConfigDefaults,\n \"--beam-fontFamily\": \"inherit\",\n \"--beam-fontStyle\": \"inherit\",\n \"--beam-fontSize\": \"inherit\",\n \"--beam-textColor\": \"inherit\",\n \"--beam-backgroundColor\": \"inherit\",\n \"--beam-SubscriptionManagement-widgetContainer-borderColor\": \"#d5d5d5\",\n \"--beam-SubscriptionManagement-widgetContainer-borderRadius\": \"4px\",\n \"--beam-SubscriptionManagement-widgetContainer-padding\": \"8px 20px\",\n \"--beam-SubscriptionManagement-widgetContainer-backgroundColor\": \"inherit\",\n \"--beam-SubscriptionManagement-widgetContainer-maxWidth\": \"820px\",\n \"--beam-SubscriptionManagement-logo-align-desktop\": \"left\",\n \"--beam-SubscriptionManagement-logo-align-mobile\": \"center\",\n \"--beam-SubscriptionManagement-previousImpact-cardStyle\": \"'selected_icon'\",\n \"--beam-SubscriptionManagement-header-padding\": \"10px 20px 10px 0px\",\n \"--beam-SubscriptionManagement-header-borderRadius\": \"0px\",\n \"--beam-SubscriptionManagement-header-backgroundColor\": \"#fff\",\n \"--beam-SubscriptionManagement-header-meatballsMenu-fontSize\": \"24px\",\n \"--beam-SubscriptionManagement-header-meatballsMenu-color\": \"24px\",\n \"--beam-SubscriptionManagement-lineBreak-color\": \"#ddd\",\n \"--beam-SubscriptionManagement-lineBreak-width\": \"1px\",\n \"--beam-SubscriptionManagement-lineBreak-margin\": \"10px 0 20px 0\",\n \"--beam-SubscriptionManagement-tile-marginBottom\": \"20px\",\n \"--beam-SubscriptionManagement-tile-border-width\": \"0px\",\n \"--beam-SubscriptionManagement-tile-border-color\": \"#ddd\",\n \"--beam-SubscriptionManagement-tile-padding\": \"12.5px\",\n \"--beam-SubscriptionManagement-tile-borderRadius\": \"8px\",\n \"--beam-SubscriptionManagement-tile-background\": \"#f8fbfb\",\n \"--beam-SubscriptionManagement-tileContent-gap\": \" 15px\",\n \"--beam-SubscriptionManagement-tileContent-padding\": \"5px 0px\",\n \"--beam-SubscriptionManagement-tile-icon-borderRadius\": \"4px\",\n \"--beam-SubscriptionManagement-tile-icon-height\": \"28px\",\n \"--beam-SubscriptionManagement-tile-icon-background-borderRadius\": \"50%\",\n \"--beam-SubscriptionManagement-tile-icon-background-width\": \"50px\",\n \"--beam-SubscriptionManagement-tile-icon-background-height\": \"50px\",\n \"--beam-SubscriptionManagement-tile-icon-background-backgroundColor\": \"#0a323c\",\n \"--beam-SubscriptionManagement-tile-icon-background-padding\": \"10px\",\n \"--beam-SubscriptionManagement-blockTileDescription-gap\": \"5px\",\n \"--beam-SubscriptionManagement-blockTileDescription-padding\": \"0px\",\n \"--beam-SubscriptionManagement-blockTileDescription-lineHeight\": \"130%\",\n \"--beam-SubscriptionManagement-blockTileDescription-progressBar-width-desktop\": \"60%\",\n \"--beam-SubscriptionManagement-blockTileDescription-progressBar-width-mobile\": \"100%\",\n \"--beam-SubscriptionManagement-subWidgetContainer-padding\": \"0px 0px 10px\",\n \"--beam-SubscriptionManagement-previousImpactContainer-padding-desktop\": \"10px 24px 10px 0px\",\n \"--beam-SubscriptionManagement-previousImpactContainer-padding-mobile\": \"0px\",\n \"--beam-SubscriptionManagement-dropDown-padding\": \"15px 8px\",\n \"--beam-SubscriptionManagement-dropDown-borderRadius\": \"8px\",\n \"--beam-SubscriptionManagement-dropDown-backgroundColor\": \"#f8fbfb\",\n \"--beam-SubscriptionManagement-dropDown-boxShadow\": \"0px 4px 28px 0px rgba(0, 0, 0, 0.04)\",\n \"--beam-SubscriptionManagement-dropDown-width\": \"128px\",\n \"--beam-SubscriptionManagement-dropDown-hover-backgroundColor\": \"#E1F1EE\",\n \"--beam-SubscriptionManagement-dropDownOptions-textDecoration\": \"underline\",\n ...defineCustomText(\"--beam-SubscriptionManagement-dropDownOptions\", {\n fontSize: \"12px\",\n fontWeight: \"400\",\n textTransform: \"capitalize\",\n fontStyle: \"normal\",\n color: \"#0a323c\",\n }),\n \"--beam-SubscriptionManagement-yourPreviousImpactTitle-marginBottom\": \"15px\",\n ...defineCustomText(\"--beam-SubscriptionManagement-yourPreviousImpactTitle\", {\n fontSize: \"18px\",\n fontWeight: \"bold\",\n lineHeight: \"120%\",\n textTransform: \"capitalize\",\n fontStyle: \"normal\",\n color: \"#0a323c\",\n }),\n \"--beam-SubscriptionManagement-yourPreviousImpact-showAllButton-textDecoration\": \"underline\",\n ...defineCustomText(\"--beam-SubscriptionManagement-yourPreviousImpact-showAllButton\", {\n fontSize: \"12px\",\n fontWeight: \"bold\",\n lineHeight: \"120%\",\n textTransform: \"capitalize\",\n fontStyle: \"normal\",\n color: \"#0a323c\",\n }),\n \"--beam-SubscriptionManagement-tile-title-letterSpacing\": \"0.36px\",\n ...defineCustomText(\"--beam-SubscriptionManagement-tile-title\", {\n fontSize: \"12px\",\n fontWeight: \"bold\",\n lineHeight: \"120%\",\n textTransform: \"uppercase\",\n fontStyle: \"normal\",\n color: \"#0a323c\",\n }),\n ...defineCustomText(\"--beam-SubscriptionManagement-tile-description\", {\n fontSize: \"14px\",\n lineHeight: \"120%\",\n fontStyle: \"normal\",\n color: \"#454a47\",\n }),\n ...defineCustomText(\"--beam-SubscriptionManagement-tile-via\", {\n fontSize: \"14px\",\n lineHeight: \"120%\",\n fontStyle: \"normal\",\n color: \"#454a47\",\n }),\n \"--beam-SubscriptionManagement-tile-nonprofitLink-textDecoration\": \"underline\",\n ...defineCustomText(\"--beam-SubscriptionManagement-tile-nonprofitLink\", {\n fontSize: \"14px\",\n fontWeight: \"400\",\n lineHeight: \"120%\",\n textTransform: \"capitalize\",\n fontStyle: \"normal\",\n color: \"#0a323c\",\n }),\n \"--beam-SubscriptionManagement-tile-supportAgainButton-textDecoration\": \"underline\",\n ...defineCustomText(\"--beam-SubscriptionManagement-tile-supportAgainButton\", {\n fontSize: \"14px\",\n fontWeight: \"400\",\n lineHeight: \"120%\",\n textTransform: \"capitalize\",\n fontStyle: \"normal\",\n color: \"#0a323c\",\n }),\n \"--beam-SubscriptionManagement-tile-progressBarLabel-marginLeft\": \"8px\",\n ...defineCustomText(\"--beam-SubscriptionManagement-tile-progressBarLabel\", {\n fontSize: \"10px\",\n fontWeight: \"bold\",\n fontStyle: \"normal\",\n color: \"#878a92\",\n }),\n \"--beam-SubscriptionManagement-tile-fundedAmount-lineHeight\": \"16px\",\n ...defineCustomText(\"--beam-SubscriptionManagement-tile-fundedAmount\", {\n fontSize: \"14px\",\n fontWeight: \"400\",\n lineHeight: \"120%\",\n fontStyle: \"italic\",\n color: \"#0a323c\",\n }),\n };\n\n const remoteConfig = this.eligibleNonprofitsDataController?.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 return Object.assign(serializable, config);\n }\n\n static styles = [\n cssReset,\n css`\n :host {\n display: block;\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 .drop-down-options {\n text-decoration: var(--beam-SubscriptionManagement-dropDownOptions-textDecoration);\n ${useCustomText(\"--beam-SubscriptionManagement-dropDownOptions\")};\n }\n .widget-container {\n background-color: var(--beam-SubscriptionManagement-widgetContainer-backgroundColor);\n border: 1px solid var(--beam-SubscriptionManagement-widgetContainer-borderColor);\n border-radius: var(--beam-SubscriptionManagement-widgetContainer-borderRadius);\n padding: var(--beam-SubscriptionManagement-widgetContainer-padding);\n max-width: var(--beam-SubscriptionManagement-widgetContainer-maxWidth);\n }\n .header {\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n padding: var(--beam-SubscriptionManagement-header-padding);\n border-radius: var(--beam-SubscriptionManagement-header-borderRadius);\n background-color: var(--beam-SubscriptionManagement-header-backgroundColor);\n }\n .header-content {\n display: flex;\n justify-content: space-between;\n width: 100%;\n }\n .button {\n cursor: pointer;\n background: none;\n border: none;\n }\n .header .meatballsMenu {\n position: relative;\n cursor: pointer;\n }\n .header .meatballsMenu span {\n font-size: var(--beam-SubscriptionManagement-header-meatballsMenu-fontSize);\n color: var(--beam-SubscriptionManagement-header-meatballsMenu-color);\n }\n .dropdown-container {\n display: none;\n position: absolute;\n right: 0;\n z-index: 1;\n padding: var(--beam-SubscriptionManagement-dropDown-padding);\n border-radius: var(--beam-SubscriptionManagement-dropDown-borderRadius);\n background: var(--beam-SubscriptionManagement-dropDown-backgroundColor);\n box-shadow: var(--beam-SubscriptionManagement-dropDown-boxShadow);\n width: var(--beam-SubscriptionManagement-dropDown-width);\n }\n .dropdown-container.visible {\n display: block;\n }\n .dropdown-container:hover {\n background-color: var(--beam-SubscriptionManagement-dropDown-hover-backgroundColor);\n }\n .line-break {\n border-top: var(--beam-SubscriptionManagement-lineBreak-width) solid\n var(--beam-SubscriptionManagement-lineBreak-color);\n margin: var(--beam-SubscriptionManagement-lineBreak-margin);\n }\n .tile {\n border: var(--beam-SubscriptionManagement-tile-border-width) solid\n var(--beam-SubscriptionManagement-tile-border-color);\n padding: var(--beam-SubscriptionManagement-tile-padding);\n border-radius: var(--beam-SubscriptionManagement-tile-borderRadius);\n background: var(--beam-SubscriptionManagement-tile-background);\n }\n .tile-title {\n letter-spacing: var(--beam-SubscriptionManagement-tile-title-letterSpacing);\n ${useCustomText(\"--beam-SubscriptionManagement-tile-title\")};\n }\n .tile-content {\n display: flex;\n flex-direction: row;\n gap: var(--beam-SubscriptionManagement-tileContent-gap);\n padding: var(--beam-SubscriptionManagement-tileContent-padding);\n }\n .tile-description-block-container {\n flex: 1 1 67%;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: var(--beam-SubscriptionManagement-blockTileDescription-gap);\n padding: var(--beam-SubscriptionManagement-blockTileDescription-padding);\n line-height: var(--beam-SubscriptionManagement-blockTileDescription-lineHeight);\n }\n .sub-widget-container {\n padding: var(--beam-SubscriptionManagement-subWidgetContainer-padding);\n }\n .previous-impact-title {\n margin-bottom: var(--beam-SubscriptionManagement-yourPreviousImpactTitle-marginBottom);\n ${useCustomText(\"--beam-SubscriptionManagement-yourPreviousImpactTitle\")};\n }\n .tile-description {\n ${useCustomText(\"--beam-SubscriptionManagement-tile-description\")};\n }\n .via {\n ${useCustomText(\"--beam-SubscriptionManagement-tile-via\")};\n }\n .center-align-logo {\n margin-left: auto;\n margin-right: auto;\n }\n .left-align-logo {\n margin-left: 0;\n margin-right: auto;\n }\n .previous-impact-link-container {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .previous-impact-link {\n text-decoration-line: var(--beam-SubscriptionManagement-yourPreviousImpact-showAllButton-textDecoration);\n ${useCustomText(\"--beam-SubscriptionManagement-yourPreviousImpact-showAllButton\")};\n }\n .icon-background {\n width: var(--beam-SubscriptionManagement-tile-icon-background-width);\n height: var(--beam-SubscriptionManagement-tile-icon-background-height);\n border-radius: var(--beam-SubscriptionManagement-tile-icon-background-borderRadius);\n padding: var(--beam-SubscriptionManagement-tile-icon-background-padding);\n overflow: hidden;\n background: var(--beam-SubscriptionManagement-tile-icon-background-backgroundColor);\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .icon {\n display: block;\n margin: auto;\n border-radius: var(--beam-SubscriptionManagement-tile-icon-borderRadius);\n height: var(--beam-SubscriptionManagement-tile-icon-height);\n }\n .tile-progress-bar-container-desktop {\n display: flex;\n align-items: center;\n width: var(--beam-SubscriptionManagement-blockTileDescription-progressBar-width-desktop);\n }\n .tile-progress-bar-container-mobile {\n display: flex;\n align-items: center;\n width: var(--beam-SubscriptionManagement-blockTileDescription-progressBar-width-mobile);\n }\n .previous-impact-nonprofit-link {\n text-decoration-line: var(--beam-SubscriptionManagement-tile-nonprofitLink-textDecoration);\n ${useCustomText(\"--beam-SubscriptionManagement-tile-nonprofitLink\")};\n }\n .details-funding-progress-label {\n white-space: nowrap;\n flex: 0 1;\n margin-left: var(--beam-SubscriptionManagement-tile-progressBarLabel-marginLeft);\n ${useCustomText(\"--beam-SubscriptionManagement-tile-progressBarLabel\")};\n }\n .funded-times {\n line-height: var(--beam-SubscriptionManagement-tile-fundedAmount-lineHeight);\n ${useCustomText(\"--beam-SubscriptionManagement-tile-fundedAmount\")};\n }\n .tile-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n .tile-support-again {\n text-decoration-line: var(--beam-SubscriptionManagement-tile-supportAgainButton-textDecoration);\n ${useCustomText(\"--beam-SubscriptionManagement-tile-supportAgainButton\")};\n }\n `,\n cssCardGrid({\n gap: \"var(--beam-SubscriptionManagement-tile-marginBottom)\",\n itemMinWidth: \"250px\",\n columnCount: \"1\",\n }),\n ];\n\n private renderPreviousImpactTiles({\n personalImpact,\n cardStyle,\n eligibleNonprofitConfig,\n }: {\n personalImpact?: TIAPIV3PersonalImpact;\n cardStyle: string;\n eligibleNonprofitConfig?: TIAPIV3EligibleNonprofitConfig;\n }) {\n if (!personalImpact) {\n return html``;\n }\n if (!eligibleNonprofitConfig) {\n return html``;\n }\n\n const tilesToShow = this.showAllTiles ? personalImpact : personalImpact.slice(0, INITIAL_TILE_COUNT);\n let emojiIndex = 0;\n return html`\n ${tilesToShow.map((previousImpact) => {\n const {\n impact: { goalCompletionText, description, goalProgressPercentage, goalProgressText },\n nonprofit: { cause, causeIconSelectedUrl, causeIconUrl, website, name, id },\n } = previousImpact;\n\n const isEligibleToSupportAgain = this.nonprofitId !== id && this.isNonprofitEligible(id);\n const showProgressBar = isEligibleToSupportAgain && this.shouldDisplayProgressBar(goalProgressPercentage);\n const emoji = goalCompletionText ? `${this.emojis[emojiIndex]} ` : \"\";\n emojiIndex = (emojiIndex + 1) % this.emojis.length;\n\n return html`\n <div class=\"tile\">\n <div class=\"tile-header\">\n <div class=\"tile-title\">${localizeUserString(this.configLang, cause || \"\")}</div>\n ${isEligibleToSupportAgain\n ? html` <button\n class=\"tile-support-again button\"\n @click=\"${() => this.handleSupportAgainButtonClick(id, name)}\"\n >\n ${localizeUserString(\n this.configLang,\n eligibleNonprofitConfig?.web?.additionalStrings?.[\"supportAgainButton\"] || \"\"\n ) || strings[this.configLang].supportAgainButton()}\n </button>`\n : html``}\n </div>\n <div class=\"tile-content\">\n <div class=\"icon-background\">\n <img\n src=\"${cardStyle === \"'selected_icon'\" ? causeIconSelectedUrl : causeIconUrl}\"\n alt=\"${cause}\"\n class=\"icon\"\n />\n </div>\n <div class=\"tile-description-block-container\">\n <div class=\"tile-description-container\">\n <span class=\"tile-description\">${localizeUserString(this.configLang, description || \"\")}</span>\n <span class=\"via\"\n >${localizeUserString(\n this.configLang,\n eligibleNonprofitConfig?.web?.additionalStrings?.[\"via\"] || \"\"\n ) || strings[this.configLang].via()}</span\n >\n <a href=\"${website}\" target=\"_blank\" class=\"previous-impact-nonprofit-link\">\n ${localizeUserString(this.configLang, name || \"\")}\n </a>\n </div>\n ${showProgressBar\n ? html` <div\n class=\"${this.isMobile\n ? \"tile-progress-bar-container-mobile\"\n : \"tile-progress-bar-container-desktop\"}\"\n >\n <beam-progress-bar value=\"${goalProgressPercentage}\" style=\"flex: 1 0;\"></beam-progress-bar>\n <span class=\"details-funding-progress-label\">${goalProgressText}</span>\n </div>`\n : html``}\n <div class=\"funded-times\">\n ${emoji}${unsafeHTML(localizeUserString(this.configLang, goalCompletionText))}\n </div>\n </div>\n </div>\n </div>\n `;\n })}\n `;\n }\n\n render() {\n const { data, loading, error } = this.eligibleNonprofitsDataController;\n if (loading) {\n return _loading();\n }\n const excludeDonationsForRecurringTransactions = data?.settings?.excludeDonationsForRecurringTransactions;\n if (excludeDonationsForRecurringTransactions) {\n return html``;\n }\n if (error || data == null) {\n return this.debug ? _errorMessage({ error: error || new Error(\"No data\") }) : \"\";\n }\n let content;\n const cardStyle = this.cssVariables[\"--beam-SubscriptionManagement-previousImpact-cardStyle\"];\n const logoAlignDesktop = this.cssVariables[\"--beam-SubscriptionManagement-logo-align-desktop\"];\n const logoAlignMobile = this.cssVariables[\"--beam-SubscriptionManagement-logo-align-mobile\"];\n const previousImpactCount = this.getDisplayablePreviousImpacts().length ?? 0;\n if (\n this.subscriptionDataController.loading ||\n this.eligibleNonprofitsDataController.loading ||\n this.personalImpactDataController.loading\n ) {\n _loading();\n }\n\n if (\n (this.subscriptionDataController.error ||\n this.eligibleNonprofitsDataController.error ||\n this.personalImpactDataController.error) &&\n this.debug\n ) {\n if (this.subscriptionDataController.error !== null) {\n return _errorMessage({ error: this.subscriptionDataController.error });\n } else if (this.eligibleNonprofitsDataController.error !== null) {\n return _errorMessage({ error: this.eligibleNonprofitsDataController.error });\n } else if (this.personalImpactDataController.error !== null) {\n return _errorMessage({ error: this.personalImpactDataController.error });\n }\n } else {\n content = \"\";\n }\n\n if (this.activeWidget === \"select-subscription-nonprofit\") {\n content = html` <beam-select-subscription-nonprofit\n part=\"subscription-nonprofit\"\n storeId=\"${this.storeId}\"\n subscriptionId=\"${this.subscriptionId}\"\n nonprofitId=${this.nonprofitId}\n selectedNonprofitId=${this.selectedNonprofitId}\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n postalCode=\"${this.postalCode}\"\n countryCode=\"${this.countryCode}\"\n lang=\"${this.lang}\"\n ?draftConfig=\"${this.draftConfig}\"\n ?debug=\"${this.debug}\"\n @beamnonprofitselect=\"${(event: Event) => this.handleNonprofitSelect(event)}\"\n ></beam-select-subscription-nonprofit>`;\n } else if (this.activeWidget === \"subscription-impact\") {\n content = html`\n <beam-subscription-impact\n part=\"subscription-impact\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n storeId=\"${this.storeId}\"\n beamUserId=\"${this.beamUserId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n ?draftConfig=\"${this.draftConfig}\"\n ?debug=\"${this.debug}\"\n ></beam-subscription-impact>\n `;\n }\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n <div class=\"widget-container\">\n <div class=\"header\">\n <div class=\"header-content\">\n <div\n class=\"logo ${this.isMobile\n ? logoAlignMobile === \"center\"\n ? \"center-align-logo\"\n : \"left-align-logo\"\n : logoAlignDesktop === \"center\"\n ? \"center-align-logo\"\n : \"left-align-logo\"}\"\n >\n <beam-partner-logos\n partnerName=\"${this.eligibleNonprofitsDataController.data?.chain.name}\"\n partnerLogoUrl=\"${this.eligibleNonprofitsDataController.data?.chain.logoUrl}\"\n ></beam-partner-logos>\n </div>\n ${this.nonprofitId\n ? html` <div class=\"meatballsMenu\" @click=\"${() => (this.dropdownVisible = !this.dropdownVisible)}\">\n <span>&#8230;</span>\n <div class=\"dropdown-container ${this.dropdownVisible ? \"visible\" : \"\"}\">\n ${this.activeWidget === \"select-subscription-nonprofit\"\n ? html`<button\n @click=\"${this.handleBackToSubscriptionImpactButtonClick}\"\n class=\"drop-down-options button\"\n >\n ${localizeUserString(\n this.configLang,\n data?.config?.web?.additionalStrings?.[\"previousNonprofitButtonText\"] || \"\"\n ) || strings[this.configLang].previousNonprofitButton()}\n </button>`\n : this.activeWidget === \"subscription-impact\"\n ? html`<button @click=\"${this.handleSwapNonprofitButtonClick}\" class=\"drop-down-options button\">\n ${localizeUserString(\n this.configLang,\n data?.config?.web?.additionalStrings?.[\"changeNonprofitButtonText\"] || \"\"\n ) || strings[this.configLang].changeNonprofitButton()}\n </button>`\n : \"\"}\n </div>\n </div>`\n : html``}\n </div>\n </div>\n <div class=\"sub-widget-container\" part=\"previous-impact\">${content}</div>\n ${previousImpactCount > MIN_PREVIOUS_IMPACT\n ? html` <div class=\"line-break\"></div>\n\n <div\n class=\"previous-impact-container ${this.isMobile\n ? \"--beam-SubscriptionManagement-previousImpactContainer-padding-mobile\"\n : \"--beam-SubscriptionManagement-previousImpactContainer-padding-desktop\"}\"\n >\n <h2 class=\"previous-impact-title\">\n ${localizeUserString(\n this.configLang,\n data?.config?.web?.additionalStrings?.[\"previousImpactHeader\"] || \"\"\n ) || strings[this.configLang].previousImpactHeader()}\n </h2>\n <div class=\"cardGrid\">\n ${this.renderPreviousImpactTiles({\n personalImpact: this.getDisplayablePreviousImpacts(),\n cardStyle,\n eligibleNonprofitConfig: this.eligibleNonprofitsDataController.data?.config,\n })}\n </div>\n ${previousImpactCount > INITIAL_TILE_COUNT\n ? html`\n <div class=\"previous-impact-link-container\">\n <button\n @click=\"${() => (this.showAllTiles = !this.showAllTiles)}\"\n class=\"previous-impact-link button\"\n >\n ${this.showAllTiles\n ? localizeUserString(\n this.configLang,\n data?.config?.web?.additionalStrings?.[\"showLessButton\"] || \"\"\n ) || strings[this.configLang].showLessButton()\n : localizeUserString(\n this.configLang,\n data?.config?.web?.additionalStrings?.[\"showAllButton\"] || \"\"\n ) || strings[this.configLang].showAllButton()}\n </button>\n </div>\n `\n : html``}\n </div>`\n : html``}\n </div>\n `;\n }\n}\n\ndefineCustomElement(BeamSubscriptionManagement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-subscription-management\": BeamSubscriptionManagement;\n }\n}\n"],"names":["strings","INITIAL_TILE_COUNT","MIN_PREVIOUS_IMPACT","MIN_PROGRESS_THRESHOLD","MAX_PROGRESS_THRESHOLD","BeamSubscriptionManagement","LitElement","DEFAULT_BASE_URL","AsyncController","SUPPORTED_LANGUAGES","MissingConfig","enforceConfig","eligibleNonprofitResult","postChainEligibleNonprofitsForCart","makeApiKeyHeader","WIDGET_NAMES","subscriptionResult","postFindOrCreateSubscription","impactResult","getImpact","personalImpacts","impact","nonprofitId","nonprofitName","event","BeamNonprofitSelectEvent","selectedNonprofitId","np","progressValue","defaults","partnerLogosConfigDefaults","progressBarConfigDefaults","defineCustomText","remoteConfig","config","_cssVariableMap","personalImpact","cardStyle","eligibleNonprofitConfig","html","tilesToShow","emojiIndex","previousImpact","goalCompletionText","description","goalProgressPercentage","goalProgressText","cause","causeIconSelectedUrl","causeIconUrl","website","name","id","isEligibleToSupportAgain","showProgressBar","emoji","localizeUserString","unsafeHTML","data","loading","error","_loading","_errorMessage","content","logoAlignDesktop","logoAlignMobile","previousImpactCount","cssReset","css","useCustomText","cssCardGrid","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { i as WebComponents } from './chunks/index-DXj15KHe.esm.js';
2
- export { i as Integrations } from './chunks/index-C4P0R2un.esm.js';
2
+ export { i as Integrations } from './chunks/index-B6EWjlNI.esm.js';
3
3
  export { i as ReactComponents } from './chunks/index-DbaDUPup.esm.js';
4
- export { i as Utils } from './chunks/index-Ca8xkEwS.esm.js';
4
+ export { i as Utils } from './chunks/index-DjSzY8-j.esm.js';
5
5
  import './components/community-impact.js';
6
6
  import 'lit';
7
7
  import 'lit-html';
@@ -25,9 +25,9 @@ import './components/select-subscription-nonprofit.js';
25
25
  import './components/subscription-impact.js';
26
26
  import './components/product-details-page.js';
27
27
  import './components/social-share.js';
28
- import './chunks/index-DqffUXvi.esm.js';
28
+ import './chunks/index-OTDSwrqr.esm.js';
29
29
  import './chunks/beam-errors-CCe004HS.esm.js';
30
- import './chunks/events-BMTcECV9.esm.js';
30
+ import './chunks/events-C55rozsO.esm.js';
31
31
  import './chunks/promo-types-Cz_Zkjy1.esm.js';
32
32
  import './utils/logger.js';
33
33
  import './utils/network-listeners.js';
package/dist/index.esm.js CHANGED
@@ -1,2 +1,2 @@
1
- import{i as so}from"./chunks/index-DUeE7FLq.esm.js";import{i as no}from"./chunks/index-Z9-EAuWk.esm.js";import{i as xo}from"./chunks/index-C3hpHWh1.esm.js";import{i as bo}from"./chunks/index-DhhPQ773.esm.js";import"./components/community-impact.esm.js";import"./chunks/lit-WqMxC_PA.esm.js";import"./chunks/progress-bar-DF7UuuHb.esm.js";import"./components/beam-partner-logos.esm.js";import"./chunks/enforce-config-CZ3ToOgr.esm.js";import"./chunks/beam-errors-Ci0d3926.esm.js";import"./utils/logger.esm.js";import"./chunks/localize-Btu9xYcE.esm.js";import"./chunks/routes-BnPd0lrO.esm.js";import"./chunks/loading-template-DG4lkIIc.esm.js";import"./chunks/css-card-grid-CvoGpsJH.esm.js";import"./components/cumulative-impact.esm.js";import"./chunks/lodash-D3TLHRR_.esm.js";import"./chunks/is-all-html-elements-fcB7UUA1.esm.js";import"./components/impact-overview.esm.js";import"./chunks/_share-dialog-dependencies-Cirjl8zP.esm.js";import"./chunks/vendor-KKSARHWL.esm.js";import"./chunks/share-button-DNyMCeHQ.esm.js";import"./chunks/share-button-CWFcBlaF.esm.js";import"./chunks/responsive-BR8qUfBa.esm.js";import"./components/select-nonprofit.esm.js";import"./chunks/promo-pill-label-CbW_Vcru.esm.js";import"./chunks/events-BohmT6Lp.esm.js";import"./utils/local-storage.esm.js";import"./chunks/promoManager-fl54hq13.esm.js";import"./utils/cookies.esm.js";import"./chunks/cart-contents-DkoytiZh.esm.js";import"./utils/cart.esm.js";import"./chunks/index-vH6HFI2B.esm.js";import"./components/post-purchase.esm.js";import"./components/subscription-management.esm.js";import"./components/select-subscription-nonprofit.esm.js";import"./utils/makeApiKeyHeader.esm.js";import"./components/subscription-impact.esm.js";import"./components/product-details-page.esm.js";import"./components/social-share.esm.js";import"./chunks/index-AEnQH-so.esm.js";import"./utils/network-listeners.esm.js";import"./utils/wait-for-element.esm.js";import"./utils/remote-session.esm.js";import"./utils/memoize-last.esm.js";import"./chunks/index-D_L-n4we.esm.js";import"./chunks/order-page-Vk9anZAb.esm.js";import"./chunks/update-cart-DCxR1dVX.esm.js";import"./chunks/index-IKiJwo5v.esm.js";import"./chunks/index-Bs4Q42bL.esm.js";import"./chunks/index-DZyO6--E.esm.js";import"./react/community-impact.esm.js";import"react";import"./react/cumulative-impact.esm.js";import"./react/impact-overview.esm.js";import"./react/select-nonprofit.esm.js";import"./react/redeem-transaction.esm.js";import"./react/post-purchase.esm.js";import"./react/subscription-management.esm.js";import"./react/select-subscription-nonprofit.esm.js";import"./react/subscription-impact.esm.js";import"./react/product-details-page.esm.js";import"./react/social-share.esm.js";export{no as Integrations,xo as ReactComponents,bo as Utils,so as WebComponents};
1
+ import{i as ao}from"./chunks/index-MGQHF6Jd.esm.js";import{i as fo}from"./chunks/index-B9cvR1bA.esm.js";import{i as Co}from"./chunks/index-C3hpHWh1.esm.js";import{i as co}from"./chunks/index-Ct1m4IjM.esm.js";import"./components/community-impact.esm.js";import"./chunks/lit-WqMxC_PA.esm.js";import"./chunks/progress-bar-DF7UuuHb.esm.js";import"./components/beam-partner-logos.esm.js";import"./chunks/enforce-config-CZ3ToOgr.esm.js";import"./chunks/beam-errors-Ci0d3926.esm.js";import"./utils/logger.esm.js";import"./chunks/localize-Btu9xYcE.esm.js";import"./chunks/routes-DCT5U9dA.esm.js";import"./chunks/promo-types-DKAOFHJr.esm.js";import"./chunks/loading-template-DG4lkIIc.esm.js";import"./chunks/css-card-grid-CvoGpsJH.esm.js";import"./components/cumulative-impact.esm.js";import"./chunks/lodash-D3TLHRR_.esm.js";import"./chunks/is-all-html-elements-fcB7UUA1.esm.js";import"./components/impact-overview.esm.js";import"./chunks/_share-dialog-dependencies-DQlABdY4.esm.js";import"./chunks/vendor-KKSARHWL.esm.js";import"./chunks/share-button-BEXn6SRs.esm.js";import"./chunks/share-button-7um4cBYz.esm.js";import"./chunks/responsive-BR8qUfBa.esm.js";import"./components/select-nonprofit.esm.js";import"./chunks/promo-pill-label-CbW_Vcru.esm.js";import"./chunks/events-Dki0ka4F.esm.js";import"./utils/local-storage.esm.js";import"./utils/promoManager.esm.js";import"./utils/cookies.esm.js";import"./chunks/cart-contents-DkoytiZh.esm.js";import"./utils/cart.esm.js";import"./chunks/index-Bp9sWMsk.esm.js";import"./components/post-purchase.esm.js";import"./components/subscription-management.esm.js";import"./components/select-subscription-nonprofit.esm.js";import"./utils/makeApiKeyHeader.esm.js";import"./components/subscription-impact.esm.js";import"./components/product-details-page.esm.js";import"./components/social-share.esm.js";import"./chunks/index-CGKJagBi.esm.js";import"./utils/network-listeners.esm.js";import"./utils/wait-for-element.esm.js";import"./utils/remote-session.esm.js";import"./utils/memoize-last.esm.js";import"./chunks/index-BBU6h_u0.esm.js";import"./chunks/order-page-Bowqodk5.esm.js";import"./chunks/update-cart-BGAM3i5j.esm.js";import"./chunks/index-IKiJwo5v.esm.js";import"./chunks/index-Dw8XJ6pi.esm.js";import"./chunks/index-BzcA5RKX.esm.js";import"./react/community-impact.esm.js";import"react";import"./react/cumulative-impact.esm.js";import"./react/impact-overview.esm.js";import"./react/select-nonprofit.esm.js";import"./react/redeem-transaction.esm.js";import"./react/post-purchase.esm.js";import"./react/subscription-management.esm.js";import"./react/select-subscription-nonprofit.esm.js";import"./react/subscription-impact.esm.js";import"./react/product-details-page.esm.js";import"./react/social-share.esm.js";export{fo as Integrations,Co as ReactComponents,co as Utils,ao as WebComponents};
2
2
  //# sourceMappingURL=index.esm.js.map
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{i as so}from"./chunks/index-sUGvOawY.esm.js";import{i as no}from"./chunks/index-2vxtp84k.esm.js";import{i as xo}from"./chunks/index-D6qJfs7_.esm.js";import{i as bo}from"./chunks/index-CtYbieoH.esm.js";import"./components/community-impact.js";import"./chunks/lit-WqMxC_PA.esm.js";import"./chunks/progress-bar-DF7UuuHb.esm.js";import"./components/beam-partner-logos.js";import"./chunks/enforce-config-Ba1JkOHs.esm.js";import"./chunks/beam-errors-Ci0d3926.esm.js";import"./utils/logger.js";import"./chunks/localize-C25pEGnx.esm.js";import"./chunks/routes-D7s2_Xn5.esm.js";import"./chunks/loading-template-DG4lkIIc.esm.js";import"./chunks/css-card-grid-CvoGpsJH.esm.js";import"./components/cumulative-impact.js";import"./chunks/lodash-D3TLHRR_.esm.js";import"./chunks/is-all-html-elements-fcB7UUA1.esm.js";import"./components/impact-overview.js";import"./chunks/_share-dialog-dependencies-DElW9Yip.esm.js";import"./chunks/vendor-KKSARHWL.esm.js";import"./chunks/share-button-CM4kwufS.esm.js";import"./chunks/share-button-8zVx6bYw.esm.js";import"./chunks/responsive-BR8qUfBa.esm.js";import"./components/select-nonprofit.js";import"./chunks/promo-pill-label-CbW_Vcru.esm.js";import"./chunks/events-BohmT6Lp.esm.js";import"./utils/local-storage.js";import"./chunks/promoManager-B9cTR1R3.esm.js";import"./utils/cookies.js";import"./chunks/cart-contents-DkoytiZh.esm.js";import"./utils/cart.js";import"./chunks/index-CjT2ycv5.esm.js";import"./components/post-purchase.js";import"./components/subscription-management.js";import"./components/select-subscription-nonprofit.js";import"./utils/makeApiKeyHeader.js";import"./components/subscription-impact.js";import"./components/product-details-page.js";import"./components/social-share.js";import"./chunks/index-DtfQd6C4.esm.js";import"./utils/network-listeners.js";import"./utils/wait-for-element.js";import"./utils/remote-session.js";import"./utils/memoize-last.js";import"./chunks/index-CaBSaNNT.esm.js";import"./chunks/order-page-O5u1cAz8.esm.js";import"./chunks/update-cart-BQHJ9lRb.esm.js";import"./chunks/index-BNjsFEGn.esm.js";import"./chunks/index-DGyP7M3g.esm.js";import"./chunks/index-IZJ4xhyj.esm.js";import"./react/community-impact.js";import"react";import"./react/cumulative-impact.js";import"./react/impact-overview.js";import"./react/select-nonprofit.js";import"./react/redeem-transaction.js";import"./react/post-purchase.js";import"./react/subscription-management.js";import"./react/select-subscription-nonprofit.js";import"./react/subscription-impact.js";import"./react/product-details-page.js";import"./react/social-share.js";export{no as Integrations,xo as ReactComponents,bo as Utils,so as WebComponents};
1
+ import{i as ao}from"./chunks/index-ayo08Z4n.esm.js";import{i as fo}from"./chunks/index-VrM10qBv.esm.js";import{i as Co}from"./chunks/index-D6qJfs7_.esm.js";import{i as co}from"./chunks/index-tbwbkOdj.esm.js";import"./components/community-impact.js";import"./chunks/lit-WqMxC_PA.esm.js";import"./chunks/progress-bar-DF7UuuHb.esm.js";import"./components/beam-partner-logos.js";import"./chunks/enforce-config-Ba1JkOHs.esm.js";import"./chunks/beam-errors-Ci0d3926.esm.js";import"./utils/logger.js";import"./chunks/localize-C25pEGnx.esm.js";import"./chunks/routes-DelUpFFo.esm.js";import"./chunks/promo-types-DKAOFHJr.esm.js";import"./chunks/loading-template-DG4lkIIc.esm.js";import"./chunks/css-card-grid-CvoGpsJH.esm.js";import"./components/cumulative-impact.js";import"./chunks/lodash-D3TLHRR_.esm.js";import"./chunks/is-all-html-elements-fcB7UUA1.esm.js";import"./components/impact-overview.js";import"./chunks/_share-dialog-dependencies-Dg-9riak.esm.js";import"./chunks/vendor-KKSARHWL.esm.js";import"./chunks/share-button-B376j4qt.esm.js";import"./chunks/share-button-BZ9Dmpsy.esm.js";import"./chunks/responsive-BR8qUfBa.esm.js";import"./components/select-nonprofit.js";import"./chunks/promo-pill-label-CbW_Vcru.esm.js";import"./chunks/events-Dki0ka4F.esm.js";import"./utils/local-storage.js";import"./utils/promoManager.js";import"./utils/cookies.js";import"./chunks/cart-contents-DkoytiZh.esm.js";import"./utils/cart.js";import"./chunks/index-DA4pws6n.esm.js";import"./components/post-purchase.js";import"./components/subscription-management.js";import"./components/select-subscription-nonprofit.js";import"./utils/makeApiKeyHeader.js";import"./components/subscription-impact.js";import"./components/product-details-page.js";import"./components/social-share.js";import"./chunks/index-DBb5HSkR.esm.js";import"./utils/network-listeners.js";import"./utils/wait-for-element.js";import"./utils/remote-session.js";import"./utils/memoize-last.js";import"./chunks/index-BXVkhkpJ.esm.js";import"./chunks/order-page-C2wPfn6k.esm.js";import"./chunks/update-cart-pMo1b75q.esm.js";import"./chunks/index-BNjsFEGn.esm.js";import"./chunks/index-BJWJMzYy.esm.js";import"./chunks/index-Cb7X_azQ.esm.js";import"./react/community-impact.js";import"react";import"./react/cumulative-impact.js";import"./react/impact-overview.js";import"./react/select-nonprofit.js";import"./react/redeem-transaction.js";import"./react/post-purchase.js";import"./react/subscription-management.js";import"./react/select-subscription-nonprofit.js";import"./react/subscription-impact.js";import"./react/product-details-page.js";import"./react/social-share.js";export{fo as Integrations,Co as ReactComponents,co as Utils,ao as WebComponents};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import{D as u,a as g}from"../chunks/routes-BnPd0lrO.esm.js";import{S as y}from"../chunks/beam-errors-Ci0d3926.esm.js";import{B as h}from"../chunks/events-BohmT6Lp.esm.js";import{logger as w}from"../utils/logger.esm.js";import{s as f}from"../chunks/index-DZyO6--E.esm.js";var v=(t,s,a)=>{if(!s.has(t))throw TypeError("Cannot "+a)},c=(t,s,a)=>{if(s.has(t))throw TypeError("Cannot add the same private member more than once");s instanceof WeakSet?s.add(t):s.set(t,a)},i=(t,s,a)=>(v(t,s,"access private method"),a),r,n,o,m;let p,l;const E=new Promise((t,s)=>{p=t,l=s});class U extends EventTarget{constructor(s){super(),c(this,r),c(this,o),this.readyPromise=E,this.plugins={},this.status="pending",i(this,r,n).call(this,s)}async init(s){i(this,r,n).call(this,s);try{await i(this,o,m).call(this,s)}catch(a){const e=new y;throw e.cause=a,this.status="error",this.dispatchEvent(new h({status:"error",error:e})),l(e),w.error(e),this.apiKey&&await f({apiKey:this.apiKey,baseUrl:this.logUrl},{type:"error",code:e.name,metadata:{message:e.message,cause:a?.message}}),a}return this.status="ready",this.dispatchEvent(new h({status:"ready"})),p(!0),this}}r=new WeakSet,n=function(t){this.apiKey=t.apiKey,this.chainId=t.chainId,this.storeId=t.storeId,this.domain=t.domain,this.baseUrl=t.baseUrl||u,this.logUrl=t.logUrl||g},o=new WeakSet,m=async function(t){const s=(t.plugins||[]).map(async a=>(await a.init(t),this.plugins[a.name]=a,a));return Promise.all(s)};const d=new U({}),S=t=>d.init(t),L=()=>d;export{L as getConfig,S as init};
1
+ import{D as u,a as g}from"../chunks/routes-DCT5U9dA.esm.js";import{S as y}from"../chunks/beam-errors-Ci0d3926.esm.js";import{B as h}from"../chunks/events-Dki0ka4F.esm.js";import{logger as w}from"../utils/logger.esm.js";import{s as f}from"../chunks/index-BzcA5RKX.esm.js";import"../chunks/promo-types-DKAOFHJr.esm.js";var v=(t,s,a)=>{if(!s.has(t))throw TypeError("Cannot "+a)},c=(t,s,a)=>{if(s.has(t))throw TypeError("Cannot add the same private member more than once");s instanceof WeakSet?s.add(t):s.set(t,a)},i=(t,s,a)=>(v(t,s,"access private method"),a),r,n,o,m;let p,l;const E=new Promise((t,s)=>{p=t,l=s});class U extends EventTarget{constructor(s){super(),c(this,r),c(this,o),this.readyPromise=E,this.plugins={},this.status="pending",i(this,r,n).call(this,s)}async init(s){i(this,r,n).call(this,s);try{await i(this,o,m).call(this,s)}catch(a){const e=new y;throw e.cause=a,this.status="error",this.dispatchEvent(new h({status:"error",error:e})),l(e),w.error(e),this.apiKey&&await f({apiKey:this.apiKey,baseUrl:this.logUrl},{type:"error",code:e.name,metadata:{message:e.message,cause:a?.message}}),a}return this.status="ready",this.dispatchEvent(new h({status:"ready"})),p(!0),this}}r=new WeakSet,n=function(t){this.apiKey=t.apiKey,this.chainId=t.chainId,this.storeId=t.storeId,this.domain=t.domain,this.baseUrl=t.baseUrl||u,this.logUrl=t.logUrl||g},o=new WeakSet,m=async function(t){const s=(t.plugins||[]).map(async a=>(await a.init(t),this.plugins[a.name]=a,a));return Promise.all(s)};const d=new U({}),S=t=>d.init(t),L=()=>d;export{L as getConfig,S as init};
2
2
  //# sourceMappingURL=beam.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"beam.esm.js","sources":["../../src/integrations/beam/index.ts"],"sourcesContent":["import { DEFAULT_BASE_URL, DEFAULT_LOG_URL } from \"../../api-sdk/constants\";\nimport { SetupError } from \"../../utils/beam-errors\";\nimport { BeamStatusChangeEvent } from \"../../utils/events\";\nimport { logger } from \"../../utils/logger\";\nimport { TApiKey, TNumericId, TUrl } from \"../../shared/types\";\nimport { sendLog } from \"../logs\";\n\nexport type BeamConfigOptions = {\n apiKey: TApiKey;\n domain?: TUrl;\n chainId: TNumericId;\n storeId?: TNumericId;\n baseUrl?: TUrl;\n logUrl?: TUrl;\n plugins?: BeamPlugin[];\n};\n\nexport type BeamPlugin = {\n name: string;\n init: (config: BeamConfigOptions) => Promise<void>;\n};\n\n// Set up a promise outside the beam config singleton so that we can keep a stable reference to the same promise\n// if anyone uses getConfig() before init() has been called with final configuration\nlet resolveBeamReadyPromise: (result: boolean) => any;\nlet rejectBeamReadyPromise: (reason: SetupError) => any;\nconst beamReadyPromiseSingleton = new Promise<boolean>((resolve, reject) => {\n resolveBeamReadyPromise = resolve;\n rejectBeamReadyPromise = reject;\n});\n\n/**\n * BeamConfig is not exported, it should be accessed as a singleton via getConfig & init\n * @example\n * import { init, getConfig } from '@beamimpact/web-sdk/dist/integrations/beam'\n * // In setup script\n * const beam = await init({ apiKey: '', chainId: 1, storeId: 1, plugins: [] })\n * // In other scripts that need to wait for Beam to be ready\n * const beam = getConfig()\n * await beam.readyPromise.then(() => doSomething())\n * // OR\n * if (beam.status !== 'ready') {\n * beam.addEventListener('beamstatuschange', event => {\n * if (event.detail.status === 'ready') doSomething()\n * else if (event.detail.status === 'error') handleBeamError()\n * })\n * }\n */\nclass BeamConfig extends EventTarget {\n apiKey?: TApiKey;\n\n chainId?: TNumericId;\n\n storeId?: TNumericId;\n\n /** Domain to set Beam cookies on, used if store and checkout are on different subdomains */\n domain?: TUrl;\n\n /** Beam server URL to make API requests */\n baseUrl?: TUrl;\n\n /** Beam server URL for logging / errors */\n logUrl?: TUrl;\n\n /** Alternative to adding event listener for beamstatuschange - resolves when Beam and all plugins are ready */\n readyPromise: Promise<boolean> = beamReadyPromiseSingleton;\n\n /** getConfig().addEventListener(\"beamstatuschange\", ({detail}) => { console.log(detail.status) }) */\n status: \"pending\" | \"ready\" | \"error\";\n\n /** Plugins such as Statsig for A/B tests - Beam waits for all plugins to initialize before emitting ready status */\n plugins: { [pluginName: string]: BeamPlugin } = {};\n\n /** Sets up Beam in pending state. This is used for initial value of Beam config singleton,\n * which allows scripts to access and wait for \"ready\" promise or event before initialization script runs.\n * Use init() to set up Beam for use. */\n constructor(options: Partial<BeamConfigOptions>) {\n super();\n this.status = \"pending\";\n this.#initFields(options);\n }\n\n /** Used by end users to set up Beam with config options and plugins. */\n async init(options: BeamConfigOptions): Promise<BeamConfig> {\n // Re-apply constructor logic with new options\n this.#initFields(options);\n try {\n await this.#initPlugins(options);\n } catch (err: any) {\n const error = new SetupError();\n error.cause = err;\n this.status = \"error\";\n this.dispatchEvent(new BeamStatusChangeEvent({ status: \"error\", error }));\n rejectBeamReadyPromise(error);\n logger.error(error);\n if (this.apiKey) {\n await sendLog(\n { apiKey: this.apiKey, baseUrl: this.logUrl },\n { type: \"error\", code: error.name, metadata: { message: error.message, cause: err?.message } }\n );\n }\n throw err;\n }\n this.status = \"ready\";\n this.dispatchEvent(new BeamStatusChangeEvent({ status: \"ready\" }));\n resolveBeamReadyPromise(true);\n return this;\n }\n\n #initFields(options: Partial<BeamConfigOptions>) {\n this.apiKey = options.apiKey;\n this.chainId = options.chainId;\n this.storeId = options.storeId;\n this.domain = options.domain;\n this.baseUrl = options.baseUrl || DEFAULT_BASE_URL;\n this.logUrl = options.logUrl || DEFAULT_LOG_URL;\n }\n\n async #initPlugins(config: BeamConfigOptions) {\n const pluginInitPromises = (config.plugins || []).map(async (plugin) => {\n await plugin.init(config);\n this.plugins[plugin.name] = plugin;\n return plugin;\n });\n return Promise.all(pluginInitPromises);\n }\n}\n\n/** We only want one instance of config throughout SDK so anyone can wait for initialization async using this\n * reference */\nconst beamConfigSingleton: BeamConfig = new BeamConfig({});\n\n/**\n * @example\n * import { init, getConfig } from '@beamimpact/web-sdk/dist/integrations/beam'\n *\n * const beam = await init({\n * apiKey: '',\n * chainId: 1,\n * storeId: 1,\n * plugins: [ new StatsigPlugin({ statsigApiKey: '' }) ]\n * })\n *\n * beam.plugins.statsig.logEvent('cart_updated', 100.00)\n */\nexport const init = (beamConfigOptions: BeamConfigOptions): Promise<BeamConfig> => {\n return beamConfigSingleton.init(beamConfigOptions);\n};\n\n/**\n * @example\n * // In scripts that need to wait for Beam to be ready\n * const beam = getConfig()\n * await beam.readyPromise\n * .then(() => doSomething(beam))\n * .catch(err => handleBeamError(err))\n * // OR\n * if (beam.status !== 'ready') {\n * beam.addEventListener('beamstatuschange', event => {\n * if (event.detail.status === 'ready') doSomething(beam)\n * else if (event.detail.status === 'error') handleBeamError(event.detail.error)\n * })\n * }\n */\nexport const getConfig = (): BeamConfig => beamConfigSingleton;\n"],"names":["h","i","r","e","m","n","_initFields","initFields_fn","_initPlugins","initPlugins_fn","resolveBeamReadyPromise","rejectBeamReadyPromise","beamReadyPromiseSingleton","resolve","reject","BeamConfig","options","__privateAdd","__privateMethod","err","error","SetupError","BeamStatusChangeEvent","logger","sendLog","DEFAULT_BASE_URL","DEFAULT_LOG_URL","config","pluginInitPromises","plugin","beamConfigSingleton","init","beamConfigOptions","getConfig"],"mappings":"+QAAA,IAAAA,EAAA,CAAAC,EAAAC,EAAAC,IAAA,CAAA,GAAA,CAAAD,EAAA,IAAAD,CAAA,EAAA,MAAA,UAAA,UAAAE,CAAA,CAAA,EAAAC,EAAA,CAAAH,EAAAC,EAAAC,IAAA,CAAA,GAAAD,EAAA,IAAAD,CAAA,EAAA,MAAA,UAAA,mDAAA,EAAAC,aAAA,QAAAA,EAAA,IAAAD,CAAA,EAAAC,EAAA,IAAAD,EAAAE,CAAA,CAAA,EAAAE,EAAA,CAAAJ,EAAAC,EAAAC,KAAAH,EAAAC,EAAAC,EAAA,uBAAA,EAAAC,GAAAG,EAAAC,EAAAC,EAAAC,EAwBA,IAAIC,EACAC,EACJ,MAAMC,EAA4B,IAAI,QAAiB,CAACC,EAASC,IAAW,CAC1EJ,EAA0BG,EAC1BF,EAAyBG,CAC3B,CAAC,EAmBD,MAAMC,UAAmB,WAAY,CA4BnC,YAAYC,EAAqC,CAC/C,MAAM,EAgCRC,EAAA,KAAAX,CASAW,EAAAA,EAAA,KAAMT,CAAAA,EArDN,KAAiCI,aAAAA,EAMjC,aAAgD,CAAC,EAO/C,KAAK,OAAS,UACdM,EAAA,KAAKZ,EAAAC,CAAL,EAAA,KAAA,KAAiBS,CACnB,CAAA,CAGA,MAAM,KAAKA,EAAiD,CAE1DE,EAAA,KAAKZ,EAAAC,CAAAA,EAAL,KAAiBS,KAAAA,CAAAA,EACjB,GAAI,CACF,MAAME,EAAA,KAAKV,EAAAC,CAAL,EAAA,KAAA,KAAkBO,CAC1B,CAAA,OAASG,EAAU,CACjB,MAAMC,EAAQ,IAAIC,EAClB,MAAAD,EAAM,MAAQD,EACd,KAAK,OAAS,QACd,KAAK,cAAc,IAAIG,EAAsB,CAAE,OAAQ,QAAS,MAAAF,CAAM,CAAC,CAAC,EACxET,EAAuBS,CAAK,EAC5BG,EAAO,MAAMH,CAAK,EACd,KAAK,QACP,MAAMI,EACJ,CAAE,OAAQ,KAAK,OAAQ,QAAS,KAAK,MAAO,EAC5C,CAAE,KAAM,QAAS,KAAMJ,EAAM,KAAM,SAAU,CAAE,QAASA,EAAM,QAAS,MAAOD,GAAK,OAAQ,CAAE,CAC/F,EAEIA,CACR,CACA,OAAK,KAAA,OAAS,QACd,KAAK,cAAc,IAAIG,EAAsB,CAAE,OAAQ,OAAQ,CAAC,CAAC,EACjEZ,EAAwB,EAAI,EACrB,IACT,CAmBF,CAjBEJ,EAAA,IAAAC,QAAAA,EAAW,SAACS,EAAqC,CAC/C,KAAK,OAASA,EAAQ,OACtB,KAAK,QAAUA,EAAQ,QACvB,KAAK,QAAUA,EAAQ,QACvB,KAAK,OAASA,EAAQ,OACtB,KAAK,QAAUA,EAAQ,SAAWS,EAClC,KAAK,OAAST,EAAQ,QAAUU,CAClC,EAEMlB,EAAA,IAAAC,QAAAA,EAAY,eAACkB,EAA2B,CAC5C,MAAMC,GAAsBD,EAAO,SAAW,CAAA,GAAI,IAAI,MAAOE,IAC3D,MAAMA,EAAO,KAAKF,CAAM,EACxB,KAAK,QAAQE,EAAO,IAAI,EAAIA,EACrBA,EACR,EACD,OAAO,QAAQ,IAAID,CAAkB,CACvC,EAKF,MAAME,EAAkC,IAAIf,EAAW,CAAE,CAAA,EAe5CgB,EAAQC,GACZF,EAAoB,KAAKE,CAAiB,EAkBtCC,EAAY,IAAkBH"}
1
+ {"version":3,"file":"beam.esm.js","sources":["../../src/integrations/beam/index.ts"],"sourcesContent":["import { DEFAULT_BASE_URL, DEFAULT_LOG_URL } from \"../../api-sdk/constants\";\nimport { SetupError } from \"../../utils/beam-errors\";\nimport { BeamStatusChangeEvent } from \"../../utils/events\";\nimport { logger } from \"../../utils/logger\";\nimport { TApiKey, TNumericId, TUrl } from \"../../shared/types\";\nimport { sendLog } from \"../logs\";\n\nexport type BeamConfigOptions = {\n apiKey: TApiKey;\n domain?: TUrl;\n chainId: TNumericId;\n storeId?: TNumericId;\n baseUrl?: TUrl;\n logUrl?: TUrl;\n plugins?: BeamPlugin[];\n};\n\nexport type BeamPlugin = {\n name: string;\n init: (config: BeamConfigOptions) => Promise<void>;\n};\n\n// Set up a promise outside the beam config singleton so that we can keep a stable reference to the same promise\n// if anyone uses getConfig() before init() has been called with final configuration\nlet resolveBeamReadyPromise: (result: boolean) => any;\nlet rejectBeamReadyPromise: (reason: SetupError) => any;\nconst beamReadyPromiseSingleton = new Promise<boolean>((resolve, reject) => {\n resolveBeamReadyPromise = resolve;\n rejectBeamReadyPromise = reject;\n});\n\n/**\n * BeamConfig is not exported, it should be accessed as a singleton via getConfig & init\n * @example\n * import { init, getConfig } from '@beamimpact/web-sdk/dist/integrations/beam'\n * // In setup script\n * const beam = await init({ apiKey: '', chainId: 1, storeId: 1, plugins: [] })\n * // In other scripts that need to wait for Beam to be ready\n * const beam = getConfig()\n * await beam.readyPromise.then(() => doSomething())\n * // OR\n * if (beam.status !== 'ready') {\n * beam.addEventListener('beamstatuschange', event => {\n * if (event.detail.status === 'ready') doSomething()\n * else if (event.detail.status === 'error') handleBeamError()\n * })\n * }\n */\nclass BeamConfig extends EventTarget {\n apiKey?: TApiKey;\n\n chainId?: TNumericId;\n\n storeId?: TNumericId;\n\n /** Domain to set Beam cookies on, used if store and checkout are on different subdomains */\n domain?: TUrl;\n\n /** Beam server URL to make API requests */\n baseUrl?: TUrl;\n\n /** Beam server URL for logging / errors */\n logUrl?: TUrl;\n\n /** Alternative to adding event listener for beamstatuschange - resolves when Beam and all plugins are ready */\n readyPromise: Promise<boolean> = beamReadyPromiseSingleton;\n\n /** getConfig().addEventListener(\"beamstatuschange\", ({detail}) => { console.log(detail.status) }) */\n status: \"pending\" | \"ready\" | \"error\";\n\n /** Plugins such as Statsig for A/B tests - Beam waits for all plugins to initialize before emitting ready status */\n plugins: { [pluginName: string]: BeamPlugin } = {};\n\n /** Sets up Beam in pending state. This is used for initial value of Beam config singleton,\n * which allows scripts to access and wait for \"ready\" promise or event before initialization script runs.\n * Use init() to set up Beam for use. */\n constructor(options: Partial<BeamConfigOptions>) {\n super();\n this.status = \"pending\";\n this.#initFields(options);\n }\n\n /** Used by end users to set up Beam with config options and plugins. */\n async init(options: BeamConfigOptions): Promise<BeamConfig> {\n // Re-apply constructor logic with new options\n this.#initFields(options);\n try {\n await this.#initPlugins(options);\n } catch (err: any) {\n const error = new SetupError();\n error.cause = err;\n this.status = \"error\";\n this.dispatchEvent(new BeamStatusChangeEvent({ status: \"error\", error }));\n rejectBeamReadyPromise(error);\n logger.error(error);\n if (this.apiKey) {\n await sendLog(\n { apiKey: this.apiKey, baseUrl: this.logUrl },\n { type: \"error\", code: error.name, metadata: { message: error.message, cause: err?.message } }\n );\n }\n throw err;\n }\n this.status = \"ready\";\n this.dispatchEvent(new BeamStatusChangeEvent({ status: \"ready\" }));\n resolveBeamReadyPromise(true);\n return this;\n }\n\n #initFields(options: Partial<BeamConfigOptions>) {\n this.apiKey = options.apiKey;\n this.chainId = options.chainId;\n this.storeId = options.storeId;\n this.domain = options.domain;\n this.baseUrl = options.baseUrl || DEFAULT_BASE_URL;\n this.logUrl = options.logUrl || DEFAULT_LOG_URL;\n }\n\n async #initPlugins(config: BeamConfigOptions) {\n const pluginInitPromises = (config.plugins || []).map(async (plugin) => {\n await plugin.init(config);\n this.plugins[plugin.name] = plugin;\n return plugin;\n });\n return Promise.all(pluginInitPromises);\n }\n}\n\n/** We only want one instance of config throughout SDK so anyone can wait for initialization async using this\n * reference */\nconst beamConfigSingleton: BeamConfig = new BeamConfig({});\n\n/**\n * @example\n * import { init, getConfig } from '@beamimpact/web-sdk/dist/integrations/beam'\n *\n * const beam = await init({\n * apiKey: '',\n * chainId: 1,\n * storeId: 1,\n * plugins: [ new StatsigPlugin({ statsigApiKey: '' }) ]\n * })\n *\n * beam.plugins.statsig.logEvent('cart_updated', 100.00)\n */\nexport const init = (beamConfigOptions: BeamConfigOptions): Promise<BeamConfig> => {\n return beamConfigSingleton.init(beamConfigOptions);\n};\n\n/**\n * @example\n * // In scripts that need to wait for Beam to be ready\n * const beam = getConfig()\n * await beam.readyPromise\n * .then(() => doSomething(beam))\n * .catch(err => handleBeamError(err))\n * // OR\n * if (beam.status !== 'ready') {\n * beam.addEventListener('beamstatuschange', event => {\n * if (event.detail.status === 'ready') doSomething(beam)\n * else if (event.detail.status === 'error') handleBeamError(event.detail.error)\n * })\n * }\n */\nexport const getConfig = (): BeamConfig => beamConfigSingleton;\n"],"names":["h","i","r","e","m","n","_initFields","initFields_fn","_initPlugins","initPlugins_fn","resolveBeamReadyPromise","rejectBeamReadyPromise","beamReadyPromiseSingleton","resolve","reject","BeamConfig","options","__privateAdd","__privateMethod","err","error","SetupError","BeamStatusChangeEvent","logger","sendLog","DEFAULT_BASE_URL","DEFAULT_LOG_URL","config","pluginInitPromises","plugin","beamConfigSingleton","init","beamConfigOptions","getConfig"],"mappings":"6TAAA,IAAAA,EAAA,CAAAC,EAAAC,EAAAC,IAAA,CAAA,GAAA,CAAAD,EAAA,IAAAD,CAAA,EAAA,MAAA,UAAA,UAAAE,CAAA,CAAA,EAAAC,EAAA,CAAAH,EAAAC,EAAAC,IAAA,CAAA,GAAAD,EAAA,IAAAD,CAAA,EAAA,MAAA,UAAA,mDAAA,EAAAC,aAAA,QAAAA,EAAA,IAAAD,CAAA,EAAAC,EAAA,IAAAD,EAAAE,CAAA,CAAA,EAAAE,EAAA,CAAAJ,EAAAC,EAAAC,KAAAH,EAAAC,EAAAC,EAAA,uBAAA,EAAAC,GAAAG,EAAAC,EAAAC,EAAAC,EAwBA,IAAIC,EACAC,EACJ,MAAMC,EAA4B,IAAI,QAAiB,CAACC,EAASC,IAAW,CAC1EJ,EAA0BG,EAC1BF,EAAyBG,CAC3B,CAAC,EAmBD,MAAMC,UAAmB,WAAY,CA4BnC,YAAYC,EAAqC,CAC/C,MAAM,EAgCRC,EAAA,KAAAX,CASAW,EAAAA,EAAA,KAAMT,CAAAA,EArDN,KAAiCI,aAAAA,EAMjC,aAAgD,CAAC,EAO/C,KAAK,OAAS,UACdM,EAAA,KAAKZ,EAAAC,CAAL,EAAA,KAAA,KAAiBS,CACnB,CAAA,CAGA,MAAM,KAAKA,EAAiD,CAE1DE,EAAA,KAAKZ,EAAAC,CAAAA,EAAL,KAAiBS,KAAAA,CAAAA,EACjB,GAAI,CACF,MAAME,EAAA,KAAKV,EAAAC,CAAL,EAAA,KAAA,KAAkBO,CAC1B,CAAA,OAASG,EAAU,CACjB,MAAMC,EAAQ,IAAIC,EAClB,MAAAD,EAAM,MAAQD,EACd,KAAK,OAAS,QACd,KAAK,cAAc,IAAIG,EAAsB,CAAE,OAAQ,QAAS,MAAAF,CAAM,CAAC,CAAC,EACxET,EAAuBS,CAAK,EAC5BG,EAAO,MAAMH,CAAK,EACd,KAAK,QACP,MAAMI,EACJ,CAAE,OAAQ,KAAK,OAAQ,QAAS,KAAK,MAAO,EAC5C,CAAE,KAAM,QAAS,KAAMJ,EAAM,KAAM,SAAU,CAAE,QAASA,EAAM,QAAS,MAAOD,GAAK,OAAQ,CAAE,CAC/F,EAEIA,CACR,CACA,OAAK,KAAA,OAAS,QACd,KAAK,cAAc,IAAIG,EAAsB,CAAE,OAAQ,OAAQ,CAAC,CAAC,EACjEZ,EAAwB,EAAI,EACrB,IACT,CAmBF,CAjBEJ,EAAA,IAAAC,QAAAA,EAAW,SAACS,EAAqC,CAC/C,KAAK,OAASA,EAAQ,OACtB,KAAK,QAAUA,EAAQ,QACvB,KAAK,QAAUA,EAAQ,QACvB,KAAK,OAASA,EAAQ,OACtB,KAAK,QAAUA,EAAQ,SAAWS,EAClC,KAAK,OAAST,EAAQ,QAAUU,CAClC,EAEMlB,EAAA,IAAAC,QAAAA,EAAY,eAACkB,EAA2B,CAC5C,MAAMC,GAAsBD,EAAO,SAAW,CAAA,GAAI,IAAI,MAAOE,IAC3D,MAAMA,EAAO,KAAKF,CAAM,EACxB,KAAK,QAAQE,EAAO,IAAI,EAAIA,EACrBA,EACR,EACD,OAAO,QAAQ,IAAID,CAAkB,CACvC,EAKF,MAAME,EAAkC,IAAIf,EAAW,CAAE,CAAA,EAe5CgB,EAAQC,GACZF,EAAoB,KAAKE,CAAiB,EAkBtCC,EAAY,IAAkBH"}
@@ -1,2 +1,2 @@
1
- import{D as u,a as g}from"../chunks/routes-D7s2_Xn5.esm.js";import{S as y}from"../chunks/beam-errors-Ci0d3926.esm.js";import{B as h}from"../chunks/events-BohmT6Lp.esm.js";import{logger as w}from"../utils/logger.js";import{s as f}from"../chunks/index-IZJ4xhyj.esm.js";var v=(t,s,a)=>{if(!s.has(t))throw TypeError("Cannot "+a)},c=(t,s,a)=>{if(s.has(t))throw TypeError("Cannot add the same private member more than once");s instanceof WeakSet?s.add(t):s.set(t,a)},i=(t,s,a)=>(v(t,s,"access private method"),a),r,n,o,m;let p,l;const E=new Promise((t,s)=>{p=t,l=s});class U extends EventTarget{constructor(s){super(),c(this,r),c(this,o),this.readyPromise=E,this.plugins={},this.status="pending",i(this,r,n).call(this,s)}async init(s){i(this,r,n).call(this,s);try{await i(this,o,m).call(this,s)}catch(a){const e=new y;throw e.cause=a,this.status="error",this.dispatchEvent(new h({status:"error",error:e})),l(e),w.error(e),this.apiKey&&await f({apiKey:this.apiKey,baseUrl:this.logUrl},{type:"error",code:e.name,metadata:{message:e.message,cause:a?.message}}),a}return this.status="ready",this.dispatchEvent(new h({status:"ready"})),p(!0),this}}r=new WeakSet,n=function(t){this.apiKey=t.apiKey,this.chainId=t.chainId,this.storeId=t.storeId,this.domain=t.domain,this.baseUrl=t.baseUrl||u,this.logUrl=t.logUrl||g},o=new WeakSet,m=async function(t){const s=(t.plugins||[]).map(async a=>(await a.init(t),this.plugins[a.name]=a,a));return Promise.all(s)};const d=new U({}),S=t=>d.init(t),L=()=>d;export{L as getConfig,S as init};
1
+ import{D as u,a as g}from"../chunks/routes-DelUpFFo.esm.js";import{S as y}from"../chunks/beam-errors-Ci0d3926.esm.js";import{B as h}from"../chunks/events-Dki0ka4F.esm.js";import{logger as w}from"../utils/logger.js";import{s as f}from"../chunks/index-Cb7X_azQ.esm.js";import"../chunks/promo-types-DKAOFHJr.esm.js";var v=(t,s,a)=>{if(!s.has(t))throw TypeError("Cannot "+a)},c=(t,s,a)=>{if(s.has(t))throw TypeError("Cannot add the same private member more than once");s instanceof WeakSet?s.add(t):s.set(t,a)},i=(t,s,a)=>(v(t,s,"access private method"),a),r,n,o,m;let p,l;const E=new Promise((t,s)=>{p=t,l=s});class U extends EventTarget{constructor(s){super(),c(this,r),c(this,o),this.readyPromise=E,this.plugins={},this.status="pending",i(this,r,n).call(this,s)}async init(s){i(this,r,n).call(this,s);try{await i(this,o,m).call(this,s)}catch(a){const e=new y;throw e.cause=a,this.status="error",this.dispatchEvent(new h({status:"error",error:e})),l(e),w.error(e),this.apiKey&&await f({apiKey:this.apiKey,baseUrl:this.logUrl},{type:"error",code:e.name,metadata:{message:e.message,cause:a?.message}}),a}return this.status="ready",this.dispatchEvent(new h({status:"ready"})),p(!0),this}}r=new WeakSet,n=function(t){this.apiKey=t.apiKey,this.chainId=t.chainId,this.storeId=t.storeId,this.domain=t.domain,this.baseUrl=t.baseUrl||u,this.logUrl=t.logUrl||g},o=new WeakSet,m=async function(t){const s=(t.plugins||[]).map(async a=>(await a.init(t),this.plugins[a.name]=a,a));return Promise.all(s)};const d=new U({}),S=t=>d.init(t),L=()=>d;export{L as getConfig,S as init};
2
2
  //# sourceMappingURL=beam.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"beam.js","sources":["../../src/integrations/beam/index.ts"],"sourcesContent":["import { DEFAULT_BASE_URL, DEFAULT_LOG_URL } from \"../../api-sdk/constants\";\nimport { SetupError } from \"../../utils/beam-errors\";\nimport { BeamStatusChangeEvent } from \"../../utils/events\";\nimport { logger } from \"../../utils/logger\";\nimport { TApiKey, TNumericId, TUrl } from \"../../shared/types\";\nimport { sendLog } from \"../logs\";\n\nexport type BeamConfigOptions = {\n apiKey: TApiKey;\n domain?: TUrl;\n chainId: TNumericId;\n storeId?: TNumericId;\n baseUrl?: TUrl;\n logUrl?: TUrl;\n plugins?: BeamPlugin[];\n};\n\nexport type BeamPlugin = {\n name: string;\n init: (config: BeamConfigOptions) => Promise<void>;\n};\n\n// Set up a promise outside the beam config singleton so that we can keep a stable reference to the same promise\n// if anyone uses getConfig() before init() has been called with final configuration\nlet resolveBeamReadyPromise: (result: boolean) => any;\nlet rejectBeamReadyPromise: (reason: SetupError) => any;\nconst beamReadyPromiseSingleton = new Promise<boolean>((resolve, reject) => {\n resolveBeamReadyPromise = resolve;\n rejectBeamReadyPromise = reject;\n});\n\n/**\n * BeamConfig is not exported, it should be accessed as a singleton via getConfig & init\n * @example\n * import { init, getConfig } from '@beamimpact/web-sdk/dist/integrations/beam'\n * // In setup script\n * const beam = await init({ apiKey: '', chainId: 1, storeId: 1, plugins: [] })\n * // In other scripts that need to wait for Beam to be ready\n * const beam = getConfig()\n * await beam.readyPromise.then(() => doSomething())\n * // OR\n * if (beam.status !== 'ready') {\n * beam.addEventListener('beamstatuschange', event => {\n * if (event.detail.status === 'ready') doSomething()\n * else if (event.detail.status === 'error') handleBeamError()\n * })\n * }\n */\nclass BeamConfig extends EventTarget {\n apiKey?: TApiKey;\n\n chainId?: TNumericId;\n\n storeId?: TNumericId;\n\n /** Domain to set Beam cookies on, used if store and checkout are on different subdomains */\n domain?: TUrl;\n\n /** Beam server URL to make API requests */\n baseUrl?: TUrl;\n\n /** Beam server URL for logging / errors */\n logUrl?: TUrl;\n\n /** Alternative to adding event listener for beamstatuschange - resolves when Beam and all plugins are ready */\n readyPromise: Promise<boolean> = beamReadyPromiseSingleton;\n\n /** getConfig().addEventListener(\"beamstatuschange\", ({detail}) => { console.log(detail.status) }) */\n status: \"pending\" | \"ready\" | \"error\";\n\n /** Plugins such as Statsig for A/B tests - Beam waits for all plugins to initialize before emitting ready status */\n plugins: { [pluginName: string]: BeamPlugin } = {};\n\n /** Sets up Beam in pending state. This is used for initial value of Beam config singleton,\n * which allows scripts to access and wait for \"ready\" promise or event before initialization script runs.\n * Use init() to set up Beam for use. */\n constructor(options: Partial<BeamConfigOptions>) {\n super();\n this.status = \"pending\";\n this.#initFields(options);\n }\n\n /** Used by end users to set up Beam with config options and plugins. */\n async init(options: BeamConfigOptions): Promise<BeamConfig> {\n // Re-apply constructor logic with new options\n this.#initFields(options);\n try {\n await this.#initPlugins(options);\n } catch (err: any) {\n const error = new SetupError();\n error.cause = err;\n this.status = \"error\";\n this.dispatchEvent(new BeamStatusChangeEvent({ status: \"error\", error }));\n rejectBeamReadyPromise(error);\n logger.error(error);\n if (this.apiKey) {\n await sendLog(\n { apiKey: this.apiKey, baseUrl: this.logUrl },\n { type: \"error\", code: error.name, metadata: { message: error.message, cause: err?.message } }\n );\n }\n throw err;\n }\n this.status = \"ready\";\n this.dispatchEvent(new BeamStatusChangeEvent({ status: \"ready\" }));\n resolveBeamReadyPromise(true);\n return this;\n }\n\n #initFields(options: Partial<BeamConfigOptions>) {\n this.apiKey = options.apiKey;\n this.chainId = options.chainId;\n this.storeId = options.storeId;\n this.domain = options.domain;\n this.baseUrl = options.baseUrl || DEFAULT_BASE_URL;\n this.logUrl = options.logUrl || DEFAULT_LOG_URL;\n }\n\n async #initPlugins(config: BeamConfigOptions) {\n const pluginInitPromises = (config.plugins || []).map(async (plugin) => {\n await plugin.init(config);\n this.plugins[plugin.name] = plugin;\n return plugin;\n });\n return Promise.all(pluginInitPromises);\n }\n}\n\n/** We only want one instance of config throughout SDK so anyone can wait for initialization async using this\n * reference */\nconst beamConfigSingleton: BeamConfig = new BeamConfig({});\n\n/**\n * @example\n * import { init, getConfig } from '@beamimpact/web-sdk/dist/integrations/beam'\n *\n * const beam = await init({\n * apiKey: '',\n * chainId: 1,\n * storeId: 1,\n * plugins: [ new StatsigPlugin({ statsigApiKey: '' }) ]\n * })\n *\n * beam.plugins.statsig.logEvent('cart_updated', 100.00)\n */\nexport const init = (beamConfigOptions: BeamConfigOptions): Promise<BeamConfig> => {\n return beamConfigSingleton.init(beamConfigOptions);\n};\n\n/**\n * @example\n * // In scripts that need to wait for Beam to be ready\n * const beam = getConfig()\n * await beam.readyPromise\n * .then(() => doSomething(beam))\n * .catch(err => handleBeamError(err))\n * // OR\n * if (beam.status !== 'ready') {\n * beam.addEventListener('beamstatuschange', event => {\n * if (event.detail.status === 'ready') doSomething(beam)\n * else if (event.detail.status === 'error') handleBeamError(event.detail.error)\n * })\n * }\n */\nexport const getConfig = (): BeamConfig => beamConfigSingleton;\n"],"names":["h","i","r","e","m","n","_initFields","initFields_fn","_initPlugins","initPlugins_fn","resolveBeamReadyPromise","rejectBeamReadyPromise","beamReadyPromiseSingleton","resolve","reject","BeamConfig","options","__privateAdd","__privateMethod","err","error","SetupError","BeamStatusChangeEvent","logger","sendLog","DEFAULT_BASE_URL","DEFAULT_LOG_URL","config","pluginInitPromises","plugin","beamConfigSingleton","init","beamConfigOptions","getConfig"],"mappings":"2QAAA,IAAAA,EAAA,CAAAC,EAAAC,EAAAC,IAAA,CAAA,GAAA,CAAAD,EAAA,IAAAD,CAAA,EAAA,MAAA,UAAA,UAAAE,CAAA,CAAA,EAAAC,EAAA,CAAAH,EAAAC,EAAAC,IAAA,CAAA,GAAAD,EAAA,IAAAD,CAAA,EAAA,MAAA,UAAA,mDAAA,EAAAC,aAAA,QAAAA,EAAA,IAAAD,CAAA,EAAAC,EAAA,IAAAD,EAAAE,CAAA,CAAA,EAAAE,EAAA,CAAAJ,EAAAC,EAAAC,KAAAH,EAAAC,EAAAC,EAAA,uBAAA,EAAAC,GAAAG,EAAAC,EAAAC,EAAAC,EAwBA,IAAIC,EACAC,EACJ,MAAMC,EAA4B,IAAI,QAAiB,CAACC,EAASC,IAAW,CAC1EJ,EAA0BG,EAC1BF,EAAyBG,CAC3B,CAAC,EAmBD,MAAMC,UAAmB,WAAY,CA4BnC,YAAYC,EAAqC,CAC/C,MAAM,EAgCRC,EAAA,KAAAX,CASAW,EAAAA,EAAA,KAAMT,CAAAA,EArDN,KAAiCI,aAAAA,EAMjC,aAAgD,CAAC,EAO/C,KAAK,OAAS,UACdM,EAAA,KAAKZ,EAAAC,CAAL,EAAA,KAAA,KAAiBS,CACnB,CAAA,CAGA,MAAM,KAAKA,EAAiD,CAE1DE,EAAA,KAAKZ,EAAAC,CAAAA,EAAL,KAAiBS,KAAAA,CAAAA,EACjB,GAAI,CACF,MAAME,EAAA,KAAKV,EAAAC,CAAL,EAAA,KAAA,KAAkBO,CAC1B,CAAA,OAASG,EAAU,CACjB,MAAMC,EAAQ,IAAIC,EAClB,MAAAD,EAAM,MAAQD,EACd,KAAK,OAAS,QACd,KAAK,cAAc,IAAIG,EAAsB,CAAE,OAAQ,QAAS,MAAAF,CAAM,CAAC,CAAC,EACxET,EAAuBS,CAAK,EAC5BG,EAAO,MAAMH,CAAK,EACd,KAAK,QACP,MAAMI,EACJ,CAAE,OAAQ,KAAK,OAAQ,QAAS,KAAK,MAAO,EAC5C,CAAE,KAAM,QAAS,KAAMJ,EAAM,KAAM,SAAU,CAAE,QAASA,EAAM,QAAS,MAAOD,GAAK,OAAQ,CAAE,CAC/F,EAEIA,CACR,CACA,OAAK,KAAA,OAAS,QACd,KAAK,cAAc,IAAIG,EAAsB,CAAE,OAAQ,OAAQ,CAAC,CAAC,EACjEZ,EAAwB,EAAI,EACrB,IACT,CAmBF,CAjBEJ,EAAA,IAAAC,QAAAA,EAAW,SAACS,EAAqC,CAC/C,KAAK,OAASA,EAAQ,OACtB,KAAK,QAAUA,EAAQ,QACvB,KAAK,QAAUA,EAAQ,QACvB,KAAK,OAASA,EAAQ,OACtB,KAAK,QAAUA,EAAQ,SAAWS,EAClC,KAAK,OAAST,EAAQ,QAAUU,CAClC,EAEMlB,EAAA,IAAAC,QAAAA,EAAY,eAACkB,EAA2B,CAC5C,MAAMC,GAAsBD,EAAO,SAAW,CAAA,GAAI,IAAI,MAAOE,IAC3D,MAAMA,EAAO,KAAKF,CAAM,EACxB,KAAK,QAAQE,EAAO,IAAI,EAAIA,EACrBA,EACR,EACD,OAAO,QAAQ,IAAID,CAAkB,CACvC,EAKF,MAAME,EAAkC,IAAIf,EAAW,CAAE,CAAA,EAe5CgB,EAAQC,GACZF,EAAoB,KAAKE,CAAiB,EAkBtCC,EAAY,IAAkBH"}
1
+ {"version":3,"file":"beam.js","sources":["../../src/integrations/beam/index.ts"],"sourcesContent":["import { DEFAULT_BASE_URL, DEFAULT_LOG_URL } from \"../../api-sdk/constants\";\nimport { SetupError } from \"../../utils/beam-errors\";\nimport { BeamStatusChangeEvent } from \"../../utils/events\";\nimport { logger } from \"../../utils/logger\";\nimport { TApiKey, TNumericId, TUrl } from \"../../shared/types\";\nimport { sendLog } from \"../logs\";\n\nexport type BeamConfigOptions = {\n apiKey: TApiKey;\n domain?: TUrl;\n chainId: TNumericId;\n storeId?: TNumericId;\n baseUrl?: TUrl;\n logUrl?: TUrl;\n plugins?: BeamPlugin[];\n};\n\nexport type BeamPlugin = {\n name: string;\n init: (config: BeamConfigOptions) => Promise<void>;\n};\n\n// Set up a promise outside the beam config singleton so that we can keep a stable reference to the same promise\n// if anyone uses getConfig() before init() has been called with final configuration\nlet resolveBeamReadyPromise: (result: boolean) => any;\nlet rejectBeamReadyPromise: (reason: SetupError) => any;\nconst beamReadyPromiseSingleton = new Promise<boolean>((resolve, reject) => {\n resolveBeamReadyPromise = resolve;\n rejectBeamReadyPromise = reject;\n});\n\n/**\n * BeamConfig is not exported, it should be accessed as a singleton via getConfig & init\n * @example\n * import { init, getConfig } from '@beamimpact/web-sdk/dist/integrations/beam'\n * // In setup script\n * const beam = await init({ apiKey: '', chainId: 1, storeId: 1, plugins: [] })\n * // In other scripts that need to wait for Beam to be ready\n * const beam = getConfig()\n * await beam.readyPromise.then(() => doSomething())\n * // OR\n * if (beam.status !== 'ready') {\n * beam.addEventListener('beamstatuschange', event => {\n * if (event.detail.status === 'ready') doSomething()\n * else if (event.detail.status === 'error') handleBeamError()\n * })\n * }\n */\nclass BeamConfig extends EventTarget {\n apiKey?: TApiKey;\n\n chainId?: TNumericId;\n\n storeId?: TNumericId;\n\n /** Domain to set Beam cookies on, used if store and checkout are on different subdomains */\n domain?: TUrl;\n\n /** Beam server URL to make API requests */\n baseUrl?: TUrl;\n\n /** Beam server URL for logging / errors */\n logUrl?: TUrl;\n\n /** Alternative to adding event listener for beamstatuschange - resolves when Beam and all plugins are ready */\n readyPromise: Promise<boolean> = beamReadyPromiseSingleton;\n\n /** getConfig().addEventListener(\"beamstatuschange\", ({detail}) => { console.log(detail.status) }) */\n status: \"pending\" | \"ready\" | \"error\";\n\n /** Plugins such as Statsig for A/B tests - Beam waits for all plugins to initialize before emitting ready status */\n plugins: { [pluginName: string]: BeamPlugin } = {};\n\n /** Sets up Beam in pending state. This is used for initial value of Beam config singleton,\n * which allows scripts to access and wait for \"ready\" promise or event before initialization script runs.\n * Use init() to set up Beam for use. */\n constructor(options: Partial<BeamConfigOptions>) {\n super();\n this.status = \"pending\";\n this.#initFields(options);\n }\n\n /** Used by end users to set up Beam with config options and plugins. */\n async init(options: BeamConfigOptions): Promise<BeamConfig> {\n // Re-apply constructor logic with new options\n this.#initFields(options);\n try {\n await this.#initPlugins(options);\n } catch (err: any) {\n const error = new SetupError();\n error.cause = err;\n this.status = \"error\";\n this.dispatchEvent(new BeamStatusChangeEvent({ status: \"error\", error }));\n rejectBeamReadyPromise(error);\n logger.error(error);\n if (this.apiKey) {\n await sendLog(\n { apiKey: this.apiKey, baseUrl: this.logUrl },\n { type: \"error\", code: error.name, metadata: { message: error.message, cause: err?.message } }\n );\n }\n throw err;\n }\n this.status = \"ready\";\n this.dispatchEvent(new BeamStatusChangeEvent({ status: \"ready\" }));\n resolveBeamReadyPromise(true);\n return this;\n }\n\n #initFields(options: Partial<BeamConfigOptions>) {\n this.apiKey = options.apiKey;\n this.chainId = options.chainId;\n this.storeId = options.storeId;\n this.domain = options.domain;\n this.baseUrl = options.baseUrl || DEFAULT_BASE_URL;\n this.logUrl = options.logUrl || DEFAULT_LOG_URL;\n }\n\n async #initPlugins(config: BeamConfigOptions) {\n const pluginInitPromises = (config.plugins || []).map(async (plugin) => {\n await plugin.init(config);\n this.plugins[plugin.name] = plugin;\n return plugin;\n });\n return Promise.all(pluginInitPromises);\n }\n}\n\n/** We only want one instance of config throughout SDK so anyone can wait for initialization async using this\n * reference */\nconst beamConfigSingleton: BeamConfig = new BeamConfig({});\n\n/**\n * @example\n * import { init, getConfig } from '@beamimpact/web-sdk/dist/integrations/beam'\n *\n * const beam = await init({\n * apiKey: '',\n * chainId: 1,\n * storeId: 1,\n * plugins: [ new StatsigPlugin({ statsigApiKey: '' }) ]\n * })\n *\n * beam.plugins.statsig.logEvent('cart_updated', 100.00)\n */\nexport const init = (beamConfigOptions: BeamConfigOptions): Promise<BeamConfig> => {\n return beamConfigSingleton.init(beamConfigOptions);\n};\n\n/**\n * @example\n * // In scripts that need to wait for Beam to be ready\n * const beam = getConfig()\n * await beam.readyPromise\n * .then(() => doSomething(beam))\n * .catch(err => handleBeamError(err))\n * // OR\n * if (beam.status !== 'ready') {\n * beam.addEventListener('beamstatuschange', event => {\n * if (event.detail.status === 'ready') doSomething(beam)\n * else if (event.detail.status === 'error') handleBeamError(event.detail.error)\n * })\n * }\n */\nexport const getConfig = (): BeamConfig => beamConfigSingleton;\n"],"names":["h","i","r","e","m","n","_initFields","initFields_fn","_initPlugins","initPlugins_fn","resolveBeamReadyPromise","rejectBeamReadyPromise","beamReadyPromiseSingleton","resolve","reject","BeamConfig","options","__privateAdd","__privateMethod","err","error","SetupError","BeamStatusChangeEvent","logger","sendLog","DEFAULT_BASE_URL","DEFAULT_LOG_URL","config","pluginInitPromises","plugin","beamConfigSingleton","init","beamConfigOptions","getConfig"],"mappings":"yTAAA,IAAAA,EAAA,CAAAC,EAAAC,EAAAC,IAAA,CAAA,GAAA,CAAAD,EAAA,IAAAD,CAAA,EAAA,MAAA,UAAA,UAAAE,CAAA,CAAA,EAAAC,EAAA,CAAAH,EAAAC,EAAAC,IAAA,CAAA,GAAAD,EAAA,IAAAD,CAAA,EAAA,MAAA,UAAA,mDAAA,EAAAC,aAAA,QAAAA,EAAA,IAAAD,CAAA,EAAAC,EAAA,IAAAD,EAAAE,CAAA,CAAA,EAAAE,EAAA,CAAAJ,EAAAC,EAAAC,KAAAH,EAAAC,EAAAC,EAAA,uBAAA,EAAAC,GAAAG,EAAAC,EAAAC,EAAAC,EAwBA,IAAIC,EACAC,EACJ,MAAMC,EAA4B,IAAI,QAAiB,CAACC,EAASC,IAAW,CAC1EJ,EAA0BG,EAC1BF,EAAyBG,CAC3B,CAAC,EAmBD,MAAMC,UAAmB,WAAY,CA4BnC,YAAYC,EAAqC,CAC/C,MAAM,EAgCRC,EAAA,KAAAX,CASAW,EAAAA,EAAA,KAAMT,CAAAA,EArDN,KAAiCI,aAAAA,EAMjC,aAAgD,CAAC,EAO/C,KAAK,OAAS,UACdM,EAAA,KAAKZ,EAAAC,CAAL,EAAA,KAAA,KAAiBS,CACnB,CAAA,CAGA,MAAM,KAAKA,EAAiD,CAE1DE,EAAA,KAAKZ,EAAAC,CAAAA,EAAL,KAAiBS,KAAAA,CAAAA,EACjB,GAAI,CACF,MAAME,EAAA,KAAKV,EAAAC,CAAL,EAAA,KAAA,KAAkBO,CAC1B,CAAA,OAASG,EAAU,CACjB,MAAMC,EAAQ,IAAIC,EAClB,MAAAD,EAAM,MAAQD,EACd,KAAK,OAAS,QACd,KAAK,cAAc,IAAIG,EAAsB,CAAE,OAAQ,QAAS,MAAAF,CAAM,CAAC,CAAC,EACxET,EAAuBS,CAAK,EAC5BG,EAAO,MAAMH,CAAK,EACd,KAAK,QACP,MAAMI,EACJ,CAAE,OAAQ,KAAK,OAAQ,QAAS,KAAK,MAAO,EAC5C,CAAE,KAAM,QAAS,KAAMJ,EAAM,KAAM,SAAU,CAAE,QAASA,EAAM,QAAS,MAAOD,GAAK,OAAQ,CAAE,CAC/F,EAEIA,CACR,CACA,OAAK,KAAA,OAAS,QACd,KAAK,cAAc,IAAIG,EAAsB,CAAE,OAAQ,OAAQ,CAAC,CAAC,EACjEZ,EAAwB,EAAI,EACrB,IACT,CAmBF,CAjBEJ,EAAA,IAAAC,QAAAA,EAAW,SAACS,EAAqC,CAC/C,KAAK,OAASA,EAAQ,OACtB,KAAK,QAAUA,EAAQ,QACvB,KAAK,QAAUA,EAAQ,QACvB,KAAK,OAASA,EAAQ,OACtB,KAAK,QAAUA,EAAQ,SAAWS,EAClC,KAAK,OAAST,EAAQ,QAAUU,CAClC,EAEMlB,EAAA,IAAAC,QAAAA,EAAY,eAACkB,EAA2B,CAC5C,MAAMC,GAAsBD,EAAO,SAAW,CAAA,GAAI,IAAI,MAAOE,IAC3D,MAAMA,EAAO,KAAKF,CAAM,EACxB,KAAK,QAAQE,EAAO,IAAI,EAAIA,EACrBA,EACR,EACD,OAAO,QAAQ,IAAID,CAAkB,CACvC,EAKF,MAAME,EAAkC,IAAIf,EAAW,CAAE,CAAA,EAe5CgB,EAAQC,GACZF,EAAoB,KAAKE,CAAiB,EAkBtCC,EAAY,IAAkBH"}
@@ -1,2 +1,2 @@
1
- import{O}from"../chunks/update-cart-DCxR1dVX.esm.js";import"../chunks/lodash-D3TLHRR_.esm.js";import"../chunks/routes-BnPd0lrO.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../utils/logger.esm.js";import"../chunks/events-BohmT6Lp.esm.js";import"../utils/local-storage.esm.js";import"../utils/cookies.esm.js";import"../utils/remote-session.esm.js";import"../utils/memoize-last.esm.js";import"../chunks/promoManager-fl54hq13.esm.js";import"../chunks/cart-contents-DkoytiZh.esm.js";import"../utils/cart.esm.js";export{O as updateCart};
1
+ import{O as b}from"../chunks/update-cart-BGAM3i5j.esm.js";import"../chunks/lodash-D3TLHRR_.esm.js";import"../chunks/routes-DCT5U9dA.esm.js";import"../chunks/promo-types-DKAOFHJr.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../utils/logger.esm.js";import"../chunks/events-Dki0ka4F.esm.js";import"../utils/local-storage.esm.js";import"../utils/cookies.esm.js";import"../utils/remote-session.esm.js";import"../utils/memoize-last.esm.js";import"../utils/promoManager.esm.js";import"../chunks/cart-contents-DkoytiZh.esm.js";import"../utils/cart.esm.js";export{b as updateCart};
2
2
  //# sourceMappingURL=cart.esm.js.map
@@ -1,2 +1,2 @@
1
- import{O}from"../chunks/update-cart-BQHJ9lRb.esm.js";import"../chunks/lodash-D3TLHRR_.esm.js";import"../chunks/routes-D7s2_Xn5.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../utils/logger.js";import"../chunks/events-BohmT6Lp.esm.js";import"../utils/local-storage.js";import"../utils/cookies.js";import"../utils/remote-session.js";import"../utils/memoize-last.js";import"../chunks/promoManager-B9cTR1R3.esm.js";import"../chunks/cart-contents-DkoytiZh.esm.js";import"../utils/cart.js";export{O as updateCart};
1
+ import{O as b}from"../chunks/update-cart-pMo1b75q.esm.js";import"../chunks/lodash-D3TLHRR_.esm.js";import"../chunks/routes-DelUpFFo.esm.js";import"../chunks/promo-types-DKAOFHJr.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../utils/logger.js";import"../chunks/events-Dki0ka4F.esm.js";import"../utils/local-storage.js";import"../utils/cookies.js";import"../utils/remote-session.js";import"../utils/memoize-last.js";import"../utils/promoManager.js";import"../chunks/cart-contents-DkoytiZh.esm.js";import"../utils/cart.js";export{b as updateCart};
2
2
  //# sourceMappingURL=cart.js.map
@@ -1,10 +1,10 @@
1
- export { i as Utils } from '../chunks/index-DqffUXvi.esm.js';
1
+ export { i as Utils } from '../chunks/index-OTDSwrqr.esm.js';
2
2
  export { i as Shopify } from '../chunks/index-1Mhh255_.esm.js';
3
3
  export { i as Session } from '../chunks/index-C-hPf29c.esm.js';
4
4
  export { i as Cart } from '../chunks/index-CkuCObi0.esm.js';
5
5
  export { i as Logs } from '../chunks/index-CPVMm4wx.esm.js';
6
6
  import '../chunks/beam-errors-CCe004HS.esm.js';
7
- import '../chunks/events-BMTcECV9.esm.js';
7
+ import '../chunks/events-C55rozsO.esm.js';
8
8
  import '../chunks/cart-contents-oArgpFbi.esm.js';
9
9
  import '../chunks/openapi-spec-x9NbL7bU.esm.js';
10
10
  import '../chunks/promo-types-Cz_Zkjy1.esm.js';
@@ -1,2 +1,2 @@
1
- import{i as G}from"../chunks/index-AEnQH-so.esm.js";import{i as I}from"../chunks/index-D_L-n4we.esm.js";import{i as K}from"../chunks/index-IKiJwo5v.esm.js";import{i as N}from"../chunks/index-Bs4Q42bL.esm.js";import{i as P}from"../chunks/index-DZyO6--E.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../chunks/events-BohmT6Lp.esm.js";import"../utils/logger.esm.js";import"../utils/network-listeners.esm.js";import"../utils/local-storage.esm.js";import"../utils/wait-for-element.esm.js";import"../utils/cookies.esm.js";import"../utils/remote-session.esm.js";import"../utils/memoize-last.esm.js";import"../chunks/lodash-D3TLHRR_.esm.js";import"../chunks/promoManager-fl54hq13.esm.js";import"../chunks/order-page-Vk9anZAb.esm.js";import"../chunks/cart-contents-DkoytiZh.esm.js";import"../chunks/update-cart-DCxR1dVX.esm.js";import"../chunks/routes-BnPd0lrO.esm.js";import"../utils/cart.esm.js";import"../components/post-purchase.esm.js";import"../chunks/lit-WqMxC_PA.esm.js";import"../chunks/enforce-config-CZ3ToOgr.esm.js";import"../chunks/localize-Btu9xYcE.esm.js";import"../chunks/index-vH6HFI2B.esm.js";import"../chunks/progress-bar-DF7UuuHb.esm.js";import"../chunks/promo-pill-label-CbW_Vcru.esm.js";import"../chunks/vendor-KKSARHWL.esm.js";import"../components/beam-partner-logos.esm.js";import"../chunks/loading-template-DG4lkIIc.esm.js";import"../chunks/css-card-grid-CvoGpsJH.esm.js";import"../components/impact-overview.esm.js";import"../chunks/_share-dialog-dependencies-Cirjl8zP.esm.js";import"../chunks/share-button-DNyMCeHQ.esm.js";import"../chunks/is-all-html-elements-fcB7UUA1.esm.js";import"../chunks/share-button-CWFcBlaF.esm.js";import"../chunks/responsive-BR8qUfBa.esm.js";export{N as Cart,P as Logs,K as Session,I as Shopify,G as Utils};
1
+ import{i as H}from"../chunks/index-CGKJagBi.esm.js";import{i as J}from"../chunks/index-BBU6h_u0.esm.js";import{i as M}from"../chunks/index-IKiJwo5v.esm.js";import{i as O}from"../chunks/index-Dw8XJ6pi.esm.js";import{i as Q}from"../chunks/index-BzcA5RKX.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../chunks/events-Dki0ka4F.esm.js";import"../utils/logger.esm.js";import"../utils/network-listeners.esm.js";import"../utils/local-storage.esm.js";import"../utils/wait-for-element.esm.js";import"../utils/cookies.esm.js";import"../utils/remote-session.esm.js";import"../utils/memoize-last.esm.js";import"../chunks/lodash-D3TLHRR_.esm.js";import"../utils/promoManager.esm.js";import"../chunks/promo-types-DKAOFHJr.esm.js";import"../chunks/order-page-Bowqodk5.esm.js";import"../chunks/cart-contents-DkoytiZh.esm.js";import"../chunks/update-cart-BGAM3i5j.esm.js";import"../chunks/routes-DCT5U9dA.esm.js";import"../utils/cart.esm.js";import"../components/post-purchase.esm.js";import"../chunks/lit-WqMxC_PA.esm.js";import"../chunks/enforce-config-CZ3ToOgr.esm.js";import"../chunks/localize-Btu9xYcE.esm.js";import"../chunks/index-Bp9sWMsk.esm.js";import"../chunks/progress-bar-DF7UuuHb.esm.js";import"../chunks/promo-pill-label-CbW_Vcru.esm.js";import"../chunks/vendor-KKSARHWL.esm.js";import"../components/beam-partner-logos.esm.js";import"../chunks/loading-template-DG4lkIIc.esm.js";import"../chunks/css-card-grid-CvoGpsJH.esm.js";import"../components/impact-overview.esm.js";import"../chunks/_share-dialog-dependencies-DQlABdY4.esm.js";import"../chunks/share-button-BEXn6SRs.esm.js";import"../chunks/is-all-html-elements-fcB7UUA1.esm.js";import"../chunks/share-button-7um4cBYz.esm.js";import"../chunks/responsive-BR8qUfBa.esm.js";export{O as Cart,Q as Logs,M as Session,J as Shopify,H as Utils};
2
2
  //# sourceMappingURL=index.esm.js.map
@@ -1,2 +1,2 @@
1
- import{i as G}from"../chunks/index-DtfQd6C4.esm.js";import{i as I}from"../chunks/index-CaBSaNNT.esm.js";import{i as K}from"../chunks/index-BNjsFEGn.esm.js";import{i as N}from"../chunks/index-DGyP7M3g.esm.js";import{i as P}from"../chunks/index-IZJ4xhyj.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../chunks/events-BohmT6Lp.esm.js";import"../utils/logger.js";import"../utils/network-listeners.js";import"../utils/local-storage.js";import"../utils/wait-for-element.js";import"../utils/cookies.js";import"../utils/remote-session.js";import"../utils/memoize-last.js";import"../chunks/lodash-D3TLHRR_.esm.js";import"../chunks/promoManager-B9cTR1R3.esm.js";import"../chunks/order-page-O5u1cAz8.esm.js";import"../chunks/cart-contents-DkoytiZh.esm.js";import"../chunks/update-cart-BQHJ9lRb.esm.js";import"../chunks/routes-D7s2_Xn5.esm.js";import"../utils/cart.js";import"../components/post-purchase.js";import"../chunks/lit-WqMxC_PA.esm.js";import"../chunks/enforce-config-Ba1JkOHs.esm.js";import"../chunks/localize-C25pEGnx.esm.js";import"../chunks/index-CjT2ycv5.esm.js";import"../chunks/progress-bar-DF7UuuHb.esm.js";import"../chunks/promo-pill-label-CbW_Vcru.esm.js";import"../chunks/vendor-KKSARHWL.esm.js";import"../components/beam-partner-logos.js";import"../chunks/loading-template-DG4lkIIc.esm.js";import"../chunks/css-card-grid-CvoGpsJH.esm.js";import"../components/impact-overview.js";import"../chunks/_share-dialog-dependencies-DElW9Yip.esm.js";import"../chunks/share-button-CM4kwufS.esm.js";import"../chunks/is-all-html-elements-fcB7UUA1.esm.js";import"../chunks/share-button-8zVx6bYw.esm.js";import"../chunks/responsive-BR8qUfBa.esm.js";export{N as Cart,P as Logs,K as Session,I as Shopify,G as Utils};
1
+ import{i as H}from"../chunks/index-DBb5HSkR.esm.js";import{i as J}from"../chunks/index-BXVkhkpJ.esm.js";import{i as M}from"../chunks/index-BNjsFEGn.esm.js";import{i as O}from"../chunks/index-BJWJMzYy.esm.js";import{i as Q}from"../chunks/index-Cb7X_azQ.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../chunks/events-Dki0ka4F.esm.js";import"../utils/logger.js";import"../utils/network-listeners.js";import"../utils/local-storage.js";import"../utils/wait-for-element.js";import"../utils/cookies.js";import"../utils/remote-session.js";import"../utils/memoize-last.js";import"../chunks/lodash-D3TLHRR_.esm.js";import"../utils/promoManager.js";import"../chunks/promo-types-DKAOFHJr.esm.js";import"../chunks/order-page-C2wPfn6k.esm.js";import"../chunks/cart-contents-DkoytiZh.esm.js";import"../chunks/update-cart-pMo1b75q.esm.js";import"../chunks/routes-DelUpFFo.esm.js";import"../utils/cart.js";import"../components/post-purchase.js";import"../chunks/lit-WqMxC_PA.esm.js";import"../chunks/enforce-config-Ba1JkOHs.esm.js";import"../chunks/localize-C25pEGnx.esm.js";import"../chunks/index-DA4pws6n.esm.js";import"../chunks/progress-bar-DF7UuuHb.esm.js";import"../chunks/promo-pill-label-CbW_Vcru.esm.js";import"../chunks/vendor-KKSARHWL.esm.js";import"../components/beam-partner-logos.js";import"../chunks/loading-template-DG4lkIIc.esm.js";import"../chunks/css-card-grid-CvoGpsJH.esm.js";import"../components/impact-overview.js";import"../chunks/_share-dialog-dependencies-Dg-9riak.esm.js";import"../chunks/share-button-B376j4qt.esm.js";import"../chunks/is-all-html-elements-fcB7UUA1.esm.js";import"../chunks/share-button-BZ9Dmpsy.esm.js";import"../chunks/responsive-BR8qUfBa.esm.js";export{O as Cart,Q as Logs,M as Session,J as Shopify,H as Utils};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import"../chunks/routes-BnPd0lrO.esm.js";import"../utils/logger.esm.js";import{s as i}from"../chunks/index-DZyO6--E.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";export{i as sendLog};
1
+ import"../chunks/routes-DCT5U9dA.esm.js";import"../utils/logger.esm.js";import{s}from"../chunks/index-BzcA5RKX.esm.js";import"../chunks/promo-types-DKAOFHJr.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";export{s as sendLog};
2
2
  //# sourceMappingURL=logs.esm.js.map
@@ -1,2 +1,2 @@
1
- import"../chunks/routes-D7s2_Xn5.esm.js";import"../utils/logger.js";import{s as i}from"../chunks/index-IZJ4xhyj.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";export{i as sendLog};
1
+ import"../chunks/routes-DelUpFFo.esm.js";import"../utils/logger.js";import{s}from"../chunks/index-Cb7X_azQ.esm.js";import"../chunks/promo-types-DKAOFHJr.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";export{s as sendLog};
2
2
  //# sourceMappingURL=logs.js.map
@@ -1,2 +1,2 @@
1
- import{a as u}from"../chunks/events-BohmT6Lp.esm.js";import{g as f,f as g,p as P,a as v,b as k}from"../chunks/promoManager-fl54hq13.esm.js";import{logger as t}from"../utils/logger.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../utils/cookies.esm.js";import"../utils/local-storage.esm.js";var y=(o,e,r)=>{if(!e.has(o))throw TypeError("Cannot "+r)},s=(o,e,r)=>{if(e.has(o))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(o):e.set(o,r)},n=(o,e,r)=>(y(o,e,"access private method"),r),d,h,m,p,c,C;class S{constructor(e){s(this,d),s(this,m),s(this,c),this.name="promoManager",this.promoCodes={unvalidatedPromoCodes:[],validatedPromoCodes:[]},this.disableDiscountCodeCookieCheck=!!e?.disableDiscountCodeCookieCheck}async init(e){try{const r=n(this,d,h).call(this),a=this.disableDiscountCodeCookieCheck?null:n(this,m,p).call(this);if(r||a){const l=f({apiKey:e.apiKey})??{unvalidatedPromoCodes:[],validatedPromoCodes:[]},i=[];r&&i.push(r),a&&i.push({value:a}),this.promoCodes=g(i,e.apiKey),!P(this.promoCodes,l)&&n(this,c,C).call(this)}}catch(r){t.error("[PromoManager] Initialization failed:",r)}}}d=new WeakSet,h=function(){try{return v()}catch(o){t.error("[PromoManager] URL sanitization error:",o);return}},m=new WeakSet,p=function(){try{return k()}catch(o){return t.error("[PromoManager] Cookie extraction error:",o),null}},c=new WeakSet,C=function(){if(this.promoCodes)try{const o=new u({promoCodes:{...this.promoCodes}});window.dispatchEvent(o)}catch(o){t.error("[PromoManager] Failed to dispatch event:",o)}};export{S as PromoManagerPlugin};
1
+ import{a as u}from"../chunks/events-Dki0ka4F.esm.js";import{getPromoCodesLocalStorage as P,formatStoreAndReturnPromoCodes as f,promoCodesAreEqual as g,getSanitizedUrlForStorage as v,getPromoCodeFromShopifyCookie as k}from"../utils/promoManager.esm.js";import{logger as t}from"../utils/logger.esm.js";import"../chunks/promo-types-DKAOFHJr.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../utils/cookies.esm.js";import"../utils/local-storage.esm.js";var y=(o,e,r)=>{if(!e.has(o))throw TypeError("Cannot "+r)},s=(o,e,r)=>{if(e.has(o))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(o):e.set(o,r)},n=(o,e,r)=>(y(o,e,"access private method"),r),d,h,m,p,c,C;class S{constructor(e){s(this,d),s(this,m),s(this,c),this.name="promoManager",this.promoCodes={unvalidatedPromoCodes:[],validatedPromoCodes:[]},this.disableDiscountCodeCookieCheck=!!e?.disableDiscountCodeCookieCheck}async init(e){try{const r=n(this,d,h).call(this),a=this.disableDiscountCodeCookieCheck?null:n(this,m,p).call(this);if(r||a){const l=P({apiKey:e.apiKey})??{unvalidatedPromoCodes:[],validatedPromoCodes:[]},i=[];r&&i.push(r),a&&i.push({value:a}),this.promoCodes=f(i,e.apiKey),!g(this.promoCodes,l)&&n(this,c,C).call(this)}}catch(r){t.error("[PromoManager] Initialization failed:",r)}}}d=new WeakSet,h=function(){try{return v()}catch(o){t.error("[PromoManager] URL sanitization error:",o);return}},m=new WeakSet,p=function(){try{return k()}catch(o){return t.error("[PromoManager] Cookie extraction error:",o),null}},c=new WeakSet,C=function(){if(this.promoCodes)try{const o=new u({promoCodes:{...this.promoCodes}});window.dispatchEvent(o)}catch(o){t.error("[PromoManager] Failed to dispatch event:",o)}};export{S as PromoManagerPlugin};
2
2
  //# sourceMappingURL=promoManager.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"promoManager.esm.js","sources":["../../src/integrations/promoManager/plugin.ts"],"sourcesContent":["import { TPromoCodeAttribute, TPromoCodeRequest } from \"../../shared/promo-types\";\nimport { BeamPromoCodesStoredEvent } from \"../../utils/events\";\nimport {\n formatStoreAndReturnPromoCodes,\n getPromoCodeFromShopifyCookie,\n getPromoCodesLocalStorage,\n getSanitizedUrlForStorage,\n promoCodesAreEqual,\n} from \"../../utils/promoManager\";\nimport { BeamConfigOptions, BeamPlugin } from \"../beam\";\nimport { logger } from \"../utils\";\n\ntype PromoManagerPluginOptions = {\n disableDiscountCodeCookieCheck?: boolean;\n};\n\n/**\n * Manages promo code lifecycle including:\n * - URL sanitization\n * - Storage management\n * - Event emission\n *\n * @implements {BeamPlugin}\n */\nexport class PromoManagerPlugin implements BeamPlugin {\n name = \"promoManager\";\n /**\n * When true, disables Shopify discount cookie checking.\n * Set this to true for non-Shopify integrations.\n */\n disableDiscountCodeCookieCheck: boolean;\n\n private promoCodes: TPromoCodeRequest = {\n unvalidatedPromoCodes: [],\n validatedPromoCodes: [],\n };\n\n constructor(options: PromoManagerPluginOptions) {\n this.disableDiscountCodeCookieCheck = !!options?.disableDiscountCodeCookieCheck;\n }\n\n /**\n * Initializes promo code management:\n * - Extracts and sanitizes promo codes from URL\n * - Stores formatted codes\n * - Emits storage event\n *\n * @param {BeamConfigOptions} config - Plugin configuration\n */\n\n async init(config: BeamConfigOptions) {\n try {\n const sanitizedUrl = this.#getSanitizedUrl();\n const cookieCode = this.disableDiscountCodeCookieCheck ? null : this.#getPromoCodeFromShopifyCookie();\n\n if (sanitizedUrl || cookieCode) {\n const previouslyStoredPromoCodes = getPromoCodesLocalStorage({ apiKey: config.apiKey }) ?? {\n unvalidatedPromoCodes: [],\n validatedPromoCodes: [],\n };\n const sanitizedPromoCodes: TPromoCodeAttribute[] = [];\n if (sanitizedUrl) sanitizedPromoCodes.push(sanitizedUrl);\n if (cookieCode) sanitizedPromoCodes.push({ value: cookieCode });\n\n this.promoCodes = formatStoreAndReturnPromoCodes(sanitizedPromoCodes, config.apiKey);\n const hasChanged = !promoCodesAreEqual(this.promoCodes, previouslyStoredPromoCodes);\n\n if (hasChanged) {\n this.#emitPromoCodeStoredEvent();\n }\n }\n } catch (error) {\n logger.error(\"[PromoManager] Initialization failed:\", error);\n }\n }\n\n /**\n * Retrieves and sanitizes current URL for promo code extraction\n * @private\n * @returns {TPromoCodeAttribute} Sanitized URL attributes\n */\n #getSanitizedUrl(): TPromoCodeAttribute | undefined {\n try {\n const sanitizedUrl = getSanitizedUrlForStorage();\n return sanitizedUrl;\n } catch (error) {\n logger.error(\"[PromoManager] URL sanitization error:\", error);\n return undefined;\n }\n }\n\n #getPromoCodeFromShopifyCookie(): string | null {\n try {\n return getPromoCodeFromShopifyCookie();\n } catch (error) {\n logger.error(\"[PromoManager] Cookie extraction error:\", error);\n return null;\n }\n }\n\n /**\n * Emits event when promo codes are stored\n * @private\n */\n #emitPromoCodeStoredEvent() {\n if (!this.promoCodes) {\n return;\n }\n\n try {\n const event = new BeamPromoCodesStoredEvent({\n promoCodes: { ...this.promoCodes },\n });\n window.dispatchEvent(event);\n } catch (error) {\n logger.error(\"[PromoManager] Failed to dispatch event:\", error);\n }\n }\n}\n"],"names":["_getSanitizedUrl","getSanitizedUrl_fn","_getPromoCodeFromShopifyCookie","getPromoCodeFromShopifyCookie_fn","_emitPromoCodeStoredEvent","emitPromoCodeStoredEvent_fn","PromoManagerPlugin","options","__privateAdd","config","sanitizedUrl","__privateMethod","cookieCode","previouslyStoredPromoCodes","getPromoCodesLocalStorage","sanitizedPromoCodes","formatStoreAndReturnPromoCodes","promoCodesAreEqual","error","logger","getSanitizedUrlForStorage","getPromoCodeFromShopifyCookie","event","BeamPromoCodesStoredEvent"],"mappings":"giBAAAA,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,QAwBaC,CAAyC,CAapD,YAAYC,EAAoC,CA4ChDC,EAAA,KAAAR,CAUAQ,EAAAA,EAAA,KAAAN,CAAAA,EAaAM,EAAA,KAAAJ,GA/EA,KAAO,KAAA,eAOP,KAAQ,WAAgC,CACtC,sBAAuB,GACvB,oBAAqB,CAAA,CACvB,EAGE,KAAK,+BAAiC,CAAC,CAACG,GAAS,8BACnD,CAWA,MAAM,KAAKE,EAA2B,CACpC,GAAI,CACF,MAAMC,EAAeC,EAAA,KAAKX,EAAAC,CAAAA,EAAL,KACfW,IAAAA,EAAAA,EAAa,KAAK,+BAAiC,KAAOD,EAAA,KAAKT,EAAAC,CAAL,EAAA,KAAA,IAAA,EAEhE,GAAIO,GAAgBE,EAAY,CAC9B,MAAMC,EAA6BC,EAA0B,CAAE,OAAQL,EAAO,MAAO,CAAC,GAAK,CACzF,sBAAuB,GACvB,oBAAqB,EACvB,EACMM,EAA6C,CAC/CL,EAAAA,GAAcK,EAAoB,KAAKL,CAAY,EACnDE,GAAYG,EAAoB,KAAK,CAAE,MAAOH,CAAW,CAAC,EAE9D,KAAK,WAAaI,EAA+BD,EAAqBN,EAAO,MAAM,EAChE,CAACQ,EAAmB,KAAK,WAAYJ,CAA0B,GAGhFF,EAAA,KAAKP,EAAAC,CAAAA,EAAL,KAEJ,IAAA,CAAA,CACF,OAASa,EAAO,CACdC,EAAO,MAAM,wCAAyCD,CAAK,CAC7D,CACF,CA4CF,CArCElB,EAAA,IAAAC,QAAAA,EAAgB,UAAoC,CAClD,GAAI,CAEF,OADqBmB,EAA0B,CAEjD,OAASF,EAAO,CACdC,EAAO,MAAM,yCAA0CD,CAAK,EAC5D,MACF,CACF,EAEAhB,EAAA,YAAAC,EAA8B,UAAkB,CAC9C,GAAI,CACF,OAAOkB,EACT,CAAA,OAASH,EAAO,CACd,OAAAC,EAAO,MAAM,0CAA2CD,CAAK,EACtD,IACT,CACF,EAMAd,EAAA,IAAA,QAAAC,EAAyB,UAAG,CAC1B,GAAK,KAAK,WAIV,GAAI,CACF,MAAMiB,EAAQ,IAAIC,EAA0B,CAC1C,WAAY,CAAE,GAAG,KAAK,UAAW,CACnC,CAAC,EACD,OAAO,cAAcD,CAAK,CAC5B,OAASJ,EAAO,CACdC,EAAO,MAAM,2CAA4CD,CAAK,CAChE,CACF"}
1
+ {"version":3,"file":"promoManager.esm.js","sources":["../../src/integrations/promoManager/plugin.ts"],"sourcesContent":["import { TPromoCodeAttribute, TPromoCodeRequest } from \"../../shared/promo-types\";\nimport { BeamPromoCodesStoredEvent } from \"../../utils/events\";\nimport {\n formatStoreAndReturnPromoCodes,\n getPromoCodeFromShopifyCookie,\n getPromoCodesLocalStorage,\n getSanitizedUrlForStorage,\n promoCodesAreEqual,\n} from \"../../utils/promoManager\";\nimport { BeamConfigOptions, BeamPlugin } from \"../beam\";\nimport { logger } from \"../utils\";\n\ntype PromoManagerPluginOptions = {\n disableDiscountCodeCookieCheck?: boolean;\n};\n\n/**\n * Manages promo code lifecycle including:\n * - URL sanitization\n * - Storage management\n * - Event emission\n *\n * @implements {BeamPlugin}\n */\nexport class PromoManagerPlugin implements BeamPlugin {\n name = \"promoManager\";\n /**\n * When true, disables Shopify discount cookie checking.\n * Set this to true for non-Shopify integrations.\n */\n disableDiscountCodeCookieCheck: boolean;\n\n private promoCodes: TPromoCodeRequest = {\n unvalidatedPromoCodes: [],\n validatedPromoCodes: [],\n };\n\n constructor(options: PromoManagerPluginOptions) {\n this.disableDiscountCodeCookieCheck = !!options?.disableDiscountCodeCookieCheck;\n }\n\n /**\n * Initializes promo code management:\n * - Extracts and sanitizes promo codes from URL\n * - Stores formatted codes\n * - Emits storage event\n *\n * @param {BeamConfigOptions} config - Plugin configuration\n */\n\n async init(config: BeamConfigOptions) {\n try {\n const sanitizedUrl = this.#getSanitizedUrl();\n const cookieCode = this.disableDiscountCodeCookieCheck ? null : this.#getPromoCodeFromShopifyCookie();\n\n if (sanitizedUrl || cookieCode) {\n const previouslyStoredPromoCodes = getPromoCodesLocalStorage({ apiKey: config.apiKey }) ?? {\n unvalidatedPromoCodes: [],\n validatedPromoCodes: [],\n };\n const sanitizedPromoCodes: TPromoCodeAttribute[] = [];\n if (sanitizedUrl) sanitizedPromoCodes.push(sanitizedUrl);\n if (cookieCode) sanitizedPromoCodes.push({ value: cookieCode });\n\n this.promoCodes = formatStoreAndReturnPromoCodes(sanitizedPromoCodes, config.apiKey);\n const hasChanged = !promoCodesAreEqual(this.promoCodes, previouslyStoredPromoCodes);\n\n if (hasChanged) {\n this.#emitPromoCodeStoredEvent();\n }\n }\n } catch (error) {\n logger.error(\"[PromoManager] Initialization failed:\", error);\n }\n }\n\n /**\n * Retrieves and sanitizes current URL for promo code extraction\n * @private\n * @returns {TPromoCodeAttribute} Sanitized URL attributes\n */\n #getSanitizedUrl(): TPromoCodeAttribute | undefined {\n try {\n const sanitizedUrl = getSanitizedUrlForStorage();\n return sanitizedUrl;\n } catch (error) {\n logger.error(\"[PromoManager] URL sanitization error:\", error);\n return undefined;\n }\n }\n\n #getPromoCodeFromShopifyCookie(): string | null {\n try {\n return getPromoCodeFromShopifyCookie();\n } catch (error) {\n logger.error(\"[PromoManager] Cookie extraction error:\", error);\n return null;\n }\n }\n\n /**\n * Emits event when promo codes are stored\n * @private\n */\n #emitPromoCodeStoredEvent() {\n if (!this.promoCodes) {\n return;\n }\n\n try {\n const event = new BeamPromoCodesStoredEvent({\n promoCodes: { ...this.promoCodes },\n });\n window.dispatchEvent(event);\n } catch (error) {\n logger.error(\"[PromoManager] Failed to dispatch event:\", error);\n }\n }\n}\n"],"names":["_getSanitizedUrl","getSanitizedUrl_fn","_getPromoCodeFromShopifyCookie","getPromoCodeFromShopifyCookie_fn","_emitPromoCodeStoredEvent","emitPromoCodeStoredEvent_fn","PromoManagerPlugin","options","__privateAdd","config","sanitizedUrl","__privateMethod","cookieCode","previouslyStoredPromoCodes","getPromoCodesLocalStorage","sanitizedPromoCodes","formatStoreAndReturnPromoCodes","promoCodesAreEqual","error","logger","getSanitizedUrlForStorage","getPromoCodeFromShopifyCookie","event","BeamPromoCodesStoredEvent"],"mappings":"8rBAAAA,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,QAwBaC,CAAyC,CAapD,YAAYC,EAAoC,CA4ChDC,EAAA,KAAAR,CAUAQ,EAAAA,EAAA,KAAAN,CAAAA,EAaAM,EAAA,KAAAJ,GA/EA,KAAO,KAAA,eAOP,KAAQ,WAAgC,CACtC,sBAAuB,GACvB,oBAAqB,CAAA,CACvB,EAGE,KAAK,+BAAiC,CAAC,CAACG,GAAS,8BACnD,CAWA,MAAM,KAAKE,EAA2B,CACpC,GAAI,CACF,MAAMC,EAAeC,EAAA,KAAKX,EAAAC,CAAAA,EAAL,KACfW,IAAAA,EAAAA,EAAa,KAAK,+BAAiC,KAAOD,EAAA,KAAKT,EAAAC,CAAL,EAAA,KAAA,IAAA,EAEhE,GAAIO,GAAgBE,EAAY,CAC9B,MAAMC,EAA6BC,EAA0B,CAAE,OAAQL,EAAO,MAAO,CAAC,GAAK,CACzF,sBAAuB,GACvB,oBAAqB,EACvB,EACMM,EAA6C,CAC/CL,EAAAA,GAAcK,EAAoB,KAAKL,CAAY,EACnDE,GAAYG,EAAoB,KAAK,CAAE,MAAOH,CAAW,CAAC,EAE9D,KAAK,WAAaI,EAA+BD,EAAqBN,EAAO,MAAM,EAChE,CAACQ,EAAmB,KAAK,WAAYJ,CAA0B,GAGhFF,EAAA,KAAKP,EAAAC,CAAAA,EAAL,KAEJ,IAAA,CAAA,CACF,OAASa,EAAO,CACdC,EAAO,MAAM,wCAAyCD,CAAK,CAC7D,CACF,CA4CF,CArCElB,EAAA,IAAAC,QAAAA,EAAgB,UAAoC,CAClD,GAAI,CAEF,OADqBmB,EAA0B,CAEjD,OAASF,EAAO,CACdC,EAAO,MAAM,yCAA0CD,CAAK,EAC5D,MACF,CACF,EAEAhB,EAAA,YAAAC,EAA8B,UAAkB,CAC9C,GAAI,CACF,OAAOkB,EACT,CAAA,OAASH,EAAO,CACd,OAAAC,EAAO,MAAM,0CAA2CD,CAAK,EACtD,IACT,CACF,EAMAd,EAAA,IAAA,QAAAC,EAAyB,UAAG,CAC1B,GAAK,KAAK,WAIV,GAAI,CACF,MAAMiB,EAAQ,IAAIC,EAA0B,CAC1C,WAAY,CAAE,GAAG,KAAK,UAAW,CACnC,CAAC,EACD,OAAO,cAAcD,CAAK,CAC5B,OAASJ,EAAO,CACdC,EAAO,MAAM,2CAA4CD,CAAK,CAChE,CACF"}