@beamimpact/web-sdk 1.51.1 → 1.52.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{_share-dialog-dependencies-CHbTSPha.esm.js → _share-dialog-dependencies-BwdvNwrJ.esm.js} +2 -2
- package/dist/chunks/{_share-dialog-dependencies-CHbTSPha.esm.js.map → _share-dialog-dependencies-BwdvNwrJ.esm.js.map} +1 -1
- package/dist/chunks/{_share-dialog-dependencies-B3N69ml2.esm.js → _share-dialog-dependencies-QaTONkKb.esm.js} +2 -2
- package/dist/chunks/{_share-dialog-dependencies-B3N69ml2.esm.js.map → _share-dialog-dependencies-QaTONkKb.esm.js.map} +1 -1
- package/dist/chunks/{css-card-grid-B6IEaTiP.esm.js → css-card-grid-CvoGpsJH.esm.js} +2 -2
- package/dist/chunks/{css-card-grid-B6IEaTiP.esm.js.map → css-card-grid-CvoGpsJH.esm.js.map} +1 -1
- package/dist/chunks/{enforce-config-CQb5MiAV.esm.js → enforce-config-Ba1JkOHs.esm.js} +2 -2
- package/dist/chunks/{enforce-config-CQb5MiAV.esm.js.map → enforce-config-Ba1JkOHs.esm.js.map} +1 -1
- package/dist/chunks/{enforce-config-Cw52SuAc.esm.js → enforce-config-CZ3ToOgr.esm.js} +2 -2
- package/dist/chunks/{enforce-config-Cw52SuAc.esm.js.map → enforce-config-CZ3ToOgr.esm.js.map} +1 -1
- package/dist/chunks/index-B5vRxWI3.esm.js +2 -0
- package/dist/chunks/index-B5vRxWI3.esm.js.map +1 -0
- package/dist/chunks/{index-BQ4Nr7Ux.esm.js → index-BNjsFEGn.esm.js} +2 -2
- package/dist/chunks/{index-BQ4Nr7Ux.esm.js.map → index-BNjsFEGn.esm.js.map} +1 -1
- package/dist/chunks/index-BsuCVFh-.esm.js +2 -0
- package/dist/chunks/index-BsuCVFh-.esm.js.map +1 -0
- package/dist/chunks/index-C9SnlT_2.esm.js +2 -0
- package/dist/chunks/index-C9SnlT_2.esm.js.map +1 -0
- package/dist/chunks/index-CFZqe2Wn.esm.js +2 -0
- package/dist/chunks/index-CFZqe2Wn.esm.js.map +1 -0
- package/dist/chunks/index-CTt5RnKY.esm.js +2 -0
- package/dist/chunks/index-CTt5RnKY.esm.js.map +1 -0
- package/dist/chunks/{index-kDoWfjd5.esm.js → index-DElVAjg2.esm.js} +2 -2
- package/dist/chunks/{index-kDoWfjd5.esm.js.map → index-DElVAjg2.esm.js.map} +1 -1
- package/dist/chunks/{index-CFYWEffm.esm.js → index-DTGB86pM.esm.js} +2 -2
- package/dist/chunks/{index-CFYWEffm.esm.js.map → index-DTGB86pM.esm.js.map} +1 -1
- package/dist/chunks/index-DZt3Lbb4.esm.js +2 -0
- package/dist/chunks/index-DZt3Lbb4.esm.js.map +1 -0
- package/dist/chunks/{index-C_ZNnJIS.esm.js → index-IKiJwo5v.esm.js} +2 -2
- package/dist/chunks/{index-C_ZNnJIS.esm.js.map → index-IKiJwo5v.esm.js.map} +1 -1
- package/dist/chunks/{index-v0tUXySN.esm.d.ts → index-TAxKoTC1.esm.d.ts} +3 -2
- package/dist/chunks/{index-MS8_Vije.esm.d.ts → index-ki8pLX6n.esm.d.ts} +1 -1
- package/dist/chunks/{lit-5uUWs2aX.esm.js → lit-WqMxC_PA.esm.js} +3 -3
- package/dist/chunks/{lit-5uUWs2aX.esm.js.map → lit-WqMxC_PA.esm.js.map} +1 -1
- package/dist/chunks/loading-template-DG4lkIIc.esm.js +2 -0
- package/dist/chunks/{loading-template-DXNS89Th.esm.js.map → loading-template-DG4lkIIc.esm.js.map} +1 -1
- package/dist/chunks/{localize-cDQFOecn.esm.js → localize-Btu9xYcE.esm.js} +2 -2
- package/dist/chunks/{localize-cDQFOecn.esm.js.map → localize-Btu9xYcE.esm.js.map} +1 -1
- package/dist/chunks/{localize-CQCRjY9s.esm.js → localize-C25pEGnx.esm.js} +2 -2
- package/dist/chunks/{localize-CQCRjY9s.esm.js.map → localize-C25pEGnx.esm.js.map} +1 -1
- package/dist/chunks/{order-page-FzVtMkga.esm.js → order-page-BbrDKYmJ.esm.js} +2 -2
- package/dist/chunks/{order-page-CMGPM57D.esm.js.map → order-page-BbrDKYmJ.esm.js.map} +1 -1
- package/dist/chunks/{order-page-tSPKLQ24.esm.d.ts → order-page-Cerye00Q.esm.d.ts} +12 -1
- package/dist/chunks/{order-page-CMGPM57D.esm.js → order-page-stMlaqKK.esm.js} +2 -2
- package/dist/chunks/{order-page-FzVtMkga.esm.js.map → order-page-stMlaqKK.esm.js.map} +1 -1
- package/dist/chunks/{progress-bar-oJB_t7od.esm.js → progress-bar-DF7UuuHb.esm.js} +2 -2
- package/dist/chunks/{progress-bar-oJB_t7od.esm.js.map → progress-bar-DF7UuuHb.esm.js.map} +1 -1
- package/dist/chunks/{promo-pill-label-D9ptiGak.esm.js → promo-pill-label-CbW_Vcru.esm.js} +2 -2
- package/dist/chunks/{promo-pill-label-D9ptiGak.esm.js.map → promo-pill-label-CbW_Vcru.esm.js.map} +1 -1
- package/dist/chunks/{responsive-9jAzOYoE.esm.js → responsive-BR8qUfBa.esm.js} +2 -2
- package/dist/chunks/{responsive-9jAzOYoE.esm.js.map → responsive-BR8qUfBa.esm.js.map} +1 -1
- package/dist/chunks/{routes-KHEaM_40.esm.js → routes-CAhDCFDX.esm.js} +2 -2
- package/dist/chunks/{routes-KHEaM_40.esm.js.map → routes-CAhDCFDX.esm.js.map} +1 -1
- package/dist/chunks/{routes-CaSRr919.esm.js → routes-pcL-CUiQ.esm.js} +2 -2
- package/dist/chunks/{routes-CaSRr919.esm.js.map → routes-pcL-CUiQ.esm.js.map} +1 -1
- package/dist/chunks/{share-button-DBVhw4qa.esm.d.ts → share-button-B9hpxBVr.esm.d.ts} +5 -0
- package/dist/chunks/share-button-BYVId0-U.esm.js +2 -0
- package/dist/chunks/share-button-BYVId0-U.esm.js.map +1 -0
- package/dist/chunks/share-button-BvUcpOcx.esm.js +167 -0
- package/dist/chunks/share-button-BvUcpOcx.esm.js.map +1 -0
- package/dist/chunks/share-button-C-DXj68Z.esm.js +2 -0
- package/dist/chunks/share-button-C-DXj68Z.esm.js.map +1 -0
- package/dist/chunks/share-button-CtklpZOO.esm.js +167 -0
- package/dist/chunks/share-button-CtklpZOO.esm.js.map +1 -0
- package/dist/chunks/{update-cart-DNfl9QP2.esm.js → update-cart-BLsw_Faz.esm.js} +2 -2
- package/dist/chunks/{update-cart-DNfl9QP2.esm.js.map → update-cart-BLsw_Faz.esm.js.map} +1 -1
- package/dist/chunks/{update-cart-3JFUCJLD.esm.js → update-cart-ciJaz8li.esm.js} +2 -2
- package/dist/chunks/{update-cart-3JFUCJLD.esm.js.map → update-cart-ciJaz8li.esm.js.map} +1 -1
- package/dist/chunks/{vendor-DRA8u-S7.esm.js → vendor-KKSARHWL.esm.js} +2 -2
- package/dist/chunks/{vendor-DRA8u-S7.esm.js.map → vendor-KKSARHWL.esm.js.map} +1 -1
- package/dist/components/beam-partner-logos.esm.js +1 -1
- package/dist/components/beam-partner-logos.js +1 -1
- package/dist/components/community-impact.esm.js +3 -3
- package/dist/components/community-impact.esm.js.map +1 -1
- package/dist/components/community-impact.js +3 -3
- package/dist/components/community-impact.js.map +1 -1
- package/dist/components/cumulative-impact.esm.js +1 -1
- package/dist/components/cumulative-impact.js +1 -1
- package/dist/components/impact-overview.d.ts +1 -1
- package/dist/components/impact-overview.esm.js +18 -13
- package/dist/components/impact-overview.esm.js.map +1 -1
- package/dist/components/impact-overview.js +18 -13
- package/dist/components/impact-overview.js.map +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.esm.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/post-purchase.d.ts +1 -1
- package/dist/components/post-purchase.esm.js +1 -1
- package/dist/components/post-purchase.js +1 -1
- package/dist/components/product-details-page.esm.js +1 -1
- package/dist/components/product-details-page.js +1 -1
- package/dist/components/redeem-transaction.esm.js +1 -1
- package/dist/components/redeem-transaction.js +1 -1
- package/dist/components/select-nonprofit.esm.js +88 -88
- package/dist/components/select-nonprofit.esm.js.map +1 -1
- package/dist/components/select-nonprofit.js +88 -88
- package/dist/components/select-nonprofit.js.map +1 -1
- package/dist/components/select-subscription-nonprofit.esm.js +1 -1
- package/dist/components/select-subscription-nonprofit.js +1 -1
- package/dist/components/shopify.d.ts +2 -2
- package/dist/components/shopify.esm.js +1 -1
- package/dist/components/shopify.esm.js.map +1 -1
- package/dist/components/shopify.js +1 -1
- package/dist/components/shopify.js.map +1 -1
- package/dist/components/social-share.esm.js +3 -3
- package/dist/components/social-share.esm.js.map +1 -1
- package/dist/components/social-share.js +3 -3
- package/dist/components/social-share.js.map +1 -1
- package/dist/components/subscription-impact.d.ts +1 -1
- package/dist/components/subscription-impact.esm.js +26 -24
- package/dist/components/subscription-impact.esm.js.map +1 -1
- package/dist/components/subscription-impact.js +26 -24
- package/dist/components/subscription-impact.js.map +1 -1
- package/dist/components/subscription-management.d.ts +1 -1
- package/dist/components/subscription-management.esm.js +1 -1
- package/dist/components/subscription-management.js +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/integrations/beam.esm.js +1 -1
- package/dist/integrations/beam.js +1 -1
- package/dist/integrations/cart.esm.js +1 -1
- package/dist/integrations/cart.js +1 -1
- package/dist/integrations/index.d.ts +3 -3
- package/dist/integrations/index.esm.js +1 -1
- package/dist/integrations/index.js +1 -1
- package/dist/integrations/logs.esm.js +1 -1
- package/dist/integrations/logs.js +1 -1
- package/dist/integrations/session.esm.js +1 -1
- package/dist/integrations/session.js +1 -1
- package/dist/integrations/shopify.d.ts +2 -2
- package/dist/integrations/shopify.esm.js +1 -1
- package/dist/integrations/shopify.js +1 -1
- package/dist/integrations/statsig.esm.js +1 -1
- package/dist/integrations/statsig.js +1 -1
- package/dist/react/beam-partner-logos.esm.js +1 -1
- package/dist/react/beam-partner-logos.js +1 -1
- package/dist/react/community-impact.esm.js +1 -1
- package/dist/react/community-impact.js +1 -1
- package/dist/react/cumulative-impact.esm.js +1 -1
- package/dist/react/cumulative-impact.js +1 -1
- package/dist/react/impact-overview.d.ts +1 -1
- package/dist/react/impact-overview.esm.js +1 -1
- package/dist/react/impact-overview.js +1 -1
- package/dist/react/index.d.ts +1 -1
- package/dist/react/index.esm.js +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/post-purchase.d.ts +1 -1
- package/dist/react/post-purchase.esm.js +1 -1
- package/dist/react/post-purchase.js +1 -1
- package/dist/react/product-details-page.esm.js +1 -1
- package/dist/react/product-details-page.js +1 -1
- package/dist/react/redeem-transaction.esm.js +1 -1
- package/dist/react/redeem-transaction.js +1 -1
- package/dist/react/select-nonprofit.esm.js +1 -1
- package/dist/react/select-nonprofit.js +1 -1
- package/dist/react/select-subscription-nonprofit.esm.js +1 -1
- package/dist/react/select-subscription-nonprofit.js +1 -1
- package/dist/react/social-share.esm.js +1 -1
- package/dist/react/social-share.js +1 -1
- package/dist/react/subscription-impact.d.ts +1 -1
- package/dist/react/subscription-impact.esm.js +1 -1
- package/dist/react/subscription-impact.js +1 -1
- package/dist/react/subscription-management.d.ts +1 -1
- package/dist/react/subscription-management.esm.js +1 -1
- package/dist/react/subscription-management.js +1 -1
- package/package.json +1 -1
- package/dist/chunks/index-B_8DexDX.esm.js +0 -2
- package/dist/chunks/index-B_8DexDX.esm.js.map +0 -1
- package/dist/chunks/index-CpPbNdWA.esm.js +0 -2
- package/dist/chunks/index-CpPbNdWA.esm.js.map +0 -1
- package/dist/chunks/index-CyiXyHi8.esm.js +0 -2
- package/dist/chunks/index-CyiXyHi8.esm.js.map +0 -1
- package/dist/chunks/index-JSoHc6g1.esm.js +0 -2
- package/dist/chunks/index-JSoHc6g1.esm.js.map +0 -1
- package/dist/chunks/index-XZRQN4Rs.esm.js +0 -2
- package/dist/chunks/index-XZRQN4Rs.esm.js.map +0 -1
- package/dist/chunks/index-n7pxZENA.esm.js +0 -2
- package/dist/chunks/index-n7pxZENA.esm.js.map +0 -1
- package/dist/chunks/loading-template-DXNS89Th.esm.js +0 -2
- package/dist/chunks/share-button-BbG-gnwj.esm.js +0 -163
- package/dist/chunks/share-button-BbG-gnwj.esm.js.map +0 -1
- package/dist/chunks/share-button-CvTUluNq.esm.js +0 -163
- package/dist/chunks/share-button-CvTUluNq.esm.js.map +0 -1
- package/dist/chunks/share-button-R7jgVCPv.esm.js +0 -2
- package/dist/chunks/share-button-R7jgVCPv.esm.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{f as p,g as n,h as l,y as b}from"../chunks/lit-
|
|
1
|
+
import{f as p,g as n,h as l,y as b}from"../chunks/lit-WqMxC_PA.esm.js";var h=Object.defineProperty,s=(t,o,a,i)=>{for(var r=void 0,g=t.length-1,m;g>=0;g--)(m=t[g])&&(r=m(o,a,r)||r);return r&&h(o,a,r),r};const L="https://cdn01.beamimpact.com/chains/img/beam-logo.png";class e extends l{constructor(){super(...arguments),this.partnerLogoUrl="",this.beamLogoUrl=L,this.partnerName=""}render(){const{partnerLogoUrl:o,beamLogoUrl:a,partnerName:i}=this;return b`
|
|
2
2
|
<span class="partner-logo">
|
|
3
3
|
<img src="${o}" part="partner-logo" alt="${i} Logo" />
|
|
4
4
|
</span>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{f as p,g as n,h as l,y as b}from"../chunks/lit-
|
|
1
|
+
import{f as p,g as n,h as l,y as b}from"../chunks/lit-WqMxC_PA.esm.js";var h=Object.defineProperty,s=(t,o,a,i)=>{for(var r=void 0,g=t.length-1,m;g>=0;g--)(m=t[g])&&(r=m(o,a,r)||r);return r&&h(o,a,r),r};const L="https://cdn01.beamimpact.com/chains/img/beam-logo.png";class e extends l{constructor(){super(...arguments),this.partnerLogoUrl="",this.beamLogoUrl=L,this.partnerName=""}render(){const{partnerLogoUrl:o,beamLogoUrl:a,partnerName:i}=this;return b`
|
|
2
2
|
<span class="partner-logo">
|
|
3
3
|
<img src="${o}" part="partner-logo" alt="${i} Logo" />
|
|
4
4
|
</span>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{f as x,g as d,t as I,h as v,k as b,y as g,m as u}from"../chunks/lit-
|
|
1
|
+
import{f as x,g as d,t as I,h as v,k as b,y as g,m as u}from"../chunks/lit-WqMxC_PA.esm.js";import{p as $}from"../chunks/progress-bar-DF7UuuHb.esm.js";import{partnerLogosConfigDefaults as T}from"./beam-partner-logos.esm.js";import{c as k,d as w,e as S}from"../chunks/enforce-config-CZ3ToOgr.esm.js";import{u as n,A as L,i as c,_ as f,d as m,a as A}from"../chunks/localize-Btu9xYcE.esm.js";import{D as z,g as F,W as D,S as M}from"../chunks/routes-pcL-CUiQ.esm.js";import{_ as U}from"../chunks/loading-template-DG4lkIIc.esm.js";import{B as E}from"../chunks/beam-errors-Ci0d3926.esm.js";import{c as C}from"../chunks/css-card-grid-CvoGpsJH.esm.js";import"../utils/logger.esm.js";const y={en:{fundedTimes:({times:i=0})=>`Funded <b>${i}</b> ${i>1?"times":"time"} so far`,learnMore:()=>"Learn more",seeAll:()=>"See All"},fr:{fundedTimes:({times:i=0})=>`Financ\xE9 <b>${i}</b> fois pour l'instant`,learnMore:()=>"En savoir plus",seeAll:()=>"Voir tout"},de:{fundedTimes:({times:i=0})=>`<b>${i}</b> Mal finanziert`,learnMore:()=>"Mehr erfahren",seeAll:()=>"Alle anzeigen"},es:{fundedTimes:({times:i=0})=>`Financiado <b>${i}</b> ${i>1?"vez":"veces"}`,learnMore:()=>"Saber m\xE1s",seeAll:()=>"Ver Todo"},it:{fundedTimes:({times:i=0})=>`Finanziato <b>${i}</b> ${i>1?"volta":"volte"}`,learnMore:()=>"Scopri di pi\xF9",seeAll:()=>"Vedi Tutto"},pl:{fundedTimes:({times:i=0})=>`Udzielono wsparcia <b>${i}</b> ${i>1?"razy":"raz"}`,learnMore:()=>"Dowiedz si\u0119 wi\u0119cej",seeAll:()=>"Zobacz wszystko"}};var _=Object.defineProperty,l=(i,a,t,r)=>{for(var o=void 0,e=i.length-1,p;e>=0;e--)(p=i[e])&&(o=p(a,t,o)||o);return o&&_(a,t,o),o};class s extends v{constructor(){super(...arguments),this.baseUrl=z,this.cardStyle="image",this.lang="en",this.debug=!1,this.draftConfig=!1,this.selectedFilter=null,this.getImpactData=async()=>(S(["apiKey","chainId"],this),F({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},queryParams:{chainId:this.chainId,personalImpactLimit:0,widgetName:D.community_impact,version:"1.0.0",lang:this.configLang,draftConfig:this.draftConfig}})),this.impactDataController=new L(this,this.getImpactData),this.renderImageCard=a=>{const t=`${a.nonprofit?.name} image`,r=`Learn more about ${a.nonprofit?.name}`;return g`
|
|
2
2
|
<div class="image-card" part="nonprofit-card" style="display: flex; flex-direction: column;">
|
|
3
3
|
<div
|
|
4
4
|
class="image-card-image-box"
|
|
@@ -6,7 +6,7 @@ import{f as x,g as d,t as I,h as v,k as b,y as g,m as u}from"../chunks/lit-5uUWs
|
|
|
6
6
|
aria-label="${t}"
|
|
7
7
|
>
|
|
8
8
|
<p class="image-card-cause">${c(this.configLang,a.nonprofit?.cause||"")}</p>
|
|
9
|
-
<
|
|
9
|
+
<h2 class="image-card-name">${c(this.configLang,a.nonprofit?.name)}</h2>
|
|
10
10
|
</div>
|
|
11
11
|
<div
|
|
12
12
|
style="padding: 5px 15px 15px; flex: 1 1 auto; border-radius: 0px; border: none; display: flex; flex-direction: column;"
|
|
@@ -42,7 +42,7 @@ import{f as x,g as d,t as I,h as v,k as b,y as g,m as u}from"../chunks/lit-5uUWs
|
|
|
42
42
|
<div class="icon-card" part="nonprofit-card" style="display: flex; flex-direction: column;">
|
|
43
43
|
<img class="icon-card-icon" src="${a.nonprofit?.causeIconUrl}" alt="${t}" />
|
|
44
44
|
<p class="icon-card-cause">${a.nonprofit?.cause}</p>
|
|
45
|
-
<
|
|
45
|
+
<h2 class="icon-card-name">${a.nonprofit?.name}</h2>
|
|
46
46
|
<div class="icon-card-description" part="nonprofit-card-description" style="flex: 1;">
|
|
47
47
|
${b(c(this.configLang,a.impact?.description||""))}
|
|
48
48
|
</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"community-impact.esm.js","sources":["../../src/components/community-impact/strings.ts","../../src/components/community-impact/index.ts"],"sourcesContent":["export const strings = {\n en: {\n fundedTimes: ({ times = 0 }) => `Funded <b>${times}</b> ${times > 1 ? \"times\" : \"time\"} so far`,\n learnMore: () => `Learn more`,\n seeAll: () => `See All`,\n },\n fr: {\n fundedTimes: ({ times = 0 }) => `Financé <b>${times}</b> fois pour l'instant`,\n learnMore: () => `En savoir plus`,\n seeAll: () => `Voir tout`,\n },\n de: {\n fundedTimes: ({ times = 0 }) => `<b>${times}</b> Mal finanziert`,\n learnMore: () => `Mehr erfahren`,\n seeAll: () => `Alle anzeigen`,\n },\n es: {\n fundedTimes: ({ times = 0 }) => `Financiado <b>${times}</b> ${times > 1 ? \"vez\" : \"veces\"}`,\n learnMore: () => `Saber más`,\n seeAll: () => `Ver Todo`,\n },\n it: {\n fundedTimes: ({ times = 0 }) => `Finanziato <b>${times}</b> ${times > 1 ? \"volta\" : \"volte\"}`,\n learnMore: () => `Scopri di più`,\n seeAll: () => `Vedi Tutto`,\n },\n pl: {\n fundedTimes: ({ times = 0 }) => `Udzielono wsparcia <b>${times}</b> ${times > 1 ? \"razy\" : \"raz\"}`,\n learnMore: () => `Dowiedz się więcej`,\n seeAll: () => `Zobacz wszystko`,\n },\n};\n","import { css, html, LitElement } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport \"../../shared/components/progress-bar\";\nimport \"../beam-partner-logos\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { _cssVariableMap } from \"../../shared/fragments/css-variable-map\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { getImpact } from \"../../api-sdk/v3/routes\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { _loading } from \"../../shared/fragments/loading-template\";\nimport { defineCustomText, useCustomText } from \"../../shared/fragments/custom-text\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES, WIDGET_NAMES } from \"../../api-sdk/constants\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { BeamError, MissingConfig } from \"../../utils/beam-errors\";\nimport { TNumericId } from \"../../shared/types\";\nimport { cssCardGrid } from \"../../shared/fragments/css-card-grid\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { localizeUserString } from \"../../shared/localize\";\nimport { progressBarConfigDefaults } from \"../../shared/components/progress-bar\";\nimport { partnerLogosConfigDefaults } from \"../beam-partner-logos\";\nimport { strings } from \"./strings\";\n\ntype RequiredConfig = {\n apiKey: string;\n chainId: TNumericId;\n};\n\ntype IAPIV3NonprofitImpact = Awaited<ReturnType<typeof getImpact>>[\"community\"][0];\n\n/**\n * Beam Impact Overview Widget\n * Displays a grid of cards highlighting progress against funding goals\n * for the non-profits the chain is supporting.\n */\nexport class BeamCommunityImpact extends LitElement {\n static tagName = \"beam-community-impact\";\n\n @property({ type: String }) public apiKey?: RequiredConfig[\"apiKey\"];\n\n @property({ type: Number }) public chainId?: RequiredConfig[\"chainId\"];\n\n @property({ type: String }) public baseUrl = DEFAULT_BASE_URL;\n\n @property({ type: String }) public cardStyle: \"icon\" | \"image\" = \"image\";\n\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n\n @property({ type: Boolean }) public debug = false;\n\n @property({ type: Boolean }) public draftConfig = false;\n\n @state() private selectedFilter: string | null = null;\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n private getImpactData = async () => {\n if (!enforceConfig<RequiredConfig>([\"apiKey\", \"chainId\"], this)) throw new MissingConfig();\n const res = getImpact({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n queryParams: {\n chainId: this.chainId,\n personalImpactLimit: 0,\n widgetName: WIDGET_NAMES.community_impact,\n version: \"1.0.0\",\n lang: this.configLang,\n draftConfig: this.draftConfig,\n },\n });\n\n return res;\n };\n\n private impactDataController = new AsyncController<typeof this.getImpactData>(this, this.getImpactData);\n\n async updated(changedProperties: Map<string, unknown>) {\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\", \"lang\"];\n for (const prop of requireNewDataProps) {\n if (changedProperties.has(prop)) {\n this.impactDataController.exec();\n break;\n }\n }\n }\n\n private renderFilterTabs({ nonprofits }: { nonprofits: IAPIV3NonprofitImpact[] }) {\n const uniqueFilters = Array.from(new Set(nonprofits.flatMap((n) => n.filters || [])));\n if (uniqueFilters.length === 0) return \"\";\n const handleSeeAllFocus = () => {\n this.selectedFilter = null;\n };\n const handleFilterFocus = (filter: string) => {\n if (this.selectedFilter === filter) {\n this.selectedFilter = null;\n } else {\n this.selectedFilter = filter;\n }\n };\n return html` <div\n class=\"beam-filter-tabs\"\n part=\"filters\"\n style=\"display: inline-flex; flex-wrap: wrap; gap: 0.5em 1em\"\n >\n <span\n tabindex=\"0\"\n style=\"${styleMap({\n \"padding-bottom\": \"1px\",\n \"border-bottom-width\": \"2px\",\n \"border-bottom-style\": \"solid\",\n \"border-bottom-color\": this.selectedFilter === null ? \"currentColor\" : \"transparent\",\n })}\"\n @click=${handleSeeAllFocus}\n @keydown=${(evt: KeyboardEvent) => {\n if ([\"Enter\", \" \"].includes(evt.key)) {\n evt.preventDefault();\n handleSeeAllFocus();\n }\n }}\n >${strings[this.configLang].seeAll()}</span\n >\n ${uniqueFilters.map(\n (filter: string) =>\n html`<span\n tabindex=\"0\"\n @click=${() => handleFilterFocus(filter)}\n @keydown=${(evt: KeyboardEvent) => {\n if ([\"Enter\", \" \"].includes(evt.key)) {\n evt.preventDefault();\n handleFilterFocus(filter);\n }\n }}\n style=\"${styleMap({\n \"padding-bottom\": \"1px\",\n \"border-bottom-width\": \"2px\",\n \"border-bottom-style\": \"solid\",\n \"border-bottom-color\": this.selectedFilter === filter ? \"currentColor\" : \"transparent\",\n })}\"\n >${filter}</span\n >`\n )}\n </div>`;\n }\n\n private renderImageCard = (data: IAPIV3NonprofitImpact) => {\n const nonprofitImageAltText = `${data.nonprofit?.name} image`;\n const learnMoreLinkAriaLabel = `Learn more about ${data.nonprofit?.name}`;\n\n return html`\n <div class=\"image-card\" part=\"nonprofit-card\" style=\"display: flex; flex-direction: column;\">\n <div\n class=\"image-card-image-box\"\n style=\"background-image: url('${data.imageUrl}');\"\n aria-label=\"${nonprofitImageAltText}\"\n >\n <p class=\"image-card-cause\">${localizeUserString(this.configLang, data.nonprofit?.cause || \"\")}</p>\n <h4 class=\"image-card-name\">${localizeUserString(this.configLang, data.nonprofit?.name)}</h4>\n </div>\n <div\n style=\"padding: 5px 15px 15px; flex: 1 1 auto; border-radius: 0px; border: none; display: flex; flex-direction: column;\"\n >\n <div class=\"image-card-progress\" style=\"display: flex; align-items: center;\">\n <beam-progress-bar style=\"flex-grow: 1;\" value=\"${data.impact?.goalProgressPercentage}\"></beam-progress-bar>\n <span class=\"image-card-progressText\" style=\"margin-left: 20px;\"\n >${localizeUserString(this.configLang, data.impact?.goalProgressText)}</span\n >\n </div>\n <div class=\"image-card-description\">\n ${unsafeHTML(localizeUserString(this.configLang, data.impact?.description || \"\"))}\n </div>\n <div style=\"display: flex; align-items: end; flex-wrap: wrap; gap: 10px; flex: 1;\" class=\"image-card-footer\">\n <div class=\"image-card-goal-completion\" style=\"flex-grow: 1;\">\n ${unsafeHTML(localizeUserString(this.configLang, data.impact?.goalCompletionText))}\n </div>\n <a\n href=\"${data.nonprofit?.website}\"\n target=\"_blank\"\n class=\"image-card-link\"\n style=\"color: var(--beam-CommunityImpact-imageCard-link-color, inherit); white-space: nowrap\"\n aria-label=\"${learnMoreLinkAriaLabel}\"\n >\n ${localizeUserString(this.configLang, data.nonprofit?.websiteLinkText)}<span class=\"image-card-link-arrow\"\n > ›</span\n >\n </a>\n </div>\n </div>\n </div>\n `;\n };\n\n private renderIconCard = (data: IAPIV3NonprofitImpact) => {\n const nonprofitIconAltText = `${data.nonprofit?.name} icon`;\n const learnMoreLinkAriaLabel = `Learn more about ${data.nonprofit?.name}`;\n\n return html`\n <div class=\"icon-card\" part=\"nonprofit-card\" style=\"display: flex; flex-direction: column;\">\n <img class=\"icon-card-icon\" src=\"${data.nonprofit?.causeIconUrl}\" alt=\"${nonprofitIconAltText}\" />\n <p class=\"icon-card-cause\">${data.nonprofit?.cause}</p>\n <h4 class=\"icon-card-name\">${data.nonprofit?.name}</h4>\n <div class=\"icon-card-description\" part=\"nonprofit-card-description\" style=\"flex: 1;\">\n ${unsafeHTML(localizeUserString(this.configLang, data.impact?.description || \"\"))}\n </div>\n <div class=\"icon-card-footer\" style=\"width: 100%; text-align: center;\">\n <div class=\"icon-card-progress\" style=\"display: flex; align-items: center; width: 100%;\">\n <beam-progress-bar style=\"flex: 1 0;\" value=\"${data.impact?.goalProgressPercentage}\"></beam-progress-bar>\n <span style=\"text-align: right; flex: 0 1; white-space: nowrap\" class=\"icon-card-progressText\"\n >${localizeUserString(this.configLang, data.impact?.goalProgressText)}</span\n >\n </div>\n <div class=\"icon-card-goal-completion\">\n ${unsafeHTML(localizeUserString(this.configLang, data.impact?.goalCompletionText))}\n </div>\n <a\n href=\"${data.nonprofit?.website}\"\n target=\"_blank\"\n class=\"icon-card-link\"\n style=\"color: var(--beam-CommunityImpact-iconCard-link-color, inherit); display: block\"\n aria-label=\"${learnMoreLinkAriaLabel}\"\n >${localizeUserString(this.configLang, data.nonprofit?.websiteLinkText) ||\n strings[this.configLang].learnMore()}<span class=\"icon-card-link-arrow\"> ›</span>\n </a>\n ${data.impact?.goalCompletionText === \"\" ? html`<div class=\"icon-card-goal-completion\"> </div>` : \"\"}\n </div>\n </div>\n `;\n };\n\n private renderCards = ({ nonprofits }: { nonprofits: IAPIV3NonprofitImpact[] }) => {\n return html`\n <div class=\"beam-nonprofit-${this.cardStyle}-cards\" part=\"nonprofit-cards\">\n ${nonprofits?.map(this.cardStyle === \"image\" ? this.renderImageCard : this.renderIconCard)}\n </div>\n `;\n };\n\n render() {\n const { selectedFilter } = this;\n const { data, error, loading } = 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 BeamError(\"Missing data\") });\n }\n return \"\";\n }\n const { community: nonprofits } = data;\n const filteredNonprofits = selectedFilter\n ? nonprofits.filter((np) => np.filters?.includes(selectedFilter))\n : nonprofits;\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n <beam-partner-logos\n part=\"logos\"\n partnerLogoUrl=\"${data.chain.logoUrl}\"\n partnerName=\"${data.chain.name}\"\n ></beam-partner-logos>\n\n ${this.renderFilterTabs({ nonprofits })} ${this.renderCards({ nonprofits: filteredNonprofits })}\n `;\n }\n\n public get cssVariables() {\n const defaults: Record<string, string> = {\n \"--beam-fontFamily\": \"inherit\",\n \"--beam-fontStyle\": \"inherit\",\n \"--beam-fontSize\": \"14px\",\n \"--beam-lineHeight\": \"1\",\n \"--beam-textColor\": \"inherit\",\n \"--beam-backgroundColor\": \"inherit\",\n ...partnerLogosConfigDefaults,\n ...progressBarConfigDefaults,\n \"--beam-CommunityImpact-filterTabs-textalign\": \"left\",\n \"--beam-CommunityImpact-filterTabs-marginBottom\": \"20px\",\n /* Image Card Styles */\n \"--beam-CommunityImpact-imageCard-borderColor\": \"currentColor\",\n \"--beam-CommunityImpact-imageCard-borderRadius\": \"0\",\n \"--beam-CommunityImpact-imageCard-borderWidth\": \"1px\",\n \"--beam-CommunityImpact-imageCard-backgroundColor\": \"inherit\",\n \"--beam-CommunityImpact-imageCard-foregroundColor\": \"inherit\",\n ...defineCustomText(\"--beam-CommunityImpact-filterTabs\", {\n fontSize: \"16px\",\n marginTop: \"10px\",\n fontWeight: \"bold\",\n }),\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-cause\", {\n fontSize: \"14px\",\n textTransform: \"uppercase\",\n color: \"#fff\",\n }),\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-name\", {\n fontSize: \"22px\",\n marginTop: \"0\",\n color: \"#fff\",\n }),\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-description\", {\n marginTop: \"10px\",\n lineHeight: \"1.3\",\n }),\n \"--beam-CommunityImpact-imageCard-link-color\": \"inherit\",\n \"--beam-CommunityImpact-imageCard-linkArrow-display\": \"none\",\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-link\", {\n fontSize: \"12px\",\n }),\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-goalCompletion\", {\n fontSize: \"12px\",\n }),\n \"--beam-CommunityImpact-imageCard-goalCompletion-fontStyle\": \"italic\",\n \"--beam-CommunityImpact-imageCard-progress-marginTop\": \"10px\",\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-progressText\"),\n \"--beam-CommunityImpact-imageCard-footer-marginTop\": \"10px\",\n /* Icon Card Styles */\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-cause\", {\n marginTop: \"10px\",\n }),\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-name\", {\n marginTop: \"5px\",\n fontWeight: \"bold\",\n }),\n \"--beam-CommunityImpact-iconCard-progress-marginTop\": \"10px\",\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-progressText\"),\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-description\", {\n marginTop: \"10px\",\n lineHeight: \"1.3\",\n }),\n \"--beam-CommunityImpact-iconCard-description-textAlign\": \"left\",\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-goalCompletion\", {\n marginTop: \"10px\",\n }),\n \"--beam-CommunityImpact-iconCard-link-color\": \"inherit\",\n \"--beam-CommunityImpact-iconCard-linkArrow-display\": \"none\",\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-link\", {\n marginTop: \"5px\",\n }),\n };\n\n const cardCount = this.impactDataController.data?.community.length || 0;\n const columnCount = cardCount === 3 ? 3 : this.cardStyle === \"icon\" ? 4 : 2;\n defaults[\"--beam-CommunityImpact-columns\"] = columnCount.toString();\n defaults[\"--beam-CommunityImpact-columns-minWidth\"] = this.cardStyle === \"image\" ? \"300px\" : \"200px\";\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 css`\n :host {\n display: block;\n font-family: var(--beam-fontFamily, inherit);\n font-style: var(--beam-fontStyle, inherit);\n font-size: var(--beam-fontSize, inherit);\n color: var(--beam-textColor, inherit);\n background-color: var(--beam-backgroundColor, inherit);\n line-height: var(--beam-lineHeight, 1);\n word-break: normal;\n }\n\n .beam-filter-tabs {\n ${useCustomText(\"--beam-CommunityImpact-filterTabs\")}\n margin-bottom: var(--beam-CommunityImpact-filterTabs-marginBottom, 10px);\n text-align: var(--beam-CommunityImpact-filterTabs-textalign, left);\n }\n\n .beam-nonprofit-image-cards,\n .beam-nonprofit-icon-cards {\n margin-top: 10px;\n }\n\n ${cssCardGrid({\n gap: \"20px\",\n className: \"beam-nonprofit-image-cards\",\n columnCount: \"var(--beam-CommunityImpact-columns)\",\n itemMinWidth: \"var(--beam-CommunityImpact-columns-minWidth)\",\n })}\n\n ${cssCardGrid({\n gap: \"40px\",\n className: \"beam-nonprofit-icon-cards\",\n columnCount: \"var(--beam-CommunityImpact-columns)\",\n itemMinWidth: \"var(--beam-CommunityImpact-columns-minWidth)\",\n })}\n\n /* Image Style Cards */\n\n .image-card {\n overflow-wrap: break-word;\n border-color: var(--beam-CommunityImpact-imageCard-borderColor);\n border-style: solid;\n border-width: var(--beam-CommunityImpact-imageCard-borderWidth);\n border-radius: var(--beam-CommunityImpact-imageCard-borderRadius);\n overflow: hidden;\n background-color: var(--beam-CommunityImpact-imageCard-backgroundColor);\n color: var(--beam-CommunityImpact-imageCard-foregroundColor);\n }\n\n .image-card-image-box {\n height: 200px;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n padding: 0 24px 16px;\n overflow-wrap: break-word;\n background-color: #555;\n background-blend-mode: overlay;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .image-card-cause {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-cause\")}\n }\n\n .image-card-name {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-name\")}\n }\n\n .image-card-progress {\n margin-top: var(--beam-CommunityImpact-imageCard-progress-marginTop);\n }\n\n .image-card-progressText {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-progressText\")}\n }\n\n .image-card-description {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-description\")}\n }\n\n .image-card-link {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-link\")}\n }\n\n .image-card-link-arrow {\n display: var(--beam-CommunityImpact-imageCard-linkArrow-display, \"none\");\n }\n\n .image-card-goal-completion {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-goalCompletion\")}\n font-style: var(--beam-CommunityImpact-imageCard-goalCompletion-fontStyle, italic);\n }\n\n .image-card-footer {\n margin-top: var(--beam-CommunityImpact-imageCard-footer-marginTop);\n }\n\n /* Icon Style Cards */\n\n .icon-card {\n display: flex;\n flex-direction: column;\n justify-content: start;\n align-items: center;\n }\n\n .icon-card-icon {\n height: 50px;\n }\n\n .icon-card-cause {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-cause\")}\n }\n\n .icon-card-name {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-name\")}\n }\n\n .icon-card-progress {\n margin-top: var(--beam-CommunityImpact-iconCard-progress-marginTop);\n }\n\n .icon-card-progressText {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-progressText\")}\n margin-left: 10px;\n }\n\n .icon-card-description {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-description\")}\n text-align: var(--beam-CommunityImpact-iconCard-description-textAlign, left);\n }\n\n .icon-card-link {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-link\")}\n }\n\n .icon-card-link-arrow {\n display: var(--beam-CommunityImpact-iconCard-linkArrow-display, \"none\");\n }\n\n .icon-card-goal-completion {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-goalCompletion\")}\n font-style: var(--beam-CommunityImpact-iconCard-goalCompletion-fontStyle, italic);\n }\n\n .icon-card-footer {\n margin-top: var(--beam-CommunityImpact-iconCard-footer-marginTop);\n }\n `,\n ];\n}\n\ndefineCustomElement(BeamCommunityImpact);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-community-impact\": BeamCommunityImpact;\n }\n}\n"],"names":["strings","times","BeamCommunityImpact","LitElement","DEFAULT_BASE_URL","enforceConfig","getImpact","WIDGET_NAMES","AsyncController","data","nonprofitImageAltText","learnMoreLinkAriaLabel","html","localizeUserString","unsafeHTML","nonprofitIconAltText","nonprofits","SUPPORTED_LANGUAGES","changedProperties","requireNewDataProps","prop","uniqueFilters","n","handleSeeAllFocus","handleFilterFocus","filter","styleMap","evt","selectedFilter","error","loading","_loading","_errorMessage","BeamError","filteredNonprofits","np","defaults","partnerLogosConfigDefaults","progressBarConfigDefaults","defineCustomText","columnCount","remoteConfig","config","_cssVariableMap","cssReset","css","useCustomText","cssCardGrid","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"community-impact.esm.js","sources":["../../src/components/community-impact/strings.ts","../../src/components/community-impact/index.ts"],"sourcesContent":["export const strings = {\n en: {\n fundedTimes: ({ times = 0 }) => `Funded <b>${times}</b> ${times > 1 ? \"times\" : \"time\"} so far`,\n learnMore: () => `Learn more`,\n seeAll: () => `See All`,\n },\n fr: {\n fundedTimes: ({ times = 0 }) => `Financé <b>${times}</b> fois pour l'instant`,\n learnMore: () => `En savoir plus`,\n seeAll: () => `Voir tout`,\n },\n de: {\n fundedTimes: ({ times = 0 }) => `<b>${times}</b> Mal finanziert`,\n learnMore: () => `Mehr erfahren`,\n seeAll: () => `Alle anzeigen`,\n },\n es: {\n fundedTimes: ({ times = 0 }) => `Financiado <b>${times}</b> ${times > 1 ? \"vez\" : \"veces\"}`,\n learnMore: () => `Saber más`,\n seeAll: () => `Ver Todo`,\n },\n it: {\n fundedTimes: ({ times = 0 }) => `Finanziato <b>${times}</b> ${times > 1 ? \"volta\" : \"volte\"}`,\n learnMore: () => `Scopri di più`,\n seeAll: () => `Vedi Tutto`,\n },\n pl: {\n fundedTimes: ({ times = 0 }) => `Udzielono wsparcia <b>${times}</b> ${times > 1 ? \"razy\" : \"raz\"}`,\n learnMore: () => `Dowiedz się więcej`,\n seeAll: () => `Zobacz wszystko`,\n },\n};\n","import { css, html, LitElement } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport \"../../shared/components/progress-bar\";\nimport \"../beam-partner-logos\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { _cssVariableMap } from \"../../shared/fragments/css-variable-map\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { getImpact } from \"../../api-sdk/v3/routes\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { _loading } from \"../../shared/fragments/loading-template\";\nimport { defineCustomText, useCustomText } from \"../../shared/fragments/custom-text\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES, WIDGET_NAMES } from \"../../api-sdk/constants\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { BeamError, MissingConfig } from \"../../utils/beam-errors\";\nimport { TNumericId } from \"../../shared/types\";\nimport { cssCardGrid } from \"../../shared/fragments/css-card-grid\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { localizeUserString } from \"../../shared/localize\";\nimport { progressBarConfigDefaults } from \"../../shared/components/progress-bar\";\nimport { partnerLogosConfigDefaults } from \"../beam-partner-logos\";\nimport { strings } from \"./strings\";\n\ntype RequiredConfig = {\n apiKey: string;\n chainId: TNumericId;\n};\n\ntype IAPIV3NonprofitImpact = Awaited<ReturnType<typeof getImpact>>[\"community\"][0];\n\n/**\n * Beam Impact Overview Widget\n * Displays a grid of cards highlighting progress against funding goals\n * for the non-profits the chain is supporting.\n */\nexport class BeamCommunityImpact extends LitElement {\n static tagName = \"beam-community-impact\";\n\n @property({ type: String }) public apiKey?: RequiredConfig[\"apiKey\"];\n\n @property({ type: Number }) public chainId?: RequiredConfig[\"chainId\"];\n\n @property({ type: String }) public baseUrl = DEFAULT_BASE_URL;\n\n @property({ type: String }) public cardStyle: \"icon\" | \"image\" = \"image\";\n\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n\n @property({ type: Boolean }) public debug = false;\n\n @property({ type: Boolean }) public draftConfig = false;\n\n @state() private selectedFilter: string | null = null;\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n private getImpactData = async () => {\n if (!enforceConfig<RequiredConfig>([\"apiKey\", \"chainId\"], this)) throw new MissingConfig();\n const res = getImpact({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n queryParams: {\n chainId: this.chainId,\n personalImpactLimit: 0,\n widgetName: WIDGET_NAMES.community_impact,\n version: \"1.0.0\",\n lang: this.configLang,\n draftConfig: this.draftConfig,\n },\n });\n\n return res;\n };\n\n private impactDataController = new AsyncController<typeof this.getImpactData>(this, this.getImpactData);\n\n async updated(changedProperties: Map<string, unknown>) {\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\", \"lang\"];\n for (const prop of requireNewDataProps) {\n if (changedProperties.has(prop)) {\n this.impactDataController.exec();\n break;\n }\n }\n }\n\n private renderFilterTabs({ nonprofits }: { nonprofits: IAPIV3NonprofitImpact[] }) {\n const uniqueFilters = Array.from(new Set(nonprofits.flatMap((n) => n.filters || [])));\n if (uniqueFilters.length === 0) return \"\";\n const handleSeeAllFocus = () => {\n this.selectedFilter = null;\n };\n const handleFilterFocus = (filter: string) => {\n if (this.selectedFilter === filter) {\n this.selectedFilter = null;\n } else {\n this.selectedFilter = filter;\n }\n };\n return html` <div\n class=\"beam-filter-tabs\"\n part=\"filters\"\n style=\"display: inline-flex; flex-wrap: wrap; gap: 0.5em 1em\"\n >\n <span\n tabindex=\"0\"\n style=\"${styleMap({\n \"padding-bottom\": \"1px\",\n \"border-bottom-width\": \"2px\",\n \"border-bottom-style\": \"solid\",\n \"border-bottom-color\": this.selectedFilter === null ? \"currentColor\" : \"transparent\",\n })}\"\n @click=${handleSeeAllFocus}\n @keydown=${(evt: KeyboardEvent) => {\n if ([\"Enter\", \" \"].includes(evt.key)) {\n evt.preventDefault();\n handleSeeAllFocus();\n }\n }}\n >${strings[this.configLang].seeAll()}</span\n >\n ${uniqueFilters.map(\n (filter: string) =>\n html`<span\n tabindex=\"0\"\n @click=${() => handleFilterFocus(filter)}\n @keydown=${(evt: KeyboardEvent) => {\n if ([\"Enter\", \" \"].includes(evt.key)) {\n evt.preventDefault();\n handleFilterFocus(filter);\n }\n }}\n style=\"${styleMap({\n \"padding-bottom\": \"1px\",\n \"border-bottom-width\": \"2px\",\n \"border-bottom-style\": \"solid\",\n \"border-bottom-color\": this.selectedFilter === filter ? \"currentColor\" : \"transparent\",\n })}\"\n >${filter}</span\n >`\n )}\n </div>`;\n }\n\n private renderImageCard = (data: IAPIV3NonprofitImpact) => {\n const nonprofitImageAltText = `${data.nonprofit?.name} image`;\n const learnMoreLinkAriaLabel = `Learn more about ${data.nonprofit?.name}`;\n\n return html`\n <div class=\"image-card\" part=\"nonprofit-card\" style=\"display: flex; flex-direction: column;\">\n <div\n class=\"image-card-image-box\"\n style=\"background-image: url('${data.imageUrl}');\"\n aria-label=\"${nonprofitImageAltText}\"\n >\n <p class=\"image-card-cause\">${localizeUserString(this.configLang, data.nonprofit?.cause || \"\")}</p>\n <h2 class=\"image-card-name\">${localizeUserString(this.configLang, data.nonprofit?.name)}</h2>\n </div>\n <div\n style=\"padding: 5px 15px 15px; flex: 1 1 auto; border-radius: 0px; border: none; display: flex; flex-direction: column;\"\n >\n <div class=\"image-card-progress\" style=\"display: flex; align-items: center;\">\n <beam-progress-bar style=\"flex-grow: 1;\" value=\"${data.impact?.goalProgressPercentage}\"></beam-progress-bar>\n <span class=\"image-card-progressText\" style=\"margin-left: 20px;\"\n >${localizeUserString(this.configLang, data.impact?.goalProgressText)}</span\n >\n </div>\n <div class=\"image-card-description\">\n ${unsafeHTML(localizeUserString(this.configLang, data.impact?.description || \"\"))}\n </div>\n <div style=\"display: flex; align-items: end; flex-wrap: wrap; gap: 10px; flex: 1;\" class=\"image-card-footer\">\n <div class=\"image-card-goal-completion\" style=\"flex-grow: 1;\">\n ${unsafeHTML(localizeUserString(this.configLang, data.impact?.goalCompletionText))}\n </div>\n <a\n href=\"${data.nonprofit?.website}\"\n target=\"_blank\"\n class=\"image-card-link\"\n style=\"color: var(--beam-CommunityImpact-imageCard-link-color, inherit); white-space: nowrap\"\n aria-label=\"${learnMoreLinkAriaLabel}\"\n >\n ${localizeUserString(this.configLang, data.nonprofit?.websiteLinkText)}<span class=\"image-card-link-arrow\"\n > ›</span\n >\n </a>\n </div>\n </div>\n </div>\n `;\n };\n\n private renderIconCard = (data: IAPIV3NonprofitImpact) => {\n const nonprofitIconAltText = `${data.nonprofit?.name} icon`;\n const learnMoreLinkAriaLabel = `Learn more about ${data.nonprofit?.name}`;\n\n return html`\n <div class=\"icon-card\" part=\"nonprofit-card\" style=\"display: flex; flex-direction: column;\">\n <img class=\"icon-card-icon\" src=\"${data.nonprofit?.causeIconUrl}\" alt=\"${nonprofitIconAltText}\" />\n <p class=\"icon-card-cause\">${data.nonprofit?.cause}</p>\n <h2 class=\"icon-card-name\">${data.nonprofit?.name}</h2>\n <div class=\"icon-card-description\" part=\"nonprofit-card-description\" style=\"flex: 1;\">\n ${unsafeHTML(localizeUserString(this.configLang, data.impact?.description || \"\"))}\n </div>\n <div class=\"icon-card-footer\" style=\"width: 100%; text-align: center;\">\n <div class=\"icon-card-progress\" style=\"display: flex; align-items: center; width: 100%;\">\n <beam-progress-bar style=\"flex: 1 0;\" value=\"${data.impact?.goalProgressPercentage}\"></beam-progress-bar>\n <span style=\"text-align: right; flex: 0 1; white-space: nowrap\" class=\"icon-card-progressText\"\n >${localizeUserString(this.configLang, data.impact?.goalProgressText)}</span\n >\n </div>\n <div class=\"icon-card-goal-completion\">\n ${unsafeHTML(localizeUserString(this.configLang, data.impact?.goalCompletionText))}\n </div>\n <a\n href=\"${data.nonprofit?.website}\"\n target=\"_blank\"\n class=\"icon-card-link\"\n style=\"color: var(--beam-CommunityImpact-iconCard-link-color, inherit); display: block\"\n aria-label=\"${learnMoreLinkAriaLabel}\"\n >${localizeUserString(this.configLang, data.nonprofit?.websiteLinkText) ||\n strings[this.configLang].learnMore()}<span class=\"icon-card-link-arrow\"> ›</span>\n </a>\n ${data.impact?.goalCompletionText === \"\" ? html`<div class=\"icon-card-goal-completion\"> </div>` : \"\"}\n </div>\n </div>\n `;\n };\n\n private renderCards = ({ nonprofits }: { nonprofits: IAPIV3NonprofitImpact[] }) => {\n return html`\n <div class=\"beam-nonprofit-${this.cardStyle}-cards\" part=\"nonprofit-cards\">\n ${nonprofits?.map(this.cardStyle === \"image\" ? this.renderImageCard : this.renderIconCard)}\n </div>\n `;\n };\n\n render() {\n const { selectedFilter } = this;\n const { data, error, loading } = 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 BeamError(\"Missing data\") });\n }\n return \"\";\n }\n const { community: nonprofits } = data;\n const filteredNonprofits = selectedFilter\n ? nonprofits.filter((np) => np.filters?.includes(selectedFilter))\n : nonprofits;\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n <beam-partner-logos\n part=\"logos\"\n partnerLogoUrl=\"${data.chain.logoUrl}\"\n partnerName=\"${data.chain.name}\"\n ></beam-partner-logos>\n\n ${this.renderFilterTabs({ nonprofits })} ${this.renderCards({ nonprofits: filteredNonprofits })}\n `;\n }\n\n public get cssVariables() {\n const defaults: Record<string, string> = {\n \"--beam-fontFamily\": \"inherit\",\n \"--beam-fontStyle\": \"inherit\",\n \"--beam-fontSize\": \"14px\",\n \"--beam-lineHeight\": \"1\",\n \"--beam-textColor\": \"inherit\",\n \"--beam-backgroundColor\": \"inherit\",\n ...partnerLogosConfigDefaults,\n ...progressBarConfigDefaults,\n \"--beam-CommunityImpact-filterTabs-textalign\": \"left\",\n \"--beam-CommunityImpact-filterTabs-marginBottom\": \"20px\",\n /* Image Card Styles */\n \"--beam-CommunityImpact-imageCard-borderColor\": \"currentColor\",\n \"--beam-CommunityImpact-imageCard-borderRadius\": \"0\",\n \"--beam-CommunityImpact-imageCard-borderWidth\": \"1px\",\n \"--beam-CommunityImpact-imageCard-backgroundColor\": \"inherit\",\n \"--beam-CommunityImpact-imageCard-foregroundColor\": \"inherit\",\n ...defineCustomText(\"--beam-CommunityImpact-filterTabs\", {\n fontSize: \"16px\",\n marginTop: \"10px\",\n fontWeight: \"bold\",\n }),\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-cause\", {\n fontSize: \"14px\",\n textTransform: \"uppercase\",\n color: \"#fff\",\n }),\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-name\", {\n fontSize: \"22px\",\n marginTop: \"0\",\n color: \"#fff\",\n }),\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-description\", {\n marginTop: \"10px\",\n lineHeight: \"1.3\",\n }),\n \"--beam-CommunityImpact-imageCard-link-color\": \"inherit\",\n \"--beam-CommunityImpact-imageCard-linkArrow-display\": \"none\",\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-link\", {\n fontSize: \"12px\",\n }),\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-goalCompletion\", {\n fontSize: \"12px\",\n }),\n \"--beam-CommunityImpact-imageCard-goalCompletion-fontStyle\": \"italic\",\n \"--beam-CommunityImpact-imageCard-progress-marginTop\": \"10px\",\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-progressText\"),\n \"--beam-CommunityImpact-imageCard-footer-marginTop\": \"10px\",\n /* Icon Card Styles */\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-cause\", {\n marginTop: \"10px\",\n }),\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-name\", {\n marginTop: \"5px\",\n fontWeight: \"bold\",\n }),\n \"--beam-CommunityImpact-iconCard-progress-marginTop\": \"10px\",\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-progressText\"),\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-description\", {\n marginTop: \"10px\",\n lineHeight: \"1.3\",\n }),\n \"--beam-CommunityImpact-iconCard-description-textAlign\": \"left\",\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-goalCompletion\", {\n marginTop: \"10px\",\n }),\n \"--beam-CommunityImpact-iconCard-link-color\": \"inherit\",\n \"--beam-CommunityImpact-iconCard-linkArrow-display\": \"none\",\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-link\", {\n marginTop: \"5px\",\n }),\n };\n\n const cardCount = this.impactDataController.data?.community.length || 0;\n const columnCount = cardCount === 3 ? 3 : this.cardStyle === \"icon\" ? 4 : 2;\n defaults[\"--beam-CommunityImpact-columns\"] = columnCount.toString();\n defaults[\"--beam-CommunityImpact-columns-minWidth\"] = this.cardStyle === \"image\" ? \"300px\" : \"200px\";\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 css`\n :host {\n display: block;\n font-family: var(--beam-fontFamily, inherit);\n font-style: var(--beam-fontStyle, inherit);\n font-size: var(--beam-fontSize, inherit);\n color: var(--beam-textColor, inherit);\n background-color: var(--beam-backgroundColor, inherit);\n line-height: var(--beam-lineHeight, 1);\n word-break: normal;\n }\n\n .beam-filter-tabs {\n ${useCustomText(\"--beam-CommunityImpact-filterTabs\")}\n margin-bottom: var(--beam-CommunityImpact-filterTabs-marginBottom, 10px);\n text-align: var(--beam-CommunityImpact-filterTabs-textalign, left);\n }\n\n .beam-nonprofit-image-cards,\n .beam-nonprofit-icon-cards {\n margin-top: 10px;\n }\n\n ${cssCardGrid({\n gap: \"20px\",\n className: \"beam-nonprofit-image-cards\",\n columnCount: \"var(--beam-CommunityImpact-columns)\",\n itemMinWidth: \"var(--beam-CommunityImpact-columns-minWidth)\",\n })}\n\n ${cssCardGrid({\n gap: \"40px\",\n className: \"beam-nonprofit-icon-cards\",\n columnCount: \"var(--beam-CommunityImpact-columns)\",\n itemMinWidth: \"var(--beam-CommunityImpact-columns-minWidth)\",\n })}\n\n /* Image Style Cards */\n\n .image-card {\n overflow-wrap: break-word;\n border-color: var(--beam-CommunityImpact-imageCard-borderColor);\n border-style: solid;\n border-width: var(--beam-CommunityImpact-imageCard-borderWidth);\n border-radius: var(--beam-CommunityImpact-imageCard-borderRadius);\n overflow: hidden;\n background-color: var(--beam-CommunityImpact-imageCard-backgroundColor);\n color: var(--beam-CommunityImpact-imageCard-foregroundColor);\n }\n\n .image-card-image-box {\n height: 200px;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n padding: 0 24px 16px;\n overflow-wrap: break-word;\n background-color: #555;\n background-blend-mode: overlay;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .image-card-cause {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-cause\")}\n }\n\n .image-card-name {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-name\")}\n }\n\n .image-card-progress {\n margin-top: var(--beam-CommunityImpact-imageCard-progress-marginTop);\n }\n\n .image-card-progressText {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-progressText\")}\n }\n\n .image-card-description {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-description\")}\n }\n\n .image-card-link {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-link\")}\n }\n\n .image-card-link-arrow {\n display: var(--beam-CommunityImpact-imageCard-linkArrow-display, \"none\");\n }\n\n .image-card-goal-completion {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-goalCompletion\")}\n font-style: var(--beam-CommunityImpact-imageCard-goalCompletion-fontStyle, italic);\n }\n\n .image-card-footer {\n margin-top: var(--beam-CommunityImpact-imageCard-footer-marginTop);\n }\n\n /* Icon Style Cards */\n\n .icon-card {\n display: flex;\n flex-direction: column;\n justify-content: start;\n align-items: center;\n }\n\n .icon-card-icon {\n height: 50px;\n }\n\n .icon-card-cause {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-cause\")}\n }\n\n .icon-card-name {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-name\")}\n }\n\n .icon-card-progress {\n margin-top: var(--beam-CommunityImpact-iconCard-progress-marginTop);\n }\n\n .icon-card-progressText {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-progressText\")}\n margin-left: 10px;\n }\n\n .icon-card-description {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-description\")}\n text-align: var(--beam-CommunityImpact-iconCard-description-textAlign, left);\n }\n\n .icon-card-link {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-link\")}\n }\n\n .icon-card-link-arrow {\n display: var(--beam-CommunityImpact-iconCard-linkArrow-display, \"none\");\n }\n\n .icon-card-goal-completion {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-goalCompletion\")}\n font-style: var(--beam-CommunityImpact-iconCard-goalCompletion-fontStyle, italic);\n }\n\n .icon-card-footer {\n margin-top: var(--beam-CommunityImpact-iconCard-footer-marginTop);\n }\n `,\n ];\n}\n\ndefineCustomElement(BeamCommunityImpact);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-community-impact\": BeamCommunityImpact;\n }\n}\n"],"names":["strings","times","BeamCommunityImpact","LitElement","DEFAULT_BASE_URL","enforceConfig","getImpact","WIDGET_NAMES","AsyncController","data","nonprofitImageAltText","learnMoreLinkAriaLabel","html","localizeUserString","unsafeHTML","nonprofitIconAltText","nonprofits","SUPPORTED_LANGUAGES","changedProperties","requireNewDataProps","prop","uniqueFilters","n","handleSeeAllFocus","handleFilterFocus","filter","styleMap","evt","selectedFilter","error","loading","_loading","_errorMessage","BeamError","filteredNonprofits","np","defaults","partnerLogosConfigDefaults","progressBarConfigDefaults","defineCustomText","columnCount","remoteConfig","config","_cssVariableMap","cssReset","css","useCustomText","cssCardGrid","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{f as x,g as d,t as I,h as v,k as b,y as g,m as u}from"../chunks/lit-
|
|
1
|
+
import{f as x,g as d,t as I,h as v,k as b,y as g,m as u}from"../chunks/lit-WqMxC_PA.esm.js";import{p as $}from"../chunks/progress-bar-DF7UuuHb.esm.js";import{partnerLogosConfigDefaults as T}from"./beam-partner-logos.js";import{c as k,d as w,e as S}from"../chunks/enforce-config-Ba1JkOHs.esm.js";import{u as n,A as L,i as c,_ as f,d as m,a as A}from"../chunks/localize-C25pEGnx.esm.js";import{D as z,g as F,W as D,S as M}from"../chunks/routes-CAhDCFDX.esm.js";import{_ as U}from"../chunks/loading-template-DG4lkIIc.esm.js";import{B as E}from"../chunks/beam-errors-Ci0d3926.esm.js";import{c as C}from"../chunks/css-card-grid-CvoGpsJH.esm.js";import"../utils/logger.js";const y={en:{fundedTimes:({times:i=0})=>`Funded <b>${i}</b> ${i>1?"times":"time"} so far`,learnMore:()=>"Learn more",seeAll:()=>"See All"},fr:{fundedTimes:({times:i=0})=>`Financ\xE9 <b>${i}</b> fois pour l'instant`,learnMore:()=>"En savoir plus",seeAll:()=>"Voir tout"},de:{fundedTimes:({times:i=0})=>`<b>${i}</b> Mal finanziert`,learnMore:()=>"Mehr erfahren",seeAll:()=>"Alle anzeigen"},es:{fundedTimes:({times:i=0})=>`Financiado <b>${i}</b> ${i>1?"vez":"veces"}`,learnMore:()=>"Saber m\xE1s",seeAll:()=>"Ver Todo"},it:{fundedTimes:({times:i=0})=>`Finanziato <b>${i}</b> ${i>1?"volta":"volte"}`,learnMore:()=>"Scopri di pi\xF9",seeAll:()=>"Vedi Tutto"},pl:{fundedTimes:({times:i=0})=>`Udzielono wsparcia <b>${i}</b> ${i>1?"razy":"raz"}`,learnMore:()=>"Dowiedz si\u0119 wi\u0119cej",seeAll:()=>"Zobacz wszystko"}};var _=Object.defineProperty,l=(i,a,t,r)=>{for(var o=void 0,e=i.length-1,p;e>=0;e--)(p=i[e])&&(o=p(a,t,o)||o);return o&&_(a,t,o),o};class s extends v{constructor(){super(...arguments),this.baseUrl=z,this.cardStyle="image",this.lang="en",this.debug=!1,this.draftConfig=!1,this.selectedFilter=null,this.getImpactData=async()=>(S(["apiKey","chainId"],this),F({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},queryParams:{chainId:this.chainId,personalImpactLimit:0,widgetName:D.community_impact,version:"1.0.0",lang:this.configLang,draftConfig:this.draftConfig}})),this.impactDataController=new L(this,this.getImpactData),this.renderImageCard=a=>{const t=`${a.nonprofit?.name} image`,r=`Learn more about ${a.nonprofit?.name}`;return g`
|
|
2
2
|
<div class="image-card" part="nonprofit-card" style="display: flex; flex-direction: column;">
|
|
3
3
|
<div
|
|
4
4
|
class="image-card-image-box"
|
|
@@ -6,7 +6,7 @@ import{f as x,g as d,t as I,h as v,k as b,y as g,m as u}from"../chunks/lit-5uUWs
|
|
|
6
6
|
aria-label="${t}"
|
|
7
7
|
>
|
|
8
8
|
<p class="image-card-cause">${c(this.configLang,a.nonprofit?.cause||"")}</p>
|
|
9
|
-
<
|
|
9
|
+
<h2 class="image-card-name">${c(this.configLang,a.nonprofit?.name)}</h2>
|
|
10
10
|
</div>
|
|
11
11
|
<div
|
|
12
12
|
style="padding: 5px 15px 15px; flex: 1 1 auto; border-radius: 0px; border: none; display: flex; flex-direction: column;"
|
|
@@ -42,7 +42,7 @@ import{f as x,g as d,t as I,h as v,k as b,y as g,m as u}from"../chunks/lit-5uUWs
|
|
|
42
42
|
<div class="icon-card" part="nonprofit-card" style="display: flex; flex-direction: column;">
|
|
43
43
|
<img class="icon-card-icon" src="${a.nonprofit?.causeIconUrl}" alt="${t}" />
|
|
44
44
|
<p class="icon-card-cause">${a.nonprofit?.cause}</p>
|
|
45
|
-
<
|
|
45
|
+
<h2 class="icon-card-name">${a.nonprofit?.name}</h2>
|
|
46
46
|
<div class="icon-card-description" part="nonprofit-card-description" style="flex: 1;">
|
|
47
47
|
${b(c(this.configLang,a.impact?.description||""))}
|
|
48
48
|
</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"community-impact.js","sources":["../../src/components/community-impact/strings.ts","../../src/components/community-impact/index.ts"],"sourcesContent":["export const strings = {\n en: {\n fundedTimes: ({ times = 0 }) => `Funded <b>${times}</b> ${times > 1 ? \"times\" : \"time\"} so far`,\n learnMore: () => `Learn more`,\n seeAll: () => `See All`,\n },\n fr: {\n fundedTimes: ({ times = 0 }) => `Financé <b>${times}</b> fois pour l'instant`,\n learnMore: () => `En savoir plus`,\n seeAll: () => `Voir tout`,\n },\n de: {\n fundedTimes: ({ times = 0 }) => `<b>${times}</b> Mal finanziert`,\n learnMore: () => `Mehr erfahren`,\n seeAll: () => `Alle anzeigen`,\n },\n es: {\n fundedTimes: ({ times = 0 }) => `Financiado <b>${times}</b> ${times > 1 ? \"vez\" : \"veces\"}`,\n learnMore: () => `Saber más`,\n seeAll: () => `Ver Todo`,\n },\n it: {\n fundedTimes: ({ times = 0 }) => `Finanziato <b>${times}</b> ${times > 1 ? \"volta\" : \"volte\"}`,\n learnMore: () => `Scopri di più`,\n seeAll: () => `Vedi Tutto`,\n },\n pl: {\n fundedTimes: ({ times = 0 }) => `Udzielono wsparcia <b>${times}</b> ${times > 1 ? \"razy\" : \"raz\"}`,\n learnMore: () => `Dowiedz się więcej`,\n seeAll: () => `Zobacz wszystko`,\n },\n};\n","import { css, html, LitElement } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport \"../../shared/components/progress-bar\";\nimport \"../beam-partner-logos\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { _cssVariableMap } from \"../../shared/fragments/css-variable-map\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { getImpact } from \"../../api-sdk/v3/routes\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { _loading } from \"../../shared/fragments/loading-template\";\nimport { defineCustomText, useCustomText } from \"../../shared/fragments/custom-text\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES, WIDGET_NAMES } from \"../../api-sdk/constants\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { BeamError, MissingConfig } from \"../../utils/beam-errors\";\nimport { TNumericId } from \"../../shared/types\";\nimport { cssCardGrid } from \"../../shared/fragments/css-card-grid\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { localizeUserString } from \"../../shared/localize\";\nimport { progressBarConfigDefaults } from \"../../shared/components/progress-bar\";\nimport { partnerLogosConfigDefaults } from \"../beam-partner-logos\";\nimport { strings } from \"./strings\";\n\ntype RequiredConfig = {\n apiKey: string;\n chainId: TNumericId;\n};\n\ntype IAPIV3NonprofitImpact = Awaited<ReturnType<typeof getImpact>>[\"community\"][0];\n\n/**\n * Beam Impact Overview Widget\n * Displays a grid of cards highlighting progress against funding goals\n * for the non-profits the chain is supporting.\n */\nexport class BeamCommunityImpact extends LitElement {\n static tagName = \"beam-community-impact\";\n\n @property({ type: String }) public apiKey?: RequiredConfig[\"apiKey\"];\n\n @property({ type: Number }) public chainId?: RequiredConfig[\"chainId\"];\n\n @property({ type: String }) public baseUrl = DEFAULT_BASE_URL;\n\n @property({ type: String }) public cardStyle: \"icon\" | \"image\" = \"image\";\n\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n\n @property({ type: Boolean }) public debug = false;\n\n @property({ type: Boolean }) public draftConfig = false;\n\n @state() private selectedFilter: string | null = null;\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n private getImpactData = async () => {\n if (!enforceConfig<RequiredConfig>([\"apiKey\", \"chainId\"], this)) throw new MissingConfig();\n const res = getImpact({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n queryParams: {\n chainId: this.chainId,\n personalImpactLimit: 0,\n widgetName: WIDGET_NAMES.community_impact,\n version: \"1.0.0\",\n lang: this.configLang,\n draftConfig: this.draftConfig,\n },\n });\n\n return res;\n };\n\n private impactDataController = new AsyncController<typeof this.getImpactData>(this, this.getImpactData);\n\n async updated(changedProperties: Map<string, unknown>) {\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\", \"lang\"];\n for (const prop of requireNewDataProps) {\n if (changedProperties.has(prop)) {\n this.impactDataController.exec();\n break;\n }\n }\n }\n\n private renderFilterTabs({ nonprofits }: { nonprofits: IAPIV3NonprofitImpact[] }) {\n const uniqueFilters = Array.from(new Set(nonprofits.flatMap((n) => n.filters || [])));\n if (uniqueFilters.length === 0) return \"\";\n const handleSeeAllFocus = () => {\n this.selectedFilter = null;\n };\n const handleFilterFocus = (filter: string) => {\n if (this.selectedFilter === filter) {\n this.selectedFilter = null;\n } else {\n this.selectedFilter = filter;\n }\n };\n return html` <div\n class=\"beam-filter-tabs\"\n part=\"filters\"\n style=\"display: inline-flex; flex-wrap: wrap; gap: 0.5em 1em\"\n >\n <span\n tabindex=\"0\"\n style=\"${styleMap({\n \"padding-bottom\": \"1px\",\n \"border-bottom-width\": \"2px\",\n \"border-bottom-style\": \"solid\",\n \"border-bottom-color\": this.selectedFilter === null ? \"currentColor\" : \"transparent\",\n })}\"\n @click=${handleSeeAllFocus}\n @keydown=${(evt: KeyboardEvent) => {\n if ([\"Enter\", \" \"].includes(evt.key)) {\n evt.preventDefault();\n handleSeeAllFocus();\n }\n }}\n >${strings[this.configLang].seeAll()}</span\n >\n ${uniqueFilters.map(\n (filter: string) =>\n html`<span\n tabindex=\"0\"\n @click=${() => handleFilterFocus(filter)}\n @keydown=${(evt: KeyboardEvent) => {\n if ([\"Enter\", \" \"].includes(evt.key)) {\n evt.preventDefault();\n handleFilterFocus(filter);\n }\n }}\n style=\"${styleMap({\n \"padding-bottom\": \"1px\",\n \"border-bottom-width\": \"2px\",\n \"border-bottom-style\": \"solid\",\n \"border-bottom-color\": this.selectedFilter === filter ? \"currentColor\" : \"transparent\",\n })}\"\n >${filter}</span\n >`\n )}\n </div>`;\n }\n\n private renderImageCard = (data: IAPIV3NonprofitImpact) => {\n const nonprofitImageAltText = `${data.nonprofit?.name} image`;\n const learnMoreLinkAriaLabel = `Learn more about ${data.nonprofit?.name}`;\n\n return html`\n <div class=\"image-card\" part=\"nonprofit-card\" style=\"display: flex; flex-direction: column;\">\n <div\n class=\"image-card-image-box\"\n style=\"background-image: url('${data.imageUrl}');\"\n aria-label=\"${nonprofitImageAltText}\"\n >\n <p class=\"image-card-cause\">${localizeUserString(this.configLang, data.nonprofit?.cause || \"\")}</p>\n <h4 class=\"image-card-name\">${localizeUserString(this.configLang, data.nonprofit?.name)}</h4>\n </div>\n <div\n style=\"padding: 5px 15px 15px; flex: 1 1 auto; border-radius: 0px; border: none; display: flex; flex-direction: column;\"\n >\n <div class=\"image-card-progress\" style=\"display: flex; align-items: center;\">\n <beam-progress-bar style=\"flex-grow: 1;\" value=\"${data.impact?.goalProgressPercentage}\"></beam-progress-bar>\n <span class=\"image-card-progressText\" style=\"margin-left: 20px;\"\n >${localizeUserString(this.configLang, data.impact?.goalProgressText)}</span\n >\n </div>\n <div class=\"image-card-description\">\n ${unsafeHTML(localizeUserString(this.configLang, data.impact?.description || \"\"))}\n </div>\n <div style=\"display: flex; align-items: end; flex-wrap: wrap; gap: 10px; flex: 1;\" class=\"image-card-footer\">\n <div class=\"image-card-goal-completion\" style=\"flex-grow: 1;\">\n ${unsafeHTML(localizeUserString(this.configLang, data.impact?.goalCompletionText))}\n </div>\n <a\n href=\"${data.nonprofit?.website}\"\n target=\"_blank\"\n class=\"image-card-link\"\n style=\"color: var(--beam-CommunityImpact-imageCard-link-color, inherit); white-space: nowrap\"\n aria-label=\"${learnMoreLinkAriaLabel}\"\n >\n ${localizeUserString(this.configLang, data.nonprofit?.websiteLinkText)}<span class=\"image-card-link-arrow\"\n > ›</span\n >\n </a>\n </div>\n </div>\n </div>\n `;\n };\n\n private renderIconCard = (data: IAPIV3NonprofitImpact) => {\n const nonprofitIconAltText = `${data.nonprofit?.name} icon`;\n const learnMoreLinkAriaLabel = `Learn more about ${data.nonprofit?.name}`;\n\n return html`\n <div class=\"icon-card\" part=\"nonprofit-card\" style=\"display: flex; flex-direction: column;\">\n <img class=\"icon-card-icon\" src=\"${data.nonprofit?.causeIconUrl}\" alt=\"${nonprofitIconAltText}\" />\n <p class=\"icon-card-cause\">${data.nonprofit?.cause}</p>\n <h4 class=\"icon-card-name\">${data.nonprofit?.name}</h4>\n <div class=\"icon-card-description\" part=\"nonprofit-card-description\" style=\"flex: 1;\">\n ${unsafeHTML(localizeUserString(this.configLang, data.impact?.description || \"\"))}\n </div>\n <div class=\"icon-card-footer\" style=\"width: 100%; text-align: center;\">\n <div class=\"icon-card-progress\" style=\"display: flex; align-items: center; width: 100%;\">\n <beam-progress-bar style=\"flex: 1 0;\" value=\"${data.impact?.goalProgressPercentage}\"></beam-progress-bar>\n <span style=\"text-align: right; flex: 0 1; white-space: nowrap\" class=\"icon-card-progressText\"\n >${localizeUserString(this.configLang, data.impact?.goalProgressText)}</span\n >\n </div>\n <div class=\"icon-card-goal-completion\">\n ${unsafeHTML(localizeUserString(this.configLang, data.impact?.goalCompletionText))}\n </div>\n <a\n href=\"${data.nonprofit?.website}\"\n target=\"_blank\"\n class=\"icon-card-link\"\n style=\"color: var(--beam-CommunityImpact-iconCard-link-color, inherit); display: block\"\n aria-label=\"${learnMoreLinkAriaLabel}\"\n >${localizeUserString(this.configLang, data.nonprofit?.websiteLinkText) ||\n strings[this.configLang].learnMore()}<span class=\"icon-card-link-arrow\"> ›</span>\n </a>\n ${data.impact?.goalCompletionText === \"\" ? html`<div class=\"icon-card-goal-completion\"> </div>` : \"\"}\n </div>\n </div>\n `;\n };\n\n private renderCards = ({ nonprofits }: { nonprofits: IAPIV3NonprofitImpact[] }) => {\n return html`\n <div class=\"beam-nonprofit-${this.cardStyle}-cards\" part=\"nonprofit-cards\">\n ${nonprofits?.map(this.cardStyle === \"image\" ? this.renderImageCard : this.renderIconCard)}\n </div>\n `;\n };\n\n render() {\n const { selectedFilter } = this;\n const { data, error, loading } = 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 BeamError(\"Missing data\") });\n }\n return \"\";\n }\n const { community: nonprofits } = data;\n const filteredNonprofits = selectedFilter\n ? nonprofits.filter((np) => np.filters?.includes(selectedFilter))\n : nonprofits;\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n <beam-partner-logos\n part=\"logos\"\n partnerLogoUrl=\"${data.chain.logoUrl}\"\n partnerName=\"${data.chain.name}\"\n ></beam-partner-logos>\n\n ${this.renderFilterTabs({ nonprofits })} ${this.renderCards({ nonprofits: filteredNonprofits })}\n `;\n }\n\n public get cssVariables() {\n const defaults: Record<string, string> = {\n \"--beam-fontFamily\": \"inherit\",\n \"--beam-fontStyle\": \"inherit\",\n \"--beam-fontSize\": \"14px\",\n \"--beam-lineHeight\": \"1\",\n \"--beam-textColor\": \"inherit\",\n \"--beam-backgroundColor\": \"inherit\",\n ...partnerLogosConfigDefaults,\n ...progressBarConfigDefaults,\n \"--beam-CommunityImpact-filterTabs-textalign\": \"left\",\n \"--beam-CommunityImpact-filterTabs-marginBottom\": \"20px\",\n /* Image Card Styles */\n \"--beam-CommunityImpact-imageCard-borderColor\": \"currentColor\",\n \"--beam-CommunityImpact-imageCard-borderRadius\": \"0\",\n \"--beam-CommunityImpact-imageCard-borderWidth\": \"1px\",\n \"--beam-CommunityImpact-imageCard-backgroundColor\": \"inherit\",\n \"--beam-CommunityImpact-imageCard-foregroundColor\": \"inherit\",\n ...defineCustomText(\"--beam-CommunityImpact-filterTabs\", {\n fontSize: \"16px\",\n marginTop: \"10px\",\n fontWeight: \"bold\",\n }),\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-cause\", {\n fontSize: \"14px\",\n textTransform: \"uppercase\",\n color: \"#fff\",\n }),\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-name\", {\n fontSize: \"22px\",\n marginTop: \"0\",\n color: \"#fff\",\n }),\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-description\", {\n marginTop: \"10px\",\n lineHeight: \"1.3\",\n }),\n \"--beam-CommunityImpact-imageCard-link-color\": \"inherit\",\n \"--beam-CommunityImpact-imageCard-linkArrow-display\": \"none\",\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-link\", {\n fontSize: \"12px\",\n }),\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-goalCompletion\", {\n fontSize: \"12px\",\n }),\n \"--beam-CommunityImpact-imageCard-goalCompletion-fontStyle\": \"italic\",\n \"--beam-CommunityImpact-imageCard-progress-marginTop\": \"10px\",\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-progressText\"),\n \"--beam-CommunityImpact-imageCard-footer-marginTop\": \"10px\",\n /* Icon Card Styles */\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-cause\", {\n marginTop: \"10px\",\n }),\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-name\", {\n marginTop: \"5px\",\n fontWeight: \"bold\",\n }),\n \"--beam-CommunityImpact-iconCard-progress-marginTop\": \"10px\",\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-progressText\"),\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-description\", {\n marginTop: \"10px\",\n lineHeight: \"1.3\",\n }),\n \"--beam-CommunityImpact-iconCard-description-textAlign\": \"left\",\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-goalCompletion\", {\n marginTop: \"10px\",\n }),\n \"--beam-CommunityImpact-iconCard-link-color\": \"inherit\",\n \"--beam-CommunityImpact-iconCard-linkArrow-display\": \"none\",\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-link\", {\n marginTop: \"5px\",\n }),\n };\n\n const cardCount = this.impactDataController.data?.community.length || 0;\n const columnCount = cardCount === 3 ? 3 : this.cardStyle === \"icon\" ? 4 : 2;\n defaults[\"--beam-CommunityImpact-columns\"] = columnCount.toString();\n defaults[\"--beam-CommunityImpact-columns-minWidth\"] = this.cardStyle === \"image\" ? \"300px\" : \"200px\";\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 css`\n :host {\n display: block;\n font-family: var(--beam-fontFamily, inherit);\n font-style: var(--beam-fontStyle, inherit);\n font-size: var(--beam-fontSize, inherit);\n color: var(--beam-textColor, inherit);\n background-color: var(--beam-backgroundColor, inherit);\n line-height: var(--beam-lineHeight, 1);\n word-break: normal;\n }\n\n .beam-filter-tabs {\n ${useCustomText(\"--beam-CommunityImpact-filterTabs\")}\n margin-bottom: var(--beam-CommunityImpact-filterTabs-marginBottom, 10px);\n text-align: var(--beam-CommunityImpact-filterTabs-textalign, left);\n }\n\n .beam-nonprofit-image-cards,\n .beam-nonprofit-icon-cards {\n margin-top: 10px;\n }\n\n ${cssCardGrid({\n gap: \"20px\",\n className: \"beam-nonprofit-image-cards\",\n columnCount: \"var(--beam-CommunityImpact-columns)\",\n itemMinWidth: \"var(--beam-CommunityImpact-columns-minWidth)\",\n })}\n\n ${cssCardGrid({\n gap: \"40px\",\n className: \"beam-nonprofit-icon-cards\",\n columnCount: \"var(--beam-CommunityImpact-columns)\",\n itemMinWidth: \"var(--beam-CommunityImpact-columns-minWidth)\",\n })}\n\n /* Image Style Cards */\n\n .image-card {\n overflow-wrap: break-word;\n border-color: var(--beam-CommunityImpact-imageCard-borderColor);\n border-style: solid;\n border-width: var(--beam-CommunityImpact-imageCard-borderWidth);\n border-radius: var(--beam-CommunityImpact-imageCard-borderRadius);\n overflow: hidden;\n background-color: var(--beam-CommunityImpact-imageCard-backgroundColor);\n color: var(--beam-CommunityImpact-imageCard-foregroundColor);\n }\n\n .image-card-image-box {\n height: 200px;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n padding: 0 24px 16px;\n overflow-wrap: break-word;\n background-color: #555;\n background-blend-mode: overlay;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .image-card-cause {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-cause\")}\n }\n\n .image-card-name {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-name\")}\n }\n\n .image-card-progress {\n margin-top: var(--beam-CommunityImpact-imageCard-progress-marginTop);\n }\n\n .image-card-progressText {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-progressText\")}\n }\n\n .image-card-description {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-description\")}\n }\n\n .image-card-link {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-link\")}\n }\n\n .image-card-link-arrow {\n display: var(--beam-CommunityImpact-imageCard-linkArrow-display, \"none\");\n }\n\n .image-card-goal-completion {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-goalCompletion\")}\n font-style: var(--beam-CommunityImpact-imageCard-goalCompletion-fontStyle, italic);\n }\n\n .image-card-footer {\n margin-top: var(--beam-CommunityImpact-imageCard-footer-marginTop);\n }\n\n /* Icon Style Cards */\n\n .icon-card {\n display: flex;\n flex-direction: column;\n justify-content: start;\n align-items: center;\n }\n\n .icon-card-icon {\n height: 50px;\n }\n\n .icon-card-cause {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-cause\")}\n }\n\n .icon-card-name {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-name\")}\n }\n\n .icon-card-progress {\n margin-top: var(--beam-CommunityImpact-iconCard-progress-marginTop);\n }\n\n .icon-card-progressText {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-progressText\")}\n margin-left: 10px;\n }\n\n .icon-card-description {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-description\")}\n text-align: var(--beam-CommunityImpact-iconCard-description-textAlign, left);\n }\n\n .icon-card-link {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-link\")}\n }\n\n .icon-card-link-arrow {\n display: var(--beam-CommunityImpact-iconCard-linkArrow-display, \"none\");\n }\n\n .icon-card-goal-completion {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-goalCompletion\")}\n font-style: var(--beam-CommunityImpact-iconCard-goalCompletion-fontStyle, italic);\n }\n\n .icon-card-footer {\n margin-top: var(--beam-CommunityImpact-iconCard-footer-marginTop);\n }\n `,\n ];\n}\n\ndefineCustomElement(BeamCommunityImpact);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-community-impact\": BeamCommunityImpact;\n }\n}\n"],"names":["strings","times","BeamCommunityImpact","LitElement","DEFAULT_BASE_URL","enforceConfig","getImpact","WIDGET_NAMES","AsyncController","data","nonprofitImageAltText","learnMoreLinkAriaLabel","html","localizeUserString","unsafeHTML","nonprofitIconAltText","nonprofits","SUPPORTED_LANGUAGES","changedProperties","requireNewDataProps","prop","uniqueFilters","n","handleSeeAllFocus","handleFilterFocus","filter","styleMap","evt","selectedFilter","error","loading","_loading","_errorMessage","BeamError","filteredNonprofits","np","defaults","partnerLogosConfigDefaults","progressBarConfigDefaults","defineCustomText","columnCount","remoteConfig","config","_cssVariableMap","cssReset","css","useCustomText","cssCardGrid","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"community-impact.js","sources":["../../src/components/community-impact/strings.ts","../../src/components/community-impact/index.ts"],"sourcesContent":["export const strings = {\n en: {\n fundedTimes: ({ times = 0 }) => `Funded <b>${times}</b> ${times > 1 ? \"times\" : \"time\"} so far`,\n learnMore: () => `Learn more`,\n seeAll: () => `See All`,\n },\n fr: {\n fundedTimes: ({ times = 0 }) => `Financé <b>${times}</b> fois pour l'instant`,\n learnMore: () => `En savoir plus`,\n seeAll: () => `Voir tout`,\n },\n de: {\n fundedTimes: ({ times = 0 }) => `<b>${times}</b> Mal finanziert`,\n learnMore: () => `Mehr erfahren`,\n seeAll: () => `Alle anzeigen`,\n },\n es: {\n fundedTimes: ({ times = 0 }) => `Financiado <b>${times}</b> ${times > 1 ? \"vez\" : \"veces\"}`,\n learnMore: () => `Saber más`,\n seeAll: () => `Ver Todo`,\n },\n it: {\n fundedTimes: ({ times = 0 }) => `Finanziato <b>${times}</b> ${times > 1 ? \"volta\" : \"volte\"}`,\n learnMore: () => `Scopri di più`,\n seeAll: () => `Vedi Tutto`,\n },\n pl: {\n fundedTimes: ({ times = 0 }) => `Udzielono wsparcia <b>${times}</b> ${times > 1 ? \"razy\" : \"raz\"}`,\n learnMore: () => `Dowiedz się więcej`,\n seeAll: () => `Zobacz wszystko`,\n },\n};\n","import { css, html, LitElement } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport \"../../shared/components/progress-bar\";\nimport \"../beam-partner-logos\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { _cssVariableMap } from \"../../shared/fragments/css-variable-map\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { getImpact } from \"../../api-sdk/v3/routes\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { _loading } from \"../../shared/fragments/loading-template\";\nimport { defineCustomText, useCustomText } from \"../../shared/fragments/custom-text\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES, WIDGET_NAMES } from \"../../api-sdk/constants\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { BeamError, MissingConfig } from \"../../utils/beam-errors\";\nimport { TNumericId } from \"../../shared/types\";\nimport { cssCardGrid } from \"../../shared/fragments/css-card-grid\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { localizeUserString } from \"../../shared/localize\";\nimport { progressBarConfigDefaults } from \"../../shared/components/progress-bar\";\nimport { partnerLogosConfigDefaults } from \"../beam-partner-logos\";\nimport { strings } from \"./strings\";\n\ntype RequiredConfig = {\n apiKey: string;\n chainId: TNumericId;\n};\n\ntype IAPIV3NonprofitImpact = Awaited<ReturnType<typeof getImpact>>[\"community\"][0];\n\n/**\n * Beam Impact Overview Widget\n * Displays a grid of cards highlighting progress against funding goals\n * for the non-profits the chain is supporting.\n */\nexport class BeamCommunityImpact extends LitElement {\n static tagName = \"beam-community-impact\";\n\n @property({ type: String }) public apiKey?: RequiredConfig[\"apiKey\"];\n\n @property({ type: Number }) public chainId?: RequiredConfig[\"chainId\"];\n\n @property({ type: String }) public baseUrl = DEFAULT_BASE_URL;\n\n @property({ type: String }) public cardStyle: \"icon\" | \"image\" = \"image\";\n\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n\n @property({ type: Boolean }) public debug = false;\n\n @property({ type: Boolean }) public draftConfig = false;\n\n @state() private selectedFilter: string | null = null;\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n private getImpactData = async () => {\n if (!enforceConfig<RequiredConfig>([\"apiKey\", \"chainId\"], this)) throw new MissingConfig();\n const res = getImpact({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n queryParams: {\n chainId: this.chainId,\n personalImpactLimit: 0,\n widgetName: WIDGET_NAMES.community_impact,\n version: \"1.0.0\",\n lang: this.configLang,\n draftConfig: this.draftConfig,\n },\n });\n\n return res;\n };\n\n private impactDataController = new AsyncController<typeof this.getImpactData>(this, this.getImpactData);\n\n async updated(changedProperties: Map<string, unknown>) {\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\", \"lang\"];\n for (const prop of requireNewDataProps) {\n if (changedProperties.has(prop)) {\n this.impactDataController.exec();\n break;\n }\n }\n }\n\n private renderFilterTabs({ nonprofits }: { nonprofits: IAPIV3NonprofitImpact[] }) {\n const uniqueFilters = Array.from(new Set(nonprofits.flatMap((n) => n.filters || [])));\n if (uniqueFilters.length === 0) return \"\";\n const handleSeeAllFocus = () => {\n this.selectedFilter = null;\n };\n const handleFilterFocus = (filter: string) => {\n if (this.selectedFilter === filter) {\n this.selectedFilter = null;\n } else {\n this.selectedFilter = filter;\n }\n };\n return html` <div\n class=\"beam-filter-tabs\"\n part=\"filters\"\n style=\"display: inline-flex; flex-wrap: wrap; gap: 0.5em 1em\"\n >\n <span\n tabindex=\"0\"\n style=\"${styleMap({\n \"padding-bottom\": \"1px\",\n \"border-bottom-width\": \"2px\",\n \"border-bottom-style\": \"solid\",\n \"border-bottom-color\": this.selectedFilter === null ? \"currentColor\" : \"transparent\",\n })}\"\n @click=${handleSeeAllFocus}\n @keydown=${(evt: KeyboardEvent) => {\n if ([\"Enter\", \" \"].includes(evt.key)) {\n evt.preventDefault();\n handleSeeAllFocus();\n }\n }}\n >${strings[this.configLang].seeAll()}</span\n >\n ${uniqueFilters.map(\n (filter: string) =>\n html`<span\n tabindex=\"0\"\n @click=${() => handleFilterFocus(filter)}\n @keydown=${(evt: KeyboardEvent) => {\n if ([\"Enter\", \" \"].includes(evt.key)) {\n evt.preventDefault();\n handleFilterFocus(filter);\n }\n }}\n style=\"${styleMap({\n \"padding-bottom\": \"1px\",\n \"border-bottom-width\": \"2px\",\n \"border-bottom-style\": \"solid\",\n \"border-bottom-color\": this.selectedFilter === filter ? \"currentColor\" : \"transparent\",\n })}\"\n >${filter}</span\n >`\n )}\n </div>`;\n }\n\n private renderImageCard = (data: IAPIV3NonprofitImpact) => {\n const nonprofitImageAltText = `${data.nonprofit?.name} image`;\n const learnMoreLinkAriaLabel = `Learn more about ${data.nonprofit?.name}`;\n\n return html`\n <div class=\"image-card\" part=\"nonprofit-card\" style=\"display: flex; flex-direction: column;\">\n <div\n class=\"image-card-image-box\"\n style=\"background-image: url('${data.imageUrl}');\"\n aria-label=\"${nonprofitImageAltText}\"\n >\n <p class=\"image-card-cause\">${localizeUserString(this.configLang, data.nonprofit?.cause || \"\")}</p>\n <h2 class=\"image-card-name\">${localizeUserString(this.configLang, data.nonprofit?.name)}</h2>\n </div>\n <div\n style=\"padding: 5px 15px 15px; flex: 1 1 auto; border-radius: 0px; border: none; display: flex; flex-direction: column;\"\n >\n <div class=\"image-card-progress\" style=\"display: flex; align-items: center;\">\n <beam-progress-bar style=\"flex-grow: 1;\" value=\"${data.impact?.goalProgressPercentage}\"></beam-progress-bar>\n <span class=\"image-card-progressText\" style=\"margin-left: 20px;\"\n >${localizeUserString(this.configLang, data.impact?.goalProgressText)}</span\n >\n </div>\n <div class=\"image-card-description\">\n ${unsafeHTML(localizeUserString(this.configLang, data.impact?.description || \"\"))}\n </div>\n <div style=\"display: flex; align-items: end; flex-wrap: wrap; gap: 10px; flex: 1;\" class=\"image-card-footer\">\n <div class=\"image-card-goal-completion\" style=\"flex-grow: 1;\">\n ${unsafeHTML(localizeUserString(this.configLang, data.impact?.goalCompletionText))}\n </div>\n <a\n href=\"${data.nonprofit?.website}\"\n target=\"_blank\"\n class=\"image-card-link\"\n style=\"color: var(--beam-CommunityImpact-imageCard-link-color, inherit); white-space: nowrap\"\n aria-label=\"${learnMoreLinkAriaLabel}\"\n >\n ${localizeUserString(this.configLang, data.nonprofit?.websiteLinkText)}<span class=\"image-card-link-arrow\"\n > ›</span\n >\n </a>\n </div>\n </div>\n </div>\n `;\n };\n\n private renderIconCard = (data: IAPIV3NonprofitImpact) => {\n const nonprofitIconAltText = `${data.nonprofit?.name} icon`;\n const learnMoreLinkAriaLabel = `Learn more about ${data.nonprofit?.name}`;\n\n return html`\n <div class=\"icon-card\" part=\"nonprofit-card\" style=\"display: flex; flex-direction: column;\">\n <img class=\"icon-card-icon\" src=\"${data.nonprofit?.causeIconUrl}\" alt=\"${nonprofitIconAltText}\" />\n <p class=\"icon-card-cause\">${data.nonprofit?.cause}</p>\n <h2 class=\"icon-card-name\">${data.nonprofit?.name}</h2>\n <div class=\"icon-card-description\" part=\"nonprofit-card-description\" style=\"flex: 1;\">\n ${unsafeHTML(localizeUserString(this.configLang, data.impact?.description || \"\"))}\n </div>\n <div class=\"icon-card-footer\" style=\"width: 100%; text-align: center;\">\n <div class=\"icon-card-progress\" style=\"display: flex; align-items: center; width: 100%;\">\n <beam-progress-bar style=\"flex: 1 0;\" value=\"${data.impact?.goalProgressPercentage}\"></beam-progress-bar>\n <span style=\"text-align: right; flex: 0 1; white-space: nowrap\" class=\"icon-card-progressText\"\n >${localizeUserString(this.configLang, data.impact?.goalProgressText)}</span\n >\n </div>\n <div class=\"icon-card-goal-completion\">\n ${unsafeHTML(localizeUserString(this.configLang, data.impact?.goalCompletionText))}\n </div>\n <a\n href=\"${data.nonprofit?.website}\"\n target=\"_blank\"\n class=\"icon-card-link\"\n style=\"color: var(--beam-CommunityImpact-iconCard-link-color, inherit); display: block\"\n aria-label=\"${learnMoreLinkAriaLabel}\"\n >${localizeUserString(this.configLang, data.nonprofit?.websiteLinkText) ||\n strings[this.configLang].learnMore()}<span class=\"icon-card-link-arrow\"> ›</span>\n </a>\n ${data.impact?.goalCompletionText === \"\" ? html`<div class=\"icon-card-goal-completion\"> </div>` : \"\"}\n </div>\n </div>\n `;\n };\n\n private renderCards = ({ nonprofits }: { nonprofits: IAPIV3NonprofitImpact[] }) => {\n return html`\n <div class=\"beam-nonprofit-${this.cardStyle}-cards\" part=\"nonprofit-cards\">\n ${nonprofits?.map(this.cardStyle === \"image\" ? this.renderImageCard : this.renderIconCard)}\n </div>\n `;\n };\n\n render() {\n const { selectedFilter } = this;\n const { data, error, loading } = 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 BeamError(\"Missing data\") });\n }\n return \"\";\n }\n const { community: nonprofits } = data;\n const filteredNonprofits = selectedFilter\n ? nonprofits.filter((np) => np.filters?.includes(selectedFilter))\n : nonprofits;\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n <beam-partner-logos\n part=\"logos\"\n partnerLogoUrl=\"${data.chain.logoUrl}\"\n partnerName=\"${data.chain.name}\"\n ></beam-partner-logos>\n\n ${this.renderFilterTabs({ nonprofits })} ${this.renderCards({ nonprofits: filteredNonprofits })}\n `;\n }\n\n public get cssVariables() {\n const defaults: Record<string, string> = {\n \"--beam-fontFamily\": \"inherit\",\n \"--beam-fontStyle\": \"inherit\",\n \"--beam-fontSize\": \"14px\",\n \"--beam-lineHeight\": \"1\",\n \"--beam-textColor\": \"inherit\",\n \"--beam-backgroundColor\": \"inherit\",\n ...partnerLogosConfigDefaults,\n ...progressBarConfigDefaults,\n \"--beam-CommunityImpact-filterTabs-textalign\": \"left\",\n \"--beam-CommunityImpact-filterTabs-marginBottom\": \"20px\",\n /* Image Card Styles */\n \"--beam-CommunityImpact-imageCard-borderColor\": \"currentColor\",\n \"--beam-CommunityImpact-imageCard-borderRadius\": \"0\",\n \"--beam-CommunityImpact-imageCard-borderWidth\": \"1px\",\n \"--beam-CommunityImpact-imageCard-backgroundColor\": \"inherit\",\n \"--beam-CommunityImpact-imageCard-foregroundColor\": \"inherit\",\n ...defineCustomText(\"--beam-CommunityImpact-filterTabs\", {\n fontSize: \"16px\",\n marginTop: \"10px\",\n fontWeight: \"bold\",\n }),\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-cause\", {\n fontSize: \"14px\",\n textTransform: \"uppercase\",\n color: \"#fff\",\n }),\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-name\", {\n fontSize: \"22px\",\n marginTop: \"0\",\n color: \"#fff\",\n }),\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-description\", {\n marginTop: \"10px\",\n lineHeight: \"1.3\",\n }),\n \"--beam-CommunityImpact-imageCard-link-color\": \"inherit\",\n \"--beam-CommunityImpact-imageCard-linkArrow-display\": \"none\",\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-link\", {\n fontSize: \"12px\",\n }),\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-goalCompletion\", {\n fontSize: \"12px\",\n }),\n \"--beam-CommunityImpact-imageCard-goalCompletion-fontStyle\": \"italic\",\n \"--beam-CommunityImpact-imageCard-progress-marginTop\": \"10px\",\n ...defineCustomText(\"--beam-CommunityImpact-imageCard-progressText\"),\n \"--beam-CommunityImpact-imageCard-footer-marginTop\": \"10px\",\n /* Icon Card Styles */\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-cause\", {\n marginTop: \"10px\",\n }),\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-name\", {\n marginTop: \"5px\",\n fontWeight: \"bold\",\n }),\n \"--beam-CommunityImpact-iconCard-progress-marginTop\": \"10px\",\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-progressText\"),\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-description\", {\n marginTop: \"10px\",\n lineHeight: \"1.3\",\n }),\n \"--beam-CommunityImpact-iconCard-description-textAlign\": \"left\",\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-goalCompletion\", {\n marginTop: \"10px\",\n }),\n \"--beam-CommunityImpact-iconCard-link-color\": \"inherit\",\n \"--beam-CommunityImpact-iconCard-linkArrow-display\": \"none\",\n ...defineCustomText(\"--beam-CommunityImpact-iconCard-link\", {\n marginTop: \"5px\",\n }),\n };\n\n const cardCount = this.impactDataController.data?.community.length || 0;\n const columnCount = cardCount === 3 ? 3 : this.cardStyle === \"icon\" ? 4 : 2;\n defaults[\"--beam-CommunityImpact-columns\"] = columnCount.toString();\n defaults[\"--beam-CommunityImpact-columns-minWidth\"] = this.cardStyle === \"image\" ? \"300px\" : \"200px\";\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 css`\n :host {\n display: block;\n font-family: var(--beam-fontFamily, inherit);\n font-style: var(--beam-fontStyle, inherit);\n font-size: var(--beam-fontSize, inherit);\n color: var(--beam-textColor, inherit);\n background-color: var(--beam-backgroundColor, inherit);\n line-height: var(--beam-lineHeight, 1);\n word-break: normal;\n }\n\n .beam-filter-tabs {\n ${useCustomText(\"--beam-CommunityImpact-filterTabs\")}\n margin-bottom: var(--beam-CommunityImpact-filterTabs-marginBottom, 10px);\n text-align: var(--beam-CommunityImpact-filterTabs-textalign, left);\n }\n\n .beam-nonprofit-image-cards,\n .beam-nonprofit-icon-cards {\n margin-top: 10px;\n }\n\n ${cssCardGrid({\n gap: \"20px\",\n className: \"beam-nonprofit-image-cards\",\n columnCount: \"var(--beam-CommunityImpact-columns)\",\n itemMinWidth: \"var(--beam-CommunityImpact-columns-minWidth)\",\n })}\n\n ${cssCardGrid({\n gap: \"40px\",\n className: \"beam-nonprofit-icon-cards\",\n columnCount: \"var(--beam-CommunityImpact-columns)\",\n itemMinWidth: \"var(--beam-CommunityImpact-columns-minWidth)\",\n })}\n\n /* Image Style Cards */\n\n .image-card {\n overflow-wrap: break-word;\n border-color: var(--beam-CommunityImpact-imageCard-borderColor);\n border-style: solid;\n border-width: var(--beam-CommunityImpact-imageCard-borderWidth);\n border-radius: var(--beam-CommunityImpact-imageCard-borderRadius);\n overflow: hidden;\n background-color: var(--beam-CommunityImpact-imageCard-backgroundColor);\n color: var(--beam-CommunityImpact-imageCard-foregroundColor);\n }\n\n .image-card-image-box {\n height: 200px;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n padding: 0 24px 16px;\n overflow-wrap: break-word;\n background-color: #555;\n background-blend-mode: overlay;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n .image-card-cause {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-cause\")}\n }\n\n .image-card-name {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-name\")}\n }\n\n .image-card-progress {\n margin-top: var(--beam-CommunityImpact-imageCard-progress-marginTop);\n }\n\n .image-card-progressText {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-progressText\")}\n }\n\n .image-card-description {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-description\")}\n }\n\n .image-card-link {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-link\")}\n }\n\n .image-card-link-arrow {\n display: var(--beam-CommunityImpact-imageCard-linkArrow-display, \"none\");\n }\n\n .image-card-goal-completion {\n ${useCustomText(\"--beam-CommunityImpact-imageCard-goalCompletion\")}\n font-style: var(--beam-CommunityImpact-imageCard-goalCompletion-fontStyle, italic);\n }\n\n .image-card-footer {\n margin-top: var(--beam-CommunityImpact-imageCard-footer-marginTop);\n }\n\n /* Icon Style Cards */\n\n .icon-card {\n display: flex;\n flex-direction: column;\n justify-content: start;\n align-items: center;\n }\n\n .icon-card-icon {\n height: 50px;\n }\n\n .icon-card-cause {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-cause\")}\n }\n\n .icon-card-name {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-name\")}\n }\n\n .icon-card-progress {\n margin-top: var(--beam-CommunityImpact-iconCard-progress-marginTop);\n }\n\n .icon-card-progressText {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-progressText\")}\n margin-left: 10px;\n }\n\n .icon-card-description {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-description\")}\n text-align: var(--beam-CommunityImpact-iconCard-description-textAlign, left);\n }\n\n .icon-card-link {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-link\")}\n }\n\n .icon-card-link-arrow {\n display: var(--beam-CommunityImpact-iconCard-linkArrow-display, \"none\");\n }\n\n .icon-card-goal-completion {\n ${useCustomText(\"--beam-CommunityImpact-iconCard-goalCompletion\")}\n font-style: var(--beam-CommunityImpact-iconCard-goalCompletion-fontStyle, italic);\n }\n\n .icon-card-footer {\n margin-top: var(--beam-CommunityImpact-iconCard-footer-marginTop);\n }\n `,\n ];\n}\n\ndefineCustomElement(BeamCommunityImpact);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-community-impact\": BeamCommunityImpact;\n }\n}\n"],"names":["strings","times","BeamCommunityImpact","LitElement","DEFAULT_BASE_URL","enforceConfig","getImpact","WIDGET_NAMES","AsyncController","data","nonprofitImageAltText","learnMoreLinkAriaLabel","html","localizeUserString","unsafeHTML","nonprofitIconAltText","nonprofits","SUPPORTED_LANGUAGES","changedProperties","requireNewDataProps","prop","uniqueFilters","n","handleSeeAllFocus","handleFilterFocus","filter","styleMap","evt","selectedFilter","error","loading","_loading","_errorMessage","BeamError","filteredNonprofits","np","defaults","partnerLogosConfigDefaults","progressBarConfigDefaults","defineCustomText","columnCount","remoteConfig","config","_cssVariableMap","cssReset","css","useCustomText","cssCardGrid","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{t as C,h as b,y as u,g as l,f as y,p as I}from"../chunks/lit-
|
|
1
|
+
import{t as C,h as b,y as u,g as l,f as y,p as I}from"../chunks/lit-WqMxC_PA.esm.js";import{d as x}from"../chunks/lodash-7H4x2457.esm.js";import{c as T,d as S,e as E}from"../chunks/enforce-config-CZ3ToOgr.esm.js";import{u as p,A as z,_ as f,i as d,d as v,a as B}from"../chunks/localize-Btu9xYcE.esm.js";import{D as k,k as D,S as L}from"../chunks/routes-pcL-CUiQ.esm.js";import{B as $}from"../chunks/beam-errors-Ci0d3926.esm.js";import{_ as V}from"../chunks/loading-template-DG4lkIIc.esm.js";import{i as A}from"../chunks/is-all-html-elements-fcB7UUA1.esm.js";import"../utils/logger.esm.js";var R=Object.defineProperty,h=(n,e,t,i)=>{for(var a=void 0,o=n.length-1,s;o>=0;o--)(s=n[o])&&(a=s(e,t,a)||a);return a&&R(e,t,a),a};class c extends b{constructor(){super(...arguments),this.finalValue=0,this.duration=1500,this.counter=0,this.intervalId=0,this.handleCounterAnimateIfInView=e=>{e.some(t=>t.isIntersecting)&&(this.animateCounter(),this.unobserveScrollTarget())},this.animateCounter=()=>{const e=41.666666666666664,t=e/this.duration*this.finalValue;this.intervalId=setInterval(()=>{const i=this.counter+t;if(i>=this.finalValue){this.counter=this.finalValue,clearInterval(this.intervalId);return}else this.counter=i},e)},this.observer=new IntersectionObserver(this.handleCounterAnimateIfInView,{threshold:.1}),this.observeScrollTarget=()=>{const e=this.scrollTargetElement;e&&this.observer.observe(e)},this.unobserveScrollTarget=()=>{const e=this.scrollTargetElement;e&&this.observer.unobserve(e)}}connectedCallback(){super.connectedCallback();const e=window.matchMedia("(prefers-reduced-motion: reduce)").matches;this.duration===0||e?this.counter=this.finalValue:this.observeScrollTarget()}disconnectedCallback(){super.disconnectedCallback(),this.unobserveScrollTarget(),clearInterval(this.intervalId)}get scrollTargetElement(){return this.scrollTarget?document.querySelector(this.scrollTarget):this}render(){return u`${Math.ceil(this.counter).toLocaleString()}`}}h([l({type:Number})],c.prototype,"finalValue"),h([l({type:Number})],c.prototype,"duration"),h([l({type:String})],c.prototype,"scrollTarget"),h([C()],c.prototype,"counter"),customElements.get("animated-counter")||customElements.define("animated-counter",c);const j=n=>{const e=n instanceof NodeList?Array.from(n):n;if(e.length===0||!A(e))return;const t=e.sort((a,o)=>{const s=getComputedStyle(a).getPropertyValue("width").replace("px",""),g=getComputedStyle(o).getPropertyValue("width").replace("px","");return parseInt(g)-parseInt(s)})[0],i=getComputedStyle(t).getPropertyValue("width");for(const a of e)getComputedStyle(a).getPropertyValue("width")!==i&&(a.style.width=i)},w={en:{cumulativeImpactTitle:()=>"What we've funded",cumulativeImpactDescription:()=>"Here's the impact that our community has made so far in partnership with Beam. Our impact is growing every day\u2014 scroll to check out the goals we're working toward together right now."},fr:{cumulativeImpactTitle:()=>"Ce que nous avons financ\xE9",cumulativeImpactDescription:()=>"Voici l'impact que notre communaut\xE9 a eu jusqu'\xE0 pr\xE9sent en partenariat avec Beam. Notre impact grandit chaque jour : faites d\xE9filer pour d\xE9couvrir les objectifs vers lesquels nous travaillons ensemble en ce moment."},de:{cumulativeImpactTitle:()=>"Was wir finanziert haben",cumulativeImpactDescription:()=>"Hier ist die Wirkung, die unsere Community bisher in Zusammenarbeit mit Beam erzielt hat. Unsere Wirkung w\xE4chst von Tag zu Tag - scrollen Sie, um einen Blick auf die Ziele zu werfen, auf die wir derzeit gemeinsam hinarbeiten."},es:{cumulativeImpactTitle:()=>"Lo que hemos financiado",cumulativeImpactDescription:()=>"Este es el impacto que nuestra comunidad ha tenido hasta ahora en asociaci\xF3n con Beam. Nuestro impacto crece cada d\xEDa; despl\xE1cese para ver los objetivos por los que estamos trabajando juntos en este momento."},it:{cumulativeImpactTitle:()=>"Cosa abbiamo finanziato",cumulativeImpactDescription:()=>"Ecco l'impatto che la nostra comunit\xE0 ha avuto finora in collaborazione con Beam. Il nostro impatto cresce ogni giorno: scorri per scoprire gli obiettivi a cui stiamo lavorando insieme in questo momento."},pl:{cumulativeImpactTitle:()=>"Co sfinansowali\u015Bmy",cumulativeImpactDescription:()=>"Oto wp\u0142yw, jaki nasza spo\u0142eczno\u015B\u0107 wywar\u0142a dotychczas we wsp\xF3\u0142pracy z Beam. Nasz wp\u0142yw ro\u015Bnie z ka\u017Cdym dniem \u2014 przewi\u0144, aby sprawdzi\u0107 cele, nad kt\xF3rymi obecnie wsp\xF3lnie pracujemy."}};var q=Object.defineProperty,m=(n,e,t,i)=>{for(var a=void 0,o=n.length-1,s;o>=0;o--)(s=n[o])&&(a=s(e,t,a)||a);return a&&q(e,t,a),a};const U=1.5*1e3;class r extends b{constructor(){super(...arguments),this.baseUrl=k,this.lang="en",this.disableAnimation=!1,this.debug=!1,this.draftConfig=!1,this.getCumulativeImpactData=async()=>(E(["apiKey","chainId"],this),await D({baseUrl:this.baseUrl,pathParams:{chainId:this.chainId},headers:{authorization:`Api-Key ${this.apiKey}`},queryParams:{version:"1.0.0",lang:this.configLang,draftConfig:this.draftConfig}})),this.cumulativeImpactDataController=new z(this,this.getCumulativeImpactData),this.resizeElements=x(()=>{j(this.impactRowRefs)},50,{maxWait:50,leading:!0})}get configLang(){return L[this.lang]||"en"}connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this.resizeElements)}async updated(e){const t=["chainId","baseUrl","lang"];for(const i of t)if(e.has(i)){await this.cumulativeImpactDataController.exec();break}this.resizeElements()}render(){const{data:e,error:t,loading:i}=this.cumulativeImpactDataController;return i?V():t?this.debug?f({error:t}):"":e==null?this.debug?f({error:new $("Missing data")}):"":u`
|
|
2
2
|
<style>
|
|
3
3
|
:host {
|
|
4
4
|
${this.cssVariables.toCSS()}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{t as C,h as b,y as u,g as l,f as y,p as I}from"../chunks/lit-
|
|
1
|
+
import{t as C,h as b,y as u,g as l,f as y,p as I}from"../chunks/lit-WqMxC_PA.esm.js";import{d as x}from"../chunks/lodash-7H4x2457.esm.js";import{c as T,d as S,e as E}from"../chunks/enforce-config-Ba1JkOHs.esm.js";import{u as p,A as z,_ as f,i as d,d as v,a as B}from"../chunks/localize-C25pEGnx.esm.js";import{D as k,k as D,S as L}from"../chunks/routes-CAhDCFDX.esm.js";import{B as $}from"../chunks/beam-errors-Ci0d3926.esm.js";import{_ as V}from"../chunks/loading-template-DG4lkIIc.esm.js";import{i as A}from"../chunks/is-all-html-elements-fcB7UUA1.esm.js";import"../utils/logger.js";var R=Object.defineProperty,h=(n,e,t,i)=>{for(var a=void 0,o=n.length-1,s;o>=0;o--)(s=n[o])&&(a=s(e,t,a)||a);return a&&R(e,t,a),a};class c extends b{constructor(){super(...arguments),this.finalValue=0,this.duration=1500,this.counter=0,this.intervalId=0,this.handleCounterAnimateIfInView=e=>{e.some(t=>t.isIntersecting)&&(this.animateCounter(),this.unobserveScrollTarget())},this.animateCounter=()=>{const e=41.666666666666664,t=e/this.duration*this.finalValue;this.intervalId=setInterval(()=>{const i=this.counter+t;if(i>=this.finalValue){this.counter=this.finalValue,clearInterval(this.intervalId);return}else this.counter=i},e)},this.observer=new IntersectionObserver(this.handleCounterAnimateIfInView,{threshold:.1}),this.observeScrollTarget=()=>{const e=this.scrollTargetElement;e&&this.observer.observe(e)},this.unobserveScrollTarget=()=>{const e=this.scrollTargetElement;e&&this.observer.unobserve(e)}}connectedCallback(){super.connectedCallback();const e=window.matchMedia("(prefers-reduced-motion: reduce)").matches;this.duration===0||e?this.counter=this.finalValue:this.observeScrollTarget()}disconnectedCallback(){super.disconnectedCallback(),this.unobserveScrollTarget(),clearInterval(this.intervalId)}get scrollTargetElement(){return this.scrollTarget?document.querySelector(this.scrollTarget):this}render(){return u`${Math.ceil(this.counter).toLocaleString()}`}}h([l({type:Number})],c.prototype,"finalValue"),h([l({type:Number})],c.prototype,"duration"),h([l({type:String})],c.prototype,"scrollTarget"),h([C()],c.prototype,"counter"),customElements.get("animated-counter")||customElements.define("animated-counter",c);const j=n=>{const e=n instanceof NodeList?Array.from(n):n;if(e.length===0||!A(e))return;const t=e.sort((a,o)=>{const s=getComputedStyle(a).getPropertyValue("width").replace("px",""),g=getComputedStyle(o).getPropertyValue("width").replace("px","");return parseInt(g)-parseInt(s)})[0],i=getComputedStyle(t).getPropertyValue("width");for(const a of e)getComputedStyle(a).getPropertyValue("width")!==i&&(a.style.width=i)},w={en:{cumulativeImpactTitle:()=>"What we've funded",cumulativeImpactDescription:()=>"Here's the impact that our community has made so far in partnership with Beam. Our impact is growing every day\u2014 scroll to check out the goals we're working toward together right now."},fr:{cumulativeImpactTitle:()=>"Ce que nous avons financ\xE9",cumulativeImpactDescription:()=>"Voici l'impact que notre communaut\xE9 a eu jusqu'\xE0 pr\xE9sent en partenariat avec Beam. Notre impact grandit chaque jour : faites d\xE9filer pour d\xE9couvrir les objectifs vers lesquels nous travaillons ensemble en ce moment."},de:{cumulativeImpactTitle:()=>"Was wir finanziert haben",cumulativeImpactDescription:()=>"Hier ist die Wirkung, die unsere Community bisher in Zusammenarbeit mit Beam erzielt hat. Unsere Wirkung w\xE4chst von Tag zu Tag - scrollen Sie, um einen Blick auf die Ziele zu werfen, auf die wir derzeit gemeinsam hinarbeiten."},es:{cumulativeImpactTitle:()=>"Lo que hemos financiado",cumulativeImpactDescription:()=>"Este es el impacto que nuestra comunidad ha tenido hasta ahora en asociaci\xF3n con Beam. Nuestro impacto crece cada d\xEDa; despl\xE1cese para ver los objetivos por los que estamos trabajando juntos en este momento."},it:{cumulativeImpactTitle:()=>"Cosa abbiamo finanziato",cumulativeImpactDescription:()=>"Ecco l'impatto che la nostra comunit\xE0 ha avuto finora in collaborazione con Beam. Il nostro impatto cresce ogni giorno: scorri per scoprire gli obiettivi a cui stiamo lavorando insieme in questo momento."},pl:{cumulativeImpactTitle:()=>"Co sfinansowali\u015Bmy",cumulativeImpactDescription:()=>"Oto wp\u0142yw, jaki nasza spo\u0142eczno\u015B\u0107 wywar\u0142a dotychczas we wsp\xF3\u0142pracy z Beam. Nasz wp\u0142yw ro\u015Bnie z ka\u017Cdym dniem \u2014 przewi\u0144, aby sprawdzi\u0107 cele, nad kt\xF3rymi obecnie wsp\xF3lnie pracujemy."}};var q=Object.defineProperty,m=(n,e,t,i)=>{for(var a=void 0,o=n.length-1,s;o>=0;o--)(s=n[o])&&(a=s(e,t,a)||a);return a&&q(e,t,a),a};const U=1.5*1e3;class r extends b{constructor(){super(...arguments),this.baseUrl=k,this.lang="en",this.disableAnimation=!1,this.debug=!1,this.draftConfig=!1,this.getCumulativeImpactData=async()=>(E(["apiKey","chainId"],this),await D({baseUrl:this.baseUrl,pathParams:{chainId:this.chainId},headers:{authorization:`Api-Key ${this.apiKey}`},queryParams:{version:"1.0.0",lang:this.configLang,draftConfig:this.draftConfig}})),this.cumulativeImpactDataController=new z(this,this.getCumulativeImpactData),this.resizeElements=x(()=>{j(this.impactRowRefs)},50,{maxWait:50,leading:!0})}get configLang(){return L[this.lang]||"en"}connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this.resizeElements)}async updated(e){const t=["chainId","baseUrl","lang"];for(const i of t)if(e.has(i)){await this.cumulativeImpactDataController.exec();break}this.resizeElements()}render(){const{data:e,error:t,loading:i}=this.cumulativeImpactDataController;return i?V():t?this.debug?f({error:t}):"":e==null?this.debug?f({error:new $("Missing data")}):"":u`
|
|
2
2
|
<style>
|
|
3
3
|
:host {
|
|
4
4
|
${this.cssVariables.toCSS()}
|
|
@@ -6,7 +6,7 @@ import { T as TUrl, L as LANGUAGES } from '../chunks/types-C7gqAyyH.esm.js';
|
|
|
6
6
|
import '../chunks/progress-bar-CveZ8E6Q.esm.js';
|
|
7
7
|
import { T as TNumericId, a as TId } from '../chunks/types-CPxMwnoR.esm.js';
|
|
8
8
|
import './beam-partner-logos.js';
|
|
9
|
-
import '../chunks/share-button-
|
|
9
|
+
import '../chunks/share-button-B9hpxBVr.esm.js';
|
|
10
10
|
|
|
11
11
|
type RequiredConfig = {
|
|
12
12
|
apiKey: string;
|