{"version":3,"file":"scripts.min.js","mappings":"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","sources":["webpack://app-events-and-courses/./node_modules/pristinejs/dist/pristine.js","webpack://app-events-and-courses/./src/ts/index.ts","webpack://app-events-and-courses/./src/ts/lib-2sxc-alerts.ts","webpack://app-events-and-courses/./src/ts/lib-2sxc-forms.ts","webpack://app-events-and-courses/./src/ts/lib-2sxc-recaptcha.ts","webpack://app-events-and-courses/./src/ts/lib-2sxc-tracking.ts","webpack://app-events-and-courses/webpack/bootstrap","webpack://app-events-and-courses/webpack/startup"],"sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Pristine = factory());\n}(this, (function () { 'use strict';\n\n var lang = {\n en: {\n required: \"This field is required\",\n email: \"This field requires a valid e-mail address\",\n number: \"This field requires a number\",\n integer: \"This field requires an integer value\",\n url: \"This field requires a valid website URL\",\n tel: \"This field requires a valid telephone number\",\n maxlength: \"This fields length must be < ${1}\",\n minlength: \"This fields length must be > ${1}\",\n min: \"Minimum value for this field is ${1}\",\n max: \"Maximum value for this field is ${1}\",\n pattern: \"Please match the requested format\",\n equals: \"The two fields do not match\",\n default: \"Please enter a correct value\"\n }\n };\n\n function findAncestor(el, cls) {\n while ((el = el.parentElement) && !el.classList.contains(cls)) {}\n return el;\n }\n\n function tmpl(o) {\n var _arguments = arguments;\n\n return this.replace(/\\${([^{}]*)}/g, function (a, b) {\n return _arguments[b];\n });\n }\n\n function groupedElemCount(input) {\n return input.pristine.self.form.querySelectorAll('input[name=\"' + input.getAttribute('name') + '\"]:checked').length;\n }\n\n function mergeConfig(obj1, obj2) {\n for (var attr in obj2) {\n if (!(attr in obj1)) {\n obj1[attr] = obj2[attr];\n }\n }\n return obj1;\n }\n\n var defaultConfig = {\n classTo: 'form-group',\n errorClass: 'has-danger',\n successClass: 'has-success',\n errorTextParent: 'form-group',\n errorTextTag: 'div',\n errorTextClass: 'text-help'\n };\n\n var PRISTINE_ERROR = 'pristine-error';\n var SELECTOR = \"input:not([type^=hidden]):not([type^=submit]), select, textarea\";\n var ALLOWED_ATTRIBUTES = [\"required\", \"min\", \"max\", 'minlength', 'maxlength', 'pattern'];\n var EMAIL_REGEX = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n var MESSAGE_REGEX = /-message(?:-([a-z]{2}(?:_[A-Z]{2})?))?/; // matches, -message, -message-en, -message-en_US\n var currentLocale = 'en';\n var validators = {};\n\n var _ = function _(name, validator) {\n validator.name = name;\n if (validator.priority === undefined) validator.priority = 1;\n validators[name] = validator;\n };\n\n _('text', { fn: function fn(val) {\n return true;\n }, priority: 0 });\n _('required', { fn: function fn(val) {\n return this.type === 'radio' || this.type === 'checkbox' ? groupedElemCount(this) : val !== undefined && val.trim() !== '';\n }, priority: 99, halt: true });\n _('email', { fn: function fn(val) {\n return !val || EMAIL_REGEX.test(val);\n } });\n _('number', { fn: function fn(val) {\n return !val || !isNaN(parseFloat(val));\n }, priority: 2 });\n _('integer', { fn: function fn(val) {\n return !val || /^\\d+$/.test(val);\n } });\n _('minlength', { fn: function fn(val, length) {\n return !val || val.length >= parseInt(length);\n } });\n _('maxlength', { fn: function fn(val, length) {\n return !val || val.length <= parseInt(length);\n } });\n _('min', { fn: function fn(val, limit) {\n return !val || (this.type === 'checkbox' ? groupedElemCount(this) >= parseInt(limit) : parseFloat(val) >= parseFloat(limit));\n } });\n _('max', { fn: function fn(val, limit) {\n return !val || (this.type === 'checkbox' ? groupedElemCount(this) <= parseInt(limit) : parseFloat(val) <= parseFloat(limit));\n } });\n _('pattern', { fn: function fn(val, pattern) {\n var m = pattern.match(new RegExp('^/(.*?)/([gimy]*)$'));return !val || new RegExp(m[1], m[2]).test(val);\n } });\n _('equals', { fn: function fn(val, otherFieldSelector) {\n var other = document.querySelector(otherFieldSelector);return other && (!val && !other.value || other.value === val);\n } });\n\n function Pristine(form, config, live) {\n\n var self = this;\n\n init(form, config, live);\n\n function init(form, config, live) {\n\n form.setAttribute(\"novalidate\", \"true\");\n\n self.form = form;\n self.config = mergeConfig(config || {}, defaultConfig);\n self.live = !(live === false);\n self.fields = Array.from(form.querySelectorAll(SELECTOR)).map(function (input) {\n\n var fns = [];\n var params = {};\n var messages = {};\n\n [].forEach.call(input.attributes, function (attr) {\n if (/^data-pristine-/.test(attr.name)) {\n var name = attr.name.substr(14);\n var messageMatch = name.match(MESSAGE_REGEX);\n if (messageMatch !== null) {\n var locale = messageMatch[1] === undefined ? 'en' : messageMatch[1];\n if (!messages.hasOwnProperty(locale)) messages[locale] = {};\n messages[locale][name.slice(0, name.length - messageMatch[0].length)] = attr.value;\n return;\n }\n if (name === 'type') name = attr.value;\n _addValidatorToField(fns, params, name, attr.value);\n } else if (~ALLOWED_ATTRIBUTES.indexOf(attr.name)) {\n _addValidatorToField(fns, params, attr.name, attr.value);\n } else if (attr.name === 'type') {\n _addValidatorToField(fns, params, attr.value);\n }\n });\n\n fns.sort(function (a, b) {\n return b.priority - a.priority;\n });\n\n self.live && input.addEventListener(!~['radio', 'checkbox'].indexOf(input.getAttribute('type')) ? 'input' : 'change', function (e) {\n self.validate(e.target);\n }.bind(self));\n\n return input.pristine = { input: input, validators: fns, params: params, messages: messages, self: self };\n }.bind(self));\n }\n\n function _addValidatorToField(fns, params, name, value) {\n var validator = validators[name];\n if (validator) {\n fns.push(validator);\n if (value) {\n var valueParams = name === \"pattern\" ? [value] : value.split(',');\n valueParams.unshift(null); // placeholder for input's value\n params[name] = valueParams;\n }\n }\n }\n\n /***\n * Checks whether the form/input elements are valid\n * @param input => input element(s) or a jquery selector, null for full form validation\n * @param silent => do not show error messages, just return true/false\n * @returns {boolean} return true when valid false otherwise\n */\n self.validate = function (input, silent) {\n silent = input && silent === true || input === true;\n var fields = self.fields;\n if (input !== true && input !== false) {\n if (input instanceof HTMLElement) {\n fields = [input.pristine];\n } else if (input instanceof NodeList || input instanceof (window.$ || Array) || input instanceof Array) {\n fields = Array.from(input).map(function (el) {\n return el.pristine;\n });\n }\n }\n\n var valid = true;\n\n for (var i = 0; fields[i]; i++) {\n var field = fields[i];\n if (_validateField(field)) {\n !silent && _showSuccess(field);\n } else {\n valid = false;\n !silent && _showError(field);\n }\n }\n return valid;\n };\n\n /***\n * Get errors of a specific field or the whole form\n * @param input\n * @returns {Array|*}\n */\n self.getErrors = function (input) {\n if (!input) {\n var erroneousFields = [];\n for (var i = 0; i < self.fields.length; i++) {\n var field = self.fields[i];\n if (field.errors.length) {\n erroneousFields.push({ input: field.input, errors: field.errors });\n }\n }\n return erroneousFields;\n }\n if (input.tagName && input.tagName.toLowerCase() === \"select\") {\n return input.pristine.errors;\n }\n return input.length ? input[0].pristine.errors : input.pristine.errors;\n };\n\n /***\n * Validates a single field, all validator functions are called and error messages are generated\n * when a validator fails\n * @param field\n * @returns {boolean}\n * @private\n */\n function _validateField(field) {\n var errors = [];\n var valid = true;\n for (var i = 0; field.validators[i]; i++) {\n var validator = field.validators[i];\n var params = field.params[validator.name] ? field.params[validator.name] : [];\n params[0] = field.input.value;\n if (!validator.fn.apply(field.input, params)) {\n valid = false;\n\n if (typeof validator.msg === \"function\") {\n errors.push(validator.msg(field.input.value, params));\n } else if (typeof validator.msg === \"string\") {\n errors.push(tmpl.apply(validator.msg, params));\n } else if (validator.msg === Object(validator.msg) && validator.msg[currentLocale]) {\n // typeof generates unnecessary babel code\n errors.push(tmpl.apply(validator.msg[currentLocale], params));\n } else if (field.messages[currentLocale] && field.messages[currentLocale][validator.name]) {\n errors.push(tmpl.apply(field.messages[currentLocale][validator.name], params));\n } else if (lang[currentLocale] && lang[currentLocale][validator.name]) {\n errors.push(tmpl.apply(lang[currentLocale][validator.name], params));\n } else {\n errors.push(tmpl.apply(lang[currentLocale].default, params));\n }\n\n if (validator.halt === true) {\n break;\n }\n }\n }\n field.errors = errors;\n return valid;\n }\n\n /***\n * Add a validator to a specific dom element in a form\n * @param elem => The dom element where the validator is applied to\n * @param fn => validator function\n * @param msg => message to show when validation fails. Supports templating. ${0} for the input's value, ${1} and\n * so on are for the attribute values\n * @param priority => priority of the validator function, higher valued function gets called first.\n * @param halt => whether validation should stop for this field after current validation function\n */\n self.addValidator = function (elem, fn, msg, priority, halt) {\n if (elem instanceof HTMLElement) {\n elem.pristine.validators.push({ fn: fn, msg: msg, priority: priority, halt: halt });\n elem.pristine.validators.sort(function (a, b) {\n return b.priority - a.priority;\n });\n } else {\n console.warn(\"The parameter elem must be a dom element\");\n }\n };\n\n /***\n * An utility function that returns a 2-element array, first one is the element where error/success class is\n * applied. 2nd one is the element where error message is displayed. 2nd element is created if doesn't exist and cached.\n * @param field\n * @returns {*}\n * @private\n */\n function _getErrorElements(field) {\n if (field.errorElements) {\n return field.errorElements;\n }\n var errorClassElement = findAncestor(field.input, self.config.classTo);\n var errorTextParent = null,\n errorTextElement = null;\n if (self.config.classTo === self.config.errorTextParent) {\n errorTextParent = errorClassElement;\n } else {\n errorTextParent = errorClassElement.querySelector('.' + self.config.errorTextParent);\n }\n if (errorTextParent) {\n errorTextElement = errorTextParent.querySelector('.' + PRISTINE_ERROR);\n if (!errorTextElement) {\n errorTextElement = document.createElement(self.config.errorTextTag);\n errorTextElement.className = PRISTINE_ERROR + ' ' + self.config.errorTextClass;\n errorTextParent.appendChild(errorTextElement);\n errorTextElement.pristineDisplay = errorTextElement.style.display;\n }\n }\n return field.errorElements = [errorClassElement, errorTextElement];\n }\n\n function _showError(field) {\n var errorElements = _getErrorElements(field);\n var errorClassElement = errorElements[0],\n errorTextElement = errorElements[1];\n\n var input = field.input;\n\n var inputId = input.id || Math.floor(new Date().valueOf() * Math.random());\n var errorId = 'error-' + inputId;\n\n if (errorClassElement) {\n errorClassElement.classList.remove(self.config.successClass);\n errorClassElement.classList.add(self.config.errorClass);\n input.setAttribute('aria-describedby', errorId);\n input.setAttribute('aria-invalid', 'true');\n }\n if (errorTextElement) {\n errorTextElement.setAttribute('id', errorId);\n errorTextElement.setAttribute('role', 'alert');\n errorTextElement.innerHTML = field.errors.join('
');\n errorTextElement.style.display = errorTextElement.pristineDisplay || '';\n }\n }\n\n /***\n * Adds error to a specific field\n * @param input\n * @param error\n */\n self.addError = function (input, error) {\n input = input.length ? input[0] : input;\n input.pristine.errors.push(error);\n _showError(input.pristine);\n };\n\n function _removeError(field) {\n var errorElements = _getErrorElements(field);\n var errorClassElement = errorElements[0],\n errorTextElement = errorElements[1];\n var input = field.input;\n\n\n if (errorClassElement) {\n // IE > 9 doesn't support multiple class removal\n errorClassElement.classList.remove(self.config.errorClass);\n errorClassElement.classList.remove(self.config.successClass);\n input.removeAttribute('aria-describedby');\n input.removeAttribute('aria-invalid');\n }\n if (errorTextElement) {\n errorTextElement.removeAttribute('id');\n errorTextElement.removeAttribute('role');\n errorTextElement.innerHTML = '';\n errorTextElement.style.display = 'none';\n }\n return errorElements;\n }\n\n function _showSuccess(field) {\n var errorClassElement = _removeError(field)[0];\n errorClassElement && errorClassElement.classList.add(self.config.successClass);\n }\n\n /***\n * Resets the errors\n */\n self.reset = function () {\n for (var i = 0; self.fields[i]; i++) {\n self.fields[i].errorElements = null;\n }\n Array.from(self.form.querySelectorAll('.' + PRISTINE_ERROR)).map(function (elem) {\n elem.parentNode.removeChild(elem);\n });\n Array.from(self.form.querySelectorAll('.' + self.config.classTo)).map(function (elem) {\n elem.classList.remove(self.config.successClass);\n elem.classList.remove(self.config.errorClass);\n });\n };\n\n /***\n * Resets the errors and deletes all pristine fields\n */\n self.destroy = function () {\n self.reset();\n self.fields.forEach(function (field) {\n delete field.input.pristine;\n });\n self.fields = [];\n };\n\n self.setGlobalConfig = function (config) {\n defaultConfig = config;\n };\n\n return self;\n }\n\n /***\n *\n * @param name => Name of the global validator\n * @param fn => validator function\n * @param msg => message to show when validation fails. Supports templating. ${0} for the input's value, ${1} and\n * so on are for the attribute values\n * @param priority => priority of the validator function, higher valued function gets called first.\n * @param halt => whether validation should stop for this field after current validation function\n */\n Pristine.addValidator = function (name, fn, msg, priority, halt) {\n _(name, { fn: fn, msg: msg, priority: priority, halt: halt });\n };\n\n Pristine.addMessages = function (locale, messages) {\n var langObj = lang.hasOwnProperty(locale) ? lang[locale] : lang[locale] = {};\n\n Object.keys(messages).forEach(function (key, index) {\n langObj[key] = messages[key];\n });\n };\n\n Pristine.setLocale = function (locale) {\n currentLocale = locale;\n };\n\n return Pristine;\n\n})));\n","import { showAlert, showConfigWarnings } from './lib-2sxc-alerts';\r\nimport { disableInputs, enableInputs, getFormValues, sendForm, validateForm } from './lib-2sxc-forms';\r\nimport { PristineOptions } from './lib-2sxc-pristine-options';\r\nimport { getRecaptchaToken, requiresRecaptcha } from './lib-2sxc-recaptcha';\r\nimport { addTrackingEvent } from './lib-2sxc-tracking';\r\n\r\n// so it can be called from the HTML when content re-initializes dynamically\r\nconst winAny = (window as any)\r\nwinAny.appEvents6 ??= {}\r\nwinAny.appEvents6.init ??= initAppEvents6\r\n\r\nconst debug = false\r\n\r\nfunction initAppEvents6({ domAttribute, options } : { domAttribute: string, options: PristineOptions }) {\r\n if (document.getElementsByTagName('form').length) document.getElementsByTagName('form')[0]?.setAttribute('novalidate', '')\r\n if (debug) console.log(\"Events6 loading, debug is enabled\");\r\n\r\n var btnToggleExpired = document.querySelector('.js-app-events6-toggle-expired-dates');\r\n if(btnToggleExpired != null) {\r\n btnToggleExpired.addEventListener('click', () => {\r\n document.querySelectorAll('.event-hidden').forEach((elem: HTMLElement, index) => {\r\n console.log(elem.style.display)\r\n if (elem.style.display == '' || elem.style.display == \"none\") {\r\n elem.style.display = \"block\";\r\n } else {\r\n elem.style.display = \"none\";\r\n }\r\n })\r\n })\r\n }\r\n \r\n const eventsWrapper = document.querySelectorAll(`[${domAttribute}]`)[0];\r\n if(!eventsWrapper) return\r\n\r\n const submitButton = (eventsWrapper.querySelectorAll('[app-events6-send]')[0] as HTMLButtonElement)\r\n submitButton.addEventListener('click', async (event: Event) => {\r\n event.preventDefault();\r\n\r\n const eventBtn = event.currentTarget as HTMLElement;\r\n addTrackingEvent('trackEventsForm', 'events-form', eventBtn.innerText)\r\n \r\n var valid = validateForm(eventsWrapper, options)\r\n if (!valid) {\r\n showAlert(eventsWrapper, 'msgIncomplete')\r\n return\r\n }\r\n \r\n const formValues = await getFormValues(eventsWrapper)\r\n\r\n if (requiresRecaptcha(eventsWrapper)) {\r\n let token = await getRecaptchaToken(eventsWrapper)\r\n if (!token) return showAlert(eventsWrapper, 'msgRecap')\r\n \r\n // set token for backend\r\n formValues.Recaptcha = token\r\n }\r\n\r\n\r\n // imply that message is sending by ui modifications \r\n\r\n disableInputs(eventsWrapper, true)\r\n showAlert(eventsWrapper, 'msgSending')\r\n \r\n //#region request handling\r\n\r\n let endpoint = (eventsWrapper as HTMLElement).dataset.webservice // (should be \"Form/ProcessForm\" or a custom override)\r\n\r\n\r\n sendForm(formValues, submitButton, endpoint)\r\n .then((result: any) => {\r\n // error\r\n if(!result.ok) {\r\n if(debug) console.log('error', result.status);\r\n \r\n showAlert(eventsWrapper, 'msgError')\r\n showConfigWarnings(eventsWrapper, 'app-events6-config-warning')\r\n enableInputs(eventsWrapper)\r\n \r\n addTrackingEvent('trackEventsForm', 'events-form', submitButton.innerText)\r\n return\r\n }\r\n \r\n // success\r\n //if(debug) console.log('success', result.json())\r\n //submitButton.setAttribute(\"disabled\", \"\")\r\n \r\n //showAlert(eventsWrapper, 'msgOk')\r\n //showConfigWarnings(eventsWrapper, 'app-events6-config-warning')\r\n //disableInputs(eventsWrapper, false)\r\n \r\n //addTrackingEvent('trackEventsForm', 'events-form', submitButton.innerText)\r\n\r\n //aangepaste versie met redirect naar mollie\r\n //checken of er een checkouthref in de json zit:\r\n result.json().then((checkouthref: string) => {\r\n if(debug) console.log('success', checkouthref);\r\n submitButton.setAttribute(\"disabled\", \"\")\r\n \r\n //console.log(checkouthref)\r\n if(checkouthref !== \"\")\r\n {\r\n //redirect to mollie\r\n window.location.replace(checkouthref);\r\n }\r\n \r\n showAlert(eventsWrapper, 'msgOk')\r\n showConfigWarnings(eventsWrapper, 'app-events6-config-warning')\r\n disableInputs(eventsWrapper, false)\r\n \r\n addTrackingEvent('trackEventsForm', 'events-form', submitButton.innerText) \r\n })\r\n .catch((error: any) => {\r\n console.error('Error:', error);\r\n });\r\n }) \r\n .catch((error: any) => {\r\n console.error('Error:', error);\r\n });\r\n\r\n //#endregion\r\n }) \r\n}\r\n","/*\r\n This is a shared code used in various 2sxc apps. Make sure that they are in sync, so if you improve it, improve all 2sxc apps which use this. \r\n ATM they are:\r\n - EventsAndCourses6\r\n - MobiusForms5\r\n The master with the newest / best version must always be the Gallery7, the others should then get a fresh copy.\r\n Because this is shared, all parameters like DOM-IDs etc. must be provided in the Init-call that it can work across apps\r\n*/ \r\n\r\n// .alert class needs to be included in alert message\r\nexport function showAlert(wrapper: Element, responseMessageElement: string) {\r\n wrapper.querySelectorAll('.alert').forEach((elem: HTMLElement) => elem.style.display = 'none');\r\n if (responseMessageElement !== '') (wrapper.querySelector(`#${responseMessageElement}`) as HTMLElement).style.display = 'block';\r\n}\r\n\r\nexport function showConfigWarnings(wrapper: Element, attribute: string) {\r\n wrapper.querySelectorAll(`[${attribute}]`)\r\n .forEach((elem: HTMLElement) => elem.style.display = 'block');\r\n}\r\n","import { PristineOptions } from \"./lib-2sxc-pristine-options\";\n\nlet Pristine = require(\"../../node_modules/pristinejs\");\ndeclare let $2sxc: any;\n\n/*\n This is a shared code used in various 2sxc apps. Make sure that they are in sync, so if you improve it, improve all 2sxc apps which use this. \n ATM they are:\n - EventsAndCourses6\n - MobiusForms6\n - Jobs\n The master with the newest / best version must always be the Gallery7, the others should then get a fresh copy.\n Because this is shared, all parameters like DOM-IDs etc. must be provided in the Init-call that it can work across apps\n*/\n\n// automatically build the send-object with all properties,\n// based on all form-fields which have a item-property=\"\"\nexport async function getFormValues(formWrapper: Element): Promise {\n let data: any = {\n Fields: {},\n Terms: {},\n };\n\n const fields = formWrapper.querySelectorAll(\"input,textarea,select\");\n\n fields.forEach((formField: HTMLInputElement) => {\n const fieldKey = getFieldKey(formField);\n if (!fieldKey || !formField.value) return;\n\n // for checkboxList to get a array with fieldId and the values\n if (formField.hasAttribute(\"data-checkbox\")) {\n const fieldId = formField.getAttribute(\"data-checkbox\");\n const fieldValue = getFieldValue(formField);\n // Check if the array for this fieldId exists, if not, create it in the data object\n\n if (!data[\"Fields\"][fieldId]) {\n data[\"Fields\"][fieldId] = [];\n }\n\n if (fieldValue !== \"\") {\n data[\"Fields\"][fieldId].push(fieldValue);\n }\n }\n\n // for Multiple Dropdown to get a array with fieldId and the values\n if (\n formField.hasAttribute(\"data-multiple-dropdown\") &&\n formField.tagName == \"SELECT\"\n ) {\n const fieldId = formField.id; // Use the ID of the select element\n const selectedOptions = (formField as any).selectedOptions;\n\n // Check if the array for this fieldId exists, if not, create it in the data object\n if (!data[\"Fields\"][fieldId]) {\n data[\"Fields\"][fieldId] = [];\n }\n // loop for each option Value\n for (let i = 0; i < selectedOptions.length; i++) {\n const optionValue = selectedOptions[i].value;\n if (optionValue !== \"\") {\n data[\"Fields\"][fieldId].push(optionValue);\n }\n }\n return;\n }\n\n // If Checkbox or Radio not checked, data will not add in the Request\n if (\n formField.getAttribute(\"type\") &&\n (formField.getAttribute(\"type\").toLowerCase() == \"checkbox\" ||\n formField.getAttribute(\"type\").toLowerCase() == \"radio\") &&\n !formField.checked\n ) {\n return;\n }\n // If the type is a checkbox with an attribute terms, then it will add it to the terms\n\n if (\n formField.getAttribute(\"type\") &&\n formField.getAttribute(\"type\").toLowerCase() == \"checkbox\" &&\n formField.getAttribute(\"terms\")\n ) {\n data[\"Terms\"][fieldKey] = getFieldValue(formField);\n return;\n } else if (!formField.hasAttribute(\"data-checkbox\")) {\n // If it is a normal field, e.g. first name, then it is added to the field.\n data[\"Fields\"][fieldKey] = getFieldValue(formField);\n }\n });\n return data;\n}\n\nfunction getFieldKey(formField: HTMLInputElement): string {\n // get the property name from special-attribute, name OR id\n return formField.getAttribute(\"name\") || formField.getAttribute(\"id\");\n}\n\nfunction getFieldValue(\n formField: HTMLInputElement\n): { Encoded: Promise; Name: string } | unknown {\n // extract data from file fields\n if (!formField.getAttribute(\"type\")) return formField.value;\n switch (formField.getAttribute(\"type\").toLowerCase()) {\n case \"radio\":\n return formField.value;\n case \"checkbox\":\n return formField.checked ? formField.value : \"\";\n default:\n return formField.value;\n }\n}\n\nexport function validateForm(\n formWrapper: Element,\n options: PristineOptions\n): boolean {\n const pristine = new Pristine(formWrapper, options);\n return pristine.validate();\n}\n\nexport function sendForm(\n formData: any,\n submitButtom: HTMLButtonElement,\n endpoint: string = \"Form/ProcessForm\"\n): Promise {\n const sxc = $2sxc(submitButtom);\n return sxc.webApi.fetchRaw(endpoint, formData);\n}\n\nexport function disableInputs(wrapper: Element, state: boolean) {\n wrapper.classList.toggle(\"disable\", state);\n wrapper\n .querySelectorAll(\"input,textarea,select\")\n .forEach((elem: HTMLElement) => elem.setAttribute(\"disabled\", \"true\"));\n}\n\nexport function enableInputs(wrapper: Element) {\n wrapper.classList.remove(\"disable\");\n wrapper\n .querySelectorAll(\"input,textarea,select\")\n .forEach((elem: HTMLElement) => elem.setAttribute(\"disabled\", \"false\"));\n}\n","declare let grecaptcha: any;\r\n\r\n/*\r\n This is a shared code used in various 2sxc apps. Make sure that they are in sync, so if you improve it, improve all 2sxc apps which use this. \r\n ATM they are:\r\n - EventsAndCourses6\r\n - MobiusForms5\r\n The master with the newest / best version must always be the Gallery7, the others should then get a fresh copy.\r\n Because this is shared, all parameters like DOM-IDs etc. must be provided in the Init-call that it can work across apps\r\n*/ \r\n\r\n// Checks if a recaptcha is implemented in the current Form and returns promise with token if existing\r\n\r\nexport function getRecaptchaToken(wrapper: Element) {\r\n const recap = wrapper.getElementsByClassName('recaptcha')[0] as HTMLElement;\r\n\r\n if(!recap) return Promise.resolve(null);\r\n \r\n // if many found, probably not ok\r\n if(wrapper.getElementsByClassName('recaptcha').length !== 1) throw \"recaptcha not found\";\r\n\r\n // return promise of google response for the recap\r\n // null if failed, something cryptic if ok\r\n return grecaptcha.execute(recap.dataset.sitekey, {action: 'submit'})\r\n}\r\n\r\nexport function requiresRecaptcha(wrapper: Element): boolean {\r\n if (wrapper.getElementsByClassName('recaptcha')[0]) return true;\r\n return false;\r\n}","/*\r\n This is a shared code used in various 2sxc apps. Make sure that they are in sync, so if you improve it, improve all 2sxc apps which use this. \r\n ATM they are:\r\n - EventsAndCourses6\r\n - MobiusForms5\r\n The master with the newest / best version must always be the Gallery7, the others should then get a fresh copy.\r\n Because this is shared, all parameters like DOM-IDs etc. must be provided in the Init-call that it can work across apps\r\n*/ \r\n\r\nexport function addTrackingEvent(trackingEventName: string, trackingCategory: string, trackingLabel: string) {\r\n const trackingEvent = new CustomEvent(trackingEventName, { detail: { category: trackingCategory, action: 'submit', label: trackingLabel } });\r\n document.dispatchEvent(trackingEvent);\r\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(80);\n"],"names":["module","exports","lang","en","required","email","number","integer","url","tel","maxlength","minlength","min","max","pattern","equals","default","tmpl","o","_arguments","arguments","this","replace","a","b","groupedElemCount","input","pristine","self","form","querySelectorAll","getAttribute","length","defaultConfig","classTo","errorClass","successClass","errorTextParent","errorTextTag","errorTextClass","PRISTINE_ERROR","ALLOWED_ATTRIBUTES","EMAIL_REGEX","MESSAGE_REGEX","currentLocale","validators","_","name","validator","undefined","priority","Pristine","config","live","_addValidatorToField","fns","params","value","push","valueParams","split","unshift","_validateField","field","errors","valid","i","fn","apply","msg","Object","messages","halt","_getErrorElements","errorElements","errorClassElement","el","cls","parentElement","classList","contains","findAncestor","errorTextElement","querySelector","document","createElement","className","appendChild","pristineDisplay","style","display","_showError","errorId","id","Math","floor","Date","valueOf","random","remove","add","setAttribute","innerHTML","join","_showSuccess","removeAttribute","_removeError","obj1","obj2","attr","mergeConfig","fields","Array","from","map","forEach","call","attributes","test","substr","messageMatch","match","locale","hasOwnProperty","slice","indexOf","sort","addEventListener","e","validate","target","bind","init","silent","HTMLElement","NodeList","window","$","getErrors","erroneousFields","tagName","toLowerCase","addValidator","elem","console","warn","addError","error","reset","parentNode","removeChild","destroy","setGlobalConfig","val","type","trim","isNaN","parseFloat","parseInt","limit","m","RegExp","otherFieldSelector","other","addMessages","langObj","keys","key","index","setLocale","factory","winAny","appEvents6","domAttribute","options","getElementsByTagName","debug","log","btnToggleExpired","eventsWrapper","submitButton","event","preventDefault","eventBtn","currentTarget","addTrackingEvent","innerText","validateForm","getFormValues","showAlert","formValues","requiresRecaptcha","getRecaptchaToken","token","Recaptcha","disableInputs","endpoint","dataset","webservice","sendForm","then","result","ok","status","showConfigWarnings","enableInputs","json","checkouthref","location","catch","wrapper","responseMessageElement","attribute","getFieldValue","formField","checked","formWrapper","data","Fields","Terms","fieldKey","getFieldKey","hasAttribute","fieldId","fieldValue","selectedOptions","optionValue","formData","submitButtom","$2sxc","webApi","fetchRaw","state","toggle","recap","getElementsByClassName","Promise","resolve","grecaptcha","execute","sitekey","action","trackingEventName","trackingCategory","trackingLabel","trackingEvent","CustomEvent","detail","category","label","dispatchEvent","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""}