@beamimpact/web-sdk 1.29.0-beta.3 → 1.29.0-beta.4
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-U6xmvwbS.esm.js → _share-dialog-dependencies-QQSOJjCu.esm.js} +2 -2
- package/dist/chunks/_share-dialog-dependencies-QQSOJjCu.esm.js.map +1 -0
- package/dist/chunks/{_share-dialog-dependencies-atazwFLD.esm.js → _share-dialog-dependencies-sB_XJxLm.esm.js} +2 -2
- package/dist/chunks/_share-dialog-dependencies-sB_XJxLm.esm.js.map +1 -0
- package/dist/chunks/index-DOJfViqE.esm.js +2 -0
- package/dist/chunks/index-DOJfViqE.esm.js.map +1 -0
- package/dist/chunks/index-IOIrB7Pn.esm.js +2 -0
- package/dist/chunks/index-IOIrB7Pn.esm.js.map +1 -0
- package/dist/chunks/index-Q0I5ntVH.esm.js +2 -0
- package/dist/chunks/index-Q0I5ntVH.esm.js.map +1 -0
- package/dist/chunks/index-T_isog9X.esm.js +2 -0
- package/dist/chunks/index-T_isog9X.esm.js.map +1 -0
- package/dist/chunks/index-u2cQPbYh.esm.js +2 -0
- package/dist/chunks/index-u2cQPbYh.esm.js.map +1 -0
- package/dist/chunks/localize-e-mss8ya.esm.js.map +1 -1
- package/dist/chunks/{order-page-zaTU61Qf.esm.js → order-page-3XgI-V6M.esm.js} +2 -2
- package/dist/chunks/{order-page-zaTU61Qf.esm.js.map → order-page-3XgI-V6M.esm.js.map} +1 -1
- package/dist/chunks/{order-page-XgvorZM6.esm.js → order-page-GfUnTiJo.esm.js} +2 -2
- package/dist/chunks/{order-page-XgvorZM6.esm.js.map → order-page-GfUnTiJo.esm.js.map} +1 -1
- package/dist/chunks/{routes-gjAehped.esm.js → routes-wndAQJwE.esm.js} +2 -2
- package/dist/chunks/{routes-gjAehped.esm.js.map → routes-wndAQJwE.esm.js.map} +1 -1
- package/dist/chunks/{update-cart-LUZkuQL3.esm.js → update-cart-leGTC6ce.esm.js} +2 -2
- package/dist/chunks/{update-cart-LUZkuQL3.esm.js.map → update-cart-leGTC6ce.esm.js.map} +1 -1
- package/dist/components/community-impact.d.ts +1 -1
- package/dist/components/community-impact.esm.js +2 -2
- package/dist/components/community-impact.esm.js.map +1 -1
- package/dist/components/community-impact.js +2 -2
- package/dist/components/community-impact.js.map +1 -1
- package/dist/components/cumulative-impact.d.ts +1 -2
- package/dist/components/cumulative-impact.esm.js +1 -1
- package/dist/components/cumulative-impact.esm.js.map +1 -1
- package/dist/components/cumulative-impact.js +1 -1
- package/dist/components/cumulative-impact.js.map +1 -1
- package/dist/components/impact-overview.d.ts +1 -2
- package/dist/components/impact-overview.esm.js +3 -3
- package/dist/components/impact-overview.esm.js.map +1 -1
- package/dist/components/impact-overview.js +3 -3
- package/dist/components/impact-overview.js.map +1 -1
- package/dist/components/index.esm.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/post-purchase.d.ts +2 -2
- package/dist/components/post-purchase.esm.js +3 -3
- package/dist/components/post-purchase.esm.js.map +1 -1
- package/dist/components/post-purchase.js +3 -3
- package/dist/components/post-purchase.js.map +1 -1
- package/dist/components/redeem-transaction.d.ts +1 -1
- package/dist/components/redeem-transaction.esm.js +2 -2
- package/dist/components/redeem-transaction.esm.js.map +1 -1
- package/dist/components/redeem-transaction.js +2 -2
- package/dist/components/redeem-transaction.js.map +1 -1
- package/dist/components/select-nonprofit.d.ts +2 -2
- package/dist/components/select-nonprofit.esm.js +1 -1
- package/dist/components/select-nonprofit.esm.js.map +1 -1
- package/dist/components/select-nonprofit.js +1 -1
- package/dist/components/select-nonprofit.js.map +1 -1
- package/dist/components/shopify.esm.js +1 -1
- package/dist/components/shopify.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/integrations/cart.esm.js +1 -1
- package/dist/integrations/cart.js +1 -1
- package/dist/integrations/index.esm.js +1 -1
- package/dist/integrations/index.js +1 -1
- package/dist/integrations/shopify.esm.js +1 -1
- package/dist/integrations/shopify.js +1 -1
- package/dist/react/community-impact.esm.js +1 -1
- package/dist/react/community-impact.js +1 -1
- package/dist/react/cumulative-impact.esm.js +1 -1
- package/dist/react/cumulative-impact.js +1 -1
- package/dist/react/impact-overview.esm.js +1 -1
- package/dist/react/impact-overview.js +1 -1
- package/dist/react/index.esm.js +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/post-purchase.esm.js +1 -1
- package/dist/react/post-purchase.js +1 -1
- package/dist/react/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/package.json +1 -1
- package/dist/chunks/_share-dialog-dependencies-U6xmvwbS.esm.js.map +0 -1
- package/dist/chunks/_share-dialog-dependencies-atazwFLD.esm.js.map +0 -1
- package/dist/chunks/index-3t5Lk3no.esm.js +0 -2
- package/dist/chunks/index-3t5Lk3no.esm.js.map +0 -1
- package/dist/chunks/index-88dvwYfV.esm.js +0 -2
- package/dist/chunks/index-88dvwYfV.esm.js.map +0 -1
- package/dist/chunks/index-EtzJh88T.esm.js +0 -2
- package/dist/chunks/index-EtzJh88T.esm.js.map +0 -1
- package/dist/chunks/index-Win_94pf.esm.js +0 -2
- package/dist/chunks/index-Win_94pf.esm.js.map +0 -1
- package/dist/chunks/index-WxO-fsYo.esm.js +0 -2
- package/dist/chunks/index-WxO-fsYo.esm.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impact-overview.js","sources":["../../src/shared/feature-detection.ts","../../src/shared/files.ts","../../src/shared/shoelace-components.ts","../../src/shared/sync-element-heights.ts","../../src/components/impact-overview/strings.ts","../../src/components/impact-overview/index.ts"],"sourcesContent":["export function isMobile() {\n return /Android|iPhone/i.test(navigator.userAgent);\n}\n\nexport function hasSystemShare() {\n return !!navigator.share;\n}\n","export const urlToFile = async (url: string) => {\n return fetch(url).then(async (r) => {\n const u = new URL(url);\n const blob = await r.blob();\n return new File([blob], u.pathname, { type: blob.type });\n });\n};\n","/**\n * Shoelace is a utility library for web components like icons, dialogs, buttons, etc.\n * https://shoelace.style/\n */\n\nimport { setBasePath } from \"@shoelace-style/shoelace/dist/utilities/base-path.js\";\nimport { registerIconLibrary } from \"@shoelace-style/shoelace/dist/utilities/icon-library.js\";\n\nconst selfUrl = import.meta.url; // URL of this JS module\n\nlet SHOELACE_BASE = \"\";\nlet ICON_BASE = \"\";\nlet CDN_BASE = \"\";\n// If served from the CDN, we can load additional modules via a relative path to the current one\n// If not, ie, if we are loading via a 3rd-party webpack config / file:/// URL, we fall back to the Beam CDN\nif (selfUrl.startsWith(\"http\")) {\n CDN_BASE = selfUrl.split(\"/dist/\")[0]; // localhost:port or subdomain.beamimpact.com\n SHOELACE_BASE = `${CDN_BASE}/dist/shoelace`;\n ICON_BASE = `${CDN_BASE}/dist/lucide-static`;\n} else {\n CDN_BASE = \"https://production-beam-widgets.beamimpact.com\";\n SHOELACE_BASE = `${CDN_BASE}/lib/shoelace/v2.11.2`;\n ICON_BASE = `${CDN_BASE}/lib/lucide-static/v0.292.0`;\n}\n\nregisterIconLibrary(\"lucide\", {\n resolver: (name: string) => `${ICON_BASE}/icons/${name}.svg`,\n});\n\nsetBasePath(SHOELACE_BASE);\n\nif (document && !document.querySelector(\"link[data-beam-impact]\")) {\n const stylesheet = document.createElement(\"link\");\n stylesheet.href = `${SHOELACE_BASE}/themes/light.css`;\n stylesheet.rel = \"stylesheet\";\n stylesheet.setAttribute(\"data-beam-impact\", \"true\");\n document.head.appendChild(stylesheet);\n}\n","import { isAllHtmlElements } from \"./is-all-html-elements\";\n\n/**\n * Synchronize heights of elements\n * @param {Array<HTMLElement|null>} elements - Elements to synchronize\n * @param {'contentLength' | 'currentHeight'} [options.source='contentLength'] -\n * Method used to get the height value to sync across elements. `contentLength`\n * (innerText.length) is reliable for pure text content when responding to\n * window resizing. Otherwise, currentHeight can be used to sync the tallest\n * element's height to all the other elements. Note that this works poorly\n * unless content is allowed to reflow with explicit height attributes removed\n * between synchronization calls.\n */\nexport const syncElementHeights = (\n elements: Array<HTMLElement | null> | NodeList,\n {\n source = \"contentLength\",\n }: {\n source?: \"contentLength\" | \"currentHeight\";\n } = {}\n) => {\n const els = elements instanceof NodeList ? Array.from(elements) : elements;\n\n if (els.length === 0 || !isAllHtmlElements(els)) {\n return;\n }\n\n const heightSource =\n source === \"contentLength\"\n ? els.sort((a, b) => {\n return b.innerText.length - a.innerText.length;\n })[0]\n : els.sort((a, b) => {\n return b.clientHeight - a.clientHeight;\n })[0];\n\n const syncedHeight = heightSource?.clientHeight || 0;\n\n for (const el of els) {\n if (el.clientHeight !== syncedHeight) {\n el.style[\"height\"] = syncedHeight + \"px\";\n }\n }\n};\n","export const strings = {\n en: {\n descriptionTitle: ({ nonprofitName = \"a nonprofit\" }) => `You just made an impact for ${nonprofitName}`,\n descriptionSubtitle: ({ brandName = \"\" }) => `Check out the impact your ${brandName} purchase made below`,\n learnMore: ({ name = \"\" }) => `Learn more about ${name}`,\n seeAllImpact: ({ brandName = \"\" }) => `See all of the impact by the ${brandName} community`,\n percentRaised: ({ percent = 0 }) => `${percent}%`,\n yourImpactTitle: () => `Your Impact`,\n communityImpactTitle: ({ brandName = \"\" }) => `The ${brandName} Community's Impact`,\n // share modal\n impactShareButton: () => `Share to Grow Our Impact`,\n impactShareText: ({ brandName = \"\" }) =>\n `Help ${brandName} reach their giving goal by sharing this cause on social media`,\n impactShareTitle: () => `Share on Social Media`,\n impactShareCopy: () => `Copy`,\n impactShareDownload: () => `Download`,\n impactShareClose: () => `Close`,\n },\n fr: {\n descriptionTitle: ({ nonprofitName = \"\" }) => `Vous avez eu un impact positif sur ${nonprofitName}`,\n descriptionSubtitle: ({ brandName = \"\" }) =>\n `Découvrez quel est l'impact de votre achat chez ${brandName} ci-dessous.`,\n learnMore: ({ name = \"\" }) => `En savoir plus sur ${name}`,\n seeAllImpact: ({ brandName = \"\" }) => `Voir toutes les contributions de la communauté de ${brandName}`,\n percentRaised: ({ percent = 0 }) => `${percent}%`,\n yourImpactTitle: () => `Votre contribution personnelle`,\n communityImpactTitle: ({ brandName = \"\" }) => `La contribution de la communauté de ${brandName}`,\n // share modal\n impactShareButton: () => `Partagez pour augmentez notre cause`,\n impactShareText: ({ brandName = \"\" }) =>\n `Aidez ${brandName} a atteindre leur objectif en partageant cette cause sur votre réseaux sociaux`,\n impactShareTitle: () => `Partager sur votre réseaux sociaux`,\n impactShareCopy: () => `Copier`,\n impactShareDownload: () => `Télécharger`,\n impactShareClose: () => `Fermer`,\n },\n de: {\n descriptionTitle: ({ nonprofitName = \"\" }) => `Du hast soeben einen Beitrag geleistet für ${nonprofitName}`,\n descriptionSubtitle: ({ brandName = \"\" }) =>\n `Erfahre mehr über den Beitrag, den du mit deinem ${brandName} Kauf geleistet hast`,\n learnMore: ({ name = \"\" }) => `Mehr über ${name} erfahren`,\n seeAllImpact: ({ brandName = \"\" }) =>\n `Informiere dich über den bisher geleisteten Beitrag der ${brandName} community`,\n percentRaised: ({ percent = 0 }) => `${percent}%`,\n yourImpactTitle: () => `Dein Beitrag`,\n communityImpactTitle: ({ brandName = \"\" }) => `Der Beitrag der ${brandName} community`,\n // share modal\n impactShareButton: () => `Teil, um unserem Beitrag zu erhöhen`,\n impactShareText: ({ brandName = \"\" }) => `Hilf ${brandName} ihre Spendenziel zu erreichen`,\n impactShareTitle: () => `In den sozialen Medien teilen`,\n impactShareCopy: () => `Kopieren`,\n impactShareDownload: () => `Herunterladen`,\n impactShareClose: () => `Schließen`,\n },\n es: {\n descriptionTitle: ({ nonprofitName = \"\" }) => `Acabas de contribuir con ${nonprofitName}`,\n descriptionSubtitle: ({ brandName = \"\" }) =>\n `Comprueba la contribución que has hecho con tu compra ${brandName} a continuación`,\n learnMore: ({ name = \"\" }) => `Saber más de ${name}`,\n seeAllImpact: ({ brandName = \"\" }) => `Mira lo que ha conseguido la comunidad ${brandName}`,\n percentRaised: ({ percent = 0 }) => `${percent}%`,\n yourImpactTitle: () => \"Tu contribución\",\n communityImpactTitle: ({ brandName = \"\" }) => `Tu contribución con la comunidad ${brandName}`,\n // share modal\n impactShareButton: () => \"Comparte para aumentar nuestro impacto\",\n impactShareText: ({ brandName = \"\" }) =>\n `Comparte en las redes sociales para ayudar a ${brandName} a alcanzar su objetivo.`,\n impactShareTitle: () => \"Compartir en redes sociales\",\n impactShareCopy: () => \"Copiar\",\n impactShareDownload: () => \"Descargar\",\n impactShareClose: () => \"Cerrar\",\n },\n it: {\n descriptionTitle: ({ nonprofitName = \"\" }) => `Hai appena fatto la differenza per ${nonprofitName}`,\n descriptionSubtitle: ({ brandName = \"\" }) => `Guarda qui sotto l'impatto del tuo acquisto ${brandName}`,\n learnMore: ({ name = \"\" }) => `Scopri di più su ${name}`,\n seeAllImpact: ({ brandName = \"\" }) => `Guarda come la comunità di ${brandName} fa la differenza`,\n percentRaised: ({ percent = 0 }) => `${percent}%`,\n yourImpactTitle: () => `Il tuo impatto`,\n communityImpactTitle: ({ brandName = \"\" }) => `L’impatto della comunità di ${brandName} `,\n // share modal\n impactShareButton: () => \"Condividi, aiutaci a fare la differenza\",\n impactShareText: ({ brandName = \"\" }) =>\n `Aiuta ${brandName} a raggiungere il suo obiettivo di donazione condividendo questa causa sui social media.`,\n impactShareTitle: () => \"Condividi, aiutaci a fare la differenza\",\n impactShareCopy: () => \"Copia\",\n impactShareDownload: () => \"Scarica\",\n impactShareClose: () => \"Chiudi\",\n },\n pl: {\n descriptionTitle: ({ nonprofitName = \"\" }) => `Właśnie wsparłaś_eś ${nonprofitName}!`,\n descriptionSubtitle: ({ brandName = \"\" }) =>\n `Sprawdź niżej, jakiego wsparcia udzieliłaś_eś kupując w ${brandName} `,\n learnMore: ({ name = \"\" }) => `Dowiedz się więcej o ${name}`,\n seeAllImpact: ({ brandName = \"\" }) => `Zobacz, ile dobrego zrobiła do tej pory społeczność ${brandName}`,\n percentRaised: ({ percent = 0 }) => `${percent}%`,\n yourImpactTitle: () => `Twoje wsparcie`,\n communityImpactTitle: ({ brandName = \"\" }) => `Wsparcie udzielone przez społeczność ${brandName}`,\n // share modal\n impactShareButton: () => `Udostępnij, by szerzyć naszą misję`,\n impactShareText: ({ brandName = \"\" }) =>\n `Pomóż ${brandName} osiągnąć cel i podziel się tą inicjatywą na swoim profilu`,\n impactShareTitle: () => `Udostępnij na swoim profilu`,\n impactShareCopy: () => `Kopiuj`,\n impactShareDownload: () => `Pobierz`,\n impactShareClose: () => `Zamknij`,\n },\n};\n","import { css, html, LitElement, PropertyValues, render } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { queryAll } from \"lit/decorators/query-all.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport debounce from \"lodash-es/debounce\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES } from \"../../api-sdk/constants\";\nimport { LANGUAGES, TUrl } from \"../../api-sdk/types\";\nimport { getImpact } from \"../../api-sdk/v3/routes\";\nimport { BeamError, MissingConfig } from \"../../shared/beam-errors\";\nimport \"../../shared/components/progress-bar\";\nimport { progressBarConfigDefaults } from \"../../shared/components/progress-bar\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { isMobile } from \"../../shared/feature-detection\";\nimport { urlToFile } from \"../../shared/files\";\nimport { _cssVariableMap } from \"../../shared/fragments/css-variable-map\";\nimport { defineCustomText, useCustomText } from \"../../shared/fragments/custom-text\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { _loading } from \"../../shared/fragments/loading-template\";\nimport { localizeUserString } from \"../../shared/localize\";\nimport { logger } from \"../../shared/logger\";\nimport \"../../shared/shoelace-components\";\nimport { syncElementHeights } from \"../../shared/sync-element-heights\";\nimport { TId, TNumericId } from \"../../shared/types\";\nimport \"../beam-partner-logos\";\nimport { partnerLogosConfigDefaults } from \"../beam-partner-logos\";\nimport { cssResponsiveUtils } from \"../../shared/responsive\";\nimport { strings } from \"./strings\";\n\ntype RequiredConfig = {\n apiKey: string;\n chainId: TNumericId;\n nonprofitId: TNumericId;\n userId: TId;\n};\n\nexport class BeamImpactOverview extends LitElement {\n static tagName = \"beam-impact-overview\";\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: String, reflect: true }) nonprofitId?: RequiredConfig[\"nonprofitId\"];\n\n @property({ type: String, reflect: true }) chainId?: RequiredConfig[\"chainId\"];\n\n @property({ type: String, reflect: true }) userId?: RequiredConfig[\"userId\"];\n\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n\n @property({ type: Boolean }) public debug = false;\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n getImpactData = async () => {\n if (!enforceConfig<RequiredConfig>([\"apiKey\", \"chainId\", \"userId\", \"nonprofitId\"], this)) throw new MissingConfig();\n const res = await getImpact({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n queryParams: {\n nonprofitId: this.nonprofitId,\n chainId: this.chainId,\n beamUserId: this.userId,\n personalImpactLimit: 1,\n communityImpactLimit: 1,\n widgetName: \"impact-overview\",\n version: \"1.0.0\",\n lang: this.configLang,\n },\n });\n\n return res;\n };\n\n private impactDataController = new AsyncController<typeof this.getImpactData>(this, this.getImpactData);\n\n @queryAll(\".impact-card-title\")\n impactTitleRefs!: HTMLElement[];\n\n @queryAll(\".impact-card-description\")\n impactDescriptionRefs!: HTMLElement[];\n\n @queryAll(\".impact-link\")\n impactLinkRefs!: HTMLElement[];\n\n async updated(): Promise<void> {\n this.resizeElements(); // Handle layout shifts immediately\n await this.handleFontLoad(this.resizeElements); // If content change triggered font load, resize again\n }\n\n protected willUpdate(changedProperties: PropertyValues) {\n // Reload nonprofit list on change of any of these props:\n // Also fires on first load as props go from undefined => value\n const requireNewDataProps = [\"chainId\", \"baseUrl\", \"storeId\", \"apiKey\", \"userId\", \"lang\"];\n for (const prop of requireNewDataProps) {\n if (changedProperties.has(prop)) {\n this.impactDataController.exec();\n break;\n }\n }\n }\n\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener(\"resize\", this.resizeElements);\n }\n\n disconnectedCallback() {\n window.removeEventListener(\"resize\", this.resizeElements);\n document.fonts.removeEventListener(\"loadingdone\", this.resizeElements);\n super.disconnectedCallback();\n }\n\n /**\n * Safari does not fire loading events on the document FontFaceSet, but it does implement the .ready Promise\n * Call this method to wait for font loads that may be triggered by content changes\n */\n async handleFontLoad<T = any>(callback: () => T | void) {\n if (document.fonts.status === \"loading\") {\n await document.fonts.ready.catch((e) => console.error(e));\n return callback();\n }\n }\n\n resizeElements = debounce(\n () => {\n syncElementHeights(this.impactTitleRefs);\n syncElementHeights(this.impactDescriptionRefs);\n syncElementHeights(this.impactLinkRefs);\n },\n 50,\n { maxWait: 50, leading: true }\n );\n\n renderCard({\n imageUrl,\n title,\n percentFunded,\n description,\n }: {\n imageUrl: TUrl;\n title: string;\n percentFunded: number;\n description: string;\n }) {\n return html`\n <div class=\"impact-card\" part=\"impact-card\">\n <img src=\"${imageUrl}\" alt=\"${title}\" class=\"impact-card-image\" />\n <div class=\"impact-card-content\" style=\"margin: 15px;\">\n <div class=\"impact-card-title\">${title}</div>\n <div class=\"impact-card-progress\" style=\"display: flex; align-items: center;\">\n <beam-progress-bar\n value=\"${percentFunded}\"\n style=\"flex: 1 0;\"\n class=\"impact-card-progressbar\"\n ></beam-progress-bar>\n <span class=\"impact-card-progressText\" style=\"flex: 0 1; margin-left: 10px; white-space: nowrap;\"\n >${strings[this.configLang].percentRaised({ percent: percentFunded })}</span\n >\n </div>\n <p class=\"impact-card-description\">${unsafeHTML(description)}</p>\n </div>\n </div>\n `;\n }\n\n handleShareClick = async () => {\n try {\n if (isMobile()) {\n await this.openSystemShareSheet();\n } else {\n await this.openShareDialog();\n }\n } catch (err) {\n logger.error(new BeamError(\"Error sharing impact\"));\n logger.error(err);\n }\n };\n\n openSystemShareSheet = async () => {\n const imageUrl = this.impactDataController.data?.personal[0]?.share?.imageUrl;\n\n if (!imageUrl) return;\n\n const file = await urlToFile(imageUrl);\n\n if (navigator.share) {\n await navigator.share({\n files: [file],\n });\n }\n };\n\n openShareDialog = async () => {\n const brandName = this.impactDataController.data?.chain.name;\n const imageUrl = this.impactDataController.data?.personal[0]?.share?.imageUrl;\n\n if (!imageUrl) return;\n\n interface SlDialogElement extends HTMLElement {\n show: () => void;\n hide: () => void;\n }\n\n const existingDialog = this.renderRoot.querySelector(\"sl-dialog\") as SlDialogElement;\n\n if (existingDialog) {\n existingDialog.show();\n return;\n }\n\n await import(\"./_share-dialog-dependencies.js\"); // Import libraries async to reduce bundle size if share feature is unused\n\n const modalRoot = this.renderRoot.querySelector(\"#modal-root\") as HTMLElement;\n\n const file = await urlToFile(imageUrl);\n\n const dataUrl = URL.createObjectURL(file);\n\n const onClickClose = () => {\n (this.renderRoot.querySelector(\"sl-dialog\") as SlDialogElement)?.hide();\n };\n\n const onClickCopy = () => {\n navigator.clipboard.write([new ClipboardItem({ \"image/png\": file })]).then(() => {\n setTimeout(onClickClose, 250);\n });\n };\n\n const onClickDownload = () => {\n setTimeout(onClickClose, 250);\n };\n\n render(\n html`\n <sl-dialog open label=\"${strings[this.configLang].impactShareTitle()}\" no-header class=\"share-dialog\">\n <h2 class=\"share-title\">${strings[this.configLang].impactShareTitle()}</h2>\n <p class=\"share-text\">${strings[this.configLang].impactShareText({ brandName })}</p>\n <img src=\"${imageUrl}\" alt=\"${strings[this.configLang].impactShareTitle()}\" class=\"share-image\" />\n <div class=\"share-actions\" style=\"display: flex; justify-content: space-evenly\">\n <div style=\"flex: 1; text-align: center\">\n <button class=\"plain-button button share-action-button\" @click=\"${onClickCopy}\">\n <sl-icon\n library=\"lucide\"\n name=\"copy\"\n label=\"${strings[this.configLang].impactShareCopy()}\"\n class=\"share-action-icon\"\n ></sl-icon>\n <div class=\"share-action-text\">${strings[this.configLang].impactShareCopy()}</div>\n </button>\n </div>\n <div style=\"flex: 1; text-align: center\">\n <a\n class=\"plain-button button share-action-button plain-link\"\n download=\"${strings[this.configLang].impactShareTitle()}\"\n href=\"${dataUrl}\"\n @click=\"${onClickDownload}\"\n >\n <sl-icon\n library=\"lucide\"\n name=\"download\"\n label=\"${strings[this.configLang].impactShareDownload()}\"\n class=\"share-action-icon\"\n ></sl-icon>\n <div class=\"share-action-text\">${strings[this.configLang].impactShareDownload()}</div>\n </a>\n </div>\n </div>\n <button class=\"plain-button button share-close\" @click=\"${onClickClose}\">\n ${strings[this.configLang].impactShareClose()}\n </button>\n </sl-dialog>\n `,\n modalRoot\n );\n };\n\n render() {\n const { data, loading, error } = this.impactDataController;\n if (loading) {\n return _loading();\n }\n if (error) {\n if (this.debug) {\n return _errorMessage({ error });\n }\n return \"\";\n }\n if (data == null) {\n if (this.debug) {\n return _errorMessage({ error: new Error(\"No data\") });\n }\n return \"\";\n }\n\n const showShare = this.cssVariables[\"--beam-ImpactOverview-share-button-display\"] !== \"none\";\n const showShareMobile =\n showShare && this.cssVariables[\"--beam-ImpactOverview-share-button-display-mobile\"] !== \"none\";\n const showShareDesktop =\n showShare && this.cssVariables[\"--beam-ImpactOverview-share-button-display-desktop\"] !== \"none\";\n const shareIcon = this.cssVariables[\"--beam-ImpactOverview-share-button-icon-name\"] || \"share-2\";\n\n let shareButtonVisibilityClass = \"d-none\";\n if (showShareMobile) {\n shareButtonVisibilityClass = showShareDesktop ? \"d-block\" : \"d-lg-none\";\n } else {\n shareButtonVisibilityClass = showShareDesktop ? \"d-none d-lg-block\" : \"d-none\";\n }\n\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n\n <div>\n <beam-partner-logos\n partnerLogoUrl=\"${data.chain.logoUrl}\"\n partnerName=\"${data.chain.name}\"\n part=\"logos\"\n ></beam-partner-logos>\n </div>\n\n <div class=\"description\">\n <div class=\"title\" part=\"title\">\n ${localizeUserString(this.configLang, data.config?.web?.title) ||\n strings[this.configLang].descriptionTitle({ nonprofitName: data.personal[0].nonprofit.name })}\n </div>\n <div class=\"subtitle\" part=\"subtitle\">\n ${localizeUserString(this.configLang, data.config?.web?.description) ||\n strings[this.configLang].descriptionSubtitle({ brandName: data.chain.name })}\n </div>\n </div>\n\n <div class=\"impact-cards\" style=\"display: flex; flex-wrap: wrap; gap: 15px; margin: 10px 0;\">\n <div class=\"impact your-impact\" style=\"flex: 1 1; display: inline-block; max-width: 100%; min-width: 200px;\">\n ${this.renderCard({\n imageUrl: data.personal[0]?.imageUrl || \"\",\n title: strings[this.configLang].yourImpactTitle(),\n percentFunded: data.personal[0]?.impact?.goalProgressPercentage || 0,\n description: localizeUserString(this.configLang, data.personal[0]?.impact?.description || \"\"),\n })}\n <p class=\"impact-link\" part=\"impact-link\">\n <a href=\"${data.personal[0].nonprofit?.website}\">\n ${strings[this.configLang].learnMore({\n name: data.personal[0].nonprofit?.name,\n })}<span class=\"impact-link-arrow\"> ›</span>\n </a>\n </p>\n </div>\n <div\n class=\"impact community-impact\"\n style=\"flex: 1 1; display: inline-block; max-width: 100%; min-width: 200px;\"\n >\n ${this.renderCard({\n imageUrl: data.community[0].imageUrl || \"\",\n title: strings[this.configLang].communityImpactTitle({ brandName: data.chain.name }),\n percentFunded: data.community[0].impact?.goalProgressPercentage || 0,\n description: localizeUserString(this.configLang, data.community[0].impact?.description || \"\"),\n })}\n <p class=\"impact-link\" part=\"impact-link\">\n <a href=\"${data.chain.communityImpactUrl || data.community[0].nonprofit.website}\">\n ${strings[this.configLang].seeAllImpact({\n brandName: data.chain.name,\n })}<span class=\"impact-link-arrow\"> ›</span>\n </a>\n </p>\n </div>\n </div>\n\n <div class=\"footer ${shareButtonVisibilityClass}\" part=\"social-share\">\n <button @click=\"${this.handleShareClick}\" class=\"share-button share-button-inline button icon-button\">\n <sl-icon\n name=\"${shareIcon}\"\n library=\"lucide\"\n label=\"${strings[this.configLang].impactShareButton()}\"\n class=\"share-button-icon\"\n ></sl-icon>\n <span class=\"share-button-text\">${strings[this.configLang].impactShareButton()}</span>\n </button>\n </div>\n\n <div id=\"modal-root\"></div>\n `;\n }\n\n public get cssVariables() {\n const defaults = {\n \"--beam-fontFamily\": \"inherit\",\n \"--beam-fontSize\": \"inherit\",\n \"--beam-textColor\": \"inherit\",\n \"--beam-backgroundColor\": \"inherit\",\n ...partnerLogosConfigDefaults,\n ...progressBarConfigDefaults,\n ...defineCustomText(\"--beam-ImpactOverview-title\", {\n fontSize: \"16px\",\n fontWeight: \"bold\",\n marginTop: \"10px\",\n }),\n ...defineCustomText(\"--beam-ImpactOverview-subtitle\", {\n marginTop: \"5px\",\n }),\n \"--beam-ImpactOverview-impactCards-maxWidth\": \"800px\",\n \"--beam-ImpactOverview-impactCard-backgroundColor\": \"inherit\",\n \"--beam-ImpactOverview-impactCard-foregroundColor\": \"currentColor\",\n \"--beam-ImpactOverview-impactCard-borderColor\": \"currentColor\",\n \"--beam-ImpactOverview-impactCard-borderRadius\": \"0px\",\n \"--beam-ImpactOverview-impactCard-marginTop\": \"10px\",\n ...defineCustomText(\"--beam-ImpactOverview-impactCard-title\", {\n fontSize: \"15px\",\n fontWeight: \"bold\",\n }),\n \"--beam-ImpactOverview-impactCard-progress-marginTop\": \"15px\",\n ...defineCustomText(\"--beam-ImpactOverview-impactCard-progressText\"),\n ...defineCustomText(\"--beam-ImpactOverview-impactCard-description\", {\n marginTop: \"10px\",\n }),\n \"--beam-ImpactOverview-impactCard-linkArrow-display\": \"inline\",\n \"--beam-ImpactOverview-impactCard-link-color\": \"inherit\",\n ...defineCustomText(\"--beam-ImpactOverview-impactCard-link\", {\n marginTop: \"10px\",\n }),\n \"--beam-ImpactOverview-share-button-display\": \"none\",\n \"--beam-ImpactOverview-share-button-display-mobile\": \"inherit\",\n \"--beam-ImpactOverview-share-button-display-desktop\": \"inherit\",\n \"--beam-ImpactOverview-share-button-textDecoration\": \"underline\",\n \"--beam-ImpactOverview-share-button-icon-size\": \"16px\",\n ...defineCustomText(\"--beam-ImpactOverview-share-button\", {\n fontSize: \"14px\",\n fontWeight: \"bold\",\n marginTop: \"12px\",\n }),\n \"--beam-ImpactOverview-share-button-backgroundColor\": \"#c2dcff\",\n \"--beam-ImpactOverview-share-button-color\": \"inherit\",\n \"--beam-ImpactOverview-share-button-borderRadius\": \"16px\",\n \"--beam-ImpactOverview-share-button-borderColor\": \"transparent\",\n \"--beam-ImpactOverview-share-button-borderWidth\": \"2px\",\n \"--beam-ImpactOverview-share-button-padding\": \"12px 18px 12px 16px\",\n \"--beam-ImpactOverview-share-button-width\": \"auto\",\n \"--beam-ImpactOverview-share-button-hover-color\": \"inherit\",\n \"--beam-ImpactOverview-share-button-hover-borderColor\": \"transparent\",\n \"--beam-ImpactOverview-share-button-hover-backgroundColor\": \"#c2dcff\",\n \"--beam-ImpactOverview-share-dialog-padding\": \"30px 60px\",\n ...defineCustomText(\"--beam-ImpactOverview-share-title\", {\n fontSize: \"30px\",\n fontWeight: \"bold\",\n }),\n \"--beam-ImpactOverview-share-button-icon-name\": \"share-2\",\n \"--beam-ImpactOverview-share-image-width\": \"200px\",\n \"--beam-ImpactOverview-share-image-borderRadius\": \"4px\",\n \"--beam-ImpactOverview-share-image-margin\": \"20px\",\n ...defineCustomText(\"--beam-ImpactOverview-share-text\", {\n fontSize: \"16px\",\n lineHeight: \"1.3\",\n marginTop: \"10px\",\n }),\n \"--beam-ImpactOverview-share-actions-margin\": \"30px 60px\",\n \"--beam-ImpactOverview-share-action-icon-size\": \"32px\",\n ...defineCustomText(\"--beam-ImpactOverview-share-action-text\", {\n fontSize: \"16px\",\n marginTop: \"5px\",\n }),\n ...defineCustomText(\"--beam-ImpactOverview-share-close\", {\n fontSize: \"16px\",\n fontWeight: \"bold\",\n }),\n \"--beam-ImpactOverview-share-close-padding\": \"12px\",\n \"--beam-ImpactOverview-share-close-backgroundColor\": \"#ffd522\",\n \"--beam-ImpactOverview-share-close-text-color\": \"currentColor\",\n \"--beam-ImpactOverview-share-close-borderRadius\": \"4px\",\n \"--beam-ImpactOverview-image-display\": \"block\",\n };\n\n const remoteConfig = this.impactDataController?.data?.config?.web?.theme || {};\n\n const config = { ...defaults, ...remoteConfig };\n\n const serializable = Object.create({\n toCSS() {\n return _cssVariableMap(this as Record<string, string>);\n },\n });\n\n return Object.assign(serializable, config);\n }\n\n static styles = [\n cssReset,\n cssResponsiveUtils,\n css`\n :host {\n display: block;\n font-family: var(--beam-fontFamily);\n font-size: var(--beam-fontSize);\n background-color: var(--beam-backgroundColor);\n color: var(--beam-textColor);\n max-width: var(--beam-ImpactOverview-impactCards-maxWidth, 800px);\n }\n .impact-cards {\n max-width: var(--beam-ImpactOverview-impactCards-maxWidth);\n }\n .impact-card {\n margin-top: var(--beam-ImpactOverview-impactCard-marginTop);\n background-color: var(--beam-ImpactOverview-impactCard-backgroundColor);\n border: 1px solid var(--beam-ImpactOverview-impactCard-borderColor);\n border-radius: var(--beam-ImpactOverview-impactCard-borderRadius);\n overflow: hidden; /* maintain clean border-radius */\n color: var(--beam-ImpactOverview-impactCard-foregroundColor);\n }\n .impact-card-image {\n object-fit: cover;\n height: 200px;\n width: 100%;\n display: var(--beam-ImpactOverview-image-display);\n }\n .impact-card-progress {\n margin-top: var(--beam-ImpactOverview-impactCard-progress-marginTop);\n }\n .title {\n ${useCustomText(\"--beam-ImpactOverview-title\")}\n }\n .subtitle {\n ${useCustomText(\"--beam-ImpactOverview-subtitle\")}\n }\n .impact-card-title {\n ${useCustomText(\"--beam-ImpactOverview-impactCard-title\")}\n }\n .impact-card-progressText {\n ${useCustomText(\"--beam-ImpactOverview-impactCard-progressText\")}\n }\n .impact-card-description {\n ${useCustomText(\"--beam-ImpactOverview-impactCard-description\")}\n }\n .impact-link {\n ${useCustomText(\"--beam-ImpactOverview-impactCard-link\")}\n }\n .impact-link-arrow {\n display: var(--beam-ImpactOverview-impactCard-linkArrow-display, \"inline\");\n }\n .impact-link a,\n .impact-link a:visited {\n color: var(--beam-ImpactOverview-impactCard-link-color, inherit);\n text-decoration: none;\n }\n .footer {\n text-align: center;\n }\n .share-button {\n /* display: var(--beam-ImpactOverview-share-button-display, none); */ /* visibility controlled by JS */\n /* display: var(--beam-ImpactOverview-share-button-display-mobile, inherit); */ /* visibility controlled by JS */\n /* display: var(--beam-ImpactOverview-share-button-display-desktop, inherit); */ /* visibility controlled by JS */\n ${useCustomText(\"--beam-ImpactOverview-share-button\", {\n fontSize: \"14px\",\n fontWeight: \"bold\",\n marginTop: \"10px\",\n })}\n /* TODO: extract palette variable - sky-100 color */\n background-color: var(--beam-ImpactOverview-share-button-backgroundColor, #c2dcff);\n color: var(--beam-ImpactOverview-share-button-color, inherit);\n border-radius: var(--beam-ImpactOverview-share-button-borderRadius, 16px);\n border-color: var(--beam-ImpactOverview-share-button-borderColor, transparent);\n border-width: var(--beam-ImpactOverview-share-button-borderWidth, 2px);\n /* add extra padding on side without icon for optical alignment */\n padding: var(--beam-ImpactOverview-share-button-padding, 12px 18px 12px 16px);\n width: var(--beam-ImpactOverview-share-button-width, auto);\n transition: 0.15s;\n }\n .share-button:hover {\n background-color: var(--beam-ImpactOverview-share-button-hover-backgroundColor, #c2dcff);\n color: var(--beam-ImpactOverview-share-button-hover-color, inherit);\n border-color: var(--beam-ImpactOverview-share-button-hover-borderColor, transparent);\n }\n .share-button-text {\n text-decoration: var(--beam-ImpactOverview-share-button-textDecoration, underline);\n margin-left: 0.33em;\n }\n .share-button-icon {\n font-size: var(--beam-ImpactOverview-share-button-icon-size, 16px);\n }\n @media (max-width: 500px) {\n //.impact-card {\n // display: flex;\n // flex-direction: row;\n //}\n //.impact-card-image {\n // object-fit: cover;\n // width: 25%;\n // height: auto;\n // flex: 1 0 45%;\n //}\n //.impact-card-content {\n // flex: 1 1 55%;\n //}\n //.share-button-text {\n // display: none;\n //}\n //.share-button-icon {\n // font-size: calc(var(--beam-ImpactOverview-share-button-icon-size, 16px) * 1.33);\n //}\n }\n `,\n css`\n .button {\n cursor: pointer;\n }\n .icon-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n .plain-button {\n border: none;\n background: none;\n font-size: inherit;\n font-family: inherit;\n }\n .plain-link {\n text-decoration: none;\n color: inherit;\n }\n `,\n css`\n .share-dialog::part(panel) {\n padding: var(--beam-ImpactOverview-share-dialog-padding, 30px 30px);\n text-align: center;\n }\n .share-title {\n ${useCustomText(\"--beam-ImpactOverview-share-title\", {\n fontSize: \"30px\",\n fontWeight: \"bold\",\n })}\n }\n .share-text {\n ${useCustomText(\"--beam-ImpactOverview-share-text\", {\n fontSize: \"16px\",\n lineHeight: \"1.3\",\n marginTop: \"10px\",\n })}\n }\n .share-image {\n border-radius: var(--beam-ImpactOverview-share-image-borderRadius, 4px);\n width: var(--beam-ImpactOverview-share-image-width, 200px);\n display: block;\n margin: var(--beam-ImpactOverview-share-image-margin, 20px) auto;\n }\n .share-actions {\n margin: var(--beam-ImpactOverview-share-actions-margin, 30px 60px);\n }\n .share-action-button {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n padding: 5px;\n }\n .share-action-icon {\n font-size: var(--beam-ImpactOverview-share-action-icon-size, 32px);\n }\n .share-action-button:hover .share-action-icon {\n scale: 1.1;\n }\n .share-action-text {\n ${useCustomText(\"--beam-ImpactOverview-share-text\", {\n fontSize: \"16px\",\n marginTop: \"10px\",\n fontWeight: \"bold\",\n })}\n }\n .share-close {\n display: block;\n background-color: var(--beam-ImpactOverview-share-close-backgroundColor, #ffd522);\n color: var(--beam-ImpactOverview-share-close-text-color, currentColor);\n justify-content: center;\n padding: var(--beam-ImpactOverview-share-close-padding, 12px);\n border-radius: var(--beam-ImpactOverview-share-close-borderRadius, 4px);\n width: 100%;\n ${useCustomText(\"--beam-ImpactOverview-share-close\", {\n fontSize: \"16px\",\n fontWeight: \"bold\",\n })}\n }\n .share-close:hover {\n outline: 2px solid var(--beam-ImpactOverview-share-close-focus-borderColor, currentColor);\n }\n `,\n ];\n}\n\ndefineCustomElement(BeamImpactOverview);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-impact-overview\": BeamImpactOverview;\n }\n}\n"],"names":["isMobile","urlToFile","url","r","u","blob","selfUrl","SHOELACE_BASE","ICON_BASE","CDN_BASE","registerIconLibrary","name","setBasePath","stylesheet","syncElementHeights","elements","source","els","isAllHtmlElements","syncedHeight","a","b","el","strings","nonprofitName","brandName","percent","BeamImpactOverview","LitElement","DEFAULT_BASE_URL","enforceConfig","getImpact","AsyncController","debounce","err","logger","BeamError","imageUrl","file","existingDialog","modalRoot","dataUrl","onClickClose","onClickCopy","onClickDownload","render","html","SUPPORTED_LANGUAGES","changedProperties","requireNewDataProps","prop","callback","e","title","percentFunded","description","unsafeHTML","data","loading","error","_loading","_errorMessage","showShare","showShareMobile","showShareDesktop","shareIcon","shareButtonVisibilityClass","localizeUserString","defaults","partnerLogosConfigDefaults","progressBarConfigDefaults","defineCustomText","remoteConfig","config","_cssVariableMap","cssReset","cssResponsiveUtils","css","useCustomText","__decorateClass","property","queryAll","defineCustomElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"impact-overview.js","sources":["../../src/shared/feature-detection.ts","../../src/shared/files.ts","../../src/shared/shoelace-components.ts","../../src/shared/sync-element-heights.ts","../../src/components/impact-overview/strings.ts","../../src/components/impact-overview/index.ts"],"sourcesContent":["export function isMobile() {\n return /Android|iPhone/i.test(navigator.userAgent);\n}\n\nexport function hasSystemShare() {\n return !!navigator.share;\n}\n","export const urlToFile = async (url: string) => {\n return fetch(url).then(async (r) => {\n const u = new URL(url);\n const blob = await r.blob();\n return new File([blob], u.pathname, { type: blob.type });\n });\n};\n","/**\n * Shoelace is a utility library for web components like icons, dialogs, buttons, etc.\n * https://shoelace.style/\n */\n\nimport { setBasePath } from \"@shoelace-style/shoelace/dist/utilities/base-path.js\";\nimport { registerIconLibrary } from \"@shoelace-style/shoelace/dist/utilities/icon-library.js\";\n\nconst selfUrl = import.meta.url; // URL of this JS module\n\nlet SHOELACE_BASE = \"\";\nlet ICON_BASE = \"\";\nlet CDN_BASE = \"\";\n// If served from the CDN, we can load additional modules via a relative path to the current one\n// If not, ie, if we are loading via a 3rd-party webpack config / file:/// URL, we fall back to the Beam CDN\nif (selfUrl.startsWith(\"http\")) {\n CDN_BASE = selfUrl.split(\"/dist/\")[0]; // localhost:port or subdomain.beamimpact.com\n SHOELACE_BASE = `${CDN_BASE}/dist/shoelace`;\n ICON_BASE = `${CDN_BASE}/dist/lucide-static`;\n} else {\n CDN_BASE = \"https://production-beam-widgets.beamimpact.com\";\n SHOELACE_BASE = `${CDN_BASE}/lib/shoelace/v2.11.2`;\n ICON_BASE = `${CDN_BASE}/lib/lucide-static/v0.292.0`;\n}\n\nregisterIconLibrary(\"lucide\", {\n resolver: (name: string) => `${ICON_BASE}/icons/${name}.svg`,\n});\n\nsetBasePath(SHOELACE_BASE);\n\nif (document && !document.querySelector(\"link[data-beam-impact]\")) {\n const stylesheet = document.createElement(\"link\");\n stylesheet.href = `${SHOELACE_BASE}/themes/light.css`;\n stylesheet.rel = \"stylesheet\";\n stylesheet.setAttribute(\"data-beam-impact\", \"true\");\n document.head.appendChild(stylesheet);\n}\n","import { isAllHtmlElements } from \"./is-all-html-elements\";\n\n/**\n * Synchronize heights of elements\n * @param {Array<HTMLElement|null>} elements - Elements to synchronize\n * @param {'contentLength' | 'currentHeight'} [options.source='contentLength'] -\n * Method used to get the height value to sync across elements. `contentLength`\n * (innerText.length) is reliable for pure text content when responding to\n * window resizing. Otherwise, currentHeight can be used to sync the tallest\n * element's height to all the other elements. Note that this works poorly\n * unless content is allowed to reflow with explicit height attributes removed\n * between synchronization calls.\n */\nexport const syncElementHeights = (\n elements: Array<HTMLElement | null> | NodeList,\n {\n source = \"contentLength\",\n }: {\n source?: \"contentLength\" | \"currentHeight\";\n } = {}\n) => {\n const els = elements instanceof NodeList ? Array.from(elements) : elements;\n\n if (els.length === 0 || !isAllHtmlElements(els)) {\n return;\n }\n\n const heightSource =\n source === \"contentLength\"\n ? els.sort((a, b) => {\n return b.innerText.length - a.innerText.length;\n })[0]\n : els.sort((a, b) => {\n return b.clientHeight - a.clientHeight;\n })[0];\n\n const syncedHeight = heightSource?.clientHeight || 0;\n\n for (const el of els) {\n if (el.clientHeight !== syncedHeight) {\n el.style[\"height\"] = syncedHeight + \"px\";\n }\n }\n};\n","export const strings = {\n en: {\n descriptionTitle: ({ nonprofitName = \"a nonprofit\" }) => `You just made an impact for ${nonprofitName}`,\n descriptionSubtitle: ({ brandName = \"\" }) => `Check out the impact your ${brandName} purchase made below`,\n learnMore: ({ name = \"\" }) => `Learn more about ${name}`,\n seeAllImpact: ({ brandName = \"\" }) => `See all of the impact by the ${brandName} community`,\n percentRaised: ({ percent = 0 }) => `${percent}%`,\n yourImpactTitle: () => `Your Impact`,\n communityImpactTitle: ({ brandName = \"\" }) => `The ${brandName} Community's Impact`,\n // share modal\n impactShareButton: () => `Share to Grow Our Impact`,\n impactShareText: ({ brandName = \"\" }) =>\n `Help ${brandName} reach their giving goal by sharing this cause on social media`,\n impactShareTitle: () => `Share on Social Media`,\n impactShareCopy: () => `Copy`,\n impactShareDownload: () => `Download`,\n impactShareClose: () => `Close`,\n },\n fr: {\n descriptionTitle: ({ nonprofitName = \"\" }) => `Vous avez eu un impact positif sur ${nonprofitName}`,\n descriptionSubtitle: ({ brandName = \"\" }) =>\n `Découvrez quel est l'impact de votre achat chez ${brandName} ci-dessous.`,\n learnMore: ({ name = \"\" }) => `En savoir plus sur ${name}`,\n seeAllImpact: ({ brandName = \"\" }) => `Voir toutes les contributions de la communauté de ${brandName}`,\n percentRaised: ({ percent = 0 }) => `${percent}%`,\n yourImpactTitle: () => `Votre contribution personnelle`,\n communityImpactTitle: ({ brandName = \"\" }) => `La contribution de la communauté de ${brandName}`,\n // share modal\n impactShareButton: () => `Partagez pour augmentez notre cause`,\n impactShareText: ({ brandName = \"\" }) =>\n `Aidez ${brandName} a atteindre leur objectif en partageant cette cause sur votre réseaux sociaux`,\n impactShareTitle: () => `Partager sur votre réseaux sociaux`,\n impactShareCopy: () => `Copier`,\n impactShareDownload: () => `Télécharger`,\n impactShareClose: () => `Fermer`,\n },\n de: {\n descriptionTitle: ({ nonprofitName = \"\" }) => `Du hast soeben einen Beitrag geleistet für ${nonprofitName}`,\n descriptionSubtitle: ({ brandName = \"\" }) =>\n `Erfahre mehr über den Beitrag, den du mit deinem ${brandName} Kauf geleistet hast`,\n learnMore: ({ name = \"\" }) => `Mehr über ${name} erfahren`,\n seeAllImpact: ({ brandName = \"\" }) =>\n `Informiere dich über den bisher geleisteten Beitrag der ${brandName} community`,\n percentRaised: ({ percent = 0 }) => `${percent}%`,\n yourImpactTitle: () => `Dein Beitrag`,\n communityImpactTitle: ({ brandName = \"\" }) => `Der Beitrag der ${brandName} community`,\n // share modal\n impactShareButton: () => `Teil, um unserem Beitrag zu erhöhen`,\n impactShareText: ({ brandName = \"\" }) => `Hilf ${brandName} ihre Spendenziel zu erreichen`,\n impactShareTitle: () => `In den sozialen Medien teilen`,\n impactShareCopy: () => `Kopieren`,\n impactShareDownload: () => `Herunterladen`,\n impactShareClose: () => `Schließen`,\n },\n es: {\n descriptionTitle: ({ nonprofitName = \"\" }) => `Acabas de contribuir con ${nonprofitName}`,\n descriptionSubtitle: ({ brandName = \"\" }) =>\n `Comprueba la contribución que has hecho con tu compra ${brandName} a continuación`,\n learnMore: ({ name = \"\" }) => `Saber más de ${name}`,\n seeAllImpact: ({ brandName = \"\" }) => `Mira lo que ha conseguido la comunidad ${brandName}`,\n percentRaised: ({ percent = 0 }) => `${percent}%`,\n yourImpactTitle: () => \"Tu contribución\",\n communityImpactTitle: ({ brandName = \"\" }) => `Tu contribución con la comunidad ${brandName}`,\n // share modal\n impactShareButton: () => \"Comparte para aumentar nuestro impacto\",\n impactShareText: ({ brandName = \"\" }) =>\n `Comparte en las redes sociales para ayudar a ${brandName} a alcanzar su objetivo.`,\n impactShareTitle: () => \"Compartir en redes sociales\",\n impactShareCopy: () => \"Copiar\",\n impactShareDownload: () => \"Descargar\",\n impactShareClose: () => \"Cerrar\",\n },\n it: {\n descriptionTitle: ({ nonprofitName = \"\" }) => `Hai appena fatto la differenza per ${nonprofitName}`,\n descriptionSubtitle: ({ brandName = \"\" }) => `Guarda qui sotto l'impatto del tuo acquisto ${brandName}`,\n learnMore: ({ name = \"\" }) => `Scopri di più su ${name}`,\n seeAllImpact: ({ brandName = \"\" }) => `Guarda come la comunità di ${brandName} fa la differenza`,\n percentRaised: ({ percent = 0 }) => `${percent}%`,\n yourImpactTitle: () => `Il tuo impatto`,\n communityImpactTitle: ({ brandName = \"\" }) => `L’impatto della comunità di ${brandName} `,\n // share modal\n impactShareButton: () => \"Condividi, aiutaci a fare la differenza\",\n impactShareText: ({ brandName = \"\" }) =>\n `Aiuta ${brandName} a raggiungere il suo obiettivo di donazione condividendo questa causa sui social media.`,\n impactShareTitle: () => \"Condividi, aiutaci a fare la differenza\",\n impactShareCopy: () => \"Copia\",\n impactShareDownload: () => \"Scarica\",\n impactShareClose: () => \"Chiudi\",\n },\n pl: {\n descriptionTitle: ({ nonprofitName = \"\" }) => `Właśnie wsparłaś_eś ${nonprofitName}!`,\n descriptionSubtitle: ({ brandName = \"\" }) =>\n `Sprawdź niżej, jakiego wsparcia udzieliłaś_eś kupując w ${brandName} `,\n learnMore: ({ name = \"\" }) => `Dowiedz się więcej o ${name}`,\n seeAllImpact: ({ brandName = \"\" }) => `Zobacz, ile dobrego zrobiła do tej pory społeczność ${brandName}`,\n percentRaised: ({ percent = 0 }) => `${percent}%`,\n yourImpactTitle: () => `Twoje wsparcie`,\n communityImpactTitle: ({ brandName = \"\" }) => `Wsparcie udzielone przez społeczność ${brandName}`,\n // share modal\n impactShareButton: () => `Udostępnij, by szerzyć naszą misję`,\n impactShareText: ({ brandName = \"\" }) =>\n `Pomóż ${brandName} osiągnąć cel i podziel się tą inicjatywą na swoim profilu`,\n impactShareTitle: () => `Udostępnij na swoim profilu`,\n impactShareCopy: () => `Kopiuj`,\n impactShareDownload: () => `Pobierz`,\n impactShareClose: () => `Zamknij`,\n },\n};\n","import { css, html, LitElement, PropertyValues, render } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { queryAll } from \"lit/decorators/query-all.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport debounce from \"lodash-es/debounce\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES } from \"../../api-sdk/constants\";\nimport { LANGUAGES, TUrl } from \"../../api-sdk/types\";\nimport { getImpact } from \"../../api-sdk/v3/routes\";\nimport { BeamError, MissingConfig } from \"../../shared/beam-errors\";\nimport \"../../shared/components/progress-bar\";\nimport { progressBarConfigDefaults } from \"../../shared/components/progress-bar\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { isMobile } from \"../../shared/feature-detection\";\nimport { urlToFile } from \"../../shared/files\";\nimport { _cssVariableMap } from \"../../shared/fragments/css-variable-map\";\nimport { defineCustomText, useCustomText } from \"../../shared/fragments/custom-text\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { _loading } from \"../../shared/fragments/loading-template\";\nimport { localizeUserString } from \"../../shared/localize\";\nimport { logger } from \"../../shared/logger\";\nimport \"../../shared/shoelace-components\";\nimport { syncElementHeights } from \"../../shared/sync-element-heights\";\nimport { TId, TNumericId } from \"../../shared/types\";\nimport \"../beam-partner-logos\";\nimport { partnerLogosConfigDefaults } from \"../beam-partner-logos\";\nimport { cssResponsiveUtils } from \"../../shared/responsive\";\nimport { strings } from \"./strings\";\n\ntype RequiredConfig = {\n apiKey: string;\n chainId: TNumericId;\n nonprofitId: TNumericId;\n userId: TId;\n};\n\nexport class BeamImpactOverview extends LitElement {\n static tagName = \"beam-impact-overview\";\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: String, reflect: true }) nonprofitId?: RequiredConfig[\"nonprofitId\"];\n\n @property({ type: String, reflect: true }) chainId?: RequiredConfig[\"chainId\"];\n\n @property({ type: String, reflect: true }) userId?: RequiredConfig[\"userId\"];\n\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n\n @property({ type: Boolean }) public debug = false;\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n getImpactData = async () => {\n if (!enforceConfig<RequiredConfig>([\"apiKey\", \"chainId\", \"userId\", \"nonprofitId\"], this)) throw new MissingConfig();\n const res = await getImpact({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n queryParams: {\n nonprofitId: this.nonprofitId,\n chainId: this.chainId,\n beamUserId: this.userId,\n personalImpactLimit: 1,\n communityImpactLimit: 1,\n widgetName: \"impact-overview\",\n version: \"1.0.0\",\n lang: this.configLang,\n },\n });\n\n return res;\n };\n\n private impactDataController = new AsyncController<typeof this.getImpactData>(this, this.getImpactData);\n\n @queryAll(\".impact-card-title\")\n impactTitleRefs!: HTMLElement[];\n\n @queryAll(\".impact-card-description\")\n impactDescriptionRefs!: HTMLElement[];\n\n @queryAll(\".impact-link\")\n impactLinkRefs!: HTMLElement[];\n\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener(\"resize\", this.resizeElements);\n }\n\n async updated(changedProperties: PropertyValues): Promise<void> {\n // Reload nonprofit list on change of any of these props:\n // Also fires on first load as props go from undefined => value\n const requireNewDataProps = [\"chainId\", \"baseUrl\", \"storeId\", \"apiKey\", \"userId\", \"lang\"];\n for (const prop of requireNewDataProps) {\n if (changedProperties.has(prop)) {\n await this.impactDataController.exec();\n break;\n }\n }\n this.resizeElements(); // Handle layout shifts immediately\n await this.handleFontLoad(this.resizeElements); // If content change triggered font load, resize again\n }\n\n disconnectedCallback() {\n window.removeEventListener(\"resize\", this.resizeElements);\n document.fonts.removeEventListener(\"loadingdone\", this.resizeElements);\n super.disconnectedCallback();\n }\n\n /**\n * Safari does not fire loading events on the document FontFaceSet, but it does implement the .ready Promise\n * Call this method to wait for font loads that may be triggered by content changes\n */\n async handleFontLoad<T = any>(callback: () => T | void) {\n if (document.fonts.status === \"loading\") {\n await document.fonts.ready.catch((e) => console.error(e));\n return callback();\n }\n }\n\n resizeElements = debounce(\n () => {\n syncElementHeights(this.impactTitleRefs);\n syncElementHeights(this.impactDescriptionRefs);\n syncElementHeights(this.impactLinkRefs);\n },\n 50,\n { maxWait: 50, leading: true }\n );\n\n renderCard({\n imageUrl,\n title,\n percentFunded,\n description,\n }: {\n imageUrl: TUrl;\n title: string;\n percentFunded: number;\n description: string;\n }) {\n return html`\n <div class=\"impact-card\" part=\"impact-card\">\n <img src=\"${imageUrl}\" alt=\"${title}\" class=\"impact-card-image\" />\n <div class=\"impact-card-content\" style=\"margin: 15px;\">\n <div class=\"impact-card-title\">${title}</div>\n <div class=\"impact-card-progress\" style=\"display: flex; align-items: center;\">\n <beam-progress-bar\n value=\"${percentFunded}\"\n style=\"flex: 1 0;\"\n class=\"impact-card-progressbar\"\n ></beam-progress-bar>\n <span class=\"impact-card-progressText\" style=\"flex: 0 1; margin-left: 10px; white-space: nowrap;\"\n >${strings[this.configLang].percentRaised({ percent: percentFunded })}</span\n >\n </div>\n <p class=\"impact-card-description\">${unsafeHTML(description)}</p>\n </div>\n </div>\n `;\n }\n\n handleShareClick = async () => {\n try {\n if (isMobile()) {\n await this.openSystemShareSheet();\n } else {\n await this.openShareDialog();\n }\n } catch (err) {\n logger.error(new BeamError(\"Error sharing impact\"));\n logger.error(err);\n }\n };\n\n openSystemShareSheet = async () => {\n const imageUrl = this.impactDataController.data?.personal[0]?.share?.imageUrl;\n\n if (!imageUrl) return;\n\n const file = await urlToFile(imageUrl);\n\n if (navigator.share) {\n await navigator.share({\n files: [file],\n });\n }\n };\n\n openShareDialog = async () => {\n const brandName = this.impactDataController.data?.chain.name;\n const imageUrl = this.impactDataController.data?.personal[0]?.share?.imageUrl;\n\n if (!imageUrl) return;\n\n interface SlDialogElement extends HTMLElement {\n show: () => void;\n hide: () => void;\n }\n\n const existingDialog = this.renderRoot.querySelector(\"sl-dialog\") as SlDialogElement;\n\n if (existingDialog) {\n existingDialog.show();\n return;\n }\n\n await import(\"./_share-dialog-dependencies.js\"); // Import libraries async to reduce bundle size if share feature is unused\n\n const modalRoot = this.renderRoot.querySelector(\"#modal-root\") as HTMLElement;\n\n const file = await urlToFile(imageUrl);\n\n const dataUrl = URL.createObjectURL(file);\n\n const onClickClose = () => {\n (this.renderRoot.querySelector(\"sl-dialog\") as SlDialogElement)?.hide();\n };\n\n const onClickCopy = () => {\n navigator.clipboard.write([new ClipboardItem({ \"image/png\": file })]).then(() => {\n setTimeout(onClickClose, 250);\n });\n };\n\n const onClickDownload = () => {\n setTimeout(onClickClose, 250);\n };\n\n render(\n html`\n <sl-dialog open label=\"${strings[this.configLang].impactShareTitle()}\" no-header class=\"share-dialog\">\n <h2 class=\"share-title\">${strings[this.configLang].impactShareTitle()}</h2>\n <p class=\"share-text\">${strings[this.configLang].impactShareText({ brandName })}</p>\n <img src=\"${imageUrl}\" alt=\"${strings[this.configLang].impactShareTitle()}\" class=\"share-image\" />\n <div class=\"share-actions\" style=\"display: flex; justify-content: space-evenly\">\n <div style=\"flex: 1; text-align: center\">\n <button class=\"plain-button button share-action-button\" @click=\"${onClickCopy}\">\n <sl-icon\n library=\"lucide\"\n name=\"copy\"\n label=\"${strings[this.configLang].impactShareCopy()}\"\n class=\"share-action-icon\"\n ></sl-icon>\n <div class=\"share-action-text\">${strings[this.configLang].impactShareCopy()}</div>\n </button>\n </div>\n <div style=\"flex: 1; text-align: center\">\n <a\n class=\"plain-button button share-action-button plain-link\"\n download=\"${strings[this.configLang].impactShareTitle()}\"\n href=\"${dataUrl}\"\n @click=\"${onClickDownload}\"\n >\n <sl-icon\n library=\"lucide\"\n name=\"download\"\n label=\"${strings[this.configLang].impactShareDownload()}\"\n class=\"share-action-icon\"\n ></sl-icon>\n <div class=\"share-action-text\">${strings[this.configLang].impactShareDownload()}</div>\n </a>\n </div>\n </div>\n <button class=\"plain-button button share-close\" @click=\"${onClickClose}\">\n ${strings[this.configLang].impactShareClose()}\n </button>\n </sl-dialog>\n `,\n modalRoot\n );\n };\n\n render() {\n const { data, loading, error } = this.impactDataController;\n if (loading) {\n return _loading();\n }\n if (error) {\n if (this.debug) {\n return _errorMessage({ error });\n }\n return \"\";\n }\n if (data == null) {\n if (this.debug) {\n return _errorMessage({ error: new Error(\"No data\") });\n }\n return \"\";\n }\n\n const showShare = this.cssVariables[\"--beam-ImpactOverview-share-button-display\"] !== \"none\";\n const showShareMobile =\n showShare && this.cssVariables[\"--beam-ImpactOverview-share-button-display-mobile\"] !== \"none\";\n const showShareDesktop =\n showShare && this.cssVariables[\"--beam-ImpactOverview-share-button-display-desktop\"] !== \"none\";\n const shareIcon = this.cssVariables[\"--beam-ImpactOverview-share-button-icon-name\"] || \"share-2\";\n\n let shareButtonVisibilityClass = \"d-none\";\n if (showShareMobile) {\n shareButtonVisibilityClass = showShareDesktop ? \"d-block\" : \"d-lg-none\";\n } else {\n shareButtonVisibilityClass = showShareDesktop ? \"d-none d-lg-block\" : \"d-none\";\n }\n\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n\n <div>\n <beam-partner-logos\n partnerLogoUrl=\"${data.chain.logoUrl}\"\n partnerName=\"${data.chain.name}\"\n part=\"logos\"\n ></beam-partner-logos>\n </div>\n\n <div class=\"description\">\n <div class=\"title\" part=\"title\">\n ${localizeUserString(this.configLang, data.config?.web?.title) ||\n strings[this.configLang].descriptionTitle({ nonprofitName: data.personal[0].nonprofit.name })}\n </div>\n <div class=\"subtitle\" part=\"subtitle\">\n ${localizeUserString(this.configLang, data.config?.web?.description) ||\n strings[this.configLang].descriptionSubtitle({ brandName: data.chain.name })}\n </div>\n </div>\n\n <div class=\"impact-cards\" style=\"display: flex; flex-wrap: wrap; gap: 15px; margin: 10px 0;\">\n <div class=\"impact your-impact\" style=\"flex: 1 1; display: inline-block; max-width: 100%; min-width: 200px;\">\n ${this.renderCard({\n imageUrl: data.personal[0]?.imageUrl || \"\",\n title: strings[this.configLang].yourImpactTitle(),\n percentFunded: data.personal[0]?.impact?.goalProgressPercentage || 0,\n description: localizeUserString(this.configLang, data.personal[0]?.impact?.description || \"\"),\n })}\n <p class=\"impact-link\" part=\"impact-link\">\n <a href=\"${data.personal[0].nonprofit?.website}\">\n ${strings[this.configLang].learnMore({\n name: data.personal[0].nonprofit?.name,\n })}<span class=\"impact-link-arrow\"> ›</span>\n </a>\n </p>\n </div>\n <div\n class=\"impact community-impact\"\n style=\"flex: 1 1; display: inline-block; max-width: 100%; min-width: 200px;\"\n >\n ${this.renderCard({\n imageUrl: data.community[0].imageUrl || \"\",\n title: strings[this.configLang].communityImpactTitle({ brandName: data.chain.name }),\n percentFunded: data.community[0].impact?.goalProgressPercentage || 0,\n description: localizeUserString(this.configLang, data.community[0].impact?.description || \"\"),\n })}\n <p class=\"impact-link\" part=\"impact-link\">\n <a href=\"${data.chain.communityImpactUrl || data.community[0].nonprofit.website}\">\n ${strings[this.configLang].seeAllImpact({\n brandName: data.chain.name,\n })}<span class=\"impact-link-arrow\"> ›</span>\n </a>\n </p>\n </div>\n </div>\n\n <div class=\"footer ${shareButtonVisibilityClass}\" part=\"social-share\">\n <button @click=\"${this.handleShareClick}\" class=\"share-button share-button-inline button icon-button\">\n <sl-icon\n name=\"${shareIcon}\"\n library=\"lucide\"\n label=\"${strings[this.configLang].impactShareButton()}\"\n class=\"share-button-icon\"\n ></sl-icon>\n <span class=\"share-button-text\">${strings[this.configLang].impactShareButton()}</span>\n </button>\n </div>\n\n <div id=\"modal-root\"></div>\n `;\n }\n\n public get cssVariables() {\n const defaults = {\n \"--beam-fontFamily\": \"inherit\",\n \"--beam-fontSize\": \"inherit\",\n \"--beam-textColor\": \"inherit\",\n \"--beam-backgroundColor\": \"inherit\",\n ...partnerLogosConfigDefaults,\n ...progressBarConfigDefaults,\n ...defineCustomText(\"--beam-ImpactOverview-title\", {\n fontSize: \"16px\",\n fontWeight: \"bold\",\n marginTop: \"10px\",\n }),\n ...defineCustomText(\"--beam-ImpactOverview-subtitle\", {\n marginTop: \"5px\",\n }),\n \"--beam-ImpactOverview-impactCards-maxWidth\": \"800px\",\n \"--beam-ImpactOverview-impactCard-backgroundColor\": \"inherit\",\n \"--beam-ImpactOverview-impactCard-foregroundColor\": \"currentColor\",\n \"--beam-ImpactOverview-impactCard-borderColor\": \"currentColor\",\n \"--beam-ImpactOverview-impactCard-borderRadius\": \"0px\",\n \"--beam-ImpactOverview-impactCard-marginTop\": \"10px\",\n ...defineCustomText(\"--beam-ImpactOverview-impactCard-title\", {\n fontSize: \"15px\",\n fontWeight: \"bold\",\n }),\n \"--beam-ImpactOverview-impactCard-progress-marginTop\": \"15px\",\n ...defineCustomText(\"--beam-ImpactOverview-impactCard-progressText\"),\n ...defineCustomText(\"--beam-ImpactOverview-impactCard-description\", {\n marginTop: \"10px\",\n }),\n \"--beam-ImpactOverview-impactCard-linkArrow-display\": \"inline\",\n \"--beam-ImpactOverview-impactCard-link-color\": \"inherit\",\n ...defineCustomText(\"--beam-ImpactOverview-impactCard-link\", {\n marginTop: \"10px\",\n }),\n \"--beam-ImpactOverview-share-button-display\": \"none\",\n \"--beam-ImpactOverview-share-button-display-mobile\": \"inherit\",\n \"--beam-ImpactOverview-share-button-display-desktop\": \"inherit\",\n \"--beam-ImpactOverview-share-button-textDecoration\": \"underline\",\n \"--beam-ImpactOverview-share-button-icon-size\": \"16px\",\n ...defineCustomText(\"--beam-ImpactOverview-share-button\", {\n fontSize: \"14px\",\n fontWeight: \"bold\",\n marginTop: \"12px\",\n }),\n \"--beam-ImpactOverview-share-button-backgroundColor\": \"#c2dcff\",\n \"--beam-ImpactOverview-share-button-color\": \"inherit\",\n \"--beam-ImpactOverview-share-button-borderRadius\": \"16px\",\n \"--beam-ImpactOverview-share-button-borderColor\": \"transparent\",\n \"--beam-ImpactOverview-share-button-borderWidth\": \"2px\",\n \"--beam-ImpactOverview-share-button-padding\": \"12px 18px 12px 16px\",\n \"--beam-ImpactOverview-share-button-width\": \"auto\",\n \"--beam-ImpactOverview-share-button-hover-color\": \"inherit\",\n \"--beam-ImpactOverview-share-button-hover-borderColor\": \"transparent\",\n \"--beam-ImpactOverview-share-button-hover-backgroundColor\": \"#c2dcff\",\n \"--beam-ImpactOverview-share-dialog-padding\": \"30px 60px\",\n ...defineCustomText(\"--beam-ImpactOverview-share-title\", {\n fontSize: \"30px\",\n fontWeight: \"bold\",\n }),\n \"--beam-ImpactOverview-share-button-icon-name\": \"share-2\",\n \"--beam-ImpactOverview-share-image-width\": \"200px\",\n \"--beam-ImpactOverview-share-image-borderRadius\": \"4px\",\n \"--beam-ImpactOverview-share-image-margin\": \"20px\",\n ...defineCustomText(\"--beam-ImpactOverview-share-text\", {\n fontSize: \"16px\",\n lineHeight: \"1.3\",\n marginTop: \"10px\",\n }),\n \"--beam-ImpactOverview-share-actions-margin\": \"30px 60px\",\n \"--beam-ImpactOverview-share-action-icon-size\": \"32px\",\n ...defineCustomText(\"--beam-ImpactOverview-share-action-text\", {\n fontSize: \"16px\",\n marginTop: \"5px\",\n }),\n ...defineCustomText(\"--beam-ImpactOverview-share-close\", {\n fontSize: \"16px\",\n fontWeight: \"bold\",\n }),\n \"--beam-ImpactOverview-share-close-padding\": \"12px\",\n \"--beam-ImpactOverview-share-close-backgroundColor\": \"#ffd522\",\n \"--beam-ImpactOverview-share-close-text-color\": \"currentColor\",\n \"--beam-ImpactOverview-share-close-borderRadius\": \"4px\",\n \"--beam-ImpactOverview-image-display\": \"block\",\n };\n\n const remoteConfig = this.impactDataController?.data?.config?.web?.theme || {};\n\n const config = { ...defaults, ...remoteConfig };\n\n const serializable = Object.create({\n toCSS() {\n return _cssVariableMap(this as Record<string, string>);\n },\n });\n\n return Object.assign(serializable, config);\n }\n\n static styles = [\n cssReset,\n cssResponsiveUtils,\n css`\n :host {\n display: block;\n font-family: var(--beam-fontFamily);\n font-size: var(--beam-fontSize);\n background-color: var(--beam-backgroundColor);\n color: var(--beam-textColor);\n max-width: var(--beam-ImpactOverview-impactCards-maxWidth, 800px);\n }\n .impact-cards {\n max-width: var(--beam-ImpactOverview-impactCards-maxWidth);\n }\n .impact-card {\n margin-top: var(--beam-ImpactOverview-impactCard-marginTop);\n background-color: var(--beam-ImpactOverview-impactCard-backgroundColor);\n border: 1px solid var(--beam-ImpactOverview-impactCard-borderColor);\n border-radius: var(--beam-ImpactOverview-impactCard-borderRadius);\n overflow: hidden; /* maintain clean border-radius */\n color: var(--beam-ImpactOverview-impactCard-foregroundColor);\n }\n .impact-card-image {\n object-fit: cover;\n height: 200px;\n width: 100%;\n display: var(--beam-ImpactOverview-image-display);\n }\n .impact-card-progress {\n margin-top: var(--beam-ImpactOverview-impactCard-progress-marginTop);\n }\n .title {\n ${useCustomText(\"--beam-ImpactOverview-title\")}\n }\n .subtitle {\n ${useCustomText(\"--beam-ImpactOverview-subtitle\")}\n }\n .impact-card-title {\n ${useCustomText(\"--beam-ImpactOverview-impactCard-title\")}\n }\n .impact-card-progressText {\n ${useCustomText(\"--beam-ImpactOverview-impactCard-progressText\")}\n }\n .impact-card-description {\n ${useCustomText(\"--beam-ImpactOverview-impactCard-description\")}\n }\n .impact-link {\n ${useCustomText(\"--beam-ImpactOverview-impactCard-link\")}\n }\n .impact-link-arrow {\n display: var(--beam-ImpactOverview-impactCard-linkArrow-display, \"inline\");\n }\n .impact-link a,\n .impact-link a:visited {\n color: var(--beam-ImpactOverview-impactCard-link-color, inherit);\n text-decoration: none;\n }\n .footer {\n text-align: center;\n }\n .share-button {\n /* display: var(--beam-ImpactOverview-share-button-display, none); */ /* visibility controlled by JS */\n /* display: var(--beam-ImpactOverview-share-button-display-mobile, inherit); */ /* visibility controlled by JS */\n /* display: var(--beam-ImpactOverview-share-button-display-desktop, inherit); */ /* visibility controlled by JS */\n ${useCustomText(\"--beam-ImpactOverview-share-button\", {\n fontSize: \"14px\",\n fontWeight: \"bold\",\n marginTop: \"10px\",\n })}\n /* TODO: extract palette variable - sky-100 color */\n background-color: var(--beam-ImpactOverview-share-button-backgroundColor, #c2dcff);\n color: var(--beam-ImpactOverview-share-button-color, inherit);\n border-radius: var(--beam-ImpactOverview-share-button-borderRadius, 16px);\n border-color: var(--beam-ImpactOverview-share-button-borderColor, transparent);\n border-width: var(--beam-ImpactOverview-share-button-borderWidth, 2px);\n /* add extra padding on side without icon for optical alignment */\n padding: var(--beam-ImpactOverview-share-button-padding, 12px 18px 12px 16px);\n width: var(--beam-ImpactOverview-share-button-width, auto);\n transition: 0.15s;\n }\n .share-button:hover {\n background-color: var(--beam-ImpactOverview-share-button-hover-backgroundColor, #c2dcff);\n color: var(--beam-ImpactOverview-share-button-hover-color, inherit);\n border-color: var(--beam-ImpactOverview-share-button-hover-borderColor, transparent);\n }\n .share-button-text {\n text-decoration: var(--beam-ImpactOverview-share-button-textDecoration, underline);\n margin-left: 0.33em;\n }\n .share-button-icon {\n font-size: var(--beam-ImpactOverview-share-button-icon-size, 16px);\n }\n @media (max-width: 500px) {\n //.impact-card {\n // display: flex;\n // flex-direction: row;\n //}\n //.impact-card-image {\n // object-fit: cover;\n // width: 25%;\n // height: auto;\n // flex: 1 0 45%;\n //}\n //.impact-card-content {\n // flex: 1 1 55%;\n //}\n //.share-button-text {\n // display: none;\n //}\n //.share-button-icon {\n // font-size: calc(var(--beam-ImpactOverview-share-button-icon-size, 16px) * 1.33);\n //}\n }\n `,\n css`\n .button {\n cursor: pointer;\n }\n .icon-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n .plain-button {\n border: none;\n background: none;\n font-size: inherit;\n font-family: inherit;\n }\n .plain-link {\n text-decoration: none;\n color: inherit;\n }\n `,\n css`\n .share-dialog::part(panel) {\n padding: var(--beam-ImpactOverview-share-dialog-padding, 30px 30px);\n text-align: center;\n }\n .share-title {\n ${useCustomText(\"--beam-ImpactOverview-share-title\", {\n fontSize: \"30px\",\n fontWeight: \"bold\",\n })}\n }\n .share-text {\n ${useCustomText(\"--beam-ImpactOverview-share-text\", {\n fontSize: \"16px\",\n lineHeight: \"1.3\",\n marginTop: \"10px\",\n })}\n }\n .share-image {\n border-radius: var(--beam-ImpactOverview-share-image-borderRadius, 4px);\n width: var(--beam-ImpactOverview-share-image-width, 200px);\n display: block;\n margin: var(--beam-ImpactOverview-share-image-margin, 20px) auto;\n }\n .share-actions {\n margin: var(--beam-ImpactOverview-share-actions-margin, 30px 60px);\n }\n .share-action-button {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n padding: 5px;\n }\n .share-action-icon {\n font-size: var(--beam-ImpactOverview-share-action-icon-size, 32px);\n }\n .share-action-button:hover .share-action-icon {\n scale: 1.1;\n }\n .share-action-text {\n ${useCustomText(\"--beam-ImpactOverview-share-text\", {\n fontSize: \"16px\",\n marginTop: \"10px\",\n fontWeight: \"bold\",\n })}\n }\n .share-close {\n display: block;\n background-color: var(--beam-ImpactOverview-share-close-backgroundColor, #ffd522);\n color: var(--beam-ImpactOverview-share-close-text-color, currentColor);\n justify-content: center;\n padding: var(--beam-ImpactOverview-share-close-padding, 12px);\n border-radius: var(--beam-ImpactOverview-share-close-borderRadius, 4px);\n width: 100%;\n ${useCustomText(\"--beam-ImpactOverview-share-close\", {\n fontSize: \"16px\",\n fontWeight: \"bold\",\n })}\n }\n .share-close:hover {\n outline: 2px solid var(--beam-ImpactOverview-share-close-focus-borderColor, currentColor);\n }\n `,\n ];\n}\n\ndefineCustomElement(BeamImpactOverview);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-impact-overview\": BeamImpactOverview;\n }\n}\n"],"names":["isMobile","urlToFile","url","r","u","blob","selfUrl","SHOELACE_BASE","ICON_BASE","CDN_BASE","registerIconLibrary","name","setBasePath","stylesheet","syncElementHeights","elements","source","els","isAllHtmlElements","syncedHeight","a","b","el","strings","nonprofitName","brandName","percent","BeamImpactOverview","LitElement","DEFAULT_BASE_URL","enforceConfig","getImpact","AsyncController","debounce","err","logger","BeamError","imageUrl","file","existingDialog","modalRoot","dataUrl","onClickClose","onClickCopy","onClickDownload","render","html","SUPPORTED_LANGUAGES","changedProperties","requireNewDataProps","prop","callback","e","title","percentFunded","description","unsafeHTML","data","loading","error","_loading","_errorMessage","showShare","showShareMobile","showShareDesktop","shareIcon","shareButtonVisibilityClass","localizeUserString","defaults","partnerLogosConfigDefaults","progressBarConfigDefaults","defineCustomText","remoteConfig","config","_cssVariableMap","cssReset","cssResponsiveUtils","css","useCustomText","__decorateClass","property","queryAll","defineCustomElement"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{BeamCommunityImpact as C}from"./community-impact.esm.js";import{BeamCumulativeImpact as d}from"./cumulative-impact.esm.js";import{BeamImpactOverview as w}from"./impact-overview.esm.js";import{BeamSelectNonprofit as N}from"./select-nonprofit.esm.js";import{BeamRedeemTransaction as R}from"./redeem-transaction.esm.js";import{BeamPostPurchase as T}from"./post-purchase.esm.js";import"../chunks/lit-h1W25hjN.esm.js";import"../chunks/progress-bar-w3yfrrxD.esm.js";import"./beam-partner-logos.esm.js";import"../chunks/localize-e-mss8ya.esm.js";import"../chunks/beam-errors-l02WBee5.esm.js";import"../chunks/logger-ad87ovol.esm.js";import"../chunks/routes-
|
|
1
|
+
import{BeamCommunityImpact as C}from"./community-impact.esm.js";import{BeamCumulativeImpact as d}from"./cumulative-impact.esm.js";import{BeamImpactOverview as w}from"./impact-overview.esm.js";import{BeamSelectNonprofit as N}from"./select-nonprofit.esm.js";import{BeamRedeemTransaction as R}from"./redeem-transaction.esm.js";import{BeamPostPurchase as T}from"./post-purchase.esm.js";import"../chunks/lit-h1W25hjN.esm.js";import"../chunks/progress-bar-w3yfrrxD.esm.js";import"./beam-partner-logos.esm.js";import"../chunks/localize-e-mss8ya.esm.js";import"../chunks/beam-errors-l02WBee5.esm.js";import"../chunks/logger-ad87ovol.esm.js";import"../chunks/routes-wndAQJwE.esm.js";import"../chunks/css-card-grid-RRkoiUTl.esm.js";import"../chunks/lodash-ZxBiuGue.esm.js";import"../chunks/is-all-html-elements-SdSkxirh.esm.js";import"../chunks/vendor-IGhQoYCM.esm.js";import"../chunks/responsive-Rehmv-eo.esm.js";import"../chunks/local-storage-Rrnk_Dg-.esm.js";import"../chunks/events-rRSQYdP1.esm.js";import"../chunks/cookies-BnIoXWd0.esm.js";import"../chunks/cart-contents-h60geKWa.esm.js";export{C as BeamCommunityImpact,d as BeamCumulativeImpact,w as BeamImpactOverview,T as BeamPostPurchase,R as BeamRedeemTransaction,N as BeamSelectNonprofit};
|
|
2
2
|
//# sourceMappingURL=index.esm.js.map
|
package/dist/components/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{BeamCommunityImpact as C}from"./community-impact.js";import{BeamCumulativeImpact as d}from"./cumulative-impact.js";import{BeamImpactOverview as w}from"./impact-overview.js";import{BeamSelectNonprofit as N}from"./select-nonprofit.js";import{BeamRedeemTransaction as R}from"./redeem-transaction.js";import{BeamPostPurchase as T}from"./post-purchase.js";import"../chunks/lit-h1W25hjN.esm.js";import"../chunks/progress-bar-w3yfrrxD.esm.js";import"./beam-partner-logos.js";import"../chunks/localize-e-mss8ya.esm.js";import"../chunks/beam-errors-l02WBee5.esm.js";import"../chunks/logger-ad87ovol.esm.js";import"../chunks/routes-
|
|
1
|
+
import{BeamCommunityImpact as C}from"./community-impact.js";import{BeamCumulativeImpact as d}from"./cumulative-impact.js";import{BeamImpactOverview as w}from"./impact-overview.js";import{BeamSelectNonprofit as N}from"./select-nonprofit.js";import{BeamRedeemTransaction as R}from"./redeem-transaction.js";import{BeamPostPurchase as T}from"./post-purchase.js";import"../chunks/lit-h1W25hjN.esm.js";import"../chunks/progress-bar-w3yfrrxD.esm.js";import"./beam-partner-logos.js";import"../chunks/localize-e-mss8ya.esm.js";import"../chunks/beam-errors-l02WBee5.esm.js";import"../chunks/logger-ad87ovol.esm.js";import"../chunks/routes-wndAQJwE.esm.js";import"../chunks/css-card-grid-RRkoiUTl.esm.js";import"../chunks/lodash-ZxBiuGue.esm.js";import"../chunks/is-all-html-elements-SdSkxirh.esm.js";import"../chunks/vendor-IGhQoYCM.esm.js";import"../chunks/responsive-Rehmv-eo.esm.js";import"../chunks/local-storage-Rrnk_Dg-.esm.js";import"../chunks/events-rRSQYdP1.esm.js";import"../chunks/cookies-BnIoXWd0.esm.js";import"../chunks/cart-contents-h60geKWa.esm.js";export{C as BeamCommunityImpact,d as BeamCumulativeImpact,w as BeamImpactOverview,T as BeamPostPurchase,R as BeamRedeemTransaction,N as BeamSelectNonprofit};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -34,8 +34,8 @@ declare class BeamPostPurchase extends LitElement {
|
|
|
34
34
|
private transactionId;
|
|
35
35
|
private chainId;
|
|
36
36
|
private localStorage;
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
firstUpdated(_changedProperties: PropertyValues): void;
|
|
38
|
+
updated(previousPropertyValues: PropertyValues): Promise<void>;
|
|
39
39
|
handlePostTransaction: () => Promise<{
|
|
40
40
|
transactionId: string;
|
|
41
41
|
beamUserId: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{f as
|
|
1
|
+
import{f as r,t as a,g as I,y as l}from"../chunks/lit-h1W25hjN.esm.js";import{a as y}from"../chunks/cookies-BnIoXWd0.esm.js";import{c as u,d as g,e as m,A as C,_ as b}from"../chunks/localize-e-mss8ya.esm.js";import{c as f}from"../chunks/local-storage-Rrnk_Dg-.esm.js";import{D as v,g as $,a as S}from"../chunks/routes-wndAQJwE.esm.js";import"./redeem-transaction.esm.js";import"./impact-overview.esm.js";import{B as U}from"../chunks/cart-contents-h60geKWa.esm.js";import"../chunks/beam-errors-l02WBee5.esm.js";import"../chunks/logger-ad87ovol.esm.js";import"../chunks/lodash-ZxBiuGue.esm.js";import"../chunks/progress-bar-w3yfrrxD.esm.js";import"./beam-partner-logos.esm.js";import"../chunks/css-card-grid-RRkoiUTl.esm.js";import"../chunks/events-rRSQYdP1.esm.js";import"../chunks/vendor-IGhQoYCM.esm.js";import"../chunks/is-all-html-elements-SdSkxirh.esm.js";import"../chunks/responsive-Rehmv-eo.esm.js";var w=Object.defineProperty,K=Object.getOwnPropertyDescriptor,e=(d,o,i,n)=>{for(var s=n>1?void 0:n?K(o,i):o,p=d.length-1,c;p>=0;p--)(c=d[p])&&(s=(n?c(o,i,s):c(s))||s);return n&&s&&w(o,i,s),s};const h=["baseUrl","apiKey","orderId","email","cartTotal","currencyCode","lang"],A=["storeId","postalCode","countryCode","cart","discountCodes"];class t extends I{constructor(){super(...arguments),this.baseUrl=v,this.currencyCode="USD",this.lang="en",this.debug=!1,this.activeWidget="redeem-transaction",this.nonprofitId=null,this.selectionId=null,this.cartId=null,this.beamCartId=null,this.userId=null,this.transactionId=null,this.chainId=null,this.localStorage=f(this),this.handlePostTransaction=async()=>{if(m(h,this),!this.storeId&&this.postalCode&&this.countryCode){const i=await $({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},queryParams:{postalCode:this.postalCode,countryCode:this.countryCode,widgetName:"redeem-transaction",version:"1.0.0"}});this.storeId=i.store?.id}const o=await S({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{nonprofitId:this.nonprofitId??void 0,selectionId:this.selectionId??void 0,cartId:this.cartId??void 0,beamCartId:this.beamCartId??void 0,storeId:this.storeId,orderId:this.orderId,cartTotal:this.cartTotal,email:this.email,currencyCode:this.currencyCode,postalCode:this.postalCode,countryCode:this.countryCode,cart:this.cart,discountCodes:this.discountCodes}});return this.transactionId=o.transactionId,this.chainId=o.chainId,this.userId=o.beamUserId,this.nonprofitId=o.nonprofitId,this.nonprofitId&&(this.activeWidget="impact-overview"),this.localStorage.removeItem("transaction"),this.localStorage.removeItem("cart"),o},this.transactionDataController=new C(this,this.handlePostTransaction)}firstUpdated(o){m(h,this),this.nonprofitId=Number(this.localStorage.getItem("nonprofit"))||null,this.selectionId=this.localStorage.getItem("transaction")||null,this.cartId=this.localStorage.getItemJson("cart")?.cartId||null,this.beamCartId=y(U)||null,this.selectionId&&this.nonprofitId&&(this.activeWidget="impact-overview")}async updated(o){[...h,...A].some(i=>o.has(i))&&await this.transactionDataController.exec()}render(){return this.transactionDataController.loading?"":this.transactionDataController.error?this.debug?b({error:this.transactionDataController.error}):"":this.activeWidget==="redeem-transaction"?l`
|
|
2
2
|
<beam-redeem-transaction
|
|
3
3
|
part="redeem-transaction"
|
|
4
4
|
baseUrl="${this.baseUrl}"
|
|
@@ -9,7 +9,7 @@ import{f as o,t as a,g as I,y as l}from"../chunks/lit-h1W25hjN.esm.js";import{a
|
|
|
9
9
|
cart="${JSON.stringify(this.cart)}"
|
|
10
10
|
lang="${this.lang}"
|
|
11
11
|
?debug="${this.debug}"
|
|
12
|
-
@beamnonprofitselect="${
|
|
12
|
+
@beamnonprofitselect="${o=>{if(!(o instanceof CustomEvent))return;const{selectedNonprofitId:i}=o.detail;this.nonprofitId=i??null,this.activeWidget="impact-overview"}}"
|
|
13
13
|
></beam-redeem-transaction>
|
|
14
14
|
`:this.activeWidget==="impact-overview"?l`
|
|
15
15
|
<beam-impact-overview
|
|
@@ -22,5 +22,5 @@ import{f as o,t as a,g as I,y as l}from"../chunks/lit-h1W25hjN.esm.js";import{a
|
|
|
22
22
|
lang="${this.lang}"
|
|
23
23
|
?debug="${this.debug}"
|
|
24
24
|
></beam-impact-overview>
|
|
25
|
-
`:""}}t.tagName="beam-post-purchase",t.styles=[u],e([
|
|
25
|
+
`:""}}t.tagName="beam-post-purchase",t.styles=[u],e([r({type:String})],t.prototype,"baseUrl",2),e([r({type:String})],t.prototype,"apiKey",2),e([r({type:Number,reflect:!0})],t.prototype,"storeId",2),e([r({type:String})],t.prototype,"postalCode",2),e([r({type:String})],t.prototype,"countryCode",2),e([r({type:String})],t.prototype,"orderId",2),e([r({type:String})],t.prototype,"email",2),e([r({type:Number})],t.prototype,"cartTotal",2),e([r({type:String})],t.prototype,"currencyCode",2),e([r({type:String})],t.prototype,"lang",2),e([r({type:Object})],t.prototype,"cart",2),e([r({type:Array})],t.prototype,"discountCodes",2),e([r({type:Boolean})],t.prototype,"debug",2),e([a()],t.prototype,"activeWidget",2),e([a()],t.prototype,"nonprofitId",2),e([a()],t.prototype,"selectionId",2),e([a()],t.prototype,"cartId",2),e([a()],t.prototype,"beamCartId",2),e([a()],t.prototype,"userId",2),e([a()],t.prototype,"transactionId",2),e([a()],t.prototype,"chainId",2),g(t);export{t as BeamPostPurchase};
|
|
26
26
|
//# sourceMappingURL=post-purchase.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-purchase.esm.js","sources":["../../src/components/post-purchase/index.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { getCookieValue } from \"../../shared/cookies\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { createScopedLocalStorage } from \"../../shared/local-storage\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport { getChainNonprofits, postTransaction } from \"../../api-sdk/v3/routes\";\nimport \"../redeem-transaction\";\nimport \"../impact-overview\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { BeamNonprofitSelectEvent } from \"../../shared/events\";\n\nconst REQUIRED_DATA_PROPS = [\"baseUrl\", \"apiKey\", \"orderId\", \"email\", \"cartTotal\", \"currencyCode\", \"lang\"];\nconst OPTIONAL_DATA_PROPS = [\"storeId\", \"postalCode\", \"countryCode\", \"cart\", \"discountCodes\"];\n\nexport class BeamPostPurchase extends LitElement {\n static tagName = \"beam-post-purchase\";\n\n @property({ type: String })\n public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String })\n public apiKey!: string;\n\n @property({ type: Number, reflect: true })\n public storeId?: number; // Either storeId or postalCode, countryCode must be provided\n\n @property({ type: String })\n public postalCode?: string;\n\n @property({ type: String })\n public countryCode?: string;\n\n @property({ type: String })\n public orderId!: string;\n\n @property({ type: String })\n public email!: string;\n\n @property({ type: Number })\n public cartTotal!: number;\n\n @property({ type: String })\n public currencyCode = \"USD\";\n\n @property({ type: String })\n public lang: LANGUAGES = \"en\";\n\n @property({ type: Object })\n public cart?: TCart;\n\n @property({ type: Array })\n public discountCodes?: string[];\n\n @property({ type: Boolean })\n public debug = false;\n\n @state() private activeWidget: \"redeem-transaction\" | \"impact-overview\" = \"redeem-transaction\";\n @state() private nonprofitId: number | null = null; // from localStorage or redeem-transaction result\n @state() private selectionId: string | null = null; // from localStorage\n @state() private cartId: string | null = null; // from localStorage, external cart ID\n @state() private beamCartId: string | null = null; // from cookie, Beam cart ID\n @state() private userId: string | null = null; // from postTransaction\n @state() private transactionId: string | null = null; // from postTransaction\n @state() private chainId: number | null = null; // from postTransaction, used by impact-overview\n\n private localStorage = createScopedLocalStorage(this);\n\n protected firstUpdated(_changedProperties: PropertyValues) {\n enforceConfig(REQUIRED_DATA_PROPS, this);\n this.nonprofitId = Number(this.localStorage.getItem(\"nonprofit\")) || null;\n this.selectionId = this.localStorage.getItem(\"transaction\") || null;\n this.cartId = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\")?.cartId || null;\n // Reading beamCartId from cookies instead of localStorage allows it to work across subdomains\n this.beamCartId = getCookieValue(BEAM_CART_COOKIE_NAME) || null;\n\n if (this.selectionId && this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n }\n\n willUpdate(previousPropertyValues: PropertyValues) {\n // Also fires on first load as props go from undefined => value\n const refreshOnChangeProps = [...REQUIRED_DATA_PROPS, ...OPTIONAL_DATA_PROPS];\n if (refreshOnChangeProps.some((p) => previousPropertyValues.has(p))) {\n this.transactionDataController.exec();\n }\n }\n\n handlePostTransaction = async () => {\n enforceConfig(REQUIRED_DATA_PROPS, this);\n\n if (!this.storeId && this.postalCode && this.countryCode) {\n const res = await getChainNonprofits({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n queryParams: {\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n widgetName: \"redeem-transaction\",\n version: \"1.0.0\",\n },\n });\n this.storeId = res.store?.id;\n }\n\n const result = await postTransaction({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n nonprofitId: this.nonprofitId ?? undefined,\n selectionId: this.selectionId ?? undefined,\n cartId: this.cartId ?? undefined,\n beamCartId: this.beamCartId ?? undefined,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n storeId: this.storeId!,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n email: this.email,\n currencyCode: this.currencyCode,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n cart: this.cart,\n discountCodes: this.discountCodes,\n },\n });\n\n this.transactionId = result.transactionId;\n this.chainId = result.chainId;\n this.userId = result.beamUserId;\n this.nonprofitId = result.nonprofitId;\n\n if (this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n\n this.localStorage.removeItem(\"transaction\");\n this.localStorage.removeItem(\"cart\");\n\n return result;\n };\n\n private transactionDataController = new AsyncController<typeof this.handlePostTransaction>(\n this,\n this.handlePostTransaction\n );\n\n render() {\n if (this.transactionDataController.loading) {\n return \"\";\n }\n if (this.transactionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.transactionDataController.error });\n }\n return \"\";\n }\n if (this.activeWidget === \"redeem-transaction\") {\n return html`\n <beam-redeem-transaction\n part=\"redeem-transaction\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n chainId=\"${this.chainId}\"\n storeId=\"${this.storeId}\"\n transactionId=\"${this.transactionId}\"\n cart=\"${JSON.stringify(this.cart)}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n @beamnonprofitselect=\"${(event: Event) => {\n if (!(event instanceof CustomEvent)) return; // TS guard\n const { selectedNonprofitId } = (event as BeamNonprofitSelectEvent).detail;\n this.nonprofitId = selectedNonprofitId ?? null;\n this.activeWidget = \"impact-overview\";\n }}\"\n ></beam-redeem-transaction>\n `;\n }\n if (this.activeWidget === \"impact-overview\") {\n return html`\n <beam-impact-overview\n part=\"impact-overview\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n chainId=\"${this.chainId}\"\n userId=\"${this.userId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n ></beam-impact-overview>\n `;\n }\n return \"\";\n }\n\n static styles = [cssReset];\n}\n\ndefineCustomElement(BeamPostPurchase);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-post-purchase\": BeamPostPurchase;\n }\n}\n"],"names":["m","u","t","s","a","e","i","o","l","d","REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","enforceConfig","res","getChainNonprofits","result","postTransaction","AsyncController","_changedProperties","getCookieValue","BEAM_CART_COOKIE_NAME","previousPropertyValues","p","_errorMessage","html","event","selectedNonprofitId","cssReset","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"post-purchase.esm.js","sources":["../../src/components/post-purchase/index.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { getCookieValue } from \"../../shared/cookies\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { createScopedLocalStorage } from \"../../shared/local-storage\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport { getChainNonprofits, postTransaction } from \"../../api-sdk/v3/routes\";\nimport \"../redeem-transaction\";\nimport \"../impact-overview\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { BeamNonprofitSelectEvent } from \"../../shared/events\";\n\nconst REQUIRED_DATA_PROPS = [\"baseUrl\", \"apiKey\", \"orderId\", \"email\", \"cartTotal\", \"currencyCode\", \"lang\"];\nconst OPTIONAL_DATA_PROPS = [\"storeId\", \"postalCode\", \"countryCode\", \"cart\", \"discountCodes\"];\n\nexport class BeamPostPurchase extends LitElement {\n static tagName = \"beam-post-purchase\";\n\n @property({ type: String })\n public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String })\n public apiKey!: string;\n\n @property({ type: Number, reflect: true })\n public storeId?: number; // Either storeId or postalCode, countryCode must be provided\n\n @property({ type: String })\n public postalCode?: string;\n\n @property({ type: String })\n public countryCode?: string;\n\n @property({ type: String })\n public orderId!: string;\n\n @property({ type: String })\n public email!: string;\n\n @property({ type: Number })\n public cartTotal!: number;\n\n @property({ type: String })\n public currencyCode = \"USD\";\n\n @property({ type: String })\n public lang: LANGUAGES = \"en\";\n\n @property({ type: Object })\n public cart?: TCart;\n\n @property({ type: Array })\n public discountCodes?: string[];\n\n @property({ type: Boolean })\n public debug = false;\n\n @state() private activeWidget: \"redeem-transaction\" | \"impact-overview\" = \"redeem-transaction\";\n @state() private nonprofitId: number | null = null; // from localStorage or redeem-transaction result\n @state() private selectionId: string | null = null; // from localStorage\n @state() private cartId: string | null = null; // from localStorage, external cart ID\n @state() private beamCartId: string | null = null; // from cookie, Beam cart ID\n @state() private userId: string | null = null; // from postTransaction\n @state() private transactionId: string | null = null; // from postTransaction\n @state() private chainId: number | null = null; // from postTransaction, used by impact-overview\n\n private localStorage = createScopedLocalStorage(this);\n\n firstUpdated(_changedProperties: PropertyValues) {\n enforceConfig(REQUIRED_DATA_PROPS, this);\n this.nonprofitId = Number(this.localStorage.getItem(\"nonprofit\")) || null;\n this.selectionId = this.localStorage.getItem(\"transaction\") || null;\n this.cartId = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\")?.cartId || null;\n // Reading beamCartId from cookies instead of localStorage allows it to work across subdomains\n this.beamCartId = getCookieValue(BEAM_CART_COOKIE_NAME) || null;\n\n if (this.selectionId && this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n }\n\n async updated(previousPropertyValues: PropertyValues) {\n // Also fires on first load as props go from undefined => value\n const refreshOnChangeProps = [...REQUIRED_DATA_PROPS, ...OPTIONAL_DATA_PROPS];\n if (refreshOnChangeProps.some((p) => previousPropertyValues.has(p))) {\n await this.transactionDataController.exec();\n }\n }\n\n handlePostTransaction = async () => {\n enforceConfig(REQUIRED_DATA_PROPS, this);\n\n if (!this.storeId && this.postalCode && this.countryCode) {\n const res = await getChainNonprofits({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n queryParams: {\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n widgetName: \"redeem-transaction\",\n version: \"1.0.0\",\n },\n });\n this.storeId = res.store?.id;\n }\n\n const result = await postTransaction({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n nonprofitId: this.nonprofitId ?? undefined,\n selectionId: this.selectionId ?? undefined,\n cartId: this.cartId ?? undefined,\n beamCartId: this.beamCartId ?? undefined,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n storeId: this.storeId!,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n email: this.email,\n currencyCode: this.currencyCode,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n cart: this.cart,\n discountCodes: this.discountCodes,\n },\n });\n\n this.transactionId = result.transactionId;\n this.chainId = result.chainId;\n this.userId = result.beamUserId;\n this.nonprofitId = result.nonprofitId;\n\n if (this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n\n this.localStorage.removeItem(\"transaction\");\n this.localStorage.removeItem(\"cart\");\n\n return result;\n };\n\n private transactionDataController = new AsyncController<typeof this.handlePostTransaction>(\n this,\n this.handlePostTransaction\n );\n\n render() {\n if (this.transactionDataController.loading) {\n return \"\";\n }\n if (this.transactionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.transactionDataController.error });\n }\n return \"\";\n }\n if (this.activeWidget === \"redeem-transaction\") {\n return html`\n <beam-redeem-transaction\n part=\"redeem-transaction\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n chainId=\"${this.chainId}\"\n storeId=\"${this.storeId}\"\n transactionId=\"${this.transactionId}\"\n cart=\"${JSON.stringify(this.cart)}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n @beamnonprofitselect=\"${(event: Event) => {\n if (!(event instanceof CustomEvent)) return; // TS guard\n const { selectedNonprofitId } = (event as BeamNonprofitSelectEvent).detail;\n this.nonprofitId = selectedNonprofitId ?? null;\n this.activeWidget = \"impact-overview\";\n }}\"\n ></beam-redeem-transaction>\n `;\n }\n if (this.activeWidget === \"impact-overview\") {\n return html`\n <beam-impact-overview\n part=\"impact-overview\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n chainId=\"${this.chainId}\"\n userId=\"${this.userId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n ></beam-impact-overview>\n `;\n }\n return \"\";\n }\n\n static styles = [cssReset];\n}\n\ndefineCustomElement(BeamPostPurchase);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-post-purchase\": BeamPostPurchase;\n }\n}\n"],"names":["m","u","t","s","a","e","i","n","l","d","REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","enforceConfig","res","getChainNonprofits","result","postTransaction","AsyncController","_changedProperties","getCookieValue","BEAM_CART_COOKIE_NAME","previousPropertyValues","p","_errorMessage","html","event","selectedNonprofitId","cssReset","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{f as
|
|
1
|
+
import{f as r,t as a,g as I,y as l}from"../chunks/lit-h1W25hjN.esm.js";import{a as y}from"../chunks/cookies-BnIoXWd0.esm.js";import{c as u,d as g,e as m,A as C,_ as b}from"../chunks/localize-e-mss8ya.esm.js";import{c as f}from"../chunks/local-storage-Rrnk_Dg-.esm.js";import{D as v,g as $,a as S}from"../chunks/routes-wndAQJwE.esm.js";import"./redeem-transaction.js";import"./impact-overview.js";import{B as U}from"../chunks/cart-contents-h60geKWa.esm.js";import"../chunks/beam-errors-l02WBee5.esm.js";import"../chunks/logger-ad87ovol.esm.js";import"../chunks/lodash-ZxBiuGue.esm.js";import"../chunks/progress-bar-w3yfrrxD.esm.js";import"./beam-partner-logos.js";import"../chunks/css-card-grid-RRkoiUTl.esm.js";import"../chunks/events-rRSQYdP1.esm.js";import"../chunks/vendor-IGhQoYCM.esm.js";import"../chunks/is-all-html-elements-SdSkxirh.esm.js";import"../chunks/responsive-Rehmv-eo.esm.js";var w=Object.defineProperty,K=Object.getOwnPropertyDescriptor,e=(d,o,i,n)=>{for(var s=n>1?void 0:n?K(o,i):o,p=d.length-1,c;p>=0;p--)(c=d[p])&&(s=(n?c(o,i,s):c(s))||s);return n&&s&&w(o,i,s),s};const h=["baseUrl","apiKey","orderId","email","cartTotal","currencyCode","lang"],A=["storeId","postalCode","countryCode","cart","discountCodes"];class t extends I{constructor(){super(...arguments),this.baseUrl=v,this.currencyCode="USD",this.lang="en",this.debug=!1,this.activeWidget="redeem-transaction",this.nonprofitId=null,this.selectionId=null,this.cartId=null,this.beamCartId=null,this.userId=null,this.transactionId=null,this.chainId=null,this.localStorage=f(this),this.handlePostTransaction=async()=>{if(m(h,this),!this.storeId&&this.postalCode&&this.countryCode){const i=await $({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},queryParams:{postalCode:this.postalCode,countryCode:this.countryCode,widgetName:"redeem-transaction",version:"1.0.0"}});this.storeId=i.store?.id}const o=await S({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{nonprofitId:this.nonprofitId??void 0,selectionId:this.selectionId??void 0,cartId:this.cartId??void 0,beamCartId:this.beamCartId??void 0,storeId:this.storeId,orderId:this.orderId,cartTotal:this.cartTotal,email:this.email,currencyCode:this.currencyCode,postalCode:this.postalCode,countryCode:this.countryCode,cart:this.cart,discountCodes:this.discountCodes}});return this.transactionId=o.transactionId,this.chainId=o.chainId,this.userId=o.beamUserId,this.nonprofitId=o.nonprofitId,this.nonprofitId&&(this.activeWidget="impact-overview"),this.localStorage.removeItem("transaction"),this.localStorage.removeItem("cart"),o},this.transactionDataController=new C(this,this.handlePostTransaction)}firstUpdated(o){m(h,this),this.nonprofitId=Number(this.localStorage.getItem("nonprofit"))||null,this.selectionId=this.localStorage.getItem("transaction")||null,this.cartId=this.localStorage.getItemJson("cart")?.cartId||null,this.beamCartId=y(U)||null,this.selectionId&&this.nonprofitId&&(this.activeWidget="impact-overview")}async updated(o){[...h,...A].some(i=>o.has(i))&&await this.transactionDataController.exec()}render(){return this.transactionDataController.loading?"":this.transactionDataController.error?this.debug?b({error:this.transactionDataController.error}):"":this.activeWidget==="redeem-transaction"?l`
|
|
2
2
|
<beam-redeem-transaction
|
|
3
3
|
part="redeem-transaction"
|
|
4
4
|
baseUrl="${this.baseUrl}"
|
|
@@ -9,7 +9,7 @@ import{f as o,t as a,g as I,y as l}from"../chunks/lit-h1W25hjN.esm.js";import{a
|
|
|
9
9
|
cart="${JSON.stringify(this.cart)}"
|
|
10
10
|
lang="${this.lang}"
|
|
11
11
|
?debug="${this.debug}"
|
|
12
|
-
@beamnonprofitselect="${
|
|
12
|
+
@beamnonprofitselect="${o=>{if(!(o instanceof CustomEvent))return;const{selectedNonprofitId:i}=o.detail;this.nonprofitId=i??null,this.activeWidget="impact-overview"}}"
|
|
13
13
|
></beam-redeem-transaction>
|
|
14
14
|
`:this.activeWidget==="impact-overview"?l`
|
|
15
15
|
<beam-impact-overview
|
|
@@ -22,5 +22,5 @@ import{f as o,t as a,g as I,y as l}from"../chunks/lit-h1W25hjN.esm.js";import{a
|
|
|
22
22
|
lang="${this.lang}"
|
|
23
23
|
?debug="${this.debug}"
|
|
24
24
|
></beam-impact-overview>
|
|
25
|
-
`:""}}t.tagName="beam-post-purchase",t.styles=[u],e([
|
|
25
|
+
`:""}}t.tagName="beam-post-purchase",t.styles=[u],e([r({type:String})],t.prototype,"baseUrl",2),e([r({type:String})],t.prototype,"apiKey",2),e([r({type:Number,reflect:!0})],t.prototype,"storeId",2),e([r({type:String})],t.prototype,"postalCode",2),e([r({type:String})],t.prototype,"countryCode",2),e([r({type:String})],t.prototype,"orderId",2),e([r({type:String})],t.prototype,"email",2),e([r({type:Number})],t.prototype,"cartTotal",2),e([r({type:String})],t.prototype,"currencyCode",2),e([r({type:String})],t.prototype,"lang",2),e([r({type:Object})],t.prototype,"cart",2),e([r({type:Array})],t.prototype,"discountCodes",2),e([r({type:Boolean})],t.prototype,"debug",2),e([a()],t.prototype,"activeWidget",2),e([a()],t.prototype,"nonprofitId",2),e([a()],t.prototype,"selectionId",2),e([a()],t.prototype,"cartId",2),e([a()],t.prototype,"beamCartId",2),e([a()],t.prototype,"userId",2),e([a()],t.prototype,"transactionId",2),e([a()],t.prototype,"chainId",2),g(t);export{t as BeamPostPurchase};
|
|
26
26
|
//# sourceMappingURL=post-purchase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-purchase.js","sources":["../../src/components/post-purchase/index.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { getCookieValue } from \"../../shared/cookies\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { createScopedLocalStorage } from \"../../shared/local-storage\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport { getChainNonprofits, postTransaction } from \"../../api-sdk/v3/routes\";\nimport \"../redeem-transaction\";\nimport \"../impact-overview\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { BeamNonprofitSelectEvent } from \"../../shared/events\";\n\nconst REQUIRED_DATA_PROPS = [\"baseUrl\", \"apiKey\", \"orderId\", \"email\", \"cartTotal\", \"currencyCode\", \"lang\"];\nconst OPTIONAL_DATA_PROPS = [\"storeId\", \"postalCode\", \"countryCode\", \"cart\", \"discountCodes\"];\n\nexport class BeamPostPurchase extends LitElement {\n static tagName = \"beam-post-purchase\";\n\n @property({ type: String })\n public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String })\n public apiKey!: string;\n\n @property({ type: Number, reflect: true })\n public storeId?: number; // Either storeId or postalCode, countryCode must be provided\n\n @property({ type: String })\n public postalCode?: string;\n\n @property({ type: String })\n public countryCode?: string;\n\n @property({ type: String })\n public orderId!: string;\n\n @property({ type: String })\n public email!: string;\n\n @property({ type: Number })\n public cartTotal!: number;\n\n @property({ type: String })\n public currencyCode = \"USD\";\n\n @property({ type: String })\n public lang: LANGUAGES = \"en\";\n\n @property({ type: Object })\n public cart?: TCart;\n\n @property({ type: Array })\n public discountCodes?: string[];\n\n @property({ type: Boolean })\n public debug = false;\n\n @state() private activeWidget: \"redeem-transaction\" | \"impact-overview\" = \"redeem-transaction\";\n @state() private nonprofitId: number | null = null; // from localStorage or redeem-transaction result\n @state() private selectionId: string | null = null; // from localStorage\n @state() private cartId: string | null = null; // from localStorage, external cart ID\n @state() private beamCartId: string | null = null; // from cookie, Beam cart ID\n @state() private userId: string | null = null; // from postTransaction\n @state() private transactionId: string | null = null; // from postTransaction\n @state() private chainId: number | null = null; // from postTransaction, used by impact-overview\n\n private localStorage = createScopedLocalStorage(this);\n\n protected firstUpdated(_changedProperties: PropertyValues) {\n enforceConfig(REQUIRED_DATA_PROPS, this);\n this.nonprofitId = Number(this.localStorage.getItem(\"nonprofit\")) || null;\n this.selectionId = this.localStorage.getItem(\"transaction\") || null;\n this.cartId = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\")?.cartId || null;\n // Reading beamCartId from cookies instead of localStorage allows it to work across subdomains\n this.beamCartId = getCookieValue(BEAM_CART_COOKIE_NAME) || null;\n\n if (this.selectionId && this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n }\n\n willUpdate(previousPropertyValues: PropertyValues) {\n // Also fires on first load as props go from undefined => value\n const refreshOnChangeProps = [...REQUIRED_DATA_PROPS, ...OPTIONAL_DATA_PROPS];\n if (refreshOnChangeProps.some((p) => previousPropertyValues.has(p))) {\n this.transactionDataController.exec();\n }\n }\n\n handlePostTransaction = async () => {\n enforceConfig(REQUIRED_DATA_PROPS, this);\n\n if (!this.storeId && this.postalCode && this.countryCode) {\n const res = await getChainNonprofits({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n queryParams: {\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n widgetName: \"redeem-transaction\",\n version: \"1.0.0\",\n },\n });\n this.storeId = res.store?.id;\n }\n\n const result = await postTransaction({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n nonprofitId: this.nonprofitId ?? undefined,\n selectionId: this.selectionId ?? undefined,\n cartId: this.cartId ?? undefined,\n beamCartId: this.beamCartId ?? undefined,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n storeId: this.storeId!,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n email: this.email,\n currencyCode: this.currencyCode,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n cart: this.cart,\n discountCodes: this.discountCodes,\n },\n });\n\n this.transactionId = result.transactionId;\n this.chainId = result.chainId;\n this.userId = result.beamUserId;\n this.nonprofitId = result.nonprofitId;\n\n if (this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n\n this.localStorage.removeItem(\"transaction\");\n this.localStorage.removeItem(\"cart\");\n\n return result;\n };\n\n private transactionDataController = new AsyncController<typeof this.handlePostTransaction>(\n this,\n this.handlePostTransaction\n );\n\n render() {\n if (this.transactionDataController.loading) {\n return \"\";\n }\n if (this.transactionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.transactionDataController.error });\n }\n return \"\";\n }\n if (this.activeWidget === \"redeem-transaction\") {\n return html`\n <beam-redeem-transaction\n part=\"redeem-transaction\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n chainId=\"${this.chainId}\"\n storeId=\"${this.storeId}\"\n transactionId=\"${this.transactionId}\"\n cart=\"${JSON.stringify(this.cart)}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n @beamnonprofitselect=\"${(event: Event) => {\n if (!(event instanceof CustomEvent)) return; // TS guard\n const { selectedNonprofitId } = (event as BeamNonprofitSelectEvent).detail;\n this.nonprofitId = selectedNonprofitId ?? null;\n this.activeWidget = \"impact-overview\";\n }}\"\n ></beam-redeem-transaction>\n `;\n }\n if (this.activeWidget === \"impact-overview\") {\n return html`\n <beam-impact-overview\n part=\"impact-overview\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n chainId=\"${this.chainId}\"\n userId=\"${this.userId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n ></beam-impact-overview>\n `;\n }\n return \"\";\n }\n\n static styles = [cssReset];\n}\n\ndefineCustomElement(BeamPostPurchase);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-post-purchase\": BeamPostPurchase;\n }\n}\n"],"names":["m","u","t","s","a","e","i","o","l","d","REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","enforceConfig","res","getChainNonprofits","result","postTransaction","AsyncController","_changedProperties","getCookieValue","BEAM_CART_COOKIE_NAME","previousPropertyValues","p","_errorMessage","html","event","selectedNonprofitId","cssReset","__decorateClass","property","state","defineCustomElement"],"mappings":"63BAAA,IAAAA,EAAA,OAAA,eAAAC,EAAA,OAAA,yBAAAC,EAAA,CAAAC,EAAAC,EAAAC,EAAAC,IAAA,CAAA,QAAAC,EAAAD,EAAA,EAAA,OAAAA,EAAAL,EAAAG,EAAAC,CAAA,EAAAD,EAAAI,EAAAL,EAAA,OAAA,EAAAM,EAAAD,GAAA,EAAAA,KAAAC,EAAAN,EAAAK,CAAA,KAAAD,GAAAD,EAAAG,EAAAL,EAAAC,EAAAE,CAAA,EAAAE,EAAAF,CAAA,IAAAA,GAAA,OAAAD,GAAAC,GAAAP,EAAAI,EAAAC,EAAAE,CAAA,EAAAA,CAAA,EAkBA,MAAMG,EAAsB,CAAC,UAAW,SAAU,UAAW,QAAS,YAAa,eAAgB,MAAM,EACnGC,EAAsB,CAAC,UAAW,aAAc,cAAe,OAAQ,eAAe,EAE/E,MAAAC,UAAyBC,CAAW,CAA1C,aAAA,CAAA,MAAA,GAAA,SAAA,EAIL,KAAO,QAAkBC,EAwBzB,KAAO,aAAe,MAGtB,KAAO,KAAkB,KASzB,KAAO,MAAQ,GAEN,KAAQ,aAAyD,qBACjE,KAAQ,YAA6B,KACrC,KAAQ,YAA6B,KACrC,KAAQ,OAAwB,KAChC,KAAQ,WAA4B,KACpC,KAAQ,OAAwB,KAChC,KAAQ,cAA+B,KACvC,KAAQ,QAAyB,KAE1C,KAAQ,aAAeC,EAAyB,IAAI,EAuBpD,2BAAwB,SAAY,CAGlC,GAFAC,EAAcN,EAAqB,IAAI,EAEnC,CAAC,KAAK,SAAW,KAAK,YAAc,KAAK,YAAa,CACxD,MAAMO,EAAM,MAAMC,EAAmB,CACnC,QAAS,KAAK,QACd,QAAS,CACP,cAAe,WAAW,KAAK,MAAM,EACvC,EACA,YAAa,CACX,WAAY,KAAK,WACjB,YAAa,KAAK,YAClB,WAAY,qBACZ,QAAS,OACX,CACF,CAAC,EACD,KAAK,QAAUD,EAAI,OAAO,EAC5B,CAEA,MAAME,EAAS,MAAMC,EAAgB,CACnC,QAAS,KAAK,QACd,QAAS,CACP,cAAe,WAAW,KAAK,MAAM,EACvC,EACA,YAAa,CACX,YAAa,KAAK,aAAe,OACjC,YAAa,KAAK,aAAe,OACjC,OAAQ,KAAK,QAAU,OACvB,WAAY,KAAK,YAAc,OAE/B,QAAS,KAAK,QACd,QAAS,KAAK,QACd,UAAW,KAAK,UAChB,MAAO,KAAK,MACZ,aAAc,KAAK,aACnB,WAAY,KAAK,WACjB,YAAa,KAAK,YAClB,KAAM,KAAK,KACX,cAAe,KAAK,aACtB,CACF,CAAC,EAED,OAAA,KAAK,cAAgBD,EAAO,cAC5B,KAAK,QAAUA,EAAO,QACtB,KAAK,OAASA,EAAO,WACrB,KAAK,YAAcA,EAAO,YAEtB,KAAK,cACP,KAAK,aAAe,mBAGtB,KAAK,aAAa,WAAW,aAAa,EAC1C,KAAK,aAAa,WAAW,MAAM,EAE5BA,CACT,EAEA,KAAQ,0BAA4B,IAAIE,EACtC,KACA,KAAK,qBACP,CAjFU,CAAA,aAAaC,EAAoC,CACzDN,EAAcN,EAAqB,IAAI,EACvC,KAAK,YAAc,OAAO,KAAK,aAAa,QAAQ,WAAW,CAAC,GAAK,KACrE,KAAK,YAAc,KAAK,aAAa,QAAQ,aAAa,GAAK,KAC/D,KAAK,OAAS,KAAK,aAAa,YAAmC,MAAM,GAAG,QAAU,KAEtF,KAAK,WAAaa,EAAeC,CAAqB,GAAK,KAEvD,KAAK,aAAe,KAAK,cAC3B,KAAK,aAAe,kBAExB,CAEA,WAAWC,EAAwC,CAEpB,CAAC,GAAGf,EAAqB,GAAGC,CAAmB,EACnD,KAAMe,GAAMD,EAAuB,IAAIC,CAAC,CAAC,GAChE,KAAK,0BAA0B,KAAA,CAEnC,CAgEA,QAAS,CACP,OAAI,KAAK,0BAA0B,QAC1B,GAEL,KAAK,0BAA0B,MAC7B,KAAK,MACAC,EAAc,CAAE,MAAO,KAAK,0BAA0B,KAAM,CAAC,EAE/D,GAEL,KAAK,eAAiB,qBACjBC;AAAAA;AAAAA;AAAAA,qBAGQ,KAAK,OAAO;AAAA,oBACb,KAAK,MAAM;AAAA,qBACV,KAAK,OAAO;AAAA,qBACZ,KAAK,OAAO;AAAA,2BACN,KAAK,aAAa;AAAA,kBAC3B,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA,kBACzB,KAAK,IAAI;AAAA,oBACP,KAAK,KAAK;AAAA,kCACKC,GAAiB,CACxC,GAAI,EAAEA,aAAiB,aAAc,OACrC,KAAM,CAAE,oBAAAC,CAAoB,EAAKD,EAAmC,OACpE,KAAK,YAAcC,GAAuB,KAC1C,KAAK,aAAe,iBACtB,CAAC;AAAA;AAAA,QAIH,KAAK,eAAiB,kBACjBF;AAAAA;AAAAA;AAAAA,qBAGQ,KAAK,OAAO;AAAA,oBACb,KAAK,MAAM;AAAA,qBACV,KAAK,OAAO;AAAA,oBACb,KAAK,MAAM;AAAA,yBACN,KAAK,WAAW;AAAA,kBACvB,KAAK,IAAI;AAAA,oBACP,KAAK,KAAK;AAAA;AAAA,QAInB,EACT,CAGF,CAzLahB,EACJ,QAAU,qBADNA,EAwLJ,OAAS,CAACmB,CAAQ,EApLlBC,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAAA,EAHfrB,EAIJ,UAGAoB,UAAAA,CAAAA,EAAAA,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,GANfrB,EAOJ,UAAA,SAAA,CAAA,EAGAoB,EAAA,CADNC,EAAS,CAAE,KAAM,OAAQ,QAAS,EAAK,CAAC,GAT9BrB,EAUJ,UAAA,UAAA,CAAA,EAGAoB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,GAZfrB,EAaJ,UAAA,aAAA,CAAA,EAGAoB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAff,EAAArB,EAgBJ,2BAGAoB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAAA,EAlBfrB,EAmBJ,UAGAoB,UAAAA,CAAAA,EAAAA,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,GArBfrB,EAsBJ,UAAA,QAAA,CAAA,EAGAoB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAxBf,EAAArB,EAyBJ,UAGAoB,YAAAA,CAAAA,EAAAA,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CA3Bf,EAAArB,EA4BJ,4BAGAoB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAAA,EA9BfrB,EA+BJ,UAGAoB,OAAAA,CAAAA,EAAAA,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,GAjCfrB,EAkCJ,UAAA,OAAA,CAAA,EAGAoB,EAAA,CADNC,EAAS,CAAE,KAAM,KAAM,CAAC,CApCd,EAAArB,EAqCJ,6BAGAoB,EAAA,CADNC,EAAS,CAAE,KAAM,OAAQ,CAAC,CAAA,EAvChBrB,EAwCJ,UAAA,QAAA,CAAA,EAEUoB,EAAA,CAAhBE,GA1CU,EAAAtB,EA0CM,4BACAoB,EAAA,CAAhBE,GA3CU,EAAAtB,EA2CM,2BACAoB,EAAA,CAAhBE,EA5CU,CAAA,EAAAtB,EA4CM,2BACAoB,EAAA,CAAhBE,EA7CU,CAAA,EAAAtB,EA6CM,sBACAoB,EAAA,CAAhBE,EA9CU,CAAA,EAAAtB,EA8CM,0BACAoB,EAAA,CAAhBE,GA/CU,EAAAtB,EA+CM,sBACAoB,EAAA,CAAhBE,GAhDU,EAAAtB,EAgDM,6BACAoB,EAAA,CAAhBE,GAjDU,EAAAtB,EAiDM,UA0InBuB,UAAAA,CAAAA,EAAAA,EAAoBvB,CAAgB"}
|
|
1
|
+
{"version":3,"file":"post-purchase.js","sources":["../../src/components/post-purchase/index.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { getCookieValue } from \"../../shared/cookies\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { createScopedLocalStorage } from \"../../shared/local-storage\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport { getChainNonprofits, postTransaction } from \"../../api-sdk/v3/routes\";\nimport \"../redeem-transaction\";\nimport \"../impact-overview\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { BeamNonprofitSelectEvent } from \"../../shared/events\";\n\nconst REQUIRED_DATA_PROPS = [\"baseUrl\", \"apiKey\", \"orderId\", \"email\", \"cartTotal\", \"currencyCode\", \"lang\"];\nconst OPTIONAL_DATA_PROPS = [\"storeId\", \"postalCode\", \"countryCode\", \"cart\", \"discountCodes\"];\n\nexport class BeamPostPurchase extends LitElement {\n static tagName = \"beam-post-purchase\";\n\n @property({ type: String })\n public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String })\n public apiKey!: string;\n\n @property({ type: Number, reflect: true })\n public storeId?: number; // Either storeId or postalCode, countryCode must be provided\n\n @property({ type: String })\n public postalCode?: string;\n\n @property({ type: String })\n public countryCode?: string;\n\n @property({ type: String })\n public orderId!: string;\n\n @property({ type: String })\n public email!: string;\n\n @property({ type: Number })\n public cartTotal!: number;\n\n @property({ type: String })\n public currencyCode = \"USD\";\n\n @property({ type: String })\n public lang: LANGUAGES = \"en\";\n\n @property({ type: Object })\n public cart?: TCart;\n\n @property({ type: Array })\n public discountCodes?: string[];\n\n @property({ type: Boolean })\n public debug = false;\n\n @state() private activeWidget: \"redeem-transaction\" | \"impact-overview\" = \"redeem-transaction\";\n @state() private nonprofitId: number | null = null; // from localStorage or redeem-transaction result\n @state() private selectionId: string | null = null; // from localStorage\n @state() private cartId: string | null = null; // from localStorage, external cart ID\n @state() private beamCartId: string | null = null; // from cookie, Beam cart ID\n @state() private userId: string | null = null; // from postTransaction\n @state() private transactionId: string | null = null; // from postTransaction\n @state() private chainId: number | null = null; // from postTransaction, used by impact-overview\n\n private localStorage = createScopedLocalStorage(this);\n\n firstUpdated(_changedProperties: PropertyValues) {\n enforceConfig(REQUIRED_DATA_PROPS, this);\n this.nonprofitId = Number(this.localStorage.getItem(\"nonprofit\")) || null;\n this.selectionId = this.localStorage.getItem(\"transaction\") || null;\n this.cartId = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\")?.cartId || null;\n // Reading beamCartId from cookies instead of localStorage allows it to work across subdomains\n this.beamCartId = getCookieValue(BEAM_CART_COOKIE_NAME) || null;\n\n if (this.selectionId && this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n }\n\n async updated(previousPropertyValues: PropertyValues) {\n // Also fires on first load as props go from undefined => value\n const refreshOnChangeProps = [...REQUIRED_DATA_PROPS, ...OPTIONAL_DATA_PROPS];\n if (refreshOnChangeProps.some((p) => previousPropertyValues.has(p))) {\n await this.transactionDataController.exec();\n }\n }\n\n handlePostTransaction = async () => {\n enforceConfig(REQUIRED_DATA_PROPS, this);\n\n if (!this.storeId && this.postalCode && this.countryCode) {\n const res = await getChainNonprofits({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n queryParams: {\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n widgetName: \"redeem-transaction\",\n version: \"1.0.0\",\n },\n });\n this.storeId = res.store?.id;\n }\n\n const result = await postTransaction({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n nonprofitId: this.nonprofitId ?? undefined,\n selectionId: this.selectionId ?? undefined,\n cartId: this.cartId ?? undefined,\n beamCartId: this.beamCartId ?? undefined,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n storeId: this.storeId!,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n email: this.email,\n currencyCode: this.currencyCode,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n cart: this.cart,\n discountCodes: this.discountCodes,\n },\n });\n\n this.transactionId = result.transactionId;\n this.chainId = result.chainId;\n this.userId = result.beamUserId;\n this.nonprofitId = result.nonprofitId;\n\n if (this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n\n this.localStorage.removeItem(\"transaction\");\n this.localStorage.removeItem(\"cart\");\n\n return result;\n };\n\n private transactionDataController = new AsyncController<typeof this.handlePostTransaction>(\n this,\n this.handlePostTransaction\n );\n\n render() {\n if (this.transactionDataController.loading) {\n return \"\";\n }\n if (this.transactionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.transactionDataController.error });\n }\n return \"\";\n }\n if (this.activeWidget === \"redeem-transaction\") {\n return html`\n <beam-redeem-transaction\n part=\"redeem-transaction\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n chainId=\"${this.chainId}\"\n storeId=\"${this.storeId}\"\n transactionId=\"${this.transactionId}\"\n cart=\"${JSON.stringify(this.cart)}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n @beamnonprofitselect=\"${(event: Event) => {\n if (!(event instanceof CustomEvent)) return; // TS guard\n const { selectedNonprofitId } = (event as BeamNonprofitSelectEvent).detail;\n this.nonprofitId = selectedNonprofitId ?? null;\n this.activeWidget = \"impact-overview\";\n }}\"\n ></beam-redeem-transaction>\n `;\n }\n if (this.activeWidget === \"impact-overview\") {\n return html`\n <beam-impact-overview\n part=\"impact-overview\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n chainId=\"${this.chainId}\"\n userId=\"${this.userId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n ></beam-impact-overview>\n `;\n }\n return \"\";\n }\n\n static styles = [cssReset];\n}\n\ndefineCustomElement(BeamPostPurchase);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-post-purchase\": BeamPostPurchase;\n }\n}\n"],"names":["m","u","t","s","a","e","i","n","l","d","REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","enforceConfig","res","getChainNonprofits","result","postTransaction","AsyncController","_changedProperties","getCookieValue","BEAM_CART_COOKIE_NAME","previousPropertyValues","p","_errorMessage","html","event","selectedNonprofitId","cssReset","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
|
|
@@ -34,9 +34,9 @@ declare class BeamRedeemTransaction extends LitElement {
|
|
|
34
34
|
private nonprofitListDataController;
|
|
35
35
|
private selectionDataController;
|
|
36
36
|
private localStorage;
|
|
37
|
-
willUpdate(previousPropertyValues: PropertyValues): Promise<void>;
|
|
38
37
|
connectedCallback(): void;
|
|
39
38
|
firstUpdated(_changedProperties: PropertyValues): Promise<void>;
|
|
39
|
+
updated(previousPropertyValues: PropertyValues): Promise<void>;
|
|
40
40
|
disconnectedCallback(): void;
|
|
41
41
|
private restoreStateFromCache;
|
|
42
42
|
/**
|