@beamimpact/web-sdk 1.51.1 → 1.52.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/dist/chunks/{_share-dialog-dependencies-CHbTSPha.esm.js → _share-dialog-dependencies-BwdvNwrJ.esm.js} +2 -2
  2. package/dist/chunks/{_share-dialog-dependencies-CHbTSPha.esm.js.map → _share-dialog-dependencies-BwdvNwrJ.esm.js.map} +1 -1
  3. package/dist/chunks/{_share-dialog-dependencies-B3N69ml2.esm.js → _share-dialog-dependencies-QaTONkKb.esm.js} +2 -2
  4. package/dist/chunks/{_share-dialog-dependencies-B3N69ml2.esm.js.map → _share-dialog-dependencies-QaTONkKb.esm.js.map} +1 -1
  5. package/dist/chunks/{css-card-grid-B6IEaTiP.esm.js → css-card-grid-CvoGpsJH.esm.js} +2 -2
  6. package/dist/chunks/{css-card-grid-B6IEaTiP.esm.js.map → css-card-grid-CvoGpsJH.esm.js.map} +1 -1
  7. package/dist/chunks/{enforce-config-CQb5MiAV.esm.js → enforce-config-Ba1JkOHs.esm.js} +2 -2
  8. package/dist/chunks/{enforce-config-CQb5MiAV.esm.js.map → enforce-config-Ba1JkOHs.esm.js.map} +1 -1
  9. package/dist/chunks/{enforce-config-Cw52SuAc.esm.js → enforce-config-CZ3ToOgr.esm.js} +2 -2
  10. package/dist/chunks/{enforce-config-Cw52SuAc.esm.js.map → enforce-config-CZ3ToOgr.esm.js.map} +1 -1
  11. package/dist/chunks/index-B5vRxWI3.esm.js +2 -0
  12. package/dist/chunks/index-B5vRxWI3.esm.js.map +1 -0
  13. package/dist/chunks/{index-BQ4Nr7Ux.esm.js → index-BNjsFEGn.esm.js} +2 -2
  14. package/dist/chunks/{index-BQ4Nr7Ux.esm.js.map → index-BNjsFEGn.esm.js.map} +1 -1
  15. package/dist/chunks/index-BsuCVFh-.esm.js +2 -0
  16. package/dist/chunks/index-BsuCVFh-.esm.js.map +1 -0
  17. package/dist/chunks/index-C9SnlT_2.esm.js +2 -0
  18. package/dist/chunks/index-C9SnlT_2.esm.js.map +1 -0
  19. package/dist/chunks/index-CFZqe2Wn.esm.js +2 -0
  20. package/dist/chunks/index-CFZqe2Wn.esm.js.map +1 -0
  21. package/dist/chunks/index-CTt5RnKY.esm.js +2 -0
  22. package/dist/chunks/index-CTt5RnKY.esm.js.map +1 -0
  23. package/dist/chunks/{index-kDoWfjd5.esm.js → index-DElVAjg2.esm.js} +2 -2
  24. package/dist/chunks/{index-kDoWfjd5.esm.js.map → index-DElVAjg2.esm.js.map} +1 -1
  25. package/dist/chunks/{index-CFYWEffm.esm.js → index-DTGB86pM.esm.js} +2 -2
  26. package/dist/chunks/{index-CFYWEffm.esm.js.map → index-DTGB86pM.esm.js.map} +1 -1
  27. package/dist/chunks/index-DZt3Lbb4.esm.js +2 -0
  28. package/dist/chunks/index-DZt3Lbb4.esm.js.map +1 -0
  29. package/dist/chunks/{index-C_ZNnJIS.esm.js → index-IKiJwo5v.esm.js} +2 -2
  30. package/dist/chunks/{index-C_ZNnJIS.esm.js.map → index-IKiJwo5v.esm.js.map} +1 -1
  31. package/dist/chunks/{index-v0tUXySN.esm.d.ts → index-TAxKoTC1.esm.d.ts} +3 -2
  32. package/dist/chunks/{index-MS8_Vije.esm.d.ts → index-ki8pLX6n.esm.d.ts} +1 -1
  33. package/dist/chunks/{lit-5uUWs2aX.esm.js → lit-WqMxC_PA.esm.js} +3 -3
  34. package/dist/chunks/{lit-5uUWs2aX.esm.js.map → lit-WqMxC_PA.esm.js.map} +1 -1
  35. package/dist/chunks/loading-template-DG4lkIIc.esm.js +2 -0
  36. package/dist/chunks/{loading-template-DXNS89Th.esm.js.map → loading-template-DG4lkIIc.esm.js.map} +1 -1
  37. package/dist/chunks/{localize-cDQFOecn.esm.js → localize-Btu9xYcE.esm.js} +2 -2
  38. package/dist/chunks/{localize-cDQFOecn.esm.js.map → localize-Btu9xYcE.esm.js.map} +1 -1
  39. package/dist/chunks/{localize-CQCRjY9s.esm.js → localize-C25pEGnx.esm.js} +2 -2
  40. package/dist/chunks/{localize-CQCRjY9s.esm.js.map → localize-C25pEGnx.esm.js.map} +1 -1
  41. package/dist/chunks/{order-page-FzVtMkga.esm.js → order-page-BbrDKYmJ.esm.js} +2 -2
  42. package/dist/chunks/{order-page-CMGPM57D.esm.js.map → order-page-BbrDKYmJ.esm.js.map} +1 -1
  43. package/dist/chunks/{order-page-tSPKLQ24.esm.d.ts → order-page-Cerye00Q.esm.d.ts} +12 -1
  44. package/dist/chunks/{order-page-CMGPM57D.esm.js → order-page-stMlaqKK.esm.js} +2 -2
  45. package/dist/chunks/{order-page-FzVtMkga.esm.js.map → order-page-stMlaqKK.esm.js.map} +1 -1
  46. package/dist/chunks/{progress-bar-oJB_t7od.esm.js → progress-bar-DF7UuuHb.esm.js} +2 -2
  47. package/dist/chunks/{progress-bar-oJB_t7od.esm.js.map → progress-bar-DF7UuuHb.esm.js.map} +1 -1
  48. package/dist/chunks/{promo-pill-label-D9ptiGak.esm.js → promo-pill-label-CbW_Vcru.esm.js} +2 -2
  49. package/dist/chunks/{promo-pill-label-D9ptiGak.esm.js.map → promo-pill-label-CbW_Vcru.esm.js.map} +1 -1
  50. package/dist/chunks/{responsive-9jAzOYoE.esm.js → responsive-BR8qUfBa.esm.js} +2 -2
  51. package/dist/chunks/{responsive-9jAzOYoE.esm.js.map → responsive-BR8qUfBa.esm.js.map} +1 -1
  52. package/dist/chunks/{routes-KHEaM_40.esm.js → routes-CAhDCFDX.esm.js} +2 -2
  53. package/dist/chunks/{routes-KHEaM_40.esm.js.map → routes-CAhDCFDX.esm.js.map} +1 -1
  54. package/dist/chunks/{routes-CaSRr919.esm.js → routes-pcL-CUiQ.esm.js} +2 -2
  55. package/dist/chunks/{routes-CaSRr919.esm.js.map → routes-pcL-CUiQ.esm.js.map} +1 -1
  56. package/dist/chunks/{share-button-DBVhw4qa.esm.d.ts → share-button-B9hpxBVr.esm.d.ts} +5 -0
  57. package/dist/chunks/share-button-BYVId0-U.esm.js +2 -0
  58. package/dist/chunks/share-button-BYVId0-U.esm.js.map +1 -0
  59. package/dist/chunks/share-button-BvUcpOcx.esm.js +167 -0
  60. package/dist/chunks/share-button-BvUcpOcx.esm.js.map +1 -0
  61. package/dist/chunks/share-button-C-DXj68Z.esm.js +2 -0
  62. package/dist/chunks/share-button-C-DXj68Z.esm.js.map +1 -0
  63. package/dist/chunks/share-button-CtklpZOO.esm.js +167 -0
  64. package/dist/chunks/share-button-CtklpZOO.esm.js.map +1 -0
  65. package/dist/chunks/{update-cart-DNfl9QP2.esm.js → update-cart-BLsw_Faz.esm.js} +2 -2
  66. package/dist/chunks/{update-cart-DNfl9QP2.esm.js.map → update-cart-BLsw_Faz.esm.js.map} +1 -1
  67. package/dist/chunks/{update-cart-3JFUCJLD.esm.js → update-cart-ciJaz8li.esm.js} +2 -2
  68. package/dist/chunks/{update-cart-3JFUCJLD.esm.js.map → update-cart-ciJaz8li.esm.js.map} +1 -1
  69. package/dist/chunks/{vendor-DRA8u-S7.esm.js → vendor-KKSARHWL.esm.js} +2 -2
  70. package/dist/chunks/{vendor-DRA8u-S7.esm.js.map → vendor-KKSARHWL.esm.js.map} +1 -1
  71. package/dist/components/beam-partner-logos.esm.js +1 -1
  72. package/dist/components/beam-partner-logos.js +1 -1
  73. package/dist/components/community-impact.esm.js +3 -3
  74. package/dist/components/community-impact.esm.js.map +1 -1
  75. package/dist/components/community-impact.js +3 -3
  76. package/dist/components/community-impact.js.map +1 -1
  77. package/dist/components/cumulative-impact.esm.js +1 -1
  78. package/dist/components/cumulative-impact.js +1 -1
  79. package/dist/components/impact-overview.d.ts +1 -1
  80. package/dist/components/impact-overview.esm.js +18 -13
  81. package/dist/components/impact-overview.esm.js.map +1 -1
  82. package/dist/components/impact-overview.js +18 -13
  83. package/dist/components/impact-overview.js.map +1 -1
  84. package/dist/components/index.d.ts +1 -1
  85. package/dist/components/index.esm.js +1 -1
  86. package/dist/components/index.js +1 -1
  87. package/dist/components/post-purchase.d.ts +1 -1
  88. package/dist/components/post-purchase.esm.js +1 -1
  89. package/dist/components/post-purchase.js +1 -1
  90. package/dist/components/product-details-page.esm.js +1 -1
  91. package/dist/components/product-details-page.js +1 -1
  92. package/dist/components/redeem-transaction.esm.js +1 -1
  93. package/dist/components/redeem-transaction.js +1 -1
  94. package/dist/components/select-nonprofit.esm.js +88 -88
  95. package/dist/components/select-nonprofit.esm.js.map +1 -1
  96. package/dist/components/select-nonprofit.js +88 -88
  97. package/dist/components/select-nonprofit.js.map +1 -1
  98. package/dist/components/select-subscription-nonprofit.esm.js +1 -1
  99. package/dist/components/select-subscription-nonprofit.js +1 -1
  100. package/dist/components/shopify.d.ts +2 -2
  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 +3 -3
  106. package/dist/components/social-share.esm.js.map +1 -1
  107. package/dist/components/social-share.js +3 -3
  108. package/dist/components/social-share.js.map +1 -1
  109. package/dist/components/subscription-impact.d.ts +1 -1
  110. package/dist/components/subscription-impact.esm.js +26 -24
  111. package/dist/components/subscription-impact.esm.js.map +1 -1
  112. package/dist/components/subscription-impact.js +26 -24
  113. package/dist/components/subscription-impact.js.map +1 -1
  114. package/dist/components/subscription-management.d.ts +1 -1
  115. package/dist/components/subscription-management.esm.js +1 -1
  116. package/dist/components/subscription-management.js +1 -1
  117. package/dist/index.d.ts +4 -4
  118. package/dist/index.esm.js +1 -1
  119. package/dist/index.js +1 -1
  120. package/dist/integrations/beam.esm.js +1 -1
  121. package/dist/integrations/beam.js +1 -1
  122. package/dist/integrations/cart.esm.js +1 -1
  123. package/dist/integrations/cart.js +1 -1
  124. package/dist/integrations/index.d.ts +3 -3
  125. package/dist/integrations/index.esm.js +1 -1
  126. package/dist/integrations/index.js +1 -1
  127. package/dist/integrations/logs.esm.js +1 -1
  128. package/dist/integrations/logs.js +1 -1
  129. package/dist/integrations/session.esm.js +1 -1
  130. package/dist/integrations/session.js +1 -1
  131. package/dist/integrations/shopify.d.ts +2 -2
  132. package/dist/integrations/shopify.esm.js +1 -1
  133. package/dist/integrations/shopify.js +1 -1
  134. package/dist/integrations/statsig.esm.js +1 -1
  135. package/dist/integrations/statsig.js +1 -1
  136. package/dist/react/beam-partner-logos.esm.js +1 -1
  137. package/dist/react/beam-partner-logos.js +1 -1
  138. package/dist/react/community-impact.esm.js +1 -1
  139. package/dist/react/community-impact.js +1 -1
  140. package/dist/react/cumulative-impact.esm.js +1 -1
  141. package/dist/react/cumulative-impact.js +1 -1
  142. package/dist/react/impact-overview.d.ts +1 -1
  143. package/dist/react/impact-overview.esm.js +1 -1
  144. package/dist/react/impact-overview.js +1 -1
  145. package/dist/react/index.d.ts +1 -1
  146. package/dist/react/index.esm.js +1 -1
  147. package/dist/react/index.js +1 -1
  148. package/dist/react/post-purchase.d.ts +1 -1
  149. package/dist/react/post-purchase.esm.js +1 -1
  150. package/dist/react/post-purchase.js +1 -1
  151. package/dist/react/product-details-page.esm.js +1 -1
  152. package/dist/react/product-details-page.js +1 -1
  153. package/dist/react/redeem-transaction.esm.js +1 -1
  154. package/dist/react/redeem-transaction.js +1 -1
  155. package/dist/react/select-nonprofit.esm.js +1 -1
  156. package/dist/react/select-nonprofit.js +1 -1
  157. package/dist/react/select-subscription-nonprofit.esm.js +1 -1
  158. package/dist/react/select-subscription-nonprofit.js +1 -1
  159. package/dist/react/social-share.esm.js +1 -1
  160. package/dist/react/social-share.js +1 -1
  161. package/dist/react/subscription-impact.d.ts +1 -1
  162. package/dist/react/subscription-impact.esm.js +1 -1
  163. package/dist/react/subscription-impact.js +1 -1
  164. package/dist/react/subscription-management.d.ts +1 -1
  165. package/dist/react/subscription-management.esm.js +1 -1
  166. package/dist/react/subscription-management.js +1 -1
  167. package/package.json +1 -1
  168. package/dist/chunks/index-B_8DexDX.esm.js +0 -2
  169. package/dist/chunks/index-B_8DexDX.esm.js.map +0 -1
  170. package/dist/chunks/index-CpPbNdWA.esm.js +0 -2
  171. package/dist/chunks/index-CpPbNdWA.esm.js.map +0 -1
  172. package/dist/chunks/index-CyiXyHi8.esm.js +0 -2
  173. package/dist/chunks/index-CyiXyHi8.esm.js.map +0 -1
  174. package/dist/chunks/index-JSoHc6g1.esm.js +0 -2
  175. package/dist/chunks/index-JSoHc6g1.esm.js.map +0 -1
  176. package/dist/chunks/index-XZRQN4Rs.esm.js +0 -2
  177. package/dist/chunks/index-XZRQN4Rs.esm.js.map +0 -1
  178. package/dist/chunks/index-n7pxZENA.esm.js +0 -2
  179. package/dist/chunks/index-n7pxZENA.esm.js.map +0 -1
  180. package/dist/chunks/loading-template-DXNS89Th.esm.js +0 -2
  181. package/dist/chunks/share-button-BbG-gnwj.esm.js +0 -163
  182. package/dist/chunks/share-button-BbG-gnwj.esm.js.map +0 -1
  183. package/dist/chunks/share-button-CvTUluNq.esm.js +0 -163
  184. package/dist/chunks/share-button-CvTUluNq.esm.js.map +0 -1
  185. package/dist/chunks/share-button-R7jgVCPv.esm.js +0 -2
  186. package/dist/chunks/share-button-R7jgVCPv.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 }\n\n .notification-blip {\n background-color: var(--beam-notificationBlip-color-background, #000);\n border-radius: 50%;\n width: 12px;\n height: 12px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 12px;\n }\n `;\n }\n\n render() {\n return html`<div\n class=\"notification-blip-container\"\n part=\"notification-blip-container\"\n aria-label=\"Notification Blip\"\n >\n <span class=\"notification-blip\" part=\"notification-blip\" role=\"button\" tabindex=\"0\" aria-hidden=\"true\"></span>\n </div>`;\n }\n}\n\ncustomElements.get(\"beam-notification-blip\") || customElements.define(\"beam-notification-blip\", BeamNotificationBlip);\n\nexport const notificationBlipConfigDefaults = {\n \"--beam-notificationBlip-color-background\": \"#000\",\n} as const;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-notification-blip\": BeamNotificationBlip;\n }\n}\n","export const strings = {\n en: {\n beamAttribution: () => `Powered by Beam`,\n ctaTitle: () => `Choose your impact`,\n ctaPromoPrefixMessage: () => `At no extra cost,`,\n ctaPromoMessage: ({ donationPercentage = \"1\" } = {}) =>\n `select a nonprofit and ${donationPercentage}% of your purchase will be donated.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `At no extra cost, select a nonprofit and ${donationPercentage}% of your purchase will be donated.`,\n inlineSeparator: () => `: `,\n },\n fr: {\n beamAttribution: () => `Optimisé par Beam`,\n ctaTitle: () => `Choisissez votre cause`,\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Sans frais supplémentaires, choisissez un organisme à but non lucratif et ${donationPercentage} % lui sera versé en votre nom.`,\n inlineSeparator: () => ` : `,\n },\n de: {\n beamAttribution: () => `Unterstützt von Beam`,\n ctaTitle: () => `Wähle deinen Impact`,\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Ohne zusätzliche Kosten, wähle eine der gemeinnützigen Organisationen und spende ${donationPercentage}% deines Einkaufs`,\n inlineSeparator: () => `: `,\n },\n es: {\n beamAttribution: () => \"Ofrecido por Beam\",\n ctaTitle: () => \"Elige tu contribución\",\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Sin coste adicional, elige una organización sin fines de lucro y donaremos ${donationPercentage}% de tu compra.`,\n inlineSeparator: () => \": \",\n },\n it: {\n beamAttribution: () => \"Gestito da Beam\",\n ctaTitle: () => \"Scegli dove fare la differenza\",\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Senza costi aggiuntivi, seleziona un'organizzazione no-profit a cui devolvere l’${donationPercentage}% del tuo acquisto`,\n inlineSeparator: () => \": \",\n },\n pl: {\n beamAttribution: () => `Wspierany przez Beam`,\n ctaTitle: () => `Wybierz inicjatywę, którą chcesz wesprzeć`,\n ctaPromoPrefixMessage: () => ``,\n ctaPromoMessage: () => ``,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Bez żadnych dodatkowych kosztów wybierz organizację, której przekażesz ${donationPercentage}% wartości Twoich zakupów!`,\n inlineSeparator: () => `: `,\n },\n};\n","import { css, html, LitElement, PropertyValues } from \"lit\";\nimport { repeat } from \"lit/directives/repeat.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport { property } from \"lit/decorators/property.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport debounce from \"lodash-es/debounce\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES, WIDGET_NAMES } from \"../../api-sdk/constants\";\nimport \"../../shared/components/progress-bar\";\nimport \"../../shared/components/promo-pill-label\";\nimport \"../../shared/components/notification-blip\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { _loading } from \"../../shared/fragments/loading-template\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { defineCustomText, useCustomText } from \"../../shared/fragments/custom-text\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { _cssVariableMap } from \"../../shared/fragments/css-variable-map\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { isEqual, logger } from \"../../utils\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { TNumericId } from \"../../shared/types\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { postChainEligibleNonprofitsForCart, postSelectNonprofit } from \"../../api-sdk/v3/routes\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport {\n BeamCartChangeEvent,\n BeamNonprofitSelectEvent,\n BeamNonprofitSelectionRemovedEvent,\n BeamPromoCodesStoredEvent,\n BeamWidgetStoredPromoCodesEvent,\n} from \"../../utils/events\";\nimport { localizeUserString } from \"../../shared/localize\";\nimport { progressBarConfigDefaults } from \"../../shared/components/progress-bar\";\nimport { cssResponsiveUtils } from \"../../shared/responsive\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { notificationBlipConfigDefaults } from \"../../shared/components/notification-blip\";\nimport { promoPillLabelConfigDefaults } from \"../../shared/components/promo-pill-label\";\nimport { getBeamCartId, getExternalCartId } from \"../../utils/cart\";\nimport {\n getPromoCodesFromCart,\n setPromoCodeInCookie,\n parseJsonStringArray,\n formatStoreAndReturnPromoCodes,\n setPromoCodesInLocalStorage,\n isEmptyPromoData,\n} from \"../../utils/promoManager\";\nimport { strings } from \"./strings\";\n\ntype IAPIV3PostChainEligibleNonprofitsForCart = Awaited<ReturnType<typeof postChainEligibleNonprofitsForCart>>;\ninterface RequiredConfig {\n apiKey: string;\n storeId: TNumericId; // Can be set async by postalCode + countryCode lookup\n}\n\nexport class BeamSelectNonprofit extends LitElement {\n static tagName = \"beam-select-nonprofit\";\n\n @property({ type: String }) public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String }) public apiKey?: RequiredConfig[\"apiKey\"];\n\n // storeId can be omitted if countryCode + postalCode are provided\n @property({ type: Number, reflect: true }) public storeId?: TNumericId;\n\n @property({ type: String }) public countryCode?: string;\n\n @property({ type: String }) public postalCode?: string;\n\n @property({ attribute: false, hasChanged: (a, b) => !isEqual(a, b) }) public cart?: TCart;\n\n @property({ type: Number, reflect: true }) public selectedNonprofitId: TNumericId | null = null;\n\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n\n @property({ type: Boolean }) public debug = false;\n\n @property({ type: Boolean }) public draftConfig = false;\n\n @property({ type: String }) public promoCodes?: string;\n\n @property({ type: String }) public domain?: string;\n\n @state() private isMobile = window.innerWidth < 768;\n\n private enableNonprofitDeselection = false;\n\n private selectionId?: string;\n\n private didTryToCreateNewSelectionFromCache = false; // Should only create selection once\n @state() private pluginPromoCodes: string[] = [];\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n get parsedPromoCodes(): string[] {\n return parseJsonStringArray(this.promoCodes);\n }\n\n private handlePromoCodesStored = (evt: BeamPromoCodesStoredEvent) => {\n const promoCodesFromPlugin = (evt.detail.promoCodes?.unvalidatedPromoCodes ?? [])\n .map((c) => c.attributes?.value ?? c.attributes?.url ?? \"\")\n .sort();\n\n this.pluginPromoCodes = promoCodesFromPlugin;\n };\n\n private getManualPromoCodes(): string[] {\n // Priority 1: Widget passed discount codes\n if (this.parsedPromoCodes && this.parsedPromoCodes.length > 0) {\n return this.parsedPromoCodes;\n }\n\n // Priority 2: Cart fallback\n const cart = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\");\n return cart ? getPromoCodesFromCart(cart) : [];\n }\n\n private async handleValidatedPromoCodes(response: IAPIV3PostChainEligibleNonprofitsForCart) {\n if (response.promos?.validatedPromoCodes) {\n await Promise.all([\n setPromoCodesInLocalStorage({\n apiKey: this.apiKey,\n promoCodes: { validatedPromoCodes: response.promos.validatedPromoCodes, unvalidatedPromoCodes: [] },\n }),\n setPromoCodeInCookie({\n validatedPromoCodes: response.promos.validatedPromoCodes,\n domain: this.domain,\n }),\n ]);\n this.dispatchEvent(\n new BeamWidgetStoredPromoCodesEvent({\n source: WIDGET_NAMES.select_nonprofit,\n })\n );\n }\n }\n\n private getChainNonprofits = async () => {\n // logger.debug(\"[select-nonprofit][getChainNonprofits]\");\n if (!enforceConfig<RequiredConfig>([\"apiKey\"], this)) {\n throw new MissingConfig();\n }\n const beamCartId = getBeamCartId(BEAM_CART_COOKIE_NAME, { apiKey: this.apiKey });\n const cartId = getExternalCartId(\"cart\", { apiKey: this.apiKey });\n\n const cart: any = this.cart?.content\n ? {\n schema: this.cart?.schema,\n content: this.cart?.content,\n }\n : undefined;\n\n const manualPromoCodes = this.getManualPromoCodes();\n const formattedPromos = formatStoreAndReturnPromoCodes(\n manualPromoCodes.map((code) => ({ value: code })),\n this.apiKey\n );\n const shouldSendPromos = formattedPromos && !isEmptyPromoData(formattedPromos);\n\n if (shouldSendPromos) {\n this.dispatchEvent(\n new BeamWidgetStoredPromoCodesEvent({\n source: WIDGET_NAMES.select_nonprofit,\n })\n );\n }\n // We use a POST method because we send a nested JSON with data that we don't want to serialize/expose in URL\n const res = await postChainEligibleNonprofitsForCart({\n baseUrl: this.baseUrl,\n apiRoot: \"/api/v3\",\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n storeId: this.storeId,\n widgetName: WIDGET_NAMES.select_nonprofit,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n beamCartId: beamCartId ? beamCartId : undefined,\n cartId: cartId ? cartId : undefined,\n version: \"1.0.0\",\n lang: this.configLang,\n ...(shouldSendPromos && { promos: formattedPromos }),\n options: {\n config: {\n draftConfig: this.draftConfig,\n },\n },\n cart,\n },\n });\n\n this.enableNonprofitDeselection = !!res.config.enableNonprofitDeselection;\n\n // Reset selection if list doesn't include the current selected nonprofit and if it's not set to null\n if (\n this.selectedNonprofitId !== null &&\n this.selectedNonprofitId &&\n !res.nonprofits.map((np) => np.nonprofit.id).includes(this.selectedNonprofitId)\n ) {\n this.selectedNonprofitId = null;\n await this.postSelectNonprofit({ selectedNonprofitId: null });\n this.localStorage.setItem(\"nonprofit\", null);\n }\n\n // If store ID was not provided, get the store ID from response here\n if (res.store?.id && res.store.id !== this.storeId) {\n this.storeId = res.store.id;\n }\n\n await this.createNewSelectionForCachedNonprofit();\n\n this.localStorage.setItemJson(\"chainNonprofits\", {\n createdAt: new Date(),\n data: res,\n });\n\n this.handleValidatedPromoCodes(res);\n return res;\n };\n\n private postSelectNonprofit = async ({ selectedNonprofitId }: { selectedNonprofitId: TNumericId | null }) => {\n if (!enforceConfig<RequiredConfig>([\"apiKey\", \"storeId\"], this)) {\n throw new MissingConfig();\n }\n\n const cartId = getExternalCartId(\"cart\", { apiKey: this.apiKey });\n const beamCartId = getBeamCartId(BEAM_CART_COOKIE_NAME, { apiKey: this.apiKey });\n const result = await postSelectNonprofit({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n nonprofitId: selectedNonprofitId,\n selectionId: this.selectionId,\n storeId: this.storeId,\n cartId: cartId ? cartId : undefined,\n beamCartId: beamCartId ? beamCartId : undefined,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n },\n });\n\n this.selectionId = result?.selectionId;\n this.localStorage.setItem(\"transaction\", this.selectionId);\n this.localStorage.setItem(\"nonprofit\", selectedNonprofitId);\n this.localStorage.setItem(\"nonprofit_selected_at\", new Date().toISOString());\n\n await this.updateComplete;\n\n const selectedNonprofit = this.getNonprofitById(selectedNonprofitId);\n\n if (selectedNonprofitId !== null)\n this.dispatchEvent(\n new BeamNonprofitSelectEvent({\n selectedNonprofitId,\n selectionId: this.selectionId,\n nonprofitName: selectedNonprofit?.nonprofit?.name ?? null,\n source: WIDGET_NAMES.select_nonprofit,\n })\n );\n if (selectedNonprofitId === null)\n this.dispatchEvent(\n new BeamNonprofitSelectionRemovedEvent({\n newNonprofitId: null,\n selectionId: this.selectionId,\n })\n );\n };\n\n private nonprofitListDataController = new AsyncController<typeof this.getChainNonprofits>(\n this,\n this.getChainNonprofits\n );\n\n private selectionDataController = new AsyncController<typeof this.postSelectNonprofit>(\n this,\n this.postSelectNonprofit\n );\n\n private localStorage = createScopedLocalStorage(this as LitElement & RequiredConfig);\n\n private getNonprofitById(selectedNonprofitId: number | null) {\n if (!selectedNonprofitId) return null;\n return this.nonprofitListDataController?.data?.nonprofits.find((np) => np.nonprofit.id === selectedNonprofitId);\n }\n\n private handleCartChange = (evt: BeamCartChangeEvent) => {\n this.cart = evt.detail;\n };\n\n async connectedCallback() {\n // logger.debug(\"[select-nonprofit][connectedCallback]\");\n super.connectedCallback();\n\n this.nonprofitListDataController.loading = true;\n window.addEventListener(BeamCartChangeEvent.eventName, this.handleCartChange as EventListener);\n window.addEventListener(\"resize\", this.evaluateBreakPoints);\n }\n\n async firstUpdated() {\n await this.restoreStateFromCache();\n window.addEventListener(BeamPromoCodesStoredEvent.eventName, this.handlePromoCodesStored as EventListener);\n }\n\n async updated(changedProperties: PropertyValues) {\n // logger.debug(\"[select-nonprofit][updated] changedProperties\", changedProperties);\n\n // Reload nonprofit list on change of any of these props:\n // Also fires on first load as props go from undefined => value\n const requireNewDataProps = [\n \"baseUrl\",\n \"storeId\",\n \"apiKey\",\n \"countryCode\",\n \"postalCode\",\n \"cart\",\n \"lang\",\n \"pluginPromoCodes\",\n ];\n void this.pluginPromoCodes;\n for (const prop of requireNewDataProps) {\n if (changedProperties.has(prop)) {\n // logger.debug(\n // \"[select-nonprofit][updated] triggering new load from prop change\",\n // prop,\n // changedProperties.get(prop)\n // );\n await this.nonprofitListDataController.exec();\n break;\n }\n }\n }\n\n disconnectedCallback() {\n window.removeEventListener(BeamCartChangeEvent.eventName, this.handleCartChange as EventListener);\n window.removeEventListener(\"resize\", this.evaluateBreakPoints);\n window.removeEventListener(BeamPromoCodesStoredEvent.eventName, this.handlePromoCodesStored as EventListener);\n super.disconnectedCallback();\n }\n\n private async restoreStateFromCache() {\n try {\n const currentTimestamp = new Date().valueOf();\n\n this.cart = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\") ?? undefined;\n\n // Restore the previous nonprofit selection unless it exceeds the defined time limit, in which case clear the selection\n // (Note: localStorage key is called \"transaction\" for backwards compatibility with legacy SDK)\n const selectionTtl = 30 * 24 * 60 * 60 * 1000; // 30 days in milliseconds\n const selectionCreatedAt = this.localStorage.getItem(\"nonprofit_selected_at\") ?? 0;\n const isSelectionExpired = currentTimestamp > new Date(selectionCreatedAt).valueOf() + selectionTtl;\n if (!isSelectionExpired) {\n this.selectedNonprofitId = parseInt(this.localStorage.getItem(\"nonprofit\") || \"\") || null;\n this.selectionId = this.localStorage.getItem(\"transaction\") ?? undefined;\n } else if (isSelectionExpired && this.selectedNonprofitId !== null) {\n await this.postSelectNonprofit({ selectedNonprofitId: null });\n this.localStorage.setItem(\"nonprofit\", null);\n }\n\n // Try to restore nonprofit list if we have data and it's not too old\n // list will continue to refresh async and replace this data when ready\n const { createdAt = 0, data } =\n this.localStorage.getItemJson<{ createdAt: string; data: any }>(\"chainNonprofits\") || {};\n const cacheTtl = 2 * 60 * 60 * 1000; // 2 hours in milliseconds\n const isCacheExpired = currentTimestamp > new Date(createdAt).valueOf() + cacheTtl;\n if (!isCacheExpired && this.nonprofitListDataController.loading) {\n this.nonprofitListDataController.data = data;\n this.nonprofitListDataController.loading = false;\n }\n } catch (err) {\n logger.error(err);\n // ignore cache retrieval error and continue to fetch data\n }\n }\n\n private async createNewSelectionForCachedNonprofit() {\n if (!enforceConfig<RequiredConfig>([\"apiKey\"], this)) {\n throw new MissingConfig();\n }\n if (!this.storeId || this.didTryToCreateNewSelectionFromCache) {\n return; // storeId can be set async as a result of calling find nonprofits with postalCode + zipCode\n }\n try {\n // Immediately set flag to prevent more cache restore attempts from triggering\n this.didTryToCreateNewSelectionFromCache = true;\n\n // Create a new selection ID for the session (e.g., if restoring nonprofit after a completed order)\n\n if (this.selectedNonprofitId) {\n if (!this.selectionId) {\n await this.selectionDataController.exec({ selectedNonprofitId: this.selectedNonprofitId });\n }\n const selectedNonprofit = this.getNonprofitById(this.selectedNonprofitId);\n this.dispatchEvent(\n new BeamNonprofitSelectEvent({\n selectedNonprofitId: this.selectedNonprofitId,\n selectionId: this.selectionId,\n nonprofitName: selectedNonprofit?.nonprofit?.name,\n source: WIDGET_NAMES.select_nonprofit,\n })\n );\n }\n } catch (err) {\n // Ignore error\n }\n }\n\n /**\n * Factory for selection event handler\n *\n * Nonprofit selector implements radio-button semantics:\n * * If nothing is selected, tabbing into selector selects first card\n * * Arrow keys changes focus between cards, but doesn't select\n * * Enter/Space sets selection\n * * If a nonprofit is selected, arrow keys change focus AND selection\n * * Click sets selection\n * @param {number} id\n * @param {number} index\n * @param {{id: number}[]} nonprofits\n * @returns {(evt: Event) => void}\n */\n private makeHandleSelect =\n (id: number, index: number, nonprofits: { nonprofit: { id: number } }[]) => async (evt: Event) => {\n const currentId = this.selectedNonprofitId;\n if (evt instanceof KeyboardEvent) {\n let nextFocus = null;\n switch (evt.key) {\n case \"ArrowUp\":\n case \"ArrowLeft\":\n if (index === 0) {\n nextFocus = nonprofits[nonprofits.length - 1];\n } else {\n nextFocus = nonprofits[index - 1];\n }\n evt.preventDefault();\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n if (index === nonprofits.length - 1) {\n nextFocus = nonprofits[0];\n } else {\n nextFocus = nonprofits[index + 1];\n }\n evt.preventDefault();\n break;\n case \"Enter\":\n case \" \":\n evt.preventDefault();\n break; // continue to toggle-selection block below\n default:\n return;\n }\n if (nextFocus) {\n if (currentId != null) {\n this.selectedNonprofitId = nextFocus.nonprofit.id;\n }\n const focusTarget = this.renderRoot.querySelector(`[data-value=\"${nextFocus.nonprofit.id}\"]`) as HTMLElement;\n if (focusTarget !== null) {\n focusTarget.tabIndex = 0;\n focusTarget.focus();\n }\n return;\n }\n }\n // Handle selection with click or Enter/Space key\n const targetEl = evt.currentTarget;\n if (targetEl instanceof HTMLElement) {\n if (currentId === id) {\n if (this.enableNonprofitDeselection) {\n this.selectedNonprofitId = null; // unset\n this.localStorage.setItem(\"nonprofit\", null);\n } else {\n return;\n }\n } else {\n this.selectedNonprofitId = id;\n }\n }\n await this.selectionDataController.exec({ selectedNonprofitId: this.selectedNonprofitId });\n };\n\n evaluateBreakPoints = debounce(\n () => {\n this.isMobile = window.innerWidth < 768;\n },\n 50,\n { maxWait: 50, leading: true }\n );\n\n public get cssVariables() {\n const defaults = {\n \"--beam-fontFamily\": \"inherit\",\n \"--beam-fontStyle\": \"inherit\",\n \"--beam-fontSize\": \"inherit\",\n \"--beam-textColor\": \"inherit\",\n \"--beam-backgroundColor\": \"inherit\",\n ...progressBarConfigDefaults,\n \"--beam-SelectNonprofit-title-textAlign\": \"inherit\",\n \"--beam-SelectNonprofit-description-textAlign\": \"inherit\",\n \"--beam-SelectNonprofit-maxWidth\": \"800px\",\n \"--beam-SelectNonprofit-options-marginTop\": \"0px\",\n \"--beam-SelectNonprofit-options-iconHeight\": \"24px\",\n \"--beam-SelectNonprofit-options-padding\": \"10px\",\n \"--beam-SelectNonprofit-options-borderRadius\": \"0px\",\n \"--beam-SelectNonprofit-options-borderColor\": \"currentColor\",\n \"--beam-SelectNonprofit-options--selected-borderColor\": \"currentColor\",\n \"--beam-SelectNonprofit-options-backgroundColor\": \"transparent\",\n \"--beam-SelectNonprofit-options-gap\": \"8px\",\n \"--beam-SelectNonprofit-options--selected-backgroundColor\": \"currentColor\",\n \"--beam-SelectNonprofit-details-marginTop\": \"10px\",\n \"--beam-SelectNonprofit-details-borderRadius\": \"0px\",\n \"--beam-SelectNonprofit-details-borderColor\": \"currentColor\",\n \"--beam-SelectNonprofit-details-backgroundColor\": \"inherit\",\n \"--beam-SelectNonprofit-details-padding\": \"10px\",\n ...defineCustomText(\"--beam-SelectNonprofit-title\", {\n fontSize: \"1.25em\",\n fontWeight: \"bold\",\n }),\n \"--beam-SelectNonprofit-header-inline-lineHeight\": \"inherit\",\n ...defineCustomText(\"--beam-SelectNonprofit-title-inline\", {\n fontWeight: \"bold\",\n }),\n \"--beam-SelectNonprofit-title-inline-textTransform\": \"none\",\n \"--beam-SelectNonprofit-title-block-margin-right\": \"8px\",\n ...defineCustomText(\"--beam-SelectNonprofit-description\", {\n marginTop: \"0.5em\",\n }),\n ...defineCustomText(\"--beam-SelectNonprofit-description-inline\"),\n ...defineCustomText(\"--beam-SelectNonprofit-details-cause\", {\n fontSize: \"0.85em\",\n fontWeight: \"bold\",\n }),\n ...defineCustomText(\"--beam-SelectNonprofit-details-beamAttribution\", {\n fontSize: \"0.85em\",\n }),\n ...defineCustomText(\"--beam-SelectNonprofit-details-impactDescription\", {\n fontSize: \"1em\",\n marginTop: \"10px\",\n }),\n \"--beam-SelectNonprofit-details-nonprofitName-fontWeight\": \"bold\",\n \"--beam-SelectNonprofit-details-nonprofitName-fontStyle\": \"inherit\",\n \"--beam-SelectNonprofit-details-fundingProgress-marginTop\": \"10px\",\n ...defineCustomText(\"--beam-SelectNonprofit-details-fundingProgressLabel\", {\n fontSize: \"0.85em\",\n }),\n ...notificationBlipConfigDefaults,\n ...promoPillLabelConfigDefaults,\n \"--beam-SelectNonprofit-promo-block-header-justifyContent\": \"initial\",\n \"--beam-SelectNonprofit-notification-blip-top\": \"4px\",\n \"--beam-SelectNonprofit-notification-blip-left\": \"50%\",\n \"--beam-SelectNonprofit-display-notification-blip\": \"true\",\n };\n\n const remoteConfig = this.nonprofitListDataController?.data?.config?.web?.theme || {};\n\n const config = { ...defaults, ...remoteConfig };\n\n const serializable = Object.create({\n toCSS() {\n return _cssVariableMap(this as Record<string, string>);\n },\n });\n\n return Object.assign(serializable, config);\n }\n\n static styles = [\n cssReset,\n cssResponsiveUtils,\n css`\n :host {\n display: block;\n max-width: var(--beam-SelectNonprofit-maxWidth, 800px);\n font-family: var(--beam-fontFamily);\n font-style: var(--beam-fontStyle);\n font-size: var(--beam-fontSize);\n background-color: var(--beam-backgroundColor);\n color: var(--beam-textColor);\n word-break: normal;\n }\n\n .details-impactDescription {\n ${useCustomText(\"--beam-SelectNonprofit-details-impactDescription\")}\n }\n\n .details-impactDescription .nonprofitName {\n font-weight: var(--beam-SelectNonprofit-details-nonprofitName-fontWeight);\n font-style: var(--beam-SelectNonprofit-details-nonprofitName-fontStyle, inherit);\n }\n\n /* Note: title/description display is responsive */\n\n .title-block {\n margin-right: var(--beam-SelectNonprofit-title-block-margin-right);\n ${useCustomText(\"--beam-SelectNonprofit-title\")}\n text-align: var(--beam-SelectNonprofit-title-textAlign);\n }\n\n .header-inline {\n line-height: var(--beam-SelectNonprofit-header-inline-lineHeight);\n }\n\n .title-inline {\n font-size: var(--beam-SelectNonprofit-title-inline-fontSize);\n font-weight: var(--beam-SelectNonprofit-title-inline-fontWeight);\n color: var(--beam-SelectNonprofit-title-inline-color);\n font-family: var(--beam-SelectNonprofit-title-inline-fontFamily);\n text-transform: var(--beam-SelectNonprofit-title-inline-textTransform);\n }\n\n .description-inline {\n font-family: var(--beam-SelectNonprofit-description-inline-fontFamily);\n font-weight: var(--beam-SelectNonprofit-description-inline-fontWeight);\n color: var(--beam-SelectNonprofit-description-inline-color);\n text-transform: var(--beam-SelectNonprofit-description-inline-textTransform);\n font-size: var(--beam-SelectNonprofit-description-inline-fontSize);\n }\n\n .description {\n ${useCustomText(\"--beam-SelectNonprofit-description\")}\n text-align: var(--beam-SelectNonprofit-description-textAlign);\n }\n\n .block-header-promo-pill-container {\n display: flex;\n align-items: center;\n justify-content: var(--beam-SelectNonprofit-promo-block-header-justifyContent);\n }\n\n .block-header-promo-pill-container-responsive {\n flex-direction: column;\n align-items: flex-start;\n }\n .block-header-promo-pill-center-block-container-responsive {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n }\n .block-header-promo-pill-container-responsive beam-promo-info-pill {\n order: -1;\n }\n .block-header-promo-pill-center-block-container-responsive beam-promo-info-pill {\n order: -1;\n }\n .option {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n beam-notification-blip::part(notification-blip-container) {\n position: absolute;\n top: var(--beam-SelectNonprofit-notification-blip-top);\n left: var(--beam-SelectNonprofit-notification-blip-left);\n }\n `,\n ];\n\n protected render() {\n const { selectedNonprofitId } = this;\n const { data, loading } = this.nonprofitListDataController;\n\n if (loading && !data) {\n return _loading();\n }\n if (this.nonprofitListDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.nonprofitListDataController.error });\n }\n return \"\";\n }\n if (this.selectionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.selectionDataController.error });\n }\n // do not show error screen for interactive errors by default\n }\n const nonprofits = data?.nonprofits || [];\n const selectedNonprofit = nonprofits.find((np) => np.nonprofit.id === selectedNonprofitId) || null;\n const shouldUseNewPromoUI = !!data?.config?.web?.promo;\n const hasNonprofitWithInactivePromo = nonprofits.some((nonprofit) => !nonprofit.promo || !nonprofit.promo.isActive);\n const shouldDisplayPromoBlip = this.cssVariables[\"--beam-SelectNonprofit-display-notification-blip\"] === \"true\";\n const isTitleTextCenterAligned = this.cssVariables[\"--beam-SelectNonprofit-title-textAlign\"] === \"center\";\n const defaultHeader = html`<h3 class=\"title-block d-none d-lg-block\" part=\"title\" id=\"beam-SelectNonprofit-title\">\n ${localizeUserString(this.configLang, data?.config?.web?.title || \"\") || strings[this.configLang].ctaTitle()}\n </h3>`;\n const renderHeader = () => {\n return shouldUseNewPromoUI\n ? html`<div\n class=\"${this.isMobile\n ? isTitleTextCenterAligned\n ? \"block-header-promo-pill-center-block-container-responsive\"\n : \"block-header-promo-pill-container-responsive\"\n : isTitleTextCenterAligned\n ? \"block-header-promo-pill-center-block-container-responsive\"\n : \"block-header-promo-pill-container\"}\"\n style=\"${this.isMobile ? \"display: flex\" : \"\"}\"\n >\n ${defaultHeader}\n <beam-promo-info-pill .promo=${data?.config?.web?.promo}></beam-promo-info-pill>\n </div>`\n : defaultHeader;\n };\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n <div part=\"heading\">\n ${renderHeader()}\n <p class=\"description\" part=\"description\">\n <span class=\"d-none d-lg-inline\">\n ${\n shouldUseNewPromoUI\n ? html`<span style=\"font-weight:bold\">\n ${localizeUserString(this.configLang, data?.config?.web?.promoDescriptionPrefix || \"\") ||\n strings[this.configLang].ctaPromoPrefixMessage()}\n </span>\n <span>\n ${localizeUserString(this.configLang, data?.config?.web?.promoDescription || \"\") ||\n strings[this.configLang].ctaPromoMessage()}\n </span>`\n : html`<span>\n ${localizeUserString(this.configLang, data?.config?.web?.description || \"\") ||\n strings[this.configLang].ctaMessage()}\n </span>`\n }\n </span>\n <div class=\"d-lg-none header-inline\">\n <span class=\"title-inline\" part=\"title\">\n ${\n (localizeUserString(this.configLang, data?.config?.web?.title || \"\") ||\n strings[this.configLang].ctaTitle()) + strings[this.configLang].inlineSeparator()\n }\n </span>\n <span class=\"description-inline\" part=\"description\">\n ${\n shouldUseNewPromoUI\n ? html`<span style=\"font-weight:bold\">\n ${localizeUserString(this.configLang, data?.config?.web?.promoDescriptionPrefix || \"\") ||\n strings[this.configLang].ctaPromoPrefixMessage()}\n </span>\n <span>\n ${localizeUserString(this.configLang, data?.config?.web?.promoDescription || \"\") ||\n strings[this.configLang].ctaPromoMessage()}\n </span>`\n : html`<span\n >${localizeUserString(this.configLang, data?.config?.web?.description || \"\") ||\n strings[this.configLang].ctaMessage()}\n </span>`\n }\n </div>\n </p>\n </div>\n <div\n class=\"options\"\n part=\"options\"\n role=\"radiogroup\"\n aria-labelledby=\"beam-SelectNonprofit-title\"\n style=\"display: flex; gap: var(--beam-SelectNonprofit-options-gap); margin: 10px 0 0 0;\"\n >\n ${repeat(\n nonprofits,\n (i) => i.nonprofit.id,\n ({ nonprofit, promo }, index) => {\n const isSelected = selectedNonprofitId === nonprofit.id;\n const isFocusable = isSelected || (selectedNonprofit == null && index === 0);\n const shouldAddPromoBlip =\n promo?.isActive && data?.config.web.promo && hasNonprofitWithInactivePromo && shouldDisplayPromoBlip;\n return html`\n <div\n class=\"option\"\n part=\"option\"\n role=\"radio\"\n tabindex=\"${isFocusable ? 0 : -1}\"\n data-value=${nonprofit.id}\n aria-checked=${isSelected}\n @click=${this.makeHandleSelect(nonprofit.id, index, nonprofits)}\n @keydown=${this.makeHandleSelect(nonprofit.id, index, nonprofits)}\n aria-label=\"${localizeUserString(this.configLang, nonprofit.cause || \"\")}\"\n style=\"${styleMap({\n cursor: \"pointer\",\n flex: \"1\",\n textAlign: \"center\",\n lineHeight: \"1\",\n marginTop: \"var(--beam-SelectNonprofit-options-marginTop, 0px)\",\n padding: \"var(--beam-SelectNonprofit-options-padding, 10px)\",\n borderWidth: \"var(--beam-SelectNonprofit-options-borderWidth, 1px)\",\n borderStyle: \"solid\",\n position: \"relative\",\n borderRadius: \"var(--beam-SelectNonprofit-options-borderRadius, 0)\",\n borderColor: isSelected\n ? nonprofit.causeColor || \"var(--beam-SelectNonprofit-options--selected-borderColor, currentColor)\"\n : \"var(--beam-SelectNonprofit-options-borderColor, currentColor)\",\n backgroundColor: isSelected\n ? nonprofit.causeColor ||\n \"var(--beam-SelectNonprofit-options--selected-backgroundColor, currentColor)\"\n : \"var(--beam-SelectNonprofit-options-backgroundColor, transparent)\",\n })}\"\n >\n <img\n src=\"${isSelected ? nonprofit.causeIconSelectedUrl : nonprofit.causeIconUrl}\"\n alt=\"\"\n role=\"presentation\"\n style=\"\n height: var(--beam-SelectNonprofit-options-iconHeight, 24px);\n user-select: none;\n vertical-align: -webkit-baseline-middle;\n \"\n />\n ${shouldAddPromoBlip ? html`<beam-notification-blip></beam-notification-blip>` : html``}\n </div>\n `;\n }\n )}\n </div>\n ${\n selectedNonprofit != null\n ? html`\n <div\n class=\"details\"\n part=\"details\"\n style=\"\n border: 1px solid var(--beam-SelectNonprofit-details-borderColor);\n border-radius: var(--beam-SelectNonprofit-details-borderRadius);\n background-color: var(--beam-SelectNonprofit-details-backgroundColor);\n padding: var(--beam-SelectNonprofit-details-padding);\n margin-top: var(--beam-SelectNonprofit-details-marginTop);\n \"\n aria-label=\"Funding information for selected nonprofit ${selectedNonprofit.nonprofit\n ?.name}. Powered by Beam\"\n >\n <div\n style=\"display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap-reverse\"\n >\n <span\n class=\"details-cause\"\n style=\"flex: 0 1; white-space: nowrap; ${useCustomText(\"--beam-SelectNonprofit-details-cause\")}\"\n >\n ${selectedNonprofit?.promo?.isActive && hasNonprofitWithInactivePromo\n ? data?.config.web.promo?.[\"promo-cause-alt-text\"] || selectedNonprofit.nonprofit.cause\n : localizeUserString(this.configLang, selectedNonprofit.nonprofit.cause || \"\")}\n </span>\n <div aria-hidden=\"true\">\n <span\n class=\"details-beamAttribution\"\n aria-hidden=\"true\"\n style=\"flex: 0 1; white-space: nowrap; ${useCustomText(\n \"--beam-SelectNonprofit-details-beamAttribution\"\n )}\"\n >\n ${strings[this.configLang].beamAttribution()}\n </span>\n </div>\n </div>\n <p class=\"details-impactDescription\">\n ${unsafeHTML(localizeUserString(this.configLang, selectedNonprofit.impact.description || \"\"))}\n </p>\n <div\n style=\"display: flex; margin-top: var(--beam-SelectNonprofit-details-fundingProgress-marginTop); align-items: center;\"\n >\n <beam-progress-bar\n value=\"${selectedNonprofit.impact.goalProgressPercentage}\"\n style=\"flex: 1 0;\"\n ></beam-progress-bar>\n <span\n class=\"details-fundingProgressLabel\"\n style=\"${useCustomText(\n \"--beam-SelectNonprofit-details-fundingProgressLabel\"\n )} white-space: nowrap; text-align: right; flex: 0 1; margin-left: 15px;\"\n >\n ${localizeUserString(this.configLang, selectedNonprofit.impact.goalProgressText)}\n </span>\n </div>\n </div>\n `\n : \"\"\n }\n `;\n }\n}\n\ndefineCustomElement(BeamSelectNonprofit);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-select-nonprofit\": BeamSelectNonprofit;\n }\n}\n"],"names":["BeamNotificationBlip","LitElement","css","html","notificationBlipConfigDefaults","strings","donationPercentage","z","s","u","h","e","t","r","BeamSelectNonprofit","DEFAULT_BASE_URL","evt","promoCodesFromPlugin","c","enforceConfig","beamCartId","getBeamCartId","BEAM_CART_COOKIE_NAME","cartId","getExternalCartId","cart","manualPromoCodes","formattedPromos","formatStoreAndReturnPromoCodes","code","shouldSendPromos","isEmptyPromoData","BeamWidgetStoredPromoCodesEvent","WIDGET_NAMES","res","postChainEligibleNonprofitsForCart","np","selectedNonprofitId","result","postSelectNonprofit","selectedNonprofit","BeamNonprofitSelectEvent","BeamNonprofitSelectionRemovedEvent","AsyncController","createScopedLocalStorage","id","index","nonprofits","currentId","nextFocus","focusTarget","debounce","SUPPORTED_LANGUAGES","parseJsonStringArray","getPromoCodesFromCart","response","setPromoCodesInLocalStorage","setPromoCodeInCookie","BeamCartChangeEvent","BeamPromoCodesStoredEvent","changedProperties","requireNewDataProps","prop","currentTimestamp","selectionTtl","selectionCreatedAt","isSelectionExpired","createdAt","data","cacheTtl","err","logger","defaults","progressBarConfigDefaults","defineCustomText","promoPillLabelConfigDefaults","remoteConfig","config","_cssVariableMap","loading","_loading","_errorMessage","shouldUseNewPromoUI","hasNonprofitWithInactivePromo","nonprofit","shouldDisplayPromoBlip","isTitleTextCenterAligned","defaultHeader","localizeUserString","renderHeader","repeat","i","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 { classMap } from \"lit/directives/class-map.js\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES, WIDGET_NAMES } from \"../../api-sdk/constants\";\nimport \"../../shared/components/progress-bar\";\nimport \"../../shared/components/promo-pill-label\";\nimport \"../../shared/components/notification-blip\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { _loading } from \"../../shared/fragments/loading-template\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { defineCustomText, useCustomText } from \"../../shared/fragments/custom-text\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { _cssVariableMap } from \"../../shared/fragments/css-variable-map\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { isEqual, logger } from \"../../utils\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { TNumericId } from \"../../shared/types\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { postChainEligibleNonprofitsForCart, postSelectNonprofit } from \"../../api-sdk/v3/routes\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport {\n BeamCartChangeEvent,\n BeamNonprofitSelectEvent,\n BeamNonprofitSelectionRemovedEvent,\n BeamPromoCodesStoredEvent,\n BeamWidgetStoredPromoCodesEvent,\n} from \"../../utils/events\";\nimport { localizeUserString } from \"../../shared/localize\";\nimport { progressBarConfigDefaults } from \"../../shared/components/progress-bar\";\nimport { cssResponsiveUtils } from \"../../shared/responsive\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { notificationBlipConfigDefaults } from \"../../shared/components/notification-blip\";\nimport { promoPillLabelConfigDefaults } from \"../../shared/components/promo-pill-label\";\nimport { getBeamCartId, getExternalCartId } from \"../../utils/cart\";\nimport {\n getPromoCodesFromCart,\n setPromoCodeInCookie,\n parseJsonStringArray,\n formatStoreAndReturnPromoCodes,\n setPromoCodesInLocalStorage,\n isEmptyPromoData,\n} from \"../../utils/promoManager\";\nimport { strings } from \"./strings\";\n\ntype IAPIV3PostChainEligibleNonprofitsForCart = Awaited<ReturnType<typeof postChainEligibleNonprofitsForCart>>;\ninterface RequiredConfig {\n apiKey: string;\n storeId: TNumericId; // Can be set async by postalCode + countryCode lookup\n}\n\nexport class BeamSelectNonprofit extends LitElement {\n static tagName = \"beam-select-nonprofit\";\n\n @property({ type: String }) public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String }) public apiKey?: RequiredConfig[\"apiKey\"];\n\n // storeId can be omitted if countryCode + postalCode are provided\n @property({ type: Number, reflect: true }) public storeId?: TNumericId;\n\n @property({ type: String }) public countryCode?: string;\n\n @property({ type: String }) public postalCode?: string;\n\n @property({ attribute: false, hasChanged: (a, b) => !isEqual(a, b) }) public cart?: TCart;\n\n @property({ type: Number, reflect: true }) public selectedNonprofitId: TNumericId | null = null;\n\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n\n @property({ type: Boolean }) public debug = false;\n\n @property({ type: Boolean }) public draftConfig = false;\n\n @property({ type: String }) public promoCodes?: string;\n\n @property({ type: String }) public domain?: string;\n\n @state() private isMobile = window.innerWidth < 768;\n\n private enableNonprofitDeselection = false;\n\n private selectionId?: string;\n\n private didTryToCreateNewSelectionFromCache = false; // Should only create selection once\n @state() private pluginPromoCodes: string[] = [];\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n get parsedPromoCodes(): string[] {\n return parseJsonStringArray(this.promoCodes);\n }\n\n private handlePromoCodesStored = (evt: BeamPromoCodesStoredEvent) => {\n const promoCodesFromPlugin = (evt.detail.promoCodes?.unvalidatedPromoCodes ?? [])\n .map((c) => c.attributes?.value ?? c.attributes?.url ?? \"\")\n .sort();\n\n this.pluginPromoCodes = promoCodesFromPlugin;\n };\n\n private getManualPromoCodes(): string[] {\n // Priority 1: Widget passed discount codes\n if (this.parsedPromoCodes && this.parsedPromoCodes.length > 0) {\n return this.parsedPromoCodes;\n }\n\n // Priority 2: Cart fallback\n const cart = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\");\n return cart ? getPromoCodesFromCart(cart) : [];\n }\n\n private async handleValidatedPromoCodes(response: IAPIV3PostChainEligibleNonprofitsForCart) {\n if (response.promos?.validatedPromoCodes) {\n await Promise.all([\n setPromoCodesInLocalStorage({\n apiKey: this.apiKey,\n promoCodes: { validatedPromoCodes: response.promos.validatedPromoCodes, unvalidatedPromoCodes: [] },\n }),\n setPromoCodeInCookie({\n validatedPromoCodes: response.promos.validatedPromoCodes,\n domain: this.domain,\n }),\n ]);\n this.dispatchEvent(\n new BeamWidgetStoredPromoCodesEvent({\n source: WIDGET_NAMES.select_nonprofit,\n })\n );\n }\n }\n\n private getChainNonprofits = async () => {\n // logger.debug(\"[select-nonprofit][getChainNonprofits]\");\n if (!enforceConfig<RequiredConfig>([\"apiKey\"], this)) {\n throw new MissingConfig();\n }\n const beamCartId = getBeamCartId(BEAM_CART_COOKIE_NAME, { apiKey: this.apiKey });\n const cartId = getExternalCartId(\"cart\", { apiKey: this.apiKey });\n\n const cart: any = this.cart?.content\n ? {\n schema: this.cart?.schema,\n content: this.cart?.content,\n }\n : undefined;\n\n const manualPromoCodes = this.getManualPromoCodes();\n const formattedPromos = formatStoreAndReturnPromoCodes(\n manualPromoCodes.map((code) => ({ value: code })),\n this.apiKey\n );\n const shouldSendPromos = formattedPromos && !isEmptyPromoData(formattedPromos);\n\n if (shouldSendPromos) {\n this.dispatchEvent(\n new BeamWidgetStoredPromoCodesEvent({\n source: WIDGET_NAMES.select_nonprofit,\n })\n );\n }\n // We use a POST method because we send a nested JSON with data that we don't want to serialize/expose in URL\n const res = await postChainEligibleNonprofitsForCart({\n baseUrl: this.baseUrl,\n apiRoot: \"/api/v3\",\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n storeId: this.storeId,\n widgetName: WIDGET_NAMES.select_nonprofit,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n beamCartId: beamCartId ? beamCartId : undefined,\n cartId: cartId ? cartId : undefined,\n version: \"1.0.0\",\n lang: this.configLang,\n ...(shouldSendPromos && { promos: formattedPromos }),\n options: {\n config: {\n draftConfig: this.draftConfig,\n },\n },\n cart,\n },\n });\n\n this.enableNonprofitDeselection = !!res.config.enableNonprofitDeselection;\n\n // Reset selection if list doesn't include the current selected nonprofit and if it's not set to null\n if (\n this.selectedNonprofitId !== null &&\n this.selectedNonprofitId &&\n !res.nonprofits.map((np) => np.nonprofit.id).includes(this.selectedNonprofitId)\n ) {\n this.selectedNonprofitId = null;\n await this.postSelectNonprofit({ selectedNonprofitId: null });\n this.localStorage.setItem(\"nonprofit\", null);\n }\n\n // If store ID was not provided, get the store ID from response here\n if (res.store?.id && res.store.id !== this.storeId) {\n this.storeId = res.store.id;\n }\n\n await this.createNewSelectionForCachedNonprofit();\n\n this.localStorage.setItemJson(\"chainNonprofits\", {\n createdAt: new Date(),\n data: res,\n });\n\n this.handleValidatedPromoCodes(res);\n return res;\n };\n\n private postSelectNonprofit = async ({ selectedNonprofitId }: { selectedNonprofitId: TNumericId | null }) => {\n if (!enforceConfig<RequiredConfig>([\"apiKey\", \"storeId\"], this)) {\n throw new MissingConfig();\n }\n\n const cartId = getExternalCartId(\"cart\", { apiKey: this.apiKey });\n const beamCartId = getBeamCartId(BEAM_CART_COOKIE_NAME, { apiKey: this.apiKey });\n const result = await postSelectNonprofit({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n nonprofitId: selectedNonprofitId,\n selectionId: this.selectionId,\n storeId: this.storeId,\n cartId: cartId ? cartId : undefined,\n beamCartId: beamCartId ? beamCartId : undefined,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n },\n });\n\n this.selectionId = result?.selectionId;\n this.localStorage.setItem(\"transaction\", this.selectionId);\n this.localStorage.setItem(\"nonprofit\", selectedNonprofitId);\n this.localStorage.setItem(\"nonprofit_selected_at\", new Date().toISOString());\n\n await this.updateComplete;\n\n const selectedNonprofit = this.getNonprofitById(selectedNonprofitId);\n\n if (selectedNonprofitId !== null)\n this.dispatchEvent(\n new BeamNonprofitSelectEvent({\n selectedNonprofitId,\n selectionId: this.selectionId,\n nonprofitName: selectedNonprofit?.nonprofit?.name ?? null,\n source: WIDGET_NAMES.select_nonprofit,\n })\n );\n if (selectedNonprofitId === null)\n this.dispatchEvent(\n new BeamNonprofitSelectionRemovedEvent({\n newNonprofitId: null,\n selectionId: this.selectionId,\n })\n );\n };\n\n private nonprofitListDataController = new AsyncController<typeof this.getChainNonprofits>(\n this,\n this.getChainNonprofits\n );\n\n private selectionDataController = new AsyncController<typeof this.postSelectNonprofit>(\n this,\n this.postSelectNonprofit\n );\n\n private localStorage = createScopedLocalStorage(this as LitElement & RequiredConfig);\n\n private getNonprofitById(selectedNonprofitId: number | null) {\n if (!selectedNonprofitId) return null;\n return this.nonprofitListDataController?.data?.nonprofits.find((np) => np.nonprofit.id === selectedNonprofitId);\n }\n\n private handleCartChange = (evt: BeamCartChangeEvent) => {\n this.cart = evt.detail;\n };\n\n async connectedCallback() {\n // logger.debug(\"[select-nonprofit][connectedCallback]\");\n super.connectedCallback();\n\n this.nonprofitListDataController.loading = true;\n window.addEventListener(BeamCartChangeEvent.eventName, this.handleCartChange as EventListener);\n window.addEventListener(\"resize\", this.evaluateBreakPoints);\n }\n\n async firstUpdated() {\n await this.restoreStateFromCache();\n window.addEventListener(BeamPromoCodesStoredEvent.eventName, this.handlePromoCodesStored as EventListener);\n }\n\n async updated(changedProperties: PropertyValues) {\n // logger.debug(\"[select-nonprofit][updated] changedProperties\", changedProperties);\n\n // Reload nonprofit list on change of any of these props:\n // Also fires on first load as props go from undefined => value\n const requireNewDataProps = [\n \"baseUrl\",\n \"storeId\",\n \"apiKey\",\n \"countryCode\",\n \"postalCode\",\n \"cart\",\n \"lang\",\n \"pluginPromoCodes\",\n ];\n void this.pluginPromoCodes;\n for (const prop of requireNewDataProps) {\n if (changedProperties.has(prop)) {\n // logger.debug(\n // \"[select-nonprofit][updated] triggering new load from prop change\",\n // prop,\n // changedProperties.get(prop)\n // );\n await this.nonprofitListDataController.exec();\n break;\n }\n }\n }\n\n disconnectedCallback() {\n window.removeEventListener(BeamCartChangeEvent.eventName, this.handleCartChange as EventListener);\n window.removeEventListener(\"resize\", this.evaluateBreakPoints);\n window.removeEventListener(BeamPromoCodesStoredEvent.eventName, this.handlePromoCodesStored as EventListener);\n super.disconnectedCallback();\n }\n\n private async restoreStateFromCache() {\n try {\n const currentTimestamp = new Date().valueOf();\n\n this.cart = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\") ?? undefined;\n\n // Restore the previous nonprofit selection unless it exceeds the defined time limit, in which case clear the selection\n // (Note: localStorage key is called \"transaction\" for backwards compatibility with legacy SDK)\n const selectionTtl = 30 * 24 * 60 * 60 * 1000; // 30 days in milliseconds\n const selectionCreatedAt = this.localStorage.getItem(\"nonprofit_selected_at\") ?? 0;\n const isSelectionExpired = currentTimestamp > new Date(selectionCreatedAt).valueOf() + selectionTtl;\n if (!isSelectionExpired) {\n this.selectedNonprofitId = parseInt(this.localStorage.getItem(\"nonprofit\") || \"\") || null;\n this.selectionId = this.localStorage.getItem(\"transaction\") ?? undefined;\n } else if (isSelectionExpired && this.selectedNonprofitId !== null) {\n await this.postSelectNonprofit({ selectedNonprofitId: null });\n this.localStorage.setItem(\"nonprofit\", null);\n }\n\n // Try to restore nonprofit list if we have data and it's not too old\n // list will continue to refresh async and replace this data when ready\n const { createdAt = 0, data } =\n this.localStorage.getItemJson<{ createdAt: string; data: any }>(\"chainNonprofits\") || {};\n const cacheTtl = 2 * 60 * 60 * 1000; // 2 hours in milliseconds\n const isCacheExpired = currentTimestamp > new Date(createdAt).valueOf() + cacheTtl;\n if (!isCacheExpired && this.nonprofitListDataController.loading) {\n this.nonprofitListDataController.data = data;\n this.nonprofitListDataController.loading = false;\n }\n } catch (err) {\n logger.error(err);\n // ignore cache retrieval error and continue to fetch data\n }\n }\n\n private async createNewSelectionForCachedNonprofit() {\n if (!enforceConfig<RequiredConfig>([\"apiKey\"], this)) {\n throw new MissingConfig();\n }\n if (!this.storeId || this.didTryToCreateNewSelectionFromCache) {\n return; // storeId can be set async as a result of calling find nonprofits with postalCode + zipCode\n }\n try {\n // Immediately set flag to prevent more cache restore attempts from triggering\n this.didTryToCreateNewSelectionFromCache = true;\n\n // Create a new selection ID for the session (e.g., if restoring nonprofit after a completed order)\n\n if (this.selectedNonprofitId) {\n if (!this.selectionId) {\n await this.selectionDataController.exec({ selectedNonprofitId: this.selectedNonprofitId });\n }\n const selectedNonprofit = this.getNonprofitById(this.selectedNonprofitId);\n this.dispatchEvent(\n new BeamNonprofitSelectEvent({\n selectedNonprofitId: this.selectedNonprofitId,\n selectionId: this.selectionId,\n nonprofitName: selectedNonprofit?.nonprofit?.name,\n source: WIDGET_NAMES.select_nonprofit,\n })\n );\n }\n } catch (err) {\n // Ignore error\n }\n }\n\n /**\n * Factory for selection event handler\n *\n * Nonprofit selector implements radio-button semantics:\n * * If nothing is selected, tabbing into selector selects first card\n * * Arrow keys changes focus between cards, but doesn't select\n * * Enter/Space sets selection\n * * If a nonprofit is selected, arrow keys change focus AND selection\n * * Click sets selection\n * @param {number} id\n * @param {number} index\n * @param {{id: number}[]} nonprofits\n * @returns {(evt: Event) => void}\n */\n private makeHandleSelect =\n (id: number, index: number, nonprofits: { nonprofit: { id: number } }[]) => async (evt: Event) => {\n const currentId = this.selectedNonprofitId;\n if (evt instanceof KeyboardEvent) {\n let nextFocus = null;\n switch (evt.key) {\n case \"ArrowUp\":\n case \"ArrowLeft\":\n if (index === 0) {\n nextFocus = nonprofits[nonprofits.length - 1];\n } else {\n nextFocus = nonprofits[index - 1];\n }\n evt.preventDefault();\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n if (index === nonprofits.length - 1) {\n nextFocus = nonprofits[0];\n } else {\n nextFocus = nonprofits[index + 1];\n }\n evt.preventDefault();\n break;\n case \"Enter\":\n case \" \":\n evt.preventDefault();\n break; // continue to toggle-selection block below\n default:\n return;\n }\n if (nextFocus) {\n if (currentId != null) {\n this.selectedNonprofitId = nextFocus.nonprofit.id;\n }\n const focusTarget = this.renderRoot.querySelector(`[data-value=\"${nextFocus.nonprofit.id}\"]`) as HTMLElement;\n if (focusTarget !== null) {\n focusTarget.tabIndex = 0;\n focusTarget.focus();\n }\n return;\n }\n }\n // Handle selection with click or Enter/Space key\n const targetEl = evt.currentTarget;\n if (targetEl instanceof HTMLElement) {\n if (currentId === id) {\n if (this.enableNonprofitDeselection) {\n this.selectedNonprofitId = null; // unset\n this.localStorage.setItem(\"nonprofit\", null);\n } else {\n return;\n }\n } else {\n this.selectedNonprofitId = id;\n }\n }\n await this.selectionDataController.exec({ selectedNonprofitId: this.selectedNonprofitId });\n };\n\n evaluateBreakPoints = debounce(\n () => {\n this.isMobile = window.innerWidth < 768;\n },\n 50,\n { maxWait: 50, leading: true }\n );\n\n public get cssVariables() {\n const defaults = {\n \"--beam-fontFamily\": \"inherit\",\n \"--beam-fontStyle\": \"inherit\",\n \"--beam-fontSize\": \"inherit\",\n \"--beam-textColor\": \"inherit\",\n \"--beam-backgroundColor\": \"inherit\",\n ...progressBarConfigDefaults,\n \"--beam-SelectNonprofit-title-textAlign\": \"inherit\",\n \"--beam-SelectNonprofit-description-textAlign\": \"inherit\",\n \"--beam-SelectNonprofit-maxWidth\": \"800px\",\n \"--beam-SelectNonprofit-options-marginTop\": \"0px\",\n \"--beam-SelectNonprofit-options-iconHeight\": \"24px\",\n \"--beam-SelectNonprofit-options-padding\": \"10px\",\n \"--beam-SelectNonprofit-options-borderRadius\": \"0px\",\n \"--beam-SelectNonprofit-options-borderColor\": \"currentColor\",\n \"--beam-SelectNonprofit-options--selected-borderColor\": \"currentColor\",\n \"--beam-SelectNonprofit-options-backgroundColor\": \"transparent\",\n \"--beam-SelectNonprofit-options-gap\": \"8px\",\n \"--beam-SelectNonprofit-options--selected-backgroundColor\": \"currentColor\",\n \"--beam-SelectNonprofit-details-marginTop\": \"10px\",\n \"--beam-SelectNonprofit-details-borderRadius\": \"0px\",\n \"--beam-SelectNonprofit-details-borderColor\": \"currentColor\",\n \"--beam-SelectNonprofit-details-backgroundColor\": \"inherit\",\n \"--beam-SelectNonprofit-details-padding\": \"10px\",\n ...defineCustomText(\"--beam-SelectNonprofit-title\", {\n fontSize: \"1.25em\",\n fontWeight: \"bold\",\n }),\n \"--beam-SelectNonprofit-header-inline-lineHeight\": \"inherit\",\n ...defineCustomText(\"--beam-SelectNonprofit-title-inline\", {\n fontWeight: \"bold\",\n }),\n \"--beam-SelectNonprofit-title-inline-textTransform\": \"none\",\n \"--beam-SelectNonprofit-title-block-margin-right\": \"8px\",\n ...defineCustomText(\"--beam-SelectNonprofit-description\", {\n marginTop: \"0.5em\",\n }),\n ...defineCustomText(\"--beam-SelectNonprofit-description-inline\"),\n ...defineCustomText(\"--beam-SelectNonprofit-details-cause\", {\n fontSize: \"0.85em\",\n fontWeight: \"bold\",\n }),\n ...defineCustomText(\"--beam-SelectNonprofit-details-beamAttribution\", {\n fontSize: \"0.85em\",\n }),\n ...defineCustomText(\"--beam-SelectNonprofit-details-impactDescription\", {\n fontSize: \"1em\",\n marginTop: \"10px\",\n }),\n \"--beam-SelectNonprofit-details-nonprofitName-fontWeight\": \"bold\",\n \"--beam-SelectNonprofit-details-nonprofitName-fontStyle\": \"inherit\",\n \"--beam-SelectNonprofit-details-fundingProgress-marginTop\": \"10px\",\n ...defineCustomText(\"--beam-SelectNonprofit-details-fundingProgressLabel\", {\n fontSize: \"0.85em\",\n }),\n ...notificationBlipConfigDefaults,\n ...promoPillLabelConfigDefaults,\n \"--beam-SelectNonprofit-promo-block-header-justifyContent\": \"initial\",\n \"--beam-SelectNonprofit-notification-blip-top\": \"4px\",\n \"--beam-SelectNonprofit-notification-blip-left\": \"50%\",\n \"--beam-SelectNonprofit-display-notification-blip\": \"true\",\n \"--beam-SelectNonprofit-enable-inline-header\": \"false\",\n };\n\n const remoteConfig = this.nonprofitListDataController?.data?.config?.web?.theme || {};\n\n const config = { ...defaults, ...remoteConfig };\n\n const serializable = Object.create({\n toCSS() {\n return _cssVariableMap(this as Record<string, string>);\n },\n });\n\n return Object.assign(serializable, config);\n }\n\n static styles = [\n cssReset,\n cssResponsiveUtils,\n css`\n :host {\n display: block;\n max-width: var(--beam-SelectNonprofit-maxWidth, 800px);\n font-family: var(--beam-fontFamily);\n font-style: var(--beam-fontStyle);\n font-size: var(--beam-fontSize);\n background-color: var(--beam-backgroundColor);\n color: var(--beam-textColor);\n word-break: normal;\n }\n\n .details-impactDescription {\n ${useCustomText(\"--beam-SelectNonprofit-details-impactDescription\")}\n }\n\n .details-impactDescription .nonprofitName {\n font-weight: var(--beam-SelectNonprofit-details-nonprofitName-fontWeight);\n font-style: var(--beam-SelectNonprofit-details-nonprofitName-fontStyle, inherit);\n }\n\n /* Note: title/description display is responsive */\n\n .title-block {\n margin-right: var(--beam-SelectNonprofit-title-block-margin-right);\n ${useCustomText(\"--beam-SelectNonprofit-title\")}\n text-align: var(--beam-SelectNonprofit-title-textAlign);\n }\n\n .header-inline {\n line-height: var(--beam-SelectNonprofit-header-inline-lineHeight);\n }\n\n .title-inline {\n font-size: var(--beam-SelectNonprofit-title-inline-fontSize);\n font-weight: var(--beam-SelectNonprofit-title-inline-fontWeight);\n color: var(--beam-SelectNonprofit-title-inline-color);\n font-family: var(--beam-SelectNonprofit-title-inline-fontFamily);\n text-transform: var(--beam-SelectNonprofit-title-inline-textTransform);\n }\n\n .description-inline {\n font-family: var(--beam-SelectNonprofit-description-inline-fontFamily);\n font-weight: var(--beam-SelectNonprofit-description-inline-fontWeight);\n color: var(--beam-SelectNonprofit-description-inline-color);\n text-transform: var(--beam-SelectNonprofit-description-inline-textTransform);\n font-size: var(--beam-SelectNonprofit-description-inline-fontSize);\n }\n\n .description {\n ${useCustomText(\"--beam-SelectNonprofit-description\")}\n text-align: var(--beam-SelectNonprofit-description-textAlign);\n }\n\n .block-header-promo-pill-container {\n display: flex;\n align-items: center;\n justify-content: var(--beam-SelectNonprofit-promo-block-header-justifyContent);\n }\n\n .block-header-promo-pill-container-responsive {\n flex-direction: column;\n align-items: flex-start;\n }\n .block-header-promo-pill-center-block-container-responsive {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n }\n .block-header-promo-pill-container-responsive beam-promo-info-pill {\n order: -1;\n }\n .block-header-promo-pill-center-block-container-responsive beam-promo-info-pill {\n order: -1;\n }\n .option {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n beam-notification-blip::part(notification-blip-container) {\n position: absolute;\n top: var(--beam-SelectNonprofit-notification-blip-top);\n left: var(--beam-SelectNonprofit-notification-blip-left);\n }\n `,\n ];\n\n protected render() {\n const { selectedNonprofitId } = this;\n const { data, loading } = this.nonprofitListDataController;\n\n if (loading && !data) {\n return _loading();\n }\n if (this.nonprofitListDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.nonprofitListDataController.error });\n }\n return \"\";\n }\n if (this.selectionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.selectionDataController.error });\n }\n // do not show error screen for interactive errors by default\n }\n\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((np) => !np.promo || !np.promo.isActive);\n const getCssVar = (key: string) => this.cssVariables[key];\n const shouldDisplayPromoBlip = getCssVar(\"--beam-SelectNonprofit-display-notification-blip\") === \"true\";\n const isTitleTextCenterAligned = getCssVar(\"--beam-SelectNonprofit-title-textAlign\") === \"center\";\n const shouldDisplayInlineHeader =\n getCssVar(\"--beam-SelectNonprofit-enable-inline-header\") === \"true\" || this.isMobile;\n\n const defaultHeader = html`<h3\n class=${classMap({\n \"title-block\": true,\n \"d-none\": true,\n \"d-block\": !shouldDisplayInlineHeader,\n })}\n part=\"title\"\n id=\"beam-SelectNonprofit-title\"\n >\n ${localizeUserString(this.configLang, data?.config?.web?.title || \"\") || strings[this.configLang].ctaTitle()}\n </h3>`;\n\n const renderPromoHeaderContent = () => {\n const classes = classMap({\n \"block-header-promo-pill-container\": !shouldDisplayInlineHeader && !isTitleTextCenterAligned,\n \"block-header-promo-pill-container-responsive\": shouldDisplayInlineHeader && !isTitleTextCenterAligned,\n \"block-header-promo-pill-center-block-container-responsive\":\n !shouldDisplayInlineHeader && isTitleTextCenterAligned,\n });\n\n const styles = styleMap({\n display: shouldDisplayInlineHeader ? \"flex\" : undefined,\n });\n\n return shouldUseNewPromoUI\n ? html`<div class=${classes} style=${styles}>\n ${defaultHeader}\n <beam-promo-info-pill .promo=${data?.config?.web?.promo}></beam-promo-info-pill>\n </div>`\n : defaultHeader;\n };\n\n const renderHeader = () => {\n return html`\n <div part=\"heading\">\n ${renderPromoHeaderContent()}\n <p class=\"description\" part=\"description\">\n <span class=${classMap({\n \"d-none\": true,\n \"d-inline\": !shouldDisplayInlineHeader,\n })}>\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=${classMap({\n \"d-none\": !shouldDisplayInlineHeader,\n \"header-inline\": true,\n })}>\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 };\n\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n ${renderHeader()}\n <div\n class=\"options\"\n part=\"options\"\n role=\"radiogroup\"\n aria-labelledby=\"beam-SelectNonprofit-title\"\n style=\"display: flex; gap: var(--beam-SelectNonprofit-options-gap); margin: 10px 0 0 0;\"\n >\n ${repeat(\n nonprofits,\n (i) => i.nonprofit.id,\n ({ nonprofit, promo }, index) => {\n const isSelected = selectedNonprofitId === nonprofit.id;\n const isFocusable = isSelected || (selectedNonprofit == null && index === 0);\n const shouldAddPromoBlip =\n promo?.isActive && data?.config.web.promo && hasNonprofitWithInactivePromo && shouldDisplayPromoBlip;\n return html`\n <div\n class=\"option\"\n part=\"option\"\n role=\"radio\"\n tabindex=\"${isFocusable ? 0 : -1}\"\n data-value=${nonprofit.id}\n aria-checked=${isSelected}\n @click=${this.makeHandleSelect(nonprofit.id, index, nonprofits)}\n @keydown=${this.makeHandleSelect(nonprofit.id, index, nonprofits)}\n aria-label=\"${localizeUserString(this.configLang, nonprofit.cause || \"\")}\"\n style=\"${styleMap({\n cursor: \"pointer\",\n flex: \"1\",\n textAlign: \"center\",\n lineHeight: \"1\",\n marginTop: \"var(--beam-SelectNonprofit-options-marginTop, 0px)\",\n padding: \"var(--beam-SelectNonprofit-options-padding, 10px)\",\n borderWidth: \"var(--beam-SelectNonprofit-options-borderWidth, 1px)\",\n borderStyle: \"solid\",\n position: \"relative\",\n borderRadius: \"var(--beam-SelectNonprofit-options-borderRadius, 0)\",\n borderColor: isSelected\n ? nonprofit.causeColor || \"var(--beam-SelectNonprofit-options--selected-borderColor, currentColor)\"\n : \"var(--beam-SelectNonprofit-options-borderColor, currentColor)\",\n backgroundColor: isSelected\n ? nonprofit.causeColor ||\n \"var(--beam-SelectNonprofit-options--selected-backgroundColor, currentColor)\"\n : \"var(--beam-SelectNonprofit-options-backgroundColor, transparent)\",\n })}\"\n >\n <img\n src=\"${isSelected ? nonprofit.causeIconSelectedUrl : nonprofit.causeIconUrl}\"\n alt=\"\"\n role=\"presentation\"\n style=\"\n height: var(--beam-SelectNonprofit-options-iconHeight, 24px);\n user-select: none;\n vertical-align: -webkit-baseline-middle;\n \"\n />\n ${shouldAddPromoBlip ? html`<beam-notification-blip></beam-notification-blip>` : html``}\n </div>\n `;\n }\n )}\n </div>\n ${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 style=\"display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap-reverse\">\n <span\n class=\"details-cause\"\n style=\"flex: 0 1; white-space: nowrap; ${useCustomText(\"--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\ndefineCustomElement(BeamSelectNonprofit);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-select-nonprofit\": BeamSelectNonprofit;\n }\n}\n"],"names":["BeamNotificationBlip","LitElement","css","html","notificationBlipConfigDefaults","strings","donationPercentage","q","s","C","h","e","t","r","BeamSelectNonprofit","DEFAULT_BASE_URL","evt","promoCodesFromPlugin","c","enforceConfig","beamCartId","getBeamCartId","BEAM_CART_COOKIE_NAME","cartId","getExternalCartId","cart","manualPromoCodes","formattedPromos","formatStoreAndReturnPromoCodes","code","shouldSendPromos","isEmptyPromoData","BeamWidgetStoredPromoCodesEvent","WIDGET_NAMES","res","postChainEligibleNonprofitsForCart","np","selectedNonprofitId","result","postSelectNonprofit","selectedNonprofit","BeamNonprofitSelectEvent","BeamNonprofitSelectionRemovedEvent","AsyncController","createScopedLocalStorage","id","index","nonprofits","currentId","nextFocus","focusTarget","debounce","SUPPORTED_LANGUAGES","parseJsonStringArray","getPromoCodesFromCart","response","setPromoCodesInLocalStorage","setPromoCodeInCookie","BeamCartChangeEvent","BeamPromoCodesStoredEvent","changedProperties","requireNewDataProps","prop","currentTimestamp","selectionTtl","selectionCreatedAt","isSelectionExpired","createdAt","data","cacheTtl","err","logger","defaults","progressBarConfigDefaults","defineCustomText","promoPillLabelConfigDefaults","remoteConfig","config","_cssVariableMap","loading","_loading","_errorMessage","shouldUseNewPromoUI","hasNonprofitWithInactivePromo","getCssVar","key","shouldDisplayPromoBlip","isTitleTextCenterAligned","shouldDisplayInlineHeader","defaultHeader","classMap","localizeUserString","renderPromoHeaderContent","classes","styles","styleMap","renderHeader","repeat","i","nonprofit","promo","isSelected","isFocusable","shouldAddPromoBlip","useCustomText","unsafeHTML","cssReset","cssResponsiveUtils","__decorateClass","property","a","b","isEqual","state","defineCustomElement"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import{m as I,y as m,f as D,g as p,t as L,h as M,q as F,u as x,k as P}from"../chunks/lit-5uUWs2aX.esm.js";import{d as W}from"../chunks/lodash-7H4x2457.esm.js";import{D as A,e as U,u as R,W as _,S as z}from"../chunks/routes-CaSRr919.esm.js";import{u as d,A as C,d as u,a as E,_ as N,i as l}from"../chunks/localize-cDQFOecn.esm.js";import{p as H}from"../chunks/progress-bar-oJB_t7od.esm.js";import{c as j,d as K,e as v}from"../chunks/enforce-config-Cw52SuAc.esm.js";import{_ as G}from"../chunks/loading-template-DXNS89Th.esm.js";import{makeApiKeyHeader as k}from"../utils/makeApiKeyHeader.esm.js";import{B as O}from"../chunks/beam-errors-Ci0d3926.esm.js";import{createScopedLocalStorage as Y}from"../utils/local-storage.esm.js";import{c as q}from"../chunks/css-card-grid-B6IEaTiP.esm.js";import{c as V}from"../chunks/events-BohmT6Lp.esm.js";import"./beam-partner-logos.esm.js";import"../utils/logger.esm.js";const J=({height:i="1em",width:o="1em"}={})=>m`
1
+ import{m as I,y as m,f as D,g as p,t as L,h as M,u as F,q as x,k as P}from"../chunks/lit-WqMxC_PA.esm.js";import{d as W}from"../chunks/lodash-7H4x2457.esm.js";import{D as A,e as U,u as R,W as _,S as z}from"../chunks/routes-pcL-CUiQ.esm.js";import{u as d,A as C,d as u,a as E,_ as N,i as l}from"../chunks/localize-Btu9xYcE.esm.js";import{p as H}from"../chunks/progress-bar-DF7UuuHb.esm.js";import{c as j,d as K,e as v}from"../chunks/enforce-config-CZ3ToOgr.esm.js";import{_ as G}from"../chunks/loading-template-DG4lkIIc.esm.js";import{makeApiKeyHeader as k}from"../utils/makeApiKeyHeader.esm.js";import{B as O}from"../chunks/beam-errors-Ci0d3926.esm.js";import{createScopedLocalStorage as Y}from"../utils/local-storage.esm.js";import{c as q}from"../chunks/css-card-grid-CvoGpsJH.esm.js";import{c as V}from"../chunks/events-BohmT6Lp.esm.js";import"./beam-partner-logos.esm.js";import"../utils/logger.esm.js";const J=({height:i="1em",width:o="1em"}={})=>m`
2
2
  <svg
3
3
  style="${I({height:i,width:o,position:"relative",bottom:"0"})}"
4
4
  xmlns="http://www.w3.org/2000/svg"
@@ -1,4 +1,4 @@
1
- import{m as I,y as m,f as D,g as p,t as L,h as M,q as F,u as x,k as P}from"../chunks/lit-5uUWs2aX.esm.js";import{d as W}from"../chunks/lodash-7H4x2457.esm.js";import{D as A,e as U,u as R,W as _,S as z}from"../chunks/routes-KHEaM_40.esm.js";import{u as d,A as C,d as u,a as E,_ as N,i as l}from"../chunks/localize-CQCRjY9s.esm.js";import{p as H}from"../chunks/progress-bar-oJB_t7od.esm.js";import{c as j,d as K,e as v}from"../chunks/enforce-config-CQb5MiAV.esm.js";import{_ as G}from"../chunks/loading-template-DXNS89Th.esm.js";import{makeApiKeyHeader as k}from"../utils/makeApiKeyHeader.js";import{B as O}from"../chunks/beam-errors-Ci0d3926.esm.js";import{createScopedLocalStorage as Y}from"../utils/local-storage.js";import{c as q}from"../chunks/css-card-grid-B6IEaTiP.esm.js";import{c as V}from"../chunks/events-BohmT6Lp.esm.js";import"./beam-partner-logos.js";import"../utils/logger.js";const J=({height:i="1em",width:o="1em"}={})=>m`
1
+ import{m as I,y as m,f as D,g as p,t as L,h as M,u as F,q as x,k as P}from"../chunks/lit-WqMxC_PA.esm.js";import{d as W}from"../chunks/lodash-7H4x2457.esm.js";import{D as A,e as U,u as R,W as _,S as z}from"../chunks/routes-CAhDCFDX.esm.js";import{u as d,A as C,d as u,a as E,_ as N,i as l}from"../chunks/localize-C25pEGnx.esm.js";import{p as H}from"../chunks/progress-bar-DF7UuuHb.esm.js";import{c as j,d as K,e as v}from"../chunks/enforce-config-Ba1JkOHs.esm.js";import{_ as G}from"../chunks/loading-template-DG4lkIIc.esm.js";import{makeApiKeyHeader as k}from"../utils/makeApiKeyHeader.js";import{B as O}from"../chunks/beam-errors-Ci0d3926.esm.js";import{createScopedLocalStorage as Y}from"../utils/local-storage.js";import{c as q}from"../chunks/css-card-grid-CvoGpsJH.esm.js";import{c as V}from"../chunks/events-BohmT6Lp.esm.js";import"./beam-partner-logos.js";import"../utils/logger.js";const J=({height:i="1em",width:o="1em"}={})=>m`
2
2
  <svg
3
3
  style="${I({height:i,width:o,position:"relative",bottom:"0"})}"
4
4
  xmlns="http://www.w3.org/2000/svg"
@@ -1,7 +1,7 @@
1
1
  import { waitForElement } from '../utils/wait-for-element.js';
2
2
  export { initNetworkListeners } from '../utils/network-listeners.js';
3
3
  export { e as events } from '../chunks/events-BKkf9u9l.esm.js';
4
- export { B as BeamShopifyCartIntegrationConfig, T as TBeamOrderPageParams, a as addBeamAttributesToCart, d as appendBeamAttributesToCart, b as appendStatsigToShopifyCartAttributes, c as appendToShopifyCartBeamAttribute, g as getCurrentCart, e as getShopifyCart, r as registerCartIntegration, s as showBeamOrderPageWidgets, t as trackCart } from '../chunks/order-page-tSPKLQ24.esm.js';
4
+ export { B as BeamShopifyCartIntegrationConfig, T as TBeamOrderPageParams, a as addBeamAttributesToCart, d as appendBeamAttributesToCart, b as appendStatsigToShopifyCartAttributes, c as appendToShopifyCartBeamAttribute, f as getBeamAttributesForCart, g as getCurrentCart, e as getShopifyCart, r as registerCartIntegration, s as showBeamOrderPageWidgets, t as trackCart } from '../chunks/order-page-Cerye00Q.esm.js';
5
5
  import '../chunks/cart-contents-CUgc4y1N.esm.js';
6
6
  import '../chunks/openapi-spec-VAt3phhg.esm.js';
7
7
  import '../chunks/promo-types-C1unMpo2.esm.js';
@@ -17,7 +17,7 @@ import '../chunks/progress-bar-CveZ8E6Q.esm.js';
17
17
  import '../chunks/promo-pill-label-BXRqZHET.esm.js';
18
18
  import './beam-partner-logos.js';
19
19
  import './impact-overview.js';
20
- import '../chunks/share-button-DBVhw4qa.esm.js';
20
+ import '../chunks/share-button-B9hpxBVr.esm.js';
21
21
  import '../chunks/routes-DDRd747e.esm.js';
22
22
 
23
23
  /**
@@ -1,2 +1,2 @@
1
- import{waitForElement as t}from"../utils/wait-for-element.esm.js";import{getCookieValue as r,getCookieMap as o}from"../utils/cookies.esm.js";import{initNetworkListeners as K}from"../utils/network-listeners.esm.js";import{e as O}from"../chunks/events-BohmT6Lp.esm.js";import{z as Y,p as _,W as j,L as q,_ as D,I as G,K as H,s as J,Y as Q}from"../chunks/order-page-FzVtMkga.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../chunks/lodash-7H4x2457.esm.js";import"../utils/logger.esm.js";import"../utils/local-storage.esm.js";import"../utils/memoize-last.esm.js";import"../chunks/promoManager-fl54hq13.esm.js";import"../chunks/cart-contents-DkoytiZh.esm.js";import"../chunks/update-cart-DNfl9QP2.esm.js";import"../chunks/routes-CaSRr919.esm.js";import"../utils/remote-session.esm.js";import"../utils/cart.esm.js";import"./post-purchase.esm.js";import"../chunks/lit-5uUWs2aX.esm.js";import"../chunks/enforce-config-Cw52SuAc.esm.js";import"../chunks/localize-cDQFOecn.esm.js";import"./redeem-transaction.esm.js";import"../chunks/progress-bar-oJB_t7od.esm.js";import"../chunks/promo-pill-label-D9ptiGak.esm.js";import"../chunks/vendor-DRA8u-S7.esm.js";import"./beam-partner-logos.esm.js";import"../chunks/loading-template-DXNS89Th.esm.js";import"../chunks/css-card-grid-B6IEaTiP.esm.js";import"./impact-overview.esm.js";import"../chunks/_share-dialog-dependencies-CHbTSPha.esm.js";import"../chunks/share-button-CvTUluNq.esm.js";import"../chunks/is-all-html-elements-fcB7UUA1.esm.js";import"../chunks/share-button-R7jgVCPv.esm.js";import"../chunks/responsive-9jAzOYoE.esm.js";const i={waitForElement:t,getCookieMap:o,getCookieValue:r};export{Y as addBeamAttributesToCart,_ as appendBeamAttributesToCart,j as appendStatsigToShopifyCartAttributes,q as appendToShopifyCartBeamAttribute,O as events,D as getCurrentCart,G as getShopifyCart,K as initNetworkListeners,H as registerCartIntegration,J as showBeamOrderPageWidgets,Q as trackCart,i as utils};
1
+ import{waitForElement as t}from"../utils/wait-for-element.esm.js";import{getCookieValue as r,getCookieMap as o}from"../utils/cookies.esm.js";import{initNetworkListeners as K}from"../utils/network-listeners.esm.js";import{e as O}from"../chunks/events-BohmT6Lp.esm.js";import{z as Y,f as _,W as j,L as q,p as D,_ as G,I as H,K as J,s as Q,Y as R}from"../chunks/order-page-BbrDKYmJ.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../chunks/lodash-7H4x2457.esm.js";import"../utils/logger.esm.js";import"../utils/local-storage.esm.js";import"../utils/memoize-last.esm.js";import"../chunks/promoManager-fl54hq13.esm.js";import"../chunks/cart-contents-DkoytiZh.esm.js";import"../chunks/update-cart-BLsw_Faz.esm.js";import"../chunks/routes-pcL-CUiQ.esm.js";import"../utils/remote-session.esm.js";import"../utils/cart.esm.js";import"./post-purchase.esm.js";import"../chunks/lit-WqMxC_PA.esm.js";import"../chunks/enforce-config-CZ3ToOgr.esm.js";import"../chunks/localize-Btu9xYcE.esm.js";import"./redeem-transaction.esm.js";import"../chunks/progress-bar-DF7UuuHb.esm.js";import"../chunks/promo-pill-label-CbW_Vcru.esm.js";import"../chunks/vendor-KKSARHWL.esm.js";import"./beam-partner-logos.esm.js";import"../chunks/loading-template-DG4lkIIc.esm.js";import"../chunks/css-card-grid-CvoGpsJH.esm.js";import"./impact-overview.esm.js";import"../chunks/_share-dialog-dependencies-BwdvNwrJ.esm.js";import"../chunks/share-button-BvUcpOcx.esm.js";import"../chunks/is-all-html-elements-fcB7UUA1.esm.js";import"../chunks/share-button-C-DXj68Z.esm.js";import"../chunks/responsive-BR8qUfBa.esm.js";const i={waitForElement:t,getCookieMap:o,getCookieValue:r};export{Y as addBeamAttributesToCart,_ as appendBeamAttributesToCart,j as appendStatsigToShopifyCartAttributes,q as appendToShopifyCartBeamAttribute,O as events,D as getBeamAttributesForCart,G as getCurrentCart,H as getShopifyCart,K as initNetworkListeners,J as registerCartIntegration,Q as showBeamOrderPageWidgets,R as trackCart,i as utils};
2
2
  //# sourceMappingURL=shopify.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shopify.esm.js","sources":["../../src/components/shopify/index.ts"],"sourcesContent":["/**\n * @deprecated\n * This file is preserved for backwards compatability, but future users should import from:\n * - integrations/shopify\n * - integration/utils\n * */\n\nimport { waitForElement } from \"../../utils/wait-for-element\";\nimport { getCookieMap, getCookieValue } from \"../../utils/cookies\";\n\nconst utils = {\n waitForElement,\n getCookieMap,\n getCookieValue,\n};\n\nexport { utils };\nexport { initNetworkListeners } from \"../../utils/network-listeners\";\nexport * as events from \"../../utils/events\";\n\nexport * from \"../../integrations/shopify\";\n"],"names":["utils","waitForElement","getCookieMap","getCookieValue"],"mappings":"8iDAUA,MAAMA,EAAQ,CACZ,eAAAC,EACA,aAAAC,EACA,eAAAC,CACF"}
1
+ {"version":3,"file":"shopify.esm.js","sources":["../../src/components/shopify/index.ts"],"sourcesContent":["/**\n * @deprecated\n * This file is preserved for backwards compatability, but future users should import from:\n * - integrations/shopify\n * - integration/utils\n * */\n\nimport { waitForElement } from \"../../utils/wait-for-element\";\nimport { getCookieMap, getCookieValue } from \"../../utils/cookies\";\n\nconst utils = {\n waitForElement,\n getCookieMap,\n getCookieValue,\n};\n\nexport { utils };\nexport { initNetworkListeners } from \"../../utils/network-listeners\";\nexport * as events from \"../../utils/events\";\n\nexport * from \"../../integrations/shopify\";\n"],"names":["utils","waitForElement","getCookieMap","getCookieValue"],"mappings":"qjDAUA,MAAMA,EAAQ,CACZ,eAAAC,EACA,aAAAC,EACA,eAAAC,CACF"}
@@ -1,2 +1,2 @@
1
- import{waitForElement as t}from"../utils/wait-for-element.js";import{getCookieValue as r,getCookieMap as o}from"../utils/cookies.js";import{initNetworkListeners as K}from"../utils/network-listeners.js";import{e as O}from"../chunks/events-BohmT6Lp.esm.js";import{z as Y,p as _,W as j,L as q,_ as D,I as G,K as H,s as J,Y as Q}from"../chunks/order-page-CMGPM57D.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../chunks/lodash-7H4x2457.esm.js";import"../utils/logger.js";import"../utils/local-storage.js";import"../utils/memoize-last.js";import"../chunks/promoManager-B9cTR1R3.esm.js";import"../chunks/cart-contents-DkoytiZh.esm.js";import"../chunks/update-cart-3JFUCJLD.esm.js";import"../chunks/routes-KHEaM_40.esm.js";import"../utils/remote-session.js";import"../utils/cart.js";import"./post-purchase.js";import"../chunks/lit-5uUWs2aX.esm.js";import"../chunks/enforce-config-CQb5MiAV.esm.js";import"../chunks/localize-CQCRjY9s.esm.js";import"./redeem-transaction.js";import"../chunks/progress-bar-oJB_t7od.esm.js";import"../chunks/promo-pill-label-D9ptiGak.esm.js";import"../chunks/vendor-DRA8u-S7.esm.js";import"./beam-partner-logos.js";import"../chunks/loading-template-DXNS89Th.esm.js";import"../chunks/css-card-grid-B6IEaTiP.esm.js";import"./impact-overview.js";import"../chunks/_share-dialog-dependencies-B3N69ml2.esm.js";import"../chunks/share-button-BbG-gnwj.esm.js";import"../chunks/is-all-html-elements-fcB7UUA1.esm.js";import"../chunks/share-button-R7jgVCPv.esm.js";import"../chunks/responsive-9jAzOYoE.esm.js";const i={waitForElement:t,getCookieMap:o,getCookieValue:r};export{Y as addBeamAttributesToCart,_ as appendBeamAttributesToCart,j as appendStatsigToShopifyCartAttributes,q as appendToShopifyCartBeamAttribute,O as events,D as getCurrentCart,G as getShopifyCart,K as initNetworkListeners,H as registerCartIntegration,J as showBeamOrderPageWidgets,Q as trackCart,i as utils};
1
+ import{waitForElement as t}from"../utils/wait-for-element.js";import{getCookieValue as r,getCookieMap as o}from"../utils/cookies.js";import{initNetworkListeners as K}from"../utils/network-listeners.js";import{e as O}from"../chunks/events-BohmT6Lp.esm.js";import{z as Y,f as _,W as j,L as q,p as D,_ as G,I as H,K as J,s as Q,Y as R}from"../chunks/order-page-stMlaqKK.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../chunks/lodash-7H4x2457.esm.js";import"../utils/logger.js";import"../utils/local-storage.js";import"../utils/memoize-last.js";import"../chunks/promoManager-B9cTR1R3.esm.js";import"../chunks/cart-contents-DkoytiZh.esm.js";import"../chunks/update-cart-ciJaz8li.esm.js";import"../chunks/routes-CAhDCFDX.esm.js";import"../utils/remote-session.js";import"../utils/cart.js";import"./post-purchase.js";import"../chunks/lit-WqMxC_PA.esm.js";import"../chunks/enforce-config-Ba1JkOHs.esm.js";import"../chunks/localize-C25pEGnx.esm.js";import"./redeem-transaction.js";import"../chunks/progress-bar-DF7UuuHb.esm.js";import"../chunks/promo-pill-label-CbW_Vcru.esm.js";import"../chunks/vendor-KKSARHWL.esm.js";import"./beam-partner-logos.js";import"../chunks/loading-template-DG4lkIIc.esm.js";import"../chunks/css-card-grid-CvoGpsJH.esm.js";import"./impact-overview.js";import"../chunks/_share-dialog-dependencies-QaTONkKb.esm.js";import"../chunks/share-button-CtklpZOO.esm.js";import"../chunks/is-all-html-elements-fcB7UUA1.esm.js";import"../chunks/share-button-BYVId0-U.esm.js";import"../chunks/responsive-BR8qUfBa.esm.js";const i={waitForElement:t,getCookieMap:o,getCookieValue:r};export{Y as addBeamAttributesToCart,_ as appendBeamAttributesToCart,j as appendStatsigToShopifyCartAttributes,q as appendToShopifyCartBeamAttribute,O as events,D as getBeamAttributesForCart,G as getCurrentCart,H as getShopifyCart,K as initNetworkListeners,J as registerCartIntegration,Q as showBeamOrderPageWidgets,R as trackCart,i as utils};
2
2
  //# sourceMappingURL=shopify.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shopify.js","sources":["../../src/components/shopify/index.ts"],"sourcesContent":["/**\n * @deprecated\n * This file is preserved for backwards compatability, but future users should import from:\n * - integrations/shopify\n * - integration/utils\n * */\n\nimport { waitForElement } from \"../../utils/wait-for-element\";\nimport { getCookieMap, getCookieValue } from \"../../utils/cookies\";\n\nconst utils = {\n waitForElement,\n getCookieMap,\n getCookieValue,\n};\n\nexport { utils };\nexport { initNetworkListeners } from \"../../utils/network-listeners\";\nexport * as events from \"../../utils/events\";\n\nexport * from \"../../integrations/shopify\";\n"],"names":["utils","waitForElement","getCookieMap","getCookieValue"],"mappings":"8/CAUA,MAAMA,EAAQ,CACZ,eAAAC,EACA,aAAAC,EACA,eAAAC,CACF"}
1
+ {"version":3,"file":"shopify.js","sources":["../../src/components/shopify/index.ts"],"sourcesContent":["/**\n * @deprecated\n * This file is preserved for backwards compatability, but future users should import from:\n * - integrations/shopify\n * - integration/utils\n * */\n\nimport { waitForElement } from \"../../utils/wait-for-element\";\nimport { getCookieMap, getCookieValue } from \"../../utils/cookies\";\n\nconst utils = {\n waitForElement,\n getCookieMap,\n getCookieValue,\n};\n\nexport { utils };\nexport { initNetworkListeners } from \"../../utils/network-listeners\";\nexport * as events from \"../../utils/events\";\n\nexport * from \"../../integrations/shopify\";\n"],"names":["utils","waitForElement","getCookieMap","getCookieValue"],"mappings":"qgDAUA,MAAMA,EAAQ,CACZ,eAAAC,EACA,aAAAC,EACA,eAAAC,CACF"}
@@ -1,4 +1,4 @@
1
- import{f as p,g as o,t as n,h as m,y as g}from"../chunks/lit-5uUWs2aX.esm.js";import"../chunks/vendor-DRA8u-S7.esm.js";import"../chunks/_share-dialog-dependencies-CHbTSPha.esm.js";import"../chunks/progress-bar-oJB_t7od.esm.js";import"./beam-partner-logos.esm.js";import{c as f,d as b,e as y}from"../chunks/enforce-config-Cw52SuAc.esm.js";import{D as u,S as w,g as x,W as I}from"../chunks/routes-CaSRr919.esm.js";import{_ as U}from"../chunks/loading-template-DXNS89Th.esm.js";import{u as d,s as r}from"../chunks/share-button-R7jgVCPv.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../utils/logger.esm.js";var S=Object.defineProperty,a=(l,t,i,k)=>{for(var s=void 0,c=l.length-1,h;c>=0;c--)(h=l[c])&&(s=h(t,i,s)||s);return s&&S(t,i,s),s};class e extends m{constructor(){super(...arguments),this.baseUrl=u,this.lang="en",this.debug=!1,this.brandName=null,this.shareImageUrl=null,this.isMobile=!1,this.windowResized=!1,this.checkViewport=()=>{this.windowResized=window.innerWidth<=768}}get configLang(){return w[this.lang]||"en"}connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this.checkViewport),this.checkViewport()}disconnectedCallback(){window.removeEventListener("resize",this.checkViewport),super.disconnectedCallback()}async fetchImpactData(){y(["apiKey","storeId","nonprofitId"],this);try{return await x({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},queryParams:{storeId:this.storeId,personalImpactLimit:0,nonprofitId:this.nonprofitId,widgetName:I.community_impact,version:"1.0.0",lang:this.configLang,transactionId:this.transactionId??void 0}})}catch(t){throw this.debug&&console.error("Failed to fetch impact data",t),t}}async updateImpactData(){try{const t=await this.fetchImpactData();if(t&&(this.brandName=t.chain.name,this.shareImageUrl=t.promoAssetUrl||t.personalImpactAssetUrl||t.community[0].share.imageUrl,this.shareImageUrl)){const i=await d(this.shareImageUrl);this.file=i,this.dataUrl=URL.createObjectURL(i)}}catch(t){this.debug&&console.error("Error updating impact data:",t)}}async firstUpdated(){await this.updateImpactData(),this.isMobile=/Mobi|Android/i.test(navigator.userAgent)||"ontouchstart"in window||navigator.maxTouchPoints>0}async openSystemShareSheet(t){if(t)try{const i=await d(t);navigator.share&&this.brandName&&await navigator.share({files:[i],title:r[this.lang].impactShareTitle(),text:r[this.lang].impactShareText({brandName:this.brandName})})}catch(i){this.debug&&console.error("Failed to open share sheet",i)}}async handleClickCopy(){if(this.file)try{await navigator.clipboard.write([new ClipboardItem({"image/png":this.file})])}catch(t){this.debug&&console.error("Failed to copy image to clipboard:",t)}}handleClickDownload(t){const i=t.currentTarget;this.isMobile&&this.shareImageUrl?(t.preventDefault(),this.openSystemShareSheet(this.shareImageUrl)):this.dataUrl&&(i.href=this.dataUrl,i.download=r[this.lang].impactShareTitle())}render(){return!this.brandName||!this.shareImageUrl||!this.dataUrl?U():g`
1
+ import{f as m,g as o,t as n,h as g,y as f}from"../chunks/lit-WqMxC_PA.esm.js";import"../chunks/vendor-KKSARHWL.esm.js";import"../chunks/_share-dialog-dependencies-BwdvNwrJ.esm.js";import"../chunks/progress-bar-DF7UuuHb.esm.js";import"./beam-partner-logos.esm.js";import{c as b,d as y,e as u}from"../chunks/enforce-config-CZ3ToOgr.esm.js";import{D as w,S as x,g as I,W as U}from"../chunks/routes-pcL-CUiQ.esm.js";import{_ as S}from"../chunks/loading-template-DG4lkIIc.esm.js";import{u as d,s as r,p}from"../chunks/share-button-C-DXj68Z.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../utils/logger.esm.js";var k=Object.defineProperty,a=(l,t,i,v)=>{for(var s=void 0,c=l.length-1,h;c>=0;c--)(h=l[c])&&(s=h(t,i,s)||s);return s&&k(t,i,s),s};class e extends g{constructor(){super(...arguments),this.baseUrl=w,this.lang="en",this.debug=!1,this.brandName=null,this.shareImageUrl=null,this.isMobile=!1,this.windowResized=!1,this.checkViewport=()=>{this.windowResized=window.innerWidth<=768}}get configLang(){return x[this.lang]||"en"}connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this.checkViewport),this.checkViewport()}disconnectedCallback(){window.removeEventListener("resize",this.checkViewport),super.disconnectedCallback()}async fetchImpactData(){u(["apiKey","storeId","nonprofitId"],this);try{return await I({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},queryParams:{storeId:this.storeId,personalImpactLimit:0,nonprofitId:this.nonprofitId,widgetName:U.community_impact,version:"1.0.0",lang:this.configLang,transactionId:this.transactionId??void 0}})}catch(t){throw this.debug&&console.error("Failed to fetch impact data",t),t}}async updateImpactData(){try{const t=await this.fetchImpactData();if(t&&(this.brandName=t.chain.name,this.shareImageUrl=t.promoAssetUrl||t.personalImpactAssetUrl||t.community[0].share.imageUrl,this.shareImageUrl)){const i=await d(this.shareImageUrl);this.file=i,this.dataUrl=URL.createObjectURL(i)}}catch(t){this.debug&&console.error("Error updating impact data:",t)}}async firstUpdated(){await this.updateImpactData(),this.isMobile=/Mobi|Android/i.test(navigator.userAgent)||"ontouchstart"in window||navigator.maxTouchPoints>0}async openSystemShareSheet(t){if(t)try{const i=await d(t);navigator.share&&this.brandName&&await navigator.share({files:[i],title:r[this.lang].impactShareTitle(),text:r[this.lang].impactShareText({brandName:this.brandName})})}catch(i){this.debug&&console.error("Failed to open share sheet",i)}}async handleClickCopy(){if(this.file)try{this.apiKey&&this.transactionId?p({baseUrl:this.baseUrl,apiKey:this.apiKey||"",requestBody:{eventName:"ExtensibilityCopyImageButtonClick",nonprofitId:this.nonprofitId,storeId:this.storeId,timestamp:Date.now(),transactionId:Number(this.transactionId)}}).catch(()=>null):console.error("Missing data for social share analytics. Skipping send"),await navigator.clipboard.write([new ClipboardItem({"image/png":this.file})])}catch(t){this.debug&&console.error("Failed to copy image to clipboard:",t)}}handleClickDownload(t){this.apiKey&&this.transactionId?p({baseUrl:this.baseUrl,apiKey:this.apiKey||"",requestBody:{eventName:"ExtensibilityDownloadImageButtonClick",nonprofitId:this.nonprofitId,storeId:this.storeId,timestamp:Date.now(),transactionId:Number(this.transactionId)}}).catch(()=>null):console.error("Missing data for social share analytics. Skipping send");const i=t.currentTarget;this.isMobile&&this.shareImageUrl?(t.preventDefault(),this.openSystemShareSheet(this.shareImageUrl)):this.dataUrl&&(i.href=this.dataUrl,i.download=r[this.lang].impactShareTitle())}render(){return!this.brandName||!this.shareImageUrl||!this.dataUrl?S():f`
2
2
  <div class="share-container ${this.windowResized||this.isMobile?"mobile":"desktop"}">
3
3
  <h2 class="share-title">${r[this.lang].impactShareTitle()}</h2>
4
4
  <p class="share-text">${r[this.lang].impactShareText({brandName:this.brandName})}</p>
@@ -29,7 +29,7 @@ import{f as p,g as o,t as n,h as m,y as g}from"../chunks/lit-5uUWs2aX.esm.js";im
29
29
  </a>
30
30
  </div>
31
31
  </div>
32
- `}}e.tagName="beam-social-share",e.styles=[f,p`
32
+ `}}e.tagName="beam-social-share",e.styles=[b,m`
33
33
  @font-face {
34
34
  font-family: "Mabry-Bold";
35
35
  src: url("../../../assets/fonts/mabry-bold.otf") format("opentype");
@@ -166,5 +166,5 @@ import{f as p,g as o,t as n,h as m,y as g}from"../chunks/lit-5uUWs2aX.esm.js";im
166
166
  margin: 5px 0;
167
167
  }
168
168
  }
169
- `],a([o({type:String})],e.prototype,"apiKey"),a([o({type:Number})],e.prototype,"storeId"),a([o({type:Number})],e.prototype,"nonprofitId"),a([o({type:String})],e.prototype,"baseUrl"),a([o({type:String})],e.prototype,"lang"),a([o({type:Boolean})],e.prototype,"debug"),a([o({type:String})],e.prototype,"transactionId"),a([n()],e.prototype,"brandName"),a([n()],e.prototype,"shareImageUrl"),a([n()],e.prototype,"dataUrl"),a([n()],e.prototype,"file"),a([n()],e.prototype,"isMobile"),a([n()],e.prototype,"windowResized"),b(e);export{e as BeamSocialShare};
169
+ `],a([o({type:String})],e.prototype,"apiKey"),a([o({type:Number})],e.prototype,"storeId"),a([o({type:Number})],e.prototype,"nonprofitId"),a([o({type:String})],e.prototype,"baseUrl"),a([o({type:String})],e.prototype,"lang"),a([o({type:Boolean})],e.prototype,"debug"),a([o({type:String})],e.prototype,"transactionId"),a([n()],e.prototype,"brandName"),a([n()],e.prototype,"shareImageUrl"),a([n()],e.prototype,"dataUrl"),a([n()],e.prototype,"file"),a([n()],e.prototype,"isMobile"),a([n()],e.prototype,"windowResized"),y(e);export{e as BeamSocialShare};
170
170
  //# sourceMappingURL=social-share.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"social-share.esm.js","sources":["../../src/components/social-share/index.ts"],"sourcesContent":["import { css, html, LitElement } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport \"@shoelace-style/shoelace/dist/components/icon/icon.js\";\nimport \"../../shared/components/_share-dialog-dependencies\";\nimport \"../../shared/components/progress-bar\";\nimport \"../beam-partner-logos\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { getImpact } from \"../../api-sdk/v3/routes\";\nimport { _loading } from \"../../shared/fragments/loading-template\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES, WIDGET_NAMES } from \"../../api-sdk/constants\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { TNumericId } from \"../../shared/types\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { strings } from \"../../shared/components/strings/share-button\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { urlToFile } from \"../../shared/files\";\n\ntype RequiredConfig = {\n apiKey: string;\n storeId: TNumericId;\n nonprofitId: TNumericId;\n};\n\nexport class BeamSocialShare extends LitElement {\n static tagName = \"beam-social-share\";\n\n @property({ type: String }) public apiKey?: RequiredConfig[\"apiKey\"];\n @property({ type: Number }) storeId?: RequiredConfig[\"storeId\"];\n @property({ type: Number }) nonprofitId?: RequiredConfig[\"nonprofitId\"];\n @property({ type: String }) public baseUrl = DEFAULT_BASE_URL;\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n @property({ type: Boolean }) public debug = false;\n @property({ type: String }) transactionId?: string;\n\n @state() private brandName: string | null = null;\n @state() private shareImageUrl: string | null = null;\n @state() private dataUrl?: string;\n @state() private file?: File;\n @state() private isMobile = false;\n @state() private windowResized = false;\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener(\"resize\", this.checkViewport);\n this.checkViewport();\n }\n\n disconnectedCallback() {\n window.removeEventListener(\"resize\", this.checkViewport);\n super.disconnectedCallback();\n }\n\n checkViewport = () => {\n this.windowResized = window.innerWidth <= 768;\n };\n\n private async fetchImpactData() {\n if (!enforceConfig<RequiredConfig>([\"apiKey\", \"storeId\", \"nonprofitId\"], this)) {\n throw new MissingConfig();\n }\n try {\n const res = await getImpact({\n baseUrl: this.baseUrl,\n headers: { authorization: `Api-Key ${this.apiKey}` },\n queryParams: {\n storeId: this.storeId,\n personalImpactLimit: 0,\n nonprofitId: this.nonprofitId,\n widgetName: WIDGET_NAMES.community_impact,\n version: \"1.0.0\",\n lang: this.configLang,\n transactionId: this.transactionId ?? undefined,\n },\n });\n return res;\n } catch (error) {\n if (this.debug) {\n console.error(\"Failed to fetch impact data\", error);\n }\n throw error;\n }\n }\n\n // Updates component state with fetched impact data\n private async updateImpactData() {\n try {\n const data = await this.fetchImpactData();\n if (data) {\n this.brandName = data.chain.name;\n this.shareImageUrl = data.promoAssetUrl || data.personalImpactAssetUrl || data.community[0].share.imageUrl;\n\n if (this.shareImageUrl) {\n const file = await urlToFile(this.shareImageUrl);\n this.file = file;\n this.dataUrl = URL.createObjectURL(file);\n }\n }\n } catch (error) {\n if (this.debug) {\n console.error(\"Error updating impact data:\", error);\n }\n }\n }\n\n async firstUpdated() {\n await this.updateImpactData();\n this.isMobile =\n /Mobi|Android/i.test(navigator.userAgent) || \"ontouchstart\" in window || navigator.maxTouchPoints > 0;\n }\n\n private async openSystemShareSheet(imageUrl: string) {\n if (!imageUrl) return;\n\n try {\n const file = await urlToFile(imageUrl);\n if (navigator.share && this.brandName) {\n await navigator.share({\n files: [file],\n title: strings[this.lang].impactShareTitle(),\n text: strings[this.lang].impactShareText({ brandName: this.brandName }),\n });\n }\n } catch (error) {\n if (this.debug) {\n console.error(\"Failed to open share sheet\", error);\n }\n }\n }\n\n private async handleClickCopy() {\n if (this.file) {\n try {\n await navigator.clipboard.write([new ClipboardItem({ \"image/png\": this.file })]);\n } catch (error) {\n if (this.debug) {\n console.error(\"Failed to copy image to clipboard:\", error);\n }\n }\n }\n }\n\n private handleClickDownload(event: Event) {\n const target = event.currentTarget as HTMLAnchorElement;\n\n if (this.isMobile && this.shareImageUrl) {\n event.preventDefault();\n this.openSystemShareSheet(this.shareImageUrl);\n } else if (this.dataUrl) {\n target.href = this.dataUrl;\n target.download = strings[this.lang].impactShareTitle();\n }\n }\n\n render() {\n if (!this.brandName || !this.shareImageUrl || !this.dataUrl) {\n return _loading();\n }\n\n return html`\n <div class=\"share-container ${this.windowResized || this.isMobile ? \"mobile\" : \"desktop\"}\">\n <h2 class=\"share-title\">${strings[this.lang].impactShareTitle()}</h2>\n <p class=\"share-text\">${strings[this.lang].impactShareText({ brandName: this.brandName })}</p>\n <img src=\"${this.shareImageUrl}\" alt=\"${strings[this.lang].impactShareTitle()}\" class=\"share-image\" />\n <div class=\"share-actions\">\n <button class=\"plain-button button share-action-button\" @click=\"${this.handleClickCopy}\">\n <sl-icon\n library=\"lucide\"\n name=\"copy\"\n label=\"${strings[this.lang].impactShareCopy()}\"\n class=\"share-action-icon\"\n ></sl-icon>\n <div class=\"share-action-text\">${strings[this.lang].impactShareCopy()}</div>\n </button>\n <a\n class=\"plain-button button share-action-button plain-link\"\n download=\"${strings[this.lang].impactShareTitle()}\"\n href=\"${this.dataUrl}\"\n @click=\"${this.handleClickDownload}\"\n >\n <sl-icon\n library=\"lucide\"\n name=\"download\"\n label=\"${strings[this.lang].impactShareDownload()}\"\n class=\"share-action-icon\"\n ></sl-icon>\n <div class=\"share-action-text\">${strings[this.lang].impactShareDownload()}</div>\n </a>\n </div>\n </div>\n `;\n }\n\n static styles = [\n cssReset,\n css`\n @font-face {\n font-family: \"Mabry-Bold\";\n src: url(\"../../../assets/fonts/mabry-bold.otf\") format(\"opentype\");\n font-weight: bold;\n font-style: normal;\n }\n @font-face {\n font-family: \"Mabry-Medium\";\n src: url(\"../../../assets/fonts/mabry-medium.otf\") format(\"opentype\");\n font-weight: bold;\n font-style: normal;\n }\n :host {\n align-items: center;\n justify-content: center;\n display: flex;\n box-sizing: border-box;\n width: 100%;\n }\n\n .share-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n max-width: 700px;\n text-align: center;\n }\n\n .share-container.mobile {\n padding: 1rem;\n max-width: 100%;\n }\n\n .share-title {\n font-family: \"Mabry-Bold\", sans-serif;\n font-size: 2.5rem;\n font-weight: bold;\n word-break: break-word;\n margin: 10px 0;\n }\n\n .share-title.mobile {\n font-size: 1.5rem;\n }\n\n .share-text {\n font-family: \"Mabry-Medium\", sans-serif;\n font-size: 1.25rem;\n line-height: 1.4;\n word-break: break-word;\n margin: 10px 0;\n max-width: 500px;\n }\n\n .share-text.mobile {\n font-size: 1rem;\n }\n\n .share-image {\n border-radius: 8px;\n width: 100%;\n max-width: 300px;\n height: auto;\n display: block;\n margin: 20px auto;\n }\n\n .share-actions {\n display: flex;\n flex-direction: row;\n justify-content: center;\n gap: 10px;\n align-items: center;\n margin: 20px 0;\n }\n\n .share-actions.mobile {\n flex-direction: column;\n }\n\n .share-action-button {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 10px 20px;\n border: 1px solid #ccc;\n border-radius: 4px;\n background-color: #fff;\n text-decoration: none;\n color: #333;\n cursor: pointer;\n transition: background-color 0.3s, border-color 0.3s;\n }\n\n .share-action-button:hover {\n background-color: #f0f0f0;\n border-color: #bbb;\n }\n\n .share-action-icon {\n font-size: 1.25rem;\n margin-right: 8px;\n }\n\n .share-action-text {\n font-family: \"Mabry-Medium\", sans-serif;\n font-size: 1rem;\n line-height: 1.4;\n margin-top: 5px;\n }\n\n @media (max-width: 600px) {\n .share-title {\n font-size: 1.5rem;\n }\n\n .share-text {\n font-size: 1rem;\n }\n\n .share-image {\n max-width: 240px;\n }\n\n .share-actions {\n flex-direction: row;\n width: 50%;\n margin: 10px 0;\n }\n\n .share-action-button {\n width: 100%;\n margin: 5px 0;\n }\n }\n `,\n ];\n}\n\ndefineCustomElement(BeamSocialShare);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-social-share\": BeamSocialShare;\n }\n}\n"],"names":["BeamSocialShare","LitElement","DEFAULT_BASE_URL","SUPPORTED_LANGUAGES","enforceConfig","getImpact","WIDGET_NAMES","error","data","file","urlToFile","imageUrl","strings","event","target","_loading","html","cssReset","css","__decorateClass","property","state","defineCustomElement"],"mappings":"6uBAwBa,MAAAA,UAAwBC,CAAW,CAAzC,kCAMuB,KAAO,QAAUC,EACjB,KAAO,KAAkB,KACxB,KAAO,MAAQ,GAGnC,KAAQ,UAA2B,KACnC,KAAQ,cAA+B,KAGvC,KAAQ,SAAW,GACnB,KAAQ,cAAgB,GAiBjC,KAAA,cAAgB,IAAM,CACpB,KAAK,cAAgB,OAAO,YAAc,GAC5C,CAjBA,CAAA,IAAI,YAAa,CACf,OAAOC,EAAoB,KAAK,IAAI,GAAK,IAC3C,CAEA,mBAAoB,CAClB,MAAM,oBACN,OAAO,iBAAiB,SAAU,KAAK,aAAa,EACpD,KAAK,eACP,CAEA,sBAAuB,CACrB,OAAO,oBAAoB,SAAU,KAAK,aAAa,EACvD,MAAM,sBACR,CAMA,MAAc,iBAAkB,CACzBC,EAA8B,CAAC,SAAU,UAAW,aAAa,EAAG,IAAI,EAG7E,GAAI,CAcF,OAbY,MAAMC,EAAU,CAC1B,QAAS,KAAK,QACd,QAAS,CAAE,cAAe,WAAW,KAAK,MAAM,EAAG,EACnD,YAAa,CACX,QAAS,KAAK,QACd,oBAAqB,EACrB,YAAa,KAAK,YAClB,WAAYC,EAAa,iBACzB,QAAS,QACT,KAAM,KAAK,WACX,cAAe,KAAK,eAAiB,MACvC,CACF,CAAC,CAEH,OAASC,EAAO,CACd,MAAI,KAAK,OACP,QAAQ,MAAM,8BAA+BA,CAAK,EAE9CA,CACR,CACF,CAGA,MAAc,kBAAmB,CAC/B,GAAI,CACF,MAAMC,EAAO,MAAM,KAAK,gBACxB,EAAA,GAAIA,IACF,KAAK,UAAYA,EAAK,MAAM,KAC5B,KAAK,cAAgBA,EAAK,eAAiBA,EAAK,wBAA0BA,EAAK,UAAU,CAAC,EAAE,MAAM,SAE9F,KAAK,eAAe,CACtB,MAAMC,EAAO,MAAMC,EAAU,KAAK,aAAa,EAC/C,KAAK,KAAOD,EACZ,KAAK,QAAU,IAAI,gBAAgBA,CAAI,CACzC,CAEJ,OAASF,EAAO,CACV,KAAK,OACP,QAAQ,MAAM,8BAA+BA,CAAK,CAEtD,CACF,CAEA,MAAM,cAAe,CACnB,MAAM,KAAK,iBAAiB,EAC5B,KAAK,SACH,gBAAgB,KAAK,UAAU,SAAS,GAAK,iBAAkB,QAAU,UAAU,eAAiB,CACxG,CAEA,MAAc,qBAAqBI,EAAkB,CACnD,GAAKA,EAEL,GAAI,CACF,MAAMF,EAAO,MAAMC,EAAUC,CAAQ,EACjC,UAAU,OAAS,KAAK,WAC1B,MAAM,UAAU,MAAM,CACpB,MAAO,CAACF,CAAI,EACZ,MAAOG,EAAQ,KAAK,IAAI,EAAE,iBAAiB,EAC3C,KAAMA,EAAQ,KAAK,IAAI,EAAE,gBAAgB,CAAE,UAAW,KAAK,SAAU,CAAC,CACxE,CAAC,CAEL,OAASL,EAAO,CACV,KAAK,OACP,QAAQ,MAAM,6BAA8BA,CAAK,CAErD,CACF,CAEA,MAAc,iBAAkB,CAC9B,GAAI,KAAK,KACP,GAAI,CACF,MAAM,UAAU,UAAU,MAAM,CAAC,IAAI,cAAc,CAAE,YAAa,KAAK,IAAK,CAAC,CAAC,CAAC,CACjF,OAASA,EAAO,CACV,KAAK,OACP,QAAQ,MAAM,qCAAsCA,CAAK,CAE7D,CAEJ,CAEQ,oBAAoBM,EAAc,CACxC,MAAMC,EAASD,EAAM,cAEjB,KAAK,UAAY,KAAK,eACxBA,EAAM,eAAA,EACN,KAAK,qBAAqB,KAAK,aAAa,GACnC,KAAK,UACdC,EAAO,KAAO,KAAK,QACnBA,EAAO,SAAWF,EAAQ,KAAK,IAAI,EAAE,iBAAiB,EAE1D,CAEA,QAAS,CACP,MAAI,CAAC,KAAK,WAAa,CAAC,KAAK,eAAiB,CAAC,KAAK,QAC3CG,EAAAA,EAGFC;AAAAA,oCACyB,KAAK,eAAiB,KAAK,SAAW,SAAW,SAAS;AAAA,kCAC5DJ,EAAQ,KAAK,IAAI,EAAE,kBAAkB;AAAA,gCACvCA,EAAQ,KAAK,IAAI,EAAE,gBAAgB,CAAE,UAAW,KAAK,SAAU,CAAC,CAAC;AAAA,oBAC7E,KAAK,aAAa,UAAUA,EAAQ,KAAK,IAAI,EAAE,kBAAkB;AAAA;AAAA,4EAET,KAAK,eAAe;AAAA;AAAA;AAAA;AAAA,uBAIzEA,EAAQ,KAAK,IAAI,EAAE,iBAAiB;AAAA;AAAA;AAAA,6CAGdA,EAAQ,KAAK,IAAI,EAAE,iBAAiB;AAAA;AAAA;AAAA;AAAA,wBAIzDA,EAAQ,KAAK,IAAI,EAAE,kBAAkB;AAAA,oBACzC,KAAK,OAAO;AAAA,sBACV,KAAK,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA,uBAKvBA,EAAQ,KAAK,IAAI,EAAE,qBAAqB;AAAA;AAAA;AAAA,6CAGlBA,EAAQ,KAAK,IAAI,EAAE,qBAAqB;AAAA;AAAA;AAAA;AAAA,KAKnF,CA+IF,CA1TaZ,EACJ,QAAU,oBADNA,EA6KJ,OAAS,CACdiB,EACAC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,KA0IF,EAtTmCC,EAAA,CAAlCC,EAAS,CAAE,KAAM,MAAO,CAAC,CAHf,EAAApB,EAGwB,UACPmB,QAAAA,EAAAA,EAAA,CAA3BC,EAAS,CAAE,KAAM,MAAO,CAAC,CAAA,EAJfpB,EAIiB,UACAmB,SAAAA,EAAAA,EAAA,CAA3BC,EAAS,CAAE,KAAM,MAAO,CAAC,CAAA,EALfpB,EAKiB,UAAA,aAAA,EACOmB,EAAA,CAAlCC,EAAS,CAAE,KAAM,MAAO,CAAC,CANf,EAAApB,EAMwB,qBACAmB,EAAA,CAAlCC,EAAS,CAAE,KAAM,MAAO,CAAC,CAPf,EAAApB,EAOwB,UACCmB,MAAAA,EAAAA,EAAA,CAAnCC,EAAS,CAAE,KAAM,OAAQ,CAAC,CAAA,EARhBpB,EAQyB,UAAA,OAAA,EACRmB,EAAA,CAA3BC,EAAS,CAAE,KAAM,MAAO,CAAC,GATfpB,EASiB,UAAA,eAAA,EAEXmB,EAAA,CAAhBE,EAAM,CAAA,EAXIrB,EAWM,UACAmB,WAAAA,EAAAA,EAAA,CAAhBE,EAZU,CAAA,EAAArB,EAYM,2BACAmB,EAAA,CAAhBE,EAAM,CAAA,EAbIrB,EAaM,UAAA,SAAA,EACAmB,EAAA,CAAhBE,EAAAA,CAdU,EAAArB,EAcM,UACAmB,MAAAA,EAAAA,EAAA,CAAhBE,EAAM,CAAA,EAfIrB,EAeM,UAAA,UAAA,EACAmB,EAAA,CAAhBE,GAhBU,EAAArB,EAgBM,UA4SnBsB,eAAAA,EAAAA,EAAoBtB,CAAe"}
1
+ {"version":3,"file":"social-share.esm.js","sources":["../../src/components/social-share/index.ts"],"sourcesContent":["import { css, html, LitElement } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport \"@shoelace-style/shoelace/dist/components/icon/icon.js\";\nimport \"../../shared/components/_share-dialog-dependencies\";\nimport \"../../shared/components/progress-bar\";\nimport \"../beam-partner-logos\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { getImpact } from \"../../api-sdk/v3/routes\";\nimport { _loading } from \"../../shared/fragments/loading-template\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES, WIDGET_NAMES } from \"../../api-sdk/constants\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { TNumericId } from \"../../shared/types\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { strings } from \"../../shared/components/strings/share-button\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { urlToFile } from \"../../shared/files\";\nimport { postSocialShareAnalyticsEvent } from \"../../api-sdk/v2/users/events\";\n\ntype RequiredConfig = {\n apiKey: string;\n storeId: TNumericId;\n nonprofitId: TNumericId;\n};\n\nexport class BeamSocialShare extends LitElement {\n static tagName = \"beam-social-share\";\n\n @property({ type: String }) public apiKey?: RequiredConfig[\"apiKey\"];\n @property({ type: Number }) storeId?: RequiredConfig[\"storeId\"];\n @property({ type: Number }) nonprofitId?: RequiredConfig[\"nonprofitId\"];\n @property({ type: String }) public baseUrl = DEFAULT_BASE_URL;\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n @property({ type: Boolean }) public debug = false;\n @property({ type: String }) transactionId?: string;\n\n @state() private brandName: string | null = null;\n @state() private shareImageUrl: string | null = null;\n @state() private dataUrl?: string;\n @state() private file?: File;\n @state() private isMobile = false;\n @state() private windowResized = false;\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener(\"resize\", this.checkViewport);\n this.checkViewport();\n }\n\n disconnectedCallback() {\n window.removeEventListener(\"resize\", this.checkViewport);\n super.disconnectedCallback();\n }\n\n checkViewport = () => {\n this.windowResized = window.innerWidth <= 768;\n };\n\n private async fetchImpactData() {\n if (!enforceConfig<RequiredConfig>([\"apiKey\", \"storeId\", \"nonprofitId\"], this)) {\n throw new MissingConfig();\n }\n try {\n const res = await getImpact({\n baseUrl: this.baseUrl,\n headers: { authorization: `Api-Key ${this.apiKey}` },\n queryParams: {\n storeId: this.storeId,\n personalImpactLimit: 0,\n nonprofitId: this.nonprofitId,\n widgetName: WIDGET_NAMES.community_impact,\n version: \"1.0.0\",\n lang: this.configLang,\n transactionId: this.transactionId ?? undefined,\n },\n });\n return res;\n } catch (error) {\n if (this.debug) {\n console.error(\"Failed to fetch impact data\", error);\n }\n throw error;\n }\n }\n\n // Updates component state with fetched impact data\n private async updateImpactData() {\n try {\n const data = await this.fetchImpactData();\n if (data) {\n this.brandName = data.chain.name;\n this.shareImageUrl = data.promoAssetUrl || data.personalImpactAssetUrl || data.community[0].share.imageUrl;\n\n if (this.shareImageUrl) {\n const file = await urlToFile(this.shareImageUrl);\n this.file = file;\n this.dataUrl = URL.createObjectURL(file);\n }\n }\n } catch (error) {\n if (this.debug) {\n console.error(\"Error updating impact data:\", error);\n }\n }\n }\n\n async firstUpdated() {\n await this.updateImpactData();\n this.isMobile =\n /Mobi|Android/i.test(navigator.userAgent) || \"ontouchstart\" in window || navigator.maxTouchPoints > 0;\n }\n\n private async openSystemShareSheet(imageUrl: string) {\n if (!imageUrl) return;\n\n try {\n const file = await urlToFile(imageUrl);\n if (navigator.share && this.brandName) {\n await navigator.share({\n files: [file],\n title: strings[this.lang].impactShareTitle(),\n text: strings[this.lang].impactShareText({ brandName: this.brandName }),\n });\n }\n } catch (error) {\n if (this.debug) {\n console.error(\"Failed to open share sheet\", error);\n }\n }\n }\n\n private async handleClickCopy() {\n if (this.file) {\n try {\n if (this.apiKey && this.transactionId) {\n void postSocialShareAnalyticsEvent({\n baseUrl: this.baseUrl,\n apiKey: this.apiKey || \"\",\n requestBody: {\n eventName: \"ExtensibilityCopyImageButtonClick\",\n nonprofitId: this.nonprofitId,\n storeId: this.storeId,\n timestamp: Date.now(),\n transactionId: Number(this.transactionId),\n },\n }).catch(() => null);\n } else {\n console.error(\"Missing data for social share analytics. Skipping send\");\n }\n await navigator.clipboard.write([new ClipboardItem({ \"image/png\": this.file })]);\n } catch (error) {\n if (this.debug) {\n console.error(\"Failed to copy image to clipboard:\", error);\n }\n }\n }\n }\n\n private handleClickDownload(event: Event) {\n if (this.apiKey && this.transactionId) {\n void postSocialShareAnalyticsEvent({\n baseUrl: this.baseUrl,\n apiKey: this.apiKey || \"\",\n requestBody: {\n eventName: \"ExtensibilityDownloadImageButtonClick\",\n nonprofitId: this.nonprofitId,\n storeId: this.storeId,\n timestamp: Date.now(),\n transactionId: Number(this.transactionId),\n },\n }).catch(() => null);\n } else {\n console.error(\"Missing data for social share analytics. Skipping send\");\n }\n const target = event.currentTarget as HTMLAnchorElement;\n if (this.isMobile && this.shareImageUrl) {\n event.preventDefault();\n this.openSystemShareSheet(this.shareImageUrl);\n } else if (this.dataUrl) {\n target.href = this.dataUrl;\n target.download = strings[this.lang].impactShareTitle();\n }\n }\n\n render() {\n if (!this.brandName || !this.shareImageUrl || !this.dataUrl) {\n return _loading();\n }\n\n return html`\n <div class=\"share-container ${this.windowResized || this.isMobile ? \"mobile\" : \"desktop\"}\">\n <h2 class=\"share-title\">${strings[this.lang].impactShareTitle()}</h2>\n <p class=\"share-text\">${strings[this.lang].impactShareText({ brandName: this.brandName })}</p>\n <img src=\"${this.shareImageUrl}\" alt=\"${strings[this.lang].impactShareTitle()}\" class=\"share-image\" />\n <div class=\"share-actions\">\n <button class=\"plain-button button share-action-button\" @click=\"${this.handleClickCopy}\">\n <sl-icon\n library=\"lucide\"\n name=\"copy\"\n label=\"${strings[this.lang].impactShareCopy()}\"\n class=\"share-action-icon\"\n ></sl-icon>\n <div class=\"share-action-text\">${strings[this.lang].impactShareCopy()}</div>\n </button>\n <a\n class=\"plain-button button share-action-button plain-link\"\n download=\"${strings[this.lang].impactShareTitle()}\"\n href=\"${this.dataUrl}\"\n @click=\"${this.handleClickDownload}\"\n >\n <sl-icon\n library=\"lucide\"\n name=\"download\"\n label=\"${strings[this.lang].impactShareDownload()}\"\n class=\"share-action-icon\"\n ></sl-icon>\n <div class=\"share-action-text\">${strings[this.lang].impactShareDownload()}</div>\n </a>\n </div>\n </div>\n `;\n }\n\n static styles = [\n cssReset,\n css`\n @font-face {\n font-family: \"Mabry-Bold\";\n src: url(\"../../../assets/fonts/mabry-bold.otf\") format(\"opentype\");\n font-weight: bold;\n font-style: normal;\n }\n @font-face {\n font-family: \"Mabry-Medium\";\n src: url(\"../../../assets/fonts/mabry-medium.otf\") format(\"opentype\");\n font-weight: bold;\n font-style: normal;\n }\n :host {\n align-items: center;\n justify-content: center;\n display: flex;\n box-sizing: border-box;\n width: 100%;\n }\n\n .share-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n max-width: 700px;\n text-align: center;\n }\n\n .share-container.mobile {\n padding: 1rem;\n max-width: 100%;\n }\n\n .share-title {\n font-family: \"Mabry-Bold\", sans-serif;\n font-size: 2.5rem;\n font-weight: bold;\n word-break: break-word;\n margin: 10px 0;\n }\n\n .share-title.mobile {\n font-size: 1.5rem;\n }\n\n .share-text {\n font-family: \"Mabry-Medium\", sans-serif;\n font-size: 1.25rem;\n line-height: 1.4;\n word-break: break-word;\n margin: 10px 0;\n max-width: 500px;\n }\n\n .share-text.mobile {\n font-size: 1rem;\n }\n\n .share-image {\n border-radius: 8px;\n width: 100%;\n max-width: 300px;\n height: auto;\n display: block;\n margin: 20px auto;\n }\n\n .share-actions {\n display: flex;\n flex-direction: row;\n justify-content: center;\n gap: 10px;\n align-items: center;\n margin: 20px 0;\n }\n\n .share-actions.mobile {\n flex-direction: column;\n }\n\n .share-action-button {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 10px 20px;\n border: 1px solid #ccc;\n border-radius: 4px;\n background-color: #fff;\n text-decoration: none;\n color: #333;\n cursor: pointer;\n transition: background-color 0.3s, border-color 0.3s;\n }\n\n .share-action-button:hover {\n background-color: #f0f0f0;\n border-color: #bbb;\n }\n\n .share-action-icon {\n font-size: 1.25rem;\n margin-right: 8px;\n }\n\n .share-action-text {\n font-family: \"Mabry-Medium\", sans-serif;\n font-size: 1rem;\n line-height: 1.4;\n margin-top: 5px;\n }\n\n @media (max-width: 600px) {\n .share-title {\n font-size: 1.5rem;\n }\n\n .share-text {\n font-size: 1rem;\n }\n\n .share-image {\n max-width: 240px;\n }\n\n .share-actions {\n flex-direction: row;\n width: 50%;\n margin: 10px 0;\n }\n\n .share-action-button {\n width: 100%;\n margin: 5px 0;\n }\n }\n `,\n ];\n}\n\ndefineCustomElement(BeamSocialShare);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-social-share\": BeamSocialShare;\n }\n}\n"],"names":["m","i","s","t","e","r","d","BeamSocialShare","LitElement","DEFAULT_BASE_URL","SUPPORTED_LANGUAGES","enforceConfig","getImpact","WIDGET_NAMES","error","data","file","urlToFile","imageUrl","strings","postSocialShareAnalyticsEvent","event","target","_loading","html","cssReset","css","__decorateClass","property","state","defineCustomElement"],"mappings":"4mBAAA,IAAAA,EAAA,OAAA,eAAAC,EAAA,CAAA,EAAAC,EAAAC,EAAAC,IAAA,CAAA,QAAAC,EAAA,OAAA,EAAA,EAAA,OAAA,EAAAC,EAAA,GAAA,EAAA,KAAAA,EAAA,EAAA,CAAA,KAAAD,EAAAC,EAAAJ,EAAAC,EAAAE,CAAA,GAAAA,GAAA,OAAAA,GAAAL,EAAAE,EAAAC,EAAAE,CAAA,EAAAA,CAAA,EAyBa,MAAAE,UAAwBC,CAAW,CAAzC,aAMuB,CAAA,MAAA,GAAA,SAAA,EAAA,KAAO,QAAUC,EACjB,KAAO,KAAkB,KACxB,KAAO,MAAQ,GAGnC,KAAQ,UAA2B,KACnC,KAAQ,cAA+B,KAGvC,KAAQ,SAAW,GACnB,KAAQ,cAAgB,GAiBjC,KAAgB,cAAA,IAAM,CACpB,KAAK,cAAgB,OAAO,YAAc,GAC5C,CAjBA,CAAA,IAAI,YAAa,CACf,OAAOC,EAAoB,KAAK,IAAI,GAAK,IAC3C,CAEA,mBAAoB,CAClB,MAAM,kBAAkB,EACxB,OAAO,iBAAiB,SAAU,KAAK,aAAa,EACpD,KAAK,cACP,CAAA,CAEA,sBAAuB,CACrB,OAAO,oBAAoB,SAAU,KAAK,aAAa,EACvD,MAAM,qBAAqB,CAC7B,CAMA,MAAc,iBAAkB,CACzBC,EAA8B,CAAC,SAAU,UAAW,aAAa,EAAG,IAAI,EAG7E,GAAI,CAcF,OAbY,MAAMC,EAAU,CAC1B,QAAS,KAAK,QACd,QAAS,CAAE,cAAe,WAAW,KAAK,MAAM,EAAG,EACnD,YAAa,CACX,QAAS,KAAK,QACd,oBAAqB,EACrB,YAAa,KAAK,YAClB,WAAYC,EAAa,iBACzB,QAAS,QACT,KAAM,KAAK,WACX,cAAe,KAAK,eAAiB,MACvC,CACF,CAAC,CAEH,OAASC,EAAO,CACd,MAAI,KAAK,OACP,QAAQ,MAAM,8BAA+BA,CAAK,EAE9CA,CACR,CACF,CAGA,MAAc,kBAAmB,CAC/B,GAAI,CACF,MAAMC,EAAO,MAAM,KAAK,gBAAA,EACxB,GAAIA,IACF,KAAK,UAAYA,EAAK,MAAM,KAC5B,KAAK,cAAgBA,EAAK,eAAiBA,EAAK,wBAA0BA,EAAK,UAAU,CAAC,EAAE,MAAM,SAE9F,KAAK,eAAe,CACtB,MAAMC,EAAO,MAAMC,EAAU,KAAK,aAAa,EAC/C,KAAK,KAAOD,EACZ,KAAK,QAAU,IAAI,gBAAgBA,CAAI,CACzC,CAEJ,OAASF,EAAO,CACV,KAAK,OACP,QAAQ,MAAM,8BAA+BA,CAAK,CAEtD,CACF,CAEA,MAAM,cAAe,CACnB,MAAM,KAAK,iBAAA,EACX,KAAK,SACH,gBAAgB,KAAK,UAAU,SAAS,GAAK,iBAAkB,QAAU,UAAU,eAAiB,CACxG,CAEA,MAAc,qBAAqBI,EAAkB,CACnD,GAAKA,EAEL,GAAI,CACF,MAAMF,EAAO,MAAMC,EAAUC,CAAQ,EACjC,UAAU,OAAS,KAAK,WAC1B,MAAM,UAAU,MAAM,CACpB,MAAO,CAACF,CAAI,EACZ,MAAOG,EAAQ,KAAK,IAAI,EAAE,iBAAiB,EAC3C,KAAMA,EAAQ,KAAK,IAAI,EAAE,gBAAgB,CAAE,UAAW,KAAK,SAAU,CAAC,CACxE,CAAC,CAEL,OAASL,EAAO,CACV,KAAK,OACP,QAAQ,MAAM,6BAA8BA,CAAK,CAErD,CACF,CAEA,MAAc,iBAAkB,CAC9B,GAAI,KAAK,KACP,GAAI,CACE,KAAK,QAAU,KAAK,cACjBM,EAA8B,CACjC,QAAS,KAAK,QACd,OAAQ,KAAK,QAAU,GACvB,YAAa,CACX,UAAW,oCACX,YAAa,KAAK,YAClB,QAAS,KAAK,QACd,UAAW,KAAK,IAChB,EAAA,cAAe,OAAO,KAAK,aAAa,CAC1C,CACF,CAAC,EAAE,MAAM,IAAM,IAAI,EAEnB,QAAQ,MAAM,wDAAwD,EAExE,MAAM,UAAU,UAAU,MAAM,CAAC,IAAI,cAAc,CAAE,YAAa,KAAK,IAAK,CAAC,CAAC,CAAC,CACjF,OAASN,EAAO,CACV,KAAK,OACP,QAAQ,MAAM,qCAAsCA,CAAK,CAE7D,CAEJ,CAEQ,oBAAoBO,EAAc,CACpC,KAAK,QAAU,KAAK,cACjBD,EAA8B,CACjC,QAAS,KAAK,QACd,OAAQ,KAAK,QAAU,GACvB,YAAa,CACX,UAAW,wCACX,YAAa,KAAK,YAClB,QAAS,KAAK,QACd,UAAW,KAAK,IAAI,EACpB,cAAe,OAAO,KAAK,aAAa,CAC1C,CACF,CAAC,EAAE,MAAM,IAAM,IAAI,EAEnB,QAAQ,MAAM,wDAAwD,EAExE,MAAME,EAASD,EAAM,cACjB,KAAK,UAAY,KAAK,eACxBA,EAAM,iBACN,KAAK,qBAAqB,KAAK,aAAa,GACnC,KAAK,UACdC,EAAO,KAAO,KAAK,QACnBA,EAAO,SAAWH,EAAQ,KAAK,IAAI,EAAE,mBAEzC,CAEA,QAAS,CACP,MAAI,CAAC,KAAK,WAAa,CAAC,KAAK,eAAiB,CAAC,KAAK,QAC3CI,EAGFC,EAAAA;AAAAA,oCACyB,KAAK,eAAiB,KAAK,SAAW,SAAW,SAAS;AAAA,kCAC5DL,EAAQ,KAAK,IAAI,EAAE,kBAAkB;AAAA,gCACvCA,EAAQ,KAAK,IAAI,EAAE,gBAAgB,CAAE,UAAW,KAAK,SAAU,CAAC,CAAC;AAAA,oBAC7E,KAAK,aAAa,UAAUA,EAAQ,KAAK,IAAI,EAAE,kBAAkB;AAAA;AAAA,4EAET,KAAK,eAAe;AAAA;AAAA;AAAA;AAAA,uBAIzEA,EAAQ,KAAK,IAAI,EAAE,iBAAiB;AAAA;AAAA;AAAA,6CAGdA,EAAQ,KAAK,IAAI,EAAE,iBAAiB;AAAA;AAAA;AAAA;AAAA,wBAIzDA,EAAQ,KAAK,IAAI,EAAE,kBAAkB;AAAA,oBACzC,KAAK,OAAO;AAAA,sBACV,KAAK,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA,uBAKvBA,EAAQ,KAAK,IAAI,EAAE,qBAAqB;AAAA;AAAA;AAAA,6CAGlBA,EAAQ,KAAK,IAAI,EAAE,qBAAqB;AAAA;AAAA;AAAA;AAAA,KAKnF,CA+IF,CAvVaZ,EACJ,QAAU,oBADNA,EA0MJ,OAAS,CACdkB,EACAC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,KA0IF,EAnVmCC,EAAA,CAAlCC,EAAS,CAAE,KAAM,MAAO,CAAC,CAHf,EAAArB,EAGwB,UACPoB,QAAAA,EAAAA,EAAA,CAA3BC,EAAS,CAAE,KAAM,MAAO,CAAC,CAAA,EAJfrB,EAIiB,UACAoB,SAAAA,EAAAA,EAAA,CAA3BC,EAAS,CAAE,KAAM,MAAO,CAAC,CAAA,EALfrB,EAKiB,UAAA,aAAA,EACOoB,EAAA,CAAlCC,EAAS,CAAE,KAAM,MAAO,CAAC,CANf,EAAArB,EAMwB,qBACAoB,EAAA,CAAlCC,EAAS,CAAE,KAAM,MAAO,CAAC,CAPf,EAAArB,EAOwB,UACCoB,MAAAA,EAAAA,EAAA,CAAnCC,EAAS,CAAE,KAAM,OAAQ,CAAC,CAAA,EARhBrB,EAQyB,UAAA,OAAA,EACRoB,EAAA,CAA3BC,EAAS,CAAE,KAAM,MAAO,CAAC,GATfrB,EASiB,UAAA,eAAA,EAEXoB,EAAA,CAAhBE,EAAM,CAAA,EAXItB,EAWM,UACAoB,WAAAA,EAAAA,EAAA,CAAhBE,EAZU,CAAA,EAAAtB,EAYM,2BACAoB,EAAA,CAAhBE,EAAM,CAAA,EAbItB,EAaM,UAAA,SAAA,EACAoB,EAAA,CAAhBE,EAAAA,CAdU,EAAAtB,EAcM,UACAoB,MAAAA,EAAAA,EAAA,CAAhBE,EAAM,CAAA,EAfItB,EAeM,UAAA,UAAA,EACAoB,EAAA,CAAhBE,GAhBU,EAAAtB,EAgBM,UAyUnBuB,eAAAA,EAAAA,EAAoBvB,CAAe"}
@@ -1,4 +1,4 @@
1
- import{f as p,g as o,t as n,h as m,y as g}from"../chunks/lit-5uUWs2aX.esm.js";import"../chunks/vendor-DRA8u-S7.esm.js";import"../chunks/_share-dialog-dependencies-B3N69ml2.esm.js";import"../chunks/progress-bar-oJB_t7od.esm.js";import"./beam-partner-logos.js";import{c as f,d as b,e as y}from"../chunks/enforce-config-CQb5MiAV.esm.js";import{D as u,S as w,g as x,W as I}from"../chunks/routes-KHEaM_40.esm.js";import{_ as U}from"../chunks/loading-template-DXNS89Th.esm.js";import{u as d,s as r}from"../chunks/share-button-R7jgVCPv.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../utils/logger.js";var S=Object.defineProperty,a=(l,t,i,k)=>{for(var s=void 0,c=l.length-1,h;c>=0;c--)(h=l[c])&&(s=h(t,i,s)||s);return s&&S(t,i,s),s};class e extends m{constructor(){super(...arguments),this.baseUrl=u,this.lang="en",this.debug=!1,this.brandName=null,this.shareImageUrl=null,this.isMobile=!1,this.windowResized=!1,this.checkViewport=()=>{this.windowResized=window.innerWidth<=768}}get configLang(){return w[this.lang]||"en"}connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this.checkViewport),this.checkViewport()}disconnectedCallback(){window.removeEventListener("resize",this.checkViewport),super.disconnectedCallback()}async fetchImpactData(){y(["apiKey","storeId","nonprofitId"],this);try{return await x({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},queryParams:{storeId:this.storeId,personalImpactLimit:0,nonprofitId:this.nonprofitId,widgetName:I.community_impact,version:"1.0.0",lang:this.configLang,transactionId:this.transactionId??void 0}})}catch(t){throw this.debug&&console.error("Failed to fetch impact data",t),t}}async updateImpactData(){try{const t=await this.fetchImpactData();if(t&&(this.brandName=t.chain.name,this.shareImageUrl=t.promoAssetUrl||t.personalImpactAssetUrl||t.community[0].share.imageUrl,this.shareImageUrl)){const i=await d(this.shareImageUrl);this.file=i,this.dataUrl=URL.createObjectURL(i)}}catch(t){this.debug&&console.error("Error updating impact data:",t)}}async firstUpdated(){await this.updateImpactData(),this.isMobile=/Mobi|Android/i.test(navigator.userAgent)||"ontouchstart"in window||navigator.maxTouchPoints>0}async openSystemShareSheet(t){if(t)try{const i=await d(t);navigator.share&&this.brandName&&await navigator.share({files:[i],title:r[this.lang].impactShareTitle(),text:r[this.lang].impactShareText({brandName:this.brandName})})}catch(i){this.debug&&console.error("Failed to open share sheet",i)}}async handleClickCopy(){if(this.file)try{await navigator.clipboard.write([new ClipboardItem({"image/png":this.file})])}catch(t){this.debug&&console.error("Failed to copy image to clipboard:",t)}}handleClickDownload(t){const i=t.currentTarget;this.isMobile&&this.shareImageUrl?(t.preventDefault(),this.openSystemShareSheet(this.shareImageUrl)):this.dataUrl&&(i.href=this.dataUrl,i.download=r[this.lang].impactShareTitle())}render(){return!this.brandName||!this.shareImageUrl||!this.dataUrl?U():g`
1
+ import{f as m,g as o,t as n,h as g,y as f}from"../chunks/lit-WqMxC_PA.esm.js";import"../chunks/vendor-KKSARHWL.esm.js";import"../chunks/_share-dialog-dependencies-QaTONkKb.esm.js";import"../chunks/progress-bar-DF7UuuHb.esm.js";import"./beam-partner-logos.js";import{c as b,d as y,e as u}from"../chunks/enforce-config-Ba1JkOHs.esm.js";import{D as w,S as x,g as I,W as U}from"../chunks/routes-CAhDCFDX.esm.js";import{_ as S}from"../chunks/loading-template-DG4lkIIc.esm.js";import{u as d,s as r,p}from"../chunks/share-button-BYVId0-U.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../utils/logger.js";var k=Object.defineProperty,a=(l,t,i,v)=>{for(var s=void 0,c=l.length-1,h;c>=0;c--)(h=l[c])&&(s=h(t,i,s)||s);return s&&k(t,i,s),s};class e extends g{constructor(){super(...arguments),this.baseUrl=w,this.lang="en",this.debug=!1,this.brandName=null,this.shareImageUrl=null,this.isMobile=!1,this.windowResized=!1,this.checkViewport=()=>{this.windowResized=window.innerWidth<=768}}get configLang(){return x[this.lang]||"en"}connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this.checkViewport),this.checkViewport()}disconnectedCallback(){window.removeEventListener("resize",this.checkViewport),super.disconnectedCallback()}async fetchImpactData(){u(["apiKey","storeId","nonprofitId"],this);try{return await I({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},queryParams:{storeId:this.storeId,personalImpactLimit:0,nonprofitId:this.nonprofitId,widgetName:U.community_impact,version:"1.0.0",lang:this.configLang,transactionId:this.transactionId??void 0}})}catch(t){throw this.debug&&console.error("Failed to fetch impact data",t),t}}async updateImpactData(){try{const t=await this.fetchImpactData();if(t&&(this.brandName=t.chain.name,this.shareImageUrl=t.promoAssetUrl||t.personalImpactAssetUrl||t.community[0].share.imageUrl,this.shareImageUrl)){const i=await d(this.shareImageUrl);this.file=i,this.dataUrl=URL.createObjectURL(i)}}catch(t){this.debug&&console.error("Error updating impact data:",t)}}async firstUpdated(){await this.updateImpactData(),this.isMobile=/Mobi|Android/i.test(navigator.userAgent)||"ontouchstart"in window||navigator.maxTouchPoints>0}async openSystemShareSheet(t){if(t)try{const i=await d(t);navigator.share&&this.brandName&&await navigator.share({files:[i],title:r[this.lang].impactShareTitle(),text:r[this.lang].impactShareText({brandName:this.brandName})})}catch(i){this.debug&&console.error("Failed to open share sheet",i)}}async handleClickCopy(){if(this.file)try{this.apiKey&&this.transactionId?p({baseUrl:this.baseUrl,apiKey:this.apiKey||"",requestBody:{eventName:"ExtensibilityCopyImageButtonClick",nonprofitId:this.nonprofitId,storeId:this.storeId,timestamp:Date.now(),transactionId:Number(this.transactionId)}}).catch(()=>null):console.error("Missing data for social share analytics. Skipping send"),await navigator.clipboard.write([new ClipboardItem({"image/png":this.file})])}catch(t){this.debug&&console.error("Failed to copy image to clipboard:",t)}}handleClickDownload(t){this.apiKey&&this.transactionId?p({baseUrl:this.baseUrl,apiKey:this.apiKey||"",requestBody:{eventName:"ExtensibilityDownloadImageButtonClick",nonprofitId:this.nonprofitId,storeId:this.storeId,timestamp:Date.now(),transactionId:Number(this.transactionId)}}).catch(()=>null):console.error("Missing data for social share analytics. Skipping send");const i=t.currentTarget;this.isMobile&&this.shareImageUrl?(t.preventDefault(),this.openSystemShareSheet(this.shareImageUrl)):this.dataUrl&&(i.href=this.dataUrl,i.download=r[this.lang].impactShareTitle())}render(){return!this.brandName||!this.shareImageUrl||!this.dataUrl?S():f`
2
2
  <div class="share-container ${this.windowResized||this.isMobile?"mobile":"desktop"}">
3
3
  <h2 class="share-title">${r[this.lang].impactShareTitle()}</h2>
4
4
  <p class="share-text">${r[this.lang].impactShareText({brandName:this.brandName})}</p>
@@ -29,7 +29,7 @@ import{f as p,g as o,t as n,h as m,y as g}from"../chunks/lit-5uUWs2aX.esm.js";im
29
29
  </a>
30
30
  </div>
31
31
  </div>
32
- `}}e.tagName="beam-social-share",e.styles=[f,p`
32
+ `}}e.tagName="beam-social-share",e.styles=[b,m`
33
33
  @font-face {
34
34
  font-family: "Mabry-Bold";
35
35
  src: url("../../../assets/fonts/mabry-bold.otf") format("opentype");
@@ -166,5 +166,5 @@ import{f as p,g as o,t as n,h as m,y as g}from"../chunks/lit-5uUWs2aX.esm.js";im
166
166
  margin: 5px 0;
167
167
  }
168
168
  }
169
- `],a([o({type:String})],e.prototype,"apiKey"),a([o({type:Number})],e.prototype,"storeId"),a([o({type:Number})],e.prototype,"nonprofitId"),a([o({type:String})],e.prototype,"baseUrl"),a([o({type:String})],e.prototype,"lang"),a([o({type:Boolean})],e.prototype,"debug"),a([o({type:String})],e.prototype,"transactionId"),a([n()],e.prototype,"brandName"),a([n()],e.prototype,"shareImageUrl"),a([n()],e.prototype,"dataUrl"),a([n()],e.prototype,"file"),a([n()],e.prototype,"isMobile"),a([n()],e.prototype,"windowResized"),b(e);export{e as BeamSocialShare};
169
+ `],a([o({type:String})],e.prototype,"apiKey"),a([o({type:Number})],e.prototype,"storeId"),a([o({type:Number})],e.prototype,"nonprofitId"),a([o({type:String})],e.prototype,"baseUrl"),a([o({type:String})],e.prototype,"lang"),a([o({type:Boolean})],e.prototype,"debug"),a([o({type:String})],e.prototype,"transactionId"),a([n()],e.prototype,"brandName"),a([n()],e.prototype,"shareImageUrl"),a([n()],e.prototype,"dataUrl"),a([n()],e.prototype,"file"),a([n()],e.prototype,"isMobile"),a([n()],e.prototype,"windowResized"),y(e);export{e as BeamSocialShare};
170
170
  //# sourceMappingURL=social-share.js.map