@beamimpact/web-sdk 1.36.9 → 1.36.10
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-MLhW3eyp.esm.js → _share-dialog-dependencies-3jvcgxc-.esm.js} +2 -2
- package/dist/chunks/_share-dialog-dependencies-3jvcgxc-.esm.js.map +1 -0
- package/dist/chunks/{_share-dialog-dependencies-KMjpyJhT.esm.js → _share-dialog-dependencies-3mmhET8U.esm.js} +2 -2
- package/dist/chunks/_share-dialog-dependencies-3mmhET8U.esm.js.map +1 -0
- package/dist/chunks/{cart-contents-Z-r5GpWA.esm.d.ts → cart-contents-v6_9tRb6.esm.d.ts} +1 -1
- package/dist/chunks/{events-q1pdogmn.esm.d.ts → events-OcebkuWu.esm.d.ts} +1 -1
- package/dist/chunks/index-2d2pxFdE.esm.js +2 -0
- package/dist/chunks/index-2d2pxFdE.esm.js.map +1 -0
- package/dist/chunks/{index-DU9Zy88b.esm.d.ts → index-5daMf0rK.esm.d.ts} +1 -1
- package/dist/chunks/{index-vziJysPD.esm.d.ts → index-FnuGcS7e.esm.d.ts} +4 -4
- package/dist/chunks/index-Gz47LtoA.esm.js +2 -0
- package/dist/chunks/index-Gz47LtoA.esm.js.map +1 -0
- package/dist/chunks/{index-58VYn82f.esm.js → index-HSr3vG8C.esm.js} +2 -2
- package/dist/chunks/{index-58VYn82f.esm.js.map → index-HSr3vG8C.esm.js.map} +1 -1
- package/dist/chunks/index-HmjLoc_p.esm.js +2 -0
- package/dist/chunks/index-HmjLoc_p.esm.js.map +1 -0
- package/dist/chunks/{index-mrZj61ji.esm.d.ts → index-JwkkxR5U.esm.d.ts} +1 -1
- package/dist/chunks/{index-_XbXZetF.esm.d.ts → index-KVvZMZmn.esm.d.ts} +1 -1
- package/dist/chunks/{index-KbG1GoVy.esm.js → index-ZiApqExt.esm.js} +2 -2
- package/dist/chunks/{index-KbG1GoVy.esm.js.map → index-ZiApqExt.esm.js.map} +1 -1
- package/dist/chunks/{index-1yMQlmZQ.esm.d.ts → index-g9-z_JOJ.esm.d.ts} +1 -1
- package/dist/chunks/index-kLkFc8M_.esm.js +2 -0
- package/dist/chunks/index-kLkFc8M_.esm.js.map +1 -0
- package/dist/chunks/{index-xRdmiNwx.esm.d.ts → index-wlzifF_l.esm.d.ts} +1 -1
- package/dist/chunks/index-yWjLS42R.esm.js +2 -0
- package/dist/chunks/index-yWjLS42R.esm.js.map +1 -0
- package/dist/chunks/index-yxnSM7PZ.esm.js +2 -0
- package/dist/chunks/index-yxnSM7PZ.esm.js.map +1 -0
- package/dist/chunks/{openapi-spec-S9cYW1SA.esm.d.ts → openapi-spec-bq7eoELU.esm.d.ts} +55 -61
- package/dist/chunks/{order-page-lfbHIKul.esm.d.ts → order-page-2mptGhAC.esm.d.ts} +3 -3
- package/dist/chunks/order-page-NwFyJU-V.esm.js +2 -0
- package/dist/chunks/order-page-NwFyJU-V.esm.js.map +1 -0
- package/dist/chunks/order-page-XNVqjTGF.esm.js +2 -0
- package/dist/chunks/order-page-XNVqjTGF.esm.js.map +1 -0
- package/dist/chunks/routes-a8lsE6eZ.esm.js +2 -0
- package/dist/chunks/{routes-1-1FXngS.esm.js.map → routes-a8lsE6eZ.esm.js.map} +1 -1
- package/dist/chunks/routes-d2vC4TDa.esm.js +2 -0
- package/dist/chunks/{routes-RgILh2Qy.esm.js.map → routes-d2vC4TDa.esm.js.map} +1 -1
- package/dist/chunks/{update-cart-EVuB41Qg.esm.js → update-cart-gv6ortZ5.esm.js} +2 -2
- package/dist/chunks/{update-cart-EVuB41Qg.esm.js.map → update-cart-gv6ortZ5.esm.js.map} +1 -1
- package/dist/chunks/{update-cart-9-QjPC1E.esm.d.ts → update-cart-kuufrFCv.esm.d.ts} +1 -1
- package/dist/chunks/{update-cart-V2ysW2LO.esm.js → update-cart-p84B0Ga6.esm.js} +2 -2
- package/dist/chunks/{update-cart-V2ysW2LO.esm.js.map → update-cart-p84B0Ga6.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 +3 -3
- package/dist/components/impact-overview.esm.js.map +1 -1
- package/dist/components/impact-overview.js +3 -3
- package/dist/components/impact-overview.js.map +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 +12 -4
- package/dist/components/post-purchase.esm.js +3 -3
- package/dist/components/post-purchase.esm.js.map +1 -1
- package/dist/components/post-purchase.js +3 -3
- package/dist/components/post-purchase.js.map +1 -1
- package/dist/components/redeem-transaction.d.ts +4 -3
- package/dist/components/redeem-transaction.esm.js +3 -3
- package/dist/components/redeem-transaction.esm.js.map +1 -1
- package/dist/components/redeem-transaction.js +3 -3
- package/dist/components/redeem-transaction.js.map +1 -1
- package/dist/components/select-nonprofit.d.ts +3 -3
- package/dist/components/select-nonprofit.esm.js +12 -12
- package/dist/components/select-nonprofit.esm.js.map +1 -1
- package/dist/components/select-nonprofit.js +12 -12
- package/dist/components/select-nonprofit.js.map +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 -3
- package/dist/components/subscription-management.esm.js +8 -6
- package/dist/components/subscription-management.esm.js.map +1 -1
- package/dist/components/subscription-management.js +8 -6
- 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/session.esm.js +1 -1
- package/dist/integrations/session.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/dist/utils/local-storage.esm.js +1 -1
- package/dist/utils/local-storage.esm.js.map +1 -1
- package/dist/utils/local-storage.js +1 -1
- package/dist/utils/local-storage.js.map +1 -1
- package/dist/utils/remote-session.esm.js +1 -1
- package/dist/utils/remote-session.esm.js.map +1 -1
- package/dist/utils/remote-session.js +1 -1
- package/dist/utils/remote-session.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/_share-dialog-dependencies-KMjpyJhT.esm.js.map +0 -1
- package/dist/chunks/_share-dialog-dependencies-MLhW3eyp.esm.js.map +0 -1
- package/dist/chunks/index-0XoQisEb.esm.js +0 -2
- package/dist/chunks/index-0XoQisEb.esm.js.map +0 -1
- package/dist/chunks/index-44M_qqUx.esm.js +0 -2
- package/dist/chunks/index-44M_qqUx.esm.js.map +0 -1
- package/dist/chunks/index-8Rkw987L.esm.js +0 -2
- package/dist/chunks/index-8Rkw987L.esm.js.map +0 -1
- package/dist/chunks/index-YN68B9ro.esm.js +0 -2
- package/dist/chunks/index-YN68B9ro.esm.js.map +0 -1
- package/dist/chunks/index-nb5G3fNW.esm.js +0 -2
- package/dist/chunks/index-nb5G3fNW.esm.js.map +0 -1
- package/dist/chunks/index-oCRI089I.esm.js +0 -2
- package/dist/chunks/index-oCRI089I.esm.js.map +0 -1
- package/dist/chunks/order-page-OFWAlLqS.esm.js +0 -2
- package/dist/chunks/order-page-OFWAlLqS.esm.js.map +0 -1
- package/dist/chunks/order-page-zZ0JffzK.esm.js +0 -2
- package/dist/chunks/order-page-zZ0JffzK.esm.js.map +0 -1
- package/dist/chunks/routes-1-1FXngS.esm.js +0 -2
- package/dist/chunks/routes-RgILh2Qy.esm.js +0 -2
|
@@ -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 { 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\", \"email\", \"cartTotal\", \"currencyCode\", \"lang\"];\nconst OPTIONAL_DATA_PROPS = [\"storeId\", \"postalCode\", \"countryCode\", \"cart\", \"discountCodes\"];\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 @property({ type: String })\n public email!: 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 enforceConfig(REQUIRED_DATA_PROPS, this);\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 handlePostTransaction = async () => {\n enforceConfig(REQUIRED_DATA_PROPS, this);\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,\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","enforceConfig","res","postChainEligibleNonprofitsForCart","result","postTransaction","deleteCookieValue","BEAM_CART_COOKIE_NAME","BeamOrderCreatedEvent","AsyncController","_changedProperties","getCookieValue","previousPropertyValues","p","_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, 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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"}
|
|
@@ -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-v6_9tRb6.esm.js';
|
|
9
9
|
import { L as LANGUAGES } from '../chunks/types-aju0qrRe.esm.js';
|
|
10
|
-
import '../chunks/openapi-spec-
|
|
10
|
+
import '../chunks/openapi-spec-bq7eoELU.esm.js';
|
|
11
11
|
|
|
12
12
|
interface TransactionRequiredConfig {
|
|
13
13
|
apiKey: string;
|
|
@@ -66,12 +66,13 @@ declare class BeamRedeemTransaction extends LitElement {
|
|
|
66
66
|
get allowChange(): boolean;
|
|
67
67
|
get allowSubmit(): boolean;
|
|
68
68
|
handleSubmit: () => Promise<void>;
|
|
69
|
+
private get shouldUseStoredSelection();
|
|
69
70
|
evaluateBreakPoints: lodash.DebouncedFuncLeading<() => void>;
|
|
70
71
|
get cssVariables(): any;
|
|
71
72
|
static styles: lit.CSSResult[];
|
|
72
73
|
private handleChooseClick;
|
|
73
74
|
get shouldCollapse(): boolean;
|
|
74
|
-
protected render(): lit_html.TemplateResult<1
|
|
75
|
+
protected render(): "" | lit_html.TemplateResult<1>;
|
|
75
76
|
}
|
|
76
77
|
declare global {
|
|
77
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
|
|
1
|
+
import{y as m,m as y,f as $,g as c,t as k,h as I,q as v,p as N,k as D}from"../chunks/lit-yVXn5Cbs.esm.js";import{d as z}from"../chunks/lodash-P8OIs-at.esm.js";import{c as L,d as E,b as U,e as x,A as B,f as w,a as W,_ as C}from"../chunks/enforce-config-qna7hEL6.esm.js";import{D as A,b as P,i as M,u as F,S as K}from"../chunks/routes-d2vC4TDa.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"
|
|
@@ -13,7 +13,7 @@ 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 z}from"../ch
|
|
|
13
13
|
/>
|
|
14
14
|
</g>
|
|
15
15
|
</svg>
|
|
16
|
-
`,f={en:{beamAttribution:()=>"Powered by Beam",ctaTitle:()=>"Choose your impact",ctaMessage:({donationPercentage:i="1%"})=>`Select a nonprofit and ${i} of your purchase will be donated, at no extra cost.`,submitButtonText:()=>"Confirm",submitButtonTextCompleted:()=>"Confirmed!",chooseButtonText:()=>"Choose"},fr:{beamAttribution:()=>"Optimis\xE9 par Beam",ctaTitle:()=>"Choisissez votre cause",ctaMessage:({donationPercentage:i="1%"})=>`Choisissez un organisme \xE0 but non lucratif et ${i}% lui sera vers\xE9 en votre nom, sans frais suppl\xE9mentaires.`,submitButtonText:()=>"Confirmer",submitButtonTextCompleted:()=>"Confirm\xE9!",chooseButtonText:()=>"Choisissez"},de:{beamAttribution:()=>"Unterst\xFCtzt von Beam",ctaTitle:()=>"W\xE4hle deinen Impact",ctaMessage:({donationPercentage:i="1%"}={})=>`W\xE4hle eine der gemeinn\xFCtzigen Organisationen und spende ${i} deines Einkaufs ohne zus\xE4tzliche Kosten`,submitButtonText:()=>"Best\xE4tigen",submitButtonTextCompleted:()=>"Best\xE4tigt!",chooseButtonText:()=>"W\xE4hlen"},es:{ctaTitle:()=>"Elige tu contribuci\xF3n",ctaMessage:({donationPercentage:i="1%"})=>`Elige una organizaci\xF3n sin fines de lucro y donaremos ${i} de tu compra sin coste adicional.`,beamAttribution:()=>"Ofrecido por Beam",submitButtonText:()=>"Confirmar",submitButtonTextCompleted:()=>"\xA1Confirmado!",chooseButtonText:()=>"Elige"},it:{ctaTitle:()=>"Scegli dove fare la differenza",ctaMessage:({donationPercentage:i="1%"})=>`Seleziona un'organizzazione no-profit a cui devolvere l\u2019${i} del tuo acquisto, senza costi aggiuntivi`,beamAttribution:()=>"Gestito da Beam",submitButtonText:()=>"Confermare",submitButtonTextCompleted:()=>"Confermato!",chooseButtonText:()=>"Scegli"},pl:{beamAttribution:()=>"Wspierany przez Beam",ctaTitle:()=>"Wybierz inicjatyw\u0119, kt\xF3r\u0105 chcesz wesprze\u0107",ctaMessage:({donationPercentage:i="1%"})=>`Wybierz organizacj\u0119, kt\xF3rej przeka\u017Cesz ${i} warto\u015Bci Twoich zakup\xF3w \u2013 bez \u017Cadnych dodatkowych koszt\xF3w!`,submitButtonText:()=>"Zatwierd\u017A",submitButtonTextCompleted:()=>"Zatwierdzono!",chooseButtonText:()=>"Wybierz"}};var Q=Object.defineProperty,X=Object.getOwnPropertyDescriptor,s=(i,e,t,o)=>{for(var a=o>1?void 0:o?X(e,t):e,l=i.length-1,d;l>=0;l--)(d=i[l])&&(a=(o?d(e,t,a):d(a))||a);return o&&a&&Q(e,t,a),a};class n extends I{constructor(){super(...arguments),this.baseUrl=A,this.lang="en",this.debug=!1,this.isMobile=window.innerWidth<768,this.didUserExpandNonprofits=!1,this.getChainNonprofits=async()=>{if(W(["transactionId","subscriptionId"],this),!this.hasCorrectTransactionConfig&&!this.hasCorrectSubscriptionConfig)throw new q;const e=await P({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{storeId:this.storeId,postalCode:this.postalCode,countryCode:this.countryCode,cart:this.cart??void 0,widgetName:"redeem-transaction",version:"1.0.0",lang:this.configLang}});return e.store?.id&&e.store.id!==this.storeId&&(this.storeId=e.store.id),this.localStorage.setItemJson("chainNonprofits",{createdAt:new Date,data:e}),e},this.updateNonprofitIdForRecord=async({selectedNonprofitId:e})=>this.transactionId?this.putTransaction({selectedNonprofitId:e}):this.subscriptionId?this.putSubscription({selectedNonprofitId:e}):null,this.putTransaction=async({selectedNonprofitId:e})=>(x(["apiKey","transactionId"],this),M({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},pathParams:{transactionId:Number(this.transactionId)},requestBody:{nonprofitId:e}})),this.putSubscription=async({selectedNonprofitId:e})=>(x(["apiKey","subscriptionId"],this),F({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{remoteSubscriptionId:this.subscriptionId,nonprofitId:e}})),this.nonprofitListDataController=new B(this,this.getChainNonprofits),this.selectionDataController=new B(this,this.updateNonprofitIdForRecord),this.localStorage=H(this),this.makeHandleSelect=(e,t,o)=>async a=>{if(!this.allowChange)return;const l=this.selectedNonprofitId;if(a instanceof KeyboardEvent){let d=null;switch(a.key){case"ArrowUp":case"ArrowLeft":t===0?d=o[o.length-1]:d=o[t-1],a.preventDefault();break;case"ArrowRight":case"ArrowDown":t===o.length-1?d=o[0]:d=o[t+1],a.preventDefault();break;case"Enter":case" ":a.preventDefault();break;default:return}if(d){const b=this.renderRoot.querySelector(`[data-value="${d.nonprofit.id}"]`);b!==null&&(b.tabIndex=0,b.focus());return}}if(a.currentTarget instanceof HTMLElement){if(l===e)return;this.selectedNonprofitId=e}},this.handleSubmit=async()=>{const{selectedNonprofitId:e}=this;if(!this.allowSubmit||e==null)return;await this.selectionDataController.exec({selectedNonprofitId:e}),this.localStorage.setItem("nonprofit",e);const t=this.nonprofitListDataController?.data?.nonprofits.find(o=>o.nonprofit.id===e);this.dispatchEvent(new J({selectedNonprofitId:e,nonprofitName:t?.nonprofit.name}))},this.evaluateBreakPoints=D(()=>{this.isMobile=window.innerWidth<768},50,{maxWait:50,leading:!0})}get configLang(){return K[this.lang]||"en"}get hasCorrectTransactionConfig(){return w(["apiKey","transactionId"],this)}get hasCorrectSubscriptionConfig(){return w(["apiKey","subscriptionId"],this)}connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this.evaluateBreakPoints)}async firstUpdated(e){await this.restoreStateFromCache()}async updated(e){const t=["baseUrl","storeId","apiKey","countryCode","postalCode","lang"];for(const o of t)if(e.has(o)){await this.nonprofitListDataController.exec();break}}disconnectedCallback(){super.disconnectedCallback()}restoreStateFromCache(){x(["apiKey"],this),this.selectedNonprofitId=parseInt(this.localStorage.getItem("nonprofit")||"")||void 0;try{const{createdAt:e=0,data:t}=this.localStorage.getItemJson("chainNonprofits")||{},o=2*60*60*1e3;new Date(e).valueOf()+o>new Date().valueOf()&&(this.nonprofitListDataController.data=t,this.nonprofitListDataController.loading=!1)}catch{}}get allowChange(){return this.selectionDataController.data==null&&!this.selectionDataController.loading}get allowSubmit(){return!!(this.selectedNonprofitId&&this.allowChange)}get cssVariables(){const e={"--beam-fontFamily":"inherit","--beam-fontStyle":"inherit","--beam-fontSize":"inherit","--beam-textColor":"inherit","--beam-backgroundColor":"inherit",...O,...j,"--beam-RedeemTransaction-maxWidth":"1000px","--beam-RedeemTransaction-submitButton-color":"#fff","--beam-RedeemTransaction-submitButton-hover-color":"#fff","--beam-RedeemTransaction-submitButton-disabled-color":"#fff","--beam-RedeemTransaction-submitButton-backgroundColor":"#333","--beam-RedeemTransaction-submitButton-hover-backgroundColor":"#222","--beam-RedeemTransaction-submitButton-disabled-backgroundColor":"#767676","--beam-RedeemTransaction-submitButton-borderColor":"#333","--beam-RedeemTransaction-submitButton-hover-borderColor":"#222","--beam-RedeemTransaction-submitButton-disabled-borderColor":"#767676","--beam-RedeemTransaction-submitButton-fontSize":"14px","--beam-RedeemTransaction-submitButton-fontWeight":"inherit","--beam-RedeemTransaction-submitButton-fontFamily":"inherit","--beam-RedeemTransaction-submitButton-textTransform":"none","--beam-RedeemTransaction-submitButton-borderRadius":"0px","--beam-RedeemTransaction-submitButton-padding":"15px 30px","--beam-RedeemTransaction-submitButton-position":"right","--beam-RedeemTransaction-submitButton-positionRight-width":"auto","--beam-RedeemTransaction-submitButton-positionBottom-width":"100%","--beam-RedeemTransaction-submitButton-positionBottom-marginTop":"10px","--beam-RedeemTransaction-checkmark-color":"transparent","--beam-RedeemTransaction-checkmark-selected-color":"#fff","--beam-RedeemTransaction-checkmark-hover-color":"#fff","--beam-RedeemTransaction-checkmark-backgroundColor":"transparent","--beam-RedeemTransaction-checkmark-selected-backgroundColor":"#333","--beam-RedeemTransaction-checkmark-hover-backgroundColor":"#d9d9d9","--beam-RedeemTransaction-checkmark-borderColor":"transparent","--beam-RedeemTransaction-checkmark-selected-borderColor":"#333","--beam-RedeemTransaction-checkmark-hover-borderColor":"#d9d9d9","--beam-RedeemTransaction-options-minWidth":"250px","--beam-RedeemTransaction-options-columnCount":"2","--beam-RedeemTransaction-options-borderRadius":"0px","--beam-RedeemTransaction-options-borderWidth":"1px","--beam-RedeemTransaction-options-selected-borderWidth":"2px","--beam-RedeemTransaction-options-focus-borderWidth":"1px","--beam-RedeemTransaction-options-image-borderRadius":"0px","--beam-RedeemTransaction-options-borderColor":"#d9d9d9","--beam-RedeemTransaction-options-selected-borderColor":"currentColor","--beam-RedeemTransaction-options-hover-borderColor":"#ccc","--beam-RedeemTransaction-options-backgroundColor":"transparent","--beam-RedeemTransaction-options-selected-backgroundColor":"transparent","--beam-RedeemTransaction-options-hover-backgroundColor":"#f1f1f1","--beam-RedeemTransaction-options-marginTop":"15px",...h("--beam-RedeemTransaction-title",{fontSize:"1.25em",fontWeight:"bold"}),...h("--beam-RedeemTransaction-description",{marginTop:"0.5em"}),...h("--beam-RedeemTransaction-details-cause",{fontSize:"1em",fontWeight:"bold"}),...h("--beam-RedeemTransaction-details-impactDescription",{fontSize:"0.85em",marginTop:"10px"}),"--beam-RedeemTransaction-details-nonprofitName-fontWeight":"bold","--beam-RedeemTransaction-details-nonprofitName-fontStyle":"inherit","--beam-RedeemTransaction-details-fundingProgress-marginTop":"10px",...h("--beam-RedeemTransaction-details-fundingProgressLabel",{fontSize:"0.85em"}),"--beam-RedeemTransaction-cardStyle":"'image'","--beam-RedeemTransaction-options-icon-padding":"0px","--beam-RedeemTransaction-options-collapseNonprofits-mobile":"false","--beam-RedeemTransaction-options-collapseNonprofits-desktop":"false"},t=this.nonprofitListDataController?.data?.config?.web?.theme||{},o={...e,...t};return Object.assign(Object.create({toCSS(){return U(this)}}),o)}handleChooseClick(){this.didUserExpandNonprofits=!0}get shouldCollapse(){const e=this.cssVariables["--beam-RedeemTransaction-options-collapseNonprofits-mobile"]==="true",t=this.cssVariables["--beam-RedeemTransaction-options-collapseNonprofits-desktop"]==="true";return this.isMobile&&e||!this.isMobile&&t}render(){const{selectedNonprofitId:e}=this,{data:t,loading:o}=this.nonprofitListDataController;if(o&&!t)return _();if(this.nonprofitListDataController.error)return this.debug?C({error:this.nonprofitListDataController.error}):"";if(this.selectionDataController.error&&this.debug)return C({error:this.selectionDataController.error});if(t==null)return this.debug?C({error:new V("No data")}):"";const a=t?.nonprofits||[],l=a.find(r=>r.nonprofit.id===e)||null,d=this.cssVariables["--beam-RedeemTransaction-cardStyle"]==="'icon'",b=this.cssVariables["--beam-RedeemTransaction-submitButton-position"],R=this.isMobile&&b==="bottom"?"positionBottom":"positionRight";return m`
|
|
16
|
+
`,f={en:{beamAttribution:()=>"Powered by Beam",ctaTitle:()=>"Choose your impact",ctaMessage:({donationPercentage:i="1%"})=>`Select a nonprofit and ${i} of your purchase will be donated, at no extra cost.`,submitButtonText:()=>"Confirm",submitButtonTextCompleted:()=>"Confirmed!",chooseButtonText:()=>"Choose"},fr:{beamAttribution:()=>"Optimis\xE9 par Beam",ctaTitle:()=>"Choisissez votre cause",ctaMessage:({donationPercentage:i="1%"})=>`Choisissez un organisme \xE0 but non lucratif et ${i}% lui sera vers\xE9 en votre nom, sans frais suppl\xE9mentaires.`,submitButtonText:()=>"Confirmer",submitButtonTextCompleted:()=>"Confirm\xE9!",chooseButtonText:()=>"Choisissez"},de:{beamAttribution:()=>"Unterst\xFCtzt von Beam",ctaTitle:()=>"W\xE4hle deinen Impact",ctaMessage:({donationPercentage:i="1%"}={})=>`W\xE4hle eine der gemeinn\xFCtzigen Organisationen und spende ${i} deines Einkaufs ohne zus\xE4tzliche Kosten`,submitButtonText:()=>"Best\xE4tigen",submitButtonTextCompleted:()=>"Best\xE4tigt!",chooseButtonText:()=>"W\xE4hlen"},es:{ctaTitle:()=>"Elige tu contribuci\xF3n",ctaMessage:({donationPercentage:i="1%"})=>`Elige una organizaci\xF3n sin fines de lucro y donaremos ${i} de tu compra sin coste adicional.`,beamAttribution:()=>"Ofrecido por Beam",submitButtonText:()=>"Confirmar",submitButtonTextCompleted:()=>"\xA1Confirmado!",chooseButtonText:()=>"Elige"},it:{ctaTitle:()=>"Scegli dove fare la differenza",ctaMessage:({donationPercentage:i="1%"})=>`Seleziona un'organizzazione no-profit a cui devolvere l\u2019${i} del tuo acquisto, senza costi aggiuntivi`,beamAttribution:()=>"Gestito da Beam",submitButtonText:()=>"Confermare",submitButtonTextCompleted:()=>"Confermato!",chooseButtonText:()=>"Scegli"},pl:{beamAttribution:()=>"Wspierany przez Beam",ctaTitle:()=>"Wybierz inicjatyw\u0119, kt\xF3r\u0105 chcesz wesprze\u0107",ctaMessage:({donationPercentage:i="1%"})=>`Wybierz organizacj\u0119, kt\xF3rej przeka\u017Cesz ${i} warto\u015Bci Twoich zakup\xF3w \u2013 bez \u017Cadnych dodatkowych koszt\xF3w!`,submitButtonText:()=>"Zatwierd\u017A",submitButtonTextCompleted:()=>"Zatwierdzono!",chooseButtonText:()=>"Wybierz"}};var Q=Object.defineProperty,X=Object.getOwnPropertyDescriptor,s=(i,e,t,o)=>{for(var a=o>1?void 0:o?X(e,t):e,l=i.length-1,d;l>=0;l--)(d=i[l])&&(a=(o?d(e,t,a):d(a))||a);return o&&a&&Q(e,t,a),a};class n extends I{constructor(){super(...arguments),this.baseUrl=A,this.lang="en",this.debug=!1,this.isMobile=window.innerWidth<768,this.didUserExpandNonprofits=!1,this.getChainNonprofits=async()=>{if(U(["transactionId","subscriptionId"],this),!this.hasCorrectTransactionConfig&&!this.hasCorrectSubscriptionConfig)throw new q;const e=await P({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{storeId:this.storeId,postalCode:this.postalCode,countryCode:this.countryCode,cart:this.cart??void 0,widgetName:"redeem-transaction",version:"1.0.0",lang:this.configLang}});return e.store?.id&&e.store.id!==this.storeId&&(this.storeId=e.store.id),this.localStorage.setItemJson("chainNonprofits",{createdAt:new Date,data:e}),e},this.updateNonprofitIdForRecord=async({selectedNonprofitId:e})=>this.transactionId?this.putTransaction({selectedNonprofitId:e}):this.subscriptionId?this.putSubscription({selectedNonprofitId:e}):null,this.putTransaction=async({selectedNonprofitId:e})=>(x(["apiKey","transactionId"],this),M({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},pathParams:{transactionId:Number(this.transactionId)},requestBody:{nonprofitId:e}})),this.putSubscription=async({selectedNonprofitId:e})=>(x(["apiKey","subscriptionId"],this),F({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{remoteSubscriptionId:this.subscriptionId,nonprofitId:e}})),this.nonprofitListDataController=new B(this,this.getChainNonprofits),this.selectionDataController=new B(this,this.updateNonprofitIdForRecord),this.localStorage=H(this),this.makeHandleSelect=(e,t,o)=>async a=>{if(!this.allowChange)return;const l=this.selectedNonprofitId;if(a instanceof KeyboardEvent){let d=null;switch(a.key){case"ArrowUp":case"ArrowLeft":t===0?d=o[o.length-1]:d=o[t-1],a.preventDefault();break;case"ArrowRight":case"ArrowDown":t===o.length-1?d=o[0]:d=o[t+1],a.preventDefault();break;case"Enter":case" ":a.preventDefault();break;default:return}if(d){const b=this.renderRoot.querySelector(`[data-value="${d.nonprofit.id}"]`);b!==null&&(b.tabIndex=0,b.focus());return}}if(a.currentTarget instanceof HTMLElement){if(l===e)return;this.selectedNonprofitId=e}},this.handleSubmit=async()=>{const{selectedNonprofitId:e}=this;if(!this.allowSubmit||e==null)return;await this.selectionDataController.exec({selectedNonprofitId:e}),this.shouldUseStoredSelection&&(this.localStorage.setItem("nonprofit",e),this.localStorage.setItem("nonprofit_selected_at",new Date().toISOString()));const t=this.nonprofitListDataController?.data?.nonprofits.find(o=>o.nonprofit.id===e);this.dispatchEvent(new J({selectedNonprofitId:e,nonprofitName:t?.nonprofit.name}))},this.evaluateBreakPoints=z(()=>{this.isMobile=window.innerWidth<768},50,{maxWait:50,leading:!0})}get configLang(){return K[this.lang]||"en"}get hasCorrectTransactionConfig(){return w(["apiKey","transactionId"],this)}get hasCorrectSubscriptionConfig(){return w(["apiKey","subscriptionId"],this)}connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this.evaluateBreakPoints)}async firstUpdated(e){await this.restoreStateFromCache()}async updated(e){const t=["baseUrl","storeId","apiKey","countryCode","postalCode","lang"];for(const o of t)if(e.has(o)){await this.nonprofitListDataController.exec();break}}disconnectedCallback(){super.disconnectedCallback()}restoreStateFromCache(){x(["apiKey"],this),this.shouldUseStoredSelection&&(this.selectedNonprofitId=parseInt(this.localStorage.getItem("nonprofit")||"")||void 0);try{const{createdAt:e=0,data:t}=this.localStorage.getItemJson("chainNonprofits")||{},o=2*60*60*1e3;new Date(e).valueOf()+o>new Date().valueOf()&&(this.nonprofitListDataController.data=t,this.nonprofitListDataController.loading=!1)}catch{}}get allowChange(){return this.selectionDataController.data==null&&!this.selectionDataController.loading}get allowSubmit(){return!!(this.selectedNonprofitId&&this.allowChange)}get shouldUseStoredSelection(){return!this.subscriptionId}get cssVariables(){const e={"--beam-fontFamily":"inherit","--beam-fontStyle":"inherit","--beam-fontSize":"inherit","--beam-textColor":"inherit","--beam-backgroundColor":"inherit",...j,...O,"--beam-RedeemTransaction-maxWidth":"1000px","--beam-RedeemTransaction-submitButton-color":"#fff","--beam-RedeemTransaction-submitButton-hover-color":"#fff","--beam-RedeemTransaction-submitButton-disabled-color":"#fff","--beam-RedeemTransaction-submitButton-backgroundColor":"#333","--beam-RedeemTransaction-submitButton-hover-backgroundColor":"#222","--beam-RedeemTransaction-submitButton-disabled-backgroundColor":"#767676","--beam-RedeemTransaction-submitButton-borderColor":"#333","--beam-RedeemTransaction-submitButton-hover-borderColor":"#222","--beam-RedeemTransaction-submitButton-disabled-borderColor":"#767676","--beam-RedeemTransaction-submitButton-fontSize":"14px","--beam-RedeemTransaction-submitButton-fontWeight":"inherit","--beam-RedeemTransaction-submitButton-fontFamily":"inherit","--beam-RedeemTransaction-submitButton-textTransform":"none","--beam-RedeemTransaction-submitButton-borderRadius":"0px","--beam-RedeemTransaction-submitButton-padding":"15px 30px","--beam-RedeemTransaction-submitButton-position":"right","--beam-RedeemTransaction-submitButton-positionRight-width":"auto","--beam-RedeemTransaction-submitButton-positionBottom-width":"100%","--beam-RedeemTransaction-submitButton-positionBottom-marginTop":"10px","--beam-RedeemTransaction-checkmark-color":"transparent","--beam-RedeemTransaction-checkmark-selected-color":"#fff","--beam-RedeemTransaction-checkmark-hover-color":"#fff","--beam-RedeemTransaction-checkmark-backgroundColor":"transparent","--beam-RedeemTransaction-checkmark-selected-backgroundColor":"#333","--beam-RedeemTransaction-checkmark-hover-backgroundColor":"#d9d9d9","--beam-RedeemTransaction-checkmark-borderColor":"transparent","--beam-RedeemTransaction-checkmark-selected-borderColor":"#333","--beam-RedeemTransaction-checkmark-hover-borderColor":"#d9d9d9","--beam-RedeemTransaction-options-minWidth":"250px","--beam-RedeemTransaction-options-columnCount":"2","--beam-RedeemTransaction-options-borderRadius":"0px","--beam-RedeemTransaction-options-borderWidth":"1px","--beam-RedeemTransaction-options-selected-borderWidth":"2px","--beam-RedeemTransaction-options-focus-borderWidth":"1px","--beam-RedeemTransaction-options-image-borderRadius":"0px","--beam-RedeemTransaction-options-borderColor":"#d9d9d9","--beam-RedeemTransaction-options-selected-borderColor":"currentColor","--beam-RedeemTransaction-options-hover-borderColor":"#ccc","--beam-RedeemTransaction-options-backgroundColor":"transparent","--beam-RedeemTransaction-options-selected-backgroundColor":"transparent","--beam-RedeemTransaction-options-hover-backgroundColor":"#f1f1f1","--beam-RedeemTransaction-options-marginTop":"15px",...h("--beam-RedeemTransaction-title",{fontSize:"1.25em",fontWeight:"bold"}),...h("--beam-RedeemTransaction-description",{marginTop:"0.5em"}),...h("--beam-RedeemTransaction-details-cause",{fontSize:"1em",fontWeight:"bold"}),...h("--beam-RedeemTransaction-details-impactDescription",{fontSize:"0.85em",marginTop:"10px"}),"--beam-RedeemTransaction-details-nonprofitName-fontWeight":"bold","--beam-RedeemTransaction-details-nonprofitName-fontStyle":"inherit","--beam-RedeemTransaction-details-fundingProgress-marginTop":"10px",...h("--beam-RedeemTransaction-details-fundingProgressLabel",{fontSize:"0.85em"}),"--beam-RedeemTransaction-cardStyle":"'image'","--beam-RedeemTransaction-options-icon-padding":"0px","--beam-RedeemTransaction-options-collapseNonprofits-mobile":"false","--beam-RedeemTransaction-options-collapseNonprofits-desktop":"false"},t=this.nonprofitListDataController?.data?.config?.web?.theme||{},o={...e,...t};return Object.assign(Object.create({toCSS(){return W(this)}}),o)}handleChooseClick(){this.didUserExpandNonprofits=!0}get shouldCollapse(){const e=this.cssVariables["--beam-RedeemTransaction-options-collapseNonprofits-mobile"]==="true",t=this.cssVariables["--beam-RedeemTransaction-options-collapseNonprofits-desktop"]==="true";return this.isMobile&&e||!this.isMobile&&t}render(){const{selectedNonprofitId:e}=this,{data:t,loading:o}=this.nonprofitListDataController;if(o&&!t)return _();if(this.nonprofitListDataController.error)return this.debug?C({error:this.nonprofitListDataController.error}):"";if(this.selectionDataController.error&&this.debug)return C({error:this.selectionDataController.error});if(t==null)return this.debug?C({error:new V("No data")}):"";const a=t?.nonprofits||[],l=a.find(r=>r.nonprofit.id===e)||null,d=this.cssVariables["--beam-RedeemTransaction-cardStyle"]==="'icon'",b=this.cssVariables["--beam-RedeemTransaction-submitButton-position"],R=this.isMobile&&b==="bottom"?"positionBottom":"positionRight";return m`
|
|
17
17
|
<style>
|
|
18
18
|
:host {
|
|
19
19
|
${this.cssVariables.toCSS()}
|
|
@@ -108,7 +108,7 @@ 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 z}from"../ch
|
|
|
108
108
|
${p(this.configLang,r.nonprofit.cause||"")}
|
|
109
109
|
</div>
|
|
110
110
|
<p class="details-impactDescription" style="flex: 1 1;">
|
|
111
|
-
${
|
|
111
|
+
${D(p(this.configLang,r.impact.description||""))}
|
|
112
112
|
</p>
|
|
113
113
|
<div
|
|
114
114
|
style="display: flex; margin-top: var(--beam-RedeemTransaction-details-fundingProgress-marginTop); align-items: center;"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redeem-transaction.esm.js","sources":["../../src/shared/fragments/checkbox.ts","../../src/components/redeem-transaction/strings.ts","../../src/components/redeem-transaction/index.ts"],"sourcesContent":["import { html } from \"lit\";\nimport { styleMap } from \"lit/directives/style-map.js\";\n\nexport const _checkbox = ({ height = \"1em\", width = \"1em\" } = {}) =>\n html`\n <svg\n style=\"${styleMap({ height, width, position: \"relative\", bottom: \"0\" })}\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 78.369 78.369\"\n >\n <g>\n <path\n d=\"M78.049,19.015L29.458,67.606c-0.428,0.428-1.121,0.428-1.548,0L0.32,40.015c-0.427-0.426-0.427-1.119,0-1.547l6.704-6.704\n c0.428-0.427,1.121-0.427,1.548,0l20.113,20.112l41.113-41.113c0.429-0.427,1.12-0.427,1.548,0l6.703,6.704\n C78.477,17.894,78.477,18.586,78.049,19.015z\"\n style=\"fill: currentColor\"\n />\n </g>\n </svg>\n `;\n","export const strings = {\n en: {\n beamAttribution: () => `Powered by Beam`,\n ctaTitle: () => `Choose your impact`,\n ctaMessage: ({ donationPercentage = \"1%\" }) =>\n `Select a nonprofit and ${donationPercentage} of your purchase will be donated, at no extra cost.`,\n submitButtonText: () => `Confirm`,\n submitButtonTextCompleted: () => `Confirmed!`,\n chooseButtonText: () => `Choose`,\n },\n fr: {\n beamAttribution: () => `Optimisé par Beam`,\n ctaTitle: () => `Choisissez votre cause`,\n ctaMessage: ({ donationPercentage = \"1%\" }) =>\n `Choisissez un organisme à but non lucratif et ${donationPercentage}% lui sera versé en votre nom, sans frais supplémentaires.`,\n submitButtonText: () => `Confirmer`,\n submitButtonTextCompleted: () => `Confirmé!`,\n chooseButtonText: () => `Choisissez`,\n },\n de: {\n beamAttribution: () => `Unterstützt von Beam`,\n ctaTitle: () => `Wähle deinen Impact`,\n ctaMessage: ({ donationPercentage = \"1%\" } = {}) =>\n `Wähle eine der gemeinnützigen Organisationen und spende ${donationPercentage} deines Einkaufs ohne zusätzliche Kosten`,\n submitButtonText: () => \"Bestätigen\",\n submitButtonTextCompleted: () => `Bestätigt!`,\n chooseButtonText: () => `Wählen`,\n },\n es: {\n ctaTitle: () => \"Elige tu contribución\",\n ctaMessage: ({ donationPercentage = \"1%\" }) =>\n `Elige una organización sin fines de lucro y donaremos ${donationPercentage} de tu compra sin coste adicional.`,\n beamAttribution: () => \"Ofrecido por Beam\",\n submitButtonText: () => \"Confirmar\",\n submitButtonTextCompleted: () => \"¡Confirmado!\",\n chooseButtonText: () => `Elige`,\n },\n it: {\n ctaTitle: () => \"Scegli dove fare la differenza\",\n ctaMessage: ({ donationPercentage = \"1%\" }) =>\n `Seleziona un'organizzazione no-profit a cui devolvere l’${donationPercentage} del tuo acquisto, senza costi aggiuntivi`,\n beamAttribution: () => \"Gestito da Beam\",\n submitButtonText: () => \"Confermare\",\n submitButtonTextCompleted: () => \"Confermato!\",\n chooseButtonText: () => `Scegli`,\n },\n pl: {\n beamAttribution: () => `Wspierany przez Beam`,\n ctaTitle: () => `Wybierz inicjatywę, którą chcesz wesprzeć`,\n ctaMessage: ({ donationPercentage = \"1%\" }) =>\n `Wybierz organizację, której przekażesz ${donationPercentage} wartości Twoich zakupów – bez żadnych dodatkowych kosztów!`,\n submitButtonText: () => `Zatwierdź`,\n submitButtonTextCompleted: () => `Zatwierdzono!`,\n chooseButtonText: () => `Wybierz`,\n },\n};\n","import { css, html, LitElement, PropertyValues } from \"lit\";\nimport { repeat } from \"lit/directives/repeat.js\";\nimport { property } from \"lit/decorators/property.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport debounce from \"lodash-es/debounce\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES } from \"../../api-sdk/constants\";\nimport \"../../shared/components/progress-bar\";\nimport \"../beam-partner-logos\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { _loading } from \"../../shared/fragments/loading-template\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { defineCustomText, useCustomText } from \"../../shared/fragments/custom-text\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { _cssVariableMap } from \"../../shared/fragments/css-variable-map\";\nimport {\n enforceConfig,\n areRequiredKeysDefined,\n checkForInvalidAttributeCombinations,\n} from \"../../shared/enforce-config\";\nimport { BeamError, MissingConfig } from \"../../utils/beam-errors\";\nimport { TId, TNumericId } from \"../../shared/types\";\nimport { TCart } from \"../../shared/cart-contents\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { cssCardGrid } from \"../../shared/fragments/css-card-grid\";\nimport { _checkbox } from \"../../shared/fragments/checkbox\";\nimport { postChainEligibleNonprofitsForCart, putTransaction, updateSubscription } from \"../../api-sdk/v3/routes\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { BeamNonprofitSelectEvent } from \"../../utils/events\";\nimport { localizeUserString } from \"../../shared/localize\";\nimport { progressBarConfigDefaults } from \"../../shared/components/progress-bar\";\nimport { partnerLogosConfigDefaults } from \"../beam-partner-logos\";\nimport { strings } from \"./strings\";\n\ninterface TransactionRequiredConfig {\n apiKey: string;\n transactionId: TId;\n}\n\ninterface SubscriptionRequiredConfig {\n apiKey: string;\n subscriptionId: string;\n}\n\ntype TRequiredConfig = TransactionRequiredConfig | SubscriptionRequiredConfig;\n\nexport class BeamRedeemTransaction extends LitElement {\n static tagName = \"beam-redeem-transaction\";\n\n @property({ type: String }) public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String }) public apiKey?: TRequiredConfig[\"apiKey\"];\n\n @property({ type: Number }) public transactionId?: TransactionRequiredConfig[\"transactionId\"];\n\n @property({ type: String }) public subscriptionId?: SubscriptionRequiredConfig[\"subscriptionId\"];\n\n @property({ type: Number }) public storeId?: TNumericId;\n\n @property({ type: String }) public countryCode?: string;\n\n @property({ type: String }) public postalCode?: string;\n\n @property({ type: Object }) public cart?: TCart;\n\n @property({ type: Number, reflect: true })\n public selectedNonprofitId?: TNumericId;\n\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n\n @property({ type: Boolean }) public debug = false;\n\n @state() private isMobile = window.innerWidth < 768;\n\n @state() private didUserExpandNonprofits = false;\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n private get hasCorrectTransactionConfig(): boolean {\n const requiredKeys: (keyof TransactionRequiredConfig)[] = [\"apiKey\", \"transactionId\"];\n const isTransactionConfigCorrect = areRequiredKeysDefined(requiredKeys, this);\n return isTransactionConfigCorrect;\n }\n\n private get hasCorrectSubscriptionConfig(): boolean {\n const requiredKeys: (keyof SubscriptionRequiredConfig)[] = [\"apiKey\", \"subscriptionId\"];\n const isSubscriptionConfigCorrect = areRequiredKeysDefined(requiredKeys, this);\n return isSubscriptionConfigCorrect;\n }\n\n private getChainNonprofits = async () => {\n checkForInvalidAttributeCombinations([\"transactionId\", \"subscriptionId\"], this);\n if (!this.hasCorrectTransactionConfig && !this.hasCorrectSubscriptionConfig) {\n throw new MissingConfig();\n }\n const res = await postChainEligibleNonprofitsForCart({\n baseUrl: this.baseUrl,\n headers: { authorization: `Api-Key ${this.apiKey}` },\n requestBody: {\n storeId: this.storeId,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n cart: this.cart ?? undefined,\n widgetName: \"redeem-transaction\",\n version: \"1.0.0\",\n lang: this.configLang,\n },\n });\n\n // If store ID was not provided, get the store ID from response here\n if (res.store?.id && res.store.id !== this.storeId) {\n this.storeId = res.store.id;\n }\n\n this.localStorage.setItemJson(\"chainNonprofits\", {\n createdAt: new Date(),\n data: res,\n });\n\n return res;\n };\n\n private updateNonprofitIdForRecord = async ({ selectedNonprofitId }: { selectedNonprofitId: TNumericId }) => {\n if (this.transactionId) {\n return this.putTransaction({ selectedNonprofitId });\n } else if (this.subscriptionId) {\n return this.putSubscription({ selectedNonprofitId });\n }\n return null;\n };\n private putTransaction = async ({ selectedNonprofitId }: { selectedNonprofitId: TNumericId }) => {\n if (!enforceConfig<TransactionRequiredConfig>([\"apiKey\", \"transactionId\"], this)) {\n throw new MissingConfig();\n }\n return putTransaction({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n pathParams: {\n transactionId: Number(this.transactionId), // TODO: fix api spec for PUT transaction/:id to use string\n },\n requestBody: {\n nonprofitId: selectedNonprofitId,\n },\n });\n };\n\n // updates subscriptions nonprofitId\n private putSubscription = async ({ selectedNonprofitId }: { selectedNonprofitId: TNumericId }) => {\n if (!enforceConfig<SubscriptionRequiredConfig>([\"apiKey\", \"subscriptionId\"], this)) {\n throw new MissingConfig();\n }\n\n return updateSubscription({\n baseUrl: this.baseUrl,\n headers: { authorization: `Api-Key ${this.apiKey}` },\n requestBody: {\n remoteSubscriptionId: this.subscriptionId,\n nonprofitId: selectedNonprofitId,\n },\n });\n };\n\n private nonprofitListDataController = new AsyncController<typeof this.getChainNonprofits>(\n this,\n this.getChainNonprofits\n );\n\n private selectionDataController = new AsyncController<typeof this.updateNonprofitIdForRecord>(\n this,\n this.updateNonprofitIdForRecord\n );\n\n private localStorage = createScopedLocalStorage(this as LitElement & TRequiredConfig);\n\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener(\"resize\", this.evaluateBreakPoints);\n }\n\n async firstUpdated(_changedProperties: PropertyValues) {\n await this.restoreStateFromCache();\n }\n\n async updated(previousPropertyValues: PropertyValues) {\n // Reload nonprofit list on change of any of these props:\n // Also fires on first load as props go from undefined => value\n const requireNewDataProps = [\"baseUrl\", \"storeId\", \"apiKey\", \"countryCode\", \"postalCode\", \"lang\"];\n for (const prop of requireNewDataProps) {\n if (previousPropertyValues.has(prop)) {\n await this.nonprofitListDataController.exec();\n break;\n }\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n }\n\n private restoreStateFromCache() {\n if (!enforceConfig<TRequiredConfig>([\"apiKey\"], this)) throw new MissingConfig();\n this.selectedNonprofitId = parseInt(this.localStorage.getItem(\"nonprofit\") || \"\") || undefined;\n\n try {\n // try to restore nonprofit list if we have data and it's not too old\n // list will continue to refresh async and replace this data when ready\n const { createdAt = 0, data } =\n this.localStorage.getItemJson<{ createdAt: string; data: any }>(\"chainNonprofits\") || {};\n const cacheTtl = 2 * 60 * 60 * 1000;\n if (new Date(createdAt).valueOf() + cacheTtl > new Date().valueOf()) {\n this.nonprofitListDataController.data = data;\n this.nonprofitListDataController.loading = false;\n }\n } catch (err) {\n // ignore cache retrieval error and continue to fetch data\n }\n }\n\n /**\n * Factory for selection event handler\n *\n * Nonprofit selector implements radio-button semantics:\n * * If nothing is selected, tabbing into selector selects first card\n * * Arrow keys changes focus between cards, but doesn't select\n * * Enter/Space sets selection\n * * If a nonprofit is selected, arrow keys change focus AND selection\n * * Click sets selection\n * @param {number} id\n * @param {number} index\n * @param {{id: number}[]} nonprofits\n * @returns {(evt: Event) => void}\n */\n private makeHandleSelect =\n (id: number, index: number, nonprofits: { nonprofit: { id: number } }[]): ((event: Event) => void) =>\n async (event: Event) => {\n if (!this.allowChange) return;\n\n const currentId = this.selectedNonprofitId;\n if (event instanceof KeyboardEvent) {\n let nextFocus = null;\n switch (event.key) {\n case \"ArrowUp\":\n case \"ArrowLeft\":\n if (index === 0) {\n nextFocus = nonprofits[nonprofits.length - 1];\n } else {\n nextFocus = nonprofits[index - 1];\n }\n event.preventDefault();\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n if (index === nonprofits.length - 1) {\n nextFocus = nonprofits[0];\n } else {\n nextFocus = nonprofits[index + 1];\n }\n event.preventDefault();\n break;\n case \"Enter\":\n case \" \":\n event.preventDefault();\n break; // continue to toggle-selection block below\n default:\n return;\n }\n if (nextFocus) {\n const focusTarget = this.renderRoot.querySelector(`[data-value=\"${nextFocus.nonprofit.id}\"]`) as HTMLElement;\n if (focusTarget !== null) {\n focusTarget.tabIndex = 0;\n focusTarget.focus();\n }\n return;\n }\n }\n // Handle selection with click or Enter/Space key\n const targetEl = event.currentTarget;\n if (targetEl instanceof HTMLElement) {\n if (currentId === id) {\n // this[\"selected-nonprofit-id\"] = undefined; // unset (not supported)\n return; // no API call or localStorage change needed\n } else {\n this.selectedNonprofitId = id;\n }\n }\n };\n\n get allowChange() {\n // Disallow change if already submitted\n return this.selectionDataController.data == null && !this.selectionDataController.loading;\n }\n\n get allowSubmit() {\n // Disabled if no nonprofit has been selected yet or if submission was already received\n return Boolean(this.selectedNonprofitId && this.allowChange);\n }\n\n handleSubmit = async () => {\n const { selectedNonprofitId } = this;\n if (!this.allowSubmit || selectedNonprofitId == null) return;\n await this.selectionDataController.exec({ selectedNonprofitId });\n\n this.localStorage.setItem(\"nonprofit\", selectedNonprofitId);\n\n const selectedNonprofit = this.nonprofitListDataController?.data?.nonprofits.find(\n (np) => np.nonprofit.id === selectedNonprofitId\n );\n\n this.dispatchEvent(\n new BeamNonprofitSelectEvent({ selectedNonprofitId, nonprofitName: selectedNonprofit?.nonprofit.name })\n );\n };\n\n evaluateBreakPoints = debounce(\n () => {\n this.isMobile = window.innerWidth < 768;\n },\n 50,\n { maxWait: 50, leading: true }\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 ...partnerLogosConfigDefaults,\n ...progressBarConfigDefaults,\n \"--beam-RedeemTransaction-maxWidth\": \"1000px\",\n \"--beam-RedeemTransaction-submitButton-color\": \"#fff\",\n \"--beam-RedeemTransaction-submitButton-hover-color\": \"#fff\",\n \"--beam-RedeemTransaction-submitButton-disabled-color\": \"#fff\",\n \"--beam-RedeemTransaction-submitButton-backgroundColor\": \"#333\",\n \"--beam-RedeemTransaction-submitButton-hover-backgroundColor\": \"#222\",\n \"--beam-RedeemTransaction-submitButton-disabled-backgroundColor\": \"#767676\",\n \"--beam-RedeemTransaction-submitButton-borderColor\": \"#333\",\n \"--beam-RedeemTransaction-submitButton-hover-borderColor\": \"#222\",\n \"--beam-RedeemTransaction-submitButton-disabled-borderColor\": \"#767676\",\n \"--beam-RedeemTransaction-submitButton-fontSize\": \"14px\",\n \"--beam-RedeemTransaction-submitButton-fontWeight\": \"inherit\",\n \"--beam-RedeemTransaction-submitButton-fontFamily\": \"inherit\",\n \"--beam-RedeemTransaction-submitButton-textTransform\": \"none\",\n \"--beam-RedeemTransaction-submitButton-borderRadius\": \"0px\",\n \"--beam-RedeemTransaction-submitButton-padding\": \"15px 30px\",\n \"--beam-RedeemTransaction-submitButton-position\": \"right\" /* bottom only applies to mobile */,\n \"--beam-RedeemTransaction-submitButton-positionRight-width\": \"auto\",\n \"--beam-RedeemTransaction-submitButton-positionBottom-width\": \"100%\",\n \"--beam-RedeemTransaction-submitButton-positionBottom-marginTop\": \"10px\",\n \"--beam-RedeemTransaction-checkmark-color\": \"transparent\",\n \"--beam-RedeemTransaction-checkmark-selected-color\": \"#fff\",\n \"--beam-RedeemTransaction-checkmark-hover-color\": \"#fff\",\n \"--beam-RedeemTransaction-checkmark-backgroundColor\": \"transparent\",\n \"--beam-RedeemTransaction-checkmark-selected-backgroundColor\": \"#333\",\n \"--beam-RedeemTransaction-checkmark-hover-backgroundColor\": \"#d9d9d9\",\n \"--beam-RedeemTransaction-checkmark-borderColor\": \"transparent\",\n \"--beam-RedeemTransaction-checkmark-selected-borderColor\": \"#333\",\n \"--beam-RedeemTransaction-checkmark-hover-borderColor\": \"#d9d9d9\",\n \"--beam-RedeemTransaction-options-minWidth\": \"250px\",\n \"--beam-RedeemTransaction-options-columnCount\": \"2\",\n \"--beam-RedeemTransaction-options-borderRadius\": \"0px\",\n \"--beam-RedeemTransaction-options-borderWidth\": \"1px\",\n \"--beam-RedeemTransaction-options-selected-borderWidth\": \"2px\",\n \"--beam-RedeemTransaction-options-focus-borderWidth\": \"1px\",\n \"--beam-RedeemTransaction-options-image-borderRadius\": \"0px\",\n \"--beam-RedeemTransaction-options-borderColor\": \"#d9d9d9\",\n \"--beam-RedeemTransaction-options-selected-borderColor\": \"currentColor\",\n \"--beam-RedeemTransaction-options-hover-borderColor\": \"#ccc\",\n \"--beam-RedeemTransaction-options-backgroundColor\": \"transparent\",\n \"--beam-RedeemTransaction-options-selected-backgroundColor\": \"transparent\",\n \"--beam-RedeemTransaction-options-hover-backgroundColor\": \"#f1f1f1\",\n \"--beam-RedeemTransaction-options-marginTop\": \"15px\",\n ...defineCustomText(\"--beam-RedeemTransaction-title\", {\n fontSize: \"1.25em\",\n fontWeight: \"bold\",\n }),\n ...defineCustomText(\"--beam-RedeemTransaction-description\", {\n marginTop: \"0.5em\",\n }),\n ...defineCustomText(\"--beam-RedeemTransaction-details-cause\", {\n fontSize: \"1em\",\n fontWeight: \"bold\",\n }),\n ...defineCustomText(\"--beam-RedeemTransaction-details-impactDescription\", {\n fontSize: \"0.85em\",\n marginTop: \"10px\",\n }),\n \"--beam-RedeemTransaction-details-nonprofitName-fontWeight\": \"bold\",\n \"--beam-RedeemTransaction-details-nonprofitName-fontStyle\": \"inherit\",\n \"--beam-RedeemTransaction-details-fundingProgress-marginTop\": \"10px\",\n ...defineCustomText(\"--beam-RedeemTransaction-details-fundingProgressLabel\", {\n fontSize: \"0.85em\",\n }),\n \"--beam-RedeemTransaction-cardStyle\": \"'image'\",\n \"--beam-RedeemTransaction-options-icon-padding\": \"0px\",\n \"--beam-RedeemTransaction-options-collapseNonprofits-mobile\": \"false\",\n \"--beam-RedeemTransaction-options-collapseNonprofits-desktop\": \"false\",\n };\n\n const remoteConfig = this.nonprofitListDataController?.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\n return Object.assign(serializable, config);\n }\n\n static styles = [\n cssReset,\n css`\n :host {\n display: block;\n max-width: var(--beam-RedeemTransaction-maxWidth, 1000px);\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\n .headerContainer {\n align-items: flex-start;\n justify-content: space-between;\n display: flex;\n }\n\n .submitButton {\n color: var(--beam-RedeemTransaction-submitButton-color, #fff);\n background-color: var(--beam-RedeemTransaction-submitButton-backgroundColor, #333);\n border: 1px solid var(--beam-RedeemTransaction-submitButton-borderColor, #333);\n font-size: var(--beam-RedeemTransaction-submitButton-fontSize, 14px);\n font-weight: var(--beam-RedeemTransaction-submitButton-fontWeight, inherit);\n font-family: var(--beam-RedeemTransaction-submitButton-fontFamily, inherit);\n text-transform: var(--beam-RedeemTransaction-submitButton-textTransform, none);\n border-radius: var(--beam-RedeemTransaction-submitButton-borderRadius, 0);\n padding: var(--beam-RedeemTransaction-submitButton-padding, 15px 30px);\n transition: background-color 0.2s, border-color 0.2s, color 0.2s;\n cursor: pointer;\n }\n\n .submitButton.positionRight {\n width: var(--beam-RedeemTransaction-submitButton-positionRight-width, auto);\n margin-left: 30px;\n }\n\n .submitButton.positionBottom {\n width: var(--beam-RedeemTransaction-submitButton-positionBottom-width, 100%);\n margin-top: var(--beam-RedeemTransaction-submitButton-positionBottom-marginTop, 10px);\n }\n\n .submitButton:not(.isDisabled):focus-visible,\n .submitButton:not(.isDisabled):hover {\n background-color: var(--beam-RedeemTransaction-submitButton-hover-backgroundColor, #222);\n border-color: var(--beam-RedeemTransaction-submitButton-hover-borderColor, #222);\n color: var(--beam-RedeemTransaction-submitButton-hover-color, #fff);\n }\n\n .submitButton.isDisabled {\n color: var(--beam-RedeemTransaction-submitButton-disabled-color, #fff);\n background-color: var(--beam-RedeemTransaction-submitButton-disabled-backgroundColor, #767676);\n border-color: var(--beam-RedeemTransaction-submitButton-disabled-borderColor, #767676);\n cursor: not-allowed;\n }\n\n .options {\n margin-top: var(--beam-RedeemTransaction-options-marginTop, 15px);\n }\n\n .options.isHidden {\n display: none;\n }\n\n .option {\n /* outline is used to prevent layer shift if changing border width */\n outline: var(--beam-RedeemTransaction-options-borderWidth, 1px) solid\n var(--beam-RedeemTransaction-options-borderColor, #d9d9d9);\n border-radius: var(--beam-RedeemTransaction-options-borderRadius);\n background-color: var(--beam-RedeemTransaction-options-backgroundColor, transparent);\n cursor: pointer;\n transition: border-color 0.2s, background-color 0.2s, outline 0.2s;\n }\n\n .option:not(.isDisabled):focus-visible,\n .option:not(.isDisabled):hover,\n .option:not(.isSelected):focus-visible,\n .option:not(.isSelected):hover {\n background-color: var(--beam-RedeemTransaction-options-hover-backgroundColor, #f1f1f1);\n outline: var(--beam-RedeemTransaction-options-hover-borderWidth, 1px) solid\n var(--beam-RedeemTransaction-options-hover-borderColor, #ccc);\n }\n\n .option.isDisabled {\n cursor: not-allowed;\n }\n\n .option.isSelected {\n outline: var(--beam-RedeemTransaction-options-selected-borderWidth, 1px) solid\n var(--beam-RedeemTransaction-options-selected-borderColor, #333);\n background-color: var(--beam-RedeemTransaction-options-selected-backgroundColor, transparent);\n }\n\n .option.isSelected:focus-visible,\n .option.isSelected:hover {\n outline: var(--beam-RedeemTransaction-options-selected-borderWidth, 1px) solid\n var(--beam-RedeemTransaction-options-selected-borderColor, #333);\n }\n\n .option .checkbox {\n border-width: 1px;\n border-style: solid;\n transition: background-color 0.2s, color 0.2s, border-color 0.2s;\n color: var(--beam-RedeemTransaction-checkmark-color, transparent);\n background-color: var(--beam-RedeemTransaction-checkmark-backgroundColor, transparent);\n border-color: var(--beam-RedeemTransaction-checkmark-borderColor, transparent);\n }\n\n .option.isSelected .checkbox,\n .option.isSelected:focus-visible .checkbox,\n .option.isSelected:hover .checkbox {\n color: var(--beam-RedeemTransaction-checkmark-selected-color, #fff);\n background-color: var(--beam-RedeemTransaction-checkmark-selected-backgroundColor, #333);\n border-color: var(--beam-RedeemTransaction-checkmark-selected-borderColor, #333);\n }\n\n .option:not(.isSelected):focus-visible .checkbox,\n .option:not(.isSelected):hover .checkbox {\n color: var(--beam-RedeemTransaction-checkmark-hover-color, #fff);\n background-color: var(--beam-RedeemTransaction-checkmark-hover-backgroundColor, #d9d9d9);\n border-color: var(--beam-RedeemTransaction-checkmark-hover-borderColor, #d9d9d9);\n }\n\n .details-impactDescription {\n ${useCustomText(\"--beam-RedeemTransaction-details-impactDescription\")}\n }\n\n .details-impactDescription .nonprofitName {\n font-weight: var(--beam-RedeemTransaction-details-nonprofitName-fontWeight, bold);\n font-style: var(--beam-RedeemTransaction-details-nonprofitName-fontStyle, inherit);\n }\n `,\n cssCardGrid({\n gap: \"20px\",\n itemMinWidth: \"var(--beam-RedeemTransaction-options-minWidth, 250px)\",\n columnCount: \"var(--beam-RedeemTransaction-options-columnCount, 2)\",\n }),\n ];\n\n private handleChooseClick() {\n this.didUserExpandNonprofits = true;\n }\n\n get shouldCollapse() {\n const enableMobileCollapse =\n this.cssVariables[\"--beam-RedeemTransaction-options-collapseNonprofits-mobile\"] === \"true\";\n const enableDesktopCollapse =\n this.cssVariables[\"--beam-RedeemTransaction-options-collapseNonprofits-desktop\"] === \"true\";\n return (this.isMobile && enableMobileCollapse) || (!this.isMobile && enableDesktopCollapse);\n }\n\n protected render() {\n const { selectedNonprofitId } = this;\n const { data, loading } = this.nonprofitListDataController;\n\n if (loading && !data) {\n return _loading();\n }\n if (this.nonprofitListDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.nonprofitListDataController.error });\n }\n return \"\";\n }\n if (this.selectionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.selectionDataController.error });\n }\n // do not show error screen for interactive errors by default\n }\n if (data == null) {\n if (this.debug) {\n return _errorMessage({ error: new BeamError(\"No data\") });\n }\n return \"\";\n }\n const nonprofits = data?.nonprofits || [];\n const selectedNonprofit = nonprofits.find((np) => np.nonprofit.id === selectedNonprofitId) || null;\n // changes images in widget to icons\n const displayIcon = this.cssVariables[\"--beam-RedeemTransaction-cardStyle\"] === \"'icon'\";\n const submitButtonPosition = this.cssVariables[\"--beam-RedeemTransaction-submitButton-position\"];\n const submitButtonPositionClass =\n this.isMobile && submitButtonPosition === \"bottom\" ? \"positionBottom\" : \"positionRight\";\n\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n <!-- Custom flex order fixes tab cycling so submit button is after content -->\n <div style=\"display: flex; flex-direction: column;\" class=\"root\">\n <div\n style=\"order: 3;\"\n tabindex=\"-1\"\n class=\"options cardGrid ${classMap({ isHidden: !this.didUserExpandNonprofits && this.shouldCollapse })}\"\n part=\"options\"\n role=\"radiogroup\"\n aria-labelledby=\"beam-RedeemTransaction-title\"\n ?aria-disabled=${!this.allowChange}\n >\n ${repeat(\n nonprofits,\n (i) => i.nonprofit.id,\n (np, index) => {\n const isSelected = selectedNonprofitId === np.nonprofit.id;\n const isFocusable = isSelected || (selectedNonprofit == null && index === 0);\n return html`\n <div\n class=\"option ${classMap({\n isSelected: isSelected,\n isDisabled: !this.allowChange,\n })}\"\n part=\"option\"\n role=\"radio\"\n tabindex=\"${isFocusable ? 0 : -1}\"\n data-value=${np.nonprofit.id}\n ?aria-checked=${isSelected}\n @click=${this.makeHandleSelect(np.nonprofit.id, index, nonprofits)}\n @keydown=${this.makeHandleSelect(np.nonprofit.id, index, nonprofits)}\n aria-label=\"${localizeUserString(this.configLang, np.nonprofit.cause || \"\")}\"\n style=\"${styleMap({\n display: \"flex\",\n gap: \"15px\",\n padding: \"10px\",\n })}\"\n >\n ${displayIcon\n ? html` <div style=\"height: 100%; flex: 1; flex-direction: column;\">\n <img\n src=\"${np.nonprofit.causeIconUrl}\"\n alt=\"\"\n role=\"presentation\"\n style=\"\n flex: 1;\n height: auto;\n width: 100%;\n display: block;\n padding: var(--beam-RedeemTransaction-options-icon-padding);\n border-radius: var(--beam-RedeemTransaction-options-image-borderRadius, 0);\n \"\n />\n </div>`\n : html` <div style=\"height: 100%; flex: 1 0 33%; display: flex; flex-direction: column;\">\n <img\n src=\"${np.imageUrl}\"\n alt=\"\"\n role=\"presentation\"\n style=\"\n flex: 1;\n height: auto;\n width: 100%;\n object-fit: cover;\n border-radius: var(--beam-RedeemTransaction-options-image-borderRadius, 0);\n \"\n />\n </div>`}\n <div\n class=\"details\"\n part=\"details\"\n style=\"\n flex: 1 1 67%;\n height: 100%;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-content: stretch;\n align-items: stretch;\n position: relative;\n \"\n >\n <div\n class=\"details-cause\"\n style=\"flex: 0 1; ${useCustomText(\"--beam-RedeemTransaction-details-cause\")}\"\n >\n <span\n part=\"checkbox\"\n class=\"checkbox\"\n style=\"\n margin-left: 5px;\n float: right;\n padding: 4px;\n border-radius: 100%;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n \"\n >\n <span style=\"line-height: 0;\"> ${_checkbox({ height: \"10px\", width: \"10px\" })} </span>\n </span>\n ${localizeUserString(this.configLang, np.nonprofit.cause || \"\")}\n </div>\n <p class=\"details-impactDescription\" style=\"flex: 1 1;\">\n ${unsafeHTML(localizeUserString(this.configLang, np.impact.description || \"\"))}\n </p>\n <div\n style=\"display: flex; margin-top: var(--beam-RedeemTransaction-details-fundingProgress-marginTop); align-items: center;\"\n >\n <beam-progress-bar\n value=\"${np.impact.goalProgressPercentage}\"\n style=\"flex: 1 0;\"\n ></beam-progress-bar>\n <span\n class=\"details-fundingProgressLabel\"\n style=\"${useCustomText(\n \"--beam-RedeemTransaction-details-fundingProgressLabel\"\n )} white-space: nowrap; text-align: right; flex: 0 1; margin-left: 15px;\"\n >\n ${localizeUserString(this.configLang, np.impact.goalProgressText)}\n </span>\n </div>\n </div>\n </div>\n `;\n }\n )}\n </div>\n\n <div\n style=\"order: 2; flex-direction: ${this.isMobile && submitButtonPosition === \"bottom\" ? \"column\" : \"row\"};\"\n class=\"headerContainer\"\n >\n <div>\n <h3\n class=\"title\"\n part=\"title\"\n id=\"beam-RedeemTransaction-title\"\n style=\"${useCustomText(\"--beam-RedeemTransaction-title\")}\"\n >\n ${localizeUserString(this.configLang, data?.config?.web?.title) || strings[this.configLang].ctaTitle()}\n </h3>\n <p class=\"description\" part=\"description\" style=\"${useCustomText(\"--beam-RedeemTransaction-description\")}\">\n ${localizeUserString(this.configLang, data?.config?.web?.description)}\n </p>\n </div>\n ${this.didUserExpandNonprofits || !this.shouldCollapse\n ? html`<button\n type=\"button\"\n ?aria-disabled=${!this.allowSubmit}\n @click=\"${this.handleSubmit}\"\n class=\"${classMap({\n isDisabled: !this.allowSubmit,\n [submitButtonPositionClass]: true,\n submitButton: true,\n })}\"\n part=\"submitButton\"\n >\n ${this.selectionDataController.data !== null\n ? strings[this.configLang].submitButtonTextCompleted()\n : strings[this.configLang].submitButtonText()}\n </button>`\n : html`<button\n type=\"button\"\n @click=\"${this.handleChooseClick}\"\n class=\"submitButton ${submitButtonPositionClass}\"\n part=\"submitButton\"\n >\n ${strings[this.configLang].chooseButtonText()}\n </button>`}\n </div>\n\n <beam-partner-logos\n partnerName=\"${data.chain.name}\"\n partnerLogoUrl=\"${data.chain.logoUrl}\"\n style=\"order: 1\"\n ></beam-partner-logos>\n </div>\n `;\n }\n}\n\ndefineCustomElement(BeamRedeemTransaction);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-redeem-transaction\": BeamRedeemTransaction;\n }\n}\n"],"names":["_checkbox","height","width","html","styleMap","strings","donationPercentage","I","N","a","g","b","e","t","o","i","c","BeamRedeemTransaction","LitElement","DEFAULT_BASE_URL","checkForInvalidAttributeCombinations","MissingConfig","res","postChainEligibleNonprofitsForCart","selectedNonprofitId","enforceConfig","putTransaction","updateSubscription","AsyncController","createScopedLocalStorage","id","index","nonprofits","event","currentId","nextFocus","focusTarget","selectedNonprofit","np","BeamNonprofitSelectEvent","debounce","SUPPORTED_LANGUAGES","areRequiredKeysDefined","_changedProperties","previousPropertyValues","requireNewDataProps","prop","createdAt","data","cacheTtl","defaults","partnerLogosConfigDefaults","progressBarConfigDefaults","defineCustomText","remoteConfig","config","_cssVariableMap","enableMobileCollapse","enableDesktopCollapse","loading","_loading","_errorMessage","BeamError","displayIcon","submitButtonPosition","submitButtonPositionClass","classMap","repeat","isSelected","isFocusable","localizeUserString","useCustomText","unsafeHTML","cssReset","css","cssCardGrid","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"redeem-transaction.esm.js","sources":["../../src/shared/fragments/checkbox.ts","../../src/components/redeem-transaction/strings.ts","../../src/components/redeem-transaction/index.ts"],"sourcesContent":["import { html } from \"lit\";\nimport { styleMap } from \"lit/directives/style-map.js\";\n\nexport const _checkbox = ({ height = \"1em\", width = \"1em\" } = {}) =>\n html`\n <svg\n style=\"${styleMap({ height, width, position: \"relative\", bottom: \"0\" })}\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 78.369 78.369\"\n >\n <g>\n <path\n d=\"M78.049,19.015L29.458,67.606c-0.428,0.428-1.121,0.428-1.548,0L0.32,40.015c-0.427-0.426-0.427-1.119,0-1.547l6.704-6.704\n c0.428-0.427,1.121-0.427,1.548,0l20.113,20.112l41.113-41.113c0.429-0.427,1.12-0.427,1.548,0l6.703,6.704\n C78.477,17.894,78.477,18.586,78.049,19.015z\"\n style=\"fill: currentColor\"\n />\n </g>\n </svg>\n `;\n","export const strings = {\n en: {\n beamAttribution: () => `Powered by Beam`,\n ctaTitle: () => `Choose your impact`,\n ctaMessage: ({ donationPercentage = \"1%\" }) =>\n `Select a nonprofit and ${donationPercentage} of your purchase will be donated, at no extra cost.`,\n submitButtonText: () => `Confirm`,\n submitButtonTextCompleted: () => `Confirmed!`,\n chooseButtonText: () => `Choose`,\n },\n fr: {\n beamAttribution: () => `Optimisé par Beam`,\n ctaTitle: () => `Choisissez votre cause`,\n ctaMessage: ({ donationPercentage = \"1%\" }) =>\n `Choisissez un organisme à but non lucratif et ${donationPercentage}% lui sera versé en votre nom, sans frais supplémentaires.`,\n submitButtonText: () => `Confirmer`,\n submitButtonTextCompleted: () => `Confirmé!`,\n chooseButtonText: () => `Choisissez`,\n },\n de: {\n beamAttribution: () => `Unterstützt von Beam`,\n ctaTitle: () => `Wähle deinen Impact`,\n ctaMessage: ({ donationPercentage = \"1%\" } = {}) =>\n `Wähle eine der gemeinnützigen Organisationen und spende ${donationPercentage} deines Einkaufs ohne zusätzliche Kosten`,\n submitButtonText: () => \"Bestätigen\",\n submitButtonTextCompleted: () => `Bestätigt!`,\n chooseButtonText: () => `Wählen`,\n },\n es: {\n ctaTitle: () => \"Elige tu contribución\",\n ctaMessage: ({ donationPercentage = \"1%\" }) =>\n `Elige una organización sin fines de lucro y donaremos ${donationPercentage} de tu compra sin coste adicional.`,\n beamAttribution: () => \"Ofrecido por Beam\",\n submitButtonText: () => \"Confirmar\",\n submitButtonTextCompleted: () => \"¡Confirmado!\",\n chooseButtonText: () => `Elige`,\n },\n it: {\n ctaTitle: () => \"Scegli dove fare la differenza\",\n ctaMessage: ({ donationPercentage = \"1%\" }) =>\n `Seleziona un'organizzazione no-profit a cui devolvere l’${donationPercentage} del tuo acquisto, senza costi aggiuntivi`,\n beamAttribution: () => \"Gestito da Beam\",\n submitButtonText: () => \"Confermare\",\n submitButtonTextCompleted: () => \"Confermato!\",\n chooseButtonText: () => `Scegli`,\n },\n pl: {\n beamAttribution: () => `Wspierany przez Beam`,\n ctaTitle: () => `Wybierz inicjatywę, którą chcesz wesprzeć`,\n ctaMessage: ({ donationPercentage = \"1%\" }) =>\n `Wybierz organizację, której przekażesz ${donationPercentage} wartości Twoich zakupów – bez żadnych dodatkowych kosztów!`,\n submitButtonText: () => `Zatwierdź`,\n submitButtonTextCompleted: () => `Zatwierdzono!`,\n chooseButtonText: () => `Wybierz`,\n },\n};\n","import { css, html, LitElement, PropertyValues } from \"lit\";\nimport { repeat } from \"lit/directives/repeat.js\";\nimport { property } from \"lit/decorators/property.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport { state } from \"lit/decorators/state.js\";\nimport debounce from \"lodash-es/debounce\";\nimport { AsyncController } from \"../../shared/controllers/async-controller\";\nimport { DEFAULT_BASE_URL, SUPPORTED_LANGUAGES } from \"../../api-sdk/constants\";\nimport \"../../shared/components/progress-bar\";\nimport \"../beam-partner-logos\";\nimport { defineCustomElement } from \"../../shared/defineCustomElement\";\nimport { _loading } from \"../../shared/fragments/loading-template\";\nimport { _errorMessage } from \"../../shared/fragments/error-message-template\";\nimport { defineCustomText, useCustomText } from \"../../shared/fragments/custom-text\";\nimport { cssReset } from \"../../shared/css-reset\";\nimport { _cssVariableMap } from \"../../shared/fragments/css-variable-map\";\nimport {\n enforceConfig,\n areRequiredKeysDefined,\n checkForInvalidAttributeCombinations,\n} from \"../../shared/enforce-config\";\nimport { BeamError, MissingConfig } from \"../../utils/beam-errors\";\nimport { TId, TNumericId } from \"../../shared/types\";\nimport { TCart } from \"../../shared/cart-contents\";\nimport { createScopedLocalStorage } from \"../../utils/local-storage\";\nimport { cssCardGrid } from \"../../shared/fragments/css-card-grid\";\nimport { _checkbox } from \"../../shared/fragments/checkbox\";\nimport { postChainEligibleNonprofitsForCart, putTransaction, updateSubscription } from \"../../api-sdk/v3/routes\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { BeamNonprofitSelectEvent } from \"../../utils/events\";\nimport { localizeUserString } from \"../../shared/localize\";\nimport { progressBarConfigDefaults } from \"../../shared/components/progress-bar\";\nimport { partnerLogosConfigDefaults } from \"../beam-partner-logos\";\nimport { strings } from \"./strings\";\n\ninterface TransactionRequiredConfig {\n apiKey: string;\n transactionId: TId;\n}\n\ninterface SubscriptionRequiredConfig {\n apiKey: string;\n subscriptionId: string;\n}\n\ntype TRequiredConfig = TransactionRequiredConfig | SubscriptionRequiredConfig;\n\nexport class BeamRedeemTransaction extends LitElement {\n static tagName = \"beam-redeem-transaction\";\n\n @property({ type: String }) public baseUrl: string = DEFAULT_BASE_URL;\n\n @property({ type: String }) public apiKey?: TRequiredConfig[\"apiKey\"];\n\n @property({ type: Number }) public transactionId?: TransactionRequiredConfig[\"transactionId\"];\n\n @property({ type: String }) public subscriptionId?: SubscriptionRequiredConfig[\"subscriptionId\"];\n\n @property({ type: Number }) public storeId?: TNumericId;\n\n @property({ type: String }) public countryCode?: string;\n\n @property({ type: String }) public postalCode?: string;\n\n @property({ type: Object }) public cart?: TCart;\n\n @property({ type: Number, reflect: true })\n public selectedNonprofitId?: TNumericId;\n\n @property({ type: String }) public lang: LANGUAGES = \"en\";\n\n @property({ type: Boolean }) public debug = false;\n\n @state() private isMobile = window.innerWidth < 768;\n\n @state() private didUserExpandNonprofits = false;\n\n get configLang() {\n return SUPPORTED_LANGUAGES[this.lang] || \"en\";\n }\n\n private get hasCorrectTransactionConfig(): boolean {\n const requiredKeys: (keyof TransactionRequiredConfig)[] = [\"apiKey\", \"transactionId\"];\n const isTransactionConfigCorrect = areRequiredKeysDefined(requiredKeys, this);\n return isTransactionConfigCorrect;\n }\n\n private get hasCorrectSubscriptionConfig(): boolean {\n const requiredKeys: (keyof SubscriptionRequiredConfig)[] = [\"apiKey\", \"subscriptionId\"];\n const isSubscriptionConfigCorrect = areRequiredKeysDefined(requiredKeys, this);\n return isSubscriptionConfigCorrect;\n }\n\n private getChainNonprofits = async () => {\n checkForInvalidAttributeCombinations([\"transactionId\", \"subscriptionId\"], this);\n if (!this.hasCorrectTransactionConfig && !this.hasCorrectSubscriptionConfig) {\n throw new MissingConfig();\n }\n const res = await postChainEligibleNonprofitsForCart({\n baseUrl: this.baseUrl,\n headers: { authorization: `Api-Key ${this.apiKey}` },\n requestBody: {\n storeId: this.storeId,\n postalCode: this.postalCode,\n countryCode: this.countryCode,\n cart: this.cart ?? undefined,\n widgetName: \"redeem-transaction\",\n version: \"1.0.0\",\n lang: this.configLang,\n },\n });\n\n // If store ID was not provided, get the store ID from response here\n if (res.store?.id && res.store.id !== this.storeId) {\n this.storeId = res.store.id;\n }\n\n this.localStorage.setItemJson(\"chainNonprofits\", {\n createdAt: new Date(),\n data: res,\n });\n\n return res;\n };\n\n private updateNonprofitIdForRecord = async ({ selectedNonprofitId }: { selectedNonprofitId: TNumericId }) => {\n if (this.transactionId) {\n return this.putTransaction({ selectedNonprofitId });\n } else if (this.subscriptionId) {\n return this.putSubscription({ selectedNonprofitId });\n }\n return null;\n };\n private putTransaction = async ({ selectedNonprofitId }: { selectedNonprofitId: TNumericId }) => {\n if (!enforceConfig<TransactionRequiredConfig>([\"apiKey\", \"transactionId\"], this)) {\n throw new MissingConfig();\n }\n return putTransaction({\n baseUrl: this.baseUrl,\n headers: {\n authorization: `Api-Key ${this.apiKey}`,\n },\n pathParams: {\n transactionId: Number(this.transactionId), // TODO: fix api spec for PUT transaction/:id to use string\n },\n requestBody: {\n nonprofitId: selectedNonprofitId,\n },\n });\n };\n\n // updates subscriptions nonprofitId\n private putSubscription = async ({ selectedNonprofitId }: { selectedNonprofitId: TNumericId }) => {\n if (!enforceConfig<SubscriptionRequiredConfig>([\"apiKey\", \"subscriptionId\"], this)) {\n throw new MissingConfig();\n }\n\n return updateSubscription({\n baseUrl: this.baseUrl,\n headers: { authorization: `Api-Key ${this.apiKey}` },\n requestBody: {\n remoteSubscriptionId: this.subscriptionId,\n nonprofitId: selectedNonprofitId,\n },\n });\n };\n\n private nonprofitListDataController = new AsyncController<typeof this.getChainNonprofits>(\n this,\n this.getChainNonprofits\n );\n\n private selectionDataController = new AsyncController<typeof this.updateNonprofitIdForRecord>(\n this,\n this.updateNonprofitIdForRecord\n );\n\n private localStorage = createScopedLocalStorage(this as LitElement & TRequiredConfig);\n\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener(\"resize\", this.evaluateBreakPoints);\n }\n\n async firstUpdated(_changedProperties: PropertyValues) {\n await this.restoreStateFromCache();\n }\n\n async updated(previousPropertyValues: PropertyValues) {\n // Reload nonprofit list on change of any of these props:\n // Also fires on first load as props go from undefined => value\n const requireNewDataProps = [\"baseUrl\", \"storeId\", \"apiKey\", \"countryCode\", \"postalCode\", \"lang\"];\n for (const prop of requireNewDataProps) {\n if (previousPropertyValues.has(prop)) {\n await this.nonprofitListDataController.exec();\n break;\n }\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n }\n\n private restoreStateFromCache() {\n if (!enforceConfig<TRequiredConfig>([\"apiKey\"], this)) throw new MissingConfig();\n\n if (this.shouldUseStoredSelection) {\n this.selectedNonprofitId = parseInt(this.localStorage.getItem(\"nonprofit\") || \"\") || undefined;\n }\n\n try {\n // try to restore nonprofit list if we have data and it's not too old\n // list will continue to refresh async and replace this data when ready\n const { createdAt = 0, data } =\n this.localStorage.getItemJson<{ createdAt: string; data: any }>(\"chainNonprofits\") || {};\n const cacheTtl = 2 * 60 * 60 * 1000;\n if (new Date(createdAt).valueOf() + cacheTtl > new Date().valueOf()) {\n this.nonprofitListDataController.data = data;\n this.nonprofitListDataController.loading = false;\n }\n } catch (err) {\n // ignore cache retrieval error and continue to fetch data\n }\n }\n\n /**\n * Factory for selection event handler\n *\n * Nonprofit selector implements radio-button semantics:\n * * If nothing is selected, tabbing into selector selects first card\n * * Arrow keys changes focus between cards, but doesn't select\n * * Enter/Space sets selection\n * * If a nonprofit is selected, arrow keys change focus AND selection\n * * Click sets selection\n * @param {number} id\n * @param {number} index\n * @param {{id: number}[]} nonprofits\n * @returns {(evt: Event) => void}\n */\n private makeHandleSelect =\n (id: number, index: number, nonprofits: { nonprofit: { id: number } }[]): ((event: Event) => void) =>\n async (event: Event) => {\n if (!this.allowChange) return;\n\n const currentId = this.selectedNonprofitId;\n if (event instanceof KeyboardEvent) {\n let nextFocus = null;\n switch (event.key) {\n case \"ArrowUp\":\n case \"ArrowLeft\":\n if (index === 0) {\n nextFocus = nonprofits[nonprofits.length - 1];\n } else {\n nextFocus = nonprofits[index - 1];\n }\n event.preventDefault();\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n if (index === nonprofits.length - 1) {\n nextFocus = nonprofits[0];\n } else {\n nextFocus = nonprofits[index + 1];\n }\n event.preventDefault();\n break;\n case \"Enter\":\n case \" \":\n event.preventDefault();\n break; // continue to toggle-selection block below\n default:\n return;\n }\n if (nextFocus) {\n const focusTarget = this.renderRoot.querySelector(`[data-value=\"${nextFocus.nonprofit.id}\"]`) as HTMLElement;\n if (focusTarget !== null) {\n focusTarget.tabIndex = 0;\n focusTarget.focus();\n }\n return;\n }\n }\n // Handle selection with click or Enter/Space key\n const targetEl = event.currentTarget;\n if (targetEl instanceof HTMLElement) {\n if (currentId === id) {\n // this[\"selected-nonprofit-id\"] = undefined; // unset (not supported)\n return; // no API call or localStorage change needed\n } else {\n this.selectedNonprofitId = id;\n }\n }\n };\n\n get allowChange() {\n // Disallow change if already submitted\n return this.selectionDataController.data == null && !this.selectionDataController.loading;\n }\n\n get allowSubmit() {\n // Disabled if no nonprofit has been selected yet or if submission was already received\n return Boolean(this.selectedNonprofitId && this.allowChange);\n }\n\n handleSubmit = async () => {\n const { selectedNonprofitId } = this;\n if (!this.allowSubmit || selectedNonprofitId == null) return;\n await this.selectionDataController.exec({ selectedNonprofitId });\n\n if (this.shouldUseStoredSelection) {\n this.localStorage.setItem(\"nonprofit\", selectedNonprofitId);\n this.localStorage.setItem(\"nonprofit_selected_at\", new Date().toISOString());\n }\n\n const selectedNonprofit = this.nonprofitListDataController?.data?.nonprofits.find(\n (np) => np.nonprofit.id === selectedNonprofitId\n );\n\n this.dispatchEvent(\n new BeamNonprofitSelectEvent({ selectedNonprofitId, nonprofitName: selectedNonprofit?.nonprofit.name })\n );\n };\n\n private get shouldUseStoredSelection() {\n // Should only use localStorage data when managing transactions, not subscriptions\n return !this.subscriptionId;\n }\n\n evaluateBreakPoints = debounce(\n () => {\n this.isMobile = window.innerWidth < 768;\n },\n 50,\n { maxWait: 50, leading: true }\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 ...partnerLogosConfigDefaults,\n ...progressBarConfigDefaults,\n \"--beam-RedeemTransaction-maxWidth\": \"1000px\",\n \"--beam-RedeemTransaction-submitButton-color\": \"#fff\",\n \"--beam-RedeemTransaction-submitButton-hover-color\": \"#fff\",\n \"--beam-RedeemTransaction-submitButton-disabled-color\": \"#fff\",\n \"--beam-RedeemTransaction-submitButton-backgroundColor\": \"#333\",\n \"--beam-RedeemTransaction-submitButton-hover-backgroundColor\": \"#222\",\n \"--beam-RedeemTransaction-submitButton-disabled-backgroundColor\": \"#767676\",\n \"--beam-RedeemTransaction-submitButton-borderColor\": \"#333\",\n \"--beam-RedeemTransaction-submitButton-hover-borderColor\": \"#222\",\n \"--beam-RedeemTransaction-submitButton-disabled-borderColor\": \"#767676\",\n \"--beam-RedeemTransaction-submitButton-fontSize\": \"14px\",\n \"--beam-RedeemTransaction-submitButton-fontWeight\": \"inherit\",\n \"--beam-RedeemTransaction-submitButton-fontFamily\": \"inherit\",\n \"--beam-RedeemTransaction-submitButton-textTransform\": \"none\",\n \"--beam-RedeemTransaction-submitButton-borderRadius\": \"0px\",\n \"--beam-RedeemTransaction-submitButton-padding\": \"15px 30px\",\n \"--beam-RedeemTransaction-submitButton-position\": \"right\" /* bottom only applies to mobile */,\n \"--beam-RedeemTransaction-submitButton-positionRight-width\": \"auto\",\n \"--beam-RedeemTransaction-submitButton-positionBottom-width\": \"100%\",\n \"--beam-RedeemTransaction-submitButton-positionBottom-marginTop\": \"10px\",\n \"--beam-RedeemTransaction-checkmark-color\": \"transparent\",\n \"--beam-RedeemTransaction-checkmark-selected-color\": \"#fff\",\n \"--beam-RedeemTransaction-checkmark-hover-color\": \"#fff\",\n \"--beam-RedeemTransaction-checkmark-backgroundColor\": \"transparent\",\n \"--beam-RedeemTransaction-checkmark-selected-backgroundColor\": \"#333\",\n \"--beam-RedeemTransaction-checkmark-hover-backgroundColor\": \"#d9d9d9\",\n \"--beam-RedeemTransaction-checkmark-borderColor\": \"transparent\",\n \"--beam-RedeemTransaction-checkmark-selected-borderColor\": \"#333\",\n \"--beam-RedeemTransaction-checkmark-hover-borderColor\": \"#d9d9d9\",\n \"--beam-RedeemTransaction-options-minWidth\": \"250px\",\n \"--beam-RedeemTransaction-options-columnCount\": \"2\",\n \"--beam-RedeemTransaction-options-borderRadius\": \"0px\",\n \"--beam-RedeemTransaction-options-borderWidth\": \"1px\",\n \"--beam-RedeemTransaction-options-selected-borderWidth\": \"2px\",\n \"--beam-RedeemTransaction-options-focus-borderWidth\": \"1px\",\n \"--beam-RedeemTransaction-options-image-borderRadius\": \"0px\",\n \"--beam-RedeemTransaction-options-borderColor\": \"#d9d9d9\",\n \"--beam-RedeemTransaction-options-selected-borderColor\": \"currentColor\",\n \"--beam-RedeemTransaction-options-hover-borderColor\": \"#ccc\",\n \"--beam-RedeemTransaction-options-backgroundColor\": \"transparent\",\n \"--beam-RedeemTransaction-options-selected-backgroundColor\": \"transparent\",\n \"--beam-RedeemTransaction-options-hover-backgroundColor\": \"#f1f1f1\",\n \"--beam-RedeemTransaction-options-marginTop\": \"15px\",\n ...defineCustomText(\"--beam-RedeemTransaction-title\", {\n fontSize: \"1.25em\",\n fontWeight: \"bold\",\n }),\n ...defineCustomText(\"--beam-RedeemTransaction-description\", {\n marginTop: \"0.5em\",\n }),\n ...defineCustomText(\"--beam-RedeemTransaction-details-cause\", {\n fontSize: \"1em\",\n fontWeight: \"bold\",\n }),\n ...defineCustomText(\"--beam-RedeemTransaction-details-impactDescription\", {\n fontSize: \"0.85em\",\n marginTop: \"10px\",\n }),\n \"--beam-RedeemTransaction-details-nonprofitName-fontWeight\": \"bold\",\n \"--beam-RedeemTransaction-details-nonprofitName-fontStyle\": \"inherit\",\n \"--beam-RedeemTransaction-details-fundingProgress-marginTop\": \"10px\",\n ...defineCustomText(\"--beam-RedeemTransaction-details-fundingProgressLabel\", {\n fontSize: \"0.85em\",\n }),\n \"--beam-RedeemTransaction-cardStyle\": \"'image'\",\n \"--beam-RedeemTransaction-options-icon-padding\": \"0px\",\n \"--beam-RedeemTransaction-options-collapseNonprofits-mobile\": \"false\",\n \"--beam-RedeemTransaction-options-collapseNonprofits-desktop\": \"false\",\n };\n\n const remoteConfig = this.nonprofitListDataController?.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\n return Object.assign(serializable, config);\n }\n\n static styles = [\n cssReset,\n css`\n :host {\n display: block;\n max-width: var(--beam-RedeemTransaction-maxWidth, 1000px);\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\n .headerContainer {\n align-items: flex-start;\n justify-content: space-between;\n display: flex;\n }\n\n .submitButton {\n color: var(--beam-RedeemTransaction-submitButton-color, #fff);\n background-color: var(--beam-RedeemTransaction-submitButton-backgroundColor, #333);\n border: 1px solid var(--beam-RedeemTransaction-submitButton-borderColor, #333);\n font-size: var(--beam-RedeemTransaction-submitButton-fontSize, 14px);\n font-weight: var(--beam-RedeemTransaction-submitButton-fontWeight, inherit);\n font-family: var(--beam-RedeemTransaction-submitButton-fontFamily, inherit);\n text-transform: var(--beam-RedeemTransaction-submitButton-textTransform, none);\n border-radius: var(--beam-RedeemTransaction-submitButton-borderRadius, 0);\n padding: var(--beam-RedeemTransaction-submitButton-padding, 15px 30px);\n transition: background-color 0.2s, border-color 0.2s, color 0.2s;\n cursor: pointer;\n }\n\n .submitButton.positionRight {\n width: var(--beam-RedeemTransaction-submitButton-positionRight-width, auto);\n margin-left: 30px;\n }\n\n .submitButton.positionBottom {\n width: var(--beam-RedeemTransaction-submitButton-positionBottom-width, 100%);\n margin-top: var(--beam-RedeemTransaction-submitButton-positionBottom-marginTop, 10px);\n }\n\n .submitButton:not(.isDisabled):focus-visible,\n .submitButton:not(.isDisabled):hover {\n background-color: var(--beam-RedeemTransaction-submitButton-hover-backgroundColor, #222);\n border-color: var(--beam-RedeemTransaction-submitButton-hover-borderColor, #222);\n color: var(--beam-RedeemTransaction-submitButton-hover-color, #fff);\n }\n\n .submitButton.isDisabled {\n color: var(--beam-RedeemTransaction-submitButton-disabled-color, #fff);\n background-color: var(--beam-RedeemTransaction-submitButton-disabled-backgroundColor, #767676);\n border-color: var(--beam-RedeemTransaction-submitButton-disabled-borderColor, #767676);\n cursor: not-allowed;\n }\n\n .options {\n margin-top: var(--beam-RedeemTransaction-options-marginTop, 15px);\n }\n\n .options.isHidden {\n display: none;\n }\n\n .option {\n /* outline is used to prevent layer shift if changing border width */\n outline: var(--beam-RedeemTransaction-options-borderWidth, 1px) solid\n var(--beam-RedeemTransaction-options-borderColor, #d9d9d9);\n border-radius: var(--beam-RedeemTransaction-options-borderRadius);\n background-color: var(--beam-RedeemTransaction-options-backgroundColor, transparent);\n cursor: pointer;\n transition: border-color 0.2s, background-color 0.2s, outline 0.2s;\n }\n\n .option:not(.isDisabled):focus-visible,\n .option:not(.isDisabled):hover,\n .option:not(.isSelected):focus-visible,\n .option:not(.isSelected):hover {\n background-color: var(--beam-RedeemTransaction-options-hover-backgroundColor, #f1f1f1);\n outline: var(--beam-RedeemTransaction-options-hover-borderWidth, 1px) solid\n var(--beam-RedeemTransaction-options-hover-borderColor, #ccc);\n }\n\n .option.isDisabled {\n cursor: not-allowed;\n }\n\n .option.isSelected {\n outline: var(--beam-RedeemTransaction-options-selected-borderWidth, 1px) solid\n var(--beam-RedeemTransaction-options-selected-borderColor, #333);\n background-color: var(--beam-RedeemTransaction-options-selected-backgroundColor, transparent);\n }\n\n .option.isSelected:focus-visible,\n .option.isSelected:hover {\n outline: var(--beam-RedeemTransaction-options-selected-borderWidth, 1px) solid\n var(--beam-RedeemTransaction-options-selected-borderColor, #333);\n }\n\n .option .checkbox {\n border-width: 1px;\n border-style: solid;\n transition: background-color 0.2s, color 0.2s, border-color 0.2s;\n color: var(--beam-RedeemTransaction-checkmark-color, transparent);\n background-color: var(--beam-RedeemTransaction-checkmark-backgroundColor, transparent);\n border-color: var(--beam-RedeemTransaction-checkmark-borderColor, transparent);\n }\n\n .option.isSelected .checkbox,\n .option.isSelected:focus-visible .checkbox,\n .option.isSelected:hover .checkbox {\n color: var(--beam-RedeemTransaction-checkmark-selected-color, #fff);\n background-color: var(--beam-RedeemTransaction-checkmark-selected-backgroundColor, #333);\n border-color: var(--beam-RedeemTransaction-checkmark-selected-borderColor, #333);\n }\n\n .option:not(.isSelected):focus-visible .checkbox,\n .option:not(.isSelected):hover .checkbox {\n color: var(--beam-RedeemTransaction-checkmark-hover-color, #fff);\n background-color: var(--beam-RedeemTransaction-checkmark-hover-backgroundColor, #d9d9d9);\n border-color: var(--beam-RedeemTransaction-checkmark-hover-borderColor, #d9d9d9);\n }\n\n .details-impactDescription {\n ${useCustomText(\"--beam-RedeemTransaction-details-impactDescription\")}\n }\n\n .details-impactDescription .nonprofitName {\n font-weight: var(--beam-RedeemTransaction-details-nonprofitName-fontWeight, bold);\n font-style: var(--beam-RedeemTransaction-details-nonprofitName-fontStyle, inherit);\n }\n `,\n cssCardGrid({\n gap: \"20px\",\n itemMinWidth: \"var(--beam-RedeemTransaction-options-minWidth, 250px)\",\n columnCount: \"var(--beam-RedeemTransaction-options-columnCount, 2)\",\n }),\n ];\n\n private handleChooseClick() {\n this.didUserExpandNonprofits = true;\n }\n\n get shouldCollapse() {\n const enableMobileCollapse =\n this.cssVariables[\"--beam-RedeemTransaction-options-collapseNonprofits-mobile\"] === \"true\";\n const enableDesktopCollapse =\n this.cssVariables[\"--beam-RedeemTransaction-options-collapseNonprofits-desktop\"] === \"true\";\n return (this.isMobile && enableMobileCollapse) || (!this.isMobile && enableDesktopCollapse);\n }\n\n protected render() {\n const { selectedNonprofitId } = this;\n const { data, loading } = this.nonprofitListDataController;\n\n if (loading && !data) {\n return _loading();\n }\n if (this.nonprofitListDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.nonprofitListDataController.error });\n }\n return \"\";\n }\n if (this.selectionDataController.error) {\n if (this.debug) {\n return _errorMessage({ error: this.selectionDataController.error });\n }\n // do not show error screen for interactive errors by default\n }\n if (data == null) {\n if (this.debug) {\n return _errorMessage({ error: new BeamError(\"No data\") });\n }\n return \"\";\n }\n const nonprofits = data?.nonprofits || [];\n const selectedNonprofit = nonprofits.find((np) => np.nonprofit.id === selectedNonprofitId) || null;\n // changes images in widget to icons\n const displayIcon = this.cssVariables[\"--beam-RedeemTransaction-cardStyle\"] === \"'icon'\";\n const submitButtonPosition = this.cssVariables[\"--beam-RedeemTransaction-submitButton-position\"];\n const submitButtonPositionClass =\n this.isMobile && submitButtonPosition === \"bottom\" ? \"positionBottom\" : \"positionRight\";\n\n return html`\n <style>\n :host {\n ${this.cssVariables.toCSS()}\n }\n </style>\n <!-- Custom flex order fixes tab cycling so submit button is after content -->\n <div style=\"display: flex; flex-direction: column;\" class=\"root\">\n <div\n style=\"order: 3;\"\n tabindex=\"-1\"\n class=\"options cardGrid ${classMap({ isHidden: !this.didUserExpandNonprofits && this.shouldCollapse })}\"\n part=\"options\"\n role=\"radiogroup\"\n aria-labelledby=\"beam-RedeemTransaction-title\"\n ?aria-disabled=${!this.allowChange}\n >\n ${repeat(\n nonprofits,\n (i) => i.nonprofit.id,\n (np, index) => {\n const isSelected = selectedNonprofitId === np.nonprofit.id;\n const isFocusable = isSelected || (selectedNonprofit == null && index === 0);\n return html`\n <div\n class=\"option ${classMap({\n isSelected: isSelected,\n isDisabled: !this.allowChange,\n })}\"\n part=\"option\"\n role=\"radio\"\n tabindex=\"${isFocusable ? 0 : -1}\"\n data-value=${np.nonprofit.id}\n ?aria-checked=${isSelected}\n @click=${this.makeHandleSelect(np.nonprofit.id, index, nonprofits)}\n @keydown=${this.makeHandleSelect(np.nonprofit.id, index, nonprofits)}\n aria-label=\"${localizeUserString(this.configLang, np.nonprofit.cause || \"\")}\"\n style=\"${styleMap({\n display: \"flex\",\n gap: \"15px\",\n padding: \"10px\",\n })}\"\n >\n ${displayIcon\n ? html` <div style=\"height: 100%; flex: 1; flex-direction: column;\">\n <img\n src=\"${np.nonprofit.causeIconUrl}\"\n alt=\"\"\n role=\"presentation\"\n style=\"\n flex: 1;\n height: auto;\n width: 100%;\n display: block;\n padding: var(--beam-RedeemTransaction-options-icon-padding);\n border-radius: var(--beam-RedeemTransaction-options-image-borderRadius, 0);\n \"\n />\n </div>`\n : html` <div style=\"height: 100%; flex: 1 0 33%; display: flex; flex-direction: column;\">\n <img\n src=\"${np.imageUrl}\"\n alt=\"\"\n role=\"presentation\"\n style=\"\n flex: 1;\n height: auto;\n width: 100%;\n object-fit: cover;\n border-radius: var(--beam-RedeemTransaction-options-image-borderRadius, 0);\n \"\n />\n </div>`}\n <div\n class=\"details\"\n part=\"details\"\n style=\"\n flex: 1 1 67%;\n height: 100%;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-content: stretch;\n align-items: stretch;\n position: relative;\n \"\n >\n <div\n class=\"details-cause\"\n style=\"flex: 0 1; ${useCustomText(\"--beam-RedeemTransaction-details-cause\")}\"\n >\n <span\n part=\"checkbox\"\n class=\"checkbox\"\n style=\"\n margin-left: 5px;\n float: right;\n padding: 4px;\n border-radius: 100%;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n \"\n >\n <span style=\"line-height: 0;\"> ${_checkbox({ height: \"10px\", width: \"10px\" })} </span>\n </span>\n ${localizeUserString(this.configLang, np.nonprofit.cause || \"\")}\n </div>\n <p class=\"details-impactDescription\" style=\"flex: 1 1;\">\n ${unsafeHTML(localizeUserString(this.configLang, np.impact.description || \"\"))}\n </p>\n <div\n style=\"display: flex; margin-top: var(--beam-RedeemTransaction-details-fundingProgress-marginTop); align-items: center;\"\n >\n <beam-progress-bar\n value=\"${np.impact.goalProgressPercentage}\"\n style=\"flex: 1 0;\"\n ></beam-progress-bar>\n <span\n class=\"details-fundingProgressLabel\"\n style=\"${useCustomText(\n \"--beam-RedeemTransaction-details-fundingProgressLabel\"\n )} white-space: nowrap; text-align: right; flex: 0 1; margin-left: 15px;\"\n >\n ${localizeUserString(this.configLang, np.impact.goalProgressText)}\n </span>\n </div>\n </div>\n </div>\n `;\n }\n )}\n </div>\n\n <div\n style=\"order: 2; flex-direction: ${this.isMobile && submitButtonPosition === \"bottom\" ? \"column\" : \"row\"};\"\n class=\"headerContainer\"\n >\n <div>\n <h3\n class=\"title\"\n part=\"title\"\n id=\"beam-RedeemTransaction-title\"\n style=\"${useCustomText(\"--beam-RedeemTransaction-title\")}\"\n >\n ${localizeUserString(this.configLang, data?.config?.web?.title) || strings[this.configLang].ctaTitle()}\n </h3>\n <p class=\"description\" part=\"description\" style=\"${useCustomText(\"--beam-RedeemTransaction-description\")}\">\n ${localizeUserString(this.configLang, data?.config?.web?.description)}\n </p>\n </div>\n ${this.didUserExpandNonprofits || !this.shouldCollapse\n ? html`<button\n type=\"button\"\n ?aria-disabled=${!this.allowSubmit}\n @click=\"${this.handleSubmit}\"\n class=\"${classMap({\n isDisabled: !this.allowSubmit,\n [submitButtonPositionClass]: true,\n submitButton: true,\n })}\"\n part=\"submitButton\"\n >\n ${this.selectionDataController.data !== null\n ? strings[this.configLang].submitButtonTextCompleted()\n : strings[this.configLang].submitButtonText()}\n </button>`\n : html`<button\n type=\"button\"\n @click=\"${this.handleChooseClick}\"\n class=\"submitButton ${submitButtonPositionClass}\"\n part=\"submitButton\"\n >\n ${strings[this.configLang].chooseButtonText()}\n </button>`}\n </div>\n\n <beam-partner-logos\n partnerName=\"${data.chain.name}\"\n partnerLogoUrl=\"${data.chain.logoUrl}\"\n style=\"order: 1\"\n ></beam-partner-logos>\n </div>\n `;\n }\n}\n\ndefineCustomElement(BeamRedeemTransaction);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-redeem-transaction\": BeamRedeemTransaction;\n }\n}\n"],"names":["_checkbox","height","width","html","styleMap","strings","donationPercentage","B","N","a","g","b","e","t","o","i","c","BeamRedeemTransaction","LitElement","DEFAULT_BASE_URL","checkForInvalidAttributeCombinations","MissingConfig","res","postChainEligibleNonprofitsForCart","selectedNonprofitId","enforceConfig","putTransaction","updateSubscription","AsyncController","createScopedLocalStorage","id","index","nonprofits","event","currentId","nextFocus","focusTarget","selectedNonprofit","np","BeamNonprofitSelectEvent","debounce","SUPPORTED_LANGUAGES","areRequiredKeysDefined","_changedProperties","previousPropertyValues","requireNewDataProps","prop","createdAt","data","cacheTtl","defaults","partnerLogosConfigDefaults","progressBarConfigDefaults","defineCustomText","remoteConfig","config","_cssVariableMap","enableMobileCollapse","enableDesktopCollapse","loading","_loading","_errorMessage","BeamError","displayIcon","submitButtonPosition","submitButtonPositionClass","classMap","repeat","isSelected","isFocusable","localizeUserString","useCustomText","unsafeHTML","cssReset","css","cssCardGrid","__decorateClass","property","state","defineCustomElement"],"mappings":"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"}
|
|
@@ -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
|
|
1
|
+
import{y as m,m as y,f as $,g as c,t as k,h as I,q as v,p as N,k as D}from"../chunks/lit-yVXn5Cbs.esm.js";import{d as z}from"../chunks/lodash-P8OIs-at.esm.js";import{c as L,d as E,b as U,e as x,A as B,f as w,a as W,_ as C}from"../chunks/enforce-config-fo8kIfoY.esm.js";import{D as A,b as P,i as M,u as F,S as K}from"../chunks/routes-a8lsE6eZ.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"
|
|
@@ -13,7 +13,7 @@ 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 z}from"../ch
|
|
|
13
13
|
/>
|
|
14
14
|
</g>
|
|
15
15
|
</svg>
|
|
16
|
-
`,f={en:{beamAttribution:()=>"Powered by Beam",ctaTitle:()=>"Choose your impact",ctaMessage:({donationPercentage:i="1%"})=>`Select a nonprofit and ${i} of your purchase will be donated, at no extra cost.`,submitButtonText:()=>"Confirm",submitButtonTextCompleted:()=>"Confirmed!",chooseButtonText:()=>"Choose"},fr:{beamAttribution:()=>"Optimis\xE9 par Beam",ctaTitle:()=>"Choisissez votre cause",ctaMessage:({donationPercentage:i="1%"})=>`Choisissez un organisme \xE0 but non lucratif et ${i}% lui sera vers\xE9 en votre nom, sans frais suppl\xE9mentaires.`,submitButtonText:()=>"Confirmer",submitButtonTextCompleted:()=>"Confirm\xE9!",chooseButtonText:()=>"Choisissez"},de:{beamAttribution:()=>"Unterst\xFCtzt von Beam",ctaTitle:()=>"W\xE4hle deinen Impact",ctaMessage:({donationPercentage:i="1%"}={})=>`W\xE4hle eine der gemeinn\xFCtzigen Organisationen und spende ${i} deines Einkaufs ohne zus\xE4tzliche Kosten`,submitButtonText:()=>"Best\xE4tigen",submitButtonTextCompleted:()=>"Best\xE4tigt!",chooseButtonText:()=>"W\xE4hlen"},es:{ctaTitle:()=>"Elige tu contribuci\xF3n",ctaMessage:({donationPercentage:i="1%"})=>`Elige una organizaci\xF3n sin fines de lucro y donaremos ${i} de tu compra sin coste adicional.`,beamAttribution:()=>"Ofrecido por Beam",submitButtonText:()=>"Confirmar",submitButtonTextCompleted:()=>"\xA1Confirmado!",chooseButtonText:()=>"Elige"},it:{ctaTitle:()=>"Scegli dove fare la differenza",ctaMessage:({donationPercentage:i="1%"})=>`Seleziona un'organizzazione no-profit a cui devolvere l\u2019${i} del tuo acquisto, senza costi aggiuntivi`,beamAttribution:()=>"Gestito da Beam",submitButtonText:()=>"Confermare",submitButtonTextCompleted:()=>"Confermato!",chooseButtonText:()=>"Scegli"},pl:{beamAttribution:()=>"Wspierany przez Beam",ctaTitle:()=>"Wybierz inicjatyw\u0119, kt\xF3r\u0105 chcesz wesprze\u0107",ctaMessage:({donationPercentage:i="1%"})=>`Wybierz organizacj\u0119, kt\xF3rej przeka\u017Cesz ${i} warto\u015Bci Twoich zakup\xF3w \u2013 bez \u017Cadnych dodatkowych koszt\xF3w!`,submitButtonText:()=>"Zatwierd\u017A",submitButtonTextCompleted:()=>"Zatwierdzono!",chooseButtonText:()=>"Wybierz"}};var Q=Object.defineProperty,X=Object.getOwnPropertyDescriptor,s=(i,e,t,o)=>{for(var a=o>1?void 0:o?X(e,t):e,l=i.length-1,d;l>=0;l--)(d=i[l])&&(a=(o?d(e,t,a):d(a))||a);return o&&a&&Q(e,t,a),a};class n extends I{constructor(){super(...arguments),this.baseUrl=A,this.lang="en",this.debug=!1,this.isMobile=window.innerWidth<768,this.didUserExpandNonprofits=!1,this.getChainNonprofits=async()=>{if(W(["transactionId","subscriptionId"],this),!this.hasCorrectTransactionConfig&&!this.hasCorrectSubscriptionConfig)throw new q;const e=await P({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{storeId:this.storeId,postalCode:this.postalCode,countryCode:this.countryCode,cart:this.cart??void 0,widgetName:"redeem-transaction",version:"1.0.0",lang:this.configLang}});return e.store?.id&&e.store.id!==this.storeId&&(this.storeId=e.store.id),this.localStorage.setItemJson("chainNonprofits",{createdAt:new Date,data:e}),e},this.updateNonprofitIdForRecord=async({selectedNonprofitId:e})=>this.transactionId?this.putTransaction({selectedNonprofitId:e}):this.subscriptionId?this.putSubscription({selectedNonprofitId:e}):null,this.putTransaction=async({selectedNonprofitId:e})=>(x(["apiKey","transactionId"],this),M({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},pathParams:{transactionId:Number(this.transactionId)},requestBody:{nonprofitId:e}})),this.putSubscription=async({selectedNonprofitId:e})=>(x(["apiKey","subscriptionId"],this),F({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{remoteSubscriptionId:this.subscriptionId,nonprofitId:e}})),this.nonprofitListDataController=new B(this,this.getChainNonprofits),this.selectionDataController=new B(this,this.updateNonprofitIdForRecord),this.localStorage=H(this),this.makeHandleSelect=(e,t,o)=>async a=>{if(!this.allowChange)return;const l=this.selectedNonprofitId;if(a instanceof KeyboardEvent){let d=null;switch(a.key){case"ArrowUp":case"ArrowLeft":t===0?d=o[o.length-1]:d=o[t-1],a.preventDefault();break;case"ArrowRight":case"ArrowDown":t===o.length-1?d=o[0]:d=o[t+1],a.preventDefault();break;case"Enter":case" ":a.preventDefault();break;default:return}if(d){const b=this.renderRoot.querySelector(`[data-value="${d.nonprofit.id}"]`);b!==null&&(b.tabIndex=0,b.focus());return}}if(a.currentTarget instanceof HTMLElement){if(l===e)return;this.selectedNonprofitId=e}},this.handleSubmit=async()=>{const{selectedNonprofitId:e}=this;if(!this.allowSubmit||e==null)return;await this.selectionDataController.exec({selectedNonprofitId:e}),this.localStorage.setItem("nonprofit",e);const t=this.nonprofitListDataController?.data?.nonprofits.find(o=>o.nonprofit.id===e);this.dispatchEvent(new J({selectedNonprofitId:e,nonprofitName:t?.nonprofit.name}))},this.evaluateBreakPoints=D(()=>{this.isMobile=window.innerWidth<768},50,{maxWait:50,leading:!0})}get configLang(){return K[this.lang]||"en"}get hasCorrectTransactionConfig(){return w(["apiKey","transactionId"],this)}get hasCorrectSubscriptionConfig(){return w(["apiKey","subscriptionId"],this)}connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this.evaluateBreakPoints)}async firstUpdated(e){await this.restoreStateFromCache()}async updated(e){const t=["baseUrl","storeId","apiKey","countryCode","postalCode","lang"];for(const o of t)if(e.has(o)){await this.nonprofitListDataController.exec();break}}disconnectedCallback(){super.disconnectedCallback()}restoreStateFromCache(){x(["apiKey"],this),this.selectedNonprofitId=parseInt(this.localStorage.getItem("nonprofit")||"")||void 0;try{const{createdAt:e=0,data:t}=this.localStorage.getItemJson("chainNonprofits")||{},o=2*60*60*1e3;new Date(e).valueOf()+o>new Date().valueOf()&&(this.nonprofitListDataController.data=t,this.nonprofitListDataController.loading=!1)}catch{}}get allowChange(){return this.selectionDataController.data==null&&!this.selectionDataController.loading}get allowSubmit(){return!!(this.selectedNonprofitId&&this.allowChange)}get cssVariables(){const e={"--beam-fontFamily":"inherit","--beam-fontStyle":"inherit","--beam-fontSize":"inherit","--beam-textColor":"inherit","--beam-backgroundColor":"inherit",...O,...j,"--beam-RedeemTransaction-maxWidth":"1000px","--beam-RedeemTransaction-submitButton-color":"#fff","--beam-RedeemTransaction-submitButton-hover-color":"#fff","--beam-RedeemTransaction-submitButton-disabled-color":"#fff","--beam-RedeemTransaction-submitButton-backgroundColor":"#333","--beam-RedeemTransaction-submitButton-hover-backgroundColor":"#222","--beam-RedeemTransaction-submitButton-disabled-backgroundColor":"#767676","--beam-RedeemTransaction-submitButton-borderColor":"#333","--beam-RedeemTransaction-submitButton-hover-borderColor":"#222","--beam-RedeemTransaction-submitButton-disabled-borderColor":"#767676","--beam-RedeemTransaction-submitButton-fontSize":"14px","--beam-RedeemTransaction-submitButton-fontWeight":"inherit","--beam-RedeemTransaction-submitButton-fontFamily":"inherit","--beam-RedeemTransaction-submitButton-textTransform":"none","--beam-RedeemTransaction-submitButton-borderRadius":"0px","--beam-RedeemTransaction-submitButton-padding":"15px 30px","--beam-RedeemTransaction-submitButton-position":"right","--beam-RedeemTransaction-submitButton-positionRight-width":"auto","--beam-RedeemTransaction-submitButton-positionBottom-width":"100%","--beam-RedeemTransaction-submitButton-positionBottom-marginTop":"10px","--beam-RedeemTransaction-checkmark-color":"transparent","--beam-RedeemTransaction-checkmark-selected-color":"#fff","--beam-RedeemTransaction-checkmark-hover-color":"#fff","--beam-RedeemTransaction-checkmark-backgroundColor":"transparent","--beam-RedeemTransaction-checkmark-selected-backgroundColor":"#333","--beam-RedeemTransaction-checkmark-hover-backgroundColor":"#d9d9d9","--beam-RedeemTransaction-checkmark-borderColor":"transparent","--beam-RedeemTransaction-checkmark-selected-borderColor":"#333","--beam-RedeemTransaction-checkmark-hover-borderColor":"#d9d9d9","--beam-RedeemTransaction-options-minWidth":"250px","--beam-RedeemTransaction-options-columnCount":"2","--beam-RedeemTransaction-options-borderRadius":"0px","--beam-RedeemTransaction-options-borderWidth":"1px","--beam-RedeemTransaction-options-selected-borderWidth":"2px","--beam-RedeemTransaction-options-focus-borderWidth":"1px","--beam-RedeemTransaction-options-image-borderRadius":"0px","--beam-RedeemTransaction-options-borderColor":"#d9d9d9","--beam-RedeemTransaction-options-selected-borderColor":"currentColor","--beam-RedeemTransaction-options-hover-borderColor":"#ccc","--beam-RedeemTransaction-options-backgroundColor":"transparent","--beam-RedeemTransaction-options-selected-backgroundColor":"transparent","--beam-RedeemTransaction-options-hover-backgroundColor":"#f1f1f1","--beam-RedeemTransaction-options-marginTop":"15px",...h("--beam-RedeemTransaction-title",{fontSize:"1.25em",fontWeight:"bold"}),...h("--beam-RedeemTransaction-description",{marginTop:"0.5em"}),...h("--beam-RedeemTransaction-details-cause",{fontSize:"1em",fontWeight:"bold"}),...h("--beam-RedeemTransaction-details-impactDescription",{fontSize:"0.85em",marginTop:"10px"}),"--beam-RedeemTransaction-details-nonprofitName-fontWeight":"bold","--beam-RedeemTransaction-details-nonprofitName-fontStyle":"inherit","--beam-RedeemTransaction-details-fundingProgress-marginTop":"10px",...h("--beam-RedeemTransaction-details-fundingProgressLabel",{fontSize:"0.85em"}),"--beam-RedeemTransaction-cardStyle":"'image'","--beam-RedeemTransaction-options-icon-padding":"0px","--beam-RedeemTransaction-options-collapseNonprofits-mobile":"false","--beam-RedeemTransaction-options-collapseNonprofits-desktop":"false"},t=this.nonprofitListDataController?.data?.config?.web?.theme||{},o={...e,...t};return Object.assign(Object.create({toCSS(){return U(this)}}),o)}handleChooseClick(){this.didUserExpandNonprofits=!0}get shouldCollapse(){const e=this.cssVariables["--beam-RedeemTransaction-options-collapseNonprofits-mobile"]==="true",t=this.cssVariables["--beam-RedeemTransaction-options-collapseNonprofits-desktop"]==="true";return this.isMobile&&e||!this.isMobile&&t}render(){const{selectedNonprofitId:e}=this,{data:t,loading:o}=this.nonprofitListDataController;if(o&&!t)return _();if(this.nonprofitListDataController.error)return this.debug?C({error:this.nonprofitListDataController.error}):"";if(this.selectionDataController.error&&this.debug)return C({error:this.selectionDataController.error});if(t==null)return this.debug?C({error:new V("No data")}):"";const a=t?.nonprofits||[],l=a.find(r=>r.nonprofit.id===e)||null,d=this.cssVariables["--beam-RedeemTransaction-cardStyle"]==="'icon'",b=this.cssVariables["--beam-RedeemTransaction-submitButton-position"],R=this.isMobile&&b==="bottom"?"positionBottom":"positionRight";return m`
|
|
16
|
+
`,f={en:{beamAttribution:()=>"Powered by Beam",ctaTitle:()=>"Choose your impact",ctaMessage:({donationPercentage:i="1%"})=>`Select a nonprofit and ${i} of your purchase will be donated, at no extra cost.`,submitButtonText:()=>"Confirm",submitButtonTextCompleted:()=>"Confirmed!",chooseButtonText:()=>"Choose"},fr:{beamAttribution:()=>"Optimis\xE9 par Beam",ctaTitle:()=>"Choisissez votre cause",ctaMessage:({donationPercentage:i="1%"})=>`Choisissez un organisme \xE0 but non lucratif et ${i}% lui sera vers\xE9 en votre nom, sans frais suppl\xE9mentaires.`,submitButtonText:()=>"Confirmer",submitButtonTextCompleted:()=>"Confirm\xE9!",chooseButtonText:()=>"Choisissez"},de:{beamAttribution:()=>"Unterst\xFCtzt von Beam",ctaTitle:()=>"W\xE4hle deinen Impact",ctaMessage:({donationPercentage:i="1%"}={})=>`W\xE4hle eine der gemeinn\xFCtzigen Organisationen und spende ${i} deines Einkaufs ohne zus\xE4tzliche Kosten`,submitButtonText:()=>"Best\xE4tigen",submitButtonTextCompleted:()=>"Best\xE4tigt!",chooseButtonText:()=>"W\xE4hlen"},es:{ctaTitle:()=>"Elige tu contribuci\xF3n",ctaMessage:({donationPercentage:i="1%"})=>`Elige una organizaci\xF3n sin fines de lucro y donaremos ${i} de tu compra sin coste adicional.`,beamAttribution:()=>"Ofrecido por Beam",submitButtonText:()=>"Confirmar",submitButtonTextCompleted:()=>"\xA1Confirmado!",chooseButtonText:()=>"Elige"},it:{ctaTitle:()=>"Scegli dove fare la differenza",ctaMessage:({donationPercentage:i="1%"})=>`Seleziona un'organizzazione no-profit a cui devolvere l\u2019${i} del tuo acquisto, senza costi aggiuntivi`,beamAttribution:()=>"Gestito da Beam",submitButtonText:()=>"Confermare",submitButtonTextCompleted:()=>"Confermato!",chooseButtonText:()=>"Scegli"},pl:{beamAttribution:()=>"Wspierany przez Beam",ctaTitle:()=>"Wybierz inicjatyw\u0119, kt\xF3r\u0105 chcesz wesprze\u0107",ctaMessage:({donationPercentage:i="1%"})=>`Wybierz organizacj\u0119, kt\xF3rej przeka\u017Cesz ${i} warto\u015Bci Twoich zakup\xF3w \u2013 bez \u017Cadnych dodatkowych koszt\xF3w!`,submitButtonText:()=>"Zatwierd\u017A",submitButtonTextCompleted:()=>"Zatwierdzono!",chooseButtonText:()=>"Wybierz"}};var Q=Object.defineProperty,X=Object.getOwnPropertyDescriptor,s=(i,e,t,o)=>{for(var a=o>1?void 0:o?X(e,t):e,l=i.length-1,d;l>=0;l--)(d=i[l])&&(a=(o?d(e,t,a):d(a))||a);return o&&a&&Q(e,t,a),a};class n extends I{constructor(){super(...arguments),this.baseUrl=A,this.lang="en",this.debug=!1,this.isMobile=window.innerWidth<768,this.didUserExpandNonprofits=!1,this.getChainNonprofits=async()=>{if(U(["transactionId","subscriptionId"],this),!this.hasCorrectTransactionConfig&&!this.hasCorrectSubscriptionConfig)throw new q;const e=await P({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{storeId:this.storeId,postalCode:this.postalCode,countryCode:this.countryCode,cart:this.cart??void 0,widgetName:"redeem-transaction",version:"1.0.0",lang:this.configLang}});return e.store?.id&&e.store.id!==this.storeId&&(this.storeId=e.store.id),this.localStorage.setItemJson("chainNonprofits",{createdAt:new Date,data:e}),e},this.updateNonprofitIdForRecord=async({selectedNonprofitId:e})=>this.transactionId?this.putTransaction({selectedNonprofitId:e}):this.subscriptionId?this.putSubscription({selectedNonprofitId:e}):null,this.putTransaction=async({selectedNonprofitId:e})=>(x(["apiKey","transactionId"],this),M({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},pathParams:{transactionId:Number(this.transactionId)},requestBody:{nonprofitId:e}})),this.putSubscription=async({selectedNonprofitId:e})=>(x(["apiKey","subscriptionId"],this),F({baseUrl:this.baseUrl,headers:{authorization:`Api-Key ${this.apiKey}`},requestBody:{remoteSubscriptionId:this.subscriptionId,nonprofitId:e}})),this.nonprofitListDataController=new B(this,this.getChainNonprofits),this.selectionDataController=new B(this,this.updateNonprofitIdForRecord),this.localStorage=H(this),this.makeHandleSelect=(e,t,o)=>async a=>{if(!this.allowChange)return;const l=this.selectedNonprofitId;if(a instanceof KeyboardEvent){let d=null;switch(a.key){case"ArrowUp":case"ArrowLeft":t===0?d=o[o.length-1]:d=o[t-1],a.preventDefault();break;case"ArrowRight":case"ArrowDown":t===o.length-1?d=o[0]:d=o[t+1],a.preventDefault();break;case"Enter":case" ":a.preventDefault();break;default:return}if(d){const b=this.renderRoot.querySelector(`[data-value="${d.nonprofit.id}"]`);b!==null&&(b.tabIndex=0,b.focus());return}}if(a.currentTarget instanceof HTMLElement){if(l===e)return;this.selectedNonprofitId=e}},this.handleSubmit=async()=>{const{selectedNonprofitId:e}=this;if(!this.allowSubmit||e==null)return;await this.selectionDataController.exec({selectedNonprofitId:e}),this.shouldUseStoredSelection&&(this.localStorage.setItem("nonprofit",e),this.localStorage.setItem("nonprofit_selected_at",new Date().toISOString()));const t=this.nonprofitListDataController?.data?.nonprofits.find(o=>o.nonprofit.id===e);this.dispatchEvent(new J({selectedNonprofitId:e,nonprofitName:t?.nonprofit.name}))},this.evaluateBreakPoints=z(()=>{this.isMobile=window.innerWidth<768},50,{maxWait:50,leading:!0})}get configLang(){return K[this.lang]||"en"}get hasCorrectTransactionConfig(){return w(["apiKey","transactionId"],this)}get hasCorrectSubscriptionConfig(){return w(["apiKey","subscriptionId"],this)}connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this.evaluateBreakPoints)}async firstUpdated(e){await this.restoreStateFromCache()}async updated(e){const t=["baseUrl","storeId","apiKey","countryCode","postalCode","lang"];for(const o of t)if(e.has(o)){await this.nonprofitListDataController.exec();break}}disconnectedCallback(){super.disconnectedCallback()}restoreStateFromCache(){x(["apiKey"],this),this.shouldUseStoredSelection&&(this.selectedNonprofitId=parseInt(this.localStorage.getItem("nonprofit")||"")||void 0);try{const{createdAt:e=0,data:t}=this.localStorage.getItemJson("chainNonprofits")||{},o=2*60*60*1e3;new Date(e).valueOf()+o>new Date().valueOf()&&(this.nonprofitListDataController.data=t,this.nonprofitListDataController.loading=!1)}catch{}}get allowChange(){return this.selectionDataController.data==null&&!this.selectionDataController.loading}get allowSubmit(){return!!(this.selectedNonprofitId&&this.allowChange)}get shouldUseStoredSelection(){return!this.subscriptionId}get cssVariables(){const e={"--beam-fontFamily":"inherit","--beam-fontStyle":"inherit","--beam-fontSize":"inherit","--beam-textColor":"inherit","--beam-backgroundColor":"inherit",...j,...O,"--beam-RedeemTransaction-maxWidth":"1000px","--beam-RedeemTransaction-submitButton-color":"#fff","--beam-RedeemTransaction-submitButton-hover-color":"#fff","--beam-RedeemTransaction-submitButton-disabled-color":"#fff","--beam-RedeemTransaction-submitButton-backgroundColor":"#333","--beam-RedeemTransaction-submitButton-hover-backgroundColor":"#222","--beam-RedeemTransaction-submitButton-disabled-backgroundColor":"#767676","--beam-RedeemTransaction-submitButton-borderColor":"#333","--beam-RedeemTransaction-submitButton-hover-borderColor":"#222","--beam-RedeemTransaction-submitButton-disabled-borderColor":"#767676","--beam-RedeemTransaction-submitButton-fontSize":"14px","--beam-RedeemTransaction-submitButton-fontWeight":"inherit","--beam-RedeemTransaction-submitButton-fontFamily":"inherit","--beam-RedeemTransaction-submitButton-textTransform":"none","--beam-RedeemTransaction-submitButton-borderRadius":"0px","--beam-RedeemTransaction-submitButton-padding":"15px 30px","--beam-RedeemTransaction-submitButton-position":"right","--beam-RedeemTransaction-submitButton-positionRight-width":"auto","--beam-RedeemTransaction-submitButton-positionBottom-width":"100%","--beam-RedeemTransaction-submitButton-positionBottom-marginTop":"10px","--beam-RedeemTransaction-checkmark-color":"transparent","--beam-RedeemTransaction-checkmark-selected-color":"#fff","--beam-RedeemTransaction-checkmark-hover-color":"#fff","--beam-RedeemTransaction-checkmark-backgroundColor":"transparent","--beam-RedeemTransaction-checkmark-selected-backgroundColor":"#333","--beam-RedeemTransaction-checkmark-hover-backgroundColor":"#d9d9d9","--beam-RedeemTransaction-checkmark-borderColor":"transparent","--beam-RedeemTransaction-checkmark-selected-borderColor":"#333","--beam-RedeemTransaction-checkmark-hover-borderColor":"#d9d9d9","--beam-RedeemTransaction-options-minWidth":"250px","--beam-RedeemTransaction-options-columnCount":"2","--beam-RedeemTransaction-options-borderRadius":"0px","--beam-RedeemTransaction-options-borderWidth":"1px","--beam-RedeemTransaction-options-selected-borderWidth":"2px","--beam-RedeemTransaction-options-focus-borderWidth":"1px","--beam-RedeemTransaction-options-image-borderRadius":"0px","--beam-RedeemTransaction-options-borderColor":"#d9d9d9","--beam-RedeemTransaction-options-selected-borderColor":"currentColor","--beam-RedeemTransaction-options-hover-borderColor":"#ccc","--beam-RedeemTransaction-options-backgroundColor":"transparent","--beam-RedeemTransaction-options-selected-backgroundColor":"transparent","--beam-RedeemTransaction-options-hover-backgroundColor":"#f1f1f1","--beam-RedeemTransaction-options-marginTop":"15px",...h("--beam-RedeemTransaction-title",{fontSize:"1.25em",fontWeight:"bold"}),...h("--beam-RedeemTransaction-description",{marginTop:"0.5em"}),...h("--beam-RedeemTransaction-details-cause",{fontSize:"1em",fontWeight:"bold"}),...h("--beam-RedeemTransaction-details-impactDescription",{fontSize:"0.85em",marginTop:"10px"}),"--beam-RedeemTransaction-details-nonprofitName-fontWeight":"bold","--beam-RedeemTransaction-details-nonprofitName-fontStyle":"inherit","--beam-RedeemTransaction-details-fundingProgress-marginTop":"10px",...h("--beam-RedeemTransaction-details-fundingProgressLabel",{fontSize:"0.85em"}),"--beam-RedeemTransaction-cardStyle":"'image'","--beam-RedeemTransaction-options-icon-padding":"0px","--beam-RedeemTransaction-options-collapseNonprofits-mobile":"false","--beam-RedeemTransaction-options-collapseNonprofits-desktop":"false"},t=this.nonprofitListDataController?.data?.config?.web?.theme||{},o={...e,...t};return Object.assign(Object.create({toCSS(){return W(this)}}),o)}handleChooseClick(){this.didUserExpandNonprofits=!0}get shouldCollapse(){const e=this.cssVariables["--beam-RedeemTransaction-options-collapseNonprofits-mobile"]==="true",t=this.cssVariables["--beam-RedeemTransaction-options-collapseNonprofits-desktop"]==="true";return this.isMobile&&e||!this.isMobile&&t}render(){const{selectedNonprofitId:e}=this,{data:t,loading:o}=this.nonprofitListDataController;if(o&&!t)return _();if(this.nonprofitListDataController.error)return this.debug?C({error:this.nonprofitListDataController.error}):"";if(this.selectionDataController.error&&this.debug)return C({error:this.selectionDataController.error});if(t==null)return this.debug?C({error:new V("No data")}):"";const a=t?.nonprofits||[],l=a.find(r=>r.nonprofit.id===e)||null,d=this.cssVariables["--beam-RedeemTransaction-cardStyle"]==="'icon'",b=this.cssVariables["--beam-RedeemTransaction-submitButton-position"],R=this.isMobile&&b==="bottom"?"positionBottom":"positionRight";return m`
|
|
17
17
|
<style>
|
|
18
18
|
:host {
|
|
19
19
|
${this.cssVariables.toCSS()}
|
|
@@ -108,7 +108,7 @@ 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 z}from"../ch
|
|
|
108
108
|
${p(this.configLang,r.nonprofit.cause||"")}
|
|
109
109
|
</div>
|
|
110
110
|
<p class="details-impactDescription" style="flex: 1 1;">
|
|
111
|
-
${
|
|
111
|
+
${D(p(this.configLang,r.impact.description||""))}
|
|
112
112
|
</p>
|
|
113
113
|
<div
|
|
114
114
|
style="display: flex; margin-top: var(--beam-RedeemTransaction-details-fundingProgress-marginTop); align-items: center;"
|