@beamimpact/web-sdk 1.52.7 → 1.53.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 (188) hide show
  1. package/dist/chunks/{_share-dialog-dependencies-CYeOdZWi.esm.js → _share-dialog-dependencies-Cirjl8zP.esm.js} +2 -2
  2. package/dist/chunks/{_share-dialog-dependencies-CYeOdZWi.esm.js.map → _share-dialog-dependencies-Cirjl8zP.esm.js.map} +1 -1
  3. package/dist/chunks/{_share-dialog-dependencies-FmC7lLQ6.esm.js → _share-dialog-dependencies-DElW9Yip.esm.js} +2 -2
  4. package/dist/chunks/{_share-dialog-dependencies-FmC7lLQ6.esm.js.map → _share-dialog-dependencies-DElW9Yip.esm.js.map} +1 -1
  5. package/dist/chunks/cart-contents-DkoytiZh.esm.js.map +1 -1
  6. package/dist/chunks/{cart-contents-CUgc4y1N.esm.d.ts → cart-contents-oArgpFbi.esm.d.ts} +1 -1
  7. package/dist/chunks/{events-BKkf9u9l.esm.d.ts → events-BMTcECV9.esm.d.ts} +2 -2
  8. package/dist/chunks/{index-TAxKoTC1.esm.d.ts → index-1Mhh255_.esm.d.ts} +1 -1
  9. package/dist/chunks/index-2vxtp84k.esm.js +2 -0
  10. package/dist/chunks/index-2vxtp84k.esm.js.map +1 -0
  11. package/dist/chunks/index-Bs4Q42bL.esm.js +2 -0
  12. package/dist/chunks/index-Bs4Q42bL.esm.js.map +1 -0
  13. package/dist/chunks/{index-ki8pLX6n.esm.d.ts → index-C4P0R2un.esm.d.ts} +4 -4
  14. package/dist/chunks/{index-CbKkAM6h.esm.d.ts → index-CPVMm4wx.esm.d.ts} +1 -1
  15. package/dist/chunks/{index-Dnm34FcO.esm.d.ts → index-Ca8xkEwS.esm.d.ts} +1 -1
  16. package/dist/chunks/{index-ChmhNz41.esm.js → index-CaBSaNNT.esm.js} +2 -2
  17. package/dist/chunks/index-CaBSaNNT.esm.js.map +1 -0
  18. package/dist/chunks/index-CjT2ycv5.esm.js +389 -0
  19. package/dist/chunks/index-CjT2ycv5.esm.js.map +1 -0
  20. package/dist/chunks/{index-BqBEii8E.esm.d.ts → index-CkuCObi0.esm.d.ts} +1 -1
  21. package/dist/chunks/index-DGyP7M3g.esm.js +2 -0
  22. package/dist/chunks/index-DGyP7M3g.esm.js.map +1 -0
  23. package/dist/chunks/index-DUeE7FLq.esm.js +2 -0
  24. package/dist/chunks/index-DUeE7FLq.esm.js.map +1 -0
  25. package/dist/chunks/index-DZyO6--E.esm.js +2 -0
  26. package/dist/chunks/index-DZyO6--E.esm.js.map +1 -0
  27. package/dist/chunks/{index-DkGjP-Zg.esm.js → index-D_L-n4we.esm.js} +2 -2
  28. package/dist/chunks/index-D_L-n4we.esm.js.map +1 -0
  29. package/dist/chunks/{index-DvbUE31b.esm.d.ts → index-DqffUXvi.esm.d.ts} +1 -1
  30. package/dist/chunks/index-IZJ4xhyj.esm.js +2 -0
  31. package/dist/chunks/index-IZJ4xhyj.esm.js.map +1 -0
  32. package/dist/chunks/index-Z9-EAuWk.esm.js +2 -0
  33. package/dist/chunks/index-Z9-EAuWk.esm.js.map +1 -0
  34. package/dist/chunks/index-sUGvOawY.esm.js +2 -0
  35. package/dist/chunks/index-sUGvOawY.esm.js.map +1 -0
  36. package/dist/chunks/index-vH6HFI2B.esm.js +389 -0
  37. package/dist/chunks/index-vH6HFI2B.esm.js.map +1 -0
  38. package/dist/chunks/{openapi-spec-VAt3phhg.esm.d.ts → openapi-spec-x9NbL7bU.esm.d.ts} +860 -199
  39. package/dist/chunks/{order-page-Cerye00Q.esm.d.ts → order-page-D_p01zgd.esm.d.ts} +3 -3
  40. package/dist/chunks/{order-page-DFtCsDYa.esm.js → order-page-O5u1cAz8.esm.js} +2 -2
  41. package/dist/chunks/{order-page-DFtCsDYa.esm.js.map → order-page-O5u1cAz8.esm.js.map} +1 -1
  42. package/dist/chunks/{order-page-BPm0hcsC.esm.js → order-page-Vk9anZAb.esm.js} +2 -2
  43. package/dist/chunks/{order-page-BPm0hcsC.esm.js.map → order-page-Vk9anZAb.esm.js.map} +1 -1
  44. package/dist/chunks/{promo-types-C1unMpo2.esm.d.ts → promo-types-Cz_Zkjy1.esm.d.ts} +1 -1
  45. package/dist/chunks/promoManager-B9cTR1R3.esm.js.map +1 -1
  46. package/dist/chunks/promoManager-fl54hq13.esm.js.map +1 -1
  47. package/dist/chunks/routes-BnPd0lrO.esm.js +2 -0
  48. package/dist/chunks/routes-BnPd0lrO.esm.js.map +1 -0
  49. package/dist/chunks/{routes-DDRd747e.esm.d.ts → routes-BwRUVGsk.esm.d.ts} +21 -4
  50. package/dist/chunks/routes-D7s2_Xn5.esm.js +2 -0
  51. package/dist/chunks/routes-D7s2_Xn5.esm.js.map +1 -0
  52. package/dist/chunks/{share-button-C2_VjXAY.esm.js → share-button-8zVx6bYw.esm.js} +2 -2
  53. package/dist/chunks/{share-button-C2_VjXAY.esm.js.map → share-button-8zVx6bYw.esm.js.map} +1 -1
  54. package/dist/chunks/{share-button-BXEwUmT4.esm.js → share-button-CM4kwufS.esm.js} +2 -2
  55. package/dist/chunks/{share-button-CLpGIG3j.esm.js.map → share-button-CM4kwufS.esm.js.map} +1 -1
  56. package/dist/chunks/{share-button-DVQotZGR.esm.js → share-button-CWFcBlaF.esm.js} +2 -2
  57. package/dist/chunks/{share-button-DVQotZGR.esm.js.map → share-button-CWFcBlaF.esm.js.map} +1 -1
  58. package/dist/chunks/{share-button-CLpGIG3j.esm.js → share-button-DNyMCeHQ.esm.js} +2 -2
  59. package/dist/chunks/{share-button-BXEwUmT4.esm.js.map → share-button-DNyMCeHQ.esm.js.map} +1 -1
  60. package/dist/chunks/{update-cart-DIJcb6w0.esm.js → update-cart-BQHJ9lRb.esm.js} +2 -2
  61. package/dist/chunks/{update-cart-DIJcb6w0.esm.js.map → update-cart-BQHJ9lRb.esm.js.map} +1 -1
  62. package/dist/chunks/{update-cart-BpiNvvDT.esm.js → update-cart-DCxR1dVX.esm.js} +2 -2
  63. package/dist/chunks/{update-cart-BpiNvvDT.esm.js.map → update-cart-DCxR1dVX.esm.js.map} +1 -1
  64. package/dist/chunks/{update-cart-NiToHHJH.esm.d.ts → update-cart-Dp0v0m4d.esm.d.ts} +1 -1
  65. package/dist/components/community-impact.esm.js +1 -1
  66. package/dist/components/community-impact.js +1 -1
  67. package/dist/components/cumulative-impact.esm.js +1 -1
  68. package/dist/components/cumulative-impact.js +1 -1
  69. package/dist/components/impact-overview.d.ts +3 -0
  70. package/dist/components/impact-overview.esm.js +1 -1
  71. package/dist/components/impact-overview.js +1 -1
  72. package/dist/components/index.d.ts +3 -3
  73. package/dist/components/index.esm.js +1 -1
  74. package/dist/components/index.js +1 -1
  75. package/dist/components/post-purchase.d.ts +10 -88
  76. package/dist/components/post-purchase.esm.js +4 -3
  77. package/dist/components/post-purchase.esm.js.map +1 -1
  78. package/dist/components/post-purchase.js +4 -3
  79. package/dist/components/post-purchase.js.map +1 -1
  80. package/dist/components/product-details-page.d.ts +1 -1
  81. package/dist/components/product-details-page.esm.js +1 -1
  82. package/dist/components/product-details-page.js +1 -1
  83. package/dist/components/redeem-transaction.d.ts +2 -2
  84. package/dist/components/redeem-transaction.esm.js +1 -388
  85. package/dist/components/redeem-transaction.esm.js.map +1 -1
  86. package/dist/components/redeem-transaction.js +1 -388
  87. package/dist/components/redeem-transaction.js.map +1 -1
  88. package/dist/components/select-nonprofit.d.ts +2 -2
  89. package/dist/components/select-nonprofit.esm.js +1 -1
  90. package/dist/components/select-nonprofit.js +1 -1
  91. package/dist/components/select-subscription-nonprofit.esm.js +1 -1
  92. package/dist/components/select-subscription-nonprofit.js +1 -1
  93. package/dist/components/shopify.d.ts +7 -7
  94. package/dist/components/shopify.esm.js +1 -1
  95. package/dist/components/shopify.esm.js.map +1 -1
  96. package/dist/components/shopify.js +1 -1
  97. package/dist/components/shopify.js.map +1 -1
  98. package/dist/components/social-share.esm.js +1 -1
  99. package/dist/components/social-share.js +1 -1
  100. package/dist/components/subscription-impact.d.ts +3 -0
  101. package/dist/components/subscription-impact.esm.js +1 -1
  102. package/dist/components/subscription-impact.js +1 -1
  103. package/dist/components/subscription-management.d.ts +16 -3
  104. package/dist/components/subscription-management.esm.js +18 -18
  105. package/dist/components/subscription-management.esm.js.map +1 -1
  106. package/dist/components/subscription-management.js +18 -18
  107. package/dist/components/subscription-management.js.map +1 -1
  108. package/dist/index.d.ts +13 -13
  109. package/dist/index.esm.js +1 -1
  110. package/dist/index.js +1 -1
  111. package/dist/integrations/beam.esm.js +1 -1
  112. package/dist/integrations/beam.js +1 -1
  113. package/dist/integrations/cart.d.ts +3 -3
  114. package/dist/integrations/cart.esm.js +1 -1
  115. package/dist/integrations/cart.js +1 -1
  116. package/dist/integrations/index.d.ts +11 -11
  117. package/dist/integrations/index.esm.js +1 -1
  118. package/dist/integrations/index.js +1 -1
  119. package/dist/integrations/logs.d.ts +2 -2
  120. package/dist/integrations/logs.esm.js +1 -1
  121. package/dist/integrations/logs.js +1 -1
  122. package/dist/integrations/shopify.d.ts +5 -5
  123. package/dist/integrations/shopify.esm.js +1 -1
  124. package/dist/integrations/shopify.js +1 -1
  125. package/dist/integrations/statsig.esm.js +1 -1
  126. package/dist/integrations/statsig.js +1 -1
  127. package/dist/integrations/utils.d.ts +4 -4
  128. package/dist/react/community-impact.esm.js +1 -1
  129. package/dist/react/community-impact.js +1 -1
  130. package/dist/react/cumulative-impact.esm.js +1 -1
  131. package/dist/react/cumulative-impact.js +1 -1
  132. package/dist/react/impact-overview.esm.js +1 -1
  133. package/dist/react/impact-overview.js +1 -1
  134. package/dist/react/index.d.ts +5 -5
  135. package/dist/react/index.esm.js +1 -1
  136. package/dist/react/index.js +1 -1
  137. package/dist/react/post-purchase.d.ts +2 -2
  138. package/dist/react/post-purchase.esm.js +1 -1
  139. package/dist/react/post-purchase.esm.js.map +1 -1
  140. package/dist/react/post-purchase.js +1 -1
  141. package/dist/react/post-purchase.js.map +1 -1
  142. package/dist/react/product-details-page.d.ts +1 -1
  143. package/dist/react/product-details-page.esm.js +1 -1
  144. package/dist/react/product-details-page.js +1 -1
  145. package/dist/react/redeem-transaction.d.ts +4 -4
  146. package/dist/react/redeem-transaction.esm.js +1 -1
  147. package/dist/react/redeem-transaction.esm.js.map +1 -1
  148. package/dist/react/redeem-transaction.js +1 -1
  149. package/dist/react/redeem-transaction.js.map +1 -1
  150. package/dist/react/select-nonprofit.d.ts +4 -4
  151. package/dist/react/select-nonprofit.esm.js +1 -1
  152. package/dist/react/select-nonprofit.js +1 -1
  153. package/dist/react/select-subscription-nonprofit.d.ts +4 -4
  154. package/dist/react/select-subscription-nonprofit.esm.js +1 -1
  155. package/dist/react/select-subscription-nonprofit.js +1 -1
  156. package/dist/react/social-share.esm.js +1 -1
  157. package/dist/react/social-share.js +1 -1
  158. package/dist/react/subscription-impact.esm.js +1 -1
  159. package/dist/react/subscription-impact.js +1 -1
  160. package/dist/react/subscription-management.d.ts +3 -3
  161. package/dist/react/subscription-management.esm.js +1 -1
  162. package/dist/react/subscription-management.js +1 -1
  163. package/dist/utils/events.d.ts +4 -4
  164. package/dist/utils/index.d.ts +4 -4
  165. package/dist/utils/promoManager.d.ts +3 -3
  166. package/package.json +2 -2
  167. package/dist/chunks/index-9s_WWt_5.esm.js +0 -2
  168. package/dist/chunks/index-9s_WWt_5.esm.js.map +0 -1
  169. package/dist/chunks/index-B-4isAGW.esm.js +0 -2
  170. package/dist/chunks/index-B-4isAGW.esm.js.map +0 -1
  171. package/dist/chunks/index-Bp28pZSn.esm.js +0 -2
  172. package/dist/chunks/index-Bp28pZSn.esm.js.map +0 -1
  173. package/dist/chunks/index-CFtmDAHb.esm.js +0 -2
  174. package/dist/chunks/index-CFtmDAHb.esm.js.map +0 -1
  175. package/dist/chunks/index-CL7fWjz1.esm.js +0 -2
  176. package/dist/chunks/index-CL7fWjz1.esm.js.map +0 -1
  177. package/dist/chunks/index-CfgpHhN1.esm.js +0 -2
  178. package/dist/chunks/index-CfgpHhN1.esm.js.map +0 -1
  179. package/dist/chunks/index-ChmhNz41.esm.js.map +0 -1
  180. package/dist/chunks/index-DkGjP-Zg.esm.js.map +0 -1
  181. package/dist/chunks/index-DrOeOk1M.esm.js +0 -2
  182. package/dist/chunks/index-DrOeOk1M.esm.js.map +0 -1
  183. package/dist/chunks/index-oGObXjk6.esm.js +0 -2
  184. package/dist/chunks/index-oGObXjk6.esm.js.map +0 -1
  185. package/dist/chunks/routes-Dl-QWRUP.esm.js +0 -2
  186. package/dist/chunks/routes-Dl-QWRUP.esm.js.map +0 -1
  187. package/dist/chunks/routes-VlLXqb7P.esm.js +0 -2
  188. package/dist/chunks/routes-VlLXqb7P.esm.js.map +0 -1
@@ -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 } 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\";\nimport {\n isEmptyPromoData,\n parseJsonStringArray,\n formatStoreAndReturnPromoCodes,\n getAllPromoCodesFromCookie,\n mapToUnvalidatedPromoCodes,\n} from \"../../utils/promoManager\";\nimport { PROMO_CODES_COOKIE_NAME, PROMO_LOCAL_STORAGE_KEY, TPromoCodeRequest } from \"../../shared/promo-types\";\n\nconst REQUIRED_DATA_PROPS = [\"baseUrl\", \"apiKey\", \"orderId\", \"cartTotal\", \"currencyCode\", \"lang\"];\nconst OPTIONAL_DATA_PROPS = [\n \"storeId\",\n \"postalCode\",\n \"countryCode\",\n \"cart\",\n \"discountCodes\",\n \"promoCodes\",\n \"htmlPromoCodes\",\n \"email\",\n \"partnerUserId\",\n];\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 /**\n * @deprecated Use `promoCodes` instead. `discountCodes` is retained for backward compatibility\n */\n @property({ type: Array })\n public discountCodes?: string[];\n\n @property({ type: Array })\n public promoCodes?: string[];\n\n @property({ type: String })\n public htmlPromoCodes?: 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 @property({ type: Boolean }) public draftConfig = false;\n\n private localStorage = createScopedLocalStorage(this);\n\n get parsedPromoCodes(): string[] {\n return parseJsonStringArray(this.htmlPromoCodes);\n }\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 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 private getManualPromoCodes(): string[] {\n if (this.parsedPromoCodes?.length) {\n return this.parsedPromoCodes;\n }\n if (this.promoCodes?.length) {\n return this.promoCodes;\n }\n return [];\n }\n\n handlePostTransaction = async () => {\n this.enforceConfig();\n const manualPromoCodes = this.getManualPromoCodes();\n const formattedPromosFromLocalStorage = formatStoreAndReturnPromoCodes(\n manualPromoCodes.map((code) => ({ value: code })),\n this.apiKey\n );\n\n const promoCookieData = getAllPromoCodesFromCookie();\n const formattedPromosFromCookie: TPromoCodeRequest = {\n unvalidatedPromoCodes: mapToUnvalidatedPromoCodes(manualPromoCodes.map((code) => ({ value: code }))),\n validatedPromoCodes: promoCookieData?.validatedPromoCodes ?? [],\n };\n\n const formattedPromos = formattedPromosFromLocalStorage ?? formattedPromosFromCookie;\n\n const shouldSendPromos = formattedPromos && !isEmptyPromoData(formattedPromos);\n const result = await postTransaction({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\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 ...(shouldSendPromos && { promos: formattedPromos }),\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 // Emit order created event only when order is registered with Beam for the first time\n if (result.transactionCreated) {\n const localStorageKeys = [\"transaction\", \"cart\", PROMO_LOCAL_STORAGE_KEY];\n localStorageKeys.forEach((key) => {\n this.localStorage.removeItem(key);\n });\n const cookieConfigs = [\n { name: BEAM_CART_COOKIE_NAME, path: \"/\", domain: this.domain },\n { name: PROMO_CODES_COOKIE_NAME, path: \"/\", domain: this.domain },\n ];\n\n cookieConfigs.forEach((config) => deleteCookieValue(config));\n\n // Emit order created event only when order is registered with Beam for the first time\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 ?draftConfig=\"${this.draftConfig}\"\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 storeId=\"${this.storeId}\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n userId=\"${this.userId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n discountCodes=\"${JSON.stringify(this.discountCodes)}\"\n transactionId=\"${this.transactionId}\"\n ?draftConfig=\"${this.draftConfig}\"\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":["h","t","c","d","e","i","o","l","n","REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","manualPromoCodes","formattedPromosFromLocalStorage","formatStoreAndReturnPromoCodes","code","promoCookieData","getAllPromoCodesFromCookie","formattedPromosFromCookie","mapToUnvalidatedPromoCodes","formattedPromos","shouldSendPromos","isEmptyPromoData","result","postTransaction","PROMO_LOCAL_STORAGE_KEY","key","BEAM_CART_COOKIE_NAME","PROMO_CODES_COOKIE_NAME","config","deleteCookieValue","BeamOrderCreatedEvent","AsyncController","parseJsonStringArray","_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/v4/routes\";\nimport \"../redeem-transaction\";\nimport \"../impact-overview\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { BeamNonprofitSelectEvent, BeamOrderCreatedEvent } from \"../../utils/events\";\nimport {\n isEmptyPromoData,\n parseJsonStringArray,\n formatStoreAndReturnPromoCodes,\n getAllPromoCodesFromCookie,\n mapToUnvalidatedPromoCodes,\n} from \"../../utils/promoManager\";\nimport { PROMO_CODES_COOKIE_NAME, PROMO_LOCAL_STORAGE_KEY, TPromoCodeRequest } from \"../../shared/promo-types\";\n\nconst REQUIRED_DATA_PROPS = [\"baseUrl\", \"apiKey\", \"orderId\", \"cartTotal\", \"currencyCode\", \"lang\"];\nconst OPTIONAL_DATA_PROPS = [\n \"storeId\",\n \"postalCode\",\n \"countryCode\",\n \"cart\",\n \"discountCodes\",\n \"promoCodes\",\n \"htmlPromoCodes\",\n \"email\",\n \"partnerUserId\",\n];\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 /**\n * @deprecated Use `promoCodes` instead. `discountCodes` is retained for backward compatibility\n */\n @property({ type: Array })\n public discountCodes?: string[];\n\n @property({ type: Array })\n public promoCodes?: string[];\n\n @property({ type: String })\n public htmlPromoCodes?: 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 @state() private excludeDonationsForRecurringTransactions = false;\n @state() private creationMethod = \"\";\n @property({ type: Boolean }) public draftConfig = false;\n\n private localStorage = createScopedLocalStorage(this);\n\n get parsedPromoCodes(): string[] {\n return parseJsonStringArray(this.htmlPromoCodes);\n }\n\n firstUpdated(_changedProperties: PropertyValues) {\n this.enforceConfig();\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 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 private getManualPromoCodes(): string[] {\n if (this.parsedPromoCodes?.length) {\n return this.parsedPromoCodes;\n }\n if (this.promoCodes?.length) {\n return this.promoCodes;\n }\n return [];\n }\n\n handlePostTransaction = async () => {\n this.enforceConfig();\n const manualPromoCodes = this.getManualPromoCodes();\n const formattedPromosFromLocalStorage = formatStoreAndReturnPromoCodes(\n manualPromoCodes.map((code) => ({ value: code })),\n this.apiKey\n );\n\n const promoCookieData = getAllPromoCodesFromCookie();\n const formattedPromosFromCookie: TPromoCodeRequest = {\n unvalidatedPromoCodes: mapToUnvalidatedPromoCodes(manualPromoCodes.map((code) => ({ value: code }))),\n validatedPromoCodes: promoCookieData?.validatedPromoCodes ?? [],\n };\n\n const formattedPromos = formattedPromosFromLocalStorage ?? formattedPromosFromCookie;\n\n const shouldSendPromos = formattedPromos && !isEmptyPromoData(formattedPromos);\n const result = await postTransaction({\n baseUrl: this.baseUrl,\n apiRoot: \"/api\",\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\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 ...(shouldSendPromos && { promos: formattedPromos }),\n discountCodes: this.discountCodes,\n },\n });\n\n this.transactionId = result.transactionId;\n this.userId = result.beamUserId;\n this.nonprofitId = result.nonprofitId;\n this.excludeDonationsForRecurringTransactions = Boolean(result.reportSettings?.excludeRecurringDonations);\n this.creationMethod = result.creationMethod || \"\";\n\n const isTransactionRedeemed = !!this.nonprofitId;\n this.activeWidget = isTransactionRedeemed ? \"impact-overview\" : \"redeem-transaction\";\n\n // Emit order created event only when order is registered with Beam for the first time\n if (result.transactionCreated) {\n const localStorageKeys = [\"transaction\", \"cart\", PROMO_LOCAL_STORAGE_KEY];\n localStorageKeys.forEach((key) => {\n this.localStorage.removeItem(key);\n });\n const cookieConfigs = [\n { name: BEAM_CART_COOKIE_NAME, path: \"/\", domain: this.domain },\n { name: PROMO_CODES_COOKIE_NAME, path: \"/\", domain: this.domain },\n ];\n\n cookieConfigs.forEach((config) => deleteCookieValue(config));\n\n // Emit order created event only when order is registered with Beam for the first time\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.excludeDonationsForRecurringTransactions && this.creationMethod === \"recurring\") {\n return html``;\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 excludeDonationsForRecurringTransactions=\"${this.excludeDonationsForRecurringTransactions}\"\n ?draftConfig=\"${this.draftConfig}\"\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 storeId=\"${this.storeId}\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n userId=\"${this.userId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n discountCodes=\"${JSON.stringify(this.discountCodes)}\"\n transactionId=\"${this.transactionId}\"\n ?draftConfig=\"${this.draftConfig}\"\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":["I","t","p","d","e","i","o","l","s","REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","manualPromoCodes","formattedPromosFromLocalStorage","formatStoreAndReturnPromoCodes","code","promoCookieData","getAllPromoCodesFromCookie","formattedPromosFromCookie","mapToUnvalidatedPromoCodes","formattedPromos","shouldSendPromos","isEmptyPromoData","result","postTransaction","isTransactionRedeemed","PROMO_LOCAL_STORAGE_KEY","key","BEAM_CART_COOKIE_NAME","PROMO_CODES_COOKIE_NAME","config","deleteCookieValue","BeamOrderCreatedEvent","AsyncController","parseJsonStringArray","_changedProperties","getCookieValue","previousPropertyValues","enforceConfig","MissingConfig","_errorMessage","html","event","selectedNonprofitId","cssReset","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import{g as o,t as d,h as u,y as h}from"../chunks/lit-WqMxC_PA.esm.js";import{M as I}from"../chunks/beam-errors-Ci0d3926.esm.js";import{deleteCookieValue as g,getCookieValue as f}from"../utils/cookies.js";import{c as v,d as b,e as S}from"../chunks/enforce-config-Ba1JkOHs.esm.js";import{createScopedLocalStorage as P}from"../utils/local-storage.js";import{A as U,_ as $}from"../chunks/localize-C25pEGnx.esm.js";import{D as A,p as E}from"../chunks/routes-VlLXqb7P.esm.js";import"./redeem-transaction.js";import"./impact-overview.js";import{B as y}from"../chunks/cart-contents-DkoytiZh.esm.js";import{b as O}from"../chunks/events-BohmT6Lp.esm.js";import{f as w,c as T,m as _,i as K,P as D,d as M,e as B}from"../chunks/promoManager-B9cTR1R3.esm.js";import"../utils/logger.js";import"../chunks/lodash-D3TLHRR_.esm.js";import"../chunks/progress-bar-DF7UuuHb.esm.js";import"../chunks/promo-pill-label-CbW_Vcru.esm.js";import"../chunks/vendor-KKSARHWL.esm.js";import"./beam-partner-logos.js";import"../chunks/loading-template-DG4lkIIc.esm.js";import"../chunks/css-card-grid-CvoGpsJH.esm.js";import"../chunks/_share-dialog-dependencies-FmC7lLQ6.esm.js";import"../chunks/share-button-BXEwUmT4.esm.js";import"../chunks/is-all-html-elements-fcB7UUA1.esm.js";import"../chunks/share-button-C2_VjXAY.esm.js";import"../chunks/responsive-BR8qUfBa.esm.js";var N=Object.defineProperty,e=(l,r,a,m)=>{for(var i=void 0,s=l.length-1,c;s>=0;s--)(c=l[s])&&(i=c(r,a,i)||i);return i&&N(r,a,i),i};const C=["baseUrl","apiKey","orderId","cartTotal","currencyCode","lang"],R=["storeId","postalCode","countryCode","cart","discountCodes","promoCodes","htmlPromoCodes","email","partnerUserId"];class t extends u{constructor(){super(...arguments),this.baseUrl=A,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.draftConfig=!1,this.localStorage=P(this),this.handlePostTransaction=async()=>{this.enforceConfig();const r=this.getManualPromoCodes(),a=w(r.map(n=>({value:n})),this.apiKey),m=T(),i={unvalidatedPromoCodes:_(r.map(n=>({value:n}))),validatedPromoCodes:m?.validatedPromoCodes??[]},s=a??i,c=s&&!K(s),p=await E({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{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,...c&&{promos:s},discountCodes:this.discountCodes}});return this.transactionId=p.transactionId,this.userId=p.beamUserId,this.nonprofitId=p.nonprofitId,this.activeWidget=this.nonprofitId?"impact-overview":"redeem-transaction",p.transactionCreated&&(["transaction","cart",D].forEach(n=>{this.localStorage.removeItem(n)}),[{name:y,path:"/",domain:this.domain},{name:M,path:"/",domain:this.domain}].forEach(n=>g(n)),dispatchEvent(new O({transactionId:p.transactionId,orderId:this.orderId,cartTotal:this.cartTotal,currencyCode:this.currencyCode}))),p},this.transactionDataController=new U(this,this.handlePostTransaction)}get parsedPromoCodes(){return B(this.htmlPromoCodes)}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=f(y)||null,this.selectionId&&this.nonprofitId&&(this.activeWidget="impact-overview")}async updated(r){[...C,...R].some(a=>r.has(a))&&await this.transactionDataController.exec()}enforceConfig(){if(S(C,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")}getManualPromoCodes(){return this.parsedPromoCodes?.length?this.parsedPromoCodes:this.promoCodes?.length?this.promoCodes:[]}render(){return this.transactionDataController.loading?"":this.transactionDataController.error?this.debug?$({error:this.transactionDataController.error}):"":this.activeWidget==="redeem-transaction"?h`
1
+ import{g as o,t as i,h as g,y as l}from"../chunks/lit-WqMxC_PA.esm.js";import{M as I}from"../chunks/beam-errors-Ci0d3926.esm.js";import{deleteCookieValue as f,getCookieValue as v}from"../utils/cookies.js";import{c as b,d as S,e as $}from"../chunks/enforce-config-Ba1JkOHs.esm.js";import{createScopedLocalStorage as P}from"../utils/local-storage.js";import{A as U,_ as T}from"../chunks/localize-C25pEGnx.esm.js";import{D as A}from"../chunks/routes-D7s2_Xn5.esm.js";import{p as D}from"../chunks/index-CjT2ycv5.esm.js";import"./impact-overview.js";import{B as u}from"../chunks/cart-contents-DkoytiZh.esm.js";import{b as E}from"../chunks/events-BohmT6Lp.esm.js";import{f as O,c as M,m as R,i as w,P as _,d as K,e as x}from"../chunks/promoManager-B9cTR1R3.esm.js";import"../utils/logger.js";import"../chunks/lodash-D3TLHRR_.esm.js";import"../chunks/progress-bar-DF7UuuHb.esm.js";import"../chunks/promo-pill-label-CbW_Vcru.esm.js";import"../chunks/vendor-KKSARHWL.esm.js";import"./beam-partner-logos.js";import"../chunks/loading-template-DG4lkIIc.esm.js";import"../chunks/css-card-grid-CvoGpsJH.esm.js";import"../chunks/_share-dialog-dependencies-DElW9Yip.esm.js";import"../chunks/share-button-CM4kwufS.esm.js";import"../chunks/is-all-html-elements-fcB7UUA1.esm.js";import"../chunks/share-button-8zVx6bYw.esm.js";import"../chunks/responsive-BR8qUfBa.esm.js";var B=Object.defineProperty,e=(h,r,a,m)=>{for(var s=void 0,d=h.length-1,c;d>=0;d--)(c=h[d])&&(s=c(r,a,s)||s);return s&&B(r,a,s),s};const y=["baseUrl","apiKey","orderId","cartTotal","currencyCode","lang"],F=["storeId","postalCode","countryCode","cart","discountCodes","promoCodes","htmlPromoCodes","email","partnerUserId"];class t extends g{constructor(){super(...arguments),this.baseUrl=A,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.excludeDonationsForRecurringTransactions=!1,this.creationMethod="",this.draftConfig=!1,this.localStorage=P(this),this.handlePostTransaction=async()=>{this.enforceConfig();const r=this.getManualPromoCodes(),a=O(r.map(p=>({value:p})),this.apiKey),m=M(),s={unvalidatedPromoCodes:R(r.map(p=>({value:p}))),validatedPromoCodes:m?.validatedPromoCodes??[]},d=a??s,c=d&&!w(d),n=await D({baseUrl:this.baseUrl,apiRoot:"/api",headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{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,...c&&{promos:d},discountCodes:this.discountCodes}});this.transactionId=n.transactionId,this.userId=n.beamUserId,this.nonprofitId=n.nonprofitId,this.excludeDonationsForRecurringTransactions=!!n.reportSettings?.excludeRecurringDonations,this.creationMethod=n.creationMethod||"";const C=!!this.nonprofitId;return this.activeWidget=C?"impact-overview":"redeem-transaction",n.transactionCreated&&(["transaction","cart",_].forEach(p=>{this.localStorage.removeItem(p)}),[{name:u,path:"/",domain:this.domain},{name:K,path:"/",domain:this.domain}].forEach(p=>f(p)),dispatchEvent(new E({transactionId:n.transactionId,orderId:this.orderId,cartTotal:this.cartTotal,currencyCode:this.currencyCode}))),n},this.transactionDataController=new U(this,this.handlePostTransaction)}get parsedPromoCodes(){return x(this.htmlPromoCodes)}firstUpdated(r){this.enforceConfig(),this.selectionId=this.localStorage.getItem("transaction")||null,this.cartId=this.localStorage.getItemJson("cart")?.cartId||null,this.beamCartId=v(u)||null,this.selectionId&&this.nonprofitId&&(this.activeWidget="impact-overview")}async updated(r){[...y,...F].some(a=>r.has(a))&&await this.transactionDataController.exec()}enforceConfig(){if($(y,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")}getManualPromoCodes(){return this.parsedPromoCodes?.length?this.parsedPromoCodes:this.promoCodes?.length?this.promoCodes:[]}render(){return this.transactionDataController.loading?"":this.transactionDataController.error?this.debug?T({error:this.transactionDataController.error}):"":this.excludeDonationsForRecurringTransactions&&this.creationMethod==="recurring"?l``:this.activeWidget==="redeem-transaction"?l`
2
2
  <beam-redeem-transaction
3
3
  part="redeem-transaction"
4
4
  baseUrl="${this.baseUrl}"
@@ -9,11 +9,12 @@ import{g as o,t as d,h as u,y as h}from"../chunks/lit-WqMxC_PA.esm.js";import{M
9
9
  transactionId="${this.transactionId}"
10
10
  cart="${JSON.stringify(this.cart)}"
11
11
  lang="${this.lang}"
12
+ excludeDonationsForRecurringTransactions="${this.excludeDonationsForRecurringTransactions}"
12
13
  ?draftConfig="${this.draftConfig}"
13
14
  ?debug="${this.debug}"
14
15
  @beamnonprofitselect="${r=>{if(!(r instanceof CustomEvent))return;const{selectedNonprofitId:a}=r.detail;this.nonprofitId=a??null,this.activeWidget="impact-overview"}}"
15
16
  ></beam-redeem-transaction>
16
- `:this.activeWidget==="impact-overview"?h`
17
+ `:this.activeWidget==="impact-overview"?l`
17
18
  <beam-impact-overview
18
19
  part="impact-overview"
19
20
  storeId="${this.storeId}"
@@ -27,5 +28,5 @@ import{g as o,t as d,h as u,y as h}from"../chunks/lit-WqMxC_PA.esm.js";import{M
27
28
  ?draftConfig="${this.draftConfig}"
28
29
  ?debug="${this.debug}"
29
30
  ></beam-impact-overview>
30
- `:""}}t.tagName="beam-post-purchase",t.styles=[v],e([o({type:String})],t.prototype,"baseUrl"),e([o({type:String})],t.prototype,"apiKey"),e([o({type:Number,reflect:!0})],t.prototype,"storeId"),e([o({type:String})],t.prototype,"postalCode"),e([o({type:String})],t.prototype,"countryCode"),e([o({type:String})],t.prototype,"orderId"),e([o({type:String})],t.prototype,"email"),e([o({type:String})],t.prototype,"partnerUserId"),e([o({type:Number})],t.prototype,"cartTotal"),e([o({type:String})],t.prototype,"currencyCode"),e([o({type:String})],t.prototype,"lang"),e([o({type:Object})],t.prototype,"cart"),e([o({type:Array})],t.prototype,"discountCodes"),e([o({type:Array})],t.prototype,"promoCodes"),e([o({type:String})],t.prototype,"htmlPromoCodes"),e([o({type:String})],t.prototype,"domain"),e([o({type:Boolean})],t.prototype,"debug"),e([d()],t.prototype,"activeWidget"),e([d()],t.prototype,"nonprofitId"),e([d()],t.prototype,"selectionId"),e([d()],t.prototype,"cartId"),e([d()],t.prototype,"beamCartId"),e([d()],t.prototype,"userId"),e([d()],t.prototype,"transactionId"),e([o({type:Boolean})],t.prototype,"draftConfig"),b(t);export{t as BeamPostPurchase};
31
+ `:""}}t.tagName="beam-post-purchase",t.styles=[b],e([o({type:String})],t.prototype,"baseUrl"),e([o({type:String})],t.prototype,"apiKey"),e([o({type:Number,reflect:!0})],t.prototype,"storeId"),e([o({type:String})],t.prototype,"postalCode"),e([o({type:String})],t.prototype,"countryCode"),e([o({type:String})],t.prototype,"orderId"),e([o({type:String})],t.prototype,"email"),e([o({type:String})],t.prototype,"partnerUserId"),e([o({type:Number})],t.prototype,"cartTotal"),e([o({type:String})],t.prototype,"currencyCode"),e([o({type:String})],t.prototype,"lang"),e([o({type:Object})],t.prototype,"cart"),e([o({type:Array})],t.prototype,"discountCodes"),e([o({type:Array})],t.prototype,"promoCodes"),e([o({type:String})],t.prototype,"htmlPromoCodes"),e([o({type:String})],t.prototype,"domain"),e([o({type:Boolean})],t.prototype,"debug"),e([i()],t.prototype,"activeWidget"),e([i()],t.prototype,"nonprofitId"),e([i()],t.prototype,"selectionId"),e([i()],t.prototype,"cartId"),e([i()],t.prototype,"beamCartId"),e([i()],t.prototype,"userId"),e([i()],t.prototype,"transactionId"),e([i()],t.prototype,"excludeDonationsForRecurringTransactions"),e([i()],t.prototype,"creationMethod"),e([o({type:Boolean})],t.prototype,"draftConfig"),S(t);export{t as BeamPostPurchase};
31
32
  //# sourceMappingURL=post-purchase.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"post-purchase.js","sources":["../../src/components/post-purchase/index.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { 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\";\nimport {\n isEmptyPromoData,\n parseJsonStringArray,\n formatStoreAndReturnPromoCodes,\n getAllPromoCodesFromCookie,\n mapToUnvalidatedPromoCodes,\n} from \"../../utils/promoManager\";\nimport { PROMO_CODES_COOKIE_NAME, PROMO_LOCAL_STORAGE_KEY, TPromoCodeRequest } from \"../../shared/promo-types\";\n\nconst REQUIRED_DATA_PROPS = [\"baseUrl\", \"apiKey\", \"orderId\", \"cartTotal\", \"currencyCode\", \"lang\"];\nconst OPTIONAL_DATA_PROPS = [\n \"storeId\",\n \"postalCode\",\n \"countryCode\",\n \"cart\",\n \"discountCodes\",\n \"promoCodes\",\n \"htmlPromoCodes\",\n \"email\",\n \"partnerUserId\",\n];\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 /**\n * @deprecated Use `promoCodes` instead. `discountCodes` is retained for backward compatibility\n */\n @property({ type: Array })\n public discountCodes?: string[];\n\n @property({ type: Array })\n public promoCodes?: string[];\n\n @property({ type: String })\n public htmlPromoCodes?: 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 @property({ type: Boolean }) public draftConfig = false;\n\n private localStorage = createScopedLocalStorage(this);\n\n get parsedPromoCodes(): string[] {\n return parseJsonStringArray(this.htmlPromoCodes);\n }\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 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 private getManualPromoCodes(): string[] {\n if (this.parsedPromoCodes?.length) {\n return this.parsedPromoCodes;\n }\n if (this.promoCodes?.length) {\n return this.promoCodes;\n }\n return [];\n }\n\n handlePostTransaction = async () => {\n this.enforceConfig();\n const manualPromoCodes = this.getManualPromoCodes();\n const formattedPromosFromLocalStorage = formatStoreAndReturnPromoCodes(\n manualPromoCodes.map((code) => ({ value: code })),\n this.apiKey\n );\n\n const promoCookieData = getAllPromoCodesFromCookie();\n const formattedPromosFromCookie: TPromoCodeRequest = {\n unvalidatedPromoCodes: mapToUnvalidatedPromoCodes(manualPromoCodes.map((code) => ({ value: code }))),\n validatedPromoCodes: promoCookieData?.validatedPromoCodes ?? [],\n };\n\n const formattedPromos = formattedPromosFromLocalStorage ?? formattedPromosFromCookie;\n\n const shouldSendPromos = formattedPromos && !isEmptyPromoData(formattedPromos);\n const result = await postTransaction({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\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 ...(shouldSendPromos && { promos: formattedPromos }),\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 // Emit order created event only when order is registered with Beam for the first time\n if (result.transactionCreated) {\n const localStorageKeys = [\"transaction\", \"cart\", PROMO_LOCAL_STORAGE_KEY];\n localStorageKeys.forEach((key) => {\n this.localStorage.removeItem(key);\n });\n const cookieConfigs = [\n { name: BEAM_CART_COOKIE_NAME, path: \"/\", domain: this.domain },\n { name: PROMO_CODES_COOKIE_NAME, path: \"/\", domain: this.domain },\n ];\n\n cookieConfigs.forEach((config) => deleteCookieValue(config));\n\n // Emit order created event only when order is registered with Beam for the first time\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 ?draftConfig=\"${this.draftConfig}\"\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 storeId=\"${this.storeId}\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n userId=\"${this.userId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n discountCodes=\"${JSON.stringify(this.discountCodes)}\"\n transactionId=\"${this.transactionId}\"\n ?draftConfig=\"${this.draftConfig}\"\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":["h","t","c","d","e","i","o","l","n","REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","manualPromoCodes","formattedPromosFromLocalStorage","formatStoreAndReturnPromoCodes","code","promoCookieData","getAllPromoCodesFromCookie","formattedPromosFromCookie","mapToUnvalidatedPromoCodes","formattedPromos","shouldSendPromos","isEmptyPromoData","result","postTransaction","PROMO_LOCAL_STORAGE_KEY","key","BEAM_CART_COOKIE_NAME","PROMO_CODES_COOKIE_NAME","config","deleteCookieValue","BeamOrderCreatedEvent","AsyncController","parseJsonStringArray","_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/v4/routes\";\nimport \"../redeem-transaction\";\nimport \"../impact-overview\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { BeamNonprofitSelectEvent, BeamOrderCreatedEvent } from \"../../utils/events\";\nimport {\n isEmptyPromoData,\n parseJsonStringArray,\n formatStoreAndReturnPromoCodes,\n getAllPromoCodesFromCookie,\n mapToUnvalidatedPromoCodes,\n} from \"../../utils/promoManager\";\nimport { PROMO_CODES_COOKIE_NAME, PROMO_LOCAL_STORAGE_KEY, TPromoCodeRequest } from \"../../shared/promo-types\";\n\nconst REQUIRED_DATA_PROPS = [\"baseUrl\", \"apiKey\", \"orderId\", \"cartTotal\", \"currencyCode\", \"lang\"];\nconst OPTIONAL_DATA_PROPS = [\n \"storeId\",\n \"postalCode\",\n \"countryCode\",\n \"cart\",\n \"discountCodes\",\n \"promoCodes\",\n \"htmlPromoCodes\",\n \"email\",\n \"partnerUserId\",\n];\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 /**\n * @deprecated Use `promoCodes` instead. `discountCodes` is retained for backward compatibility\n */\n @property({ type: Array })\n public discountCodes?: string[];\n\n @property({ type: Array })\n public promoCodes?: string[];\n\n @property({ type: String })\n public htmlPromoCodes?: 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 @state() private excludeDonationsForRecurringTransactions = false;\n @state() private creationMethod = \"\";\n @property({ type: Boolean }) public draftConfig = false;\n\n private localStorage = createScopedLocalStorage(this);\n\n get parsedPromoCodes(): string[] {\n return parseJsonStringArray(this.htmlPromoCodes);\n }\n\n firstUpdated(_changedProperties: PropertyValues) {\n this.enforceConfig();\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 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 private getManualPromoCodes(): string[] {\n if (this.parsedPromoCodes?.length) {\n return this.parsedPromoCodes;\n }\n if (this.promoCodes?.length) {\n return this.promoCodes;\n }\n return [];\n }\n\n handlePostTransaction = async () => {\n this.enforceConfig();\n const manualPromoCodes = this.getManualPromoCodes();\n const formattedPromosFromLocalStorage = formatStoreAndReturnPromoCodes(\n manualPromoCodes.map((code) => ({ value: code })),\n this.apiKey\n );\n\n const promoCookieData = getAllPromoCodesFromCookie();\n const formattedPromosFromCookie: TPromoCodeRequest = {\n unvalidatedPromoCodes: mapToUnvalidatedPromoCodes(manualPromoCodes.map((code) => ({ value: code }))),\n validatedPromoCodes: promoCookieData?.validatedPromoCodes ?? [],\n };\n\n const formattedPromos = formattedPromosFromLocalStorage ?? formattedPromosFromCookie;\n\n const shouldSendPromos = formattedPromos && !isEmptyPromoData(formattedPromos);\n const result = await postTransaction({\n baseUrl: this.baseUrl,\n apiRoot: \"/api\",\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\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 ...(shouldSendPromos && { promos: formattedPromos }),\n discountCodes: this.discountCodes,\n },\n });\n\n this.transactionId = result.transactionId;\n this.userId = result.beamUserId;\n this.nonprofitId = result.nonprofitId;\n this.excludeDonationsForRecurringTransactions = Boolean(result.reportSettings?.excludeRecurringDonations);\n this.creationMethod = result.creationMethod || \"\";\n\n const isTransactionRedeemed = !!this.nonprofitId;\n this.activeWidget = isTransactionRedeemed ? \"impact-overview\" : \"redeem-transaction\";\n\n // Emit order created event only when order is registered with Beam for the first time\n if (result.transactionCreated) {\n const localStorageKeys = [\"transaction\", \"cart\", PROMO_LOCAL_STORAGE_KEY];\n localStorageKeys.forEach((key) => {\n this.localStorage.removeItem(key);\n });\n const cookieConfigs = [\n { name: BEAM_CART_COOKIE_NAME, path: \"/\", domain: this.domain },\n { name: PROMO_CODES_COOKIE_NAME, path: \"/\", domain: this.domain },\n ];\n\n cookieConfigs.forEach((config) => deleteCookieValue(config));\n\n // Emit order created event only when order is registered with Beam for the first time\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.excludeDonationsForRecurringTransactions && this.creationMethod === \"recurring\") {\n return html``;\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 excludeDonationsForRecurringTransactions=\"${this.excludeDonationsForRecurringTransactions}\"\n ?draftConfig=\"${this.draftConfig}\"\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 storeId=\"${this.storeId}\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n userId=\"${this.userId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n discountCodes=\"${JSON.stringify(this.discountCodes)}\"\n transactionId=\"${this.transactionId}\"\n ?draftConfig=\"${this.draftConfig}\"\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":["I","t","p","d","e","i","o","l","s","REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","manualPromoCodes","formattedPromosFromLocalStorage","formatStoreAndReturnPromoCodes","code","promoCookieData","getAllPromoCodesFromCookie","formattedPromosFromCookie","mapToUnvalidatedPromoCodes","formattedPromos","shouldSendPromos","isEmptyPromoData","result","postTransaction","isTransactionRedeemed","PROMO_LOCAL_STORAGE_KEY","key","BEAM_CART_COOKIE_NAME","PROMO_CODES_COOKIE_NAME","config","deleteCookieValue","BeamOrderCreatedEvent","AsyncController","parseJsonStringArray","_changedProperties","getCookieValue","previousPropertyValues","enforceConfig","MissingConfig","_errorMessage","html","event","selectedNonprofitId","cssReset","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import * as lit from 'lit';
2
2
  import { LitElement } from 'lit';
3
3
  import * as lit_html from 'lit-html';
4
- import { p as postProductDetailsPage } from '../chunks/routes-DDRd747e.esm.js';
4
+ import { p as postProductDetailsPage } from '../chunks/routes-BwRUVGsk.esm.js';
5
5
  import { T as TUrl, L as LANGUAGES } from '../chunks/types-C7gqAyyH.esm.js';
6
6
  import '../chunks/promo-pill-label-BXRqZHET.esm.js';
7
7
 
@@ -1,4 +1,4 @@
1
- import{j as x,y as r,f as w,g as d,t as k,h as S,k as $}from"../chunks/lit-WqMxC_PA.esm.js";import{u as g,A as I,_ as T,i as f,d as m,a as F}from"../chunks/localize-Btu9xYcE.esm.js";import{D as z,W as u,l as E,S as B}from"../chunks/routes-Dl-QWRUP.esm.js";import{c as L,d as A,e as M}from"../chunks/enforce-config-CZ3ToOgr.esm.js";import{c as W}from"../chunks/responsive-BR8qUfBa.esm.js";import"../chunks/vendor-KKSARHWL.esm.js";import{p as G}from"../chunks/promo-pill-label-CbW_Vcru.esm.js";import{f as _,i as j,e as R,h as H,k as K,s as U}from"../chunks/promoManager-fl54hq13.esm.js";import{B as V}from"../chunks/cart-contents-DkoytiZh.esm.js";import{createScopedLocalStorage as N}from"../utils/local-storage.esm.js";import{makeApiKeyHeader as O}from"../utils/makeApiKeyHeader.esm.js";import{f as D,a as v}from"../chunks/events-BohmT6Lp.esm.js";import{getBeamCartId as q}from"../utils/cart.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../utils/logger.esm.js";import"../utils/cookies.esm.js";const J=(l="",{borderRadius:e="0px",borderStyle:t="unset",borderColor:o="#000000",borderWidth:i="1px"}={})=>{const a=l.startsWith("--beam-")?l:`--beam-${l}`;return{[`${a}-borderRadius`]:e,[`${a}-borderStyle`]:t,[`${a}-borderColor`]:o,[`${a}-borderWidth`]:i}},Q=(l="",{borderRadius:e="0px",borderStyle:t="unset",borderColor:o="#000000",borderWidth:i="1px"}={})=>{const a=l.startsWith("--beam-")?l:`--beam-${l}`;return x(` border-radius: var(${a}-borderRadius, ${e});
1
+ import{j as x,y as r,f as w,g as d,t as k,h as S,k as $}from"../chunks/lit-WqMxC_PA.esm.js";import{u as g,A as I,_ as T,i as f,d as m,a as F}from"../chunks/localize-Btu9xYcE.esm.js";import{D as z,W as u,j as E,S as B}from"../chunks/routes-BnPd0lrO.esm.js";import{c as L,d as A,e as M}from"../chunks/enforce-config-CZ3ToOgr.esm.js";import{c as W}from"../chunks/responsive-BR8qUfBa.esm.js";import"../chunks/vendor-KKSARHWL.esm.js";import{p as G}from"../chunks/promo-pill-label-CbW_Vcru.esm.js";import{f as _,i as j,e as R,h as H,k as K,s as U}from"../chunks/promoManager-fl54hq13.esm.js";import{B as V}from"../chunks/cart-contents-DkoytiZh.esm.js";import{createScopedLocalStorage as N}from"../utils/local-storage.esm.js";import{makeApiKeyHeader as O}from"../utils/makeApiKeyHeader.esm.js";import{f as D,a as v}from"../chunks/events-BohmT6Lp.esm.js";import{getBeamCartId as q}from"../utils/cart.esm.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../utils/logger.esm.js";import"../utils/cookies.esm.js";const J=(l="",{borderRadius:e="0px",borderStyle:t="unset",borderColor:o="#000000",borderWidth:i="1px"}={})=>{const a=l.startsWith("--beam-")?l:`--beam-${l}`;return{[`${a}-borderRadius`]:e,[`${a}-borderStyle`]:t,[`${a}-borderColor`]:o,[`${a}-borderWidth`]:i}},Q=(l="",{borderRadius:e="0px",borderStyle:t="unset",borderColor:o="#000000",borderWidth:i="1px"}={})=>{const a=l.startsWith("--beam-")?l:`--beam-${l}`;return x(` border-radius: var(${a}-borderRadius, ${e});
2
2
  border-style: var(${a}-borderStyle, ${t});
3
3
  border-color: var(${a}-borderColor, ${o});
4
4
  border-width: var(${a}-borderWidth, ${i});
@@ -1,4 +1,4 @@
1
- import{j as x,y as r,f as w,g as d,t as k,h as S,k as $}from"../chunks/lit-WqMxC_PA.esm.js";import{u as g,A as I,_ as T,i as f,d as m,a as F}from"../chunks/localize-C25pEGnx.esm.js";import{D as z,W as u,l as E,S as B}from"../chunks/routes-VlLXqb7P.esm.js";import{c as L,d as A,e as M}from"../chunks/enforce-config-Ba1JkOHs.esm.js";import{c as W}from"../chunks/responsive-BR8qUfBa.esm.js";import"../chunks/vendor-KKSARHWL.esm.js";import{p as G}from"../chunks/promo-pill-label-CbW_Vcru.esm.js";import{f as _,i as j,e as R,h as H,k as K,s as U}from"../chunks/promoManager-B9cTR1R3.esm.js";import{B as V}from"../chunks/cart-contents-DkoytiZh.esm.js";import{createScopedLocalStorage as N}from"../utils/local-storage.js";import{makeApiKeyHeader as O}from"../utils/makeApiKeyHeader.js";import{f as D,a as v}from"../chunks/events-BohmT6Lp.esm.js";import{getBeamCartId as q}from"../utils/cart.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../utils/logger.js";import"../utils/cookies.js";const J=(l="",{borderRadius:e="0px",borderStyle:t="unset",borderColor:o="#000000",borderWidth:i="1px"}={})=>{const a=l.startsWith("--beam-")?l:`--beam-${l}`;return{[`${a}-borderRadius`]:e,[`${a}-borderStyle`]:t,[`${a}-borderColor`]:o,[`${a}-borderWidth`]:i}},Q=(l="",{borderRadius:e="0px",borderStyle:t="unset",borderColor:o="#000000",borderWidth:i="1px"}={})=>{const a=l.startsWith("--beam-")?l:`--beam-${l}`;return x(` border-radius: var(${a}-borderRadius, ${e});
1
+ import{j as x,y as r,f as w,g as d,t as k,h as S,k as $}from"../chunks/lit-WqMxC_PA.esm.js";import{u as g,A as I,_ as T,i as f,d as m,a as F}from"../chunks/localize-C25pEGnx.esm.js";import{D as z,W as u,j as E,S as B}from"../chunks/routes-D7s2_Xn5.esm.js";import{c as L,d as A,e as M}from"../chunks/enforce-config-Ba1JkOHs.esm.js";import{c as W}from"../chunks/responsive-BR8qUfBa.esm.js";import"../chunks/vendor-KKSARHWL.esm.js";import{p as G}from"../chunks/promo-pill-label-CbW_Vcru.esm.js";import{f as _,i as j,e as R,h as H,k as K,s as U}from"../chunks/promoManager-B9cTR1R3.esm.js";import{B as V}from"../chunks/cart-contents-DkoytiZh.esm.js";import{createScopedLocalStorage as N}from"../utils/local-storage.js";import{makeApiKeyHeader as O}from"../utils/makeApiKeyHeader.js";import{f as D,a as v}from"../chunks/events-BohmT6Lp.esm.js";import{getBeamCartId as q}from"../utils/cart.js";import"../chunks/beam-errors-Ci0d3926.esm.js";import"../utils/logger.js";import"../utils/cookies.js";const J=(l="",{borderRadius:e="0px",borderStyle:t="unset",borderColor:o="#000000",borderWidth:i="1px"}={})=>{const a=l.startsWith("--beam-")?l:`--beam-${l}`;return{[`${a}-borderRadius`]:e,[`${a}-borderStyle`]:t,[`${a}-borderColor`]:o,[`${a}-borderWidth`]:i}},Q=(l="",{borderRadius:e="0px",borderStyle:t="unset",borderColor:o="#000000",borderWidth:i="1px"}={})=>{const a=l.startsWith("--beam-")?l:`--beam-${l}`;return x(` border-radius: var(${a}-borderRadius, ${e});
2
2
  border-style: var(${a}-borderStyle, ${t});
3
3
  border-color: var(${a}-borderColor, ${o});
4
4
  border-width: var(${a}-borderWidth, ${i});
@@ -6,9 +6,9 @@ import '../chunks/progress-bar-CveZ8E6Q.esm.js';
6
6
  import '../chunks/promo-pill-label-BXRqZHET.esm.js';
7
7
  import './beam-partner-logos.js';
8
8
  import { a as TId, T as TNumericId } from '../chunks/types-CPxMwnoR.esm.js';
9
- import { T as TCart } from '../chunks/cart-contents-CUgc4y1N.esm.js';
9
+ import { T as TCart } from '../chunks/cart-contents-oArgpFbi.esm.js';
10
10
  import { L as LANGUAGES } from '../chunks/types-C7gqAyyH.esm.js';
11
- import '../chunks/openapi-spec-VAt3phhg.esm.js';
11
+ import '../chunks/openapi-spec-x9NbL7bU.esm.js';
12
12
 
13
13
  interface TRequiredConfig {
14
14
  apiKey: string;