{"version":3,"file":"ctct-plugin-frontend.min.js","mappings":"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","sources":["webpack://constant-contact-forms/./assets/js/ctct-plugin-frontend/util.js","webpack://constant-contact-forms/./assets/js/ctct-plugin-frontend/validation.js","webpack://constant-contact-forms/webpack/bootstrap","webpack://constant-contact-forms/webpack/runtime/compat get default export","webpack://constant-contact-forms/webpack/runtime/define property getters","webpack://constant-contact-forms/webpack/runtime/hasOwnProperty shorthand"],"sourcesContent":["/**\n * General-purpose utility stuff for CC plugin.\n */\n( function( global, $ ) {\n\n\t/**\n\t * Temporarily prevent the submit button from being clicked.\n\t */\n\t$( document ).ready( () => {\n\n\t\t$( '.ctct-submitted' ).on( 'click', () => {\n\t\t\tsetTimeout( () => {\n\t\t\t\tdisableSendButton();\n\t\t\t\tsetTimeout( enableSendButton, 3000 );\n\t\t\t}, 100 );\n\t\t} );\n\t} );\n\n\t/**\n\t * Disable form submit button.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @return {mixed} jQuery if attribute is set, undefined if not.\n\t */\n\tfunction disableSendButton() {\n\t\treturn $( '.ctct-submitted' ).attr( 'disabled', 'disabled' );\n\t}\n\n\t/**\n\t * Re-enable form submit buttons.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @return {mixed} jQuery if attribute is set, undefined if not.\n\t */\n\tfunction enableSendButton() {\n\t\treturn $( '.ctct-submitted' ).attr( 'disabled', null );\n\t}\n\n} ( window, jQuery ) );\n","/**\n * Front-end form validation.\n *\n * @since 1.0.0\n */\n\n window.CTCTSupport = {};\n\n( function( window, $, app ) {\n\n\t/**\n\t * @constructor\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.init = () => {\n\t\tapp.cache();\n\t\tapp.bindEvents();\n\t\tapp.removePlaceholder();\n\t};\n\n\t/**\n\t * Remove placeholder text values.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.removePlaceholder = () => {\n\t\t$( '.ctct-form-field input, textarea' ).focus( () => {\n\t\t\t$( this ).data( 'placeholder', $( this ).attr( 'placeholder' ) ).attr( 'placeholder', '' );\n\t\t} ).blur( () => {\n\t\t\t$( this ).attr( 'placeholder', $( this ).data( 'placeholder' ) );\n\t\t} );\n\t};\n\n\t/**\n\t * Cache DOM elements.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.cache = () => {\n\n\t\tapp.$c = {\n\t\t\t$forms: []\n\t\t};\n\n\t\t// Cache each form on the page.\n\t\t$( '.ctct-form-wrapper' ).each( function( i, formWrapper ) {\n\t\t\tapp.$c.$forms.push( $( formWrapper ).find( 'form' ) );\n\t\t} );\n\n\t\t// For each form, cache its common elements.\n\t\t$.each( app.$c.$forms, function( i, form ) {\n\n\t\t\tvar $form = $( form );\n\n\t\t\tapp.$c.$forms[ i ].$honeypot = $form.find( '.ctct_usage_field' );\n\t\t\tapp.$c.$forms[ i ].$submitButton = $form.find( 'input[type=submit]' );\n\t\t\tapp.$c.$forms[ i ].$recaptcha = $form.find( '.g-recaptcha' );\n\t\t} );\n\n\t\tapp.timeout = null;\n\t};\n\n\t/**\n\t * Remove the ctct-invalid class from elements that have it.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.setAllInputsValid = () => {\n\t\t$( app.$c.$form + ' .ctct-invalid' ).removeClass( 'ctct-invalid' );\n\t};\n\n\t/**\n\t * Adds .ctct-invalid HTML class to inputs whose values are invalid.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} error AJAX response error object.\n\t */\n\tapp.processError = ( error ) => {\n\n\t\t// If we have an id property set.\n\t\tif ( 'undefined' !== typeof( error.id ) ) {\n\t\t\t$( '#' + error.id ).addClass( 'ctct-invalid' );\n\t\t}\n\t};\n\n\t/**\n\t * Check the value of the hidden honeypot field; disable form submission button if anything in it.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} e The change or keyup event triggering this callback.\n\t * @param {object} $honeyPot The jQuery object for the actual input field being checked.\n\t * @param {object} $submitButton The jQuery object for the submit button in the same form as the honeypot field.\n\t */\n\tapp.checkHoneypot = ( e, $honeyPot, $submitButton ) => {\n\n\t\t// If there is text in the honeypot, disable the submit button\n\t\tif ( 0 < $honeyPot.val().length ) {\n\t\t\t$submitButton.attr( 'disabled', 'disabled' );\n\t\t} else {\n\t\t\t$submitButton.attr( 'disabled', false );\n\t\t}\n\t};\n\n\t/**\n\t * Ensures that we should use AJAX to process the specified form, and that all required fields are not empty.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} $form jQuery object for the form being validated.\n\t * @return {boolean} False if AJAX processing is disabled for this form or if a required field is empty.\n\t */\n\tapp.validateSubmission = ( $form ) => {\n\n\t\tif ( 'on' !== $form.attr( 'data-doajax' ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Ensure all required fields in this form are valid.\n\t\t$.each( $form.find( '[required]' ), function( i, field ) {\n\n\t\t\tif ( false === field.checkValidity() ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} );\n\n\t\treturn true;\n\t};\n\n\t/**\n\t * Prepends form with a message that fades out in 5 seconds.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} $form jQuery object for the form a message is being displayed for.\n\t * @param {string} message The message content.\n\t * @param {string} classes Optional. HTML classes to add to the message wrapper.\n\t */\n\tapp.showMessage = ( $form, message, classes = '', role = 'log' ) => {\n\n\t\tconst $wrapper = $form.parents( '.ctct-form-wrapper' );\n\n\t\t$wrapper.find( 'p.ctct-message' ).remove();\n\n\t\tvar $p = $( '
', {\n\t\t\t'class': 'ctct-message ' + classes,\n\t\t\t'text': message,\n\t\t\t'role': role\n\t\t} ).prepend( $( '', {\n\t\t\t'class': 'button button-secondary ctct-dismiss ctct-dismiss-ajax-notice',\n\t\t\t'html': '✕',\n\t\t\t'aria-label': 'Dismiss Notification'\n\t\t} ) );\n\n\t\t$p.insertBefore( $form ).fadeIn( 200 );\n\n\t\t$wrapper.find( '.ctct-dismiss-ajax-notice' ).on( 'click', function() {\n\t\t\t$( this ).parents( '.ctct-message' ).remove();\n\t\t} );\n\t};\n\n\t/**\n\t * Submits the actual form via AJAX.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} $form jQuery object for the form being submitted.\n\t */\n\tapp.submitForm = ( $form ) => {\n\n\t\t$form.find( '.ctct-submitted' ).prop( 'disabled', true );\n\n\t\tvar ajaxData = {\n\t\t\t'action': 'ctct_process_form',\n\t\t\t'data': $form.serialize()\n\t\t};\n\n\t\t$.post( window.ajaxurl, ajaxData, ( response ) => {\n\n\t\t\t$form.find( '.ctct-submitted' ).prop( 'disabled', false );\n\n\t\t\tif ( 'undefined' === typeof( response.status ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Here we'll want to disable the submit button and add some error classes.\n\t\t\tif ( 'success' !== response.status ) {\n\n\t\t\t\tif ( 'undefined' !== typeof( response.errors ) ) {\n\t\t\t\t\tapp.setAllInputsValid();\n\t\t\t\t\tresponse.errors.forEach( app.processError );\n\t\t\t\t} else {\n\t\t\t\t\tapp.showMessage( $form, response.message, 'ctct-error', 'alert' );\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t$form.hide();\n\t\t\t// If we're here, the submission was a success; show message and reset form fields.\n\t\t\tapp.showMessage( $form, response.message, 'ctct-success', 'status' );\n\t\t\t$form[0].reset();\n\t\t} );\n\t};\n\n\t/**\n\t * Handle the form submission.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} e The submit event.\n\t * @param {object} $form jQuery object for the current form being handled.\n\t * @return {boolean} False if unable to validate the form.\n\t */\n\tapp.handleSubmission = ( e, $form ) => {\n\n\n\t\tif ( ! app.validateSubmission( $form ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tclearTimeout( app.timeout );\n\n\t\tif($form[0].checkValidity()){\n\t\t\te.preventDefault();\n\t\t\tapp.timeout = setTimeout( app.submitForm, 500, $form );\n\t\t}\n\t};\n\n\t/**\n\t * Set up event bindings and callbacks.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.bindEvents = () => {\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\t$.each( app.$c.$forms, function( i, form ) {\n\n\t\t\t// Attach submission handler to each form's Submit button.\n\t\t\tapp.$c.$forms[ i ].on( 'click', 'input[type=submit]', ( e ) => {\n\t\t\t\tapp.handleSubmission( e, app.$c.$forms[ i ] );\n\t\t\t} );\n\n\t\t\t// Ensure each form's honeypot is checked.\n\t\t\tapp.$c.$forms[ i ].$honeypot.on( 'change keyup', ( e ) => {\n\n\t\t\t\tapp.checkHoneypot(\n\t\t\t\t\te,\n\t\t\t\t\tapp.$c.$forms[ i ].$honeypot,\n\t\t\t\t\tapp.$c.$forms[ i ].$submitButton\n\t\t\t\t);\n\t\t\t} );\n\n\t\t\t// Disable the submit button by default until the captcha is passed (if captcha exists).\n\t\t\tif ( 0 < app.$c.$forms[ i ].$recaptcha.length ) {\n\t\t\t\tapp.$c.$forms[ i ].$submitButton.attr( 'disabled', 'disabled' );\n\t\t\t}\n\n\t\t} );\n\t};\n\n\t$( app.init );\n\n} ( window, jQuery, window.CTCTSupport ) );\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](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }"],"names":["global","$","enableSendButton","attr","document","ready","on","setTimeout","window","jQuery","CTCTSupport","app","_this","init","cache","bindEvents","removePlaceholder","focus","data","blur","$c","$forms","each","i","formWrapper","push","find","form","$form","$honeypot","$submitButton","$recaptcha","timeout","setAllInputsValid","removeClass","processError","error","id","addClass","checkHoneypot","e","$honeyPot","val","length","validateSubmission","field","checkValidity","showMessage","message","classes","arguments","undefined","role","$wrapper","parents","remove","prepend","insertBefore","fadeIn","this","submitForm","prop","ajaxData","serialize","post","ajaxurl","response","status","errors","forEach","hide","reset","handleSubmission","clearTimeout","preventDefault","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prototype","hasOwnProperty","call"],"sourceRoot":""}