{"version":3,"file":"components-donation-form-js-CfWZRFFO.js","sources":["../src/entries/components/donation-form.js"],"sourcesContent":["import { createValidator } from \"@/scripts/components/form/validation/validator\";\nimport { fireEvent, trackGoogleAnalytics } from \"@/scripts/common/util\";\nimport { showFormMessages } from \"@/scripts/components/form/form\";\nimport ajax from \"@/scripts/common/ajax\";\nimport \"./donation-form.css\";\nimport { scrollToIfNeeded } from \"@/scripts/common/scroll-to\";\n\nconst stripe = window.Stripe(document.querySelector(\".donation-form\").dataset.stripeKey);\n\nlet elements;\n\nconst handlePaymentForm = async (form) => {\n const intentId = form.querySelector('[name=\"StripeIntentID\"]');\n const customerId = form.querySelector('[name=\"StripeCustomerID\"]');\n\n const appearance = {\n labels: \"floating\",\n theme: \"stripe\",\n variables: {\n colorPrimary: \"#eb532a\",\n colorBackground: \"#ffffff\",\n colorDanger: \"#b5134b\",\n fontFamily: \"Gotham, system-ui, sans-serif\",\n fontWeightMedium: \"500\",\n fontWeightBold: \"500\",\n borderRadius: \"8px\",\n },\n };\n\n const submitButton = form.querySelector('[type=\"submit\"]');\n submitButton.disabled = true;\n\n try {\n const paymentEndpoint = form.dataset.paymentEndpoint;\n\n const data = new FormData(form);\n\n const res = await ajax.post(paymentEndpoint, { body: data }).json();\n\n if (intentId.value) {\n elements.fetchUpdates();\n } else {\n elements = stripe.elements({ clientSecret: res.clientSecret, appearance });\n\n const paymentElement = elements.create(\"payment\", {\n layout: \"tabs\",\n });\n\n paymentElement.mount(\"#payment-element\");\n }\n\n intentId.value = res.intentId;\n customerId.value = res.customerId;\n } catch (error) {\n console.error(error);\n } finally {\n submitButton.disabled = false;\n }\n};\n\nconst handlePaymentSubmit = async (e) => {\n e.preventDefault();\n\n const form = e.currentTarget;\n const submitButton = form.querySelector('[type=\"submit\"]');\n const formData = new FormData(form);\n\n submitButton.disabled = true;\n submitButton.classList.add(\"is-loading\");\n\n const { error } = await stripe.confirmSetup({\n elements,\n confirmParams: {\n return_url: \"https://rcil.com\",\n },\n redirect: \"if_required\",\n });\n\n if (error && (error.type === \"card_error\" || error.type === \"validation_error\")) {\n showMessage(error.message);\n submitButton.disabled = false;\n submitButton.classList.remove(\"is-loading\");\n } else {\n try {\n const res = await ajax.post(form.action, { body: formData }).json();\n\n if (res.success) {\n if (res.ga) {\n res.ga.forEach((event) => trackGoogleAnalytics(event));\n }\n\n form.querySelectorAll(\"fieldset\").forEach((x) => x.remove());\n\n fireEvent(\"form:submit\", form);\n }\n\n if (res.messages) {\n showFormMessages(form, res.messages, true, false);\n }\n } catch (error) {\n console.error(error);\n showMessage(\"An unexpected error occurred.\");\n submitButton.disabled = false;\n submitButton.classList.remove(\"is-loading\");\n }\n }\n};\n\nfunction showMessage(messageText) {\n const messageContainer = document.querySelector(\"#payment-message\");\n\n messageContainer.classList.remove(\"hidden\");\n messageContainer.textContent = messageText;\n\n setTimeout(function () {\n messageContainer.classList.add(\"hidden\");\n messageContainer.textContent = \"\";\n }, 4000);\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const holder = document.getElementById(\"donate-form\");\n const form = document.querySelector(\".donation-form\");\n\n document.documentElement.addEventListener(\"form:payment-step\", () => {\n handlePaymentForm(form);\n });\n\n form.addEventListener(\"submit\", handlePaymentSubmit);\n\n form.querySelectorAll(\".form-step-submit\").forEach((submit) => {\n submit.addEventListener(\"click\", () => {\n if (submit.dataset.stepDir === \"next\") {\n const validator = createValidator(form);\n const result = validator.validateForm();\n\n if (!result.isValid) {\n return false;\n }\n }\n\n if (holder) {\n scrollToIfNeeded(holder, 24);\n }\n\n fireEvent(\"donation-form:step\", document.documentElement, { step: submit.dataset.step });\n });\n });\n});\n"],"names":["stripe","elements","handlePaymentForm","form","intentId","customerId","appearance","submitButton","paymentEndpoint","data","res","ajax","error","handlePaymentSubmit","e","formData","showMessage","event","trackGoogleAnalytics","x","fireEvent","showFormMessages","messageText","messageContainer","holder","submit","createValidator","scrollToIfNeeded"],"mappings":"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"}