@internetarchive/elements 1.1.7-webdev-9378.0 → 1.1.7-webdev-9054.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/elements/ia-donation-form/analytics.d.ts +12 -0
- package/dist/src/elements/ia-donation-form/analytics.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/analytics.js +2 -0
- package/dist/src/elements/ia-donation-form/analytics.js.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/braintree-manager-interface.d.ts +79 -0
- package/dist/src/elements/ia-donation-form/braintree/braintree-manager-interface.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/braintree-manager-interface.js +2 -0
- package/dist/src/elements/ia-donation-form/braintree/braintree-manager-interface.js.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/braintree-manager.d.ts +73 -0
- package/dist/src/elements/ia-donation-form/braintree/braintree-manager.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/braintree-manager.js +126 -0
- package/dist/src/elements/ia-donation-form/braintree/braintree-manager.js.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/hosting-environment.d.ts +10 -0
- package/dist/src/elements/ia-donation-form/braintree/hosting-environment.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/hosting-environment.js +9 -0
- package/dist/src/elements/ia-donation-form/braintree/hosting-environment.js.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-clients.d.ts +47 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-clients.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-clients.js +104 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-clients.js.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-interface.d.ts +11 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-interface.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-interface.js +2 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-interface.js.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource-interface.d.ts +20 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource-interface.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource-interface.js +2 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource-interface.js.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource.d.ts +21 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource.js +83 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource.js.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-manager.d.ts +11 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-manager.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-manager.js +13 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-manager.js.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay.d.ts +27 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay.js +67 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay.js.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card-interface.d.ts +19 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card-interface.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card-interface.js +2 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card-interface.js.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card.d.ts +42 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card.js +99 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card.js.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-configuration.d.ts +14 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-configuration.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-configuration.js +9 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-configuration.js.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-container.d.ts +40 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-container.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-container.js +58 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-container.js.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay-interface.d.ts +8 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay-interface.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay-interface.js +2 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay-interface.js.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay.d.ts +19 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay.js +45 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay.js.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-button-datasource.d.ts +57 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-button-datasource.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-button-datasource.js +44 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-button-datasource.js.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-interface.d.ts +14 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-interface.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-interface.js +2 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-interface.js.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal.d.ts +27 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal.js +44 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal.js.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-interface.d.ts +8 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-interface.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-interface.js +2 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-interface.js.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-restoration-state-handler.d.ts +44 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-restoration-state-handler.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-restoration-state-handler.js +65 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-restoration-state-handler.js.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo.d.ts +25 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo.js +42 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo.js.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers-interface.d.ts +18 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers-interface.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers-interface.js +2 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers-interface.js.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers.d.ts +42 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers.js +99 -0
- package/dist/src/elements/ia-donation-form/braintree/payment-providers.js.map +1 -0
- package/dist/src/elements/ia-donation-form/donation-form-error.d.ts +5 -0
- package/dist/src/elements/ia-donation-form/donation-form-error.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/donation-form-error.js +8 -0
- package/dist/src/elements/ia-donation-form/donation-form-error.js.map +1 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/donation-flow-modal-manager.d.ts +118 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/donation-flow-modal-manager.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/donation-flow-modal-manager.js +194 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/donation-flow-modal-manager.js.map +1 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/apple-pay-flow-handler.d.ts +24 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/apple-pay-flow-handler.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/apple-pay-flow-handler.js +70 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/apple-pay-flow-handler.js.map +1 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/credit-card-flow-handler.d.ts +44 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/credit-card-flow-handler.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/credit-card-flow-handler.js +116 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/credit-card-flow-handler.js.map +1 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/google-pay-flow-handler.d.ts +24 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/google-pay-flow-handler.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/google-pay-flow-handler.js +74 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/google-pay-flow-handler.js.map +1 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/paypal-flow-handler.d.ts +47 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/paypal-flow-handler.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/paypal-flow-handler.js +204 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/paypal-flow-handler.js.map +1 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/venmo-flow-handler.d.ts +30 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/venmo-flow-handler.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/venmo-flow-handler.js +77 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/handlers/venmo-flow-handler.js.map +1 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/payment-flow-handlers.d.ts +80 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/payment-flow-handlers.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/payment-flow-handlers.js +72 -0
- package/dist/src/elements/ia-donation-form/flow-handlers/payment-flow-handlers.js.map +1 -0
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/autocomplete-field-options.d.ts +2 -0
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/autocomplete-field-options.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/autocomplete-field-options.js +2 -0
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/autocomplete-field-options.js.map +1 -0
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/countries.d.ts +3 -0
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/countries.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/countries.js +254 -0
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/countries.js.map +1 -0
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/ia-donation-contact-form.d.ts +68 -0
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/ia-donation-contact-form.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/ia-donation-contact-form.js +483 -0
- package/dist/src/elements/ia-donation-form/form-elements/contact-form/ia-donation-contact-form.js.map +1 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-badged-input.d.ts +26 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-badged-input.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-badged-input.js +163 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-badged-input.js.map +1 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-credit-card-fields.d.ts +39 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-credit-card-fields.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-credit-card-fields.js +212 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-credit-card-fields.js.map +1 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-edit-donation.d.ts +118 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-edit-donation.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-edit-donation.js +774 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-edit-donation.js.map +1 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-header.d.ts +31 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-header.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-header.js +93 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-header.js.map +1 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-payment-selector.d.ts +33 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-payment-selector.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-payment-selector.js +380 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-payment-selector.js.map +1 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-summary.d.ts +11 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-summary.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-summary.js +59 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-summary.js.map +1 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-total-amount.d.ts +10 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-total-amount.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-total-amount.js +75 -0
- package/dist/src/elements/ia-donation-form/form-elements/ia-donation-total-amount.js.map +1 -0
- package/dist/src/elements/ia-donation-form/ia-donation-form-controller.d.ts +111 -0
- package/dist/src/elements/ia-donation-form/ia-donation-form-controller.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/ia-donation-form-controller.js +522 -0
- package/dist/src/elements/ia-donation-form/ia-donation-form-controller.js.map +1 -0
- package/dist/src/elements/ia-donation-form/ia-donation-form.d.ts +95 -0
- package/dist/src/elements/ia-donation-form/ia-donation-form.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/ia-donation-form.js +522 -0
- package/dist/src/elements/ia-donation-form/ia-donation-form.js.map +1 -0
- package/dist/src/elements/ia-donation-form/icons/apple-pay.svg +22 -0
- package/dist/src/elements/ia-donation-form/icons/calendar.svg +12 -0
- package/dist/src/elements/ia-donation-form/icons/credit-card.svg +7 -0
- package/dist/src/elements/ia-donation-form/icons/google-pay.svg +38 -0
- package/dist/src/elements/ia-donation-form/icons/lock.svg +6 -0
- package/dist/src/elements/ia-donation-form/icons/paypal.svg +39 -0
- package/dist/src/elements/ia-donation-form/icons/venmo.svg +9 -0
- package/dist/src/elements/ia-donation-form/icons.d.ts +9 -0
- package/dist/src/elements/ia-donation-form/icons.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/icons.js +27 -0
- package/dist/src/elements/ia-donation-form/icons.js.map +1 -0
- package/dist/src/elements/ia-donation-form/modals/ia-donation-confirm-modal.d.ts +27 -0
- package/dist/src/elements/ia-donation-form/modals/ia-donation-confirm-modal.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/modals/ia-donation-confirm-modal.js +195 -0
- package/dist/src/elements/ia-donation-form/modals/ia-donation-confirm-modal.js.map +1 -0
- package/dist/src/elements/ia-donation-form/modals/ia-donation-error-modal-content.d.ts +7 -0
- package/dist/src/elements/ia-donation-form/modals/ia-donation-error-modal-content.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/modals/ia-donation-error-modal-content.js +63 -0
- package/dist/src/elements/ia-donation-form/modals/ia-donation-error-modal-content.js.map +1 -0
- package/dist/src/elements/ia-donation-form/modals/ia-donation-upsell-modal-content.d.ts +28 -0
- package/dist/src/elements/ia-donation-form/modals/ia-donation-upsell-modal-content.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/modals/ia-donation-upsell-modal-content.js +313 -0
- package/dist/src/elements/ia-donation-form/modals/ia-donation-upsell-modal-content.js.map +1 -0
- package/dist/src/elements/ia-donation-form/recaptcha-manager.d.ts +36 -0
- package/dist/src/elements/ia-donation-form/recaptcha-manager.d.ts.map +1 -0
- package/dist/src/elements/ia-donation-form/recaptcha-manager.js +76 -0
- package/dist/src/elements/ia-donation-form/recaptcha-manager.js.map +1 -0
- package/dist/src/elements/ia-image-viewer/image-viewer-gestures.d.ts.map +1 -1
- package/dist/src/elements/ia-image-viewer/image-viewer-gestures.js +2 -4
- package/dist/src/elements/ia-image-viewer/image-viewer-gestures.js.map +1 -1
- package/package.json +12 -1
|
@@ -0,0 +1,522 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { html, LitElement, } from 'lit';
|
|
3
|
+
import { property, query } from 'lit/decorators.js';
|
|
4
|
+
import { customElement } from '../../util/custom-element.js';
|
|
5
|
+
import currency from 'currency.js';
|
|
6
|
+
import { LazyLoaderService, } from '@internetarchive/lazy-loader-service';
|
|
7
|
+
import { BraintreeManager } from './braintree/braintree-manager.js';
|
|
8
|
+
import { PaymentClients, } from './braintree/payment-clients.js';
|
|
9
|
+
import { HostedFieldConfiguration } from './braintree/payment-providers/credit-card/hosted-field-configuration.js';
|
|
10
|
+
import { PaymentFlowHandlers, } from './flow-handlers/payment-flow-handlers.js';
|
|
11
|
+
import { EditDonationAmountSelectionLayout, EditDonationFrequencySelectionMode, } from './form-elements/ia-donation-edit-donation.js';
|
|
12
|
+
import { DonationPaymentInfo, defaultDonationAmounts, defaultSelectedDonationInfo, } from './models/donation-payment-info.js';
|
|
13
|
+
import { DonationType } from './models/donation-type.js';
|
|
14
|
+
import { RecaptchaManager, } from './recaptcha-manager.js';
|
|
15
|
+
import './form-elements/contact-form/ia-donation-contact-form.js';
|
|
16
|
+
import './form-elements/ia-donation-credit-card-fields.js';
|
|
17
|
+
import './ia-donation-form.js';
|
|
18
|
+
/**
|
|
19
|
+
* Wires the donation form to everything around it: Braintree and the payment
|
|
20
|
+
* libraries, the modal manager, recaptcha, and analytics. Give it the
|
|
21
|
+
* environment, tokens and an endpoint manager and it builds the rest.
|
|
22
|
+
*
|
|
23
|
+
* It renders into the light DOM, because Braintree's hosted fields, the
|
|
24
|
+
* PayPal button and recaptcha all refuse to work inside a shadow root. Those
|
|
25
|
+
* are rendered here and slotted into `<ia-donation-form>`.
|
|
26
|
+
*/
|
|
27
|
+
let IADonationFormController = class IADonationFormController extends LitElement {
|
|
28
|
+
constructor() {
|
|
29
|
+
super(...arguments);
|
|
30
|
+
this.analyticsCategory = 'DonationForm';
|
|
31
|
+
this.amountOptions = defaultDonationAmounts;
|
|
32
|
+
this.donationInfo = defaultSelectedDonationInfo;
|
|
33
|
+
this.amountSelectionLayout = EditDonationAmountSelectionLayout.MultiLine;
|
|
34
|
+
this.frequencySelectionMode = EditDonationFrequencySelectionMode.Button;
|
|
35
|
+
this.donorEmail = '';
|
|
36
|
+
this.lazyLoaderService = new LazyLoaderService();
|
|
37
|
+
this.recaptchaManagerSetup = false;
|
|
38
|
+
}
|
|
39
|
+
updated(changedProperties) {
|
|
40
|
+
if (changedProperties.has('referrer') && this.referrer) {
|
|
41
|
+
this.braintreeManager?.setReferrer(this.referrer);
|
|
42
|
+
this.logDonationFlowEvent('referrer', this.referrer);
|
|
43
|
+
}
|
|
44
|
+
if (changedProperties.has('loggedInUser') && this.loggedInUser) {
|
|
45
|
+
this.braintreeManager?.setLoggedInUser(this.loggedInUser);
|
|
46
|
+
}
|
|
47
|
+
if (changedProperties.has('origin') && this.origin) {
|
|
48
|
+
this.braintreeManager?.setOrigin(this.origin);
|
|
49
|
+
this.logDonationFlowEvent('origin', this.origin);
|
|
50
|
+
}
|
|
51
|
+
if (changedProperties.has('paymentClients') ||
|
|
52
|
+
changedProperties.has('braintreeAuthToken') ||
|
|
53
|
+
changedProperties.has('endpointManager') ||
|
|
54
|
+
changedProperties.has('environment')) {
|
|
55
|
+
this.setupBraintreeManager();
|
|
56
|
+
this.setupRecaptchaManager();
|
|
57
|
+
}
|
|
58
|
+
if (changedProperties.has('recaptchaSiteKey')) {
|
|
59
|
+
this.setupRecaptchaManager();
|
|
60
|
+
}
|
|
61
|
+
if (changedProperties.has('braintreeManager') ||
|
|
62
|
+
changedProperties.has('recaptchaManager') ||
|
|
63
|
+
changedProperties.has('modalManager') ||
|
|
64
|
+
changedProperties.has('recaptchaElement')) {
|
|
65
|
+
this.setupPaymentFlowHandlers();
|
|
66
|
+
}
|
|
67
|
+
// Build the default clients for the environment, unless the consumer
|
|
68
|
+
// supplied their own
|
|
69
|
+
if ((changedProperties.has('environment') ||
|
|
70
|
+
changedProperties.has('lazyLoaderService')) &&
|
|
71
|
+
this.environment &&
|
|
72
|
+
(this.paymentClients === undefined ||
|
|
73
|
+
this.paymentClients === this.defaultPaymentClients)) {
|
|
74
|
+
this.defaultPaymentClients = new PaymentClients(this.lazyLoaderService, this.environment);
|
|
75
|
+
this.paymentClients = this.defaultPaymentClients;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/** Developer convenience: show the confirmation step without a payment. */
|
|
79
|
+
async showConfirmationStepDev(options) {
|
|
80
|
+
this.donationForm.showConfirmationModalDev(options);
|
|
81
|
+
}
|
|
82
|
+
/** Developer convenience: show the upsell modal without a payment. */
|
|
83
|
+
async showUpsellModalDev(options) {
|
|
84
|
+
this.donationForm.showUpsellModalDev(options);
|
|
85
|
+
}
|
|
86
|
+
setupBraintreeManager() {
|
|
87
|
+
if (this.braintreeManager === undefined &&
|
|
88
|
+
this.braintreeAuthToken &&
|
|
89
|
+
this.endpointManager &&
|
|
90
|
+
this.paymentClients &&
|
|
91
|
+
this.environment) {
|
|
92
|
+
this.braintreeManager = new BraintreeManager({
|
|
93
|
+
paymentClients: this.paymentClients,
|
|
94
|
+
endpointManager: this.endpointManager,
|
|
95
|
+
authorizationToken: this.braintreeAuthToken,
|
|
96
|
+
venmoProfileId: this.venmoProfileId,
|
|
97
|
+
googlePayMerchantId: this.googlePayMerchantId,
|
|
98
|
+
hostedFieldConfig: this.hostedFieldConfig,
|
|
99
|
+
hostingEnvironment: this.environment,
|
|
100
|
+
referrer: this.referrer,
|
|
101
|
+
loggedInUser: this.loggedInUser,
|
|
102
|
+
origin: this.origin,
|
|
103
|
+
});
|
|
104
|
+
this.braintreeManager.on('paymentProvidersHostedFieldsRetry', (retryNumber) => {
|
|
105
|
+
this.dispatchEvent(new CustomEvent('paymentProvidersHostedFieldsRetry', {
|
|
106
|
+
detail: { retryNumber },
|
|
107
|
+
}));
|
|
108
|
+
});
|
|
109
|
+
this.braintreeManager.on('paymentProvidersHostedFieldsFailed', (error) => {
|
|
110
|
+
this.dispatchEvent(new CustomEvent('paymentProvidersHostedFieldsFailed', {
|
|
111
|
+
detail: { error },
|
|
112
|
+
}));
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
async setupRecaptchaManager() {
|
|
117
|
+
if (!this.recaptchaSiteKey ||
|
|
118
|
+
!this.paymentClients ||
|
|
119
|
+
this.recaptchaManagerSetup) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
this.recaptchaManagerSetup = true;
|
|
123
|
+
const grecaptchaLibrary = await this.paymentClients.recaptchaLibrary.get();
|
|
124
|
+
this.recaptchaManager = new RecaptchaManager({
|
|
125
|
+
grecaptchaLibrary,
|
|
126
|
+
siteKey: this.recaptchaSiteKey,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
firstUpdated() {
|
|
130
|
+
this.configureFromQueryParams();
|
|
131
|
+
this.trackViewedEvent();
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* The donate page links carry the starting configuration in the query
|
|
135
|
+
* string: `amt`, `contrib_type`, `coverFees`, `dollarAmounts`,
|
|
136
|
+
* `amountLayout` and `frequencyMode`.
|
|
137
|
+
*/
|
|
138
|
+
configureFromQueryParams() {
|
|
139
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
140
|
+
let amountOptions = this.amountOptions;
|
|
141
|
+
const amountOptionsParam = urlParams.get('dollarAmounts');
|
|
142
|
+
if (amountOptionsParam) {
|
|
143
|
+
// e.g. `[5,10,25]`
|
|
144
|
+
const stripBrackets = amountOptionsParam.slice(1, -1);
|
|
145
|
+
amountOptions = stripBrackets
|
|
146
|
+
.split(',')
|
|
147
|
+
.map((value) => parseFloat(value))
|
|
148
|
+
.filter((value) => !isNaN(value));
|
|
149
|
+
}
|
|
150
|
+
let coverFees = this.donationInfo.coverFees;
|
|
151
|
+
const coverFeesParam = urlParams.get('coverFees');
|
|
152
|
+
if (coverFeesParam) {
|
|
153
|
+
coverFees = coverFeesParam === 'true';
|
|
154
|
+
}
|
|
155
|
+
let frequency = this.donationInfo.donationType;
|
|
156
|
+
const frequencyParam = urlParams.get('contrib_type');
|
|
157
|
+
if (frequencyParam === 'monthly') {
|
|
158
|
+
frequency = DonationType.Monthly;
|
|
159
|
+
}
|
|
160
|
+
let amount = this.donationInfo.amount;
|
|
161
|
+
const amountParam = urlParams.get('amt');
|
|
162
|
+
if (amountParam) {
|
|
163
|
+
const parsedAmount = currency(amountParam).value;
|
|
164
|
+
if (parsedAmount > 0) {
|
|
165
|
+
amount = parsedAmount;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
const amountLayoutParam = urlParams.get('amountLayout');
|
|
169
|
+
if (amountLayoutParam) {
|
|
170
|
+
const amountLayout = amountLayoutParam;
|
|
171
|
+
if (Object.values(EditDonationAmountSelectionLayout).includes(amountLayout)) {
|
|
172
|
+
this.amountSelectionLayout = amountLayout;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
const frequencyModeParam = urlParams.get('frequencyMode');
|
|
176
|
+
if (frequencyModeParam) {
|
|
177
|
+
const frequencyMode = frequencyModeParam;
|
|
178
|
+
if (Object.values(EditDonationFrequencySelectionMode).includes(frequencyMode)) {
|
|
179
|
+
this.frequencySelectionMode = frequencyMode;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
this.amountOptions = amountOptions;
|
|
183
|
+
this.donationInfo = new DonationPaymentInfo({
|
|
184
|
+
donationType: frequency,
|
|
185
|
+
amount,
|
|
186
|
+
coverFees,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
setupPaymentFlowHandlers() {
|
|
190
|
+
if (this.paymentFlowHandlers) {
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
if (!this.braintreeManager ||
|
|
194
|
+
!this.recaptchaManager ||
|
|
195
|
+
!this.modalManager ||
|
|
196
|
+
!this.recaptchaElement) {
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
this.paymentFlowHandlers = new PaymentFlowHandlers({
|
|
200
|
+
braintreeManager: this.braintreeManager,
|
|
201
|
+
modalManager: this.modalManager,
|
|
202
|
+
recaptchaManager: this.recaptchaManager,
|
|
203
|
+
analytics: {
|
|
204
|
+
logEvent: this.logEvent.bind(this),
|
|
205
|
+
logDonationFlowEvent: this.logDonationFlowEvent.bind(this),
|
|
206
|
+
},
|
|
207
|
+
});
|
|
208
|
+
this.donationForm.braintreeManager = this.braintreeManager;
|
|
209
|
+
this.donationForm.paymentFlowHandlers = this.paymentFlowHandlers;
|
|
210
|
+
this.braintreeManager.startup();
|
|
211
|
+
this.paymentFlowHandlers.startup();
|
|
212
|
+
this.recaptchaManager.setup(this.recaptchaElement, 1, 'light', 'image');
|
|
213
|
+
}
|
|
214
|
+
get hostedFieldConfig() {
|
|
215
|
+
const hostedFieldStyle = {
|
|
216
|
+
input: {
|
|
217
|
+
'font-size': '16px',
|
|
218
|
+
'font-family': '"Helvetica Neue", Helvetica, Arial, sans-serif',
|
|
219
|
+
'font-weight': '700',
|
|
220
|
+
color: '#333',
|
|
221
|
+
},
|
|
222
|
+
':focus': {
|
|
223
|
+
color: '#333',
|
|
224
|
+
},
|
|
225
|
+
// The text color stays the same when valid or invalid. The badged
|
|
226
|
+
// input's red border and the error message already show the error
|
|
227
|
+
// state, and red text on top of them is confusing.
|
|
228
|
+
'.valid': {
|
|
229
|
+
color: '#333',
|
|
230
|
+
},
|
|
231
|
+
'.invalid': {
|
|
232
|
+
color: '#333',
|
|
233
|
+
},
|
|
234
|
+
};
|
|
235
|
+
// No placeholders. The visible labels above each field are the only text.
|
|
236
|
+
const hostedFieldFieldOptions = {
|
|
237
|
+
number: {
|
|
238
|
+
selector: '#braintree-creditcard',
|
|
239
|
+
},
|
|
240
|
+
cvv: {
|
|
241
|
+
selector: '#braintree-cvv',
|
|
242
|
+
},
|
|
243
|
+
expirationDate: {
|
|
244
|
+
selector: '#braintree-expiration',
|
|
245
|
+
},
|
|
246
|
+
};
|
|
247
|
+
const hostedFieldContainer = this.creditCardFieldsElement.hostedFieldContainer;
|
|
248
|
+
return new HostedFieldConfiguration({
|
|
249
|
+
hostedFieldStyle,
|
|
250
|
+
hostedFieldFieldOptions,
|
|
251
|
+
hostedFieldContainer,
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
render() {
|
|
255
|
+
return html `
|
|
256
|
+
<div class="ia-donation-form-controller-container">
|
|
257
|
+
<ia-donation-form
|
|
258
|
+
.braintreeManager=${this.braintreeManager}
|
|
259
|
+
.contactForm=${this.contactForm}
|
|
260
|
+
.amountOptions=${this.amountOptions}
|
|
261
|
+
.donationInfo=${this.donationInfo}
|
|
262
|
+
.amountSelectionLayout=${this.amountSelectionLayout}
|
|
263
|
+
.frequencySelectionMode=${this.frequencySelectionMode}
|
|
264
|
+
@donationInfoChanged=${this.donationInfoChanged}
|
|
265
|
+
@paymentProviderSelected=${this.paymentProviderSelected}
|
|
266
|
+
@paymentFlowStarted=${this.paymentFlowStarted}
|
|
267
|
+
@paymentFlowConfirmed=${this.paymentFlowConfirmed}
|
|
268
|
+
@paymentFlowCancelled=${this.paymentFlowCancelled}
|
|
269
|
+
@paymentFlowError=${this.paymentFlowError}
|
|
270
|
+
>
|
|
271
|
+
<!--
|
|
272
|
+
Braintree's hosted fields, the PayPal button and recaptcha can't
|
|
273
|
+
live in a shadow root, so they render here in the light DOM and
|
|
274
|
+
are slotted into the form. See
|
|
275
|
+
https://github.com/braintree/braintree-web-drop-in/issues/614
|
|
276
|
+
and https://github.com/paypal/paypal-checkout-components/issues/353
|
|
277
|
+
-->
|
|
278
|
+
<div slot="braintree-hosted-fields">
|
|
279
|
+
<ia-donation-credit-card-fields></ia-donation-credit-card-fields>
|
|
280
|
+
</div>
|
|
281
|
+
|
|
282
|
+
<!-- Autofill doesn't reach into shadow DOM, so the contact form is light DOM too -->
|
|
283
|
+
<div slot="contact-form">
|
|
284
|
+
<ia-donation-contact-form
|
|
285
|
+
.donorEmail=${this.donorEmail}
|
|
286
|
+
></ia-donation-contact-form>
|
|
287
|
+
</div>
|
|
288
|
+
|
|
289
|
+
<div slot="paypal-button">
|
|
290
|
+
<div id="paypal-button"></div>
|
|
291
|
+
</div>
|
|
292
|
+
|
|
293
|
+
<slot name="recaptcha" slot="recaptcha"></slot>
|
|
294
|
+
</ia-donation-form>
|
|
295
|
+
</div>
|
|
296
|
+
|
|
297
|
+
${this.getStyles}
|
|
298
|
+
`;
|
|
299
|
+
}
|
|
300
|
+
/** Light DOM, for the payment libraries that can't render into a shadow root */
|
|
301
|
+
createRenderRoot() {
|
|
302
|
+
return this;
|
|
303
|
+
}
|
|
304
|
+
donationInfoChanged(e) {
|
|
305
|
+
this.logEvent('DonationInfoChanged');
|
|
306
|
+
this.donationInfo = e.detail.donationInfo;
|
|
307
|
+
}
|
|
308
|
+
trackViewedEvent() {
|
|
309
|
+
this.logEvent('Viewed');
|
|
310
|
+
}
|
|
311
|
+
paymentProviderSelected(e) {
|
|
312
|
+
const paymentProvider = e.detail.paymentProvider;
|
|
313
|
+
const previousPaymentProvider = e.detail.previousPaymentProvider;
|
|
314
|
+
const providerNoSpaces = this.removeSpaces(paymentProvider ?? 'unset');
|
|
315
|
+
let eventName = `ProviderFirstSelected-${providerNoSpaces}`;
|
|
316
|
+
let previousProviderInfo;
|
|
317
|
+
if (previousPaymentProvider !== undefined) {
|
|
318
|
+
eventName = `ProviderChangedTo-${providerNoSpaces}`;
|
|
319
|
+
previousProviderInfo = `ProviderChangedFrom-${this.removeSpaces(previousPaymentProvider)}`;
|
|
320
|
+
}
|
|
321
|
+
this.logEvent(eventName, previousProviderInfo);
|
|
322
|
+
}
|
|
323
|
+
paymentFlowConfirmed(e) {
|
|
324
|
+
this.logEvent('PaymentFlowConfirmed', this.removeSpaces(e.detail.paymentProvider));
|
|
325
|
+
}
|
|
326
|
+
paymentFlowStarted(e) {
|
|
327
|
+
this.logEvent('PaymentFlowStarted', this.removeSpaces(e.detail.paymentProvider));
|
|
328
|
+
}
|
|
329
|
+
paymentFlowCancelled(e) {
|
|
330
|
+
this.logEvent('PaymentFlowCancelled', this.removeSpaces(e.detail.paymentProvider));
|
|
331
|
+
}
|
|
332
|
+
paymentFlowError(e) {
|
|
333
|
+
const providerNoSpaces = this.removeSpaces(e.detail.paymentProvider);
|
|
334
|
+
this.logEvent('PaymentFlowError', `${providerNoSpaces}-${e.detail.error}`);
|
|
335
|
+
}
|
|
336
|
+
removeSpaces(original) {
|
|
337
|
+
return original.replace(/\s+/g, '');
|
|
338
|
+
}
|
|
339
|
+
/** A sampled event in this form's category */
|
|
340
|
+
logEvent(action, label) {
|
|
341
|
+
const analyticEvent = {
|
|
342
|
+
action,
|
|
343
|
+
label,
|
|
344
|
+
category: this.analyticsCategory,
|
|
345
|
+
};
|
|
346
|
+
this.analyticsHandler?.sendEvent(analyticEvent);
|
|
347
|
+
}
|
|
348
|
+
/** An unsampled event in the `DonationFlow` category */
|
|
349
|
+
logDonationFlowEvent(action, label) {
|
|
350
|
+
const analyticEvent = {
|
|
351
|
+
action,
|
|
352
|
+
label,
|
|
353
|
+
category: 'DonationFlow',
|
|
354
|
+
};
|
|
355
|
+
this.analyticsHandler?.sendEventNoSampling(analyticEvent);
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* The element renders into the light DOM, so instead of a `styles` block
|
|
359
|
+
* it writes its own `<style>` tag, scoped to its container class.
|
|
360
|
+
*
|
|
361
|
+
* The `--ia-donation-form-*` variables set here are the consumer-facing
|
|
362
|
+
* theming for the whole form; they fan out to the sections, the amount
|
|
363
|
+
* picker and the payment buttons.
|
|
364
|
+
*/
|
|
365
|
+
get getStyles() {
|
|
366
|
+
return html `
|
|
367
|
+
<style>
|
|
368
|
+
.ia-donation-form-controller-container {
|
|
369
|
+
--donation-form-controller-base-font-size--: var(
|
|
370
|
+
--ia-donation-form-base-font-size,
|
|
371
|
+
10px
|
|
372
|
+
);
|
|
373
|
+
color: var(--ia-donation-form-text-color, #333);
|
|
374
|
+
background-color: var(
|
|
375
|
+
--ia-donation-form-background-color,
|
|
376
|
+
transparent
|
|
377
|
+
);
|
|
378
|
+
|
|
379
|
+
--ia-donation-section-background-color: var(
|
|
380
|
+
--ia-donation-form-background-color,
|
|
381
|
+
transparent
|
|
382
|
+
);
|
|
383
|
+
--ia-donation-edit-background-color: var(
|
|
384
|
+
--ia-donation-form-background-color,
|
|
385
|
+
transparent
|
|
386
|
+
);
|
|
387
|
+
|
|
388
|
+
--ia-donation-section-badge-background-color: var(
|
|
389
|
+
--ia-donation-form-badge-background-color,
|
|
390
|
+
#333
|
|
391
|
+
);
|
|
392
|
+
--ia-donation-edit-badge-background-color: var(
|
|
393
|
+
--ia-donation-form-badge-background-color,
|
|
394
|
+
#333
|
|
395
|
+
);
|
|
396
|
+
|
|
397
|
+
--ia-donation-section-badge-font-color: var(
|
|
398
|
+
--ia-donation-form-badge-text-color,
|
|
399
|
+
#fff
|
|
400
|
+
);
|
|
401
|
+
--ia-donation-edit-badge-font-color: var(
|
|
402
|
+
--ia-donation-form-badge-text-color,
|
|
403
|
+
#fff
|
|
404
|
+
);
|
|
405
|
+
|
|
406
|
+
--ia-donation-edit-button-font-color: var(
|
|
407
|
+
--ia-donation-form-payment-option-text-color
|
|
408
|
+
);
|
|
409
|
+
--ia-donation-edit-button-color: var(
|
|
410
|
+
--ia-donation-form-payment-option-background-color
|
|
411
|
+
);
|
|
412
|
+
--ia-donation-edit-button-selected-color: var(
|
|
413
|
+
--ia-donation-form-selected-option-background-color
|
|
414
|
+
);
|
|
415
|
+
--ia-donation-edit-button-selected-font-color: var(
|
|
416
|
+
--ia-donation-form-selected-option-text-color
|
|
417
|
+
);
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
.ia-donation-form-controller-container ia-donation-form:focus {
|
|
421
|
+
outline: none;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
/* The real PayPal button, kept but nearly invisible under the local one */
|
|
425
|
+
.ia-donation-form-controller-container #paypal-button {
|
|
426
|
+
opacity: 0.001;
|
|
427
|
+
width: calc(var(--donation-form-controller-base-font-size--) * 5);
|
|
428
|
+
height: calc(var(--donation-form-controller-base-font-size--) * 3);
|
|
429
|
+
overflow: hidden;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
.ia-donation-form-controller-container
|
|
433
|
+
div[slot='braintree-hosted-fields'] {
|
|
434
|
+
background-color: white;
|
|
435
|
+
}
|
|
436
|
+
</style>
|
|
437
|
+
`;
|
|
438
|
+
}
|
|
439
|
+
};
|
|
440
|
+
__decorate([
|
|
441
|
+
property({ type: String })
|
|
442
|
+
], IADonationFormController.prototype, "environment", void 0);
|
|
443
|
+
__decorate([
|
|
444
|
+
property({ type: String })
|
|
445
|
+
], IADonationFormController.prototype, "braintreeAuthToken", void 0);
|
|
446
|
+
__decorate([
|
|
447
|
+
property({ type: String })
|
|
448
|
+
], IADonationFormController.prototype, "recaptchaSiteKey", void 0);
|
|
449
|
+
__decorate([
|
|
450
|
+
property({ type: String })
|
|
451
|
+
], IADonationFormController.prototype, "venmoProfileId", void 0);
|
|
452
|
+
__decorate([
|
|
453
|
+
property({ type: String })
|
|
454
|
+
], IADonationFormController.prototype, "googlePayMerchantId", void 0);
|
|
455
|
+
__decorate([
|
|
456
|
+
property({ type: String })
|
|
457
|
+
], IADonationFormController.prototype, "analyticsCategory", void 0);
|
|
458
|
+
__decorate([
|
|
459
|
+
property({ type: Array })
|
|
460
|
+
], IADonationFormController.prototype, "amountOptions", void 0);
|
|
461
|
+
__decorate([
|
|
462
|
+
property({ type: Object })
|
|
463
|
+
], IADonationFormController.prototype, "donationInfo", void 0);
|
|
464
|
+
__decorate([
|
|
465
|
+
property({ type: String })
|
|
466
|
+
], IADonationFormController.prototype, "amountSelectionLayout", void 0);
|
|
467
|
+
__decorate([
|
|
468
|
+
property({ type: String })
|
|
469
|
+
], IADonationFormController.prototype, "frequencySelectionMode", void 0);
|
|
470
|
+
__decorate([
|
|
471
|
+
property({ type: String })
|
|
472
|
+
], IADonationFormController.prototype, "referrer", void 0);
|
|
473
|
+
__decorate([
|
|
474
|
+
property({ type: String })
|
|
475
|
+
], IADonationFormController.prototype, "loggedInUser", void 0);
|
|
476
|
+
__decorate([
|
|
477
|
+
property({ type: String })
|
|
478
|
+
], IADonationFormController.prototype, "origin", void 0);
|
|
479
|
+
__decorate([
|
|
480
|
+
property({ type: String })
|
|
481
|
+
], IADonationFormController.prototype, "donorEmail", void 0);
|
|
482
|
+
__decorate([
|
|
483
|
+
property({ type: Object })
|
|
484
|
+
], IADonationFormController.prototype, "endpointManager", void 0);
|
|
485
|
+
__decorate([
|
|
486
|
+
property({ type: Object })
|
|
487
|
+
], IADonationFormController.prototype, "analyticsHandler", void 0);
|
|
488
|
+
__decorate([
|
|
489
|
+
property({ type: Object })
|
|
490
|
+
], IADonationFormController.prototype, "modalManager", void 0);
|
|
491
|
+
__decorate([
|
|
492
|
+
property({ type: Object })
|
|
493
|
+
], IADonationFormController.prototype, "recaptchaElement", void 0);
|
|
494
|
+
__decorate([
|
|
495
|
+
property({ type: Object })
|
|
496
|
+
], IADonationFormController.prototype, "braintreeManager", void 0);
|
|
497
|
+
__decorate([
|
|
498
|
+
property({ type: Object })
|
|
499
|
+
], IADonationFormController.prototype, "recaptchaManager", void 0);
|
|
500
|
+
__decorate([
|
|
501
|
+
property({ type: Object })
|
|
502
|
+
], IADonationFormController.prototype, "paymentFlowHandlers", void 0);
|
|
503
|
+
__decorate([
|
|
504
|
+
property({ type: Object })
|
|
505
|
+
], IADonationFormController.prototype, "paymentClients", void 0);
|
|
506
|
+
__decorate([
|
|
507
|
+
property({ type: Object })
|
|
508
|
+
], IADonationFormController.prototype, "lazyLoaderService", void 0);
|
|
509
|
+
__decorate([
|
|
510
|
+
query('ia-donation-form')
|
|
511
|
+
], IADonationFormController.prototype, "donationForm", void 0);
|
|
512
|
+
__decorate([
|
|
513
|
+
query('ia-donation-credit-card-fields')
|
|
514
|
+
], IADonationFormController.prototype, "creditCardFieldsElement", void 0);
|
|
515
|
+
__decorate([
|
|
516
|
+
query('ia-donation-contact-form')
|
|
517
|
+
], IADonationFormController.prototype, "contactForm", void 0);
|
|
518
|
+
IADonationFormController = __decorate([
|
|
519
|
+
customElement('ia-donation-form-controller')
|
|
520
|
+
], IADonationFormController);
|
|
521
|
+
export { IADonationFormController };
|
|
522
|
+
//# sourceMappingURL=ia-donation-form-controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ia-donation-form-controller.js","sourceRoot":"","sources":["../../../../src/elements/ia-donation-form/ia-donation-form-controller.ts"],"names":[],"mappings":";AACA,OAAO,EACL,IAAI,EACJ,UAAU,GAGX,MAAM,KAAK,CAAC;AACb,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,EACL,iBAAiB,GAElB,MAAM,sCAAsC,CAAC;AAO9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAMjE,OAAO,EACL,cAAc,GAEf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sEAAsE,CAAC;AAChH,OAAO,EACL,mBAAmB,GAEpB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EACL,iCAAiC,EACjC,kCAAkC,GACnC,MAAM,2CAA2C,CAAC;AAGnD,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,EACL,gBAAgB,GAEjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,uDAAuD,CAAC;AAC/D,OAAO,gDAAgD,CAAC;AACxD,OAAO,oBAAoB,CAAC;AAE5B;;;;;;;;GAQG;AAEI,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,UAAU;IAAjD;;QAWuB,sBAAiB,GAAG,cAAc,CAAC;QAEpC,kBAAa,GAAa,sBAAsB,CAAC;QAEhD,iBAAY,GACtC,2BAA2B,CAAC;QAG9B,0BAAqB,GACnB,iCAAiC,CAAC,SAAS,CAAC;QAG9C,2BAAsB,GACpB,kCAAkC,CAAC,MAAM,CAAC;QAQhB,eAAU,GAAW,EAAE,CAAC;QAyBpD,sBAAiB,GAA+B,IAAI,iBAAiB,EAAE,CAAC;QAqIhE,0BAAqB,GAAG,KAAK,CAAC;IAiYxC,CAAC;IA5fC,OAAO,CAAC,iBAAiC;QACvC,IAAI,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvD,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClD,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC/D,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACnD,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC;QAED,IACE,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,CAAC;YACvC,iBAAiB,CAAC,GAAG,CAAC,oBAAoB,CAAC;YAC3C,iBAAiB,CAAC,GAAG,CAAC,iBAAiB,CAAC;YACxC,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,EACpC,CAAC;YACD,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC/B,CAAC;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC/B,CAAC;QAED,IACE,iBAAiB,CAAC,GAAG,CAAC,kBAAkB,CAAC;YACzC,iBAAiB,CAAC,GAAG,CAAC,kBAAkB,CAAC;YACzC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC;YACrC,iBAAiB,CAAC,GAAG,CAAC,kBAAkB,CAAC,EACzC,CAAC;YACD,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAClC,CAAC;QAED,qEAAqE;QACrE,qBAAqB;QACrB,IACE,CAAC,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC;YACnC,iBAAiB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAC7C,IAAI,CAAC,WAAW;YAChB,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS;gBAChC,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,qBAAqB,CAAC,EACrD,CAAC;YACD,IAAI,CAAC,qBAAqB,GAAG,IAAI,cAAc,CAC7C,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,WAAW,CACjB,CAAC;YACF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACnD,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,KAAK,CAAC,uBAAuB,CAAC,OAM7B;QACC,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,sEAAsE;IACtE,KAAK,CAAC,kBAAkB,CAAC,OAOxB;QACC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAEO,qBAAqB;QAC3B,IACE,IAAI,CAAC,gBAAgB,KAAK,SAAS;YACnC,IAAI,CAAC,kBAAkB;YACvB,IAAI,CAAC,eAAe;YACpB,IAAI,CAAC,cAAc;YACnB,IAAI,CAAC,WAAW,EAChB,CAAC;YACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;gBAC3C,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;gBAC7C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,kBAAkB,EAAE,IAAI,CAAC,WAAW;gBACpC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;YAEH,IAAI,CAAC,gBAAgB,CAAC,EAAE,CACtB,mCAAmC,EACnC,CAAC,WAAmB,EAAE,EAAE;gBACtB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,mCAAmC,EAAE;oBACnD,MAAM,EAAE,EAAE,WAAW,EAAE;iBACxB,CAAC,CACH,CAAC;YACJ,CAAC,CACF,CAAC;YAEF,IAAI,CAAC,gBAAgB,CAAC,EAAE,CACtB,oCAAoC,EACpC,CAAC,KAAc,EAAE,EAAE;gBACjB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,oCAAoC,EAAE;oBACpD,MAAM,EAAE,EAAE,KAAK,EAAE;iBAClB,CAAC,CACH,CAAC;YACJ,CAAC,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAIO,KAAK,CAAC,qBAAqB;QACjC,IACE,CAAC,IAAI,CAAC,gBAAgB;YACtB,CAAC,IAAI,CAAC,cAAc;YACpB,IAAI,CAAC,qBAAqB,EAC1B,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAClC,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC;QAC3E,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;YAC3C,iBAAiB;YACjB,OAAO,EAAE,IAAI,CAAC,gBAAgB;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,YAAY;QACV,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACK,wBAAwB;QAC9B,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAE9D,IAAI,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACvC,MAAM,kBAAkB,GAAG,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC1D,IAAI,kBAAkB,EAAE,CAAC;YACvB,mBAAmB;YACnB,MAAM,aAAa,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtD,aAAa,GAAG,aAAa;iBAC1B,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;iBACjC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QAC5C,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAClD,IAAI,cAAc,EAAE,CAAC;YACnB,SAAS,GAAG,cAAc,KAAK,MAAM,CAAC;QACxC,CAAC;QAED,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;QAC/C,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACrD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;QACnC,CAAC;QAED,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QACtC,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;YACjD,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,GAAG,YAAY,CAAC;YACxB,CAAC;QACH,CAAC;QAED,MAAM,iBAAiB,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACxD,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,YAAY,GAChB,iBAAsD,CAAC;YACzD,IACE,MAAM,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EACvE,CAAC;gBACD,IAAI,CAAC,qBAAqB,GAAG,YAAY,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,MAAM,kBAAkB,GAAG,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC1D,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,aAAa,GACjB,kBAAwD,CAAC;YAC3D,IACE,MAAM,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC,QAAQ,CACxD,aAAa,CACd,EACD,CAAC;gBACD,IAAI,CAAC,sBAAsB,GAAG,aAAa,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,IAAI,mBAAmB,CAAC;YAC1C,YAAY,EAAE,SAAS;YACvB,MAAM;YACN,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAEO,wBAAwB;QAC9B,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,IACE,CAAC,IAAI,CAAC,gBAAgB;YACtB,CAAC,IAAI,CAAC,gBAAgB;YACtB,CAAC,IAAI,CAAC,YAAY;YAClB,CAAC,IAAI,CAAC,gBAAgB,EACtB,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,mBAAmB,GAAG,IAAI,mBAAmB,CAAC;YACjD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,SAAS,EAAE;gBACT,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;gBAClC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;aAC3D;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC3D,IAAI,CAAC,YAAY,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAEjE,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAChC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,iBAAiB;QAC3B,MAAM,gBAAgB,GAA2C;YAC/D,KAAK,EAAE;gBACL,WAAW,EAAE,MAAM;gBACnB,aAAa,EAAE,gDAAgD;gBAC/D,aAAa,EAAE,KAAK;gBACpB,KAAK,EAAE,MAAM;aACd;YACD,QAAQ,EAAE;gBACR,KAAK,EAAE,MAAM;aACd;YACD,kEAAkE;YAClE,kEAAkE;YAClE,mDAAmD;YACnD,QAAQ,EAAE;gBACR,KAAK,EAAE,MAAM;aACd;YACD,UAAU,EAAE;gBACV,KAAK,EAAE,MAAM;aACd;SACF,CAAC;QAEF,0EAA0E;QAC1E,MAAM,uBAAuB,GAAsC;YACjE,MAAM,EAAE;gBACN,QAAQ,EAAE,uBAAuB;aAClC;YACD,GAAG,EAAE;gBACH,QAAQ,EAAE,gBAAgB;aAC3B;YACD,cAAc,EAAE;gBACd,QAAQ,EAAE,uBAAuB;aAClC;SACF,CAAC;QAEF,MAAM,oBAAoB,GACxB,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC;QAEpD,OAAO,IAAI,wBAAwB,CAAC;YAClC,gBAAgB;YAChB,uBAAuB;YACvB,oBAAoB;SACrB,CAAC,CAAC;IACL,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;;8BAGe,IAAI,CAAC,gBAAgB;yBAC1B,IAAI,CAAC,WAAW;2BACd,IAAI,CAAC,aAAa;0BACnB,IAAI,CAAC,YAAY;mCACR,IAAI,CAAC,qBAAqB;oCACzB,IAAI,CAAC,sBAAsB;iCAC9B,IAAI,CAAC,mBAAmB;qCACpB,IAAI,CAAC,uBAAuB;gCACjC,IAAI,CAAC,kBAAkB;kCACrB,IAAI,CAAC,oBAAoB;kCACzB,IAAI,CAAC,oBAAoB;8BAC7B,IAAI,CAAC,gBAAgB;;;;;;;;;;;;;;;;4BAgBvB,IAAI,CAAC,UAAU;;;;;;;;;;;;QAYnC,IAAI,CAAC,SAAS;KACjB,CAAC;IACJ,CAAC;IAED,gFAAgF;IAChF,gBAAgB;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,mBAAmB,CAAC,CAAc;QACxC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;IAC5C,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAEO,uBAAuB,CAAC,CAAc;QAC5C,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,eAEpB,CAAC;QACd,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,uBAE5B,CAAC;QACd,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,IAAI,OAAO,CAAC,CAAC;QACvE,IAAI,SAAS,GAAG,yBAAyB,gBAAgB,EAAE,CAAC;QAC5D,IAAI,oBAAwC,CAAC;QAC7C,IAAI,uBAAuB,KAAK,SAAS,EAAE,CAAC;YAC1C,SAAS,GAAG,qBAAqB,gBAAgB,EAAE,CAAC;YACpD,oBAAoB,GAAG,uBAAuB,IAAI,CAAC,YAAY,CAC7D,uBAAuB,CACxB,EAAE,CAAC;QACN,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IACjD,CAAC;IAEO,oBAAoB,CAAC,CAAc;QACzC,IAAI,CAAC,QAAQ,CACX,sBAAsB,EACtB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAC5C,CAAC;IACJ,CAAC;IAEO,kBAAkB,CAAC,CAAc;QACvC,IAAI,CAAC,QAAQ,CACX,oBAAoB,EACpB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAC5C,CAAC;IACJ,CAAC;IAEO,oBAAoB,CAAC,CAAc;QACzC,IAAI,CAAC,QAAQ,CACX,sBAAsB,EACtB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAC5C,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,CAAc;QACrC,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,gBAAgB,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7E,CAAC;IAEO,YAAY,CAAC,QAAgB;QACnC,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,8CAA8C;IACtC,QAAQ,CAAC,MAAc,EAAE,KAAc;QAC7C,MAAM,aAAa,GAAmB;YACpC,MAAM;YACN,KAAK;YACL,QAAQ,EAAE,IAAI,CAAC,iBAAiB;SACjC,CAAC;QACF,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IAClD,CAAC;IAED,wDAAwD;IAChD,oBAAoB,CAAC,MAAc,EAAE,KAAc;QACzD,MAAM,aAAa,GAAmB;YACpC,MAAM;YACN,KAAK;YACL,QAAQ,EAAE,cAAc;SACzB,CAAC;QACF,IAAI,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;;;OAOG;IACH,IAAY,SAAS;QACnB,OAAO,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuEV,CAAC;IACJ,CAAC;CACF,CAAA;AA9jB6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6DAAkC;AAEjC;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;oEAA6B;AAE5B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kEAA2B;AAE1B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gEAAyB;AAExB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;qEAA8B;AAE7B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;mEAAoC;AAEpC;IAA1B,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;+DAAkD;AAEhD;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8DACG;AAG9B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;uEAEmB;AAG9C;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wEAEiB;AAEhB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0DAAmB;AAElB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8DAAuB;AAEtB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wDAAiB;AAEhB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4DAAyB;AAGpD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iEACyB;AAExB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kEAA8C;AAE7C;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8DAAsC;AAGrC;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kEAAgC;AAE/B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kEAA8C;AAE7C;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kEAA8C;AAGzE;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;qEACwB;AAEvB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gEAA0C;AAMrE;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;mEAC6C;AAErC;IAAlC,KAAK,CAAC,kBAAkB,CAAC;8DAAuC;AAGzD;IADP,KAAK,CAAC,gCAAgC,CAAC;yEACqB;AAGrD;IADP,KAAK,CAAC,0BAA0B,CAAC;6DACU;AAjEjC,wBAAwB;IADpC,aAAa,CAAC,6BAA6B,CAAC;GAChC,wBAAwB,CA+jBpC","sourcesContent":["import type * as braintree from 'braintree-web';\nimport {\n html,\n LitElement,\n type PropertyValues,\n type TemplateResult,\n} from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\nimport currency from 'currency.js';\nimport {\n LazyLoaderService,\n type LazyLoaderServiceInterface,\n} from '@internetarchive/lazy-loader-service';\nimport type { ModalManagerInterface } from '@internetarchive/modal-manager';\nimport type {\n AnalyticsEvent,\n AnalyticsManagerInterface,\n} from '@internetarchive/analytics-manager';\n\nimport { BraintreeManager } from './braintree/braintree-manager';\nimport type {\n BraintreeEndpointManagerInterface,\n BraintreeManagerInterface,\n} from './braintree/braintree-manager-interface';\nimport type { HostingEnvironment } from './braintree/hosting-environment';\nimport {\n PaymentClients,\n type PaymentClientsInterface,\n} from './braintree/payment-clients';\nimport { HostedFieldConfiguration } from './braintree/payment-providers/credit-card/hosted-field-configuration';\nimport {\n PaymentFlowHandlers,\n type PaymentFlowHandlersInterface,\n} from './flow-handlers/payment-flow-handlers';\nimport type { IADonationContactForm } from './form-elements/contact-form/ia-donation-contact-form';\nimport {\n EditDonationAmountSelectionLayout,\n EditDonationFrequencySelectionMode,\n} from './form-elements/ia-donation-edit-donation';\nimport type { IADonationCreditCardFields } from './form-elements/ia-donation-credit-card-fields';\nimport type { IADonationForm } from './ia-donation-form';\nimport {\n DonationPaymentInfo,\n defaultDonationAmounts,\n defaultSelectedDonationInfo,\n} from './models/donation-payment-info';\nimport { DonationType } from './models/donation-type';\nimport type { PaymentProvider } from './models/payment-provider';\nimport type { UpsellModalCTAMode } from './modals/ia-donation-upsell-modal-content';\nimport {\n RecaptchaManager,\n type RecaptchaManagerInterface,\n} from './recaptcha-manager';\nimport './form-elements/contact-form/ia-donation-contact-form';\nimport './form-elements/ia-donation-credit-card-fields';\nimport './ia-donation-form';\n\n/**\n * Wires the donation form to everything around it: Braintree and the payment\n * libraries, the modal manager, recaptcha, and analytics. Give it the\n * environment, tokens and an endpoint manager and it builds the rest.\n *\n * It renders into the light DOM, because Braintree's hosted fields, the\n * PayPal button and recaptcha all refuse to work inside a shadow root. Those\n * are rendered here and slotted into `<ia-donation-form>`.\n */\n@customElement('ia-donation-form-controller')\nexport class IADonationFormController extends LitElement {\n @property({ type: String }) environment?: HostingEnvironment;\n\n @property({ type: String }) braintreeAuthToken?: string;\n\n @property({ type: String }) recaptchaSiteKey?: string;\n\n @property({ type: String }) venmoProfileId?: string;\n\n @property({ type: String }) googlePayMerchantId?: string;\n\n @property({ type: String }) analyticsCategory = 'DonationForm';\n\n @property({ type: Array }) amountOptions: number[] = defaultDonationAmounts;\n\n @property({ type: Object }) donationInfo: DonationPaymentInfo =\n defaultSelectedDonationInfo;\n\n @property({ type: String })\n amountSelectionLayout: EditDonationAmountSelectionLayout =\n EditDonationAmountSelectionLayout.MultiLine;\n\n @property({ type: String })\n frequencySelectionMode: EditDonationFrequencySelectionMode =\n EditDonationFrequencySelectionMode.Button;\n\n @property({ type: String }) referrer?: string;\n\n @property({ type: String }) loggedInUser?: string;\n\n @property({ type: String }) origin?: string;\n\n @property({ type: String }) donorEmail: string = '';\n\n @property({ type: Object })\n endpointManager?: BraintreeEndpointManagerInterface;\n\n @property({ type: Object }) analyticsHandler?: AnalyticsManagerInterface;\n\n @property({ type: Object }) modalManager?: ModalManagerInterface;\n\n /** The element recaptcha renders its (invisible) widget into. Must be in the light DOM. */\n @property({ type: Object }) recaptchaElement?: HTMLElement;\n\n @property({ type: Object }) braintreeManager?: BraintreeManagerInterface;\n\n @property({ type: Object }) recaptchaManager?: RecaptchaManagerInterface;\n\n @property({ type: Object })\n paymentFlowHandlers?: PaymentFlowHandlersInterface;\n\n @property({ type: Object }) paymentClients?: PaymentClientsInterface;\n\n /** The clients this element built itself, so it knows when it may rebuild them */\n private defaultPaymentClients?: PaymentClientsInterface;\n\n @property({ type: Object })\n lazyLoaderService: LazyLoaderServiceInterface = new LazyLoaderService();\n\n @query('ia-donation-form') private donationForm!: IADonationForm;\n\n @query('ia-donation-credit-card-fields')\n private creditCardFieldsElement!: IADonationCreditCardFields;\n\n @query('ia-donation-contact-form')\n private contactForm?: IADonationContactForm;\n\n updated(changedProperties: PropertyValues): void {\n if (changedProperties.has('referrer') && this.referrer) {\n this.braintreeManager?.setReferrer(this.referrer);\n this.logDonationFlowEvent('referrer', this.referrer);\n }\n\n if (changedProperties.has('loggedInUser') && this.loggedInUser) {\n this.braintreeManager?.setLoggedInUser(this.loggedInUser);\n }\n\n if (changedProperties.has('origin') && this.origin) {\n this.braintreeManager?.setOrigin(this.origin);\n this.logDonationFlowEvent('origin', this.origin);\n }\n\n if (\n changedProperties.has('paymentClients') ||\n changedProperties.has('braintreeAuthToken') ||\n changedProperties.has('endpointManager') ||\n changedProperties.has('environment')\n ) {\n this.setupBraintreeManager();\n this.setupRecaptchaManager();\n }\n\n if (changedProperties.has('recaptchaSiteKey')) {\n this.setupRecaptchaManager();\n }\n\n if (\n changedProperties.has('braintreeManager') ||\n changedProperties.has('recaptchaManager') ||\n changedProperties.has('modalManager') ||\n changedProperties.has('recaptchaElement')\n ) {\n this.setupPaymentFlowHandlers();\n }\n\n // Build the default clients for the environment, unless the consumer\n // supplied their own\n if (\n (changedProperties.has('environment') ||\n changedProperties.has('lazyLoaderService')) &&\n this.environment &&\n (this.paymentClients === undefined ||\n this.paymentClients === this.defaultPaymentClients)\n ) {\n this.defaultPaymentClients = new PaymentClients(\n this.lazyLoaderService,\n this.environment,\n );\n this.paymentClients = this.defaultPaymentClients;\n }\n }\n\n /** Developer convenience: show the confirmation step without a payment. */\n async showConfirmationStepDev(options: {\n donationType: DonationType;\n amount: number;\n currencyType: string;\n cancelDonationCB: () => void;\n confirmDonationCB: () => void;\n }): Promise<void> {\n this.donationForm.showConfirmationModalDev(options);\n }\n\n /** Developer convenience: show the upsell modal without a payment. */\n async showUpsellModalDev(options: {\n oneTimeAmount: number;\n ctaMode?: UpsellModalCTAMode;\n yesSelected?: (amount: number) => void;\n noSelected?: () => void;\n amountChanged?: (amount: number) => void;\n userClosedModalCallback?: () => void;\n }): Promise<void> {\n this.donationForm.showUpsellModalDev(options);\n }\n\n private setupBraintreeManager(): void {\n if (\n this.braintreeManager === undefined &&\n this.braintreeAuthToken &&\n this.endpointManager &&\n this.paymentClients &&\n this.environment\n ) {\n this.braintreeManager = new BraintreeManager({\n paymentClients: this.paymentClients,\n endpointManager: this.endpointManager,\n authorizationToken: this.braintreeAuthToken,\n venmoProfileId: this.venmoProfileId,\n googlePayMerchantId: this.googlePayMerchantId,\n hostedFieldConfig: this.hostedFieldConfig,\n hostingEnvironment: this.environment,\n referrer: this.referrer,\n loggedInUser: this.loggedInUser,\n origin: this.origin,\n });\n\n this.braintreeManager.on(\n 'paymentProvidersHostedFieldsRetry',\n (retryNumber: number) => {\n this.dispatchEvent(\n new CustomEvent('paymentProvidersHostedFieldsRetry', {\n detail: { retryNumber },\n }),\n );\n },\n );\n\n this.braintreeManager.on(\n 'paymentProvidersHostedFieldsFailed',\n (error: unknown) => {\n this.dispatchEvent(\n new CustomEvent('paymentProvidersHostedFieldsFailed', {\n detail: { error },\n }),\n );\n },\n );\n }\n }\n\n private recaptchaManagerSetup = false;\n\n private async setupRecaptchaManager(): Promise<void> {\n if (\n !this.recaptchaSiteKey ||\n !this.paymentClients ||\n this.recaptchaManagerSetup\n ) {\n return;\n }\n this.recaptchaManagerSetup = true;\n const grecaptchaLibrary = await this.paymentClients.recaptchaLibrary.get();\n this.recaptchaManager = new RecaptchaManager({\n grecaptchaLibrary,\n siteKey: this.recaptchaSiteKey,\n });\n }\n\n firstUpdated(): void {\n this.configureFromQueryParams();\n this.trackViewedEvent();\n }\n\n /**\n * The donate page links carry the starting configuration in the query\n * string: `amt`, `contrib_type`, `coverFees`, `dollarAmounts`,\n * `amountLayout` and `frequencyMode`.\n */\n private configureFromQueryParams(): void {\n const urlParams = new URLSearchParams(window.location.search);\n\n let amountOptions = this.amountOptions;\n const amountOptionsParam = urlParams.get('dollarAmounts');\n if (amountOptionsParam) {\n // e.g. `[5,10,25]`\n const stripBrackets = amountOptionsParam.slice(1, -1);\n amountOptions = stripBrackets\n .split(',')\n .map((value) => parseFloat(value))\n .filter((value) => !isNaN(value));\n }\n\n let coverFees = this.donationInfo.coverFees;\n const coverFeesParam = urlParams.get('coverFees');\n if (coverFeesParam) {\n coverFees = coverFeesParam === 'true';\n }\n\n let frequency = this.donationInfo.donationType;\n const frequencyParam = urlParams.get('contrib_type');\n if (frequencyParam === 'monthly') {\n frequency = DonationType.Monthly;\n }\n\n let amount = this.donationInfo.amount;\n const amountParam = urlParams.get('amt');\n if (amountParam) {\n const parsedAmount = currency(amountParam).value;\n if (parsedAmount > 0) {\n amount = parsedAmount;\n }\n }\n\n const amountLayoutParam = urlParams.get('amountLayout');\n if (amountLayoutParam) {\n const amountLayout =\n amountLayoutParam as EditDonationAmountSelectionLayout;\n if (\n Object.values(EditDonationAmountSelectionLayout).includes(amountLayout)\n ) {\n this.amountSelectionLayout = amountLayout;\n }\n }\n\n const frequencyModeParam = urlParams.get('frequencyMode');\n if (frequencyModeParam) {\n const frequencyMode =\n frequencyModeParam as EditDonationFrequencySelectionMode;\n if (\n Object.values(EditDonationFrequencySelectionMode).includes(\n frequencyMode,\n )\n ) {\n this.frequencySelectionMode = frequencyMode;\n }\n }\n\n this.amountOptions = amountOptions;\n this.donationInfo = new DonationPaymentInfo({\n donationType: frequency,\n amount,\n coverFees,\n });\n }\n\n private setupPaymentFlowHandlers(): void {\n if (this.paymentFlowHandlers) {\n return;\n }\n\n if (\n !this.braintreeManager ||\n !this.recaptchaManager ||\n !this.modalManager ||\n !this.recaptchaElement\n ) {\n return;\n }\n\n this.paymentFlowHandlers = new PaymentFlowHandlers({\n braintreeManager: this.braintreeManager,\n modalManager: this.modalManager,\n recaptchaManager: this.recaptchaManager,\n analytics: {\n logEvent: this.logEvent.bind(this),\n logDonationFlowEvent: this.logDonationFlowEvent.bind(this),\n },\n });\n\n this.donationForm.braintreeManager = this.braintreeManager;\n this.donationForm.paymentFlowHandlers = this.paymentFlowHandlers;\n\n this.braintreeManager.startup();\n this.paymentFlowHandlers.startup();\n this.recaptchaManager.setup(this.recaptchaElement, 1, 'light', 'image');\n }\n\n private get hostedFieldConfig(): HostedFieldConfiguration {\n const hostedFieldStyle: Record<string, Record<string, string>> = {\n input: {\n 'font-size': '16px',\n 'font-family': '\"Helvetica Neue\", Helvetica, Arial, sans-serif',\n 'font-weight': '700',\n color: '#333',\n },\n ':focus': {\n color: '#333',\n },\n // The text color stays the same when valid or invalid. The badged\n // input's red border and the error message already show the error\n // state, and red text on top of them is confusing.\n '.valid': {\n color: '#333',\n },\n '.invalid': {\n color: '#333',\n },\n };\n\n // No placeholders. The visible labels above each field are the only text.\n const hostedFieldFieldOptions: braintree.HostedFieldFieldOptions = {\n number: {\n selector: '#braintree-creditcard',\n },\n cvv: {\n selector: '#braintree-cvv',\n },\n expirationDate: {\n selector: '#braintree-expiration',\n },\n };\n\n const hostedFieldContainer =\n this.creditCardFieldsElement.hostedFieldContainer;\n\n return new HostedFieldConfiguration({\n hostedFieldStyle,\n hostedFieldFieldOptions,\n hostedFieldContainer,\n });\n }\n\n render(): TemplateResult {\n return html`\n <div class=\"ia-donation-form-controller-container\">\n <ia-donation-form\n .braintreeManager=${this.braintreeManager}\n .contactForm=${this.contactForm}\n .amountOptions=${this.amountOptions}\n .donationInfo=${this.donationInfo}\n .amountSelectionLayout=${this.amountSelectionLayout}\n .frequencySelectionMode=${this.frequencySelectionMode}\n @donationInfoChanged=${this.donationInfoChanged}\n @paymentProviderSelected=${this.paymentProviderSelected}\n @paymentFlowStarted=${this.paymentFlowStarted}\n @paymentFlowConfirmed=${this.paymentFlowConfirmed}\n @paymentFlowCancelled=${this.paymentFlowCancelled}\n @paymentFlowError=${this.paymentFlowError}\n >\n <!--\n Braintree's hosted fields, the PayPal button and recaptcha can't\n live in a shadow root, so they render here in the light DOM and\n are slotted into the form. See\n https://github.com/braintree/braintree-web-drop-in/issues/614\n and https://github.com/paypal/paypal-checkout-components/issues/353\n -->\n <div slot=\"braintree-hosted-fields\">\n <ia-donation-credit-card-fields></ia-donation-credit-card-fields>\n </div>\n\n <!-- Autofill doesn't reach into shadow DOM, so the contact form is light DOM too -->\n <div slot=\"contact-form\">\n <ia-donation-contact-form\n .donorEmail=${this.donorEmail}\n ></ia-donation-contact-form>\n </div>\n\n <div slot=\"paypal-button\">\n <div id=\"paypal-button\"></div>\n </div>\n\n <slot name=\"recaptcha\" slot=\"recaptcha\"></slot>\n </ia-donation-form>\n </div>\n\n ${this.getStyles}\n `;\n }\n\n /** Light DOM, for the payment libraries that can't render into a shadow root */\n createRenderRoot(): this {\n return this;\n }\n\n private donationInfoChanged(e: CustomEvent): void {\n this.logEvent('DonationInfoChanged');\n this.donationInfo = e.detail.donationInfo;\n }\n\n private trackViewedEvent(): void {\n this.logEvent('Viewed');\n }\n\n private paymentProviderSelected(e: CustomEvent): void {\n const paymentProvider = e.detail.paymentProvider as\n | PaymentProvider\n | undefined;\n const previousPaymentProvider = e.detail.previousPaymentProvider as\n | PaymentProvider\n | undefined;\n const providerNoSpaces = this.removeSpaces(paymentProvider ?? 'unset');\n let eventName = `ProviderFirstSelected-${providerNoSpaces}`;\n let previousProviderInfo: string | undefined;\n if (previousPaymentProvider !== undefined) {\n eventName = `ProviderChangedTo-${providerNoSpaces}`;\n previousProviderInfo = `ProviderChangedFrom-${this.removeSpaces(\n previousPaymentProvider,\n )}`;\n }\n\n this.logEvent(eventName, previousProviderInfo);\n }\n\n private paymentFlowConfirmed(e: CustomEvent): void {\n this.logEvent(\n 'PaymentFlowConfirmed',\n this.removeSpaces(e.detail.paymentProvider),\n );\n }\n\n private paymentFlowStarted(e: CustomEvent): void {\n this.logEvent(\n 'PaymentFlowStarted',\n this.removeSpaces(e.detail.paymentProvider),\n );\n }\n\n private paymentFlowCancelled(e: CustomEvent): void {\n this.logEvent(\n 'PaymentFlowCancelled',\n this.removeSpaces(e.detail.paymentProvider),\n );\n }\n\n private paymentFlowError(e: CustomEvent): void {\n const providerNoSpaces = this.removeSpaces(e.detail.paymentProvider);\n this.logEvent('PaymentFlowError', `${providerNoSpaces}-${e.detail.error}`);\n }\n\n private removeSpaces(original: string): string {\n return original.replace(/\\s+/g, '');\n }\n\n /** A sampled event in this form's category */\n private logEvent(action: string, label?: string): void {\n const analyticEvent: AnalyticsEvent = {\n action,\n label,\n category: this.analyticsCategory,\n };\n this.analyticsHandler?.sendEvent(analyticEvent);\n }\n\n /** An unsampled event in the `DonationFlow` category */\n private logDonationFlowEvent(action: string, label?: string): void {\n const analyticEvent: AnalyticsEvent = {\n action,\n label,\n category: 'DonationFlow',\n };\n this.analyticsHandler?.sendEventNoSampling(analyticEvent);\n }\n\n /**\n * The element renders into the light DOM, so instead of a `styles` block\n * it writes its own `<style>` tag, scoped to its container class.\n *\n * The `--ia-donation-form-*` variables set here are the consumer-facing\n * theming for the whole form; they fan out to the sections, the amount\n * picker and the payment buttons.\n */\n private get getStyles(): TemplateResult {\n return html`\n <style>\n .ia-donation-form-controller-container {\n --donation-form-controller-base-font-size--: var(\n --ia-donation-form-base-font-size,\n 10px\n );\n color: var(--ia-donation-form-text-color, #333);\n background-color: var(\n --ia-donation-form-background-color,\n transparent\n );\n\n --ia-donation-section-background-color: var(\n --ia-donation-form-background-color,\n transparent\n );\n --ia-donation-edit-background-color: var(\n --ia-donation-form-background-color,\n transparent\n );\n\n --ia-donation-section-badge-background-color: var(\n --ia-donation-form-badge-background-color,\n #333\n );\n --ia-donation-edit-badge-background-color: var(\n --ia-donation-form-badge-background-color,\n #333\n );\n\n --ia-donation-section-badge-font-color: var(\n --ia-donation-form-badge-text-color,\n #fff\n );\n --ia-donation-edit-badge-font-color: var(\n --ia-donation-form-badge-text-color,\n #fff\n );\n\n --ia-donation-edit-button-font-color: var(\n --ia-donation-form-payment-option-text-color\n );\n --ia-donation-edit-button-color: var(\n --ia-donation-form-payment-option-background-color\n );\n --ia-donation-edit-button-selected-color: var(\n --ia-donation-form-selected-option-background-color\n );\n --ia-donation-edit-button-selected-font-color: var(\n --ia-donation-form-selected-option-text-color\n );\n }\n\n .ia-donation-form-controller-container ia-donation-form:focus {\n outline: none;\n }\n\n /* The real PayPal button, kept but nearly invisible under the local one */\n .ia-donation-form-controller-container #paypal-button {\n opacity: 0.001;\n width: calc(var(--donation-form-controller-base-font-size--) * 5);\n height: calc(var(--donation-form-controller-base-font-size--) * 3);\n overflow: hidden;\n }\n\n .ia-donation-form-controller-container\n div[slot='braintree-hosted-fields'] {\n background-color: white;\n }\n </style>\n `;\n }\n}\n"]}
|