@beamimpact/web-sdk 1.53.1 → 1.54.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/_share-dialog-dependencies-DQlABdY4.esm.js +2 -0
- package/dist/chunks/{_share-dialog-dependencies-Cirjl8zP.esm.js.map → _share-dialog-dependencies-DQlABdY4.esm.js.map} +1 -1
- package/dist/chunks/_share-dialog-dependencies-Dg-9riak.esm.js +2 -0
- package/dist/chunks/{_share-dialog-dependencies-DElW9Yip.esm.js.map → _share-dialog-dependencies-Dg-9riak.esm.js.map} +1 -1
- package/dist/chunks/{events-BMTcECV9.esm.d.ts → events-C55rozsO.esm.d.ts} +33 -2
- package/dist/chunks/events-Dki0ka4F.esm.js +2 -0
- package/dist/chunks/{events-BohmT6Lp.esm.js.map → events-Dki0ka4F.esm.js.map} +1 -1
- package/dist/chunks/{index-C4P0R2un.esm.d.ts → index-B6EWjlNI.esm.d.ts} +1 -1
- package/dist/chunks/index-B9cvR1bA.esm.js +2 -0
- package/dist/chunks/index-B9cvR1bA.esm.js.map +1 -0
- package/dist/chunks/index-BBU6h_u0.esm.js +2 -0
- package/dist/chunks/index-BBU6h_u0.esm.js.map +1 -0
- package/dist/chunks/index-BJWJMzYy.esm.js +2 -0
- package/dist/chunks/index-BJWJMzYy.esm.js.map +1 -0
- package/dist/chunks/index-BXVkhkpJ.esm.js +2 -0
- package/dist/chunks/index-BXVkhkpJ.esm.js.map +1 -0
- package/dist/chunks/{index-vH6HFI2B.esm.js → index-Bp9sWMsk.esm.js} +35 -35
- package/dist/chunks/index-Bp9sWMsk.esm.js.map +1 -0
- package/dist/chunks/{index-DZyO6--E.esm.js → index-BzcA5RKX.esm.js} +2 -2
- package/dist/chunks/{index-DZyO6--E.esm.js.map → index-BzcA5RKX.esm.js.map} +1 -1
- package/dist/chunks/index-CGKJagBi.esm.js +2 -0
- package/dist/chunks/index-CGKJagBi.esm.js.map +1 -0
- package/dist/chunks/{index-IZJ4xhyj.esm.js → index-Cb7X_azQ.esm.js} +2 -2
- package/dist/chunks/{index-IZJ4xhyj.esm.js.map → index-Cb7X_azQ.esm.js.map} +1 -1
- package/dist/chunks/index-Ct1m4IjM.esm.js +2 -0
- package/dist/chunks/index-Ct1m4IjM.esm.js.map +1 -0
- package/dist/chunks/{index-CjT2ycv5.esm.js → index-DA4pws6n.esm.js} +35 -35
- package/dist/chunks/index-DA4pws6n.esm.js.map +1 -0
- package/dist/chunks/index-DBb5HSkR.esm.js +2 -0
- package/dist/chunks/index-DBb5HSkR.esm.js.map +1 -0
- package/dist/chunks/{index-Ca8xkEwS.esm.d.ts → index-DjSzY8-j.esm.d.ts} +1 -1
- package/dist/chunks/index-Dw8XJ6pi.esm.js +2 -0
- package/dist/chunks/index-Dw8XJ6pi.esm.js.map +1 -0
- package/dist/chunks/{index-DUeE7FLq.esm.js → index-MGQHF6Jd.esm.js} +2 -2
- package/dist/chunks/index-MGQHF6Jd.esm.js.map +1 -0
- package/dist/chunks/{index-DqffUXvi.esm.d.ts → index-OTDSwrqr.esm.d.ts} +1 -1
- package/dist/chunks/index-VrM10qBv.esm.js +2 -0
- package/dist/chunks/index-VrM10qBv.esm.js.map +1 -0
- package/dist/chunks/{index-sUGvOawY.esm.js → index-ayo08Z4n.esm.js} +2 -2
- package/dist/chunks/index-ayo08Z4n.esm.js.map +1 -0
- package/dist/chunks/index-tbwbkOdj.esm.js +2 -0
- package/dist/chunks/index-tbwbkOdj.esm.js.map +1 -0
- package/dist/chunks/order-page-Bowqodk5.esm.js +2 -0
- package/dist/chunks/order-page-Bowqodk5.esm.js.map +1 -0
- package/dist/chunks/order-page-C2wPfn6k.esm.js +2 -0
- package/dist/chunks/order-page-C2wPfn6k.esm.js.map +1 -0
- package/dist/chunks/promo-types-DKAOFHJr.esm.js +2 -0
- package/dist/chunks/promo-types-DKAOFHJr.esm.js.map +1 -0
- package/dist/chunks/routes-DCT5U9dA.esm.js +2 -0
- package/dist/chunks/routes-DCT5U9dA.esm.js.map +1 -0
- package/dist/chunks/routes-DelUpFFo.esm.js +2 -0
- package/dist/chunks/routes-DelUpFFo.esm.js.map +1 -0
- package/dist/chunks/{share-button-8zVx6bYw.esm.js → share-button-7um4cBYz.esm.js} +2 -2
- package/dist/chunks/{share-button-8zVx6bYw.esm.js.map → share-button-7um4cBYz.esm.js.map} +1 -1
- package/dist/chunks/{share-button-CM4kwufS.esm.js → share-button-B376j4qt.esm.js} +2 -2
- package/dist/chunks/{share-button-CM4kwufS.esm.js.map → share-button-B376j4qt.esm.js.map} +1 -1
- package/dist/chunks/{share-button-DNyMCeHQ.esm.js → share-button-BEXn6SRs.esm.js} +2 -2
- package/dist/chunks/{share-button-DNyMCeHQ.esm.js.map → share-button-BEXn6SRs.esm.js.map} +1 -1
- package/dist/chunks/{share-button-CWFcBlaF.esm.js → share-button-BZ9Dmpsy.esm.js} +2 -2
- package/dist/chunks/{share-button-CWFcBlaF.esm.js.map → share-button-BZ9Dmpsy.esm.js.map} +1 -1
- package/dist/chunks/update-cart-BGAM3i5j.esm.js +2 -0
- package/dist/chunks/{update-cart-BQHJ9lRb.esm.js.map → update-cart-BGAM3i5j.esm.js.map} +1 -1
- package/dist/chunks/update-cart-pMo1b75q.esm.js +2 -0
- package/dist/chunks/{update-cart-DCxR1dVX.esm.js.map → update-cart-pMo1b75q.esm.js.map} +1 -1
- package/dist/components/community-impact.esm.js +1 -1
- package/dist/components/community-impact.esm.js.map +1 -1
- package/dist/components/community-impact.js +1 -1
- package/dist/components/community-impact.js.map +1 -1
- package/dist/components/cumulative-impact.esm.js +1 -1
- package/dist/components/cumulative-impact.esm.js.map +1 -1
- package/dist/components/cumulative-impact.js +1 -1
- package/dist/components/cumulative-impact.js.map +1 -1
- package/dist/components/impact-overview.esm.js +35 -35
- package/dist/components/impact-overview.esm.js.map +1 -1
- package/dist/components/impact-overview.js +35 -35
- package/dist/components/impact-overview.js.map +1 -1
- package/dist/components/index.esm.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/post-purchase.d.ts +1 -1
- package/dist/components/post-purchase.esm.js +3 -3
- package/dist/components/post-purchase.esm.js.map +1 -1
- package/dist/components/post-purchase.js +3 -3
- package/dist/components/post-purchase.js.map +1 -1
- package/dist/components/product-details-page.d.ts +1 -1
- package/dist/components/product-details-page.esm.js +7 -7
- package/dist/components/product-details-page.esm.js.map +1 -1
- package/dist/components/product-details-page.js +7 -7
- package/dist/components/product-details-page.js.map +1 -1
- package/dist/components/redeem-transaction.d.ts +1 -1
- package/dist/components/redeem-transaction.esm.js +1 -1
- package/dist/components/redeem-transaction.js +1 -1
- package/dist/components/select-nonprofit.d.ts +2 -1
- package/dist/components/select-nonprofit.esm.js +24 -24
- package/dist/components/select-nonprofit.esm.js.map +1 -1
- package/dist/components/select-nonprofit.js +24 -24
- package/dist/components/select-nonprofit.js.map +1 -1
- package/dist/components/select-subscription-nonprofit.d.ts +1 -1
- package/dist/components/select-subscription-nonprofit.esm.js +16 -16
- package/dist/components/select-subscription-nonprofit.esm.js.map +1 -1
- package/dist/components/select-subscription-nonprofit.js +16 -16
- package/dist/components/select-subscription-nonprofit.js.map +1 -1
- package/dist/components/shopify.d.ts +1 -1
- 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 +1 -1
- package/dist/components/social-share.esm.js.map +1 -1
- package/dist/components/social-share.js +1 -1
- 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 +14 -14
- package/dist/components/subscription-impact.esm.js.map +1 -1
- package/dist/components/subscription-impact.js +14 -14
- package/dist/components/subscription-impact.js.map +1 -1
- package/dist/components/subscription-management.d.ts +1 -1
- package/dist/components/subscription-management.esm.js +1 -1
- package/dist/components/subscription-management.esm.js.map +1 -1
- package/dist/components/subscription-management.js +1 -1
- package/dist/components/subscription-management.js.map +1 -1
- package/dist/index.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.esm.js.map +1 -1
- package/dist/integrations/beam.js +1 -1
- package/dist/integrations/beam.js.map +1 -1
- package/dist/integrations/cart.esm.js +1 -1
- package/dist/integrations/cart.js +1 -1
- package/dist/integrations/index.d.ts +2 -2
- 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/promoManager.esm.js +1 -1
- package/dist/integrations/promoManager.esm.js.map +1 -1
- package/dist/integrations/promoManager.js +1 -1
- package/dist/integrations/promoManager.js.map +1 -1
- package/dist/integrations/shopify.esm.js +1 -1
- package/dist/integrations/shopify.js +1 -1
- package/dist/integrations/statsig.esm.js +1 -1
- package/dist/integrations/statsig.esm.js.map +1 -1
- package/dist/integrations/statsig.js +1 -1
- package/dist/integrations/statsig.js.map +1 -1
- package/dist/integrations/utils.d.ts +1 -1
- package/dist/integrations/utils.esm.js +1 -1
- package/dist/integrations/utils.js +1 -1
- package/dist/react/community-impact.esm.js +1 -1
- package/dist/react/community-impact.esm.js.map +1 -1
- package/dist/react/community-impact.js +1 -1
- package/dist/react/community-impact.js.map +1 -1
- package/dist/react/cumulative-impact.esm.js +1 -1
- package/dist/react/cumulative-impact.esm.js.map +1 -1
- package/dist/react/cumulative-impact.js +1 -1
- package/dist/react/cumulative-impact.js.map +1 -1
- package/dist/react/impact-overview.esm.js +1 -1
- package/dist/react/impact-overview.esm.js.map +1 -1
- package/dist/react/impact-overview.js +1 -1
- package/dist/react/impact-overview.js.map +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.esm.js +1 -1
- package/dist/react/post-purchase.esm.js.map +1 -1
- package/dist/react/post-purchase.js +1 -1
- package/dist/react/post-purchase.js.map +1 -1
- package/dist/react/product-details-page.esm.js +1 -1
- package/dist/react/product-details-page.esm.js.map +1 -1
- package/dist/react/product-details-page.js +1 -1
- package/dist/react/product-details-page.js.map +1 -1
- package/dist/react/redeem-transaction.d.ts +1 -1
- package/dist/react/redeem-transaction.esm.js +1 -1
- package/dist/react/redeem-transaction.esm.js.map +1 -1
- package/dist/react/redeem-transaction.js +1 -1
- package/dist/react/redeem-transaction.js.map +1 -1
- package/dist/react/select-nonprofit.d.ts +1 -1
- package/dist/react/select-nonprofit.esm.js +1 -1
- package/dist/react/select-nonprofit.esm.js.map +1 -1
- package/dist/react/select-nonprofit.js +1 -1
- package/dist/react/select-nonprofit.js.map +1 -1
- package/dist/react/select-subscription-nonprofit.d.ts +1 -1
- package/dist/react/select-subscription-nonprofit.esm.js +1 -1
- package/dist/react/select-subscription-nonprofit.esm.js.map +1 -1
- package/dist/react/select-subscription-nonprofit.js +1 -1
- package/dist/react/select-subscription-nonprofit.js.map +1 -1
- package/dist/react/social-share.esm.js +1 -1
- package/dist/react/social-share.esm.js.map +1 -1
- package/dist/react/social-share.js +1 -1
- package/dist/react/social-share.js.map +1 -1
- package/dist/react/subscription-impact.esm.js +1 -1
- package/dist/react/subscription-impact.esm.js.map +1 -1
- package/dist/react/subscription-impact.js +1 -1
- package/dist/react/subscription-impact.js.map +1 -1
- package/dist/react/subscription-management.esm.js +1 -1
- package/dist/react/subscription-management.esm.js.map +1 -1
- package/dist/react/subscription-management.js +1 -1
- package/dist/react/subscription-management.js.map +1 -1
- package/dist/utils/events.d.ts +1 -1
- package/dist/utils/events.esm.js +1 -1
- package/dist/utils/events.js +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.esm.js +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/network-listeners.esm.js +1 -1
- package/dist/utils/network-listeners.js +1 -1
- package/dist/utils/promoManager.esm.js +1 -1
- package/dist/utils/promoManager.esm.js.map +1 -1
- package/dist/utils/promoManager.js +1 -1
- package/dist/utils/promoManager.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/_share-dialog-dependencies-Cirjl8zP.esm.js +0 -2
- package/dist/chunks/_share-dialog-dependencies-DElW9Yip.esm.js +0 -2
- package/dist/chunks/events-BohmT6Lp.esm.js +0 -2
- package/dist/chunks/index-2vxtp84k.esm.js +0 -2
- package/dist/chunks/index-2vxtp84k.esm.js.map +0 -1
- package/dist/chunks/index-AEnQH-so.esm.js +0 -2
- package/dist/chunks/index-AEnQH-so.esm.js.map +0 -1
- package/dist/chunks/index-Bs4Q42bL.esm.js +0 -2
- package/dist/chunks/index-Bs4Q42bL.esm.js.map +0 -1
- package/dist/chunks/index-CaBSaNNT.esm.js +0 -2
- package/dist/chunks/index-CaBSaNNT.esm.js.map +0 -1
- package/dist/chunks/index-CjT2ycv5.esm.js.map +0 -1
- package/dist/chunks/index-CtYbieoH.esm.js +0 -2
- package/dist/chunks/index-CtYbieoH.esm.js.map +0 -1
- package/dist/chunks/index-DGyP7M3g.esm.js +0 -2
- package/dist/chunks/index-DGyP7M3g.esm.js.map +0 -1
- package/dist/chunks/index-DUeE7FLq.esm.js.map +0 -1
- package/dist/chunks/index-D_L-n4we.esm.js +0 -2
- package/dist/chunks/index-D_L-n4we.esm.js.map +0 -1
- package/dist/chunks/index-DhhPQ773.esm.js +0 -2
- package/dist/chunks/index-DhhPQ773.esm.js.map +0 -1
- package/dist/chunks/index-DtfQd6C4.esm.js +0 -2
- package/dist/chunks/index-DtfQd6C4.esm.js.map +0 -1
- package/dist/chunks/index-Z9-EAuWk.esm.js +0 -2
- package/dist/chunks/index-Z9-EAuWk.esm.js.map +0 -1
- package/dist/chunks/index-sUGvOawY.esm.js.map +0 -1
- package/dist/chunks/index-vH6HFI2B.esm.js.map +0 -1
- package/dist/chunks/order-page-O5u1cAz8.esm.js +0 -2
- package/dist/chunks/order-page-O5u1cAz8.esm.js.map +0 -1
- package/dist/chunks/order-page-Vk9anZAb.esm.js +0 -2
- package/dist/chunks/order-page-Vk9anZAb.esm.js.map +0 -1
- package/dist/chunks/promoManager-B9cTR1R3.esm.js +0 -2
- package/dist/chunks/promoManager-B9cTR1R3.esm.js.map +0 -1
- package/dist/chunks/promoManager-fl54hq13.esm.js +0 -2
- package/dist/chunks/promoManager-fl54hq13.esm.js.map +0 -1
- package/dist/chunks/routes-BnPd0lrO.esm.js +0 -2
- package/dist/chunks/routes-BnPd0lrO.esm.js.map +0 -1
- package/dist/chunks/routes-D7s2_Xn5.esm.js +0 -2
- package/dist/chunks/routes-D7s2_Xn5.esm.js.map +0 -1
- package/dist/chunks/update-cart-BQHJ9lRb.esm.js +0 -2
- package/dist/chunks/update-cart-DCxR1dVX.esm.js +0 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import{j as x,y as r,f as w,g as d,t as k,h as S,k as $}from"../chunks/lit-WqMxC_PA.esm.js";import{u as g,A as I,_ as T,i as f,d as m,a as F}from"../chunks/localize-C25pEGnx.esm.js";import{D as z,W as u,j as E,S as B}from"../chunks/routes-
|
|
1
|
+
import{j as x,y as r,f as w,g as d,t as k,h as S,k as $}from"../chunks/lit-WqMxC_PA.esm.js";import{u as g,A as I,_ as T,i as f,d as m,a as F}from"../chunks/localize-C25pEGnx.esm.js";import{D as z,W as u,j as E,S as B}from"../chunks/routes-DelUpFFo.esm.js";import{c as L,d as A,e as W}from"../chunks/enforce-config-Ba1JkOHs.esm.js";import{c as M}from"../chunks/responsive-BR8qUfBa.esm.js";import"../chunks/vendor-KKSARHWL.esm.js";import{p as G}from"../chunks/promo-pill-label-CbW_Vcru.esm.js";import{formatStoreAndReturnPromoCodes as _,isEmptyPromoData as j,parseJsonStringArray as R,getPromoCodesFromCart as H,setPromoCodesInLocalStorage as U,setPromoCodeInCookie as K}from"../utils/promoManager.js";import{B as V}from"../chunks/cart-contents-DkoytiZh.esm.js";import{createScopedLocalStorage as N}from"../utils/local-storage.js";import{makeApiKeyHeader as O}from"../utils/makeApiKeyHeader.js";import{f as D,a as v}from"../chunks/events-Dki0ka4F.esm.js";import{getBeamCartId as q}from"../utils/cart.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../utils/logger.js";import"../chunks/promo-types-DKAOFHJr.esm.js";import"../utils/cookies.js";const J=(l="",{borderRadius:e="0px",borderStyle:t="unset",borderColor:o="#000000",borderWidth:i="1px"}={})=>{const a=l.startsWith("--beam-")?l:`--beam-${l}`;return{[`${a}-borderRadius`]:e,[`${a}-borderStyle`]:t,[`${a}-borderColor`]:o,[`${a}-borderWidth`]:i}},Y=(l="",{borderRadius:e="0px",borderStyle:t="unset",borderColor:o="#000000",borderWidth:i="1px"}={})=>{const a=l.startsWith("--beam-")?l:`--beam-${l}`;return x(` border-radius: var(${a}-borderRadius, ${e});
|
|
2
2
|
border-style: var(${a}-borderStyle, ${t});
|
|
3
3
|
border-color: var(${a}-borderColor, ${o});
|
|
4
4
|
border-width: var(${a}-borderWidth, ${i});
|
|
5
|
-
`)},
|
|
5
|
+
`)},Z=()=>r` <svg
|
|
6
6
|
xmlns="http://www.w3.org/2000/svg"
|
|
7
7
|
width="24"
|
|
8
8
|
height="24"
|
|
@@ -17,7 +17,7 @@ import{j as x,y as r,f as w,g as d,t as k,h as S,k as $}from"../chunks/lit-WqMxC
|
|
|
17
17
|
<circle cx="12" cy="12" r="10"></circle>
|
|
18
18
|
<path d="M12 16v-4"></path>
|
|
19
19
|
<path d="M12 8h.01"></path>
|
|
20
|
-
</svg>`,P={en:{ctaTitle:()=>"Choose
|
|
20
|
+
</svg>`,P={en:{ctaTitle:()=>"Choose Your Impact",ctaMessage:()=>"At no extra cost, 1% of every order will be donated to a nonprofit you choose. Add to cart to choose. Powered by Beam",inlineSeparator:()=>":"},fr:{ctaTitle:()=>"Choisissez votre impact",ctaMessage:()=>"Sans frais suppl\xE9mentaires, 1 % de chaque commande est revers\xE9 \xE0 l'association de votre choix. Ajoutez au panier pour choisir. Propuls\xE9 par Beam.",inlineSeparator:()=>":"},es:{ctaTitle:()=>"Elige tu impacto",ctaMessage:()=>"Sin coste adicional, el 1 % de cada pedido se dona a la organizaci\xF3n sin \xE1nimo de lucro que elijas. A\xF1\xE1delo al carrito para elegir. Impulsado por Beam.",inlineSeparator:()=>":"},de:{ctaTitle:()=>"W\xE4hlen Sie Ihren Impact",ctaMessage:()=>"Ohne zus\xE4tzliche Kosten wird 1 % jeder Bestellung an eine von Ihnen gew\xE4hlte gemeinn\xFCtzige Organisation gespendet. Zum Warenkorb hinzuf\xFCgen, um auszuw\xE4hlen. Unterst\xFCtzt von Beam.",inlineSeparator:()=>":"},it:{ctaTitle:()=>"Scegli il tuo impatto",ctaMessage:()=>"L'1 % di ogni acquisto viene donato, senza alcun costo aggiuntivo, a un'organizzazione no-profit a tua scelta. Aggiungi al carrello per scegliere. Promosso da Beam.",inlineSeparator:()=>":"},pl:{ctaTitle:()=>"Wybierz sw\xF3j wp\u0142yw",ctaMessage:()=>"1 % warto\u015Bci ka\u017Cdego zam\xF3wienia przekazywany jest na wybran\u0105 przez Ciebie organizacj\u0119 non-profit \u2013 bez dodatkowych koszt\xF3w. Dodaj do koszyka, aby wybra\u0107. Obs\u0142ugiwane przez Beam.",inlineSeparator:()=>":"}};var Q=Object.defineProperty,n=(l,e,t,o)=>{for(var i=void 0,a=l.length-1,c;a>=0;a--)(c=l[a])&&(i=c(e,t,i)||i);return i&&Q(e,t,i),i};const X="--beam-ProductDetailsPage-imageUrl";class s extends S{constructor(){super(...arguments),this.baseUrl=z,this.lang="en",this.draftConfig=!1,this.debug=!1,this.localStorage=N(this),this.pluginPromoCodes=[],this.handlePromoCodesStored=e=>{const t=(e.detail.promoCodes?.unvalidatedPromoCodes??[]).map(o=>o.attributes?.value??o.attributes?.url??"").sort();this.pluginPromoCodes=t},this.postProductDetailsPageData=async()=>{W(["apiKey","storeId"],this);const e=q(V,{apiKey:this.apiKey}),t=this.getManualPromoCodes(),o=_(t.map(c=>({value:c})),this.apiKey),i=o&&!j(o);i&&this.dispatchEvent(new D({source:u.product_details_page}));const a=await E({baseUrl:this.baseUrl,headers:O(this.apiKey),queryParams:{version:"1.0.0",lang:this.configLang,storeId:this.storeId,widgetName:u.product_details_page,draftConfig:this.draftConfig,remoteProductIdentifier:this.remoteProductIdentifier},requestBody:{...i&&{promos:o},beamCartId:e||void 0}});return this.handleValidatedPromoCodes(a),a},this.productDetailsPageDataController=new I(this,this.postProductDetailsPageData)}get configLang(){return B[this.lang]||"en"}get parsedPromoCodes(){return R(this.promoCodes)}getManualPromoCodes(){if(this.parsedPromoCodes&&this.parsedPromoCodes.length>0)return this.parsedPromoCodes;const e=this.localStorage.getItemJson("cart");return e?H(e):[]}async handleValidatedPromoCodes(e){e.promos?.validatedPromoCodes&&(await Promise.all([U({apiKey:this.apiKey,promoCodes:{validatedPromoCodes:e.promos.validatedPromoCodes,unvalidatedPromoCodes:[]}}),K({validatedPromoCodes:e.promos.validatedPromoCodes,domain:this.domain})]),this.dispatchEvent(new D({source:u.product_details_page})))}async firstUpdated(){window.addEventListener(v.eventName,this.handlePromoCodesStored)}disconnectedCallback(){window.removeEventListener(v.eventName,this.handlePromoCodesStored),super.disconnectedCallback()}async updated(e){const t=["storeId","baseUrl","lang","apiKey","pluginPromoCodes","promoCodes"];this.pluginPromoCodes;for(const o of t)if(e.has(o)){await this.productDetailsPageDataController.exec();break}}render(){const{data:e,loading:t}=this.productDetailsPageDataController,o=this.cssVariables["--beam-ProductDetailsPage-image-placement"],i=h=>h!=="0px"&&h!=="0",a=this.cssVariables["--beam-ProductDetailsPage-shouldDisplayPromoPill"]==="true",c=!!e?.config?.web?.promo,y=i(this.cssVariables["--beam-ProductDetailsPage-imageHeight"]),C=i(this.cssVariables["--beam-ProductDetailsPage-title-fontSize"]),p=a&&c&&y&&C,b=this.cssVariables["--beam-ProductDetailsPage-shouldDisplayColon"]==="true";return t?r``:e==null?this.debug?T({error:new Error("No data")}):"":r`
|
|
21
21
|
<style>
|
|
22
22
|
:host {
|
|
23
23
|
${this.cssVariables.toCSS()}
|
|
@@ -47,7 +47,7 @@ import{j as x,y as r,f as w,g as d,t as k,h as S,k as $}from"../chunks/lit-WqMxC
|
|
|
47
47
|
</div>
|
|
48
48
|
`}
|
|
49
49
|
</div>
|
|
50
|
-
`}renderWidgetIcon(e){const t=this.cssVariables[
|
|
50
|
+
`}renderWidgetIcon(e){const t=this.cssVariables[X];return t?r`
|
|
51
51
|
<span class="icon-container" part="icon" ${e==="block-center"?'style="order:1"':""}>
|
|
52
52
|
<img src=${t} part="icon" aria-hidden="true" />
|
|
53
53
|
</span>
|
|
@@ -96,10 +96,10 @@ import{j as x,y as r,f as w,g as d,t as k,h as S,k as $}from"../chunks/lit-WqMxC
|
|
|
96
96
|
tabindex="0"
|
|
97
97
|
circle
|
|
98
98
|
>
|
|
99
|
-
${
|
|
99
|
+
${Z()}
|
|
100
100
|
</sl-button>
|
|
101
101
|
</span>
|
|
102
|
-
</sl-tooltip>`:r``}get cssVariables(){const e={"--beam-ProductDetailsPage-imageWidth":"24px","--beam-ProductDetailsPage-imageHeight":"24px","--beam-ProductDetailsPage-maxWidth":"346px","--beam-ProductDetailsPage-paddingTop":"8px","--beam-ProductDetailsPage-paddingRight":"12px","--beam-ProductDetailsPage-paddingBottom":"8px","--beam-ProductDetailsPage-paddingLeft":"15px","--beam-ProductDetailsPage-InfoContainer-marginLeft":"8px","--beam-ProductDetailsPage-InfoContainer-textAlign":"inherit","--beam-ProductDetailsPage-InfoContainer-lineHeight":"15px","--beam-ProductDetailsPage-InfoContainer-marginTop":"4px","--beam-ProductDetailsPage-backgroundColor":"unset","--beam-ProductDetailsPage-TooltipIcon-width":"10px","--beam-ProductDetailsPage-TooltipIcon-color":"inherit","--beam-ProductDetailsPage-PPGFDisclosure-backgroundColor":"#000000","--beam-ProductDetailsPage-PPGFDisclosure-paddingTop":"10px","--beam-ProductDetailsPage-PPGFDisclosure-paddingRight":"8px","--beam-ProductDetailsPage-PPGFDisclosure-paddingBottom":"10px","--beam-ProductDetailsPage-PPGFDisclosure-paddingLeft":"8px","--beam-ProductDetailsPage-PPGFDisclosureHyperlink-color":"#5CA3FF",...m("--beam-ProductDetailsPage-title",{fontSize:"12px",fontWeight:"bold"}),"--beam-ProductDetailsPage-title-textAlign":"left",...m("--beam-ProductDetailsPage-description",{marginTop:"0px",fontSize:"12px",lineHeight:"15px"}),"--beam-ProductDetailsPage-description-textAlign":"left",...m("--beam-ProductDetailsPage-PPGFDisclosureTooltipContent",{fontSize:"12px",lineHeight:"16px",color:"#FFFFFF"}),...J("--beam-ProductDetailsPage"),"--beam-ProductDetailsPage-close-display":"initial","--beam-ProductDetailsPage-close-padding":"0","--beam-ProductDetailsPage-image-placement":"inline-left","--beam-ProductDetailsPage-blockImage-alignSelf":"center","--beam-ProductDetailsPage-promoPill-marginTop":"4px","--beam-ProductDetailsPage-promoPill-alignSelf":"left","--beam-ProductDetailsPage-shouldDisplayColon":"true","--beam-ProductDetailsPage-shouldDisplayPromoPill":"true",...G},t=this.productDetailsPageDataController?.data?.config?.web?.theme||{},o={...e,...t};return Object.assign(Object.create({toCSS(){return F(this)}}),o)}}s.tagName="beam-product-details-page",s.styles=[L,
|
|
102
|
+
</sl-tooltip>`:r``}get cssVariables(){const e={"--beam-ProductDetailsPage-imageWidth":"24px","--beam-ProductDetailsPage-imageHeight":"24px","--beam-ProductDetailsPage-maxWidth":"346px","--beam-ProductDetailsPage-paddingTop":"8px","--beam-ProductDetailsPage-paddingRight":"12px","--beam-ProductDetailsPage-paddingBottom":"8px","--beam-ProductDetailsPage-paddingLeft":"15px","--beam-ProductDetailsPage-InfoContainer-marginLeft":"8px","--beam-ProductDetailsPage-InfoContainer-textAlign":"inherit","--beam-ProductDetailsPage-InfoContainer-lineHeight":"15px","--beam-ProductDetailsPage-InfoContainer-marginTop":"4px","--beam-ProductDetailsPage-backgroundColor":"unset","--beam-ProductDetailsPage-TooltipIcon-width":"10px","--beam-ProductDetailsPage-TooltipIcon-color":"inherit","--beam-ProductDetailsPage-PPGFDisclosure-backgroundColor":"#000000","--beam-ProductDetailsPage-PPGFDisclosure-paddingTop":"10px","--beam-ProductDetailsPage-PPGFDisclosure-paddingRight":"8px","--beam-ProductDetailsPage-PPGFDisclosure-paddingBottom":"10px","--beam-ProductDetailsPage-PPGFDisclosure-paddingLeft":"8px","--beam-ProductDetailsPage-PPGFDisclosureHyperlink-color":"#5CA3FF",...m("--beam-ProductDetailsPage-title",{fontSize:"12px",fontWeight:"bold"}),"--beam-ProductDetailsPage-title-textAlign":"left",...m("--beam-ProductDetailsPage-description",{marginTop:"0px",fontSize:"12px",lineHeight:"15px"}),"--beam-ProductDetailsPage-description-textAlign":"left",...m("--beam-ProductDetailsPage-PPGFDisclosureTooltipContent",{fontSize:"12px",lineHeight:"16px",color:"#FFFFFF"}),...J("--beam-ProductDetailsPage"),"--beam-ProductDetailsPage-close-display":"initial","--beam-ProductDetailsPage-close-padding":"0","--beam-ProductDetailsPage-image-placement":"inline-left","--beam-ProductDetailsPage-blockImage-alignSelf":"center","--beam-ProductDetailsPage-promoPill-marginTop":"4px","--beam-ProductDetailsPage-promoPill-alignSelf":"left","--beam-ProductDetailsPage-shouldDisplayColon":"true","--beam-ProductDetailsPage-shouldDisplayPromoPill":"true",...G},t=this.productDetailsPageDataController?.data?.config?.web?.theme||{},o={...e,...t};return Object.assign(Object.create({toCSS(){return F(this)}}),o)}}s.tagName="beam-product-details-page",s.styles=[L,M,w`
|
|
103
103
|
:host {
|
|
104
104
|
font-family: var(--beam-fontFamily);
|
|
105
105
|
font-style: var(--beam-fontStyle);
|
|
@@ -119,7 +119,7 @@ import{j as x,y as r,f as w,g as d,t as k,h as S,k as $}from"../chunks/lit-WqMxC
|
|
|
119
119
|
background-color: var(--beam-ProductDetailsPage-backgroundColor);
|
|
120
120
|
display: flex;
|
|
121
121
|
flex-direction: column;
|
|
122
|
-
${
|
|
122
|
+
${Y("--beam-ProductDetailsPage")}
|
|
123
123
|
}
|
|
124
124
|
/* When iconDisplay is inline-center */
|
|
125
125
|
.inline-display {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"product-details-page.js","sources":["../../src/shared/fragments/custom-border.ts","../../src/shared/fragments/info.ts","../../src/components/product-details-page/strings.ts","../../src/components/product-details-page/index.ts"],"sourcesContent":["import { CSSResult, unsafeCSS } from \"lit\";\n\nexport const defineCustomBorder = (\n namespace = \"\",\n { borderRadius = \"0px\", borderStyle = \"unset\", borderColor = \"#000000\", borderWidth = \"1px\" } = {}\n): Record<string, string> => {\n const prefix = namespace.startsWith(\"--beam-\") ? namespace : `--beam-${namespace}`;\n return {\n [`${prefix}-borderRadius`]: borderRadius,\n [`${prefix}-borderStyle`]: borderStyle,\n [`${prefix}-borderColor`]: borderColor,\n [`${prefix}-borderWidth`]: borderWidth,\n };\n};\n\nexport const useCustomBorder = (\n namespace = \"\",\n { borderRadius = \"0px\", borderStyle = \"unset\", borderColor = \"#000000\", borderWidth = \"1px\" } = {}\n): CSSResult => {\n const prefix = namespace.startsWith(\"--beam-\") ? namespace : `--beam-${namespace}`;\n return unsafeCSS(`\\\n border-radius: var(${prefix}-borderRadius, ${borderRadius});\n border-style: var(${prefix}-borderStyle, ${borderStyle});\n border-color: var(${prefix}-borderColor, ${borderColor});\n border-width: var(${prefix}-borderWidth, ${borderWidth});\n `);\n};\n","import { html } from \"lit\";\n\nexport const _info = () => html` <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n part=\"svg\"\n>\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <path d=\"M12 16v-4\"></path>\n <path d=\"M12 8h.01\"></path>\n</svg>`;\n","export const strings = {\n en: {\n ctaTitle: () => `Choose your impact`,\n ctaMessage: () => `At no extra cost, 1% of every order is donated to a nonprofit you choose. Powered by Beam`,\n inlineSeparator: () => `:`,\n },\n fr: {\n ctaTitle: () => `Choisissez l'impact de votre choix`,\n ctaMessage: () =>\n `Sans frais supplémentaires, 1% de chaque commande est reversé à l'organisation caritative de votre choix. Développé par Beam`,\n inlineSeparator: () => `:`,\n },\n es: {\n ctaTitle: () => `Elige el impacto que deseas`,\n ctaMessage: () =>\n `Sin coste adicional, el 1% de cada pedido se dona a la organización sin ánimo de lucro que tú elijas. Desarrollado por Beam`,\n inlineSeparator: () => `:`,\n },\n de: {\n ctaTitle: () => `Wählen Sie Ihren Einfluss`,\n ctaMessage: () =>\n `Ohne zusätzliche Kosten wird 1 % jeder Bestellung an eine von Ihnen gewählte gemeinnützige Organisation gespendet. Von Beam unterstützt`,\n inlineSeparator: () => `:`,\n },\n it: {\n ctaTitle: () => `Scegliete chi sostenere`,\n ctaMessage: () =>\n `L'1% di ogni vostro acquisto viene donato, senza alcun costo aggiuntivo, a un'organizzazione no-profit a libera scelta. Promosso da Beam`,\n inlineSeparator: () => `:`,\n },\n pl: {\n ctaTitle: () => `Masz wpływ, dokonaj wyboru`,\n ctaMessage: () =>\n `1% kwoty każdego zamówienia jest przekazywane na rzecz wybranej przez Ciebie organizacji non-profit – bez dodatkowych kosztów. Obsługiwane przez Beam`,\n inlineSeparator: () => `:`,\n },\n};\n","import { LitElement, css, html } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { postProductDetailsPage } from \"../../api-sdk/v3/routes\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES, WIDGET_NAMES } from \"../../api-sdk/constants\";\nimport { LANGUAGES, TUrl } from \"../../api-sdk/types\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { _cssVariableMap } from \"../../shared/fragments/css-variable-map\";\nimport { localizeUserString } from \"../../shared/localize\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { cssResponsiveUtils } from \"../../shared/responsive\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomText, useCustomText } from \"../../shared/fragments/custom-text\";\nimport { defineCustomBorder, useCustomBorder } from \"../../shared/fragments/custom-border\";\n// shoelace html tag imports\nimport \"@shoelace-style/shoelace/dist/components/tooltip/tooltip.js\";\nimport \"@shoelace-style/shoelace/dist/components/button/button.js\";\nimport { _info } from \"../../shared/fragments/info\";\nimport { promoPillLabelConfigDefaults } from \"../../shared/components/promo-pill-label\";\nimport {\n getPromoCodesFromCart,\n setPromoCodeInCookie,\n parseJsonStringArray,\n formatStoreAndReturnPromoCodes,\n setPromoCodesInLocalStorage,\n isEmptyPromoData,\n} from \"../../utils/promoManager\";\nimport \"../../shared/components/promo-pill-label\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage } from \"../../shared/cart-contents\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { makeApiKeyHeader } from \"../../utils/makeApiKeyHeader\";\nimport { BeamPromoCodesStoredEvent, BeamWidgetStoredPromoCodesEvent } from \"../../utils/events\";\nimport { getBeamCartId } from \"../../utils/cart\";\nimport { strings } from \"./strings\";\n\ntype RequiredConfig = {\n apiKey: string;\n storeId: number;\n};\ntype IAPIV3PostProductDetailsPage = Awaited<ReturnType<typeof postProductDetailsPage>>;\n\nconst IMAGE_URL_REMOTE_CONFIG_KEY = \"--beam-ProductDetailsPage-imageUrl\";\n\nexport class BeamProductDetailsPage extends LitElement {\n static tagName = \"beam-product-details-page\";\n\n @property({ type: String, reflect: true }) public baseUrl: TUrl = DEFAULT_BASE_URL;\n\n @property({ type: String, reflect: false }) apiKey?: RequiredConfig[\"apiKey\"];\n\n @property({ type: Number }) storeId?: number;\n\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n\n @property({ type: Boolean }) public draftConfig = false;\n\n @property({ type: Boolean }) public debug = false;\n\n @property({ type: String }) remoteProductIdentifier?: string;\n\n @property({ type: String }) public promoCodes?: string;\n\n @property({ type: String }) public domain?: string;\n\n private localStorage = createScopedLocalStorage(this as LitElement & RequiredConfig);\n\n @state() private pluginPromoCodes: string[] = [];\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n get parsedPromoCodes(): string[] {\n return parseJsonStringArray(this.promoCodes);\n }\n\n private handlePromoCodesStored = (evt: BeamPromoCodesStoredEvent) => {\n const promoCodesFromPlugin = (evt.detail.promoCodes?.unvalidatedPromoCodes ?? [])\n .map((c) => c.attributes?.value ?? c.attributes?.url ?? \"\")\n .sort();\n this.pluginPromoCodes = promoCodesFromPlugin;\n };\n\n private getManualPromoCodes(): string[] {\n // Priority 1: Widget passed discount codes\n if (this.parsedPromoCodes && this.parsedPromoCodes.length > 0) {\n return this.parsedPromoCodes;\n }\n\n // Priority 2: Cart fallback\n const cart = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\");\n return cart ? getPromoCodesFromCart(cart) : [];\n }\n\n private async handleValidatedPromoCodes(response: IAPIV3PostProductDetailsPage) {\n if (response.promos?.validatedPromoCodes) {\n await Promise.all([\n setPromoCodesInLocalStorage({\n apiKey: this.apiKey,\n promoCodes: { validatedPromoCodes: response.promos.validatedPromoCodes, unvalidatedPromoCodes: [] },\n }),\n setPromoCodeInCookie({\n validatedPromoCodes: response.promos.validatedPromoCodes,\n domain: this.domain,\n }),\n ]);\n this.dispatchEvent(\n new BeamWidgetStoredPromoCodesEvent({\n source: WIDGET_NAMES.product_details_page,\n })\n );\n }\n }\n\n async firstUpdated() {\n window.addEventListener(BeamPromoCodesStoredEvent.eventName, this.handlePromoCodesStored as EventListener);\n }\n\n disconnectedCallback() {\n window.removeEventListener(BeamPromoCodesStoredEvent.eventName, this.handlePromoCodesStored as EventListener);\n super.disconnectedCallback();\n }\n\n postProductDetailsPageData = async () => {\n if (!enforceConfig<RequiredConfig>([\"apiKey\", \"storeId\"], this)) throw new MissingConfig();\n const beamCartId = getBeamCartId(BEAM_CART_COOKIE_NAME, { apiKey: this.apiKey });\n\n const manualPromoCodes = this.getManualPromoCodes();\n const formattedPromos = formatStoreAndReturnPromoCodes(\n manualPromoCodes.map((code) => ({ value: code })),\n this.apiKey\n );\n const shouldSendPromos = formattedPromos && !isEmptyPromoData(formattedPromos);\n\n if (shouldSendPromos) {\n this.dispatchEvent(\n new BeamWidgetStoredPromoCodesEvent({\n source: WIDGET_NAMES.product_details_page,\n })\n );\n }\n const res = await postProductDetailsPage({\n baseUrl: this.baseUrl,\n headers: makeApiKeyHeader(this.apiKey),\n queryParams: {\n version: \"1.0.0\",\n lang: this.configLang,\n storeId: this.storeId,\n widgetName: WIDGET_NAMES.product_details_page,\n draftConfig: this.draftConfig,\n remoteProductIdentifier: this.remoteProductIdentifier,\n },\n requestBody: {\n ...(shouldSendPromos && { promos: formattedPromos }),\n beamCartId: beamCartId ? beamCartId : undefined,\n },\n });\n this.handleValidatedPromoCodes(res);\n return res;\n };\n\n private productDetailsPageDataController = new AsyncController<typeof this.postProductDetailsPageData>(\n this,\n this.postProductDetailsPageData\n );\n\n async updated(changedProperties: Map<string, unknown>) {\n const requireNewDataProps = [\"storeId\", \"baseUrl\", \"lang\", \"apiKey\", \"pluginPromoCodes\", \"promoCodes\"];\n void this.pluginPromoCodes;\n for (const prop of requireNewDataProps) {\n if (changedProperties.has(prop)) {\n await this.productDetailsPageDataController.exec();\n break;\n }\n }\n }\n\n render() {\n const { data, loading } = this.productDetailsPageDataController;\n const iconDisplay = this.cssVariables[\"--beam-ProductDetailsPage-image-placement\"];\n const isNonZero = (value: string) => value !== \"0px\" && value !== \"0\";\n const shouldDisplayPromoPill = this.cssVariables[\"--beam-ProductDetailsPage-shouldDisplayPromoPill\"] === \"true\";\n const isPromoActive = !!data?.config?.web?.promo;\n const hasValidImageHeight = isNonZero(this.cssVariables[\"--beam-ProductDetailsPage-imageHeight\"]);\n const hasValidTitleFontSize = isNonZero(this.cssVariables[\"--beam-ProductDetailsPage-title-fontSize\"]);\n const isPromoPillVisible =\n shouldDisplayPromoPill && // Determines if the promo pill is enabled for the marketing version of the PDP\n isPromoActive && // Is promo currently active\n hasValidImageHeight && // Ensures the promo pill is not displayed for the subtext version of the PDP\n hasValidTitleFontSize; // Ensures the promo pill is not displayed for the subtext version of the PDP\n const shouldShowPunctuation = this.cssVariables[\"--beam-ProductDetailsPage-shouldDisplayColon\"] === \"true\"; // Determines if a colon should be displayed in promo display\n if (loading) {\n return html``;\n }\n if (data == null) {\n if (this.debug) {\n return _errorMessage({ error: new Error(\"No data\") });\n }\n return \"\";\n }\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n <div\n class=\"root ${iconDisplay === \"block-center\" ? \"block-display\" : \"inline-display\"}\"\n aria-label=\"product detail page Beam component\"\n >\n ${iconDisplay === \"block-center\"\n ? html`\n ${this.renderWidgetIcon(iconDisplay)}\n ${isPromoPillVisible\n ? html`\n <div class=\"promo-container\">\n <beam-promo-info-pill .promo=${data?.config?.web?.promo}></beam-promo-info-pill>\n </div>\n `\n : html``}\n <div class=\"info-container\">${this.renderContent(isPromoPillVisible, shouldShowPunctuation, data)}</div>\n `\n : html`\n ${isPromoPillVisible\n ? html`\n <div class=\"promo-container\">\n <beam-promo-info-pill .promo=${data?.config?.web?.promo}></beam-promo-info-pill>\n </div>\n `\n : html``}\n <div class=\"content-inline\">\n ${this.renderWidgetIcon(iconDisplay)}\n <div class=\"info-container\">${this.renderContent(isPromoPillVisible, shouldShowPunctuation, data)}</div>\n </div>\n `}\n </div>\n `;\n }\n\n renderWidgetIcon(iconDisplay: string) {\n const imageUrl = this.cssVariables[IMAGE_URL_REMOTE_CONFIG_KEY];\n\n if (!imageUrl) return html``;\n\n const isBlockDisplay = iconDisplay === \"block-center\";\n const containerStyle = isBlockDisplay ? 'style=\"order:1\"' : \"\";\n\n return html`\n <span class=\"icon-container\" part=\"icon\" ${containerStyle}>\n <img src=${imageUrl} part=\"icon\" aria-hidden=\"true\" />\n </span>\n `;\n }\n\n renderContent(isPromoPillVisible: boolean, shouldDisplayColon: boolean, data: IAPIV3PostProductDetailsPage) {\n const title = localizeUserString(this.configLang, data?.config?.web?.title) || strings[this.configLang].ctaTitle();\n const description =\n localizeUserString(this.configLang, data?.config?.web?.description) || strings[this.configLang].ctaMessage();\n return isPromoPillVisible\n ? html`\n <div class=\"info-inline-promo\">\n <span class=\"title\">${title + (shouldDisplayColon ? strings[this.configLang].inlineSeparator() : \"\")}</span>\n <span class=\"description\"> ${description} ${this.renderDisclosureTooltip()} </span>\n </div>\n `\n : html`\n <div class=\"title-block\">\n <h3 class=\"title\">${title}</h3>\n </div>\n <div class=\"description-block\">\n <span class=\"description\"> ${description} ${this.renderDisclosureTooltip()} </span>\n </div>\n `;\n }\n\n renderCloseTooltipIcon() {\n return html`<svg width=\"11\" height=\"11\" viewBox=\"0 0 11 11\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.40836 5.40811L1.48828 1.48804M5.40836 5.40811L9.32843 9.32819M5.40836 5.40811L9.32843 1.48804M5.40836 5.40811L1.48828 9.32819\"\n stroke=\"white\"\n stroke-width=\"1.56803\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg> `;\n }\n\n /* PayPal Giving Fund Disclosure */\n renderDisclosureTooltip() {\n const onClickClose = () => {\n // due to being strictly html, we need to assume any when overriding shoelace properties\n const tooltip = this.renderRoot.querySelector(\".ppgf-disclosure-tooltip\") as any;\n if (tooltip?.open) {\n tooltip.open = false;\n }\n };\n const ppgfDisclosure = this.productDetailsPageDataController.data?.ppgfDisclosure;\n return ppgfDisclosure\n ? html`<sl-tooltip class=\"ppgf-disclosure-tooltip\" part=\"tooltip\">\n <div class=\"ppgf-disclosure-tooltip-content\" slot=\"content\" part=\"tooltip-content\">\n <button\n class=\"ppgf-disclosure-close\"\n aria-label=\"Close tooltip\"\n part=\"tooltip-close-button\"\n @click=\"${onClickClose}\"\n >\n ${this.renderCloseTooltipIcon()}\n </button>\n <div class=\"ppgf-disclosure-tooltip-copy\" part=\"tooltip-disclosure-copy\">\n ${unsafeHTML(ppgfDisclosure.copy)}\n </div>\n </div>\n <span class=\"ppgf-disclosure-tooltip-trigger\" part=\"tooltip-disclosure-icon\">\n <div class=\"ppgf-disclosure-tooltip-trigger-mask d-lg-none\"></div>\n <sl-button\n variant=\"text\"\n size=\"small\"\n class=\"ppgf-disclosure-tooltip-trigger\"\n part=\"tooltip-disclosure-button\"\n aria-label=\"More information\"\n tabindex=\"0\"\n circle\n >\n ${_info()}\n </sl-button>\n </span>\n </sl-tooltip>`\n : html``;\n }\n /* End PayPal Giving Fund Disclosure */\n\n public get cssVariables() {\n const defaults = {\n \"--beam-ProductDetailsPage-imageWidth\": \"24px\",\n \"--beam-ProductDetailsPage-imageHeight\": \"24px\",\n \"--beam-ProductDetailsPage-maxWidth\": \"346px\",\n \"--beam-ProductDetailsPage-paddingTop\": \"8px\",\n \"--beam-ProductDetailsPage-paddingRight\": \"12px\",\n \"--beam-ProductDetailsPage-paddingBottom\": \"8px\",\n \"--beam-ProductDetailsPage-paddingLeft\": \"15px\",\n \"--beam-ProductDetailsPage-InfoContainer-marginLeft\": \"8px\",\n \"--beam-ProductDetailsPage-InfoContainer-textAlign\": \"inherit\",\n \"--beam-ProductDetailsPage-InfoContainer-lineHeight\": \"15px\",\n \"--beam-ProductDetailsPage-InfoContainer-marginTop\": \"4px\",\n \"--beam-ProductDetailsPage-backgroundColor\": \"unset\",\n \"--beam-ProductDetailsPage-TooltipIcon-width\": \"10px\",\n \"--beam-ProductDetailsPage-TooltipIcon-color\": \"inherit\",\n \"--beam-ProductDetailsPage-PPGFDisclosure-backgroundColor\": \"#000000\",\n \"--beam-ProductDetailsPage-PPGFDisclosure-paddingTop\": \"10px\",\n \"--beam-ProductDetailsPage-PPGFDisclosure-paddingRight\": \"8px\",\n \"--beam-ProductDetailsPage-PPGFDisclosure-paddingBottom\": \"10px\",\n \"--beam-ProductDetailsPage-PPGFDisclosure-paddingLeft\": \"8px\",\n \"--beam-ProductDetailsPage-PPGFDisclosureHyperlink-color\": \"#5CA3FF\",\n ...defineCustomText(\"--beam-ProductDetailsPage-title\", {\n fontSize: \"12px\",\n fontWeight: \"bold\",\n }),\n \"--beam-ProductDetailsPage-title-textAlign\": \"left\",\n ...defineCustomText(\"--beam-ProductDetailsPage-description\", {\n marginTop: \"0px\",\n fontSize: \"12px\",\n lineHeight: \"15px\",\n }),\n \"--beam-ProductDetailsPage-description-textAlign\": \"left\",\n ...defineCustomText(\"--beam-ProductDetailsPage-PPGFDisclosureTooltipContent\", {\n fontSize: \"12px\",\n lineHeight: \"16px\",\n color: \"#FFFFFF\",\n }),\n ...defineCustomBorder(\"--beam-ProductDetailsPage\"),\n \"--beam-ProductDetailsPage-close-display\": \"initial\",\n \"--beam-ProductDetailsPage-close-padding\": \"0\",\n \"--beam-ProductDetailsPage-image-placement\": \"inline-left\", // options: \"inline-left\" || \"block-center\"\n \"--beam-ProductDetailsPage-blockImage-alignSelf\": \"center\",\n \"--beam-ProductDetailsPage-promoPill-marginTop\": \"4px\",\n \"--beam-ProductDetailsPage-promoPill-alignSelf\": \"left\",\n \"--beam-ProductDetailsPage-shouldDisplayColon\": \"true\",\n \"--beam-ProductDetailsPage-shouldDisplayPromoPill\": \"true\",\n ...promoPillLabelConfigDefaults,\n };\n const remoteConfig = this.productDetailsPageDataController?.data?.config?.web?.theme || {};\n\n const config = { ...defaults, ...remoteConfig };\n\n const serializable = Object.create({\n toCSS() {\n return _cssVariableMap(this as Record<string, string>);\n },\n });\n\n return Object.assign(serializable, config);\n }\n\n static styles = [\n cssReset,\n cssResponsiveUtils,\n css`\n :host {\n font-family: var(--beam-fontFamily);\n font-style: var(--beam-fontStyle);\n font-size: var(--beam-fontSize);\n background-color: var(--beam-backgroundColor);\n color: var(--beam-textColor);\n max-width: var(--beam-ProductDetailsPage-maxWidth);\n word-break: normal;\n display: block;\n }\n .root {\n padding-top: var(--beam-ProductDetailsPage-paddingTop);\n padding-right: var(--beam-ProductDetailsPage-paddingRight);\n padding-bottom: var(--beam-ProductDetailsPage-paddingBottom);\n padding-left: var(--beam-ProductDetailsPage-paddingLeft);\n width: 100%;\n background-color: var(--beam-ProductDetailsPage-backgroundColor);\n display: flex;\n flex-direction: column;\n ${useCustomBorder(\"--beam-ProductDetailsPage\")}\n }\n /* When iconDisplay is inline-center */\n .inline-display {\n display: flex;\n }\n /* When iconDisplay is block-center */\n .block-display {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n .promo-container {\n order: 2;\n display: flex;\n margin-top: var(--beam-ProductDetailsPage-promoPill-marginTop);\n align-self: var(--beam-ProductDetailsPage-promoPill-alignSelf);\n }\n .content-inline {\n order: 3;\n display: flex;\n align-items: center;\n }\n /* Info block for both inline and block layout */\n .info-container {\n display: flex;\n flex-direction: column;\n justify-content: center;\n text-align: var(--beam-ProductDetailsPage-InfoContainer-textAlign);\n line-height: var(--beam-ProductDetailsPage-InfoContainer-lineHeight);\n margin-top: var(--beam-ProductDetailsPage-InfoContainer-marginTop);\n margin-left: var(--beam-ProductDetailsPage-InfoContainer-marginLeft);\n }\n .block-display .info-container {\n order: 3;\n }\n .root.inline-display .icon-container,\n .root.inline-display .info-container {\n display: inline-flex;\n }\n .root.inline-display {\n flex-direction: column;\n }\n .icon-container {\n width: var(--beam-ProductDetailsPage-imageWidth);\n height: var(--beam-ProductDetailsPage-imageHeight);\n align-self: var(--beam-ProductDetailsPage-blockImage-alignSelf);\n flex-shrink: 0;\n }\n .icon-container > img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n }\n .title {\n ${useCustomText(\"--beam-ProductDetailsPage-title\")}\n }\n .title-block {\n text-align: var(--beam-ProductDetailsPage-title-textAlign);\n line-height: var(--beam-ProductDetailsPage-title-lineHeight);\n }\n .info-inline-promo {\n margin-top: var(--beam-ProductDetailsPage-description-marginTop, 0px);\n }\n .description {\n ${useCustomText(\"--beam-ProductDetailsPage-description\")}\n }\n .description-block {\n text-align: var(--beam-ProductDetailsPage-description-textAlign);\n line-height: var(--beam-ProductDetailsPage-description-lineHeight);\n ${useCustomText(\"--beam-ProductDetailsPage-description\")}\n }\n .ppgf-disclosure-tooltip {\n --max-width: 268px;\n }\n .ppgf-disclosure-tooltip::part(body) {\n background-color: var(--beam-ProductDetailsPage-PPGFDisclosure-backgroundColor);\n padding-top: var(--beam-ProductDetailsPage-PPGFDisclosure-paddingTop);\n padding-right: var(--beam-ProductDetailsPage-PPGFDisclosure-paddingRight);\n padding-bottom: var(--beam-ProductDetailsPage-PPGFDisclosure-paddingBottom);\n padding-left: var(--beam-ProductDetailsPage-PPGFDisclosure-paddingLeft);\n }\n .ppgf-disclosure-tooltip::part(base__arrow) {\n background-color: var(--beam-ProductDetailsPage-PPGFDisclosure-backgroundColor);\n }\n .ppgf-disclosure-tooltip-content {\n display: flex;\n flex-direction: column;\n ${useCustomText(\"--beam-ProductDetailsPage-PPGFDisclosureTooltipContent\")}\n }\n .ppgf-disclosure-tooltip-copy > a,\n .ppgf-disclosure-close {\n pointer-events: auto;\n color: var(--beam-ProductDetailsPage-PPGFDisclosureHyperlink-color);\n }\n .ppgf-disclosure-close {\n display: var(--beam-ProductDetailsPage-close-display);\n padding: var(--beam-ProductDetailsPage-close-padding);\n height: 12px;\n background: none;\n border: none;\n margin-left: auto;\n }\n .ppgf-disclosure-tooltip-copy > a:visited {\n color: var(--beam-ProductDetailsPage-PPGFDisclosureHyperlink-color);\n }\n .ppgf-disclosure-tooltip-trigger {\n position: relative;\n }\n .ppgf-disclosure-tooltip-trigger-mask {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: calc(var(--beam-ProductDetailsPage-TooltipIcon-width) + 20px);\n height: calc(var(--beam-ProductDetailsPage-TooltipIcon-width) + 20px);\n }\n .ppgf-disclosure-tooltip-trigger::part(base) {\n line-height: 1;\n border: none;\n min-height: 0;\n min-width: 0;\n width: auto;\n color: var(--beam-ProductDetailsPage-TooltipIcon-color);\n }\n .ppgf-disclosure-tooltip-trigger::part(label) {\n padding: 0;\n }\n .ppgf-disclosure-tooltip-trigger > svg {\n width: var(--beam-ProductDetailsPage-TooltipIcon-width);\n color: var(--beam-ProductDetailsPage-TooltipIcon-color);\n height: auto;\n }\n `,\n ];\n}\n\ndefineCustomElement(BeamProductDetailsPage);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-product-details-page\": BeamProductDetailsPage;\n }\n}\n"],"names":["defineCustomBorder","namespace","borderRadius","borderStyle","borderColor","borderWidth","prefix","useCustomBorder","unsafeCSS","_info","html","strings","x","s","p","n","e","t","o","r","IMAGE_URL_REMOTE_CONFIG_KEY","BeamProductDetailsPage","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","evt","promoCodesFromPlugin","c","enforceConfig","beamCartId","getBeamCartId","BEAM_CART_COOKIE_NAME","manualPromoCodes","formattedPromos","formatStoreAndReturnPromoCodes","code","shouldSendPromos","isEmptyPromoData","BeamWidgetStoredPromoCodesEvent","WIDGET_NAMES","res","postProductDetailsPage","makeApiKeyHeader","AsyncController","SUPPORTED_LANGUAGES","parseJsonStringArray","cart","getPromoCodesFromCart","response","setPromoCodesInLocalStorage","setPromoCodeInCookie","BeamPromoCodesStoredEvent","changedProperties","requireNewDataProps","prop","data","loading","iconDisplay","isNonZero","value","shouldDisplayPromoPill","isPromoActive","hasValidImageHeight","hasValidTitleFontSize","isPromoPillVisible","shouldShowPunctuation","_errorMessage","imageUrl","shouldDisplayColon","title","localizeUserString","description","onClickClose","tooltip","ppgfDisclosure","unsafeHTML","defaults","defineCustomText","promoPillLabelConfigDefaults","remoteConfig","config","_cssVariableMap","cssReset","cssResponsiveUtils","css","useCustomText","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"product-details-page.js","sources":["../../src/shared/fragments/custom-border.ts","../../src/shared/fragments/info.ts","../../src/components/product-details-page/strings.ts","../../src/components/product-details-page/index.ts"],"sourcesContent":["import { CSSResult, unsafeCSS } from \"lit\";\n\nexport const defineCustomBorder = (\n namespace = \"\",\n { borderRadius = \"0px\", borderStyle = \"unset\", borderColor = \"#000000\", borderWidth = \"1px\" } = {}\n): Record<string, string> => {\n const prefix = namespace.startsWith(\"--beam-\") ? namespace : `--beam-${namespace}`;\n return {\n [`${prefix}-borderRadius`]: borderRadius,\n [`${prefix}-borderStyle`]: borderStyle,\n [`${prefix}-borderColor`]: borderColor,\n [`${prefix}-borderWidth`]: borderWidth,\n };\n};\n\nexport const useCustomBorder = (\n namespace = \"\",\n { borderRadius = \"0px\", borderStyle = \"unset\", borderColor = \"#000000\", borderWidth = \"1px\" } = {}\n): CSSResult => {\n const prefix = namespace.startsWith(\"--beam-\") ? namespace : `--beam-${namespace}`;\n return unsafeCSS(`\\\n border-radius: var(${prefix}-borderRadius, ${borderRadius});\n border-style: var(${prefix}-borderStyle, ${borderStyle});\n border-color: var(${prefix}-borderColor, ${borderColor});\n border-width: var(${prefix}-borderWidth, ${borderWidth});\n `);\n};\n","import { html } from \"lit\";\n\nexport const _info = () => html` <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n part=\"svg\"\n>\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <path d=\"M12 16v-4\"></path>\n <path d=\"M12 8h.01\"></path>\n</svg>`;\n","export const strings = {\n en: {\n ctaTitle: () => `Choose Your Impact`,\n ctaMessage: () =>\n `At no extra cost, 1% of every order will be donated to a nonprofit you choose. Add to cart to choose. Powered by Beam`,\n inlineSeparator: () => `:`,\n },\n fr: {\n ctaTitle: () => `Choisissez votre impact`,\n ctaMessage: () =>\n `Sans frais supplémentaires, 1 % de chaque commande est reversé à l'association de votre choix. Ajoutez au panier pour choisir. Propulsé par Beam.`,\n inlineSeparator: () => `:`,\n },\n es: {\n ctaTitle: () => `Elige tu impacto`,\n ctaMessage: () =>\n `Sin coste adicional, el 1 % de cada pedido se dona a la organización sin ánimo de lucro que elijas. Añádelo al carrito para elegir. Impulsado por Beam.`,\n inlineSeparator: () => `:`,\n },\n de: {\n ctaTitle: () => `Wählen Sie Ihren Impact`,\n ctaMessage: () =>\n `Ohne zusätzliche Kosten wird 1 % jeder Bestellung an eine von Ihnen gewählte gemeinnützige Organisation gespendet. Zum Warenkorb hinzufügen, um auszuwählen. Unterstützt von Beam.`,\n inlineSeparator: () => `:`,\n },\n it: {\n ctaTitle: () => `Scegli il tuo impatto`,\n ctaMessage: () =>\n `L'1 % di ogni acquisto viene donato, senza alcun costo aggiuntivo, a un'organizzazione no-profit a tua scelta. Aggiungi al carrello per scegliere. Promosso da Beam.`,\n inlineSeparator: () => `:`,\n },\n pl: {\n ctaTitle: () => `Wybierz swój wpływ`,\n ctaMessage: () =>\n `1 % wartości każdego zamówienia przekazywany jest na wybraną przez Ciebie organizację non-profit – bez dodatkowych kosztów. Dodaj do koszyka, aby wybrać. Obsługiwane przez Beam.`,\n inlineSeparator: () => `:`,\n },\n};\n","import { LitElement, css, html } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { postProductDetailsPage } from \"../../api-sdk/v3/routes\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES, WIDGET_NAMES } from \"../../api-sdk/constants\";\nimport { LANGUAGES, TUrl } from \"../../api-sdk/types\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { _cssVariableMap } from \"../../shared/fragments/css-variable-map\";\nimport { localizeUserString } from \"../../shared/localize\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { cssResponsiveUtils } from \"../../shared/responsive\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomText, useCustomText } from \"../../shared/fragments/custom-text\";\nimport { defineCustomBorder, useCustomBorder } from \"../../shared/fragments/custom-border\";\n// shoelace html tag imports\nimport \"@shoelace-style/shoelace/dist/components/tooltip/tooltip.js\";\nimport \"@shoelace-style/shoelace/dist/components/button/button.js\";\nimport { _info } from \"../../shared/fragments/info\";\nimport { promoPillLabelConfigDefaults } from \"../../shared/components/promo-pill-label\";\nimport {\n getPromoCodesFromCart,\n setPromoCodeInCookie,\n parseJsonStringArray,\n formatStoreAndReturnPromoCodes,\n setPromoCodesInLocalStorage,\n isEmptyPromoData,\n} from \"../../utils/promoManager\";\nimport \"../../shared/components/promo-pill-label\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage } from \"../../shared/cart-contents\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { makeApiKeyHeader } from \"../../utils/makeApiKeyHeader\";\nimport { BeamPromoCodesStoredEvent, BeamWidgetStoredPromoCodesEvent } from \"../../utils/events\";\nimport { getBeamCartId } from \"../../utils/cart\";\nimport { strings } from \"./strings\";\n\ntype RequiredConfig = {\n apiKey: string;\n storeId: number;\n};\ntype IAPIV3PostProductDetailsPage = Awaited<ReturnType<typeof postProductDetailsPage>>;\n\nconst IMAGE_URL_REMOTE_CONFIG_KEY = \"--beam-ProductDetailsPage-imageUrl\";\n\nexport class BeamProductDetailsPage extends LitElement {\n static tagName = \"beam-product-details-page\";\n\n @property({ type: String, reflect: true }) public baseUrl: TUrl = DEFAULT_BASE_URL;\n\n @property({ type: String, reflect: false }) apiKey?: RequiredConfig[\"apiKey\"];\n\n @property({ type: Number }) storeId?: number;\n\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n\n @property({ type: Boolean }) public draftConfig = false;\n\n @property({ type: Boolean }) public debug = false;\n\n @property({ type: String }) remoteProductIdentifier?: string;\n\n @property({ type: String }) public promoCodes?: string;\n\n @property({ type: String }) public domain?: string;\n\n private localStorage = createScopedLocalStorage(this as LitElement & RequiredConfig);\n\n @state() private pluginPromoCodes: string[] = [];\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n get parsedPromoCodes(): string[] {\n return parseJsonStringArray(this.promoCodes);\n }\n\n private handlePromoCodesStored = (evt: BeamPromoCodesStoredEvent) => {\n const promoCodesFromPlugin = (evt.detail.promoCodes?.unvalidatedPromoCodes ?? [])\n .map((c) => c.attributes?.value ?? c.attributes?.url ?? \"\")\n .sort();\n this.pluginPromoCodes = promoCodesFromPlugin;\n };\n\n private getManualPromoCodes(): string[] {\n // Priority 1: Widget passed discount codes\n if (this.parsedPromoCodes && this.parsedPromoCodes.length > 0) {\n return this.parsedPromoCodes;\n }\n\n // Priority 2: Cart fallback\n const cart = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\");\n return cart ? getPromoCodesFromCart(cart) : [];\n }\n\n private async handleValidatedPromoCodes(response: IAPIV3PostProductDetailsPage) {\n if (response.promos?.validatedPromoCodes) {\n await Promise.all([\n setPromoCodesInLocalStorage({\n apiKey: this.apiKey,\n promoCodes: { validatedPromoCodes: response.promos.validatedPromoCodes, unvalidatedPromoCodes: [] },\n }),\n setPromoCodeInCookie({\n validatedPromoCodes: response.promos.validatedPromoCodes,\n domain: this.domain,\n }),\n ]);\n this.dispatchEvent(\n new BeamWidgetStoredPromoCodesEvent({\n source: WIDGET_NAMES.product_details_page,\n })\n );\n }\n }\n\n async firstUpdated() {\n window.addEventListener(BeamPromoCodesStoredEvent.eventName, this.handlePromoCodesStored as EventListener);\n }\n\n disconnectedCallback() {\n window.removeEventListener(BeamPromoCodesStoredEvent.eventName, this.handlePromoCodesStored as EventListener);\n super.disconnectedCallback();\n }\n\n postProductDetailsPageData = async () => {\n if (!enforceConfig<RequiredConfig>([\"apiKey\", \"storeId\"], this)) throw new MissingConfig();\n const beamCartId = getBeamCartId(BEAM_CART_COOKIE_NAME, { apiKey: this.apiKey });\n\n const manualPromoCodes = this.getManualPromoCodes();\n const formattedPromos = formatStoreAndReturnPromoCodes(\n manualPromoCodes.map((code) => ({ value: code })),\n this.apiKey\n );\n const shouldSendPromos = formattedPromos && !isEmptyPromoData(formattedPromos);\n\n if (shouldSendPromos) {\n this.dispatchEvent(\n new BeamWidgetStoredPromoCodesEvent({\n source: WIDGET_NAMES.product_details_page,\n })\n );\n }\n const res = await postProductDetailsPage({\n baseUrl: this.baseUrl,\n headers: makeApiKeyHeader(this.apiKey),\n queryParams: {\n version: \"1.0.0\",\n lang: this.configLang,\n storeId: this.storeId,\n widgetName: WIDGET_NAMES.product_details_page,\n draftConfig: this.draftConfig,\n remoteProductIdentifier: this.remoteProductIdentifier,\n },\n requestBody: {\n ...(shouldSendPromos && { promos: formattedPromos }),\n beamCartId: beamCartId ? beamCartId : undefined,\n },\n });\n this.handleValidatedPromoCodes(res);\n return res;\n };\n\n private productDetailsPageDataController = new AsyncController<typeof this.postProductDetailsPageData>(\n this,\n this.postProductDetailsPageData\n );\n\n async updated(changedProperties: Map<string, unknown>) {\n const requireNewDataProps = [\"storeId\", \"baseUrl\", \"lang\", \"apiKey\", \"pluginPromoCodes\", \"promoCodes\"];\n void this.pluginPromoCodes;\n for (const prop of requireNewDataProps) {\n if (changedProperties.has(prop)) {\n await this.productDetailsPageDataController.exec();\n break;\n }\n }\n }\n\n render() {\n const { data, loading } = this.productDetailsPageDataController;\n const iconDisplay = this.cssVariables[\"--beam-ProductDetailsPage-image-placement\"];\n const isNonZero = (value: string) => value !== \"0px\" && value !== \"0\";\n const shouldDisplayPromoPill = this.cssVariables[\"--beam-ProductDetailsPage-shouldDisplayPromoPill\"] === \"true\";\n const isPromoActive = !!data?.config?.web?.promo;\n const hasValidImageHeight = isNonZero(this.cssVariables[\"--beam-ProductDetailsPage-imageHeight\"]);\n const hasValidTitleFontSize = isNonZero(this.cssVariables[\"--beam-ProductDetailsPage-title-fontSize\"]);\n const isPromoPillVisible =\n shouldDisplayPromoPill && // Determines if the promo pill is enabled for the marketing version of the PDP\n isPromoActive && // Is promo currently active\n hasValidImageHeight && // Ensures the promo pill is not displayed for the subtext version of the PDP\n hasValidTitleFontSize; // Ensures the promo pill is not displayed for the subtext version of the PDP\n const shouldShowPunctuation = this.cssVariables[\"--beam-ProductDetailsPage-shouldDisplayColon\"] === \"true\"; // Determines if a colon should be displayed in promo display\n if (loading) {\n return html``;\n }\n if (data == null) {\n if (this.debug) {\n return _errorMessage({ error: new Error(\"No data\") });\n }\n return \"\";\n }\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n <div\n class=\"root ${iconDisplay === \"block-center\" ? \"block-display\" : \"inline-display\"}\"\n aria-label=\"product detail page Beam component\"\n >\n ${iconDisplay === \"block-center\"\n ? html`\n ${this.renderWidgetIcon(iconDisplay)}\n ${isPromoPillVisible\n ? html`\n <div class=\"promo-container\">\n <beam-promo-info-pill .promo=${data?.config?.web?.promo}></beam-promo-info-pill>\n </div>\n `\n : html``}\n <div class=\"info-container\">${this.renderContent(isPromoPillVisible, shouldShowPunctuation, data)}</div>\n `\n : html`\n ${isPromoPillVisible\n ? html`\n <div class=\"promo-container\">\n <beam-promo-info-pill .promo=${data?.config?.web?.promo}></beam-promo-info-pill>\n </div>\n `\n : html``}\n <div class=\"content-inline\">\n ${this.renderWidgetIcon(iconDisplay)}\n <div class=\"info-container\">${this.renderContent(isPromoPillVisible, shouldShowPunctuation, data)}</div>\n </div>\n `}\n </div>\n `;\n }\n\n renderWidgetIcon(iconDisplay: string) {\n const imageUrl = this.cssVariables[IMAGE_URL_REMOTE_CONFIG_KEY];\n\n if (!imageUrl) return html``;\n\n const isBlockDisplay = iconDisplay === \"block-center\";\n const containerStyle = isBlockDisplay ? 'style=\"order:1\"' : \"\";\n\n return html`\n <span class=\"icon-container\" part=\"icon\" ${containerStyle}>\n <img src=${imageUrl} part=\"icon\" aria-hidden=\"true\" />\n </span>\n `;\n }\n\n renderContent(isPromoPillVisible: boolean, shouldDisplayColon: boolean, data: IAPIV3PostProductDetailsPage) {\n const title = localizeUserString(this.configLang, data?.config?.web?.title) || strings[this.configLang].ctaTitle();\n const description =\n localizeUserString(this.configLang, data?.config?.web?.description) || strings[this.configLang].ctaMessage();\n return isPromoPillVisible\n ? html`\n <div class=\"info-inline-promo\">\n <span class=\"title\">${title + (shouldDisplayColon ? strings[this.configLang].inlineSeparator() : \"\")}</span>\n <span class=\"description\"> ${description} ${this.renderDisclosureTooltip()} </span>\n </div>\n `\n : html`\n <div class=\"title-block\">\n <h3 class=\"title\">${title}</h3>\n </div>\n <div class=\"description-block\">\n <span class=\"description\"> ${description} ${this.renderDisclosureTooltip()} </span>\n </div>\n `;\n }\n\n renderCloseTooltipIcon() {\n return html`<svg width=\"11\" height=\"11\" viewBox=\"0 0 11 11\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.40836 5.40811L1.48828 1.48804M5.40836 5.40811L9.32843 9.32819M5.40836 5.40811L9.32843 1.48804M5.40836 5.40811L1.48828 9.32819\"\n stroke=\"white\"\n stroke-width=\"1.56803\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg> `;\n }\n\n /* PayPal Giving Fund Disclosure */\n renderDisclosureTooltip() {\n const onClickClose = () => {\n // due to being strictly html, we need to assume any when overriding shoelace properties\n const tooltip = this.renderRoot.querySelector(\".ppgf-disclosure-tooltip\") as any;\n if (tooltip?.open) {\n tooltip.open = false;\n }\n };\n const ppgfDisclosure = this.productDetailsPageDataController.data?.ppgfDisclosure;\n return ppgfDisclosure\n ? html`<sl-tooltip class=\"ppgf-disclosure-tooltip\" part=\"tooltip\">\n <div class=\"ppgf-disclosure-tooltip-content\" slot=\"content\" part=\"tooltip-content\">\n <button\n class=\"ppgf-disclosure-close\"\n aria-label=\"Close tooltip\"\n part=\"tooltip-close-button\"\n @click=\"${onClickClose}\"\n >\n ${this.renderCloseTooltipIcon()}\n </button>\n <div class=\"ppgf-disclosure-tooltip-copy\" part=\"tooltip-disclosure-copy\">\n ${unsafeHTML(ppgfDisclosure.copy)}\n </div>\n </div>\n <span class=\"ppgf-disclosure-tooltip-trigger\" part=\"tooltip-disclosure-icon\">\n <div class=\"ppgf-disclosure-tooltip-trigger-mask d-lg-none\"></div>\n <sl-button\n variant=\"text\"\n size=\"small\"\n class=\"ppgf-disclosure-tooltip-trigger\"\n part=\"tooltip-disclosure-button\"\n aria-label=\"More information\"\n tabindex=\"0\"\n circle\n >\n ${_info()}\n </sl-button>\n </span>\n </sl-tooltip>`\n : html``;\n }\n /* End PayPal Giving Fund Disclosure */\n\n public get cssVariables() {\n const defaults = {\n \"--beam-ProductDetailsPage-imageWidth\": \"24px\",\n \"--beam-ProductDetailsPage-imageHeight\": \"24px\",\n \"--beam-ProductDetailsPage-maxWidth\": \"346px\",\n \"--beam-ProductDetailsPage-paddingTop\": \"8px\",\n \"--beam-ProductDetailsPage-paddingRight\": \"12px\",\n \"--beam-ProductDetailsPage-paddingBottom\": \"8px\",\n \"--beam-ProductDetailsPage-paddingLeft\": \"15px\",\n \"--beam-ProductDetailsPage-InfoContainer-marginLeft\": \"8px\",\n \"--beam-ProductDetailsPage-InfoContainer-textAlign\": \"inherit\",\n \"--beam-ProductDetailsPage-InfoContainer-lineHeight\": \"15px\",\n \"--beam-ProductDetailsPage-InfoContainer-marginTop\": \"4px\",\n \"--beam-ProductDetailsPage-backgroundColor\": \"unset\",\n \"--beam-ProductDetailsPage-TooltipIcon-width\": \"10px\",\n \"--beam-ProductDetailsPage-TooltipIcon-color\": \"inherit\",\n \"--beam-ProductDetailsPage-PPGFDisclosure-backgroundColor\": \"#000000\",\n \"--beam-ProductDetailsPage-PPGFDisclosure-paddingTop\": \"10px\",\n \"--beam-ProductDetailsPage-PPGFDisclosure-paddingRight\": \"8px\",\n \"--beam-ProductDetailsPage-PPGFDisclosure-paddingBottom\": \"10px\",\n \"--beam-ProductDetailsPage-PPGFDisclosure-paddingLeft\": \"8px\",\n \"--beam-ProductDetailsPage-PPGFDisclosureHyperlink-color\": \"#5CA3FF\",\n ...defineCustomText(\"--beam-ProductDetailsPage-title\", {\n fontSize: \"12px\",\n fontWeight: \"bold\",\n }),\n \"--beam-ProductDetailsPage-title-textAlign\": \"left\",\n ...defineCustomText(\"--beam-ProductDetailsPage-description\", {\n marginTop: \"0px\",\n fontSize: \"12px\",\n lineHeight: \"15px\",\n }),\n \"--beam-ProductDetailsPage-description-textAlign\": \"left\",\n ...defineCustomText(\"--beam-ProductDetailsPage-PPGFDisclosureTooltipContent\", {\n fontSize: \"12px\",\n lineHeight: \"16px\",\n color: \"#FFFFFF\",\n }),\n ...defineCustomBorder(\"--beam-ProductDetailsPage\"),\n \"--beam-ProductDetailsPage-close-display\": \"initial\",\n \"--beam-ProductDetailsPage-close-padding\": \"0\",\n \"--beam-ProductDetailsPage-image-placement\": \"inline-left\", // options: \"inline-left\" || \"block-center\"\n \"--beam-ProductDetailsPage-blockImage-alignSelf\": \"center\",\n \"--beam-ProductDetailsPage-promoPill-marginTop\": \"4px\",\n \"--beam-ProductDetailsPage-promoPill-alignSelf\": \"left\",\n \"--beam-ProductDetailsPage-shouldDisplayColon\": \"true\",\n \"--beam-ProductDetailsPage-shouldDisplayPromoPill\": \"true\",\n ...promoPillLabelConfigDefaults,\n };\n const remoteConfig = this.productDetailsPageDataController?.data?.config?.web?.theme || {};\n\n const config = { ...defaults, ...remoteConfig };\n\n const serializable = Object.create({\n toCSS() {\n return _cssVariableMap(this as Record<string, string>);\n },\n });\n\n return Object.assign(serializable, config);\n }\n\n static styles = [\n cssReset,\n cssResponsiveUtils,\n css`\n :host {\n font-family: var(--beam-fontFamily);\n font-style: var(--beam-fontStyle);\n font-size: var(--beam-fontSize);\n background-color: var(--beam-backgroundColor);\n color: var(--beam-textColor);\n max-width: var(--beam-ProductDetailsPage-maxWidth);\n word-break: normal;\n display: block;\n }\n .root {\n padding-top: var(--beam-ProductDetailsPage-paddingTop);\n padding-right: var(--beam-ProductDetailsPage-paddingRight);\n padding-bottom: var(--beam-ProductDetailsPage-paddingBottom);\n padding-left: var(--beam-ProductDetailsPage-paddingLeft);\n width: 100%;\n background-color: var(--beam-ProductDetailsPage-backgroundColor);\n display: flex;\n flex-direction: column;\n ${useCustomBorder(\"--beam-ProductDetailsPage\")}\n }\n /* When iconDisplay is inline-center */\n .inline-display {\n display: flex;\n }\n /* When iconDisplay is block-center */\n .block-display {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n .promo-container {\n order: 2;\n display: flex;\n margin-top: var(--beam-ProductDetailsPage-promoPill-marginTop);\n align-self: var(--beam-ProductDetailsPage-promoPill-alignSelf);\n }\n .content-inline {\n order: 3;\n display: flex;\n align-items: center;\n }\n /* Info block for both inline and block layout */\n .info-container {\n display: flex;\n flex-direction: column;\n justify-content: center;\n text-align: var(--beam-ProductDetailsPage-InfoContainer-textAlign);\n line-height: var(--beam-ProductDetailsPage-InfoContainer-lineHeight);\n margin-top: var(--beam-ProductDetailsPage-InfoContainer-marginTop);\n margin-left: var(--beam-ProductDetailsPage-InfoContainer-marginLeft);\n }\n .block-display .info-container {\n order: 3;\n }\n .root.inline-display .icon-container,\n .root.inline-display .info-container {\n display: inline-flex;\n }\n .root.inline-display {\n flex-direction: column;\n }\n .icon-container {\n width: var(--beam-ProductDetailsPage-imageWidth);\n height: var(--beam-ProductDetailsPage-imageHeight);\n align-self: var(--beam-ProductDetailsPage-blockImage-alignSelf);\n flex-shrink: 0;\n }\n .icon-container > img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n }\n .title {\n ${useCustomText(\"--beam-ProductDetailsPage-title\")}\n }\n .title-block {\n text-align: var(--beam-ProductDetailsPage-title-textAlign);\n line-height: var(--beam-ProductDetailsPage-title-lineHeight);\n }\n .info-inline-promo {\n margin-top: var(--beam-ProductDetailsPage-description-marginTop, 0px);\n }\n .description {\n ${useCustomText(\"--beam-ProductDetailsPage-description\")}\n }\n .description-block {\n text-align: var(--beam-ProductDetailsPage-description-textAlign);\n line-height: var(--beam-ProductDetailsPage-description-lineHeight);\n ${useCustomText(\"--beam-ProductDetailsPage-description\")}\n }\n .ppgf-disclosure-tooltip {\n --max-width: 268px;\n }\n .ppgf-disclosure-tooltip::part(body) {\n background-color: var(--beam-ProductDetailsPage-PPGFDisclosure-backgroundColor);\n padding-top: var(--beam-ProductDetailsPage-PPGFDisclosure-paddingTop);\n padding-right: var(--beam-ProductDetailsPage-PPGFDisclosure-paddingRight);\n padding-bottom: var(--beam-ProductDetailsPage-PPGFDisclosure-paddingBottom);\n padding-left: var(--beam-ProductDetailsPage-PPGFDisclosure-paddingLeft);\n }\n .ppgf-disclosure-tooltip::part(base__arrow) {\n background-color: var(--beam-ProductDetailsPage-PPGFDisclosure-backgroundColor);\n }\n .ppgf-disclosure-tooltip-content {\n display: flex;\n flex-direction: column;\n ${useCustomText(\"--beam-ProductDetailsPage-PPGFDisclosureTooltipContent\")}\n }\n .ppgf-disclosure-tooltip-copy > a,\n .ppgf-disclosure-close {\n pointer-events: auto;\n color: var(--beam-ProductDetailsPage-PPGFDisclosureHyperlink-color);\n }\n .ppgf-disclosure-close {\n display: var(--beam-ProductDetailsPage-close-display);\n padding: var(--beam-ProductDetailsPage-close-padding);\n height: 12px;\n background: none;\n border: none;\n margin-left: auto;\n }\n .ppgf-disclosure-tooltip-copy > a:visited {\n color: var(--beam-ProductDetailsPage-PPGFDisclosureHyperlink-color);\n }\n .ppgf-disclosure-tooltip-trigger {\n position: relative;\n }\n .ppgf-disclosure-tooltip-trigger-mask {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: calc(var(--beam-ProductDetailsPage-TooltipIcon-width) + 20px);\n height: calc(var(--beam-ProductDetailsPage-TooltipIcon-width) + 20px);\n }\n .ppgf-disclosure-tooltip-trigger::part(base) {\n line-height: 1;\n border: none;\n min-height: 0;\n min-width: 0;\n width: auto;\n color: var(--beam-ProductDetailsPage-TooltipIcon-color);\n }\n .ppgf-disclosure-tooltip-trigger::part(label) {\n padding: 0;\n }\n .ppgf-disclosure-tooltip-trigger > svg {\n width: var(--beam-ProductDetailsPage-TooltipIcon-width);\n color: var(--beam-ProductDetailsPage-TooltipIcon-color);\n height: auto;\n }\n `,\n ];\n}\n\ndefineCustomElement(BeamProductDetailsPage);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-product-details-page\": BeamProductDetailsPage;\n }\n}\n"],"names":["defineCustomBorder","namespace","borderRadius","borderStyle","borderColor","borderWidth","prefix","useCustomBorder","unsafeCSS","_info","html","strings","x","s","p","n","e","t","o","r","IMAGE_URL_REMOTE_CONFIG_KEY","BeamProductDetailsPage","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","evt","promoCodesFromPlugin","c","enforceConfig","beamCartId","getBeamCartId","BEAM_CART_COOKIE_NAME","manualPromoCodes","formattedPromos","formatStoreAndReturnPromoCodes","code","shouldSendPromos","isEmptyPromoData","BeamWidgetStoredPromoCodesEvent","WIDGET_NAMES","res","postProductDetailsPage","makeApiKeyHeader","AsyncController","SUPPORTED_LANGUAGES","parseJsonStringArray","cart","getPromoCodesFromCart","response","setPromoCodesInLocalStorage","setPromoCodeInCookie","BeamPromoCodesStoredEvent","changedProperties","requireNewDataProps","prop","data","loading","iconDisplay","isNonZero","value","shouldDisplayPromoPill","isPromoActive","hasValidImageHeight","hasValidTitleFontSize","isPromoPillVisible","shouldShowPunctuation","_errorMessage","imageUrl","shouldDisplayColon","title","localizeUserString","description","onClickClose","tooltip","ppgfDisclosure","unsafeHTML","defaults","defineCustomText","promoPillLabelConfigDefaults","remoteConfig","config","_cssVariableMap","cssReset","cssResponsiveUtils","css","useCustomText","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
|
|
@@ -73,7 +73,7 @@ declare class BeamRedeemTransaction extends LitElement {
|
|
|
73
73
|
private renderProgressBar;
|
|
74
74
|
private renderNonprofitDetails;
|
|
75
75
|
private renderPromoPill;
|
|
76
|
-
protected render():
|
|
76
|
+
protected render(): lit_html.TemplateResult<1> | "";
|
|
77
77
|
}
|
|
78
78
|
declare global {
|
|
79
79
|
interface HTMLElementTagNameMap {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"../chunks/lit-WqMxC_PA.esm.js";import"../chunks/lodash-D3TLHRR_.esm.js";import"../chunks/localize-Btu9xYcE.esm.js";import"../chunks/routes-
|
|
1
|
+
import"../chunks/lit-WqMxC_PA.esm.js";import"../chunks/lodash-D3TLHRR_.esm.js";import"../chunks/localize-Btu9xYcE.esm.js";import"../chunks/routes-DCT5U9dA.esm.js";import"../chunks/progress-bar-DF7UuuHb.esm.js";import"../chunks/promo-pill-label-CbW_Vcru.esm.js";import"./beam-partner-logos.esm.js";import"../chunks/enforce-config-CZ3ToOgr.esm.js";import"../chunks/loading-template-DG4lkIIc.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../utils/local-storage.esm.js";import"../chunks/css-card-grid-CvoGpsJH.esm.js";import{B as g}from"../chunks/index-Bp9sWMsk.esm.js";import"../chunks/events-Dki0ka4F.esm.js";import"../utils/logger.esm.js";import"../chunks/promo-types-DKAOFHJr.esm.js";import"../chunks/vendor-KKSARHWL.esm.js";export{g as BeamRedeemTransaction};
|
|
2
2
|
//# sourceMappingURL=redeem-transaction.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"../chunks/lit-WqMxC_PA.esm.js";import"../chunks/lodash-D3TLHRR_.esm.js";import"../chunks/localize-C25pEGnx.esm.js";import"../chunks/routes-
|
|
1
|
+
import"../chunks/lit-WqMxC_PA.esm.js";import"../chunks/lodash-D3TLHRR_.esm.js";import"../chunks/localize-C25pEGnx.esm.js";import"../chunks/routes-DelUpFFo.esm.js";import"../chunks/progress-bar-DF7UuuHb.esm.js";import"../chunks/promo-pill-label-CbW_Vcru.esm.js";import"./beam-partner-logos.js";import"../chunks/enforce-config-Ba1JkOHs.esm.js";import"../chunks/loading-template-DG4lkIIc.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../utils/local-storage.js";import"../chunks/css-card-grid-CvoGpsJH.esm.js";import{B as g}from"../chunks/index-DA4pws6n.esm.js";import"../chunks/events-Dki0ka4F.esm.js";import"../utils/logger.js";import"../chunks/promo-types-DKAOFHJr.esm.js";import"../chunks/vendor-KKSARHWL.esm.js";export{g as BeamRedeemTransaction};
|
|
2
2
|
//# sourceMappingURL=redeem-transaction.js.map
|
|
@@ -54,6 +54,7 @@ declare class BeamSelectNonprofit extends LitElement {
|
|
|
54
54
|
private localStorage;
|
|
55
55
|
private getNonprofitById;
|
|
56
56
|
private handleCartChange;
|
|
57
|
+
private handleInitialNonprofitSync;
|
|
57
58
|
connectedCallback(): Promise<void>;
|
|
58
59
|
firstUpdated(): Promise<void>;
|
|
59
60
|
updated(changedProperties: PropertyValues): Promise<void>;
|
|
@@ -78,7 +79,7 @@ declare class BeamSelectNonprofit extends LitElement {
|
|
|
78
79
|
evaluateBreakPoints: lodash.DebouncedFuncLeading<() => void>;
|
|
79
80
|
get cssVariables(): any;
|
|
80
81
|
static styles: lit.CSSResult[];
|
|
81
|
-
protected render():
|
|
82
|
+
protected render(): lit_html.TemplateResult<1> | "";
|
|
82
83
|
}
|
|
83
84
|
declare global {
|
|
84
85
|
interface HTMLElementTagNameMap {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{h as
|
|
1
|
+
import{h as $,f as L,y as d,g as f,t as z,q as v,u as q,m as E,k as V}from"../chunks/lit-WqMxC_PA.esm.js";import{i as J,d as G}from"../chunks/lodash-D3TLHRR_.esm.js";import{u as S,A as D,d as h,a as Q,_ as A,i as m}from"../chunks/localize-Btu9xYcE.esm.js";import{D as X,W as y,d as Y,h as Z,S as ee}from"../chunks/routes-DCT5U9dA.esm.js";import{p as te}from"../chunks/progress-bar-DF7UuuHb.esm.js";import{p as oe}from"../chunks/promo-pill-label-CbW_Vcru.esm.js";import{c as ie,d as ne,e as P}from"../chunks/enforce-config-CZ3ToOgr.esm.js";import{_ as ae}from"../chunks/loading-template-DG4lkIIc.esm.js";import{f as B,c as re,k as se,i as I,j as le,g as T,a as M}from"../chunks/events-Dki0ka4F.esm.js";import{logger as ce}from"../utils/logger.esm.js";import{createScopedLocalStorage as pe}from"../utils/local-storage.esm.js";import{formatStoreAndReturnPromoCodes as de,isEmptyPromoData as fe,parseJsonStringArray as me,getPromoCodesFromCart as ge,setPromoCodesInLocalStorage as he,setPromoCodeInCookie as be}from"../utils/promoManager.esm.js";import{c as ue}from"../chunks/responsive-BR8qUfBa.esm.js";import{B as F}from"../chunks/cart-contents-DkoytiZh.esm.js";import{getBeamCartId as K,getExternalCartId as W}from"../utils/cart.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../chunks/promo-types-DKAOFHJr.esm.js";import"../chunks/vendor-KKSARHWL.esm.js";import"../utils/cookies.esm.js";class Se extends ${static get styles(){return L`
|
|
2
2
|
:host {
|
|
3
3
|
}
|
|
4
4
|
|
|
@@ -18,18 +18,18 @@ import{h as k,f as $,y as d,g as f,t as L,q as v,u as H,m as D,k as q}from"../ch
|
|
|
18
18
|
aria-label="Notification Blip"
|
|
19
19
|
>
|
|
20
20
|
<span class="notification-blip" part="notification-blip" role="button" tabindex="0" aria-hidden="true"></span>
|
|
21
|
-
</div>`}}customElements.get("beam-notification-blip")||customElements.define("beam-notification-blip",he);const be={"--beam-notificationBlip-color-background":"#000"},g={en:{beamAttribution:()=>"Powered by Beam",ctaTitle:()=>"Choose your impact",ctaPromoPrefixMessage:()=>"At no extra cost,",ctaPromoMessage:({donationPercentage:r="1"}={})=>`select a nonprofit and ${r}% of your purchase will be donated.`,ctaMessage:({donationPercentage:r="1"}={})=>`At no extra cost, select a nonprofit and ${r}% of your purchase will be donated.`,inlineSeparator:()=>": "},fr:{beamAttribution:()=>"Optimis\xE9 par Beam",ctaTitle:()=>"Choisissez votre cause",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:r="1"}={})=>`Sans frais suppl\xE9mentaires, choisissez un organisme \xE0 but non lucratif et ${r} % lui sera vers\xE9 en votre nom.`,inlineSeparator:()=>" : "},de:{beamAttribution:()=>"Unterst\xFCtzt von Beam",ctaTitle:()=>"W\xE4hle deinen Impact",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:r="1"}={})=>`Ohne zus\xE4tzliche Kosten, w\xE4hle eine der gemeinn\xFCtzigen Organisationen und spende ${r}% deines Einkaufs`,inlineSeparator:()=>": "},es:{beamAttribution:()=>"Ofrecido por Beam",ctaTitle:()=>"Elige tu contribuci\xF3n",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:r="1"}={})=>`Sin coste adicional, elige una organizaci\xF3n sin fines de lucro y donaremos ${r}% de tu compra.`,inlineSeparator:()=>": "},it:{beamAttribution:()=>"Gestito da Beam",ctaTitle:()=>"Scegli dove fare la differenza",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:r="1"}={})=>`Senza costi aggiuntivi, seleziona un'organizzazione no-profit a cui devolvere l\u2019${r}% del tuo acquisto`,inlineSeparator:()=>": "},pl:{beamAttribution:()=>"Wspierany przez Beam",ctaTitle:()=>"Wybierz inicjatyw\u0119, kt\xF3r\u0105 chcesz wesprze\u0107",ctaPromoPrefixMessage:()=>"",ctaPromoMessage:()=>"",ctaMessage:({donationPercentage:r="1"}={})=>`Bez \u017Cadnych dodatkowych koszt\xF3w wybierz organizacj\u0119, kt\xF3rej przeka\u017Cesz ${r}% warto\u015Bci Twoich zakup\xF3w!`,inlineSeparator:()=>": "}};var ue=Object.defineProperty,p=(r,e,t,n)=>{for(var o=void 0,i=r.length-1,s;i>=0;i--)(s=r[i])&&(o=s(e,t,o)||o);return o&&ue(e,t,o),o};class l extends k{constructor(){super(...arguments),this.baseUrl=Q,this.selectedNonprofitId=null,this.lang="en",this.debug=!1,this.draftConfig=!1,this.isMobile=window.innerWidth<768,this.enableNonprofitDeselection=!1,this.didTryToCreateNewSelectionFromCache=!1,this.pluginPromoCodes=[],this.handlePromoCodesStored=e=>{const t=(e.detail.promoCodes?.unvalidatedPromoCodes??[]).map(n=>n.attributes?.value??n.attributes?.url??"").sort();this.pluginPromoCodes=t},this.getChainNonprofits=async()=>{P(["apiKey"],this);const e=K(F,{apiKey:this.apiKey}),t=_("cart",{apiKey:this.apiKey}),n=this.cart?.content?{schema:this.cart?.schema,content:this.cart?.content}:void 0,o=this.getManualPromoCodes(),i=le(o.map(b=>({value:b})),this.apiKey),s=i&&!ce(i);s&&this.dispatchEvent(new A({source:C.select_nonprofit}));const c=await X({baseUrl:this.baseUrl,apiRoot:"/api/v3",headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{storeId:this.storeId,widgetName:C.select_nonprofit,postalCode:this.postalCode,countryCode:this.countryCode,beamCartId:e||void 0,cartId:t||void 0,version:"1.0.0",lang:this.configLang,...s&&{promos:i},options:{config:{draftConfig:this.draftConfig}},cart:n}});return this.enableNonprofitDeselection=!!c.config.enableNonprofitDeselection,this.selectedNonprofitId!==null&&this.selectedNonprofitId&&!c.nonprofits.map(b=>b.nonprofit.id).includes(this.selectedNonprofitId)&&(this.selectedNonprofitId=null,await this.postSelectNonprofit({selectedNonprofitId:null}),this.localStorage.setItem("nonprofit",null)),c.store?.id&&c.store.id!==this.storeId&&(this.storeId=c.store.id),await this.createNewSelectionForCachedNonprofit(),this.localStorage.setItemJson("chainNonprofits",{createdAt:new Date,data:c}),this.handleValidatedPromoCodes(c),c},this.postSelectNonprofit=async({selectedNonprofitId:e})=>{P(["apiKey","storeId"],this);const t=_("cart",{apiKey:this.apiKey}),n=K(F,{apiKey:this.apiKey}),o=await Y({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{nonprofitId:e,selectionId:this.selectionId,storeId:this.storeId,cartId:t||void 0,beamCartId:n||void 0,postalCode:this.postalCode,countryCode:this.countryCode}});this.selectionId=o?.selectionId,this.localStorage.setItem("transaction",this.selectionId),this.localStorage.setItem("nonprofit",e),this.localStorage.setItem("nonprofit_selected_at",new Date().toISOString()),await this.updateComplete;const i=this.getNonprofitById(e);e!==null&&this.dispatchEvent(new M({selectedNonprofitId:e,selectionId:this.selectionId,nonprofitName:i?.nonprofit?.name??null,source:C.select_nonprofit})),e===null&&this.dispatchEvent(new re({newNonprofitId:null,selectionId:this.selectionId}))},this.nonprofitListDataController=new E(this,this.getChainNonprofits),this.selectionDataController=new E(this,this.postSelectNonprofit),this.localStorage=se(this),this.handleCartChange=e=>{this.cart=e.detail},this.makeHandleSelect=(e,t,n)=>async o=>{const i=this.selectedNonprofitId;if(o instanceof KeyboardEvent){let s=null;switch(o.key){case"ArrowUp":case"ArrowLeft":t===0?s=n[n.length-1]:s=n[t-1],o.preventDefault();break;case"ArrowRight":case"ArrowDown":t===n.length-1?s=n[0]:s=n[t+1],o.preventDefault();break;case"Enter":case" ":o.preventDefault();break;default:return}if(s){i!=null&&(this.selectedNonprofitId=s.nonprofit.id);const c=this.renderRoot.querySelector(`[data-value="${s.nonprofit.id}"]`);c!==null&&(c.tabIndex=0,c.focus());return}}if(o.currentTarget instanceof HTMLElement)if(i===e)if(this.enableNonprofitDeselection)this.selectedNonprofitId=null,this.localStorage.setItem("nonprofit",null);else return;else this.selectedNonprofitId=e;await this.selectionDataController.exec({selectedNonprofitId:this.selectedNonprofitId})},this.evaluateBreakPoints=J(()=>{this.isMobile=window.innerWidth<768},50,{maxWait:50,leading:!0})}get configLang(){return Z[this.lang]||"en"}get parsedPromoCodes(){return pe(this.promoCodes)}getManualPromoCodes(){if(this.parsedPromoCodes&&this.parsedPromoCodes.length>0)return this.parsedPromoCodes;const e=this.localStorage.getItemJson("cart");return e?de(e):[]}async handleValidatedPromoCodes(e){e.promos?.validatedPromoCodes&&(await Promise.all([fe({apiKey:this.apiKey,promoCodes:{validatedPromoCodes:e.promos.validatedPromoCodes,unvalidatedPromoCodes:[]}}),me({validatedPromoCodes:e.promos.validatedPromoCodes,domain:this.domain})]),this.dispatchEvent(new A({source:C.select_nonprofit})))}getNonprofitById(e){return e?this.nonprofitListDataController?.data?.nonprofits.find(t=>t.nonprofit.id===e):null}async connectedCallback(){super.connectedCallback(),this.nonprofitListDataController.loading=!0,window.addEventListener(T.eventName,this.handleCartChange),window.addEventListener("resize",this.evaluateBreakPoints)}async firstUpdated(){await this.restoreStateFromCache(),window.addEventListener(B.eventName,this.handlePromoCodesStored)}async updated(e){const t=["baseUrl","storeId","apiKey","countryCode","postalCode","cart","lang","promoCodes","pluginPromoCodes"];this.pluginPromoCodes;for(const n of t)if(e.has(n)){await this.nonprofitListDataController.exec();break}}disconnectedCallback(){window.removeEventListener(T.eventName,this.handleCartChange),window.removeEventListener("resize",this.evaluateBreakPoints),window.removeEventListener(B.eventName,this.handlePromoCodesStored),super.disconnectedCallback()}async restoreStateFromCache(){try{const e=new Date().valueOf();this.cart=this.localStorage.getItemJson("cart")??void 0;const t=30*24*60*60*1e3,n=this.localStorage.getItem("nonprofit_selected_at")??0,o=e>new Date(n).valueOf()+t;o?o&&this.selectedNonprofitId!==null&&(await this.postSelectNonprofit({selectedNonprofitId:null}),this.localStorage.setItem("nonprofit",null)):(this.selectedNonprofitId=parseInt(this.localStorage.getItem("nonprofit")||"")||null,this.selectionId=this.localStorage.getItem("transaction")??void 0);const{createdAt:i=0,data:s}=this.localStorage.getItemJson("chainNonprofits")||{},c=2*60*60*1e3;!(e>new Date(i).valueOf()+c)&&this.nonprofitListDataController.loading&&(this.nonprofitListDataController.data=s,this.nonprofitListDataController.loading=!1)}catch(e){ae.error(e)}}async createNewSelectionForCachedNonprofit(){if(P(["apiKey"],this),!(!this.storeId||this.didTryToCreateNewSelectionFromCache))try{if(this.didTryToCreateNewSelectionFromCache=!0,this.selectedNonprofitId){this.selectionId||await this.selectionDataController.exec({selectedNonprofitId:this.selectedNonprofitId});const e=this.getNonprofitById(this.selectedNonprofitId);this.dispatchEvent(new M({selectedNonprofitId:this.selectedNonprofitId,selectionId:this.selectionId,nonprofitName:e?.nonprofit?.name,source:C.select_nonprofit}))}}catch{}}get cssVariables(){const e={"--beam-fontFamily":"inherit","--beam-fontStyle":"inherit","--beam-fontSize":"inherit","--beam-textColor":"inherit","--beam-backgroundColor":"inherit",...ee,"--beam-SelectNonprofit-title-textAlign":"inherit","--beam-SelectNonprofit-description-textAlign":"inherit","--beam-SelectNonprofit-maxWidth":"800px","--beam-SelectNonprofit-options-marginTop":"0px","--beam-SelectNonprofit-options-iconHeight":"24px","--beam-SelectNonprofit-options-padding":"10px","--beam-SelectNonprofit-options-borderRadius":"0px","--beam-SelectNonprofit-options-borderColor":"currentColor","--beam-SelectNonprofit-options--selected-borderColor":"currentColor","--beam-SelectNonprofit-options-backgroundColor":"transparent","--beam-SelectNonprofit-options-gap":"8px","--beam-SelectNonprofit-options--selected-backgroundColor":"currentColor","--beam-SelectNonprofit-details-marginTop":"10px","--beam-SelectNonprofit-details-borderRadius":"0px","--beam-SelectNonprofit-details-borderColor":"currentColor","--beam-SelectNonprofit-details-backgroundColor":"inherit","--beam-SelectNonprofit-details-padding":"10px",...h("--beam-SelectNonprofit-title",{fontSize:"1.25em",fontWeight:"bold"}),"--beam-SelectNonprofit-header-inline-lineHeight":"inherit",...h("--beam-SelectNonprofit-title-inline",{fontWeight:"bold"}),"--beam-SelectNonprofit-title-inline-textTransform":"none","--beam-SelectNonprofit-title-block-margin-right":"8px",...h("--beam-SelectNonprofit-description",{marginTop:"0.5em"}),...h("--beam-SelectNonprofit-description-inline"),...h("--beam-SelectNonprofit-details-cause",{fontSize:"0.85em",fontWeight:"bold"}),...h("--beam-SelectNonprofit-details-beamAttribution",{fontSize:"0.85em"}),...h("--beam-SelectNonprofit-details-impactDescription",{fontSize:"1em",marginTop:"10px"}),"--beam-SelectNonprofit-details-nonprofitName-fontWeight":"bold","--beam-SelectNonprofit-details-nonprofitName-fontStyle":"inherit","--beam-SelectNonprofit-details-fundingProgress-marginTop":"10px",...h("--beam-SelectNonprofit-details-fundingProgressLabel",{fontSize:"0.85em"}),...be,...te,"--beam-SelectNonprofit-promo-block-header-justifyContent":"initial","--beam-SelectNonprofit-notification-blip-top":"4px","--beam-SelectNonprofit-notification-blip-left":"50%","--beam-SelectNonprofit-display-notification-blip":"true","--beam-SelectNonprofit-enable-inline-header":"false"},t=this.nonprofitListDataController?.data?.config?.web?.theme||{},n={...e,...t};return Object.assign(Object.create({toCSS(){return G(this)}}),n)}render(){const{selectedNonprofitId:e}=this,{data:t,loading:n}=this.nonprofitListDataController;if(n&&!t)return ne();if(this.nonprofitListDataController.error)return this.debug?z({error:this.nonprofitListDataController.error}):"";if(this.selectionDataController.error&&this.debug)return z({error:this.selectionDataController.error});const o=t?.nonprofits||[],i=o.find(a=>a.nonprofit.id===e)||null,s=!!t?.config?.web?.promo,c=o.some(a=>!a.promo||!a.promo.isActive),b=a=>this.cssVariables[a],W=b("--beam-SelectNonprofit-display-notification-blip")==="true",y=b("--beam-SelectNonprofit-title-textAlign")==="center",u=b("--beam-SelectNonprofit-enable-inline-header")==="true"||this.isMobile,I=d`<h3
|
|
21
|
+
</div>`}}customElements.get("beam-notification-blip")||customElements.define("beam-notification-blip",Se);const Ne={"--beam-notificationBlip-color-background":"#000"},g={en:{beamAttribution:()=>"Powered by Beam",ctaTitle:()=>"Choose your impact",ctaPromoPrefixMessage:()=>"At no extra cost,",ctaPromoMessage:({donationPercentage:o="1"}={})=>`select a nonprofit and ${o}% will be donated for you.`,ctaMessage:({donationPercentage:o="1"}={})=>`At no extra cost, select a nonprofit and ${o}% will be donated for you.`,inlineSeparator:()=>": "},fr:{beamAttribution:()=>"Optimis\xE9 par Beam",ctaTitle:()=>"Choisissez votre cause",ctaPromoPrefixMessage:()=>"Sans frais suppl\xE9mentaires,",ctaPromoMessage:({donationPercentage:o="1"}={})=>`s\xE9lectionnez une association et ${o} % sera revers\xE9 en votre nom.`,ctaMessage:({donationPercentage:o="1"}={})=>`Sans frais suppl\xE9mentaires, choisissez une association et ${o} % de votre commande sera revers\xE9 en votre nom.`,inlineSeparator:()=>" : "},de:{beamAttribution:()=>"Unterst\xFCtzt von Beam",ctaTitle:()=>"W\xE4hle deine Wirkung",ctaPromoPrefixMessage:()=>"Ohne zus\xE4tzliche Kosten,",ctaPromoMessage:({donationPercentage:o="1"}={})=>`w\xE4hle eine Organisation und ${o}% deines Einkaufs werden gespendet.`,ctaMessage:({donationPercentage:o="1"}={})=>`Ohne zus\xE4tzliche Kosten kannst du eine gemeinn\xFCtzige Organisation ausw\xE4hlen und ${o}% deiner Bestellung werden gespendet.`,inlineSeparator:()=>": "},es:{beamAttribution:()=>"Ofrecido por Beam",ctaTitle:()=>"Elige tu impacto",ctaPromoPrefixMessage:()=>"Sin coste adicional,",ctaPromoMessage:({donationPercentage:o="1"}={})=>`elige una organizaci\xF3n y donaremos el ${o}% en tu nombre.`,ctaMessage:({donationPercentage:o="1"}={})=>`Sin coste adicional, elige una organizaci\xF3n sin fines de lucro y donaremos el ${o}% de tu compra en tu nombre.`,inlineSeparator:()=>": "},it:{beamAttribution:()=>"Gestito da Beam",ctaTitle:()=>"Scegli il tuo impatto",ctaPromoPrefixMessage:()=>"Senza costi aggiuntivi,",ctaPromoMessage:({donationPercentage:o="1"}={})=>`scegli un'organizzazione e doneremo l\u2019${o}% per te.`,ctaMessage:({donationPercentage:o="1"}={})=>`Senza costi aggiuntivi, seleziona un'organizzazione no-profit e doneremo l\u2019${o}% del tuo acquisto per te.`,inlineSeparator:()=>": "},pl:{beamAttribution:()=>"Obs\u0142ugiwane przez Beam",ctaTitle:()=>"Wybierz sw\xF3j wp\u0142yw",ctaPromoPrefixMessage:()=>"Bez dodatkowych koszt\xF3w,",ctaPromoMessage:({donationPercentage:o="1"}={})=>`wybierz organizacj\u0119, a ${o}% zostanie przekazane w Twoim imieniu.`,ctaMessage:({donationPercentage:o="1"}={})=>`Bez dodatkowych koszt\xF3w wybierz organizacj\u0119, kt\xF3rej przeka\u017Cemy ${o}% warto\u015Bci Twojego zam\xF3wienia w Twoim imieniu.`,inlineSeparator:()=>": "}};var ve=Object.defineProperty,p=(o,e,t,a)=>{for(var i=void 0,n=o.length-1,s;n>=0;n--)(s=o[n])&&(i=s(e,t,i)||i);return i&&ve(e,t,i),i};let _=!1;class l extends ${constructor(){super(...arguments),this.baseUrl=X,this.selectedNonprofitId=null,this.lang="en",this.debug=!1,this.draftConfig=!1,this.isMobile=window.innerWidth<768,this.enableNonprofitDeselection=!1,this.didTryToCreateNewSelectionFromCache=!1,this.pluginPromoCodes=[],this.handlePromoCodesStored=e=>{const t=(e.detail.promoCodes?.unvalidatedPromoCodes??[]).map(a=>a.attributes?.value??a.attributes?.url??"").sort();this.pluginPromoCodes=t},this.getChainNonprofits=async()=>{P(["apiKey"],this);const e=K(F,{apiKey:this.apiKey}),t=W("cart",{apiKey:this.apiKey}),a=this.cart?.content?{schema:this.cart?.schema,content:this.cart?.content}:void 0,i=this.getManualPromoCodes(),n=de(i.map(b=>({value:b})),this.apiKey),s=n&&!fe(n);s&&this.dispatchEvent(new B({source:y.select_nonprofit}));const c=await Y({baseUrl:this.baseUrl,apiRoot:"/api/v3",headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{storeId:this.storeId,widgetName:y.select_nonprofit,postalCode:this.postalCode,countryCode:this.countryCode,beamCartId:e||void 0,cartId:t||void 0,version:"1.0.0",lang:this.configLang,...s&&{promos:n},options:{config:{draftConfig:this.draftConfig}},cart:a}});return this.enableNonprofitDeselection=!!c.config.enableNonprofitDeselection,this.selectedNonprofitId!==null&&this.selectedNonprofitId&&!c.nonprofits.map(b=>b.nonprofit.id).includes(this.selectedNonprofitId)&&(this.selectedNonprofitId=null,await this.postSelectNonprofit({selectedNonprofitId:null}),this.localStorage.setItem("nonprofit",null)),c.store?.id&&c.store.id!==this.storeId&&(this.storeId=c.store.id),await this.createNewSelectionForCachedNonprofit(),this.localStorage.setItemJson("chainNonprofits",{createdAt:new Date,data:c}),this.handleValidatedPromoCodes(c),c},this.postSelectNonprofit=async({selectedNonprofitId:e})=>{P(["apiKey","storeId"],this);const t=W("cart",{apiKey:this.apiKey}),a=K(F,{apiKey:this.apiKey}),i=await Z({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{nonprofitId:e,selectionId:this.selectionId,storeId:this.storeId,cartId:t||void 0,beamCartId:a||void 0,creationMethod:"cart",postalCode:this.postalCode,countryCode:this.countryCode}});this.selectionId=i?.selectionId,this.localStorage.setItem("transaction",this.selectionId),this.localStorage.setItem("nonprofit",e),this.localStorage.setItem("nonprofit_selected_at",new Date().toISOString()),await this.updateComplete;const n=this.getNonprofitById(e);e!==null&&this.dispatchEvent(new re({selectedNonprofitId:e,selectionId:this.selectionId,nonprofitName:n?.nonprofit?.name??null,source:y.select_nonprofit})),e===null&&this.dispatchEvent(new se({newNonprofitId:null,selectionId:this.selectionId}))},this.nonprofitListDataController=new D(this,this.getChainNonprofits),this.selectionDataController=new D(this,this.postSelectNonprofit),this.localStorage=pe(this),this.handleCartChange=e=>{this.cart=e.detail},this.handleInitialNonprofitSync=e=>{if(_)return;const{nonprofitId:t,selectionId:a}=e.detail,i=t!==void 0&&this.selectedNonprofitId!==t,n=a!==void 0&&this.selectionId!==a;(i||n)&&(i&&(this.selectedNonprofitId=t),n&&(this.selectionId=a),this.requestUpdate(),_=!0,window.removeEventListener(I.eventName,this.handleInitialNonprofitSync))},this.makeHandleSelect=(e,t,a)=>async i=>{const n=this.selectedNonprofitId;if(i instanceof KeyboardEvent){let s=null;switch(i.key){case"ArrowUp":case"ArrowLeft":t===0?s=a[a.length-1]:s=a[t-1],i.preventDefault();break;case"ArrowRight":case"ArrowDown":t===a.length-1?s=a[0]:s=a[t+1],i.preventDefault();break;case"Enter":case" ":i.preventDefault();break;default:return}if(s){n!=null&&(this.selectedNonprofitId=s.nonprofit.id);const c=this.renderRoot.querySelector(`[data-value="${s.nonprofit.id}"]`);c!==null&&(c.tabIndex=0,c.focus());return}}if(i.currentTarget instanceof HTMLElement)if(n===e)if(this.enableNonprofitDeselection)this.selectedNonprofitId=null,this.localStorage.setItem("nonprofit",null);else return;else this.selectedNonprofitId=e;this.dispatchEvent(new le({})),window.removeEventListener(I.eventName,this.handleInitialNonprofitSync),await this.selectionDataController.exec({selectedNonprofitId:this.selectedNonprofitId})},this.evaluateBreakPoints=G(()=>{this.isMobile=window.innerWidth<768},50,{maxWait:50,leading:!0})}get configLang(){return ee[this.lang]||"en"}get parsedPromoCodes(){return me(this.promoCodes)}getManualPromoCodes(){if(this.parsedPromoCodes&&this.parsedPromoCodes.length>0)return this.parsedPromoCodes;const e=this.localStorage.getItemJson("cart");return e?ge(e):[]}async handleValidatedPromoCodes(e){e.promos?.validatedPromoCodes&&(await Promise.all([he({apiKey:this.apiKey,promoCodes:{validatedPromoCodes:e.promos.validatedPromoCodes,unvalidatedPromoCodes:[]}}),be({validatedPromoCodes:e.promos.validatedPromoCodes,domain:this.domain})]),this.dispatchEvent(new B({source:y.select_nonprofit})))}getNonprofitById(e){return e?this.nonprofitListDataController?.data?.nonprofits.find(t=>t.nonprofit.id===e):null}async connectedCallback(){super.connectedCallback(),window.addEventListener(I.eventName,this.handleInitialNonprofitSync),this.nonprofitListDataController.loading=!0,window.addEventListener(T.eventName,this.handleCartChange),window.addEventListener("resize",this.evaluateBreakPoints)}async firstUpdated(){await this.restoreStateFromCache(),window.addEventListener(M.eventName,this.handlePromoCodesStored)}async updated(e){const t=["baseUrl","storeId","apiKey","countryCode","postalCode","cart","lang","promoCodes","pluginPromoCodes"];this.pluginPromoCodes;for(const a of t)if(e.has(a)){await this.nonprofitListDataController.exec();break}}disconnectedCallback(){window.removeEventListener(T.eventName,this.handleCartChange),window.removeEventListener("resize",this.evaluateBreakPoints),window.removeEventListener(M.eventName,this.handlePromoCodesStored),super.disconnectedCallback()}async restoreStateFromCache(){try{const e=new Date().valueOf();this.cart=this.localStorage.getItemJson("cart")??void 0;const t=30*24*60*60*1e3,a=this.localStorage.getItem("nonprofit_selected_at")??0,i=e>new Date(a).valueOf()+t;i?i&&this.selectedNonprofitId!==null&&(await this.postSelectNonprofit({selectedNonprofitId:null}),this.localStorage.setItem("nonprofit",null)):(this.selectedNonprofitId=parseInt(this.localStorage.getItem("nonprofit")||"")||null,this.selectionId=this.localStorage.getItem("transaction")??void 0);const{createdAt:n=0,data:s}=this.localStorage.getItemJson("chainNonprofits")||{},c=2*60*60*1e3;!(e>new Date(n).valueOf()+c)&&this.nonprofitListDataController.loading&&(this.nonprofitListDataController.data=s,this.nonprofitListDataController.loading=!1)}catch(e){ce.error(e)}}async createNewSelectionForCachedNonprofit(){if(P(["apiKey"],this),!(!this.storeId||this.didTryToCreateNewSelectionFromCache))try{this.didTryToCreateNewSelectionFromCache=!0}catch{}}get cssVariables(){const e={"--beam-fontFamily":"inherit","--beam-fontStyle":"inherit","--beam-fontSize":"inherit","--beam-textColor":"inherit","--beam-backgroundColor":"inherit",...te,"--beam-SelectNonprofit-title-textAlign":"inherit","--beam-SelectNonprofit-description-textAlign":"inherit","--beam-SelectNonprofit-maxWidth":"800px","--beam-SelectNonprofit-options-marginTop":"0px","--beam-SelectNonprofit-options-iconHeight":"24px","--beam-SelectNonprofit-options-padding":"10px","--beam-SelectNonprofit-options-borderRadius":"0px","--beam-SelectNonprofit-options-borderColor":"currentColor","--beam-SelectNonprofit-options--selected-borderColor":"currentColor","--beam-SelectNonprofit-options-backgroundColor":"transparent","--beam-SelectNonprofit-options-gap":"8px","--beam-SelectNonprofit-options--selected-backgroundColor":"currentColor","--beam-SelectNonprofit-details-marginTop":"10px","--beam-SelectNonprofit-details-borderRadius":"0px","--beam-SelectNonprofit-details-borderColor":"currentColor","--beam-SelectNonprofit-details-backgroundColor":"inherit","--beam-SelectNonprofit-details-padding":"10px",...h("--beam-SelectNonprofit-title",{fontSize:"1.25em",fontWeight:"bold"}),"--beam-SelectNonprofit-header-inline-lineHeight":"inherit",...h("--beam-SelectNonprofit-title-inline",{fontWeight:"bold"}),"--beam-SelectNonprofit-title-inline-textTransform":"none","--beam-SelectNonprofit-title-block-margin-right":"8px",...h("--beam-SelectNonprofit-description",{marginTop:"0.5em"}),...h("--beam-SelectNonprofit-description-inline"),...h("--beam-SelectNonprofit-details-cause",{fontSize:"0.85em",fontWeight:"bold"}),...h("--beam-SelectNonprofit-details-beamAttribution",{fontSize:"0.85em"}),...h("--beam-SelectNonprofit-details-impactDescription",{fontSize:"1em",marginTop:"10px"}),"--beam-SelectNonprofit-details-nonprofitName-fontWeight":"bold","--beam-SelectNonprofit-details-nonprofitName-fontStyle":"inherit","--beam-SelectNonprofit-details-fundingProgress-marginTop":"10px",...h("--beam-SelectNonprofit-details-fundingProgressLabel",{fontSize:"0.85em"}),...Ne,...oe,"--beam-SelectNonprofit-promo-block-header-justifyContent":"initial","--beam-SelectNonprofit-notification-blip-top":"4px","--beam-SelectNonprofit-notification-blip-left":"50%","--beam-SelectNonprofit-display-notification-blip":"true","--beam-SelectNonprofit-enable-inline-header":"false"},t=this.nonprofitListDataController?.data?.config?.web?.theme||{},a={...e,...t};return Object.assign(Object.create({toCSS(){return Q(this)}}),a)}render(){const{selectedNonprofitId:e}=this,{data:t,loading:a}=this.nonprofitListDataController;if(a&&!t)return ae();if(this.nonprofitListDataController.error)return this.debug?A({error:this.nonprofitListDataController.error}):"";if(this.selectionDataController.error&&this.debug)return A({error:this.selectionDataController.error});const i=t?.nonprofits||[],n=i.find(r=>r.nonprofit.id===e)||null,s=!!t?.config?.web?.promo,c=i.some(r=>!r.promo||!r.promo.isActive),b=r=>this.cssVariables[r],U=b("--beam-SelectNonprofit-display-notification-blip")==="true",C=b("--beam-SelectNonprofit-title-textAlign")==="center",u=b("--beam-SelectNonprofit-enable-inline-header")==="true"||this.isMobile,k=d`<h3
|
|
22
22
|
class=${v({"title-block":!0,"d-none":!0,"d-block":!u})}
|
|
23
23
|
part="title"
|
|
24
24
|
id="beam-SelectNonprofit-title"
|
|
25
25
|
>
|
|
26
26
|
${m(this.configLang,t?.config?.web?.title||"")||g[this.configLang].ctaTitle()}
|
|
27
|
-
</h3>`,
|
|
28
|
-
${
|
|
27
|
+
</h3>`,O=()=>{const r=v({"block-header-promo-pill-container":!u&&!C,"block-header-promo-pill-container-responsive":u&&!C,"block-header-promo-pill-center-block-container-responsive":!u&&C}),w=E({display:u?"flex":void 0});return s?d`<div class=${r} style=${w}>
|
|
28
|
+
${k}
|
|
29
29
|
<beam-promo-info-pill .promo=${t?.config?.web?.promo}></beam-promo-info-pill>
|
|
30
|
-
</div>`:
|
|
30
|
+
</div>`:k},j=()=>d`
|
|
31
31
|
<div part="heading">
|
|
32
|
-
${
|
|
32
|
+
${O()}
|
|
33
33
|
<p class="description" part="description">
|
|
34
34
|
<span class=${v({"d-none":!0,"d-inline":!u})}>
|
|
35
35
|
${s?d`<span style="font-weight:bold">
|
|
@@ -62,7 +62,7 @@ import{h as k,f as $,y as d,g as f,t as L,q as v,u as H,m as D,k as q}from"../ch
|
|
|
62
62
|
${this.cssVariables.toCSS()}
|
|
63
63
|
}
|
|
64
64
|
</style>
|
|
65
|
-
${
|
|
65
|
+
${j()}
|
|
66
66
|
<div
|
|
67
67
|
class="options"
|
|
68
68
|
part="options"
|
|
@@ -70,21 +70,21 @@ import{h as k,f as $,y as d,g as f,t as L,q as v,u as H,m as D,k as q}from"../ch
|
|
|
70
70
|
aria-labelledby="beam-SelectNonprofit-title"
|
|
71
71
|
style="display: flex; gap: var(--beam-SelectNonprofit-options-gap); margin: 10px 0 0 0;"
|
|
72
72
|
>
|
|
73
|
-
${
|
|
73
|
+
${q(i,r=>r.nonprofit.id,({nonprofit:r,promo:w},x)=>{const N=e===r.id,R=N||n==null&&x===0,H=w?.isActive&&t?.config.web.promo&&c&&U;return d`
|
|
74
74
|
<div
|
|
75
75
|
class="option"
|
|
76
76
|
part="option"
|
|
77
77
|
role="radio"
|
|
78
|
-
tabindex="${
|
|
79
|
-
data-value=${
|
|
78
|
+
tabindex="${R?0:-1}"
|
|
79
|
+
data-value=${r.id}
|
|
80
80
|
aria-checked=${N}
|
|
81
|
-
@click=${this.makeHandleSelect(
|
|
82
|
-
@keydown=${this.makeHandleSelect(
|
|
83
|
-
aria-label="${m(this.configLang,
|
|
84
|
-
style="${
|
|
81
|
+
@click=${this.makeHandleSelect(r.id,x,i)}
|
|
82
|
+
@keydown=${this.makeHandleSelect(r.id,x,i)}
|
|
83
|
+
aria-label="${m(this.configLang,r.cause||"")}"
|
|
84
|
+
style="${E({cursor:"pointer",flex:"1",textAlign:"center",lineHeight:"1",marginTop:"var(--beam-SelectNonprofit-options-marginTop, 0px)",padding:"var(--beam-SelectNonprofit-options-padding, 10px)",borderWidth:"var(--beam-SelectNonprofit-options-borderWidth, 1px)",borderStyle:"solid",position:"relative",borderRadius:"var(--beam-SelectNonprofit-options-borderRadius, 0)",borderColor:N?r.causeColor||"var(--beam-SelectNonprofit-options--selected-borderColor, currentColor)":"var(--beam-SelectNonprofit-options-borderColor, currentColor)",backgroundColor:N?r.causeColor||"var(--beam-SelectNonprofit-options--selected-backgroundColor, currentColor)":"var(--beam-SelectNonprofit-options-backgroundColor, transparent)"})}"
|
|
85
85
|
>
|
|
86
86
|
<img
|
|
87
|
-
src="${N?
|
|
87
|
+
src="${N?r.causeIconSelectedUrl:r.causeIconUrl}"
|
|
88
88
|
alt=""
|
|
89
89
|
role="presentation"
|
|
90
90
|
style="
|
|
@@ -93,11 +93,11 @@ import{h as k,f as $,y as d,g as f,t as L,q as v,u as H,m as D,k as q}from"../ch
|
|
|
93
93
|
vertical-align: -webkit-baseline-middle;
|
|
94
94
|
"
|
|
95
95
|
/>
|
|
96
|
-
${
|
|
96
|
+
${H?d`<beam-notification-blip></beam-notification-blip>`:d``}
|
|
97
97
|
</div>
|
|
98
98
|
`})}
|
|
99
99
|
</div>
|
|
100
|
-
${
|
|
100
|
+
${n!=null?d`
|
|
101
101
|
<div
|
|
102
102
|
class="details"
|
|
103
103
|
part="details"
|
|
@@ -108,14 +108,14 @@ import{h as k,f as $,y as d,g as f,t as L,q as v,u as H,m as D,k as q}from"../ch
|
|
|
108
108
|
padding: var(--beam-SelectNonprofit-details-padding);
|
|
109
109
|
margin-top: var(--beam-SelectNonprofit-details-marginTop);
|
|
110
110
|
"
|
|
111
|
-
aria-label="Funding information for selected nonprofit ${
|
|
111
|
+
aria-label="Funding information for selected nonprofit ${n.nonprofit?.name}. Powered by Beam"
|
|
112
112
|
>
|
|
113
113
|
<div style="display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap-reverse">
|
|
114
114
|
<span
|
|
115
115
|
class="details-cause"
|
|
116
116
|
style="flex: 0 1; white-space: nowrap; ${S("--beam-SelectNonprofit-details-cause")}"
|
|
117
117
|
>
|
|
118
|
-
${
|
|
118
|
+
${n?.promo?.isActive&&c?t?.config.web.promo?.["promo-cause-alt-text"]||n.nonprofit.cause:m(this.configLang,n.nonprofit.cause||"")}
|
|
119
119
|
</span>
|
|
120
120
|
<div aria-hidden="true">
|
|
121
121
|
<span
|
|
@@ -128,25 +128,25 @@ import{h as k,f as $,y as d,g as f,t as L,q as v,u as H,m as D,k as q}from"../ch
|
|
|
128
128
|
</div>
|
|
129
129
|
</div>
|
|
130
130
|
<p class="details-impactDescription">
|
|
131
|
-
${
|
|
131
|
+
${V(m(this.configLang,n.impact.description||""))}
|
|
132
132
|
</p>
|
|
133
133
|
<div
|
|
134
134
|
style="display: flex; margin-top: var(--beam-SelectNonprofit-details-fundingProgress-marginTop); align-items: center;"
|
|
135
135
|
>
|
|
136
136
|
<beam-progress-bar
|
|
137
|
-
value="${
|
|
137
|
+
value="${n.impact.goalProgressPercentage}"
|
|
138
138
|
style="flex: 1 0;"
|
|
139
139
|
></beam-progress-bar>
|
|
140
140
|
<span
|
|
141
141
|
class="details-fundingProgressLabel"
|
|
142
142
|
style="${S("--beam-SelectNonprofit-details-fundingProgressLabel")} white-space: nowrap; text-align: right; flex: 0 1; margin-left: 15px;"
|
|
143
143
|
>
|
|
144
|
-
${m(this.configLang,
|
|
144
|
+
${m(this.configLang,n.impact.goalProgressText)}
|
|
145
145
|
</span>
|
|
146
146
|
</div>
|
|
147
147
|
</div>
|
|
148
148
|
`:""}
|
|
149
|
-
`}}l.tagName="beam-select-nonprofit",l.styles=[
|
|
149
|
+
`}}l.tagName="beam-select-nonprofit",l.styles=[ie,ue,L`
|
|
150
150
|
:host {
|
|
151
151
|
display: block;
|
|
152
152
|
max-width: var(--beam-SelectNonprofit-maxWidth, 800px);
|
|
@@ -232,5 +232,5 @@ import{h as k,f as $,y as d,g as f,t as L,q as v,u as H,m as D,k as q}from"../ch
|
|
|
232
232
|
top: var(--beam-SelectNonprofit-notification-blip-top);
|
|
233
233
|
left: var(--beam-SelectNonprofit-notification-blip-left);
|
|
234
234
|
}
|
|
235
|
-
`],p([f({type:String})],l.prototype,"baseUrl"),p([f({type:String})],l.prototype,"apiKey"),p([f({type:Number,reflect:!0})],l.prototype,"storeId"),p([f({type:String})],l.prototype,"countryCode"),p([f({type:String})],l.prototype,"postalCode"),p([f({attribute:!1,hasChanged:(
|
|
235
|
+
`],p([f({type:String})],l.prototype,"baseUrl"),p([f({type:String})],l.prototype,"apiKey"),p([f({type:Number,reflect:!0})],l.prototype,"storeId"),p([f({type:String})],l.prototype,"countryCode"),p([f({type:String})],l.prototype,"postalCode"),p([f({attribute:!1,hasChanged:(o,e)=>!J(o,e)})],l.prototype,"cart"),p([f({type:Number,reflect:!0})],l.prototype,"selectedNonprofitId"),p([f({type:String})],l.prototype,"lang"),p([f({type:Boolean})],l.prototype,"debug"),p([f({type:Boolean})],l.prototype,"draftConfig"),p([f({type:String})],l.prototype,"promoCodes"),p([f({type:String})],l.prototype,"domain"),p([z()],l.prototype,"isMobile"),p([z()],l.prototype,"pluginPromoCodes"),ne(l);export{l as BeamSelectNonprofit};
|
|
236
236
|
//# sourceMappingURL=select-nonprofit.esm.js.map
|