@beamimpact/web-sdk 1.44.2 → 1.45.2

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 (189) hide show
  1. package/dist/chunks/_share-dialog-dependencies-R9RsuSGx.esm.js +2 -0
  2. package/dist/chunks/_share-dialog-dependencies-R9RsuSGx.esm.js.map +1 -0
  3. package/dist/chunks/_share-dialog-dependencies-o5GBtNTA.esm.js +2 -0
  4. package/dist/chunks/_share-dialog-dependencies-o5GBtNTA.esm.js.map +1 -0
  5. package/dist/chunks/{css-card-grid-r6wxRbPV.esm.js → css-card-grid-nEc--M5M.esm.js} +2 -2
  6. package/dist/chunks/{css-card-grid-r6wxRbPV.esm.js.map → css-card-grid-nEc--M5M.esm.js.map} +1 -1
  7. package/dist/chunks/{enforce-config-HksNiOMu.esm.js → enforce-config-ZAI7WYAd.esm.js} +2 -2
  8. package/dist/chunks/{enforce-config-HksNiOMu.esm.js.map → enforce-config-ZAI7WYAd.esm.js.map} +1 -1
  9. package/dist/chunks/{enforce-config-er6B5Gkj.esm.js → enforce-config-ZyPq_4CF.esm.js} +2 -2
  10. package/dist/chunks/{enforce-config-er6B5Gkj.esm.js.map → enforce-config-ZyPq_4CF.esm.js.map} +1 -1
  11. package/dist/chunks/{index-tV7ZK858.esm.js → index--JacA4R2.esm.js} +2 -2
  12. package/dist/chunks/{index-tV7ZK858.esm.js.map → index--JacA4R2.esm.js.map} +1 -1
  13. package/dist/chunks/index-1WxwWfcp.esm.js +2 -0
  14. package/dist/chunks/index-1WxwWfcp.esm.js.map +1 -0
  15. package/dist/chunks/index-4fdLArZg.esm.js +2 -0
  16. package/dist/chunks/index-4fdLArZg.esm.js.map +1 -0
  17. package/dist/chunks/index-Hd_2hpsA.esm.js +2 -0
  18. package/dist/chunks/index-Hd_2hpsA.esm.js.map +1 -0
  19. package/dist/chunks/{index-1nI7l5vj.esm.js → index-JDZQClkA.esm.js} +2 -2
  20. package/dist/chunks/{index-1nI7l5vj.esm.js.map → index-JDZQClkA.esm.js.map} +1 -1
  21. package/dist/chunks/index-MJNFm2RK.esm.js +2 -0
  22. package/dist/chunks/index-MJNFm2RK.esm.js.map +1 -0
  23. package/dist/chunks/{index-mw70Caof.esm.js → index-eXilYHHK.esm.js} +2 -2
  24. package/dist/chunks/{index-mw70Caof.esm.js.map → index-eXilYHHK.esm.js.map} +1 -1
  25. package/dist/chunks/index-gBAASIWa.esm.js +2 -0
  26. package/dist/chunks/index-gBAASIWa.esm.js.map +1 -0
  27. package/dist/chunks/index-lyf1T2wZ.esm.js +2 -0
  28. package/dist/chunks/index-lyf1T2wZ.esm.js.map +1 -0
  29. package/dist/chunks/{index-Kz977KkP.esm.js → index-qs-xQCeM.esm.js} +2 -2
  30. package/dist/chunks/{index-Kz977KkP.esm.js.map → index-qs-xQCeM.esm.js.map} +1 -1
  31. package/dist/chunks/{lit-3QHn3fwl.esm.js → lit-iNN5L_Qk.esm.js} +2 -2
  32. package/dist/chunks/{lit-3QHn3fwl.esm.js.map → lit-iNN5L_Qk.esm.js.map} +1 -1
  33. package/dist/chunks/loading-template-t4fFsYtr.esm.js +2 -0
  34. package/dist/chunks/{loading-template-mLjOGXMj.esm.js.map → loading-template-t4fFsYtr.esm.js.map} +1 -1
  35. package/dist/chunks/localize-m-_ESmpk.esm.js +31 -0
  36. package/dist/chunks/localize-m-_ESmpk.esm.js.map +1 -0
  37. package/dist/chunks/localize-o-cYvHQf.esm.js +31 -0
  38. package/dist/chunks/localize-o-cYvHQf.esm.js.map +1 -0
  39. package/dist/chunks/{order-page-zYoubhg4.esm.js → order-page-KZ7xLkRW.esm.js} +2 -2
  40. package/dist/chunks/{order-page-zYoubhg4.esm.js.map → order-page-KZ7xLkRW.esm.js.map} +1 -1
  41. package/dist/chunks/{order-page-zPVHsu6v.esm.js → order-page-mlWRT5YL.esm.js} +2 -2
  42. package/dist/chunks/{order-page-zPVHsu6v.esm.js.map → order-page-mlWRT5YL.esm.js.map} +1 -1
  43. package/dist/chunks/{progress-bar-HVG_n8_6.esm.js → progress-bar-PMU_xI3L.esm.js} +2 -2
  44. package/dist/chunks/{progress-bar-HVG_n8_6.esm.js.map → progress-bar-PMU_xI3L.esm.js.map} +1 -1
  45. package/dist/chunks/promo-pill-label-58PJRvSl.esm.js +15 -0
  46. package/dist/chunks/{promo-pill-label-81dVN7VY.esm.js.map → promo-pill-label-58PJRvSl.esm.js.map} +1 -1
  47. package/dist/chunks/{responsive-KbDsZM6S.esm.js → responsive-2lC2Wrtg.esm.js} +2 -2
  48. package/dist/chunks/{responsive-KbDsZM6S.esm.js.map → responsive-2lC2Wrtg.esm.js.map} +1 -1
  49. package/dist/chunks/{routes-eIRRJ7c1.esm.js → routes-FBB1GA4-.esm.js} +2 -2
  50. package/dist/chunks/{routes-eIRRJ7c1.esm.js.map → routes-FBB1GA4-.esm.js.map} +1 -1
  51. package/dist/chunks/{routes-4Mnz2XZX.esm.js → routes-jmFlXAbv.esm.js} +2 -2
  52. package/dist/chunks/{routes-4Mnz2XZX.esm.js.map → routes-jmFlXAbv.esm.js.map} +1 -1
  53. package/dist/chunks/share-button-SNvuFDC9.esm.js +2 -0
  54. package/dist/chunks/share-button-SNvuFDC9.esm.js.map +1 -0
  55. package/dist/chunks/{share-button-9d9kTwmG.esm.js → share-button-bQ8brpBZ.esm.js} +4 -3
  56. package/dist/chunks/{share-button-9d9kTwmG.esm.js.map → share-button-bQ8brpBZ.esm.js.map} +1 -1
  57. package/dist/chunks/{share-button-PJlajTPi.esm.js → share-button-hLOsYlSA.esm.js} +4 -3
  58. package/dist/chunks/{share-button-PJlajTPi.esm.js.map → share-button-hLOsYlSA.esm.js.map} +1 -1
  59. package/dist/chunks/{shoelace-components-A9MnfNMD.esm.js → shoelace-components-leDI-Yop.esm.js} +2 -2
  60. package/dist/chunks/{shoelace-components-A9MnfNMD.esm.js.map → shoelace-components-leDI-Yop.esm.js.map} +1 -1
  61. package/dist/chunks/{shoelace-components-c53kUkO2.esm.js → shoelace-components-qjNlvvPx.esm.js} +2 -2
  62. package/dist/chunks/{shoelace-components-c53kUkO2.esm.js.map → shoelace-components-qjNlvvPx.esm.js.map} +1 -1
  63. package/dist/chunks/{update-cart-ZuRyrnAL.esm.js → update-cart-aKQ3Cjc8.esm.js} +2 -2
  64. package/dist/chunks/{update-cart-ZuRyrnAL.esm.js.map → update-cart-aKQ3Cjc8.esm.js.map} +1 -1
  65. package/dist/chunks/{update-cart-SPqvT31b.esm.js → update-cart-j9LPS5By.esm.js} +2 -2
  66. package/dist/chunks/{update-cart-SPqvT31b.esm.js.map → update-cart-j9LPS5By.esm.js.map} +1 -1
  67. package/dist/chunks/{vendor--f7lkyBk.esm.js → vendor-GKiOHg2N.esm.js} +2 -2
  68. package/dist/chunks/{vendor--f7lkyBk.esm.js.map → vendor-GKiOHg2N.esm.js.map} +1 -1
  69. package/dist/components/beam-partner-logos.esm.js +1 -1
  70. package/dist/components/beam-partner-logos.js +1 -1
  71. package/dist/components/community-impact.esm.js +1 -1
  72. package/dist/components/community-impact.js +1 -1
  73. package/dist/components/cumulative-impact.esm.js +1 -1
  74. package/dist/components/cumulative-impact.js +1 -1
  75. package/dist/components/impact-overview.d.ts +6 -1
  76. package/dist/components/impact-overview.esm.js +87 -73
  77. package/dist/components/impact-overview.esm.js.map +1 -1
  78. package/dist/components/impact-overview.js +87 -73
  79. package/dist/components/impact-overview.js.map +1 -1
  80. package/dist/components/index.esm.js +1 -1
  81. package/dist/components/index.js +1 -1
  82. package/dist/components/post-purchase.esm.js +1 -1
  83. package/dist/components/post-purchase.esm.js.map +1 -1
  84. package/dist/components/post-purchase.js +1 -1
  85. package/dist/components/post-purchase.js.map +1 -1
  86. package/dist/components/product-details-page.esm.js +1 -1
  87. package/dist/components/product-details-page.js +1 -1
  88. package/dist/components/redeem-transaction.d.ts +7 -1
  89. package/dist/components/redeem-transaction.esm.js +256 -185
  90. package/dist/components/redeem-transaction.esm.js.map +1 -1
  91. package/dist/components/redeem-transaction.js +256 -185
  92. package/dist/components/redeem-transaction.js.map +1 -1
  93. package/dist/components/select-nonprofit.esm.js +42 -28
  94. package/dist/components/select-nonprofit.esm.js.map +1 -1
  95. package/dist/components/select-nonprofit.js +42 -28
  96. package/dist/components/select-nonprofit.js.map +1 -1
  97. package/dist/components/select-subscription-nonprofit.esm.js +34 -19
  98. package/dist/components/select-subscription-nonprofit.esm.js.map +1 -1
  99. package/dist/components/select-subscription-nonprofit.js +34 -19
  100. package/dist/components/select-subscription-nonprofit.js.map +1 -1
  101. package/dist/components/shopify.esm.js +1 -1
  102. package/dist/components/shopify.esm.js.map +1 -1
  103. package/dist/components/shopify.js +1 -1
  104. package/dist/components/shopify.js.map +1 -1
  105. package/dist/components/social-share.esm.js +1 -1
  106. package/dist/components/social-share.js +1 -1
  107. package/dist/components/subscription-impact.esm.js +1 -1
  108. package/dist/components/subscription-impact.js +1 -1
  109. package/dist/components/subscription-management.esm.js +1 -1
  110. package/dist/components/subscription-management.esm.js.map +1 -1
  111. package/dist/components/subscription-management.js +1 -1
  112. package/dist/components/subscription-management.js.map +1 -1
  113. package/dist/index.esm.js +1 -1
  114. package/dist/index.js +1 -1
  115. package/dist/integrations/beam.esm.js +1 -1
  116. package/dist/integrations/beam.js +1 -1
  117. package/dist/integrations/cart.esm.js +1 -1
  118. package/dist/integrations/cart.js +1 -1
  119. package/dist/integrations/index.esm.js +1 -1
  120. package/dist/integrations/index.js +1 -1
  121. package/dist/integrations/logs.esm.js +1 -1
  122. package/dist/integrations/logs.js +1 -1
  123. package/dist/integrations/session.esm.js +1 -1
  124. package/dist/integrations/session.js +1 -1
  125. package/dist/integrations/shopify.esm.js +1 -1
  126. package/dist/integrations/shopify.js +1 -1
  127. package/dist/integrations/statsig.esm.js +1 -1
  128. package/dist/integrations/statsig.js +1 -1
  129. package/dist/react/beam-partner-logos.esm.js +1 -1
  130. package/dist/react/beam-partner-logos.js +1 -1
  131. package/dist/react/community-impact.esm.js +1 -1
  132. package/dist/react/community-impact.js +1 -1
  133. package/dist/react/cumulative-impact.esm.js +1 -1
  134. package/dist/react/cumulative-impact.js +1 -1
  135. package/dist/react/impact-overview.esm.js +1 -1
  136. package/dist/react/impact-overview.js +1 -1
  137. package/dist/react/index.esm.js +1 -1
  138. package/dist/react/index.js +1 -1
  139. package/dist/react/post-purchase.esm.js +1 -1
  140. package/dist/react/post-purchase.esm.js.map +1 -1
  141. package/dist/react/post-purchase.js +1 -1
  142. package/dist/react/post-purchase.js.map +1 -1
  143. package/dist/react/product-details-page.esm.js +1 -1
  144. package/dist/react/product-details-page.js +1 -1
  145. package/dist/react/redeem-transaction.esm.js +1 -1
  146. package/dist/react/redeem-transaction.esm.js.map +1 -1
  147. package/dist/react/redeem-transaction.js +1 -1
  148. package/dist/react/redeem-transaction.js.map +1 -1
  149. package/dist/react/select-nonprofit.esm.js +1 -1
  150. package/dist/react/select-nonprofit.js +1 -1
  151. package/dist/react/select-subscription-nonprofit.esm.js +1 -1
  152. package/dist/react/select-subscription-nonprofit.esm.js.map +1 -1
  153. package/dist/react/select-subscription-nonprofit.js +1 -1
  154. package/dist/react/select-subscription-nonprofit.js.map +1 -1
  155. package/dist/react/social-share.esm.js +1 -1
  156. package/dist/react/social-share.js +1 -1
  157. package/dist/react/subscription-impact.esm.js +1 -1
  158. package/dist/react/subscription-impact.js +1 -1
  159. package/dist/react/subscription-management.esm.js +1 -1
  160. package/dist/react/subscription-management.esm.js.map +1 -1
  161. package/dist/react/subscription-management.js +1 -1
  162. package/dist/react/subscription-management.js.map +1 -1
  163. package/package.json +1 -1
  164. package/dist/chunks/_share-dialog-dependencies-6qxEKq8s.esm.js +0 -2
  165. package/dist/chunks/_share-dialog-dependencies-6qxEKq8s.esm.js.map +0 -1
  166. package/dist/chunks/_share-dialog-dependencies-a05NZJ6I.esm.js +0 -2
  167. package/dist/chunks/_share-dialog-dependencies-a05NZJ6I.esm.js.map +0 -1
  168. package/dist/chunks/checkbox-P2JYPqxl.esm.js +0 -17
  169. package/dist/chunks/checkbox-P2JYPqxl.esm.js.map +0 -1
  170. package/dist/chunks/index-2fgoYcug.esm.js +0 -2
  171. package/dist/chunks/index-2fgoYcug.esm.js.map +0 -1
  172. package/dist/chunks/index-4mQhPzhb.esm.js +0 -2
  173. package/dist/chunks/index-4mQhPzhb.esm.js.map +0 -1
  174. package/dist/chunks/index-BL75MsEt.esm.js +0 -2
  175. package/dist/chunks/index-BL75MsEt.esm.js.map +0 -1
  176. package/dist/chunks/index-MewTlHYO.esm.js +0 -2
  177. package/dist/chunks/index-MewTlHYO.esm.js.map +0 -1
  178. package/dist/chunks/index-mbNUaby9.esm.js +0 -2
  179. package/dist/chunks/index-mbNUaby9.esm.js.map +0 -1
  180. package/dist/chunks/index-vNBrw3_d.esm.js +0 -2
  181. package/dist/chunks/index-vNBrw3_d.esm.js.map +0 -1
  182. package/dist/chunks/loading-template-mLjOGXMj.esm.js +0 -2
  183. package/dist/chunks/localize-IRs8JglT.esm.js +0 -29
  184. package/dist/chunks/localize-IRs8JglT.esm.js.map +0 -1
  185. package/dist/chunks/localize-SsJbTmMj.esm.js +0 -29
  186. package/dist/chunks/localize-SsJbTmMj.esm.js.map +0 -1
  187. package/dist/chunks/promo-pill-label-81dVN7VY.esm.js +0 -15
  188. package/dist/chunks/share-button-CqTd80g8.esm.js +0 -2
  189. package/dist/chunks/share-button-CqTd80g8.esm.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"select-nonprofit.js","sources":["../../src/shared/components/notification-blip.ts","../../src/components/select-nonprofit/strings.ts","../../src/components/select-nonprofit/index.ts"],"sourcesContent":["import { LitElement, html, css } from \"lit\";\n\nclass BeamNotificationBlip extends LitElement {\n static get styles() {\n return css`\n :host {\n position: relative;\n }\n\n .notification-blip {\n position: absolute;\n top: -12px;\n right: -4px;\n background-color: var(--beam-notificationBlip-color-background, #000);\n border-radius: 50%;\n width: 12px;\n height: 12px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 12px;\n }\n `;\n }\n\n render() {\n return html`<div class=\"notification-blip-container\" aria-label=\"Notification Blip\">\n <span class=\"notification-blip\" role=\"button\" tabindex=\"0\" aria-hidden=\"true\"></span>\n </div>`;\n }\n}\n\ncustomElements.get(\"beam-notification-blip\") || customElements.define(\"beam-notification-blip\", BeamNotificationBlip);\n\nexport const notificationBlipConfigDefaults = {\n \"--beam-notificationBlip-color-background\": \"#000\",\n} as const;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-notification-blip\": BeamNotificationBlip;\n }\n}\n","export const strings = {\n en: {\n beamAttribution: () => `Powered by Beam`,\n ctaTitle: () => `Choose your impact`,\n ctaPromoPrefixMessage: () => `At no extra cost,`,\n ctaPromoMessage: ({ donationPercentage = \"1\" } = {}) =>\n `select a nonprofit and ${donationPercentage}% of your purchase will be donated.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Select a nonprofit and ${donationPercentage}% of your purchase will be donated, at no extra cost.`,\n inlineSeparator: () => `: `,\n },\n fr: {\n beamAttribution: () => `Optimisé par Beam`,\n ctaTitle: () => `Choisissez votre cause`,\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Choisissez un organisme à but non lucratif et ${donationPercentage} % lui sera versé en votre nom, sans frais supplémentaires.`,\n inlineSeparator: () => ` : `,\n },\n de: {\n beamAttribution: () => `Unterstützt von Beam`,\n ctaTitle: () => `Wähle deinen Impact`,\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Wähle eine der gemeinnützigen Organisationen und spende ${donationPercentage}% deines Einkaufs ohne zusätzliche Kosten`,\n inlineSeparator: () => `: `,\n },\n es: {\n beamAttribution: () => \"Ofrecido por Beam\",\n ctaTitle: () => \"Elige tu contribución\",\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Elige una organización sin fines de lucro y donaremos ${donationPercentage}% de tu compra sin coste adicional.`,\n inlineSeparator: () => \": \",\n },\n it: {\n beamAttribution: () => \"Gestito da Beam\",\n ctaTitle: () => \"Scegli dove fare la differenza\",\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Seleziona un'organizzazione no-profit a cui devolvere l’${donationPercentage}% del tuo acquisto, senza costi aggiuntivi`,\n inlineSeparator: () => \": \",\n },\n pl: {\n beamAttribution: () => `Wspierany przez Beam`,\n ctaTitle: () => `Wybierz inicjatywę, którą chcesz wesprzeć`,\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Wybierz organizację, której przekażesz ${donationPercentage}% wartości Twoich zakupów – bez żadnych dodatkowych kosztów!`,\n inlineSeparator: () => `: `,\n },\n};\n","import { css, html, LitElement, PropertyValues } from \"lit\";\nimport { repeat } from \"lit/directives/repeat.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport { property } from \"lit/decorators/property.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport debounce from \"lodash-es/debounce\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES, WIDGET_NAMES } from \"../../api-sdk/constants\";\nimport \"../../shared/components/progress-bar\";\nimport \"../../shared/components/promo-pill-label\";\nimport \"../../shared/components/notification-blip\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { _loading } from \"../../shared/fragments/loading-template\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { defineCustomText, useCustomText } from \"../../shared/fragments/custom-text\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { _cssVariableMap } from \"../../shared/fragments/css-variable-map\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { isEqual, logger } from \"../../utils\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { TNumericId } from \"../../shared/types\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { postChainEligibleNonprofitsForCart, postSelectNonprofit } from \"../../api-sdk/v3/routes\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { BeamCartChangeEvent, BeamNonprofitSelectEvent, BeamNonprofitSelectionRemovedEvent } from \"../../utils/events\";\nimport { localizeUserString } from \"../../shared/localize\";\nimport { progressBarConfigDefaults } from \"../../shared/components/progress-bar\";\nimport { cssResponsiveUtils } from \"../../shared/responsive\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { notificationBlipConfigDefaults } from \"../../shared/components/notification-blip\";\nimport { promoPillLabelConfigDefaults } from \"../../shared/components/promo-pill-label\";\nimport { getBeamCartId, getExternalCartId } from \"../../utils/cart\";\nimport { strings } from \"./strings\";\n\ninterface RequiredConfig {\n apiKey: string;\n storeId: TNumericId; // Can be set async by postalCode + countryCode lookup\n}\n\nexport class BeamSelectNonprofit extends LitElement {\n static tagName = \"beam-select-nonprofit\";\n\n @property({ type: String }) public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String }) public apiKey?: RequiredConfig[\"apiKey\"];\n\n // storeId can be omitted if countryCode + postalCode are provided\n @property({ type: Number, reflect: true }) public storeId?: TNumericId;\n\n @property({ type: String }) public countryCode?: string;\n\n @property({ type: String }) public postalCode?: string;\n\n @property({ attribute: false, hasChanged: (a, b) => !isEqual(a, b) }) public cart?: TCart;\n\n @property({ type: Number, reflect: true }) public selectedNonprofitId: TNumericId | null = null;\n\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n\n @property({ type: Boolean }) public debug = false;\n\n @property({ type: Boolean }) public draftConfig = false;\n\n @state() private isMobile = window.innerWidth < 768;\n\n private enableNonprofitDeselection = false;\n\n private selectionId?: string;\n\n private didTryToCreateNewSelectionFromCache = false; // Should only create selection once\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n private getChainNonprofits = async () => {\n if (!enforceConfig<RequiredConfig>([\"apiKey\"], this)) {\n throw new MissingConfig();\n }\n\n const cart: any = this.cart?.content\n ? {\n schema: this.cart?.schema,\n content: this.cart?.content,\n }\n : undefined;\n\n // We use a POST method because we send a nested JSON with data that we don't want to serialize/expose in URL\n const res = await postChainEligibleNonprofitsForCart({\n baseUrl: this.baseUrl,\n apiRoot: \"/api/v3\",\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n storeId: this.storeId,\n widgetName: WIDGET_NAMES.select_nonprofit,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n version: \"1.0.0\",\n lang: this.configLang,\n options: {\n config: {\n draftConfig: this.draftConfig,\n },\n },\n cart,\n },\n });\n\n this.enableNonprofitDeselection = !!res.config.enableNonprofitDeselection;\n\n // Reset selection if list doesn't include the current selected nonprofit and if it's not set to null\n if (\n this.selectedNonprofitId !== null &&\n this.selectedNonprofitId &&\n !res.nonprofits.map((np) => np.nonprofit.id).includes(this.selectedNonprofitId)\n ) {\n this.selectedNonprofitId = null;\n await this.postSelectNonprofit({ selectedNonprofitId: null });\n this.localStorage.setItem(\"nonprofit\", null);\n }\n\n // If store ID was not provided, get the store ID from response here\n if (res.store?.id && res.store.id !== this.storeId) {\n this.storeId = res.store.id;\n }\n\n await this.createNewSelectionForCachedNonprofit();\n\n this.localStorage.setItemJson(\"chainNonprofits\", {\n createdAt: new Date(),\n data: res,\n });\n\n return res;\n };\n\n private postSelectNonprofit = async ({ selectedNonprofitId }: { selectedNonprofitId: TNumericId | null }) => {\n if (!enforceConfig<RequiredConfig>([\"apiKey\", \"storeId\"], this)) {\n throw new MissingConfig();\n }\n\n const cartId = getExternalCartId(\"cart\", { apiKey: this.apiKey });\n const beamCartId = getBeamCartId(BEAM_CART_COOKIE_NAME, { apiKey: this.apiKey });\n const result = await postSelectNonprofit({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n nonprofitId: selectedNonprofitId,\n selectionId: this.selectionId,\n storeId: this.storeId,\n cartId: cartId ? cartId : undefined,\n beamCartId: beamCartId ? beamCartId : undefined,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n },\n });\n\n this.selectionId = result?.selectionId;\n this.localStorage.setItem(\"transaction\", this.selectionId);\n this.localStorage.setItem(\"nonprofit\", selectedNonprofitId);\n this.localStorage.setItem(\"nonprofit_selected_at\", new Date().toISOString());\n\n await this.updateComplete;\n\n const selectedNonprofit = this.getNonprofitById(selectedNonprofitId);\n\n if (selectedNonprofitId !== null)\n this.dispatchEvent(\n new BeamNonprofitSelectEvent({\n selectedNonprofitId,\n selectionId: this.selectionId,\n nonprofitName: selectedNonprofit?.nonprofit?.name ?? null,\n source: WIDGET_NAMES.select_nonprofit,\n })\n );\n if (selectedNonprofitId && selectedNonprofitId !== null)\n new BeamNonprofitSelectionRemovedEvent({\n newNonprofitId: null,\n selectionId: this.selectionId,\n });\n };\n\n private nonprofitListDataController = new AsyncController<typeof this.getChainNonprofits>(\n this,\n this.getChainNonprofits\n );\n\n private selectionDataController = new AsyncController<typeof this.postSelectNonprofit>(\n this,\n this.postSelectNonprofit\n );\n\n private localStorage = createScopedLocalStorage(this as LitElement & RequiredConfig);\n\n private getNonprofitById(selectedNonprofitId: number | null) {\n if (!selectedNonprofitId) return null;\n return this.nonprofitListDataController?.data?.nonprofits.find((np) => np.nonprofit.id === selectedNonprofitId);\n }\n\n private handleCartChange = (evt: BeamCartChangeEvent) => {\n this.cart = evt.detail;\n };\n\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener(BeamCartChangeEvent.eventName, this.handleCartChange as EventListener);\n window.addEventListener(\"resize\", this.evaluateBreakPoints);\n }\n\n async firstUpdated(_changedProperties: PropertyValues) {\n await this.restoreStateFromCache();\n }\n\n async updated(previousPropertyValues: PropertyValues) {\n // Reload nonprofit list on change of any of these props:\n // Also fires on first load as props go from undefined => value\n const requireNewDataProps = [\"baseUrl\", \"storeId\", \"apiKey\", \"countryCode\", \"postalCode\", \"cart\", \"lang\"];\n for (const prop of requireNewDataProps) {\n if (previousPropertyValues.has(prop)) {\n await this.nonprofitListDataController.exec();\n break;\n }\n }\n }\n\n disconnectedCallback() {\n window.removeEventListener(BeamCartChangeEvent.eventName, this.handleCartChange as EventListener);\n super.disconnectedCallback();\n }\n\n private async restoreStateFromCache() {\n try {\n const currentTimestamp = new Date().valueOf();\n\n this.cart = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\") ?? undefined;\n\n // Restore the previous nonprofit selection unless it exceeds the defined time limit, in which case clear the selection\n // (Note: localStorage key is called \"transaction\" for backwards compatibility with legacy SDK)\n const selectionTtl = 30 * 24 * 60 * 60 * 1000; // 30 days in milliseconds\n const selectionCreatedAt = this.localStorage.getItem(\"nonprofit_selected_at\") ?? 0;\n const isSelectionExpired = currentTimestamp > new Date(selectionCreatedAt).valueOf() + selectionTtl;\n if (!isSelectionExpired) {\n this.selectedNonprofitId = parseInt(this.localStorage.getItem(\"nonprofit\") || \"\") || null;\n this.selectionId = this.localStorage.getItem(\"transaction\") ?? undefined;\n } else if (isSelectionExpired && this.selectedNonprofitId !== null) {\n await this.postSelectNonprofit({ selectedNonprofitId: null });\n this.localStorage.setItem(\"nonprofit\", null);\n }\n\n // Try to restore nonprofit list if we have data and it's not too old\n // list will continue to refresh async and replace this data when ready\n const { createdAt = 0, data } =\n this.localStorage.getItemJson<{ createdAt: string; data: any }>(\"chainNonprofits\") || {};\n const cacheTtl = 2 * 60 * 60 * 1000; // 2 hours in milliseconds\n const isCacheExpired = currentTimestamp > new Date(createdAt).valueOf() + cacheTtl;\n if (!isCacheExpired) {\n this.nonprofitListDataController.data = data;\n this.nonprofitListDataController.loading = false;\n }\n } catch (err) {\n logger.error(err);\n // ignore cache retrieval error and continue to fetch data\n }\n }\n\n private async createNewSelectionForCachedNonprofit() {\n if (!enforceConfig<RequiredConfig>([\"apiKey\"], this)) {\n throw new MissingConfig();\n }\n if (!this.storeId || this.didTryToCreateNewSelectionFromCache) {\n return; // storeId can be set async as a result of calling find nonprofits with postalCode + zipCode\n }\n try {\n // Immediately set flag to prevent more cache restore attempts from triggering\n this.didTryToCreateNewSelectionFromCache = true;\n\n // Create a new selection ID for the session (e.g., if restoring nonprofit after a completed order)\n\n if (this.selectedNonprofitId) {\n if (!this.selectionId) {\n await this.selectionDataController.exec({ selectedNonprofitId: this.selectedNonprofitId });\n }\n const selectedNonprofit = this.getNonprofitById(this.selectedNonprofitId);\n this.dispatchEvent(\n new BeamNonprofitSelectEvent({\n selectedNonprofitId: this.selectedNonprofitId,\n selectionId: this.selectionId,\n nonprofitName: selectedNonprofit?.nonprofit?.name,\n source: WIDGET_NAMES.select_nonprofit,\n })\n );\n }\n } catch (err) {\n // Ignore error\n }\n }\n\n /**\n * Factory for selection event handler\n *\n * Nonprofit selector implements radio-button semantics:\n * * If nothing is selected, tabbing into selector selects first card\n * * Arrow keys changes focus between cards, but doesn't select\n * * Enter/Space sets selection\n * * If a nonprofit is selected, arrow keys change focus AND selection\n * * Click sets selection\n * @param {number} id\n * @param {number} index\n * @param {{id: number}[]} nonprofits\n * @returns {(evt: Event) => void}\n */\n private makeHandleSelect =\n (id: number, index: number, nonprofits: { nonprofit: { id: number } }[]) => async (evt: Event) => {\n const currentId = this.selectedNonprofitId;\n if (evt instanceof KeyboardEvent) {\n let nextFocus = null;\n switch (evt.key) {\n case \"ArrowUp\":\n case \"ArrowLeft\":\n if (index === 0) {\n nextFocus = nonprofits[nonprofits.length - 1];\n } else {\n nextFocus = nonprofits[index - 1];\n }\n evt.preventDefault();\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n if (index === nonprofits.length - 1) {\n nextFocus = nonprofits[0];\n } else {\n nextFocus = nonprofits[index + 1];\n }\n evt.preventDefault();\n break;\n case \"Enter\":\n case \" \":\n evt.preventDefault();\n break; // continue to toggle-selection block below\n default:\n return;\n }\n if (nextFocus) {\n if (currentId != null) {\n this.selectedNonprofitId = nextFocus.nonprofit.id;\n }\n const focusTarget = this.renderRoot.querySelector(`[data-value=\"${nextFocus.nonprofit.id}\"]`) as HTMLElement;\n if (focusTarget !== null) {\n focusTarget.tabIndex = 0;\n focusTarget.focus();\n }\n return;\n }\n }\n // Handle selection with click or Enter/Space key\n const targetEl = evt.currentTarget;\n if (targetEl instanceof HTMLElement) {\n if (currentId === id) {\n if (this.enableNonprofitDeselection) {\n this.selectedNonprofitId = null; // unset\n await this.postSelectNonprofit({ selectedNonprofitId: null });\n this.localStorage.setItem(\"nonprofit\", null);\n } else {\n return;\n }\n } else {\n this.selectedNonprofitId = id;\n }\n }\n await this.selectionDataController.exec({ selectedNonprofitId: this.selectedNonprofitId });\n };\n\n evaluateBreakPoints = debounce(\n () => {\n this.isMobile = window.innerWidth < 768;\n },\n 50,\n { maxWait: 50, leading: true }\n );\n\n public get cssVariables() {\n const defaults = {\n \"--beam-fontFamily\": \"inherit\",\n \"--beam-fontStyle\": \"inherit\",\n \"--beam-fontSize\": \"inherit\",\n \"--beam-textColor\": \"inherit\",\n \"--beam-backgroundColor\": \"inherit\",\n ...progressBarConfigDefaults,\n \"--beam-SelectNonprofit-title-textAlign\": \"inherit\",\n \"--beam-SelectNonprofit-description-textAlign\": \"inherit\",\n \"--beam-SelectNonprofit-maxWidth\": \"800px\",\n \"--beam-SelectNonprofit-options-marginTop\": \"0px\",\n \"--beam-SelectNonprofit-options-iconHeight\": \"24px\",\n \"--beam-SelectNonprofit-options-padding\": \"10px\",\n \"--beam-SelectNonprofit-options-borderRadius\": \"0px\",\n \"--beam-SelectNonprofit-options-borderColor\": \"currentColor\",\n \"--beam-SelectNonprofit-options--selected-borderColor\": \"currentColor\",\n \"--beam-SelectNonprofit-options-backgroundColor\": \"transparent\",\n \"--beam-SelectNonprofit-options-gap\": \"8px\",\n \"--beam-SelectNonprofit-options--selected-backgroundColor\": \"currentColor\",\n \"--beam-SelectNonprofit-details-marginTop\": \"10px\",\n \"--beam-SelectNonprofit-details-borderRadius\": \"0px\",\n \"--beam-SelectNonprofit-details-borderColor\": \"currentColor\",\n \"--beam-SelectNonprofit-details-backgroundColor\": \"inherit\",\n \"--beam-SelectNonprofit-details-padding\": \"10px\",\n ...defineCustomText(\"--beam-SelectNonprofit-title\", {\n fontSize: \"1.25em\",\n fontWeight: \"bold\",\n }),\n \"--beam-SelectNonprofit-header-inline-lineHeight\": \"inherit\",\n ...defineCustomText(\"--beam-SelectNonprofit-title-inline\", {\n fontWeight: \"bold\",\n }),\n \"--beam-SelectNonprofit-title-inline-textTransform\": \"none\",\n \"--beam-SelectNonprofit-title-block-margin-right\": \"8px\",\n ...defineCustomText(\"--beam-SelectNonprofit-description\", {\n marginTop: \"0.5em\",\n }),\n ...defineCustomText(\"--beam-SelectNonprofit-description-inline\"),\n ...defineCustomText(\"--beam-SelectNonprofit-details-cause\", {\n fontSize: \"0.85em\",\n fontWeight: \"bold\",\n }),\n ...defineCustomText(\"--beam-SelectNonprofit-details-beamAttribution\", {\n fontSize: \"0.85em\",\n }),\n ...defineCustomText(\"--beam-SelectNonprofit-details-impactDescription\", {\n fontSize: \"1em\",\n marginTop: \"10px\",\n }),\n \"--beam-SelectNonprofit-details-nonprofitName-fontWeight\": \"bold\",\n \"--beam-SelectNonprofit-details-nonprofitName-fontStyle\": \"inherit\",\n \"--beam-SelectNonprofit-details-fundingProgress-marginTop\": \"10px\",\n ...defineCustomText(\"--beam-SelectNonprofit-details-fundingProgressLabel\", {\n fontSize: \"0.85em\",\n }),\n ...notificationBlipConfigDefaults,\n ...promoPillLabelConfigDefaults,\n \"--beam-SelectNonprofit-promo-block-header-justifyContent\": \"initial\",\n };\n\n const remoteConfig = this.nonprofitListDataController?.data?.config?.web?.theme || {};\n\n const config = { ...defaults, ...remoteConfig };\n\n const serializable = Object.create({\n toCSS() {\n return _cssVariableMap(this as Record<string, string>);\n },\n });\n\n return Object.assign(serializable, config);\n }\n\n static styles = [\n cssReset,\n cssResponsiveUtils,\n css`\n :host {\n display: block;\n max-width: var(--beam-SelectNonprofit-maxWidth, 800px);\n font-family: var(--beam-fontFamily);\n font-style: var(--beam-fontStyle);\n font-size: var(--beam-fontSize);\n background-color: var(--beam-backgroundColor);\n color: var(--beam-textColor);\n word-break: normal;\n }\n\n .details-impactDescription {\n ${useCustomText(\"--beam-SelectNonprofit-details-impactDescription\")}\n }\n\n .details-impactDescription .nonprofitName {\n font-weight: var(--beam-SelectNonprofit-details-nonprofitName-fontWeight);\n font-style: var(--beam-SelectNonprofit-details-nonprofitName-fontStyle, inherit);\n }\n\n /* Note: title/description display is responsive */\n\n .title-block {\n margin-right: var(--beam-SelectNonprofit-title-block-margin-right);\n ${useCustomText(\"--beam-SelectNonprofit-title\")}\n text-align: var(--beam-SelectNonprofit-title-textAlign);\n }\n\n .header-inline {\n line-height: var(--beam-SelectNonprofit-header-inline-lineHeight);\n }\n\n .title-inline {\n font-size: var(--beam-SelectNonprofit-title-inline-fontSize);\n font-weight: var(--beam-SelectNonprofit-title-inline-fontWeight);\n color: var(--beam-SelectNonprofit-title-inline-color);\n font-family: var(--beam-SelectNonprofit-title-inline-fontFamily);\n text-transform: var(--beam-SelectNonprofit-title-inline-textTransform);\n }\n\n .description-inline {\n font-family: var(--beam-SelectNonprofit-description-inline-fontFamily);\n font-weight: var(--beam-SelectNonprofit-description-inline-fontWeight);\n color: var(--beam-SelectNonprofit-description-inline-color);\n text-transform: var(--beam-SelectNonprofit-description-inline-textTransform);\n font-size: var(--beam-SelectNonprofit-description-inline-fontSize);\n }\n\n .description {\n ${useCustomText(\"--beam-SelectNonprofit-description\")}\n text-align: var(--beam-SelectNonprofit-description-textAlign);\n }\n\n .block-header-promo-pill-container {\n display: flex;\n align-items: center;\n justify-content: var(--beam-SelectNonprofit-promo-block-header-justifyContent);\n }\n\n .block-header-promo-pill-container-responsive {\n flex-direction: column;\n align-items: flex-start;\n }\n .block-header-promo-pill-container-responsive beam-promo-info-pill {\n order: -1;\n }\n `,\n ];\n\n protected render() {\n const { selectedNonprofitId } = this;\n const { data, loading } = this.nonprofitListDataController;\n\n if (loading && !data) {\n // TODO: better loading UI\n return _loading(); // TODO: css theme first\n }\n if (this.nonprofitListDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.nonprofitListDataController.error });\n }\n return \"\";\n }\n if (this.selectionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.selectionDataController.error });\n }\n // do not show error screen for interactive errors by default\n }\n const nonprofits = data?.nonprofits || [];\n const selectedNonprofit = nonprofits.find((np) => np.nonprofit.id === selectedNonprofitId) || null;\n const shouldUseNewPromoUI = !!data?.config?.web?.promo;\n const hasNonprofitWithInactivePromo = nonprofits.some((nonprofit) => !nonprofit.promo || !nonprofit.promo.isActive);\n const defaultHeader = html`<h3 class=\"title-block d-none d-lg-block\" part=\"title\" id=\"beam-SelectNonprofit-title\">\n ${localizeUserString(this.configLang, data?.config?.web?.title || \"\") || strings[this.configLang].ctaTitle()}\n </h3>`;\n const renderHeader = () => {\n return shouldUseNewPromoUI\n ? html`<div\n class=\"${this.isMobile\n ? \"block-header-promo-pill-container-responsive\"\n : \"block-header-promo-pill-container\"}\"\n style=\"${this.isMobile ? \"display: flex\" : \"\"}\"\n >\n ${defaultHeader}\n <beam-promo-info-pill .promo=${data?.config?.web?.promo}></beam-promo-info-pill>\n </div>`\n : defaultHeader;\n };\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n <div part=\"heading\">\n ${renderHeader()}\n <p class=\"description\" part=\"description\">\n <span class=\"d-none d-lg-inline\">\n ${\n shouldUseNewPromoUI\n ? html`<span style=\"font-weight:bold\">\n ${localizeUserString(this.configLang, data?.config?.web?.promoDescriptionPrefix || \"\") ||\n strings[this.configLang].ctaPromoPrefixMessage()}\n </span>\n <span>\n ${localizeUserString(this.configLang, data?.config?.web?.promoDescription || \"\") ||\n strings[this.configLang].ctaPromoMessage()}\n </span>`\n : html`<span>\n ${localizeUserString(this.configLang, data?.config?.web?.description || \"\") ||\n strings[this.configLang].ctaMessage()}\n </span>`\n }\n </span>\n <div class=\"d-lg-none header-inline\">\n <span class=\"title-inline\" part=\"title\">\n ${\n (localizeUserString(this.configLang, data?.config?.web?.title || \"\") ||\n strings[this.configLang].ctaTitle()) + strings[this.configLang].inlineSeparator()\n }\n </span>\n <span class=\"description-inline\" part=\"description\">\n ${\n shouldUseNewPromoUI\n ? html`<span style=\"font-weight:bold\">\n ${localizeUserString(this.configLang, data?.config?.web?.promoDescriptionPrefix || \"\") ||\n strings[this.configLang].ctaPromoPrefixMessage()}\n </span>\n <span>\n ${localizeUserString(this.configLang, data?.config?.web?.promoDescription || \"\") ||\n strings[this.configLang].ctaPromoMessage()}\n </span>`\n : html`<span\n >${localizeUserString(this.configLang, data?.config?.web?.description || \"\") ||\n strings[this.configLang].ctaMessage()}\n </span>`\n }\n </div>\n </p>\n </div>\n <div\n class=\"options\"\n part=\"options\"\n role=\"radiogroup\"\n aria-labelledby=\"beam-SelectNonprofit-title\"\n style=\"display: flex; gap: var(--beam-SelectNonprofit-options-gap); margin: 10px 0 0 0;\"\n >\n ${repeat(\n nonprofits,\n (i) => i.nonprofit.id,\n ({ nonprofit, promo }, index) => {\n const isSelected = selectedNonprofitId === nonprofit.id;\n const isFocusable = isSelected || (selectedNonprofit == null && index === 0);\n const shouldAddPromoBlip = promo?.isActive && data?.config.web.promo && hasNonprofitWithInactivePromo;\n return html`\n <div\n class=\"option\"\n part=\"option\"\n role=\"radio\"\n tabindex=\"${isFocusable ? 0 : -1}\"\n data-value=${nonprofit.id}\n aria-checked=${isSelected}\n @click=${this.makeHandleSelect(nonprofit.id, index, nonprofits)}\n @keydown=${this.makeHandleSelect(nonprofit.id, index, nonprofits)}\n aria-label=\"${localizeUserString(this.configLang, nonprofit.cause || \"\")}\"\n style=\"${styleMap({\n cursor: \"pointer\",\n flex: \"1\",\n textAlign: \"center\",\n lineHeight: \"1\",\n marginTop: \"var(--beam-SelectNonprofit-options-marginTop, 0px)\",\n padding: \"var(--beam-SelectNonprofit-options-padding, 10px)\",\n borderWidth: \"var(--beam-SelectNonprofit-options-borderWidth, 1px)\",\n borderStyle: \"solid\",\n borderRadius: \"var(--beam-SelectNonprofit-options-borderRadius, 0)\",\n borderColor: isSelected\n ? nonprofit.causeColor || \"var(--beam-SelectNonprofit-options--selected-borderColor, currentColor)\"\n : \"var(--beam-SelectNonprofit-options-borderColor, currentColor)\",\n backgroundColor: isSelected\n ? nonprofit.causeColor ||\n \"var(--beam-SelectNonprofit-options--selected-backgroundColor, currentColor)\"\n : \"var(--beam-SelectNonprofit-options-backgroundColor, transparent)\",\n })}\"\n >\n <img\n src=\"${isSelected ? nonprofit.causeIconSelectedUrl : nonprofit.causeIconUrl}\"\n alt=\"\"\n role=\"presentation\"\n style=\"\n height: var(--beam-SelectNonprofit-options-iconHeight, 24px);\n user-select: none;\n vertical-align: -webkit-baseline-middle;\n \"\n />\n ${shouldAddPromoBlip ? html`<beam-notification-blip></beam-notification-blip>` : html``}\n </div>\n `;\n }\n )}\n </div>\n ${\n selectedNonprofit != null\n ? html`\n <div\n class=\"details\"\n part=\"details\"\n style=\"\n border: 1px solid var(--beam-SelectNonprofit-details-borderColor);\n border-radius: var(--beam-SelectNonprofit-details-borderRadius);\n background-color: var(--beam-SelectNonprofit-details-backgroundColor);\n padding: var(--beam-SelectNonprofit-details-padding);\n margin-top: var(--beam-SelectNonprofit-details-marginTop);\n \"\n aria-label=\"Funding information for selected nonprofit ${selectedNonprofit.nonprofit\n ?.name}. Powered by Beam\"\n >\n <div\n style=\"display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap-reverse\"\n >\n <span\n class=\"details-cause\"\n style=\"flex: 0 1; white-space: nowrap; ${useCustomText(\"--beam-SelectNonprofit-details-cause\")}\"\n >\n ${selectedNonprofit?.promo?.isActive && hasNonprofitWithInactivePromo\n ? data?.config.web.promo?.[\"promo-cause-alt-text\"] || selectedNonprofit.nonprofit.cause\n : localizeUserString(this.configLang, selectedNonprofit.nonprofit.cause || \"\")}\n </span>\n <div aria-hidden=\"true\">\n <span\n class=\"details-beamAttribution\"\n aria-hidden=\"true\"\n style=\"flex: 0 1; white-space: nowrap; ${useCustomText(\n \"--beam-SelectNonprofit-details-beamAttribution\"\n )}\"\n >\n ${strings[this.configLang].beamAttribution()}\n </span>\n </div>\n </div>\n <p class=\"details-impactDescription\">\n ${unsafeHTML(localizeUserString(this.configLang, selectedNonprofit.impact.description || \"\"))}\n </p>\n <div\n style=\"display: flex; margin-top: var(--beam-SelectNonprofit-details-fundingProgress-marginTop); align-items: center;\"\n >\n <beam-progress-bar\n value=\"${selectedNonprofit.impact.goalProgressPercentage}\"\n style=\"flex: 1 0;\"\n ></beam-progress-bar>\n <span\n class=\"details-fundingProgressLabel\"\n style=\"${useCustomText(\n \"--beam-SelectNonprofit-details-fundingProgressLabel\"\n )} white-space: nowrap; text-align: right; flex: 0 1; margin-left: 15px;\"\n >\n ${localizeUserString(this.configLang, selectedNonprofit.impact.goalProgressText)}\n </span>\n </div>\n </div>\n `\n : \"\"\n }\n `;\n }\n}\n\ndefineCustomElement(BeamSelectNonprofit);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-select-nonprofit\": BeamSelectNonprofit;\n }\n}\n"],"names":["BeamNotificationBlip","LitElement","css","html","notificationBlipConfigDefaults","strings","donationPercentage","E","A","s","u","m","t","e","i","BeamSelectNonprofit","DEFAULT_BASE_URL","enforceConfig","cart","res","postChainEligibleNonprofitsForCart","WIDGET_NAMES","np","selectedNonprofitId","cartId","getExternalCartId","beamCartId","getBeamCartId","BEAM_CART_COOKIE_NAME","result","postSelectNonprofit","selectedNonprofit","BeamNonprofitSelectEvent","BeamNonprofitSelectionRemovedEvent","AsyncController","createScopedLocalStorage","evt","id","index","nonprofits","currentId","nextFocus","focusTarget","debounce","SUPPORTED_LANGUAGES","BeamCartChangeEvent","_changedProperties","previousPropertyValues","requireNewDataProps","prop","currentTimestamp","selectionTtl","selectionCreatedAt","isSelectionExpired","createdAt","data","cacheTtl","err","logger","defaults","progressBarConfigDefaults","defineCustomText","promoPillLabelConfigDefaults","remoteConfig","config","_cssVariableMap","loading","_loading","_errorMessage","shouldUseNewPromoUI","hasNonprofitWithInactivePromo","nonprofit","defaultHeader","localizeUserString","renderHeader","repeat","promo","isSelected","isFocusable","shouldAddPromoBlip","styleMap","useCustomText","unsafeHTML","cssReset","cssResponsiveUtils","__decorateClass","property","a","b","isEqual","state","defineCustomElement"],"mappings":"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"}
1
+ {"version":3,"file":"select-nonprofit.js","sources":["../../src/shared/components/notification-blip.ts","../../src/components/select-nonprofit/strings.ts","../../src/components/select-nonprofit/index.ts"],"sourcesContent":["import { LitElement, html, css } from \"lit\";\n\nclass BeamNotificationBlip extends LitElement {\n static get styles() {\n return css`\n :host {\n }\n\n .notification-blip {\n background-color: var(--beam-notificationBlip-color-background, #000);\n border-radius: 50%;\n width: 12px;\n height: 12px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 12px;\n }\n `;\n }\n\n render() {\n return html`<div\n class=\"notification-blip-container\"\n part=\"notification-blip-container\"\n aria-label=\"Notification Blip\"\n >\n <span class=\"notification-blip\" part=\"notification-blip\" role=\"button\" tabindex=\"0\" aria-hidden=\"true\"></span>\n </div>`;\n }\n}\n\ncustomElements.get(\"beam-notification-blip\") || customElements.define(\"beam-notification-blip\", BeamNotificationBlip);\n\nexport const notificationBlipConfigDefaults = {\n \"--beam-notificationBlip-color-background\": \"#000\",\n} as const;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-notification-blip\": BeamNotificationBlip;\n }\n}\n","export const strings = {\n en: {\n beamAttribution: () => `Powered by Beam`,\n ctaTitle: () => `Choose your impact`,\n ctaPromoPrefixMessage: () => `At no extra cost,`,\n ctaPromoMessage: ({ donationPercentage = \"1\" } = {}) =>\n `select a nonprofit and ${donationPercentage}% of your purchase will be donated.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `At no extra cost, select a nonprofit and ${donationPercentage}% of your purchase will be donated.`,\n inlineSeparator: () => `: `,\n },\n fr: {\n beamAttribution: () => `Optimisé par Beam`,\n ctaTitle: () => `Choisissez votre cause`,\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Sans frais supplémentaires, choisissez un organisme à but non lucratif et ${donationPercentage} % lui sera versé en votre nom.`,\n inlineSeparator: () => ` : `,\n },\n de: {\n beamAttribution: () => `Unterstützt von Beam`,\n ctaTitle: () => `Wähle deinen Impact`,\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Ohne zusätzliche Kosten, wähle eine der gemeinnützigen Organisationen und spende ${donationPercentage}% deines Einkaufs`,\n inlineSeparator: () => `: `,\n },\n es: {\n beamAttribution: () => \"Ofrecido por Beam\",\n ctaTitle: () => \"Elige tu contribución\",\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Sin coste adicional, elige una organización sin fines de lucro y donaremos ${donationPercentage}% de tu compra.`,\n inlineSeparator: () => \": \",\n },\n it: {\n beamAttribution: () => \"Gestito da Beam\",\n ctaTitle: () => \"Scegli dove fare la differenza\",\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Senza costi aggiuntivi, seleziona un'organizzazione no-profit a cui devolvere l’${donationPercentage}% del tuo acquisto`,\n inlineSeparator: () => \": \",\n },\n pl: {\n beamAttribution: () => `Wspierany przez Beam`,\n ctaTitle: () => `Wybierz inicjatywę, którą chcesz wesprzeć`,\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Bez żadnych dodatkowych kosztów wybierz organizację, której przekażesz ${donationPercentage}% wartości Twoich zakupów!`,\n inlineSeparator: () => `: `,\n },\n};\n","import { css, html, LitElement, PropertyValues } from \"lit\";\nimport { repeat } from \"lit/directives/repeat.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport { property } from \"lit/decorators/property.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport debounce from \"lodash-es/debounce\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES, WIDGET_NAMES } from \"../../api-sdk/constants\";\nimport \"../../shared/components/progress-bar\";\nimport \"../../shared/components/promo-pill-label\";\nimport \"../../shared/components/notification-blip\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { _loading } from \"../../shared/fragments/loading-template\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { defineCustomText, useCustomText } from \"../../shared/fragments/custom-text\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { _cssVariableMap } from \"../../shared/fragments/css-variable-map\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { isEqual, logger } from \"../../utils\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { TNumericId } from \"../../shared/types\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { postChainEligibleNonprofitsForCart, postSelectNonprofit } from \"../../api-sdk/v3/routes\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { BeamCartChangeEvent, BeamNonprofitSelectEvent, BeamNonprofitSelectionRemovedEvent } from \"../../utils/events\";\nimport { localizeUserString } from \"../../shared/localize\";\nimport { progressBarConfigDefaults } from \"../../shared/components/progress-bar\";\nimport { cssResponsiveUtils } from \"../../shared/responsive\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { notificationBlipConfigDefaults } from \"../../shared/components/notification-blip\";\nimport { promoPillLabelConfigDefaults } from \"../../shared/components/promo-pill-label\";\nimport { getBeamCartId, getExternalCartId } from \"../../utils/cart\";\nimport { strings } from \"./strings\";\n\ninterface RequiredConfig {\n apiKey: string;\n storeId: TNumericId; // Can be set async by postalCode + countryCode lookup\n}\n\nexport class BeamSelectNonprofit extends LitElement {\n static tagName = \"beam-select-nonprofit\";\n\n @property({ type: String }) public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String }) public apiKey?: RequiredConfig[\"apiKey\"];\n\n // storeId can be omitted if countryCode + postalCode are provided\n @property({ type: Number, reflect: true }) public storeId?: TNumericId;\n\n @property({ type: String }) public countryCode?: string;\n\n @property({ type: String }) public postalCode?: string;\n\n @property({ attribute: false, hasChanged: (a, b) => !isEqual(a, b) }) public cart?: TCart;\n\n @property({ type: Number, reflect: true }) public selectedNonprofitId: TNumericId | null = null;\n\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n\n @property({ type: Boolean }) public debug = false;\n\n @property({ type: Boolean }) public draftConfig = false;\n\n @state() private isMobile = window.innerWidth < 768;\n\n private enableNonprofitDeselection = false;\n\n private selectionId?: string;\n\n private didTryToCreateNewSelectionFromCache = false; // Should only create selection once\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n private getChainNonprofits = async () => {\n if (!enforceConfig<RequiredConfig>([\"apiKey\"], this)) {\n throw new MissingConfig();\n }\n\n const cart: any = this.cart?.content\n ? {\n schema: this.cart?.schema,\n content: this.cart?.content,\n }\n : undefined;\n\n // We use a POST method because we send a nested JSON with data that we don't want to serialize/expose in URL\n const res = await postChainEligibleNonprofitsForCart({\n baseUrl: this.baseUrl,\n apiRoot: \"/api/v3\",\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n storeId: this.storeId,\n widgetName: WIDGET_NAMES.select_nonprofit,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n version: \"1.0.0\",\n lang: this.configLang,\n options: {\n config: {\n draftConfig: this.draftConfig,\n },\n },\n cart,\n },\n });\n\n this.enableNonprofitDeselection = !!res.config.enableNonprofitDeselection;\n\n // Reset selection if list doesn't include the current selected nonprofit and if it's not set to null\n if (\n this.selectedNonprofitId !== null &&\n this.selectedNonprofitId &&\n !res.nonprofits.map((np) => np.nonprofit.id).includes(this.selectedNonprofitId)\n ) {\n this.selectedNonprofitId = null;\n await this.postSelectNonprofit({ selectedNonprofitId: null });\n this.localStorage.setItem(\"nonprofit\", null);\n }\n\n // If store ID was not provided, get the store ID from response here\n if (res.store?.id && res.store.id !== this.storeId) {\n this.storeId = res.store.id;\n }\n\n await this.createNewSelectionForCachedNonprofit();\n\n this.localStorage.setItemJson(\"chainNonprofits\", {\n createdAt: new Date(),\n data: res,\n });\n\n return res;\n };\n\n private postSelectNonprofit = async ({ selectedNonprofitId }: { selectedNonprofitId: TNumericId | null }) => {\n if (!enforceConfig<RequiredConfig>([\"apiKey\", \"storeId\"], this)) {\n throw new MissingConfig();\n }\n\n const cartId = getExternalCartId(\"cart\", { apiKey: this.apiKey });\n const beamCartId = getBeamCartId(BEAM_CART_COOKIE_NAME, { apiKey: this.apiKey });\n const result = await postSelectNonprofit({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n nonprofitId: selectedNonprofitId,\n selectionId: this.selectionId,\n storeId: this.storeId,\n cartId: cartId ? cartId : undefined,\n beamCartId: beamCartId ? beamCartId : undefined,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n },\n });\n\n this.selectionId = result?.selectionId;\n this.localStorage.setItem(\"transaction\", this.selectionId);\n this.localStorage.setItem(\"nonprofit\", selectedNonprofitId);\n this.localStorage.setItem(\"nonprofit_selected_at\", new Date().toISOString());\n\n await this.updateComplete;\n\n const selectedNonprofit = this.getNonprofitById(selectedNonprofitId);\n\n if (selectedNonprofitId !== null)\n this.dispatchEvent(\n new BeamNonprofitSelectEvent({\n selectedNonprofitId,\n selectionId: this.selectionId,\n nonprofitName: selectedNonprofit?.nonprofit?.name ?? null,\n source: WIDGET_NAMES.select_nonprofit,\n })\n );\n if (selectedNonprofitId && selectedNonprofitId !== null)\n new BeamNonprofitSelectionRemovedEvent({\n newNonprofitId: null,\n selectionId: this.selectionId,\n });\n };\n\n private nonprofitListDataController = new AsyncController<typeof this.getChainNonprofits>(\n this,\n this.getChainNonprofits\n );\n\n private selectionDataController = new AsyncController<typeof this.postSelectNonprofit>(\n this,\n this.postSelectNonprofit\n );\n\n private localStorage = createScopedLocalStorage(this as LitElement & RequiredConfig);\n\n private getNonprofitById(selectedNonprofitId: number | null) {\n if (!selectedNonprofitId) return null;\n return this.nonprofitListDataController?.data?.nonprofits.find((np) => np.nonprofit.id === selectedNonprofitId);\n }\n\n private handleCartChange = (evt: BeamCartChangeEvent) => {\n this.cart = evt.detail;\n };\n\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener(BeamCartChangeEvent.eventName, this.handleCartChange as EventListener);\n window.addEventListener(\"resize\", this.evaluateBreakPoints);\n }\n\n async firstUpdated(_changedProperties: PropertyValues) {\n await this.restoreStateFromCache();\n }\n\n async updated(previousPropertyValues: PropertyValues) {\n // Reload nonprofit list on change of any of these props:\n // Also fires on first load as props go from undefined => value\n const requireNewDataProps = [\"baseUrl\", \"storeId\", \"apiKey\", \"countryCode\", \"postalCode\", \"cart\", \"lang\"];\n for (const prop of requireNewDataProps) {\n if (previousPropertyValues.has(prop)) {\n await this.nonprofitListDataController.exec();\n break;\n }\n }\n }\n\n disconnectedCallback() {\n window.removeEventListener(BeamCartChangeEvent.eventName, this.handleCartChange as EventListener);\n super.disconnectedCallback();\n }\n\n private async restoreStateFromCache() {\n try {\n const currentTimestamp = new Date().valueOf();\n\n this.cart = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\") ?? undefined;\n\n // Restore the previous nonprofit selection unless it exceeds the defined time limit, in which case clear the selection\n // (Note: localStorage key is called \"transaction\" for backwards compatibility with legacy SDK)\n const selectionTtl = 30 * 24 * 60 * 60 * 1000; // 30 days in milliseconds\n const selectionCreatedAt = this.localStorage.getItem(\"nonprofit_selected_at\") ?? 0;\n const isSelectionExpired = currentTimestamp > new Date(selectionCreatedAt).valueOf() + selectionTtl;\n if (!isSelectionExpired) {\n this.selectedNonprofitId = parseInt(this.localStorage.getItem(\"nonprofit\") || \"\") || null;\n this.selectionId = this.localStorage.getItem(\"transaction\") ?? undefined;\n } else if (isSelectionExpired && this.selectedNonprofitId !== null) {\n await this.postSelectNonprofit({ selectedNonprofitId: null });\n this.localStorage.setItem(\"nonprofit\", null);\n }\n\n // Try to restore nonprofit list if we have data and it's not too old\n // list will continue to refresh async and replace this data when ready\n const { createdAt = 0, data } =\n this.localStorage.getItemJson<{ createdAt: string; data: any }>(\"chainNonprofits\") || {};\n const cacheTtl = 2 * 60 * 60 * 1000; // 2 hours in milliseconds\n const isCacheExpired = currentTimestamp > new Date(createdAt).valueOf() + cacheTtl;\n if (!isCacheExpired) {\n this.nonprofitListDataController.data = data;\n this.nonprofitListDataController.loading = false;\n }\n } catch (err) {\n logger.error(err);\n // ignore cache retrieval error and continue to fetch data\n }\n }\n\n private async createNewSelectionForCachedNonprofit() {\n if (!enforceConfig<RequiredConfig>([\"apiKey\"], this)) {\n throw new MissingConfig();\n }\n if (!this.storeId || this.didTryToCreateNewSelectionFromCache) {\n return; // storeId can be set async as a result of calling find nonprofits with postalCode + zipCode\n }\n try {\n // Immediately set flag to prevent more cache restore attempts from triggering\n this.didTryToCreateNewSelectionFromCache = true;\n\n // Create a new selection ID for the session (e.g., if restoring nonprofit after a completed order)\n\n if (this.selectedNonprofitId) {\n if (!this.selectionId) {\n await this.selectionDataController.exec({ selectedNonprofitId: this.selectedNonprofitId });\n }\n const selectedNonprofit = this.getNonprofitById(this.selectedNonprofitId);\n this.dispatchEvent(\n new BeamNonprofitSelectEvent({\n selectedNonprofitId: this.selectedNonprofitId,\n selectionId: this.selectionId,\n nonprofitName: selectedNonprofit?.nonprofit?.name,\n source: WIDGET_NAMES.select_nonprofit,\n })\n );\n }\n } catch (err) {\n // Ignore error\n }\n }\n\n /**\n * Factory for selection event handler\n *\n * Nonprofit selector implements radio-button semantics:\n * * If nothing is selected, tabbing into selector selects first card\n * * Arrow keys changes focus between cards, but doesn't select\n * * Enter/Space sets selection\n * * If a nonprofit is selected, arrow keys change focus AND selection\n * * Click sets selection\n * @param {number} id\n * @param {number} index\n * @param {{id: number}[]} nonprofits\n * @returns {(evt: Event) => void}\n */\n private makeHandleSelect =\n (id: number, index: number, nonprofits: { nonprofit: { id: number } }[]) => async (evt: Event) => {\n const currentId = this.selectedNonprofitId;\n if (evt instanceof KeyboardEvent) {\n let nextFocus = null;\n switch (evt.key) {\n case \"ArrowUp\":\n case \"ArrowLeft\":\n if (index === 0) {\n nextFocus = nonprofits[nonprofits.length - 1];\n } else {\n nextFocus = nonprofits[index - 1];\n }\n evt.preventDefault();\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n if (index === nonprofits.length - 1) {\n nextFocus = nonprofits[0];\n } else {\n nextFocus = nonprofits[index + 1];\n }\n evt.preventDefault();\n break;\n case \"Enter\":\n case \" \":\n evt.preventDefault();\n break; // continue to toggle-selection block below\n default:\n return;\n }\n if (nextFocus) {\n if (currentId != null) {\n this.selectedNonprofitId = nextFocus.nonprofit.id;\n }\n const focusTarget = this.renderRoot.querySelector(`[data-value=\"${nextFocus.nonprofit.id}\"]`) as HTMLElement;\n if (focusTarget !== null) {\n focusTarget.tabIndex = 0;\n focusTarget.focus();\n }\n return;\n }\n }\n // Handle selection with click or Enter/Space key\n const targetEl = evt.currentTarget;\n if (targetEl instanceof HTMLElement) {\n if (currentId === id) {\n if (this.enableNonprofitDeselection) {\n this.selectedNonprofitId = null; // unset\n await this.postSelectNonprofit({ selectedNonprofitId: null });\n this.localStorage.setItem(\"nonprofit\", null);\n } else {\n return;\n }\n } else {\n this.selectedNonprofitId = id;\n }\n }\n await this.selectionDataController.exec({ selectedNonprofitId: this.selectedNonprofitId });\n };\n\n evaluateBreakPoints = debounce(\n () => {\n this.isMobile = window.innerWidth < 768;\n },\n 50,\n { maxWait: 50, leading: true }\n );\n\n public get cssVariables() {\n const defaults = {\n \"--beam-fontFamily\": \"inherit\",\n \"--beam-fontStyle\": \"inherit\",\n \"--beam-fontSize\": \"inherit\",\n \"--beam-textColor\": \"inherit\",\n \"--beam-backgroundColor\": \"inherit\",\n ...progressBarConfigDefaults,\n \"--beam-SelectNonprofit-title-textAlign\": \"inherit\",\n \"--beam-SelectNonprofit-description-textAlign\": \"inherit\",\n \"--beam-SelectNonprofit-maxWidth\": \"800px\",\n \"--beam-SelectNonprofit-options-marginTop\": \"0px\",\n \"--beam-SelectNonprofit-options-iconHeight\": \"24px\",\n \"--beam-SelectNonprofit-options-padding\": \"10px\",\n \"--beam-SelectNonprofit-options-borderRadius\": \"0px\",\n \"--beam-SelectNonprofit-options-borderColor\": \"currentColor\",\n \"--beam-SelectNonprofit-options--selected-borderColor\": \"currentColor\",\n \"--beam-SelectNonprofit-options-backgroundColor\": \"transparent\",\n \"--beam-SelectNonprofit-options-gap\": \"8px\",\n \"--beam-SelectNonprofit-options--selected-backgroundColor\": \"currentColor\",\n \"--beam-SelectNonprofit-details-marginTop\": \"10px\",\n \"--beam-SelectNonprofit-details-borderRadius\": \"0px\",\n \"--beam-SelectNonprofit-details-borderColor\": \"currentColor\",\n \"--beam-SelectNonprofit-details-backgroundColor\": \"inherit\",\n \"--beam-SelectNonprofit-details-padding\": \"10px\",\n ...defineCustomText(\"--beam-SelectNonprofit-title\", {\n fontSize: \"1.25em\",\n fontWeight: \"bold\",\n }),\n \"--beam-SelectNonprofit-header-inline-lineHeight\": \"inherit\",\n ...defineCustomText(\"--beam-SelectNonprofit-title-inline\", {\n fontWeight: \"bold\",\n }),\n \"--beam-SelectNonprofit-title-inline-textTransform\": \"none\",\n \"--beam-SelectNonprofit-title-block-margin-right\": \"8px\",\n ...defineCustomText(\"--beam-SelectNonprofit-description\", {\n marginTop: \"0.5em\",\n }),\n ...defineCustomText(\"--beam-SelectNonprofit-description-inline\"),\n ...defineCustomText(\"--beam-SelectNonprofit-details-cause\", {\n fontSize: \"0.85em\",\n fontWeight: \"bold\",\n }),\n ...defineCustomText(\"--beam-SelectNonprofit-details-beamAttribution\", {\n fontSize: \"0.85em\",\n }),\n ...defineCustomText(\"--beam-SelectNonprofit-details-impactDescription\", {\n fontSize: \"1em\",\n marginTop: \"10px\",\n }),\n \"--beam-SelectNonprofit-details-nonprofitName-fontWeight\": \"bold\",\n \"--beam-SelectNonprofit-details-nonprofitName-fontStyle\": \"inherit\",\n \"--beam-SelectNonprofit-details-fundingProgress-marginTop\": \"10px\",\n ...defineCustomText(\"--beam-SelectNonprofit-details-fundingProgressLabel\", {\n fontSize: \"0.85em\",\n }),\n ...notificationBlipConfigDefaults,\n ...promoPillLabelConfigDefaults,\n \"--beam-SelectNonprofit-promo-block-header-justifyContent\": \"initial\",\n \"--beam-SelectNonprofit-notification-blip-top\": \"4px\",\n \"--beam-SelectNonprofit-notification-blip-left\": \"50%\",\n };\n\n const remoteConfig = this.nonprofitListDataController?.data?.config?.web?.theme || {};\n\n const config = { ...defaults, ...remoteConfig };\n\n const serializable = Object.create({\n toCSS() {\n return _cssVariableMap(this as Record<string, string>);\n },\n });\n\n return Object.assign(serializable, config);\n }\n\n static styles = [\n cssReset,\n cssResponsiveUtils,\n css`\n :host {\n display: block;\n max-width: var(--beam-SelectNonprofit-maxWidth, 800px);\n font-family: var(--beam-fontFamily);\n font-style: var(--beam-fontStyle);\n font-size: var(--beam-fontSize);\n background-color: var(--beam-backgroundColor);\n color: var(--beam-textColor);\n word-break: normal;\n }\n\n .details-impactDescription {\n ${useCustomText(\"--beam-SelectNonprofit-details-impactDescription\")}\n }\n\n .details-impactDescription .nonprofitName {\n font-weight: var(--beam-SelectNonprofit-details-nonprofitName-fontWeight);\n font-style: var(--beam-SelectNonprofit-details-nonprofitName-fontStyle, inherit);\n }\n\n /* Note: title/description display is responsive */\n\n .title-block {\n margin-right: var(--beam-SelectNonprofit-title-block-margin-right);\n ${useCustomText(\"--beam-SelectNonprofit-title\")}\n text-align: var(--beam-SelectNonprofit-title-textAlign);\n }\n\n .header-inline {\n line-height: var(--beam-SelectNonprofit-header-inline-lineHeight);\n }\n\n .title-inline {\n font-size: var(--beam-SelectNonprofit-title-inline-fontSize);\n font-weight: var(--beam-SelectNonprofit-title-inline-fontWeight);\n color: var(--beam-SelectNonprofit-title-inline-color);\n font-family: var(--beam-SelectNonprofit-title-inline-fontFamily);\n text-transform: var(--beam-SelectNonprofit-title-inline-textTransform);\n }\n\n .description-inline {\n font-family: var(--beam-SelectNonprofit-description-inline-fontFamily);\n font-weight: var(--beam-SelectNonprofit-description-inline-fontWeight);\n color: var(--beam-SelectNonprofit-description-inline-color);\n text-transform: var(--beam-SelectNonprofit-description-inline-textTransform);\n font-size: var(--beam-SelectNonprofit-description-inline-fontSize);\n }\n\n .description {\n ${useCustomText(\"--beam-SelectNonprofit-description\")}\n text-align: var(--beam-SelectNonprofit-description-textAlign);\n }\n\n .block-header-promo-pill-container {\n display: flex;\n align-items: center;\n justify-content: var(--beam-SelectNonprofit-promo-block-header-justifyContent);\n }\n\n .block-header-promo-pill-container-responsive {\n flex-direction: column;\n align-items: flex-start;\n }\n .block-header-promo-pill-center-block-container-responsive {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n }\n .block-header-promo-pill-container-responsive beam-promo-info-pill {\n order: -1;\n }\n .block-header-promo-pill-center-block-container-responsive beam-promo-info-pill {\n order: -1;\n }\n beam-notification-blip::part(notification-blip-container) {\n position: absolute;\n top: var(--beam-SelectNonprofit-notification-blip-top);\n left: var(--beam-SelectNonprofit-notification-blip-left);\n }\n `,\n ];\n\n protected render() {\n const { selectedNonprofitId } = this;\n const { data, loading } = this.nonprofitListDataController;\n\n if (loading && !data) {\n // TODO: better loading UI\n return _loading(); // TODO: css theme first\n }\n if (this.nonprofitListDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.nonprofitListDataController.error });\n }\n return \"\";\n }\n if (this.selectionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.selectionDataController.error });\n }\n // do not show error screen for interactive errors by default\n }\n const nonprofits = data?.nonprofits || [];\n const selectedNonprofit = nonprofits.find((np) => np.nonprofit.id === selectedNonprofitId) || null;\n const shouldUseNewPromoUI = !!data?.config?.web?.promo;\n const hasNonprofitWithInactivePromo = nonprofits.some((nonprofit) => !nonprofit.promo || !nonprofit.promo.isActive);\n const isTitleTextCenterAligned = this.cssVariables[\"--beam-SelectNonprofit-title-textAlign\"] === \"center\";\n const defaultHeader = html`<h3 class=\"title-block d-none d-lg-block\" part=\"title\" id=\"beam-SelectNonprofit-title\">\n ${localizeUserString(this.configLang, data?.config?.web?.title || \"\") || strings[this.configLang].ctaTitle()}\n </h3>`;\n const renderHeader = () => {\n return shouldUseNewPromoUI\n ? html`<div\n class=\"${this.isMobile\n ? isTitleTextCenterAligned\n ? \"block-header-promo-pill-center-block-container-responsive\"\n : \"block-header-promo-pill-container-responsive\"\n : isTitleTextCenterAligned\n ? \"block-header-promo-pill-center-block-container-responsive\"\n : \"block-header-promo-pill-container\"}\"\n style=\"${this.isMobile ? \"display: flex\" : \"\"}\"\n >\n ${defaultHeader}\n <beam-promo-info-pill .promo=${data?.config?.web?.promo}></beam-promo-info-pill>\n </div>`\n : defaultHeader;\n };\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n <div part=\"heading\">\n ${renderHeader()}\n <p class=\"description\" part=\"description\">\n <span class=\"d-none d-lg-inline\">\n ${\n shouldUseNewPromoUI\n ? html`<span style=\"font-weight:bold\">\n ${localizeUserString(this.configLang, data?.config?.web?.promoDescriptionPrefix || \"\") ||\n strings[this.configLang].ctaPromoPrefixMessage()}\n </span>\n <span>\n ${localizeUserString(this.configLang, data?.config?.web?.promoDescription || \"\") ||\n strings[this.configLang].ctaPromoMessage()}\n </span>`\n : html`<span>\n ${localizeUserString(this.configLang, data?.config?.web?.description || \"\") ||\n strings[this.configLang].ctaMessage()}\n </span>`\n }\n </span>\n <div class=\"d-lg-none header-inline\">\n <span class=\"title-inline\" part=\"title\">\n ${\n (localizeUserString(this.configLang, data?.config?.web?.title || \"\") ||\n strings[this.configLang].ctaTitle()) + strings[this.configLang].inlineSeparator()\n }\n </span>\n <span class=\"description-inline\" part=\"description\">\n ${\n shouldUseNewPromoUI\n ? html`<span style=\"font-weight:bold\">\n ${localizeUserString(this.configLang, data?.config?.web?.promoDescriptionPrefix || \"\") ||\n strings[this.configLang].ctaPromoPrefixMessage()}\n </span>\n <span>\n ${localizeUserString(this.configLang, data?.config?.web?.promoDescription || \"\") ||\n strings[this.configLang].ctaPromoMessage()}\n </span>`\n : html`<span\n >${localizeUserString(this.configLang, data?.config?.web?.description || \"\") ||\n strings[this.configLang].ctaMessage()}\n </span>`\n }\n </div>\n </p>\n </div>\n <div\n class=\"options\"\n part=\"options\"\n role=\"radiogroup\"\n aria-labelledby=\"beam-SelectNonprofit-title\"\n style=\"display: flex; gap: var(--beam-SelectNonprofit-options-gap); margin: 10px 0 0 0;\"\n >\n ${repeat(\n nonprofits,\n (i) => i.nonprofit.id,\n ({ nonprofit, promo }, index) => {\n const isSelected = selectedNonprofitId === nonprofit.id;\n const isFocusable = isSelected || (selectedNonprofit == null && index === 0);\n const shouldAddPromoBlip = promo?.isActive && data?.config.web.promo && hasNonprofitWithInactivePromo;\n return html`\n <div\n class=\"option\"\n part=\"option\"\n role=\"radio\"\n tabindex=\"${isFocusable ? 0 : -1}\"\n data-value=${nonprofit.id}\n aria-checked=${isSelected}\n @click=${this.makeHandleSelect(nonprofit.id, index, nonprofits)}\n @keydown=${this.makeHandleSelect(nonprofit.id, index, nonprofits)}\n aria-label=\"${localizeUserString(this.configLang, nonprofit.cause || \"\")}\"\n style=\"${styleMap({\n cursor: \"pointer\",\n flex: \"1\",\n textAlign: \"center\",\n lineHeight: \"1\",\n marginTop: \"var(--beam-SelectNonprofit-options-marginTop, 0px)\",\n padding: \"var(--beam-SelectNonprofit-options-padding, 10px)\",\n borderWidth: \"var(--beam-SelectNonprofit-options-borderWidth, 1px)\",\n borderStyle: \"solid\",\n position: \"relative\",\n borderRadius: \"var(--beam-SelectNonprofit-options-borderRadius, 0)\",\n borderColor: isSelected\n ? nonprofit.causeColor || \"var(--beam-SelectNonprofit-options--selected-borderColor, currentColor)\"\n : \"var(--beam-SelectNonprofit-options-borderColor, currentColor)\",\n backgroundColor: isSelected\n ? nonprofit.causeColor ||\n \"var(--beam-SelectNonprofit-options--selected-backgroundColor, currentColor)\"\n : \"var(--beam-SelectNonprofit-options-backgroundColor, transparent)\",\n })}\"\n >\n <img\n src=\"${isSelected ? nonprofit.causeIconSelectedUrl : nonprofit.causeIconUrl}\"\n alt=\"\"\n role=\"presentation\"\n style=\"\n height: var(--beam-SelectNonprofit-options-iconHeight, 24px);\n user-select: none;\n vertical-align: -webkit-baseline-middle;\n \"\n />\n ${shouldAddPromoBlip ? html`<beam-notification-blip></beam-notification-blip>` : html``}\n </div>\n `;\n }\n )}\n </div>\n ${\n selectedNonprofit != null\n ? html`\n <div\n class=\"details\"\n part=\"details\"\n style=\"\n border: 1px solid var(--beam-SelectNonprofit-details-borderColor);\n border-radius: var(--beam-SelectNonprofit-details-borderRadius);\n background-color: var(--beam-SelectNonprofit-details-backgroundColor);\n padding: var(--beam-SelectNonprofit-details-padding);\n margin-top: var(--beam-SelectNonprofit-details-marginTop);\n \"\n aria-label=\"Funding information for selected nonprofit ${selectedNonprofit.nonprofit\n ?.name}. Powered by Beam\"\n >\n <div\n style=\"display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap-reverse\"\n >\n <span\n class=\"details-cause\"\n style=\"flex: 0 1; white-space: nowrap; ${useCustomText(\"--beam-SelectNonprofit-details-cause\")}\"\n >\n ${selectedNonprofit?.promo?.isActive && hasNonprofitWithInactivePromo\n ? data?.config.web.promo?.[\"promo-cause-alt-text\"] || selectedNonprofit.nonprofit.cause\n : localizeUserString(this.configLang, selectedNonprofit.nonprofit.cause || \"\")}\n </span>\n <div aria-hidden=\"true\">\n <span\n class=\"details-beamAttribution\"\n aria-hidden=\"true\"\n style=\"flex: 0 1; white-space: nowrap; ${useCustomText(\n \"--beam-SelectNonprofit-details-beamAttribution\"\n )}\"\n >\n ${strings[this.configLang].beamAttribution()}\n </span>\n </div>\n </div>\n <p class=\"details-impactDescription\">\n ${unsafeHTML(localizeUserString(this.configLang, selectedNonprofit.impact.description || \"\"))}\n </p>\n <div\n style=\"display: flex; margin-top: var(--beam-SelectNonprofit-details-fundingProgress-marginTop); align-items: center;\"\n >\n <beam-progress-bar\n value=\"${selectedNonprofit.impact.goalProgressPercentage}\"\n style=\"flex: 1 0;\"\n ></beam-progress-bar>\n <span\n class=\"details-fundingProgressLabel\"\n style=\"${useCustomText(\n \"--beam-SelectNonprofit-details-fundingProgressLabel\"\n )} white-space: nowrap; text-align: right; flex: 0 1; margin-left: 15px;\"\n >\n ${localizeUserString(this.configLang, selectedNonprofit.impact.goalProgressText)}\n </span>\n </div>\n </div>\n `\n : \"\"\n }\n `;\n }\n}\n\ndefineCustomElement(BeamSelectNonprofit);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-select-nonprofit\": BeamSelectNonprofit;\n }\n}\n"],"names":["BeamNotificationBlip","LitElement","css","html","notificationBlipConfigDefaults","strings","donationPercentage","A","P","s","u","m","t","e","i","n","BeamSelectNonprofit","DEFAULT_BASE_URL","enforceConfig","cart","res","postChainEligibleNonprofitsForCart","WIDGET_NAMES","np","selectedNonprofitId","cartId","getExternalCartId","beamCartId","getBeamCartId","BEAM_CART_COOKIE_NAME","result","postSelectNonprofit","selectedNonprofit","BeamNonprofitSelectEvent","BeamNonprofitSelectionRemovedEvent","AsyncController","createScopedLocalStorage","evt","id","index","nonprofits","currentId","nextFocus","focusTarget","debounce","SUPPORTED_LANGUAGES","BeamCartChangeEvent","_changedProperties","previousPropertyValues","requireNewDataProps","prop","currentTimestamp","selectionTtl","selectionCreatedAt","isSelectionExpired","createdAt","data","cacheTtl","err","logger","defaults","progressBarConfigDefaults","defineCustomText","promoPillLabelConfigDefaults","remoteConfig","config","_cssVariableMap","loading","_loading","_errorMessage","shouldUseNewPromoUI","hasNonprofitWithInactivePromo","nonprofit","isTitleTextCenterAligned","defaultHeader","localizeUserString","renderHeader","repeat","promo","isSelected","isFocusable","shouldAddPromoBlip","styleMap","useCustomText","unsafeHTML","cssReset","cssResponsiveUtils","__decorateClass","property","a","b","isEqual","state","defineCustomElement"],"mappings":"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"}
@@ -1,4 +1,19 @@
1
- import{f as I,g as p,t as D,h as L,y as S,u as M,q as x,m as F}from"../chunks/lit-3QHn3fwl.esm.js";import{d as P}from"../chunks/lodash-P8OIs-at.esm.js";import{D as A,f as U,u as W,S as R}from"../chunks/routes-4Mnz2XZX.esm.js";import{u as d,A as k,d as u,a as z,_ as N,i as l}from"../chunks/localize-IRs8JglT.esm.js";import{p as E}from"../chunks/progress-bar-HVG_n8_6.esm.js";import{c as _,d as j,e as v}from"../chunks/enforce-config-HksNiOMu.esm.js";import{_ as H}from"../chunks/loading-template-mLjOGXMj.esm.js";import{makeApiKeyHeader as C}from"../utils/makeApiKeyHeader.esm.js";import{B as K}from"../chunks/beam-errors-P-Lu07Ce.esm.js";import{createScopedLocalStorage as O}from"../utils/local-storage.esm.js";import{c as Y}from"../chunks/css-card-grid-r6wxRbPV.esm.js";import{_ as G}from"../chunks/checkbox-P2JYPqxl.esm.js";import{c as q}from"../chunks/events-_4nImo3u.esm.js";import"./beam-partner-logos.esm.js";import"../utils/logger.esm.js";const m={en:{ctaTitle:()=>"Choose Your Impact",ctaMessagePrefix:()=>" at no extra cost.",ctaMessage:({donationPercentage:n="1%"}={})=>`Choose a nonprofit and ${n} will be donated there for you with every order of your subscription,`,submitButtonText:()=>"Confirm",submitButtonTextCompleted:()=>"Confirmed!",chooseButtonText:()=>"Choose"},fr:{ctaTitle:()=>"Choose Your Impact",ctaMessagePrefix:()=>" at no extra cost.",ctaMessage:({donationPercentage:n="1%"}={})=>`Choose a nonprofit and ${n} will be donated there for you with every order of your subscription,`,submitButtonText:()=>"Confirm",submitButtonTextCompleted:()=>"Confirmed!",chooseButtonText:()=>"Choose"},de:{ctaTitle:()=>"Choose Your Impact",ctaMessagePrefix:()=>" at no extra cost.",ctaMessage:({donationPercentage:n="1%"}={})=>`Choose a nonprofit and ${n} will be donated there for you with every order of your subscription,`,submitButtonText:()=>"Confirm",submitButtonTextCompleted:()=>"Confirmed!",chooseButtonText:()=>"Choose"},es:{ctaTitle:()=>"Choose Your Impact",ctaMessagePrefix:()=>" at no extra cost.",ctaMessage:({donationPercentage:n="1%"}={})=>`Choose a nonprofit and ${n} will be donated there for you with every order of your subscription,`,submitButtonText:()=>"Confirm",submitButtonTextCompleted:()=>"Confirmed!",chooseButtonText:()=>"Choose"},it:{ctaTitle:()=>"Choose Your Impact",ctaMessagePrefix:()=>" at no extra cost.",ctaMessage:({donationPercentage:n="1%"}={})=>`Choose a nonprofit and ${n} will be donated there for you with every order of your subscription,`,submitButtonText:()=>"Confirm",submitButtonTextCompleted:()=>"Confirmed!",chooseButtonText:()=>"Choose"},pl:{ctaTitle:()=>"Choose Your Impact",ctaMessagePrefix:()=>" at no extra cost.",ctaMessage:({donationPercentage:n="1%"}={})=>`Choose a nonprofit and ${n} will be donated there for you with every order of your subscription,`,submitButtonText:()=>"Confirm",submitButtonTextCompleted:()=>"Confirmed!",chooseButtonText:()=>"Choose"}};var V=Object.defineProperty,J=Object.getOwnPropertyDescriptor,c=(n,o,t,e)=>{for(var i=e>1?void 0:e?J(o,t):o,b=n.length-1,s;b>=0;b--)(s=n[b])&&(i=(e?s(o,t,i):s(i))||i);return e&&i&&V(o,t,i),i};const Q=2*60*60*1e3;class a extends L{constructor(){super(...arguments),this.baseUrl=A,this.lang="en",this.draftConfig=!1,this.debug=!1,this.isMobile=window.innerWidth<768,this.getChainNonprofits=async()=>{v(["apiKey","subscriptionId","storeId"],this);const o=await U({baseUrl:this.baseUrl,headers:C(this.apiKey),requestBody:{storeId:this.storeId,postalCode:this.postalCode,countryCode:this.countryCode,widgetName:"select-subscription-nonprofit",version:"1.0.0",lang:this.configLang,options:{config:{draftConfig:this.draftConfig}}}});return this.localStorage.setItemJson("chainNonprofits",{createdAt:new Date,data:o}),o},this.updateNonprofitIdForSubscription=async({selectedNonprofitId:o})=>this.subscriptionId?(v(["apiKey","subscriptionId"],this),W({baseUrl:this.baseUrl,headers:C(this.apiKey),requestBody:{remoteSubscriptionId:this.subscriptionId,nonprofitId:o,selectionMethod:"dashboard"}})):null,this.nonprofitListDataController=new k(this,this.getChainNonprofits),this.subscriptionUpdateDataController=new k(this,this.updateNonprofitIdForSubscription),this.localStorage=O(this),this.makeHandleSelect=(o,t,e)=>async i=>{if(!this.allowChange)return;const b=this.selectedNonprofitId;if(i instanceof KeyboardEvent){let s=null;switch(i.key){case"ArrowUp":case"ArrowLeft":t===0?s=e[e.length-1]:s=e[t-1],i.preventDefault();break;case"ArrowRight":case"ArrowDown":t===e.length-1?s=e[0]:s=e[t+1],i.preventDefault();break;case"Enter":case" ":i.preventDefault();break;default:return}if(s){const f=this.renderRoot.querySelector(`[data-value="${s.nonprofit.id}"]`);f!==null&&(f.tabIndex=0,f.focus());return}}if(i.currentTarget instanceof HTMLElement){if(b===o)return;this.selectedNonprofitId=o}},this.handleSubmit=async()=>{const{selectedNonprofitId:o}=this;if(!this.allowSubmit||o==null)return;await this.subscriptionUpdateDataController.exec({selectedNonprofitId:o});const t=this.nonprofitListDataController?.data?.nonprofits.find(e=>e.nonprofit.id===o);this.dispatchEvent(new q({selectedNonprofitId:o,nonprofitName:t?.nonprofit.name}))},this.evaluateBreakPoints=P(()=>{this.isMobile=window.innerWidth<768},50,{maxWait:50,leading:!0})}get configLang(){return R[this.lang]||"en"}connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this.evaluateBreakPoints)}async firstUpdated(o){await this.restoreStateFromCache()}async updated(o){const t=["baseUrl","storeId","apiKey","countryCode","postalCode","lang"];for(const e of t)if(o.has(e)){await this.nonprofitListDataController.exec();break}}disconnectedCallback(){super.disconnectedCallback()}restoreStateFromCache(){v(["apiKey"],this);try{const{createdAt:o=0,data:t}=this.localStorage.getItemJson("chainNonprofits")||{};new Date(o).valueOf()+Q>new Date().valueOf()&&(this.nonprofitListDataController.data=t,this.nonprofitListDataController.loading=!1)}catch{}}get allowChange(){return this.subscriptionUpdateDataController.data==null&&!this.subscriptionUpdateDataController.loading}get allowSubmit(){return!!(this.selectedNonprofitId&&this.allowChange)}get cssVariables(){const o={...E,"--beam-fontFamily":"inherit","--beam-fontStyle":"inherit","--beam-fontSize":"inherit","--beam-textColor":"inherit","--beam-backgroundColor":"inherit","--beam-SelectSubscriptionNonprofit-maxWidth":"800px","--beam-SelectSubscriptionNonprofit-mobile-header-alignItems":"center","--beam-SelectSubscriptionNonprofit-desktop-header-alignItems":"center","--beam-SelectSubscriptionNonprofit-headerContainer-padding":"2px","--beam-SelectSubscriptionNonprofit-title-textAlign":"inherit","--beam-SelectSubscriptionNonprofit-description-textAlign":"center","--beam-SelectSubscriptionNonprofit-desktop-description-width":"80%","--beam-SelectSubscriptionNonprofit-mobile-description-width":"90%","--beam-SelectSubscriptionNonprofit-options-marginTop":"10px","--beam-SelectSubscriptionNonprofit-options-padding":"10px","--beam-SelectSubscriptionNonprofit-options-borderWidth":"1px","--beam-SelectSubscriptionNonprofit-options-borderColor":"transparent","--beam-SelectSubscriptionNonprofit-options-borderRadius":"8px","--beam-SelectSubscriptionNonprofit-options-backgroundColor":"#F9FBFB","--beam-SelectSubscriptionNonprofit-option-padding":"15px","--beam-SelectSubscriptionNonprofit-options-hover-backgroundColor":"#e1f1ee","--beam-SelectSubscriptionNonprofit-options-hover-borderWidth":"1px","--beam-SelectSubscriptionNonprofit-options-hover-borderColor":"#e1f1ee","--beam-SelectSubscriptionNonprofit-options-selected-borderWidth":"1px","--beam-SelectSubscriptionNonprofit-options-selected-borderColor":"#e1f1ee","--beam-SelectSubscriptionNonprofit-options-selected-backgroundColor":"#e1f1ee","--beam-SelectSubscriptionNonprofit-options-gap":"20px","--beam-SelectSubscriptionNonprofit-options-minWidth":"250px","--beam-SelectSubscriptionNonprofit-options-columnCount":"2","--beam-SelectSubscriptionNonprofit-options-icon-borderRadius":"4px","--beam-SelectSubscriptionNonprofit-options-icon-padding":"10px","--beam-SelectSubscriptionNonprofit-options-image-borderRadius":"4px","--beam-SelectSubscriptionNonprofit-cardIconContainer-height":"100%","--beam-SelectSubscriptionNonprofit-iconBackground-width":"50px","--beam-SelectSubscriptionNonprofit-iconBackground-height":"50px","--beam-SelectSubscriptionNonprofit-iconBackground-borderRadius":"50%","--beam-SelectSubscriptionNonprofit-iconBackground-background":"#0a323c","--beam-SelectSubscriptionNonprofit-icon-height":"50px","--beam-SelectSubscriptionNonprofit-checkmark-backgroundColor":"transparent","--beam-SelectSubscriptionNonprofit-checkmark-color":"transparent","--beam-SelectSubscriptionNonprofit-checkmark-borderColor":"#0A323C","--beam-SelectSubscriptionNonprofit-checkmark-selected-color":"#fff","--beam-SelectSubscriptionNonprofit-checkmark-selected-backgroundColor":"#0A323C","--beam-SelectSubscriptionNonprofit-checkmark-selected-borderColor":"#0A323C","--beam-SelectSubscriptionNonprofit-checkmark-hover-color":"#fff","--beam-SelectSubscriptionNonprofit-checkmark-hover-backgroundColor":"#0A323C","--beam-SelectSubscriptionNonprofit-checkmark-hover-borderColor":"#0A323C","--beam-SelectSubscriptionNonprofit-cardStyle":"'selected_icon'","--beam-SelectSubscriptionNonprofit-submitButton-color":"#fff","--beam-SelectSubscriptionNonprofit-submitButton-hover-color":"#fff","--beam-SelectSubscriptionNonprofit-submitButton-disabled-color":"#fff","--beam-SelectSubscriptionNonprofit-submitButton-backgroundColor":"#0A323C","--beam-SelectSubscriptionNonprofit-submitButton-hover-backgroundColor":"#222","--beam-SelectSubscriptionNonprofit-submitButton-disabled-backgroundColor":"#767676","--beam-SelectSubscriptionNonprofit-submitButton-borderColor":"#333","--beam-SelectSubscriptionNonprofit-submitButton-hover-borderColor":"#222","--beam-SelectSubscriptionNonprofit-submitButton-disabled-borderColor":"#767676","--beam-SelectSubscriptionNonprofit-submitButton-fontSize":"14px","--beam-SelectSubscriptionNonprofit-submitButton-fontWeight":"inherit","--beam-SelectSubscriptionNonprofit-submitButton-fontFamily":"inherit","--beam-SelectSubscriptionNonprofit-submitButton-textTransform":"none","--beam-SelectSubscriptionNonprofit-submitButton-borderRadius":"30px","--beam-SelectSubscriptionNonprofit-submitButton-padding":"10px 30px",...u("--beam-SelectSubscriptionNonprofit-title",{fontSize:"20px",fontWeight:"bold",lineHeight:"120%",textTransform:"capitalize",color:"#0a323c"}),...u("--beam-SelectSubscriptionNonprofit-descriptionPrefix",{marginTop:"3px",color:"#2f302d",fontSize:"14px",fontWeight:"bold",fontStyle:"normal",lineHeight:"138%"}),...u("--beam-SelectSubscriptionNonprofit-description",{marginTop:"3px",color:"#2f302d",fontSize:"14px",fontStyle:"normal",lineHeight:"138%"}),"--beam-SelectSubscriptionNonprofit-details-cause-letterSpacing":"0.36px",...u("--beam-SelectSubscriptionNonprofit-details-cause",{fontSize:"12px",fontWeight:"bold",color:"#0a323c",fontStyle:"normal",lineHeight:"120%"}),...u("--beam-SelectSubscriptionNonprofit-details-description",{fontSize:"12px",marginTop:"5px",fontStyle:"normal",lineHeight:"140%",fontWeight:"400"}),"--beam-SelectSubscriptionNonprofit-details-fundingProgress-marginTop":"7px",...u("--beam-SelectSubscriptionNonprofit-details-funding-progress-label",{fontSize:"12px",color:"#666666",fontWeight:"400",fontStyle:"normal"}),"--beam-SelectSubscriptionNonprofit-stickyFooter-boxShadow":"0px -20px 20px 0px rgba(0, 0, 0, 0.04)","--beam-SelectSubscriptionNonprofit-stickyFooter-padding":"15px 0px 45px","--beam-SelectSubscriptionNonprofit-stickyFooter-backgroundColor":"white","--beam-SelectSubscriptionNonprofit-stickyFooter-marginLeft":"-15px","--beam-SelectSubscriptionNonprofit-stickyFooter-marginRight":"-15px","--beam-SelectSubscriptionNonprofit-stickyFooter-width":"auto"},t=this.nonprofitListDataController?.data?.config?.web?.theme||{},e={...o,...t};return Object.assign(Object.create({toCSS(){return z(this)}}),e)}render(){const{selectedNonprofitId:o}=this,{data:t,loading:e}=this.nonprofitListDataController;if(e&&!t)return H();if(this.nonprofitListDataController.error)return this.debug?N({error:this.nonprofitListDataController.error}):"";if(this.subscriptionUpdateDataController.error&&this.debug)return N({error:this.subscriptionUpdateDataController.error});if(t==null)return this.debug?N({error:new K("No data")}):"";const i=t?.nonprofits||[],b=i.find(r=>r.nonprofit.id===o)||null,s=this.cssVariables["--beam-SelectSubscriptionNonprofit-cardStyle"],f=s==="'icon'"||s==="'selected_icon'";return S`
1
+ import{y as m,m as I,f as D,g as p,t as L,h as M,q as F,u as x,k as P}from"../chunks/lit-iNN5L_Qk.esm.js";import{d as A}from"../chunks/lodash-P8OIs-at.esm.js";import{D as U,f as W,u as R,S as z}from"../chunks/routes-jmFlXAbv.esm.js";import{u as d,A as C,d as u,a as E,_ as N,i as l}from"../chunks/localize-o-cYvHQf.esm.js";import{p as _}from"../chunks/progress-bar-PMU_xI3L.esm.js";import{c as j,d as H,e as v}from"../chunks/enforce-config-ZAI7WYAd.esm.js";import{_ as K}from"../chunks/loading-template-t4fFsYtr.esm.js";import{makeApiKeyHeader as k}from"../utils/makeApiKeyHeader.esm.js";import{B as O}from"../chunks/beam-errors-P-Lu07Ce.esm.js";import{createScopedLocalStorage as Y}from"../utils/local-storage.esm.js";import{c as G}from"../chunks/css-card-grid-nEc--M5M.esm.js";import{c as q}from"../chunks/events-_4nImo3u.esm.js";import"./beam-partner-logos.esm.js";import"../utils/logger.esm.js";const V=({height:r="1em",width:o="1em"}={})=>m`
2
+ <svg
3
+ style="${I({height:r,width:o,position:"relative",bottom:"0"})}"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ viewBox="0 0 78.369 78.369"
6
+ >
7
+ <g>
8
+ <path
9
+ d="M78.049,19.015L29.458,67.606c-0.428,0.428-1.121,0.428-1.548,0L0.32,40.015c-0.427-0.426-0.427-1.119,0-1.547l6.704-6.704
10
+ c0.428-0.427,1.121-0.427,1.548,0l20.113,20.112l41.113-41.113c0.429-0.427,1.12-0.427,1.548,0l6.703,6.704
11
+ C78.477,17.894,78.477,18.586,78.049,19.015z"
12
+ style="fill: currentColor"
13
+ />
14
+ </g>
15
+ </svg>
16
+ `,S={en:{ctaTitle:()=>"Choose Your Impact",ctaMessagePrefix:()=>" at no extra cost.",ctaMessage:({donationPercentage:r="1%"}={})=>`Choose a nonprofit and ${r} will be donated there for you with every order of your subscription,`,submitButtonText:()=>"Confirm",submitButtonTextCompleted:()=>"Confirmed!",chooseButtonText:()=>"Choose"},fr:{ctaTitle:()=>"Choose Your Impact",ctaMessagePrefix:()=>" at no extra cost.",ctaMessage:({donationPercentage:r="1%"}={})=>`Choose a nonprofit and ${r} will be donated there for you with every order of your subscription,`,submitButtonText:()=>"Confirm",submitButtonTextCompleted:()=>"Confirmed!",chooseButtonText:()=>"Choose"},de:{ctaTitle:()=>"Choose Your Impact",ctaMessagePrefix:()=>" at no extra cost.",ctaMessage:({donationPercentage:r="1%"}={})=>`Choose a nonprofit and ${r} will be donated there for you with every order of your subscription,`,submitButtonText:()=>"Confirm",submitButtonTextCompleted:()=>"Confirmed!",chooseButtonText:()=>"Choose"},es:{ctaTitle:()=>"Choose Your Impact",ctaMessagePrefix:()=>" at no extra cost.",ctaMessage:({donationPercentage:r="1%"}={})=>`Choose a nonprofit and ${r} will be donated there for you with every order of your subscription,`,submitButtonText:()=>"Confirm",submitButtonTextCompleted:()=>"Confirmed!",chooseButtonText:()=>"Choose"},it:{ctaTitle:()=>"Choose Your Impact",ctaMessagePrefix:()=>" at no extra cost.",ctaMessage:({donationPercentage:r="1%"}={})=>`Choose a nonprofit and ${r} will be donated there for you with every order of your subscription,`,submitButtonText:()=>"Confirm",submitButtonTextCompleted:()=>"Confirmed!",chooseButtonText:()=>"Choose"},pl:{ctaTitle:()=>"Choose Your Impact",ctaMessagePrefix:()=>" at no extra cost.",ctaMessage:({donationPercentage:r="1%"}={})=>`Choose a nonprofit and ${r} will be donated there for you with every order of your subscription,`,submitButtonText:()=>"Confirm",submitButtonTextCompleted:()=>"Confirmed!",chooseButtonText:()=>"Choose"}};var J=Object.defineProperty,Q=Object.getOwnPropertyDescriptor,c=(r,o,t,e)=>{for(var i=e>1?void 0:e?Q(o,t):o,b=r.length-1,s;b>=0;b--)(s=r[b])&&(i=(e?s(o,t,i):s(i))||i);return e&&i&&J(o,t,i),i};const X=2*60*60*1e3;class a extends M{constructor(){super(...arguments),this.baseUrl=U,this.lang="en",this.draftConfig=!1,this.debug=!1,this.isMobile=window.innerWidth<768,this.getChainNonprofits=async()=>{v(["apiKey","subscriptionId","storeId"],this);const o=await W({baseUrl:this.baseUrl,headers:k(this.apiKey),requestBody:{storeId:this.storeId,postalCode:this.postalCode,countryCode:this.countryCode,widgetName:"select-subscription-nonprofit",version:"1.0.0",lang:this.configLang,options:{config:{draftConfig:this.draftConfig}}}});return this.localStorage.setItemJson("chainNonprofits",{createdAt:new Date,data:o}),o},this.updateNonprofitIdForSubscription=async({selectedNonprofitId:o})=>this.subscriptionId?(v(["apiKey","subscriptionId"],this),R({baseUrl:this.baseUrl,headers:k(this.apiKey),requestBody:{remoteSubscriptionId:this.subscriptionId,nonprofitId:o,selectionMethod:"dashboard"}})):null,this.nonprofitListDataController=new C(this,this.getChainNonprofits),this.subscriptionUpdateDataController=new C(this,this.updateNonprofitIdForSubscription),this.localStorage=Y(this),this.makeHandleSelect=(o,t,e)=>async i=>{if(!this.allowChange)return;const b=this.selectedNonprofitId;if(i instanceof KeyboardEvent){let s=null;switch(i.key){case"ArrowUp":case"ArrowLeft":t===0?s=e[e.length-1]:s=e[t-1],i.preventDefault();break;case"ArrowRight":case"ArrowDown":t===e.length-1?s=e[0]:s=e[t+1],i.preventDefault();break;case"Enter":case" ":i.preventDefault();break;default:return}if(s){const f=this.renderRoot.querySelector(`[data-value="${s.nonprofit.id}"]`);f!==null&&(f.tabIndex=0,f.focus());return}}if(i.currentTarget instanceof HTMLElement){if(b===o)return;this.selectedNonprofitId=o}},this.handleSubmit=async()=>{const{selectedNonprofitId:o}=this;if(!this.allowSubmit||o==null)return;await this.subscriptionUpdateDataController.exec({selectedNonprofitId:o});const t=this.nonprofitListDataController?.data?.nonprofits.find(e=>e.nonprofit.id===o);this.dispatchEvent(new q({selectedNonprofitId:o,nonprofitName:t?.nonprofit.name}))},this.evaluateBreakPoints=A(()=>{this.isMobile=window.innerWidth<768},50,{maxWait:50,leading:!0})}get configLang(){return z[this.lang]||"en"}connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this.evaluateBreakPoints)}async firstUpdated(o){await this.restoreStateFromCache()}async updated(o){const t=["baseUrl","storeId","apiKey","countryCode","postalCode","lang"];for(const e of t)if(o.has(e)){await this.nonprofitListDataController.exec();break}}disconnectedCallback(){super.disconnectedCallback()}restoreStateFromCache(){v(["apiKey"],this);try{const{createdAt:o=0,data:t}=this.localStorage.getItemJson("chainNonprofits")||{};new Date(o).valueOf()+X>new Date().valueOf()&&(this.nonprofitListDataController.data=t,this.nonprofitListDataController.loading=!1)}catch{}}get allowChange(){return this.subscriptionUpdateDataController.data==null&&!this.subscriptionUpdateDataController.loading}get allowSubmit(){return!!(this.selectedNonprofitId&&this.allowChange)}get cssVariables(){const o={..._,"--beam-fontFamily":"inherit","--beam-fontStyle":"inherit","--beam-fontSize":"inherit","--beam-textColor":"inherit","--beam-backgroundColor":"inherit","--beam-SelectSubscriptionNonprofit-maxWidth":"800px","--beam-SelectSubscriptionNonprofit-mobile-header-alignItems":"center","--beam-SelectSubscriptionNonprofit-desktop-header-alignItems":"center","--beam-SelectSubscriptionNonprofit-headerContainer-padding":"2px","--beam-SelectSubscriptionNonprofit-title-textAlign":"inherit","--beam-SelectSubscriptionNonprofit-description-textAlign":"center","--beam-SelectSubscriptionNonprofit-desktop-description-width":"80%","--beam-SelectSubscriptionNonprofit-mobile-description-width":"90%","--beam-SelectSubscriptionNonprofit-options-marginTop":"10px","--beam-SelectSubscriptionNonprofit-options-padding":"10px","--beam-SelectSubscriptionNonprofit-options-borderWidth":"1px","--beam-SelectSubscriptionNonprofit-options-borderColor":"transparent","--beam-SelectSubscriptionNonprofit-options-borderRadius":"8px","--beam-SelectSubscriptionNonprofit-options-backgroundColor":"#F9FBFB","--beam-SelectSubscriptionNonprofit-option-padding":"15px","--beam-SelectSubscriptionNonprofit-options-hover-backgroundColor":"#e1f1ee","--beam-SelectSubscriptionNonprofit-options-hover-borderWidth":"1px","--beam-SelectSubscriptionNonprofit-options-hover-borderColor":"#e1f1ee","--beam-SelectSubscriptionNonprofit-options-selected-borderWidth":"1px","--beam-SelectSubscriptionNonprofit-options-selected-borderColor":"#e1f1ee","--beam-SelectSubscriptionNonprofit-options-selected-backgroundColor":"#e1f1ee","--beam-SelectSubscriptionNonprofit-options-gap":"20px","--beam-SelectSubscriptionNonprofit-options-minWidth":"250px","--beam-SelectSubscriptionNonprofit-options-columnCount":"2","--beam-SelectSubscriptionNonprofit-options-icon-borderRadius":"4px","--beam-SelectSubscriptionNonprofit-options-icon-padding":"10px","--beam-SelectSubscriptionNonprofit-options-image-borderRadius":"4px","--beam-SelectSubscriptionNonprofit-cardIconContainer-height":"100%","--beam-SelectSubscriptionNonprofit-iconBackground-width":"50px","--beam-SelectSubscriptionNonprofit-iconBackground-height":"50px","--beam-SelectSubscriptionNonprofit-iconBackground-borderRadius":"50%","--beam-SelectSubscriptionNonprofit-iconBackground-background":"#0a323c","--beam-SelectSubscriptionNonprofit-icon-height":"50px","--beam-SelectSubscriptionNonprofit-checkmark-backgroundColor":"transparent","--beam-SelectSubscriptionNonprofit-checkmark-color":"transparent","--beam-SelectSubscriptionNonprofit-checkmark-borderColor":"#0A323C","--beam-SelectSubscriptionNonprofit-checkmark-selected-color":"#fff","--beam-SelectSubscriptionNonprofit-checkmark-selected-backgroundColor":"#0A323C","--beam-SelectSubscriptionNonprofit-checkmark-selected-borderColor":"#0A323C","--beam-SelectSubscriptionNonprofit-checkmark-hover-color":"#fff","--beam-SelectSubscriptionNonprofit-checkmark-hover-backgroundColor":"#0A323C","--beam-SelectSubscriptionNonprofit-checkmark-hover-borderColor":"#0A323C","--beam-SelectSubscriptionNonprofit-cardStyle":"'selected_icon'","--beam-SelectSubscriptionNonprofit-submitButton-color":"#fff","--beam-SelectSubscriptionNonprofit-submitButton-hover-color":"#fff","--beam-SelectSubscriptionNonprofit-submitButton-disabled-color":"#fff","--beam-SelectSubscriptionNonprofit-submitButton-backgroundColor":"#0A323C","--beam-SelectSubscriptionNonprofit-submitButton-hover-backgroundColor":"#222","--beam-SelectSubscriptionNonprofit-submitButton-disabled-backgroundColor":"#767676","--beam-SelectSubscriptionNonprofit-submitButton-borderColor":"#333","--beam-SelectSubscriptionNonprofit-submitButton-hover-borderColor":"#222","--beam-SelectSubscriptionNonprofit-submitButton-disabled-borderColor":"#767676","--beam-SelectSubscriptionNonprofit-submitButton-fontSize":"14px","--beam-SelectSubscriptionNonprofit-submitButton-fontWeight":"inherit","--beam-SelectSubscriptionNonprofit-submitButton-fontFamily":"inherit","--beam-SelectSubscriptionNonprofit-submitButton-textTransform":"none","--beam-SelectSubscriptionNonprofit-submitButton-borderRadius":"30px","--beam-SelectSubscriptionNonprofit-submitButton-padding":"10px 30px",...u("--beam-SelectSubscriptionNonprofit-title",{fontSize:"20px",fontWeight:"bold",lineHeight:"120%",textTransform:"capitalize",color:"#0a323c"}),...u("--beam-SelectSubscriptionNonprofit-descriptionPrefix",{marginTop:"3px",color:"#2f302d",fontSize:"14px",fontWeight:"bold",fontStyle:"normal",lineHeight:"138%"}),...u("--beam-SelectSubscriptionNonprofit-description",{marginTop:"3px",color:"#2f302d",fontSize:"14px",fontStyle:"normal",lineHeight:"138%"}),"--beam-SelectSubscriptionNonprofit-details-cause-letterSpacing":"0.36px",...u("--beam-SelectSubscriptionNonprofit-details-cause",{fontSize:"12px",fontWeight:"bold",color:"#0a323c",fontStyle:"normal",lineHeight:"120%"}),...u("--beam-SelectSubscriptionNonprofit-details-description",{fontSize:"12px",marginTop:"5px",fontStyle:"normal",lineHeight:"140%",fontWeight:"400"}),"--beam-SelectSubscriptionNonprofit-details-fundingProgress-marginTop":"7px",...u("--beam-SelectSubscriptionNonprofit-details-funding-progress-label",{fontSize:"12px",color:"#666666",fontWeight:"400",fontStyle:"normal"}),"--beam-SelectSubscriptionNonprofit-stickyFooter-boxShadow":"0px -20px 20px 0px rgba(0, 0, 0, 0.04)","--beam-SelectSubscriptionNonprofit-stickyFooter-padding":"15px 0px 45px","--beam-SelectSubscriptionNonprofit-stickyFooter-backgroundColor":"white","--beam-SelectSubscriptionNonprofit-stickyFooter-marginLeft":"-15px","--beam-SelectSubscriptionNonprofit-stickyFooter-marginRight":"-15px","--beam-SelectSubscriptionNonprofit-stickyFooter-width":"auto"},t=this.nonprofitListDataController?.data?.config?.web?.theme||{},e={...o,...t};return Object.assign(Object.create({toCSS(){return E(this)}}),e)}render(){const{selectedNonprofitId:o}=this,{data:t,loading:e}=this.nonprofitListDataController;if(e&&!t)return K();if(this.nonprofitListDataController.error)return this.debug?N({error:this.nonprofitListDataController.error}):"";if(this.subscriptionUpdateDataController.error&&this.debug)return N({error:this.subscriptionUpdateDataController.error});if(t==null)return this.debug?N({error:new O("No data")}):"";const i=t?.nonprofits||[],b=i.find(n=>n.nonprofit.id===o)||null,s=this.cssVariables["--beam-SelectSubscriptionNonprofit-cardStyle"],f=s==="'icon'"||s==="'selected_icon'";return m`
2
17
  <style>
3
18
  :host {
4
19
  ${this.cssVariables.toCSS()}
@@ -7,16 +22,16 @@ import{f as I,g as p,t as D,h as L,y as S,u as M,q as x,m as F}from"../chunks/li
7
22
  <div class="widget-container ${this.isMobile?"widget-container-mobile":""}">
8
23
  <div class="header-container ${this.isMobile?"header-container-mobile":"header-container-desktop"}">
9
24
  <h3 class="title" part="title" id="beam-SelectSubscriptionNonprofit-title">
10
- ${l(this.configLang,t?.config?.web?.title||"")||m[this.configLang].ctaTitle()}
25
+ ${l(this.configLang,t?.config?.web?.title||"")||S[this.configLang].ctaTitle()}
11
26
  </h3>
12
27
  <div
13
28
  class="description-container ${this.isMobile?"header-container-mobile description-mobile":"header-container-desktop description-desktop"}"
14
29
  >
15
30
  <span class="description" part="description">
16
- ${l(this.configLang,t?.config?.web?.additionalStrings?.ctaMessage||"")||m[this.configLang].ctaMessage()}
31
+ ${l(this.configLang,t?.config?.web?.additionalStrings?.ctaMessage||"")||S[this.configLang].ctaMessage()}
17
32
  </span>
18
33
  <span class="description-prefix" part="description">
19
- ${l(this.configLang,t?.config?.web?.additionalStrings?.ctaMessagePrefix||"")||m[this.configLang].ctaMessagePrefix()}
34
+ ${l(this.configLang,t?.config?.web?.additionalStrings?.ctaMessagePrefix||"")||S[this.configLang].ctaMessagePrefix()}
20
35
  </span>
21
36
  </div>
22
37
  </div>
@@ -29,42 +44,42 @@ import{f as I,g as p,t as D,h as L,y as S,u as M,q as x,m as F}from"../chunks/li
29
44
  aria-labelledby="beam-SelectSubscriptionNonprofit-title"
30
45
  ?aria-disabled=${!this.allowChange}
31
46
  >
32
- ${M(i,r=>r.nonprofit.id,(r,h)=>{const g=o===r.nonprofit.id,y=g||b==null&&h===0,w=r.nonprofit.causeIconUrl,B=r.nonprofit.causeIconSelectedUrl,$=r.imageUrl,T=s==="'selected_icon'"?B:w;return S`
47
+ ${F(i,n=>n.nonprofit.id,(n,h)=>{const g=o===n.nonprofit.id,y=g||b==null&&h===0,w=n.nonprofit.causeIconUrl,B=n.nonprofit.causeIconSelectedUrl,$=n.imageUrl,T=s==="'selected_icon'"?B:w;return m`
33
48
  <div
34
49
  class="option ${x({isSelected:g,isDisabled:!this.allowChange})}"
35
50
  part="option"
36
51
  role="radio"
37
52
  tabindex="${y?0:-1}"
38
- data-value=${r.nonprofit.id}
53
+ data-value=${n.nonprofit.id}
39
54
  ?aria-checked=${g}
40
- @click=${this.makeHandleSelect(r.nonprofit.id,h,i)}
41
- @keydown=${this.makeHandleSelect(r.nonprofit.id,h,i)}
42
- aria-label="${l(this.configLang,r.nonprofit.cause||"")}"
55
+ @click=${this.makeHandleSelect(n.nonprofit.id,h,i)}
56
+ @keydown=${this.makeHandleSelect(n.nonprofit.id,h,i)}
57
+ aria-label="${l(this.configLang,n.nonprofit.cause||"")}"
43
58
  >
44
- ${f?S` <div class="card-icon-container">
59
+ ${f?m` <div class="card-icon-container">
45
60
  <div class="icon-background">
46
61
  <img src="${T}" alt="" role="presentation" class="card-icon" />
47
62
  </div>
48
- </div>`:S` <div class="card-image-container">
63
+ </div>`:m` <div class="card-image-container">
49
64
  <img src="${$}" alt="" role="presentation" class="card-image" />
50
65
  </div>`}
51
66
  <div class="card-details-container" part="details">
52
67
  <div class="details-cause">
53
68
  <span part="checkbox" class="checkbox">
54
- <span style="line-height: 0;"> ${G({height:"10px",width:"10px"})} </span>
69
+ <span style="line-height: 0;"> ${V({height:"10px",width:"10px"})} </span>
55
70
  </span>
56
- ${l(this.configLang,r.nonprofit.cause||"")}
71
+ ${l(this.configLang,n.nonprofit.cause||"")}
57
72
  </div>
58
73
  <p class="details-description">
59
- ${F(l(this.configLang,r.impact.description||""))}
74
+ ${P(l(this.configLang,n.impact.description||""))}
60
75
  </p>
61
76
  <div class="card-progress-bar">
62
77
  <beam-progress-bar
63
- value="${r.impact.goalProgressPercentage}"
78
+ value="${n.impact.goalProgressPercentage}"
64
79
  style="flex: 1 0;"
65
80
  ></beam-progress-bar>
66
81
  <span class="details-funding-progress-label">
67
- ${l(this.configLang,r.impact.goalProgressText)}
82
+ ${l(this.configLang,n.impact.goalProgressText)}
68
83
  </span>
69
84
  </div>
70
85
  </div>
@@ -83,11 +98,11 @@ import{f as I,g as p,t as D,h as L,y as S,u as M,q as x,m as F}from"../chunks/li
83
98
  class="${x({isDisabled:!this.allowSubmit,submitButton:!0})}"
84
99
  part="submitButton"
85
100
  >
86
- ${this.subscriptionUpdateDataController.data!==null?l(this.configLang,t?.config?.web?.additionalStrings?.submitButtonTextCompleted||"")||m[this.configLang].submitButtonTextCompleted():l(this.configLang,t?.config?.web?.additionalStrings?.submitButtonText||"")||m[this.configLang].submitButtonText()}
101
+ ${this.subscriptionUpdateDataController.data!==null?l(this.configLang,t?.config?.web?.additionalStrings?.submitButtonTextCompleted||"")||S[this.configLang].submitButtonTextCompleted():l(this.configLang,t?.config?.web?.additionalStrings?.submitButtonText||"")||S[this.configLang].submitButtonText()}
87
102
  </button>
88
103
  </div>
89
104
  </div>
90
- `}}a.tagName="beam-select-subscription-nonprofit",a.styles=[_,I`
105
+ `}}a.tagName="beam-select-subscription-nonprofit",a.styles=[j,D`
91
106
  :host {
92
107
  display: block;
93
108
  max-width: var(--beam-SelectSubscriptionNonprofit-maxWidth);
@@ -369,5 +384,5 @@ import{f as I,g as p,t as D,h as L,y as S,u as M,q as x,m as F}from"../chunks/li
369
384
  .hideStickyFooter {
370
385
  display: none;
371
386
  }
372
- `,Y({gap:"var(--beam-SelectSubscriptionNonprofit-options-gap)",itemMinWidth:"var(--beam-SelectSubscriptionNonprofit-options-minWidth)",columnCount:"var(--beam-SelectSubscriptionNonprofit-options-columnCount)"})],c([p({type:String})],a.prototype,"baseUrl",2),c([p({type:String})],a.prototype,"apiKey",2),c([p({type:String})],a.prototype,"subscriptionId",2),c([p({type:Number})],a.prototype,"storeId",2),c([p({type:String})],a.prototype,"countryCode",2),c([p({type:String})],a.prototype,"postalCode",2),c([p({type:Number,reflect:!0})],a.prototype,"selectedNonprofitId",2),c([p({type:String})],a.prototype,"lang",2),c([p({type:Boolean})],a.prototype,"draftConfig",2),c([p({type:Boolean})],a.prototype,"debug",2),c([D()],a.prototype,"isMobile",2),j(a);export{a as BeamSelectSubscriptionNonprofit};
387
+ `,G({gap:"var(--beam-SelectSubscriptionNonprofit-options-gap)",itemMinWidth:"var(--beam-SelectSubscriptionNonprofit-options-minWidth)",columnCount:"var(--beam-SelectSubscriptionNonprofit-options-columnCount)"})],c([p({type:String})],a.prototype,"baseUrl",2),c([p({type:String})],a.prototype,"apiKey",2),c([p({type:String})],a.prototype,"subscriptionId",2),c([p({type:Number})],a.prototype,"storeId",2),c([p({type:String})],a.prototype,"countryCode",2),c([p({type:String})],a.prototype,"postalCode",2),c([p({type:Number,reflect:!0})],a.prototype,"selectedNonprofitId",2),c([p({type:String})],a.prototype,"lang",2),c([p({type:Boolean})],a.prototype,"draftConfig",2),c([p({type:Boolean})],a.prototype,"debug",2),c([L()],a.prototype,"isMobile",2),H(a);export{a as BeamSelectSubscriptionNonprofit};
373
388
  //# sourceMappingURL=select-subscription-nonprofit.esm.js.map