PageSourceSearch

https://stluciechamber.org/wp-content/plugins/constant-contact-for…/js/ctct-plugin-frontend.js?ver=2.21.0

js stluciechamber.org collected 2026-10-02 11:21:49 UTC 37,466 bytes, 117 lines download raw bytes

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 = '&#10005;';\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.