@beamimpact/web-sdk 1.51.1 → 1.52.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{_share-dialog-dependencies-CHbTSPha.esm.js → _share-dialog-dependencies-CFBQaddH.esm.js} +2 -2
- package/dist/chunks/{_share-dialog-dependencies-CHbTSPha.esm.js.map → _share-dialog-dependencies-CFBQaddH.esm.js.map} +1 -1
- package/dist/chunks/{_share-dialog-dependencies-B3N69ml2.esm.js → _share-dialog-dependencies-x5pyLsew.esm.js} +2 -2
- package/dist/chunks/{_share-dialog-dependencies-B3N69ml2.esm.js.map → _share-dialog-dependencies-x5pyLsew.esm.js.map} +1 -1
- package/dist/chunks/{css-card-grid-B6IEaTiP.esm.js → css-card-grid-CvoGpsJH.esm.js} +2 -2
- package/dist/chunks/{css-card-grid-B6IEaTiP.esm.js.map → css-card-grid-CvoGpsJH.esm.js.map} +1 -1
- package/dist/chunks/{enforce-config-CQb5MiAV.esm.js → enforce-config-Ba1JkOHs.esm.js} +2 -2
- package/dist/chunks/{enforce-config-CQb5MiAV.esm.js.map → enforce-config-Ba1JkOHs.esm.js.map} +1 -1
- package/dist/chunks/{enforce-config-Cw52SuAc.esm.js → enforce-config-CZ3ToOgr.esm.js} +2 -2
- package/dist/chunks/{enforce-config-Cw52SuAc.esm.js.map → enforce-config-CZ3ToOgr.esm.js.map} +1 -1
- package/dist/chunks/{index-CFYWEffm.esm.js → index-BNVaWVJi.esm.js} +2 -2
- package/dist/chunks/{index-CFYWEffm.esm.js.map → index-BNVaWVJi.esm.js.map} +1 -1
- package/dist/chunks/{index-BQ4Nr7Ux.esm.js → index-BNjsFEGn.esm.js} +2 -2
- package/dist/chunks/{index-BQ4Nr7Ux.esm.js.map → index-BNjsFEGn.esm.js.map} +1 -1
- package/dist/chunks/{index-kDoWfjd5.esm.js → index-CXJEBQUg.esm.js} +2 -2
- package/dist/chunks/{index-kDoWfjd5.esm.js.map → index-CXJEBQUg.esm.js.map} +1 -1
- package/dist/chunks/index-DGQ-LQxP.esm.js +2 -0
- package/dist/chunks/index-DGQ-LQxP.esm.js.map +1 -0
- package/dist/chunks/index-DI43alE-.esm.js +2 -0
- package/dist/chunks/index-DI43alE-.esm.js.map +1 -0
- package/dist/chunks/index-DoF3KFUY.esm.js +2 -0
- package/dist/chunks/index-DoF3KFUY.esm.js.map +1 -0
- package/dist/chunks/{index-C_ZNnJIS.esm.js → index-IKiJwo5v.esm.js} +2 -2
- package/dist/chunks/{index-C_ZNnJIS.esm.js.map → index-IKiJwo5v.esm.js.map} +1 -1
- package/dist/chunks/index-NrjNZmBX.esm.js +2 -0
- package/dist/chunks/index-NrjNZmBX.esm.js.map +1 -0
- package/dist/chunks/{index-v0tUXySN.esm.d.ts → index-TAxKoTC1.esm.d.ts} +3 -2
- package/dist/chunks/index-VCyr24SS.esm.js +2 -0
- package/dist/chunks/index-VCyr24SS.esm.js.map +1 -0
- package/dist/chunks/{index-MS8_Vije.esm.d.ts → index-ki8pLX6n.esm.d.ts} +1 -1
- package/dist/chunks/index-utCqipvB.esm.js +2 -0
- package/dist/chunks/index-utCqipvB.esm.js.map +1 -0
- package/dist/chunks/{lit-5uUWs2aX.esm.js → lit-WqMxC_PA.esm.js} +3 -3
- package/dist/chunks/{lit-5uUWs2aX.esm.js.map → lit-WqMxC_PA.esm.js.map} +1 -1
- package/dist/chunks/loading-template-DG4lkIIc.esm.js +2 -0
- package/dist/chunks/{loading-template-DXNS89Th.esm.js.map → loading-template-DG4lkIIc.esm.js.map} +1 -1
- package/dist/chunks/{localize-cDQFOecn.esm.js → localize-Btu9xYcE.esm.js} +2 -2
- package/dist/chunks/{localize-cDQFOecn.esm.js.map → localize-Btu9xYcE.esm.js.map} +1 -1
- package/dist/chunks/{localize-CQCRjY9s.esm.js → localize-C25pEGnx.esm.js} +2 -2
- package/dist/chunks/{localize-CQCRjY9s.esm.js.map → localize-C25pEGnx.esm.js.map} +1 -1
- package/dist/chunks/{order-page-CMGPM57D.esm.js → order-page-BH3Qr433.esm.js} +2 -2
- package/dist/chunks/{order-page-CMGPM57D.esm.js.map → order-page-BH3Qr433.esm.js.map} +1 -1
- package/dist/chunks/{order-page-FzVtMkga.esm.js → order-page-CTpjnsoe.esm.js} +2 -2
- package/dist/chunks/{order-page-FzVtMkga.esm.js.map → order-page-CTpjnsoe.esm.js.map} +1 -1
- package/dist/chunks/{order-page-tSPKLQ24.esm.d.ts → order-page-Cerye00Q.esm.d.ts} +12 -1
- package/dist/chunks/{progress-bar-oJB_t7od.esm.js → progress-bar-DF7UuuHb.esm.js} +2 -2
- package/dist/chunks/{progress-bar-oJB_t7od.esm.js.map → progress-bar-DF7UuuHb.esm.js.map} +1 -1
- package/dist/chunks/{promo-pill-label-D9ptiGak.esm.js → promo-pill-label-CbW_Vcru.esm.js} +2 -2
- package/dist/chunks/{promo-pill-label-D9ptiGak.esm.js.map → promo-pill-label-CbW_Vcru.esm.js.map} +1 -1
- package/dist/chunks/{responsive-9jAzOYoE.esm.js → responsive-BR8qUfBa.esm.js} +2 -2
- package/dist/chunks/{responsive-9jAzOYoE.esm.js.map → responsive-BR8qUfBa.esm.js.map} +1 -1
- package/dist/chunks/{routes-CaSRr919.esm.js → routes-Be8scSEK.esm.js} +2 -2
- package/dist/chunks/{routes-CaSRr919.esm.js.map → routes-Be8scSEK.esm.js.map} +1 -1
- package/dist/chunks/{routes-KHEaM_40.esm.js → routes-Bgj1HGgx.esm.js} +2 -2
- package/dist/chunks/{routes-KHEaM_40.esm.js.map → routes-Bgj1HGgx.esm.js.map} +1 -1
- package/dist/chunks/{share-button-DBVhw4qa.esm.d.ts → share-button-B9hpxBVr.esm.d.ts} +5 -0
- package/dist/chunks/share-button-BX-kWAd0.esm.js +167 -0
- package/dist/chunks/share-button-BX-kWAd0.esm.js.map +1 -0
- package/dist/chunks/share-button-BuneDluf.esm.js +2 -0
- package/dist/chunks/share-button-BuneDluf.esm.js.map +1 -0
- package/dist/chunks/share-button-CcD-wBHE.esm.js +167 -0
- package/dist/chunks/share-button-CcD-wBHE.esm.js.map +1 -0
- package/dist/chunks/share-button-DK30KQ6n.esm.js +2 -0
- package/dist/chunks/share-button-DK30KQ6n.esm.js.map +1 -0
- package/dist/chunks/{update-cart-3JFUCJLD.esm.js → update-cart-C8ufWemL.esm.js} +2 -2
- package/dist/chunks/{update-cart-3JFUCJLD.esm.js.map → update-cart-C8ufWemL.esm.js.map} +1 -1
- package/dist/chunks/{update-cart-DNfl9QP2.esm.js → update-cart-Cih70sgI.esm.js} +2 -2
- package/dist/chunks/{update-cart-DNfl9QP2.esm.js.map → update-cart-Cih70sgI.esm.js.map} +1 -1
- package/dist/chunks/{vendor-DRA8u-S7.esm.js → vendor-KKSARHWL.esm.js} +2 -2
- package/dist/chunks/{vendor-DRA8u-S7.esm.js.map → vendor-KKSARHWL.esm.js.map} +1 -1
- package/dist/components/beam-partner-logos.esm.js +1 -1
- package/dist/components/beam-partner-logos.js +1 -1
- package/dist/components/community-impact.esm.js +3 -3
- package/dist/components/community-impact.esm.js.map +1 -1
- package/dist/components/community-impact.js +3 -3
- 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.d.ts +1 -1
- package/dist/components/impact-overview.esm.js +18 -13
- package/dist/components/impact-overview.esm.js.map +1 -1
- package/dist/components/impact-overview.js +18 -13
- package/dist/components/impact-overview.js.map +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.esm.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/post-purchase.d.ts +2 -2
- 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 -1
- package/dist/components/product-details-page.esm.js.map +1 -1
- package/dist/components/product-details-page.js +11 -1
- 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 +88 -88
- package/dist/components/select-nonprofit.esm.js.map +1 -1
- package/dist/components/select-nonprofit.js +88 -88
- 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 +1 -1
- package/dist/components/select-subscription-nonprofit.js +1 -1
- package/dist/components/shopify.d.ts +2 -2
- package/dist/components/shopify.esm.js +1 -1
- package/dist/components/shopify.esm.js.map +1 -1
- package/dist/components/shopify.js +1 -1
- package/dist/components/shopify.js.map +1 -1
- package/dist/components/social-share.esm.js +3 -3
- package/dist/components/social-share.esm.js.map +1 -1
- package/dist/components/social-share.js +3 -3
- package/dist/components/social-share.js.map +1 -1
- package/dist/components/subscription-impact.d.ts +2 -2
- package/dist/components/subscription-impact.esm.js +26 -24
- package/dist/components/subscription-impact.esm.js.map +1 -1
- package/dist/components/subscription-impact.js +26 -24
- package/dist/components/subscription-impact.js.map +1 -1
- package/dist/components/subscription-management.d.ts +2 -2
- package/dist/components/subscription-management.esm.js +1 -1
- package/dist/components/subscription-management.js +1 -1
- package/dist/index.d.ts +4 -4
- 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.d.ts +3 -3
- 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/session.esm.js +1 -1
- package/dist/integrations/session.js +1 -1
- package/dist/integrations/shopify.d.ts +2 -2
- 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/beam-partner-logos.esm.js +1 -1
- package/dist/react/beam-partner-logos.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.d.ts +1 -1
- package/dist/react/impact-overview.esm.js +1 -1
- package/dist/react/impact-overview.js +1 -1
- package/dist/react/index.d.ts +1 -1
- package/dist/react/index.esm.js +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/post-purchase.d.ts +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.js +1 -1
- package/dist/react/redeem-transaction.esm.js +1 -1
- package/dist/react/redeem-transaction.js +1 -1
- package/dist/react/select-nonprofit.esm.js +1 -1
- package/dist/react/select-nonprofit.js +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.d.ts +1 -1
- package/dist/react/subscription-impact.esm.js +1 -1
- package/dist/react/subscription-impact.js +1 -1
- package/dist/react/subscription-management.d.ts +1 -1
- package/dist/react/subscription-management.esm.js +1 -1
- package/dist/react/subscription-management.js +1 -1
- package/package.json +1 -1
- package/dist/chunks/index-B_8DexDX.esm.js +0 -2
- package/dist/chunks/index-B_8DexDX.esm.js.map +0 -1
- package/dist/chunks/index-CpPbNdWA.esm.js +0 -2
- package/dist/chunks/index-CpPbNdWA.esm.js.map +0 -1
- package/dist/chunks/index-CyiXyHi8.esm.js +0 -2
- package/dist/chunks/index-CyiXyHi8.esm.js.map +0 -1
- package/dist/chunks/index-JSoHc6g1.esm.js +0 -2
- package/dist/chunks/index-JSoHc6g1.esm.js.map +0 -1
- package/dist/chunks/index-XZRQN4Rs.esm.js +0 -2
- package/dist/chunks/index-XZRQN4Rs.esm.js.map +0 -1
- package/dist/chunks/index-n7pxZENA.esm.js +0 -2
- package/dist/chunks/index-n7pxZENA.esm.js.map +0 -1
- package/dist/chunks/loading-template-DXNS89Th.esm.js +0 -2
- package/dist/chunks/share-button-BbG-gnwj.esm.js +0 -163
- package/dist/chunks/share-button-BbG-gnwj.esm.js.map +0 -1
- package/dist/chunks/share-button-CvTUluNq.esm.js +0 -163
- package/dist/chunks/share-button-CvTUluNq.esm.js.map +0 -1
- package/dist/chunks/share-button-R7jgVCPv.esm.js +0 -2
- package/dist/chunks/share-button-R7jgVCPv.esm.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"product-details-page.js","sources":["../../src/shared/fragments/custom-border.ts","../../src/shared/fragments/info.ts","../../src/components/product-details-page/strings.ts","../../src/components/product-details-page/index.ts"],"sourcesContent":["import { CSSResult, unsafeCSS } from \"lit\";\n\nexport const defineCustomBorder = (\n namespace = \"\",\n { borderRadius = \"0px\", borderStyle = \"unset\", borderColor = \"#000000\", borderWidth = \"1px\" } = {}\n): Record<string, string> => {\n const prefix = namespace.startsWith(\"--beam-\") ? namespace : `--beam-${namespace}`;\n return {\n [`${prefix}-borderRadius`]: borderRadius,\n [`${prefix}-borderStyle`]: borderStyle,\n [`${prefix}-borderColor`]: borderColor,\n [`${prefix}-borderWidth`]: borderWidth,\n };\n};\n\nexport const useCustomBorder = (\n namespace = \"\",\n { borderRadius = \"0px\", borderStyle = \"unset\", borderColor = \"#000000\", borderWidth = \"1px\" } = {}\n): CSSResult => {\n const prefix = namespace.startsWith(\"--beam-\") ? namespace : `--beam-${namespace}`;\n return unsafeCSS(`\\\n border-radius: var(${prefix}-borderRadius, ${borderRadius});\n border-style: var(${prefix}-borderStyle, ${borderStyle});\n border-color: var(${prefix}-borderColor, ${borderColor});\n border-width: var(${prefix}-borderWidth, ${borderWidth});\n `);\n};\n","import { html } from \"lit\";\n\nexport const _info = () => html` <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n part=\"svg\"\n>\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <path d=\"M12 16v-4\"></path>\n <path d=\"M12 8h.01\"></path>\n</svg>`;\n","export const strings = {\n en: {\n ctaTitle: () => `Choose your impact`,\n ctaMessage: () => `At no extra cost, 1% of every order is donated to a nonprofit you choose. Powered by Beam`,\n inlineSeparator: () => `:`,\n },\n fr: {\n ctaTitle: () => `Choisissez l'impact de votre choix`,\n ctaMessage: () =>\n `Sans frais supplémentaires, 1% de chaque commande est reversé à l'organisation caritative de votre choix. Développé par Beam`,\n inlineSeparator: () => `:`,\n },\n es: {\n ctaTitle: () => `Elige el impacto que deseas`,\n ctaMessage: () =>\n `Sin coste adicional, el 1% de cada pedido se dona a la organización sin ánimo de lucro que tú elijas. Desarrollado por Beam`,\n inlineSeparator: () => `:`,\n },\n de: {\n ctaTitle: () => `Wählen Sie Ihren Einfluss`,\n ctaMessage: () =>\n `Ohne zusätzliche Kosten wird 1 % jeder Bestellung an eine von Ihnen gewählte gemeinnützige Organisation gespendet. Von Beam unterstützt`,\n inlineSeparator: () => `:`,\n },\n it: {\n ctaTitle: () => `Scegliete chi sostenere`,\n ctaMessage: () =>\n `L'1% di ogni vostro acquisto viene donato, senza alcun costo aggiuntivo, a un'organizzazione no-profit a libera scelta. Promosso da Beam`,\n inlineSeparator: () => `:`,\n },\n pl: {\n ctaTitle: () => `Masz wpływ, dokonaj wyboru`,\n ctaMessage: () =>\n `1% kwoty każdego zamówienia jest przekazywane na rzecz wybranej przez Ciebie organizacji non-profit – bez dodatkowych kosztów. Obsługiwane przez Beam`,\n inlineSeparator: () => `:`,\n },\n};\n","import { LitElement, css, html } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { postProductDetailsPage } from \"../../api-sdk/v3/routes\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES, WIDGET_NAMES } from \"../../api-sdk/constants\";\nimport { LANGUAGES, TUrl } from \"../../api-sdk/types\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { _cssVariableMap } from \"../../shared/fragments/css-variable-map\";\nimport { localizeUserString } from \"../../shared/localize\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { cssResponsiveUtils } from \"../../shared/responsive\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomText, useCustomText } from \"../../shared/fragments/custom-text\";\nimport { defineCustomBorder, useCustomBorder } from \"../../shared/fragments/custom-border\";\n// shoelace html tag imports\nimport \"@shoelace-style/shoelace/dist/components/tooltip/tooltip.js\";\nimport \"@shoelace-style/shoelace/dist/components/button/button.js\";\nimport { _info } from \"../../shared/fragments/info\";\nimport { promoPillLabelConfigDefaults } from \"../../shared/components/promo-pill-label\";\nimport {\n getPromoCodesFromCart,\n setPromoCodeInCookie,\n parseJsonStringArray,\n formatStoreAndReturnPromoCodes,\n setPromoCodesInLocalStorage,\n isEmptyPromoData,\n} from \"../../utils/promoManager\";\nimport \"../../shared/components/promo-pill-label\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage } from \"../../shared/cart-contents\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { makeApiKeyHeader } from \"../../utils/makeApiKeyHeader\";\nimport { BeamPromoCodesStoredEvent, BeamWidgetStoredPromoCodesEvent } from \"../../utils/events\";\nimport { getBeamCartId } from \"../../utils/cart\";\nimport { strings } from \"./strings\";\n\ntype RequiredConfig = {\n apiKey: string;\n storeId: number;\n};\ntype IAPIV3PostProductDetailsPage = Awaited<ReturnType<typeof postProductDetailsPage>>;\n\nconst IMAGE_URL_REMOTE_CONFIG_KEY = \"--beam-ProductDetailsPage-imageUrl\";\n\nexport class BeamProductDetailsPage extends LitElement {\n static tagName = \"beam-product-details-page\";\n\n @property({ type: String, reflect: true }) public baseUrl: TUrl = DEFAULT_BASE_URL;\n\n @property({ type: String, reflect: false }) apiKey?: RequiredConfig[\"apiKey\"];\n\n @property({ type: Number }) storeId?: number;\n\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n\n @property({ type: Boolean }) public draftConfig = false;\n\n @property({ type: Boolean }) public debug = false;\n\n @property({ type: String }) remoteProductIdentifier?: string;\n\n @property({ type: String }) public promoCodes?: string;\n\n @property({ type: String }) public domain?: string;\n\n private localStorage = createScopedLocalStorage(this as LitElement & RequiredConfig);\n\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 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: IAPIV3PostProductDetailsPage) {\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.product_details_page,\n })\n );\n }\n }\n\n async firstUpdated() {\n window.addEventListener(BeamPromoCodesStoredEvent.eventName, this.handlePromoCodesStored as EventListener);\n }\n\n disconnectedCallback() {\n window.removeEventListener(BeamPromoCodesStoredEvent.eventName, this.handlePromoCodesStored as EventListener);\n super.disconnectedCallback();\n }\n\n postProductDetailsPageData = async () => {\n if (!enforceConfig<RequiredConfig>([\"apiKey\", \"storeId\"], this)) throw new MissingConfig();\n const beamCartId = getBeamCartId(BEAM_CART_COOKIE_NAME, { apiKey: this.apiKey });\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.product_details_page,\n })\n );\n }\n const res = await postProductDetailsPage({\n baseUrl: this.baseUrl,\n headers: makeApiKeyHeader(this.apiKey),\n queryParams: {\n version: \"1.0.0\",\n lang: this.configLang,\n storeId: this.storeId,\n widgetName: WIDGET_NAMES.product_details_page,\n draftConfig: this.draftConfig,\n remoteProductIdentifier: this.remoteProductIdentifier,\n },\n requestBody: {\n ...(shouldSendPromos && { promos: formattedPromos }),\n beamCartId: beamCartId ? beamCartId : undefined,\n },\n });\n this.handleValidatedPromoCodes(res);\n return res;\n };\n\n private productDetailsPageDataController = new AsyncController<typeof this.postProductDetailsPageData>(\n this,\n this.postProductDetailsPageData\n );\n\n async updated(changedProperties: Map<string, unknown>) {\n const requireNewDataProps = [\"storeId\", \"baseUrl\", \"lang\", \"apiKey\", \"pluginPromoCodes\"];\n void this.pluginPromoCodes;\n for (const prop of requireNewDataProps) {\n if (changedProperties.has(prop)) {\n await this.productDetailsPageDataController.exec();\n break;\n }\n }\n }\n\n render() {\n const { data, loading } = this.productDetailsPageDataController;\n const iconDisplay = this.cssVariables[\"--beam-ProductDetailsPage-image-placement\"];\n const isNonZero = (value: string) => value !== \"0px\" && value !== \"0\";\n const shouldDisplayPromoPill = this.cssVariables[\"--beam-ProductDetailsPage-shouldDisplayPromoPill\"] === \"true\";\n const isPromoActive = !!data?.config?.web?.promo;\n const hasValidImageHeight = isNonZero(this.cssVariables[\"--beam-ProductDetailsPage-imageHeight\"]);\n const hasValidTitleFontSize = isNonZero(this.cssVariables[\"--beam-ProductDetailsPage-title-fontSize\"]);\n const isPromoPillVisible =\n shouldDisplayPromoPill && // Determines if the promo pill is enabled for the marketing version of the PDP\n isPromoActive && // Is promo currently active\n hasValidImageHeight && // Ensures the promo pill is not displayed for the subtext version of the PDP\n hasValidTitleFontSize; // Ensures the promo pill is not displayed for the subtext version of the PDP\n const shouldShowPunctuation = this.cssVariables[\"--beam-ProductDetailsPage-shouldDisplayColon\"] === \"true\"; // Determines if a colon should be displayed in promo display\n if (loading) {\n return html``;\n }\n if (data == null) {\n if (this.debug) {\n return _errorMessage({ error: new Error(\"No data\") });\n }\n return \"\";\n }\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n <div\n class=\"root ${iconDisplay === \"block-center\" ? \"block-display\" : \"inline-display\"}\"\n aria-label=\"product detail page Beam component\"\n >\n ${iconDisplay === \"block-center\"\n ? html`\n ${this.renderWidgetIcon(iconDisplay)}\n ${isPromoPillVisible\n ? html`\n <div class=\"promo-container\">\n <beam-promo-info-pill .promo=${data?.config?.web?.promo}></beam-promo-info-pill>\n </div>\n `\n : html``}\n <div class=\"info-container\">${this.renderContent(isPromoPillVisible, shouldShowPunctuation, data)}</div>\n `\n : html`\n ${isPromoPillVisible\n ? html`\n <div class=\"promo-container\">\n <beam-promo-info-pill .promo=${data?.config?.web?.promo}></beam-promo-info-pill>\n </div>\n `\n : html``}\n <div class=\"content-inline\">\n ${this.renderWidgetIcon(iconDisplay)}\n <div class=\"info-container\">${this.renderContent(isPromoPillVisible, shouldShowPunctuation, data)}</div>\n </div>\n `}\n </div>\n `;\n }\n\n renderWidgetIcon(iconDisplay: string) {\n const imageUrl = this.cssVariables[IMAGE_URL_REMOTE_CONFIG_KEY];\n\n if (!imageUrl) return html``;\n\n const isBlockDisplay = iconDisplay === \"block-center\";\n const containerStyle = isBlockDisplay ? 'style=\"order:1\"' : \"\";\n\n return html`\n <span class=\"icon-container\" part=\"icon\" ${containerStyle}>\n <img src=${imageUrl} part=\"icon\" aria-hidden=\"true\" />\n </span>\n `;\n }\n\n renderContent(isPromoPillVisible: boolean, shouldDisplayColon: boolean, data: IAPIV3PostProductDetailsPage) {\n const title = localizeUserString(this.configLang, data?.config?.web?.title) || strings[this.configLang].ctaTitle();\n const description =\n localizeUserString(this.configLang, data?.config?.web?.description) || strings[this.configLang].ctaMessage();\n return isPromoPillVisible\n ? html`\n <div class=\"info-inline-promo\">\n <span class=\"title\">${title + (shouldDisplayColon ? strings[this.configLang].inlineSeparator() : \"\")}</span>\n <span class=\"description\"> ${description} ${this.renderDisclosureTooltip()} </span>\n </div>\n `\n : html`\n <div class=\"title-block\">\n <h3 class=\"title\">${title}</h3>\n </div>\n <div class=\"description-block\">\n <span class=\"description\"> ${description} ${this.renderDisclosureTooltip()} </span>\n </div>\n `;\n }\n\n renderCloseTooltipIcon() {\n return html`<svg width=\"11\" height=\"11\" viewBox=\"0 0 11 11\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.40836 5.40811L1.48828 1.48804M5.40836 5.40811L9.32843 9.32819M5.40836 5.40811L9.32843 1.48804M5.40836 5.40811L1.48828 9.32819\"\n stroke=\"white\"\n stroke-width=\"1.56803\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg> `;\n }\n\n /* PayPal Giving Fund Disclosure */\n renderDisclosureTooltip() {\n const onClickClose = () => {\n // due to being strictly html, we need to assume any when overriding shoelace properties\n const tooltip = this.renderRoot.querySelector(\".ppgf-disclosure-tooltip\") as any;\n if (tooltip?.open) {\n tooltip.open = false;\n }\n };\n const ppgfDisclosure = this.productDetailsPageDataController.data?.ppgfDisclosure;\n return ppgfDisclosure\n ? html`<sl-tooltip class=\"ppgf-disclosure-tooltip\" part=\"tooltip\">\n <div class=\"ppgf-disclosure-tooltip-content\" slot=\"content\" part=\"tooltip-content\">\n <button\n class=\"ppgf-disclosure-close\"\n aria-label=\"Close tooltip\"\n part=\"tooltip-close-button\"\n @click=\"${onClickClose}\"\n >\n ${this.renderCloseTooltipIcon()}\n </button>\n <div class=\"ppgf-disclosure-tooltip-copy\" part=\"tooltip-disclosure-copy\">\n ${unsafeHTML(ppgfDisclosure.copy)}\n </div>\n </div>\n <span class=\"ppgf-disclosure-tooltip-trigger\" part=\"tooltip-disclosure-icon\">\n <div class=\"ppgf-disclosure-tooltip-trigger-mask d-lg-none\"></div>\n <sl-button\n variant=\"text\"\n size=\"small\"\n class=\"ppgf-disclosure-tooltip-trigger\"\n part=\"tooltip-disclosure-button\"\n aria-label=\"More information\"\n tabindex=\"0\"\n circle\n >\n ${_info()}\n </sl-button>\n </span>\n </sl-tooltip>`\n : html``;\n }\n /* End PayPal Giving Fund Disclosure */\n\n public get cssVariables() {\n const defaults = {\n \"--beam-ProductDetailsPage-imageWidth\": \"24px\",\n \"--beam-ProductDetailsPage-imageHeight\": \"24px\",\n \"--beam-ProductDetailsPage-maxWidth\": \"346px\",\n \"--beam-ProductDetailsPage-paddingTop\": \"8px\",\n \"--beam-ProductDetailsPage-paddingRight\": \"12px\",\n \"--beam-ProductDetailsPage-paddingBottom\": \"8px\",\n \"--beam-ProductDetailsPage-paddingLeft\": \"15px\",\n \"--beam-ProductDetailsPage-InfoContainer-marginLeft\": \"8px\",\n \"--beam-ProductDetailsPage-InfoContainer-textAlign\": \"inherit\",\n \"--beam-ProductDetailsPage-InfoContainer-lineHeight\": \"15px\",\n \"--beam-ProductDetailsPage-InfoContainer-marginTop\": \"4px\",\n \"--beam-ProductDetailsPage-backgroundColor\": \"unset\",\n \"--beam-ProductDetailsPage-TooltipIcon-width\": \"10px\",\n \"--beam-ProductDetailsPage-TooltipIcon-color\": \"inherit\",\n \"--beam-ProductDetailsPage-PPGFDisclosure-backgroundColor\": \"#000000\",\n \"--beam-ProductDetailsPage-PPGFDisclosure-paddingTop\": \"10px\",\n \"--beam-ProductDetailsPage-PPGFDisclosure-paddingRight\": \"8px\",\n \"--beam-ProductDetailsPage-PPGFDisclosure-paddingBottom\": \"10px\",\n \"--beam-ProductDetailsPage-PPGFDisclosure-paddingLeft\": \"8px\",\n \"--beam-ProductDetailsPage-PPGFDisclosureHyperlink-color\": \"#5CA3FF\",\n ...defineCustomText(\"--beam-ProductDetailsPage-title\", {\n fontSize: \"12px\",\n fontWeight: \"bold\",\n }),\n \"--beam-ProductDetailsPage-title-textAlign\": \"left\",\n ...defineCustomText(\"--beam-ProductDetailsPage-description\", {\n marginTop: \"0px\",\n fontSize: \"12px\",\n lineHeight: \"15px\",\n }),\n \"--beam-ProductDetailsPage-description-textAlign\": \"left\",\n ...defineCustomText(\"--beam-ProductDetailsPage-PPGFDisclosureTooltipContent\", {\n fontSize: \"12px\",\n lineHeight: \"16px\",\n color: \"#FFFFFF\",\n }),\n ...defineCustomBorder(\"--beam-ProductDetailsPage\"),\n \"--beam-ProductDetailsPage-close-display\": \"initial\",\n \"--beam-ProductDetailsPage-close-padding\": \"0\",\n \"--beam-ProductDetailsPage-image-placement\": \"inline-left\", // options: \"inline-left\" || \"block-center\"\n \"--beam-ProductDetailsPage-blockImage-alignSelf\": \"center\",\n \"--beam-ProductDetailsPage-promoPill-marginTop\": \"4px\",\n \"--beam-ProductDetailsPage-promoPill-alignSelf\": \"left\",\n \"--beam-ProductDetailsPage-shouldDisplayColon\": \"true\",\n \"--beam-ProductDetailsPage-shouldDisplayPromoPill\": \"true\",\n ...promoPillLabelConfigDefaults,\n };\n const remoteConfig = this.productDetailsPageDataController?.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 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 max-width: var(--beam-ProductDetailsPage-maxWidth);\n word-break: normal;\n display: block;\n }\n .root {\n padding-top: var(--beam-ProductDetailsPage-paddingTop);\n padding-right: var(--beam-ProductDetailsPage-paddingRight);\n padding-bottom: var(--beam-ProductDetailsPage-paddingBottom);\n padding-left: var(--beam-ProductDetailsPage-paddingLeft);\n width: 100%;\n background-color: var(--beam-ProductDetailsPage-backgroundColor);\n display: flex;\n flex-direction: column;\n ${useCustomBorder(\"--beam-ProductDetailsPage\")}\n }\n /* When iconDisplay is inline-center */\n .inline-display {\n display: flex;\n }\n /* When iconDisplay is block-center */\n .block-display {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n .promo-container {\n order: 2;\n display: flex;\n margin-top: var(--beam-ProductDetailsPage-promoPill-marginTop);\n align-self: var(--beam-ProductDetailsPage-promoPill-alignSelf);\n }\n .content-inline {\n order: 3;\n display: flex;\n align-items: center;\n }\n /* Info block for both inline and block layout */\n .info-container {\n display: flex;\n flex-direction: column;\n justify-content: center;\n text-align: var(--beam-ProductDetailsPage-InfoContainer-textAlign);\n line-height: var(--beam-ProductDetailsPage-InfoContainer-lineHeight);\n margin-top: var(--beam-ProductDetailsPage-InfoContainer-marginTop);\n margin-left: var(--beam-ProductDetailsPage-InfoContainer-marginLeft);\n }\n .block-display .info-container {\n order: 3;\n }\n .root.inline-display .icon-container,\n .root.inline-display .info-container {\n display: inline-flex;\n }\n .root.inline-display {\n flex-direction: column;\n }\n .icon-container {\n width: var(--beam-ProductDetailsPage-imageWidth);\n height: var(--beam-ProductDetailsPage-imageHeight);\n align-self: var(--beam-ProductDetailsPage-blockImage-alignSelf);\n flex-shrink: 0;\n }\n .icon-container > img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n }\n .title {\n ${useCustomText(\"--beam-ProductDetailsPage-title\")}\n }\n .title-block {\n text-align: var(--beam-ProductDetailsPage-title-textAlign);\n line-height: var(--beam-ProductDetailsPage-title-lineHeight);\n }\n .info-inline-promo {\n margin-top: var(--beam-ProductDetailsPage-description-marginTop, 0px);\n }\n .description {\n ${useCustomText(\"--beam-ProductDetailsPage-description\")}\n }\n .description-block {\n text-align: var(--beam-ProductDetailsPage-description-textAlign);\n line-height: var(--beam-ProductDetailsPage-description-lineHeight);\n ${useCustomText(\"--beam-ProductDetailsPage-description\")}\n }\n .ppgf-disclosure-tooltip {\n --max-width: 268px;\n }\n .ppgf-disclosure-tooltip::part(body) {\n background-color: var(--beam-ProductDetailsPage-PPGFDisclosure-backgroundColor);\n padding-top: var(--beam-ProductDetailsPage-PPGFDisclosure-paddingTop);\n padding-right: var(--beam-ProductDetailsPage-PPGFDisclosure-paddingRight);\n padding-bottom: var(--beam-ProductDetailsPage-PPGFDisclosure-paddingBottom);\n padding-left: var(--beam-ProductDetailsPage-PPGFDisclosure-paddingLeft);\n }\n .ppgf-disclosure-tooltip::part(base__arrow) {\n background-color: var(--beam-ProductDetailsPage-PPGFDisclosure-backgroundColor);\n }\n .ppgf-disclosure-tooltip-content {\n display: flex;\n flex-direction: column;\n ${useCustomText(\"--beam-ProductDetailsPage-PPGFDisclosureTooltipContent\")}\n }\n .ppgf-disclosure-tooltip-copy > a,\n .ppgf-disclosure-close {\n pointer-events: auto;\n color: var(--beam-ProductDetailsPage-PPGFDisclosureHyperlink-color);\n }\n .ppgf-disclosure-close {\n display: var(--beam-ProductDetailsPage-close-display);\n padding: var(--beam-ProductDetailsPage-close-padding);\n height: 12px;\n background: none;\n border: none;\n margin-left: auto;\n }\n .ppgf-disclosure-tooltip-copy > a:visited {\n color: var(--beam-ProductDetailsPage-PPGFDisclosureHyperlink-color);\n }\n .ppgf-disclosure-tooltip-trigger {\n position: relative;\n }\n .ppgf-disclosure-tooltip-trigger-mask {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: calc(var(--beam-ProductDetailsPage-TooltipIcon-width) + 20px);\n height: calc(var(--beam-ProductDetailsPage-TooltipIcon-width) + 20px);\n }\n .ppgf-disclosure-tooltip-trigger > svg {\n width: var(--beam-ProductDetailsPage-TooltipIcon-width);\n color: var(--beam-ProductDetailsPage-TooltipIcon-color);\n height: auto;\n }\n `,\n ];\n}\n\ndefineCustomElement(BeamProductDetailsPage);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-product-details-page\": BeamProductDetailsPage;\n }\n}\n"],"names":["defineCustomBorder","namespace","borderRadius","borderStyle","borderColor","borderWidth","prefix","useCustomBorder","unsafeCSS","_info","html","strings","x","s","p","n","e","o","r","IMAGE_URL_REMOTE_CONFIG_KEY","BeamProductDetailsPage","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","evt","promoCodesFromPlugin","c","enforceConfig","beamCartId","getBeamCartId","BEAM_CART_COOKIE_NAME","manualPromoCodes","formattedPromos","formatStoreAndReturnPromoCodes","code","shouldSendPromos","isEmptyPromoData","BeamWidgetStoredPromoCodesEvent","WIDGET_NAMES","res","postProductDetailsPage","makeApiKeyHeader","AsyncController","SUPPORTED_LANGUAGES","parseJsonStringArray","cart","getPromoCodesFromCart","response","setPromoCodesInLocalStorage","setPromoCodeInCookie","BeamPromoCodesStoredEvent","changedProperties","requireNewDataProps","prop","data","loading","iconDisplay","isNonZero","value","shouldDisplayPromoPill","isPromoActive","hasValidImageHeight","hasValidTitleFontSize","isPromoPillVisible","shouldShowPunctuation","_errorMessage","imageUrl","shouldDisplayColon","title","localizeUserString","description","onClickClose","tooltip","ppgfDisclosure","unsafeHTML","defaults","defineCustomText","promoPillLabelConfigDefaults","remoteConfig","config","_cssVariableMap","cssReset","cssResponsiveUtils","css","useCustomText","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"product-details-page.js","sources":["../../src/shared/fragments/custom-border.ts","../../src/shared/fragments/info.ts","../../src/components/product-details-page/strings.ts","../../src/components/product-details-page/index.ts"],"sourcesContent":["import { CSSResult, unsafeCSS } from \"lit\";\n\nexport const defineCustomBorder = (\n namespace = \"\",\n { borderRadius = \"0px\", borderStyle = \"unset\", borderColor = \"#000000\", borderWidth = \"1px\" } = {}\n): Record<string, string> => {\n const prefix = namespace.startsWith(\"--beam-\") ? namespace : `--beam-${namespace}`;\n return {\n [`${prefix}-borderRadius`]: borderRadius,\n [`${prefix}-borderStyle`]: borderStyle,\n [`${prefix}-borderColor`]: borderColor,\n [`${prefix}-borderWidth`]: borderWidth,\n };\n};\n\nexport const useCustomBorder = (\n namespace = \"\",\n { borderRadius = \"0px\", borderStyle = \"unset\", borderColor = \"#000000\", borderWidth = \"1px\" } = {}\n): CSSResult => {\n const prefix = namespace.startsWith(\"--beam-\") ? namespace : `--beam-${namespace}`;\n return unsafeCSS(`\\\n border-radius: var(${prefix}-borderRadius, ${borderRadius});\n border-style: var(${prefix}-borderStyle, ${borderStyle});\n border-color: var(${prefix}-borderColor, ${borderColor});\n border-width: var(${prefix}-borderWidth, ${borderWidth});\n `);\n};\n","import { html } from \"lit\";\n\nexport const _info = () => html` <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n part=\"svg\"\n>\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <path d=\"M12 16v-4\"></path>\n <path d=\"M12 8h.01\"></path>\n</svg>`;\n","export const strings = {\n en: {\n ctaTitle: () => `Choose your impact`,\n ctaMessage: () => `At no extra cost, 1% of every order is donated to a nonprofit you choose. Powered by Beam`,\n inlineSeparator: () => `:`,\n },\n fr: {\n ctaTitle: () => `Choisissez l'impact de votre choix`,\n ctaMessage: () =>\n `Sans frais supplémentaires, 1% de chaque commande est reversé à l'organisation caritative de votre choix. Développé par Beam`,\n inlineSeparator: () => `:`,\n },\n es: {\n ctaTitle: () => `Elige el impacto que deseas`,\n ctaMessage: () =>\n `Sin coste adicional, el 1% de cada pedido se dona a la organización sin ánimo de lucro que tú elijas. Desarrollado por Beam`,\n inlineSeparator: () => `:`,\n },\n de: {\n ctaTitle: () => `Wählen Sie Ihren Einfluss`,\n ctaMessage: () =>\n `Ohne zusätzliche Kosten wird 1 % jeder Bestellung an eine von Ihnen gewählte gemeinnützige Organisation gespendet. Von Beam unterstützt`,\n inlineSeparator: () => `:`,\n },\n it: {\n ctaTitle: () => `Scegliete chi sostenere`,\n ctaMessage: () =>\n `L'1% di ogni vostro acquisto viene donato, senza alcun costo aggiuntivo, a un'organizzazione no-profit a libera scelta. Promosso da Beam`,\n inlineSeparator: () => `:`,\n },\n pl: {\n ctaTitle: () => `Masz wpływ, dokonaj wyboru`,\n ctaMessage: () =>\n `1% kwoty każdego zamówienia jest przekazywane na rzecz wybranej przez Ciebie organizacji non-profit – bez dodatkowych kosztów. Obsługiwane przez Beam`,\n inlineSeparator: () => `:`,\n },\n};\n","import { LitElement, css, html } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { postProductDetailsPage } from \"../../api-sdk/v3/routes\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES, WIDGET_NAMES } from \"../../api-sdk/constants\";\nimport { LANGUAGES, TUrl } from \"../../api-sdk/types\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { _cssVariableMap } from \"../../shared/fragments/css-variable-map\";\nimport { localizeUserString } from \"../../shared/localize\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { cssResponsiveUtils } from \"../../shared/responsive\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomText, useCustomText } from \"../../shared/fragments/custom-text\";\nimport { defineCustomBorder, useCustomBorder } from \"../../shared/fragments/custom-border\";\n// shoelace html tag imports\nimport \"@shoelace-style/shoelace/dist/components/tooltip/tooltip.js\";\nimport \"@shoelace-style/shoelace/dist/components/button/button.js\";\nimport { _info } from \"../../shared/fragments/info\";\nimport { promoPillLabelConfigDefaults } from \"../../shared/components/promo-pill-label\";\nimport {\n getPromoCodesFromCart,\n setPromoCodeInCookie,\n parseJsonStringArray,\n formatStoreAndReturnPromoCodes,\n setPromoCodesInLocalStorage,\n isEmptyPromoData,\n} from \"../../utils/promoManager\";\nimport \"../../shared/components/promo-pill-label\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage } from \"../../shared/cart-contents\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { makeApiKeyHeader } from \"../../utils/makeApiKeyHeader\";\nimport { BeamPromoCodesStoredEvent, BeamWidgetStoredPromoCodesEvent } from \"../../utils/events\";\nimport { getBeamCartId } from \"../../utils/cart\";\nimport { strings } from \"./strings\";\n\ntype RequiredConfig = {\n apiKey: string;\n storeId: number;\n};\ntype IAPIV3PostProductDetailsPage = Awaited<ReturnType<typeof postProductDetailsPage>>;\n\nconst IMAGE_URL_REMOTE_CONFIG_KEY = \"--beam-ProductDetailsPage-imageUrl\";\n\nexport class BeamProductDetailsPage extends LitElement {\n static tagName = \"beam-product-details-page\";\n\n @property({ type: String, reflect: true }) public baseUrl: TUrl = DEFAULT_BASE_URL;\n\n @property({ type: String, reflect: false }) apiKey?: RequiredConfig[\"apiKey\"];\n\n @property({ type: Number }) storeId?: number;\n\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n\n @property({ type: Boolean }) public draftConfig = false;\n\n @property({ type: Boolean }) public debug = false;\n\n @property({ type: String }) remoteProductIdentifier?: string;\n\n @property({ type: String }) public promoCodes?: string;\n\n @property({ type: String }) public domain?: string;\n\n private localStorage = createScopedLocalStorage(this as LitElement & RequiredConfig);\n\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 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: IAPIV3PostProductDetailsPage) {\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.product_details_page,\n })\n );\n }\n }\n\n async firstUpdated() {\n window.addEventListener(BeamPromoCodesStoredEvent.eventName, this.handlePromoCodesStored as EventListener);\n }\n\n disconnectedCallback() {\n window.removeEventListener(BeamPromoCodesStoredEvent.eventName, this.handlePromoCodesStored as EventListener);\n super.disconnectedCallback();\n }\n\n postProductDetailsPageData = async () => {\n if (!enforceConfig<RequiredConfig>([\"apiKey\", \"storeId\"], this)) throw new MissingConfig();\n const beamCartId = getBeamCartId(BEAM_CART_COOKIE_NAME, { apiKey: this.apiKey });\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.product_details_page,\n })\n );\n }\n const res = await postProductDetailsPage({\n baseUrl: this.baseUrl,\n headers: makeApiKeyHeader(this.apiKey),\n queryParams: {\n version: \"1.0.0\",\n lang: this.configLang,\n storeId: this.storeId,\n widgetName: WIDGET_NAMES.product_details_page,\n draftConfig: this.draftConfig,\n remoteProductIdentifier: this.remoteProductIdentifier,\n },\n requestBody: {\n ...(shouldSendPromos && { promos: formattedPromos }),\n beamCartId: beamCartId ? beamCartId : undefined,\n },\n });\n this.handleValidatedPromoCodes(res);\n return res;\n };\n\n private productDetailsPageDataController = new AsyncController<typeof this.postProductDetailsPageData>(\n this,\n this.postProductDetailsPageData\n );\n\n async updated(changedProperties: Map<string, unknown>) {\n const requireNewDataProps = [\"storeId\", \"baseUrl\", \"lang\", \"apiKey\", \"pluginPromoCodes\"];\n void this.pluginPromoCodes;\n for (const prop of requireNewDataProps) {\n if (changedProperties.has(prop)) {\n await this.productDetailsPageDataController.exec();\n break;\n }\n }\n }\n\n render() {\n const { data, loading } = this.productDetailsPageDataController;\n const iconDisplay = this.cssVariables[\"--beam-ProductDetailsPage-image-placement\"];\n const isNonZero = (value: string) => value !== \"0px\" && value !== \"0\";\n const shouldDisplayPromoPill = this.cssVariables[\"--beam-ProductDetailsPage-shouldDisplayPromoPill\"] === \"true\";\n const isPromoActive = !!data?.config?.web?.promo;\n const hasValidImageHeight = isNonZero(this.cssVariables[\"--beam-ProductDetailsPage-imageHeight\"]);\n const hasValidTitleFontSize = isNonZero(this.cssVariables[\"--beam-ProductDetailsPage-title-fontSize\"]);\n const isPromoPillVisible =\n shouldDisplayPromoPill && // Determines if the promo pill is enabled for the marketing version of the PDP\n isPromoActive && // Is promo currently active\n hasValidImageHeight && // Ensures the promo pill is not displayed for the subtext version of the PDP\n hasValidTitleFontSize; // Ensures the promo pill is not displayed for the subtext version of the PDP\n const shouldShowPunctuation = this.cssVariables[\"--beam-ProductDetailsPage-shouldDisplayColon\"] === \"true\"; // Determines if a colon should be displayed in promo display\n if (loading) {\n return html``;\n }\n if (data == null) {\n if (this.debug) {\n return _errorMessage({ error: new Error(\"No data\") });\n }\n return \"\";\n }\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n <div\n class=\"root ${iconDisplay === \"block-center\" ? \"block-display\" : \"inline-display\"}\"\n aria-label=\"product detail page Beam component\"\n >\n ${iconDisplay === \"block-center\"\n ? html`\n ${this.renderWidgetIcon(iconDisplay)}\n ${isPromoPillVisible\n ? html`\n <div class=\"promo-container\">\n <beam-promo-info-pill .promo=${data?.config?.web?.promo}></beam-promo-info-pill>\n </div>\n `\n : html``}\n <div class=\"info-container\">${this.renderContent(isPromoPillVisible, shouldShowPunctuation, data)}</div>\n `\n : html`\n ${isPromoPillVisible\n ? html`\n <div class=\"promo-container\">\n <beam-promo-info-pill .promo=${data?.config?.web?.promo}></beam-promo-info-pill>\n </div>\n `\n : html``}\n <div class=\"content-inline\">\n ${this.renderWidgetIcon(iconDisplay)}\n <div class=\"info-container\">${this.renderContent(isPromoPillVisible, shouldShowPunctuation, data)}</div>\n </div>\n `}\n </div>\n `;\n }\n\n renderWidgetIcon(iconDisplay: string) {\n const imageUrl = this.cssVariables[IMAGE_URL_REMOTE_CONFIG_KEY];\n\n if (!imageUrl) return html``;\n\n const isBlockDisplay = iconDisplay === \"block-center\";\n const containerStyle = isBlockDisplay ? 'style=\"order:1\"' : \"\";\n\n return html`\n <span class=\"icon-container\" part=\"icon\" ${containerStyle}>\n <img src=${imageUrl} part=\"icon\" aria-hidden=\"true\" />\n </span>\n `;\n }\n\n renderContent(isPromoPillVisible: boolean, shouldDisplayColon: boolean, data: IAPIV3PostProductDetailsPage) {\n const title = localizeUserString(this.configLang, data?.config?.web?.title) || strings[this.configLang].ctaTitle();\n const description =\n localizeUserString(this.configLang, data?.config?.web?.description) || strings[this.configLang].ctaMessage();\n return isPromoPillVisible\n ? html`\n <div class=\"info-inline-promo\">\n <span class=\"title\">${title + (shouldDisplayColon ? strings[this.configLang].inlineSeparator() : \"\")}</span>\n <span class=\"description\"> ${description} ${this.renderDisclosureTooltip()} </span>\n </div>\n `\n : html`\n <div class=\"title-block\">\n <h3 class=\"title\">${title}</h3>\n </div>\n <div class=\"description-block\">\n <span class=\"description\"> ${description} ${this.renderDisclosureTooltip()} </span>\n </div>\n `;\n }\n\n renderCloseTooltipIcon() {\n return html`<svg width=\"11\" height=\"11\" viewBox=\"0 0 11 11\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.40836 5.40811L1.48828 1.48804M5.40836 5.40811L9.32843 9.32819M5.40836 5.40811L9.32843 1.48804M5.40836 5.40811L1.48828 9.32819\"\n stroke=\"white\"\n stroke-width=\"1.56803\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg> `;\n }\n\n /* PayPal Giving Fund Disclosure */\n renderDisclosureTooltip() {\n const onClickClose = () => {\n // due to being strictly html, we need to assume any when overriding shoelace properties\n const tooltip = this.renderRoot.querySelector(\".ppgf-disclosure-tooltip\") as any;\n if (tooltip?.open) {\n tooltip.open = false;\n }\n };\n const ppgfDisclosure = this.productDetailsPageDataController.data?.ppgfDisclosure;\n return ppgfDisclosure\n ? html`<sl-tooltip class=\"ppgf-disclosure-tooltip\" part=\"tooltip\">\n <div class=\"ppgf-disclosure-tooltip-content\" slot=\"content\" part=\"tooltip-content\">\n <button\n class=\"ppgf-disclosure-close\"\n aria-label=\"Close tooltip\"\n part=\"tooltip-close-button\"\n @click=\"${onClickClose}\"\n >\n ${this.renderCloseTooltipIcon()}\n </button>\n <div class=\"ppgf-disclosure-tooltip-copy\" part=\"tooltip-disclosure-copy\">\n ${unsafeHTML(ppgfDisclosure.copy)}\n </div>\n </div>\n <span class=\"ppgf-disclosure-tooltip-trigger\" part=\"tooltip-disclosure-icon\">\n <div class=\"ppgf-disclosure-tooltip-trigger-mask d-lg-none\"></div>\n <sl-button\n variant=\"text\"\n size=\"small\"\n class=\"ppgf-disclosure-tooltip-trigger\"\n part=\"tooltip-disclosure-button\"\n aria-label=\"More information\"\n tabindex=\"0\"\n circle\n >\n ${_info()}\n </sl-button>\n </span>\n </sl-tooltip>`\n : html``;\n }\n /* End PayPal Giving Fund Disclosure */\n\n public get cssVariables() {\n const defaults = {\n \"--beam-ProductDetailsPage-imageWidth\": \"24px\",\n \"--beam-ProductDetailsPage-imageHeight\": \"24px\",\n \"--beam-ProductDetailsPage-maxWidth\": \"346px\",\n \"--beam-ProductDetailsPage-paddingTop\": \"8px\",\n \"--beam-ProductDetailsPage-paddingRight\": \"12px\",\n \"--beam-ProductDetailsPage-paddingBottom\": \"8px\",\n \"--beam-ProductDetailsPage-paddingLeft\": \"15px\",\n \"--beam-ProductDetailsPage-InfoContainer-marginLeft\": \"8px\",\n \"--beam-ProductDetailsPage-InfoContainer-textAlign\": \"inherit\",\n \"--beam-ProductDetailsPage-InfoContainer-lineHeight\": \"15px\",\n \"--beam-ProductDetailsPage-InfoContainer-marginTop\": \"4px\",\n \"--beam-ProductDetailsPage-backgroundColor\": \"unset\",\n \"--beam-ProductDetailsPage-TooltipIcon-width\": \"10px\",\n \"--beam-ProductDetailsPage-TooltipIcon-color\": \"inherit\",\n \"--beam-ProductDetailsPage-PPGFDisclosure-backgroundColor\": \"#000000\",\n \"--beam-ProductDetailsPage-PPGFDisclosure-paddingTop\": \"10px\",\n \"--beam-ProductDetailsPage-PPGFDisclosure-paddingRight\": \"8px\",\n \"--beam-ProductDetailsPage-PPGFDisclosure-paddingBottom\": \"10px\",\n \"--beam-ProductDetailsPage-PPGFDisclosure-paddingLeft\": \"8px\",\n \"--beam-ProductDetailsPage-PPGFDisclosureHyperlink-color\": \"#5CA3FF\",\n ...defineCustomText(\"--beam-ProductDetailsPage-title\", {\n fontSize: \"12px\",\n fontWeight: \"bold\",\n }),\n \"--beam-ProductDetailsPage-title-textAlign\": \"left\",\n ...defineCustomText(\"--beam-ProductDetailsPage-description\", {\n marginTop: \"0px\",\n fontSize: \"12px\",\n lineHeight: \"15px\",\n }),\n \"--beam-ProductDetailsPage-description-textAlign\": \"left\",\n ...defineCustomText(\"--beam-ProductDetailsPage-PPGFDisclosureTooltipContent\", {\n fontSize: \"12px\",\n lineHeight: \"16px\",\n color: \"#FFFFFF\",\n }),\n ...defineCustomBorder(\"--beam-ProductDetailsPage\"),\n \"--beam-ProductDetailsPage-close-display\": \"initial\",\n \"--beam-ProductDetailsPage-close-padding\": \"0\",\n \"--beam-ProductDetailsPage-image-placement\": \"inline-left\", // options: \"inline-left\" || \"block-center\"\n \"--beam-ProductDetailsPage-blockImage-alignSelf\": \"center\",\n \"--beam-ProductDetailsPage-promoPill-marginTop\": \"4px\",\n \"--beam-ProductDetailsPage-promoPill-alignSelf\": \"left\",\n \"--beam-ProductDetailsPage-shouldDisplayColon\": \"true\",\n \"--beam-ProductDetailsPage-shouldDisplayPromoPill\": \"true\",\n ...promoPillLabelConfigDefaults,\n };\n const remoteConfig = this.productDetailsPageDataController?.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 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 max-width: var(--beam-ProductDetailsPage-maxWidth);\n word-break: normal;\n display: block;\n }\n .root {\n padding-top: var(--beam-ProductDetailsPage-paddingTop);\n padding-right: var(--beam-ProductDetailsPage-paddingRight);\n padding-bottom: var(--beam-ProductDetailsPage-paddingBottom);\n padding-left: var(--beam-ProductDetailsPage-paddingLeft);\n width: 100%;\n background-color: var(--beam-ProductDetailsPage-backgroundColor);\n display: flex;\n flex-direction: column;\n ${useCustomBorder(\"--beam-ProductDetailsPage\")}\n }\n /* When iconDisplay is inline-center */\n .inline-display {\n display: flex;\n }\n /* When iconDisplay is block-center */\n .block-display {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n .promo-container {\n order: 2;\n display: flex;\n margin-top: var(--beam-ProductDetailsPage-promoPill-marginTop);\n align-self: var(--beam-ProductDetailsPage-promoPill-alignSelf);\n }\n .content-inline {\n order: 3;\n display: flex;\n align-items: center;\n }\n /* Info block for both inline and block layout */\n .info-container {\n display: flex;\n flex-direction: column;\n justify-content: center;\n text-align: var(--beam-ProductDetailsPage-InfoContainer-textAlign);\n line-height: var(--beam-ProductDetailsPage-InfoContainer-lineHeight);\n margin-top: var(--beam-ProductDetailsPage-InfoContainer-marginTop);\n margin-left: var(--beam-ProductDetailsPage-InfoContainer-marginLeft);\n }\n .block-display .info-container {\n order: 3;\n }\n .root.inline-display .icon-container,\n .root.inline-display .info-container {\n display: inline-flex;\n }\n .root.inline-display {\n flex-direction: column;\n }\n .icon-container {\n width: var(--beam-ProductDetailsPage-imageWidth);\n height: var(--beam-ProductDetailsPage-imageHeight);\n align-self: var(--beam-ProductDetailsPage-blockImage-alignSelf);\n flex-shrink: 0;\n }\n .icon-container > img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n }\n .title {\n ${useCustomText(\"--beam-ProductDetailsPage-title\")}\n }\n .title-block {\n text-align: var(--beam-ProductDetailsPage-title-textAlign);\n line-height: var(--beam-ProductDetailsPage-title-lineHeight);\n }\n .info-inline-promo {\n margin-top: var(--beam-ProductDetailsPage-description-marginTop, 0px);\n }\n .description {\n ${useCustomText(\"--beam-ProductDetailsPage-description\")}\n }\n .description-block {\n text-align: var(--beam-ProductDetailsPage-description-textAlign);\n line-height: var(--beam-ProductDetailsPage-description-lineHeight);\n ${useCustomText(\"--beam-ProductDetailsPage-description\")}\n }\n .ppgf-disclosure-tooltip {\n --max-width: 268px;\n }\n .ppgf-disclosure-tooltip::part(body) {\n background-color: var(--beam-ProductDetailsPage-PPGFDisclosure-backgroundColor);\n padding-top: var(--beam-ProductDetailsPage-PPGFDisclosure-paddingTop);\n padding-right: var(--beam-ProductDetailsPage-PPGFDisclosure-paddingRight);\n padding-bottom: var(--beam-ProductDetailsPage-PPGFDisclosure-paddingBottom);\n padding-left: var(--beam-ProductDetailsPage-PPGFDisclosure-paddingLeft);\n }\n .ppgf-disclosure-tooltip::part(base__arrow) {\n background-color: var(--beam-ProductDetailsPage-PPGFDisclosure-backgroundColor);\n }\n .ppgf-disclosure-tooltip-content {\n display: flex;\n flex-direction: column;\n ${useCustomText(\"--beam-ProductDetailsPage-PPGFDisclosureTooltipContent\")}\n }\n .ppgf-disclosure-tooltip-copy > a,\n .ppgf-disclosure-close {\n pointer-events: auto;\n color: var(--beam-ProductDetailsPage-PPGFDisclosureHyperlink-color);\n }\n .ppgf-disclosure-close {\n display: var(--beam-ProductDetailsPage-close-display);\n padding: var(--beam-ProductDetailsPage-close-padding);\n height: 12px;\n background: none;\n border: none;\n margin-left: auto;\n }\n .ppgf-disclosure-tooltip-copy > a:visited {\n color: var(--beam-ProductDetailsPage-PPGFDisclosureHyperlink-color);\n }\n .ppgf-disclosure-tooltip-trigger {\n position: relative;\n }\n .ppgf-disclosure-tooltip-trigger-mask {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: calc(var(--beam-ProductDetailsPage-TooltipIcon-width) + 20px);\n height: calc(var(--beam-ProductDetailsPage-TooltipIcon-width) + 20px);\n }\n .ppgf-disclosure-tooltip-trigger::part(base) {\n line-height: 1;\n border: none;\n min-height: 0;\n min-width: 0;\n width: auto;\n }\n .ppgf-disclosure-tooltip-trigger::part(label) {\n padding: 0;\n }\n .ppgf-disclosure-tooltip-trigger > svg {\n width: var(--beam-ProductDetailsPage-TooltipIcon-width);\n color: var(--beam-ProductDetailsPage-TooltipIcon-color);\n height: auto;\n }\n `,\n ];\n}\n\ndefineCustomElement(BeamProductDetailsPage);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-product-details-page\": BeamProductDetailsPage;\n }\n}\n"],"names":["defineCustomBorder","namespace","borderRadius","borderStyle","borderColor","borderWidth","prefix","useCustomBorder","unsafeCSS","_info","html","strings","x","s","p","n","e","o","r","IMAGE_URL_REMOTE_CONFIG_KEY","BeamProductDetailsPage","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","evt","promoCodesFromPlugin","c","enforceConfig","beamCartId","getBeamCartId","BEAM_CART_COOKIE_NAME","manualPromoCodes","formattedPromos","formatStoreAndReturnPromoCodes","code","shouldSendPromos","isEmptyPromoData","BeamWidgetStoredPromoCodesEvent","WIDGET_NAMES","res","postProductDetailsPage","makeApiKeyHeader","AsyncController","SUPPORTED_LANGUAGES","parseJsonStringArray","cart","getPromoCodesFromCart","response","setPromoCodesInLocalStorage","setPromoCodeInCookie","BeamPromoCodesStoredEvent","changedProperties","requireNewDataProps","prop","data","loading","iconDisplay","isNonZero","value","shouldDisplayPromoPill","isPromoActive","hasValidImageHeight","hasValidTitleFontSize","isPromoPillVisible","shouldShowPunctuation","_errorMessage","imageUrl","shouldDisplayColon","title","localizeUserString","description","onClickClose","tooltip","ppgfDisclosure","unsafeHTML","defaults","defineCustomText","promoPillLabelConfigDefaults","remoteConfig","config","_cssVariableMap","cssReset","cssResponsiveUtils","css","useCustomText","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
|
|
@@ -73,7 +73,7 @@ declare class BeamRedeemTransaction extends LitElement {
|
|
|
73
73
|
private renderProgressBar;
|
|
74
74
|
private renderNonprofitDetails;
|
|
75
75
|
private renderPromoPill;
|
|
76
|
-
protected render():
|
|
76
|
+
protected render(): lit_html.TemplateResult<1> | "";
|
|
77
77
|
}
|
|
78
78
|
declare global {
|
|
79
79
|
interface HTMLElementTagNameMap {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{m as k,y as i,f as S,g as c,t as v,h as $,
|
|
1
|
+
import{m as k,y as i,f as S,g as c,t as v,h as $,q as C,k as P,u as D}from"../chunks/lit-WqMxC_PA.esm.js";import{d as I}from"../chunks/lodash-7H4x2457.esm.js";import{u as h,A as R,d as f,a as N,i as m,_ as x}from"../chunks/localize-Btu9xYcE.esm.js";import{D as L,e as z,W as B,j as M,S as U}from"../chunks/routes-Be8scSEK.esm.js";import{p as E}from"../chunks/progress-bar-DF7UuuHb.esm.js";import{p as W}from"../chunks/promo-pill-label-CbW_Vcru.esm.js";import{partnerLogosConfigDefaults as A}from"./beam-partner-logos.esm.js";import{c as F,d as _,e as y,a as j}from"../chunks/enforce-config-CZ3ToOgr.esm.js";import{_ as O}from"../chunks/loading-template-DG4lkIIc.esm.js";import{M as K,B as V}from"../chunks/beam-errors-Ci0d3926.esm.js";import{createScopedLocalStorage as H}from"../utils/local-storage.esm.js";import{c as q}from"../chunks/css-card-grid-CvoGpsJH.esm.js";import{c as G}from"../chunks/events-BohmT6Lp.esm.js";import"../utils/logger.esm.js";import"../chunks/vendor-KKSARHWL.esm.js";const J=({height:n="1em",width:e="1em"}={})=>i`
|
|
2
2
|
<svg
|
|
3
3
|
style="${k({height:n,width:e,position:"relative",bottom:"0"})}"
|
|
4
4
|
xmlns="http://www.w3.org/2000/svg"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{m as k,y as i,f as S,g as c,t as v,h as $,
|
|
1
|
+
import{m as k,y as i,f as S,g as c,t as v,h as $,q as C,k as P,u as D}from"../chunks/lit-WqMxC_PA.esm.js";import{d as I}from"../chunks/lodash-7H4x2457.esm.js";import{u as h,A as R,d as f,a as N,i as m,_ as x}from"../chunks/localize-C25pEGnx.esm.js";import{D as L,e as z,W as B,j as M,S as U}from"../chunks/routes-Bgj1HGgx.esm.js";import{p as E}from"../chunks/progress-bar-DF7UuuHb.esm.js";import{p as W}from"../chunks/promo-pill-label-CbW_Vcru.esm.js";import{partnerLogosConfigDefaults as A}from"./beam-partner-logos.js";import{c as F,d as _,e as y,a as j}from"../chunks/enforce-config-Ba1JkOHs.esm.js";import{_ as O}from"../chunks/loading-template-DG4lkIIc.esm.js";import{M as K,B as V}from"../chunks/beam-errors-Ci0d3926.esm.js";import{createScopedLocalStorage as H}from"../utils/local-storage.js";import{c as q}from"../chunks/css-card-grid-CvoGpsJH.esm.js";import{c as G}from"../chunks/events-BohmT6Lp.esm.js";import"../utils/logger.js";import"../chunks/vendor-KKSARHWL.esm.js";const J=({height:n="1em",width:e="1em"}={})=>i`
|
|
2
2
|
<svg
|
|
3
3
|
style="${k({height:n,width:e,position:"relative",bottom:"0"})}"
|
|
4
4
|
xmlns="http://www.w3.org/2000/svg"
|
|
@@ -78,7 +78,7 @@ declare class BeamSelectNonprofit extends LitElement {
|
|
|
78
78
|
evaluateBreakPoints: lodash.DebouncedFuncLeading<() => void>;
|
|
79
79
|
get cssVariables(): any;
|
|
80
80
|
static styles: lit.CSSResult[];
|
|
81
|
-
protected render():
|
|
81
|
+
protected render(): lit_html.TemplateResult<1> | "";
|
|
82
82
|
}
|
|
83
83
|
declare global {
|
|
84
84
|
interface HTMLElementTagNameMap {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{h as
|
|
1
|
+
import{h as k,f as $,y as d,g as f,t as L,q as v,u as H,m as D,k as q}from"../chunks/lit-WqMxC_PA.esm.js";import{i as V,d as J}from"../chunks/lodash-7H4x2457.esm.js";import{u as S,A as E,d as h,a as G,_ as z,i as m}from"../chunks/localize-Btu9xYcE.esm.js";import{D as Q,W as C,e as X,i as Y,S as Z}from"../chunks/routes-Be8scSEK.esm.js";import{p as ee}from"../chunks/progress-bar-DF7UuuHb.esm.js";import{p as te}from"../chunks/promo-pill-label-CbW_Vcru.esm.js";import{c as oe,d as ie,e as P}from"../chunks/enforce-config-CZ3ToOgr.esm.js";import{_ as ne}from"../chunks/loading-template-DG4lkIIc.esm.js";import{f as A,c as M,i as re,g as T,a as B}from"../chunks/events-BohmT6Lp.esm.js";import{logger as ae}from"../utils/logger.esm.js";import{createScopedLocalStorage as se}from"../utils/local-storage.esm.js";import{f as le,i as ce,e as pe,h as de,k as fe,s as me}from"../chunks/promoManager-fl54hq13.esm.js";import{c as ge}from"../chunks/responsive-BR8qUfBa.esm.js";import{B as F}from"../chunks/cart-contents-DkoytiZh.esm.js";import{getBeamCartId as K,getExternalCartId as _}from"../utils/cart.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../chunks/vendor-KKSARHWL.esm.js";import"../utils/cookies.esm.js";class he extends k{static get styles(){return $`
|
|
2
2
|
:host {
|
|
3
3
|
}
|
|
4
4
|
|
|
@@ -18,49 +18,51 @@ import{h as w,f as I,y as d,g as f,t as P,q as W,m as U,k as R}from"../chunks/li
|
|
|
18
18
|
aria-label="Notification Blip"
|
|
19
19
|
>
|
|
20
20
|
<span class="notification-blip" part="notification-blip" role="button" tabindex="0" aria-hidden="true"></span>
|
|
21
|
-
</div>`}}customElements.get("beam-notification-blip")||customElements.define("beam-notification-blip",de);const fe={"--beam-notificationBlip-color-background":"#000"},g={en:{beamAttribution:()=>"Powered by Beam",ctaTitle:()=>"Choose your impact",ctaPromoPrefixMessage:()=>"At no extra cost,",ctaPromoMessage:({donationPercentage:r="1"}={})=>`select a nonprofit and ${r}% of your purchase will be donated.`,ctaMessage:({donationPercentage:r="1"}={})=>`At no extra cost, select a nonprofit and ${r}% of your purchase will be donated.`,inlineSeparator:()=>": "},fr:{beamAttribution:()=>"Optimis\xE9 par Beam",ctaTitle:()=>"Choisissez votre cause",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:r="1"}={})=>`Sans frais suppl\xE9mentaires, choisissez un organisme \xE0 but non lucratif et ${r} % lui sera vers\xE9 en votre nom.`,inlineSeparator:()=>" : "},de:{beamAttribution:()=>"Unterst\xFCtzt von Beam",ctaTitle:()=>"W\xE4hle deinen Impact",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:r="1"}={})=>`Ohne zus\xE4tzliche Kosten, w\xE4hle eine der gemeinn\xFCtzigen Organisationen und spende ${r}% deines Einkaufs`,inlineSeparator:()=>": "},es:{beamAttribution:()=>"Ofrecido por Beam",ctaTitle:()=>"Elige tu contribuci\xF3n",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:r="1"}={})=>`Sin coste adicional, elige una organizaci\xF3n sin fines de lucro y donaremos ${r}% de tu compra.`,inlineSeparator:()=>": "},it:{beamAttribution:()=>"Gestito da Beam",ctaTitle:()=>"Scegli dove fare la differenza",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:r="1"}={})=>`Senza costi aggiuntivi, seleziona un'organizzazione no-profit a cui devolvere l\u2019${r}% del tuo acquisto`,inlineSeparator:()=>": "},pl:{beamAttribution:()=>"Wspierany przez Beam",ctaTitle:()=>"Wybierz inicjatyw\u0119, kt\xF3r\u0105 chcesz wesprze\u0107",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:r="1"}={})=>`Bez \u017Cadnych dodatkowych koszt\xF3w wybierz organizacj\u0119, kt\xF3rej przeka\u017Cesz ${r}% warto\u015Bci Twoich zakup\xF3w!`,inlineSeparator:()=>": "}};var me=Object.defineProperty,p=(r,e,t,n)=>{for(var o=void 0,i=r.length-1,a;i>=0;i--)(a=r[i])&&(o=a(e,t,o)||o);return o&&me(e,t,o),o};class s extends w{constructor(){super(...arguments),this.baseUrl=V,this.selectedNonprofitId=null,this.lang="en",this.debug=!1,this.draftConfig=!1,this.isMobile=window.innerWidth<768,this.enableNonprofitDeselection=!1,this.didTryToCreateNewSelectionFromCache=!1,this.pluginPromoCodes=[],this.handlePromoCodesStored=e=>{const t=(e.detail.promoCodes?.unvalidatedPromoCodes??[]).map(n=>n.attributes?.value??n.attributes?.url??"").sort();this.pluginPromoCodes=t},this.getChainNonprofits=async()=>{v(["apiKey"],this);const e=M(A,{apiKey:this.apiKey}),t=T("cart",{apiKey:this.apiKey}),n=this.cart?.content?{schema:this.cart?.schema,content:this.cart?.content}:void 0,o=this.getManualPromoCodes(),i=ne(o.map(u=>({value:u})),this.apiKey),a=i&&!re(i);a&&this.dispatchEvent(new L({source:N.select_nonprofit}));const l=await q({baseUrl:this.baseUrl,apiRoot:"/api/v3",headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{storeId:this.storeId,widgetName:N.select_nonprofit,postalCode:this.postalCode,countryCode:this.countryCode,beamCartId:e||void 0,cartId:t||void 0,version:"1.0.0",lang:this.configLang,...a&&{promos:i},options:{config:{draftConfig:this.draftConfig}},cart:n}});return this.enableNonprofitDeselection=!!l.config.enableNonprofitDeselection,this.selectedNonprofitId!==null&&this.selectedNonprofitId&&!l.nonprofits.map(u=>u.nonprofit.id).includes(this.selectedNonprofitId)&&(this.selectedNonprofitId=null,await this.postSelectNonprofit({selectedNonprofitId:null}),this.localStorage.setItem("nonprofit",null)),l.store?.id&&l.store.id!==this.storeId&&(this.storeId=l.store.id),await this.createNewSelectionForCachedNonprofit(),this.localStorage.setItemJson("chainNonprofits",{createdAt:new Date,data:l}),this.handleValidatedPromoCodes(l),l},this.postSelectNonprofit=async({selectedNonprofitId:e})=>{v(["apiKey","storeId"],this);const t=T("cart",{apiKey:this.apiKey}),n=M(A,{apiKey:this.apiKey}),o=await J({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{nonprofitId:e,selectionId:this.selectionId,storeId:this.storeId,cartId:t||void 0,beamCartId:n||void 0,postalCode:this.postalCode,countryCode:this.countryCode}});this.selectionId=o?.selectionId,this.localStorage.setItem("transaction",this.selectionId),this.localStorage.setItem("nonprofit",e),this.localStorage.setItem("nonprofit_selected_at",new Date().toISOString()),await this.updateComplete;const i=this.getNonprofitById(e);e!==null&&this.dispatchEvent(new D({selectedNonprofitId:e,selectionId:this.selectionId,nonprofitName:i?.nonprofit?.name??null,source:N.select_nonprofit})),e===null&&this.dispatchEvent(new te({newNonprofitId:null,selectionId:this.selectionId}))},this.nonprofitListDataController=new k(this,this.getChainNonprofits),this.selectionDataController=new k(this,this.postSelectNonprofit),this.localStorage=ie(this),this.handleCartChange=e=>{this.cart=e.detail},this.makeHandleSelect=(e,t,n)=>async o=>{const i=this.selectedNonprofitId;if(o instanceof KeyboardEvent){let a=null;switch(o.key){case"ArrowUp":case"ArrowLeft":t===0?a=n[n.length-1]:a=n[t-1],o.preventDefault();break;case"ArrowRight":case"ArrowDown":t===n.length-1?a=n[0]:a=n[t+1],o.preventDefault();break;case"Enter":case" ":o.preventDefault();break;default:return}if(a){i!=null&&(this.selectedNonprofitId=a.nonprofit.id);const l=this.renderRoot.querySelector(`[data-value="${a.nonprofit.id}"]`);l!==null&&(l.tabIndex=0,l.focus());return}}if(o.currentTarget instanceof HTMLElement)if(i===e)if(this.enableNonprofitDeselection)this.selectedNonprofitId=null,this.localStorage.setItem("nonprofit",null);else return;else this.selectedNonprofitId=e;await this.selectionDataController.exec({selectedNonprofitId:this.selectedNonprofitId})},this.evaluateBreakPoints=j(()=>{this.isMobile=window.innerWidth<768},50,{maxWait:50,leading:!0})}get configLang(){return G[this.lang]||"en"}get parsedPromoCodes(){return ae(this.promoCodes)}getManualPromoCodes(){if(this.parsedPromoCodes&&this.parsedPromoCodes.length>0)return this.parsedPromoCodes;const e=this.localStorage.getItemJson("cart");return e?se(e):[]}async handleValidatedPromoCodes(e){e.promos?.validatedPromoCodes&&(await Promise.all([le({apiKey:this.apiKey,promoCodes:{validatedPromoCodes:e.promos.validatedPromoCodes,unvalidatedPromoCodes:[]}}),ce({validatedPromoCodes:e.promos.validatedPromoCodes,domain:this.domain})]),this.dispatchEvent(new L({source:N.select_nonprofit})))}getNonprofitById(e){return e?this.nonprofitListDataController?.data?.nonprofits.find(t=>t.nonprofit.id===e):null}async connectedCallback(){super.connectedCallback(),this.nonprofitListDataController.loading=!0,window.addEventListener(E.eventName,this.handleCartChange),window.addEventListener("resize",this.evaluateBreakPoints)}async firstUpdated(){await this.restoreStateFromCache(),window.addEventListener(z.eventName,this.handlePromoCodesStored)}async updated(e){const t=["baseUrl","storeId","apiKey","countryCode","postalCode","cart","lang","pluginPromoCodes"];this.pluginPromoCodes;for(const n of t)if(e.has(n)){await this.nonprofitListDataController.exec();break}}disconnectedCallback(){window.removeEventListener(E.eventName,this.handleCartChange),window.removeEventListener("resize",this.evaluateBreakPoints),window.removeEventListener(z.eventName,this.handlePromoCodesStored),super.disconnectedCallback()}async restoreStateFromCache(){try{const e=new Date().valueOf();this.cart=this.localStorage.getItemJson("cart")??void 0;const t=30*24*60*60*1e3,n=this.localStorage.getItem("nonprofit_selected_at")??0,o=e>new Date(n).valueOf()+t;o?o&&this.selectedNonprofitId!==null&&(await this.postSelectNonprofit({selectedNonprofitId:null}),this.localStorage.setItem("nonprofit",null)):(this.selectedNonprofitId=parseInt(this.localStorage.getItem("nonprofit")||"")||null,this.selectionId=this.localStorage.getItem("transaction")??void 0);const{createdAt:i=0,data:a}=this.localStorage.getItemJson("chainNonprofits")||{},l=2*60*60*1e3;!(e>new Date(i).valueOf()+l)&&this.nonprofitListDataController.loading&&(this.nonprofitListDataController.data=a,this.nonprofitListDataController.loading=!1)}catch(e){oe.error(e)}}async createNewSelectionForCachedNonprofit(){if(v(["apiKey"],this),!(!this.storeId||this.didTryToCreateNewSelectionFromCache))try{if(this.didTryToCreateNewSelectionFromCache=!0,this.selectedNonprofitId){this.selectionId||await this.selectionDataController.exec({selectedNonprofitId:this.selectedNonprofitId});const e=this.getNonprofitById(this.selectedNonprofitId);this.dispatchEvent(new D({selectedNonprofitId:this.selectedNonprofitId,selectionId:this.selectionId,nonprofitName:e?.nonprofit?.name,source:N.select_nonprofit}))}}catch{}}get cssVariables(){const e={"--beam-fontFamily":"inherit","--beam-fontStyle":"inherit","--beam-fontSize":"inherit","--beam-textColor":"inherit","--beam-backgroundColor":"inherit",...Q,"--beam-SelectNonprofit-title-textAlign":"inherit","--beam-SelectNonprofit-description-textAlign":"inherit","--beam-SelectNonprofit-maxWidth":"800px","--beam-SelectNonprofit-options-marginTop":"0px","--beam-SelectNonprofit-options-iconHeight":"24px","--beam-SelectNonprofit-options-padding":"10px","--beam-SelectNonprofit-options-borderRadius":"0px","--beam-SelectNonprofit-options-borderColor":"currentColor","--beam-SelectNonprofit-options--selected-borderColor":"currentColor","--beam-SelectNonprofit-options-backgroundColor":"transparent","--beam-SelectNonprofit-options-gap":"8px","--beam-SelectNonprofit-options--selected-backgroundColor":"currentColor","--beam-SelectNonprofit-details-marginTop":"10px","--beam-SelectNonprofit-details-borderRadius":"0px","--beam-SelectNonprofit-details-borderColor":"currentColor","--beam-SelectNonprofit-details-backgroundColor":"inherit","--beam-SelectNonprofit-details-padding":"10px",...h("--beam-SelectNonprofit-title",{fontSize:"1.25em",fontWeight:"bold"}),"--beam-SelectNonprofit-header-inline-lineHeight":"inherit",...h("--beam-SelectNonprofit-title-inline",{fontWeight:"bold"}),"--beam-SelectNonprofit-title-inline-textTransform":"none","--beam-SelectNonprofit-title-block-margin-right":"8px",...h("--beam-SelectNonprofit-description",{marginTop:"0.5em"}),...h("--beam-SelectNonprofit-description-inline"),...h("--beam-SelectNonprofit-details-cause",{fontSize:"0.85em",fontWeight:"bold"}),...h("--beam-SelectNonprofit-details-beamAttribution",{fontSize:"0.85em"}),...h("--beam-SelectNonprofit-details-impactDescription",{fontSize:"1em",marginTop:"10px"}),"--beam-SelectNonprofit-details-nonprofitName-fontWeight":"bold","--beam-SelectNonprofit-details-nonprofitName-fontStyle":"inherit","--beam-SelectNonprofit-details-fundingProgress-marginTop":"10px",...h("--beam-SelectNonprofit-details-fundingProgressLabel",{fontSize:"0.85em"}),...fe,...X,"--beam-SelectNonprofit-promo-block-header-justifyContent":"initial","--beam-SelectNonprofit-notification-blip-top":"4px","--beam-SelectNonprofit-notification-blip-left":"50%","--beam-SelectNonprofit-display-notification-blip":"true"},t=this.nonprofitListDataController?.data?.config?.web?.theme||{},n={...e,...t};return Object.assign(Object.create({toCSS(){return H(this)}}),n)}render(){const{selectedNonprofitId:e}=this,{data:t,loading:n}=this.nonprofitListDataController;if(n&&!t)return ee();if(this.nonprofitListDataController.error)return this.debug?$({error:this.nonprofitListDataController.error}):"";if(this.selectionDataController.error&&this.debug)return $({error:this.selectionDataController.error});const o=t?.nonprofits||[],i=o.find(c=>c.nonprofit.id===e)||null,a=!!t?.config?.web?.promo,l=o.some(c=>!c.promo||!c.promo.isActive),u=this.cssVariables["--beam-SelectNonprofit-display-notification-blip"]==="true",y=this.cssVariables["--beam-SelectNonprofit-title-textAlign"]==="center",x=d`<h3 class="title-block d-none d-lg-block" part="title" id="beam-SelectNonprofit-title">
|
|
21
|
+
</div>`}}customElements.get("beam-notification-blip")||customElements.define("beam-notification-blip",he);const be={"--beam-notificationBlip-color-background":"#000"},g={en:{beamAttribution:()=>"Powered by Beam",ctaTitle:()=>"Choose your impact",ctaPromoPrefixMessage:()=>"At no extra cost,",ctaPromoMessage:({donationPercentage:r="1"}={})=>`select a nonprofit and ${r}% of your purchase will be donated.`,ctaMessage:({donationPercentage:r="1"}={})=>`At no extra cost, select a nonprofit and ${r}% of your purchase will be donated.`,inlineSeparator:()=>": "},fr:{beamAttribution:()=>"Optimis\xE9 par Beam",ctaTitle:()=>"Choisissez votre cause",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:r="1"}={})=>`Sans frais suppl\xE9mentaires, choisissez un organisme \xE0 but non lucratif et ${r} % lui sera vers\xE9 en votre nom.`,inlineSeparator:()=>" : "},de:{beamAttribution:()=>"Unterst\xFCtzt von Beam",ctaTitle:()=>"W\xE4hle deinen Impact",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:r="1"}={})=>`Ohne zus\xE4tzliche Kosten, w\xE4hle eine der gemeinn\xFCtzigen Organisationen und spende ${r}% deines Einkaufs`,inlineSeparator:()=>": "},es:{beamAttribution:()=>"Ofrecido por Beam",ctaTitle:()=>"Elige tu contribuci\xF3n",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:r="1"}={})=>`Sin coste adicional, elige una organizaci\xF3n sin fines de lucro y donaremos ${r}% de tu compra.`,inlineSeparator:()=>": "},it:{beamAttribution:()=>"Gestito da Beam",ctaTitle:()=>"Scegli dove fare la differenza",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:r="1"}={})=>`Senza costi aggiuntivi, seleziona un'organizzazione no-profit a cui devolvere l\u2019${r}% del tuo acquisto`,inlineSeparator:()=>": "},pl:{beamAttribution:()=>"Wspierany przez Beam",ctaTitle:()=>"Wybierz inicjatyw\u0119, kt\xF3r\u0105 chcesz wesprze\u0107",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:r="1"}={})=>`Bez \u017Cadnych dodatkowych koszt\xF3w wybierz organizacj\u0119, kt\xF3rej przeka\u017Cesz ${r}% warto\u015Bci Twoich zakup\xF3w!`,inlineSeparator:()=>": "}};var ue=Object.defineProperty,p=(r,e,t,n)=>{for(var o=void 0,i=r.length-1,s;i>=0;i--)(s=r[i])&&(o=s(e,t,o)||o);return o&&ue(e,t,o),o};class l extends k{constructor(){super(...arguments),this.baseUrl=Q,this.selectedNonprofitId=null,this.lang="en",this.debug=!1,this.draftConfig=!1,this.isMobile=window.innerWidth<768,this.enableNonprofitDeselection=!1,this.didTryToCreateNewSelectionFromCache=!1,this.pluginPromoCodes=[],this.handlePromoCodesStored=e=>{const t=(e.detail.promoCodes?.unvalidatedPromoCodes??[]).map(n=>n.attributes?.value??n.attributes?.url??"").sort();this.pluginPromoCodes=t},this.getChainNonprofits=async()=>{P(["apiKey"],this);const e=K(F,{apiKey:this.apiKey}),t=_("cart",{apiKey:this.apiKey}),n=this.cart?.content?{schema:this.cart?.schema,content:this.cart?.content}:void 0,o=this.getManualPromoCodes(),i=le(o.map(b=>({value:b})),this.apiKey),s=i&&!ce(i);s&&this.dispatchEvent(new A({source:C.select_nonprofit}));const c=await X({baseUrl:this.baseUrl,apiRoot:"/api/v3",headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{storeId:this.storeId,widgetName:C.select_nonprofit,postalCode:this.postalCode,countryCode:this.countryCode,beamCartId:e||void 0,cartId:t||void 0,version:"1.0.0",lang:this.configLang,...s&&{promos:i},options:{config:{draftConfig:this.draftConfig}},cart:n}});return this.enableNonprofitDeselection=!!c.config.enableNonprofitDeselection,this.selectedNonprofitId!==null&&this.selectedNonprofitId&&!c.nonprofits.map(b=>b.nonprofit.id).includes(this.selectedNonprofitId)&&(this.selectedNonprofitId=null,await this.postSelectNonprofit({selectedNonprofitId:null}),this.localStorage.setItem("nonprofit",null)),c.store?.id&&c.store.id!==this.storeId&&(this.storeId=c.store.id),await this.createNewSelectionForCachedNonprofit(),this.localStorage.setItemJson("chainNonprofits",{createdAt:new Date,data:c}),this.handleValidatedPromoCodes(c),c},this.postSelectNonprofit=async({selectedNonprofitId:e})=>{P(["apiKey","storeId"],this);const t=_("cart",{apiKey:this.apiKey}),n=K(F,{apiKey:this.apiKey}),o=await Y({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{nonprofitId:e,selectionId:this.selectionId,storeId:this.storeId,cartId:t||void 0,beamCartId:n||void 0,postalCode:this.postalCode,countryCode:this.countryCode}});this.selectionId=o?.selectionId,this.localStorage.setItem("transaction",this.selectionId),this.localStorage.setItem("nonprofit",e),this.localStorage.setItem("nonprofit_selected_at",new Date().toISOString()),await this.updateComplete;const i=this.getNonprofitById(e);e!==null&&this.dispatchEvent(new M({selectedNonprofitId:e,selectionId:this.selectionId,nonprofitName:i?.nonprofit?.name??null,source:C.select_nonprofit})),e===null&&this.dispatchEvent(new re({newNonprofitId:null,selectionId:this.selectionId}))},this.nonprofitListDataController=new E(this,this.getChainNonprofits),this.selectionDataController=new E(this,this.postSelectNonprofit),this.localStorage=se(this),this.handleCartChange=e=>{this.cart=e.detail},this.makeHandleSelect=(e,t,n)=>async o=>{const i=this.selectedNonprofitId;if(o instanceof KeyboardEvent){let s=null;switch(o.key){case"ArrowUp":case"ArrowLeft":t===0?s=n[n.length-1]:s=n[t-1],o.preventDefault();break;case"ArrowRight":case"ArrowDown":t===n.length-1?s=n[0]:s=n[t+1],o.preventDefault();break;case"Enter":case" ":o.preventDefault();break;default:return}if(s){i!=null&&(this.selectedNonprofitId=s.nonprofit.id);const c=this.renderRoot.querySelector(`[data-value="${s.nonprofit.id}"]`);c!==null&&(c.tabIndex=0,c.focus());return}}if(o.currentTarget instanceof HTMLElement)if(i===e)if(this.enableNonprofitDeselection)this.selectedNonprofitId=null,this.localStorage.setItem("nonprofit",null);else return;else this.selectedNonprofitId=e;await this.selectionDataController.exec({selectedNonprofitId:this.selectedNonprofitId})},this.evaluateBreakPoints=J(()=>{this.isMobile=window.innerWidth<768},50,{maxWait:50,leading:!0})}get configLang(){return Z[this.lang]||"en"}get parsedPromoCodes(){return pe(this.promoCodes)}getManualPromoCodes(){if(this.parsedPromoCodes&&this.parsedPromoCodes.length>0)return this.parsedPromoCodes;const e=this.localStorage.getItemJson("cart");return e?de(e):[]}async handleValidatedPromoCodes(e){e.promos?.validatedPromoCodes&&(await Promise.all([fe({apiKey:this.apiKey,promoCodes:{validatedPromoCodes:e.promos.validatedPromoCodes,unvalidatedPromoCodes:[]}}),me({validatedPromoCodes:e.promos.validatedPromoCodes,domain:this.domain})]),this.dispatchEvent(new A({source:C.select_nonprofit})))}getNonprofitById(e){return e?this.nonprofitListDataController?.data?.nonprofits.find(t=>t.nonprofit.id===e):null}async connectedCallback(){super.connectedCallback(),this.nonprofitListDataController.loading=!0,window.addEventListener(T.eventName,this.handleCartChange),window.addEventListener("resize",this.evaluateBreakPoints)}async firstUpdated(){await this.restoreStateFromCache(),window.addEventListener(B.eventName,this.handlePromoCodesStored)}async updated(e){const t=["baseUrl","storeId","apiKey","countryCode","postalCode","cart","lang","pluginPromoCodes"];this.pluginPromoCodes;for(const n of t)if(e.has(n)){await this.nonprofitListDataController.exec();break}}disconnectedCallback(){window.removeEventListener(T.eventName,this.handleCartChange),window.removeEventListener("resize",this.evaluateBreakPoints),window.removeEventListener(B.eventName,this.handlePromoCodesStored),super.disconnectedCallback()}async restoreStateFromCache(){try{const e=new Date().valueOf();this.cart=this.localStorage.getItemJson("cart")??void 0;const t=30*24*60*60*1e3,n=this.localStorage.getItem("nonprofit_selected_at")??0,o=e>new Date(n).valueOf()+t;o?o&&this.selectedNonprofitId!==null&&(await this.postSelectNonprofit({selectedNonprofitId:null}),this.localStorage.setItem("nonprofit",null)):(this.selectedNonprofitId=parseInt(this.localStorage.getItem("nonprofit")||"")||null,this.selectionId=this.localStorage.getItem("transaction")??void 0);const{createdAt:i=0,data:s}=this.localStorage.getItemJson("chainNonprofits")||{},c=2*60*60*1e3;!(e>new Date(i).valueOf()+c)&&this.nonprofitListDataController.loading&&(this.nonprofitListDataController.data=s,this.nonprofitListDataController.loading=!1)}catch(e){ae.error(e)}}async createNewSelectionForCachedNonprofit(){if(P(["apiKey"],this),!(!this.storeId||this.didTryToCreateNewSelectionFromCache))try{if(this.didTryToCreateNewSelectionFromCache=!0,this.selectedNonprofitId){this.selectionId||await this.selectionDataController.exec({selectedNonprofitId:this.selectedNonprofitId});const e=this.getNonprofitById(this.selectedNonprofitId);this.dispatchEvent(new M({selectedNonprofitId:this.selectedNonprofitId,selectionId:this.selectionId,nonprofitName:e?.nonprofit?.name,source:C.select_nonprofit}))}}catch{}}get cssVariables(){const e={"--beam-fontFamily":"inherit","--beam-fontStyle":"inherit","--beam-fontSize":"inherit","--beam-textColor":"inherit","--beam-backgroundColor":"inherit",...ee,"--beam-SelectNonprofit-title-textAlign":"inherit","--beam-SelectNonprofit-description-textAlign":"inherit","--beam-SelectNonprofit-maxWidth":"800px","--beam-SelectNonprofit-options-marginTop":"0px","--beam-SelectNonprofit-options-iconHeight":"24px","--beam-SelectNonprofit-options-padding":"10px","--beam-SelectNonprofit-options-borderRadius":"0px","--beam-SelectNonprofit-options-borderColor":"currentColor","--beam-SelectNonprofit-options--selected-borderColor":"currentColor","--beam-SelectNonprofit-options-backgroundColor":"transparent","--beam-SelectNonprofit-options-gap":"8px","--beam-SelectNonprofit-options--selected-backgroundColor":"currentColor","--beam-SelectNonprofit-details-marginTop":"10px","--beam-SelectNonprofit-details-borderRadius":"0px","--beam-SelectNonprofit-details-borderColor":"currentColor","--beam-SelectNonprofit-details-backgroundColor":"inherit","--beam-SelectNonprofit-details-padding":"10px",...h("--beam-SelectNonprofit-title",{fontSize:"1.25em",fontWeight:"bold"}),"--beam-SelectNonprofit-header-inline-lineHeight":"inherit",...h("--beam-SelectNonprofit-title-inline",{fontWeight:"bold"}),"--beam-SelectNonprofit-title-inline-textTransform":"none","--beam-SelectNonprofit-title-block-margin-right":"8px",...h("--beam-SelectNonprofit-description",{marginTop:"0.5em"}),...h("--beam-SelectNonprofit-description-inline"),...h("--beam-SelectNonprofit-details-cause",{fontSize:"0.85em",fontWeight:"bold"}),...h("--beam-SelectNonprofit-details-beamAttribution",{fontSize:"0.85em"}),...h("--beam-SelectNonprofit-details-impactDescription",{fontSize:"1em",marginTop:"10px"}),"--beam-SelectNonprofit-details-nonprofitName-fontWeight":"bold","--beam-SelectNonprofit-details-nonprofitName-fontStyle":"inherit","--beam-SelectNonprofit-details-fundingProgress-marginTop":"10px",...h("--beam-SelectNonprofit-details-fundingProgressLabel",{fontSize:"0.85em"}),...be,...te,"--beam-SelectNonprofit-promo-block-header-justifyContent":"initial","--beam-SelectNonprofit-notification-blip-top":"4px","--beam-SelectNonprofit-notification-blip-left":"50%","--beam-SelectNonprofit-display-notification-blip":"true","--beam-SelectNonprofit-enable-inline-header":"false"},t=this.nonprofitListDataController?.data?.config?.web?.theme||{},n={...e,...t};return Object.assign(Object.create({toCSS(){return G(this)}}),n)}render(){const{selectedNonprofitId:e}=this,{data:t,loading:n}=this.nonprofitListDataController;if(n&&!t)return ne();if(this.nonprofitListDataController.error)return this.debug?z({error:this.nonprofitListDataController.error}):"";if(this.selectionDataController.error&&this.debug)return z({error:this.selectionDataController.error});const o=t?.nonprofits||[],i=o.find(a=>a.nonprofit.id===e)||null,s=!!t?.config?.web?.promo,c=o.some(a=>!a.promo||!a.promo.isActive),b=a=>this.cssVariables[a],W=b("--beam-SelectNonprofit-display-notification-blip")==="true",y=b("--beam-SelectNonprofit-title-textAlign")==="center",u=b("--beam-SelectNonprofit-enable-inline-header")==="true"||this.isMobile,I=d`<h3
|
|
22
|
+
class=${v({"title-block":!0,"d-none":!0,"d-block":!u})}
|
|
23
|
+
part="title"
|
|
24
|
+
id="beam-SelectNonprofit-title"
|
|
25
|
+
>
|
|
22
26
|
${m(this.configLang,t?.config?.web?.title||"")||g[this.configLang].ctaTitle()}
|
|
23
|
-
</h3>`,
|
|
24
|
-
|
|
25
|
-
style="${this.isMobile?"display: flex":""}"
|
|
26
|
-
>
|
|
27
|
-
${x}
|
|
27
|
+
</h3>`,U=()=>{const a=v({"block-header-promo-pill-container":!u&&!y,"block-header-promo-pill-container-responsive":u&&!y,"block-header-promo-pill-center-block-container-responsive":!u&&y}),x=D({display:u?"flex":void 0});return s?d`<div class=${a} style=${x}>
|
|
28
|
+
${I}
|
|
28
29
|
<beam-promo-info-pill .promo=${t?.config?.web?.promo}></beam-promo-info-pill>
|
|
29
|
-
</div>`:
|
|
30
|
-
<style>
|
|
31
|
-
:host {
|
|
32
|
-
${this.cssVariables.toCSS()}
|
|
33
|
-
}
|
|
34
|
-
</style>
|
|
30
|
+
</div>`:I},R=()=>d`
|
|
35
31
|
<div part="heading">
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
${m(this.configLang,t?.config?.web?.promoDescriptionPrefix||"")||g[this.configLang].ctaPromoPrefixMessage()}
|
|
41
|
-
</span>
|
|
42
|
-
<span>
|
|
43
|
-
${m(this.configLang,t?.config?.web?.promoDescription||"")||g[this.configLang].ctaPromoMessage()}
|
|
44
|
-
</span>`:d`<span>
|
|
45
|
-
${m(this.configLang,t?.config?.web?.description||"")||g[this.configLang].ctaMessage()}
|
|
46
|
-
</span>`}
|
|
47
|
-
</span>
|
|
48
|
-
<div class="d-lg-none header-inline">
|
|
49
|
-
<span class="title-inline" part="title">
|
|
50
|
-
${(m(this.configLang,t?.config?.web?.title||"")||g[this.configLang].ctaTitle())+g[this.configLang].inlineSeparator()}
|
|
51
|
-
</span>
|
|
52
|
-
<span class="description-inline" part="description">
|
|
53
|
-
${a?d`<span style="font-weight:bold">
|
|
32
|
+
${U()}
|
|
33
|
+
<p class="description" part="description">
|
|
34
|
+
<span class=${v({"d-none":!0,"d-inline":!u})}>
|
|
35
|
+
${s?d`<span style="font-weight:bold">
|
|
54
36
|
${m(this.configLang,t?.config?.web?.promoDescriptionPrefix||"")||g[this.configLang].ctaPromoPrefixMessage()}
|
|
55
37
|
</span>
|
|
56
38
|
<span>
|
|
57
39
|
${m(this.configLang,t?.config?.web?.promoDescription||"")||g[this.configLang].ctaPromoMessage()}
|
|
58
|
-
</span>`:d`<span
|
|
59
|
-
|
|
40
|
+
</span>`:d`<span>
|
|
41
|
+
${m(this.configLang,t?.config?.web?.description||"")||g[this.configLang].ctaMessage()}
|
|
60
42
|
</span>`}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
43
|
+
</span>
|
|
44
|
+
<div class=${v({"d-none":!u,"header-inline":!0})}>
|
|
45
|
+
<span class="title-inline" part="title">
|
|
46
|
+
${(m(this.configLang,t?.config?.web?.title||"")||g[this.configLang].ctaTitle())+g[this.configLang].inlineSeparator()}
|
|
47
|
+
</span>
|
|
48
|
+
<span class="description-inline" part="description">
|
|
49
|
+
${s?d`<span style="font-weight:bold">
|
|
50
|
+
${m(this.configLang,t?.config?.web?.promoDescriptionPrefix||"")||g[this.configLang].ctaPromoPrefixMessage()}
|
|
51
|
+
</span>
|
|
52
|
+
<span>
|
|
53
|
+
${m(this.configLang,t?.config?.web?.promoDescription||"")||g[this.configLang].ctaPromoMessage()}
|
|
54
|
+
</span>`:d`<span
|
|
55
|
+
>${m(this.configLang,t?.config?.web?.description||"")||g[this.configLang].ctaMessage()}
|
|
56
|
+
</span>`}
|
|
57
|
+
</div>
|
|
58
|
+
</p>
|
|
59
|
+
</div>`;return d`
|
|
60
|
+
<style>
|
|
61
|
+
:host {
|
|
62
|
+
${this.cssVariables.toCSS()}
|
|
63
|
+
}
|
|
64
|
+
</style>
|
|
65
|
+
${R()}
|
|
64
66
|
<div
|
|
65
67
|
class="options"
|
|
66
68
|
part="options"
|
|
@@ -68,21 +70,21 @@ import{h as w,f as I,y as d,g as f,t as P,q as W,m as U,k as R}from"../chunks/li
|
|
|
68
70
|
aria-labelledby="beam-SelectNonprofit-title"
|
|
69
71
|
style="display: flex; gap: var(--beam-SelectNonprofit-options-gap); margin: 10px 0 0 0;"
|
|
70
72
|
>
|
|
71
|
-
${
|
|
73
|
+
${H(o,a=>a.nonprofit.id,({nonprofit:a,promo:x},w)=>{const N=e===a.id,O=N||i==null&&w===0,j=x?.isActive&&t?.config.web.promo&&c&&W;return d`
|
|
72
74
|
<div
|
|
73
75
|
class="option"
|
|
74
76
|
part="option"
|
|
75
77
|
role="radio"
|
|
76
|
-
tabindex="${
|
|
77
|
-
data-value=${
|
|
78
|
-
aria-checked=${
|
|
79
|
-
@click=${this.makeHandleSelect(
|
|
80
|
-
@keydown=${this.makeHandleSelect(
|
|
81
|
-
aria-label="${m(this.configLang,
|
|
82
|
-
style="${
|
|
78
|
+
tabindex="${O?0:-1}"
|
|
79
|
+
data-value=${a.id}
|
|
80
|
+
aria-checked=${N}
|
|
81
|
+
@click=${this.makeHandleSelect(a.id,w,o)}
|
|
82
|
+
@keydown=${this.makeHandleSelect(a.id,w,o)}
|
|
83
|
+
aria-label="${m(this.configLang,a.cause||"")}"
|
|
84
|
+
style="${D({cursor:"pointer",flex:"1",textAlign:"center",lineHeight:"1",marginTop:"var(--beam-SelectNonprofit-options-marginTop, 0px)",padding:"var(--beam-SelectNonprofit-options-padding, 10px)",borderWidth:"var(--beam-SelectNonprofit-options-borderWidth, 1px)",borderStyle:"solid",position:"relative",borderRadius:"var(--beam-SelectNonprofit-options-borderRadius, 0)",borderColor:N?a.causeColor||"var(--beam-SelectNonprofit-options--selected-borderColor, currentColor)":"var(--beam-SelectNonprofit-options-borderColor, currentColor)",backgroundColor:N?a.causeColor||"var(--beam-SelectNonprofit-options--selected-backgroundColor, currentColor)":"var(--beam-SelectNonprofit-options-backgroundColor, transparent)"})}"
|
|
83
85
|
>
|
|
84
86
|
<img
|
|
85
|
-
src="${
|
|
87
|
+
src="${N?a.causeIconSelectedUrl:a.causeIconUrl}"
|
|
86
88
|
alt=""
|
|
87
89
|
role="presentation"
|
|
88
90
|
style="
|
|
@@ -91,62 +93,60 @@ import{h as w,f as I,y as d,g as f,t as P,q as W,m as U,k as R}from"../chunks/li
|
|
|
91
93
|
vertical-align: -webkit-baseline-middle;
|
|
92
94
|
"
|
|
93
95
|
/>
|
|
94
|
-
${
|
|
96
|
+
${j?d`<beam-notification-blip></beam-notification-blip>`:d``}
|
|
95
97
|
</div>
|
|
96
98
|
`})}
|
|
97
99
|
</div>
|
|
98
100
|
${i!=null?d`
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
<div
|
|
102
|
+
class="details"
|
|
103
|
+
part="details"
|
|
104
|
+
style="
|
|
103
105
|
border: 1px solid var(--beam-SelectNonprofit-details-borderColor);
|
|
104
106
|
border-radius: var(--beam-SelectNonprofit-details-borderRadius);
|
|
105
107
|
background-color: var(--beam-SelectNonprofit-details-backgroundColor);
|
|
106
108
|
padding: var(--beam-SelectNonprofit-details-padding);
|
|
107
109
|
margin-top: var(--beam-SelectNonprofit-details-marginTop);
|
|
108
110
|
"
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
aria-label="Funding information for selected nonprofit ${i.nonprofit?.name}. Powered by Beam"
|
|
112
|
+
>
|
|
113
|
+
<div style="display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap-reverse">
|
|
114
|
+
<span
|
|
115
|
+
class="details-cause"
|
|
116
|
+
style="flex: 0 1; white-space: nowrap; ${S("--beam-SelectNonprofit-details-cause")}"
|
|
113
117
|
>
|
|
118
|
+
${i?.promo?.isActive&&c?t?.config.web.promo?.["promo-cause-alt-text"]||i.nonprofit.cause:m(this.configLang,i.nonprofit.cause||"")}
|
|
119
|
+
</span>
|
|
120
|
+
<div aria-hidden="true">
|
|
114
121
|
<span
|
|
115
|
-
class="details-
|
|
116
|
-
|
|
122
|
+
class="details-beamAttribution"
|
|
123
|
+
aria-hidden="true"
|
|
124
|
+
style="flex: 0 1; white-space: nowrap; ${S("--beam-SelectNonprofit-details-beamAttribution")}"
|
|
117
125
|
>
|
|
118
|
-
${
|
|
126
|
+
${g[this.configLang].beamAttribution()}
|
|
119
127
|
</span>
|
|
120
|
-
<div aria-hidden="true">
|
|
121
|
-
<span
|
|
122
|
-
class="details-beamAttribution"
|
|
123
|
-
aria-hidden="true"
|
|
124
|
-
style="flex: 0 1; white-space: nowrap; ${b("--beam-SelectNonprofit-details-beamAttribution")}"
|
|
125
|
-
>
|
|
126
|
-
${g[this.configLang].beamAttribution()}
|
|
127
|
-
</span>
|
|
128
|
-
</div>
|
|
129
128
|
</div>
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
129
|
+
</div>
|
|
130
|
+
<p class="details-impactDescription">
|
|
131
|
+
${q(m(this.configLang,i.impact.description||""))}
|
|
132
|
+
</p>
|
|
133
|
+
<div
|
|
134
|
+
style="display: flex; margin-top: var(--beam-SelectNonprofit-details-fundingProgress-marginTop); align-items: center;"
|
|
135
|
+
>
|
|
136
|
+
<beam-progress-bar
|
|
137
|
+
value="${i.impact.goalProgressPercentage}"
|
|
138
|
+
style="flex: 1 0;"
|
|
139
|
+
></beam-progress-bar>
|
|
140
|
+
<span
|
|
141
|
+
class="details-fundingProgressLabel"
|
|
142
|
+
style="${S("--beam-SelectNonprofit-details-fundingProgressLabel")} white-space: nowrap; text-align: right; flex: 0 1; margin-left: 15px;"
|
|
135
143
|
>
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
style="flex: 1 0;"
|
|
139
|
-
></beam-progress-bar>
|
|
140
|
-
<span
|
|
141
|
-
class="details-fundingProgressLabel"
|
|
142
|
-
style="${b("--beam-SelectNonprofit-details-fundingProgressLabel")} white-space: nowrap; text-align: right; flex: 0 1; margin-left: 15px;"
|
|
143
|
-
>
|
|
144
|
-
${m(this.configLang,i.impact.goalProgressText)}
|
|
145
|
-
</span>
|
|
146
|
-
</div>
|
|
144
|
+
${m(this.configLang,i.impact.goalProgressText)}
|
|
145
|
+
</span>
|
|
147
146
|
</div>
|
|
148
|
-
|
|
149
|
-
|
|
147
|
+
</div>
|
|
148
|
+
`:""}
|
|
149
|
+
`}}l.tagName="beam-select-nonprofit",l.styles=[oe,ge,$`
|
|
150
150
|
:host {
|
|
151
151
|
display: block;
|
|
152
152
|
max-width: var(--beam-SelectNonprofit-maxWidth, 800px);
|
|
@@ -159,7 +159,7 @@ import{h as w,f as I,y as d,g as f,t as P,q as W,m as U,k as R}from"../chunks/li
|
|
|
159
159
|
}
|
|
160
160
|
|
|
161
161
|
.details-impactDescription {
|
|
162
|
-
${
|
|
162
|
+
${S("--beam-SelectNonprofit-details-impactDescription")}
|
|
163
163
|
}
|
|
164
164
|
|
|
165
165
|
.details-impactDescription .nonprofitName {
|
|
@@ -171,7 +171,7 @@ import{h as w,f as I,y as d,g as f,t as P,q as W,m as U,k as R}from"../chunks/li
|
|
|
171
171
|
|
|
172
172
|
.title-block {
|
|
173
173
|
margin-right: var(--beam-SelectNonprofit-title-block-margin-right);
|
|
174
|
-
${
|
|
174
|
+
${S("--beam-SelectNonprofit-title")}
|
|
175
175
|
text-align: var(--beam-SelectNonprofit-title-textAlign);
|
|
176
176
|
}
|
|
177
177
|
|
|
@@ -196,7 +196,7 @@ import{h as w,f as I,y as d,g as f,t as P,q as W,m as U,k as R}from"../chunks/li
|
|
|
196
196
|
}
|
|
197
197
|
|
|
198
198
|
.description {
|
|
199
|
-
${
|
|
199
|
+
${S("--beam-SelectNonprofit-description")}
|
|
200
200
|
text-align: var(--beam-SelectNonprofit-description-textAlign);
|
|
201
201
|
}
|
|
202
202
|
|
|
@@ -232,5 +232,5 @@ import{h as w,f as I,y as d,g as f,t as P,q as W,m as U,k as R}from"../chunks/li
|
|
|
232
232
|
top: var(--beam-SelectNonprofit-notification-blip-top);
|
|
233
233
|
left: var(--beam-SelectNonprofit-notification-blip-left);
|
|
234
234
|
}
|
|
235
|
-
`],p([f({type:String})],
|
|
235
|
+
`],p([f({type:String})],l.prototype,"baseUrl"),p([f({type:String})],l.prototype,"apiKey"),p([f({type:Number,reflect:!0})],l.prototype,"storeId"),p([f({type:String})],l.prototype,"countryCode"),p([f({type:String})],l.prototype,"postalCode"),p([f({attribute:!1,hasChanged:(r,e)=>!V(r,e)})],l.prototype,"cart"),p([f({type:Number,reflect:!0})],l.prototype,"selectedNonprofitId"),p([f({type:String})],l.prototype,"lang"),p([f({type:Boolean})],l.prototype,"debug"),p([f({type:Boolean})],l.prototype,"draftConfig"),p([f({type:String})],l.prototype,"promoCodes"),p([f({type:String})],l.prototype,"domain"),p([L()],l.prototype,"isMobile"),p([L()],l.prototype,"pluginPromoCodes"),ie(l);export{l as BeamSelectNonprofit};
|
|
236
236
|
//# sourceMappingURL=select-nonprofit.esm.js.map
|