1/* 2 * ATTENTION: An "eval-source-map" devtool has been used. 3 * This devtool is neither made for production nor for readable output files. 4 * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. 5 * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) 6 * or disable the default devtool with "devtool: false". 7 * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). 8 */ 9/******/ (function() { // webpackBootstrap 10/******/ var __webpack_modules__ = ({ 11
12/***/ "./assets/js/ctct-plugin-frontend/index.js": 13/*!*************************************************!*\ 14 !*** ./assets/js/ctct-plugin-frontend/index.js ***! 15 \*************************************************/ 16/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 17 18"use strict"; 19__webpack_require__.r(__webpack_exports__); 20/* harmony import */ var _validation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./validation */ "./assets/js/ctct-plugin-frontend/validation.js"); 21/* harmony import */ var _validation__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_validation__WEBPACK_IMPORTED_MODULE_0__); 22 23 24/***/ }), 25
26/***/ "./assets/js/ctct-plugin-frontend/validation.js": 27/*!******************************************************!*\ 28 !*** ./assets/js/ctct-plugin-frontend/validation.js ***! 29 \******************************************************/ 30/***/ (function() { 31 32eval("{/**\n * Front-end form validation.\n *\n * @since 1.0.0\n */\n\nwindow.CTCTSupport = {};\n(function (window, app) {\n /**\n * @constructor\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n app.init = function () {\n app.cache();\n app.bindEvents();\n };\n\n /**\n * Cache DOM elements.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n app.cache = function () {\n app.cache = {\n forms: []\n };\n var wrapper = document.querySelectorAll('.ctct-form-wrapper');\n if (wrapper.length) {\n wrapper.forEach(function (formWrapper) {\n var found = formWrapper.querySelector('form');\n if (found) {\n app.cache.forms.push(found);\n }\n });\n }\n app.cache.forms.forEach(function (form, index) {\n app.cache.forms[index].honeypot = form.querySelector('.ctct_usage_field');\n app.cache.forms[index].submitButton = form.querySelector('input[type=submit]');\n app.cache.forms[index].recaptcha = form.querySelector('.g-recaptcha');\n });\n app.timeout = null;\n };\n\n /**\n * Remove the ctct-invalid class from elements that have it.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n app.setAllInputsValid = function () {\n app.cache.forms.forEach(function (form) {\n var invalid = form.querySelectorAll('.ctct-invalid');\n Array.from(invalid).forEach(function (field) {\n field.classList.remove('ctct-invalid');\n });\n });\n };\n\n /**\n * Adds .ctct-invalid HTML class to inputs whose values are invalid.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} error AJAX response error object.\n */\n app.processError = function (error) {\n // If we have an id property set.\n if ('undefined' !== typeof error.id) {\n var invalid = document.querySelectorAll('#' + error.id);\n Array.from(invalid).forEach(function (theInvalid) {\n theInvalid.classList.add('ctct-invalid');\n });\n }\n };\n\n /**\n * Check the value of the hidden honeypot field; disable form submission button if anything in it.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} event The change or keyup event triggering this callback.\n * @param {object} honeyPot The object for the actual input field being checked.\n * @param {object} submitButton The object for the submit button in the same form as the honeypot field.\n */\n app.checkHoneypot = function (event, honeyPot, submitButton) {\n // If there is text in the honeypot, disable the submit button.\n\n // Leaving this disabling in place because it should not be getting used by screen readers in the first place, and I feel it's going to help more than hurt to keep.\n if (0 < honeyPot.value.length) {\n submitButton.setAttribute('disabled', 'disabled');\n } else {\n submitButton.removeAttribute('disabled');\n }\n };\n\n /**\n * Ensures that we should use AJAX to process the specified form, and that all required fields are not empty.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} form object for the form being validated.\n * @return {boolean} False if AJAX processing is disabled for this form or if a required field is empty.\n */\n app.validateSubmission = function (form) {\n if ('on' !== form.getAttribute('data-doajax')) {\n return false;\n }\n var fields = form.querySelectorAll('[required]');\n Array.from(fields).forEach(function (field) {\n if (false === field.checkValidity()) {\n return false;\n }\n });\n return true;\n };\n\n /**\n * Prepends form with a message that fades out in 5 seconds.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} form object for the form a message is being displayed for.\n * @param {string} message The message content.\n * @param {string} classes Optional. HTML classes to add to the message wrapper.\n * @param {string} role Role attribute for accessibility.\n */\n app.showMessage = function (form, message) {\n var classes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var role = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'log';\n var wrapper = form.parentElement;\n if (wrapper.querySelector('p.ctct-message')) {\n wrapper.querySelector('p.ctct-message').remove();\n }\n var message_tag = document.createElement('p');\n message_tag.setAttribute('class', 'ctct-message ' + classes);\n message_tag.setAttribute('role', role);\n message_tag.innerHTML = message;\n var dismiss_btn = document.createElement('button');\n dismiss_btn.setAttribute('class', 'button button-secondary ctct-dismiss ctct-dismiss-ajax-notice');\n dismiss_btn.setAttribute('aria-label', 'Dismiss notification');\n dismiss_btn.innerHTML = '✕';\n message_tag.prepend(dismiss_btn);
32\n form.parentElement.prepend(message_tag);\n wrapper.querySelector('.ctct-dismiss-ajax-notice').addEventListener('click', function () {\n this.parentElement.remove();\n });\n };\n\n /**\n * Submits the actual form via AJAX.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} form object for the form being submitted.\n */\n app.submitForm = function (form) {\n var data = new FormData();\n var formData = new FormData(form);\n var formParams = new URLSearchParams(formData);\n data.append('action', 'ctct_process_form');\n data.append('data', formParams);\n var options = {\n method: 'POST',\n body: data\n };\n fetch(window.ajaxurl, options).then(function (response) {\n return response.json();\n }).then(function (response) {\n if ('undefined' === typeof response.status) {\n return false;\n }\n if ('success' !== response.status) {\n if ('undefined' !== typeof response.errors) {\n app.setAllInputsValid();\n response.errors.forEach(app.processError);\n } else {\n app.showMessage(form, response.message, 'ctct-error', 'alert');\n }\n return false;\n }\n form.style.display = 'none';\n // If we're here, the submission was a success; show message and reset form fields.\n app.showMessage(form, response.message, 'ctct-success', 'status');\n form.reset();\n });\n };\n\n /**\n * Handle the form submission.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} event The submit event.\n * @param {object} form object for the current form being handled.\n * @return {boolean} False if unable to validate the form.\n */\n app.handleSubmission = function (event, form) {\n if (!app.validateSubmission(form)) {\n return false;\n }\n clearTimeout(app.timeout);\n if (form.checkValidity()) {\n app.timeout = setTimeout(app.submitForm, 500, form);\n }\n };\n\n /**\n * Set up event bindings and callbacks.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n app.bindEvents = function () {\n app.cache.forms.forEach(function (form) {\n var thesubmit = form.querySelector('[type=submit]');\n thesubmit.addEventListener('click', function (event) {\n var doingajax = form.getAttribute('data-doajax');\n if (doingajax && 'on' === doingajax) {\n event.preventDefault();\n app.handlerecaptcha(form);\n }\n if (form.classList.contains('ctct-submitted')) {\n return;\n }\n form.classList.add('ctct-submitted');\n app.handleSubmission(event, form);\n form.classList.remove('ctct-submitted');\n });\n form.honeypot.addEventListener('change', function (event) {\n app.checkHoneypot(event, form.honeypot, form.submitButton);\n });\n form.honeypot.addEventListener('keyup', function (event) {\n app.checkHoneypot(event, form.honeypot, form.submitButton);\n });\n });\n };\n\n /**\n * Custom handling within our validation file, for cases of reCAPTCHA v3 + AJAX submit.\n *\n * @param form Form being submitted.\n */\n app.handlerecaptcha = function (form) {\n if ('undefined' === typeof recaptchav3) {\n return;\n }\n if ('undefined' === typeof recaptchav3.site_key) {\n return;\n }\n if ('undefined' === typeof grecaptcha) {\n return;\n }\n grecaptcha.ready(function () {\n try {\n grecaptcha.execute(recaptchav3.site_key, {\n action: 'constantcontactsubmit'\n }).then(function (token) {\n var recaptchaResponse = document.createElement('input');\n recaptchaResponse.setAttribute('type', 'hidden');\n recaptchaResponse.setAttribute('name', 'g-recaptcha-response');\n recaptchaResponse.setAttribute('value', token);\n form.append(recaptchaResponse.cloneNode(true));\n });\n } catch (error) {\n console.log(error);\n }\n });\n };\n app.init();\n})(window, window.CTCTSupport);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tZnJvbnRlbmQvdmFsaWRhdGlvbi5qcyIsIm5hbWVzIjpbIndpbmRvdyIsIkNUQ1RTdXBwb3J0IiwiYXBwIiwiaW5pdCIsImNhY2hlIiwiYmluZEV2ZW50cyIsImZvcm1zIiwid3JhcHBlciIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvckFsbCIsImxlbmd0aCIsImZvckVhY2giLCJmb3JtV3JhcHBlciIsImZvdW5kIiwicXVlcnlTZWxlY3RvciIsInB1c2giLCJmb3JtIiwiaW5kZXgiLCJob25leXBvdCIsInN1Ym1pdEJ1dHRvbiIsInJlY2FwdGNoYSIsInRpbWVvdXQiLCJzZXRBbGxJbnB1dHNWYWxpZCIsImludmFsaWQiLCJBcnJheSIsImZyb20iLCJmaWVsZCIsImNsYXNzTGlzdCIsInJlbW92ZSIsInByb2Nlc3NFcnJvciIsImVycm9yIiwiaWQiLCJ0aGVJbnZhbGlkIiwiYWRkIiwiY2hlY2tIb25leXBvdCIsImV2ZW50IiwiaG9uZXlQb3QiLCJ2YWx1ZSIsInNldEF0dHJpYnV0ZSIsInJlbW92ZUF0dHJpYnV0ZSIsInZhbGlkYXRlU3VibWlzc2lvbiIsImdldEF0dHJpYnV0ZSIsImZpZWxkcyIsImNoZWNrVmFsaWRpdHkiLCJzaG93TWVzc2FnZSIsIm1lc3NhZ2UiLCJjbGFzc2VzIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwicm9sZSIsInBhcmVudEVsZW1lbnQiLCJtZXNzYWdlX3RhZyIsImNyZWF0ZUVsZW1lbnQiLCJpbm5lckhUTUwiLCJkaXNtaXNzX2J0biIsInByZXBlbmQiLCJhZGRFdmVudExpc3RlbmVyIiwic3VibWl0Rm9ybSIsImRhdGEiLCJGb3JtRGF0YSIsImZvcm1EYXRhIiwiZm9ybVBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsImFwcGVuZCIsIm9wdGlvbnMiLCJtZXRob2QiLCJib2R5IiwiZmV0Y2giLCJhamF4dXJsIiwidGhlbiIsInJlc3BvbnNlIiwianNvbiIsInN0YXR1cyIsImVycm9ycyIsInN0eWxlIiwiZGlzcGxheSIsInJlc2V0IiwiaGFuZGxlU3VibWlzc2lvbiIsImNsZWFyVGltZW91dCIsInNldFRpbWVvdXQiLCJ0aGVzdWJtaXQiLCJkb2luZ2FqYXgiLCJwcmV2ZW50RGVmYXVsdCIsImhhbmRsZXJlY2FwdGNoYSIsImNvbn
32RhaW5zIiwicmVjYXB0Y2hhdjMiLCJzaXRlX2tleSIsImdyZWNhcHRjaGEiLCJyZWFkeSIsImV4ZWN1dGUiLCJhY3Rpb24iLCJ0b2tlbiIsInJlY2FwdGNoYVJlc3BvbnNlIiwiY2xvbmVOb2RlIiwiY29uc29sZSIsImxvZyJdLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vY29uc3RhbnQtY29udGFjdC1mb3Jtcy8uL2Fzc2V0cy9qcy9jdGN0LXBsdWdpbi1mcm9udGVuZC92YWxpZGF0aW9uLmpzPzMzOTkiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGcm9udC1lbmQgZm9ybSB2YWxpZGF0aW9uLlxuICpcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5cbiB3aW5kb3cuQ1RDVFN1cHBvcnQgPSB7fTtcblxuKCBmdW5jdGlvbiggd2luZG93LCBhcHAgKSB7XG5cblx0LyoqXG5cdCAqIEBjb25zdHJ1Y3RvclxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqL1xuXHRhcHAuaW5pdCA9ICgpID0+IHtcblx0XHRhcHAuY2FjaGUoKTtcblx0XHRhcHAuYmluZEV2ZW50cygpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBDYWNoZSBET00gZWxlbWVudHMuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdGFwcC5jYWNoZSA9ICgpID0+IHtcblxuXHRcdGFwcC5jYWNoZSA9IHtcblx0XHRcdGZvcm1zOiBbXVxuXHRcdH07XG5cblx0XHRsZXQgd3JhcHBlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jdGN0LWZvcm0td3JhcHBlcicpO1xuXHRcdGlmICh3cmFwcGVyLmxlbmd0aCkge1xuXHRcdFx0d3JhcHBlci5mb3JFYWNoKChmb3JtV3JhcHBlcikgPT4ge1xuXHRcdFx0XHRsZXQgZm91bmQgPSBmb3JtV3JhcHBlci5xdWVyeVNlbGVjdG9yKCdmb3JtJyk7XG5cdFx0XHRcdGlmIChmb3VuZCkge1xuXHRcdFx0XHRcdGFwcC5jYWNoZS5mb3Jtcy5wdXNoKGZvdW5kKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0YXBwLmNhY2hlLmZvcm1zLmZvckVhY2goKGZvcm0sIGluZGV4KSA9PiB7XG5cdFx0XHRhcHAuY2FjaGUuZm9ybXNbaW5kZXhdLmhvbmV5cG90ID0gZm9ybS5xdWVyeVNlbGVjdG9yKCcuY3RjdF91c2FnZV9maWVsZCcpO1xuXHRcdFx0YXBwLmNhY2hlLmZvcm1zW2luZGV4XS5zdWJtaXRCdXR0b24gPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9c3VibWl0XScpO1xuXHRcdFx0YXBwLmNhY2hlLmZvcm1zW2luZGV4XS5yZWNhcHRjaGEgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJy5nLXJlY2FwdGNoYScpO1xuXHRcdH0pO1xuXG5cdFx0YXBwLnRpbWVvdXQgPSBudWxsO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBSZW1vdmUgdGhlIGN0Y3QtaW52YWxpZCBjbGFzcyBmcm9tIGVsZW1lbnRzIHRoYXQgaGF2ZSBpdC5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLnNldEFsbElucHV0c1ZhbGlkID0gKCkgPT4ge1xuXHRcdGFwcC5jYWNoZS5mb3Jtcy5mb3JFYWNoKChmb3JtKSA9PiB7XG5cdFx0XHRsZXQgaW52YWxpZCA9IGZvcm0ucXVlcnlTZWxlY3RvckFsbCgnLmN0Y3QtaW52YWxpZCcpO1xuXHRcdFx0QXJyYXkuZnJvbShpbnZhbGlkKS5mb3JFYWNoKChmaWVsZCkgPT4ge1xuXHRcdFx0XHRmaWVsZC5jbGFzc0xpc3QucmVtb3ZlKCdjdGN0LWludmFsaWQnKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBBZGRzIC5jdGN0LWludmFsaWQgSFRNTCBjbGFzcyB0byBpbnB1dHMgd2hvc2UgdmFsdWVzIGFyZSBpbnZhbGlkLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBlcnJvciBBSkFYIHJlc3BvbnNlIGVycm9yIG9iamVjdC5cblx0ICovXG5cdGFwcC5wcm9jZXNzRXJyb3IgPSAoIGVycm9yICkgPT4ge1xuXG5cdFx0Ly8gSWYgd2UgaGF2ZSBhbiBpZCBwcm9wZXJ0eSBzZXQuXG5cdFx0aWYgKCAndW5kZWZpbmVkJyAhPT0gdHlwZW9mKCBlcnJvci5pZCApICkge1xuXHRcdFx0bGV0IGludmFsaWQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjJyArIGVycm9yLmlkKTtcblx0XHRcdEFycmF5LmZyb20oaW52YWxpZCkuZm9yRWFjaCgodGhlSW52YWxpZCkgPT4ge1xuXHRcdFx0XHR0aGVJbnZhbGlkLmNsYXNzTGlzdC5hZGQoJ2N0Y3QtaW52YWxpZCcpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9O1xuXG5cdC8qKlxuXHQgKiBDaGVjayB0aGUgdmFsdWUgb2YgdGhlIGhpZGRlbiBob25leXBvdCBmaWVsZDsgZGlzYWJsZSBmb3JtIHN1Ym1pc3Npb24gYnV0dG9uIGlmIGFueXRoaW5nIGluIGl0LlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBldmVudCBUaGUgY2hhbmdlIG9yIGtleXVwIGV2ZW50IHRyaWdnZXJpbmcgdGhpcyBjYWxsYmFjay5cblx0ICogQHBhcmFtIHtvYmplY3R9IGhvbmV5UG90IFRoZSBvYmplY3QgZm9yIHRoZSBhY3R1YWwgaW5wdXQgZmllbGQgYmVpbmcgY2hlY2tlZC5cblx0ICogQHBhcmFtIHtvYmplY3R9IHN1Ym1pdEJ1dHRvbiBUaGUgb2JqZWN0IGZvciB0aGUgc3VibWl0IGJ1dHRvbiBpbiB0aGUgc2FtZSBmb3JtIGFzIHRoZSBob25leXBvdCBmaWVsZC5cblx0ICovXG5cdGFwcC5jaGVja0hvbmV5cG90ID0gKCBldmVudCwgaG9uZXlQb3QsIHN1Ym1pdEJ1dHRvbiApID0+IHtcblx0XHQvLyBJZiB0aGVyZSBpcyB0ZXh0IGluIHRoZSBob25leXBvdCwgZGlzYWJsZSB0aGUgc3VibWl0IGJ1dHRvbi5cblxuXHRcdC8vIExlYXZpbmcgdGhpcyBkaXNhYmxpbmcgaW4gcGxhY2UgYmVjYXVzZSBpdCBzaG91bGQgbm90IGJlIGdldHRpbmcgdXNlZCBieSBzY3JlZW4gcmVhZGVycyBpbiB0aGUgZmlyc3QgcGxhY2UsIGFuZCBJIGZlZWwgaXQncyBnb2luZyB0byBoZWxwIG1vcmUgdGhhbiBodXJ0IHRvIGtlZXAuXG5cdFx0aWYgKCAwIDwgaG9uZXlQb3QudmFsdWUubGVuZ3RoICkge1xuXHRcdFx0c3VibWl0QnV0dG9uLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCdkaXNhYmxlZCcpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdWJtaXRCdXR0b24ucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogRW5zdXJlcyB0aGF0IHdlIHNob3VsZCB1c2UgQUpBWCB0byBwcm9jZXNzIHRoZSBzcGVjaWZpZWQgZm9ybSwgYW5kIHR
32oYXQgYWxsIHJlcXVpcmVkIGZpZWxkcyBhcmUgbm90IGVtcHR5LlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBmb3JtIG9iamVjdCBmb3IgdGhlIGZvcm0gYmVpbmcgdmFsaWRhdGVkLlxuXHQgKiBAcmV0dXJuIHtib29sZWFufSBGYWxzZSBpZiBBSkFYIHByb2Nlc3NpbmcgaXMgZGlzYWJsZWQgZm9yIHRoaXMgZm9ybSBvciBpZiBhIHJlcXVpcmVkIGZpZWxkIGlzIGVtcHR5LlxuXHQgKi9cblx0YXBwLnZhbGlkYXRlU3VibWlzc2lvbiA9ICggZm9ybSApID0+IHtcblx0XHRpZiAoICdvbicgIT09IGZvcm0uZ2V0QXR0cmlidXRlKCAnZGF0YS1kb2FqYXgnICkgKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0bGV0IGZpZWxkcyA9IGZvcm0ucXVlcnlTZWxlY3RvckFsbCgnW3JlcXVpcmVkXScpO1xuXHRcdEFycmF5LmZyb20oZmllbGRzKS5mb3JFYWNoKChmaWVsZCkgPT4ge1xuXHRcdFx0aWYgKGZhbHNlID09PSBmaWVsZC5jaGVja1ZhbGlkaXR5KCkpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH07XG5cblx0LyoqXG5cdCAqIFByZXBlbmRzIGZvcm0gd2l0aCBhIG1lc3NhZ2UgdGhhdCBmYWRlcyBvdXQgaW4gNSBzZWNvbmRzLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBmb3JtIG9iamVjdCBmb3IgdGhlIGZvcm0gYSBtZXNzYWdlIGlzIGJlaW5nIGRpc3BsYXllZCBmb3IuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIGNvbnRlbnQuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc2VzIE9wdGlvbmFsLiBIVE1MIGNsYXNzZXMgdG8gYWRkIHRvIHRoZSBtZXNzYWdlIHdyYXBwZXIuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSByb2xlIFJvbGUgYXR0cmlidXRlIGZvciBhY2Nlc3NpYmlsaXR5LlxuXHQgKi9cblx0YXBwLnNob3dNZXNzYWdlID0gKCBmb3JtLCBtZXNzYWdlLCBjbGFzc2VzID0gJycsIHJvbGUgPSAnbG9nJyApID0+IHtcblxuXHRcdGNvbnN0IHdyYXBwZXIgPSBmb3JtLnBhcmVudEVsZW1lbnQ7XG5cblx0XHRpZiAoIHdyYXBwZXIucXVlcnlTZWxlY3RvcigncC5jdGN0LW1lc3NhZ2UnKSApIHtcblx0XHRcdHdyYXBwZXIucXVlcnlTZWxlY3RvcigncC5jdGN0LW1lc3NhZ2UnKS5yZW1vdmUoKTtcblx0XHR9XG5cblx0XHRsZXQgbWVzc2FnZV90YWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG5cdFx0bWVzc2FnZV90YWcuc2V0QXR0cmlidXRlKCdjbGFzcycsICdjdGN0LW1lc3NhZ2UgJyArIGNsYXNzZXMpO1xuXHRcdG1lc3NhZ2VfdGFnLnNldEF0dHJpYnV0ZSgncm9sZScsIHJvbGUpO1xuXHRcdG1lc3NhZ2VfdGFnLmlubmVySFRNTCA9IG1lc3NhZ2U7XG5cblx0XHRsZXQgZGlzbWlzc19idG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcblx0XHRkaXNtaXNzX2J0bi5zZXRB
32dHRyaWJ1dGUoJ2NsYXNzJywgJ2J1dHRvbiBidXR0b24tc2Vjb25kYXJ5IGN0Y3QtZGlzbWlzcyBjdGN0LWRpc21pc3MtYWpheC1ub3RpY2UnKTtcblx0XHRkaXNtaXNzX2J0bi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAnRGlzbWlzcyBub3RpZmljYXRpb24nKTtcblx0XHRkaXNtaXNzX2J0bi5pbm5lckhUTUwgPSAnJiMxMDAwNTsnO1xuXG5cdFx0bWVzc2FnZV90YWcucHJlcGVuZChkaXNtaXNzX2J0bik7XG5cblx0XHRmb3JtLnBhcmVudEVsZW1lbnQucHJlcGVuZChtZXNzYWdlX3RhZyk7XG5cblx0XHR3cmFwcGVyLnF1ZXJ5U2VsZWN0b3IoICcuY3RjdC1kaXNtaXNzLWFqYXgtbm90aWNlJyApLmFkZEV2ZW50TGlzdGVuZXIoXG5cdFx0XHQnY2xpY2snLFxuXHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHRoaXMucGFyZW50RWxlbWVudC5yZW1vdmUoKTtcblx0XHRcdH1cblx0XHQpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBTdWJtaXRzIHRoZSBhY3R1YWwgZm9ybSB2aWEgQUpBWC5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZm9ybSBvYmplY3QgZm9yIHRoZSBmb3JtIGJlaW5nIHN1Ym1pdHRlZC5cblx0ICovXG5cdGFwcC5zdWJtaXRGb3JtID0gKCBmb3JtICkgPT4ge1xuXHRcdGNvbnN0IGRhdGEgPSBuZXcgRm9ybURhdGEoKTtcblx0XHRjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShmb3JtKTtcblx0XHRjb25zdCBmb3JtUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhmb3JtRGF0YSk7XG5cblx0XHRkYXRhLmFwcGVuZCgnYWN0aW9uJywgJ2N0Y3RfcHJvY2Vzc19mb3JtJyk7XG5cdFx0ZGF0YS5hcHBlbmQoJ2RhdGEnLCBmb3JtUGFyYW1zKTtcblxuXHRcdGxldCBvcHRpb25zID0ge1xuXHRcdFx0bWV0aG9kOiAnUE9TVCcsXG5cdFx0XHRib2R5OiBkYXRhXG5cdFx0fTtcblxuXHRcdGZldGNoKFxuXHRcdFx0d2luZG93LmFqYXh1cmwsXG5cdFx0XHRvcHRpb25zXG5cdFx0KVxuXHRcdC50aGVuKChyZXNwb25zZSk9PnJlc3BvbnNlLmpzb24oKSlcblx0XHQudGhlbigocmVzcG9uc2UpPT57XG5cblx0XHRcdGlmICggJ3VuZGVmaW5lZCcgPT09IHR5cGVvZiByZXNwb25zZS5zdGF0dXMgKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCAnc3VjY2VzcycgIT09IHJlc3BvbnNlLnN0YXR1cyApIHtcblx0XHRcdFx0aWYgKCd1bmRlZmluZWQnICE9PSB0eXBlb2YgKHJlc3BvbnNlLmVycm9ycykpIHtcblx0XHRcdFx0XHRhcHAuc2V0QWxsSW5wdXRzVmFsaWQoKTtcblx0XHRcdFx0XHRyZXNwb25zZS5lcnJvcnMuZm9yRWFjaChhcHAucHJvY2Vzc0Vycm9yKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhcHAuc2hvd01lc3NhZ2UoZm9ybSwgcmVzcG9uc2UubWVzc2FnZSwgJ2N0Y3QtZXJyb3InLCAnYWxlcnQnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblxuXHRcdFx0Zm9ybS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuXHRcdFx0Ly8gSWYgd2UncmUgaGVyZSwgdGhlIHN1Ym1pc3Npb24gd2FzIGEgc3VjY2Vzczsgc2hvdyBtZXNzYWdlIGFuZCByZXNldCBmb3JtIGZpZWxkcy5cblx0XHRcdGFwcC5zaG93TWVzc2FnZShmb3JtLCByZXNwb25zZS5tZXNzYWdlLCAnY3RjdC1zdWNjZXNzJywgJ3N0YXR1cycpO1xuXHRcdFx0Zm9ybS5yZXNldCgpO1xuXHRcdH0pO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBIYW5kbGUgdGhlIGZvcm0gc3VibWlzc2lvbi5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQgVGhlIHN1Ym1pdCBldmVudC5cblx0ICogQHBhcmFtIHtvYmplY3R9IGZvcm0gb2JqZWN0IGZvciB0aGUgY3VycmVudCBmb3JtIGJlaW5nIGhhbmRsZWQuXG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59IEZhbHNlIGlmIHVuYWJsZSB0byB2YWxpZGF0ZSB0aGUgZm9ybS5cblx0ICovXG5cdGFwcC5oYW5kbGVTdWJtaXNzaW9uID0gKCBldmVudCwgZm9ybSApID0+IHtcblxuXHRcdGlmICggISBhcHAudmFsaWRhdGVTdWJtaXNzaW9uKCBmb3JtICkgKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Y2xlYXJUaW1lb3V0KCBhcHAudGltZW91dCApO1xuXG5cdFx0aWYgKGZvcm0uY2hlY2tWYWxpZGl0eSgpKSB7XG5cdFx0XHRhcHAudGltZW91dCA9IHNldFRpbWVvdXQoYXBwLnN1Ym1pdEZvcm0sIDUwMCwgZm9ybSk7XG5cdFx0fVxuXHR9O1xuXG5cdC8qKlxuXHQgKiBTZXQgdXAgZXZlbnQgYmluZGluZ3MgYW5kIGNhbGxiYWNrcy5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLmJpbmRFdmVudHMgPSAoKSA9PiB7XG5cdFx0YXBwLmNhY2hlLmZvcm1zLmZvckVhY2goKGZvcm0pID0+IHtcblx0XHRcdGxldCB0aGVzdWJtaXQgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ1t0eXBlPXN1Ym1pdF0nKTtcblx0XHRcdHRoZXN1Ym1pdC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudCkgPT4ge1xuXHRcdFx0XHRsZXQgZG9pbmdhamF4ID0gZm9ybS5nZXRBdHRyaWJ1dGUoICdkYXRhLWRvYWpheCcgKTtcblx0XHRcdFx0aWYgKCBkb2luZ2FqYXggJiYgJ29uJyA9PT0gZG9pbmdhamF4ICkge1xuXHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cblx0XHRcdFx0XHRhcHAuaGFuZGxlcmVjYXB0Y2hhKGZvcm0pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCBmb3JtLmNsYXNzTGlzdC5jb250YWlucyggJ2N0Y3Qtc3VibWl0dGVkJyApICkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3JtLmNsYXNzTGlzdC5hZGQoICdjdGN0LXN1Ym1pdHRlZCcgKTtcblx0XHRcdFx0YXBwLmhhbmRsZVN1Ym1pc3Npb24oIGV2ZW50LCBmb3JtICk7XG5cdFx0XHRcdGZvcm0uY2xhc3NMaXN0LnJlbW92ZSggJ2N0Y3Qtc3VibWl0dGVkJyApO1xuXHRcdFx0fSk7XG5cblx0XHRcdGZvcm0uaG9uZXlwb3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGV2ZW50KSA9PiB7XG5cdFx0XHRcdGFwcC5jaGVja0hvbmV5cG90KFxuXHRcdFx0XHRcdGV2ZW50LFxuXHRcdFx0XHRcdGZvcm0uaG9uZXlwb3QsXG5cdFx0XHRcdFx0Zm9ybS5zdWJtaXRCdXR0b25cblx0XHRcdFx0KTtcblx0XHRcdH0pO1xuXG5cdFx0XHRmb3JtLmhvbmV5cG90LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKGV2ZW50KSA9PiB7XG5cdFx0XHRcdGFwcC5jaGVja0hvbmV5cG90KFxuXHRcdFx0XHRcdGV2ZW50LFxuXHRcdFx0XHRcdGZvcm0uaG9uZXlwb3QsXG5cdFx0XHRcdFx0Zm9ybS5zdWJtaXRCdXR0b25cblx0XHRcdFx0KTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBDdXN0b20gaGFuZGxpbmcgd2l0aGluIG91ciB2YWxpZGF0aW9uIGZpbGUsIGZvciBjYXNlcyBvZiByZUNBUFRDSEEgdjMgKyBBSkFYIHN1Ym1pdC5cblx0ICpcblx0ICogQHBhcmFtIGZvcm0gRm9ybSBiZWluZyBzdWJtaXR0ZWQuXG5cdCAqL1xuXHRhcHAuaGFuZGxlcmVjYXB0Y2hhID0gKGZvcm0pID0+IHtcblx0XHRpZiAoJ3VuZGVmaW5lZCcgPT09IHR5cGVvZiAocmVjYXB0Y2hhdjMpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCd1bmRlZmluZWQnID09PSB0eXBlb2YgKHJlY2FwdGNoYXYzLnNpdGVfa2V5KSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICgndW5kZWZpbmVkJyA9PT0gdHlwZW9mIChncmVjYXB0Y2hhKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGdyZWNhcHRjaGEucmVhZHkoZnVuY3Rpb24gKCkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Z3JlY2FwdGNoYS5leGVjdXRlKHJlY2FwdGNoYXYzLnNpdGVfa2V5LCB7YWN0aW9uOiAnY29uc3RhbnRjb250YWN0c3VibWl0J30pLnRoZW4oZnVuY3Rpb24gKHRva2VuKSB7XG5cdFx0XHRcdFx0bGV0IHJlY2FwdGNoYVJlc3BvbnNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcblx0XHRcdFx0XHRyZWNhcHRjaGFSZXNwb25zZS5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnaGlkZGVuJyk7XG5cdFx0XHRcdFx0cmVjYXB0Y2hhUmVzcG9uc2Uuc2V0QXR0cmlidXRlKCduYW1lJywgJ2ctcmVjYXB0Y2hhLXJlc3BvbnNlJyk7XG5cdFx0XHRcdFx0cmVjYXB0Y2hhUmVzcG9uc2Uuc2V0QXR0cmlidXRlKCd2YWx1ZScsIHRva2VuKTtcblxuXHRcdFx0XHRcdGZvcm0uYXBwZW5kKHJlY2FwdGNoYVJlc3BvbnNlLmNsb25lTm9kZSh0cnVlKSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdFx0Y29uc29sZS5sb2coZXJyb3IpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0YXBwLmluaXQoKTtcblxufSAoIHdpbmRvdywgd2luZG93LkNUQ1RTdXBwb3J0ICkgKTtcbiJdLCJtYX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QUFXLEtBQUssT0FBUUMsVUFBVyxFQUFFO01BQ3hDO0lBQ0Q7SUFFQUEsVUFBVSxDQUFDQyxLQUFLLENBQUMsWUFBWTtNQUM1QixJQUFJO1FBQ0hELFVBQVUsQ0FBQ0UsT0FBTyxDQUFDSixXQUFXLENBQUNDLFFBQVEsRUFBRTtVQUFDSSxNQUFNLEVBQUU7UUFBdUIsQ0FBQyxDQUFDLENBQUNyQixJQUFJLENBQUMsVUFBVXNCLEtBQUssRUFBRTtVQUNqRyxJQUFJQyxpQkFBaUIsR0FBR3BGLFFBQVEsQ0FBQzRDLGFBQWEsQ0FBQyxPQUFPLENBQUM7VUFDdkR3QyxpQkFBaUIsQ0FBQ3RELFlBQVksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO1VBQ2hEc0QsaUJBQWlCLENBQUN0RCxZQUFZLENBQUMsTUFBTSxFQUFFLHNCQUFzQixDQUFDO1VBQzlEc0QsaUJBQWlCLENBQUN0RCxZQUFZLENBQUMsT0FBTyxFQUFFcUQsS0FBSyxDQUFDO1VBRTlDM0UsSUFBSSxDQUFDK0MsTUFBTSxDQUFDNkIsaUJBQWlCLENBQUNDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUM7T
32UFDSCxDQUFDLENBQUMsT0FBTy9ELEtBQUssRUFBRTtRQUNmZ0UsT0FBTyxDQUFDQyxHQUFHLENBQUNqRSxLQUFLLENBQUM7TUFDbkI7SUFDRCxDQUFDLENBQUM7RUFDSCxDQUFDO0VBRUQ1QixHQUFHLENBQUNDLElBQUksQ0FBQyxDQUFDO0FBRVgsQ0FBQyxFQUFHSCxNQUFNLEVBQUVBLE1BQU0sQ0FBQ0MsV0FBWSxDQUFDIiwiaWdub3JlTGlzdCI6W119\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-frontend/validation.js\n\n}"); 33 34/***/ })
vendor: 3,359 bytes, lines 34-117
34 35 36/******/ }); 37/************************************************************************/ 38/******/ // The module cache 39/******/ var __webpack_module_cache__ = {}; 40/******/ 41/******/ // The require function 42/******/ function __webpack_require__(moduleId) { 43/******/ // Check if module is in cache 44/******/ var cachedModule = __webpack_module_cache__[moduleId]; 45/******/ if (cachedModule !== undefined) { 46/******/ return cachedModule.exports; 47/******/ } 48/******/ // Create a new module (and put it into the cache) 49/******/ var module = __webpack_module_cache__[moduleId] = { 50/******/ // no module.id needed 51/******/ // no module.loaded needed 52/******/ exports: {} 53/******/ }; 54/******/ 55/******/ // Execute the module function 56/******/ if (!(moduleId in __webpack_modules__)) { 57/******/ delete __webpack_module_cache__[moduleId]; 58/******/ var e = new Error("Cannot find module '" + moduleId + "'"); 59/******/ e.code = 'MODULE_NOT_FOUND'; 60/******/ throw e; 61/******/ } 62/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); 63/******/ 64/******/ // Return the exports of the module 65/******/ return module.exports; 66/******/ } 67/******/ 68/************************************************************************/ 69/******/ /* webpack/runtime/compat get default export */ 70/******/ !function() { 71/******/ // getDefaultExport function for compatibility with non-harmony modules 72/******/ __webpack_require__.n = function(module) { 73/******/ var getter = module && module.__esModule ? 74/******/ function() { return module['default']; } : 75/******/ function() { return module; }; 76/******/ __webpack_require__.d(getter, { a: getter }); 77/******/ return getter; 78/******/ }; 79/******/ }(); 80/******/ 81/******/ /* webpack/runtime/define property getters */ 82/******/ !function() { 83/******/ // define getter functions for harmony exports 84/******/ __webpack_require__.d = function(exports, definition) { 85/******/ for(var key in definition) { 86/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 87/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 88/******/ } 89/******/ } 90/******/ }; 91/******/ }(); 92/******/ 93/******/ /* webpack/runtime/hasOwnProperty shorthand */ 94/******/ !function() { 95/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } 96/******/ }(); 97/******/ 98/******/ /* webpack/runtime/make namespace object */ 99/******/ !function() { 100/******/ // define __esModule on exports 101/******/ __webpack_require__.r = function(exports) { 102/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 103/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 104/******/ } 105/******/ Object.defineProperty(exports, '__esModule', { value: true }); 106/******/ }; 107/******/ }(); 108/******/ 109/************************************************************************/ 110/******/ 111/******/ // startup 112/******/ // Load entry module and return exports 113/******/ // This entry module can't be inlined because the eval-source-map devtool is used. 114/******/ var __webpack_exports__ = __webpack_require__("./assets/js/ctct-plugin-frontend/index.js"); 115/******/ 116/******/ })() 117;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.