@beamimpact/web-sdk 1.55.2 → 1.55.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{_share-dialog-dependencies-oPfou2yz.esm.js → _share-dialog-dependencies-BVseSHLF.esm.js} +2 -2
- package/dist/chunks/{_share-dialog-dependencies-oPfou2yz.esm.js.map → _share-dialog-dependencies-BVseSHLF.esm.js.map} +1 -1
- package/dist/chunks/{_share-dialog-dependencies-CrXoTXJn.esm.js → _share-dialog-dependencies-o8GVV6gC.esm.js} +2 -2
- package/dist/chunks/{_share-dialog-dependencies-CrXoTXJn.esm.js.map → _share-dialog-dependencies-o8GVV6gC.esm.js.map} +1 -1
- package/dist/chunks/{index-ddFvDm5F.esm.js → index-BNHAn1OG.esm.js} +2 -2
- package/dist/chunks/{index-ddFvDm5F.esm.js.map → index-BNHAn1OG.esm.js.map} +1 -1
- package/dist/chunks/{index-Cb7UHLgc.esm.js → index-BWtaQiQa.esm.js} +16 -16
- package/dist/chunks/index-BWtaQiQa.esm.js.map +1 -0
- package/dist/chunks/{index-C0iBcnhO.esm.js → index-CIQxph2z.esm.js} +2 -2
- package/dist/chunks/index-CIQxph2z.esm.js.map +1 -0
- package/dist/chunks/index-CM59QOJP.esm.js +2 -0
- package/dist/chunks/index-CM59QOJP.esm.js.map +1 -0
- package/dist/chunks/{index-CXu50lhe.esm.js → index-CVNcspb0.esm.js} +2 -2
- package/dist/chunks/index-CVNcspb0.esm.js.map +1 -0
- package/dist/chunks/index-CYxuuwlv.esm.js +2 -0
- package/dist/chunks/index-CYxuuwlv.esm.js.map +1 -0
- package/dist/chunks/{index-BRwtueB0.esm.js → index-D1Pso4Mx.esm.js} +2 -2
- package/dist/chunks/{index-BRwtueB0.esm.js.map → index-D1Pso4Mx.esm.js.map} +1 -1
- package/dist/chunks/{index-BfJw1nDH.esm.js → index-DiNDMv3P.esm.js} +2 -2
- package/dist/chunks/index-DiNDMv3P.esm.js.map +1 -0
- package/dist/chunks/index-Dji1l8sT.esm.js +2 -0
- package/dist/chunks/index-Dji1l8sT.esm.js.map +1 -0
- package/dist/chunks/index-DsvbqqAd.esm.js +2 -0
- package/dist/chunks/index-DsvbqqAd.esm.js.map +1 -0
- package/dist/chunks/{index-CJLX6Cat.esm.js → index-IAa5EO-6.esm.js} +16 -16
- package/dist/chunks/index-IAa5EO-6.esm.js.map +1 -0
- package/dist/chunks/{index-DTnVjvy8.esm.js → index-MoK57RXU.esm.js} +2 -2
- package/dist/chunks/index-MoK57RXU.esm.js.map +1 -0
- package/dist/chunks/{order-page-qV21CdRx.esm.js → order-page-Brrq-LAx.esm.js} +2 -2
- package/dist/chunks/{order-page-qV21CdRx.esm.js.map → order-page-Brrq-LAx.esm.js.map} +1 -1
- package/dist/chunks/{order-page-BL4PDyMz.esm.js → order-page-C41TBLoV.esm.js} +2 -2
- package/dist/chunks/{order-page-BL4PDyMz.esm.js.map → order-page-C41TBLoV.esm.js.map} +1 -1
- package/dist/chunks/{promo-pill-label-CbW_Vcru.esm.js → promo-pill-label-BESRGLn7.esm.js} +3 -3
- package/dist/chunks/promo-pill-label-BESRGLn7.esm.js.map +1 -0
- package/dist/chunks/promo-pill-label-YOC47M3t.esm.js +16 -0
- package/dist/chunks/promo-pill-label-YOC47M3t.esm.js.map +1 -0
- package/dist/chunks/{routes-BAqFeD8S.esm.js → routes-BGx3ADhY.esm.js} +2 -2
- package/dist/chunks/{routes-BAqFeD8S.esm.js.map → routes-BGx3ADhY.esm.js.map} +1 -1
- package/dist/chunks/{routes-C75nl1NS.esm.js → routes-D0_9umO_.esm.js} +2 -2
- package/dist/chunks/{routes-C75nl1NS.esm.js.map → routes-D0_9umO_.esm.js.map} +1 -1
- package/dist/chunks/{share-button-BxWziSBl.esm.js → share-button-BmoEHT-C.esm.js} +2 -2
- package/dist/chunks/{share-button-BxWziSBl.esm.js.map → share-button-BmoEHT-C.esm.js.map} +1 -1
- package/dist/chunks/{share-button-BNp67BPn.esm.js → share-button-CV5FZFS9.esm.js} +2 -2
- package/dist/chunks/{share-button-BNp67BPn.esm.js.map → share-button-CV5FZFS9.esm.js.map} +1 -1
- package/dist/chunks/{share-button-BSHKEfJo.esm.js → share-button-D-c9M84d.esm.js} +2 -2
- package/dist/chunks/{share-button-BSHKEfJo.esm.js.map → share-button-D-c9M84d.esm.js.map} +1 -1
- package/dist/chunks/{share-button-DCMaVhyw.esm.js → share-button-DcaL0AYo.esm.js} +2 -2
- package/dist/chunks/{share-button-DCMaVhyw.esm.js.map → share-button-DcaL0AYo.esm.js.map} +1 -1
- package/dist/chunks/{update-cart-FKTMMTl5.esm.js → update-cart-CFB8JVgq.esm.js} +2 -2
- package/dist/chunks/{update-cart-FKTMMTl5.esm.js.map → update-cart-CFB8JVgq.esm.js.map} +1 -1
- package/dist/chunks/{update-cart-DPxyDjY9.esm.js → update-cart-Dsu0mPtW.esm.js} +2 -2
- package/dist/chunks/{update-cart-DPxyDjY9.esm.js.map → update-cart-Dsu0mPtW.esm.js.map} +1 -1
- package/dist/components/community-impact.esm.js +9 -9
- package/dist/components/community-impact.esm.js.map +1 -1
- package/dist/components/community-impact.js +9 -9
- package/dist/components/community-impact.js.map +1 -1
- package/dist/components/cumulative-impact.esm.js +1 -1
- package/dist/components/cumulative-impact.js +1 -1
- package/dist/components/impact-overview.esm.js +7 -7
- package/dist/components/impact-overview.esm.js.map +1 -1
- package/dist/components/impact-overview.js +7 -7
- package/dist/components/impact-overview.js.map +1 -1
- package/dist/components/index.esm.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/post-purchase.d.ts +1 -1
- package/dist/components/post-purchase.esm.js +1 -1
- package/dist/components/post-purchase.js +1 -1
- package/dist/components/product-details-page.d.ts +1 -1
- package/dist/components/product-details-page.esm.js +11 -11
- package/dist/components/product-details-page.esm.js.map +1 -1
- package/dist/components/product-details-page.js +11 -11
- package/dist/components/product-details-page.js.map +1 -1
- package/dist/components/redeem-transaction.d.ts +1 -1
- package/dist/components/redeem-transaction.esm.js +1 -1
- package/dist/components/redeem-transaction.js +1 -1
- package/dist/components/select-nonprofit.d.ts +1 -1
- package/dist/components/select-nonprofit.esm.js +9 -9
- package/dist/components/select-nonprofit.esm.js.map +1 -1
- package/dist/components/select-nonprofit.js +9 -9
- package/dist/components/select-nonprofit.js.map +1 -1
- package/dist/components/select-subscription-nonprofit.d.ts +1 -1
- package/dist/components/select-subscription-nonprofit.esm.js +7 -7
- package/dist/components/select-subscription-nonprofit.esm.js.map +1 -1
- package/dist/components/select-subscription-nonprofit.js +7 -7
- package/dist/components/select-subscription-nonprofit.js.map +1 -1
- package/dist/components/shopify.esm.js +1 -1
- package/dist/components/shopify.js +1 -1
- package/dist/components/social-share.esm.js +1 -1
- package/dist/components/social-share.js +1 -1
- package/dist/components/subscription-impact.d.ts +1 -1
- package/dist/components/subscription-impact.esm.js +3 -3
- package/dist/components/subscription-impact.esm.js.map +1 -1
- package/dist/components/subscription-impact.js +3 -3
- package/dist/components/subscription-impact.js.map +1 -1
- package/dist/components/subscription-management.d.ts +1 -1
- package/dist/components/subscription-management.esm.js +1 -1
- package/dist/components/subscription-management.esm.js.map +1 -1
- package/dist/components/subscription-management.js +1 -1
- package/dist/components/subscription-management.js.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/integrations/beam.esm.js +1 -1
- package/dist/integrations/beam.js +1 -1
- package/dist/integrations/cart.esm.js +1 -1
- package/dist/integrations/cart.js +1 -1
- package/dist/integrations/index.esm.js +1 -1
- package/dist/integrations/index.js +1 -1
- package/dist/integrations/logs.esm.js +1 -1
- package/dist/integrations/logs.js +1 -1
- package/dist/integrations/shopify.esm.js +1 -1
- package/dist/integrations/shopify.js +1 -1
- package/dist/integrations/statsig.esm.js +1 -1
- package/dist/integrations/statsig.js +1 -1
- package/dist/react/community-impact.esm.js +1 -1
- package/dist/react/community-impact.js +1 -1
- package/dist/react/cumulative-impact.esm.js +1 -1
- package/dist/react/cumulative-impact.js +1 -1
- package/dist/react/impact-overview.esm.js +1 -1
- package/dist/react/impact-overview.js +1 -1
- package/dist/react/index.esm.js +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/post-purchase.esm.js +1 -1
- package/dist/react/post-purchase.js +1 -1
- package/dist/react/product-details-page.esm.js +1 -1
- package/dist/react/product-details-page.esm.js.map +1 -1
- package/dist/react/product-details-page.js +1 -1
- package/dist/react/product-details-page.js.map +1 -1
- package/dist/react/redeem-transaction.esm.js +1 -1
- package/dist/react/redeem-transaction.esm.js.map +1 -1
- package/dist/react/redeem-transaction.js +1 -1
- package/dist/react/redeem-transaction.js.map +1 -1
- package/dist/react/select-nonprofit.esm.js +1 -1
- package/dist/react/select-nonprofit.esm.js.map +1 -1
- package/dist/react/select-nonprofit.js +1 -1
- package/dist/react/select-nonprofit.js.map +1 -1
- package/dist/react/select-subscription-nonprofit.esm.js +1 -1
- package/dist/react/select-subscription-nonprofit.js +1 -1
- package/dist/react/social-share.esm.js +1 -1
- package/dist/react/social-share.js +1 -1
- package/dist/react/subscription-impact.esm.js +1 -1
- package/dist/react/subscription-impact.esm.js.map +1 -1
- package/dist/react/subscription-impact.js +1 -1
- package/dist/react/subscription-impact.js.map +1 -1
- package/dist/react/subscription-management.esm.js +1 -1
- package/dist/react/subscription-management.esm.js.map +1 -1
- package/dist/react/subscription-management.js +1 -1
- package/dist/react/subscription-management.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/index-BfJw1nDH.esm.js.map +0 -1
- package/dist/chunks/index-C0iBcnhO.esm.js.map +0 -1
- package/dist/chunks/index-CB2FlO76.esm.js +0 -2
- package/dist/chunks/index-CB2FlO76.esm.js.map +0 -1
- package/dist/chunks/index-CFuuHEma.esm.js +0 -2
- package/dist/chunks/index-CFuuHEma.esm.js.map +0 -1
- package/dist/chunks/index-CJLX6Cat.esm.js.map +0 -1
- package/dist/chunks/index-CXu50lhe.esm.js.map +0 -1
- package/dist/chunks/index-Cb7UHLgc.esm.js.map +0 -1
- package/dist/chunks/index-DQU56kcv.esm.js +0 -2
- package/dist/chunks/index-DQU56kcv.esm.js.map +0 -1
- package/dist/chunks/index-DTnVjvy8.esm.js.map +0 -1
- package/dist/chunks/index-O-hdOxQR.esm.js +0 -2
- package/dist/chunks/index-O-hdOxQR.esm.js.map +0 -1
- package/dist/chunks/promo-pill-label-CbW_Vcru.esm.js.map +0 -1
- package/dist/utils/uuid.d.ts +0 -8
- package/dist/utils/uuid.esm.js +0 -2
- package/dist/utils/uuid.esm.js.map +0 -1
- package/dist/utils/uuid.js +0 -2
- package/dist/utils/uuid.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}% will be donated for you.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `At no extra cost, select a nonprofit and ${donationPercentage}% will be donated for you.`,\n inlineSeparator: () => `: `,\n },\n fr: {\n beamAttribution: () => `Optimisé par Beam`,\n ctaTitle: () => `Choisissez votre cause`,\n ctaPromoPrefixMessage: () => `Sans frais supplémentaires,`,\n ctaPromoMessage: ({ donationPercentage = \"1\" } = {}) =>\n `sélectionnez une association et ${donationPercentage} % sera reversé en votre nom.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Sans frais supplémentaires, choisissez une association et ${donationPercentage} % de votre commande sera reversé en votre nom.`,\n inlineSeparator: () => ` : `,\n },\n de: {\n beamAttribution: () => `Unterstützt von Beam`,\n ctaTitle: () => `Wähle deine Wirkung`,\n ctaPromoPrefixMessage: () => `Ohne zusätzliche Kosten,`,\n ctaPromoMessage: ({ donationPercentage = \"1\" } = {}) =>\n `wähle eine Organisation und ${donationPercentage}% deines Einkaufs werden gespendet.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Ohne zusätzliche Kosten kannst du eine gemeinnützige Organisation auswählen und ${donationPercentage}% deiner Bestellung werden gespendet.`,\n inlineSeparator: () => `: `,\n },\n es: {\n beamAttribution: () => `Ofrecido por Beam`,\n ctaTitle: () => `Elige tu impacto`,\n ctaPromoPrefixMessage: () => `Sin coste adicional,`,\n ctaPromoMessage: ({ donationPercentage = \"1\" } = {}) =>\n `elige una organización y donaremos el ${donationPercentage}% en tu nombre.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Sin coste adicional, elige una organización sin fines de lucro y donaremos el ${donationPercentage}% de tu compra en tu nombre.`,\n inlineSeparator: () => `: `,\n },\n it: {\n beamAttribution: () => `Gestito da Beam`,\n ctaTitle: () => `Scegli il tuo impatto`,\n ctaPromoPrefixMessage: () => `Senza costi aggiuntivi,`,\n ctaPromoMessage: ({ donationPercentage = \"1\" } = {}) =>\n `scegli un'organizzazione e doneremo l’${donationPercentage}% per te.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Senza costi aggiuntivi, seleziona un'organizzazione no-profit e doneremo l’${donationPercentage}% del tuo acquisto per te.`,\n inlineSeparator: () => `: `,\n },\n pl: {\n beamAttribution: () => `Obsługiwane przez Beam`,\n ctaTitle: () => `Wybierz swój wpływ`,\n ctaPromoPrefixMessage: () => `Bez dodatkowych kosztów,`,\n ctaPromoMessage: ({ donationPercentage = \"1\" } = {}) =>\n `wybierz organizację, a ${donationPercentage}% zostanie przekazane w Twoim imieniu.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Bez dodatkowych kosztów wybierz organizację, której przekażemy ${donationPercentage}% wartości Twojego zamówienia w Twoim imieniu.`,\n inlineSeparator: () => `: `,\n },\n ja: {\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}% will be donated for you.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `At no extra cost, select a nonprofit and ${donationPercentage}% will be donated for you.`,\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 BeamWidgetInitialNonprofitSyncEvent,\n BeamWidgetInitialNonprofitSyncCancelEvent,\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\nlet didHandleInitialNonprofitSync = false;\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 creationMethod: \"cart\",\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 private handleNonprofitSelect = (evt: BeamNonprofitSelectEvent) => {\n const { selectionId, selectedNonprofitId } = evt.detail;\n if (selectedNonprofitId === this.selectedNonprofitId) {\n return;\n }\n\n // If there's multiple instances of this component on the page,\n // and a selection is made from a different instance,\n // we need to update this instance's internal metadata\n this.selectionId = selectionId;\n this.selectedNonprofitId = selectedNonprofitId ?? null;\n };\n\n private handleInitialNonprofitSync = (evt: BeamWidgetInitialNonprofitSyncEvent) => {\n if (didHandleInitialNonprofitSync) return;\n const { nonprofitId, selectionId } = evt.detail;\n const nonprofitChanged = nonprofitId !== undefined && this.selectedNonprofitId !== nonprofitId;\n const selectionChanged = selectionId !== undefined && this.selectionId !== selectionId;\n\n if (nonprofitChanged || selectionChanged) {\n if (nonprofitChanged) {\n this.selectedNonprofitId = nonprofitId;\n }\n if (selectionChanged) {\n this.selectionId = selectionId;\n }\n\n this.requestUpdate();\n\n didHandleInitialNonprofitSync = true;\n window.removeEventListener(\n BeamWidgetInitialNonprofitSyncEvent.eventName,\n this.handleInitialNonprofitSync as EventListener\n );\n }\n };\n\n async connectedCallback() {\n // logger.debug(\"[select-nonprofit][connectedCallback]\");\n super.connectedCallback();\n window.addEventListener(\n BeamWidgetInitialNonprofitSyncEvent.eventName,\n this.handleInitialNonprofitSync as EventListener\n );\n window.addEventListener(BeamNonprofitSelectEvent.eventName, this.handleNonprofitSelect as EventListener);\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 \"promoCodes\",\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 window.removeEventListener(BeamNonprofitSelectEvent.eventName, this.handleNonprofitSelect 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 } 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\n /**\n * If we're making a specific selection, there's no need to sync from\n * an existing cart property, so cancel that sync because it's just going to\n * cause this component's state to get out of sync with the Beam backend\n */\n this.dispatchEvent(new BeamWidgetInitialNonprofitSyncCancelEvent({}));\n window.removeEventListener(\n BeamWidgetInitialNonprofitSyncEvent.eventName,\n this.handleInitialNonprofitSync as EventListener\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-borderWidth\": \"1px\",\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 \"--beam-SelectNonprofit-force-multiline-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 isInlineHeaderEnabled = getCssVar(\"--beam-SelectNonprofit-enable-inline-header\") === \"false\";\n const isMultilineHeaderForced = getCssVar(\"--beam-SelectNonprofit-force-multiline-header\") === \"true\";\n const shouldDisplayInlineHeader = !isMultilineHeaderForced && (isInlineHeaderEnabled || 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 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 borderWidth: \"var(--beam-SelectNonprofit-options-borderWidth, 1px)\",\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","didHandleInitialNonprofitSync","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","selectionId","nonprofitId","nonprofitChanged","selectionChanged","BeamWidgetInitialNonprofitSyncEvent","id","index","nonprofits","currentId","nextFocus","focusTarget","BeamWidgetInitialNonprofitSyncCancelEvent","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","isInlineHeaderEnabled","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
|
+
{"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}% will be donated for you.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `At no extra cost, select a nonprofit and ${donationPercentage}% will be donated for you.`,\n inlineSeparator: () => `: `,\n },\n fr: {\n beamAttribution: () => `Optimisé par Beam`,\n ctaTitle: () => `Choisissez votre cause`,\n ctaPromoPrefixMessage: () => `Sans frais supplémentaires,`,\n ctaPromoMessage: ({ donationPercentage = \"1\" } = {}) =>\n `sélectionnez une association et ${donationPercentage} % sera reversé en votre nom.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Sans frais supplémentaires, choisissez une association et ${donationPercentage} % de votre commande sera reversé en votre nom.`,\n inlineSeparator: () => ` : `,\n },\n de: {\n beamAttribution: () => `Unterstützt von Beam`,\n ctaTitle: () => `Wähle deine Wirkung`,\n ctaPromoPrefixMessage: () => `Ohne zusätzliche Kosten,`,\n ctaPromoMessage: ({ donationPercentage = \"1\" } = {}) =>\n `wähle eine Organisation und ${donationPercentage}% deines Einkaufs werden gespendet.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Ohne zusätzliche Kosten kannst du eine gemeinnützige Organisation auswählen und ${donationPercentage}% deiner Bestellung werden gespendet.`,\n inlineSeparator: () => `: `,\n },\n es: {\n beamAttribution: () => `Ofrecido por Beam`,\n ctaTitle: () => `Elige tu impacto`,\n ctaPromoPrefixMessage: () => `Sin coste adicional,`,\n ctaPromoMessage: ({ donationPercentage = \"1\" } = {}) =>\n `elige una organización y donaremos el ${donationPercentage}% en tu nombre.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Sin coste adicional, elige una organización sin fines de lucro y donaremos el ${donationPercentage}% de tu compra en tu nombre.`,\n inlineSeparator: () => `: `,\n },\n it: {\n beamAttribution: () => `Gestito da Beam`,\n ctaTitle: () => `Scegli il tuo impatto`,\n ctaPromoPrefixMessage: () => `Senza costi aggiuntivi,`,\n ctaPromoMessage: ({ donationPercentage = \"1\" } = {}) =>\n `scegli un'organizzazione e doneremo l’${donationPercentage}% per te.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Senza costi aggiuntivi, seleziona un'organizzazione no-profit e doneremo l’${donationPercentage}% del tuo acquisto per te.`,\n inlineSeparator: () => `: `,\n },\n pl: {\n beamAttribution: () => `Obsługiwane przez Beam`,\n ctaTitle: () => `Wybierz swój wpływ`,\n ctaPromoPrefixMessage: () => `Bez dodatkowych kosztów,`,\n ctaPromoMessage: ({ donationPercentage = \"1\" } = {}) =>\n `wybierz organizację, a ${donationPercentage}% zostanie przekazane w Twoim imieniu.`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `Bez dodatkowych kosztów wybierz organizację, której przekażemy ${donationPercentage}% wartości Twojego zamówienia w Twoim imieniu.`,\n inlineSeparator: () => `: `,\n },\n ja: {\n beamAttribution: () => `Powered by Beam`,\n ctaTitle: () => `寄付先をお選びください。`,\n ctaPromoPrefixMessage: () => `追加費用なしで、`,\n ctaPromoMessage: ({ donationPercentage = \"1\" } = {}) =>\n `非営利団体を選ぶと、${donationPercentage}%がその団体に寄付されます。`,\n ctaMessage: ({ donationPercentage = \"1\" } = {}) =>\n `追加費用なしで非営利団体をお選びいただくと、ご購入金額の${donationPercentage}%が寄付されます。`,\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 BeamWidgetInitialNonprofitSyncEvent,\n BeamWidgetInitialNonprofitSyncCancelEvent,\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\nlet didHandleInitialNonprofitSync = false;\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 creationMethod: \"cart\",\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 private handleNonprofitSelect = (evt: BeamNonprofitSelectEvent) => {\n const { selectionId, selectedNonprofitId } = evt.detail;\n if (selectedNonprofitId === this.selectedNonprofitId) {\n return;\n }\n\n // If there's multiple instances of this component on the page,\n // and a selection is made from a different instance,\n // we need to update this instance's internal metadata\n this.selectionId = selectionId;\n this.selectedNonprofitId = selectedNonprofitId ?? null;\n };\n\n private handleInitialNonprofitSync = (evt: BeamWidgetInitialNonprofitSyncEvent) => {\n if (didHandleInitialNonprofitSync) return;\n const { nonprofitId, selectionId } = evt.detail;\n const nonprofitChanged = nonprofitId !== undefined && this.selectedNonprofitId !== nonprofitId;\n const selectionChanged = selectionId !== undefined && this.selectionId !== selectionId;\n\n if (nonprofitChanged || selectionChanged) {\n if (nonprofitChanged) {\n this.selectedNonprofitId = nonprofitId;\n }\n if (selectionChanged) {\n this.selectionId = selectionId;\n }\n\n this.requestUpdate();\n\n didHandleInitialNonprofitSync = true;\n window.removeEventListener(\n BeamWidgetInitialNonprofitSyncEvent.eventName,\n this.handleInitialNonprofitSync as EventListener\n );\n }\n };\n\n async connectedCallback() {\n // logger.debug(\"[select-nonprofit][connectedCallback]\");\n super.connectedCallback();\n window.addEventListener(\n BeamWidgetInitialNonprofitSyncEvent.eventName,\n this.handleInitialNonprofitSync as EventListener\n );\n window.addEventListener(BeamNonprofitSelectEvent.eventName, this.handleNonprofitSelect as EventListener);\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 \"promoCodes\",\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 window.removeEventListener(BeamNonprofitSelectEvent.eventName, this.handleNonprofitSelect 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 } 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\n /**\n * If we're making a specific selection, there's no need to sync from\n * an existing cart property, so cancel that sync because it's just going to\n * cause this component's state to get out of sync with the Beam backend\n */\n this.dispatchEvent(new BeamWidgetInitialNonprofitSyncCancelEvent({}));\n window.removeEventListener(\n BeamWidgetInitialNonprofitSyncEvent.eventName,\n this.handleInitialNonprofitSync as EventListener\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-borderWidth\": \"1px\",\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 \"--beam-SelectNonprofit-force-multiline-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 isInlineHeaderEnabled = getCssVar(\"--beam-SelectNonprofit-enable-inline-header\") === \"true\";\n const isMultilineHeaderForced = getCssVar(\"--beam-SelectNonprofit-force-multiline-header\") === \"true\";\n const shouldDisplayInlineHeader = !isMultilineHeaderForced && (isInlineHeaderEnabled || 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 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 borderWidth: \"var(--beam-SelectNonprofit-options-borderWidth, 1px)\",\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","didHandleInitialNonprofitSync","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","selectionId","nonprofitId","nonprofitChanged","selectionChanged","BeamWidgetInitialNonprofitSyncEvent","id","index","nonprofits","currentId","nextFocus","focusTarget","BeamWidgetInitialNonprofitSyncCancelEvent","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","isInlineHeaderEnabled","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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"}
|
|
@@ -57,7 +57,7 @@ declare class BeamSelectSubscriptionNonprofit extends LitElement {
|
|
|
57
57
|
evaluateBreakPoints: lodash.DebouncedFuncLeading<() => void>;
|
|
58
58
|
get cssVariables(): any;
|
|
59
59
|
static styles: lit.CSSResult[];
|
|
60
|
-
protected render(): lit_html.TemplateResult<1
|
|
60
|
+
protected render(): "" | lit_html.TemplateResult<1>;
|
|
61
61
|
}
|
|
62
62
|
declare global {
|
|
63
63
|
interface HTMLElementTagNameMap {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{m as
|
|
1
|
+
import{m as D,y as m,f as F,g as p,t as E,h as I,u as z,q as v,k as L}from"../chunks/lit-WqMxC_PA.esm.js";import{d as A}from"../chunks/lodash-D3TLHRR_.esm.js";import{D as M,d as W,u as P,W as U,S as R}from"../chunks/routes-D0_9umO_.esm.js";import{u as d,A as k,d as u,a as _,_ as N,i as l}from"../chunks/localize-Btu9xYcE.esm.js";import{p as j}from"../chunks/progress-bar-DF7UuuHb.esm.js";import{c as H,d as K,e as x}from"../chunks/enforce-config-CZ3ToOgr.esm.js";import{_ as O}from"../chunks/loading-template-DG4lkIIc.esm.js";import{makeApiKeyHeader as C}from"../utils/makeApiKeyHeader.esm.js";import{B as G}from"../chunks/beam-errors-Ci0d3926.esm.js";import{createScopedLocalStorage as q}from"../utils/local-storage.esm.js";import{c as V}from"../chunks/css-card-grid-CvoGpsJH.esm.js";import{c as Z}from"../chunks/events-Dki0ka4F.esm.js";import"./beam-partner-logos.esm.js";import"../chunks/promo-types-DKAOFHJr.esm.js";import"../utils/logger.esm.js";const J=({height:e="1em",width:t="1em"}={})=>m`
|
|
2
2
|
<svg
|
|
3
|
-
style="${
|
|
3
|
+
style="${D({height:e,width:t,position:"relative",bottom:"0"})}"
|
|
4
4
|
xmlns="http://www.w3.org/2000/svg"
|
|
5
5
|
viewBox="0 0 78.369 78.369"
|
|
6
6
|
>
|
|
@@ -13,7 +13,7 @@ import{m as I,y as m,f as z,g as p,t as D,h as L,u as F,q as v,k as M}from"../ch
|
|
|
13
13
|
/>
|
|
14
14
|
</g>
|
|
15
15
|
</svg>
|
|
16
|
-
`,S={en:{ctaTitle:()=>"Choose Your Impact",ctaMessagePrefix:()=>" at no extra cost, with every order of your subscription.",ctaMessage:({donationPercentage:e="1%"}={})=>`Choose a nonprofit and ${e} will be donated there for you,`,submitButtonText:()=>"Confirm",submitButtonTextCompleted:()=>"Confirmed!",chooseButtonText:()=>"Choose"},fr:{ctaTitle:()=>"Choisissez votre impact",ctaMessagePrefix:()=>" sans frais suppl\xE9mentaires, \xE0 chaque commande de votre abonnement.",ctaMessage:({donationPercentage:e="1%"}={})=>`Choisissez une association et ${e} sera revers\xE9 en votre nom,`,submitButtonText:()=>"Confirmer",submitButtonTextCompleted:()=>"Confirm\xE9 !",chooseButtonText:()=>"Choisir"},de:{ctaTitle:()=>"W\xE4hle deinen Impact",ctaMessagePrefix:()=>" ohne zus\xE4tzliche Kosten, bei jeder Bestellung deines Abonnements.",ctaMessage:({donationPercentage:e="1%"}={})=>`W\xE4hle eine gemeinn\xFCtzige Organisation und ${e} werden in deinem Namen gespendet,`,submitButtonText:()=>"Best\xE4tigen",submitButtonTextCompleted:()=>"Best\xE4tigt!",chooseButtonText:()=>"W\xE4hlen"},es:{ctaTitle:()=>"Elige tu impacto",ctaMessagePrefix:()=>" sin coste adicional, con cada pedido de tu suscripci\xF3n.",ctaMessage:({donationPercentage:e="1%"}={})=>`Elige una organizaci\xF3n sin \xE1nimo de lucro y donaremos ${e} en tu nombre,`,submitButtonText:()=>"Confirmar",submitButtonTextCompleted:()=>"\xA1Confirmado!",chooseButtonText:()=>"Elegir"},it:{ctaTitle:()=>"Scegli il tuo impatto",ctaMessagePrefix:()=>" senza costi aggiuntivi, a ogni ordine del tuo abbonamento.",ctaMessage:({donationPercentage:e="1%"}={})=>`Seleziona un'organizzazione no-profit e l\u2019${e} sar\xE0 donato a tuo nome,`,submitButtonText:()=>"Confermare",submitButtonTextCompleted:()=>"Confermato!",chooseButtonText:()=>"Scegli"},pl:{ctaTitle:()=>"Wybierz sw\xF3j wp\u0142yw",ctaMessagePrefix:()=>" bez \u017Cadnych dodatkowych koszt\xF3w, przy ka\u017Cdym zam\xF3wieniu w ramach subskrypcji.",ctaMessage:({donationPercentage:e="1%"}={})=>`Wybierz organizacj\u0119 non-profit, a ${e} zostanie przekazane w Twoim imieniu,`,submitButtonText:()=>"Zatwierd\u017A",submitButtonTextCompleted:()=>"Zatwierdzono!",chooseButtonText:()=>"Wybierz"},ja:{ctaTitle:()=>"Choose Your Impact",ctaMessagePrefix:()=>" at no extra cost, with every order of your subscription.",ctaMessage:({donationPercentage:e="1%"}={})=>`Choose a nonprofit and ${e} will be donated there for you,`,submitButtonText:()=>"Confirm",submitButtonTextCompleted:()=>"Confirmed!",chooseButtonText:()=>"Choose"}};var Y=Object.defineProperty,c=(e,t,o,n)=>{for(var i=void 0,b=e.length-1,s;b>=0;b--)(s=e[b])&&(i=s(t,o,i)||i);return i&&Y(t,o,i),i};const Q=2*60*60*1e3;class a extends L{constructor(){super(...arguments),this.baseUrl=E,this.lang="en",this.draftConfig=!1,this.debug=!1,this.isMobile=window.innerWidth<768,this.getChainNonprofits=async()=>{x(["apiKey","subscriptionId","storeId"],this);const t=await P({baseUrl:this.baseUrl,headers:C(this.apiKey),requestBody:{storeId:this.storeId,postalCode:this.postalCode,countryCode:this.countryCode,widgetName:"select-subscription-nonprofit",version:"1.0.0",lang:this.configLang,options:{config:{draftConfig:this.draftConfig}}}});return this.localStorage.setItemJson("chainNonprofits",{createdAt:new Date,data:t}),t},this.updateNonprofitIdForSubscription=async({selectedNonprofitId:t})=>this.subscriptionId?(x(["apiKey","subscriptionId"],this),A({baseUrl:this.baseUrl,headers:C(this.apiKey),requestBody:{remoteSubscriptionId:this.subscriptionId,nonprofitId:t,selectionMethod:"subscription_management_widget"}})):null,this.nonprofitListDataController=new k(this,this.getChainNonprofits),this.subscriptionUpdateDataController=new k(this,this.updateNonprofitIdForSubscription),this.localStorage=q(this),this.makeHandleSelect=(t,o,n)=>async i=>{if(!this.allowChange)return;const b=this.selectedNonprofitId;if(i instanceof KeyboardEvent){let s=null;switch(i.key){case"ArrowUp":case"ArrowLeft":o===0?s=n[n.length-1]:s=n[o-1],i.preventDefault();break;case"ArrowRight":case"ArrowDown":o===n.length-1?s=n[0]:s=n[o+1],i.preventDefault();break;case"Enter":case" ":i.preventDefault();break;default:return}if(s){const f=this.renderRoot.querySelector(`[data-value="${s.nonprofit.id}"]`);f!==null&&(f.tabIndex=0,f.focus());return}}if(i.currentTarget instanceof HTMLElement){if(b===t)return;this.selectedNonprofitId=t}},this.handleSubmit=async()=>{const{selectedNonprofitId:t}=this;if(!this.allowSubmit||t==null)return;await this.subscriptionUpdateDataController.exec({selectedNonprofitId:t});const o=this.nonprofitListDataController?.data?.nonprofits.find(n=>n.nonprofit.id===t);this.dispatchEvent(new Z({selectedNonprofitId:t,nonprofitName:o?.nonprofit.name,source:U.select_subscription_nonprofit}))},this.evaluateBreakPoints=W(()=>{this.isMobile=window.innerWidth<768},50,{maxWait:50,leading:!0})}get configLang(){return R[this.lang]||"en"}connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this.evaluateBreakPoints)}async firstUpdated(t){await this.restoreStateFromCache()}async updated(t){const o=["baseUrl","storeId","apiKey","countryCode","postalCode","lang"];for(const n of o)if(t.has(n)){await this.nonprofitListDataController.exec();break}}disconnectedCallback(){super.disconnectedCallback()}restoreStateFromCache(){x(["apiKey"],this);try{const{createdAt:t=0,data:o}=this.localStorage.getItemJson("chainNonprofits")||{};new Date(t).valueOf()+Q>new Date().valueOf()&&(this.nonprofitListDataController.data=o,this.nonprofitListDataController.loading=!1)}catch{}}get allowChange(){return this.subscriptionUpdateDataController.data==null&&!this.subscriptionUpdateDataController.loading}get allowSubmit(){return!!(this.selectedNonprofitId&&this.allowChange)}get cssVariables(){const t={...j,"--beam-fontFamily":"inherit","--beam-fontStyle":"inherit","--beam-fontSize":"inherit","--beam-textColor":"inherit","--beam-backgroundColor":"inherit","--beam-SelectSubscriptionNonprofit-maxWidth":"800px","--beam-SelectSubscriptionNonprofit-mobile-header-alignItems":"center","--beam-SelectSubscriptionNonprofit-desktop-header-alignItems":"center","--beam-SelectSubscriptionNonprofit-headerContainer-padding":"2px","--beam-SelectSubscriptionNonprofit-title-textAlign":"inherit","--beam-SelectSubscriptionNonprofit-description-textAlign":"center","--beam-SelectSubscriptionNonprofit-description-lineHeight":"138%","--beam-SelectSubscriptionNonprofit-description-marginTop":"3px","--beam-SelectSubscriptionNonprofit-desktop-description-width":"80%","--beam-SelectSubscriptionNonprofit-mobile-description-width":"90%","--beam-SelectSubscriptionNonprofit-options-marginTop":"10px","--beam-SelectSubscriptionNonprofit-options-padding":"10px","--beam-SelectSubscriptionNonprofit-options-borderWidth":"1px","--beam-SelectSubscriptionNonprofit-options-borderColor":"transparent","--beam-SelectSubscriptionNonprofit-options-borderRadius":"8px","--beam-SelectSubscriptionNonprofit-options-backgroundColor":"#F9FBFB","--beam-SelectSubscriptionNonprofit-option-padding":"15px","--beam-SelectSubscriptionNonprofit-options-hover-backgroundColor":"#e1f1ee","--beam-SelectSubscriptionNonprofit-options-hover-borderWidth":"1px","--beam-SelectSubscriptionNonprofit-options-hover-borderColor":"#e1f1ee","--beam-SelectSubscriptionNonprofit-options-selected-borderWidth":"1px","--beam-SelectSubscriptionNonprofit-options-selected-borderColor":"#e1f1ee","--beam-SelectSubscriptionNonprofit-options-selected-backgroundColor":"#e1f1ee","--beam-SelectSubscriptionNonprofit-options-gap":"20px","--beam-SelectSubscriptionNonprofit-options-minWidth":"250px","--beam-SelectSubscriptionNonprofit-options-columnCount":"2","--beam-SelectSubscriptionNonprofit-options-icon-borderRadius":"4px","--beam-SelectSubscriptionNonprofit-options-icon-padding":"10px","--beam-SelectSubscriptionNonprofit-options-image-borderRadius":"4px","--beam-SelectSubscriptionNonprofit-cardIconContainer-height":"100%","--beam-SelectSubscriptionNonprofit-iconBackground-width":"50px","--beam-SelectSubscriptionNonprofit-iconBackground-height":"50px","--beam-SelectSubscriptionNonprofit-iconBackground-borderRadius":"50%","--beam-SelectSubscriptionNonprofit-iconBackground-background":"#0a323c","--beam-SelectSubscriptionNonprofit-icon-height":"50px","--beam-SelectSubscriptionNonprofit-checkmark-backgroundColor":"transparent","--beam-SelectSubscriptionNonprofit-checkmark-color":"transparent","--beam-SelectSubscriptionNonprofit-checkmark-borderColor":"#0A323C","--beam-SelectSubscriptionNonprofit-checkmark-selected-color":"#fff","--beam-SelectSubscriptionNonprofit-checkmark-selected-backgroundColor":"#0A323C","--beam-SelectSubscriptionNonprofit-checkmark-selected-borderColor":"#0A323C","--beam-SelectSubscriptionNonprofit-checkmark-hover-color":"#fff","--beam-SelectSubscriptionNonprofit-checkmark-hover-backgroundColor":"#0A323C","--beam-SelectSubscriptionNonprofit-checkmark-hover-borderColor":"#0A323C","--beam-SelectSubscriptionNonprofit-cardStyle":"'selected_icon'","--beam-SelectSubscriptionNonprofit-submitButton-color":"#fff","--beam-SelectSubscriptionNonprofit-submitButton-hover-color":"#fff","--beam-SelectSubscriptionNonprofit-submitButton-disabled-color":"#fff","--beam-SelectSubscriptionNonprofit-submitButton-backgroundColor":"#0A323C","--beam-SelectSubscriptionNonprofit-submitButton-hover-backgroundColor":"#222","--beam-SelectSubscriptionNonprofit-submitButton-disabled-backgroundColor":"#767676","--beam-SelectSubscriptionNonprofit-submitButton-borderColor":"#333","--beam-SelectSubscriptionNonprofit-submitButton-hover-borderColor":"#222","--beam-SelectSubscriptionNonprofit-submitButton-disabled-borderColor":"#767676","--beam-SelectSubscriptionNonprofit-submitButton-fontSize":"14px","--beam-SelectSubscriptionNonprofit-submitButton-fontWeight":"inherit","--beam-SelectSubscriptionNonprofit-submitButton-fontFamily":"inherit","--beam-SelectSubscriptionNonprofit-submitButton-textTransform":"none","--beam-SelectSubscriptionNonprofit-submitButton-borderRadius":"30px","--beam-SelectSubscriptionNonprofit-submitButton-padding":"10px 30px",...u("--beam-SelectSubscriptionNonprofit-title",{fontSize:"20px",fontWeight:"bold",lineHeight:"120%",textTransform:"capitalize",color:"#0a323c"}),...u("--beam-SelectSubscriptionNonprofit-descriptionPrefix",{marginTop:"3px",color:"#2f302d",fontSize:"14px",fontWeight:"bold",fontStyle:"normal",lineHeight:"138%"}),...u("--beam-SelectSubscriptionNonprofit-description",{color:"#2f302d",fontSize:"14px",fontStyle:"normal"}),"--beam-SelectSubscriptionNonprofit-details-cause-letterSpacing":"0.36px",...u("--beam-SelectSubscriptionNonprofit-details-cause",{fontSize:"12px",fontWeight:"bold",color:"#0a323c",fontStyle:"normal",lineHeight:"120%"}),...u("--beam-SelectSubscriptionNonprofit-details-description",{fontSize:"12px",marginTop:"5px",fontStyle:"normal",lineHeight:"140%",fontWeight:"400"}),"--beam-SelectSubscriptionNonprofit-details-fundingProgress-marginTop":"7px",...u("--beam-SelectSubscriptionNonprofit-details-funding-progress-label",{fontSize:"12px",color:"#666666",fontWeight:"400",fontStyle:"normal"}),"--beam-SelectSubscriptionNonprofit-stickyFooter-boxShadow":"0px -20px 20px 0px rgba(0, 0, 0, 0.04)","--beam-SelectSubscriptionNonprofit-stickyFooter-padding":"15px 0px 45px","--beam-SelectSubscriptionNonprofit-stickyFooter-backgroundColor":"white","--beam-SelectSubscriptionNonprofit-stickyFooter-marginLeft":"-15px","--beam-SelectSubscriptionNonprofit-stickyFooter-marginRight":"-15px","--beam-SelectSubscriptionNonprofit-stickyFooter-width":"auto"},o=this.nonprofitListDataController?.data?.config?.web?.theme||{},n={...t,...o};return Object.assign(Object.create({toCSS(){return _(this)}}),n)}render(){const{selectedNonprofitId:t}=this,{data:o,loading:n}=this.nonprofitListDataController;if(n&&!o)return O();if(this.nonprofitListDataController.error)return this.debug?N({error:this.nonprofitListDataController.error}):"";if(this.subscriptionUpdateDataController.error&&this.debug)return N({error:this.subscriptionUpdateDataController.error});if(o==null)return this.debug?N({error:new G("No data")}):"";const i=o?.nonprofits||[],b=i.find(r=>r.nonprofit.id===t)||null,s=this.cssVariables["--beam-SelectSubscriptionNonprofit-cardStyle"],f=s==="'icon'"||s==="'selected_icon'";return m`
|
|
16
|
+
`,S={en:{ctaTitle:()=>"Choose Your Impact",ctaMessagePrefix:()=>" at no extra cost, with every order of your subscription.",ctaMessage:({donationPercentage:e="1%"}={})=>`Choose a nonprofit and ${e} will be donated there for you,`,submitButtonText:()=>"Confirm",submitButtonTextCompleted:()=>"Confirmed!",chooseButtonText:()=>"Choose"},fr:{ctaTitle:()=>"Choisissez votre impact",ctaMessagePrefix:()=>" sans frais suppl\xE9mentaires, \xE0 chaque commande de votre abonnement.",ctaMessage:({donationPercentage:e="1%"}={})=>`Choisissez une association et ${e} sera revers\xE9 en votre nom,`,submitButtonText:()=>"Confirmer",submitButtonTextCompleted:()=>"Confirm\xE9 !",chooseButtonText:()=>"Choisir"},de:{ctaTitle:()=>"W\xE4hle deinen Impact",ctaMessagePrefix:()=>" ohne zus\xE4tzliche Kosten, bei jeder Bestellung deines Abonnements.",ctaMessage:({donationPercentage:e="1%"}={})=>`W\xE4hle eine gemeinn\xFCtzige Organisation und ${e} werden in deinem Namen gespendet,`,submitButtonText:()=>"Best\xE4tigen",submitButtonTextCompleted:()=>"Best\xE4tigt!",chooseButtonText:()=>"W\xE4hlen"},es:{ctaTitle:()=>"Elige tu impacto",ctaMessagePrefix:()=>" sin coste adicional, con cada pedido de tu suscripci\xF3n.",ctaMessage:({donationPercentage:e="1%"}={})=>`Elige una organizaci\xF3n sin \xE1nimo de lucro y donaremos ${e} en tu nombre,`,submitButtonText:()=>"Confirmar",submitButtonTextCompleted:()=>"\xA1Confirmado!",chooseButtonText:()=>"Elegir"},it:{ctaTitle:()=>"Scegli il tuo impatto",ctaMessagePrefix:()=>" senza costi aggiuntivi, a ogni ordine del tuo abbonamento.",ctaMessage:({donationPercentage:e="1%"}={})=>`Seleziona un'organizzazione no-profit e l\u2019${e} sar\xE0 donato a tuo nome,`,submitButtonText:()=>"Confermare",submitButtonTextCompleted:()=>"Confermato!",chooseButtonText:()=>"Scegli"},pl:{ctaTitle:()=>"Wybierz sw\xF3j wp\u0142yw",ctaMessagePrefix:()=>" bez \u017Cadnych dodatkowych koszt\xF3w, przy ka\u017Cdym zam\xF3wieniu w ramach subskrypcji.",ctaMessage:({donationPercentage:e="1%"}={})=>`Wybierz organizacj\u0119 non-profit, a ${e} zostanie przekazane w Twoim imieniu,`,submitButtonText:()=>"Zatwierd\u017A",submitButtonTextCompleted:()=>"Zatwierdzono!",chooseButtonText:()=>"Wybierz"},ja:{ctaTitle:()=>"\u5BC4\u4ED8\u5148\u3092\u304A\u9078\u3073\u304F\u3060\u3055\u3044\u3002",ctaMessagePrefix:()=>"\u8FFD\u52A0\u8CBB\u7528\u306A\u3057\u3067\u3001\u3054\u8CFC\u5165\u3054\u3068\u306B\u3001",ctaMessage:({donationPercentage:e="1%"}={})=>`\u975E\u55B6\u5229\u56E3\u4F53\u3092\u9078\u3076\u3068\u3001${e}\u304C\u305D\u306E\u56E3\u4F53\u306B\u5BC4\u4ED8\u3055\u308C\u307E\u3059\u3001`,submitButtonText:()=>"\u78BA\u8A8D\u3059\u308B",submitButtonTextCompleted:()=>"\u78BA\u8A8D\u6E08\u307F",chooseButtonText:()=>"\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044"}};var Y=Object.defineProperty,c=(e,t,o,n)=>{for(var i=void 0,b=e.length-1,s;b>=0;b--)(s=e[b])&&(i=s(t,o,i)||i);return i&&Y(t,o,i),i};const Q=2*60*60*1e3;class a extends I{constructor(){super(...arguments),this.baseUrl=M,this.lang="en",this.draftConfig=!1,this.debug=!1,this.isMobile=window.innerWidth<768,this.getChainNonprofits=async()=>{x(["apiKey","subscriptionId","storeId"],this);const t=await W({baseUrl:this.baseUrl,headers:C(this.apiKey),requestBody:{storeId:this.storeId,postalCode:this.postalCode,countryCode:this.countryCode,widgetName:"select-subscription-nonprofit",version:"1.0.0",lang:this.configLang,options:{config:{draftConfig:this.draftConfig}}}});return this.localStorage.setItemJson("chainNonprofits",{createdAt:new Date,data:t}),t},this.updateNonprofitIdForSubscription=async({selectedNonprofitId:t})=>this.subscriptionId?(x(["apiKey","subscriptionId"],this),P({baseUrl:this.baseUrl,headers:C(this.apiKey),requestBody:{remoteSubscriptionId:this.subscriptionId,nonprofitId:t,selectionMethod:"subscription_management_widget"}})):null,this.nonprofitListDataController=new k(this,this.getChainNonprofits),this.subscriptionUpdateDataController=new k(this,this.updateNonprofitIdForSubscription),this.localStorage=q(this),this.makeHandleSelect=(t,o,n)=>async i=>{if(!this.allowChange)return;const b=this.selectedNonprofitId;if(i instanceof KeyboardEvent){let s=null;switch(i.key){case"ArrowUp":case"ArrowLeft":o===0?s=n[n.length-1]:s=n[o-1],i.preventDefault();break;case"ArrowRight":case"ArrowDown":o===n.length-1?s=n[0]:s=n[o+1],i.preventDefault();break;case"Enter":case" ":i.preventDefault();break;default:return}if(s){const f=this.renderRoot.querySelector(`[data-value="${s.nonprofit.id}"]`);f!==null&&(f.tabIndex=0,f.focus());return}}if(i.currentTarget instanceof HTMLElement){if(b===t)return;this.selectedNonprofitId=t}},this.handleSubmit=async()=>{const{selectedNonprofitId:t}=this;if(!this.allowSubmit||t==null)return;await this.subscriptionUpdateDataController.exec({selectedNonprofitId:t});const o=this.nonprofitListDataController?.data?.nonprofits.find(n=>n.nonprofit.id===t);this.dispatchEvent(new Z({selectedNonprofitId:t,nonprofitName:o?.nonprofit.name,source:U.select_subscription_nonprofit}))},this.evaluateBreakPoints=A(()=>{this.isMobile=window.innerWidth<768},50,{maxWait:50,leading:!0})}get configLang(){return R[this.lang]||"en"}connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this.evaluateBreakPoints)}async firstUpdated(t){await this.restoreStateFromCache()}async updated(t){const o=["baseUrl","storeId","apiKey","countryCode","postalCode","lang"];for(const n of o)if(t.has(n)){await this.nonprofitListDataController.exec();break}}disconnectedCallback(){super.disconnectedCallback()}restoreStateFromCache(){x(["apiKey"],this);try{const{createdAt:t=0,data:o}=this.localStorage.getItemJson("chainNonprofits")||{};new Date(t).valueOf()+Q>new Date().valueOf()&&(this.nonprofitListDataController.data=o,this.nonprofitListDataController.loading=!1)}catch{}}get allowChange(){return this.subscriptionUpdateDataController.data==null&&!this.subscriptionUpdateDataController.loading}get allowSubmit(){return!!(this.selectedNonprofitId&&this.allowChange)}get cssVariables(){const t={...j,"--beam-fontFamily":"inherit","--beam-fontStyle":"inherit","--beam-fontSize":"inherit","--beam-textColor":"inherit","--beam-backgroundColor":"inherit","--beam-SelectSubscriptionNonprofit-maxWidth":"800px","--beam-SelectSubscriptionNonprofit-mobile-header-alignItems":"center","--beam-SelectSubscriptionNonprofit-desktop-header-alignItems":"center","--beam-SelectSubscriptionNonprofit-headerContainer-padding":"2px","--beam-SelectSubscriptionNonprofit-title-textAlign":"inherit","--beam-SelectSubscriptionNonprofit-description-textAlign":"center","--beam-SelectSubscriptionNonprofit-description-lineHeight":"138%","--beam-SelectSubscriptionNonprofit-description-marginTop":"3px","--beam-SelectSubscriptionNonprofit-desktop-description-width":"80%","--beam-SelectSubscriptionNonprofit-mobile-description-width":"90%","--beam-SelectSubscriptionNonprofit-options-marginTop":"10px","--beam-SelectSubscriptionNonprofit-options-padding":"10px","--beam-SelectSubscriptionNonprofit-options-borderWidth":"1px","--beam-SelectSubscriptionNonprofit-options-borderColor":"transparent","--beam-SelectSubscriptionNonprofit-options-borderRadius":"8px","--beam-SelectSubscriptionNonprofit-options-backgroundColor":"#F9FBFB","--beam-SelectSubscriptionNonprofit-option-padding":"15px","--beam-SelectSubscriptionNonprofit-options-hover-backgroundColor":"#e1f1ee","--beam-SelectSubscriptionNonprofit-options-hover-borderWidth":"1px","--beam-SelectSubscriptionNonprofit-options-hover-borderColor":"#e1f1ee","--beam-SelectSubscriptionNonprofit-options-selected-borderWidth":"1px","--beam-SelectSubscriptionNonprofit-options-selected-borderColor":"#e1f1ee","--beam-SelectSubscriptionNonprofit-options-selected-backgroundColor":"#e1f1ee","--beam-SelectSubscriptionNonprofit-options-gap":"20px","--beam-SelectSubscriptionNonprofit-options-minWidth":"250px","--beam-SelectSubscriptionNonprofit-options-columnCount":"2","--beam-SelectSubscriptionNonprofit-options-icon-borderRadius":"4px","--beam-SelectSubscriptionNonprofit-options-icon-padding":"10px","--beam-SelectSubscriptionNonprofit-options-image-borderRadius":"4px","--beam-SelectSubscriptionNonprofit-cardIconContainer-height":"100%","--beam-SelectSubscriptionNonprofit-iconBackground-width":"50px","--beam-SelectSubscriptionNonprofit-iconBackground-height":"50px","--beam-SelectSubscriptionNonprofit-iconBackground-borderRadius":"50%","--beam-SelectSubscriptionNonprofit-iconBackground-background":"#0a323c","--beam-SelectSubscriptionNonprofit-icon-height":"50px","--beam-SelectSubscriptionNonprofit-checkmark-backgroundColor":"transparent","--beam-SelectSubscriptionNonprofit-checkmark-color":"transparent","--beam-SelectSubscriptionNonprofit-checkmark-borderColor":"#0A323C","--beam-SelectSubscriptionNonprofit-checkmark-selected-color":"#fff","--beam-SelectSubscriptionNonprofit-checkmark-selected-backgroundColor":"#0A323C","--beam-SelectSubscriptionNonprofit-checkmark-selected-borderColor":"#0A323C","--beam-SelectSubscriptionNonprofit-checkmark-hover-color":"#fff","--beam-SelectSubscriptionNonprofit-checkmark-hover-backgroundColor":"#0A323C","--beam-SelectSubscriptionNonprofit-checkmark-hover-borderColor":"#0A323C","--beam-SelectSubscriptionNonprofit-cardStyle":"'selected_icon'","--beam-SelectSubscriptionNonprofit-submitButton-color":"#fff","--beam-SelectSubscriptionNonprofit-submitButton-hover-color":"#fff","--beam-SelectSubscriptionNonprofit-submitButton-disabled-color":"#fff","--beam-SelectSubscriptionNonprofit-submitButton-backgroundColor":"#0A323C","--beam-SelectSubscriptionNonprofit-submitButton-hover-backgroundColor":"#222","--beam-SelectSubscriptionNonprofit-submitButton-disabled-backgroundColor":"#767676","--beam-SelectSubscriptionNonprofit-submitButton-borderColor":"#333","--beam-SelectSubscriptionNonprofit-submitButton-hover-borderColor":"#222","--beam-SelectSubscriptionNonprofit-submitButton-disabled-borderColor":"#767676","--beam-SelectSubscriptionNonprofit-submitButton-fontSize":"14px","--beam-SelectSubscriptionNonprofit-submitButton-fontWeight":"inherit","--beam-SelectSubscriptionNonprofit-submitButton-fontFamily":"inherit","--beam-SelectSubscriptionNonprofit-submitButton-textTransform":"none","--beam-SelectSubscriptionNonprofit-submitButton-borderRadius":"30px","--beam-SelectSubscriptionNonprofit-submitButton-padding":"10px 30px",...u("--beam-SelectSubscriptionNonprofit-title",{fontSize:"20px",fontWeight:"bold",lineHeight:"120%",textTransform:"capitalize",color:"#0a323c"}),...u("--beam-SelectSubscriptionNonprofit-descriptionPrefix",{marginTop:"3px",color:"#2f302d",fontSize:"14px",fontWeight:"bold",fontStyle:"normal",lineHeight:"138%"}),...u("--beam-SelectSubscriptionNonprofit-description",{color:"#2f302d",fontSize:"14px",fontStyle:"normal"}),"--beam-SelectSubscriptionNonprofit-details-cause-letterSpacing":"0.36px",...u("--beam-SelectSubscriptionNonprofit-details-cause",{fontSize:"12px",fontWeight:"bold",color:"#0a323c",fontStyle:"normal",lineHeight:"120%"}),...u("--beam-SelectSubscriptionNonprofit-details-description",{fontSize:"12px",marginTop:"5px",fontStyle:"normal",lineHeight:"140%",fontWeight:"400"}),"--beam-SelectSubscriptionNonprofit-details-fundingProgress-marginTop":"7px",...u("--beam-SelectSubscriptionNonprofit-details-funding-progress-label",{fontSize:"12px",color:"#666666",fontWeight:"400",fontStyle:"normal"}),"--beam-SelectSubscriptionNonprofit-stickyFooter-boxShadow":"0px -20px 20px 0px rgba(0, 0, 0, 0.04)","--beam-SelectSubscriptionNonprofit-stickyFooter-padding":"15px 0px 45px","--beam-SelectSubscriptionNonprofit-stickyFooter-backgroundColor":"white","--beam-SelectSubscriptionNonprofit-stickyFooter-marginLeft":"-15px","--beam-SelectSubscriptionNonprofit-stickyFooter-marginRight":"-15px","--beam-SelectSubscriptionNonprofit-stickyFooter-width":"auto"},o=this.nonprofitListDataController?.data?.config?.web?.theme||{},n={...t,...o};return Object.assign(Object.create({toCSS(){return _(this)}}),n)}render(){const{selectedNonprofitId:t}=this,{data:o,loading:n}=this.nonprofitListDataController;if(n&&!o)return O();if(this.nonprofitListDataController.error)return this.debug?N({error:this.nonprofitListDataController.error}):"";if(this.subscriptionUpdateDataController.error&&this.debug)return N({error:this.subscriptionUpdateDataController.error});if(o==null)return this.debug?N({error:new G("No data")}):"";const i=o?.nonprofits||[],b=i.find(r=>r.nonprofit.id===t)||null,s=this.cssVariables["--beam-SelectSubscriptionNonprofit-cardStyle"],f=s==="'icon'"||s==="'selected_icon'";return m`
|
|
17
17
|
<style>
|
|
18
18
|
:host {
|
|
19
19
|
${this.cssVariables.toCSS()}
|
|
@@ -44,7 +44,7 @@ import{m as I,y as m,f as z,g as p,t as D,h as L,u as F,q as v,k as M}from"../ch
|
|
|
44
44
|
aria-labelledby="beam-SelectSubscriptionNonprofit-title"
|
|
45
45
|
?aria-disabled=${!this.allowChange}
|
|
46
46
|
>
|
|
47
|
-
${
|
|
47
|
+
${z(i,r=>r.nonprofit.id,(r,g)=>{const h=t===r.nonprofit.id,y=h||b==null&&g===0,w=r.nonprofit.causeIconUrl,B=r.nonprofit.causeIconSelectedUrl,T=r.imageUrl,$=s==="'selected_icon'"?B:w;return m`
|
|
48
48
|
<div
|
|
49
49
|
class="option ${v({isSelected:h,isDisabled:!this.allowChange})}"
|
|
50
50
|
part="option"
|
|
@@ -71,7 +71,7 @@ import{m as I,y as m,f as z,g as p,t as D,h as L,u as F,q as v,k as M}from"../ch
|
|
|
71
71
|
${l(this.configLang,r.nonprofit.cause||"")}
|
|
72
72
|
</div>
|
|
73
73
|
<p class="details-description">
|
|
74
|
-
${
|
|
74
|
+
${L(l(this.configLang,r.impact.description||""))}
|
|
75
75
|
</p>
|
|
76
76
|
<div class="card-progress-bar">
|
|
77
77
|
<beam-progress-bar
|
|
@@ -102,7 +102,7 @@ import{m as I,y as m,f as z,g as p,t as D,h as L,u as F,q as v,k as M}from"../ch
|
|
|
102
102
|
</button>
|
|
103
103
|
</div>
|
|
104
104
|
</div>
|
|
105
|
-
`}}a.tagName="beam-select-subscription-nonprofit",a.styles=[H,
|
|
105
|
+
`}}a.tagName="beam-select-subscription-nonprofit",a.styles=[H,F`
|
|
106
106
|
:host {
|
|
107
107
|
display: block;
|
|
108
108
|
max-width: var(--beam-SelectSubscriptionNonprofit-maxWidth);
|
|
@@ -386,5 +386,5 @@ import{m as I,y as m,f as z,g as p,t as D,h as L,u as F,q as v,k as M}from"../ch
|
|
|
386
386
|
.hideStickyFooter {
|
|
387
387
|
display: none;
|
|
388
388
|
}
|
|
389
|
-
`,V({gap:"var(--beam-SelectSubscriptionNonprofit-options-gap)",itemMinWidth:"var(--beam-SelectSubscriptionNonprofit-options-minWidth)",columnCount:"var(--beam-SelectSubscriptionNonprofit-options-columnCount)"})],c([p({type:String})],a.prototype,"baseUrl"),c([p({type:String})],a.prototype,"apiKey"),c([p({type:String})],a.prototype,"subscriptionId"),c([p({type:Number})],a.prototype,"storeId"),c([p({type:String})],a.prototype,"countryCode"),c([p({type:String})],a.prototype,"postalCode"),c([p({type:Number,reflect:!0})],a.prototype,"selectedNonprofitId"),c([p({type:String})],a.prototype,"lang"),c([p({type:Boolean})],a.prototype,"draftConfig"),c([p({type:Boolean})],a.prototype,"debug"),c([
|
|
389
|
+
`,V({gap:"var(--beam-SelectSubscriptionNonprofit-options-gap)",itemMinWidth:"var(--beam-SelectSubscriptionNonprofit-options-minWidth)",columnCount:"var(--beam-SelectSubscriptionNonprofit-options-columnCount)"})],c([p({type:String})],a.prototype,"baseUrl"),c([p({type:String})],a.prototype,"apiKey"),c([p({type:String})],a.prototype,"subscriptionId"),c([p({type:Number})],a.prototype,"storeId"),c([p({type:String})],a.prototype,"countryCode"),c([p({type:String})],a.prototype,"postalCode"),c([p({type:Number,reflect:!0})],a.prototype,"selectedNonprofitId"),c([p({type:String})],a.prototype,"lang"),c([p({type:Boolean})],a.prototype,"draftConfig"),c([p({type:Boolean})],a.prototype,"debug"),c([E()],a.prototype,"isMobile"),K(a);export{a as BeamSelectSubscriptionNonprofit};
|
|
390
390
|
//# sourceMappingURL=select-subscription-nonprofit.esm.js.map
|