@beamimpact/web-sdk 1.36.12 → 1.37.0
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-EtRWS6m5.esm.js → _share-dialog-dependencies-Ex1exJdU.esm.js} +2 -2
- package/dist/chunks/_share-dialog-dependencies-Ex1exJdU.esm.js.map +1 -0
- package/dist/chunks/{_share-dialog-dependencies-6VF8H43o.esm.js → _share-dialog-dependencies-GOqKRBIc.esm.js} +2 -2
- package/dist/chunks/_share-dialog-dependencies-GOqKRBIc.esm.js.map +1 -0
- package/dist/chunks/{cart-contents-v6_9tRb6.esm.d.ts → cart-contents-Cdq4ob0J.esm.d.ts} +1 -1
- package/dist/chunks/{events-OcebkuWu.esm.d.ts → events-3-Mzl-dS.esm.d.ts} +1 -1
- package/dist/chunks/index-5AkzIYu3.esm.js +2 -0
- package/dist/chunks/index-5AkzIYu3.esm.js.map +1 -0
- package/dist/chunks/{index-5daMf0rK.esm.d.ts → index-7-XLaXA4.esm.d.ts} +1 -1
- package/dist/chunks/index-8VxiCO_y.esm.js +2 -0
- package/dist/chunks/index-8VxiCO_y.esm.js.map +1 -0
- package/dist/chunks/{index-JwkkxR5U.esm.d.ts → index-9Cs92uGK.esm.d.ts} +1 -1
- package/dist/chunks/{index-wlzifF_l.esm.d.ts → index-AhT9jBIr.esm.d.ts} +1 -1
- package/dist/chunks/{index-AzO-vVC_.esm.js → index-KErjmUlF.esm.js} +2 -2
- package/dist/chunks/{index-AzO-vVC_.esm.js.map → index-KErjmUlF.esm.js.map} +1 -1
- package/dist/chunks/{index-g9-z_JOJ.esm.d.ts → index-SZxnIRAX.esm.d.ts} +1 -1
- package/dist/chunks/index-a9SRo_pt.esm.js +2 -0
- package/dist/chunks/index-a9SRo_pt.esm.js.map +1 -0
- package/dist/chunks/{index-KVvZMZmn.esm.d.ts → index-b3DeBLwb.esm.d.ts} +1 -1
- package/dist/chunks/index-fdm0Zxu6.esm.js +2 -0
- package/dist/chunks/index-fdm0Zxu6.esm.js.map +1 -0
- package/dist/chunks/index-gfShfkGQ.esm.js +2 -0
- package/dist/chunks/index-gfShfkGQ.esm.js.map +1 -0
- package/dist/chunks/{index-eZQGsMRE.esm.js → index-jYAdXbGg.esm.js} +2 -2
- package/dist/chunks/{index-eZQGsMRE.esm.js.map → index-jYAdXbGg.esm.js.map} +1 -1
- package/dist/chunks/{index-FnuGcS7e.esm.d.ts → index-xRjeUrl2.esm.d.ts} +4 -4
- package/dist/chunks/index-yEHTVDWu.esm.js +2 -0
- package/dist/chunks/index-yEHTVDWu.esm.js.map +1 -0
- package/dist/chunks/{openapi-spec-bq7eoELU.esm.d.ts → openapi-spec-WpREPNjl.esm.d.ts} +15 -68
- package/dist/chunks/{order-page-Lr9R8-is.esm.js → order-page-ZyVxKalS.esm.js} +2 -2
- package/dist/chunks/{order-page-Lr9R8-is.esm.js.map → order-page-ZyVxKalS.esm.js.map} +1 -1
- package/dist/chunks/{order-page-2mptGhAC.esm.d.ts → order-page-eOCpZ8vN.esm.d.ts} +4 -19
- package/dist/chunks/{order-page-U_bvO9-n.esm.js → order-page-nKOujF0G.esm.js} +2 -2
- package/dist/chunks/{order-page-U_bvO9-n.esm.js.map → order-page-nKOujF0G.esm.js.map} +1 -1
- package/dist/chunks/routes-S3ZS-od_.esm.js +2 -0
- package/dist/chunks/{routes-Y3xQURF0.esm.js.map → routes-S3ZS-od_.esm.js.map} +1 -1
- package/dist/chunks/routes-jQjZhNH9.esm.js +2 -0
- package/dist/chunks/{routes-fBXLZ-QV.esm.js.map → routes-jQjZhNH9.esm.js.map} +1 -1
- package/dist/chunks/{update-cart-OMt_qKQ8.esm.js → update-cart-8nDxTnnQ.esm.js} +2 -2
- package/dist/chunks/{update-cart-OMt_qKQ8.esm.js.map → update-cart-8nDxTnnQ.esm.js.map} +1 -1
- package/dist/chunks/{update-cart-kuufrFCv.esm.d.ts → update-cart-D4jDrYC0.esm.d.ts} +1 -1
- package/dist/chunks/{update-cart-9ANMUWR9.esm.js → update-cart-_cCsAqH9.esm.js} +2 -2
- package/dist/chunks/{update-cart-9ANMUWR9.esm.js.map → update-cart-_cCsAqH9.esm.js.map} +1 -1
- package/dist/components/community-impact.esm.js +1 -1
- package/dist/components/community-impact.js +1 -1
- package/dist/components/cumulative-impact.esm.js +1 -1
- package/dist/components/cumulative-impact.js +1 -1
- package/dist/components/impact-overview.esm.js +1 -1
- package/dist/components/impact-overview.js +1 -1
- package/dist/components/index.d.ts +2 -2
- package/dist/components/index.esm.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/post-purchase.d.ts +3 -3
- package/dist/components/post-purchase.esm.js +3 -1
- package/dist/components/post-purchase.esm.js.map +1 -1
- package/dist/components/post-purchase.js +3 -1
- package/dist/components/post-purchase.js.map +1 -1
- package/dist/components/redeem-transaction.d.ts +3 -3
- package/dist/components/redeem-transaction.esm.js +1 -1
- package/dist/components/redeem-transaction.js +1 -1
- package/dist/components/select-nonprofit.d.ts +3 -3
- package/dist/components/select-nonprofit.esm.js +1 -1
- package/dist/components/select-nonprofit.js +1 -1
- package/dist/components/shopify.d.ts +5 -5
- package/dist/components/shopify.esm.js +1 -1
- package/dist/components/shopify.js +1 -1
- package/dist/components/subscription-management.d.ts +6 -6
- package/dist/components/subscription-management.esm.js +5 -4
- package/dist/components/subscription-management.esm.js.map +1 -1
- package/dist/components/subscription-management.js +5 -4
- package/dist/components/subscription-management.js.map +1 -1
- package/dist/index.d.ts +11 -11
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/integrations/beam.esm.js +1 -1
- package/dist/integrations/beam.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 +9 -9
- 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/shopify.d.ts +4 -4
- package/dist/integrations/shopify.esm.js +1 -1
- package/dist/integrations/shopify.js +1 -1
- package/dist/integrations/statsig.esm.js +1 -1
- package/dist/integrations/statsig.js +1 -1
- package/dist/integrations/utils.d.ts +3 -3
- package/dist/react/community-impact.esm.js +1 -1
- package/dist/react/community-impact.js +1 -1
- package/dist/react/cumulative-impact.esm.js +1 -1
- package/dist/react/cumulative-impact.js +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 +3 -3
- package/dist/react/index.esm.js +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/post-purchase.d.ts +2 -2
- package/dist/react/post-purchase.esm.js +1 -1
- package/dist/react/post-purchase.js +1 -1
- package/dist/react/redeem-transaction.d.ts +3 -3
- package/dist/react/redeem-transaction.esm.js +1 -1
- package/dist/react/redeem-transaction.js +1 -1
- package/dist/react/select-nonprofit.d.ts +3 -3
- package/dist/react/select-nonprofit.esm.js +1 -1
- package/dist/react/select-nonprofit.js +1 -1
- package/dist/react/subscription-management.d.ts +2 -2
- package/dist/react/subscription-management.esm.js +1 -1
- package/dist/react/subscription-management.js +1 -1
- package/dist/utils/events.d.ts +3 -3
- package/dist/utils/index.d.ts +3 -3
- package/package.json +1 -1
- package/dist/chunks/_share-dialog-dependencies-6VF8H43o.esm.js.map +0 -1
- package/dist/chunks/_share-dialog-dependencies-EtRWS6m5.esm.js.map +0 -1
- package/dist/chunks/index-0-TeGf3K.esm.js +0 -2
- package/dist/chunks/index-0-TeGf3K.esm.js.map +0 -1
- package/dist/chunks/index-GnUmyy1z.esm.js +0 -2
- package/dist/chunks/index-GnUmyy1z.esm.js.map +0 -1
- package/dist/chunks/index-IR9Ar71Q.esm.js +0 -2
- package/dist/chunks/index-IR9Ar71Q.esm.js.map +0 -1
- package/dist/chunks/index-Q1G7wE5Y.esm.js +0 -2
- package/dist/chunks/index-Q1G7wE5Y.esm.js.map +0 -1
- package/dist/chunks/index-d7x511He.esm.js +0 -2
- package/dist/chunks/index-d7x511He.esm.js.map +0 -1
- package/dist/chunks/index-ePiYABlF.esm.js +0 -2
- package/dist/chunks/index-ePiYABlF.esm.js.map +0 -1
- package/dist/chunks/routes-Y3xQURF0.esm.js +0 -2
- package/dist/chunks/routes-fBXLZ-QV.esm.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-purchase.esm.js","sources":["../../src/components/post-purchase/index.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { deleteCookieValue, getCookieValue } from \"../../utils/cookies\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport { postTransaction, postChainEligibleNonprofitsForCart } from \"../../api-sdk/v3/routes\";\nimport \"../redeem-transaction\";\nimport \"../impact-overview\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { BeamNonprofitSelectEvent, BeamOrderCreatedEvent } from \"../../utils/events\";\n\nconst REQUIRED_DATA_PROPS = [\"baseUrl\", \"apiKey\", \"orderId\", \"cartTotal\", \"currencyCode\", \"lang\"];\nconst OPTIONAL_DATA_PROPS = [\"storeId\", \"postalCode\", \"countryCode\", \"cart\", \"discountCodes\", \"email\", \"partnerUserId\"];\n\nexport class BeamPostPurchase extends LitElement {\n static tagName = \"beam-post-purchase\";\n\n @property({ type: String })\n public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String })\n public apiKey!: string;\n\n @property({ type: Number, reflect: true })\n public storeId?: number; // Either storeId or postalCode, countryCode must be provided\n\n @property({ type: String })\n public postalCode?: string;\n\n @property({ type: String })\n public countryCode?: string;\n\n @property({ type: String })\n public orderId!: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public email?: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public partnerUserId?: string;\n\n @property({ type: Number })\n public cartTotal!: number;\n\n @property({ type: String })\n public currencyCode = \"USD\";\n\n @property({ type: String })\n public lang: LANGUAGES = \"en\";\n\n @property({ type: Object })\n public cart?: TCart;\n\n @property({ type: Array })\n public discountCodes?: string[];\n\n @property({ type: String })\n public domain?: string;\n\n @property({ type: Boolean })\n public debug = false;\n\n @state() private activeWidget: \"redeem-transaction\" | \"impact-overview\" | null = null; // wait for postTransaction\n @state() private nonprofitId: number | null = null; // from localStorage or redeem-transaction result\n @state() private selectionId: string | null = null; // from localStorage\n @state() private cartId: string | null = null; // from localStorage, external cart ID\n @state() private beamCartId: string | null = null; // from cookie, Beam cart ID\n @state() private userId: string | null = null; // from postTransaction\n @state() private transactionId: string | null = null; // from postTransaction\n\n private localStorage = createScopedLocalStorage(this);\n\n firstUpdated(_changedProperties: PropertyValues) {\n this.enforceConfig();\n this.nonprofitId = Number(this.localStorage.getItem(\"nonprofit\")) || null;\n this.selectionId = this.localStorage.getItem(\"transaction\") || null;\n this.cartId = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\")?.cartId || null;\n // Reading beamCartId from cookies instead of localStorage allows it to work across subdomains\n this.beamCartId = getCookieValue(BEAM_CART_COOKIE_NAME) || null;\n\n if (this.selectionId && this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n }\n\n async updated(previousPropertyValues: PropertyValues) {\n // Also fires on first load as props go from undefined => value\n const refreshOnChangeProps = [...REQUIRED_DATA_PROPS, ...OPTIONAL_DATA_PROPS];\n if (refreshOnChangeProps.some((p) => previousPropertyValues.has(p))) {\n await this.transactionDataController.exec();\n }\n }\n\n enforceConfig() {\n enforceConfig(REQUIRED_DATA_PROPS, this);\n\n if (!this.email && !this.partnerUserId) {\n throw new MissingConfig(\n [this.email ? \"\" : \"email\", this.partnerUserId ? \"\" : \"partnerUserId\"].filter(Boolean),\n \"At least one of [email, partnerUserId] must be provided\"\n );\n }\n }\n\n handlePostTransaction = async () => {\n this.enforceConfig();\n\n // Find storeId from postalCode + countryCode if it is not set\n if (!this.storeId && this.postalCode && this.countryCode) {\n const res = await postChainEligibleNonprofitsForCart({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n widgetName: \"redeem-transaction\",\n version: \"1.0.0\",\n },\n });\n this.storeId = res.store?.id;\n }\n\n const result = await postTransaction({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n nonprofitId: this.nonprofitId ?? undefined,\n selectionId: this.selectionId ?? undefined,\n cartId: this.cartId ?? undefined,\n beamCartId: this.beamCartId ?? undefined,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n storeId: this.storeId!,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n email: this.email, // One or both of email & partnerUserId should be defined\n partnerUserId: this.partnerUserId, // One or both of email & partnerUserId should be defined\n currencyCode: this.currencyCode,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n cart: this.cart,\n discountCodes: this.discountCodes,\n },\n });\n\n this.transactionId = result.transactionId;\n this.userId = result.beamUserId;\n this.nonprofitId = result.nonprofitId;\n\n if (this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n } else {\n this.activeWidget = \"redeem-transaction\";\n }\n\n this.localStorage.removeItem(\"transaction\");\n this.localStorage.removeItem(\"cart\");\n deleteCookieValue({ name: BEAM_CART_COOKIE_NAME, path: \"/\", domain: this.domain });\n\n // Emit order created event only when order is registered with Beam for the first time\n if (result.transactionCreated) {\n dispatchEvent(\n new BeamOrderCreatedEvent({\n transactionId: result.transactionId,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n currencyCode: this.currencyCode,\n })\n );\n }\n\n return result;\n };\n\n private transactionDataController = new AsyncController<typeof this.handlePostTransaction>(\n this,\n this.handlePostTransaction\n );\n\n render() {\n if (this.transactionDataController.loading) {\n return \"\";\n }\n if (this.transactionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.transactionDataController.error });\n }\n return \"\";\n }\n if (this.activeWidget === \"redeem-transaction\") {\n return html`\n <beam-redeem-transaction\n part=\"redeem-transaction\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n storeId=\"${this.storeId}\"\n transactionId=\"${this.transactionId}\"\n cart=\"${JSON.stringify(this.cart)}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n @beamnonprofitselect=\"${(event: Event) => {\n if (!(event instanceof CustomEvent)) return; // TS guard\n const { selectedNonprofitId } = (event as BeamNonprofitSelectEvent).detail;\n this.nonprofitId = selectedNonprofitId ?? null;\n this.activeWidget = \"impact-overview\";\n }}\"\n ></beam-redeem-transaction>\n `;\n }\n if (this.activeWidget === \"impact-overview\") {\n return html`\n <beam-impact-overview\n part=\"impact-overview\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n userId=\"${this.userId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n ></beam-impact-overview>\n `;\n }\n return \"\";\n }\n\n static styles = [cssReset];\n}\n\ndefineCustomElement(BeamPostPurchase);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-post-purchase\": BeamPostPurchase;\n }\n}\n"],"names":["REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","res","postChainEligibleNonprofitsForCart","result","postTransaction","deleteCookieValue","BEAM_CART_COOKIE_NAME","BeamOrderCreatedEvent","AsyncController","_changedProperties","getCookieValue","previousPropertyValues","p","enforceConfig","MissingConfig","_errorMessage","html","event","selectedNonprofitId","cssReset","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"post-purchase.esm.js","sources":["../../src/components/post-purchase/index.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { deleteCookieValue, getCookieValue } from \"../../utils/cookies\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport { postTransaction } from \"../../api-sdk/v3/routes\";\nimport \"../redeem-transaction\";\nimport \"../impact-overview\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { BeamNonprofitSelectEvent, BeamOrderCreatedEvent } from \"../../utils/events\";\n\nconst REQUIRED_DATA_PROPS = [\"baseUrl\", \"apiKey\", \"orderId\", \"cartTotal\", \"currencyCode\", \"lang\"];\nconst OPTIONAL_DATA_PROPS = [\"storeId\", \"postalCode\", \"countryCode\", \"cart\", \"discountCodes\", \"email\", \"partnerUserId\"];\n\nexport class BeamPostPurchase extends LitElement {\n static tagName = \"beam-post-purchase\";\n\n @property({ type: String })\n public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String })\n public apiKey!: string;\n\n @property({ type: Number, reflect: true })\n public storeId?: number; // Either storeId or postalCode, countryCode must be provided\n\n @property({ type: String })\n public postalCode?: string;\n\n @property({ type: String })\n public countryCode?: string;\n\n @property({ type: String })\n public orderId!: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public email?: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public partnerUserId?: string;\n\n @property({ type: Number })\n public cartTotal!: number;\n\n @property({ type: String })\n public currencyCode = \"USD\";\n\n @property({ type: String })\n public lang: LANGUAGES = \"en\";\n\n @property({ type: Object })\n public cart?: TCart;\n\n @property({ type: Array })\n public discountCodes?: string[];\n\n @property({ type: String })\n public domain?: string;\n\n @property({ type: Boolean })\n public debug = false;\n\n @state() private activeWidget: \"redeem-transaction\" | \"impact-overview\" | null = null; // wait for postTransaction\n @state() private nonprofitId: number | null = null; // from localStorage or redeem-transaction result\n @state() private selectionId: string | null = null; // from localStorage\n @state() private cartId: string | null = null; // from localStorage, external cart ID\n @state() private beamCartId: string | null = null; // from cookie, Beam cart ID\n @state() private userId: string | null = null; // from postTransaction\n @state() private transactionId: string | null = null; // from postTransaction\n\n private localStorage = createScopedLocalStorage(this);\n\n firstUpdated(_changedProperties: PropertyValues) {\n this.enforceConfig();\n this.nonprofitId = Number(this.localStorage.getItem(\"nonprofit\")) || null;\n this.selectionId = this.localStorage.getItem(\"transaction\") || null;\n this.cartId = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\")?.cartId || null;\n // Reading beamCartId from cookies instead of localStorage allows it to work across subdomains\n this.beamCartId = getCookieValue(BEAM_CART_COOKIE_NAME) || null;\n\n if (this.selectionId && this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n }\n\n async updated(previousPropertyValues: PropertyValues) {\n // Also fires on first load as props go from undefined => value\n const refreshOnChangeProps = [...REQUIRED_DATA_PROPS, ...OPTIONAL_DATA_PROPS];\n if (refreshOnChangeProps.some((p) => previousPropertyValues.has(p))) {\n await this.transactionDataController.exec();\n }\n }\n\n enforceConfig() {\n enforceConfig(REQUIRED_DATA_PROPS, this);\n\n if (!this.email && !this.partnerUserId) {\n throw new MissingConfig(\n [this.email ? \"\" : \"email\", this.partnerUserId ? \"\" : \"partnerUserId\"].filter(Boolean),\n \"At least one of [email, partnerUserId] must be provided\"\n );\n }\n }\n\n handlePostTransaction = async () => {\n this.enforceConfig();\n const result = await postTransaction({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n nonprofitId: this.nonprofitId || undefined,\n selectionId: this.selectionId || undefined,\n cartId: this.cartId || undefined,\n beamCartId: this.beamCartId || undefined,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n storeId: this.storeId,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n email: this.email, // One or both of email & partnerUserId should be defined\n partnerUserId: this.partnerUserId, // One or both of email & partnerUserId should be defined\n currencyCode: this.currencyCode,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n cart: this.cart,\n discountCodes: this.discountCodes,\n },\n });\n\n this.transactionId = result.transactionId;\n this.userId = result.beamUserId;\n this.nonprofitId = result.nonprofitId;\n\n this.activeWidget = this.nonprofitId ? \"impact-overview\" : \"redeem-transaction\";\n\n this.localStorage.removeItem(\"transaction\");\n this.localStorage.removeItem(\"cart\");\n deleteCookieValue({ name: BEAM_CART_COOKIE_NAME, path: \"/\", domain: this.domain });\n\n // Emit order created event only when order is registered with Beam for the first time\n if (result.transactionCreated) {\n dispatchEvent(\n new BeamOrderCreatedEvent({\n transactionId: result.transactionId,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n currencyCode: this.currencyCode,\n })\n );\n }\n return result;\n };\n\n private transactionDataController = new AsyncController<typeof this.handlePostTransaction>(\n this,\n this.handlePostTransaction\n );\n\n render() {\n if (this.transactionDataController.loading) {\n return \"\";\n }\n if (this.transactionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.transactionDataController.error });\n }\n return \"\";\n }\n if (this.activeWidget === \"redeem-transaction\") {\n return html`\n <beam-redeem-transaction\n part=\"redeem-transaction\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n storeId=\"${this.storeId}\"\n postalCode=\"${this.postalCode}\"\n countryCode=\"${this.countryCode}\"\n transactionId=\"${this.transactionId}\"\n cart=\"${JSON.stringify(this.cart)}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n @beamnonprofitselect=\"${(event: Event) => {\n if (!(event instanceof CustomEvent)) return; // TS guard\n const { selectedNonprofitId } = (event as BeamNonprofitSelectEvent).detail;\n this.nonprofitId = selectedNonprofitId ?? null;\n this.activeWidget = \"impact-overview\";\n }}\"\n ></beam-redeem-transaction>\n `;\n }\n if (this.activeWidget === \"impact-overview\") {\n return html`\n <beam-impact-overview\n part=\"impact-overview\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n userId=\"${this.userId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n ></beam-impact-overview>\n `;\n }\n return \"\";\n }\n\n static styles = [cssReset];\n}\n\ndefineCustomElement(BeamPostPurchase);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-post-purchase\": BeamPostPurchase;\n }\n}\n"],"names":["REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","result","postTransaction","deleteCookieValue","BEAM_CART_COOKIE_NAME","BeamOrderCreatedEvent","AsyncController","_changedProperties","getCookieValue","previousPropertyValues","p","enforceConfig","MissingConfig","_errorMessage","html","event","selectedNonprofitId","cssReset","__decorateClass","property","state","defineCustomElement"],"mappings":"wqCAmBA,MAAMA,EAAsB,CAAC,UAAW,SAAU,UAAW,YAAa,eAAgB,MAAM,EAC1FC,EAAsB,CAAC,UAAW,aAAc,cAAe,OAAQ,gBAAiB,QAAS,eAAe,EAE/G,MAAMC,UAAyBC,CAAW,CAA1C,kCAIL,KAAO,QAAkBC,EAiCzB,KAAO,aAAe,MAGtB,KAAO,KAAkB,KAYzB,KAAO,MAAQ,GAEN,KAAQ,aAAgE,KACxE,KAAQ,YAA6B,KACrC,KAAQ,YAA6B,KACrC,KAAQ,OAAwB,KAChC,KAAQ,WAA4B,KACpC,KAAQ,OAAwB,KAChC,KAAQ,cAA+B,KAEhD,KAAQ,aAAeC,EAAyB,IAAI,EAkCpD,KAAwB,sBAAA,SAAY,CAClC,KAAK,gBACL,MAAMC,EAAS,MAAMC,EAAgB,CACnC,QAAS,KAAK,QACd,QAAS,CACP,cAAe,WAAW,KAAK,MAAM,EACvC,EACA,YAAa,CACX,YAAa,KAAK,aAAe,OACjC,YAAa,KAAK,aAAe,OACjC,OAAQ,KAAK,QAAU,OACvB,WAAY,KAAK,YAAc,OAE/B,QAAS,KAAK,QACd,QAAS,KAAK,QACd,UAAW,KAAK,UAChB,MAAO,KAAK,MACZ,cAAe,KAAK,cACpB,aAAc,KAAK,aACnB,WAAY,KAAK,WACjB,YAAa,KAAK,YAClB,KAAM,KAAK,KACX,cAAe,KAAK,aACtB,CACF,CAAC,EAED,OAAK,KAAA,cAAgBD,EAAO,cAC5B,KAAK,OAASA,EAAO,WACrB,KAAK,YAAcA,EAAO,YAE1B,KAAK,aAAe,KAAK,YAAc,kBAAoB,qBAE3D,KAAK,aAAa,WAAW,aAAa,EAC1C,KAAK,aAAa,WAAW,MAAM,EACnCE,EAAkB,CAAE,KAAMC,EAAuB,KAAM,IAAK,OAAQ,KAAK,MAAO,CAAC,EAG7EH,EAAO,oBACT,cACE,IAAII,EAAsB,CACxB,cAAeJ,EAAO,cACtB,QAAS,KAAK,QACd,UAAW,KAAK,UAChB,aAAc,KAAK,YACrB,CAAC,CACH,EAEKA,CACT,EAEA,KAAQ,0BAA4B,IAAIK,EACtC,KACA,KAAK,qBACP,CArFA,CAAA,aAAaC,EAAoC,CAC/C,KAAK,gBACL,KAAK,YAAc,OAAO,KAAK,aAAa,QAAQ,WAAW,CAAC,GAAK,KACrE,KAAK,YAAc,KAAK,aAAa,QAAQ,aAAa,GAAK,KAC/D,KAAK,OAAS,KAAK,aAAa,YAAmC,MAAM,GAAG,QAAU,KAEtF,KAAK,WAAaC,EAAeJ,CAAqB,GAAK,KAEvD,KAAK,aAAe,KAAK,cAC3B,KAAK,aAAe,kBAExB,CAEA,MAAM,QAAQK,EAAwC,CAEvB,CAAC,GAAGd,EAAqB,GAAGC,CAAmB,EACnD,KAAMc,GAAMD,EAAuB,IAAIC,CAAC,CAAC,GAChE,MAAM,KAAK,0BAA0B,KAEzC,CAAA,CAEA,eAAgB,CAGd,GAFAC,EAAchB,EAAqB,IAAI,EAEnC,CAAC,KAAK,OAAS,CAAC,KAAK,cACvB,MAAM,IAAIiB,EACR,CAAC,KAAK,MAAQ,GAAK,QAAS,KAAK,cAAgB,GAAK,eAAe,EAAE,OAAO,OAAO,EACrF,yDACF,CAEJ,CAyDA,QAAS,CACP,OAAI,KAAK,0BAA0B,QAC1B,GAEL,KAAK,0BAA0B,MAC7B,KAAK,MACAC,EAAc,CAAE,MAAO,KAAK,0BAA0B,KAAM,CAAC,EAE/D,GAEL,KAAK,eAAiB,qBACjBC;AAAAA;AAAAA;AAAAA,qBAGQ,KAAK,OAAO;AAAA,oBACb,KAAK,MAAM;AAAA,qBACV,KAAK,OAAO;AAAA,wBACT,KAAK,UAAU;AAAA,yBACd,KAAK,WAAW;AAAA,2BACd,KAAK,aAAa;AAAA,kBAC3B,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA,kBACzB,KAAK,IAAI;AAAA,oBACP,KAAK,KAAK;AAAA,kCACKC,GAAiB,CACxC,GAAI,EAAEA,aAAiB,aAAc,OACrC,KAAM,CAAE,oBAAAC,CAAoB,EAAKD,EAAmC,OACpE,KAAK,YAAcC,GAAuB,KAC1C,KAAK,aAAe,iBACtB,CAAC;AAAA;AAAA,QAIH,KAAK,eAAiB,kBACjBF;AAAAA;AAAAA;AAAAA,qBAGQ,KAAK,OAAO;AAAA,oBACb,KAAK,MAAM;AAAA,oBACX,KAAK,MAAM;AAAA,yBACN,KAAK,WAAW;AAAA,kBACvB,KAAK,IAAI;AAAA,oBACP,KAAK,KAAK;AAAA;AAAA,QAInB,EACT,CAGF,CAxMajB,EACJ,QAAU,qBADNA,EAuMJ,OAAS,CAACoB,CAAQ,EAnMlBC,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAHf,EAAAtB,EAIJ,UAGAqB,UAAAA,CAAAA,EAAAA,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CANf,EAAAtB,EAOJ,sBAGAqB,EAAA,CADNC,EAAS,CAAE,KAAM,OAAQ,QAAS,EAAK,CAAC,GAT9BtB,EAUJ,UAAA,UAAA,CAAA,EAGAqB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,GAZftB,EAaJ,UAAA,aAAA,CAAA,EAGAqB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAAA,EAfftB,EAgBJ,UAAA,cAAA,CAAA,EAGAqB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAlBf,EAAAtB,EAmBJ,UAMAqB,UAAAA,CAAAA,EAAAA,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAxBf,EAAAtB,EAyBJ,qBAMAqB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CA9Bf,EAAAtB,EA+BJ,UAGAqB,gBAAAA,CAAAA,EAAAA,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAAA,EAjCftB,EAkCJ,UAAA,YAAA,CAAA,EAGAqB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CApCf,EAAAtB,EAqCJ,UAGAqB,eAAAA,CAAAA,EAAAA,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAvCf,EAAAtB,EAwCJ,oBAGAqB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CA1Cf,EAAAtB,EA2CJ,oBAGAqB,EAAA,CADNC,EAAS,CAAE,KAAM,KAAM,CAAC,CA7Cd,EAAAtB,EA8CJ,6BAGAqB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAAA,EAhDftB,EAiDJ,UAAA,SAAA,CAAA,EAGAqB,EAAA,CADNC,EAAS,CAAE,KAAM,OAAQ,CAAC,CAAA,EAnDhBtB,EAoDJ,UAEUqB,QAAAA,CAAAA,EAAAA,EAAA,CAAhBE,EAAAA,CAtDU,EAAAvB,EAsDM,4BACAqB,EAAA,CAAhBE,GAvDU,EAAAvB,EAuDM,2BACAqB,EAAA,CAAhBE,EAAM,CAAA,EAxDIvB,EAwDM,UAAA,cAAA,CAAA,EACAqB,EAAA,CAAhBE,EAAAA,GAzDUvB,EAyDM,UAAA,SAAA,CAAA,EACAqB,EAAA,CAAhBE,EA1DU,CAAA,EAAAvB,EA0DM,UACAqB,aAAAA,CAAAA,EAAAA,EAAA,CAAhBE,EAAM,CAAA,EA3DIvB,EA2DM,UAAA,SAAA,CAAA,EACAqB,EAAA,CAAhBE,EA5DU,CAAA,EAAAvB,EA4DM,UA8InBwB,gBAAAA,CAAAA,EAAAA,EAAoBxB,CAAgB"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import{g as o,t as s,h as
|
|
1
|
+
import{g as o,t as s,h as I,y as l}from"../chunks/lit-yVXn5Cbs.esm.js";import{M as y}from"../chunks/beam-errors-P-Lu07Ce.esm.js";import{deleteCookieValue as u,getCookieValue as g}from"../utils/cookies.js";import{c as C,d as f,A as b,e as v,_ as U}from"../chunks/enforce-config-fo8kIfoY.esm.js";import{createScopedLocalStorage as S}from"../utils/local-storage.js";import{D as $,b as w}from"../chunks/routes-S3ZS-od_.esm.js";import"./redeem-transaction.js";import"./impact-overview.js";import{B as h}from"../chunks/cart-contents-h60geKWa.esm.js";import{b as T}from"../chunks/events-5IECSF-x.esm.js";import"../utils/logger.js";import"../chunks/lodash-P8OIs-at.esm.js";import"../chunks/progress-bar-7gWYaGlq.esm.js";import"./beam-partner-logos.js";import"../chunks/localize-pzAAkBvG.esm.js";import"../chunks/css-card-grid-3b56QBzq.esm.js";import"../chunks/vendor-eeJfrOkP.esm.js";import"../chunks/is-all-html-elements-SdSkxirh.esm.js";import"../chunks/responsive-LYEag6TI.esm.js";var A=Object.defineProperty,D=Object.getOwnPropertyDescriptor,e=(d,r,i,n)=>{for(var a=n>1?void 0:n?D(r,i):r,p=d.length-1,c;p>=0;p--)(c=d[p])&&(a=(n?c(r,i,a):c(a))||a);return n&&a&&A(r,i,a),a};const m=["baseUrl","apiKey","orderId","cartTotal","currencyCode","lang"],E=["storeId","postalCode","countryCode","cart","discountCodes","email","partnerUserId"];class t extends I{constructor(){super(...arguments),this.baseUrl=$,this.currencyCode="USD",this.lang="en",this.debug=!1,this.activeWidget=null,this.nonprofitId=null,this.selectionId=null,this.cartId=null,this.beamCartId=null,this.userId=null,this.transactionId=null,this.localStorage=S(this),this.handlePostTransaction=async()=>{this.enforceConfig();const r=await w({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{nonprofitId:this.nonprofitId||void 0,selectionId:this.selectionId||void 0,cartId:this.cartId||void 0,beamCartId:this.beamCartId||void 0,storeId:this.storeId,orderId:this.orderId,cartTotal:this.cartTotal,email:this.email,partnerUserId:this.partnerUserId,currencyCode:this.currencyCode,postalCode:this.postalCode,countryCode:this.countryCode,cart:this.cart,discountCodes:this.discountCodes}});return this.transactionId=r.transactionId,this.userId=r.beamUserId,this.nonprofitId=r.nonprofitId,this.activeWidget=this.nonprofitId?"impact-overview":"redeem-transaction",this.localStorage.removeItem("transaction"),this.localStorage.removeItem("cart"),u({name:h,path:"/",domain:this.domain}),r.transactionCreated&&dispatchEvent(new T({transactionId:r.transactionId,orderId:this.orderId,cartTotal:this.cartTotal,currencyCode:this.currencyCode})),r},this.transactionDataController=new b(this,this.handlePostTransaction)}firstUpdated(r){this.enforceConfig(),this.nonprofitId=Number(this.localStorage.getItem("nonprofit"))||null,this.selectionId=this.localStorage.getItem("transaction")||null,this.cartId=this.localStorage.getItemJson("cart")?.cartId||null,this.beamCartId=g(h)||null,this.selectionId&&this.nonprofitId&&(this.activeWidget="impact-overview")}async updated(r){[...m,...E].some(i=>r.has(i))&&await this.transactionDataController.exec()}enforceConfig(){if(v(m,this),!this.email&&!this.partnerUserId)throw new y([this.email?"":"email",this.partnerUserId?"":"partnerUserId"].filter(Boolean),"At least one of [email, partnerUserId] must be provided")}render(){return this.transactionDataController.loading?"":this.transactionDataController.error?this.debug?U({error:this.transactionDataController.error}):"":this.activeWidget==="redeem-transaction"?l`
|
|
2
2
|
<beam-redeem-transaction
|
|
3
3
|
part="redeem-transaction"
|
|
4
4
|
baseUrl="${this.baseUrl}"
|
|
5
5
|
apiKey="${this.apiKey}"
|
|
6
6
|
storeId="${this.storeId}"
|
|
7
|
+
postalCode="${this.postalCode}"
|
|
8
|
+
countryCode="${this.countryCode}"
|
|
7
9
|
transactionId="${this.transactionId}"
|
|
8
10
|
cart="${JSON.stringify(this.cart)}"
|
|
9
11
|
lang="${this.lang}"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-purchase.js","sources":["../../src/components/post-purchase/index.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { deleteCookieValue, getCookieValue } from \"../../utils/cookies\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport { postTransaction, postChainEligibleNonprofitsForCart } from \"../../api-sdk/v3/routes\";\nimport \"../redeem-transaction\";\nimport \"../impact-overview\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { BeamNonprofitSelectEvent, BeamOrderCreatedEvent } from \"../../utils/events\";\n\nconst REQUIRED_DATA_PROPS = [\"baseUrl\", \"apiKey\", \"orderId\", \"cartTotal\", \"currencyCode\", \"lang\"];\nconst OPTIONAL_DATA_PROPS = [\"storeId\", \"postalCode\", \"countryCode\", \"cart\", \"discountCodes\", \"email\", \"partnerUserId\"];\n\nexport class BeamPostPurchase extends LitElement {\n static tagName = \"beam-post-purchase\";\n\n @property({ type: String })\n public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String })\n public apiKey!: string;\n\n @property({ type: Number, reflect: true })\n public storeId?: number; // Either storeId or postalCode, countryCode must be provided\n\n @property({ type: String })\n public postalCode?: string;\n\n @property({ type: String })\n public countryCode?: string;\n\n @property({ type: String })\n public orderId!: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public email?: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public partnerUserId?: string;\n\n @property({ type: Number })\n public cartTotal!: number;\n\n @property({ type: String })\n public currencyCode = \"USD\";\n\n @property({ type: String })\n public lang: LANGUAGES = \"en\";\n\n @property({ type: Object })\n public cart?: TCart;\n\n @property({ type: Array })\n public discountCodes?: string[];\n\n @property({ type: String })\n public domain?: string;\n\n @property({ type: Boolean })\n public debug = false;\n\n @state() private activeWidget: \"redeem-transaction\" | \"impact-overview\" | null = null; // wait for postTransaction\n @state() private nonprofitId: number | null = null; // from localStorage or redeem-transaction result\n @state() private selectionId: string | null = null; // from localStorage\n @state() private cartId: string | null = null; // from localStorage, external cart ID\n @state() private beamCartId: string | null = null; // from cookie, Beam cart ID\n @state() private userId: string | null = null; // from postTransaction\n @state() private transactionId: string | null = null; // from postTransaction\n\n private localStorage = createScopedLocalStorage(this);\n\n firstUpdated(_changedProperties: PropertyValues) {\n this.enforceConfig();\n this.nonprofitId = Number(this.localStorage.getItem(\"nonprofit\")) || null;\n this.selectionId = this.localStorage.getItem(\"transaction\") || null;\n this.cartId = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\")?.cartId || null;\n // Reading beamCartId from cookies instead of localStorage allows it to work across subdomains\n this.beamCartId = getCookieValue(BEAM_CART_COOKIE_NAME) || null;\n\n if (this.selectionId && this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n }\n\n async updated(previousPropertyValues: PropertyValues) {\n // Also fires on first load as props go from undefined => value\n const refreshOnChangeProps = [...REQUIRED_DATA_PROPS, ...OPTIONAL_DATA_PROPS];\n if (refreshOnChangeProps.some((p) => previousPropertyValues.has(p))) {\n await this.transactionDataController.exec();\n }\n }\n\n enforceConfig() {\n enforceConfig(REQUIRED_DATA_PROPS, this);\n\n if (!this.email && !this.partnerUserId) {\n throw new MissingConfig(\n [this.email ? \"\" : \"email\", this.partnerUserId ? \"\" : \"partnerUserId\"].filter(Boolean),\n \"At least one of [email, partnerUserId] must be provided\"\n );\n }\n }\n\n handlePostTransaction = async () => {\n this.enforceConfig();\n\n // Find storeId from postalCode + countryCode if it is not set\n if (!this.storeId && this.postalCode && this.countryCode) {\n const res = await postChainEligibleNonprofitsForCart({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n widgetName: \"redeem-transaction\",\n version: \"1.0.0\",\n },\n });\n this.storeId = res.store?.id;\n }\n\n const result = await postTransaction({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n nonprofitId: this.nonprofitId ?? undefined,\n selectionId: this.selectionId ?? undefined,\n cartId: this.cartId ?? undefined,\n beamCartId: this.beamCartId ?? undefined,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n storeId: this.storeId!,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n email: this.email, // One or both of email & partnerUserId should be defined\n partnerUserId: this.partnerUserId, // One or both of email & partnerUserId should be defined\n currencyCode: this.currencyCode,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n cart: this.cart,\n discountCodes: this.discountCodes,\n },\n });\n\n this.transactionId = result.transactionId;\n this.userId = result.beamUserId;\n this.nonprofitId = result.nonprofitId;\n\n if (this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n } else {\n this.activeWidget = \"redeem-transaction\";\n }\n\n this.localStorage.removeItem(\"transaction\");\n this.localStorage.removeItem(\"cart\");\n deleteCookieValue({ name: BEAM_CART_COOKIE_NAME, path: \"/\", domain: this.domain });\n\n // Emit order created event only when order is registered with Beam for the first time\n if (result.transactionCreated) {\n dispatchEvent(\n new BeamOrderCreatedEvent({\n transactionId: result.transactionId,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n currencyCode: this.currencyCode,\n })\n );\n }\n\n return result;\n };\n\n private transactionDataController = new AsyncController<typeof this.handlePostTransaction>(\n this,\n this.handlePostTransaction\n );\n\n render() {\n if (this.transactionDataController.loading) {\n return \"\";\n }\n if (this.transactionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.transactionDataController.error });\n }\n return \"\";\n }\n if (this.activeWidget === \"redeem-transaction\") {\n return html`\n <beam-redeem-transaction\n part=\"redeem-transaction\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n storeId=\"${this.storeId}\"\n transactionId=\"${this.transactionId}\"\n cart=\"${JSON.stringify(this.cart)}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n @beamnonprofitselect=\"${(event: Event) => {\n if (!(event instanceof CustomEvent)) return; // TS guard\n const { selectedNonprofitId } = (event as BeamNonprofitSelectEvent).detail;\n this.nonprofitId = selectedNonprofitId ?? null;\n this.activeWidget = \"impact-overview\";\n }}\"\n ></beam-redeem-transaction>\n `;\n }\n if (this.activeWidget === \"impact-overview\") {\n return html`\n <beam-impact-overview\n part=\"impact-overview\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n userId=\"${this.userId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n ></beam-impact-overview>\n `;\n }\n return \"\";\n }\n\n static styles = [cssReset];\n}\n\ndefineCustomElement(BeamPostPurchase);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-post-purchase\": BeamPostPurchase;\n }\n}\n"],"names":["REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","res","postChainEligibleNonprofitsForCart","result","postTransaction","deleteCookieValue","BEAM_CART_COOKIE_NAME","BeamOrderCreatedEvent","AsyncController","_changedProperties","getCookieValue","previousPropertyValues","p","enforceConfig","MissingConfig","_errorMessage","html","event","selectedNonprofitId","cssReset","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"post-purchase.js","sources":["../../src/components/post-purchase/index.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { deleteCookieValue, getCookieValue } from \"../../utils/cookies\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport { postTransaction } from \"../../api-sdk/v3/routes\";\nimport \"../redeem-transaction\";\nimport \"../impact-overview\";\nimport { BEAM_CART_COOKIE_NAME, TBeamCartLocalStorage, TCart } from \"../../shared/cart-contents\";\nimport { BeamNonprofitSelectEvent, BeamOrderCreatedEvent } from \"../../utils/events\";\n\nconst REQUIRED_DATA_PROPS = [\"baseUrl\", \"apiKey\", \"orderId\", \"cartTotal\", \"currencyCode\", \"lang\"];\nconst OPTIONAL_DATA_PROPS = [\"storeId\", \"postalCode\", \"countryCode\", \"cart\", \"discountCodes\", \"email\", \"partnerUserId\"];\n\nexport class BeamPostPurchase extends LitElement {\n static tagName = \"beam-post-purchase\";\n\n @property({ type: String })\n public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String })\n public apiKey!: string;\n\n @property({ type: Number, reflect: true })\n public storeId?: number; // Either storeId or postalCode, countryCode must be provided\n\n @property({ type: String })\n public postalCode?: string;\n\n @property({ type: String })\n public countryCode?: string;\n\n @property({ type: String })\n public orderId!: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public email?: string;\n\n /**\n * Either email or partnerUserId is required\n */\n @property({ type: String })\n public partnerUserId?: string;\n\n @property({ type: Number })\n public cartTotal!: number;\n\n @property({ type: String })\n public currencyCode = \"USD\";\n\n @property({ type: String })\n public lang: LANGUAGES = \"en\";\n\n @property({ type: Object })\n public cart?: TCart;\n\n @property({ type: Array })\n public discountCodes?: string[];\n\n @property({ type: String })\n public domain?: string;\n\n @property({ type: Boolean })\n public debug = false;\n\n @state() private activeWidget: \"redeem-transaction\" | \"impact-overview\" | null = null; // wait for postTransaction\n @state() private nonprofitId: number | null = null; // from localStorage or redeem-transaction result\n @state() private selectionId: string | null = null; // from localStorage\n @state() private cartId: string | null = null; // from localStorage, external cart ID\n @state() private beamCartId: string | null = null; // from cookie, Beam cart ID\n @state() private userId: string | null = null; // from postTransaction\n @state() private transactionId: string | null = null; // from postTransaction\n\n private localStorage = createScopedLocalStorage(this);\n\n firstUpdated(_changedProperties: PropertyValues) {\n this.enforceConfig();\n this.nonprofitId = Number(this.localStorage.getItem(\"nonprofit\")) || null;\n this.selectionId = this.localStorage.getItem(\"transaction\") || null;\n this.cartId = this.localStorage.getItemJson<TBeamCartLocalStorage>(\"cart\")?.cartId || null;\n // Reading beamCartId from cookies instead of localStorage allows it to work across subdomains\n this.beamCartId = getCookieValue(BEAM_CART_COOKIE_NAME) || null;\n\n if (this.selectionId && this.nonprofitId) {\n this.activeWidget = \"impact-overview\";\n }\n }\n\n async updated(previousPropertyValues: PropertyValues) {\n // Also fires on first load as props go from undefined => value\n const refreshOnChangeProps = [...REQUIRED_DATA_PROPS, ...OPTIONAL_DATA_PROPS];\n if (refreshOnChangeProps.some((p) => previousPropertyValues.has(p))) {\n await this.transactionDataController.exec();\n }\n }\n\n enforceConfig() {\n enforceConfig(REQUIRED_DATA_PROPS, this);\n\n if (!this.email && !this.partnerUserId) {\n throw new MissingConfig(\n [this.email ? \"\" : \"email\", this.partnerUserId ? \"\" : \"partnerUserId\"].filter(Boolean),\n \"At least one of [email, partnerUserId] must be provided\"\n );\n }\n }\n\n handlePostTransaction = async () => {\n this.enforceConfig();\n const result = await postTransaction({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n nonprofitId: this.nonprofitId || undefined,\n selectionId: this.selectionId || undefined,\n cartId: this.cartId || undefined,\n beamCartId: this.beamCartId || undefined,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n storeId: this.storeId,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n email: this.email, // One or both of email & partnerUserId should be defined\n partnerUserId: this.partnerUserId, // One or both of email & partnerUserId should be defined\n currencyCode: this.currencyCode,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n cart: this.cart,\n discountCodes: this.discountCodes,\n },\n });\n\n this.transactionId = result.transactionId;\n this.userId = result.beamUserId;\n this.nonprofitId = result.nonprofitId;\n\n this.activeWidget = this.nonprofitId ? \"impact-overview\" : \"redeem-transaction\";\n\n this.localStorage.removeItem(\"transaction\");\n this.localStorage.removeItem(\"cart\");\n deleteCookieValue({ name: BEAM_CART_COOKIE_NAME, path: \"/\", domain: this.domain });\n\n // Emit order created event only when order is registered with Beam for the first time\n if (result.transactionCreated) {\n dispatchEvent(\n new BeamOrderCreatedEvent({\n transactionId: result.transactionId,\n orderId: this.orderId,\n cartTotal: this.cartTotal,\n currencyCode: this.currencyCode,\n })\n );\n }\n return result;\n };\n\n private transactionDataController = new AsyncController<typeof this.handlePostTransaction>(\n this,\n this.handlePostTransaction\n );\n\n render() {\n if (this.transactionDataController.loading) {\n return \"\";\n }\n if (this.transactionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.transactionDataController.error });\n }\n return \"\";\n }\n if (this.activeWidget === \"redeem-transaction\") {\n return html`\n <beam-redeem-transaction\n part=\"redeem-transaction\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n storeId=\"${this.storeId}\"\n postalCode=\"${this.postalCode}\"\n countryCode=\"${this.countryCode}\"\n transactionId=\"${this.transactionId}\"\n cart=\"${JSON.stringify(this.cart)}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n @beamnonprofitselect=\"${(event: Event) => {\n if (!(event instanceof CustomEvent)) return; // TS guard\n const { selectedNonprofitId } = (event as BeamNonprofitSelectEvent).detail;\n this.nonprofitId = selectedNonprofitId ?? null;\n this.activeWidget = \"impact-overview\";\n }}\"\n ></beam-redeem-transaction>\n `;\n }\n if (this.activeWidget === \"impact-overview\") {\n return html`\n <beam-impact-overview\n part=\"impact-overview\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n userId=\"${this.userId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n ></beam-impact-overview>\n `;\n }\n return \"\";\n }\n\n static styles = [cssReset];\n}\n\ndefineCustomElement(BeamPostPurchase);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-post-purchase\": BeamPostPurchase;\n }\n}\n"],"names":["REQUIRED_DATA_PROPS","OPTIONAL_DATA_PROPS","BeamPostPurchase","LitElement","DEFAULT_BASE_URL","createScopedLocalStorage","result","postTransaction","deleteCookieValue","BEAM_CART_COOKIE_NAME","BeamOrderCreatedEvent","AsyncController","_changedProperties","getCookieValue","previousPropertyValues","p","enforceConfig","MissingConfig","_errorMessage","html","event","selectedNonprofitId","cssReset","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
|
|
@@ -5,9 +5,9 @@ import * as lodash from 'lodash';
|
|
|
5
5
|
import '../chunks/progress-bar-0VS_AmEf.esm.js';
|
|
6
6
|
import './beam-partner-logos.js';
|
|
7
7
|
import { b as TNumericId, c as TId } from '../chunks/types-7kSi85Gv.esm.js';
|
|
8
|
-
import { T as TCart } from '../chunks/cart-contents-
|
|
8
|
+
import { T as TCart } from '../chunks/cart-contents-Cdq4ob0J.esm.js';
|
|
9
9
|
import { L as LANGUAGES } from '../chunks/types-aju0qrRe.esm.js';
|
|
10
|
-
import '../chunks/openapi-spec-
|
|
10
|
+
import '../chunks/openapi-spec-WpREPNjl.esm.js';
|
|
11
11
|
|
|
12
12
|
interface TransactionRequiredConfig {
|
|
13
13
|
apiKey: string;
|
|
@@ -72,7 +72,7 @@ declare class BeamRedeemTransaction extends LitElement {
|
|
|
72
72
|
static styles: lit.CSSResult[];
|
|
73
73
|
private handleChooseClick;
|
|
74
74
|
get shouldCollapse(): boolean;
|
|
75
|
-
protected render(): lit_html.TemplateResult<1
|
|
75
|
+
protected render(): "" | lit_html.TemplateResult<1>;
|
|
76
76
|
}
|
|
77
77
|
declare global {
|
|
78
78
|
interface HTMLElementTagNameMap {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{y as m,m as y,f as $,g as c,t as k,h as I,q as v,p as N,k as D}from"../chunks/lit-yVXn5Cbs.esm.js";import{d as z}from"../chunks/lodash-P8OIs-at.esm.js";import{c as L,d as E,b as U,e as x,A as B,f as w,a as W,_ as C}from"../chunks/enforce-config-qna7hEL6.esm.js";import{D as A,
|
|
1
|
+
import{y as m,m as y,f as $,g as c,t as k,h as I,q as v,p as N,k as D}from"../chunks/lit-yVXn5Cbs.esm.js";import{d as z}from"../chunks/lodash-P8OIs-at.esm.js";import{c as L,d as E,b as U,e as x,A as B,f as w,a as W,_ as C}from"../chunks/enforce-config-qna7hEL6.esm.js";import{D as A,e as P,i as M,u as F,S as K}from"../chunks/routes-jQjZhNH9.esm.js";import{p as O}from"../chunks/progress-bar-7gWYaGlq.esm.js";import{partnerLogosConfigDefaults as j}from"./beam-partner-logos.esm.js";import{u,d as h,_,i as p}from"../chunks/localize-GCkVUD8S.esm.js";import{M as q,B as V}from"../chunks/beam-errors-P-Lu07Ce.esm.js";import{createScopedLocalStorage as H}from"../utils/local-storage.esm.js";import{c as G}from"../chunks/css-card-grid-3b56QBzq.esm.js";import{c as J}from"../chunks/events-5IECSF-x.esm.js";import"../utils/logger.esm.js";const Z=({height:i="1em",width:e="1em"}={})=>m`
|
|
2
2
|
<svg
|
|
3
3
|
style="${y({height:i,width:e,position:"relative",bottom:"0"})}"
|
|
4
4
|
xmlns="http://www.w3.org/2000/svg"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{y as m,m as y,f as $,g as c,t as k,h as I,q as v,p as N,k as D}from"../chunks/lit-yVXn5Cbs.esm.js";import{d as z}from"../chunks/lodash-P8OIs-at.esm.js";import{c as L,d as E,b as U,e as x,A as B,f as w,a as W,_ as C}from"../chunks/enforce-config-fo8kIfoY.esm.js";import{D as A,
|
|
1
|
+
import{y as m,m as y,f as $,g as c,t as k,h as I,q as v,p as N,k as D}from"../chunks/lit-yVXn5Cbs.esm.js";import{d as z}from"../chunks/lodash-P8OIs-at.esm.js";import{c as L,d as E,b as U,e as x,A as B,f as w,a as W,_ as C}from"../chunks/enforce-config-fo8kIfoY.esm.js";import{D as A,e as P,i as M,u as F,S as K}from"../chunks/routes-S3ZS-od_.esm.js";import{p as O}from"../chunks/progress-bar-7gWYaGlq.esm.js";import{partnerLogosConfigDefaults as j}from"./beam-partner-logos.js";import{u,d as h,_,i as p}from"../chunks/localize-pzAAkBvG.esm.js";import{M as q,B as V}from"../chunks/beam-errors-P-Lu07Ce.esm.js";import{createScopedLocalStorage as H}from"../utils/local-storage.js";import{c as G}from"../chunks/css-card-grid-3b56QBzq.esm.js";import{c as J}from"../chunks/events-5IECSF-x.esm.js";import"../utils/logger.js";const Z=({height:i="1em",width:e="1em"}={})=>m`
|
|
2
2
|
<svg
|
|
3
3
|
style="${y({height:i,width:e,position:"relative",bottom:"0"})}"
|
|
4
4
|
xmlns="http://www.w3.org/2000/svg"
|
|
@@ -4,8 +4,8 @@ import { LitElement, PropertyValues } from 'lit';
|
|
|
4
4
|
import '../chunks/progress-bar-0VS_AmEf.esm.js';
|
|
5
5
|
import { b as TNumericId } from '../chunks/types-7kSi85Gv.esm.js';
|
|
6
6
|
import { L as LANGUAGES } from '../chunks/types-aju0qrRe.esm.js';
|
|
7
|
-
import { T as TCart } from '../chunks/cart-contents-
|
|
8
|
-
import '../chunks/openapi-spec-
|
|
7
|
+
import { T as TCart } from '../chunks/cart-contents-Cdq4ob0J.esm.js';
|
|
8
|
+
import '../chunks/openapi-spec-WpREPNjl.esm.js';
|
|
9
9
|
|
|
10
10
|
interface RequiredConfig {
|
|
11
11
|
apiKey: string;
|
|
@@ -58,7 +58,7 @@ declare class BeamSelectNonprofit extends LitElement {
|
|
|
58
58
|
private makeHandleSelect;
|
|
59
59
|
get cssVariables(): any;
|
|
60
60
|
static styles: lit.CSSResult[];
|
|
61
|
-
protected render(): lit_html.TemplateResult<1
|
|
61
|
+
protected render(): "" | lit_html.TemplateResult<1>;
|
|
62
62
|
}
|
|
63
63
|
declare global {
|
|
64
64
|
interface HTMLElementTagNameMap {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{f as I,g as l,h as w,y as b,p as k,m as z,k as $}from"../chunks/lit-yVXn5Cbs.esm.js";import{c as D,d as L,e as u,A as S,a as T,_ as N}from"../chunks/enforce-config-qna7hEL6.esm.js";import{D as A,
|
|
1
|
+
import{f as I,g as l,h as w,y as b,p as k,m as z,k as $}from"../chunks/lit-yVXn5Cbs.esm.js";import{c as D,d as L,e as u,A as S,a as T,_ as N}from"../chunks/enforce-config-qna7hEL6.esm.js";import{D as A,e as E,f as B,S as F}from"../chunks/routes-jQjZhNH9.esm.js";import{p as P}from"../chunks/progress-bar-7gWYaGlq.esm.js";import{u as m,d as p,_ as U,i as d}from"../chunks/localize-GCkVUD8S.esm.js";import{c as C,f as y}from"../chunks/events-5IECSF-x.esm.js";import{logger as W}from"../utils/logger.esm.js";import"../utils/network-listeners.esm.js";import{createScopedLocalStorage as O}from"../utils/local-storage.esm.js";import{getCookieValue as v}from"../utils/cookies.esm.js";import{i as _}from"../chunks/lodash-P8OIs-at.esm.js";import{c as M}from"../chunks/responsive-LYEag6TI.esm.js";import{B as R}from"../chunks/cart-contents-h60geKWa.esm.js";import"../chunks/beam-errors-P-Lu07Ce.esm.js";const g={en:{beamAttribution:()=>"Powered by Beam",ctaTitle:()=>"Choose your impact",ctaMessage:({donationPercentage:r="1"}={})=>`Select a nonprofit and ${r}% of your purchase will be donated, at no extra cost.`,inlineSeparator:()=>": "},fr:{beamAttribution:()=>"Optimis\xE9 par Beam",ctaTitle:()=>"Choisissez votre cause",ctaMessage:({donationPercentage:r="1"}={})=>`Choisissez un organisme \xE0 but non lucratif et ${r} % lui sera vers\xE9 en votre nom, sans frais suppl\xE9mentaires.`,inlineSeparator:()=>" : "},de:{beamAttribution:()=>"Unterst\xFCtzt von Beam",ctaTitle:()=>"W\xE4hle deinen Impact",ctaMessage:({donationPercentage:r="1"}={})=>`W\xE4hle eine der gemeinn\xFCtzigen Organisationen und spende ${r}% deines Einkaufs ohne zus\xE4tzliche Kosten`,inlineSeparator:()=>": "},es:{beamAttribution:()=>"Ofrecido por Beam",ctaTitle:()=>"Elige tu contribuci\xF3n",ctaMessage:({donationPercentage:r="1"}={})=>`Elige una organizaci\xF3n sin fines de lucro y donaremos ${r}% de tu compra sin coste adicional.`,inlineSeparator:()=>": "},it:{beamAttribution:()=>"Gestito da Beam",ctaTitle:()=>"Scegli dove fare la differenza",ctaMessage:({donationPercentage:r="1"}={})=>`Seleziona un'organizzazione no-profit a cui devolvere l\u2019${r}% del tuo acquisto, senza costi aggiuntivi`,inlineSeparator:()=>": "},pl:{beamAttribution:()=>"Wspierany przez Beam",ctaTitle:()=>"Wybierz inicjatyw\u0119, kt\xF3r\u0105 chcesz wesprze\u0107",ctaMessage:({donationPercentage:r="1"}={})=>`Wybierz organizacj\u0119, kt\xF3rej przeka\u017Cesz ${r}% warto\u015Bci Twoich zakup\xF3w \u2013 bez \u017Cadnych dodatkowych koszt\xF3w!`,inlineSeparator:()=>": "}};var K=Object.defineProperty,H=Object.getOwnPropertyDescriptor,c=(r,e,t,i)=>{for(var n=i>1?void 0:i?H(e,t):e,a=r.length-1,o;a>=0;a--)(o=r[a])&&(n=(i?o(e,t,n):o(n))||n);return i&&n&&K(e,t,n),n};class s extends w{constructor(){super(...arguments),this.baseUrl=A,this.selectedNonprofitId=null,this.lang="en",this.debug=!1,this.enableNonprofitDeselection=!1,this.didTryToCreateNewSelectionFromCache=!1,this.getChainNonprofits=async()=>{u(["apiKey"],this);const e=this.cart?.content?{schema:this.cart?.schema,content:this.cart?.content}:void 0,t=await E({baseUrl:this.baseUrl,apiRoot:"/api/v3",headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{storeId:this.storeId,widgetName:"select-nonprofit",postalCode:this.postalCode,countryCode:this.countryCode,version:"1.0.0",lang:this.configLang,cart:e}});return this.enableNonprofitDeselection=!!t.config.enableNonprofitDeselection,this.selectedNonprofitId&&!t.nonprofits.map(i=>i.nonprofit.id).includes(this.selectedNonprofitId)&&(this.selectedNonprofitId=null,await this.postSelectNonprofit({selectedNonprofitId:null})),t.store?.id&&t.store.id!==this.storeId&&(this.storeId=t.store.id),await this.createNewSelectionForCachedNonprofit(),this.localStorage.setItemJson("chainNonprofits",{createdAt:new Date,data:t}),t},this.postSelectNonprofit=async({selectedNonprofitId:e})=>{u(["apiKey","storeId"],this);const t=this.getExternalCartId(),i=this.getBeamCartId(),n=await B({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{nonprofitId:e,selectionId:this.selectionId,storeId:this.storeId,cartId:t,beamCartId:i}});this.selectionId=n?.selectionId,this.localStorage.setItem("transaction",this.selectionId),this.localStorage.setItem("nonprofit",e),this.localStorage.setItem("nonprofit_selected_at",new Date().toISOString()),await this.updateComplete;const a=this.getNonprofitById(e);this.dispatchEvent(new C({selectedNonprofitId:e,selectionId:this.selectionId,nonprofitName:a?.nonprofit?.name??null}))},this.nonprofitListDataController=new S(this,this.getChainNonprofits),this.selectionDataController=new S(this,this.postSelectNonprofit),this.localStorage=O(this),this.handleCartChange=e=>{this.cart=e.detail},this.makeHandleSelect=(e,t,i)=>async n=>{const a=this.selectedNonprofitId;if(n instanceof KeyboardEvent){let o=null;switch(n.key){case"ArrowUp":case"ArrowLeft":t===0?o=i[i.length-1]:o=i[t-1],n.preventDefault();break;case"ArrowRight":case"ArrowDown":t===i.length-1?o=i[0]:o=i[t+1],n.preventDefault();break;case"Enter":case" ":n.preventDefault();break;default:return}if(o){a!=null&&(this.selectedNonprofitId=o.nonprofit.id);const f=this.renderRoot.querySelector(`[data-value="${o.nonprofit.id}"]`);f!==null&&(f.tabIndex=0,f.focus());return}}if(n.currentTarget instanceof HTMLElement)if(a===e)if(this.enableNonprofitDeselection)this.selectedNonprofitId=null;else return;else this.selectedNonprofitId=e;await this.selectionDataController.exec({selectedNonprofitId:this.selectedNonprofitId})}}get configLang(){return F[this.lang]||"en"}getNonprofitById(e){return e?this.nonprofitListDataController?.data?.nonprofits.find(t=>t.nonprofit.id===e):null}connectedCallback(){super.connectedCallback(),window.addEventListener(y.eventName,this.handleCartChange)}async firstUpdated(e){await this.restoreStateFromCache()}async updated(e){const t=["baseUrl","storeId","apiKey","countryCode","postalCode","cart","lang"];for(const i of t)if(e.has(i)){await this.nonprofitListDataController.exec();break}}disconnectedCallback(){window.removeEventListener(y.eventName,this.handleCartChange),super.disconnectedCallback()}getExternalCartId(){return this.localStorage.getItemJson("cart")?.cartId??v("cart")}getBeamCartId(){return v(R)}async restoreStateFromCache(){try{const e=new Date().valueOf();this.cart=this.localStorage.getItemJson("cart")??void 0;const t=30*24*60*60*1e3,i=this.localStorage.getItem("nonprofit_selected_at")??0;e>new Date(i).valueOf()+t||(this.selectedNonprofitId=parseInt(this.localStorage.getItem("nonprofit")||"")||null,this.selectionId=this.localStorage.getItem("transaction")??void 0);const{createdAt:n=0,data:a}=this.localStorage.getItemJson("chainNonprofits")||{},o=2*60*60*1e3;e>new Date(n).valueOf()+o||(this.nonprofitListDataController.data=a,this.nonprofitListDataController.loading=!1)}catch(e){W.error(e)}}async createNewSelectionForCachedNonprofit(){if(u(["apiKey"],this),!(!this.storeId||this.didTryToCreateNewSelectionFromCache))try{if(this.didTryToCreateNewSelectionFromCache=!0,this.selectedNonprofitId){this.selectionId||await this.selectionDataController.exec({selectedNonprofitId:this.selectedNonprofitId});const e=this.getNonprofitById(this.selectedNonprofitId);this.dispatchEvent(new C({selectedNonprofitId:this.selectedNonprofitId,selectionId:this.selectionId,nonprofitName:e?.nonprofit?.name}))}}catch{}}get cssVariables(){const e={"--beam-fontFamily":"inherit","--beam-fontStyle":"inherit","--beam-fontSize":"inherit","--beam-textColor":"inherit","--beam-backgroundColor":"inherit",...P,"--beam-SelectNonprofit-title-textAlign":"inherit","--beam-SelectNonprofit-description-textAlign":"inherit","--beam-SelectNonprofit-maxWidth":"800px","--beam-SelectNonprofit-options-marginTop":"0px","--beam-SelectNonprofit-options-iconHeight":"24px","--beam-SelectNonprofit-options-padding":"10px","--beam-SelectNonprofit-options-borderRadius":"0px","--beam-SelectNonprofit-options-borderColor":"currentColor","--beam-SelectNonprofit-options--selected-borderColor":"currentColor","--beam-SelectNonprofit-options-backgroundColor":"transparent","--beam-SelectNonprofit-options-gap":"8px","--beam-SelectNonprofit-options--selected-backgroundColor":"currentColor","--beam-SelectNonprofit-details-marginTop":"10px","--beam-SelectNonprofit-details-borderRadius":"0px","--beam-SelectNonprofit-details-borderColor":"currentColor","--beam-SelectNonprofit-details-backgroundColor":"inherit",...p("--beam-SelectNonprofit-title",{fontSize:"1.25em",fontWeight:"bold"}),"--beam-SelectNonprofit-header-inline-lineHeight":"inherit",...p("--beam-SelectNonprofit-title-inline",{fontWeight:"bold"}),"--beam-SelectNonprofit-title-inline-textTransform":"none",...p("--beam-SelectNonprofit-description",{marginTop:"0.5em"}),...p("--beam-SelectNonprofit-description-inline"),...p("--beam-SelectNonprofit-details-cause",{fontSize:"0.85em",fontWeight:"bold"}),...p("--beam-SelectNonprofit-details-beamAttribution",{fontSize:"0.85em"}),...p("--beam-SelectNonprofit-details-impactDescription",{fontSize:"1em",marginTop:"10px"}),"--beam-SelectNonprofit-details-nonprofitName-fontWeight":"bold","--beam-SelectNonprofit-details-nonprofitName-fontStyle":"inherit","--beam-SelectNonprofit-details-fundingProgress-marginTop":"10px",...p("--beam-SelectNonprofit-details-fundingProgressLabel",{fontSize:"0.85em"})},t=this.nonprofitListDataController?.data?.config?.web?.theme||{},i={...e,...t};return Object.assign(Object.create({toCSS(){return T(this)}}),i)}render(){const{selectedNonprofitId:e}=this,{data:t,loading:i}=this.nonprofitListDataController;if(i&&!t)return U();if(this.nonprofitListDataController.error)return this.debug?N({error:this.nonprofitListDataController.error}):"";if(this.selectionDataController.error&&this.debug)return N({error:this.selectionDataController.error});const n=t?.nonprofits||[],a=n.find(o=>o.nonprofit.id===e)||null;return b`
|
|
2
2
|
<style>
|
|
3
3
|
:host {
|
|
4
4
|
${this.cssVariables.toCSS()}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{f as I,g as l,h as w,y as b,p as k,m as z,k as $}from"../chunks/lit-yVXn5Cbs.esm.js";import{c as D,d as L,e as u,A as S,a as T,_ as N}from"../chunks/enforce-config-fo8kIfoY.esm.js";import{D as A,
|
|
1
|
+
import{f as I,g as l,h as w,y as b,p as k,m as z,k as $}from"../chunks/lit-yVXn5Cbs.esm.js";import{c as D,d as L,e as u,A as S,a as T,_ as N}from"../chunks/enforce-config-fo8kIfoY.esm.js";import{D as A,e as E,f as B,S as F}from"../chunks/routes-S3ZS-od_.esm.js";import{p as P}from"../chunks/progress-bar-7gWYaGlq.esm.js";import{u as m,d as p,_ as U,i as d}from"../chunks/localize-pzAAkBvG.esm.js";import{c as C,f as y}from"../chunks/events-5IECSF-x.esm.js";import{logger as W}from"../utils/logger.js";import"../utils/network-listeners.js";import{createScopedLocalStorage as O}from"../utils/local-storage.js";import{getCookieValue as v}from"../utils/cookies.js";import{i as _}from"../chunks/lodash-P8OIs-at.esm.js";import{c as M}from"../chunks/responsive-LYEag6TI.esm.js";import{B as R}from"../chunks/cart-contents-h60geKWa.esm.js";import"../chunks/beam-errors-P-Lu07Ce.esm.js";const g={en:{beamAttribution:()=>"Powered by Beam",ctaTitle:()=>"Choose your impact",ctaMessage:({donationPercentage:r="1"}={})=>`Select a nonprofit and ${r}% of your purchase will be donated, at no extra cost.`,inlineSeparator:()=>": "},fr:{beamAttribution:()=>"Optimis\xE9 par Beam",ctaTitle:()=>"Choisissez votre cause",ctaMessage:({donationPercentage:r="1"}={})=>`Choisissez un organisme \xE0 but non lucratif et ${r} % lui sera vers\xE9 en votre nom, sans frais suppl\xE9mentaires.`,inlineSeparator:()=>" : "},de:{beamAttribution:()=>"Unterst\xFCtzt von Beam",ctaTitle:()=>"W\xE4hle deinen Impact",ctaMessage:({donationPercentage:r="1"}={})=>`W\xE4hle eine der gemeinn\xFCtzigen Organisationen und spende ${r}% deines Einkaufs ohne zus\xE4tzliche Kosten`,inlineSeparator:()=>": "},es:{beamAttribution:()=>"Ofrecido por Beam",ctaTitle:()=>"Elige tu contribuci\xF3n",ctaMessage:({donationPercentage:r="1"}={})=>`Elige una organizaci\xF3n sin fines de lucro y donaremos ${r}% de tu compra sin coste adicional.`,inlineSeparator:()=>": "},it:{beamAttribution:()=>"Gestito da Beam",ctaTitle:()=>"Scegli dove fare la differenza",ctaMessage:({donationPercentage:r="1"}={})=>`Seleziona un'organizzazione no-profit a cui devolvere l\u2019${r}% del tuo acquisto, senza costi aggiuntivi`,inlineSeparator:()=>": "},pl:{beamAttribution:()=>"Wspierany przez Beam",ctaTitle:()=>"Wybierz inicjatyw\u0119, kt\xF3r\u0105 chcesz wesprze\u0107",ctaMessage:({donationPercentage:r="1"}={})=>`Wybierz organizacj\u0119, kt\xF3rej przeka\u017Cesz ${r}% warto\u015Bci Twoich zakup\xF3w \u2013 bez \u017Cadnych dodatkowych koszt\xF3w!`,inlineSeparator:()=>": "}};var K=Object.defineProperty,H=Object.getOwnPropertyDescriptor,c=(r,e,t,i)=>{for(var n=i>1?void 0:i?H(e,t):e,a=r.length-1,o;a>=0;a--)(o=r[a])&&(n=(i?o(e,t,n):o(n))||n);return i&&n&&K(e,t,n),n};class s extends w{constructor(){super(...arguments),this.baseUrl=A,this.selectedNonprofitId=null,this.lang="en",this.debug=!1,this.enableNonprofitDeselection=!1,this.didTryToCreateNewSelectionFromCache=!1,this.getChainNonprofits=async()=>{u(["apiKey"],this);const e=this.cart?.content?{schema:this.cart?.schema,content:this.cart?.content}:void 0,t=await E({baseUrl:this.baseUrl,apiRoot:"/api/v3",headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{storeId:this.storeId,widgetName:"select-nonprofit",postalCode:this.postalCode,countryCode:this.countryCode,version:"1.0.0",lang:this.configLang,cart:e}});return this.enableNonprofitDeselection=!!t.config.enableNonprofitDeselection,this.selectedNonprofitId&&!t.nonprofits.map(i=>i.nonprofit.id).includes(this.selectedNonprofitId)&&(this.selectedNonprofitId=null,await this.postSelectNonprofit({selectedNonprofitId:null})),t.store?.id&&t.store.id!==this.storeId&&(this.storeId=t.store.id),await this.createNewSelectionForCachedNonprofit(),this.localStorage.setItemJson("chainNonprofits",{createdAt:new Date,data:t}),t},this.postSelectNonprofit=async({selectedNonprofitId:e})=>{u(["apiKey","storeId"],this);const t=this.getExternalCartId(),i=this.getBeamCartId(),n=await B({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{nonprofitId:e,selectionId:this.selectionId,storeId:this.storeId,cartId:t,beamCartId:i}});this.selectionId=n?.selectionId,this.localStorage.setItem("transaction",this.selectionId),this.localStorage.setItem("nonprofit",e),this.localStorage.setItem("nonprofit_selected_at",new Date().toISOString()),await this.updateComplete;const a=this.getNonprofitById(e);this.dispatchEvent(new C({selectedNonprofitId:e,selectionId:this.selectionId,nonprofitName:a?.nonprofit?.name??null}))},this.nonprofitListDataController=new S(this,this.getChainNonprofits),this.selectionDataController=new S(this,this.postSelectNonprofit),this.localStorage=O(this),this.handleCartChange=e=>{this.cart=e.detail},this.makeHandleSelect=(e,t,i)=>async n=>{const a=this.selectedNonprofitId;if(n instanceof KeyboardEvent){let o=null;switch(n.key){case"ArrowUp":case"ArrowLeft":t===0?o=i[i.length-1]:o=i[t-1],n.preventDefault();break;case"ArrowRight":case"ArrowDown":t===i.length-1?o=i[0]:o=i[t+1],n.preventDefault();break;case"Enter":case" ":n.preventDefault();break;default:return}if(o){a!=null&&(this.selectedNonprofitId=o.nonprofit.id);const f=this.renderRoot.querySelector(`[data-value="${o.nonprofit.id}"]`);f!==null&&(f.tabIndex=0,f.focus());return}}if(n.currentTarget instanceof HTMLElement)if(a===e)if(this.enableNonprofitDeselection)this.selectedNonprofitId=null;else return;else this.selectedNonprofitId=e;await this.selectionDataController.exec({selectedNonprofitId:this.selectedNonprofitId})}}get configLang(){return F[this.lang]||"en"}getNonprofitById(e){return e?this.nonprofitListDataController?.data?.nonprofits.find(t=>t.nonprofit.id===e):null}connectedCallback(){super.connectedCallback(),window.addEventListener(y.eventName,this.handleCartChange)}async firstUpdated(e){await this.restoreStateFromCache()}async updated(e){const t=["baseUrl","storeId","apiKey","countryCode","postalCode","cart","lang"];for(const i of t)if(e.has(i)){await this.nonprofitListDataController.exec();break}}disconnectedCallback(){window.removeEventListener(y.eventName,this.handleCartChange),super.disconnectedCallback()}getExternalCartId(){return this.localStorage.getItemJson("cart")?.cartId??v("cart")}getBeamCartId(){return v(R)}async restoreStateFromCache(){try{const e=new Date().valueOf();this.cart=this.localStorage.getItemJson("cart")??void 0;const t=30*24*60*60*1e3,i=this.localStorage.getItem("nonprofit_selected_at")??0;e>new Date(i).valueOf()+t||(this.selectedNonprofitId=parseInt(this.localStorage.getItem("nonprofit")||"")||null,this.selectionId=this.localStorage.getItem("transaction")??void 0);const{createdAt:n=0,data:a}=this.localStorage.getItemJson("chainNonprofits")||{},o=2*60*60*1e3;e>new Date(n).valueOf()+o||(this.nonprofitListDataController.data=a,this.nonprofitListDataController.loading=!1)}catch(e){W.error(e)}}async createNewSelectionForCachedNonprofit(){if(u(["apiKey"],this),!(!this.storeId||this.didTryToCreateNewSelectionFromCache))try{if(this.didTryToCreateNewSelectionFromCache=!0,this.selectedNonprofitId){this.selectionId||await this.selectionDataController.exec({selectedNonprofitId:this.selectedNonprofitId});const e=this.getNonprofitById(this.selectedNonprofitId);this.dispatchEvent(new C({selectedNonprofitId:this.selectedNonprofitId,selectionId:this.selectionId,nonprofitName:e?.nonprofit?.name}))}}catch{}}get cssVariables(){const e={"--beam-fontFamily":"inherit","--beam-fontStyle":"inherit","--beam-fontSize":"inherit","--beam-textColor":"inherit","--beam-backgroundColor":"inherit",...P,"--beam-SelectNonprofit-title-textAlign":"inherit","--beam-SelectNonprofit-description-textAlign":"inherit","--beam-SelectNonprofit-maxWidth":"800px","--beam-SelectNonprofit-options-marginTop":"0px","--beam-SelectNonprofit-options-iconHeight":"24px","--beam-SelectNonprofit-options-padding":"10px","--beam-SelectNonprofit-options-borderRadius":"0px","--beam-SelectNonprofit-options-borderColor":"currentColor","--beam-SelectNonprofit-options--selected-borderColor":"currentColor","--beam-SelectNonprofit-options-backgroundColor":"transparent","--beam-SelectNonprofit-options-gap":"8px","--beam-SelectNonprofit-options--selected-backgroundColor":"currentColor","--beam-SelectNonprofit-details-marginTop":"10px","--beam-SelectNonprofit-details-borderRadius":"0px","--beam-SelectNonprofit-details-borderColor":"currentColor","--beam-SelectNonprofit-details-backgroundColor":"inherit",...p("--beam-SelectNonprofit-title",{fontSize:"1.25em",fontWeight:"bold"}),"--beam-SelectNonprofit-header-inline-lineHeight":"inherit",...p("--beam-SelectNonprofit-title-inline",{fontWeight:"bold"}),"--beam-SelectNonprofit-title-inline-textTransform":"none",...p("--beam-SelectNonprofit-description",{marginTop:"0.5em"}),...p("--beam-SelectNonprofit-description-inline"),...p("--beam-SelectNonprofit-details-cause",{fontSize:"0.85em",fontWeight:"bold"}),...p("--beam-SelectNonprofit-details-beamAttribution",{fontSize:"0.85em"}),...p("--beam-SelectNonprofit-details-impactDescription",{fontSize:"1em",marginTop:"10px"}),"--beam-SelectNonprofit-details-nonprofitName-fontWeight":"bold","--beam-SelectNonprofit-details-nonprofitName-fontStyle":"inherit","--beam-SelectNonprofit-details-fundingProgress-marginTop":"10px",...p("--beam-SelectNonprofit-details-fundingProgressLabel",{fontSize:"0.85em"})},t=this.nonprofitListDataController?.data?.config?.web?.theme||{},i={...e,...t};return Object.assign(Object.create({toCSS(){return T(this)}}),i)}render(){const{selectedNonprofitId:e}=this,{data:t,loading:i}=this.nonprofitListDataController;if(i&&!t)return U();if(this.nonprofitListDataController.error)return this.debug?N({error:this.nonprofitListDataController.error}):"";if(this.selectionDataController.error&&this.debug)return N({error:this.selectionDataController.error});const n=t?.nonprofits||[],a=n.find(o=>o.nonprofit.id===e)||null;return b`
|
|
2
2
|
<style>
|
|
3
3
|
:host {
|
|
4
4
|
${this.cssVariables.toCSS()}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { waitForElement } from '../utils/wait-for-element.js';
|
|
2
2
|
export { initNetworkListeners } from '../utils/network-listeners.js';
|
|
3
|
-
export { e as events } from '../chunks/events-
|
|
4
|
-
export { T as TBeamOrderPageParams, a as addBeamAttributesToCart, g as getCurrentCart, r as registerCartIntegration, s as showBeamOrderPageWidgets, t as trackCart } from '../chunks/order-page-
|
|
5
|
-
import '../chunks/cart-contents-
|
|
6
|
-
import '../chunks/openapi-spec-
|
|
3
|
+
export { e as events } from '../chunks/events-3-Mzl-dS.esm.js';
|
|
4
|
+
export { T as TBeamOrderPageParams, a as addBeamAttributesToCart, g as getCurrentCart, r as registerCartIntegration, s as showBeamOrderPageWidgets, t as trackCart } from '../chunks/order-page-eOCpZ8vN.esm.js';
|
|
5
|
+
import '../chunks/cart-contents-Cdq4ob0J.esm.js';
|
|
6
|
+
import '../chunks/openapi-spec-WpREPNjl.esm.js';
|
|
7
7
|
import '../chunks/types-7kSi85Gv.esm.js';
|
|
8
8
|
import 'lodash';
|
|
9
|
-
import '../chunks/update-cart-
|
|
9
|
+
import '../chunks/update-cart-D4jDrYC0.esm.js';
|
|
10
10
|
import '../chunks/types-aju0qrRe.esm.js';
|
|
11
11
|
import './post-purchase.js';
|
|
12
12
|
import 'lit';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{waitForElement as t}from"../utils/wait-for-element.esm.js";import{getCookieMap as r,getCookieValue as o}from"../utils/cookies.esm.js";import{initNetworkListeners as v}from"../utils/network-listeners.esm.js";import{e as I}from"../chunks/events-5IECSF-x.esm.js";import{g as O,C as T,L as W,s as j,P as q}from"../chunks/order-page-
|
|
1
|
+
import{waitForElement as t}from"../utils/wait-for-element.esm.js";import{getCookieMap as r,getCookieValue as o}from"../utils/cookies.esm.js";import{initNetworkListeners as v}from"../utils/network-listeners.esm.js";import{e as I}from"../chunks/events-5IECSF-x.esm.js";import{g as O,C as T,L as W,s as j,P as q}from"../chunks/order-page-nKOujF0G.esm.js";import"../chunks/beam-errors-P-Lu07Ce.esm.js";import"../chunks/lodash-P8OIs-at.esm.js";import"../utils/logger.esm.js";import"../utils/local-storage.esm.js";import"../utils/memoize-last.esm.js";import"../chunks/cart-contents-h60geKWa.esm.js";import"../chunks/update-cart-8nDxTnnQ.esm.js";import"../chunks/routes-jQjZhNH9.esm.js";import"../utils/remote-session.esm.js";import"./post-purchase.esm.js";import"../chunks/lit-yVXn5Cbs.esm.js";import"../chunks/enforce-config-qna7hEL6.esm.js";import"./redeem-transaction.esm.js";import"../chunks/progress-bar-7gWYaGlq.esm.js";import"./beam-partner-logos.esm.js";import"../chunks/localize-GCkVUD8S.esm.js";import"../chunks/css-card-grid-3b56QBzq.esm.js";import"./impact-overview.esm.js";import"../chunks/vendor-eeJfrOkP.esm.js";import"../chunks/is-all-html-elements-SdSkxirh.esm.js";import"../chunks/responsive-LYEag6TI.esm.js";const i={waitForElement:t,getCookieMap:r,getCookieValue:o};export{O as addBeamAttributesToCart,I as events,T as getCurrentCart,v as initNetworkListeners,W as registerCartIntegration,j as showBeamOrderPageWidgets,q as trackCart,i as utils};
|
|
2
2
|
//# sourceMappingURL=shopify.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{waitForElement as t}from"../utils/wait-for-element.js";import{getCookieMap as r,getCookieValue as o}from"../utils/cookies.js";import{initNetworkListeners as v}from"../utils/network-listeners.js";import{e as I}from"../chunks/events-5IECSF-x.esm.js";import{g as O,C as T,L as W,s as j,P as q}from"../chunks/order-page-
|
|
1
|
+
import{waitForElement as t}from"../utils/wait-for-element.js";import{getCookieMap as r,getCookieValue as o}from"../utils/cookies.js";import{initNetworkListeners as v}from"../utils/network-listeners.js";import{e as I}from"../chunks/events-5IECSF-x.esm.js";import{g as O,C as T,L as W,s as j,P as q}from"../chunks/order-page-ZyVxKalS.esm.js";import"../chunks/beam-errors-P-Lu07Ce.esm.js";import"../chunks/lodash-P8OIs-at.esm.js";import"../utils/logger.js";import"../utils/local-storage.js";import"../utils/memoize-last.js";import"../chunks/cart-contents-h60geKWa.esm.js";import"../chunks/update-cart-_cCsAqH9.esm.js";import"../chunks/routes-S3ZS-od_.esm.js";import"../utils/remote-session.js";import"./post-purchase.js";import"../chunks/lit-yVXn5Cbs.esm.js";import"../chunks/enforce-config-fo8kIfoY.esm.js";import"./redeem-transaction.js";import"../chunks/progress-bar-7gWYaGlq.esm.js";import"./beam-partner-logos.js";import"../chunks/localize-pzAAkBvG.esm.js";import"../chunks/css-card-grid-3b56QBzq.esm.js";import"./impact-overview.js";import"../chunks/vendor-eeJfrOkP.esm.js";import"../chunks/is-all-html-elements-SdSkxirh.esm.js";import"../chunks/responsive-LYEag6TI.esm.js";const i={waitForElement:t,getCookieMap:r,getCookieValue:o};export{O as addBeamAttributesToCart,I as events,T as getCurrentCart,v as initNetworkListeners,W as registerCartIntegration,j as showBeamOrderPageWidgets,q as trackCart,i as utils};
|
|
2
2
|
//# sourceMappingURL=shopify.js.map
|
|
@@ -2,8 +2,8 @@ import * as lit from 'lit';
|
|
|
2
2
|
import { LitElement } from 'lit';
|
|
3
3
|
import * as lit_html from 'lit-html';
|
|
4
4
|
import { L as LANGUAGES } from '../chunks/types-aju0qrRe.esm.js';
|
|
5
|
-
import { T as TCart } from '../chunks/cart-contents-
|
|
6
|
-
import '../chunks/openapi-spec-
|
|
5
|
+
import { T as TCart } from '../chunks/cart-contents-Cdq4ob0J.esm.js';
|
|
6
|
+
import '../chunks/openapi-spec-WpREPNjl.esm.js';
|
|
7
7
|
|
|
8
8
|
interface RequiredDataPropsWithEmail {
|
|
9
9
|
email: string;
|
|
@@ -103,9 +103,9 @@ declare class BeamSubscriptionManagement extends LitElement {
|
|
|
103
103
|
store: {
|
|
104
104
|
id: number;
|
|
105
105
|
};
|
|
106
|
-
region
|
|
107
|
-
id
|
|
108
|
-
}
|
|
106
|
+
region: {
|
|
107
|
+
id: string | null;
|
|
108
|
+
};
|
|
109
109
|
}>;
|
|
110
110
|
fetchSubscription(): Promise<{
|
|
111
111
|
beamUserId: string;
|
|
@@ -116,7 +116,7 @@ declare class BeamSubscriptionManagement extends LitElement {
|
|
|
116
116
|
} | null;
|
|
117
117
|
}>;
|
|
118
118
|
handleSwapNonprofitButtonClick(): void;
|
|
119
|
-
renderSwapNonprofitButton(): lit_html.TemplateResult<1
|
|
119
|
+
renderSwapNonprofitButton(): "" | lit_html.TemplateResult<1>;
|
|
120
120
|
get cssVariables(): any;
|
|
121
121
|
static styles: lit.CSSResult[];
|
|
122
122
|
render(): lit_html.TemplateResult<1>;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import{f as h,g as o,t as p,h as g,y as
|
|
1
|
+
import{f as h,g as o,t as p,h as g,y as d}from"../chunks/lit-yVXn5Cbs.esm.js";import{D as f,e as y,h as w}from"../chunks/routes-jQjZhNH9.esm.js";import{c as S,d as v,A as u,e as b,a as C,_ as m}from"../chunks/enforce-config-qna7hEL6.esm.js";import{c as x}from"../chunks/events-5IECSF-x.esm.js";import{M as N}from"../chunks/beam-errors-P-Lu07Ce.esm.js";import"../utils/logger.esm.js";const I={en:{nonprofitSwapText:({brandName:i=""})=>`Support a new nonprofit with your next ${i} recurring order`},fr:{nonprofitSwapText:({brandName:i=""})=>`Soutenez une nouvelle organisation \xE0 but non lucratif avec votre prochaine commande r\xE9currente ${i}`},de:{nonprofitSwapText:({brandName:i=""})=>`Unterst\xFCtzen Sie eine neue gemeinn\xFCtzige Organisation mit Ihrer n\xE4chsten wiederkehrenden Bestellung bei ${i}`},es:{nonprofitSwapText:({brandName:i=""})=>`Apoye a una nueva organizaci\xF3n sin fines de lucro con su pr\xF3ximo pedido recurrente ${i}`},it:{nonprofitSwapText:({brandName:i=""})=>`Sostieni una nuova organizzazione non profit con il tuo prossimo ordine ricorrente ${i}`},pl:{nonprofitSwapText:({brandName:i=""})=>`Wesprzyj now\u0105 organizacj\u0119 non-profit przy kolejnym zam\xF3wieniu cyklicznym ${i}`}};var M=Object.defineProperty,$=Object.getOwnPropertyDescriptor,n=(i,t,r,a)=>{for(var s=a>1?void 0:a?$(t,r):t,l=i.length-1,c;l>=0;l--)(c=i[l])&&(s=(a?c(t,r,s):c(s))||s);return a&&s&&M(t,r,s),s};class e extends g{constructor(){super(...arguments),this.baseUrl=f,this.lang="en",this.debug=!1,this.activeWidget=null,this.nonprofitId=null,this.userId=null,this.chainName=null,this.subscriptionDataController=new u(this,this.fetchSubscription),this.eligibleNonprofitsDataController=new u(this,this.fetchEligibleNonprofits)}async firstUpdated(){if(!this.email&&!this.partnerUserId)throw new N(["email","partnerUserId"],"One of the following properties needs to be specified: email, partnerUserId ");b(["apiKey","subscriptionId"],this),await this.loadWidget()}async loadWidget(){await Promise.all([this.fetchEligibleNonprofits(),this.fetchSubscription()]),this.activeWidget=this.nonprofitId?"impact-overview":"redeem-transaction"}async fetchEligibleNonprofits(){b(["apiKey","subscriptionId"],this);const t=await y({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{storeId:this.storeId||void 0,postalCode:this.postalCode||void 0,countryCode:this.countryCode||void 0,widgetName:"subscription-management",version:"1.0.0"}});return this.chainName=t.chain.name,this.storeId=t.store.id,this.eligibleNonprofitsDataController.data=t,t}async fetchSubscription(){b(["apiKey","subscriptionId"],this);const t=await w({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{remoteSubscriptionId:this.subscriptionId,email:this.email,partnerUserId:this.partnerUserId}});return this.userId=t.beamUserId,this.nonprofitId=t.nonprofit?.id||null,t}handleSwapNonprofitButtonClick(){this.activeWidget="redeem-transaction"}renderSwapNonprofitButton(){return this.activeWidget==="impact-overview"?d`<button class="swap-nonprofit-button" @click="${this.handleSwapNonprofitButtonClick}">
|
|
2
2
|
${I[this.lang].nonprofitSwapText({brandName:this.chainName||""})}
|
|
3
|
-
</button>`:""}get cssVariables(){const t={"--beam-fontFamily":"inherit","--beam-fontStyle":"inherit","--beam-fontSize":"inherit","--beam-textColor":"inherit","--beam-backgroundColor":"inherit","--beam-SubscriptionManagement-widgetContainer-borderColor":"#d5d5d5","--beam-SubscriptionManagement-widgetContainer-borderRadius":"4px","--beam-SubscriptionManagement-widgetContainer-padding":"15px","--beam-SubscriptionManagement-widgetContainer-backgroundColor":"inherit","--beam-SubscriptionManagement-widgetContainer-maxWidth":"800px","--beam-SubscriptionManagement-swapNonprofitButtonText-textDecoration":"underline","--beam-SubscriptionManagement-swapNonprofitButtonText-fontFamily":"inherit","--beam-SubscriptionManagement-swapNonprofitButtonText-fontStyle":"inherit","--beam-SubscriptionManagement-swapNonprofitButtonText-fontWeight":"inherit","--beam-SubscriptionManagement-swapNonprofitButtonText-lineHeight":"inherit","--beam-SubscriptionManagement-swapNonprofitButtonText-marginTop":"10px","--beam-SubscriptionManagement-swapNonprofitButtonText-fontSize":"inherit","--beam-SubscriptionManagement-swapNonprofitButtonText-color":"inherit"},r=this.eligibleNonprofitsDataController?.data?.config?.web?.theme||{},a={...t,...r};return Object.assign(Object.create({toCSS(){return C(this)}}),a)}render(){let t;if((this.subscriptionDataController.loading||this.eligibleNonprofitsDataController.loading)&&(t=""),(this.subscriptionDataController.error||this.eligibleNonprofitsDataController.error)&&this.debug){if(this.subscriptionDataController.error!==null)return m({error:this.subscriptionDataController.error});if(this.eligibleNonprofitsDataController.error!==null)return m({error:this.eligibleNonprofitsDataController.error})}else t="";return this.activeWidget==="redeem-transaction"?t=
|
|
3
|
+
</button>`:""}get cssVariables(){const t={"--beam-fontFamily":"inherit","--beam-fontStyle":"inherit","--beam-fontSize":"inherit","--beam-textColor":"inherit","--beam-backgroundColor":"inherit","--beam-SubscriptionManagement-widgetContainer-borderColor":"#d5d5d5","--beam-SubscriptionManagement-widgetContainer-borderRadius":"4px","--beam-SubscriptionManagement-widgetContainer-padding":"15px","--beam-SubscriptionManagement-widgetContainer-backgroundColor":"inherit","--beam-SubscriptionManagement-widgetContainer-maxWidth":"800px","--beam-SubscriptionManagement-swapNonprofitButtonText-textDecoration":"underline","--beam-SubscriptionManagement-swapNonprofitButtonText-fontFamily":"inherit","--beam-SubscriptionManagement-swapNonprofitButtonText-fontStyle":"inherit","--beam-SubscriptionManagement-swapNonprofitButtonText-fontWeight":"inherit","--beam-SubscriptionManagement-swapNonprofitButtonText-lineHeight":"inherit","--beam-SubscriptionManagement-swapNonprofitButtonText-marginTop":"10px","--beam-SubscriptionManagement-swapNonprofitButtonText-fontSize":"inherit","--beam-SubscriptionManagement-swapNonprofitButtonText-color":"inherit"},r=this.eligibleNonprofitsDataController?.data?.config?.web?.theme||{},a={...t,...r};return Object.assign(Object.create({toCSS(){return C(this)}}),a)}render(){let t;if((this.subscriptionDataController.loading||this.eligibleNonprofitsDataController.loading)&&(t=""),(this.subscriptionDataController.error||this.eligibleNonprofitsDataController.error)&&this.debug){if(this.subscriptionDataController.error!==null)return m({error:this.subscriptionDataController.error});if(this.eligibleNonprofitsDataController.error!==null)return m({error:this.eligibleNonprofitsDataController.error})}else t="";return this.activeWidget==="redeem-transaction"?t=d` <beam-redeem-transaction
|
|
4
4
|
part="redeem-transaction"
|
|
5
|
+
storeId="${this.storeId}"
|
|
5
6
|
subscriptionId="${this.subscriptionId}"
|
|
6
7
|
nonprofitId=${this.nonprofitId}
|
|
7
8
|
baseUrl="${this.baseUrl}"
|
|
@@ -11,7 +12,7 @@ import{f as h,g as o,t as p,h as g,y as l}from"../chunks/lit-yVXn5Cbs.esm.js";im
|
|
|
11
12
|
lang="${this.lang}"
|
|
12
13
|
?debug="${this.debug}"
|
|
13
14
|
@beamnonprofitselect="${r=>{if(!(r instanceof x))return;const{selectedNonprofitId:a}=r.detail;this.nonprofitId=a??null,this.activeWidget="impact-overview"}}"
|
|
14
|
-
></beam-redeem-transaction>`:this.activeWidget==="impact-overview"&&(t=
|
|
15
|
+
></beam-redeem-transaction>`:this.activeWidget==="impact-overview"&&(t=d`
|
|
15
16
|
<beam-impact-overview
|
|
16
17
|
part="impact-overview"
|
|
17
18
|
baseUrl="${this.baseUrl}"
|
|
@@ -21,7 +22,7 @@ import{f as h,g as o,t as p,h as g,y as l}from"../chunks/lit-yVXn5Cbs.esm.js";im
|
|
|
21
22
|
lang="${this.lang}"
|
|
22
23
|
?debug="${this.debug}"
|
|
23
24
|
></beam-impact-overview>
|
|
24
|
-
`),
|
|
25
|
+
`),d`
|
|
25
26
|
<style>
|
|
26
27
|
:host {
|
|
27
28
|
${this.cssVariables.toCSS()}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription-management.esm.js","sources":["../../src/components/subscription-management/strings.ts","../../src/components/subscription-management/index.ts"],"sourcesContent":["export const strings = {\n en: {\n nonprofitSwapText: ({ brandName = \"\" }) => `Support a new nonprofit with your next ${brandName} recurring order`,\n },\n fr: {\n nonprofitSwapText: ({ brandName = \"\" }) =>\n `Soutenez une nouvelle organisation à but non lucratif avec votre prochaine commande récurrente ${brandName}`,\n },\n de: {\n nonprofitSwapText: ({ brandName = \"\" }) =>\n `Unterstützen Sie eine neue gemeinnützige Organisation mit Ihrer nächsten wiederkehrenden Bestellung bei ${brandName}`,\n },\n es: {\n nonprofitSwapText: ({ brandName = \"\" }) =>\n `Apoye a una nueva organización sin fines de lucro con su próximo pedido recurrente ${brandName}`,\n },\n it: {\n nonprofitSwapText: ({ brandName = \"\" }) =>\n `Sostieni una nuova organizzazione non profit con il tuo prossimo ordine ricorrente ${brandName}`,\n },\n pl: {\n nonprofitSwapText: ({ brandName = \"\" }) =>\n `Wesprzyj nową organizację non-profit przy kolejnym zamówieniu cyklicznym ${brandName}`,\n },\n};\n","import { css, html, LitElement } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { TCart } from \"../../shared/cart-contents\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { postFindOrCreateSubscription, postChainEligibleNonprofitsForCart } from \"../../api-sdk/v3/routes\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { _cssVariableMap } from \"../../shared/fragments/css-variable-map\";\nimport { BeamNonprofitSelectEvent } from \"../../utils/events\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { strings } from \"./strings\";\n\ninterface RequiredDataPropsWithEmail {\n email: string;\n apiKey: string;\n subscriptionId: string;\n}\n\ninterface RequiredDataPropsWithPartnerUserId {\n partnerUserId: string;\n apiKey: string;\n subscriptionId: string;\n}\n\ntype TRequiredDataProps = RequiredDataPropsWithEmail | RequiredDataPropsWithPartnerUserId;\nexport class BeamSubscriptionManagement extends LitElement {\n static tagName = \"beam-subscription-management\";\n\n @property({ type: String })\n public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String })\n public apiKey!: TRequiredDataProps[\"apiKey\"];\n\n @property({ type: String })\n public subscriptionId!: TRequiredDataProps[\"subscriptionId\"];\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 email?: RequiredDataPropsWithEmail[\"email\"]; // Either email or partnerUserId must be provided\n\n @property({ type: String })\n public partnerUserId?: RequiredDataPropsWithPartnerUserId[\"partnerUserId\"]; // Either email or partnerUserId 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 lang: LANGUAGES = \"en\";\n\n @property({ type: Object })\n public cart?: TCart;\n\n @property({ type: Boolean })\n public debug = false;\n\n @state() private activeWidget: \"redeem-transaction\" | \"impact-overview\" | null = null; // Based on /findSubscriptionByRemoteId\n @state() private nonprofitId: number | null = null; // From /findSubscriptionByRemoteId response\n @state() private userId: string | null = null; // From findSubscriptionByRemoteId\n @state() private chainName: string | null = null; // From findEligibleNonprofitsForCart\n\n private subscriptionDataController = new AsyncController<typeof this.fetchSubscription>(this, this.fetchSubscription);\n private eligibleNonprofitsDataController = new AsyncController<typeof this.fetchEligibleNonprofits>(\n this,\n this.fetchEligibleNonprofits\n );\n\n async firstUpdated() {\n if (!this.email && !this.partnerUserId) {\n throw new MissingConfig(\n [\"email\", \"partnerUserId\"],\n \"One of the following properties needs to be specified: email, partnerUserId \"\n );\n }\n enforceConfig<TRequiredDataProps>([\"apiKey\", \"subscriptionId\"], this);\n await this.loadWidget();\n }\n\n async loadWidget() {\n // In parallel:\n // (1). Fetch eligible nonprofits [storeId and chainName]\n // (2). Fetch subscription [userId and nonprofitId]\n await Promise.all([this.fetchEligibleNonprofits(), this.fetchSubscription()]);\n this.activeWidget = this.nonprofitId ? \"impact-overview\" : \"redeem-transaction\";\n }\n\n async fetchEligibleNonprofits() {\n enforceConfig<TRequiredDataProps>([\"apiKey\", \"subscriptionId\"], this);\n const res = await postChainEligibleNonprofitsForCart({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n postalCode: this.postalCode ? this.postalCode : undefined,\n countryCode: this.countryCode ? this.countryCode : undefined,\n widgetName: \"subscription-management\",\n version: \"1.0.0\",\n },\n });\n this.chainName = res.chain.name;\n this.storeId = res.store.id;\n this.eligibleNonprofitsDataController.data = res;\n return res;\n }\n\n async fetchSubscription() {\n enforceConfig<TRequiredDataProps>([\"apiKey\", \"subscriptionId\"], this);\n const result = await postFindOrCreateSubscription({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n remoteSubscriptionId: this.subscriptionId,\n email: this.email,\n partnerUserId: this.partnerUserId,\n },\n });\n\n this.userId = result.beamUserId; // Returned in response regardless of subscription redemption\n this.nonprofitId = result.nonprofit?.id || null;\n return result;\n }\n\n handleSwapNonprofitButtonClick() {\n this.activeWidget = \"redeem-transaction\";\n }\n\n renderSwapNonprofitButton() {\n if (this.activeWidget === \"impact-overview\") {\n return html`<button class=\"swap-nonprofit-button\" @click=\"${this.handleSwapNonprofitButtonClick}\">\n ${strings[this.lang].nonprofitSwapText({ brandName: this.chainName || \"\" })}\n </button>`;\n } else {\n return \"\";\n }\n }\n\n public get cssVariables() {\n const defaults = {\n \"--beam-fontFamily\": \"inherit\",\n \"--beam-fontStyle\": \"inherit\",\n \"--beam-fontSize\": \"inherit\",\n \"--beam-textColor\": \"inherit\",\n \"--beam-backgroundColor\": \"inherit\",\n \"--beam-SubscriptionManagement-widgetContainer-borderColor\": \"#d5d5d5\",\n \"--beam-SubscriptionManagement-widgetContainer-borderRadius\": \"4px\",\n \"--beam-SubscriptionManagement-widgetContainer-padding\": \"15px\",\n \"--beam-SubscriptionManagement-widgetContainer-backgroundColor\": \"inherit\",\n \"--beam-SubscriptionManagement-widgetContainer-maxWidth\": \"800px\",\n \"--beam-SubscriptionManagement-swapNonprofitButtonText-textDecoration\": \"underline\",\n \"--beam-SubscriptionManagement-swapNonprofitButtonText-fontFamily\": \"inherit\",\n \"--beam-SubscriptionManagement-swapNonprofitButtonText-fontStyle\": \"inherit\",\n \"--beam-SubscriptionManagement-swapNonprofitButtonText-fontWeight\": \"inherit\",\n \"--beam-SubscriptionManagement-swapNonprofitButtonText-lineHeight\": \"inherit\",\n \"--beam-SubscriptionManagement-swapNonprofitButtonText-marginTop\": \"10px\",\n \"--beam-SubscriptionManagement-swapNonprofitButtonText-fontSize\": \"inherit\",\n \"--beam-SubscriptionManagement-swapNonprofitButtonText-color\": \"inherit\",\n };\n\n const remoteConfig = this.eligibleNonprofitsDataController?.data?.config?.web?.theme || {};\n\n const config = { ...defaults, ...remoteConfig };\n\n const serializable = Object.create({\n toCSS() {\n return _cssVariableMap(this as Record<string, string>);\n },\n });\n return Object.assign(serializable, config);\n }\n\n static styles = [\n cssReset,\n css`\n :host {\n display: block;\n font-family: var(--beam-fontFamily);\n font-style: var(--beam-fontStyle);\n font-size: var(--beam-fontSize);\n background-color: var(--beam-backgroundColor);\n color: var(--beam-textColor);\n word-break: normal;\n }\n .swap-nonprofit-button {\n margin-top: var(--beam-SubscriptionManagement-swapNonprofitButtonText-marginTop, 10px);\n color: var(--beam-SubscriptionManagement-swapNonprofitButtonText-color, inherit);\n font-size: var(--beam-SubscriptionManagement-swapNonprofitButtonText-fontSize, inherit);\n text-decoration: var(--beam-SubscriptionManagement-swapNonprofitButtonText-textDecoration, underline);\n font-family: var(--beam-SubscriptionManagement-swapNonprofitButtonText-fontFamily, inherit);\n font-style: var(--beam-SubscriptionManagement-swapNonprofitButtonText-fontStyle, inherit);\n font-weight: var(--beam-SubscriptionManagement-swapNonprofitButtonText-fontWeight, inherit);\n line-height: var(--beam-SubscriptionManagement-swapNonprofitButtonText-lineHeight, inherit);\n background: none;\n border: none;\n cursor: pointer;\n }\n .sub-widget-container {\n background-color: var(--beam-SubscriptionManagement-widgetContainer-backgroundColor, inherit);\n border: 1px solid var(--beam-SubscriptionManagement-widgetContainer-borderColor, #d5d5d5);\n border-radius: var(--beam-SubscriptionManagement-widgetContainer-borderRadius, 4px);\n overflow: hidden; /* maintain clean border-radius */\n padding: var(--beam-SubscriptionManagement-widgetContainer-padding, 15px);\n max-width: var(--beam-SubscriptionManagement-widgetContainer-maxWidth, 800px);\n }\n }`,\n ];\n\n render() {\n let content;\n\n if (this.subscriptionDataController.loading || this.eligibleNonprofitsDataController.loading) {\n content = \"\";\n }\n\n if ((this.subscriptionDataController.error || this.eligibleNonprofitsDataController.error) && this.debug) {\n if (this.subscriptionDataController.error !== null) {\n return _errorMessage({ error: this.subscriptionDataController.error });\n } else if (this.eligibleNonprofitsDataController.error !== null) {\n return _errorMessage({ error: this.eligibleNonprofitsDataController.error });\n }\n } else {\n content = \"\";\n }\n\n if (this.activeWidget === \"redeem-transaction\") {\n content = html` <beam-redeem-transaction\n part=\"redeem-transaction\"\n subscriptionId=\"${this.subscriptionId}\"\n nonprofitId=${this.nonprofitId}\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n postalCode=\"${this.postalCode}\"\n countryCode=\"${this.countryCode}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n @beamnonprofitselect=\"${(event: Event) => {\n if (!(event instanceof BeamNonprofitSelectEvent)) return; // TS guard\n const { selectedNonprofitId } = event.detail;\n this.nonprofitId = selectedNonprofitId ?? null;\n this.activeWidget = \"impact-overview\";\n }}\"\n ></beam-redeem-transaction>`;\n } else if (this.activeWidget === \"impact-overview\") {\n content = html`\n <beam-impact-overview\n part=\"impact-overview\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n userId=\"${this.userId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n ></beam-impact-overview>\n `;\n }\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n <div class=\"sub-widget-container\">${content}</div>\n ${this.renderSwapNonprofitButton()}\n `;\n }\n}\n\ndefineCustomElement(BeamSubscriptionManagement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-subscription-management\": BeamSubscriptionManagement;\n }\n}\n"],"names":["strings","brandName","m","h","e","l","n","t","o","i","a","d","BeamSubscriptionManagement","LitElement","DEFAULT_BASE_URL","AsyncController","MissingConfig","enforceConfig","res","postChainEligibleNonprofitsForCart","result","postFindOrCreateSubscription","html","defaults","remoteConfig","config","_cssVariableMap","content","_errorMessage","event","BeamNonprofitSelectEvent","selectedNonprofitId","cssReset","css","__decorateClass","property","state","defineCustomElement"],"mappings":"+XAAO,MAAMA,EAAU,CACrB,GAAI,CACF,kBAAmB,CAAC,CAAE,UAAAC,EAAY,EAAG,IAAM,0CAA0CA,CAAS,kBAChG,EACA,GAAI,CACF,kBAAmB,CAAC,CAAE,UAAAA,EAAY,EAAG,IACnC,wGAAkGA,CAAS,EAC/G,EACA,GAAI,CACF,kBAAmB,CAAC,CAAE,UAAAA,EAAY,EAAG,IACnC,oHAA2GA,CAAS,EACxH,EACA,GAAI,CACF,kBAAmB,CAAC,CAAE,UAAAA,EAAY,EAAG,IACnC,4FAAsFA,CAAS,EACnG,EACA,GAAI,CACF,kBAAmB,CAAC,CAAE,UAAAA,EAAY,EAAG,IACnC,sFAAsFA,CAAS,EACnG,EACA,GAAI,CACF,kBAAmB,CAAC,CAAE,UAAAA,EAAY,EAAG,IACnC,yFAA4EA,CAAS,EACzF,CACF,ECxBA,IAAAC,EAAA,OAAA,eAAAC,EAAA,OAAA,yBAAAC,EAAA,CAAAC,EAAAC,EAAAC,EAAAC,IAAA,CAAA,QAAAC,EAAAD,EAAA,EAAA,OAAAA,EAAAL,EAAAG,EAAAC,CAAA,EAAAD,EAAAI,EAAAL,EAAA,OAAA,EAAAM,EAAAD,GAAA,EAAAA,KAAAC,EAAAN,EAAAK,CAAA,KAAAD,GAAAD,EAAAG,EAAAL,EAAAC,EAAAE,CAAA,EAAAE,EAAAF,CAAA,IAAAA,GAAA,OAAAD,GAAAC,GAAAP,EAAAI,EAAAC,EAAAE,CAAA,EAAAA,CAAA,EA8Ba,MAAAG,UAAmCC,CAAW,CAApD,aAIL,CAAA,MAAA,GAAA,SAAA,EAAA,KAAO,QAAkBC,EAwBzB,KAAO,KAAkB,KAMzB,KAAO,MAAQ,GAEN,KAAQ,aAAgE,KACxE,KAAQ,YAA6B,KACrC,KAAQ,OAAwB,KAChC,KAAQ,UAA2B,KAE5C,KAAQ,2BAA6B,IAAIC,EAA+C,KAAM,KAAK,iBAAiB,EACpH,KAAQ,iCAAmC,IAAIA,EAC7C,KACA,KAAK,uBACP,CAAA,CAEA,MAAM,cAAe,CACnB,GAAI,CAAC,KAAK,OAAS,CAAC,KAAK,cACvB,MAAM,IAAIC,EACR,CAAC,QAAS,eAAe,EACzB,8EACF,EAEFC,EAAkC,CAAC,SAAU,gBAAgB,EAAG,IAAI,EACpE,MAAM,KAAK,WAAW,CACxB,CAEA,MAAM,YAAa,CAIjB,MAAM,QAAQ,IAAI,CAAC,KAAK,wBAAwB,EAAG,KAAK,kBAAmB,CAAA,CAAC,EAC5E,KAAK,aAAe,KAAK,YAAc,kBAAoB,oBAC7D,CAEA,MAAM,yBAA0B,CAC9BA,EAAkC,CAAC,SAAU,gBAAgB,EAAG,IAAI,EACpE,MAAMC,EAAM,MAAMC,EAAmC,CACnD,QAAS,KAAK,QACd,QAAS,CACP,cAAe,WAAW,KAAK,MAAM,EACvC,EACA,YAAa,CACX,WAAY,KAAK,WAAa,KAAK,WAAa,OAChD,YAAa,KAAK,YAAc,KAAK,YAAc,OACnD,WAAY,0BACZ,QAAS,OACX,CACF,CAAC,EACD,OAAK,KAAA,UAAYD,EAAI,MAAM,KAC3B,KAAK,QAAUA,EAAI,MAAM,GACzB,KAAK,iCAAiC,KAAOA,EACtCA,CACT,CAEA,MAAM,mBAAoB,CACxBD,EAAkC,CAAC,SAAU,gBAAgB,EAAG,IAAI,EACpE,MAAMG,EAAS,MAAMC,EAA6B,CAChD,QAAS,KAAK,QACd,QAAS,CACP,cAAe,WAAW,KAAK,MAAM,EACvC,EACA,YAAa,CACX,qBAAsB,KAAK,eAC3B,MAAO,KAAK,MACZ,cAAe,KAAK,aACtB,CACF,CAAC,EAED,OAAK,KAAA,OAASD,EAAO,WACrB,KAAK,YAAcA,EAAO,WAAW,IAAM,KACpCA,CACT,CAEA,gCAAiC,CAC/B,KAAK,aAAe,oBACtB,CAEA,2BAA4B,CAC1B,OAAI,KAAK,eAAiB,kBACjBE,kDAAqD,KAAK,8BAA8B;AAAA,UAC3FtB,EAAQ,KAAK,IAAI,EAAE,kBAAkB,CAAE,UAAW,KAAK,WAAa,EAAG,CAAC,CAAC;AAAA,iBAGtE,EAEX,CAEA,IAAW,cAAe,CACxB,MAAMuB,EAAW,CACf,oBAAqB,UACrB,mBAAoB,UACpB,kBAAmB,UACnB,mBAAoB,UACpB,yBAA0B,UAC1B,4DAA6D,UAC7D,6DAA8D,MAC9D,wDAAyD,OACzD,gEAAiE,UACjE,yDAA0D,QAC1D,uEAAwE,YACxE,mEAAoE,UACpE,kEAAmE,UACnE,mEAAoE,UACpE,mEAAoE,UACpE,kEAAmE,OACnE,iEAAkE,UAClE,8DAA+D,SACjE,EAEMC,EAAe,KAAK,kCAAkC,MAAM,QAAQ,KAAK,OAAS,CAAA,EAElFC,EAAS,CAAE,GAAGF,EAAU,GAAGC,CAAa,EAO9C,OAAO,OAAO,OALO,OAAO,OAAO,CACjC,OAAQ,CACN,OAAOE,EAAgB,IAA8B,CACvD,CACF,CAAC,EACkCD,CAAM,CAC3C,CAsCA,QAAS,CACP,IAAIE,EAMJ,IAJI,KAAK,2BAA2B,SAAW,KAAK,iCAAiC,WACnFA,EAAU,KAGP,KAAK,2BAA2B,OAAS,KAAK,iCAAiC,QAAU,KAAK,MAAO,CACxG,GAAI,KAAK,2BAA2B,QAAU,KAC5C,OAAOC,EAAc,CAAE,MAAO,KAAK,2BAA2B,KAAM,CAAC,EAChE,GAAI,KAAK,iCAAiC,QAAU,KACzD,OAAOA,EAAc,CAAE,MAAO,KAAK,iCAAiC,KAAM,CAAC,CAE/E,MACED,EAAU,GAGZ,OAAI,KAAK,eAAiB,qBACxBA,EAAUL;AAAAA;AAAAA,0BAEU,KAAK,cAAc;AAAA,sBACvB,KAAK,WAAW;AAAA,mBACnB,KAAK,OAAO;AAAA,kBACb,KAAK,MAAM;AAAA,sBACP,KAAK,UAAU;AAAA,uBACd,KAAK,WAAW;AAAA,gBACvB,KAAK,IAAI;AAAA,kBACP,KAAK,KAAK;AAAA,gCACKO,GAAiB,CACxC,GAAI,EAAEA,aAAiBC,GAA2B,OAClD,KAAM,CAAE,oBAAAC,CAAoB,EAAIF,EAAM,OACtC,KAAK,YAAcE,GAAuB,KAC1C,KAAK,aAAe,iBACtB,CAAC;AAAA,mCAEM,KAAK,eAAiB,oBAC/BJ,EAAUL;AAAAA;AAAAA;AAAAA,qBAGK,KAAK,OAAO;AAAA,oBACb,KAAK,MAAM;AAAA,oBACX,KAAK,MAAM;AAAA,yBACN,KAAK,WAAW;AAAA,kBACvB,KAAK,IAAI;AAAA,oBACP,KAAK,KAAK;AAAA;AAAA,SAInBA;AAAAA;AAAAA;AAAAA,YAGC,KAAK,aAAa,OAAO;AAAA;AAAA;AAAA,0CAGKK,CAAO;AAAA,QACzC,KAAK,2BAA2B;AAAA,KAEtC,CACF,CAvPaf,EACJ,QAAU,+BADNA,EAyJJ,OAAS,CACdoB,EACAC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,MAgCF,EAvLOC,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAHf,EAAAvB,EAIJ,UAGAsB,UAAAA,CAAAA,EAAAA,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAAA,EANfvB,EAOJ,UAAA,SAAA,CAAA,EAGAsB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CATf,EAAAvB,EAUJ,8BAGAsB,EAAA,CADNC,EAAS,CAAE,KAAM,OAAQ,QAAS,EAAK,CAAC,CAZ9B,EAAAvB,EAaJ,UAGAsB,UAAAA,CAAAA,EAAAA,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAAA,EAffvB,EAgBJ,UAAA,QAAA,CAAA,EAGAsB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAlBf,EAAAvB,EAmBJ,UAGAsB,gBAAAA,CAAAA,EAAAA,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAAA,EArBfvB,EAsBJ,UAAA,aAAA,CAAA,EAGAsB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAAA,EAxBfvB,EAyBJ,UAAA,cAAA,CAAA,EAGAsB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CA3Bf,EAAAvB,EA4BJ,oBAGAsB,EAAA,CADNC,EAAS,CAAE,KAAM,MAAO,CAAC,CAAA,EA9BfvB,EA+BJ,UAGAsB,OAAAA,CAAAA,EAAAA,EAAA,CADNC,EAAS,CAAE,KAAM,OAAQ,CAAC,GAjChBvB,EAkCJ,UAAA,QAAA,CAAA,EAEUsB,EAAA,CAAhBE,EAAM,CAAA,EApCIxB,EAoCM,UAAA,eAAA,CAAA,EACAsB,EAAA,CAAhBE,GArCU,EAAAxB,EAqCM,UACAsB,cAAAA,CAAAA,EAAAA,EAAA,CAAhBE,KAtCUxB,EAsCM,UAAA,SAAA,CAAA,EACAsB,EAAA,CAAhBE,EAAM,CAAA,EAvCIxB,EAuCM,UAAA,YAAA,CAAA,EAkNnByB,EAAoBzB,CAA0B"}
|
|
1
|
+
{"version":3,"file":"subscription-management.esm.js","sources":["../../src/components/subscription-management/strings.ts","../../src/components/subscription-management/index.ts"],"sourcesContent":["export const strings = {\n en: {\n nonprofitSwapText: ({ brandName = \"\" }) => `Support a new nonprofit with your next ${brandName} recurring order`,\n },\n fr: {\n nonprofitSwapText: ({ brandName = \"\" }) =>\n `Soutenez une nouvelle organisation à but non lucratif avec votre prochaine commande récurrente ${brandName}`,\n },\n de: {\n nonprofitSwapText: ({ brandName = \"\" }) =>\n `Unterstützen Sie eine neue gemeinnützige Organisation mit Ihrer nächsten wiederkehrenden Bestellung bei ${brandName}`,\n },\n es: {\n nonprofitSwapText: ({ brandName = \"\" }) =>\n `Apoye a una nueva organización sin fines de lucro con su próximo pedido recurrente ${brandName}`,\n },\n it: {\n nonprofitSwapText: ({ brandName = \"\" }) =>\n `Sostieni una nuova organizzazione non profit con il tuo prossimo ordine ricorrente ${brandName}`,\n },\n pl: {\n nonprofitSwapText: ({ brandName = \"\" }) =>\n `Wesprzyj nową organizację non-profit przy kolejnym zamówieniu cyklicznym ${brandName}`,\n },\n};\n","import { css, html, LitElement } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { TCart } from \"../../shared/cart-contents\";\nimport { enforceConfig } from \"../../shared/enforce-config\";\nimport { postFindOrCreateSubscription, postChainEligibleNonprofitsForCart } from \"../../api-sdk/v3/routes\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { _cssVariableMap } from \"../../shared/fragments/css-variable-map\";\nimport { BeamNonprofitSelectEvent } from \"../../utils/events\";\nimport { MissingConfig } from \"../../utils/beam-errors\";\nimport { strings } from \"./strings\";\n\ninterface RequiredDataPropsWithEmail {\n email: string;\n apiKey: string;\n subscriptionId: string;\n}\n\ninterface RequiredDataPropsWithPartnerUserId {\n partnerUserId: string;\n apiKey: string;\n subscriptionId: string;\n}\n\ntype TRequiredDataProps = RequiredDataPropsWithEmail | RequiredDataPropsWithPartnerUserId;\nexport class BeamSubscriptionManagement extends LitElement {\n static tagName = \"beam-subscription-management\";\n\n @property({ type: String })\n public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String })\n public apiKey!: TRequiredDataProps[\"apiKey\"];\n\n @property({ type: String })\n public subscriptionId!: TRequiredDataProps[\"subscriptionId\"];\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 email?: RequiredDataPropsWithEmail[\"email\"]; // Either email or partnerUserId must be provided\n\n @property({ type: String })\n public partnerUserId?: RequiredDataPropsWithPartnerUserId[\"partnerUserId\"]; // Either email or partnerUserId 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 lang: LANGUAGES = \"en\";\n\n @property({ type: Object })\n public cart?: TCart;\n\n @property({ type: Boolean })\n public debug = false;\n\n @state() private activeWidget: \"redeem-transaction\" | \"impact-overview\" | null = null; // Based on /findSubscriptionByRemoteId\n @state() private nonprofitId: number | null = null; // From /findSubscriptionByRemoteId response\n @state() private userId: string | null = null; // From findSubscriptionByRemoteId\n @state() private chainName: string | null = null; // From findEligibleNonprofitsForCart\n\n private subscriptionDataController = new AsyncController<typeof this.fetchSubscription>(this, this.fetchSubscription);\n private eligibleNonprofitsDataController = new AsyncController<typeof this.fetchEligibleNonprofits>(\n this,\n this.fetchEligibleNonprofits\n );\n\n async firstUpdated() {\n if (!this.email && !this.partnerUserId) {\n throw new MissingConfig(\n [\"email\", \"partnerUserId\"],\n \"One of the following properties needs to be specified: email, partnerUserId \"\n );\n }\n enforceConfig<TRequiredDataProps>([\"apiKey\", \"subscriptionId\"], this);\n await this.loadWidget();\n }\n\n async loadWidget() {\n // In parallel:\n // (1). Fetch eligible nonprofits [storeId and chainName]\n // (2). Fetch subscription [userId and nonprofitId]\n await Promise.all([this.fetchEligibleNonprofits(), this.fetchSubscription()]);\n this.activeWidget = this.nonprofitId ? \"impact-overview\" : \"redeem-transaction\";\n }\n\n async fetchEligibleNonprofits() {\n enforceConfig<TRequiredDataProps>([\"apiKey\", \"subscriptionId\"], this);\n const res = await postChainEligibleNonprofitsForCart({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n storeId: this.storeId || undefined,\n postalCode: this.postalCode || undefined,\n countryCode: this.countryCode || undefined,\n widgetName: \"subscription-management\",\n version: \"1.0.0\",\n },\n });\n this.chainName = res.chain.name;\n this.storeId = res.store.id;\n this.eligibleNonprofitsDataController.data = res;\n return res;\n }\n\n async fetchSubscription() {\n enforceConfig<TRequiredDataProps>([\"apiKey\", \"subscriptionId\"], this);\n const result = await postFindOrCreateSubscription({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n requestBody: {\n remoteSubscriptionId: this.subscriptionId,\n email: this.email,\n partnerUserId: this.partnerUserId,\n },\n });\n\n this.userId = result.beamUserId; // Returned in response regardless of subscription redemption\n this.nonprofitId = result.nonprofit?.id || null;\n return result;\n }\n\n handleSwapNonprofitButtonClick() {\n this.activeWidget = \"redeem-transaction\";\n }\n\n renderSwapNonprofitButton() {\n if (this.activeWidget === \"impact-overview\") {\n return html`<button class=\"swap-nonprofit-button\" @click=\"${this.handleSwapNonprofitButtonClick}\">\n ${strings[this.lang].nonprofitSwapText({ brandName: this.chainName || \"\" })}\n </button>`;\n } else {\n return \"\";\n }\n }\n\n public get cssVariables() {\n const defaults = {\n \"--beam-fontFamily\": \"inherit\",\n \"--beam-fontStyle\": \"inherit\",\n \"--beam-fontSize\": \"inherit\",\n \"--beam-textColor\": \"inherit\",\n \"--beam-backgroundColor\": \"inherit\",\n \"--beam-SubscriptionManagement-widgetContainer-borderColor\": \"#d5d5d5\",\n \"--beam-SubscriptionManagement-widgetContainer-borderRadius\": \"4px\",\n \"--beam-SubscriptionManagement-widgetContainer-padding\": \"15px\",\n \"--beam-SubscriptionManagement-widgetContainer-backgroundColor\": \"inherit\",\n \"--beam-SubscriptionManagement-widgetContainer-maxWidth\": \"800px\",\n \"--beam-SubscriptionManagement-swapNonprofitButtonText-textDecoration\": \"underline\",\n \"--beam-SubscriptionManagement-swapNonprofitButtonText-fontFamily\": \"inherit\",\n \"--beam-SubscriptionManagement-swapNonprofitButtonText-fontStyle\": \"inherit\",\n \"--beam-SubscriptionManagement-swapNonprofitButtonText-fontWeight\": \"inherit\",\n \"--beam-SubscriptionManagement-swapNonprofitButtonText-lineHeight\": \"inherit\",\n \"--beam-SubscriptionManagement-swapNonprofitButtonText-marginTop\": \"10px\",\n \"--beam-SubscriptionManagement-swapNonprofitButtonText-fontSize\": \"inherit\",\n \"--beam-SubscriptionManagement-swapNonprofitButtonText-color\": \"inherit\",\n };\n\n const remoteConfig = this.eligibleNonprofitsDataController?.data?.config?.web?.theme || {};\n\n const config = { ...defaults, ...remoteConfig };\n\n const serializable = Object.create({\n toCSS() {\n return _cssVariableMap(this as Record<string, string>);\n },\n });\n return Object.assign(serializable, config);\n }\n\n static styles = [\n cssReset,\n css`\n :host {\n display: block;\n font-family: var(--beam-fontFamily);\n font-style: var(--beam-fontStyle);\n font-size: var(--beam-fontSize);\n background-color: var(--beam-backgroundColor);\n color: var(--beam-textColor);\n word-break: normal;\n }\n .swap-nonprofit-button {\n margin-top: var(--beam-SubscriptionManagement-swapNonprofitButtonText-marginTop, 10px);\n color: var(--beam-SubscriptionManagement-swapNonprofitButtonText-color, inherit);\n font-size: var(--beam-SubscriptionManagement-swapNonprofitButtonText-fontSize, inherit);\n text-decoration: var(--beam-SubscriptionManagement-swapNonprofitButtonText-textDecoration, underline);\n font-family: var(--beam-SubscriptionManagement-swapNonprofitButtonText-fontFamily, inherit);\n font-style: var(--beam-SubscriptionManagement-swapNonprofitButtonText-fontStyle, inherit);\n font-weight: var(--beam-SubscriptionManagement-swapNonprofitButtonText-fontWeight, inherit);\n line-height: var(--beam-SubscriptionManagement-swapNonprofitButtonText-lineHeight, inherit);\n background: none;\n border: none;\n cursor: pointer;\n }\n .sub-widget-container {\n background-color: var(--beam-SubscriptionManagement-widgetContainer-backgroundColor, inherit);\n border: 1px solid var(--beam-SubscriptionManagement-widgetContainer-borderColor, #d5d5d5);\n border-radius: var(--beam-SubscriptionManagement-widgetContainer-borderRadius, 4px);\n overflow: hidden; /* maintain clean border-radius */\n padding: var(--beam-SubscriptionManagement-widgetContainer-padding, 15px);\n max-width: var(--beam-SubscriptionManagement-widgetContainer-maxWidth, 800px);\n }\n }`,\n ];\n\n render() {\n let content;\n\n if (this.subscriptionDataController.loading || this.eligibleNonprofitsDataController.loading) {\n content = \"\";\n }\n\n if ((this.subscriptionDataController.error || this.eligibleNonprofitsDataController.error) && this.debug) {\n if (this.subscriptionDataController.error !== null) {\n return _errorMessage({ error: this.subscriptionDataController.error });\n } else if (this.eligibleNonprofitsDataController.error !== null) {\n return _errorMessage({ error: this.eligibleNonprofitsDataController.error });\n }\n } else {\n content = \"\";\n }\n\n if (this.activeWidget === \"redeem-transaction\") {\n content = html` <beam-redeem-transaction\n part=\"redeem-transaction\"\n storeId=\"${this.storeId}\"\n subscriptionId=\"${this.subscriptionId}\"\n nonprofitId=${this.nonprofitId}\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n postalCode=\"${this.postalCode}\"\n countryCode=\"${this.countryCode}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n @beamnonprofitselect=\"${(event: Event) => {\n if (!(event instanceof BeamNonprofitSelectEvent)) return; // TS guard\n const { selectedNonprofitId } = event.detail;\n this.nonprofitId = selectedNonprofitId ?? null;\n this.activeWidget = \"impact-overview\";\n }}\"\n ></beam-redeem-transaction>`;\n } else if (this.activeWidget === \"impact-overview\") {\n content = html`\n <beam-impact-overview\n part=\"impact-overview\"\n baseUrl=\"${this.baseUrl}\"\n apiKey=\"${this.apiKey}\"\n userId=\"${this.userId}\"\n nonprofitId=\"${this.nonprofitId}\"\n lang=\"${this.lang}\"\n ?debug=\"${this.debug}\"\n ></beam-impact-overview>\n `;\n }\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n <div class=\"sub-widget-container\">${content}</div>\n ${this.renderSwapNonprofitButton()}\n `;\n }\n}\n\ndefineCustomElement(BeamSubscriptionManagement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-subscription-management\": BeamSubscriptionManagement;\n }\n}\n"],"names":["strings","brandName","m","h","e","l","n","t","o","i","a","d","BeamSubscriptionManagement","LitElement","DEFAULT_BASE_URL","AsyncController","MissingConfig","enforceConfig","res","postChainEligibleNonprofitsForCart","result","postFindOrCreateSubscription","html","defaults","remoteConfig","config","_cssVariableMap","content","_errorMessage","event","BeamNonprofitSelectEvent","selectedNonprofitId","cssReset","css","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
|