@beamimpact/web-sdk 1.47.1 → 1.50.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/_share-dialog-dependencies-RmYWlyJ0.esm.js +2 -0
- package/dist/chunks/_share-dialog-dependencies-RmYWlyJ0.esm.js.map +1 -0
- package/dist/chunks/_share-dialog-dependencies-yCBFjXxQ.esm.js +2 -0
- package/dist/chunks/_share-dialog-dependencies-yCBFjXxQ.esm.js.map +1 -0
- package/dist/chunks/beam-errors-AMvTvR1C.esm.js +2 -0
- package/dist/chunks/beam-errors-AMvTvR1C.esm.js.map +1 -0
- package/dist/chunks/{beam-errors-fXDkG1zo.esm.d.ts → beam-errors-bKCZlkvr.esm.d.ts} +2 -7
- package/dist/chunks/cart-contents-6_ztOjrx.esm.d.ts +18 -0
- package/dist/chunks/cart-contents-h60geKWa.esm.js.map +1 -1
- package/dist/chunks/enforce-config-S8EGgEnO.esm.js +3 -0
- package/dist/chunks/enforce-config-S8EGgEnO.esm.js.map +1 -0
- package/dist/chunks/enforce-config-l-tNb_z7.esm.js +3 -0
- package/dist/chunks/enforce-config-l-tNb_z7.esm.js.map +1 -0
- package/dist/chunks/events-T3hYV1LF.esm.js +2 -0
- package/dist/chunks/events-T3hYV1LF.esm.js.map +1 -0
- package/dist/chunks/{events-ZCTR9JGZ.esm.d.ts → events-u_8n2LIU.esm.d.ts} +33 -4
- package/dist/chunks/{index-PA0NAKHV.esm.d.ts → index-0X3JKFYs.esm.d.ts} +1 -1
- package/dist/chunks/{index-XH3OS_sy.esm.d.ts → index-2qmtuEV_.esm.d.ts} +4 -4
- package/dist/chunks/index-44clOvXJ.esm.js +2 -0
- package/dist/chunks/index-44clOvXJ.esm.js.map +1 -0
- package/dist/chunks/index-B-9JPaCH.esm.js +2 -0
- package/dist/chunks/index-B-9JPaCH.esm.js.map +1 -0
- package/dist/chunks/{index-b3WjW4PD.esm.js → index-CNVMNDM4.esm.js} +2 -2
- package/dist/chunks/index-CNVMNDM4.esm.js.map +1 -0
- package/dist/chunks/{index-59K_SAPn.esm.js → index-HVGMpZIV.esm.js} +2 -2
- package/dist/chunks/{index-59K_SAPn.esm.js.map → index-HVGMpZIV.esm.js.map} +1 -1
- package/dist/chunks/{index-cuCnejll.esm.js → index-UHchr4H_.esm.js} +2 -2
- package/dist/chunks/index-UHchr4H_.esm.js.map +1 -0
- package/dist/chunks/{index-KOSC2Z9-.esm.js → index-XPlAZw7t.esm.js} +2 -2
- package/dist/chunks/{index-KOSC2Z9-.esm.js.map → index-XPlAZw7t.esm.js.map} +1 -1
- package/dist/chunks/{index-v6fG3D6u.esm.d.ts → index-bhqIqVQJ.esm.d.ts} +1 -1
- package/dist/chunks/{index--z5MSe4-.esm.d.ts → index-cznI-EZa.esm.d.ts} +1 -1
- package/dist/chunks/index-dLnZQZlT.esm.js +2 -0
- package/dist/chunks/index-dLnZQZlT.esm.js.map +1 -0
- package/dist/chunks/index-f7fp9odj.esm.js +2 -0
- package/dist/chunks/index-f7fp9odj.esm.js.map +1 -0
- package/dist/chunks/index-kFulvjM4.esm.js +2 -0
- package/dist/chunks/index-kFulvjM4.esm.js.map +1 -0
- package/dist/chunks/index-m1LRybiJ.esm.js +2 -0
- package/dist/chunks/index-m1LRybiJ.esm.js.map +1 -0
- package/dist/chunks/index-puZGYsUA.esm.d.ts +46 -0
- package/dist/chunks/index-q2vZ79t1.esm.d.ts +46 -0
- package/dist/chunks/index-smGc5rsi.esm.js +2 -0
- package/dist/chunks/index-smGc5rsi.esm.js.map +1 -0
- package/dist/chunks/index-wz6Yfo37.esm.js +2 -0
- package/dist/chunks/index-wz6Yfo37.esm.js.map +1 -0
- package/dist/chunks/{localize-o-cYvHQf.esm.js → localize-7sMSg1W9.esm.js} +2 -2
- package/dist/chunks/{localize-o-cYvHQf.esm.js.map → localize-7sMSg1W9.esm.js.map} +1 -1
- package/dist/chunks/{localize-m-_ESmpk.esm.js → localize-OiRewTgu.esm.js} +2 -2
- package/dist/chunks/{localize-m-_ESmpk.esm.js.map → localize-OiRewTgu.esm.js.map} +1 -1
- package/dist/chunks/{openapi-spec-hjdK2L9Q.esm.d.ts → openapi-spec-bxGNhNMa.esm.d.ts} +332 -0
- package/dist/chunks/order-page-WPxvCNLM.esm.js +2 -0
- package/dist/chunks/order-page-WPxvCNLM.esm.js.map +1 -0
- package/dist/chunks/order-page-ZpOf35sP.esm.js +2 -0
- package/dist/chunks/order-page-ZpOf35sP.esm.js.map +1 -0
- package/dist/chunks/{order-page-9clVUPaS.esm.d.ts → order-page-dlXIs0gJ.esm.d.ts} +6 -4
- package/dist/chunks/promo-types-aQ_hre6t.esm.d.ts +14 -0
- package/dist/chunks/promoManager--3WXq4at.esm.js +2 -0
- package/dist/chunks/promoManager--3WXq4at.esm.js.map +1 -0
- package/dist/chunks/promoManager-YUzbMtwY.esm.js +2 -0
- package/dist/chunks/promoManager-YUzbMtwY.esm.js.map +1 -0
- package/dist/chunks/routes-YPOoVIR2.esm.js +2 -0
- package/dist/chunks/routes-YPOoVIR2.esm.js.map +1 -0
- package/dist/chunks/{routes-iurI6dvR.esm.d.ts → routes-lGXt7ttd.esm.d.ts} +76 -3
- package/dist/chunks/routes-o-phF_L1.esm.js +2 -0
- package/dist/chunks/routes-o-phF_L1.esm.js.map +1 -0
- package/dist/chunks/{share-button-bUM2WBaV.esm.js → share-button-EsUPw38-.esm.js} +2 -2
- package/dist/chunks/{share-button-DeVQh1aE.esm.js.map → share-button-EsUPw38-.esm.js.map} +1 -1
- package/dist/chunks/{share-button-DeVQh1aE.esm.js → share-button-r0y-bbwR.esm.js} +2 -2
- package/dist/chunks/{share-button-bUM2WBaV.esm.js.map → share-button-r0y-bbwR.esm.js.map} +1 -1
- package/dist/chunks/{shoelace-components-JZANE20x.esm.js → shoelace-components-PB22pjfM.esm.js} +2 -2
- package/dist/chunks/{shoelace-components-JZANE20x.esm.js.map → shoelace-components-PB22pjfM.esm.js.map} +1 -1
- package/dist/chunks/{shoelace-components-Jghvahj3.esm.js → shoelace-components-lr4iB8kL.esm.js} +2 -2
- package/dist/chunks/{shoelace-components-Jghvahj3.esm.js.map → shoelace-components-lr4iB8kL.esm.js.map} +1 -1
- package/dist/chunks/{types-zbTZ8-KP.esm.d.ts → types-IbMT3Nwn.esm.d.ts} +5 -1
- package/dist/chunks/{update-cart-l86bU5uS.esm.d.ts → update-cart-JO4fuiim.esm.d.ts} +1 -1
- package/dist/chunks/update-cart-UuMHYehB.esm.js +2 -0
- package/dist/chunks/update-cart-UuMHYehB.esm.js.map +1 -0
- package/dist/chunks/update-cart-mNsQ9K-k.esm.js +2 -0
- package/dist/chunks/update-cart-mNsQ9K-k.esm.js.map +1 -0
- package/dist/components/community-impact.d.ts +1 -1
- package/dist/components/community-impact.esm.js +1 -1
- package/dist/components/community-impact.js +1 -1
- package/dist/components/cumulative-impact.d.ts +1 -1
- package/dist/components/cumulative-impact.esm.js +1 -1
- package/dist/components/cumulative-impact.js +1 -1
- package/dist/components/impact-overview.d.ts +6 -2
- package/dist/components/impact-overview.esm.js +2 -2
- package/dist/components/impact-overview.esm.js.map +1 -1
- package/dist/components/impact-overview.js +2 -2
- package/dist/components/impact-overview.js.map +1 -1
- package/dist/components/index.d.ts +4 -4
- package/dist/components/index.esm.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/post-purchase.d.ts +11 -3
- package/dist/components/post-purchase.esm.js +4 -4
- package/dist/components/post-purchase.esm.js.map +1 -1
- package/dist/components/post-purchase.js +4 -4
- package/dist/components/post-purchase.js.map +1 -1
- package/dist/components/product-details-page.d.ts +23 -4
- package/dist/components/product-details-page.esm.js +24 -24
- package/dist/components/product-details-page.esm.js.map +1 -1
- package/dist/components/product-details-page.js +24 -24
- package/dist/components/product-details-page.js.map +1 -1
- package/dist/components/redeem-transaction.d.ts +5 -14
- package/dist/components/redeem-transaction.esm.js +27 -27
- package/dist/components/redeem-transaction.esm.js.map +1 -1
- package/dist/components/redeem-transaction.js +27 -27
- package/dist/components/redeem-transaction.js.map +1 -1
- package/dist/components/select-nonprofit.d.ts +10 -3
- package/dist/components/select-nonprofit.esm.js +50 -45
- package/dist/components/select-nonprofit.esm.js.map +1 -1
- package/dist/components/select-nonprofit.js +50 -45
- package/dist/components/select-nonprofit.js.map +1 -1
- package/dist/components/select-subscription-nonprofit.d.ts +1 -1
- package/dist/components/select-subscription-nonprofit.esm.js +1 -1
- package/dist/components/select-subscription-nonprofit.js +1 -1
- package/dist/components/shopify.d.ts +8 -7
- package/dist/components/shopify.esm.js +1 -1
- package/dist/components/shopify.esm.js.map +1 -1
- package/dist/components/shopify.js +1 -1
- package/dist/components/shopify.js.map +1 -1
- package/dist/components/social-share.d.ts +1 -1
- package/dist/components/social-share.esm.js +1 -1
- package/dist/components/social-share.js +1 -1
- package/dist/components/subscription-impact.d.ts +2 -1
- package/dist/components/subscription-impact.esm.js +1 -1
- package/dist/components/subscription-impact.js +1 -1
- package/dist/components/subscription-management.d.ts +15 -4
- package/dist/components/subscription-management.esm.js +1 -1
- package/dist/components/subscription-management.js +1 -1
- package/dist/index.d.ts +16 -14
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/integrations/beam.d.ts +1 -1
- package/dist/integrations/beam.esm.js +1 -1
- package/dist/integrations/beam.js +1 -1
- package/dist/integrations/cart.d.ts +3 -3
- package/dist/integrations/cart.esm.js +1 -1
- package/dist/integrations/cart.js +1 -1
- package/dist/integrations/index.d.ts +14 -12
- package/dist/integrations/index.esm.js +1 -1
- package/dist/integrations/index.js +1 -1
- package/dist/integrations/logs.d.ts +2 -2
- package/dist/integrations/logs.esm.js +1 -1
- package/dist/integrations/logs.js +1 -1
- package/dist/integrations/promoManager.d.ts +36 -0
- package/dist/integrations/promoManager.esm.js +2 -0
- package/dist/integrations/promoManager.esm.js.map +1 -0
- package/dist/integrations/promoManager.js +2 -0
- package/dist/integrations/promoManager.js.map +1 -0
- package/dist/integrations/session.esm.js +1 -1
- package/dist/integrations/session.js +1 -1
- package/dist/integrations/shopify.d.ts +6 -6
- package/dist/integrations/shopify.esm.js +1 -1
- package/dist/integrations/shopify.js +1 -1
- package/dist/integrations/statsig.d.ts +1 -1
- package/dist/integrations/statsig.esm.js +1 -1
- package/dist/integrations/statsig.js +1 -1
- package/dist/integrations/utils.d.ts +7 -5
- package/dist/integrations/utils.esm.js +1 -1
- package/dist/integrations/utils.js +1 -1
- package/dist/react/community-impact.d.ts +1 -1
- package/dist/react/community-impact.esm.js +1 -1
- package/dist/react/community-impact.js +1 -1
- package/dist/react/cumulative-impact.d.ts +1 -1
- package/dist/react/cumulative-impact.esm.js +1 -1
- package/dist/react/cumulative-impact.js +1 -1
- package/dist/react/impact-overview.d.ts +1 -1
- package/dist/react/impact-overview.esm.js +1 -1
- package/dist/react/impact-overview.js +1 -1
- package/dist/react/index.d.ts +6 -5
- package/dist/react/index.esm.js +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/post-purchase.d.ts +3 -3
- package/dist/react/post-purchase.esm.js +1 -1
- package/dist/react/post-purchase.esm.js.map +1 -1
- package/dist/react/post-purchase.js +1 -1
- package/dist/react/post-purchase.js.map +1 -1
- package/dist/react/product-details-page.d.ts +1 -1
- package/dist/react/product-details-page.esm.js +1 -1
- package/dist/react/product-details-page.esm.js.map +1 -1
- package/dist/react/product-details-page.js +1 -1
- package/dist/react/product-details-page.js.map +1 -1
- package/dist/react/redeem-transaction.d.ts +5 -4
- package/dist/react/redeem-transaction.esm.js +1 -1
- package/dist/react/redeem-transaction.js +1 -1
- package/dist/react/select-nonprofit.d.ts +5 -4
- package/dist/react/select-nonprofit.esm.js +1 -1
- package/dist/react/select-nonprofit.esm.js.map +1 -1
- package/dist/react/select-nonprofit.js +1 -1
- package/dist/react/select-nonprofit.js.map +1 -1
- package/dist/react/select-subscription-nonprofit.d.ts +5 -4
- package/dist/react/select-subscription-nonprofit.esm.js +1 -1
- package/dist/react/select-subscription-nonprofit.js +1 -1
- package/dist/react/social-share.d.ts +1 -1
- package/dist/react/social-share.esm.js +1 -1
- package/dist/react/social-share.js +1 -1
- package/dist/react/subscription-impact.d.ts +1 -1
- package/dist/react/subscription-impact.esm.js +1 -1
- package/dist/react/subscription-impact.js +1 -1
- package/dist/react/subscription-management.d.ts +4 -4
- package/dist/react/subscription-management.esm.js +1 -1
- package/dist/react/subscription-management.js +1 -1
- package/dist/utils/beam-errors.d.ts +1 -1
- package/dist/utils/beam-errors.esm.js +1 -1
- package/dist/utils/beam-errors.js +1 -1
- package/dist/utils/cart.esm.js +1 -1
- package/dist/utils/cart.js +1 -1
- package/dist/utils/cookies.esm.js +1 -1
- package/dist/utils/cookies.esm.js.map +1 -1
- package/dist/utils/cookies.js +1 -1
- package/dist/utils/cookies.js.map +1 -1
- package/dist/utils/events.d.ts +5 -4
- package/dist/utils/events.esm.js +1 -1
- package/dist/utils/events.js +1 -1
- package/dist/utils/index.d.ts +7 -5
- package/dist/utils/index.esm.js +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/local-storage.esm.js +1 -1
- package/dist/utils/local-storage.js +1 -1
- package/dist/utils/network-listeners.esm.js +1 -1
- package/dist/utils/network-listeners.esm.js.map +1 -1
- package/dist/utils/network-listeners.js +1 -1
- package/dist/utils/network-listeners.js.map +1 -1
- package/dist/utils/promoManager.d.ts +123 -0
- package/dist/utils/promoManager.esm.js +2 -0
- package/dist/utils/promoManager.esm.js.map +1 -0
- package/dist/utils/promoManager.js +2 -0
- package/dist/utils/promoManager.js.map +1 -0
- package/dist/utils/remote-session.esm.js +1 -1
- package/dist/utils/remote-session.js +1 -1
- package/dist/utils/wait-for-element.esm.js +1 -1
- package/dist/utils/wait-for-element.js +1 -1
- package/package.json +2 -2
- package/dist/chunks/_share-dialog-dependencies-0ivyNKvC.esm.js +0 -2
- package/dist/chunks/_share-dialog-dependencies-0ivyNKvC.esm.js.map +0 -1
- package/dist/chunks/_share-dialog-dependencies-tTzjG045.esm.js +0 -2
- package/dist/chunks/_share-dialog-dependencies-tTzjG045.esm.js.map +0 -1
- package/dist/chunks/beam-errors-P-Lu07Ce.esm.js +0 -2
- package/dist/chunks/beam-errors-P-Lu07Ce.esm.js.map +0 -1
- package/dist/chunks/cart-contents-CMm57qu0.esm.d.ts +0 -11
- package/dist/chunks/enforce-config-ZAI7WYAd.esm.js +0 -3
- package/dist/chunks/enforce-config-ZAI7WYAd.esm.js.map +0 -1
- package/dist/chunks/enforce-config-ZyPq_4CF.esm.js +0 -3
- package/dist/chunks/enforce-config-ZyPq_4CF.esm.js.map +0 -1
- package/dist/chunks/events-6Z5MkCRr.esm.js +0 -2
- package/dist/chunks/events-6Z5MkCRr.esm.js.map +0 -1
- package/dist/chunks/index-2bLOkP4H.esm.d.ts +0 -32
- package/dist/chunks/index-B6jnCB4o.esm.js +0 -2
- package/dist/chunks/index-B6jnCB4o.esm.js.map +0 -1
- package/dist/chunks/index-BPg2EdL3.esm.js +0 -2
- package/dist/chunks/index-BPg2EdL3.esm.js.map +0 -1
- package/dist/chunks/index-CsWTfuok.esm.js +0 -2
- package/dist/chunks/index-CsWTfuok.esm.js.map +0 -1
- package/dist/chunks/index-GynYZRPI.esm.d.ts +0 -32
- package/dist/chunks/index-MIp7LlXH.esm.js +0 -2
- package/dist/chunks/index-MIp7LlXH.esm.js.map +0 -1
- package/dist/chunks/index-YJNgLCif.esm.js +0 -2
- package/dist/chunks/index-YJNgLCif.esm.js.map +0 -1
- package/dist/chunks/index-YcyQB-6f.esm.js +0 -2
- package/dist/chunks/index-YcyQB-6f.esm.js.map +0 -1
- package/dist/chunks/index-ZZthq-Fl.esm.js +0 -2
- package/dist/chunks/index-ZZthq-Fl.esm.js.map +0 -1
- package/dist/chunks/index-b3WjW4PD.esm.js.map +0 -1
- package/dist/chunks/index-cuCnejll.esm.js.map +0 -1
- package/dist/chunks/index-iK195-B9.esm.js +0 -2
- package/dist/chunks/index-iK195-B9.esm.js.map +0 -1
- package/dist/chunks/order-page-84vnjksY.esm.js +0 -2
- package/dist/chunks/order-page-84vnjksY.esm.js.map +0 -1
- package/dist/chunks/order-page-dERTuQ8T.esm.js +0 -2
- package/dist/chunks/order-page-dERTuQ8T.esm.js.map +0 -1
- package/dist/chunks/routes-Jhhqcsg7.esm.js +0 -2
- package/dist/chunks/routes-Jhhqcsg7.esm.js.map +0 -1
- package/dist/chunks/routes-tB5fHy2T.esm.js +0 -2
- package/dist/chunks/routes-tB5fHy2T.esm.js.map +0 -1
- package/dist/chunks/update-cart-i5yZ2fyd.esm.js +0 -2
- package/dist/chunks/update-cart-i5yZ2fyd.esm.js.map +0 -1
- package/dist/chunks/update-cart-v61CI4O9.esm.js +0 -2
- package/dist/chunks/update-cart-v61CI4O9.esm.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-purchase.esm.js","sources":["../../src/components/post-purchase/index.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { deleteCookieValue, getCookieValue } from \"../../utils/cookies\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport { postTransaction } from \"../../api-sdk/v3/routes\";\nimport \"../redeem-transaction\";\nimport \"../impact-overview\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { BeamNonprofitSelectEvent, BeamOrderCreatedEvent } from \"../../utils/events\";\n\nconst REQUIRED_DATA_PROPS = [\"baseUrl\", \"apiKey\", \"orderId\", \"cartTotal\", \"currencyCode\", \"lang\"];\nconst OPTIONAL_DATA_PROPS = [\"storeId\", \"postalCode\", \"countryCode\", \"cart\", \"discountCodes\", \"email\", \"partnerUserId\"];\n\nexport class BeamPostPurchase extends LitElement {\n static tagName = \"beam-post-purchase\";\n\n @property({ type: String })\n public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String })\n public apiKey!: string;\n\n @property({ type: Number, reflect: true })\n public storeId?: number; // Either storeId or postalCode, countryCode must be provided\n\n @property({ type: String })\n public postalCode?: string;\n\n @property({ type: String })\n public countryCode?: string;\n\n @property({ type: String })\n public orderId!: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public email?: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public partnerUserId?: string;\n\n @property({ type: Number })\n public cartTotal!: number;\n\n @property({ type: String })\n public currencyCode = \"USD\";\n\n @property({ type: String })\n public lang: LANGUAGES = \"en\";\n\n @property({ type: Object })\n public cart?: TCart;\n\n @property({ type: Array })\n public discountCodes?: string[];\n\n @property({ type: String })\n public domain?: string;\n\n @property({ type: Boolean })\n public debug = false;\n\n @state() private activeWidget: \"redeem-transaction\" | \"impact-overview\" | null = null; // wait for postTransaction\n @state() private nonprofitId: number | null = null; // from localStorage or redeem-transaction result\n @state() private selectionId: string | null = null; // from localStorage\n @state() private cartId: string | null = null; // from localStorage, external cart ID\n @state() private beamCartId: string | null = null; // from cookie, Beam cart ID\n @state() private userId: string | null = null; // from postTransaction\n @state() private transactionId: string | null = null; // from postTransaction\n @property({ type: Boolean }) public draftConfig = false;\n\n private localStorage = createScopedLocalStorage(this);\n\n firstUpdated(_changedProperties: PropertyValues) {\n this.enforceConfig();\n this.nonprofitId = Number(this.localStorage.getItem(\"nonprofit\")) || null;\n this.selectionId = this.localStorage.getItem(\"transaction\") || null;\n this.cartId = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\")?.cartId || null;\n // Reading beamCartId from cookies instead of localStorage allows it to work across subdomains\n this.beamCartId = getCookieValue(BEAM_CART_COOKIE_NAME) || null;\n\n if (this.selectionId && this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n }\n\n async updated(previousPropertyValues: PropertyValues) {\n // Also fires on first load as props go from undefined => value\n const refreshOnChangeProps = [...REQUIRED_DATA_PROPS, ...OPTIONAL_DATA_PROPS];\n if (refreshOnChangeProps.some((p) => previousPropertyValues.has(p))) {\n await this.transactionDataController.exec();\n }\n }\n\n enforceConfig() {\n enforceConfig(REQUIRED_DATA_PROPS, this);\n if (!this.email && !this.partnerUserId) {\n throw new MissingConfig(\n [this.email ? \"\" : \"email\", this.partnerUserId ? \"\" : \"partnerUserId\"].filter(Boolean),\n \"At least one of [email, partnerUserId] must be provided\"\n );\n }\n }\n\n handlePostTransaction = async () => {\n this.enforceConfig();\n const result = await postTransaction({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n nonprofitId: this.nonprofitId || undefined,\n selectionId: this.selectionId || undefined,\n cartId: this.cartId || undefined,\n beamCartId: this.beamCartId || undefined,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n storeId: this.storeId,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n email: this.email, // One or both of email & partnerUserId should be defined\n partnerUserId: this.partnerUserId, // One or both of email & partnerUserId should be defined\n currencyCode: this.currencyCode,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n cart: this.cart,\n discountCodes: this.discountCodes,\n },\n });\n\n this.transactionId = result.transactionId;\n this.userId = result.beamUserId;\n this.nonprofitId = result.nonprofitId;\n\n this.activeWidget = this.nonprofitId ? \"impact-overview\" : \"redeem-transaction\";\n\n this.localStorage.removeItem(\"transaction\");\n this.localStorage.removeItem(\"cart\");\n deleteCookieValue({ name: BEAM_CART_COOKIE_NAME, path: \"/\", domain: this.domain });\n\n // Emit order created event only when order is registered with Beam for the first time\n if (result.transactionCreated) {\n dispatchEvent(\n new BeamOrderCreatedEvent({\n transactionId: result.transactionId,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n currencyCode: this.currencyCode,\n })\n );\n }\n return result;\n };\n\n private transactionDataController = new AsyncController<typeof this.handlePostTransaction>(\n this,\n this.handlePostTransaction\n );\n\n render() {\n if (this.transactionDataController.loading) {\n return \"\";\n }\n if (this.transactionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.transactionDataController.error });\n }\n return \"\";\n }\n if (this.activeWidget === \"redeem-transaction\") {\n return html`\n <beam-redeem-transaction\n part=\"redeem-transaction\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n storeId=\"${this.storeId}\"\n postalCode=\"${this.postalCode}\"\n countryCode=\"${this.countryCode}\"\n transactionId=\"${this.transactionId}\"\n cart=\"${JSON.stringify(this.cart)}\"\n lang=\"${this.lang}\"\n ?draftConfig=\"${this.draftConfig}\"\n ?debug=\"${this.debug}\"\n @beamnonprofitselect=\"${(event: Event) => {\n if (!(event instanceof CustomEvent)) return; // TS guard\n const { selectedNonprofitId } = (event as BeamNonprofitSelectEvent).detail;\n this.nonprofitId = selectedNonprofitId ?? null;\n this.activeWidget = \"impact-overview\";\n }}\"\n ></beam-redeem-transaction>\n `;\n }\n if (this.activeWidget === \"impact-overview\") {\n return html`\n <beam-impact-overview\n part=\"impact-overview\"\n storeId=\"${this.storeId}\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n userId=\"${this.userId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n discountCodes=\"${JSON.stringify(this.discountCodes)}\"\n transactionId=\"${this.transactionId}\"\n ?draftConfig=\"${this.draftConfig}\"\n ?debug=\"${this.debug}\"\n ></beam-impact-overview>\n `;\n }\n return \"\";\n }\n\n static styles = [cssReset];\n}\n\ndefineCustomElement(BeamPostPurchase);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-post-purchase\": BeamPostPurchase;\n }\n}\n"],"names":["REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","result","postTransaction","deleteCookieValue","BEAM_CART_COOKIE_NAME","BeamOrderCreatedEvent","AsyncController","_changedProperties","getCookieValue","previousPropertyValues","p","enforceConfig","MissingConfig","_errorMessage","html","event","selectedNonprofitId","cssReset","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"post-purchase.esm.js","sources":["../../src/components/post-purchase/index.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { deleteCookieValue, getCookieValue } from \"../../utils/cookies\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport { postTransaction } from \"../../api-sdk/v3/routes\";\nimport \"../redeem-transaction\";\nimport \"../impact-overview\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { BeamNonprofitSelectEvent, BeamOrderCreatedEvent } from \"../../utils/events\";\nimport {\n isEmptyPromoData,\n parseJsonStringArray,\n formatStoreAndReturnPromoCodes,\n getAllPromoCodesFromCookie,\n mapToUnvalidatedPromoCodes,\n} from \"../../utils/promoManager\";\nimport { PROMO_CODES_COOKIE_NAME, PROMO_LOCAL_STORAGE_KEY, TPromoCodeRequest } from \"../../shared/promo-types\";\n\nconst REQUIRED_DATA_PROPS = [\"baseUrl\", \"apiKey\", \"orderId\", \"cartTotal\", \"currencyCode\", \"lang\"];\nconst OPTIONAL_DATA_PROPS = [\n \"storeId\",\n \"postalCode\",\n \"countryCode\",\n \"cart\",\n \"discountCodes\",\n \"promoCodes\",\n \"htmlPromoCodes\",\n \"email\",\n \"partnerUserId\",\n];\n\nexport class BeamPostPurchase extends LitElement {\n static tagName = \"beam-post-purchase\";\n\n @property({ type: String })\n public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String })\n public apiKey!: string;\n\n @property({ type: Number, reflect: true })\n public storeId?: number; // Either storeId or postalCode, countryCode must be provided\n\n @property({ type: String })\n public postalCode?: string;\n\n @property({ type: String })\n public countryCode?: string;\n\n @property({ type: String })\n public orderId!: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public email?: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public partnerUserId?: string;\n\n @property({ type: Number })\n public cartTotal!: number;\n\n @property({ type: String })\n public currencyCode = \"USD\";\n\n @property({ type: String })\n public lang: LANGUAGES = \"en\";\n\n @property({ type: Object })\n public cart?: TCart;\n\n /**\n * @deprecated Use `promoCodes` instead. `discountCodes` is retained for backward compatibility\n */\n @property({ type: Array })\n public discountCodes?: string[];\n\n @property({ type: Array })\n public promoCodes?: string[];\n\n @property({ type: String })\n public htmlPromoCodes?: string;\n\n @property({ type: String })\n public domain?: string;\n\n @property({ type: Boolean })\n public debug = false;\n\n @state() private activeWidget: \"redeem-transaction\" | \"impact-overview\" | null = null; // wait for postTransaction\n @state() private nonprofitId: number | null = null; // from localStorage or redeem-transaction result\n @state() private selectionId: string | null = null; // from localStorage\n @state() private cartId: string | null = null; // from localStorage, external cart ID\n @state() private beamCartId: string | null = null; // from cookie, Beam cart ID\n @state() private userId: string | null = null; // from postTransaction\n @state() private transactionId: string | null = null; // from postTransaction\n @property({ type: Boolean }) public draftConfig = false;\n\n private localStorage = createScopedLocalStorage(this);\n\n get parsedPromoCodes(): string[] {\n return parseJsonStringArray(this.htmlPromoCodes);\n }\n\n firstUpdated(_changedProperties: PropertyValues) {\n this.enforceConfig();\n this.nonprofitId = Number(this.localStorage.getItem(\"nonprofit\")) || null;\n this.selectionId = this.localStorage.getItem(\"transaction\") || null;\n this.cartId = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\")?.cartId || null;\n // Reading beamCartId from cookies instead of localStorage allows it to work across subdomains\n this.beamCartId = getCookieValue(BEAM_CART_COOKIE_NAME) || null;\n\n if (this.selectionId && this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n }\n\n async updated(previousPropertyValues: PropertyValues) {\n // Also fires on first load as props go from undefined => value\n const refreshOnChangeProps = [...REQUIRED_DATA_PROPS, ...OPTIONAL_DATA_PROPS];\n if (refreshOnChangeProps.some((p) => previousPropertyValues.has(p))) {\n await this.transactionDataController.exec();\n }\n }\n\n enforceConfig() {\n enforceConfig(REQUIRED_DATA_PROPS, this);\n if (!this.email && !this.partnerUserId) {\n throw new MissingConfig(\n [this.email ? \"\" : \"email\", this.partnerUserId ? \"\" : \"partnerUserId\"].filter(Boolean),\n \"At least one of [email, partnerUserId] must be provided\"\n );\n }\n }\n\n private getManualPromoCodes(): string[] {\n if (this.parsedPromoCodes?.length) {\n return this.parsedPromoCodes;\n }\n if (this.promoCodes?.length) {\n return this.promoCodes;\n }\n return [];\n }\n\n handlePostTransaction = async () => {\n this.enforceConfig();\n const manualPromoCodes = this.getManualPromoCodes();\n const formattedPromosFromLocalStorage = formatStoreAndReturnPromoCodes(\n manualPromoCodes.map((code) => ({ value: code })),\n this.apiKey\n );\n\n const promoCookieData = getAllPromoCodesFromCookie();\n const formattedPromosFromCookie: TPromoCodeRequest = {\n unvalidatedPromoCodes: mapToUnvalidatedPromoCodes(manualPromoCodes.map((code) => ({ value: code }))),\n validatedPromoCodes: promoCookieData?.validatedPromoCodes ?? [],\n };\n\n const formattedPromos = formattedPromosFromLocalStorage ?? formattedPromosFromCookie;\n\n const shouldSendPromos = formattedPromos && !isEmptyPromoData(formattedPromos);\n const result = await postTransaction({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n selectionId: this.selectionId || undefined,\n cartId: this.cartId || undefined,\n beamCartId: this.beamCartId || undefined,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n storeId: this.storeId,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n email: this.email, // One or both of email & partnerUserId should be defined\n partnerUserId: this.partnerUserId, // One or both of email & partnerUserId should be defined\n currencyCode: this.currencyCode,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n cart: this.cart,\n ...(shouldSendPromos && { promos: formattedPromos }),\n discountCodes: this.discountCodes,\n },\n });\n\n this.transactionId = result.transactionId;\n this.userId = result.beamUserId;\n this.nonprofitId = result.nonprofitId;\n\n this.activeWidget = this.nonprofitId ? \"impact-overview\" : \"redeem-transaction\";\n\n // Emit order created event only when order is registered with Beam for the first time\n if (result.transactionCreated) {\n const localStorageKeys = [\"transaction\", \"cart\", PROMO_LOCAL_STORAGE_KEY];\n localStorageKeys.forEach((key) => {\n this.localStorage.removeItem(key);\n });\n const cookieConfigs = [\n { name: BEAM_CART_COOKIE_NAME, path: \"/\", domain: this.domain },\n { name: PROMO_CODES_COOKIE_NAME, path: \"/\", domain: this.domain },\n ];\n\n cookieConfigs.forEach((config) => deleteCookieValue(config));\n\n // Emit order created event only when order is registered with Beam for the first time\n dispatchEvent(\n new BeamOrderCreatedEvent({\n transactionId: result.transactionId,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n currencyCode: this.currencyCode,\n })\n );\n }\n return result;\n };\n\n private transactionDataController = new AsyncController<typeof this.handlePostTransaction>(\n this,\n this.handlePostTransaction\n );\n\n render() {\n if (this.transactionDataController.loading) {\n return \"\";\n }\n if (this.transactionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.transactionDataController.error });\n }\n return \"\";\n }\n if (this.activeWidget === \"redeem-transaction\") {\n return html`\n <beam-redeem-transaction\n part=\"redeem-transaction\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n storeId=\"${this.storeId}\"\n postalCode=\"${this.postalCode}\"\n countryCode=\"${this.countryCode}\"\n transactionId=\"${this.transactionId}\"\n cart=\"${JSON.stringify(this.cart)}\"\n lang=\"${this.lang}\"\n ?draftConfig=\"${this.draftConfig}\"\n ?debug=\"${this.debug}\"\n @beamnonprofitselect=\"${(event: Event) => {\n if (!(event instanceof CustomEvent)) return; // TS guard\n const { selectedNonprofitId } = (event as BeamNonprofitSelectEvent).detail;\n this.nonprofitId = selectedNonprofitId ?? null;\n this.activeWidget = \"impact-overview\";\n }}\"\n ></beam-redeem-transaction>\n `;\n }\n if (this.activeWidget === \"impact-overview\") {\n return html`\n <beam-impact-overview\n part=\"impact-overview\"\n storeId=\"${this.storeId}\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n userId=\"${this.userId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n discountCodes=\"${JSON.stringify(this.discountCodes)}\"\n transactionId=\"${this.transactionId}\"\n ?draftConfig=\"${this.draftConfig}\"\n ?debug=\"${this.debug}\"\n ></beam-impact-overview>\n `;\n }\n return \"\";\n }\n\n static styles = [cssReset];\n}\n\ndefineCustomElement(BeamPostPurchase);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-post-purchase\": BeamPostPurchase;\n }\n}\n"],"names":["h","I","t","c","d","e","i","o","l","n","REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","manualPromoCodes","formattedPromosFromLocalStorage","formatStoreAndReturnPromoCodes","code","promoCookieData","getAllPromoCodesFromCookie","formattedPromosFromCookie","mapToUnvalidatedPromoCodes","formattedPromos","shouldSendPromos","isEmptyPromoData","result","postTransaction","PROMO_LOCAL_STORAGE_KEY","key","BEAM_CART_COOKIE_NAME","PROMO_CODES_COOKIE_NAME","config","deleteCookieValue","BeamOrderCreatedEvent","AsyncController","parseJsonStringArray","_changedProperties","getCookieValue","previousPropertyValues","p","enforceConfig","MissingConfig","_errorMessage","html","event","selectedNonprofitId","cssReset","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{g as o,t as
|
|
1
|
+
import{g as o,t as d,h as I,y as h}from"../chunks/lit-iNN5L_Qk.esm.js";import{M as u}from"../chunks/beam-errors-AMvTvR1C.esm.js";import{deleteCookieValue as g,getCookieValue as f}from"../utils/cookies.js";import{c as v,d as b,e as S}from"../chunks/enforce-config-S8EGgEnO.esm.js";import{createScopedLocalStorage as P}from"../utils/local-storage.js";import{A as U,_ as $}from"../chunks/localize-OiRewTgu.esm.js";import{D as O,p as A}from"../chunks/routes-YPOoVIR2.esm.js";import"./redeem-transaction.js";import"./impact-overview.js";import{B as y}from"../chunks/cart-contents-h60geKWa.esm.js";import{b as E}from"../chunks/events-T3hYV1LF.esm.js";import{f as w,c as T,m as _,i as K,P as D,d as M,e as B}from"../chunks/promoManager--3WXq4at.esm.js";import"../utils/logger.js";import"../chunks/lodash-P8OIs-at.esm.js";import"../chunks/progress-bar-PMU_xI3L.esm.js";import"../chunks/promo-pill-label-P1X4xeAx.esm.js";import"../chunks/vendor-GKiOHg2N.esm.js";import"./beam-partner-logos.js";import"../chunks/loading-template-t4fFsYtr.esm.js";import"../chunks/css-card-grid-nEc--M5M.esm.js";import"../chunks/shoelace-components-lr4iB8kL.esm.js";import"../chunks/share-button-EsUPw38-.esm.js";import"../chunks/is-all-html-elements-SdSkxirh.esm.js";import"../chunks/share-button-SNvuFDC9.esm.js";import"../chunks/responsive-2lC2Wrtg.esm.js";var N=Object.defineProperty,R=Object.getOwnPropertyDescriptor,e=(m,r,a,p)=>{for(var i=p>1?void 0:p?R(r,a):r,s=m.length-1,l;s>=0;s--)(l=m[s])&&(i=(p?l(r,a,i):l(i))||i);return p&&i&&N(r,a,i),i};const C=["baseUrl","apiKey","orderId","cartTotal","currencyCode","lang"],W=["storeId","postalCode","countryCode","cart","discountCodes","promoCodes","htmlPromoCodes","email","partnerUserId"];class t extends I{constructor(){super(...arguments),this.baseUrl=O,this.currencyCode="USD",this.lang="en",this.debug=!1,this.activeWidget=null,this.nonprofitId=null,this.selectionId=null,this.cartId=null,this.beamCartId=null,this.userId=null,this.transactionId=null,this.draftConfig=!1,this.localStorage=P(this),this.handlePostTransaction=async()=>{this.enforceConfig();const r=this.getManualPromoCodes(),a=w(r.map(n=>({value:n})),this.apiKey),p=T(),i={unvalidatedPromoCodes:_(r.map(n=>({value:n}))),validatedPromoCodes:p?.validatedPromoCodes??[]},s=a??i,l=s&&!K(s),c=await A({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{selectionId:this.selectionId||void 0,cartId:this.cartId||void 0,beamCartId:this.beamCartId||void 0,storeId:this.storeId,orderId:this.orderId,cartTotal:this.cartTotal,email:this.email,partnerUserId:this.partnerUserId,currencyCode:this.currencyCode,postalCode:this.postalCode,countryCode:this.countryCode,cart:this.cart,...l&&{promos:s},discountCodes:this.discountCodes}});return this.transactionId=c.transactionId,this.userId=c.beamUserId,this.nonprofitId=c.nonprofitId,this.activeWidget=this.nonprofitId?"impact-overview":"redeem-transaction",c.transactionCreated&&(["transaction","cart",D].forEach(n=>{this.localStorage.removeItem(n)}),[{name:y,path:"/",domain:this.domain},{name:M,path:"/",domain:this.domain}].forEach(n=>g(n)),dispatchEvent(new E({transactionId:c.transactionId,orderId:this.orderId,cartTotal:this.cartTotal,currencyCode:this.currencyCode}))),c},this.transactionDataController=new U(this,this.handlePostTransaction)}get parsedPromoCodes(){return B(this.htmlPromoCodes)}firstUpdated(r){this.enforceConfig(),this.nonprofitId=Number(this.localStorage.getItem("nonprofit"))||null,this.selectionId=this.localStorage.getItem("transaction")||null,this.cartId=this.localStorage.getItemJson("cart")?.cartId||null,this.beamCartId=f(y)||null,this.selectionId&&this.nonprofitId&&(this.activeWidget="impact-overview")}async updated(r){[...C,...W].some(a=>r.has(a))&&await this.transactionDataController.exec()}enforceConfig(){if(S(C,this),!this.email&&!this.partnerUserId)throw new u([this.email?"":"email",this.partnerUserId?"":"partnerUserId"].filter(Boolean),"At least one of [email, partnerUserId] must be provided")}getManualPromoCodes(){return this.parsedPromoCodes?.length?this.parsedPromoCodes:this.promoCodes?.length?this.promoCodes:[]}render(){return this.transactionDataController.loading?"":this.transactionDataController.error?this.debug?$({error:this.transactionDataController.error}):"":this.activeWidget==="redeem-transaction"?h`
|
|
2
2
|
<beam-redeem-transaction
|
|
3
3
|
part="redeem-transaction"
|
|
4
4
|
baseUrl="${this.baseUrl}"
|
|
@@ -11,9 +11,9 @@ import{g as o,t as s,h as I,y as l}from"../chunks/lit-iNN5L_Qk.esm.js";import{M
|
|
|
11
11
|
lang="${this.lang}"
|
|
12
12
|
?draftConfig="${this.draftConfig}"
|
|
13
13
|
?debug="${this.debug}"
|
|
14
|
-
@beamnonprofitselect="${r=>{if(!(r instanceof CustomEvent))return;const{selectedNonprofitId:
|
|
14
|
+
@beamnonprofitselect="${r=>{if(!(r instanceof CustomEvent))return;const{selectedNonprofitId:a}=r.detail;this.nonprofitId=a??null,this.activeWidget="impact-overview"}}"
|
|
15
15
|
></beam-redeem-transaction>
|
|
16
|
-
`:this.activeWidget==="impact-overview"?
|
|
16
|
+
`:this.activeWidget==="impact-overview"?h`
|
|
17
17
|
<beam-impact-overview
|
|
18
18
|
part="impact-overview"
|
|
19
19
|
storeId="${this.storeId}"
|
|
@@ -27,5 +27,5 @@ import{g as o,t as s,h as I,y as l}from"../chunks/lit-iNN5L_Qk.esm.js";import{M
|
|
|
27
27
|
?draftConfig="${this.draftConfig}"
|
|
28
28
|
?debug="${this.debug}"
|
|
29
29
|
></beam-impact-overview>
|
|
30
|
-
`:""}}t.tagName="beam-post-purchase",t.styles=[
|
|
30
|
+
`:""}}t.tagName="beam-post-purchase",t.styles=[v],e([o({type:String})],t.prototype,"baseUrl",2),e([o({type:String})],t.prototype,"apiKey",2),e([o({type:Number,reflect:!0})],t.prototype,"storeId",2),e([o({type:String})],t.prototype,"postalCode",2),e([o({type:String})],t.prototype,"countryCode",2),e([o({type:String})],t.prototype,"orderId",2),e([o({type:String})],t.prototype,"email",2),e([o({type:String})],t.prototype,"partnerUserId",2),e([o({type:Number})],t.prototype,"cartTotal",2),e([o({type:String})],t.prototype,"currencyCode",2),e([o({type:String})],t.prototype,"lang",2),e([o({type:Object})],t.prototype,"cart",2),e([o({type:Array})],t.prototype,"discountCodes",2),e([o({type:Array})],t.prototype,"promoCodes",2),e([o({type:String})],t.prototype,"htmlPromoCodes",2),e([o({type:String})],t.prototype,"domain",2),e([o({type:Boolean})],t.prototype,"debug",2),e([d()],t.prototype,"activeWidget",2),e([d()],t.prototype,"nonprofitId",2),e([d()],t.prototype,"selectionId",2),e([d()],t.prototype,"cartId",2),e([d()],t.prototype,"beamCartId",2),e([d()],t.prototype,"userId",2),e([d()],t.prototype,"transactionId",2),e([o({type:Boolean})],t.prototype,"draftConfig",2),b(t);export{t as BeamPostPurchase};
|
|
31
31
|
//# sourceMappingURL=post-purchase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-purchase.js","sources":["../../src/components/post-purchase/index.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { deleteCookieValue, getCookieValue } from \"../../utils/cookies\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport { postTransaction } from \"../../api-sdk/v3/routes\";\nimport \"../redeem-transaction\";\nimport \"../impact-overview\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { BeamNonprofitSelectEvent, BeamOrderCreatedEvent } from \"../../utils/events\";\n\nconst REQUIRED_DATA_PROPS = [\"baseUrl\", \"apiKey\", \"orderId\", \"cartTotal\", \"currencyCode\", \"lang\"];\nconst OPTIONAL_DATA_PROPS = [\"storeId\", \"postalCode\", \"countryCode\", \"cart\", \"discountCodes\", \"email\", \"partnerUserId\"];\n\nexport class BeamPostPurchase extends LitElement {\n static tagName = \"beam-post-purchase\";\n\n @property({ type: String })\n public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String })\n public apiKey!: string;\n\n @property({ type: Number, reflect: true })\n public storeId?: number; // Either storeId or postalCode, countryCode must be provided\n\n @property({ type: String })\n public postalCode?: string;\n\n @property({ type: String })\n public countryCode?: string;\n\n @property({ type: String })\n public orderId!: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public email?: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public partnerUserId?: string;\n\n @property({ type: Number })\n public cartTotal!: number;\n\n @property({ type: String })\n public currencyCode = \"USD\";\n\n @property({ type: String })\n public lang: LANGUAGES = \"en\";\n\n @property({ type: Object })\n public cart?: TCart;\n\n @property({ type: Array })\n public discountCodes?: string[];\n\n @property({ type: String })\n public domain?: string;\n\n @property({ type: Boolean })\n public debug = false;\n\n @state() private activeWidget: \"redeem-transaction\" | \"impact-overview\" | null = null; // wait for postTransaction\n @state() private nonprofitId: number | null = null; // from localStorage or redeem-transaction result\n @state() private selectionId: string | null = null; // from localStorage\n @state() private cartId: string | null = null; // from localStorage, external cart ID\n @state() private beamCartId: string | null = null; // from cookie, Beam cart ID\n @state() private userId: string | null = null; // from postTransaction\n @state() private transactionId: string | null = null; // from postTransaction\n @property({ type: Boolean }) public draftConfig = false;\n\n private localStorage = createScopedLocalStorage(this);\n\n firstUpdated(_changedProperties: PropertyValues) {\n this.enforceConfig();\n this.nonprofitId = Number(this.localStorage.getItem(\"nonprofit\")) || null;\n this.selectionId = this.localStorage.getItem(\"transaction\") || null;\n this.cartId = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\")?.cartId || null;\n // Reading beamCartId from cookies instead of localStorage allows it to work across subdomains\n this.beamCartId = getCookieValue(BEAM_CART_COOKIE_NAME) || null;\n\n if (this.selectionId && this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n }\n\n async updated(previousPropertyValues: PropertyValues) {\n // Also fires on first load as props go from undefined => value\n const refreshOnChangeProps = [...REQUIRED_DATA_PROPS, ...OPTIONAL_DATA_PROPS];\n if (refreshOnChangeProps.some((p) => previousPropertyValues.has(p))) {\n await this.transactionDataController.exec();\n }\n }\n\n enforceConfig() {\n enforceConfig(REQUIRED_DATA_PROPS, this);\n if (!this.email && !this.partnerUserId) {\n throw new MissingConfig(\n [this.email ? \"\" : \"email\", this.partnerUserId ? \"\" : \"partnerUserId\"].filter(Boolean),\n \"At least one of [email, partnerUserId] must be provided\"\n );\n }\n }\n\n handlePostTransaction = async () => {\n this.enforceConfig();\n const result = await postTransaction({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n nonprofitId: this.nonprofitId || undefined,\n selectionId: this.selectionId || undefined,\n cartId: this.cartId || undefined,\n beamCartId: this.beamCartId || undefined,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n storeId: this.storeId,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n email: this.email, // One or both of email & partnerUserId should be defined\n partnerUserId: this.partnerUserId, // One or both of email & partnerUserId should be defined\n currencyCode: this.currencyCode,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n cart: this.cart,\n discountCodes: this.discountCodes,\n },\n });\n\n this.transactionId = result.transactionId;\n this.userId = result.beamUserId;\n this.nonprofitId = result.nonprofitId;\n\n this.activeWidget = this.nonprofitId ? \"impact-overview\" : \"redeem-transaction\";\n\n this.localStorage.removeItem(\"transaction\");\n this.localStorage.removeItem(\"cart\");\n deleteCookieValue({ name: BEAM_CART_COOKIE_NAME, path: \"/\", domain: this.domain });\n\n // Emit order created event only when order is registered with Beam for the first time\n if (result.transactionCreated) {\n dispatchEvent(\n new BeamOrderCreatedEvent({\n transactionId: result.transactionId,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n currencyCode: this.currencyCode,\n })\n );\n }\n return result;\n };\n\n private transactionDataController = new AsyncController<typeof this.handlePostTransaction>(\n this,\n this.handlePostTransaction\n );\n\n render() {\n if (this.transactionDataController.loading) {\n return \"\";\n }\n if (this.transactionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.transactionDataController.error });\n }\n return \"\";\n }\n if (this.activeWidget === \"redeem-transaction\") {\n return html`\n <beam-redeem-transaction\n part=\"redeem-transaction\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n storeId=\"${this.storeId}\"\n postalCode=\"${this.postalCode}\"\n countryCode=\"${this.countryCode}\"\n transactionId=\"${this.transactionId}\"\n cart=\"${JSON.stringify(this.cart)}\"\n lang=\"${this.lang}\"\n ?draftConfig=\"${this.draftConfig}\"\n ?debug=\"${this.debug}\"\n @beamnonprofitselect=\"${(event: Event) => {\n if (!(event instanceof CustomEvent)) return; // TS guard\n const { selectedNonprofitId } = (event as BeamNonprofitSelectEvent).detail;\n this.nonprofitId = selectedNonprofitId ?? null;\n this.activeWidget = \"impact-overview\";\n }}\"\n ></beam-redeem-transaction>\n `;\n }\n if (this.activeWidget === \"impact-overview\") {\n return html`\n <beam-impact-overview\n part=\"impact-overview\"\n storeId=\"${this.storeId}\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n userId=\"${this.userId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n discountCodes=\"${JSON.stringify(this.discountCodes)}\"\n transactionId=\"${this.transactionId}\"\n ?draftConfig=\"${this.draftConfig}\"\n ?debug=\"${this.debug}\"\n ></beam-impact-overview>\n `;\n }\n return \"\";\n }\n\n static styles = [cssReset];\n}\n\ndefineCustomElement(BeamPostPurchase);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-post-purchase\": BeamPostPurchase;\n }\n}\n"],"names":["REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","result","postTransaction","deleteCookieValue","BEAM_CART_COOKIE_NAME","BeamOrderCreatedEvent","AsyncController","_changedProperties","getCookieValue","previousPropertyValues","p","enforceConfig","MissingConfig","_errorMessage","html","event","selectedNonprofitId","cssReset","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"post-purchase.js","sources":["../../src/components/post-purchase/index.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { deleteCookieValue, getCookieValue } from \"../../utils/cookies\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport { postTransaction } from \"../../api-sdk/v3/routes\";\nimport \"../redeem-transaction\";\nimport \"../impact-overview\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { BeamNonprofitSelectEvent, BeamOrderCreatedEvent } from \"../../utils/events\";\nimport {\n isEmptyPromoData,\n parseJsonStringArray,\n formatStoreAndReturnPromoCodes,\n getAllPromoCodesFromCookie,\n mapToUnvalidatedPromoCodes,\n} from \"../../utils/promoManager\";\nimport { PROMO_CODES_COOKIE_NAME, PROMO_LOCAL_STORAGE_KEY, TPromoCodeRequest } from \"../../shared/promo-types\";\n\nconst REQUIRED_DATA_PROPS = [\"baseUrl\", \"apiKey\", \"orderId\", \"cartTotal\", \"currencyCode\", \"lang\"];\nconst OPTIONAL_DATA_PROPS = [\n \"storeId\",\n \"postalCode\",\n \"countryCode\",\n \"cart\",\n \"discountCodes\",\n \"promoCodes\",\n \"htmlPromoCodes\",\n \"email\",\n \"partnerUserId\",\n];\n\nexport class BeamPostPurchase extends LitElement {\n static tagName = \"beam-post-purchase\";\n\n @property({ type: String })\n public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String })\n public apiKey!: string;\n\n @property({ type: Number, reflect: true })\n public storeId?: number; // Either storeId or postalCode, countryCode must be provided\n\n @property({ type: String })\n public postalCode?: string;\n\n @property({ type: String })\n public countryCode?: string;\n\n @property({ type: String })\n public orderId!: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public email?: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public partnerUserId?: string;\n\n @property({ type: Number })\n public cartTotal!: number;\n\n @property({ type: String })\n public currencyCode = \"USD\";\n\n @property({ type: String })\n public lang: LANGUAGES = \"en\";\n\n @property({ type: Object })\n public cart?: TCart;\n\n /**\n * @deprecated Use `promoCodes` instead. `discountCodes` is retained for backward compatibility\n */\n @property({ type: Array })\n public discountCodes?: string[];\n\n @property({ type: Array })\n public promoCodes?: string[];\n\n @property({ type: String })\n public htmlPromoCodes?: string;\n\n @property({ type: String })\n public domain?: string;\n\n @property({ type: Boolean })\n public debug = false;\n\n @state() private activeWidget: \"redeem-transaction\" | \"impact-overview\" | null = null; // wait for postTransaction\n @state() private nonprofitId: number | null = null; // from localStorage or redeem-transaction result\n @state() private selectionId: string | null = null; // from localStorage\n @state() private cartId: string | null = null; // from localStorage, external cart ID\n @state() private beamCartId: string | null = null; // from cookie, Beam cart ID\n @state() private userId: string | null = null; // from postTransaction\n @state() private transactionId: string | null = null; // from postTransaction\n @property({ type: Boolean }) public draftConfig = false;\n\n private localStorage = createScopedLocalStorage(this);\n\n get parsedPromoCodes(): string[] {\n return parseJsonStringArray(this.htmlPromoCodes);\n }\n\n firstUpdated(_changedProperties: PropertyValues) {\n this.enforceConfig();\n this.nonprofitId = Number(this.localStorage.getItem(\"nonprofit\")) || null;\n this.selectionId = this.localStorage.getItem(\"transaction\") || null;\n this.cartId = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\")?.cartId || null;\n // Reading beamCartId from cookies instead of localStorage allows it to work across subdomains\n this.beamCartId = getCookieValue(BEAM_CART_COOKIE_NAME) || null;\n\n if (this.selectionId && this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n }\n\n async updated(previousPropertyValues: PropertyValues) {\n // Also fires on first load as props go from undefined => value\n const refreshOnChangeProps = [...REQUIRED_DATA_PROPS, ...OPTIONAL_DATA_PROPS];\n if (refreshOnChangeProps.some((p) => previousPropertyValues.has(p))) {\n await this.transactionDataController.exec();\n }\n }\n\n enforceConfig() {\n enforceConfig(REQUIRED_DATA_PROPS, this);\n if (!this.email && !this.partnerUserId) {\n throw new MissingConfig(\n [this.email ? \"\" : \"email\", this.partnerUserId ? \"\" : \"partnerUserId\"].filter(Boolean),\n \"At least one of [email, partnerUserId] must be provided\"\n );\n }\n }\n\n private getManualPromoCodes(): string[] {\n if (this.parsedPromoCodes?.length) {\n return this.parsedPromoCodes;\n }\n if (this.promoCodes?.length) {\n return this.promoCodes;\n }\n return [];\n }\n\n handlePostTransaction = async () => {\n this.enforceConfig();\n const manualPromoCodes = this.getManualPromoCodes();\n const formattedPromosFromLocalStorage = formatStoreAndReturnPromoCodes(\n manualPromoCodes.map((code) => ({ value: code })),\n this.apiKey\n );\n\n const promoCookieData = getAllPromoCodesFromCookie();\n const formattedPromosFromCookie: TPromoCodeRequest = {\n unvalidatedPromoCodes: mapToUnvalidatedPromoCodes(manualPromoCodes.map((code) => ({ value: code }))),\n validatedPromoCodes: promoCookieData?.validatedPromoCodes ?? [],\n };\n\n const formattedPromos = formattedPromosFromLocalStorage ?? formattedPromosFromCookie;\n\n const shouldSendPromos = formattedPromos && !isEmptyPromoData(formattedPromos);\n const result = await postTransaction({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n selectionId: this.selectionId || undefined,\n cartId: this.cartId || undefined,\n beamCartId: this.beamCartId || undefined,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n storeId: this.storeId,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n email: this.email, // One or both of email & partnerUserId should be defined\n partnerUserId: this.partnerUserId, // One or both of email & partnerUserId should be defined\n currencyCode: this.currencyCode,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n cart: this.cart,\n ...(shouldSendPromos && { promos: formattedPromos }),\n discountCodes: this.discountCodes,\n },\n });\n\n this.transactionId = result.transactionId;\n this.userId = result.beamUserId;\n this.nonprofitId = result.nonprofitId;\n\n this.activeWidget = this.nonprofitId ? \"impact-overview\" : \"redeem-transaction\";\n\n // Emit order created event only when order is registered with Beam for the first time\n if (result.transactionCreated) {\n const localStorageKeys = [\"transaction\", \"cart\", PROMO_LOCAL_STORAGE_KEY];\n localStorageKeys.forEach((key) => {\n this.localStorage.removeItem(key);\n });\n const cookieConfigs = [\n { name: BEAM_CART_COOKIE_NAME, path: \"/\", domain: this.domain },\n { name: PROMO_CODES_COOKIE_NAME, path: \"/\", domain: this.domain },\n ];\n\n cookieConfigs.forEach((config) => deleteCookieValue(config));\n\n // Emit order created event only when order is registered with Beam for the first time\n dispatchEvent(\n new BeamOrderCreatedEvent({\n transactionId: result.transactionId,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n currencyCode: this.currencyCode,\n })\n );\n }\n return result;\n };\n\n private transactionDataController = new AsyncController<typeof this.handlePostTransaction>(\n this,\n this.handlePostTransaction\n );\n\n render() {\n if (this.transactionDataController.loading) {\n return \"\";\n }\n if (this.transactionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.transactionDataController.error });\n }\n return \"\";\n }\n if (this.activeWidget === \"redeem-transaction\") {\n return html`\n <beam-redeem-transaction\n part=\"redeem-transaction\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n storeId=\"${this.storeId}\"\n postalCode=\"${this.postalCode}\"\n countryCode=\"${this.countryCode}\"\n transactionId=\"${this.transactionId}\"\n cart=\"${JSON.stringify(this.cart)}\"\n lang=\"${this.lang}\"\n ?draftConfig=\"${this.draftConfig}\"\n ?debug=\"${this.debug}\"\n @beamnonprofitselect=\"${(event: Event) => {\n if (!(event instanceof CustomEvent)) return; // TS guard\n const { selectedNonprofitId } = (event as BeamNonprofitSelectEvent).detail;\n this.nonprofitId = selectedNonprofitId ?? null;\n this.activeWidget = \"impact-overview\";\n }}\"\n ></beam-redeem-transaction>\n `;\n }\n if (this.activeWidget === \"impact-overview\") {\n return html`\n <beam-impact-overview\n part=\"impact-overview\"\n storeId=\"${this.storeId}\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n userId=\"${this.userId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n discountCodes=\"${JSON.stringify(this.discountCodes)}\"\n transactionId=\"${this.transactionId}\"\n ?draftConfig=\"${this.draftConfig}\"\n ?debug=\"${this.debug}\"\n ></beam-impact-overview>\n `;\n }\n return \"\";\n }\n\n static styles = [cssReset];\n}\n\ndefineCustomElement(BeamPostPurchase);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-post-purchase\": BeamPostPurchase;\n }\n}\n"],"names":["h","I","t","c","d","e","i","o","l","n","REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","manualPromoCodes","formattedPromosFromLocalStorage","formatStoreAndReturnPromoCodes","code","promoCookieData","getAllPromoCodesFromCookie","formattedPromosFromCookie","mapToUnvalidatedPromoCodes","formattedPromos","shouldSendPromos","isEmptyPromoData","result","postTransaction","PROMO_LOCAL_STORAGE_KEY","key","BEAM_CART_COOKIE_NAME","PROMO_CODES_COOKIE_NAME","config","deleteCookieValue","BeamOrderCreatedEvent","AsyncController","parseJsonStringArray","_changedProperties","getCookieValue","previousPropertyValues","p","enforceConfig","MissingConfig","_errorMessage","html","event","selectedNonprofitId","cssReset","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as lit from 'lit';
|
|
2
2
|
import { LitElement } from 'lit';
|
|
3
3
|
import * as lit_html from 'lit-html';
|
|
4
|
-
import {
|
|
4
|
+
import { p as postProductDetailsPage } from '../chunks/routes-lGXt7ttd.esm.js';
|
|
5
5
|
import { T as TUrl, L as LANGUAGES } from '../chunks/types-aju0qrRe.esm.js';
|
|
6
6
|
import '../chunks/promo-pill-label-3bA1z-la.esm.js';
|
|
7
7
|
|
|
@@ -9,7 +9,7 @@ type RequiredConfig = {
|
|
|
9
9
|
apiKey: string;
|
|
10
10
|
storeId: number;
|
|
11
11
|
};
|
|
12
|
-
type
|
|
12
|
+
type IAPIV3PostProductDetailsPage = Awaited<ReturnType<typeof postProductDetailsPage>>;
|
|
13
13
|
declare class BeamProductDetailsPage extends LitElement {
|
|
14
14
|
static tagName: string;
|
|
15
15
|
baseUrl: TUrl;
|
|
@@ -19,8 +19,18 @@ declare class BeamProductDetailsPage extends LitElement {
|
|
|
19
19
|
draftConfig: boolean;
|
|
20
20
|
debug: boolean;
|
|
21
21
|
remoteProductIdentifier?: string;
|
|
22
|
+
promoCodes?: string;
|
|
23
|
+
domain?: string;
|
|
24
|
+
private localStorage;
|
|
25
|
+
private pluginPromoCodes;
|
|
22
26
|
get configLang(): LANGUAGES;
|
|
23
|
-
|
|
27
|
+
get parsedPromoCodes(): string[];
|
|
28
|
+
private handlePromoCodesStored;
|
|
29
|
+
private getManualPromoCodes;
|
|
30
|
+
private handleValidatedPromoCodes;
|
|
31
|
+
firstUpdated(): Promise<void>;
|
|
32
|
+
disconnectedCallback(): void;
|
|
33
|
+
postProductDetailsPageData: () => Promise<{
|
|
24
34
|
config: {
|
|
25
35
|
web: {
|
|
26
36
|
title: string;
|
|
@@ -69,12 +79,21 @@ declare class BeamProductDetailsPage extends LitElement {
|
|
|
69
79
|
url: string;
|
|
70
80
|
copy: string;
|
|
71
81
|
} | undefined;
|
|
82
|
+
promos?: {
|
|
83
|
+
validatedPromoCodes?: {
|
|
84
|
+
promoCodeId: string | null;
|
|
85
|
+
promoCodeGroupId?: string | null | undefined;
|
|
86
|
+
promoId?: number | undefined;
|
|
87
|
+
validatedAt: string;
|
|
88
|
+
apply: boolean;
|
|
89
|
+
}[] | undefined;
|
|
90
|
+
} | undefined;
|
|
72
91
|
}>;
|
|
73
92
|
private productDetailsPageDataController;
|
|
74
93
|
updated(changedProperties: Map<string, unknown>): Promise<void>;
|
|
75
94
|
render(): "" | lit_html.TemplateResult<1>;
|
|
76
95
|
renderWidgetIcon(iconDisplay: string): lit_html.TemplateResult<1>;
|
|
77
|
-
renderContent(isPromoPillVisible: boolean, shouldDisplayColon: boolean, data:
|
|
96
|
+
renderContent(isPromoPillVisible: boolean, shouldDisplayColon: boolean, data: IAPIV3PostProductDetailsPage): lit_html.TemplateResult<1>;
|
|
78
97
|
renderCloseTooltipIcon(): lit_html.TemplateResult<1>;
|
|
79
98
|
renderDisclosureTooltip(): lit_html.TemplateResult<1>;
|
|
80
99
|
renderDisclosureTooltipHyperlink(): lit_html.TemplateResult<1>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import{j as
|
|
1
|
+
import{j as x,y as r,f as k,g as d,t as w,h as S,k as $}from"../chunks/lit-iNN5L_Qk.esm.js";import{u as g,A as I,_ as T,i as f,d as m,a as F}from"../chunks/localize-7sMSg1W9.esm.js";import{D as z,W as u,l as E,S as L}from"../chunks/routes-o-phF_L1.esm.js";import{c as B,d as A,e as M}from"../chunks/enforce-config-l-tNb_z7.esm.js";import{c as W}from"../chunks/responsive-2lC2Wrtg.esm.js";import"../chunks/vendor-GKiOHg2N.esm.js";import{p as _}from"../chunks/promo-pill-label-P1X4xeAx.esm.js";import{f as G,i as j,e as H,h as R,k as K,s as U}from"../chunks/promoManager-YUzbMtwY.esm.js";import{B as V}from"../chunks/cart-contents-h60geKWa.esm.js";import{createScopedLocalStorage as O}from"../utils/local-storage.esm.js";import{makeApiKeyHeader as N}from"../utils/makeApiKeyHeader.esm.js";import{f as D,a as v}from"../chunks/events-T3hYV1LF.esm.js";import{getBeamCartId as q}from"../utils/cart.esm.js";import"../chunks/beam-errors-AMvTvR1C.esm.js";import"../utils/logger.esm.js";import"../utils/cookies.esm.js";const J=(l="",{borderRadius:e="0px",borderStyle:o="unset",borderColor:t="#000000",borderWidth:i="1px"}={})=>{const a=l.startsWith("--beam-")?l:`--beam-${l}`;return{[`${a}-borderRadius`]:e,[`${a}-borderStyle`]:o,[`${a}-borderColor`]:t,[`${a}-borderWidth`]:i}},Q=(l="",{borderRadius:e="0px",borderStyle:o="unset",borderColor:t="#000000",borderWidth:i="1px"}={})=>{const a=l.startsWith("--beam-")?l:`--beam-${l}`;return x(` border-radius: var(${a}-borderRadius, ${e});
|
|
2
2
|
border-style: var(${a}-borderStyle, ${o});
|
|
3
3
|
border-color: var(${a}-borderColor, ${t});
|
|
4
|
-
border-width: var(${a}-borderWidth, ${
|
|
5
|
-
`)},
|
|
4
|
+
border-width: var(${a}-borderWidth, ${i});
|
|
5
|
+
`)},X=()=>r` <svg
|
|
6
6
|
xmlns="http://www.w3.org/2000/svg"
|
|
7
7
|
width="24"
|
|
8
8
|
height="24"
|
|
@@ -17,50 +17,50 @@ import{j as v,y as i,f as y,g as n,h as x,k as C}from"../chunks/lit-iNN5L_Qk.esm
|
|
|
17
17
|
<circle cx="12" cy="12" r="10"></circle>
|
|
18
18
|
<path d="M12 16v-4"></path>
|
|
19
19
|
<path d="M12 8h.01"></path>
|
|
20
|
-
</svg>`,P={en:{ctaTitle:()=>"Choose your impact",ctaMessage:()=>"At no extra cost, 1% of every order is donated to a nonprofit you choose. Powered by Beam",inlineSeparator:()=>":"},fr:{ctaTitle:()=>"Choisissez l'impact de votre choix",ctaMessage:()=>"Sans frais suppl\xE9mentaires, 1% de chaque commande est revers\xE9 \xE0 l'organisation caritative de votre choix. D\xE9velopp\xE9 par Beam",inlineSeparator:()=>":"},es:{ctaTitle:()=>"Elige el impacto que deseas",ctaMessage:()=>"Sin coste adicional, el 1% de cada pedido se dona a la organizaci\xF3n sin \xE1nimo de lucro que t\xFA elijas. Desarrollado por Beam",inlineSeparator:()=>":"},de:{ctaTitle:()=>"W\xE4hlen Sie Ihren Einfluss",ctaMessage:()=>"Ohne zus\xE4tzliche Kosten wird 1 % jeder Bestellung an eine von Ihnen gew\xE4hlte gemeinn\xFCtzige Organisation gespendet. Von Beam unterst\xFCtzt",inlineSeparator:()=>":"},it:{ctaTitle:()=>"Scegliete chi sostenere",ctaMessage:()=>"L'1% di ogni vostro acquisto viene donato, senza alcun costo aggiuntivo, a un'organizzazione no-profit a libera scelta. Promosso da Beam",inlineSeparator:()=>":"},pl:{ctaTitle:()=>"Masz wp\u0142yw, dokonaj wyboru",ctaMessage:()=>"1% kwoty ka\u017Cdego zam\xF3wienia jest przekazywane na rzecz wybranej przez Ciebie organizacji non-profit \u2013 bez dodatkowych koszt\xF3w. Obs\u0142ugiwane przez Beam",inlineSeparator:()=>":"}};var
|
|
20
|
+
</svg>`,P={en:{ctaTitle:()=>"Choose your impact",ctaMessage:()=>"At no extra cost, 1% of every order is donated to a nonprofit you choose. Powered by Beam",inlineSeparator:()=>":"},fr:{ctaTitle:()=>"Choisissez l'impact de votre choix",ctaMessage:()=>"Sans frais suppl\xE9mentaires, 1% de chaque commande est revers\xE9 \xE0 l'organisation caritative de votre choix. D\xE9velopp\xE9 par Beam",inlineSeparator:()=>":"},es:{ctaTitle:()=>"Elige el impacto que deseas",ctaMessage:()=>"Sin coste adicional, el 1% de cada pedido se dona a la organizaci\xF3n sin \xE1nimo de lucro que t\xFA elijas. Desarrollado por Beam",inlineSeparator:()=>":"},de:{ctaTitle:()=>"W\xE4hlen Sie Ihren Einfluss",ctaMessage:()=>"Ohne zus\xE4tzliche Kosten wird 1 % jeder Bestellung an eine von Ihnen gew\xE4hlte gemeinn\xFCtzige Organisation gespendet. Von Beam unterst\xFCtzt",inlineSeparator:()=>":"},it:{ctaTitle:()=>"Scegliete chi sostenere",ctaMessage:()=>"L'1% di ogni vostro acquisto viene donato, senza alcun costo aggiuntivo, a un'organizzazione no-profit a libera scelta. Promosso da Beam",inlineSeparator:()=>":"},pl:{ctaTitle:()=>"Masz wp\u0142yw, dokonaj wyboru",ctaMessage:()=>"1% kwoty ka\u017Cdego zam\xF3wienia jest przekazywane na rzecz wybranej przez Ciebie organizacji non-profit \u2013 bez dodatkowych koszt\xF3w. Obs\u0142ugiwane przez Beam",inlineSeparator:()=>":"}};var Y=Object.defineProperty,Z=Object.getOwnPropertyDescriptor,n=(l,e,o,t)=>{for(var i=t>1?void 0:t?Z(e,o):e,a=l.length-1,c;a>=0;a--)(c=l[a])&&(i=(t?c(e,o,i):c(i))||i);return t&&i&&Y(e,o,i),i};const ee="--beam-ProductDetailsPage-imageUrl";class s extends S{constructor(){super(...arguments),this.baseUrl=z,this.lang="en",this.draftConfig=!1,this.debug=!1,this.localStorage=O(this),this.pluginPromoCodes=[],this.handlePromoCodesStored=e=>{const o=(e.detail.promoCodes?.unvalidatedPromoCodes??[]).map(t=>t.attributes?.value??t.attributes?.url??"").sort();this.pluginPromoCodes=o},this.postProductDetailsPageData=async()=>{M(["apiKey","storeId"],this);const e=q(V,{apiKey:this.apiKey}),o=this.getManualPromoCodes(),t=G(o.map(c=>({value:c})),this.apiKey),i=t&&!j(t);i&&this.dispatchEvent(new D({source:u.product_details_page}));const a=await E({baseUrl:this.baseUrl,headers:N(this.apiKey),queryParams:{version:"1.0.0",lang:this.configLang,storeId:this.storeId,widgetName:u.product_details_page,draftConfig:this.draftConfig,remoteProductIdentifier:this.remoteProductIdentifier},requestBody:{...i&&{promos:t},beamCartId:e||void 0}});return this.handleValidatedPromoCodes(a),a},this.productDetailsPageDataController=new I(this,this.postProductDetailsPageData)}get configLang(){return L[this.lang]||"en"}get parsedPromoCodes(){return H(this.promoCodes)}getManualPromoCodes(){if(this.parsedPromoCodes&&this.parsedPromoCodes.length>0)return this.parsedPromoCodes;const e=this.localStorage.getItemJson("cart");return e?R(e):[]}async handleValidatedPromoCodes(e){e.promos?.validatedPromoCodes&&(await Promise.all([K({apiKey:this.apiKey,promoCodes:{validatedPromoCodes:e.promos.validatedPromoCodes,unvalidatedPromoCodes:[]}}),U({validatedPromoCodes:e.promos.validatedPromoCodes,domain:this.domain})]),this.dispatchEvent(new D({source:u.product_details_page})))}async firstUpdated(){window.addEventListener(v.eventName,this.handlePromoCodesStored)}disconnectedCallback(){window.removeEventListener(v.eventName,this.handlePromoCodesStored),super.disconnectedCallback()}async updated(e){const o=["storeId","baseUrl","lang","apiKey","pluginPromoCodes"];this.pluginPromoCodes;for(const t of o)if(e.has(t)){await this.productDetailsPageDataController.exec();break}}render(){const{data:e,loading:o}=this.productDetailsPageDataController,t=this.cssVariables["--beam-ProductDetailsPage-image-placement"],i=h=>h!=="0px"&&h!=="0",a=this.cssVariables["--beam-ProductDetailsPage-shouldDisplayPromoPill"]==="true",c=!!e?.config?.web?.promo,y=i(this.cssVariables["--beam-ProductDetailsPage-imageHeight"]),C=i(this.cssVariables["--beam-ProductDetailsPage-title-fontSize"]),p=a&&c&&y&&C,b=this.cssVariables["--beam-ProductDetailsPage-shouldDisplayColon"]==="true";return o?r``:e==null?this.debug?T({error:new Error("No data")}):"":r`
|
|
21
21
|
<style>
|
|
22
22
|
:host {
|
|
23
23
|
${this.cssVariables.toCSS()}
|
|
24
24
|
}
|
|
25
25
|
</style>
|
|
26
26
|
<div class="root ${t==="block-center"?"block-display":"inline-display"}">
|
|
27
|
-
${t==="block-center"?
|
|
27
|
+
${t==="block-center"?r`
|
|
28
28
|
${this.renderWidgetIcon(t)}
|
|
29
|
-
${p?
|
|
29
|
+
${p?r`
|
|
30
30
|
<div class="promo-container">
|
|
31
31
|
<beam-promo-info-pill .promo=${e?.config?.web?.promo}></beam-promo-info-pill>
|
|
32
32
|
</div>
|
|
33
|
-
`:
|
|
34
|
-
<div class="info-container">${this.renderContent(p,
|
|
35
|
-
`:
|
|
36
|
-
${p?
|
|
33
|
+
`:r``}
|
|
34
|
+
<div class="info-container">${this.renderContent(p,b,e)}</div>
|
|
35
|
+
`:r`
|
|
36
|
+
${p?r`
|
|
37
37
|
<div class="promo-container">
|
|
38
38
|
<beam-promo-info-pill .promo=${e?.config?.web?.promo}></beam-promo-info-pill>
|
|
39
39
|
</div>
|
|
40
|
-
`:
|
|
40
|
+
`:r``}
|
|
41
41
|
<div class="content-inline">
|
|
42
42
|
${this.renderWidgetIcon(t)}
|
|
43
|
-
<div class="info-container">${this.renderContent(p,
|
|
43
|
+
<div class="info-container">${this.renderContent(p,b,e)}</div>
|
|
44
44
|
</div>
|
|
45
45
|
`}
|
|
46
46
|
</div>
|
|
47
|
-
`}renderWidgetIcon(e){const o=this.cssVariables[
|
|
47
|
+
`}renderWidgetIcon(e){const o=this.cssVariables[ee];return o?r`
|
|
48
48
|
<span class="icon-container" part="icon" ${e==="block-center"?'style="order:1"':""}>
|
|
49
49
|
<img src=${o} alt="Widget Icon" />
|
|
50
50
|
</span>
|
|
51
|
-
`:
|
|
51
|
+
`:r``}renderContent(e,o,t){const i=f(this.configLang,t?.config?.web?.title)||P[this.configLang].ctaTitle(),a=f(this.configLang,t?.config?.web?.description)||P[this.configLang].ctaMessage();return e?r`
|
|
52
52
|
<div class="info-inline-promo">
|
|
53
|
-
<span class="title">${
|
|
53
|
+
<span class="title">${i+(o?P[this.configLang].inlineSeparator():"")}</span>
|
|
54
54
|
<span class="description"> ${a} ${this.renderDisclosureTooltip()} </span>
|
|
55
55
|
</div>
|
|
56
|
-
`:
|
|
56
|
+
`:r`
|
|
57
57
|
<div class="title-block">
|
|
58
|
-
<h3 class="title">${
|
|
58
|
+
<h3 class="title">${i}</h3>
|
|
59
59
|
</div>
|
|
60
60
|
<div class="description-block">
|
|
61
61
|
<span class="description"> ${a} ${this.renderDisclosureTooltip()} </span>
|
|
62
62
|
</div>
|
|
63
|
-
`}renderCloseTooltipIcon(){return
|
|
63
|
+
`}renderCloseTooltipIcon(){return r`<svg width="11" height="11" viewBox="0 0 11 11" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
64
64
|
<path
|
|
65
65
|
d="M5.40836 5.40811L1.48828 1.48804M5.40836 5.40811L9.32843 9.32819M5.40836 5.40811L9.32843 1.48804M5.40836 5.40811L1.48828 9.32819"
|
|
66
66
|
stroke="white"
|
|
@@ -68,7 +68,7 @@ import{j as v,y as i,f as y,g as n,h as x,k as C}from"../chunks/lit-iNN5L_Qk.esm
|
|
|
68
68
|
stroke-linecap="round"
|
|
69
69
|
stroke-linejoin="round"
|
|
70
70
|
/>
|
|
71
|
-
</svg> `}renderDisclosureTooltip(){const e=()=>{const t=this.renderRoot.querySelector(".ppgf-disclosure-tooltip");t.open=!1},o=this.productDetailsPageDataController.data?.ppgfDisclosure;return o?
|
|
71
|
+
</svg> `}renderDisclosureTooltip(){const e=()=>{const t=this.renderRoot.querySelector(".ppgf-disclosure-tooltip");t.open=!1},o=this.productDetailsPageDataController.data?.ppgfDisclosure;return o?r`<sl-tooltip class="ppgf-disclosure-tooltip" part="tooltip">
|
|
72
72
|
<div class="ppgf-disclosure-tooltip-content" slot="content" part="tooltip-content">
|
|
73
73
|
<button
|
|
74
74
|
class="ppgf-disclosure-close"
|
|
@@ -79,14 +79,14 @@ import{j as v,y as i,f as y,g as n,h as x,k as C}from"../chunks/lit-iNN5L_Qk.esm
|
|
|
79
79
|
${this.renderCloseTooltipIcon()}
|
|
80
80
|
</button>
|
|
81
81
|
<div class="ppgf-disclosure-tooltip-copy" part="tooltip-disclosure-copy">
|
|
82
|
-
${
|
|
82
|
+
${$(o.copy)}
|
|
83
83
|
</div>
|
|
84
84
|
</div>
|
|
85
85
|
<span class="ppgf-disclosure-tooltip-trigger" part="tooltip-disclosure-icon">
|
|
86
86
|
<div class="ppgf-disclosure-tooltip-trigger-mask d-lg-none"></div>
|
|
87
|
-
${
|
|
87
|
+
${X()}
|
|
88
88
|
</span>
|
|
89
|
-
</sl-tooltip>`:
|
|
89
|
+
</sl-tooltip>`:r``}renderDisclosureTooltipHyperlink(){const e=this.productDetailsPageDataController.data?.ppgfDisclosureHyperlink;return e?r`<a class="ppgf-disclosure-hyperlink" href="${e.url}" target="_blank">${e.copy}</a>`:r``}get cssVariables(){const e={"--beam-ProductDetailsPage-imageWidth":"24px","--beam-ProductDetailsPage-imageHeight":"24px","--beam-ProductDetailsPage-maxWidth":"346px","--beam-ProductDetailsPage-paddingTop":"8px","--beam-ProductDetailsPage-paddingRight":"12px","--beam-ProductDetailsPage-paddingBottom":"8px","--beam-ProductDetailsPage-paddingLeft":"15px","--beam-ProductDetailsPage-InfoContainer-marginLeft":"8px","--beam-ProductDetailsPage-InfoContainer-textAlign":"inherit","--beam-ProductDetailsPage-InfoContainer-lineHeight":"15px","--beam-ProductDetailsPage-InfoContainer-marginTop":"4px","--beam-ProductDetailsPage-backgroundColor":"unset","--beam-ProductDetailsPage-TooltipIcon-width":"10px","--beam-ProductDetailsPage-TooltipIcon-color":"inherit","--beam-ProductDetailsPage-PPGFDisclosure-backgroundColor":"#000000","--beam-ProductDetailsPage-PPGFDisclosure-paddingTop":"10px","--beam-ProductDetailsPage-PPGFDisclosure-paddingRight":"8px","--beam-ProductDetailsPage-PPGFDisclosure-paddingBottom":"10px","--beam-ProductDetailsPage-PPGFDisclosure-paddingLeft":"8px","--beam-ProductDetailsPage-PPGFDisclosureHyperlink-color":"#5CA3FF",...m("--beam-ProductDetailsPage-title",{fontSize:"12px",fontWeight:"bold"}),"--beam-ProductDetailsPage-title-textAlign":"left",...m("--beam-ProductDetailsPage-description",{marginTop:"0px",fontSize:"12px",lineHeight:"15px"}),"--beam-ProductDetailsPage-description-textAlign":"left",...m("--beam-ProductDetailsPage-PPGFDisclosureTooltipContent",{fontSize:"12px",lineHeight:"16px",color:"#FFFFFF"}),...J("--beam-ProductDetailsPage"),"--beam-ProductDetailsPage-close-display":"initial","--beam-ProductDetailsPage-close-padding":"0","--beam-ProductDetailsPage-image-placement":"inline-left","--beam-ProductDetailsPage-blockImage-alignSelf":"center","--beam-ProductDetailsPage-promoPill-marginTop":"4px","--beam-ProductDetailsPage-promoPill-alignSelf":"left","--beam-ProductDetailsPage-shouldDisplayColon":"true","--beam-ProductDetailsPage-shouldDisplayPromoPill":"true",..._},o=this.productDetailsPageDataController?.data?.config?.web?.theme||{},t={...e,...o};return Object.assign(Object.create({toCSS(){return F(this)}}),t)}}s.tagName="beam-product-details-page",s.styles=[B,W,k`
|
|
90
90
|
:host {
|
|
91
91
|
font-family: var(--beam-fontFamily);
|
|
92
92
|
font-style: var(--beam-fontStyle);
|
|
@@ -106,7 +106,7 @@ import{j as v,y as i,f as y,g as n,h as x,k as C}from"../chunks/lit-iNN5L_Qk.esm
|
|
|
106
106
|
background-color: var(--beam-ProductDetailsPage-backgroundColor);
|
|
107
107
|
display: flex;
|
|
108
108
|
flex-direction: column;
|
|
109
|
-
${
|
|
109
|
+
${Q("--beam-ProductDetailsPage")}
|
|
110
110
|
}
|
|
111
111
|
/* When iconDisplay is inline-center */
|
|
112
112
|
.inline-display {
|
|
@@ -231,5 +231,5 @@ import{j as v,y as i,f as y,g as n,h as x,k as C}from"../chunks/lit-iNN5L_Qk.esm
|
|
|
231
231
|
height: auto;
|
|
232
232
|
vertical-align: middle;
|
|
233
233
|
}
|
|
234
|
-
`],
|
|
234
|
+
`],n([d({type:String,reflect:!0})],s.prototype,"baseUrl",2),n([d({type:String,reflect:!1})],s.prototype,"apiKey",2),n([d({type:Number})],s.prototype,"storeId",2),n([d({type:String})],s.prototype,"lang",2),n([d({type:Boolean})],s.prototype,"draftConfig",2),n([d({type:Boolean})],s.prototype,"debug",2),n([d({type:String})],s.prototype,"remoteProductIdentifier",2),n([d({type:String})],s.prototype,"promoCodes",2),n([d({type:String})],s.prototype,"domain",2),n([w()],s.prototype,"pluginPromoCodes",2),A(s);export{s as BeamProductDetailsPage};
|
|
235
235
|
//# sourceMappingURL=product-details-page.esm.js.map
|