@beamimpact/web-sdk 1.57.0 → 1.57.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 (225) hide show
  1. package/dist/chunks/_share-dialog-dependencies-BEUnzuWq.esm.js +2 -0
  2. package/dist/chunks/{_share-dialog-dependencies-U9953n3E.esm.js.map → _share-dialog-dependencies-BEUnzuWq.esm.js.map} +1 -1
  3. package/dist/chunks/{cart-ChovPXmM.esm.d.ts → cart-CKltrzQt.esm.d.ts} +20 -9
  4. package/dist/chunks/{css-card-grid-BUidQqf0.esm.js → css-card-grid-CiqEjkwR.esm.js} +2 -2
  5. package/dist/chunks/{css-card-grid-BUidQqf0.esm.js.map → css-card-grid-CiqEjkwR.esm.js.map} +1 -1
  6. package/dist/chunks/{index-IQOpw0qx.esm.d.ts → index-BAROgNYE.esm.d.ts} +7 -1
  7. package/dist/chunks/{index-CdinWvYu.esm.d.ts → index-BH3YaPLG.esm.d.ts} +1 -1
  8. package/dist/chunks/index-BgalrCS_.esm.js +32 -0
  9. package/dist/chunks/{index-CTsxQr7R.esm.js.map → index-BgalrCS_.esm.js.map} +1 -1
  10. package/dist/chunks/index-C60Vejym.esm.js +32 -0
  11. package/dist/chunks/{index-DBKUxzAl.esm.js.map → index-C60Vejym.esm.js.map} +1 -1
  12. package/dist/chunks/{index-BG4XJXUa.esm.d.ts → index-C6a13iqC.esm.d.ts} +3 -1
  13. package/dist/chunks/index-D6aFJ4cU.esm.js +2 -0
  14. package/dist/chunks/index-D6aFJ4cU.esm.js.map +1 -0
  15. package/dist/chunks/index-Dm-K2MLY.esm.js +31 -0
  16. package/dist/chunks/index-Dm-K2MLY.esm.js.map +1 -0
  17. package/dist/chunks/{index-DTw-q6W4.esm.js → index-DqhM4Yoj.esm.js} +11 -11
  18. package/dist/chunks/index-DqhM4Yoj.esm.js.map +1 -0
  19. package/dist/chunks/{index-CVmIOuEY.esm.js → index-HqfLVFOU.esm.js} +11 -11
  20. package/dist/chunks/index-HqfLVFOU.esm.js.map +1 -0
  21. package/dist/chunks/index-MAMeVd6l.esm.js +2 -0
  22. package/dist/chunks/{index--PfL-_nX.esm.js.map → index-MAMeVd6l.esm.js.map} +1 -1
  23. package/dist/chunks/{index-_0XeyyF9.esm.d.ts → index-OYSJ-2mk.esm.d.ts} +1 -1
  24. package/dist/chunks/{index-BY5lSRmw.esm.d.ts → index-mBTWm4YP.esm.d.ts} +2 -2
  25. package/dist/chunks/{promo-pill-label-BdTmmg_U.esm.js → promo-pill-label-5HmbDVmU.esm.js} +2 -2
  26. package/dist/chunks/{promo-pill-label-BdTmmg_U.esm.js.map → promo-pill-label-5HmbDVmU.esm.js.map} +1 -1
  27. package/dist/chunks/{share-button-7sI6zg-x.esm.js → share-button-5gfPmeEh.esm.js} +3 -3
  28. package/dist/chunks/{share-button-7sI6zg-x.esm.js.map → share-button-5gfPmeEh.esm.js.map} +1 -1
  29. package/dist/chunks/{share-button-BaIbuJOl.esm.js → share-button-C4yPLL_t.esm.js} +3 -3
  30. package/dist/chunks/{share-button-BaIbuJOl.esm.js.map → share-button-C4yPLL_t.esm.js.map} +1 -1
  31. package/dist/chunks/{update-cart-CcgzHTEm.esm.d.ts → update-cart-DoJGAdoU.esm.d.ts} +2 -2
  32. package/dist/chunks/utils-C5hmbxa4.esm.js +2 -0
  33. package/dist/chunks/utils-C5hmbxa4.esm.js.map +1 -0
  34. package/dist/chunks/{utils-D8HO_RIu.esm.d.ts → utils-COGFpDER.esm.d.ts} +84 -84
  35. package/dist/components/beam-partner-logos.d.ts +1 -1
  36. package/dist/components/community-impact.d.ts +1 -1
  37. package/dist/components/community-impact.esm.js +4 -4
  38. package/dist/components/community-impact.esm.js.map +1 -1
  39. package/dist/components/community-impact.js +4 -4
  40. package/dist/components/community-impact.js.map +1 -1
  41. package/dist/components/cumulative-impact.d.ts +1 -1
  42. package/dist/components/cumulative-impact.esm.js +2 -2
  43. package/dist/components/cumulative-impact.esm.js.map +1 -1
  44. package/dist/components/cumulative-impact.js +2 -2
  45. package/dist/components/cumulative-impact.js.map +1 -1
  46. package/dist/components/impact-overview.d.ts +1 -1
  47. package/dist/components/impact-overview.esm.js +4 -4
  48. package/dist/components/impact-overview.esm.js.map +1 -1
  49. package/dist/components/impact-overview.js +4 -4
  50. package/dist/components/impact-overview.js.map +1 -1
  51. package/dist/components/index.d.ts +1 -1
  52. package/dist/components/index.esm.js +1 -1
  53. package/dist/components/index.js +1 -1
  54. package/dist/components/post-purchase.d.ts +1 -1
  55. package/dist/components/post-purchase.esm.js +1 -1
  56. package/dist/components/post-purchase.js +1 -1
  57. package/dist/components/product-details-page.d.ts +1 -1
  58. package/dist/components/product-details-page.esm.js +4 -4
  59. package/dist/components/product-details-page.esm.js.map +1 -1
  60. package/dist/components/product-details-page.js +4 -4
  61. package/dist/components/product-details-page.js.map +1 -1
  62. package/dist/components/redeem-transaction.d.ts +1 -1
  63. package/dist/components/redeem-transaction.esm.js +1 -1
  64. package/dist/components/redeem-transaction.js +1 -1
  65. package/dist/components/select-nonprofit.d.ts +1 -1
  66. package/dist/components/select-nonprofit.esm.js +12 -12
  67. package/dist/components/select-nonprofit.esm.js.map +1 -1
  68. package/dist/components/select-nonprofit.js +12 -12
  69. package/dist/components/select-nonprofit.js.map +1 -1
  70. package/dist/components/select-subscription-nonprofit.d.ts +1 -1
  71. package/dist/components/select-subscription-nonprofit.esm.js +11 -11
  72. package/dist/components/select-subscription-nonprofit.esm.js.map +1 -1
  73. package/dist/components/select-subscription-nonprofit.js +11 -11
  74. package/dist/components/select-subscription-nonprofit.js.map +1 -1
  75. package/dist/components/shopify.d.ts +4 -4
  76. package/dist/components/shopify.esm.js +1 -1
  77. package/dist/components/shopify.esm.js.map +1 -1
  78. package/dist/components/shopify.js +1 -1
  79. package/dist/components/shopify.js.map +1 -1
  80. package/dist/components/social-share.d.ts +1 -1
  81. package/dist/components/social-share.esm.js +1 -1
  82. package/dist/components/social-share.esm.js.map +1 -1
  83. package/dist/components/social-share.js +1 -1
  84. package/dist/components/social-share.js.map +1 -1
  85. package/dist/components/subscriber-select-nonprofit.d.ts +1 -1
  86. package/dist/components/subscriber-select-nonprofit.esm.js +3 -3
  87. package/dist/components/subscriber-select-nonprofit.js +3 -3
  88. package/dist/components/subscription-impact.d.ts +1 -1
  89. package/dist/components/subscription-impact.esm.js +4 -4
  90. package/dist/components/subscription-impact.esm.js.map +1 -1
  91. package/dist/components/subscription-impact.js +4 -4
  92. package/dist/components/subscription-impact.js.map +1 -1
  93. package/dist/components/subscription-management.d.ts +1 -1
  94. package/dist/components/subscription-management.esm.js +4 -4
  95. package/dist/components/subscription-management.js +4 -4
  96. package/dist/index.d.ts +8 -8
  97. package/dist/index.esm.js +1 -1
  98. package/dist/index.js +1 -1
  99. package/dist/integrations/beam.d.ts +1 -1
  100. package/dist/integrations/beam.esm.js +1 -1
  101. package/dist/integrations/beam.js +1 -1
  102. package/dist/integrations/cart.d.ts +2 -2
  103. package/dist/integrations/cart.esm.js +1 -1
  104. package/dist/integrations/cart.js +1 -1
  105. package/dist/integrations/logs.d.ts +2 -2
  106. package/dist/integrations/logs.esm.js +1 -1
  107. package/dist/integrations/logs.js +1 -1
  108. package/dist/integrations/promoManager.d.ts +1 -1
  109. package/dist/integrations/promoManager.esm.js +1 -1
  110. package/dist/integrations/promoManager.js +1 -1
  111. package/dist/integrations/session.d.ts +1 -1
  112. package/dist/integrations/session.esm.js +1 -1
  113. package/dist/integrations/session.js +1 -1
  114. package/dist/integrations/shopify-order.d.ts +1 -1
  115. package/dist/integrations/shopify-order.esm.js +1 -1
  116. package/dist/integrations/shopify-order.js +1 -1
  117. package/dist/integrations/shopify.d.ts +3 -3
  118. package/dist/integrations/shopify.esm.js +1 -1
  119. package/dist/integrations/shopify.js +1 -1
  120. package/dist/integrations/statsig.d.ts +1 -1
  121. package/dist/integrations/statsig.esm.js +3 -3
  122. package/dist/integrations/statsig.esm.js.map +1 -1
  123. package/dist/integrations/statsig.js +3 -3
  124. package/dist/integrations/statsig.js.map +1 -1
  125. package/dist/integrations/utils.d.ts +1 -1
  126. package/dist/integrations/utils.esm.js +1 -1
  127. package/dist/integrations/utils.js +1 -1
  128. package/dist/react/beam-partner-logos.d.ts +1 -1
  129. package/dist/react/community-impact.d.ts +1 -1
  130. package/dist/react/community-impact.esm.js +1 -1
  131. package/dist/react/community-impact.js +1 -1
  132. package/dist/react/cumulative-impact.d.ts +1 -1
  133. package/dist/react/cumulative-impact.esm.js +1 -1
  134. package/dist/react/cumulative-impact.js +1 -1
  135. package/dist/react/impact-overview.d.ts +1 -1
  136. package/dist/react/impact-overview.esm.js +1 -1
  137. package/dist/react/impact-overview.js +1 -1
  138. package/dist/react/index.d.ts +1 -1
  139. package/dist/react/index.esm.js +1 -1
  140. package/dist/react/index.js +1 -1
  141. package/dist/react/post-purchase.d.ts +1 -1
  142. package/dist/react/post-purchase.esm.js +1 -1
  143. package/dist/react/post-purchase.js +1 -1
  144. package/dist/react/product-details-page.d.ts +1 -1
  145. package/dist/react/product-details-page.esm.js +1 -1
  146. package/dist/react/product-details-page.js +1 -1
  147. package/dist/react/redeem-transaction.d.ts +1 -1
  148. package/dist/react/redeem-transaction.esm.js +1 -1
  149. package/dist/react/redeem-transaction.js +1 -1
  150. package/dist/react/select-nonprofit.d.ts +1 -1
  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 +1 -1
  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/shopify.esm.js +1 -1
  157. package/dist/react/shopify.esm.js.map +1 -1
  158. package/dist/react/shopify.js +1 -1
  159. package/dist/react/shopify.js.map +1 -1
  160. package/dist/react/social-share.d.ts +1 -1
  161. package/dist/react/social-share.esm.js +1 -1
  162. package/dist/react/social-share.js +1 -1
  163. package/dist/react/subscriber-select-nonprofit.d.ts +1 -1
  164. package/dist/react/subscriber-select-nonprofit.esm.js +1 -1
  165. package/dist/react/subscriber-select-nonprofit.js +1 -1
  166. package/dist/react/subscription-impact.d.ts +1 -1
  167. package/dist/react/subscription-impact.esm.js +1 -1
  168. package/dist/react/subscription-impact.js +1 -1
  169. package/dist/react/subscription-management.d.ts +1 -1
  170. package/dist/react/subscription-management.esm.js +1 -1
  171. package/dist/react/subscription-management.js +1 -1
  172. package/dist/utils/beam-errors.d.ts +1 -1
  173. package/dist/utils/beam-errors.esm.js +1 -1
  174. package/dist/utils/beam-errors.js +1 -1
  175. package/dist/utils/cart.d.ts +1 -1
  176. package/dist/utils/cart.esm.js +1 -1
  177. package/dist/utils/cart.js +1 -1
  178. package/dist/utils/clear-beam-storage.d.ts +3 -0
  179. package/dist/utils/clear-beam-storage.esm.js +2 -0
  180. package/dist/utils/clear-beam-storage.esm.js.map +1 -0
  181. package/dist/utils/clear-beam-storage.js +2 -0
  182. package/dist/utils/clear-beam-storage.js.map +1 -0
  183. package/dist/utils/cookies.d.ts +1 -1
  184. package/dist/utils/cookies.esm.js +1 -1
  185. package/dist/utils/cookies.js +1 -1
  186. package/dist/utils/events.d.ts +1 -1
  187. package/dist/utils/events.esm.js +1 -1
  188. package/dist/utils/events.js +1 -1
  189. package/dist/utils/local-storage.d.ts +1 -1
  190. package/dist/utils/local-storage.esm.js +1 -1
  191. package/dist/utils/local-storage.js +1 -1
  192. package/dist/utils/logger.d.ts +1 -1
  193. package/dist/utils/logger.esm.js +1 -1
  194. package/dist/utils/logger.js +1 -1
  195. package/dist/utils/makeApiKeyHeader.d.ts +1 -1
  196. package/dist/utils/makeApiKeyHeader.esm.js +1 -1
  197. package/dist/utils/makeApiKeyHeader.js +1 -1
  198. package/dist/utils/memoize-last.d.ts +1 -1
  199. package/dist/utils/memoize-last.esm.js +1 -1
  200. package/dist/utils/memoize-last.js +1 -1
  201. package/dist/utils/network-listeners.d.ts +1 -1
  202. package/dist/utils/network-listeners.esm.js +1 -1
  203. package/dist/utils/network-listeners.js +1 -1
  204. package/dist/utils/promoManager.d.ts +1 -1
  205. package/dist/utils/promoManager.esm.js +1 -1
  206. package/dist/utils/promoManager.js +1 -1
  207. package/dist/utils/remote-session.d.ts +1 -1
  208. package/dist/utils/remote-session.esm.js +1 -1
  209. package/dist/utils/remote-session.js +1 -1
  210. package/dist/utils/wait-for-element.d.ts +1 -1
  211. package/dist/utils/wait-for-element.esm.js +1 -1
  212. package/dist/utils/wait-for-element.js +1 -1
  213. package/package.json +1 -1
  214. package/dist/chunks/_share-dialog-dependencies-U9953n3E.esm.js +0 -2
  215. package/dist/chunks/index--PfL-_nX.esm.js +0 -2
  216. package/dist/chunks/index-CTsxQr7R.esm.js +0 -32
  217. package/dist/chunks/index-CVmIOuEY.esm.js.map +0 -1
  218. package/dist/chunks/index-DBKUxzAl.esm.js +0 -32
  219. package/dist/chunks/index-DTw-q6W4.esm.js.map +0 -1
  220. package/dist/chunks/index-DhHhFTBE.esm.js +0 -31
  221. package/dist/chunks/index-DhHhFTBE.esm.js.map +0 -1
  222. package/dist/chunks/index-cb5vYQx0.esm.js +0 -2
  223. package/dist/chunks/index-cb5vYQx0.esm.js.map +0 -1
  224. package/dist/chunks/utils-BjhsDvuU.esm.js +0 -2
  225. package/dist/chunks/utils-BjhsDvuU.esm.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ import{r as c,s as i}from"./vendor-DUOg5fL-.esm.js";import{q as t}from"./index-Dm-K2MLY.esm.js";import"./lit-BEag9MFp.esm.js";import"./utils-C5hmbxa4.esm.js";import"./lodash-CrMU6wKg.esm.js";const s="https://sdk.beamimpact.com",a=`${s}/lib/shoelace/v${t["@shoelace-style/shoelace"]}`,o=`${s}/lib/lucide-static/v${t["lucide-static"]}`;if(c("lucide",{resolver:e=>`${o}/icons/${e}.svg`}),i(a),document&&!document.querySelector("link[data-beam-impact]")){const e=document.createElement("link");e.href=`${a}/themes/light.css`,e.rel="stylesheet",e.setAttribute("data-beam-impact","true"),document.head.appendChild(e)}
2
+ //# sourceMappingURL=_share-dialog-dependencies-BEUnzuWq.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_share-dialog-dependencies-U9953n3E.esm.js","sources":["../../src/shared/shoelace-components.ts"],"sourcesContent":["/**\n * Shoelace is a utility library for web components like icons, dialogs, buttons, etc.\n * https://shoelace.style/\n */\n\nimport { setBasePath } from \"@shoelace-style/shoelace/dist/utilities/base-path.js\";\nimport { registerIconLibrary } from \"@shoelace-style/shoelace/dist/utilities/icon-library.js\";\nimport { dependencies } from \"../../package.json\";\n\nconst CDN_BASE = \"https://sdk.beamimpact.com\";\nconst SHOELACE_BASE = `${CDN_BASE}/lib/shoelace/v${dependencies[\"@shoelace-style/shoelace\"]}`;\nconst ICON_BASE = `${CDN_BASE}/lib/lucide-static/v${dependencies[\"lucide-static\"]}`;\n\nregisterIconLibrary(\"lucide\", {\n resolver: (name: string) => `${ICON_BASE}/icons/${name}.svg`,\n});\n\nsetBasePath(SHOELACE_BASE);\n\nif (document && !document.querySelector(\"link[data-beam-impact]\")) {\n const stylesheet = document.createElement(\"link\");\n stylesheet.href = `${SHOELACE_BASE}/themes/light.css`;\n stylesheet.rel = \"stylesheet\";\n stylesheet.setAttribute(\"data-beam-impact\", \"true\");\n document.head.appendChild(stylesheet);\n}\n"],"names":["CDN_BASE","SHOELACE_BASE","dependencies","ICON_BASE","registerIconLibrary","name","setBasePath","stylesheet"],"mappings":"0LASA,MAAMA,EAAW,6BACXC,EAAgB,GAAGD,CAAQ,kBAAkBE,EAAa,0BAA0B,CAAC,GACrFC,EAAY,GAAGH,CAAQ,uBAAuBE,EAAa,eAAe,CAAC,GAQjF,GANAE,EAAoB,SAAU,CAC5B,SAAWC,GAAiB,GAAGF,CAAS,UAAUE,CAAI,MACxD,CAAC,EAEDC,EAAYL,CAAa,EAErB,UAAY,CAAC,SAAS,cAAc,wBAAwB,EAAG,CACjE,MAAMM,EAAa,SAAS,cAAc,MAAM,EAChDA,EAAW,KAAO,GAAGN,CAAa,oBAClCM,EAAW,IAAM,aACjBA,EAAW,aAAa,mBAAoB,MAAM,EAClD,SAAS,KAAK,YAAYA,CAAU,CACtC"}
1
+ {"version":3,"file":"_share-dialog-dependencies-BEUnzuWq.esm.js","sources":["../../src/shared/shoelace-components.ts"],"sourcesContent":["/**\n * Shoelace is a utility library for web components like icons, dialogs, buttons, etc.\n * https://shoelace.style/\n */\n\nimport { setBasePath } from \"@shoelace-style/shoelace/dist/utilities/base-path.js\";\nimport { registerIconLibrary } from \"@shoelace-style/shoelace/dist/utilities/icon-library.js\";\nimport { dependencies } from \"../../package.json\";\n\nconst CDN_BASE = \"https://sdk.beamimpact.com\";\nconst SHOELACE_BASE = `${CDN_BASE}/lib/shoelace/v${dependencies[\"@shoelace-style/shoelace\"]}`;\nconst ICON_BASE = `${CDN_BASE}/lib/lucide-static/v${dependencies[\"lucide-static\"]}`;\n\nregisterIconLibrary(\"lucide\", {\n resolver: (name: string) => `${ICON_BASE}/icons/${name}.svg`,\n});\n\nsetBasePath(SHOELACE_BASE);\n\nif (document && !document.querySelector(\"link[data-beam-impact]\")) {\n const stylesheet = document.createElement(\"link\");\n stylesheet.href = `${SHOELACE_BASE}/themes/light.css`;\n stylesheet.rel = \"stylesheet\";\n stylesheet.setAttribute(\"data-beam-impact\", \"true\");\n document.head.appendChild(stylesheet);\n}\n"],"names":["CDN_BASE","SHOELACE_BASE","dependencies","ICON_BASE","registerIconLibrary","name","setBasePath","stylesheet"],"mappings":"+LASA,MAAMA,EAAW,6BACXC,EAAgB,GAAGD,CAAQ,kBAAkBE,EAAa,0BAA0B,CAAC,GACrFC,EAAY,GAAGH,CAAQ,uBAAuBE,EAAa,eAAe,CAAC,GAQjF,GANAE,EAAoB,SAAU,CAC5B,SAAWC,GAAiB,GAAGF,CAAS,UAAUE,CAAI,MACxD,CAAC,EAEDC,EAAYL,CAAa,EAErB,UAAY,CAAC,SAAS,cAAc,wBAAwB,EAAG,CACjE,MAAMM,EAAa,SAAS,cAAc,MAAM,EAChDA,EAAW,KAAO,GAAGN,CAAa,oBAClCM,EAAW,IAAM,aACjBA,EAAW,aAAa,mBAAoB,MAAM,EAClD,SAAS,KAAK,YAAYA,CAAU,CACtC"}
@@ -1,6 +1,6 @@
1
1
  import * as lodash from 'lodash';
2
- import { B as BeamCartAPIConfig, a as BeamCartValues } from './update-cart-CcgzHTEm.esm.js';
3
- import { d as TCart } from './utils-D8HO_RIu.esm.js';
2
+ import { M as MemoizedLast, d as TCart } from './utils-COGFpDER.esm.js';
3
+ import { B as BeamCartAPIConfig, a as BeamCartValues } from './update-cart-DoJGAdoU.esm.js';
4
4
 
5
5
  type BeamShopifyCartIntegrationConfig = BeamCartAPIConfig & {
6
6
  storeId: number;
@@ -11,6 +11,17 @@ type BeamShopifyCartIntegrationConfig = BeamCartAPIConfig & {
11
11
  * @return {boolean} returns true if NEW listeners were created, false if setup was already done
12
12
  */
13
13
  declare function registerCartIntegration(config: BeamShopifyCartIntegrationConfig, autoUpdateShopifyCartAttributes?: boolean): Promise<boolean>;
14
+ /**
15
+ * @main unregisterCartIntegration - tear down listeners set up by registerCartIntegration.
16
+ * Pass { clearStorage: true } to also wipe Beam's localStorage/cookies in the same call
17
+ * (clearBeamStorage from src/utils, which is also callable on its own — for cases that want
18
+ * storage cleared without touching listeners, or independently of this integration entirely).
19
+ * @return {boolean} true if this page load's listeners were torn down, false if
20
+ * registerCartIntegration never ran this session (storage still clears if requested, either way)
21
+ */
22
+ declare function unregisterCartIntegration(config: BeamShopifyCartIntegrationConfig, { clearStorage }?: {
23
+ clearStorage?: boolean;
24
+ }): Promise<boolean>;
14
25
  declare function appendToShopifyCartBeamAttribute(config: BeamShopifyCartIntegrationConfig): Promise<void>;
15
26
  /**
16
27
  * Gathers the base Beam data needed for updating a Shopify cart's metadata
@@ -34,7 +45,7 @@ declare const appendStatsigToShopifyCartAttributes: typeof appendToShopifyCartBe
34
45
  * - Form-based carts where the page refreshes to modify cart instead of using AJAX calls
35
46
  * - Hydrogen/GraphQL based carts (needs to be integrated manually)
36
47
  */
37
- declare function getCurrentCart(config: BeamShopifyCartIntegrationConfig): Promise<{
48
+ declare function getCurrentCart(config: BeamShopifyCartIntegrationConfig, signal?: AbortSignal): Promise<{
38
49
  changed: boolean;
39
50
  cart: {
40
51
  cartId: string;
@@ -46,7 +57,7 @@ declare function getCurrentCart(config: BeamShopifyCartIntegrationConfig): Promi
46
57
  /**
47
58
  * trackCart - Backwards-compatible alias for updateCart
48
59
  */
49
- declare const trackCart: lodash.DebouncedFuncLeading<(config: BeamCartAPIConfig, cartValues: BeamCartValues, isFirstCartUpdateOnPageLoad?: any) => Promise<void>>;
60
+ declare const trackCart: lodash.DebouncedFuncLeading<MemoizedLast<(config: BeamCartAPIConfig, cartValues: BeamCartValues, isFirstCartUpdateOnPageLoad?: any) => Promise<void>>>;
50
61
  /**
51
62
  * Helper function to get the Shopify cart attributes
52
63
  */
@@ -56,7 +67,7 @@ declare const getShopifyCart: () => Promise<any>;
56
67
  * Memoized so that calls with the same data as the previous don't create additional API calls to Shopify.
57
68
  * This will do an append, not a full overwrite of the attributes in the beam property
58
69
  */
59
- declare const appendBeamAttributesToCart: (args_0: {
70
+ declare const appendBeamAttributesToCart: MemoizedLast<(args_0: {
60
71
  selectedNonprofitId?: number | null;
61
72
  selectionId?: string;
62
73
  beamCartId?: string;
@@ -65,20 +76,20 @@ declare const appendBeamAttributesToCart: (args_0: {
65
76
  storeId?: number;
66
77
  showBeam?: boolean;
67
78
  remoteSessionId?: string;
68
- }) => Promise<void>;
79
+ }) => Promise<void>>;
69
80
  /**
70
81
  * Sends Beam data to Shopify to integrate with order as custom attributes.
71
82
  * Memoized so that calls with the same data as the previous don't create additional API calls to Shopify.
72
83
  * This method force-updates the "beam" attribute with the values passed in
73
84
  */
74
- declare const addBeamAttributesToCart: (args_0: {
85
+ declare const addBeamAttributesToCart: MemoizedLast<(args_0: {
75
86
  selectedNonprofitId?: number | null;
76
87
  selectionId?: string;
77
88
  beamCartId?: string;
78
89
  cartId?: string;
79
90
  chainId?: number;
80
91
  storeId?: number;
81
- }) => Promise<void>;
92
+ }) => Promise<void>>;
82
93
  declare global {
83
94
  interface Window {
84
95
  statsig?: any;
@@ -86,5 +97,5 @@ declare global {
86
97
  }
87
98
  }
88
99
 
89
- export { addBeamAttributesToCart as a, appendBeamAttributesToCart as b, appendStatsigToShopifyCartAttributes as c, appendToShopifyCartBeamAttribute as d, getCurrentCart as e, getShopifyCart as f, getBeamAttributesForCart as g, registerCartIntegration as r, trackCart as t };
100
+ export { addBeamAttributesToCart as a, appendBeamAttributesToCart as b, appendStatsigToShopifyCartAttributes as c, appendToShopifyCartBeamAttribute as d, getCurrentCart as e, getShopifyCart as f, getBeamAttributesForCart as g, registerCartIntegration as r, trackCart as t, unregisterCartIntegration as u };
90
101
  export type { BeamShopifyCartIntegrationConfig as B };
@@ -1,4 +1,4 @@
1
- import{i as n,m as r}from"./lit-BEag9MFp.esm.js";import{M as d,l}from"./utils-BjhsDvuU.esm.js";const g=n`html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{/*height:auto;*/max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}`;function s(t,e=t.tagName){customElements.get(e)||customElements.define(e,t)}function m(t,e){const i=[],a=e;for(const o of t)a[o]==null&&i.push(o);if(i.length>0)throw l.error(`Beam Impact - Missing Required Config Values:
1
+ import{i as n,m as r}from"./lit-BEag9MFp.esm.js";import{P as d,l}from"./utils-C5hmbxa4.esm.js";const g=n`html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{/*height:auto;*/max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}`;function s(t,e=t.tagName){customElements.get(e)||customElements.define(e,t)}function m(t,e){const i=[],a=e;for(const o of t)a[o]==null&&i.push(o);if(i.length>0)throw l.error(`Beam Impact - Missing Required Config Values:
2
2
  `,i.join(", "),e),new d(i);return!0}function u(t,e){return t.every(i=>i in e&&e[i]!=null)}const c=({className:t="cardGrid",gap:e="30px",columnCount:i=2,itemMinWidth:a="300px"}={})=>n`
3
3
  .${r(t)} {
4
4
  --grid-layout-gap: ${r(e)};
@@ -18,4 +18,4 @@ import{i as n,m as r}from"./lit-BEag9MFp.esm.js";import{M as d,l}from"./utils-Bj
18
18
  grid-auto-rows: 1fr; /* make all the rows the same height */
19
19
  }
20
20
  `;export{c as a,u as b,g as c,s as d,m as e};
21
- //# sourceMappingURL=css-card-grid-BUidQqf0.esm.js.map
21
+ //# sourceMappingURL=css-card-grid-CiqEjkwR.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"css-card-grid-BUidQqf0.esm.js","sources":["../../src/shared/css-reset.ts","../../src/shared/defineCustomElement.ts","../../src/shared/enforce-config.ts","../../src/shared/fragments/css-card-grid.ts"],"sourcesContent":["import { css } from \"lit\";\n\n// minireset.css v0.0.7 | MIT License | github.com/jgthms/minireset.css\n// prettier-ignore\nexport const cssReset = css`html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{/*height:auto;*/max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}`;\n","/**\n * Defines a custom element based on its static tagName property\n */\nexport function defineCustomElement(\n CustomElementClass: CustomElementConstructor & { tagName: string },\n tagName = CustomElementClass[\"tagName\"],\n) {\n customElements.get(tagName) || customElements.define(tagName, CustomElementClass);\n}\n","import { MissingConfig } from \"../utils/beam-errors\";\nimport { logger } from \"../utils/logger\";\n\nexport function enforceConfig<T>(keys: (keyof T)[], input: unknown): input is Required<T> {\n const missingKeys: string[] = [];\n const check = input as Record<string | number | symbol, unknown>;\n for (const key of keys) {\n if (check[key] == null) {\n missingKeys.push(key as string);\n }\n }\n if (missingKeys.length > 0) {\n logger.error(\"Beam Impact - Missing Required Config Values:\\n\", missingKeys.join(\", \"), input);\n throw new MissingConfig(missingKeys);\n }\n return true;\n}\n\nexport function areRequiredKeysDefined<T extends object>(requiredKeys: (keyof T)[], config: T): boolean {\n return requiredKeys.every((key) => key in config && config[key] != null);\n}\n","import { css, unsafeCSS } from \"lit\";\n\nexport const cssCardGrid = ({\n className = \"cardGrid\",\n gap = \"30px\",\n columnCount = 2,\n itemMinWidth = \"300px\",\n}: { className?: string; gap?: string; columnCount?: number | string; itemMinWidth?: string } = {}) => css`\n .${unsafeCSS(className)} {\n --grid-layout-gap: ${unsafeCSS(gap)};\n --grid-column-count: ${unsafeCSS(columnCount)};\n --grid-item--min-width: ${unsafeCSS(itemMinWidth)};\n\n --gap-count: calc(var(--grid-column-count) - 1);\n --total-gap-width: calc(var(--gap-count) * var(--grid-layout-gap));\n --grid-item--max-width: calc((100% - var(--total-gap-width)) / var(--grid-column-count));\n\n display: grid;\n grid-template-columns: repeat(\n auto-fill,\n minmax(max(var(--grid-item--min-width), var(--grid-item--max-width)), 1fr)\n );\n grid-gap: var(--grid-layout-gap);\n grid-auto-rows: 1fr; /* make all the rows the same height */\n }\n`;\n"],"names":["cssReset","css","defineCustomElement","CustomElementClass","tagName","enforceConfig","keys","input","missingKeys","check","key","logger","MissingConfig","areRequiredKeysDefined","requiredKeys","config","cssCardGrid","className","gap","columnCount","itemMinWidth","unsafeCSS"],"mappings":"+FAIO,MAAMA,EAAWC,gaCDjB,SAASC,EACdC,EACAC,EAAUD,EAAmB,QAC7B,CACA,eAAe,IAAIC,CAAO,GAAK,eAAe,OAAOA,EAASD,CAAkB,CAClF,CCLO,SAASE,EAAiBC,EAAmBC,EAAsC,CACxF,MAAMC,EAAwB,CAAA,EACxBC,EAAQF,EACd,UAAWG,KAAOJ,EACZG,EAAMC,CAAG,GAAK,MAChBF,EAAY,KAAKE,CAAa,EAGlC,GAAIF,EAAY,OAAS,EACvB,MAAAG,EAAO,MAAM;AAAA,EAAmDH,EAAY,KAAK,IAAI,EAAGD,CAAK,EACvF,IAAIK,EAAcJ,CAAW,EAErC,MAAO,EACT,CAEO,SAASK,EAAyCC,EAA2BC,EAAoB,CACtG,OAAOD,EAAa,MAAOJ,GAAQA,KAAOK,GAAUA,EAAOL,CAAG,GAAK,IAAI,CACzE,CClBO,MAAMM,EAAc,CAAC,CAC1B,UAAAC,EAAY,WACZ,IAAAC,EAAM,OACN,YAAAC,EAAc,EACd,aAAAC,EAAe,OACjB,EAAgG,CAAA,IAAOnB;AAAAA,KAClGoB,EAAUJ,CAAS,CAAC;AAAA,yBACAI,EAAUH,CAAG,CAAC;AAAA,2BACZG,EAAUF,CAAW,CAAC;AAAA,8BACnBE,EAAUD,CAAY,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
1
+ {"version":3,"file":"css-card-grid-CiqEjkwR.esm.js","sources":["../../src/shared/css-reset.ts","../../src/shared/defineCustomElement.ts","../../src/shared/enforce-config.ts","../../src/shared/fragments/css-card-grid.ts"],"sourcesContent":["import { css } from \"lit\";\n\n// minireset.css v0.0.7 | MIT License | github.com/jgthms/minireset.css\n// prettier-ignore\nexport const cssReset = css`html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{/*height:auto;*/max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}`;\n","/**\n * Defines a custom element based on its static tagName property\n */\nexport function defineCustomElement(\n CustomElementClass: CustomElementConstructor & { tagName: string },\n tagName = CustomElementClass[\"tagName\"],\n) {\n customElements.get(tagName) || customElements.define(tagName, CustomElementClass);\n}\n","import { MissingConfig } from \"../utils/beam-errors\";\nimport { logger } from \"../utils/logger\";\n\nexport function enforceConfig<T>(keys: (keyof T)[], input: unknown): input is Required<T> {\n const missingKeys: string[] = [];\n const check = input as Record<string | number | symbol, unknown>;\n for (const key of keys) {\n if (check[key] == null) {\n missingKeys.push(key as string);\n }\n }\n if (missingKeys.length > 0) {\n logger.error(\"Beam Impact - Missing Required Config Values:\\n\", missingKeys.join(\", \"), input);\n throw new MissingConfig(missingKeys);\n }\n return true;\n}\n\nexport function areRequiredKeysDefined<T extends object>(requiredKeys: (keyof T)[], config: T): boolean {\n return requiredKeys.every((key) => key in config && config[key] != null);\n}\n","import { css, unsafeCSS } from \"lit\";\n\nexport const cssCardGrid = ({\n className = \"cardGrid\",\n gap = \"30px\",\n columnCount = 2,\n itemMinWidth = \"300px\",\n}: { className?: string; gap?: string; columnCount?: number | string; itemMinWidth?: string } = {}) => css`\n .${unsafeCSS(className)} {\n --grid-layout-gap: ${unsafeCSS(gap)};\n --grid-column-count: ${unsafeCSS(columnCount)};\n --grid-item--min-width: ${unsafeCSS(itemMinWidth)};\n\n --gap-count: calc(var(--grid-column-count) - 1);\n --total-gap-width: calc(var(--gap-count) * var(--grid-layout-gap));\n --grid-item--max-width: calc((100% - var(--total-gap-width)) / var(--grid-column-count));\n\n display: grid;\n grid-template-columns: repeat(\n auto-fill,\n minmax(max(var(--grid-item--min-width), var(--grid-item--max-width)), 1fr)\n );\n grid-gap: var(--grid-layout-gap);\n grid-auto-rows: 1fr; /* make all the rows the same height */\n }\n`;\n"],"names":["cssReset","css","defineCustomElement","CustomElementClass","tagName","enforceConfig","keys","input","missingKeys","check","key","logger","MissingConfig","areRequiredKeysDefined","requiredKeys","config","cssCardGrid","className","gap","columnCount","itemMinWidth","unsafeCSS"],"mappings":"+FAIO,MAAMA,EAAWC,gaCDjB,SAASC,EACdC,EACAC,EAAUD,EAAmB,QAC7B,CACA,eAAe,IAAIC,CAAO,GAAK,eAAe,OAAOA,EAASD,CAAkB,CAClF,CCLO,SAASE,EAAiBC,EAAmBC,EAAsC,CACxF,MAAMC,EAAwB,CAAA,EACxBC,EAAQF,EACd,UAAWG,KAAOJ,EACZG,EAAMC,CAAG,GAAK,MAChBF,EAAY,KAAKE,CAAa,EAGlC,GAAIF,EAAY,OAAS,EACvB,MAAAG,EAAO,MAAM;AAAA,EAAmDH,EAAY,KAAK,IAAI,EAAGD,CAAK,EACvF,IAAIK,EAAcJ,CAAW,EAErC,MAAO,EACT,CAEO,SAASK,EAAyCC,EAA2BC,EAAoB,CACtG,OAAOD,EAAa,MAAOJ,GAAQA,KAAOK,GAAUA,EAAOL,CAAG,GAAK,IAAI,CACzE,CClBO,MAAMM,EAAc,CAAC,CAC1B,UAAAC,EAAY,WACZ,IAAAC,EAAM,OACN,YAAAC,EAAc,EACd,aAAAC,EAAe,OACjB,EAAgG,CAAA,IAAOnB;AAAAA,KAClGoB,EAAUJ,CAAS,CAAC;AAAA,yBACAI,EAAUH,CAAG,CAAC;AAAA,2BACZG,EAAUF,CAAW,CAAC;AAAA,8BACnBE,EAAUD,CAAY,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1,7 +1,9 @@
1
- import { j as createScopedLocalStorage, k as deleteCookieValue, l as beamErrors, e as events, m as formatStoreAndReturnPromoCodes, n as getAllPromoCodesFromCookie, o as getCookieMap, p as getCookieValue, q as getPromoCodeFromShopifyCookie, r as getPromoCodesFromCart, s as getPromoCodesLocalStorage, t as getRemoteSession, u as getSanitizedUrlForStorage, i as initNetworkListeners, v as isEmptyPromoData, x as logger, y as mapToUnvalidatedPromoCodes, z as memoizeLast, A as mergeStoreAndReturnPromos, C as parseJsonStringArray, D as promoCodesAreEqual, E as saveRemoteSession, F as setCookieValue, G as setPromoCodeInCookie, H as setPromoCodesInLocalStorage, w as waitForElement } from './utils-D8HO_RIu.esm.js';
1
+ import { M as MemoizedLast, j as clearBeamStorage, k as createScopedLocalStorage, l as deleteCookieValue, m as beamErrors, e as events, n as formatStoreAndReturnPromoCodes, o as getAllPromoCodesFromCookie, p as getCookieMap, q as getCookieValue, r as getPromoCodeFromShopifyCookie, s as getPromoCodesFromCart, t as getPromoCodesLocalStorage, u as getRemoteSession, v as getSanitizedUrlForStorage, i as initNetworkListeners, x as isEmptyPromoData, y as logger, z as mapToUnvalidatedPromoCodes, A as memoizeLast, C as mergeStoreAndReturnPromos, D as parseJsonStringArray, E as promoCodesAreEqual, F as saveRemoteSession, G as setCookieValue, H as setPromoCodeInCookie, I as setPromoCodesInLocalStorage, J as teardownNetworkListeners, w as waitForElement } from './utils-COGFpDER.esm.js';
2
2
  import debounce from 'lodash-es/debounce';
3
3
  import isEqual from 'lodash-es/isEqual';
4
4
 
5
+ declare const index_MemoizedLast: typeof MemoizedLast;
6
+ declare const index_clearBeamStorage: typeof clearBeamStorage;
5
7
  declare const index_createScopedLocalStorage: typeof createScopedLocalStorage;
6
8
  declare const index_debounce: typeof debounce;
7
9
  declare const index_deleteCookieValue: typeof deleteCookieValue;
@@ -28,9 +30,12 @@ declare const index_saveRemoteSession: typeof saveRemoteSession;
28
30
  declare const index_setCookieValue: typeof setCookieValue;
29
31
  declare const index_setPromoCodeInCookie: typeof setPromoCodeInCookie;
30
32
  declare const index_setPromoCodesInLocalStorage: typeof setPromoCodesInLocalStorage;
33
+ declare const index_teardownNetworkListeners: typeof teardownNetworkListeners;
31
34
  declare const index_waitForElement: typeof waitForElement;
32
35
  declare namespace index {
33
36
  export {
37
+ index_MemoizedLast as MemoizedLast,
38
+ index_clearBeamStorage as clearBeamStorage,
34
39
  index_createScopedLocalStorage as createScopedLocalStorage,
35
40
  index_debounce as debounce,
36
41
  index_deleteCookieValue as deleteCookieValue,
@@ -58,6 +63,7 @@ declare namespace index {
58
63
  index_setCookieValue as setCookieValue,
59
64
  index_setPromoCodeInCookie as setPromoCodeInCookie,
60
65
  index_setPromoCodesInLocalStorage as setPromoCodesInLocalStorage,
66
+ index_teardownNetworkListeners as teardownNetworkListeners,
61
67
  index_waitForElement as waitForElement,
62
68
  };
63
69
  }
@@ -1,4 +1,4 @@
1
- import { I as paths } from './utils-D8HO_RIu.esm.js';
1
+ import { K as paths } from './utils-COGFpDER.esm.js';
2
2
 
3
3
  type PostLogsReq = paths["/logs"]["post"]["requestBody"]["content"]["application/json"];
4
4
  interface SendLogConfig {
@@ -0,0 +1,32 @@
1
+ import{n as o,r as d,a as R,b as g}from"./lit-BEag9MFp.esm.js";import{D as b,z as v,h as K,_ as M,$ as B,C as F,R as N,g as y,a1 as L,L as P,a2 as x,Y as J,u as W,F as k,P as Y,w as j,n as q}from"./utils-C5hmbxa4.esm.js";import{c as z,d as G,e as V}from"./css-card-grid-CiqEjkwR.esm.js";import{B as T,A as H,c as Q}from"./index-Dm-K2MLY.esm.js";import{p as X}from"./index-DqhM4Yoj.esm.js";import"../components/impact-overview.js";var Z=Object.defineProperty,e=(l,a,s,h)=>{for(var n=void 0,c=l.length-1,m;c>=0;c--)(m=l[c])&&(n=m(a,s,n)||n);return n&&Z(a,s,n),n};const U=["baseUrl","apiKey","orderId","cartTotal","currencyCode","lang"],tt=["storeId","postalCode","countryCode","cart","discountCodes","promoCodes","htmlPromoCodes","email","partnerUserId","remoteSessionId"];class t extends R{constructor(){super(...arguments),this.baseUrl=b,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.orderProcessedAt="",this.draftConfig=!1,this.localStorage=v(this),this.handlePostTransaction=async()=>{this.enforceConfig(),this.updateComponentState();const a=this.getManualPromoCodes(),s=K(a.map(p=>({value:p})),this.apiKey),h=M(),n={unvalidatedPromoCodes:B(a.map(p=>({value:p}))),validatedPromoCodes:h?.validatedPromoCodes??[]},c=s??n,m=c&&!F(c),u=this.remoteSessionId??N({apiKey:this.apiKey})??y("beam_statsig_session_id"),i=await X({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,...m&&{promos:c},discountCodes:this.discountCodes,orderProcessedAt:new Date().toISOString(),...u&&{remoteSessionId:u}}});this.transactionId=i.transactionId,this.userId=i.beamUserId,this.nonprofitId=i.nonprofitId,this.excludeDonationsForRecurringTransactions=!!i.reportSettings?.excludeRecurringDonations,this.creationMethod=i.creationMethod||"",this.orderProcessedAt=i.timestamp;const C=!!this.nonprofitId;return this.activeWidget=C?"impact-overview":"redeem-transaction",i.transactionCreated&&(["transaction","cart",L,P.NONPROFIT,P.NONPROFIT_SELECTED_AT].forEach(p=>{this.localStorage.removeItem(p)}),[{name:T,path:"/",domain:this.domain},{name:x,path:"/",domain:this.domain}].forEach(p=>J(p)),dispatchEvent(new W({transactionId:i.transactionId,orderId:this.orderId,cartTotal:this.cartTotal,currencyCode:this.currencyCode}))),i},this.transactionDataController=new H(this,this.handlePostTransaction)}get parsedPromoCodes(){return k(this.htmlPromoCodes)}updateComponentState(){this.localStorage.getItem("transaction")?.toLocaleLowerCase()==="undefined"&&this.localStorage.removeItem("transaction"),this.selectionId=this.selectionId||this.localStorage.getItem("transaction")||null,this.cartId=this.cartId||this.localStorage.getItemJson("cart")?.cartId||null,this.beamCartId=this.beamCartId||this.localStorage.getItemJson("cart")?.beamCartId||y(T)||null,this.selectionId&&this.nonprofitId&&(this.activeWidget="impact-overview")}firstUpdated(a){this.enforceConfig(),this.updateComponentState()}async updated(a){[...U,...tt].some(s=>a.has(s))&&await this.transactionDataController.exec()}enforceConfig(){if(V(U,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")}getManualPromoCodes(){return this.parsedPromoCodes?.length?this.parsedPromoCodes:this.promoCodes?.length?this.promoCodes:[]}render(){const a=Date.now()-new Date(this.orderProcessedAt).getTime()<2592e6;return this.transactionDataController.loading?"":this.transactionDataController.error?this.debug?Q({error:this.transactionDataController.error}):"":this.excludeDonationsForRecurringTransactions&&this.creationMethod==="recurring"?g``:this.activeWidget==="redeem-transaction"&&a?g`
2
+ <beam-redeem-transaction
3
+ part="redeem-transaction"
4
+ baseUrl="${this.baseUrl}"
5
+ apiKey="${this.apiKey}"
6
+ storeId="${this.storeId}"
7
+ postalCode="${this.postalCode}"
8
+ countryCode="${this.countryCode}"
9
+ transactionId="${this.transactionId}"
10
+ cart="${JSON.stringify(this.cart)}"
11
+ lang="${this.lang}"
12
+ excludeDonationsForRecurringTransactions="${this.excludeDonationsForRecurringTransactions}"
13
+ ?draftConfig="${this.draftConfig}"
14
+ ?debug="${this.debug}"
15
+ @beamnonprofitselect="${s=>{if(!(s instanceof CustomEvent))return;const{selectedNonprofitId:h}=s.detail;this.nonprofitId=h??null,this.activeWidget="impact-overview"}}"
16
+ ></beam-redeem-transaction>
17
+ `:this.activeWidget==="impact-overview"?g`
18
+ <beam-impact-overview
19
+ part="impact-overview"
20
+ storeId="${this.storeId}"
21
+ baseUrl="${this.baseUrl}"
22
+ apiKey="${this.apiKey}"
23
+ userId="${this.userId}"
24
+ nonprofitId="${this.nonprofitId}"
25
+ lang="${this.lang}"
26
+ discountCodes="${JSON.stringify(this.discountCodes)}"
27
+ transactionId="${this.transactionId}"
28
+ ?draftConfig="${this.draftConfig}"
29
+ ?debug="${this.debug}"
30
+ ></beam-impact-overview>
31
+ `:""}}t.tagName="beam-post-purchase",t.styles=[z],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:String})],t.prototype,"remoteSessionId"),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([d()],t.prototype,"excludeDonationsForRecurringTransactions"),e([d()],t.prototype,"creationMethod"),e([d()],t.prototype,"orderProcessedAt"),e([o({type:Boolean})],t.prototype,"draftConfig"),G(t);async function et({parentSelector:l=".step__sections",apiKey:a,baseUrl:s=b,storeId:h,postalCode:n,discountCodes:c,countryCode:m,orderId:u,email:i,cartTotal:C,cart:p,promoCodes:w,htmlPromoCodes:$,currencyCode:A="USD",domain:E,lang:O="en",debug:D=!1}){const I=document.querySelector(l)||await j(l);if(!I)throw new q(`Timed out waiting for selector '${l}'. Could not render Beam post-purchase widget.`);const f=await y("cart");if(f){const S=v({apiKey:a}),_=S.getItemJson("cart")||{};S.setItemJson("cart",{..._,cartId:f})}const r=document.createElement("beam-post-purchase");r.apiKey=a,r.baseUrl=s,r.storeId=h,r.postalCode=n,r.countryCode=m,r.orderId=String(u),r.email=i,r.cartTotal=C,r.cart=p,r.promoCodes=w,r.htmlPromoCodes=$,r.discountCodes=c,r.currencyCode=A,r.domain=E,r.lang=O,r.debug=D,I.appendChild(r)}export{t as B,et as s};
32
+ //# sourceMappingURL=index-BgalrCS_.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-CTsxQr7R.esm.js","sources":["../../src/components/post-purchase/index.ts","../../src/integrations/shopify-order/order.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, LOCAL_STORAGE_KEYS } 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\";\nimport { getRemoteSession } from \"../../utils/remote-session\";\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 \"remoteSessionId\",\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: String })\n public remoteSessionId?: 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 @state() private orderProcessedAt = \"\";\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 updateComponentState() {\n // Delete selectionId if it was saved with an invalid string (bug introduced v1.54.0)\n if (this.localStorage.getItem(\"transaction\")?.toLocaleLowerCase() === \"undefined\") {\n this.localStorage.removeItem(\"transaction\");\n }\n\n this.selectionId = this.selectionId || this.localStorage.getItem(\"transaction\") || null;\n this.cartId = 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 =\n this.beamCartId ||\n this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\")?.beamCartId ||\n getCookieValue(BEAM_CART_COOKIE_NAME) ||\n null;\n\n if (this.selectionId && this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n }\n\n firstUpdated(_changedProperties: PropertyValues) {\n this.enforceConfig();\n this.updateComponentState();\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 this.updateComponentState();\n\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 remoteSessionId =\n this.remoteSessionId ?? getRemoteSession({ apiKey: this.apiKey }) ?? getCookieValue(\"beam_statsig_session_id\");\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 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 orderProcessedAt: new Date().toISOString(),\n ...(remoteSessionId && { remoteSessionId }),\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 this.orderProcessedAt = result.timestamp;\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 = [\n \"transaction\",\n \"cart\",\n PROMO_LOCAL_STORAGE_KEY,\n LOCAL_STORAGE_KEYS.NONPROFIT,\n LOCAL_STORAGE_KEYS.NONPROFIT_SELECTED_AT,\n ];\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 const THIRTY_DAYS_IN_MS = 30 * 24 * 60 * 60 * 1000;\n const transactionIsLessThan30DaysOld = Date.now() - new Date(this.orderProcessedAt).getTime() < THIRTY_DAYS_IN_MS;\n\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\" && transactionIsLessThan30DaysOld) {\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","/**\n * @deprecated (v1.57.0) Shopify no longer supports customized post-purchase pages directly without Extensibility apps\n */\nimport \"../../components/post-purchase\";\nimport { postTransaction } from \"../../api-sdk/v3/routes\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport { LANGUAGES, TUrl } from \"../../api-sdk/types\";\nimport { waitForElement } from \"../../utils/wait-for-element\";\nimport { BeamError } from \"../../utils/beam-errors\";\nimport { getCookieValue } from \"../../utils/cookies\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { TCart } from \"../../shared/cart-contents\";\n\n// Shopify admin page: admin/settings/checkout\n\nexport type TBeamOrderPageParams = Parameters<typeof postTransaction>[0][\"requestBody\"] & {\n // Either storeId or postalCode + countryCode must be provided\n storeId?: number;\n postalCode?: string;\n countryCode?: string;\n orderId: string;\n email: string;\n cartTotal: number;\n cart: TCart;\n discountCodes: string[];\n promoCodes: string[];\n htmlPromoCodes: string;\n currencyCode: string;\n parentSelector: string; // CSS Selector for parent of widget to be inserted into DOM\n apiKey: string;\n baseUrl: TUrl;\n domain?: string; // Base domain for setting cookies\n lang: LANGUAGES;\n debug: boolean;\n};\n\nexport async function showBeamOrderPageWidgets({\n parentSelector = \".step__sections\",\n apiKey,\n baseUrl = DEFAULT_BASE_URL,\n storeId,\n postalCode,\n discountCodes,\n countryCode,\n orderId,\n email,\n cartTotal,\n cart,\n promoCodes,\n htmlPromoCodes,\n currencyCode = \"USD\",\n domain,\n lang = \"en\",\n debug = false,\n}: TBeamOrderPageParams) {\n const parentElement = document.querySelector(parentSelector) || (await waitForElement(parentSelector));\n if (!parentElement) {\n throw new BeamError(\n `Timed out waiting for selector '${parentSelector}'. Could not render Beam post-purchase widget.`,\n );\n }\n\n // If checkout and order page are on different subdomains, we can't access localStorage\n // We can make postTransaction work by copying the cart cookie to the expected localStorage key on the current domain\n const cartId = await getCookieValue(\"cart\"); // Shopify-only cart identifier\n if (cartId) {\n const beamLocalStorage = createScopedLocalStorage({ apiKey });\n const existingValue = beamLocalStorage.getItemJson(\"cart\") || {};\n beamLocalStorage.setItemJson(\"cart\", { ...existingValue, cartId });\n }\n\n // Note: assign properties one by one instead of bulk Object.assign to type check assignments\n const widget = document.createElement(\"beam-post-purchase\");\n widget.apiKey = apiKey;\n widget.baseUrl = baseUrl;\n widget.storeId = storeId;\n widget.postalCode = postalCode;\n widget.countryCode = countryCode;\n widget.orderId = String(orderId);\n widget.email = email;\n widget.cartTotal = cartTotal;\n widget.cart = cart;\n widget.promoCodes = promoCodes;\n widget.htmlPromoCodes = htmlPromoCodes;\n widget.discountCodes = discountCodes;\n widget.currencyCode = currencyCode;\n widget.domain = domain;\n widget.lang = lang;\n widget.debug = debug;\n\n // Insert widget into DOM\n parentElement.appendChild(widget);\n}\n"],"names":["b","t","p","l","o","n","r","s","d","REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","manualPromoCodes","formattedPromosFromLocalStorage","formatStoreAndReturnPromoCodes","code","promoCookieData","getAllPromoCodesFromCookie","formattedPromosFromCookie","mapToUnvalidatedPromoCodes","formattedPromos","shouldSendPromos","isEmptyPromoData","remoteSessionId","getRemoteSession","getCookieValue","result","postTransaction","isTransactionRedeemed","PROMO_LOCAL_STORAGE_KEY","LOCAL_STORAGE_KEYS","key","BEAM_CART_COOKIE_NAME","PROMO_CODES_COOKIE_NAME","config","deleteCookieValue","BeamOrderCreatedEvent","AsyncController","parseJsonStringArray","_changedProperties","previousPropertyValues","enforceConfig","MissingConfig","transactionIsLessThan30DaysOld","_errorMessage","html","event","selectedNonprofitId","cssReset","__decorateClass","property","state","defineCustomElement","showBeamOrderPageWidgets","parentSelector","apiKey","baseUrl","storeId","postalCode","discountCodes","countryCode","orderId","email","cartTotal","cart","promoCodes","htmlPromoCodes","currencyCode","domain","lang","debug","parentElement","waitForElement","BeamError","cartId","beamLocalStorage","existingValue","widget"],"mappings":"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"}
1
+ {"version":3,"file":"index-BgalrCS_.esm.js","sources":["../../src/components/post-purchase/index.ts","../../src/integrations/shopify-order/order.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, LOCAL_STORAGE_KEYS } 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\";\nimport { getRemoteSession } from \"../../utils/remote-session\";\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 \"remoteSessionId\",\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: String })\n public remoteSessionId?: 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 @state() private orderProcessedAt = \"\";\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 updateComponentState() {\n // Delete selectionId if it was saved with an invalid string (bug introduced v1.54.0)\n if (this.localStorage.getItem(\"transaction\")?.toLocaleLowerCase() === \"undefined\") {\n this.localStorage.removeItem(\"transaction\");\n }\n\n this.selectionId = this.selectionId || this.localStorage.getItem(\"transaction\") || null;\n this.cartId = 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 =\n this.beamCartId ||\n this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\")?.beamCartId ||\n getCookieValue(BEAM_CART_COOKIE_NAME) ||\n null;\n\n if (this.selectionId && this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n }\n\n firstUpdated(_changedProperties: PropertyValues) {\n this.enforceConfig();\n this.updateComponentState();\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 this.updateComponentState();\n\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 remoteSessionId =\n this.remoteSessionId ?? getRemoteSession({ apiKey: this.apiKey }) ?? getCookieValue(\"beam_statsig_session_id\");\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 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 orderProcessedAt: new Date().toISOString(),\n ...(remoteSessionId && { remoteSessionId }),\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 this.orderProcessedAt = result.timestamp;\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 = [\n \"transaction\",\n \"cart\",\n PROMO_LOCAL_STORAGE_KEY,\n LOCAL_STORAGE_KEYS.NONPROFIT,\n LOCAL_STORAGE_KEYS.NONPROFIT_SELECTED_AT,\n ];\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 const THIRTY_DAYS_IN_MS = 30 * 24 * 60 * 60 * 1000;\n const transactionIsLessThan30DaysOld = Date.now() - new Date(this.orderProcessedAt).getTime() < THIRTY_DAYS_IN_MS;\n\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\" && transactionIsLessThan30DaysOld) {\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","/**\n * @deprecated (v1.57.0) Shopify no longer supports customized post-purchase pages directly without Extensibility apps\n */\nimport \"../../components/post-purchase\";\nimport { postTransaction } from \"../../api-sdk/v3/routes\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport { LANGUAGES, TUrl } from \"../../api-sdk/types\";\nimport { waitForElement } from \"../../utils/wait-for-element\";\nimport { BeamError } from \"../../utils/beam-errors\";\nimport { getCookieValue } from \"../../utils/cookies\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { TCart } from \"../../shared/cart-contents\";\n\n// Shopify admin page: admin/settings/checkout\n\nexport type TBeamOrderPageParams = Parameters<typeof postTransaction>[0][\"requestBody\"] & {\n // Either storeId or postalCode + countryCode must be provided\n storeId?: number;\n postalCode?: string;\n countryCode?: string;\n orderId: string;\n email: string;\n cartTotal: number;\n cart: TCart;\n discountCodes: string[];\n promoCodes: string[];\n htmlPromoCodes: string;\n currencyCode: string;\n parentSelector: string; // CSS Selector for parent of widget to be inserted into DOM\n apiKey: string;\n baseUrl: TUrl;\n domain?: string; // Base domain for setting cookies\n lang: LANGUAGES;\n debug: boolean;\n};\n\nexport async function showBeamOrderPageWidgets({\n parentSelector = \".step__sections\",\n apiKey,\n baseUrl = DEFAULT_BASE_URL,\n storeId,\n postalCode,\n discountCodes,\n countryCode,\n orderId,\n email,\n cartTotal,\n cart,\n promoCodes,\n htmlPromoCodes,\n currencyCode = \"USD\",\n domain,\n lang = \"en\",\n debug = false,\n}: TBeamOrderPageParams) {\n const parentElement = document.querySelector(parentSelector) || (await waitForElement(parentSelector));\n if (!parentElement) {\n throw new BeamError(\n `Timed out waiting for selector '${parentSelector}'. Could not render Beam post-purchase widget.`,\n );\n }\n\n // If checkout and order page are on different subdomains, we can't access localStorage\n // We can make postTransaction work by copying the cart cookie to the expected localStorage key on the current domain\n const cartId = await getCookieValue(\"cart\"); // Shopify-only cart identifier\n if (cartId) {\n const beamLocalStorage = createScopedLocalStorage({ apiKey });\n const existingValue = beamLocalStorage.getItemJson(\"cart\") || {};\n beamLocalStorage.setItemJson(\"cart\", { ...existingValue, cartId });\n }\n\n // Note: assign properties one by one instead of bulk Object.assign to type check assignments\n const widget = document.createElement(\"beam-post-purchase\");\n widget.apiKey = apiKey;\n widget.baseUrl = baseUrl;\n widget.storeId = storeId;\n widget.postalCode = postalCode;\n widget.countryCode = countryCode;\n widget.orderId = String(orderId);\n widget.email = email;\n widget.cartTotal = cartTotal;\n widget.cart = cart;\n widget.promoCodes = promoCodes;\n widget.htmlPromoCodes = htmlPromoCodes;\n widget.discountCodes = discountCodes;\n widget.currencyCode = currencyCode;\n widget.domain = domain;\n widget.lang = lang;\n widget.debug = debug;\n\n // Insert widget into DOM\n parentElement.appendChild(widget);\n}\n"],"names":["b","t","p","l","o","n","r","s","d","REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","manualPromoCodes","formattedPromosFromLocalStorage","formatStoreAndReturnPromoCodes","code","promoCookieData","getAllPromoCodesFromCookie","formattedPromosFromCookie","mapToUnvalidatedPromoCodes","formattedPromos","shouldSendPromos","isEmptyPromoData","remoteSessionId","getRemoteSession","getCookieValue","result","postTransaction","isTransactionRedeemed","PROMO_LOCAL_STORAGE_KEY","LOCAL_STORAGE_KEYS","key","BEAM_CART_COOKIE_NAME","PROMO_CODES_COOKIE_NAME","config","deleteCookieValue","BeamOrderCreatedEvent","AsyncController","parseJsonStringArray","_changedProperties","previousPropertyValues","enforceConfig","MissingConfig","transactionIsLessThan30DaysOld","_errorMessage","html","event","selectedNonprofitId","cssReset","__decorateClass","property","state","defineCustomElement","showBeamOrderPageWidgets","parentSelector","apiKey","baseUrl","storeId","postalCode","discountCodes","countryCode","orderId","email","cartTotal","cart","promoCodes","htmlPromoCodes","currencyCode","domain","lang","debug","parentElement","waitForElement","BeamError","cartId","beamLocalStorage","existingValue","widget"],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import{n as o,r as d,a as R,b as g}from"./lit-BEag9MFp.esm.js";import{D as b,z as v,h as K,_ as M,$ as B,C as F,R as N,g as y,a1 as L,L as P,a2 as x,Y as J,u as W,F as k,P as Y,w as j,n as q}from"./utils-C5hmbxa4.esm.js";import{c as z,d as G,e as V}from"./css-card-grid-CiqEjkwR.esm.js";import{B as T,A as H,c as Q}from"./index-Dm-K2MLY.esm.js";import{p as X}from"./index-HqfLVFOU.esm.js";import"../components/impact-overview.esm.js";var Z=Object.defineProperty,e=(l,a,s,h)=>{for(var n=void 0,c=l.length-1,m;c>=0;c--)(m=l[c])&&(n=m(a,s,n)||n);return n&&Z(a,s,n),n};const U=["baseUrl","apiKey","orderId","cartTotal","currencyCode","lang"],tt=["storeId","postalCode","countryCode","cart","discountCodes","promoCodes","htmlPromoCodes","email","partnerUserId","remoteSessionId"];class t extends R{constructor(){super(...arguments),this.baseUrl=b,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.orderProcessedAt="",this.draftConfig=!1,this.localStorage=v(this),this.handlePostTransaction=async()=>{this.enforceConfig(),this.updateComponentState();const a=this.getManualPromoCodes(),s=K(a.map(p=>({value:p})),this.apiKey),h=M(),n={unvalidatedPromoCodes:B(a.map(p=>({value:p}))),validatedPromoCodes:h?.validatedPromoCodes??[]},c=s??n,m=c&&!F(c),u=this.remoteSessionId??N({apiKey:this.apiKey})??y("beam_statsig_session_id"),i=await X({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,...m&&{promos:c},discountCodes:this.discountCodes,orderProcessedAt:new Date().toISOString(),...u&&{remoteSessionId:u}}});this.transactionId=i.transactionId,this.userId=i.beamUserId,this.nonprofitId=i.nonprofitId,this.excludeDonationsForRecurringTransactions=!!i.reportSettings?.excludeRecurringDonations,this.creationMethod=i.creationMethod||"",this.orderProcessedAt=i.timestamp;const C=!!this.nonprofitId;return this.activeWidget=C?"impact-overview":"redeem-transaction",i.transactionCreated&&(["transaction","cart",L,P.NONPROFIT,P.NONPROFIT_SELECTED_AT].forEach(p=>{this.localStorage.removeItem(p)}),[{name:T,path:"/",domain:this.domain},{name:x,path:"/",domain:this.domain}].forEach(p=>J(p)),dispatchEvent(new W({transactionId:i.transactionId,orderId:this.orderId,cartTotal:this.cartTotal,currencyCode:this.currencyCode}))),i},this.transactionDataController=new H(this,this.handlePostTransaction)}get parsedPromoCodes(){return k(this.htmlPromoCodes)}updateComponentState(){this.localStorage.getItem("transaction")?.toLocaleLowerCase()==="undefined"&&this.localStorage.removeItem("transaction"),this.selectionId=this.selectionId||this.localStorage.getItem("transaction")||null,this.cartId=this.cartId||this.localStorage.getItemJson("cart")?.cartId||null,this.beamCartId=this.beamCartId||this.localStorage.getItemJson("cart")?.beamCartId||y(T)||null,this.selectionId&&this.nonprofitId&&(this.activeWidget="impact-overview")}firstUpdated(a){this.enforceConfig(),this.updateComponentState()}async updated(a){[...U,...tt].some(s=>a.has(s))&&await this.transactionDataController.exec()}enforceConfig(){if(V(U,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")}getManualPromoCodes(){return this.parsedPromoCodes?.length?this.parsedPromoCodes:this.promoCodes?.length?this.promoCodes:[]}render(){const a=Date.now()-new Date(this.orderProcessedAt).getTime()<2592e6;return this.transactionDataController.loading?"":this.transactionDataController.error?this.debug?Q({error:this.transactionDataController.error}):"":this.excludeDonationsForRecurringTransactions&&this.creationMethod==="recurring"?g``:this.activeWidget==="redeem-transaction"&&a?g`
2
+ <beam-redeem-transaction
3
+ part="redeem-transaction"
4
+ baseUrl="${this.baseUrl}"
5
+ apiKey="${this.apiKey}"
6
+ storeId="${this.storeId}"
7
+ postalCode="${this.postalCode}"
8
+ countryCode="${this.countryCode}"
9
+ transactionId="${this.transactionId}"
10
+ cart="${JSON.stringify(this.cart)}"
11
+ lang="${this.lang}"
12
+ excludeDonationsForRecurringTransactions="${this.excludeDonationsForRecurringTransactions}"
13
+ ?draftConfig="${this.draftConfig}"
14
+ ?debug="${this.debug}"
15
+ @beamnonprofitselect="${s=>{if(!(s instanceof CustomEvent))return;const{selectedNonprofitId:h}=s.detail;this.nonprofitId=h??null,this.activeWidget="impact-overview"}}"
16
+ ></beam-redeem-transaction>
17
+ `:this.activeWidget==="impact-overview"?g`
18
+ <beam-impact-overview
19
+ part="impact-overview"
20
+ storeId="${this.storeId}"
21
+ baseUrl="${this.baseUrl}"
22
+ apiKey="${this.apiKey}"
23
+ userId="${this.userId}"
24
+ nonprofitId="${this.nonprofitId}"
25
+ lang="${this.lang}"
26
+ discountCodes="${JSON.stringify(this.discountCodes)}"
27
+ transactionId="${this.transactionId}"
28
+ ?draftConfig="${this.draftConfig}"
29
+ ?debug="${this.debug}"
30
+ ></beam-impact-overview>
31
+ `:""}}t.tagName="beam-post-purchase",t.styles=[z],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:String})],t.prototype,"remoteSessionId"),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([d()],t.prototype,"excludeDonationsForRecurringTransactions"),e([d()],t.prototype,"creationMethod"),e([d()],t.prototype,"orderProcessedAt"),e([o({type:Boolean})],t.prototype,"draftConfig"),G(t);async function et({parentSelector:l=".step__sections",apiKey:a,baseUrl:s=b,storeId:h,postalCode:n,discountCodes:c,countryCode:m,orderId:u,email:i,cartTotal:C,cart:p,promoCodes:w,htmlPromoCodes:$,currencyCode:A="USD",domain:E,lang:O="en",debug:D=!1}){const I=document.querySelector(l)||await j(l);if(!I)throw new q(`Timed out waiting for selector '${l}'. Could not render Beam post-purchase widget.`);const f=await y("cart");if(f){const S=v({apiKey:a}),_=S.getItemJson("cart")||{};S.setItemJson("cart",{..._,cartId:f})}const r=document.createElement("beam-post-purchase");r.apiKey=a,r.baseUrl=s,r.storeId=h,r.postalCode=n,r.countryCode=m,r.orderId=String(u),r.email=i,r.cartTotal=C,r.cart=p,r.promoCodes=w,r.htmlPromoCodes=$,r.discountCodes=c,r.currencyCode=A,r.domain=E,r.lang=O,r.debug=D,I.appendChild(r)}export{t as B,et as s};
32
+ //# sourceMappingURL=index-C60Vejym.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-DBKUxzAl.esm.js","sources":["../../src/components/post-purchase/index.ts","../../src/integrations/shopify-order/order.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, LOCAL_STORAGE_KEYS } 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\";\nimport { getRemoteSession } from \"../../utils/remote-session\";\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 \"remoteSessionId\",\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: String })\n public remoteSessionId?: 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 @state() private orderProcessedAt = \"\";\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 updateComponentState() {\n // Delete selectionId if it was saved with an invalid string (bug introduced v1.54.0)\n if (this.localStorage.getItem(\"transaction\")?.toLocaleLowerCase() === \"undefined\") {\n this.localStorage.removeItem(\"transaction\");\n }\n\n this.selectionId = this.selectionId || this.localStorage.getItem(\"transaction\") || null;\n this.cartId = 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 =\n this.beamCartId ||\n this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\")?.beamCartId ||\n getCookieValue(BEAM_CART_COOKIE_NAME) ||\n null;\n\n if (this.selectionId && this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n }\n\n firstUpdated(_changedProperties: PropertyValues) {\n this.enforceConfig();\n this.updateComponentState();\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 this.updateComponentState();\n\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 remoteSessionId =\n this.remoteSessionId ?? getRemoteSession({ apiKey: this.apiKey }) ?? getCookieValue(\"beam_statsig_session_id\");\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 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 orderProcessedAt: new Date().toISOString(),\n ...(remoteSessionId && { remoteSessionId }),\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 this.orderProcessedAt = result.timestamp;\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 = [\n \"transaction\",\n \"cart\",\n PROMO_LOCAL_STORAGE_KEY,\n LOCAL_STORAGE_KEYS.NONPROFIT,\n LOCAL_STORAGE_KEYS.NONPROFIT_SELECTED_AT,\n ];\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 const THIRTY_DAYS_IN_MS = 30 * 24 * 60 * 60 * 1000;\n const transactionIsLessThan30DaysOld = Date.now() - new Date(this.orderProcessedAt).getTime() < THIRTY_DAYS_IN_MS;\n\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\" && transactionIsLessThan30DaysOld) {\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","/**\n * @deprecated (v1.57.0) Shopify no longer supports customized post-purchase pages directly without Extensibility apps\n */\nimport \"../../components/post-purchase\";\nimport { postTransaction } from \"../../api-sdk/v3/routes\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport { LANGUAGES, TUrl } from \"../../api-sdk/types\";\nimport { waitForElement } from \"../../utils/wait-for-element\";\nimport { BeamError } from \"../../utils/beam-errors\";\nimport { getCookieValue } from \"../../utils/cookies\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { TCart } from \"../../shared/cart-contents\";\n\n// Shopify admin page: admin/settings/checkout\n\nexport type TBeamOrderPageParams = Parameters<typeof postTransaction>[0][\"requestBody\"] & {\n // Either storeId or postalCode + countryCode must be provided\n storeId?: number;\n postalCode?: string;\n countryCode?: string;\n orderId: string;\n email: string;\n cartTotal: number;\n cart: TCart;\n discountCodes: string[];\n promoCodes: string[];\n htmlPromoCodes: string;\n currencyCode: string;\n parentSelector: string; // CSS Selector for parent of widget to be inserted into DOM\n apiKey: string;\n baseUrl: TUrl;\n domain?: string; // Base domain for setting cookies\n lang: LANGUAGES;\n debug: boolean;\n};\n\nexport async function showBeamOrderPageWidgets({\n parentSelector = \".step__sections\",\n apiKey,\n baseUrl = DEFAULT_BASE_URL,\n storeId,\n postalCode,\n discountCodes,\n countryCode,\n orderId,\n email,\n cartTotal,\n cart,\n promoCodes,\n htmlPromoCodes,\n currencyCode = \"USD\",\n domain,\n lang = \"en\",\n debug = false,\n}: TBeamOrderPageParams) {\n const parentElement = document.querySelector(parentSelector) || (await waitForElement(parentSelector));\n if (!parentElement) {\n throw new BeamError(\n `Timed out waiting for selector '${parentSelector}'. Could not render Beam post-purchase widget.`,\n );\n }\n\n // If checkout and order page are on different subdomains, we can't access localStorage\n // We can make postTransaction work by copying the cart cookie to the expected localStorage key on the current domain\n const cartId = await getCookieValue(\"cart\"); // Shopify-only cart identifier\n if (cartId) {\n const beamLocalStorage = createScopedLocalStorage({ apiKey });\n const existingValue = beamLocalStorage.getItemJson(\"cart\") || {};\n beamLocalStorage.setItemJson(\"cart\", { ...existingValue, cartId });\n }\n\n // Note: assign properties one by one instead of bulk Object.assign to type check assignments\n const widget = document.createElement(\"beam-post-purchase\");\n widget.apiKey = apiKey;\n widget.baseUrl = baseUrl;\n widget.storeId = storeId;\n widget.postalCode = postalCode;\n widget.countryCode = countryCode;\n widget.orderId = String(orderId);\n widget.email = email;\n widget.cartTotal = cartTotal;\n widget.cart = cart;\n widget.promoCodes = promoCodes;\n widget.htmlPromoCodes = htmlPromoCodes;\n widget.discountCodes = discountCodes;\n widget.currencyCode = currencyCode;\n widget.domain = domain;\n widget.lang = lang;\n widget.debug = debug;\n\n // Insert widget into DOM\n parentElement.appendChild(widget);\n}\n"],"names":["b","t","p","l","o","n","r","s","d","REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","manualPromoCodes","formattedPromosFromLocalStorage","formatStoreAndReturnPromoCodes","code","promoCookieData","getAllPromoCodesFromCookie","formattedPromosFromCookie","mapToUnvalidatedPromoCodes","formattedPromos","shouldSendPromos","isEmptyPromoData","remoteSessionId","getRemoteSession","getCookieValue","result","postTransaction","isTransactionRedeemed","PROMO_LOCAL_STORAGE_KEY","LOCAL_STORAGE_KEYS","key","BEAM_CART_COOKIE_NAME","PROMO_CODES_COOKIE_NAME","config","deleteCookieValue","BeamOrderCreatedEvent","AsyncController","parseJsonStringArray","_changedProperties","previousPropertyValues","enforceConfig","MissingConfig","transactionIsLessThan30DaysOld","_errorMessage","html","event","selectedNonprofitId","cssReset","__decorateClass","property","state","defineCustomElement","showBeamOrderPageWidgets","parentSelector","apiKey","baseUrl","storeId","postalCode","discountCodes","countryCode","orderId","email","cartTotal","cart","promoCodes","htmlPromoCodes","currencyCode","domain","lang","debug","parentElement","waitForElement","BeamError","cartId","beamLocalStorage","existingValue","widget"],"mappings":"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"}
1
+ {"version":3,"file":"index-C60Vejym.esm.js","sources":["../../src/components/post-purchase/index.ts","../../src/integrations/shopify-order/order.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, LOCAL_STORAGE_KEYS } 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\";\nimport { getRemoteSession } from \"../../utils/remote-session\";\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 \"remoteSessionId\",\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: String })\n public remoteSessionId?: 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 @state() private orderProcessedAt = \"\";\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 updateComponentState() {\n // Delete selectionId if it was saved with an invalid string (bug introduced v1.54.0)\n if (this.localStorage.getItem(\"transaction\")?.toLocaleLowerCase() === \"undefined\") {\n this.localStorage.removeItem(\"transaction\");\n }\n\n this.selectionId = this.selectionId || this.localStorage.getItem(\"transaction\") || null;\n this.cartId = 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 =\n this.beamCartId ||\n this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\")?.beamCartId ||\n getCookieValue(BEAM_CART_COOKIE_NAME) ||\n null;\n\n if (this.selectionId && this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n }\n\n firstUpdated(_changedProperties: PropertyValues) {\n this.enforceConfig();\n this.updateComponentState();\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 this.updateComponentState();\n\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 remoteSessionId =\n this.remoteSessionId ?? getRemoteSession({ apiKey: this.apiKey }) ?? getCookieValue(\"beam_statsig_session_id\");\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 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 orderProcessedAt: new Date().toISOString(),\n ...(remoteSessionId && { remoteSessionId }),\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 this.orderProcessedAt = result.timestamp;\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 = [\n \"transaction\",\n \"cart\",\n PROMO_LOCAL_STORAGE_KEY,\n LOCAL_STORAGE_KEYS.NONPROFIT,\n LOCAL_STORAGE_KEYS.NONPROFIT_SELECTED_AT,\n ];\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 const THIRTY_DAYS_IN_MS = 30 * 24 * 60 * 60 * 1000;\n const transactionIsLessThan30DaysOld = Date.now() - new Date(this.orderProcessedAt).getTime() < THIRTY_DAYS_IN_MS;\n\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\" && transactionIsLessThan30DaysOld) {\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","/**\n * @deprecated (v1.57.0) Shopify no longer supports customized post-purchase pages directly without Extensibility apps\n */\nimport \"../../components/post-purchase\";\nimport { postTransaction } from \"../../api-sdk/v3/routes\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport { LANGUAGES, TUrl } from \"../../api-sdk/types\";\nimport { waitForElement } from \"../../utils/wait-for-element\";\nimport { BeamError } from \"../../utils/beam-errors\";\nimport { getCookieValue } from \"../../utils/cookies\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { TCart } from \"../../shared/cart-contents\";\n\n// Shopify admin page: admin/settings/checkout\n\nexport type TBeamOrderPageParams = Parameters<typeof postTransaction>[0][\"requestBody\"] & {\n // Either storeId or postalCode + countryCode must be provided\n storeId?: number;\n postalCode?: string;\n countryCode?: string;\n orderId: string;\n email: string;\n cartTotal: number;\n cart: TCart;\n discountCodes: string[];\n promoCodes: string[];\n htmlPromoCodes: string;\n currencyCode: string;\n parentSelector: string; // CSS Selector for parent of widget to be inserted into DOM\n apiKey: string;\n baseUrl: TUrl;\n domain?: string; // Base domain for setting cookies\n lang: LANGUAGES;\n debug: boolean;\n};\n\nexport async function showBeamOrderPageWidgets({\n parentSelector = \".step__sections\",\n apiKey,\n baseUrl = DEFAULT_BASE_URL,\n storeId,\n postalCode,\n discountCodes,\n countryCode,\n orderId,\n email,\n cartTotal,\n cart,\n promoCodes,\n htmlPromoCodes,\n currencyCode = \"USD\",\n domain,\n lang = \"en\",\n debug = false,\n}: TBeamOrderPageParams) {\n const parentElement = document.querySelector(parentSelector) || (await waitForElement(parentSelector));\n if (!parentElement) {\n throw new BeamError(\n `Timed out waiting for selector '${parentSelector}'. Could not render Beam post-purchase widget.`,\n );\n }\n\n // If checkout and order page are on different subdomains, we can't access localStorage\n // We can make postTransaction work by copying the cart cookie to the expected localStorage key on the current domain\n const cartId = await getCookieValue(\"cart\"); // Shopify-only cart identifier\n if (cartId) {\n const beamLocalStorage = createScopedLocalStorage({ apiKey });\n const existingValue = beamLocalStorage.getItemJson(\"cart\") || {};\n beamLocalStorage.setItemJson(\"cart\", { ...existingValue, cartId });\n }\n\n // Note: assign properties one by one instead of bulk Object.assign to type check assignments\n const widget = document.createElement(\"beam-post-purchase\");\n widget.apiKey = apiKey;\n widget.baseUrl = baseUrl;\n widget.storeId = storeId;\n widget.postalCode = postalCode;\n widget.countryCode = countryCode;\n widget.orderId = String(orderId);\n widget.email = email;\n widget.cartTotal = cartTotal;\n widget.cart = cart;\n widget.promoCodes = promoCodes;\n widget.htmlPromoCodes = htmlPromoCodes;\n widget.discountCodes = discountCodes;\n widget.currencyCode = currencyCode;\n widget.domain = domain;\n widget.lang = lang;\n widget.debug = debug;\n\n // Insert widget into DOM\n parentElement.appendChild(widget);\n}\n"],"names":["b","t","p","l","o","n","r","s","d","REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","manualPromoCodes","formattedPromosFromLocalStorage","formatStoreAndReturnPromoCodes","code","promoCookieData","getAllPromoCodesFromCookie","formattedPromosFromCookie","mapToUnvalidatedPromoCodes","formattedPromos","shouldSendPromos","isEmptyPromoData","remoteSessionId","getRemoteSession","getCookieValue","result","postTransaction","isTransactionRedeemed","PROMO_LOCAL_STORAGE_KEY","LOCAL_STORAGE_KEYS","key","BEAM_CART_COOKIE_NAME","PROMO_CODES_COOKIE_NAME","config","deleteCookieValue","BeamOrderCreatedEvent","AsyncController","parseJsonStringArray","_changedProperties","previousPropertyValues","enforceConfig","MissingConfig","transactionIsLessThan30DaysOld","_errorMessage","html","event","selectedNonprofitId","cssReset","__decorateClass","property","state","defineCustomElement","showBeamOrderPageWidgets","parentSelector","apiKey","baseUrl","storeId","postalCode","discountCodes","countryCode","orderId","email","cartTotal","cart","promoCodes","htmlPromoCodes","currencyCode","domain","lang","debug","parentElement","waitForElement","BeamError","cartId","beamLocalStorage","existingValue","widget"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { B as BeamShopifyCartIntegrationConfig, a as addBeamAttributesToCart, b as appendBeamAttributesToCart, c as appendStatsigToShopifyCartAttributes, d as appendToShopifyCartBeamAttribute, g as getBeamAttributesForCart, e as getCurrentCart, f as getShopifyCart, r as registerCartIntegration, t as trackCart } from './cart-ChovPXmM.esm.js';
1
+ import { B as BeamShopifyCartIntegrationConfig, a as addBeamAttributesToCart, b as appendBeamAttributesToCart, c as appendStatsigToShopifyCartAttributes, d as appendToShopifyCartBeamAttribute, g as getBeamAttributesForCart, e as getCurrentCart, f as getShopifyCart, r as registerCartIntegration, t as trackCart, u as unregisterCartIntegration } from './cart-CKltrzQt.esm.js';
2
2
 
3
3
  declare const index_BeamShopifyCartIntegrationConfig: typeof BeamShopifyCartIntegrationConfig;
4
4
  declare const index_addBeamAttributesToCart: typeof addBeamAttributesToCart;
@@ -10,6 +10,7 @@ declare const index_getCurrentCart: typeof getCurrentCart;
10
10
  declare const index_getShopifyCart: typeof getShopifyCart;
11
11
  declare const index_registerCartIntegration: typeof registerCartIntegration;
12
12
  declare const index_trackCart: typeof trackCart;
13
+ declare const index_unregisterCartIntegration: typeof unregisterCartIntegration;
13
14
  declare namespace index {
14
15
  export {
15
16
  index_BeamShopifyCartIntegrationConfig as BeamShopifyCartIntegrationConfig,
@@ -22,6 +23,7 @@ declare namespace index {
22
23
  index_getShopifyCart as getShopifyCart,
23
24
  index_registerCartIntegration as registerCartIntegration,
24
25
  index_trackCart as trackCart,
26
+ index_unregisterCartIntegration as unregisterCartIntegration,
25
27
  };
26
28
  }
27
29
 
@@ -0,0 +1,2 @@
1
+ import{o as j,i as k,b as x}from"./lodash-CrMU6wKg.esm.js";import{Q as D,l as u,J as q,A as M,M as F,b as Q,N as V,U as X,B as H,W as Y,K as Z,t as $,O as tt,V as et,z as at,X as nt}from"./utils-C5hmbxa4.esm.js";import{B as R}from"./index-Dm-K2MLY.esm.js";import{O as B}from"./index-MAMeVd6l.esm.js";const L=window.Shopify?.routes?.root||"/";let g=null,O=!0,A=!1;const it="cart";async function U(t,c=!0){if(g)return!1;const s=new AbortController;g=s;const{signal:n}=s;Q(),window.addEventListener(V.eventName,async()=>{A=!0},{signal:n}),window.addEventListener(X.eventName,async i=>{const a=i,o=/cart\/(add|change|update|clear)/,r=a.detail.type==="xhr"?a.detail.xhr.responseURL:a.detail.response.url,e=new URL(r);if(!o.test(e.pathname))return;const p=await S(t,n);n.aborted||!p.changed||B(t,p.cart)},{signal:n});let d,l;window.addEventListener(H.eventName,async i=>{const a=i;u.debug("[cart-page][BeamNonprofitSelectEvent]",a.detail);const{source:o,selectedNonprofitId:r,selectionId:e}=a.detail;if(o===Y.select_nonprofit){if(d===r&&l===e)return;const p=await _(t);await f({...p,selectedNonprofitId:r,selectionId:e}),l=e,d=r}},{signal:n}),window.addEventListener(Z.eventName,async i=>{const a=i;u.debug("[cart-page][BeamNonprofitSelectionRemovedEvent]",a.detail);const{newNonprofitId:o,selectionId:r}=a.detail;if(d===o&&l===r)return;const e=await _(t);await f({...e,selectedNonprofitId:null,selectionId:r}),l=r,d=o},{signal:n}),window.addEventListener($.eventName,async i=>{const a=i;if(u.debug("[cart-page][BeamCartCreatedEvent]",a.detail),window.statsig||c){const o=await _(t);await f(o)}},{signal:n}),window.addEventListener(tt.eventName,async i=>{const a=i;if(u.debug("[cart-page][BeamCartChangeEvent]",a.detail),window.statsig||c){const o=await _(t);await f(o)}},{signal:n});try{if(n.aborted)return!1;const i=await S(t,n);return!(n.aborted||(await B(t,i.cart,!0),n.aborted))}catch(i){throw g===s&&(s.abort(),g=null),i}}async function W(t,{clearStorage:c=!1}={}){const s=!!g;return s&&(g?.abort(),g=null,nt(),f.reset(),J.reset(),O=!0,A=!1),c&&et(t),s}async function T(t){const c=await _(t);await f(c)}async function _(t){let c,s;if(window.statsig)try{const a=window.statsig;typeof a?.getLayer("beam_trial_layer")?.get("show_beam")=="boolean"&&(c=a.getLayer("beam_trial_layer").get("show_beam",!1),s=a.getStableID())}catch{}const n=q(it,t),d=M(R,t),{chainId:l,storeId:i}=t;return{showBeam:c??void 0,remoteSessionId:s??void 0,beamCartId:d&&d!=="null"?d:void 0,cartId:n&&n!=="null"?n:void 0,chainId:l,storeId:i}}const z=T;async function S(t,c){const{token:s,total_price:n,item_count:d,currency:l,items:i,cart_level_discount_applications:a,attributes:o}=await v();let r=!1;const e=at(t),p=e.getItemJson("cart"),I=M(R,t),C={cartId:s,beamCartId:I,subtotal:n/100,itemCount:d,currencyCode:l,schema:{source:"generic"},content:{items:i.map(({sku:m,final_line_price:b,product_id:N,line_level_discount_allocations:E})=>{const y=m||String(N),h=b/100,G=E?.map(({discount_application:K})=>({code:K?.title,applicable:!0}));return{remoteProductIdentifier:y,localAmount:h,discounts:G}}),discounts:a.map(({title:m})=>({code:m,applicable:!0}))}};let w=null;try{o?.beam&&(w=JSON.parse(o.beam))}catch(m){u.error(m)}if(w&&O&&!A&&!c?.aborted){O=!1;const{nonprofit_id:m,selection_id:b}=w,N=e.getItem("nonprofit"),E=e.getItem("transaction"),y=m!==void 0&&String(m)!==N,h=b!=null&&String(b)!==E;(y||h)&&(y&&(e.setItem("nonprofit",String(m)),e.setItem("nonprofit_selected_at",new Date().toISOString())),h&&(e.setItem("transaction",String(b)),e.setItem("nonprofit_selected_at",new Date().toISOString())),window.dispatchEvent(new F({nonprofitId:m,nonprofitIdChanged:y,selectionId:b,selectionIdChanged:h})))}return k(C,{...p,beamCartId:p?.beamCartId})||(r=!0),{changed:r,cart:C}}const P=B,v=async function(){return await window.fetch(L+"cart.js",{method:"GET",headers:{"Content-Type":"application/json"}}).then(t=>t.json())},f=D(async function({selectedNonprofitId:t,selectionId:c,beamCartId:s,cartId:n,chainId:d,storeId:l,showBeam:i,remoteSessionId:a}){const{attributes:o}=await v(),r=o?.beam;let e={};try{r&&(e=JSON.parse(r))}catch(w){u.error(w)}const p=j({nonprofit_id:t,selection_id:c,beam_cart_id:s,shopify_cart_id:n,chain_id:d,store_id:l,show_beam:i,remote_session_id:a},x),I={...e,...p};t===null&&(I.nonprofit_id=void 0);const C={beam:JSON.stringify(I)};if(!k(I,e))try{await window.fetch(L+"cart/update.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({attributes:C})})}catch(w){u.error(w)}}),J=D(async function({selectedNonprofitId:t,selectionId:c,beamCartId:s,cartId:n,chainId:d,storeId:l}){let i,a;if(window.statsig)try{const e=window.statsig;typeof e?.getLayer("beam_trial_layer")?.get("show_beam")=="boolean"&&(i=e.getLayer("beam_trial_layer").get("show_beam",!1),a=e.getStableID())}catch{}const o=j({nonprofit_id:t,selection_id:c,beam_cart_id:s,shopify_cart_id:n,chain_id:d,store_id:l,show_beam:i,remote_session_id:a},x);t===null&&(o.nonprofit_id=void 0);const r={beam:JSON.stringify(o)};try{await window.fetch(L+"cart/update.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({attributes:r})})}catch(e){u.error(e)}});var ot=Object.freeze({__proto__:null,addBeamAttributesToCart:J,appendBeamAttributesToCart:f,appendStatsigToShopifyCartAttributes:z,appendToShopifyCartBeamAttribute:T,getBeamAttributesForCart:_,getCurrentCart:S,getShopifyCart:v,registerCartIntegration:U,trackCart:P,unregisterCartIntegration:W});export{J,S as L,v as T,W as a,U as e,f as g,ot as i,z as n,P as r,T as x,_ as y};
2
+ //# sourceMappingURL=index-D6aFJ4cU.esm.js.map