@beamimpact/web-sdk 1.36.12 → 1.37.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/README.md +21 -1
  2. package/dist/chunks/{_share-dialog-dependencies-EtRWS6m5.esm.js → _share-dialog-dependencies-FheD3_vQ.esm.js} +2 -2
  3. package/dist/chunks/_share-dialog-dependencies-FheD3_vQ.esm.js.map +1 -0
  4. package/dist/chunks/{_share-dialog-dependencies-6VF8H43o.esm.js → _share-dialog-dependencies-l35ECwOP.esm.js} +2 -2
  5. package/dist/chunks/_share-dialog-dependencies-l35ECwOP.esm.js.map +1 -0
  6. package/dist/chunks/{cart-contents-v6_9tRb6.esm.d.ts → cart-contents-IOhdr24g.esm.d.ts} +1 -1
  7. package/dist/chunks/events-Y8fYvSqM.esm.js +2 -0
  8. package/dist/chunks/{events-5IECSF-x.esm.js.map → events-Y8fYvSqM.esm.js.map} +1 -1
  9. package/dist/chunks/{events-OcebkuWu.esm.d.ts → events-j-SJ9Cot.esm.d.ts} +17 -3
  10. package/dist/chunks/{index-g9-z_JOJ.esm.d.ts → index-3F_Wjm5v.esm.d.ts} +1 -1
  11. package/dist/chunks/{index-9gijHGwh.esm.js → index-8yrr7ZZv.esm.js} +2 -2
  12. package/dist/chunks/index-8yrr7ZZv.esm.js.map +1 -0
  13. package/dist/chunks/index-B2oj1JKu.esm.js +2 -0
  14. package/dist/chunks/index-B2oj1JKu.esm.js.map +1 -0
  15. package/dist/chunks/index-E_HMWZ2A.esm.js +2 -0
  16. package/dist/chunks/index-E_HMWZ2A.esm.js.map +1 -0
  17. package/dist/chunks/{index-eZQGsMRE.esm.js → index-Gz7Q9nUW.esm.js} +2 -2
  18. package/dist/chunks/{index-eZQGsMRE.esm.js.map → index-Gz7Q9nUW.esm.js.map} +1 -1
  19. package/dist/chunks/index-JsXH5Lnc.esm.js +2 -0
  20. package/dist/chunks/index-JsXH5Lnc.esm.js.map +1 -0
  21. package/dist/chunks/{index-OnjTwvAw.esm.js → index-Lw32NXij.esm.js} +2 -2
  22. package/dist/chunks/index-Lw32NXij.esm.js.map +1 -0
  23. package/dist/chunks/index-RDKeoKqc.esm.js +2 -0
  24. package/dist/chunks/index-RDKeoKqc.esm.js.map +1 -0
  25. package/dist/chunks/index-VGoZaoVm.esm.js +2 -0
  26. package/dist/chunks/index-VGoZaoVm.esm.js.map +1 -0
  27. package/dist/chunks/{index-JwkkxR5U.esm.d.ts → index-WX8Yyx2u.esm.d.ts} +1 -1
  28. package/dist/chunks/{index-5daMf0rK.esm.d.ts → index-mWnpDGl1.esm.d.ts} +1 -1
  29. package/dist/chunks/{index-U8Oy2aur.esm.js → index-phDmC-TS.esm.js} +2 -2
  30. package/dist/chunks/index-phDmC-TS.esm.js.map +1 -0
  31. package/dist/chunks/{index-FnuGcS7e.esm.d.ts → index-s8uQH63W.esm.d.ts} +4 -4
  32. package/dist/chunks/{index-KVvZMZmn.esm.d.ts → index-slrOT8Gd.esm.d.ts} +1 -1
  33. package/dist/chunks/{index-wsdeaTHd.esm.js → index-uF-Qtewb.esm.js} +2 -2
  34. package/dist/chunks/index-uF-Qtewb.esm.js.map +1 -0
  35. package/dist/chunks/{index-AzO-vVC_.esm.js → index-vpkWmZo_.esm.js} +2 -2
  36. package/dist/chunks/{index-AzO-vVC_.esm.js.map → index-vpkWmZo_.esm.js.map} +1 -1
  37. package/dist/chunks/index-xYLcuL6Z.esm.js +2 -0
  38. package/dist/chunks/index-xYLcuL6Z.esm.js.map +1 -0
  39. package/dist/chunks/{index-wlzifF_l.esm.d.ts → index-yXqJ9Znv.esm.d.ts} +1 -1
  40. package/dist/chunks/{openapi-spec-bq7eoELU.esm.d.ts → openapi-spec-b529HHW3.esm.d.ts} +18 -71
  41. package/dist/chunks/order-page-9B0nZVh1.esm.js +2 -0
  42. package/dist/chunks/order-page-9B0nZVh1.esm.js.map +1 -0
  43. package/dist/chunks/{order-page-2mptGhAC.esm.d.ts → order-page-jkuLE25f.esm.d.ts} +4 -20
  44. package/dist/chunks/order-page-yM2h67MI.esm.js +2 -0
  45. package/dist/chunks/order-page-yM2h67MI.esm.js.map +1 -0
  46. package/dist/chunks/routes-LFjgVNGB.esm.js +2 -0
  47. package/dist/chunks/routes-LFjgVNGB.esm.js.map +1 -0
  48. package/dist/chunks/routes-ad0I3Ayc.esm.js +2 -0
  49. package/dist/chunks/routes-ad0I3Ayc.esm.js.map +1 -0
  50. package/dist/chunks/{update-cart-OMt_qKQ8.esm.js → update-cart-A2hs4tF8.esm.js} +2 -2
  51. package/dist/chunks/{update-cart-OMt_qKQ8.esm.js.map → update-cart-A2hs4tF8.esm.js.map} +1 -1
  52. package/dist/chunks/{update-cart-kuufrFCv.esm.d.ts → update-cart-EKZbvT8c.esm.d.ts} +1 -1
  53. package/dist/chunks/{update-cart-9ANMUWR9.esm.js → update-cart-vcujKNky.esm.js} +2 -2
  54. package/dist/chunks/{update-cart-9ANMUWR9.esm.js.map → update-cart-vcujKNky.esm.js.map} +1 -1
  55. package/dist/components/community-impact.esm.js +1 -1
  56. package/dist/components/community-impact.js +1 -1
  57. package/dist/components/cumulative-impact.esm.js +1 -1
  58. package/dist/components/cumulative-impact.js +1 -1
  59. package/dist/components/impact-overview.esm.js +1 -1
  60. package/dist/components/impact-overview.js +1 -1
  61. package/dist/components/index.d.ts +2 -2
  62. package/dist/components/index.esm.js +1 -1
  63. package/dist/components/index.js +1 -1
  64. package/dist/components/post-purchase.d.ts +2 -2
  65. package/dist/components/post-purchase.esm.js +3 -1
  66. package/dist/components/post-purchase.esm.js.map +1 -1
  67. package/dist/components/post-purchase.js +3 -1
  68. package/dist/components/post-purchase.js.map +1 -1
  69. package/dist/components/redeem-transaction.d.ts +2 -2
  70. package/dist/components/redeem-transaction.esm.js +1 -1
  71. package/dist/components/redeem-transaction.js +1 -1
  72. package/dist/components/select-nonprofit.d.ts +2 -2
  73. package/dist/components/select-nonprofit.esm.js +19 -19
  74. package/dist/components/select-nonprofit.esm.js.map +1 -1
  75. package/dist/components/select-nonprofit.js +19 -19
  76. package/dist/components/select-nonprofit.js.map +1 -1
  77. package/dist/components/shopify.d.ts +5 -5
  78. package/dist/components/shopify.esm.js +1 -1
  79. package/dist/components/shopify.js +1 -1
  80. package/dist/components/subscription-management.d.ts +5 -5
  81. package/dist/components/subscription-management.esm.js +5 -4
  82. package/dist/components/subscription-management.esm.js.map +1 -1
  83. package/dist/components/subscription-management.js +5 -4
  84. package/dist/components/subscription-management.js.map +1 -1
  85. package/dist/index.d.ts +11 -11
  86. package/dist/index.esm.js +1 -1
  87. package/dist/index.js +1 -1
  88. package/dist/integrations/beam.esm.js +1 -1
  89. package/dist/integrations/beam.js +1 -1
  90. package/dist/integrations/cart.d.ts +3 -3
  91. package/dist/integrations/cart.esm.js +1 -1
  92. package/dist/integrations/cart.js +1 -1
  93. package/dist/integrations/index.d.ts +9 -9
  94. package/dist/integrations/index.esm.js +1 -1
  95. package/dist/integrations/index.js +1 -1
  96. package/dist/integrations/logs.d.ts +2 -2
  97. package/dist/integrations/logs.esm.js +1 -1
  98. package/dist/integrations/logs.js +1 -1
  99. package/dist/integrations/shopify.d.ts +4 -4
  100. package/dist/integrations/shopify.esm.js +1 -1
  101. package/dist/integrations/shopify.js +1 -1
  102. package/dist/integrations/statsig.esm.js +1 -1
  103. package/dist/integrations/statsig.js +1 -1
  104. package/dist/integrations/utils.d.ts +3 -3
  105. package/dist/integrations/utils.esm.js +1 -1
  106. package/dist/integrations/utils.js +1 -1
  107. package/dist/react/community-impact.esm.js +1 -1
  108. package/dist/react/community-impact.js +1 -1
  109. package/dist/react/cumulative-impact.esm.js +1 -1
  110. package/dist/react/cumulative-impact.js +1 -1
  111. package/dist/react/impact-overview.esm.js +1 -1
  112. package/dist/react/impact-overview.js +1 -1
  113. package/dist/react/index.d.ts +3 -3
  114. package/dist/react/index.esm.js +1 -1
  115. package/dist/react/index.js +1 -1
  116. package/dist/react/post-purchase.d.ts +2 -2
  117. package/dist/react/post-purchase.esm.js +1 -1
  118. package/dist/react/post-purchase.js +1 -1
  119. package/dist/react/redeem-transaction.d.ts +3 -3
  120. package/dist/react/redeem-transaction.esm.js +1 -1
  121. package/dist/react/redeem-transaction.js +1 -1
  122. package/dist/react/select-nonprofit.d.ts +3 -3
  123. package/dist/react/select-nonprofit.esm.js +1 -1
  124. package/dist/react/select-nonprofit.js +1 -1
  125. package/dist/react/subscription-management.d.ts +2 -2
  126. package/dist/react/subscription-management.esm.js +1 -1
  127. package/dist/react/subscription-management.js +1 -1
  128. package/dist/utils/events.d.ts +3 -3
  129. package/dist/utils/events.esm.js +1 -1
  130. package/dist/utils/events.js +1 -1
  131. package/dist/utils/index.d.ts +3 -3
  132. package/dist/utils/index.esm.js +1 -1
  133. package/dist/utils/index.js +1 -1
  134. package/dist/utils/network-listeners.esm.js +1 -1
  135. package/dist/utils/network-listeners.js +1 -1
  136. package/package.json +1 -1
  137. package/dist/chunks/_share-dialog-dependencies-6VF8H43o.esm.js.map +0 -1
  138. package/dist/chunks/_share-dialog-dependencies-EtRWS6m5.esm.js.map +0 -1
  139. package/dist/chunks/events-5IECSF-x.esm.js +0 -2
  140. package/dist/chunks/index-0-TeGf3K.esm.js +0 -2
  141. package/dist/chunks/index-0-TeGf3K.esm.js.map +0 -1
  142. package/dist/chunks/index-9gijHGwh.esm.js.map +0 -1
  143. package/dist/chunks/index-GnUmyy1z.esm.js +0 -2
  144. package/dist/chunks/index-GnUmyy1z.esm.js.map +0 -1
  145. package/dist/chunks/index-IR9Ar71Q.esm.js +0 -2
  146. package/dist/chunks/index-IR9Ar71Q.esm.js.map +0 -1
  147. package/dist/chunks/index-OnjTwvAw.esm.js.map +0 -1
  148. package/dist/chunks/index-Q1G7wE5Y.esm.js +0 -2
  149. package/dist/chunks/index-Q1G7wE5Y.esm.js.map +0 -1
  150. package/dist/chunks/index-U8Oy2aur.esm.js.map +0 -1
  151. package/dist/chunks/index-d7x511He.esm.js +0 -2
  152. package/dist/chunks/index-d7x511He.esm.js.map +0 -1
  153. package/dist/chunks/index-ePiYABlF.esm.js +0 -2
  154. package/dist/chunks/index-ePiYABlF.esm.js.map +0 -1
  155. package/dist/chunks/index-wsdeaTHd.esm.js.map +0 -1
  156. package/dist/chunks/order-page-Lr9R8-is.esm.js +0 -2
  157. package/dist/chunks/order-page-Lr9R8-is.esm.js.map +0 -1
  158. package/dist/chunks/order-page-U_bvO9-n.esm.js +0 -2
  159. package/dist/chunks/order-page-U_bvO9-n.esm.js.map +0 -1
  160. package/dist/chunks/routes-Y3xQURF0.esm.js +0 -2
  161. package/dist/chunks/routes-Y3xQURF0.esm.js.map +0 -1
  162. package/dist/chunks/routes-fBXLZ-QV.esm.js +0 -2
  163. package/dist/chunks/routes-fBXLZ-QV.esm.js.map +0 -1
@@ -1,9 +1,11 @@
1
- import{g as o,t as s,h as y,y as l}from"../chunks/lit-yVXn5Cbs.esm.js";import{M as I}from"../chunks/beam-errors-P-Lu07Ce.esm.js";import{deleteCookieValue as u,getCookieValue as g}from"../utils/cookies.esm.js";import{c as C,d as f,A as b,e as v,_ as U}from"../chunks/enforce-config-qna7hEL6.esm.js";import{createScopedLocalStorage as S}from"../utils/local-storage.esm.js";import{D as $,b as w,c as A}from"../chunks/routes-Y3xQURF0.esm.js";import"./redeem-transaction.esm.js";import"./impact-overview.esm.js";import{B as h}from"../chunks/cart-contents-h60geKWa.esm.js";import{b as K}from"../chunks/events-5IECSF-x.esm.js";import"../utils/logger.esm.js";import"../chunks/lodash-P8OIs-at.esm.js";import"../chunks/progress-bar-7gWYaGlq.esm.js";import"./beam-partner-logos.esm.js";import"../chunks/localize-GCkVUD8S.esm.js";import"../chunks/css-card-grid-3b56QBzq.esm.js";import"../chunks/vendor-eeJfrOkP.esm.js";import"../chunks/is-all-html-elements-SdSkxirh.esm.js";import"../chunks/responsive-LYEag6TI.esm.js";var T=Object.defineProperty,E=Object.getOwnPropertyDescriptor,e=(d,r,i,n)=>{for(var a=n>1?void 0:n?E(r,i):r,p=d.length-1,c;p>=0;p--)(c=d[p])&&(a=(n?c(r,i,a):c(a))||a);return n&&a&&T(r,i,a),a};const m=["baseUrl","apiKey","orderId","cartTotal","currencyCode","lang"],N=["storeId","postalCode","countryCode","cart","discountCodes","email","partnerUserId"];class t extends y{constructor(){super(...arguments),this.baseUrl=$,this.currencyCode="USD",this.lang="en",this.debug=!1,this.activeWidget=null,this.nonprofitId=null,this.selectionId=null,this.cartId=null,this.beamCartId=null,this.userId=null,this.transactionId=null,this.localStorage=S(this),this.handlePostTransaction=async()=>{if(this.enforceConfig(),!this.storeId&&this.postalCode&&this.countryCode){const i=await w({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{postalCode:this.postalCode,countryCode:this.countryCode,widgetName:"redeem-transaction",version:"1.0.0"}});this.storeId=i.store?.id}const r=await A({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{nonprofitId:this.nonprofitId??void 0,selectionId:this.selectionId??void 0,cartId:this.cartId??void 0,beamCartId:this.beamCartId??void 0,storeId:this.storeId,orderId:this.orderId,cartTotal:this.cartTotal,email:this.email,partnerUserId:this.partnerUserId,currencyCode:this.currencyCode,postalCode:this.postalCode,countryCode:this.countryCode,cart:this.cart,discountCodes:this.discountCodes}});return this.transactionId=r.transactionId,this.userId=r.beamUserId,this.nonprofitId=r.nonprofitId,this.nonprofitId?this.activeWidget="impact-overview":this.activeWidget="redeem-transaction",this.localStorage.removeItem("transaction"),this.localStorage.removeItem("cart"),u({name:h,path:"/",domain:this.domain}),r.transactionCreated&&dispatchEvent(new K({transactionId:r.transactionId,orderId:this.orderId,cartTotal:this.cartTotal,currencyCode:this.currencyCode})),r},this.transactionDataController=new b(this,this.handlePostTransaction)}firstUpdated(r){this.enforceConfig(),this.nonprofitId=Number(this.localStorage.getItem("nonprofit"))||null,this.selectionId=this.localStorage.getItem("transaction")||null,this.cartId=this.localStorage.getItemJson("cart")?.cartId||null,this.beamCartId=g(h)||null,this.selectionId&&this.nonprofitId&&(this.activeWidget="impact-overview")}async updated(r){[...m,...N].some(i=>r.has(i))&&await this.transactionDataController.exec()}enforceConfig(){if(v(m,this),!this.email&&!this.partnerUserId)throw new I([this.email?"":"email",this.partnerUserId?"":"partnerUserId"].filter(Boolean),"At least one of [email, partnerUserId] must be provided")}render(){return this.transactionDataController.loading?"":this.transactionDataController.error?this.debug?U({error:this.transactionDataController.error}):"":this.activeWidget==="redeem-transaction"?l`
1
+ import{g as o,t as s,h as I,y as l}from"../chunks/lit-yVXn5Cbs.esm.js";import{M as y}from"../chunks/beam-errors-P-Lu07Ce.esm.js";import{deleteCookieValue as u,getCookieValue as g}from"../utils/cookies.esm.js";import{c as C,d as f,A as b,e as v,_ as U}from"../chunks/enforce-config-qna7hEL6.esm.js";import{createScopedLocalStorage as S}from"../utils/local-storage.esm.js";import{D as $,b as w}from"../chunks/routes-LFjgVNGB.esm.js";import"./redeem-transaction.esm.js";import"./impact-overview.esm.js";import{B as h}from"../chunks/cart-contents-h60geKWa.esm.js";import{b as T}from"../chunks/events-Y8fYvSqM.esm.js";import"../utils/logger.esm.js";import"../chunks/lodash-P8OIs-at.esm.js";import"../chunks/progress-bar-7gWYaGlq.esm.js";import"./beam-partner-logos.esm.js";import"../chunks/localize-GCkVUD8S.esm.js";import"../chunks/css-card-grid-3b56QBzq.esm.js";import"../chunks/vendor-eeJfrOkP.esm.js";import"../chunks/is-all-html-elements-SdSkxirh.esm.js";import"../chunks/responsive-LYEag6TI.esm.js";var A=Object.defineProperty,D=Object.getOwnPropertyDescriptor,e=(d,r,i,n)=>{for(var a=n>1?void 0:n?D(r,i):r,p=d.length-1,c;p>=0;p--)(c=d[p])&&(a=(n?c(r,i,a):c(a))||a);return n&&a&&A(r,i,a),a};const m=["baseUrl","apiKey","orderId","cartTotal","currencyCode","lang"],E=["storeId","postalCode","countryCode","cart","discountCodes","email","partnerUserId"];class t extends I{constructor(){super(...arguments),this.baseUrl=$,this.currencyCode="USD",this.lang="en",this.debug=!1,this.activeWidget=null,this.nonprofitId=null,this.selectionId=null,this.cartId=null,this.beamCartId=null,this.userId=null,this.transactionId=null,this.localStorage=S(this),this.handlePostTransaction=async()=>{this.enforceConfig();const r=await w({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{nonprofitId:this.nonprofitId||void 0,selectionId:this.selectionId||void 0,cartId:this.cartId||void 0,beamCartId:this.beamCartId||void 0,storeId:this.storeId,orderId:this.orderId,cartTotal:this.cartTotal,email:this.email,partnerUserId:this.partnerUserId,currencyCode:this.currencyCode,postalCode:this.postalCode,countryCode:this.countryCode,cart:this.cart,discountCodes:this.discountCodes}});return this.transactionId=r.transactionId,this.userId=r.beamUserId,this.nonprofitId=r.nonprofitId,this.activeWidget=this.nonprofitId?"impact-overview":"redeem-transaction",this.localStorage.removeItem("transaction"),this.localStorage.removeItem("cart"),u({name:h,path:"/",domain:this.domain}),r.transactionCreated&&dispatchEvent(new T({transactionId:r.transactionId,orderId:this.orderId,cartTotal:this.cartTotal,currencyCode:this.currencyCode})),r},this.transactionDataController=new b(this,this.handlePostTransaction)}firstUpdated(r){this.enforceConfig(),this.nonprofitId=Number(this.localStorage.getItem("nonprofit"))||null,this.selectionId=this.localStorage.getItem("transaction")||null,this.cartId=this.localStorage.getItemJson("cart")?.cartId||null,this.beamCartId=g(h)||null,this.selectionId&&this.nonprofitId&&(this.activeWidget="impact-overview")}async updated(r){[...m,...E].some(i=>r.has(i))&&await this.transactionDataController.exec()}enforceConfig(){if(v(m,this),!this.email&&!this.partnerUserId)throw new y([this.email?"":"email",this.partnerUserId?"":"partnerUserId"].filter(Boolean),"At least one of [email, partnerUserId] must be provided")}render(){return this.transactionDataController.loading?"":this.transactionDataController.error?this.debug?U({error:this.transactionDataController.error}):"":this.activeWidget==="redeem-transaction"?l`
2
2
  <beam-redeem-transaction
3
3
  part="redeem-transaction"
4
4
  baseUrl="${this.baseUrl}"
5
5
  apiKey="${this.apiKey}"
6
6
  storeId="${this.storeId}"
7
+ postalCode="${this.postalCode}"
8
+ countryCode="${this.countryCode}"
7
9
  transactionId="${this.transactionId}"
8
10
  cart="${JSON.stringify(this.cart)}"
9
11
  lang="${this.lang}"
@@ -1 +1 @@
1
- {"version":3,"file":"post-purchase.esm.js","sources":["../../src/components/post-purchase/index.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { deleteCookieValue, getCookieValue } from \"../../utils/cookies\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport { postTransaction, postChainEligibleNonprofitsForCart } from \"../../api-sdk/v3/routes\";\nimport \"../redeem-transaction\";\nimport \"../impact-overview\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { BeamNonprofitSelectEvent, BeamOrderCreatedEvent } from \"../../utils/events\";\n\nconst REQUIRED_DATA_PROPS = [\"baseUrl\", \"apiKey\", \"orderId\", \"cartTotal\", \"currencyCode\", \"lang\"];\nconst OPTIONAL_DATA_PROPS = [\"storeId\", \"postalCode\", \"countryCode\", \"cart\", \"discountCodes\", \"email\", \"partnerUserId\"];\n\nexport class BeamPostPurchase extends LitElement {\n static tagName = \"beam-post-purchase\";\n\n @property({ type: String })\n public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String })\n public apiKey!: string;\n\n @property({ type: Number, reflect: true })\n public storeId?: number; // Either storeId or postalCode, countryCode must be provided\n\n @property({ type: String })\n public postalCode?: string;\n\n @property({ type: String })\n public countryCode?: string;\n\n @property({ type: String })\n public orderId!: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public email?: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public partnerUserId?: string;\n\n @property({ type: Number })\n public cartTotal!: number;\n\n @property({ type: String })\n public currencyCode = \"USD\";\n\n @property({ type: String })\n public lang: LANGUAGES = \"en\";\n\n @property({ type: Object })\n public cart?: TCart;\n\n @property({ type: Array })\n public discountCodes?: string[];\n\n @property({ type: String })\n public domain?: string;\n\n @property({ type: Boolean })\n public debug = false;\n\n @state() private activeWidget: \"redeem-transaction\" | \"impact-overview\" | null = null; // wait for postTransaction\n @state() private nonprofitId: number | null = null; // from localStorage or redeem-transaction result\n @state() private selectionId: string | null = null; // from localStorage\n @state() private cartId: string | null = null; // from localStorage, external cart ID\n @state() private beamCartId: string | null = null; // from cookie, Beam cart ID\n @state() private userId: string | null = null; // from postTransaction\n @state() private transactionId: string | null = null; // from postTransaction\n\n private localStorage = createScopedLocalStorage(this);\n\n firstUpdated(_changedProperties: PropertyValues) {\n this.enforceConfig();\n this.nonprofitId = Number(this.localStorage.getItem(\"nonprofit\")) || null;\n this.selectionId = this.localStorage.getItem(\"transaction\") || null;\n this.cartId = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\")?.cartId || null;\n // Reading beamCartId from cookies instead of localStorage allows it to work across subdomains\n this.beamCartId = getCookieValue(BEAM_CART_COOKIE_NAME) || null;\n\n if (this.selectionId && this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n }\n\n async updated(previousPropertyValues: PropertyValues) {\n // Also fires on first load as props go from undefined => value\n const refreshOnChangeProps = [...REQUIRED_DATA_PROPS, ...OPTIONAL_DATA_PROPS];\n if (refreshOnChangeProps.some((p) => previousPropertyValues.has(p))) {\n await this.transactionDataController.exec();\n }\n }\n\n enforceConfig() {\n enforceConfig(REQUIRED_DATA_PROPS, this);\n\n if (!this.email && !this.partnerUserId) {\n throw new MissingConfig(\n [this.email ? \"\" : \"email\", this.partnerUserId ? \"\" : \"partnerUserId\"].filter(Boolean),\n \"At least one of [email, partnerUserId] must be provided\"\n );\n }\n }\n\n handlePostTransaction = async () => {\n this.enforceConfig();\n\n // Find storeId from postalCode + countryCode if it is not set\n if (!this.storeId && this.postalCode && this.countryCode) {\n const res = await postChainEligibleNonprofitsForCart({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n widgetName: \"redeem-transaction\",\n version: \"1.0.0\",\n },\n });\n this.storeId = res.store?.id;\n }\n\n const result = await postTransaction({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n nonprofitId: this.nonprofitId ?? undefined,\n selectionId: this.selectionId ?? undefined,\n cartId: this.cartId ?? undefined,\n beamCartId: this.beamCartId ?? undefined,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n storeId: this.storeId!,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n email: this.email, // One or both of email & partnerUserId should be defined\n partnerUserId: this.partnerUserId, // One or both of email & partnerUserId should be defined\n currencyCode: this.currencyCode,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n cart: this.cart,\n discountCodes: this.discountCodes,\n },\n });\n\n this.transactionId = result.transactionId;\n this.userId = result.beamUserId;\n this.nonprofitId = result.nonprofitId;\n\n if (this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n } else {\n this.activeWidget = \"redeem-transaction\";\n }\n\n this.localStorage.removeItem(\"transaction\");\n this.localStorage.removeItem(\"cart\");\n deleteCookieValue({ name: BEAM_CART_COOKIE_NAME, path: \"/\", domain: this.domain });\n\n // Emit order created event only when order is registered with Beam for the first time\n if (result.transactionCreated) {\n dispatchEvent(\n new BeamOrderCreatedEvent({\n transactionId: result.transactionId,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n currencyCode: this.currencyCode,\n })\n );\n }\n\n return result;\n };\n\n private transactionDataController = new AsyncController<typeof this.handlePostTransaction>(\n this,\n this.handlePostTransaction\n );\n\n render() {\n if (this.transactionDataController.loading) {\n return \"\";\n }\n if (this.transactionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.transactionDataController.error });\n }\n return \"\";\n }\n if (this.activeWidget === \"redeem-transaction\") {\n return html`\n <beam-redeem-transaction\n part=\"redeem-transaction\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n storeId=\"${this.storeId}\"\n transactionId=\"${this.transactionId}\"\n cart=\"${JSON.stringify(this.cart)}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n @beamnonprofitselect=\"${(event: Event) => {\n if (!(event instanceof CustomEvent)) return; // TS guard\n const { selectedNonprofitId } = (event as BeamNonprofitSelectEvent).detail;\n this.nonprofitId = selectedNonprofitId ?? null;\n this.activeWidget = \"impact-overview\";\n }}\"\n ></beam-redeem-transaction>\n `;\n }\n if (this.activeWidget === \"impact-overview\") {\n return html`\n <beam-impact-overview\n part=\"impact-overview\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n userId=\"${this.userId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n ></beam-impact-overview>\n `;\n }\n return \"\";\n }\n\n static styles = [cssReset];\n}\n\ndefineCustomElement(BeamPostPurchase);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-post-purchase\": BeamPostPurchase;\n }\n}\n"],"names":["REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","res","postChainEligibleNonprofitsForCart","result","postTransaction","deleteCookieValue","BEAM_CART_COOKIE_NAME","BeamOrderCreatedEvent","AsyncController","_changedProperties","getCookieValue","previousPropertyValues","p","enforceConfig","MissingConfig","_errorMessage","html","event","selectedNonprofitId","cssReset","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
1
+ {"version":3,"file":"post-purchase.esm.js","sources":["../../src/components/post-purchase/index.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { deleteCookieValue, getCookieValue } from \"../../utils/cookies\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport { postTransaction } from \"../../api-sdk/v3/routes\";\nimport \"../redeem-transaction\";\nimport \"../impact-overview\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { BeamNonprofitSelectEvent, BeamOrderCreatedEvent } from \"../../utils/events\";\n\nconst REQUIRED_DATA_PROPS = [\"baseUrl\", \"apiKey\", \"orderId\", \"cartTotal\", \"currencyCode\", \"lang\"];\nconst OPTIONAL_DATA_PROPS = [\"storeId\", \"postalCode\", \"countryCode\", \"cart\", \"discountCodes\", \"email\", \"partnerUserId\"];\n\nexport class BeamPostPurchase extends LitElement {\n static tagName = \"beam-post-purchase\";\n\n @property({ type: String })\n public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String })\n public apiKey!: string;\n\n @property({ type: Number, reflect: true })\n public storeId?: number; // Either storeId or postalCode, countryCode must be provided\n\n @property({ type: String })\n public postalCode?: string;\n\n @property({ type: String })\n public countryCode?: string;\n\n @property({ type: String })\n public orderId!: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public email?: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public partnerUserId?: string;\n\n @property({ type: Number })\n public cartTotal!: number;\n\n @property({ type: String })\n public currencyCode = \"USD\";\n\n @property({ type: String })\n public lang: LANGUAGES = \"en\";\n\n @property({ type: Object })\n public cart?: TCart;\n\n @property({ type: Array })\n public discountCodes?: string[];\n\n @property({ type: String })\n public domain?: string;\n\n @property({ type: Boolean })\n public debug = false;\n\n @state() private activeWidget: \"redeem-transaction\" | \"impact-overview\" | null = null; // wait for postTransaction\n @state() private nonprofitId: number | null = null; // from localStorage or redeem-transaction result\n @state() private selectionId: string | null = null; // from localStorage\n @state() private cartId: string | null = null; // from localStorage, external cart ID\n @state() private beamCartId: string | null = null; // from cookie, Beam cart ID\n @state() private userId: string | null = null; // from postTransaction\n @state() private transactionId: string | null = null; // from postTransaction\n\n private localStorage = createScopedLocalStorage(this);\n\n firstUpdated(_changedProperties: PropertyValues) {\n this.enforceConfig();\n this.nonprofitId = Number(this.localStorage.getItem(\"nonprofit\")) || null;\n this.selectionId = this.localStorage.getItem(\"transaction\") || null;\n this.cartId = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\")?.cartId || null;\n // Reading beamCartId from cookies instead of localStorage allows it to work across subdomains\n this.beamCartId = getCookieValue(BEAM_CART_COOKIE_NAME) || null;\n\n if (this.selectionId && this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n }\n\n async updated(previousPropertyValues: PropertyValues) {\n // Also fires on first load as props go from undefined => value\n const refreshOnChangeProps = [...REQUIRED_DATA_PROPS, ...OPTIONAL_DATA_PROPS];\n if (refreshOnChangeProps.some((p) => previousPropertyValues.has(p))) {\n await this.transactionDataController.exec();\n }\n }\n\n enforceConfig() {\n enforceConfig(REQUIRED_DATA_PROPS, this);\n\n if (!this.email && !this.partnerUserId) {\n throw new MissingConfig(\n [this.email ? \"\" : \"email\", this.partnerUserId ? \"\" : \"partnerUserId\"].filter(Boolean),\n \"At least one of [email, partnerUserId] must be provided\"\n );\n }\n }\n\n handlePostTransaction = async () => {\n this.enforceConfig();\n const result = await postTransaction({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n nonprofitId: this.nonprofitId || undefined,\n selectionId: this.selectionId || undefined,\n cartId: this.cartId || undefined,\n beamCartId: this.beamCartId || undefined,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n storeId: this.storeId,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n email: this.email, // One or both of email & partnerUserId should be defined\n partnerUserId: this.partnerUserId, // One or both of email & partnerUserId should be defined\n currencyCode: this.currencyCode,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n cart: this.cart,\n discountCodes: this.discountCodes,\n },\n });\n\n this.transactionId = result.transactionId;\n this.userId = result.beamUserId;\n this.nonprofitId = result.nonprofitId;\n\n this.activeWidget = this.nonprofitId ? \"impact-overview\" : \"redeem-transaction\";\n\n this.localStorage.removeItem(\"transaction\");\n this.localStorage.removeItem(\"cart\");\n deleteCookieValue({ name: BEAM_CART_COOKIE_NAME, path: \"/\", domain: this.domain });\n\n // Emit order created event only when order is registered with Beam for the first time\n if (result.transactionCreated) {\n dispatchEvent(\n new BeamOrderCreatedEvent({\n transactionId: result.transactionId,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n currencyCode: this.currencyCode,\n })\n );\n }\n return result;\n };\n\n private transactionDataController = new AsyncController<typeof this.handlePostTransaction>(\n this,\n this.handlePostTransaction\n );\n\n render() {\n if (this.transactionDataController.loading) {\n return \"\";\n }\n if (this.transactionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.transactionDataController.error });\n }\n return \"\";\n }\n if (this.activeWidget === \"redeem-transaction\") {\n return html`\n <beam-redeem-transaction\n part=\"redeem-transaction\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n storeId=\"${this.storeId}\"\n postalCode=\"${this.postalCode}\"\n countryCode=\"${this.countryCode}\"\n transactionId=\"${this.transactionId}\"\n cart=\"${JSON.stringify(this.cart)}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n @beamnonprofitselect=\"${(event: Event) => {\n if (!(event instanceof CustomEvent)) return; // TS guard\n const { selectedNonprofitId } = (event as BeamNonprofitSelectEvent).detail;\n this.nonprofitId = selectedNonprofitId ?? null;\n this.activeWidget = \"impact-overview\";\n }}\"\n ></beam-redeem-transaction>\n `;\n }\n if (this.activeWidget === \"impact-overview\") {\n return html`\n <beam-impact-overview\n part=\"impact-overview\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n userId=\"${this.userId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n ></beam-impact-overview>\n `;\n }\n return \"\";\n }\n\n static styles = [cssReset];\n}\n\ndefineCustomElement(BeamPostPurchase);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-post-purchase\": BeamPostPurchase;\n }\n}\n"],"names":["REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","result","postTransaction","deleteCookieValue","BEAM_CART_COOKIE_NAME","BeamOrderCreatedEvent","AsyncController","_changedProperties","getCookieValue","previousPropertyValues","p","enforceConfig","MissingConfig","_errorMessage","html","event","selectedNonprofitId","cssReset","__decorateClass","property","state","defineCustomElement"],"mappings":"wqCAmBA,MAAMA,EAAsB,CAAC,UAAW,SAAU,UAAW,YAAa,eAAgB,MAAM,EAC1FC,EAAsB,CAAC,UAAW,aAAc,cAAe,OAAQ,gBAAiB,QAAS,eAAe,EAE/G,MAAMC,UAAyBC,CAAW,CAA1C,kCAIL,KAAO,QAAkBC,EAiCzB,KAAO,aAAe,MAGtB,KAAO,KAAkB,KAYzB,KAAO,MAAQ,GAEN,KAAQ,aAAgE,KACxE,KAAQ,YAA6B,KACrC,KAAQ,YAA6B,KACrC,KAAQ,OAAwB,KAChC,KAAQ,WAA4B,KACpC,KAAQ,OAAwB,KAChC,KAAQ,cAA+B,KAEhD,KAAQ,aAAeC,EAAyB,IAAI,EAkCpD,KAAwB,sBAAA,SAAY,CAClC,KAAK,gBACL,MAAMC,EAAS,MAAMC,EAAgB,CACnC,QAAS,KAAK,QACd,QAAS,CACP,cAAe,WAAW,KAAK,MAAM,EACvC,EACA,YAAa,CACX,YAAa,KAAK,aAAe,OACjC,YAAa,KAAK,aAAe,OACjC,OAAQ,KAAK,QAAU,OACvB,WAAY,KAAK,YAAc,OAE/B,QAAS,KAAK,QACd,QAAS,KAAK,QACd,UAAW,KAAK,UAChB,MAAO,KAAK,MACZ,cAAe,KAAK,cACpB,aAAc,KAAK,aACnB,WAAY,KAAK,WACjB,YAAa,KAAK,YAClB,KAAM,KAAK,KACX,cAAe,KAAK,aACtB,CACF,CAAC,EAED,OAAK,KAAA,cAAgBD,EAAO,cAC5B,KAAK,OAASA,EAAO,WACrB,KAAK,YAAcA,EAAO,YAE1B,KAAK,aAAe,KAAK,YAAc,kBAAoB,qBAE3D,KAAK,aAAa,WAAW,aAAa,EAC1C,KAAK,aAAa,WAAW,MAAM,EACnCE,EAAkB,CAAE,KAAMC,EAAuB,KAAM,IAAK,OAAQ,KAAK,MAAO,CAAC,EAG7EH,EAAO,oBACT,cACE,IAAII,EAAsB,CACxB,cAAeJ,EAAO,cACtB,QAAS,KAAK,QACd,UAAW,KAAK,UAChB,aAAc,KAAK,YACrB,CAAC,CACH,EAEKA,CACT,EAEA,KAAQ,0BAA4B,IAAIK,EACtC,KACA,KAAK,qBACP,CArFA,CAAA,aAAaC,EAAoC,CAC/C,KAAK,gBACL,KAAK,YAAc,OAAO,KAAK,aAAa,QAAQ,WAAW,CAAC,GAAK,KACrE,KAAK,YAAc,KAAK,aAAa,QAAQ,aAAa,GAAK,KAC/D,KAAK,OAAS,KAAK,aAAa,YAAmC,MAAM,GAAG,QAAU,KAEtF,KAAK,WAAaC,EAAeJ,CAAqB,GAAK,KAEvD,KAAK,aAAe,KAAK,cAC3B,KAAK,aAAe,kBAExB,CAEA,MAAM,QAAQK,EAAwC,CAEvB,CAAC,GAAGd,EAAqB,GAAGC,CAAmB,EACnD,KAAMc,GAAMD,EAAuB,IAAIC,CAAC,CAAC,GAChE,MAAM,KAAK,0BAA0B,KAEzC,CAAA,CAEA,eAAgB,CAGd,GAFAC,EAAchB,EAAqB,IAAI,EAEnC,CAAC,KAAK,OAAS,CAAC,KAAK,cACvB,MAAM,IAAIiB,EACR,CAAC,KAAK,MAAQ,GAAK,QAAS,KAAK,cAAgB,GAAK,eAAe,EAAE,OAAO,OAAO,EACrF,yDACF,CAEJ,CAyDA,QAAS,CACP,OAAI,KAAK,0BAA0B,QAC1B,GAEL,KAAK,0BAA0B,MAC7B,KAAK,MACAC,EAAc,CAAE,MAAO,KAAK,0BAA0B,KAAM,CAAC,EAE/D,GAEL,KAAK,eAAiB,qBACjBC;AAAAA;AAAAA;AAAAA,qBAGQ,KAAK,OAAO;AAAA,oBACb,KAAK,MAAM;AAAA,qBACV,KAAK,OAAO;AAAA,wBACT,KAAK,UAAU;AAAA,yBACd,KAAK,WAAW;AAAA,2BACd,KAAK,aAAa;AAAA,kBAC3B,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA,kBACzB,KAAK,IAAI;AAAA,oBACP,KAAK,KAAK;AAAA,kCACKC,GAAiB,CACxC,GAAI,EAAEA,aAAiB,aAAc,OACrC,KAAM,CAAE,oBAAAC,CAAoB,EAAKD,EAAmC,OACpE,KAAK,YAAcC,GAAuB,KAC1C,KAAK,aAAe,iBACtB,CAAC;AAAA;AAAA,QAIH,KAAK,eAAiB,kBACjBF;AAAAA;AAAAA;AAAAA,qBAGQ,KAAK,OAAO;AAAA,oBACb,KAAK,MAAM;AAAA,oBACX,KAAK,MAAM;AAAA,yBACN,KAAK,WAAW;AAAA,kBACvB,KAAK,IAAI;AAAA,oBACP,KAAK,KAAK;AAAA;AAAA,QAInB,EACT,CAGF,CAxMajB,EACJ,QAAU,qBADNA,EAuMJ,OAAS,CAACoB,CAAQ,EAnMlBC,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAHf,EAAAtB,EAIJ,UAGAqB,UAAAA,CAAAA,EAAAA,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CANf,EAAAtB,EAOJ,sBAGAqB,EAAA,CADNC,EAAS,CAAE,KAAM,OAAQ,QAAS,EAAK,CAAC,GAT9BtB,EAUJ,UAAA,UAAA,CAAA,EAGAqB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,GAZftB,EAaJ,UAAA,aAAA,CAAA,EAGAqB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAAA,EAfftB,EAgBJ,UAAA,cAAA,CAAA,EAGAqB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAlBf,EAAAtB,EAmBJ,UAMAqB,UAAAA,CAAAA,EAAAA,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAxBf,EAAAtB,EAyBJ,qBAMAqB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CA9Bf,EAAAtB,EA+BJ,UAGAqB,gBAAAA,CAAAA,EAAAA,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAAA,EAjCftB,EAkCJ,UAAA,YAAA,CAAA,EAGAqB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CApCf,EAAAtB,EAqCJ,UAGAqB,eAAAA,CAAAA,EAAAA,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAvCf,EAAAtB,EAwCJ,oBAGAqB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CA1Cf,EAAAtB,EA2CJ,oBAGAqB,EAAA,CADNC,EAAS,CAAE,KAAM,KAAM,CAAC,CA7Cd,EAAAtB,EA8CJ,6BAGAqB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAAA,EAhDftB,EAiDJ,UAAA,SAAA,CAAA,EAGAqB,EAAA,CADNC,EAAS,CAAE,KAAM,OAAQ,CAAC,CAAA,EAnDhBtB,EAoDJ,UAEUqB,QAAAA,CAAAA,EAAAA,EAAA,CAAhBE,EAAAA,CAtDU,EAAAvB,EAsDM,4BACAqB,EAAA,CAAhBE,GAvDU,EAAAvB,EAuDM,2BACAqB,EAAA,CAAhBE,EAAM,CAAA,EAxDIvB,EAwDM,UAAA,cAAA,CAAA,EACAqB,EAAA,CAAhBE,EAAAA,GAzDUvB,EAyDM,UAAA,SAAA,CAAA,EACAqB,EAAA,CAAhBE,EA1DU,CAAA,EAAAvB,EA0DM,UACAqB,aAAAA,CAAAA,EAAAA,EAAA,CAAhBE,EAAM,CAAA,EA3DIvB,EA2DM,UAAA,SAAA,CAAA,EACAqB,EAAA,CAAhBE,EA5DU,CAAA,EAAAvB,EA4DM,UA8InBwB,gBAAAA,CAAAA,EAAAA,EAAoBxB,CAAgB"}
@@ -1,9 +1,11 @@
1
- import{g as o,t as s,h as y,y as l}from"../chunks/lit-yVXn5Cbs.esm.js";import{M as I}from"../chunks/beam-errors-P-Lu07Ce.esm.js";import{deleteCookieValue as u,getCookieValue as g}from"../utils/cookies.js";import{c as C,d as f,A as b,e as v,_ as U}from"../chunks/enforce-config-fo8kIfoY.esm.js";import{createScopedLocalStorage as S}from"../utils/local-storage.js";import{D as $,b as w,c as A}from"../chunks/routes-fBXLZ-QV.esm.js";import"./redeem-transaction.js";import"./impact-overview.js";import{B as h}from"../chunks/cart-contents-h60geKWa.esm.js";import{b as K}from"../chunks/events-5IECSF-x.esm.js";import"../utils/logger.js";import"../chunks/lodash-P8OIs-at.esm.js";import"../chunks/progress-bar-7gWYaGlq.esm.js";import"./beam-partner-logos.js";import"../chunks/localize-pzAAkBvG.esm.js";import"../chunks/css-card-grid-3b56QBzq.esm.js";import"../chunks/vendor-eeJfrOkP.esm.js";import"../chunks/is-all-html-elements-SdSkxirh.esm.js";import"../chunks/responsive-LYEag6TI.esm.js";var T=Object.defineProperty,E=Object.getOwnPropertyDescriptor,e=(d,r,i,n)=>{for(var a=n>1?void 0:n?E(r,i):r,p=d.length-1,c;p>=0;p--)(c=d[p])&&(a=(n?c(r,i,a):c(a))||a);return n&&a&&T(r,i,a),a};const m=["baseUrl","apiKey","orderId","cartTotal","currencyCode","lang"],N=["storeId","postalCode","countryCode","cart","discountCodes","email","partnerUserId"];class t extends y{constructor(){super(...arguments),this.baseUrl=$,this.currencyCode="USD",this.lang="en",this.debug=!1,this.activeWidget=null,this.nonprofitId=null,this.selectionId=null,this.cartId=null,this.beamCartId=null,this.userId=null,this.transactionId=null,this.localStorage=S(this),this.handlePostTransaction=async()=>{if(this.enforceConfig(),!this.storeId&&this.postalCode&&this.countryCode){const i=await w({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{postalCode:this.postalCode,countryCode:this.countryCode,widgetName:"redeem-transaction",version:"1.0.0"}});this.storeId=i.store?.id}const r=await A({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{nonprofitId:this.nonprofitId??void 0,selectionId:this.selectionId??void 0,cartId:this.cartId??void 0,beamCartId:this.beamCartId??void 0,storeId:this.storeId,orderId:this.orderId,cartTotal:this.cartTotal,email:this.email,partnerUserId:this.partnerUserId,currencyCode:this.currencyCode,postalCode:this.postalCode,countryCode:this.countryCode,cart:this.cart,discountCodes:this.discountCodes}});return this.transactionId=r.transactionId,this.userId=r.beamUserId,this.nonprofitId=r.nonprofitId,this.nonprofitId?this.activeWidget="impact-overview":this.activeWidget="redeem-transaction",this.localStorage.removeItem("transaction"),this.localStorage.removeItem("cart"),u({name:h,path:"/",domain:this.domain}),r.transactionCreated&&dispatchEvent(new K({transactionId:r.transactionId,orderId:this.orderId,cartTotal:this.cartTotal,currencyCode:this.currencyCode})),r},this.transactionDataController=new b(this,this.handlePostTransaction)}firstUpdated(r){this.enforceConfig(),this.nonprofitId=Number(this.localStorage.getItem("nonprofit"))||null,this.selectionId=this.localStorage.getItem("transaction")||null,this.cartId=this.localStorage.getItemJson("cart")?.cartId||null,this.beamCartId=g(h)||null,this.selectionId&&this.nonprofitId&&(this.activeWidget="impact-overview")}async updated(r){[...m,...N].some(i=>r.has(i))&&await this.transactionDataController.exec()}enforceConfig(){if(v(m,this),!this.email&&!this.partnerUserId)throw new I([this.email?"":"email",this.partnerUserId?"":"partnerUserId"].filter(Boolean),"At least one of [email, partnerUserId] must be provided")}render(){return this.transactionDataController.loading?"":this.transactionDataController.error?this.debug?U({error:this.transactionDataController.error}):"":this.activeWidget==="redeem-transaction"?l`
1
+ import{g as o,t as s,h as I,y as l}from"../chunks/lit-yVXn5Cbs.esm.js";import{M as y}from"../chunks/beam-errors-P-Lu07Ce.esm.js";import{deleteCookieValue as u,getCookieValue as g}from"../utils/cookies.js";import{c as C,d as f,A as b,e as v,_ as U}from"../chunks/enforce-config-fo8kIfoY.esm.js";import{createScopedLocalStorage as S}from"../utils/local-storage.js";import{D as $,b as w}from"../chunks/routes-ad0I3Ayc.esm.js";import"./redeem-transaction.js";import"./impact-overview.js";import{B as h}from"../chunks/cart-contents-h60geKWa.esm.js";import{b as T}from"../chunks/events-Y8fYvSqM.esm.js";import"../utils/logger.js";import"../chunks/lodash-P8OIs-at.esm.js";import"../chunks/progress-bar-7gWYaGlq.esm.js";import"./beam-partner-logos.js";import"../chunks/localize-pzAAkBvG.esm.js";import"../chunks/css-card-grid-3b56QBzq.esm.js";import"../chunks/vendor-eeJfrOkP.esm.js";import"../chunks/is-all-html-elements-SdSkxirh.esm.js";import"../chunks/responsive-LYEag6TI.esm.js";var A=Object.defineProperty,D=Object.getOwnPropertyDescriptor,e=(d,r,i,n)=>{for(var a=n>1?void 0:n?D(r,i):r,p=d.length-1,c;p>=0;p--)(c=d[p])&&(a=(n?c(r,i,a):c(a))||a);return n&&a&&A(r,i,a),a};const m=["baseUrl","apiKey","orderId","cartTotal","currencyCode","lang"],E=["storeId","postalCode","countryCode","cart","discountCodes","email","partnerUserId"];class t extends I{constructor(){super(...arguments),this.baseUrl=$,this.currencyCode="USD",this.lang="en",this.debug=!1,this.activeWidget=null,this.nonprofitId=null,this.selectionId=null,this.cartId=null,this.beamCartId=null,this.userId=null,this.transactionId=null,this.localStorage=S(this),this.handlePostTransaction=async()=>{this.enforceConfig();const r=await w({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{nonprofitId:this.nonprofitId||void 0,selectionId:this.selectionId||void 0,cartId:this.cartId||void 0,beamCartId:this.beamCartId||void 0,storeId:this.storeId,orderId:this.orderId,cartTotal:this.cartTotal,email:this.email,partnerUserId:this.partnerUserId,currencyCode:this.currencyCode,postalCode:this.postalCode,countryCode:this.countryCode,cart:this.cart,discountCodes:this.discountCodes}});return this.transactionId=r.transactionId,this.userId=r.beamUserId,this.nonprofitId=r.nonprofitId,this.activeWidget=this.nonprofitId?"impact-overview":"redeem-transaction",this.localStorage.removeItem("transaction"),this.localStorage.removeItem("cart"),u({name:h,path:"/",domain:this.domain}),r.transactionCreated&&dispatchEvent(new T({transactionId:r.transactionId,orderId:this.orderId,cartTotal:this.cartTotal,currencyCode:this.currencyCode})),r},this.transactionDataController=new b(this,this.handlePostTransaction)}firstUpdated(r){this.enforceConfig(),this.nonprofitId=Number(this.localStorage.getItem("nonprofit"))||null,this.selectionId=this.localStorage.getItem("transaction")||null,this.cartId=this.localStorage.getItemJson("cart")?.cartId||null,this.beamCartId=g(h)||null,this.selectionId&&this.nonprofitId&&(this.activeWidget="impact-overview")}async updated(r){[...m,...E].some(i=>r.has(i))&&await this.transactionDataController.exec()}enforceConfig(){if(v(m,this),!this.email&&!this.partnerUserId)throw new y([this.email?"":"email",this.partnerUserId?"":"partnerUserId"].filter(Boolean),"At least one of [email, partnerUserId] must be provided")}render(){return this.transactionDataController.loading?"":this.transactionDataController.error?this.debug?U({error:this.transactionDataController.error}):"":this.activeWidget==="redeem-transaction"?l`
2
2
  <beam-redeem-transaction
3
3
  part="redeem-transaction"
4
4
  baseUrl="${this.baseUrl}"
5
5
  apiKey="${this.apiKey}"
6
6
  storeId="${this.storeId}"
7
+ postalCode="${this.postalCode}"
8
+ countryCode="${this.countryCode}"
7
9
  transactionId="${this.transactionId}"
8
10
  cart="${JSON.stringify(this.cart)}"
9
11
  lang="${this.lang}"
@@ -1 +1 @@
1
- {"version":3,"file":"post-purchase.js","sources":["../../src/components/post-purchase/index.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { deleteCookieValue, getCookieValue } from \"../../utils/cookies\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport { postTransaction, postChainEligibleNonprofitsForCart } from \"../../api-sdk/v3/routes\";\nimport \"../redeem-transaction\";\nimport \"../impact-overview\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { BeamNonprofitSelectEvent, BeamOrderCreatedEvent } from \"../../utils/events\";\n\nconst REQUIRED_DATA_PROPS = [\"baseUrl\", \"apiKey\", \"orderId\", \"cartTotal\", \"currencyCode\", \"lang\"];\nconst OPTIONAL_DATA_PROPS = [\"storeId\", \"postalCode\", \"countryCode\", \"cart\", \"discountCodes\", \"email\", \"partnerUserId\"];\n\nexport class BeamPostPurchase extends LitElement {\n static tagName = \"beam-post-purchase\";\n\n @property({ type: String })\n public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String })\n public apiKey!: string;\n\n @property({ type: Number, reflect: true })\n public storeId?: number; // Either storeId or postalCode, countryCode must be provided\n\n @property({ type: String })\n public postalCode?: string;\n\n @property({ type: String })\n public countryCode?: string;\n\n @property({ type: String })\n public orderId!: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public email?: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public partnerUserId?: string;\n\n @property({ type: Number })\n public cartTotal!: number;\n\n @property({ type: String })\n public currencyCode = \"USD\";\n\n @property({ type: String })\n public lang: LANGUAGES = \"en\";\n\n @property({ type: Object })\n public cart?: TCart;\n\n @property({ type: Array })\n public discountCodes?: string[];\n\n @property({ type: String })\n public domain?: string;\n\n @property({ type: Boolean })\n public debug = false;\n\n @state() private activeWidget: \"redeem-transaction\" | \"impact-overview\" | null = null; // wait for postTransaction\n @state() private nonprofitId: number | null = null; // from localStorage or redeem-transaction result\n @state() private selectionId: string | null = null; // from localStorage\n @state() private cartId: string | null = null; // from localStorage, external cart ID\n @state() private beamCartId: string | null = null; // from cookie, Beam cart ID\n @state() private userId: string | null = null; // from postTransaction\n @state() private transactionId: string | null = null; // from postTransaction\n\n private localStorage = createScopedLocalStorage(this);\n\n firstUpdated(_changedProperties: PropertyValues) {\n this.enforceConfig();\n this.nonprofitId = Number(this.localStorage.getItem(\"nonprofit\")) || null;\n this.selectionId = this.localStorage.getItem(\"transaction\") || null;\n this.cartId = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\")?.cartId || null;\n // Reading beamCartId from cookies instead of localStorage allows it to work across subdomains\n this.beamCartId = getCookieValue(BEAM_CART_COOKIE_NAME) || null;\n\n if (this.selectionId && this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n }\n\n async updated(previousPropertyValues: PropertyValues) {\n // Also fires on first load as props go from undefined => value\n const refreshOnChangeProps = [...REQUIRED_DATA_PROPS, ...OPTIONAL_DATA_PROPS];\n if (refreshOnChangeProps.some((p) => previousPropertyValues.has(p))) {\n await this.transactionDataController.exec();\n }\n }\n\n enforceConfig() {\n enforceConfig(REQUIRED_DATA_PROPS, this);\n\n if (!this.email && !this.partnerUserId) {\n throw new MissingConfig(\n [this.email ? \"\" : \"email\", this.partnerUserId ? \"\" : \"partnerUserId\"].filter(Boolean),\n \"At least one of [email, partnerUserId] must be provided\"\n );\n }\n }\n\n handlePostTransaction = async () => {\n this.enforceConfig();\n\n // Find storeId from postalCode + countryCode if it is not set\n if (!this.storeId && this.postalCode && this.countryCode) {\n const res = await postChainEligibleNonprofitsForCart({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n widgetName: \"redeem-transaction\",\n version: \"1.0.0\",\n },\n });\n this.storeId = res.store?.id;\n }\n\n const result = await postTransaction({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n nonprofitId: this.nonprofitId ?? undefined,\n selectionId: this.selectionId ?? undefined,\n cartId: this.cartId ?? undefined,\n beamCartId: this.beamCartId ?? undefined,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n storeId: this.storeId!,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n email: this.email, // One or both of email & partnerUserId should be defined\n partnerUserId: this.partnerUserId, // One or both of email & partnerUserId should be defined\n currencyCode: this.currencyCode,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n cart: this.cart,\n discountCodes: this.discountCodes,\n },\n });\n\n this.transactionId = result.transactionId;\n this.userId = result.beamUserId;\n this.nonprofitId = result.nonprofitId;\n\n if (this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n } else {\n this.activeWidget = \"redeem-transaction\";\n }\n\n this.localStorage.removeItem(\"transaction\");\n this.localStorage.removeItem(\"cart\");\n deleteCookieValue({ name: BEAM_CART_COOKIE_NAME, path: \"/\", domain: this.domain });\n\n // Emit order created event only when order is registered with Beam for the first time\n if (result.transactionCreated) {\n dispatchEvent(\n new BeamOrderCreatedEvent({\n transactionId: result.transactionId,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n currencyCode: this.currencyCode,\n })\n );\n }\n\n return result;\n };\n\n private transactionDataController = new AsyncController<typeof this.handlePostTransaction>(\n this,\n this.handlePostTransaction\n );\n\n render() {\n if (this.transactionDataController.loading) {\n return \"\";\n }\n if (this.transactionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.transactionDataController.error });\n }\n return \"\";\n }\n if (this.activeWidget === \"redeem-transaction\") {\n return html`\n <beam-redeem-transaction\n part=\"redeem-transaction\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n storeId=\"${this.storeId}\"\n transactionId=\"${this.transactionId}\"\n cart=\"${JSON.stringify(this.cart)}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n @beamnonprofitselect=\"${(event: Event) => {\n if (!(event instanceof CustomEvent)) return; // TS guard\n const { selectedNonprofitId } = (event as BeamNonprofitSelectEvent).detail;\n this.nonprofitId = selectedNonprofitId ?? null;\n this.activeWidget = \"impact-overview\";\n }}\"\n ></beam-redeem-transaction>\n `;\n }\n if (this.activeWidget === \"impact-overview\") {\n return html`\n <beam-impact-overview\n part=\"impact-overview\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n userId=\"${this.userId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n ></beam-impact-overview>\n `;\n }\n return \"\";\n }\n\n static styles = [cssReset];\n}\n\ndefineCustomElement(BeamPostPurchase);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-post-purchase\": BeamPostPurchase;\n }\n}\n"],"names":["REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","res","postChainEligibleNonprofitsForCart","result","postTransaction","deleteCookieValue","BEAM_CART_COOKIE_NAME","BeamOrderCreatedEvent","AsyncController","_changedProperties","getCookieValue","previousPropertyValues","p","enforceConfig","MissingConfig","_errorMessage","html","event","selectedNonprofitId","cssReset","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
1
+ {"version":3,"file":"post-purchase.js","sources":["../../src/components/post-purchase/index.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { deleteCookieValue, getCookieValue } from \"../../utils/cookies\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport { postTransaction } from \"../../api-sdk/v3/routes\";\nimport \"../redeem-transaction\";\nimport \"../impact-overview\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { BeamNonprofitSelectEvent, BeamOrderCreatedEvent } from \"../../utils/events\";\n\nconst REQUIRED_DATA_PROPS = [\"baseUrl\", \"apiKey\", \"orderId\", \"cartTotal\", \"currencyCode\", \"lang\"];\nconst OPTIONAL_DATA_PROPS = [\"storeId\", \"postalCode\", \"countryCode\", \"cart\", \"discountCodes\", \"email\", \"partnerUserId\"];\n\nexport class BeamPostPurchase extends LitElement {\n static tagName = \"beam-post-purchase\";\n\n @property({ type: String })\n public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String })\n public apiKey!: string;\n\n @property({ type: Number, reflect: true })\n public storeId?: number; // Either storeId or postalCode, countryCode must be provided\n\n @property({ type: String })\n public postalCode?: string;\n\n @property({ type: String })\n public countryCode?: string;\n\n @property({ type: String })\n public orderId!: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public email?: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public partnerUserId?: string;\n\n @property({ type: Number })\n public cartTotal!: number;\n\n @property({ type: String })\n public currencyCode = \"USD\";\n\n @property({ type: String })\n public lang: LANGUAGES = \"en\";\n\n @property({ type: Object })\n public cart?: TCart;\n\n @property({ type: Array })\n public discountCodes?: string[];\n\n @property({ type: String })\n public domain?: string;\n\n @property({ type: Boolean })\n public debug = false;\n\n @state() private activeWidget: \"redeem-transaction\" | \"impact-overview\" | null = null; // wait for postTransaction\n @state() private nonprofitId: number | null = null; // from localStorage or redeem-transaction result\n @state() private selectionId: string | null = null; // from localStorage\n @state() private cartId: string | null = null; // from localStorage, external cart ID\n @state() private beamCartId: string | null = null; // from cookie, Beam cart ID\n @state() private userId: string | null = null; // from postTransaction\n @state() private transactionId: string | null = null; // from postTransaction\n\n private localStorage = createScopedLocalStorage(this);\n\n firstUpdated(_changedProperties: PropertyValues) {\n this.enforceConfig();\n this.nonprofitId = Number(this.localStorage.getItem(\"nonprofit\")) || null;\n this.selectionId = this.localStorage.getItem(\"transaction\") || null;\n this.cartId = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\")?.cartId || null;\n // Reading beamCartId from cookies instead of localStorage allows it to work across subdomains\n this.beamCartId = getCookieValue(BEAM_CART_COOKIE_NAME) || null;\n\n if (this.selectionId && this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n }\n\n async updated(previousPropertyValues: PropertyValues) {\n // Also fires on first load as props go from undefined => value\n const refreshOnChangeProps = [...REQUIRED_DATA_PROPS, ...OPTIONAL_DATA_PROPS];\n if (refreshOnChangeProps.some((p) => previousPropertyValues.has(p))) {\n await this.transactionDataController.exec();\n }\n }\n\n enforceConfig() {\n enforceConfig(REQUIRED_DATA_PROPS, this);\n\n if (!this.email && !this.partnerUserId) {\n throw new MissingConfig(\n [this.email ? \"\" : \"email\", this.partnerUserId ? \"\" : \"partnerUserId\"].filter(Boolean),\n \"At least one of [email, partnerUserId] must be provided\"\n );\n }\n }\n\n handlePostTransaction = async () => {\n this.enforceConfig();\n const result = await postTransaction({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n nonprofitId: this.nonprofitId || undefined,\n selectionId: this.selectionId || undefined,\n cartId: this.cartId || undefined,\n beamCartId: this.beamCartId || undefined,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n storeId: this.storeId,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n email: this.email, // One or both of email & partnerUserId should be defined\n partnerUserId: this.partnerUserId, // One or both of email & partnerUserId should be defined\n currencyCode: this.currencyCode,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n cart: this.cart,\n discountCodes: this.discountCodes,\n },\n });\n\n this.transactionId = result.transactionId;\n this.userId = result.beamUserId;\n this.nonprofitId = result.nonprofitId;\n\n this.activeWidget = this.nonprofitId ? \"impact-overview\" : \"redeem-transaction\";\n\n this.localStorage.removeItem(\"transaction\");\n this.localStorage.removeItem(\"cart\");\n deleteCookieValue({ name: BEAM_CART_COOKIE_NAME, path: \"/\", domain: this.domain });\n\n // Emit order created event only when order is registered with Beam for the first time\n if (result.transactionCreated) {\n dispatchEvent(\n new BeamOrderCreatedEvent({\n transactionId: result.transactionId,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n currencyCode: this.currencyCode,\n })\n );\n }\n return result;\n };\n\n private transactionDataController = new AsyncController<typeof this.handlePostTransaction>(\n this,\n this.handlePostTransaction\n );\n\n render() {\n if (this.transactionDataController.loading) {\n return \"\";\n }\n if (this.transactionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.transactionDataController.error });\n }\n return \"\";\n }\n if (this.activeWidget === \"redeem-transaction\") {\n return html`\n <beam-redeem-transaction\n part=\"redeem-transaction\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n storeId=\"${this.storeId}\"\n postalCode=\"${this.postalCode}\"\n countryCode=\"${this.countryCode}\"\n transactionId=\"${this.transactionId}\"\n cart=\"${JSON.stringify(this.cart)}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n @beamnonprofitselect=\"${(event: Event) => {\n if (!(event instanceof CustomEvent)) return; // TS guard\n const { selectedNonprofitId } = (event as BeamNonprofitSelectEvent).detail;\n this.nonprofitId = selectedNonprofitId ?? null;\n this.activeWidget = \"impact-overview\";\n }}\"\n ></beam-redeem-transaction>\n `;\n }\n if (this.activeWidget === \"impact-overview\") {\n return html`\n <beam-impact-overview\n part=\"impact-overview\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n userId=\"${this.userId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n ></beam-impact-overview>\n `;\n }\n return \"\";\n }\n\n static styles = [cssReset];\n}\n\ndefineCustomElement(BeamPostPurchase);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-post-purchase\": BeamPostPurchase;\n }\n}\n"],"names":["REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","result","postTransaction","deleteCookieValue","BEAM_CART_COOKIE_NAME","BeamOrderCreatedEvent","AsyncController","_changedProperties","getCookieValue","previousPropertyValues","p","enforceConfig","MissingConfig","_errorMessage","html","event","selectedNonprofitId","cssReset","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
@@ -5,9 +5,9 @@ import * as lodash from 'lodash';
5
5
  import '../chunks/progress-bar-0VS_AmEf.esm.js';
6
6
  import './beam-partner-logos.js';
7
7
  import { b as TNumericId, c as TId } from '../chunks/types-7kSi85Gv.esm.js';
8
- import { T as TCart } from '../chunks/cart-contents-v6_9tRb6.esm.js';
8
+ import { T as TCart } from '../chunks/cart-contents-IOhdr24g.esm.js';
9
9
  import { L as LANGUAGES } from '../chunks/types-aju0qrRe.esm.js';
10
- import '../chunks/openapi-spec-bq7eoELU.esm.js';
10
+ import '../chunks/openapi-spec-b529HHW3.esm.js';
11
11
 
12
12
  interface TransactionRequiredConfig {
13
13
  apiKey: string;
@@ -1,4 +1,4 @@
1
- import{y as m,m as y,f as $,g as c,t as k,h as I,q as v,p as N,k as D}from"../chunks/lit-yVXn5Cbs.esm.js";import{d as z}from"../chunks/lodash-P8OIs-at.esm.js";import{c as L,d as E,b as U,e as x,A as B,f as w,a as W,_ as C}from"../chunks/enforce-config-qna7hEL6.esm.js";import{D as A,b as P,i as M,u as F,S as K}from"../chunks/routes-Y3xQURF0.esm.js";import{p as O}from"../chunks/progress-bar-7gWYaGlq.esm.js";import{partnerLogosConfigDefaults as j}from"./beam-partner-logos.esm.js";import{u,d as h,_,i as p}from"../chunks/localize-GCkVUD8S.esm.js";import{M as q,B as V}from"../chunks/beam-errors-P-Lu07Ce.esm.js";import{createScopedLocalStorage as H}from"../utils/local-storage.esm.js";import{c as G}from"../chunks/css-card-grid-3b56QBzq.esm.js";import{c as J}from"../chunks/events-5IECSF-x.esm.js";import"../utils/logger.esm.js";const Z=({height:i="1em",width:e="1em"}={})=>m`
1
+ import{y as m,m as y,f as $,g as c,t as k,h as I,q as v,p as N,k as D}from"../chunks/lit-yVXn5Cbs.esm.js";import{d as z}from"../chunks/lodash-P8OIs-at.esm.js";import{c as L,d as E,b as U,e as x,A as B,f as w,a as W,_ as C}from"../chunks/enforce-config-qna7hEL6.esm.js";import{D as A,e as P,i as M,u as F,S as K}from"../chunks/routes-LFjgVNGB.esm.js";import{p as O}from"../chunks/progress-bar-7gWYaGlq.esm.js";import{partnerLogosConfigDefaults as j}from"./beam-partner-logos.esm.js";import{u,d as h,_,i as p}from"../chunks/localize-GCkVUD8S.esm.js";import{M as q,B as V}from"../chunks/beam-errors-P-Lu07Ce.esm.js";import{createScopedLocalStorage as H}from"../utils/local-storage.esm.js";import{c as G}from"../chunks/css-card-grid-3b56QBzq.esm.js";import{c as J}from"../chunks/events-Y8fYvSqM.esm.js";import"../utils/logger.esm.js";const Z=({height:i="1em",width:e="1em"}={})=>m`
2
2
  <svg
3
3
  style="${y({height:i,width:e,position:"relative",bottom:"0"})}"
4
4
  xmlns="http://www.w3.org/2000/svg"
@@ -1,4 +1,4 @@
1
- import{y as m,m as y,f as $,g as c,t as k,h as I,q as v,p as N,k as D}from"../chunks/lit-yVXn5Cbs.esm.js";import{d as z}from"../chunks/lodash-P8OIs-at.esm.js";import{c as L,d as E,b as U,e as x,A as B,f as w,a as W,_ as C}from"../chunks/enforce-config-fo8kIfoY.esm.js";import{D as A,b as P,i as M,u as F,S as K}from"../chunks/routes-fBXLZ-QV.esm.js";import{p as O}from"../chunks/progress-bar-7gWYaGlq.esm.js";import{partnerLogosConfigDefaults as j}from"./beam-partner-logos.js";import{u,d as h,_,i as p}from"../chunks/localize-pzAAkBvG.esm.js";import{M as q,B as V}from"../chunks/beam-errors-P-Lu07Ce.esm.js";import{createScopedLocalStorage as H}from"../utils/local-storage.js";import{c as G}from"../chunks/css-card-grid-3b56QBzq.esm.js";import{c as J}from"../chunks/events-5IECSF-x.esm.js";import"../utils/logger.js";const Z=({height:i="1em",width:e="1em"}={})=>m`
1
+ import{y as m,m as y,f as $,g as c,t as k,h as I,q as v,p as N,k as D}from"../chunks/lit-yVXn5Cbs.esm.js";import{d as z}from"../chunks/lodash-P8OIs-at.esm.js";import{c as L,d as E,b as U,e as x,A as B,f as w,a as W,_ as C}from"../chunks/enforce-config-fo8kIfoY.esm.js";import{D as A,e as P,i as M,u as F,S as K}from"../chunks/routes-ad0I3Ayc.esm.js";import{p as O}from"../chunks/progress-bar-7gWYaGlq.esm.js";import{partnerLogosConfigDefaults as j}from"./beam-partner-logos.js";import{u,d as h,_,i as p}from"../chunks/localize-pzAAkBvG.esm.js";import{M as q,B as V}from"../chunks/beam-errors-P-Lu07Ce.esm.js";import{createScopedLocalStorage as H}from"../utils/local-storage.js";import{c as G}from"../chunks/css-card-grid-3b56QBzq.esm.js";import{c as J}from"../chunks/events-Y8fYvSqM.esm.js";import"../utils/logger.js";const Z=({height:i="1em",width:e="1em"}={})=>m`
2
2
  <svg
3
3
  style="${y({height:i,width:e,position:"relative",bottom:"0"})}"
4
4
  xmlns="http://www.w3.org/2000/svg"
@@ -4,8 +4,8 @@ import { LitElement, PropertyValues } from 'lit';
4
4
  import '../chunks/progress-bar-0VS_AmEf.esm.js';
5
5
  import { b as TNumericId } from '../chunks/types-7kSi85Gv.esm.js';
6
6
  import { L as LANGUAGES } from '../chunks/types-aju0qrRe.esm.js';
7
- import { T as TCart } from '../chunks/cart-contents-v6_9tRb6.esm.js';
8
- import '../chunks/openapi-spec-bq7eoELU.esm.js';
7
+ import { T as TCart } from '../chunks/cart-contents-IOhdr24g.esm.js';
8
+ import '../chunks/openapi-spec-b529HHW3.esm.js';
9
9
 
10
10
  interface RequiredConfig {
11
11
  apiKey: string;
@@ -1,4 +1,4 @@
1
- import{f as I,g as l,h as w,y as b,p as k,m as z,k as $}from"../chunks/lit-yVXn5Cbs.esm.js";import{c as D,d as L,e as u,A as S,a as T,_ as N}from"../chunks/enforce-config-qna7hEL6.esm.js";import{D as A,b as E,f as B,S as F}from"../chunks/routes-Y3xQURF0.esm.js";import{p as P}from"../chunks/progress-bar-7gWYaGlq.esm.js";import{u as m,d as p,_ as U,i as d}from"../chunks/localize-GCkVUD8S.esm.js";import{c as C,f as y}from"../chunks/events-5IECSF-x.esm.js";import{logger as W}from"../utils/logger.esm.js";import"../utils/network-listeners.esm.js";import{createScopedLocalStorage as O}from"../utils/local-storage.esm.js";import{getCookieValue as v}from"../utils/cookies.esm.js";import{i as _}from"../chunks/lodash-P8OIs-at.esm.js";import{c as M}from"../chunks/responsive-LYEag6TI.esm.js";import{B as R}from"../chunks/cart-contents-h60geKWa.esm.js";import"../chunks/beam-errors-P-Lu07Ce.esm.js";const g={en:{beamAttribution:()=>"Powered by Beam",ctaTitle:()=>"Choose your impact",ctaMessage:({donationPercentage:r="1"}={})=>`Select a nonprofit and ${r}% of your purchase will be donated, at no extra cost.`,inlineSeparator:()=>": "},fr:{beamAttribution:()=>"Optimis\xE9 par Beam",ctaTitle:()=>"Choisissez votre cause",ctaMessage:({donationPercentage:r="1"}={})=>`Choisissez un organisme \xE0 but non lucratif et ${r} % lui sera vers\xE9 en votre nom, sans frais suppl\xE9mentaires.`,inlineSeparator:()=>" : "},de:{beamAttribution:()=>"Unterst\xFCtzt von Beam",ctaTitle:()=>"W\xE4hle deinen Impact",ctaMessage:({donationPercentage:r="1"}={})=>`W\xE4hle eine der gemeinn\xFCtzigen Organisationen und spende ${r}% deines Einkaufs ohne zus\xE4tzliche Kosten`,inlineSeparator:()=>": "},es:{beamAttribution:()=>"Ofrecido por Beam",ctaTitle:()=>"Elige tu contribuci\xF3n",ctaMessage:({donationPercentage:r="1"}={})=>`Elige una organizaci\xF3n sin fines de lucro y donaremos ${r}% de tu compra sin coste adicional.`,inlineSeparator:()=>": "},it:{beamAttribution:()=>"Gestito da Beam",ctaTitle:()=>"Scegli dove fare la differenza",ctaMessage:({donationPercentage:r="1"}={})=>`Seleziona un'organizzazione no-profit a cui devolvere l\u2019${r}% del tuo acquisto, senza costi aggiuntivi`,inlineSeparator:()=>": "},pl:{beamAttribution:()=>"Wspierany przez Beam",ctaTitle:()=>"Wybierz inicjatyw\u0119, kt\xF3r\u0105 chcesz wesprze\u0107",ctaMessage:({donationPercentage:r="1"}={})=>`Wybierz organizacj\u0119, kt\xF3rej przeka\u017Cesz ${r}% warto\u015Bci Twoich zakup\xF3w \u2013 bez \u017Cadnych dodatkowych koszt\xF3w!`,inlineSeparator:()=>": "}};var K=Object.defineProperty,H=Object.getOwnPropertyDescriptor,c=(r,e,t,i)=>{for(var n=i>1?void 0:i?H(e,t):e,a=r.length-1,o;a>=0;a--)(o=r[a])&&(n=(i?o(e,t,n):o(n))||n);return i&&n&&K(e,t,n),n};class s extends w{constructor(){super(...arguments),this.baseUrl=A,this.selectedNonprofitId=null,this.lang="en",this.debug=!1,this.enableNonprofitDeselection=!1,this.didTryToCreateNewSelectionFromCache=!1,this.getChainNonprofits=async()=>{u(["apiKey"],this);const e=this.cart?.content?{schema:this.cart?.schema,content:this.cart?.content}:void 0,t=await E({baseUrl:this.baseUrl,apiRoot:"/api/v3",headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{storeId:this.storeId,widgetName:"select-nonprofit",postalCode:this.postalCode,countryCode:this.countryCode,version:"1.0.0",lang:this.configLang,cart:e}});return this.enableNonprofitDeselection=!!t.config.enableNonprofitDeselection,this.selectedNonprofitId&&!t.nonprofits.map(i=>i.nonprofit.id).includes(this.selectedNonprofitId)&&(this.selectedNonprofitId=null,await this.postSelectNonprofit({selectedNonprofitId:null})),t.store?.id&&t.store.id!==this.storeId&&(this.storeId=t.store.id),await this.createNewSelectionForCachedNonprofit(),this.localStorage.setItemJson("chainNonprofits",{createdAt:new Date,data:t}),t},this.postSelectNonprofit=async({selectedNonprofitId:e})=>{u(["apiKey","storeId"],this);const t=this.getExternalCartId(),i=this.getBeamCartId(),n=await B({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{nonprofitId:e,selectionId:this.selectionId,storeId:this.storeId,cartId:t,beamCartId:i}});this.selectionId=n?.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 a=this.getNonprofitById(e);this.dispatchEvent(new C({selectedNonprofitId:e,selectionId:this.selectionId,nonprofitName:a?.nonprofit?.name??null}))},this.nonprofitListDataController=new S(this,this.getChainNonprofits),this.selectionDataController=new S(this,this.postSelectNonprofit),this.localStorage=O(this),this.handleCartChange=e=>{this.cart=e.detail},this.makeHandleSelect=(e,t,i)=>async n=>{const a=this.selectedNonprofitId;if(n instanceof KeyboardEvent){let o=null;switch(n.key){case"ArrowUp":case"ArrowLeft":t===0?o=i[i.length-1]:o=i[t-1],n.preventDefault();break;case"ArrowRight":case"ArrowDown":t===i.length-1?o=i[0]:o=i[t+1],n.preventDefault();break;case"Enter":case" ":n.preventDefault();break;default:return}if(o){a!=null&&(this.selectedNonprofitId=o.nonprofit.id);const f=this.renderRoot.querySelector(`[data-value="${o.nonprofit.id}"]`);f!==null&&(f.tabIndex=0,f.focus());return}}if(n.currentTarget instanceof HTMLElement)if(a===e)if(this.enableNonprofitDeselection)this.selectedNonprofitId=null;else return;else this.selectedNonprofitId=e;await this.selectionDataController.exec({selectedNonprofitId:this.selectedNonprofitId})}}get configLang(){return F[this.lang]||"en"}getNonprofitById(e){return e?this.nonprofitListDataController?.data?.nonprofits.find(t=>t.nonprofit.id===e):null}connectedCallback(){super.connectedCallback(),window.addEventListener(y.eventName,this.handleCartChange)}async firstUpdated(e){await this.restoreStateFromCache()}async updated(e){const t=["baseUrl","storeId","apiKey","countryCode","postalCode","cart","lang"];for(const i of t)if(e.has(i)){await this.nonprofitListDataController.exec();break}}disconnectedCallback(){window.removeEventListener(y.eventName,this.handleCartChange),super.disconnectedCallback()}getExternalCartId(){return this.localStorage.getItemJson("cart")?.cartId??v("cart")}getBeamCartId(){return v(R)}async restoreStateFromCache(){try{const e=new Date().valueOf();this.cart=this.localStorage.getItemJson("cart")??void 0;const t=30*24*60*60*1e3,i=this.localStorage.getItem("nonprofit_selected_at")??0;e>new Date(i).valueOf()+t||(this.selectedNonprofitId=parseInt(this.localStorage.getItem("nonprofit")||"")||null,this.selectionId=this.localStorage.getItem("transaction")??void 0);const{createdAt:n=0,data:a}=this.localStorage.getItemJson("chainNonprofits")||{},o=2*60*60*1e3;e>new Date(n).valueOf()+o||(this.nonprofitListDataController.data=a,this.nonprofitListDataController.loading=!1)}catch(e){W.error(e)}}async createNewSelectionForCachedNonprofit(){if(u(["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 C({selectedNonprofitId:this.selectedNonprofitId,selectionId:this.selectionId,nonprofitName:e?.nonprofit?.name}))}}catch{}}get cssVariables(){const e={"--beam-fontFamily":"inherit","--beam-fontStyle":"inherit","--beam-fontSize":"inherit","--beam-textColor":"inherit","--beam-backgroundColor":"inherit",...P,"--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",...p("--beam-SelectNonprofit-title",{fontSize:"1.25em",fontWeight:"bold"}),"--beam-SelectNonprofit-header-inline-lineHeight":"inherit",...p("--beam-SelectNonprofit-title-inline",{fontWeight:"bold"}),"--beam-SelectNonprofit-title-inline-textTransform":"none",...p("--beam-SelectNonprofit-description",{marginTop:"0.5em"}),...p("--beam-SelectNonprofit-description-inline"),...p("--beam-SelectNonprofit-details-cause",{fontSize:"0.85em",fontWeight:"bold"}),...p("--beam-SelectNonprofit-details-beamAttribution",{fontSize:"0.85em"}),...p("--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",...p("--beam-SelectNonprofit-details-fundingProgressLabel",{fontSize:"0.85em"})},t=this.nonprofitListDataController?.data?.config?.web?.theme||{},i={...e,...t};return Object.assign(Object.create({toCSS(){return T(this)}}),i)}render(){const{selectedNonprofitId:e}=this,{data:t,loading:i}=this.nonprofitListDataController;if(i&&!t)return U();if(this.nonprofitListDataController.error)return this.debug?N({error:this.nonprofitListDataController.error}):"";if(this.selectionDataController.error&&this.debug)return N({error:this.selectionDataController.error});const n=t?.nonprofits||[],a=n.find(o=>o.nonprofit.id===e)||null;return b`
1
+ import{f as x,g as c,h as w,y as b,p as k,m as z,k as $}from"../chunks/lit-yVXn5Cbs.esm.js";import{c as D,d as L,e as u,A as S,a as E,_ as N}from"../chunks/enforce-config-qna7hEL6.esm.js";import{D as T,e as A,f as B,S as F}from"../chunks/routes-LFjgVNGB.esm.js";import{p as _}from"../chunks/progress-bar-7gWYaGlq.esm.js";import{u as m,d,_ as P,i as f}from"../chunks/localize-GCkVUD8S.esm.js";import{c as C,g as U,f as y}from"../chunks/events-Y8fYvSqM.esm.js";import{logger as W}from"../utils/logger.esm.js";import"../utils/network-listeners.esm.js";import{createScopedLocalStorage as O}from"../utils/local-storage.esm.js";import{getCookieValue as v}from"../utils/cookies.esm.js";import{i as R}from"../chunks/lodash-P8OIs-at.esm.js";import{c as M}from"../chunks/responsive-LYEag6TI.esm.js";import{B as K}from"../chunks/cart-contents-h60geKWa.esm.js";import"../chunks/beam-errors-P-Lu07Ce.esm.js";const h={en:{beamAttribution:()=>"Powered by Beam",ctaTitle:()=>"Choose your impact",ctaMessage:({donationPercentage:r="1"}={})=>`Select a nonprofit and ${r}% of your purchase will be donated, at no extra cost.`,inlineSeparator:()=>": "},fr:{beamAttribution:()=>"Optimis\xE9 par Beam",ctaTitle:()=>"Choisissez votre cause",ctaMessage:({donationPercentage:r="1"}={})=>`Choisissez un organisme \xE0 but non lucratif et ${r} % lui sera vers\xE9 en votre nom, sans frais suppl\xE9mentaires.`,inlineSeparator:()=>" : "},de:{beamAttribution:()=>"Unterst\xFCtzt von Beam",ctaTitle:()=>"W\xE4hle deinen Impact",ctaMessage:({donationPercentage:r="1"}={})=>`W\xE4hle eine der gemeinn\xFCtzigen Organisationen und spende ${r}% deines Einkaufs ohne zus\xE4tzliche Kosten`,inlineSeparator:()=>": "},es:{beamAttribution:()=>"Ofrecido por Beam",ctaTitle:()=>"Elige tu contribuci\xF3n",ctaMessage:({donationPercentage:r="1"}={})=>`Elige una organizaci\xF3n sin fines de lucro y donaremos ${r}% de tu compra sin coste adicional.`,inlineSeparator:()=>": "},it:{beamAttribution:()=>"Gestito da Beam",ctaTitle:()=>"Scegli dove fare la differenza",ctaMessage:({donationPercentage:r="1"}={})=>`Seleziona un'organizzazione no-profit a cui devolvere l\u2019${r}% del tuo acquisto, senza costi aggiuntivi`,inlineSeparator:()=>": "},pl:{beamAttribution:()=>"Wspierany przez Beam",ctaTitle:()=>"Wybierz inicjatyw\u0119, kt\xF3r\u0105 chcesz wesprze\u0107",ctaMessage:({donationPercentage:r="1"}={})=>`Wybierz organizacj\u0119, kt\xF3rej przeka\u017Cesz ${r}% warto\u015Bci Twoich zakup\xF3w \u2013 bez \u017Cadnych dodatkowych koszt\xF3w!`,inlineSeparator:()=>": "}};var H=Object.defineProperty,j=Object.getOwnPropertyDescriptor,p=(r,e,t,i)=>{for(var n=i>1?void 0:i?j(e,t):e,a=r.length-1,o;a>=0;a--)(o=r[a])&&(n=(i?o(e,t,n):o(n))||n);return i&&n&&H(e,t,n),n};class s extends w{constructor(){super(...arguments),this.baseUrl=T,this.selectedNonprofitId=null,this.lang="en",this.debug=!1,this.enableNonprofitDeselection=!1,this.didTryToCreateNewSelectionFromCache=!1,this.getChainNonprofits=async()=>{u(["apiKey"],this);const e=this.cart?.content?{schema:this.cart?.schema,content:this.cart?.content}:void 0,t=await A({baseUrl:this.baseUrl,apiRoot:"/api/v3",headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{storeId:this.storeId,widgetName:"select-nonprofit",postalCode:this.postalCode,countryCode:this.countryCode,version:"1.0.0",lang:this.configLang,cart:e}});return this.enableNonprofitDeselection=!!t.config.enableNonprofitDeselection,this.selectedNonprofitId&&!t.nonprofits.map(i=>i.nonprofit.id).includes(this.selectedNonprofitId)&&(this.selectedNonprofitId=null,await this.postSelectNonprofit({selectedNonprofitId:null}),["nonprofit_selected_at","nonprofit"].forEach(i=>{this.localStorage.removeItem(i)})),t.store?.id&&t.store.id!==this.storeId&&(this.storeId=t.store.id),await this.createNewSelectionForCachedNonprofit(),this.localStorage.setItemJson("chainNonprofits",{createdAt:new Date,data:t}),t},this.postSelectNonprofit=async({selectedNonprofitId:e})=>{u(["apiKey","storeId"],this);const t=this.getExternalCartId(),i=this.getBeamCartId(),n=await B({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{nonprofitId:e,selectionId:this.selectionId,storeId:this.storeId,cartId:t,beamCartId:i,postalCode:this.postalCode,countryCode:this.countryCode}});this.selectionId=n?.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 a=this.getNonprofitById(e);this.dispatchEvent(e!==null?new C({selectedNonprofitId:e,selectionId:this.selectionId,nonprofitName:a?.nonprofit?.name??null}):new U({newNonprofitId:null}))},this.nonprofitListDataController=new S(this,this.getChainNonprofits),this.selectionDataController=new S(this,this.postSelectNonprofit),this.localStorage=O(this),this.handleCartChange=e=>{this.cart=e.detail},this.makeHandleSelect=(e,t,i)=>async n=>{const a=this.selectedNonprofitId;if(n instanceof KeyboardEvent){let o=null;switch(n.key){case"ArrowUp":case"ArrowLeft":t===0?o=i[i.length-1]:o=i[t-1],n.preventDefault();break;case"ArrowRight":case"ArrowDown":t===i.length-1?o=i[0]:o=i[t+1],n.preventDefault();break;case"Enter":case" ":n.preventDefault();break;default:return}if(o){a!=null&&(this.selectedNonprofitId=o.nonprofit.id);const l=this.renderRoot.querySelector(`[data-value="${o.nonprofit.id}"]`);l!==null&&(l.tabIndex=0,l.focus());return}}if(n.currentTarget instanceof HTMLElement)if(a===e)if(this.enableNonprofitDeselection)this.selectedNonprofitId=null,await this.postSelectNonprofit({selectedNonprofitId:null}),["nonprofit_selected_at","nonprofit"].forEach(o=>{this.localStorage.removeItem(o)});else return;else this.selectedNonprofitId=e;await this.selectionDataController.exec({selectedNonprofitId:this.selectedNonprofitId})}}get configLang(){return F[this.lang]||"en"}getNonprofitById(e){return e?this.nonprofitListDataController?.data?.nonprofits.find(t=>t.nonprofit.id===e):null}connectedCallback(){super.connectedCallback(),window.addEventListener(y.eventName,this.handleCartChange)}async firstUpdated(e){await this.restoreStateFromCache()}async updated(e){const t=["baseUrl","storeId","apiKey","countryCode","postalCode","cart","lang"];for(const i of t)if(e.has(i)){await this.nonprofitListDataController.exec();break}}disconnectedCallback(){window.removeEventListener(y.eventName,this.handleCartChange),super.disconnectedCallback()}getExternalCartId(){return this.localStorage.getItemJson("cart")?.cartId??v("cart")}getBeamCartId(){return v(K)}async restoreStateFromCache(){try{const e=new Date().valueOf();this.cart=this.localStorage.getItemJson("cart")??void 0;const t=30*24*60*60*1e3,i=this.localStorage.getItem("nonprofit_selected_at")??0;e>new Date(i).valueOf()+t?(await this.postSelectNonprofit({selectedNonprofitId:null}),["nonprofit_selected_at","nonprofit"].forEach(l=>{this.localStorage.removeItem(l)})):(this.selectedNonprofitId=parseInt(this.localStorage.getItem("nonprofit")||"")||null,this.selectionId=this.localStorage.getItem("transaction")??void 0);const{createdAt:n=0,data:a}=this.localStorage.getItemJson("chainNonprofits")||{},o=2*60*60*1e3;e>new Date(n).valueOf()+o||(this.nonprofitListDataController.data=a,this.nonprofitListDataController.loading=!1)}catch(e){W.error(e)}}async createNewSelectionForCachedNonprofit(){if(u(["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 C({selectedNonprofitId:this.selectedNonprofitId,selectionId:this.selectionId,nonprofitName:e?.nonprofit?.name}))}}catch{}}get cssVariables(){const e={"--beam-fontFamily":"inherit","--beam-fontStyle":"inherit","--beam-fontSize":"inherit","--beam-textColor":"inherit","--beam-backgroundColor":"inherit",..._,"--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",...d("--beam-SelectNonprofit-title",{fontSize:"1.25em",fontWeight:"bold"}),"--beam-SelectNonprofit-header-inline-lineHeight":"inherit",...d("--beam-SelectNonprofit-title-inline",{fontWeight:"bold"}),"--beam-SelectNonprofit-title-inline-textTransform":"none",...d("--beam-SelectNonprofit-description",{marginTop:"0.5em"}),...d("--beam-SelectNonprofit-description-inline"),...d("--beam-SelectNonprofit-details-cause",{fontSize:"0.85em",fontWeight:"bold"}),...d("--beam-SelectNonprofit-details-beamAttribution",{fontSize:"0.85em"}),...d("--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",...d("--beam-SelectNonprofit-details-fundingProgressLabel",{fontSize:"0.85em"})},t=this.nonprofitListDataController?.data?.config?.web?.theme||{},i={...e,...t};return Object.assign(Object.create({toCSS(){return E(this)}}),i)}render(){const{selectedNonprofitId:e}=this,{data:t,loading:i}=this.nonprofitListDataController;if(i&&!t)return P();if(this.nonprofitListDataController.error)return this.debug?N({error:this.nonprofitListDataController.error}):"";if(this.selectionDataController.error&&this.debug)return N({error:this.selectionDataController.error});const n=t?.nonprofits||[],a=n.find(o=>o.nonprofit.id===e)||null;return b`
2
2
  <style>
3
3
  :host {
4
4
  ${this.cssVariables.toCSS()}
@@ -6,18 +6,18 @@ import{f as I,g as l,h as w,y as b,p as k,m as z,k as $}from"../chunks/lit-yVXn5
6
6
  </style>
7
7
  <div part="heading">
8
8
  <h3 class="title-block d-none d-lg-block" part="title" id="beam-SelectNonprofit-title">
9
- ${d(this.configLang,t?.config?.web?.title||"")||g[this.configLang].ctaTitle()}
9
+ ${f(this.configLang,t?.config?.web?.title||"")||h[this.configLang].ctaTitle()}
10
10
  </h3>
11
11
  <p class="description" part="description">
12
12
  <span class="d-none d-lg-inline">
13
- ${d(this.configLang,t?.config?.web?.description||"")||g[this.configLang].ctaMessage()}
13
+ ${f(this.configLang,t?.config?.web?.description||"")||h[this.configLang].ctaMessage()}
14
14
  </span>
15
15
  <div class="d-lg-none header-inline">
16
16
  <span class="title-inline" part="title">
17
- ${(d(this.configLang,t?.config?.web?.title||"")||g[this.configLang].ctaTitle())+g[this.configLang].inlineSeparator()}
17
+ ${(f(this.configLang,t?.config?.web?.title||"")||h[this.configLang].ctaTitle())+h[this.configLang].inlineSeparator()}
18
18
  </span>
19
19
  <span class="description-inline" part="description">
20
- ${d(this.configLang,t?.config?.web?.description||"")||g[this.configLang].ctaMessage()}
20
+ ${f(this.configLang,t?.config?.web?.description||"")||h[this.configLang].ctaMessage()}
21
21
  </span>
22
22
  </div>
23
23
  </p>
@@ -29,21 +29,21 @@ import{f as I,g as l,h as w,y as b,p as k,m as z,k as $}from"../chunks/lit-yVXn5
29
29
  aria-labelledby="beam-SelectNonprofit-title"
30
30
  style="display: flex; gap: var(--beam-SelectNonprofit-options-gap); margin: 10px 0 0 0;"
31
31
  >
32
- ${k(n,o=>o.nonprofit.id,({nonprofit:o},f)=>{const h=e===o.id,x=h||a==null&&f===0;return b`
32
+ ${k(n,o=>o.nonprofit.id,({nonprofit:o},l)=>{const g=e===o.id,I=g||a==null&&l===0;return b`
33
33
  <div
34
34
  class="option"
35
35
  part="option"
36
36
  role="radio"
37
- tabindex="${x?0:-1}"
37
+ tabindex="${I?0:-1}"
38
38
  data-value=${o.id}
39
- aria-checked=${h}
40
- @click=${this.makeHandleSelect(o.id,f,n)}
41
- @keydown=${this.makeHandleSelect(o.id,f,n)}
42
- aria-label="${d(this.configLang,o.cause||"")}"
43
- style="${z({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",borderRadius:"var(--beam-SelectNonprofit-options-borderRadius, 0)",borderColor:h?o.causeColor||"var(--beam-SelectNonprofit-options--selected-borderColor, currentColor)":"var(--beam-SelectNonprofit-options-borderColor, currentColor)",backgroundColor:h?o.causeColor||"var(--beam-SelectNonprofit-options--selected-backgroundColor, currentColor)":"var(--beam-SelectNonprofit-options-backgroundColor, transparent)"})}"
39
+ aria-checked=${g}
40
+ @click=${this.makeHandleSelect(o.id,l,n)}
41
+ @keydown=${this.makeHandleSelect(o.id,l,n)}
42
+ aria-label="${f(this.configLang,o.cause||"")}"
43
+ style="${z({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",borderRadius:"var(--beam-SelectNonprofit-options-borderRadius, 0)",borderColor:g?o.causeColor||"var(--beam-SelectNonprofit-options--selected-borderColor, currentColor)":"var(--beam-SelectNonprofit-options-borderColor, currentColor)",backgroundColor:g?o.causeColor||"var(--beam-SelectNonprofit-options--selected-backgroundColor, currentColor)":"var(--beam-SelectNonprofit-options-backgroundColor, transparent)"})}"
44
44
  >
45
45
  <img
46
- src="${h?o.causeIconSelectedUrl:o.causeIconUrl}"
46
+ src="${g?o.causeIconSelectedUrl:o.causeIconUrl}"
47
47
  alt=""
48
48
  role="presentation"
49
49
  style="
@@ -73,17 +73,17 @@ import{f as I,g as l,h as w,y as b,p as k,m as z,k as $}from"../chunks/lit-yVXn5
73
73
  class="details-cause"
74
74
  style="flex: 0 1; white-space: nowrap; ${m("--beam-SelectNonprofit-details-cause")}"
75
75
  >
76
- ${d(this.configLang,a.nonprofit.cause||"")}
76
+ ${f(this.configLang,a.nonprofit.cause||"")}
77
77
  </span>
78
78
  <span
79
79
  class="details-beamAttribution"
80
80
  style="flex: 0 1; white-space: nowrap; ${m("--beam-SelectNonprofit-details-beamAttribution")}"
81
81
  >
82
- ${g[this.configLang].beamAttribution()}
82
+ ${h[this.configLang].beamAttribution()}
83
83
  </span>
84
84
  </div>
85
85
  <p class="details-impactDescription">
86
- ${$(d(this.configLang,a.impact.description||""))}
86
+ ${$(f(this.configLang,a.impact.description||""))}
87
87
  </p>
88
88
  <div
89
89
  style="display: flex; margin-top: var(--beam-SelectNonprofit-details-fundingProgress-marginTop); align-items: center;"
@@ -96,12 +96,12 @@ import{f as I,g as l,h as w,y as b,p as k,m as z,k as $}from"../chunks/lit-yVXn5
96
96
  class="details-fundingProgressLabel"
97
97
  style="${m("--beam-SelectNonprofit-details-fundingProgressLabel")} white-space: nowrap; text-align: right; flex: 0 1; margin-left: 15px;"
98
98
  >
99
- ${d(this.configLang,a.impact.goalProgressText)}
99
+ ${f(this.configLang,a.impact.goalProgressText)}
100
100
  </span>
101
101
  </div>
102
102
  </div>
103
103
  `:""}
104
- `}}s.tagName="beam-select-nonprofit",s.styles=[D,M,I`
104
+ `}}s.tagName="beam-select-nonprofit",s.styles=[D,M,x`
105
105
  :host {
106
106
  display: block;
107
107
  max-width: var(--beam-SelectNonprofit-maxWidth, 800px);
@@ -153,5 +153,5 @@ import{f as I,g as l,h as w,y as b,p as k,m as z,k as $}from"../chunks/lit-yVXn5
153
153
  ${m("--beam-SelectNonprofit-description")}
154
154
  text-align: var(--beam-SelectNonprofit-description-textAlign);
155
155
  }
156
- `],c([l({type:String})],s.prototype,"baseUrl",2),c([l({type:String})],s.prototype,"apiKey",2),c([l({type:Number,reflect:!0})],s.prototype,"storeId",2),c([l({type:String})],s.prototype,"countryCode",2),c([l({type:String})],s.prototype,"postalCode",2),c([l({attribute:!1,hasChanged:(r,e)=>!_(r,e)})],s.prototype,"cart",2),c([l({type:Number,reflect:!0})],s.prototype,"selectedNonprofitId",2),c([l({type:String})],s.prototype,"lang",2),c([l({type:Boolean})],s.prototype,"debug",2),L(s);export{s as BeamSelectNonprofit};
156
+ `],p([c({type:String})],s.prototype,"baseUrl",2),p([c({type:String})],s.prototype,"apiKey",2),p([c({type:Number,reflect:!0})],s.prototype,"storeId",2),p([c({type:String})],s.prototype,"countryCode",2),p([c({type:String})],s.prototype,"postalCode",2),p([c({attribute:!1,hasChanged:(r,e)=>!R(r,e)})],s.prototype,"cart",2),p([c({type:Number,reflect:!0})],s.prototype,"selectedNonprofitId",2),p([c({type:String})],s.prototype,"lang",2),p([c({type:Boolean})],s.prototype,"debug",2),L(s);export{s as BeamSelectNonprofit};
157
157
  //# sourceMappingURL=select-nonprofit.esm.js.map