{"version":3,"file":"index-Bq7myCRn.js","sources":["../../Assets/Scripts/components/recordedDownload/index.ts"],"sourcesContent":["import { displayErrors, clearErrors } from \"../../utils/formValidation\";\nimport { getFormData } from \"../../helpers/formData\";\n\ndeclare global {\n interface Window {\n preparedForms: string[];\n }\n}\n\nfunction correctKey(key: string) {\n return document.querySelector(`[id='${key}']`)?.getAttribute(\"data-alias\") ?? document.querySelector(`[data-umb='${key}']`)?.getAttribute(\"data-alias\") ?? key;\n}\n\nfunction init() {\n const recordedDownloadContainers = document.querySelectorAll(\n \".js-recorded-download\"\n );\n\n recordedDownloadContainers.forEach((recordedDownloadContainer) => {\n const formId = recordedDownloadContainer.getAttribute(\"data-form-id\") ?? \"\";\n\n if (window.preparedForms && window.preparedForms.includes(formId)) {\n return;\n }\n\n window.preparedForms = window.preparedForms || [];\n window.preparedForms.push(formId);\n\n const popover = document.querySelector(\n `.js-recorded-download-popover[id=\"${formId}\"]`\n );\n const closeButtons = popover?.querySelectorAll(\n \".js-recorded-download-popover-close\"\n );\n\n popover?.querySelectorAll(\"form\").forEach((form) => {\n const downloadTrigger\n = recordedDownloadContainer.querySelector(\n \".js-download-trigger\"\n );\n const submitBtn = form?.querySelector(\n \"button[type=\\\"submit\\\"]\"\n );\n\n // Get pertinent Umbraco Forms input elements\n const downloadInput = form?.querySelector(\n \"[data-alias=\\\"download\\\"]\"\n );\n\n if (form && formId) {\n // Populate hidden 'download' form field with value from trigger button\n if (downloadInput) {\n downloadInput.value = downloadTrigger?.getAttribute(\"data-src\") || \"\";\n downloadInput.dispatchEvent(new Event(\"change\"));\n }\n\n // Hijack form submission and do it via AJAX instead\n form.addEventListener(\"submit\", async (event) => {\n event.preventDefault();\n if (submitBtn) {\n submitBtn.disabled = true;\n }\n const data = { values: Object.fromEntries(getFormData(form).map(([key, value]) => [correctKey(key), value])) };\n\n try {\n // Make the AJAX request\n const response = await fetch(\n `/umbraco/forms/api/v1/entries/${formId}`,\n {\n method: \"POST\",\n headers: {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(data),\n }\n );\n\n if (!response.ok) {\n const errorData = await response.json();\n\n // Output errors to UI\n displayErrors(form, errorData.errors);\n\n if (submitBtn) submitBtn.disabled = false;\n return;\n }\n // Open downloaded resource in new browser window\n if (downloadInput) {\n // Trigger the download\n const downloadURL = downloadInput.value;\n if (submitBtn) submitBtn.disabled = false;\n clearErrors(form);\n window.open(downloadURL, \"_blank\");\n\n // Render the success message\n const formContainer = form.closest(\".umbraco-forms-form\");\n const body = await response.json();\n const successMessage = document.createElement(\"div\");\n successMessage.classList.add(\"umbraco-forms-submitmessage\");\n successMessage.innerHTML = body.messageOnSubmit;\n formContainer?.append(successMessage);\n form.remove();\n }\n }\n catch (error) {\n console.error(\"Unexpected error:\", error);\n }\n });\n }\n });\n\n closeButtons?.forEach((closeButton) => {\n closeButton.addEventListener(\"click\", () => {\n window.location.reload();\n });\n });\n });\n}\n\nexport default () => {\n init();\n};\n"],"names":["correctKey","key","_a","_b","init","recordedDownloadContainer","formId","popover","closeButtons","form","downloadTrigger","submitBtn","downloadInput","event","data","getFormData","value","response","errorData","displayErrors","downloadURL","clearErrors","formContainer","body","successMessage","error","closeButton","index"],"mappings":"mGASA,SAASA,EAAWC,EAAa,SAC/B,QAAOC,EAAA,SAAS,cAA2B,QAAQD,CAAG,IAAI,IAAnD,YAAAC,EAAsD,aAAa,kBAAiBC,EAAA,SAAS,cAA2B,cAAcF,CAAG,IAAI,IAAzD,YAAAE,EAA4D,aAAa,gBAAiBF,CACvL,CAEA,SAASG,GAAO,CACqB,SAAS,iBAC1C,uBAAA,EAGyB,QAASC,GAA8B,CAChE,MAAMC,EAASD,EAA0B,aAAa,cAAc,GAAK,GAEzE,GAAI,OAAO,eAAiB,OAAO,cAAc,SAASC,CAAM,EAC9D,OAGK,OAAA,cAAgB,OAAO,eAAiB,CAAA,EACxC,OAAA,cAAc,KAAKA,CAAM,EAEhC,MAAMC,EAAU,SAAS,cACvB,qCAAqCD,CAAM,IAAA,EAEvCE,EAAeD,GAAA,YAAAA,EAAS,iBAC5B,uCAGFA,GAAA,MAAAA,EAAS,iBAAkC,QAAQ,QAASE,GAAS,CACnE,MAAMC,EACFL,EAA0B,cAC1B,sBAAA,EAEEM,EAAYF,GAAA,YAAAA,EAAM,cACtB,yBAIIG,EAAgBH,GAAA,YAAAA,EAAM,cAC1B,2BAGEA,GAAQH,IAENM,IACFA,EAAc,OAAQF,GAAA,YAAAA,EAAiB,aAAa,cAAe,GACnEE,EAAc,cAAc,IAAI,MAAM,QAAQ,CAAC,GAI5CH,EAAA,iBAAiB,SAAU,MAAOI,GAAU,CAC/CA,EAAM,eAAe,EACjBF,IACFA,EAAU,SAAW,IAEjB,MAAAG,EAAO,CAAE,OAAQ,OAAO,YAAYC,EAAYN,CAAI,EAAE,IAAI,CAAC,CAACR,EAAKe,CAAK,IAAM,CAAChB,EAAWC,CAAG,EAAGe,CAAK,CAAC,CAAC,GAEvG,GAAA,CAEF,MAAMC,EAAW,MAAM,MACrB,iCAAiCX,CAAM,GACvC,CACE,OAAQ,OACR,QAAS,CAEP,eAAgB,kBAClB,EACA,KAAM,KAAK,UAAUQ,CAAI,CAC3B,CAAA,EAGE,GAAA,CAACG,EAAS,GAAI,CACV,MAAAC,EAAY,MAAMD,EAAS,OAGnBE,EAAAV,EAAMS,EAAU,MAAM,EAEhCP,MAAqB,SAAW,IACpC,MACF,CAEA,GAAIC,EAAe,CAEjB,MAAMQ,EAAcR,EAAc,MAC9BD,MAAqB,SAAW,IACpCU,EAAYZ,CAAI,EACT,OAAA,KAAKW,EAAa,QAAQ,EAG3B,MAAAE,EAAgBb,EAAK,QAAQ,qBAAqB,EAClDc,EAAO,MAAMN,EAAS,OACtBO,EAAiB,SAAS,cAAc,KAAK,EACpCA,EAAA,UAAU,IAAI,6BAA6B,EAC1DA,EAAe,UAAYD,EAAK,gBAChCD,GAAA,MAAAA,EAAe,OAAOE,GACtBf,EAAK,OAAO,CACd,QAEKgB,EAAO,CACJ,QAAA,MAAM,oBAAqBA,CAAK,CAC1C,CAAA,CACD,EACH,GAGYjB,GAAA,MAAAA,EAAA,QAASkB,GAAgB,CACzBA,EAAA,iBAAiB,QAAS,IAAM,CAC1C,OAAO,SAAS,QAAO,CACxB,CAAA,EACF,CACF,CACH,CAEA,MAAAC,EAAe,IAAM,CACdvB,GACP"}