{"version":3,"file":"static/js/486.38092daa.chunk.js","mappings":"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","sources":["Components/StandardForm.js"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport DonationFrequencies from \"./Util/DonationFrequencies\";\nimport CustomAmount from \"./Util/CustomAmount\";\nimport FundsDropdown from \"./Util/FundsDropdown\";\nimport AmountButtons from \"./Util/AmountButtons\";\nimport CustomInputsPage from \"./Util/CustomInputs\";\nimport CustomShimmer from \"./Util/Shimmer\";\nimport { setContrast } from \"./Util/ColorSwap.js\";\nimport { fieldMapper } from \"./Util/FieldMapper\";\n\nconst freqMap = {\n \"\": \"\",\n ONE_TIME: \"One-Time\",\n DAILY: \"Daily\",\n WEEKLY: \"Weekly\",\n MONTHLY: \"Monthly\",\n ANNUALLY: \"Yearly\",\n};\n\nfunction StandardForm(props) {\n const [hostedPage, setHostedPage] = useState(null);\n const [elementID, setElementID] = useState(\"\");\n const [configData, setConfigData] = useState({});\n\n const [maxTransactionAmount, setMaxTransactionAmount] = useState(1000);\n const [customInputsValues, setCustomInputsValues] = useState([]);\n const [primaryColor, setPrimaryColor] = useState(\"#69995E\");\n const [secondaryColor, setSecondaryColor] = useState(\"#496b42\");\n const [funds, setFunds] = useState([\n \"General Fund\",\n \"Zakat Fund\",\n \"Sadaqah Fund\",\n ]);\n const [frequencies, setFrequencies] = useState([\n \"ONE_TIME\",\n \"DAILY\",\n \"WEEKLY\",\n \"MONTHLY\",\n \"ANNUALLY\",\n ]);\n const [oneTimeAmounts, setOneTimeAmounts] = useState([\n \"10\",\n \"25\",\n \"50\",\n \"100\",\n ]);\n const [dailyAmounts, setDailyAmounts] = useState([\"10\", \"25\", \"50\", \"100\"]);\n const [weeklyAmounts, setWeeklyAmounts] = useState([\"10\", \"25\", \"50\", \"100\"]);\n const [monthlyAmounts, setMonthlyAmounts] = useState([\n \"10\",\n \"25\",\n \"50\",\n \"100\",\n ]);\n const [annuallyAmounts, setAnnuallyAmounts] = useState([\n \"10\",\n \"25\",\n \"50\",\n \"100\",\n ]);\n const [defaultOneTimeAmount, setDefaultOneTimeAmount] = useState(\"10\");\n const [defaultDailyAmount, setDefaultDailyAmount] = useState(\"25\");\n const [defaultWeeklyAmount, setDefaultWeeklyAmount] = useState(\"50\");\n const [defaultMonthlyAmount, setDefaultMonthlyAmount] = useState(\"100\");\n const [defaultAnnuallyAmount, setDefaultAnnuallyAmount] = useState(\"10\");\n\n const [page, setPage] = useState(\"START_PAGE\");\n const [defaultAmounts, setDefaultAmounts] = useState(oneTimeAmounts);\n\n const [frequency, setFrequency] = useState(\"\");\n const [amount, setAmount] = useState(\"0\");\n const [selectedFund, setSelectedFund] = useState(\"\");\n\n const [errorMessage, setErrorMessage] = useState(\"\");\n const [errorDisplayTime, setErrorDisplayTime] = useState(0);\n const [errorMessageInterval, setErrorMessageInterval] = useState(null);\n const [loading, setLoading] = useState(true);\n const [addToCart, setAddToCart] = useState(false);\n\n const [domID, setDomID] = useState(\"\");\n const [cardMin, setCardMin] = useState(1.0);\n\n const listener = (event) => {\n if (\n !(\n event.data.entity == \"CHARITYSTACK\" &&\n event.data.action == \"RESET_ELEMENT\"\n )\n )\n return;\n\n setPage(\"START_PAGE\");\n setFrequency(\"\");\n setAmount(\"\");\n setSelectedFund(\"\");\n\n props.fetchElementsConfig().catch((err) => console.log(\"ERROR\", err));\n };\n\n const cssContentListener = (event) => {\n const urlParams = new URLSearchParams(window.location.search);\n let elementID = urlParams.get(\"elementID\");\n if (\n !(event.data.action === \"ADD_CSS_CONTENT\" && event.data.id === elementID)\n )\n return;\n\n const cssContent = event.data.data;\n // inject css content into the iframe\n const style = document.createElement(\"style\");\n style.innerHTML = cssContent;\n document.head.appendChild(style);\n console.log(\"css content iframe\", cssContent);\n };\n\n const goBackListener = (event) => {\n if (\n !(event.data.entity == \"CHARITYSTACK\" && event.data.action == \"GO_BACK\")\n )\n return;\n\n // this looks complicated b/c we can't read the states inside this function the normal way\n // tbh right now we can always set the state as START_PAGE b/c both if and else do that\n // but i am keeping this in case we need to actually change it to two or more values later\n setPage((currentPage) => {\n if (currentPage === \"START_PAGE\") {\n return \"START_PAGE\";\n }\n return \"START_PAGE\";\n });\n };\n\n useEffect(() => {\n // Send the content height to the parent window\n window.parent.postMessage(\n {\n action: \"CHANGE_PAGE\",\n entity: \"CHARITYSTACK\",\n sender: \"STANDARD_FORM\",\n receiver: \"HOSTED_PAGE\",\n data: JSON.stringify({\n currentPage: page,\n }),\n },\n \"*\",\n );\n resizeIframe();\n }, [page]);\n\n useEffect(() => {\n if (loading === false && hostedPage !== null) {\n // send message that element has finished loading\n window.parent.postMessage(\n {\n action: \"FINISHED_LOADING\",\n entity: \"CHARITYSTACK\",\n sender: \"STANDARD_FORM\",\n receiver: \"HOSTED_PAGE\",\n },\n \"*\",\n );\n }\n }, [loading]);\n\n useEffect(() => {\n resizeIframe();\n }, [loading, page]);\n\n useEffect(() => {\n window.addEventListener(\"message\", listener);\n window.addEventListener(\"message\", goBackListener);\n window.addEventListener(\"message\", cssContentListener);\n // grab hostedPage boolean\n const urlParams = new URLSearchParams(window.location.search);\n const hostedPage = urlParams.get(\"page\");\n // page can be either null, HOSTED_PAGE_FULLSCREEN, or HOSTED_PAGE_POPUP\n setHostedPage(hostedPage);\n setDomID(urlParams.get(\"domID\"));\n return () => {\n window.removeEventListener(\"message\", listener);\n window.removeEventListener(\"message\", goBackListener);\n window.removeEventListener(\"message\", cssContentListener);\n };\n }, []);\n\n useEffect(() => {\n const { data } = props;\n // preprocess data\n data.customInputs.forEach((input) => {\n input.answers = [\"\"];\n });\n // convert amounts to strings\n data.oneTimeAmounts = data.oneTimeAmounts.map((amount) =>\n amount.toString(),\n );\n data.dailyAmounts = data.dailyAmounts.map((amount) => amount.toString());\n data.weeklyAmounts = data.weeklyAmounts.map((amount) => amount.toString());\n data.monthlyAmounts = data.monthlyAmounts.map((amount) =>\n amount.toString(),\n );\n data.annuallyAmounts = data.annuallyAmounts.map((amount) =>\n amount.toString(),\n );\n data.defaultOneTimeAmount = data.defaultOneTimeAmount.toString();\n data.defaultDailyAmount = data.defaultDailyAmount.toString();\n data.defaultWeeklyAmount = data.defaultWeeklyAmount.toString();\n data.defaultMonthlyAmount = data.defaultMonthlyAmount.toString();\n data.defaultAnnuallyAmount = data.defaultAnnuallyAmount.toString();\n setCardMin(data.cardMin);\n setElementID(data.elementID);\n setMaxTransactionAmount(data.maxTransactionAmount);\n setCustomInputsValues(data.customInputs);\n setFunds(data.funds);\n if (data.funds.length == 1) {\n setSelectedFund(data.funds[0]);\n }\n setFrequencies(data.frequencies);\n setFrequency(data.defaultFrequency);\n setOneTimeAmounts(data.oneTimeAmounts);\n setDailyAmounts(data.dailyAmounts);\n setWeeklyAmounts(data.weeklyAmounts);\n setMonthlyAmounts(data.monthlyAmounts);\n setAnnuallyAmounts(data.annuallyAmounts);\n setDefaultOneTimeAmount(data.defaultOneTimeAmount);\n setDefaultDailyAmount(data.defaultDailyAmount);\n setDefaultWeeklyAmount(data.defaultWeeklyAmount);\n setDefaultMonthlyAmount(data.defaultMonthlyAmount);\n setDefaultAnnuallyAmount(data.defaultAnnuallyAmount);\n setPrimaryColor(data.lightColor);\n setSecondaryColor(data.darkColor);\n setLoading(false);\n setConfigData(data);\n setAddToCart(data.showAddToCart === undefined ? null : data.showAddToCart);\n\n window.top.postMessage(\n {\n action: \"IFRAME_LOADED\",\n entity: \"CHARITYSTACK\",\n sender: \"STANDARD_FORM\",\n receiver: \"PARENT_WEBSITE\",\n data: JSON.stringify(data),\n id: data.sourceWebsite,\n },\n \"*\",\n );\n }, [props]);\n\n useEffect(() => {\n let timer;\n if (errorMessage != \"\") {\n timer = setTimeout(() => {\n setErrorMessage(\"\");\n }, 3000);\n }\n return () => {\n clearTimeout(timer);\n };\n }, [errorMessage]);\n\n useEffect(() => {\n if (frequency == \"ONE_TIME\") {\n setDefaultAmounts(oneTimeAmounts);\n setAmount(defaultOneTimeAmount == \"0\" ? \"\" : defaultOneTimeAmount);\n }\n if (frequency == \"DAILY\") {\n setDefaultAmounts(dailyAmounts);\n setAmount(defaultDailyAmount == \"0\" ? \"\" : defaultDailyAmount);\n }\n if (frequency == \"WEEKLY\") {\n setDefaultAmounts(weeklyAmounts);\n setAmount(defaultWeeklyAmount == \"0\" ? \"\" : defaultWeeklyAmount);\n }\n if (frequency == \"MONTHLY\") {\n setDefaultAmounts(monthlyAmounts);\n setAmount(defaultMonthlyAmount == \"0\" ? \"\" : defaultMonthlyAmount);\n }\n if (frequency == \"ANNUALLY\") {\n setDefaultAmounts(annuallyAmounts);\n setAmount(defaultAnnuallyAmount == \"0\" ? \"\" : defaultAnnuallyAmount);\n }\n }, [frequency]);\n\n useEffect(() => {\n if (errorDisplayTime >= 3) {\n clearInterval(errorMessageInterval);\n setErrorDisplayTime(0);\n setErrorMessage(\"\");\n }\n }, [errorDisplayTime]);\n\n const resizeIframe = () => {\n const height = document.body.scrollHeight;\n const width = document.body.scrollWidth;\n\n // Send the content height to the parent window\n window.parent.postMessage(\n {\n action: \"RESIZE\",\n entity: \"CHARITYSTACK\",\n sender: \"STANDARD_FORM\",\n receiver: \"HOSTED_SCRIPT\",\n data: JSON.stringify({\n height: height,\n width: width,\n elementID: elementID,\n domID: domID,\n }),\n },\n \"*\",\n );\n };\n\n const hasErrors = () => {\n if (frequency == \"\") {\n setErrorMessage(\"Please select a frequency\");\n return true;\n }\n if (amount == \"\") {\n setErrorMessage(\"Please select an amount\");\n return true;\n }\n if (+amount < cardMin) {\n setErrorMessage(\"Please select an amount that is at least $\" + cardMin);\n return true;\n }\n if (selectedFund == \"\") {\n setErrorMessage(\"Please select a fund\");\n return true;\n }\n return false;\n };\n\n const handleButtonClick = () => {\n if (hasErrors()) {\n return;\n }\n if (page === \"START_PAGE\" && customInputsValues.length > 0) {\n setPage(\"CUSTOM_INPUTS_PAGE\");\n } else {\n handleDonate();\n }\n };\n\n const handleDonate = () => {\n const data = configData;\n\n // updated configData to include user inputs\n data.frequency = frequency;\n data.amount = amount;\n data.fund = selectedFund;\n data.customInputsValues = customInputsValues;\n\n // convert amounts to float. Can remove later since not needed on donation form side\n data.oneTimeAmounts = data.oneTimeAmounts.map((amount) =>\n parseFloat(amount),\n );\n data.dailyAmounts = data.dailyAmounts.map((amount) => parseFloat(amount));\n data.weeklyAmounts = data.weeklyAmounts.map((amount) => parseFloat(amount));\n data.monthlyAmounts = data.monthlyAmounts.map((amount) =>\n parseFloat(amount),\n );\n data.annuallyAmounts = data.annuallyAmounts.map((amount) =>\n parseFloat(amount),\n );\n data.defaultOneTimeAmount = parseFloat(data.defaultOneTimeAmount);\n data.defaultDailyAmount = parseFloat(data.defaultDailyAmount);\n data.defaultWeeklyAmount = parseFloat(data.defaultWeeklyAmount);\n data.defaultMonthlyAmount = parseFloat(data.defaultMonthlyAmount);\n data.defaultAnnuallyAmount = parseFloat(data.defaultAnnuallyAmount);\n\n data.hostedPage = hostedPage;\n console.log(\"hosteddddpage\", hostedPage);\n\n data.mappedData = fieldMapper(\n data.fieldMappings,\n data.fund,\n data.customInputsValues,\n [],\n );\n // if (hostedPage === \"HOSTED_PAGE_POPUP\") {\n // // send message to remove hosted page popup\n // console.log(\"sending popup\");\n\n // // post message to parent js file\n // window.top.postMessage(\n // {\n // action: \"EXIT_HOSTED_PAGE_POPUP\",\n // entity: \"CHARITYSTACK\",\n // sender: \"STANDARD_FORM\",\n // receiver: \"HOSTED_SCRIPT\",\n // },\n // \"*\",\n // );\n // }\n\n if (addToCart === true) {\n window.top.postMessage(\n {\n action: \"UPDATE_CART\",\n entity: \"CHARITYSTACK\",\n sender: \"STANDARD_FORM\",\n receiver: \"HOSTED_SCRIPT\",\n data: JSON.stringify(data),\n id: data.cartElementID,\n },\n \"*\",\n );\n } else {\n window.top.postMessage(\n {\n action: \"DONATE\",\n entity: \"CHARITYSTACK\",\n sender: \"STANDARD_FORM\",\n receiver: \"HOSTED_SCRIPT\",\n hostedPage: hostedPage,\n donationData: JSON.stringify(data),\n },\n \"*\",\n );\n }\n\n // }, window.location.ancestorOrigins[0]);\n };\n if (loading) {\n return (\n <>\n