Constant Contact Forms - Version 1.13.0

Version Description

  • Fixed: get_optin_list_options() defaults to an empty array instead of an empty string
  • Fixed: Prevent "CTCT has experienced issues" notifications for "503 Service Not Available" errors
  • Fixed: Fixes plugin sometimes causing errors due to trailing commas
  • Changed: Move styles inline for honeypot field to ensure field is hidden when option to disable CSS output is used
  • Updated: Mask API keys in error logs
  • Updated: Mask phone numbers in logs
  • Updated: Add noopener noreferrer to blank links
  • Updated: Refactor multiple translated strings
  • Updated: Added error messages on form submissions upon API faliures

=

Download this release

Release Info

Developer constantcontact
Plugin Icon 128x128 Constant Contact Forms
Version 1.13.0
Comparing to
See all releases

Code changes from version 1.12.0 to 1.13.0

assets/css/style.css CHANGED
@@ -102,17 +102,6 @@
102
  top: -9999px !important;
103
  }
104
 
105
- .ctct-form-wrapper .ctct_usage {
106
- border: 0 none;
107
- clip: rect(0, 0, 0, 0);
108
- height: 1px;
109
- margin: -1px;
110
- overflow: hidden;
111
- padding: 0;
112
- position: absolute;
113
- width: 1px;
114
- }
115
-
116
  .ctct-form-wrapper .no-recaptcha .ctct-submitted:disabled {
117
  background-image: url(../images/oval.min.svg);
118
  background-position: center;
@@ -289,4 +278,4 @@
289
  }
290
  }
291
 
292
- /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGlCQUFpQjtBQUNuQjs7QUFFQTtFQUNFLGlCQUFpQjtFQUNqQixZQUFZO0FBQ2Q7O0FBRUE7RUFDRSx5Q0FBeUM7RUFDekMscUJBQXFCO0VBQ3JCLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSx5Q0FBeUM7RUFDekMscUJBQXFCO0VBQ3JCLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLGNBQWM7RUFDZCxxQkFBcUI7RUFDckIscUJBQXFCO0FBQ3ZCOztBQUVBO0VBQ0UsZ0JBQWdCO0FBQ2xCOztBQUVBO0VBQ0UscUJBQXFCO0FBQ3ZCOztBQW1DQTtFQUNFLGlEQUFpRDtFQUNqRCw0QkFBNEI7RUFDNUIsNEJBQTRCO0VBQzVCLHFCQUFxQjtFQUNyQixxQkFBcUI7RUFDckIsa0JBQWtCO0FBQ3BCOztBQUVBO0VBQ0UsbURBQW1EO0VBQ25ELHlDQUF5QztFQUN6Qyw0QkFBNEI7RUFDNUIscUJBQXFCO0VBQ3JCLHFCQUFxQjtFQUNyQixrQkFBa0I7QUFDcEI7O0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsa0JBQWtCO0FBQ3BCOztBQUVBO0VBQ0UsbURBQW1EO0VBQ25ELHlDQUF5QztFQUN6Qyw0QkFBNEI7RUFDNUIscUJBQXFCO0VBQ3JCLHFCQUFxQjtFQUNyQixrQkFBa0I7QUFDcEI7O0FBRUE7O0VBRUUscUJBQXFCO0VBQ3JCLFVBQVU7QUFDWjs7QUFFQTtFQUNFLHFCQUFxQjtFQUNyQixnQkFBZ0I7RUFDaEIsVUFBVTtBQUNaOztBQUVBOztFQUVFLHFCQUFxQjtFQUNyQixnQkFBZ0I7RUFDaEIsVUFBVTtBQUNaOztBQUVBOztFQUVFLFdBQVc7QUFDYjs7QUFFQTtFQUNFLHFCQUFxQjtFQUNyQixVQUFVO0FBQ1o7O0FBRUE7RUFDRSx3QkFBd0I7RUFDeEIsNkJBQTZCO0VBQzdCLHVCQUF1QjtBQUN6Qjs7QUFFQTtFQUNFLGNBQWM7RUFDZCxzQkFBc0I7RUFDdEIsV0FBVztFQUNYLFlBQVk7RUFDWixnQkFBZ0I7RUFDaEIsVUFBVTtFQUNWLGtCQUFrQjtFQUNsQixVQUFVO0FBQ1o7O0FBRUE7RUFDRSw2Q0FBNkM7RUFDN0MsMkJBQTJCO0VBQzNCLDRCQUE0QjtFQUM1QixrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLFlBQVk7QUFDZDs7QUFFQTtFQUNFLG1CQUFtQjtBQUNyQjs7QUFFQTtFQUNFLFdBQVc7RUFDWCxXQUFXO0VBQ1gsY0FBYztBQUNoQjs7QUFFQTs7RUFFRSxjQUFjO0FBQ2hCOztBQUVBOztFQUVFLHFCQUFxQjtBQUN2Qjs7QUFFQTtFQUNFLFlBQVk7RUFDWixjQUFjO0VBQ2QsaUJBQWlCO0FBQ25COztBQUVBO0VBQ0UsV0FBVztFQUNYLGlCQUFpQjtBQUNuQjs7QUFFQTtFQUNFLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSxlQUFlO0FBQ2pCOztBQUVBO0VBQ0UsWUFBWTtFQUNaLFVBQVU7QUFDWjs7QUFFQTtFQUNFLG1CQUFtQjtFQUNuQixVQUFVO0FBQ1o7O0FBRUE7RUFDRSxxQkFBcUI7RUFDckIsZUFBZTtFQUNmLG1CQUFtQjtBQUNyQjs7QUFFQTtFQUNFLFdBQVc7QUFDYjs7QUFFQTtFQUNFLHFCQUFxQjtFQUNyQixlQUFlO0VBQ2YsbUJBQW1CO0FBQ3JCOztBQUVBO0VBQ0UsaUJBQWlCO0VBQ2pCLFdBQVc7QUFDYjs7QUFFQTtFQUNFLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSxxQkFBcUI7RUFDckIsbUJBQW1CO0FBQ3JCOztBQUVBO0VBQ0UsVUFBVTtBQUNaOztBQUVBO0VBQ0UscUJBQXFCO0VBQ3JCLG1CQUFtQjtBQUNyQjs7QUFFQTtFQUNFLGVBQWU7QUFDakI7O0FBRUE7RUFDRSxVQUFVO0FBQ1o7O0FBRUE7RUFDRSxtQkFBbUI7QUFDckI7O0FBRUE7RUFDRSxtQkFBbUI7QUFDckI7O0FBRUE7Ozs7RUFJRSxXQUFXO0FBQ2I7O0FBUUE7RUFDRSxtQkFBbUI7QUFDckI7O0FBRUE7RUFDRSxpQkFBaUI7QUFDbkI7O0FBRUE7RUFDRSxpQkFBaUI7QUFDbkI7O0FBRUE7RUFDRSxxQkFBcUI7QUFDdkI7O0FBRUE7Ozs7RUFJRSxXQUFXO0FBQ2I7O0FBbFFBO0VBQ0U7SUFDRSxXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLFVBQVU7RUFDWjtFQUNBO0lBQ0UsZUFBZTtFQUNqQjtFQUlBO0lBQ0UsV0FBVztJQUNYLGdCQUFnQjtJQUNoQixVQUFVO0VBQ1o7RUFDQTtJQUNFLGVBQWU7RUFDakI7RUFJQTtJQUNFLFdBQVc7SUFDWCxnQkFBZ0I7SUFDaEIsVUFBVTtFQUNaO0VBQ0E7SUFDRSxlQUFlO0VBQ2pCO0FBckJGOztBQThOQTtFQUNFO0lBQ0UsVUFBVTtFQUNaO0FBQ0YiLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWJ1dHRvbiB7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtbWVzc2FnZSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkO1xuICBwYWRkaW5nOiAxZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlLmN0Y3QtZXJyb3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgNjUsIDU0LCAwLjAyKTtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBjb2xvcjogI2NmMGIwMDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LW1lc3NhZ2UuY3RjdC1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0NiwgMjA0LCA2NCwgMC4wMik7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgY29sb3I6ICMxYjc5MjY7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlIC5jdGN0LWRpc21pc3MtYWpheC1ub3RpY2Uge1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGZsb2F0OiByaWdodDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHBhZGRpbmc6IDAuODVyZW0gMXJlbTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybS1maWVsZCB7XG4gIG1hcmdpbjogMCAwIDFyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1pbmxpbmUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtaGFsZiB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogNDglO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1oYWxmOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtdGhpcmQge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMiU7XG4gICAgd2lkdGg6IDMyJTtcbiAgfVxuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtdGhpcmQ6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1mb3VydGgge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMiU7XG4gICAgd2lkdGg6IDI0JTtcbiAgfVxuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtZm91cnRoOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSd0ZXh0J106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdlbWFpbCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nbnVtYmVyJ106cmVxdWlyZWQ6dmFsaWQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1hZ2VzL2NoZWNrX2NpcmNsZS5zdmcpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IDE4cHg7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgcGFkZGluZy1sZWZ0OiAzMnB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RleHQnXS5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdlbWFpbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXTpyZXF1aXJlZC5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddLmN0Y3QtaW52YWxpZCB7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKC4uL2ltYWdlcy9lcnJvci5zdmcpIG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDY1LCA1NCwgMC4wMik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDhweCA1MCU7XG4gIGJhY2tncm91bmQtc2l6ZTogMjRweDtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBwYWRkaW5nLWxlZnQ6IDQwcHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1lcnJvciB7XG4gIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1pbnZhbGlkIHtcbiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoLi4vaW1hZ2VzL2Vycm9yLnN2Zykgbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgNjUsIDU0LCAwLjAyKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogOHB4IDUwJTtcbiAgYmFja2dyb3VuZC1zaXplOiAyNHB4O1xuICBib3JkZXItY29sb3I6ICNmZjQxMzY7XG4gIHBhZGRpbmctbGVmdDogNDBweDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0LmN0Y3QtbGFiZWwtbGVmdCxcbi5jdGN0LWZvcm0td3JhcHBlciB0ZXh0YXJlYS5jdGN0LWxhYmVsLWxlZnQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiA3NSU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtbGVmdCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLXJpZ2h0OiA1JTtcbiAgd2lkdGg6IDIwJTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0LmN0Y3QtbGFiZWwtcmlnaHQsXG4uY3RjdC1mb3JtLXdyYXBwZXIgdGV4dGFyZWEuY3RjdC1sYWJlbC1yaWdodCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLXJpZ2h0OiA1JTtcbiAgd2lkdGg6IDc1JTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0LmN0Y3QtbGFiZWwtcmlnaHRbdHlwZT1cImNoZWNrYm94XCJdLFxuLmN0Y3QtZm9ybS13cmFwcGVyIHRleHRhcmVhLmN0Y3QtbGFiZWwtcmlnaHRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgd2lkdGg6IGF1dG87XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtcmlnaHQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAyMCU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtaGlkZGVuIHtcbiAgbGVmdDogLTk5OTlweCAhaW1wb3J0YW50O1xuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgdG9wOiAtOTk5OXB4ICFpbXBvcnRhbnQ7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdF91c2FnZSB7XG4gIGJvcmRlcjogMCBub25lO1xuICBjbGlwOiByZWN0KDAsIDAsIDAsIDApO1xuICBoZWlnaHQ6IDFweDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAubm8tcmVjYXB0Y2hhIC5jdGN0LXN1Ym1pdHRlZDpkaXNhYmxlZCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWFnZXMvb3ZhbC5taW4uc3ZnKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGN1cnNvcjogd2FpdDtcbiAgb3BhY2l0eTogMC4zO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmhhcy1yZWNhcHRjaGEgLmN0Y3Qtc3VibWl0dGVkOmRpc2FibGVkIHtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm06OmFmdGVyIHtcbiAgY2xlYXI6IGJvdGg7XG4gIGNvbnRlbnQ6ICcnO1xuICBkaXNwbGF5OiB0YWJsZTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtdG9wIGxhYmVsLFxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtYm90dG9tIGxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIC5jdGN0LWxhYmVsLWxlZnQgbGFiZWwsXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC1yaWdodCBsYWJlbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gYWJiciB7XG4gIGJvcmRlcjogbm9uZTtcbiAgY29sb3I6ICNmZjQxMzY7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtaW5wdXQtY29udGFpbmVyIGxhYmVsIHtcbiAgY29sb3I6ICNhYWE7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtZXJyb3Ige1xuICBjb2xvcjogI2ZmNDEzNjtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LXN1Ym1pdCB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0tZmllbGQtY2hlY2tib3ggZmllbGRzZXQge1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtLWZpZWxkLWNoZWNrYm94IGZpZWxkc2V0IGxlZ2VuZCB7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi5jdGN0LXR3ZW50eWZvdXJ0ZWVuIC5jdGN0LWZvcm0tZGVzY3JpcHRpb24gfiAuY3RjdC1idXR0b24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMjVweDtcbn1cblxuLmN0Y3QtdHdlbnR5Zm91cnRlZW4gLmN0Y3QtZm9ybS1maWVsZCBpbnB1dDpub3QoLmN0Y3QtY2hlY2tib3gpIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5jdGN0LXR3ZW50eWZpZnRlZW4gLmN0Y3QtZm9ybS1kZXNjcmlwdGlvbiB+IC5jdGN0LWJ1dHRvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxcmVtO1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4uY3RjdC10d2VudHlmaWZ0ZWVuIC5jdGN0LWZvcm0tZmllbGQgaW5wdXRbdHlwZT1cInRlbFwiXSB7XG4gIHBhZGRpbmc6IDAuNTI3OGVtO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmN0Y3QtdHdlbnR5ZmlmdGVlbiAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtaW5wdXQtY29udGFpbmVyIGxhYmVsIHtcbiAgZm9udC1zaXplOiA3NSU7XG59XG5cbi5jdGN0LXR3ZW50eXNpeHRlZW4gLmN0Y3QtZm9ybS1kZXNjcmlwdGlvbiB+IC5jdGN0LWJ1dHRvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogMjVweDtcbn1cblxuLmN0Y3QtdHdlbnR5c2l4dGVlbiAuY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgd2lkdGg6IDgwJTtcbn1cblxuLmN0Y3QtdHdlbnR5c2V2ZW50ZWVuIC5jdGN0LWZvcm0tZGVzY3JpcHRpb24gfiAuY3RjdC1idXR0b24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG59XG5cbi5jdGN0LXR3ZW50eXNldmVudGVlbiAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtaW5wdXQtY29udGFpbmVyIGxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lO1xufVxuXG4uY3RjdC10d2VudHlzZXZlbnRlZW4gLmN0Y3QtZm9ybS13cmFwcGVyIHNwYW4uY3RjdC1sYWJlbC1yaWdodCB7XG4gIHdpZHRoOiA4MCU7XG59XG5cbi5jdGN0LXR3ZW50eW5pbmV0ZWVuIC5jdGN0LWZvcm0tZGVzY3JpcHRpb24gfiAuY3RjdC1idXR0b24ge1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4uY3RjdC10d2VudHluaW5ldGVlbiAuY3RjdC1hZGRyZXNzIHtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbn1cblxuLmN0Y3QtdHdlbnR5bmluZXRlZW4gLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwidGV4dFwiXSxcbi5jdGN0LXR3ZW50eW5pbmV0ZWVuIC5jdGN0LWZvcm0tZmllbGQgaW5wdXRbdHlwZT1cImVtYWlsXCJdLFxuLmN0Y3QtdHdlbnR5bmluZXRlZW4gLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwidXJsXCJdLFxuLmN0Y3QtdHdlbnR5bmluZXRlZW4gLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwidGVsXCJdIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQxNHB4KSB7XG4gIC5jdGN0LXR3ZW50eW5pbmV0ZWVuIC5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtcmlnaHQge1xuICAgIHdpZHRoOiA4MCU7XG4gIH1cbn1cblxuLmN0Y3QtdHdlbnR5dHdlbnR5IC5jdGN0LWZvcm0tZGVzY3JpcHRpb24gfiAuY3RjdC1idXR0b24ge1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4uY3RjdC10d2VudHl0d2VudHkgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gYWJiciB7XG4gIGZvbnQtc2l6ZTogMS42cmVtO1xufVxuXG4uY3RjdC10d2VudHl0d2VudHkgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWlucHV0LWNvbnRhaW5lciBsYWJlbCB7XG4gIGZvbnQtc2l6ZTogMS42cmVtO1xufVxuXG4uY3RjdC10d2VudHl0d2VudHlvbmUgLmN0Y3QtYnV0dG9uIHtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xufVxuXG4uY3RjdC10d2VudHl0d2VudHlvbmUgLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwidGV4dFwiXSxcbi5jdGN0LXR3ZW50eXR3ZW50eW9uZSAuY3RjdC1mb3JtLWZpZWxkIGlucHV0W3R5cGU9XCJlbWFpbFwiXSxcbi5jdGN0LXR3ZW50eXR3ZW50eW9uZSAuY3RjdC1mb3JtLWZpZWxkIGlucHV0W3R5cGU9XCJ1cmxcIl0sXG4uY3RjdC10d2VudHl0d2VudHlvbmUgLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwidGVsXCJdIHtcbiAgd2lkdGg6IDEwMCU7XG59XG4iXX0= */
102
  top: -9999px !important;
103
  }
104
 
 
 
 
 
 
 
 
 
 
 
 
105
  .ctct-form-wrapper .no-recaptcha .ctct-submitted:disabled {
106
  background-image: url(../images/oval.min.svg);
107
  background-position: center;
278
  }
279
  }
280
 
281
+ /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGlCQUFpQjtBQUNuQjs7QUFFQTtFQUNFLGlCQUFpQjtFQUNqQixZQUFZO0FBQ2Q7O0FBRUE7RUFDRSx5Q0FBeUM7RUFDekMscUJBQXFCO0VBQ3JCLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSx5Q0FBeUM7RUFDekMscUJBQXFCO0VBQ3JCLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLGNBQWM7RUFDZCxxQkFBcUI7RUFDckIscUJBQXFCO0FBQ3ZCOztBQUVBO0VBQ0UsZ0JBQWdCO0FBQ2xCOztBQUVBO0VBQ0UscUJBQXFCO0FBQ3ZCOztBQW1DQTtFQUNFLGlEQUFpRDtFQUNqRCw0QkFBNEI7RUFDNUIsNEJBQTRCO0VBQzVCLHFCQUFxQjtFQUNyQixxQkFBcUI7RUFDckIsa0JBQWtCO0FBQ3BCOztBQUVBO0VBQ0UsbURBQW1EO0VBQ25ELHlDQUF5QztFQUN6Qyw0QkFBNEI7RUFDNUIscUJBQXFCO0VBQ3JCLHFCQUFxQjtFQUNyQixrQkFBa0I7QUFDcEI7O0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsa0JBQWtCO0FBQ3BCOztBQUVBO0VBQ0UsbURBQW1EO0VBQ25ELHlDQUF5QztFQUN6Qyw0QkFBNEI7RUFDNUIscUJBQXFCO0VBQ3JCLHFCQUFxQjtFQUNyQixrQkFBa0I7QUFDcEI7O0FBRUE7O0VBRUUscUJBQXFCO0VBQ3JCLFVBQVU7QUFDWjs7QUFFQTtFQUNFLHFCQUFxQjtFQUNyQixnQkFBZ0I7RUFDaEIsVUFBVTtBQUNaOztBQUVBOztFQUVFLHFCQUFxQjtFQUNyQixnQkFBZ0I7RUFDaEIsVUFBVTtBQUNaOztBQUVBOztFQUVFLFdBQVc7QUFDYjs7QUFFQTtFQUNFLHFCQUFxQjtFQUNyQixVQUFVO0FBQ1o7O0FBRUE7RUFDRSx3QkFBd0I7RUFDeEIsNkJBQTZCO0VBQzdCLHVCQUF1QjtBQUN6Qjs7QUFFQTtFQUNFLDZDQUE2QztFQUM3QywyQkFBMkI7RUFDM0IsNEJBQTRCO0VBQzVCLGtCQUFrQjtFQUNsQixZQUFZO0VBQ1osWUFBWTtBQUNkOztBQUVBO0VBQ0UsbUJBQW1CO0FBQ3JCOztBQUVBO0VBQ0UsV0FBVztFQUNYLFdBQVc7RUFDWCxjQUFjO0FBQ2hCOztBQUVBOztFQUVFLGNBQWM7QUFDaEI7O0FBRUE7O0VBRUUscUJBQXFCO0FBQ3ZCOztBQUVBO0VBQ0UsWUFBWTtFQUNaLGNBQWM7RUFDZCxpQkFBaUI7QUFDbkI7O0FBRUE7RUFDRSxXQUFXO0VBQ1gsaUJBQWlCO0FBQ25COztBQUVBO0VBQ0UsY0FBYztBQUNoQjs7QUFFQTtFQUNFLGVBQWU7QUFDakI7O0FBRUE7RUFDRSxZQUFZO0VBQ1osVUFBVTtBQUNaOztBQUVBO0VBQ0UsbUJBQW1CO0VBQ25CLFVBQVU7QUFDWjs7QUFFQTtFQUNFLHFCQUFxQjtFQUNyQixlQUFlO0VBQ2YsbUJBQW1CO0FBQ3JCOztBQUVBO0VBQ0UsV0FBVztBQUNiOztBQUVBO0VBQ0UscUJBQXFCO0VBQ3JCLGVBQWU7RUFDZixtQkFBbUI7QUFDckI7O0FBRUE7RUFDRSxpQkFBaUI7RUFDakIsV0FBVztBQUNiOztBQUVBO0VBQ0UsY0FBYztBQUNoQjs7QUFFQTtFQUNFLHFCQUFxQjtFQUNyQixtQkFBbUI7QUFDckI7O0FBRUE7RUFDRSxVQUFVO0FBQ1o7O0FBRUE7RUFDRSxxQkFBcUI7RUFDckIsbUJBQW1CO0FBQ3JCOztBQUVBO0VBQ0UsZUFBZTtBQUNqQjs7QUFFQTtFQUNFLFVBQVU7QUFDWjs7QUFFQTtFQUNFLG1CQUFtQjtBQUNyQjs7QUFFQTtFQUNFLG1CQUFtQjtBQUNyQjs7QUFFQTs7OztFQUlFLFdBQVc7QUFDYjs7QUFRQTtFQUNFLG1CQUFtQjtBQUNyQjs7QUFFQTtFQUNFLGlCQUFpQjtBQUNuQjs7QUFFQTtFQUNFLGlCQUFpQjtBQUNuQjs7QUFFQTtFQUNFLHFCQUFxQjtBQUN2Qjs7QUFFQTs7OztFQUlFLFdBQVc7QUFDYjs7QUF2UEE7RUFDRTtJQUNFLFdBQVc7SUFDWCxnQkFBZ0I7SUFDaEIsVUFBVTtFQUNaO0VBQ0E7SUFDRSxlQUFlO0VBQ2pCO0VBSUE7SUFDRSxXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLFVBQVU7RUFDWjtFQUNBO0lBQ0UsZUFBZTtFQUNqQjtFQUlBO0lBQ0UsV0FBVztJQUNYLGdCQUFnQjtJQUNoQixVQUFVO0VBQ1o7RUFDQTtJQUNFLGVBQWU7RUFDakI7QUFyQkY7O0FBbU5BO0VBQ0U7SUFDRSxVQUFVO0VBQ1o7QUFDRiIsImZpbGUiOiJzdHlsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtYnV0dG9uIHtcbiAgZm9udC1zaXplOiAwLjlyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlIHtcbiAgYm9yZGVyOiAxcHggc29saWQ7XG4gIHBhZGRpbmc6IDFlbTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LW1lc3NhZ2UuY3RjdC1lcnJvciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NSwgNTQsIDAuMDIpO1xuICBib3JkZXItY29sb3I6ICNmZjQxMzY7XG4gIGNvbG9yOiAjY2YwYjAwO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtbWVzc2FnZS5jdGN0LXN1Y2Nlc3Mge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQ2LCAyMDQsIDY0LCAwLjAyKTtcbiAgYm9yZGVyLWNvbG9yOiAjMmVjYzQwO1xuICBjb2xvcjogIzFiNzkyNjtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LW1lc3NhZ2UgLmN0Y3QtZGlzbWlzcy1hamF4LW5vdGljZSB7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZmxvYXQ6IHJpZ2h0O1xuICBsaW5lLWhlaWdodDogMTtcbiAgcGFkZGluZzogMC44NXJlbSAxcmVtO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtLWZpZWxkIHtcbiAgbWFyZ2luOiAwIDAgMXJlbTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWlubGluZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1oYWxmIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIlO1xuICAgIHdpZHRoOiA0OCU7XG4gIH1cbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWhhbGY6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC10aGlyZCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogMzIlO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC10aGlyZDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWZvdXJ0aCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogMjQlO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1mb3VydGg6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RleHQnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdudW1iZXInXTpyZXF1aXJlZDp2YWxpZCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWFnZXMvY2hlY2tfY2lyY2xlLnN2Zyk7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDhweCA1MCU7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtc2l6ZTogMThweDtcbiAgYm9yZGVyLWNvbG9yOiAjMmVjYzQwO1xuICBwYWRkaW5nLWxlZnQ6IDMycHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSd0ZXh0J106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nZW1haWwnXS5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nbnVtYmVyJ106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nbnVtYmVyJ10uY3RjdC1pbnZhbGlkIHtcbiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoLi4vaW1hZ2VzL2Vycm9yLnN2Zykgbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgNjUsIDU0LCAwLjAyKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogOHB4IDUwJTtcbiAgYmFja2dyb3VuZC1zaXplOiAyNHB4O1xuICBib3JkZXItY29sb3I6ICNmZjQxMzY7XG4gIHBhZGRpbmctbGVmdDogNDBweDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWVycm9yIHtcbiAgZm9udC1zaXplOiAwLjg1cmVtO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dC5jdGN0LWludmFsaWQge1xuICBiYWNrZ3JvdW5kOiAjZmZmIHVybCguLi9pbWFnZXMvZXJyb3Iuc3ZnKSBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NSwgNTQsIDAuMDIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXNpemU6IDI0cHg7XG4gIGJvcmRlci1jb2xvcjogI2ZmNDEzNjtcbiAgcGFkZGluZy1sZWZ0OiA0MHB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1sYWJlbC1sZWZ0LFxuLmN0Y3QtZm9ybS13cmFwcGVyIHRleHRhcmVhLmN0Y3QtbGFiZWwtbGVmdCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDc1JTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIHNwYW4uY3RjdC1sYWJlbC1sZWZ0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDUlO1xuICB3aWR0aDogMjAlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1sYWJlbC1yaWdodCxcbi5jdGN0LWZvcm0td3JhcHBlciB0ZXh0YXJlYS5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDUlO1xuICB3aWR0aDogNzUlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1sYWJlbC1yaWdodFt0eXBlPVwiY2hlY2tib3hcIl0sXG4uY3RjdC1mb3JtLXdyYXBwZXIgdGV4dGFyZWEuY3RjdC1sYWJlbC1yaWdodFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICB3aWR0aDogYXV0bztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIHNwYW4uY3RjdC1sYWJlbC1yaWdodCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDIwJTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIHNwYW4uY3RjdC1sYWJlbC1oaWRkZW4ge1xuICBsZWZ0OiAtOTk5OXB4ICFpbXBvcnRhbnQ7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICB0b3A6IC05OTk5cHggIWltcG9ydGFudDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5uby1yZWNhcHRjaGEgLmN0Y3Qtc3VibWl0dGVkOmRpc2FibGVkIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltYWdlcy9vdmFsLm1pbi5zdmcpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY3Vyc29yOiB3YWl0O1xuICBvcGFjaXR5OiAwLjM7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuaGFzLXJlY2FwdGNoYSAuY3RjdC1zdWJtaXR0ZWQ6ZGlzYWJsZWQge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybTo6YWZ0ZXIge1xuICBjbGVhcjogYm90aDtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IHRhYmxlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC10b3AgbGFiZWwsXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC1ib3R0b20gbGFiZWwge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtbGVmdCBsYWJlbCxcbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIC5jdGN0LWxhYmVsLXJpZ2h0IGxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSBhYmJyIHtcbiAgYm9yZGVyOiBub25lO1xuICBjb2xvcjogI2ZmNDEzNjtcbiAgZm9udC1zaXplOiAwLjlyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1pbnB1dC1jb250YWluZXIgbGFiZWwge1xuICBjb2xvcjogI2FhYTtcbiAgZm9udC1zaXplOiAwLjhyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1lcnJvciB7XG4gIGNvbG9yOiAjZmY0MTM2O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3Qtc3VibWl0IHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybS1maWVsZC1jaGVja2JveCBmaWVsZHNldCB7XG4gIGJvcmRlcjogbm9uZTtcbiAgcGFkZGluZzogMDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0tZmllbGQtY2hlY2tib3ggZmllbGRzZXQgbGVnZW5kIHtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgcGFkZGluZzogMDtcbn1cblxuLmN0Y3QtdHdlbnR5Zm91cnRlZW4gLmN0Y3QtZm9ybS1kZXNjcmlwdGlvbiB+IC5jdGN0LWJ1dHRvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxcmVtO1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4uY3RjdC10d2VudHlmb3VydGVlbiAuY3RjdC1mb3JtLWZpZWxkIGlucHV0Om5vdCguY3RjdC1jaGVja2JveCkge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmN0Y3QtdHdlbnR5ZmlmdGVlbiAuY3RjdC1mb3JtLWRlc2NyaXB0aW9uIH4gLmN0Y3QtYnV0dG9uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6IDFyZW07XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG59XG5cbi5jdGN0LXR3ZW50eWZpZnRlZW4gLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwidGVsXCJdIHtcbiAgcGFkZGluZzogMC41Mjc4ZW07XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uY3RjdC10d2VudHlmaWZ0ZWVuIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1pbnB1dC1jb250YWluZXIgbGFiZWwge1xuICBmb250LXNpemU6IDc1JTtcbn1cblxuLmN0Y3QtdHdlbnR5c2l4dGVlbiAuY3RjdC1mb3JtLWRlc2NyaXB0aW9uIH4gLmN0Y3QtYnV0dG9uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4uY3RjdC10d2VudHlzaXh0ZWVuIC5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtcmlnaHQge1xuICB3aWR0aDogODAlO1xufVxuXG4uY3RjdC10d2VudHlzZXZlbnRlZW4gLmN0Y3QtZm9ybS1kZXNjcmlwdGlvbiB+IC5jdGN0LWJ1dHRvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogMjVweDtcbn1cblxuLmN0Y3QtdHdlbnR5c2V2ZW50ZWVuIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1pbnB1dC1jb250YWluZXIgbGFiZWwge1xuICBkaXNwbGF5OiBpbmxpbmU7XG59XG5cbi5jdGN0LXR3ZW50eXNldmVudGVlbiAuY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgd2lkdGg6IDgwJTtcbn1cblxuLmN0Y3QtdHdlbnR5bmluZXRlZW4gLmN0Y3QtZm9ybS1kZXNjcmlwdGlvbiB+IC5jdGN0LWJ1dHRvbiB7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG59XG5cbi5jdGN0LXR3ZW50eW5pbmV0ZWVuIC5jdGN0LWFkZHJlc3Mge1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuXG4uY3RjdC10d2VudHluaW5ldGVlbiAuY3RjdC1mb3JtLWZpZWxkIGlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxuLmN0Y3QtdHdlbnR5bmluZXRlZW4gLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwiZW1haWxcIl0sXG4uY3RjdC10d2VudHluaW5ldGVlbiAuY3RjdC1mb3JtLWZpZWxkIGlucHV0W3R5cGU9XCJ1cmxcIl0sXG4uY3RjdC10d2VudHluaW5ldGVlbiAuY3RjdC1mb3JtLWZpZWxkIGlucHV0W3R5cGU9XCJ0ZWxcIl0ge1xuICB3aWR0aDogMTAwJTtcbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDE0cHgpIHtcbiAgLmN0Y3QtdHdlbnR5bmluZXRlZW4gLmN0Y3QtZm9ybS13cmFwcGVyIHNwYW4uY3RjdC1sYWJlbC1yaWdodCB7XG4gICAgd2lkdGg6IDgwJTtcbiAgfVxufVxuXG4uY3RjdC10d2VudHl0d2VudHkgLmN0Y3QtZm9ybS1kZXNjcmlwdGlvbiB+IC5jdGN0LWJ1dHRvbiB7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG59XG5cbi5jdGN0LXR3ZW50eXR3ZW50eSAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSBhYmJyIHtcbiAgZm9udC1zaXplOiAxLjZyZW07XG59XG5cbi5jdGN0LXR3ZW50eXR3ZW50eSAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtaW5wdXQtY29udGFpbmVyIGxhYmVsIHtcbiAgZm9udC1zaXplOiAxLjZyZW07XG59XG5cbi5jdGN0LXR3ZW50eXR3ZW50eW9uZSAuY3RjdC1idXR0b24ge1xuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5jdGN0LXR3ZW50eXR3ZW50eW9uZSAuY3RjdC1mb3JtLWZpZWxkIGlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxuLmN0Y3QtdHdlbnR5dHdlbnR5b25lIC5jdGN0LWZvcm0tZmllbGQgaW5wdXRbdHlwZT1cImVtYWlsXCJdLFxuLmN0Y3QtdHdlbnR5dHdlbnR5b25lIC5jdGN0LWZvcm0tZmllbGQgaW5wdXRbdHlwZT1cInVybFwiXSxcbi5jdGN0LXR3ZW50eXR3ZW50eW9uZSAuY3RjdC1mb3JtLWZpZWxkIGlucHV0W3R5cGU9XCJ0ZWxcIl0ge1xuICB3aWR0aDogMTAwJTtcbn1cbiJdfQ== */
assets/css/style.min.css CHANGED
@@ -1,2 +1,2 @@
1
- .ctct-form-wrapper .ctct-button{font-size:.9rem}.ctct-form-wrapper .ctct-message{border:1px solid;padding:1em}.ctct-form-wrapper .ctct-message.ctct-error{background-color:rgba(255,65,54,.02);border-color:#ff4136;color:#cf0b00}.ctct-form-wrapper .ctct-message.ctct-success{background-color:rgba(46,204,64,.02);border-color:#2ecc40;color:#1b7926}.ctct-form-wrapper .ctct-message .ctct-dismiss-ajax-notice{border-radius:50%;float:right;line-height:1;padding:.85rem 1rem;text-decoration:none}.ctct-form-wrapper .ctct-form-field{margin:0 0 1rem}.ctct-form-wrapper .ctct-field-inline{display:inline-block}.ctct-form-wrapper input[type=email]:required:valid,.ctct-form-wrapper input[type=number]:required:valid,.ctct-form-wrapper input[type=password]:required:valid,.ctct-form-wrapper input[type=tel]:required:valid,.ctct-form-wrapper input[type=text]:required:valid{background-image:url(../images/check_circle.svg);background-position:8px 50%;background-repeat:no-repeat;background-size:18px;border-color:#2ecc40;padding-left:32px}.ctct-form-wrapper input[type=email].ctct-invalid,.ctct-form-wrapper input[type=email]:required.ctct-invalid,.ctct-form-wrapper input[type=number].ctct-invalid,.ctct-form-wrapper input[type=number]:required.ctct-invalid,.ctct-form-wrapper input[type=password].ctct-invalid,.ctct-form-wrapper input[type=password]:required.ctct-invalid,.ctct-form-wrapper input[type=tel].ctct-invalid,.ctct-form-wrapper input[type=tel]:required.ctct-invalid,.ctct-form-wrapper input[type=text].ctct-invalid,.ctct-form-wrapper input[type=text]:required.ctct-invalid{background:#fff url(../images/error.svg) no-repeat;background-color:rgba(255,65,54,.02);background-position:8px 50%;background-size:24px;border-color:#ff4136;padding-left:40px}.ctct-form-wrapper .ctct-field-error{font-size:.85rem;font-style:italic}.ctct-form-wrapper input.ctct-invalid{background:#fff url(../images/error.svg) no-repeat;background-color:rgba(255,65,54,.02);background-position:8px 50%;background-size:24px;border-color:#ff4136;padding-left:40px}.ctct-form-wrapper input.ctct-label-left,.ctct-form-wrapper textarea.ctct-label-left{display:inline-block;width:75%}.ctct-form-wrapper span.ctct-label-left{display:inline-block;margin-right:5%;width:20%}.ctct-form-wrapper input.ctct-label-right,.ctct-form-wrapper textarea.ctct-label-right{display:inline-block;margin-right:5%;width:75%}.ctct-form-wrapper input.ctct-label-right[type=checkbox],.ctct-form-wrapper textarea.ctct-label-right[type=checkbox]{width:auto}.ctct-form-wrapper span.ctct-label-right{display:inline-block;width:20%}.ctct-form-wrapper span.ctct-label-hidden{left:-9999px!important;position:absolute!important;top:-9999px!important}.ctct-form-wrapper .ctct_usage{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ctct-form-wrapper .no-recaptcha .ctct-submitted:disabled{background-image:url(../images/oval.min.svg);background-position:50%;background-repeat:no-repeat;color:transparent;cursor:wait;opacity:.3}.ctct-form-wrapper .has-recaptcha .ctct-submitted:disabled{cursor:not-allowed}.ctct-form-wrapper .ctct-form:after{clear:both;content:"";display:table}.ctct-form-wrapper .ctct-form .ctct-label-bottom label,.ctct-form-wrapper .ctct-form .ctct-label-top label{display:block}.ctct-form-wrapper .ctct-form .ctct-label-left label,.ctct-form-wrapper .ctct-form .ctct-label-right label{display:inline-block}.ctct-form-wrapper .ctct-form abbr{border:none;color:#ff4136;font-size:.9rem}.ctct-form-wrapper .ctct-input-container label{color:#aaa;font-size:.8rem}.ctct-form-wrapper .ctct-field-error{color:#ff4136}.ctct-form-wrapper .ctct-submit{cursor:pointer}.ctct-form-wrapper .ctct-form-field-checkbox fieldset{border:none;padding:0}.ctct-form-wrapper .ctct-form-field-checkbox fieldset legend{font-weight:400;padding:0}.ctct-twentyfourteen .ctct-form-description~.ctct-button{display:inline-block;font-size:1rem;margin-bottom:25px}.ctct-twentyfourteen .ctct-form-field input:not(.ctct-checkbox){width:100%}.ctct-twentyfifteen .ctct-form-description~.ctct-button{display:inline-block;font-size:1rem;margin-bottom:25px}.ctct-twentyfifteen .ctct-form-field input[type=tel]{padding:.5278em;width:100%}.ctct-twentyfifteen .ctct-form-wrapper .ctct-input-container label{font-size:75%}.ctct-twentysixteen .ctct-form-description~.ctct-button{display:inline-block;margin-bottom:25px}.ctct-twentysixteen .ctct-form-wrapper span.ctct-label-right{width:80%}.ctct-twentyseventeen .ctct-form-description~.ctct-button{display:inline-block;margin-bottom:25px}.ctct-twentyseventeen .ctct-form-wrapper .ctct-input-container label{display:inline}.ctct-twentyseventeen .ctct-form-wrapper span.ctct-label-right{width:80%}.ctct-twentynineteen .ctct-form-description~.ctct-button{margin-bottom:25px}.ctct-twentynineteen .ctct-address{margin-bottom:1rem}.ctct-twentynineteen .ctct-form-field input[type=email],.ctct-twentynineteen .ctct-form-field input[type=tel],.ctct-twentynineteen .ctct-form-field input[type=text],.ctct-twentynineteen .ctct-form-field input[type=url]{width:100%}.ctct-twentytwenty .ctct-form-description~.ctct-button{margin-bottom:25px}.ctct-twentytwenty .ctct-form-wrapper .ctct-form abbr,.ctct-twentytwenty .ctct-form-wrapper .ctct-input-container label{font-size:1.6rem}.ctct-twentytwentyone .ctct-button{padding:0!important}.ctct-twentytwentyone .ctct-form-field input[type=email],.ctct-twentytwentyone .ctct-form-field input[type=tel],.ctct-twentytwentyone .ctct-form-field input[type=text],.ctct-twentytwentyone .ctct-form-field input[type=url]{width:100%}@media (min-width:992px){.ctct-form-wrapper .ctct-field-half{float:left;margin-right:2%;width:48%}.ctct-form-wrapper .ctct-field-half:last-of-type{margin-right:0}.ctct-form-wrapper .ctct-field-third{float:left;margin-right:2%;width:32%}.ctct-form-wrapper .ctct-field-third:last-of-type{margin-right:0}.ctct-form-wrapper .ctct-field-fourth{float:left;margin-right:2%;width:24%}.ctct-form-wrapper .ctct-field-fourth:last-of-type{margin-right:0}}@media screen and (max-width:414px){.ctct-twentynineteen .ctct-form-wrapper span.ctct-label-right{width:80%}}
2
- /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQ0FDRSxlQUNGLENBRUEsaUNBQ0UsZ0JBQWlCLENBQ2pCLFdBQ0YsQ0FFQSw0Q0FDRSxvQ0FBeUMsQ0FDekMsb0JBQXFCLENBQ3JCLGFBQ0YsQ0FFQSw4Q0FDRSxvQ0FBeUMsQ0FDekMsb0JBQXFCLENBQ3JCLGFBQ0YsQ0FFQSwyREFDRSxpQkFBa0IsQ0FDbEIsV0FBWSxDQUNaLGFBQWMsQ0FDZCxtQkFBcUIsQ0FDckIsb0JBQ0YsQ0FFQSxvQ0FDRSxlQUNGLENBRUEsc0NBQ0Usb0JBQ0YsQ0FtQ0EscVFBQ0UsZ0RBQWlELENBQ2pELDJCQUE0QixDQUM1QiwyQkFBNEIsQ0FDNUIsb0JBQXFCLENBQ3JCLG9CQUFxQixDQUNyQixpQkFDRixDQUVBLG1pQkFDRSxrREFBbUQsQ0FDbkQsb0NBQXlDLENBQ3pDLDJCQUE0QixDQUM1QixvQkFBcUIsQ0FDckIsb0JBQXFCLENBQ3JCLGlCQUNGLENBRUEscUNBQ0UsZ0JBQWtCLENBQ2xCLGlCQUNGLENBRUEsc0NBQ0Usa0RBQW1ELENBQ25ELG9DQUF5QyxDQUN6QywyQkFBNEIsQ0FDNUIsb0JBQXFCLENBQ3JCLG9CQUFxQixDQUNyQixpQkFDRixDQUVBLHFGQUVFLG9CQUFxQixDQUNyQixTQUNGLENBRUEsd0NBQ0Usb0JBQXFCLENBQ3JCLGVBQWdCLENBQ2hCLFNBQ0YsQ0FFQSx1RkFFRSxvQkFBcUIsQ0FDckIsZUFBZ0IsQ0FDaEIsU0FDRixDQUVBLHFIQUVFLFVBQ0YsQ0FFQSx5Q0FDRSxvQkFBcUIsQ0FDckIsU0FDRixDQUVBLDBDQUNFLHNCQUF3QixDQUN4QiwyQkFBNkIsQ0FDN0IscUJBQ0YsQ0FFQSwrQkFDRSxRQUFjLENBQ2Qsa0JBQXNCLENBQ3RCLFVBQVcsQ0FDWCxXQUFZLENBQ1osZUFBZ0IsQ0FDaEIsU0FBVSxDQUNWLGlCQUFrQixDQUNsQixTQUNGLENBRUEsMERBQ0UsNENBQTZDLENBQzdDLHVCQUEyQixDQUMzQiwyQkFBNEIsQ0FDNUIsaUJBQWtCLENBQ2xCLFdBQVksQ0FDWixVQUNGLENBRUEsMkRBQ0Usa0JBQ0YsQ0FFQSxvQ0FDRSxVQUFXLENBQ1gsVUFBVyxDQUNYLGFBQ0YsQ0FFQSwyR0FFRSxhQUNGLENBRUEsMkdBRUUsb0JBQ0YsQ0FFQSxtQ0FDRSxXQUFZLENBQ1osYUFBYyxDQUNkLGVBQ0YsQ0FFQSwrQ0FDRSxVQUFXLENBQ1gsZUFDRixDQUVBLHFDQUNFLGFBQ0YsQ0FFQSxnQ0FDRSxjQUNGLENBRUEsc0RBQ0UsV0FBWSxDQUNaLFNBQ0YsQ0FFQSw2REFDRSxlQUFtQixDQUNuQixTQUNGLENBRUEseURBQ0Usb0JBQXFCLENBQ3JCLGNBQWUsQ0FDZixrQkFDRixDQUVBLGdFQUNFLFVBQ0YsQ0FFQSx3REFDRSxvQkFBcUIsQ0FDckIsY0FBZSxDQUNmLGtCQUNGLENBRUEscURBQ0UsZUFBaUIsQ0FDakIsVUFDRixDQUVBLG1FQUNFLGFBQ0YsQ0FFQSx3REFDRSxvQkFBcUIsQ0FDckIsa0JBQ0YsQ0FFQSw2REFDRSxTQUNGLENBRUEsMERBQ0Usb0JBQXFCLENBQ3JCLGtCQUNGLENBRUEscUVBQ0UsY0FDRixDQUVBLCtEQUNFLFNBQ0YsQ0FFQSx5REFDRSxrQkFDRixDQUVBLG1DQUNFLGtCQUNGLENBRUEsMk5BSUUsVUFDRixDQVFBLHVEQUNFLGtCQUNGLENBTUEsd0hBQ0UsZ0JBQ0YsQ0FFQSxtQ0FDRSxtQkFDRixDQUVBLCtOQUlFLFVBQ0YsQ0FsUUEseUJBQ0Usb0NBQ0UsVUFBVyxDQUNYLGVBQWdCLENBQ2hCLFNBQ0YsQ0FDQSxpREFDRSxjQUNGLENBSUEscUNBQ0UsVUFBVyxDQUNYLGVBQWdCLENBQ2hCLFNBQ0YsQ0FDQSxrREFDRSxjQUNGLENBSUEsc0NBQ0UsVUFBVyxDQUNYLGVBQWdCLENBQ2hCLFNBQ0YsQ0FDQSxtREFDRSxjQUNGLENBckJGLENBOE5BLG9DQUNFLDhEQUNFLFNBQ0YsQ0FDRiIsImZpbGUiOiJzdHlsZS5taW4uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWJ1dHRvbiB7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtbWVzc2FnZSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkO1xuICBwYWRkaW5nOiAxZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlLmN0Y3QtZXJyb3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgNjUsIDU0LCAwLjAyKTtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBjb2xvcjogI2NmMGIwMDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LW1lc3NhZ2UuY3RjdC1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0NiwgMjA0LCA2NCwgMC4wMik7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgY29sb3I6ICMxYjc5MjY7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlIC5jdGN0LWRpc21pc3MtYWpheC1ub3RpY2Uge1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGZsb2F0OiByaWdodDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHBhZGRpbmc6IDAuODVyZW0gMXJlbTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybS1maWVsZCB7XG4gIG1hcmdpbjogMCAwIDFyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1pbmxpbmUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtaGFsZiB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogNDglO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1oYWxmOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtdGhpcmQge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMiU7XG4gICAgd2lkdGg6IDMyJTtcbiAgfVxuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtdGhpcmQ6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1mb3VydGgge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMiU7XG4gICAgd2lkdGg6IDI0JTtcbiAgfVxuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtZm91cnRoOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSd0ZXh0J106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdlbWFpbCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nbnVtYmVyJ106cmVxdWlyZWQ6dmFsaWQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1hZ2VzL2NoZWNrX2NpcmNsZS5zdmcpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IDE4cHg7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgcGFkZGluZy1sZWZ0OiAzMnB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RleHQnXS5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdlbWFpbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXTpyZXF1aXJlZC5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddLmN0Y3QtaW52YWxpZCB7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKC4uL2ltYWdlcy9lcnJvci5zdmcpIG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDY1LCA1NCwgMC4wMik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDhweCA1MCU7XG4gIGJhY2tncm91bmQtc2l6ZTogMjRweDtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBwYWRkaW5nLWxlZnQ6IDQwcHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1lcnJvciB7XG4gIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1pbnZhbGlkIHtcbiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoLi4vaW1hZ2VzL2Vycm9yLnN2Zykgbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgNjUsIDU0LCAwLjAyKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogOHB4IDUwJTtcbiAgYmFja2dyb3VuZC1zaXplOiAyNHB4O1xuICBib3JkZXItY29sb3I6ICNmZjQxMzY7XG4gIHBhZGRpbmctbGVmdDogNDBweDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0LmN0Y3QtbGFiZWwtbGVmdCxcbi5jdGN0LWZvcm0td3JhcHBlciB0ZXh0YXJlYS5jdGN0LWxhYmVsLWxlZnQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiA3NSU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtbGVmdCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLXJpZ2h0OiA1JTtcbiAgd2lkdGg6IDIwJTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0LmN0Y3QtbGFiZWwtcmlnaHQsXG4uY3RjdC1mb3JtLXdyYXBwZXIgdGV4dGFyZWEuY3RjdC1sYWJlbC1yaWdodCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLXJpZ2h0OiA1JTtcbiAgd2lkdGg6IDc1JTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0LmN0Y3QtbGFiZWwtcmlnaHRbdHlwZT1cImNoZWNrYm94XCJdLFxuLmN0Y3QtZm9ybS13cmFwcGVyIHRleHRhcmVhLmN0Y3QtbGFiZWwtcmlnaHRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgd2lkdGg6IGF1dG87XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtcmlnaHQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAyMCU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtaGlkZGVuIHtcbiAgbGVmdDogLTk5OTlweCAhaW1wb3J0YW50O1xuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgdG9wOiAtOTk5OXB4ICFpbXBvcnRhbnQ7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdF91c2FnZSB7XG4gIGJvcmRlcjogMCBub25lO1xuICBjbGlwOiByZWN0KDAsIDAsIDAsIDApO1xuICBoZWlnaHQ6IDFweDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAubm8tcmVjYXB0Y2hhIC5jdGN0LXN1Ym1pdHRlZDpkaXNhYmxlZCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWFnZXMvb3ZhbC5taW4uc3ZnKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGN1cnNvcjogd2FpdDtcbiAgb3BhY2l0eTogMC4zO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmhhcy1yZWNhcHRjaGEgLmN0Y3Qtc3VibWl0dGVkOmRpc2FibGVkIHtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm06OmFmdGVyIHtcbiAgY2xlYXI6IGJvdGg7XG4gIGNvbnRlbnQ6ICcnO1xuICBkaXNwbGF5OiB0YWJsZTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtdG9wIGxhYmVsLFxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtYm90dG9tIGxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIC5jdGN0LWxhYmVsLWxlZnQgbGFiZWwsXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC1yaWdodCBsYWJlbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gYWJiciB7XG4gIGJvcmRlcjogbm9uZTtcbiAgY29sb3I6ICNmZjQxMzY7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtaW5wdXQtY29udGFpbmVyIGxhYmVsIHtcbiAgY29sb3I6ICNhYWE7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtZXJyb3Ige1xuICBjb2xvcjogI2ZmNDEzNjtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LXN1Ym1pdCB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0tZmllbGQtY2hlY2tib3ggZmllbGRzZXQge1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtLWZpZWxkLWNoZWNrYm94IGZpZWxkc2V0IGxlZ2VuZCB7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi5jdGN0LXR3ZW50eWZvdXJ0ZWVuIC5jdGN0LWZvcm0tZGVzY3JpcHRpb24gfiAuY3RjdC1idXR0b24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMjVweDtcbn1cblxuLmN0Y3QtdHdlbnR5Zm91cnRlZW4gLmN0Y3QtZm9ybS1maWVsZCBpbnB1dDpub3QoLmN0Y3QtY2hlY2tib3gpIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5jdGN0LXR3ZW50eWZpZnRlZW4gLmN0Y3QtZm9ybS1kZXNjcmlwdGlvbiB+IC5jdGN0LWJ1dHRvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxcmVtO1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4uY3RjdC10d2VudHlmaWZ0ZWVuIC5jdGN0LWZvcm0tZmllbGQgaW5wdXRbdHlwZT1cInRlbFwiXSB7XG4gIHBhZGRpbmc6IDAuNTI3OGVtO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmN0Y3QtdHdlbnR5ZmlmdGVlbiAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtaW5wdXQtY29udGFpbmVyIGxhYmVsIHtcbiAgZm9udC1zaXplOiA3NSU7XG59XG5cbi5jdGN0LXR3ZW50eXNpeHRlZW4gLmN0Y3QtZm9ybS1kZXNjcmlwdGlvbiB+IC5jdGN0LWJ1dHRvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogMjVweDtcbn1cblxuLmN0Y3QtdHdlbnR5c2l4dGVlbiAuY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgd2lkdGg6IDgwJTtcbn1cblxuLmN0Y3QtdHdlbnR5c2V2ZW50ZWVuIC5jdGN0LWZvcm0tZGVzY3JpcHRpb24gfiAuY3RjdC1idXR0b24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG59XG5cbi5jdGN0LXR3ZW50eXNldmVudGVlbiAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtaW5wdXQtY29udGFpbmVyIGxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lO1xufVxuXG4uY3RjdC10d2VudHlzZXZlbnRlZW4gLmN0Y3QtZm9ybS13cmFwcGVyIHNwYW4uY3RjdC1sYWJlbC1yaWdodCB7XG4gIHdpZHRoOiA4MCU7XG59XG5cbi5jdGN0LXR3ZW50eW5pbmV0ZWVuIC5jdGN0LWZvcm0tZGVzY3JpcHRpb24gfiAuY3RjdC1idXR0b24ge1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4uY3RjdC10d2VudHluaW5ldGVlbiAuY3RjdC1hZGRyZXNzIHtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbn1cblxuLmN0Y3QtdHdlbnR5bmluZXRlZW4gLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwidGV4dFwiXSxcbi5jdGN0LXR3ZW50eW5pbmV0ZWVuIC5jdGN0LWZvcm0tZmllbGQgaW5wdXRbdHlwZT1cImVtYWlsXCJdLFxuLmN0Y3QtdHdlbnR5bmluZXRlZW4gLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwidXJsXCJdLFxuLmN0Y3QtdHdlbnR5bmluZXRlZW4gLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwidGVsXCJdIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQxNHB4KSB7XG4gIC5jdGN0LXR3ZW50eW5pbmV0ZWVuIC5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtcmlnaHQge1xuICAgIHdpZHRoOiA4MCU7XG4gIH1cbn1cblxuLmN0Y3QtdHdlbnR5dHdlbnR5IC5jdGN0LWZvcm0tZGVzY3JpcHRpb24gfiAuY3RjdC1idXR0b24ge1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4uY3RjdC10d2VudHl0d2VudHkgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gYWJiciB7XG4gIGZvbnQtc2l6ZTogMS42cmVtO1xufVxuXG4uY3RjdC10d2VudHl0d2VudHkgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWlucHV0LWNvbnRhaW5lciBsYWJlbCB7XG4gIGZvbnQtc2l6ZTogMS42cmVtO1xufVxuXG4uY3RjdC10d2VudHl0d2VudHlvbmUgLmN0Y3QtYnV0dG9uIHtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xufVxuXG4uY3RjdC10d2VudHl0d2VudHlvbmUgLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwidGV4dFwiXSxcbi5jdGN0LXR3ZW50eXR3ZW50eW9uZSAuY3RjdC1mb3JtLWZpZWxkIGlucHV0W3R5cGU9XCJlbWFpbFwiXSxcbi5jdGN0LXR3ZW50eXR3ZW50eW9uZSAuY3RjdC1mb3JtLWZpZWxkIGlucHV0W3R5cGU9XCJ1cmxcIl0sXG4uY3RjdC10d2VudHl0d2VudHlvbmUgLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwidGVsXCJdIHtcbiAgd2lkdGg6IDEwMCU7XG59XG4iXX0= */
1
+ .ctct-form-wrapper .ctct-button{font-size:.9rem}.ctct-form-wrapper .ctct-message{border:1px solid;padding:1em}.ctct-form-wrapper .ctct-message.ctct-error{background-color:rgba(255,65,54,.02);border-color:#ff4136;color:#cf0b00}.ctct-form-wrapper .ctct-message.ctct-success{background-color:rgba(46,204,64,.02);border-color:#2ecc40;color:#1b7926}.ctct-form-wrapper .ctct-message .ctct-dismiss-ajax-notice{border-radius:50%;float:right;line-height:1;padding:.85rem 1rem;text-decoration:none}.ctct-form-wrapper .ctct-form-field{margin:0 0 1rem}.ctct-form-wrapper .ctct-field-inline{display:inline-block}.ctct-form-wrapper input[type=email]:required:valid,.ctct-form-wrapper input[type=number]:required:valid,.ctct-form-wrapper input[type=password]:required:valid,.ctct-form-wrapper input[type=tel]:required:valid,.ctct-form-wrapper input[type=text]:required:valid{background-image:url(../images/check_circle.svg);background-position:8px 50%;background-repeat:no-repeat;background-size:18px;border-color:#2ecc40;padding-left:32px}.ctct-form-wrapper input[type=email].ctct-invalid,.ctct-form-wrapper input[type=email]:required.ctct-invalid,.ctct-form-wrapper input[type=number].ctct-invalid,.ctct-form-wrapper input[type=number]:required.ctct-invalid,.ctct-form-wrapper input[type=password].ctct-invalid,.ctct-form-wrapper input[type=password]:required.ctct-invalid,.ctct-form-wrapper input[type=tel].ctct-invalid,.ctct-form-wrapper input[type=tel]:required.ctct-invalid,.ctct-form-wrapper input[type=text].ctct-invalid,.ctct-form-wrapper input[type=text]:required.ctct-invalid{background:#fff url(../images/error.svg) no-repeat;background-color:rgba(255,65,54,.02);background-position:8px 50%;background-size:24px;border-color:#ff4136;padding-left:40px}.ctct-form-wrapper .ctct-field-error{font-size:.85rem;font-style:italic}.ctct-form-wrapper input.ctct-invalid{background:#fff url(../images/error.svg) no-repeat;background-color:rgba(255,65,54,.02);background-position:8px 50%;background-size:24px;border-color:#ff4136;padding-left:40px}.ctct-form-wrapper input.ctct-label-left,.ctct-form-wrapper textarea.ctct-label-left{display:inline-block;width:75%}.ctct-form-wrapper span.ctct-label-left{display:inline-block;margin-right:5%;width:20%}.ctct-form-wrapper input.ctct-label-right,.ctct-form-wrapper textarea.ctct-label-right{display:inline-block;margin-right:5%;width:75%}.ctct-form-wrapper input.ctct-label-right[type=checkbox],.ctct-form-wrapper textarea.ctct-label-right[type=checkbox]{width:auto}.ctct-form-wrapper span.ctct-label-right{display:inline-block;width:20%}.ctct-form-wrapper span.ctct-label-hidden{left:-9999px!important;position:absolute!important;top:-9999px!important}.ctct-form-wrapper .no-recaptcha .ctct-submitted:disabled{background-image:url(../images/oval.min.svg);background-position:50%;background-repeat:no-repeat;color:transparent;cursor:wait;opacity:.3}.ctct-form-wrapper .has-recaptcha .ctct-submitted:disabled{cursor:not-allowed}.ctct-form-wrapper .ctct-form:after{clear:both;content:"";display:table}.ctct-form-wrapper .ctct-form .ctct-label-bottom label,.ctct-form-wrapper .ctct-form .ctct-label-top label{display:block}.ctct-form-wrapper .ctct-form .ctct-label-left label,.ctct-form-wrapper .ctct-form .ctct-label-right label{display:inline-block}.ctct-form-wrapper .ctct-form abbr{border:none;color:#ff4136;font-size:.9rem}.ctct-form-wrapper .ctct-input-container label{color:#aaa;font-size:.8rem}.ctct-form-wrapper .ctct-field-error{color:#ff4136}.ctct-form-wrapper .ctct-submit{cursor:pointer}.ctct-form-wrapper .ctct-form-field-checkbox fieldset{border:none;padding:0}.ctct-form-wrapper .ctct-form-field-checkbox fieldset legend{font-weight:400;padding:0}.ctct-twentyfourteen .ctct-form-description~.ctct-button{display:inline-block;font-size:1rem;margin-bottom:25px}.ctct-twentyfourteen .ctct-form-field input:not(.ctct-checkbox){width:100%}.ctct-twentyfifteen .ctct-form-description~.ctct-button{display:inline-block;font-size:1rem;margin-bottom:25px}.ctct-twentyfifteen .ctct-form-field input[type=tel]{padding:.5278em;width:100%}.ctct-twentyfifteen .ctct-form-wrapper .ctct-input-container label{font-size:75%}.ctct-twentysixteen .ctct-form-description~.ctct-button{display:inline-block;margin-bottom:25px}.ctct-twentysixteen .ctct-form-wrapper span.ctct-label-right{width:80%}.ctct-twentyseventeen .ctct-form-description~.ctct-button{display:inline-block;margin-bottom:25px}.ctct-twentyseventeen .ctct-form-wrapper .ctct-input-container label{display:inline}.ctct-twentyseventeen .ctct-form-wrapper span.ctct-label-right{width:80%}.ctct-twentynineteen .ctct-form-description~.ctct-button{margin-bottom:25px}.ctct-twentynineteen .ctct-address{margin-bottom:1rem}.ctct-twentynineteen .ctct-form-field input[type=email],.ctct-twentynineteen .ctct-form-field input[type=tel],.ctct-twentynineteen .ctct-form-field input[type=text],.ctct-twentynineteen .ctct-form-field input[type=url]{width:100%}.ctct-twentytwenty .ctct-form-description~.ctct-button{margin-bottom:25px}.ctct-twentytwenty .ctct-form-wrapper .ctct-form abbr,.ctct-twentytwenty .ctct-form-wrapper .ctct-input-container label{font-size:1.6rem}.ctct-twentytwentyone .ctct-button{padding:0!important}.ctct-twentytwentyone .ctct-form-field input[type=email],.ctct-twentytwentyone .ctct-form-field input[type=tel],.ctct-twentytwentyone .ctct-form-field input[type=text],.ctct-twentytwentyone .ctct-form-field input[type=url]{width:100%}@media (min-width:992px){.ctct-form-wrapper .ctct-field-half{float:left;margin-right:2%;width:48%}.ctct-form-wrapper .ctct-field-half:last-of-type{margin-right:0}.ctct-form-wrapper .ctct-field-third{float:left;margin-right:2%;width:32%}.ctct-form-wrapper .ctct-field-third:last-of-type{margin-right:0}.ctct-form-wrapper .ctct-field-fourth{float:left;margin-right:2%;width:24%}.ctct-form-wrapper .ctct-field-fourth:last-of-type{margin-right:0}}@media screen and (max-width:414px){.ctct-twentynineteen .ctct-form-wrapper span.ctct-label-right{width:80%}}
2
+ /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQ0FDRSxlQUNGLENBRUEsaUNBQ0UsZ0JBQWlCLENBQ2pCLFdBQ0YsQ0FFQSw0Q0FDRSxvQ0FBeUMsQ0FDekMsb0JBQXFCLENBQ3JCLGFBQ0YsQ0FFQSw4Q0FDRSxvQ0FBeUMsQ0FDekMsb0JBQXFCLENBQ3JCLGFBQ0YsQ0FFQSwyREFDRSxpQkFBa0IsQ0FDbEIsV0FBWSxDQUNaLGFBQWMsQ0FDZCxtQkFBcUIsQ0FDckIsb0JBQ0YsQ0FFQSxvQ0FDRSxlQUNGLENBRUEsc0NBQ0Usb0JBQ0YsQ0FtQ0EscVFBQ0UsZ0RBQWlELENBQ2pELDJCQUE0QixDQUM1QiwyQkFBNEIsQ0FDNUIsb0JBQXFCLENBQ3JCLG9CQUFxQixDQUNyQixpQkFDRixDQUVBLG1pQkFDRSxrREFBbUQsQ0FDbkQsb0NBQXlDLENBQ3pDLDJCQUE0QixDQUM1QixvQkFBcUIsQ0FDckIsb0JBQXFCLENBQ3JCLGlCQUNGLENBRUEscUNBQ0UsZ0JBQWtCLENBQ2xCLGlCQUNGLENBRUEsc0NBQ0Usa0RBQW1ELENBQ25ELG9DQUF5QyxDQUN6QywyQkFBNEIsQ0FDNUIsb0JBQXFCLENBQ3JCLG9CQUFxQixDQUNyQixpQkFDRixDQUVBLHFGQUVFLG9CQUFxQixDQUNyQixTQUNGLENBRUEsd0NBQ0Usb0JBQXFCLENBQ3JCLGVBQWdCLENBQ2hCLFNBQ0YsQ0FFQSx1RkFFRSxvQkFBcUIsQ0FDckIsZUFBZ0IsQ0FDaEIsU0FDRixDQUVBLHFIQUVFLFVBQ0YsQ0FFQSx5Q0FDRSxvQkFBcUIsQ0FDckIsU0FDRixDQUVBLDBDQUNFLHNCQUF3QixDQUN4QiwyQkFBNkIsQ0FDN0IscUJBQ0YsQ0FFQSwwREFDRSw0Q0FBNkMsQ0FDN0MsdUJBQTJCLENBQzNCLDJCQUE0QixDQUM1QixpQkFBa0IsQ0FDbEIsV0FBWSxDQUNaLFVBQ0YsQ0FFQSwyREFDRSxrQkFDRixDQUVBLG9DQUNFLFVBQVcsQ0FDWCxVQUFXLENBQ1gsYUFDRixDQUVBLDJHQUVFLGFBQ0YsQ0FFQSwyR0FFRSxvQkFDRixDQUVBLG1DQUNFLFdBQVksQ0FDWixhQUFjLENBQ2QsZUFDRixDQUVBLCtDQUNFLFVBQVcsQ0FDWCxlQUNGLENBRUEscUNBQ0UsYUFDRixDQUVBLGdDQUNFLGNBQ0YsQ0FFQSxzREFDRSxXQUFZLENBQ1osU0FDRixDQUVBLDZEQUNFLGVBQW1CLENBQ25CLFNBQ0YsQ0FFQSx5REFDRSxvQkFBcUIsQ0FDckIsY0FBZSxDQUNmLGtCQUNGLENBRUEsZ0VBQ0UsVUFDRixDQUVBLHdEQUNFLG9CQUFxQixDQUNyQixjQUFlLENBQ2Ysa0JBQ0YsQ0FFQSxxREFDRSxlQUFpQixDQUNqQixVQUNGLENBRUEsbUVBQ0UsYUFDRixDQUVBLHdEQUNFLG9CQUFxQixDQUNyQixrQkFDRixDQUVBLDZEQUNFLFNBQ0YsQ0FFQSwwREFDRSxvQkFBcUIsQ0FDckIsa0JBQ0YsQ0FFQSxxRUFDRSxjQUNGLENBRUEsK0RBQ0UsU0FDRixDQUVBLHlEQUNFLGtCQUNGLENBRUEsbUNBQ0Usa0JBQ0YsQ0FFQSwyTkFJRSxVQUNGLENBUUEsdURBQ0Usa0JBQ0YsQ0FNQSx3SEFDRSxnQkFDRixDQUVBLG1DQUNFLG1CQUNGLENBRUEsK05BSUUsVUFDRixDQXZQQSx5QkFDRSxvQ0FDRSxVQUFXLENBQ1gsZUFBZ0IsQ0FDaEIsU0FDRixDQUNBLGlEQUNFLGNBQ0YsQ0FJQSxxQ0FDRSxVQUFXLENBQ1gsZUFBZ0IsQ0FDaEIsU0FDRixDQUNBLGtEQUNFLGNBQ0YsQ0FJQSxzQ0FDRSxVQUFXLENBQ1gsZUFBZ0IsQ0FDaEIsU0FDRixDQUNBLG1EQUNFLGNBQ0YsQ0FyQkYsQ0FtTkEsb0NBQ0UsOERBQ0UsU0FDRixDQUNGIiwiZmlsZSI6InN0eWxlLm1pbi5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtYnV0dG9uIHtcbiAgZm9udC1zaXplOiAwLjlyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlIHtcbiAgYm9yZGVyOiAxcHggc29saWQ7XG4gIHBhZGRpbmc6IDFlbTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LW1lc3NhZ2UuY3RjdC1lcnJvciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NSwgNTQsIDAuMDIpO1xuICBib3JkZXItY29sb3I6ICNmZjQxMzY7XG4gIGNvbG9yOiAjY2YwYjAwO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtbWVzc2FnZS5jdGN0LXN1Y2Nlc3Mge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQ2LCAyMDQsIDY0LCAwLjAyKTtcbiAgYm9yZGVyLWNvbG9yOiAjMmVjYzQwO1xuICBjb2xvcjogIzFiNzkyNjtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LW1lc3NhZ2UgLmN0Y3QtZGlzbWlzcy1hamF4LW5vdGljZSB7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZmxvYXQ6IHJpZ2h0O1xuICBsaW5lLWhlaWdodDogMTtcbiAgcGFkZGluZzogMC44NXJlbSAxcmVtO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtLWZpZWxkIHtcbiAgbWFyZ2luOiAwIDAgMXJlbTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWlubGluZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1oYWxmIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIlO1xuICAgIHdpZHRoOiA0OCU7XG4gIH1cbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWhhbGY6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC10aGlyZCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogMzIlO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC10aGlyZDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWZvdXJ0aCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogMjQlO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1mb3VydGg6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RleHQnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdudW1iZXInXTpyZXF1aXJlZDp2YWxpZCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWFnZXMvY2hlY2tfY2lyY2xlLnN2Zyk7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDhweCA1MCU7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtc2l6ZTogMThweDtcbiAgYm9yZGVyLWNvbG9yOiAjMmVjYzQwO1xuICBwYWRkaW5nLWxlZnQ6IDMycHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSd0ZXh0J106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nZW1haWwnXS5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nbnVtYmVyJ106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nbnVtYmVyJ10uY3RjdC1pbnZhbGlkIHtcbiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoLi4vaW1hZ2VzL2Vycm9yLnN2Zykgbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgNjUsIDU0LCAwLjAyKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogOHB4IDUwJTtcbiAgYmFja2dyb3VuZC1zaXplOiAyNHB4O1xuICBib3JkZXItY29sb3I6ICNmZjQxMzY7XG4gIHBhZGRpbmctbGVmdDogNDBweDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWVycm9yIHtcbiAgZm9udC1zaXplOiAwLjg1cmVtO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dC5jdGN0LWludmFsaWQge1xuICBiYWNrZ3JvdW5kOiAjZmZmIHVybCguLi9pbWFnZXMvZXJyb3Iuc3ZnKSBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NSwgNTQsIDAuMDIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXNpemU6IDI0cHg7XG4gIGJvcmRlci1jb2xvcjogI2ZmNDEzNjtcbiAgcGFkZGluZy1sZWZ0OiA0MHB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1sYWJlbC1sZWZ0LFxuLmN0Y3QtZm9ybS13cmFwcGVyIHRleHRhcmVhLmN0Y3QtbGFiZWwtbGVmdCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDc1JTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIHNwYW4uY3RjdC1sYWJlbC1sZWZ0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDUlO1xuICB3aWR0aDogMjAlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1sYWJlbC1yaWdodCxcbi5jdGN0LWZvcm0td3JhcHBlciB0ZXh0YXJlYS5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDUlO1xuICB3aWR0aDogNzUlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1sYWJlbC1yaWdodFt0eXBlPVwiY2hlY2tib3hcIl0sXG4uY3RjdC1mb3JtLXdyYXBwZXIgdGV4dGFyZWEuY3RjdC1sYWJlbC1yaWdodFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICB3aWR0aDogYXV0bztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIHNwYW4uY3RjdC1sYWJlbC1yaWdodCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDIwJTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIHNwYW4uY3RjdC1sYWJlbC1oaWRkZW4ge1xuICBsZWZ0OiAtOTk5OXB4ICFpbXBvcnRhbnQ7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICB0b3A6IC05OTk5cHggIWltcG9ydGFudDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5uby1yZWNhcHRjaGEgLmN0Y3Qtc3VibWl0dGVkOmRpc2FibGVkIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltYWdlcy9vdmFsLm1pbi5zdmcpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY3Vyc29yOiB3YWl0O1xuICBvcGFjaXR5OiAwLjM7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuaGFzLXJlY2FwdGNoYSAuY3RjdC1zdWJtaXR0ZWQ6ZGlzYWJsZWQge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybTo6YWZ0ZXIge1xuICBjbGVhcjogYm90aDtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IHRhYmxlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC10b3AgbGFiZWwsXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC1ib3R0b20gbGFiZWwge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtbGVmdCBsYWJlbCxcbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIC5jdGN0LWxhYmVsLXJpZ2h0IGxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSBhYmJyIHtcbiAgYm9yZGVyOiBub25lO1xuICBjb2xvcjogI2ZmNDEzNjtcbiAgZm9udC1zaXplOiAwLjlyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1pbnB1dC1jb250YWluZXIgbGFiZWwge1xuICBjb2xvcjogI2FhYTtcbiAgZm9udC1zaXplOiAwLjhyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1lcnJvciB7XG4gIGNvbG9yOiAjZmY0MTM2O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3Qtc3VibWl0IHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybS1maWVsZC1jaGVja2JveCBmaWVsZHNldCB7XG4gIGJvcmRlcjogbm9uZTtcbiAgcGFkZGluZzogMDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0tZmllbGQtY2hlY2tib3ggZmllbGRzZXQgbGVnZW5kIHtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgcGFkZGluZzogMDtcbn1cblxuLmN0Y3QtdHdlbnR5Zm91cnRlZW4gLmN0Y3QtZm9ybS1kZXNjcmlwdGlvbiB+IC5jdGN0LWJ1dHRvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxcmVtO1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4uY3RjdC10d2VudHlmb3VydGVlbiAuY3RjdC1mb3JtLWZpZWxkIGlucHV0Om5vdCguY3RjdC1jaGVja2JveCkge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmN0Y3QtdHdlbnR5ZmlmdGVlbiAuY3RjdC1mb3JtLWRlc2NyaXB0aW9uIH4gLmN0Y3QtYnV0dG9uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6IDFyZW07XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG59XG5cbi5jdGN0LXR3ZW50eWZpZnRlZW4gLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwidGVsXCJdIHtcbiAgcGFkZGluZzogMC41Mjc4ZW07XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uY3RjdC10d2VudHlmaWZ0ZWVuIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1pbnB1dC1jb250YWluZXIgbGFiZWwge1xuICBmb250LXNpemU6IDc1JTtcbn1cblxuLmN0Y3QtdHdlbnR5c2l4dGVlbiAuY3RjdC1mb3JtLWRlc2NyaXB0aW9uIH4gLmN0Y3QtYnV0dG9uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4uY3RjdC10d2VudHlzaXh0ZWVuIC5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtcmlnaHQge1xuICB3aWR0aDogODAlO1xufVxuXG4uY3RjdC10d2VudHlzZXZlbnRlZW4gLmN0Y3QtZm9ybS1kZXNjcmlwdGlvbiB+IC5jdGN0LWJ1dHRvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogMjVweDtcbn1cblxuLmN0Y3QtdHdlbnR5c2V2ZW50ZWVuIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1pbnB1dC1jb250YWluZXIgbGFiZWwge1xuICBkaXNwbGF5OiBpbmxpbmU7XG59XG5cbi5jdGN0LXR3ZW50eXNldmVudGVlbiAuY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgd2lkdGg6IDgwJTtcbn1cblxuLmN0Y3QtdHdlbnR5bmluZXRlZW4gLmN0Y3QtZm9ybS1kZXNjcmlwdGlvbiB+IC5jdGN0LWJ1dHRvbiB7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG59XG5cbi5jdGN0LXR3ZW50eW5pbmV0ZWVuIC5jdGN0LWFkZHJlc3Mge1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuXG4uY3RjdC10d2VudHluaW5ldGVlbiAuY3RjdC1mb3JtLWZpZWxkIGlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxuLmN0Y3QtdHdlbnR5bmluZXRlZW4gLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwiZW1haWxcIl0sXG4uY3RjdC10d2VudHluaW5ldGVlbiAuY3RjdC1mb3JtLWZpZWxkIGlucHV0W3R5cGU9XCJ1cmxcIl0sXG4uY3RjdC10d2VudHluaW5ldGVlbiAuY3RjdC1mb3JtLWZpZWxkIGlucHV0W3R5cGU9XCJ0ZWxcIl0ge1xuICB3aWR0aDogMTAwJTtcbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDE0cHgpIHtcbiAgLmN0Y3QtdHdlbnR5bmluZXRlZW4gLmN0Y3QtZm9ybS13cmFwcGVyIHNwYW4uY3RjdC1sYWJlbC1yaWdodCB7XG4gICAgd2lkdGg6IDgwJTtcbiAgfVxufVxuXG4uY3RjdC10d2VudHl0d2VudHkgLmN0Y3QtZm9ybS1kZXNjcmlwdGlvbiB+IC5jdGN0LWJ1dHRvbiB7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG59XG5cbi5jdGN0LXR3ZW50eXR3ZW50eSAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSBhYmJyIHtcbiAgZm9udC1zaXplOiAxLjZyZW07XG59XG5cbi5jdGN0LXR3ZW50eXR3ZW50eSAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtaW5wdXQtY29udGFpbmVyIGxhYmVsIHtcbiAgZm9udC1zaXplOiAxLjZyZW07XG59XG5cbi5jdGN0LXR3ZW50eXR3ZW50eW9uZSAuY3RjdC1idXR0b24ge1xuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5jdGN0LXR3ZW50eXR3ZW50eW9uZSAuY3RjdC1mb3JtLWZpZWxkIGlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxuLmN0Y3QtdHdlbnR5dHdlbnR5b25lIC5jdGN0LWZvcm0tZmllbGQgaW5wdXRbdHlwZT1cImVtYWlsXCJdLFxuLmN0Y3QtdHdlbnR5dHdlbnR5b25lIC5jdGN0LWZvcm0tZmllbGQgaW5wdXRbdHlwZT1cInVybFwiXSxcbi5jdGN0LXR3ZW50eXR3ZW50eW9uZSAuY3RjdC1mb3JtLWZpZWxkIGlucHV0W3R5cGU9XCJ0ZWxcIl0ge1xuICB3aWR0aDogMTAwJTtcbn1cbiJdfQ== */
assets/js/ctct-plugin-admin.js CHANGED
@@ -93,7 +93,7 @@
93
  /*! no static exports found */
94
  /***/ (function(module, exports) {
95
 
96
- eval("window.CTCTAJAX = {};\n\n(function (window, $, that) {\n var _this = this;\n\n /**\n * @constructor\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n that.init = function () {\n // Trigger any field modifications we need to do.\n that.handleOptinAJAX();\n that.handleReviewAJAX();\n };\n /**\n * We need to manipulate our form builder a bit. We do this here.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n that.handleOptinAJAX = function () {\n // eslint-disable-next-line no-unused-vars\n $('#ctct_admin_notice_tracking_optin').on('click', function (e) {\n var ctctOptinAjax = {\n 'action': 'constant_contact_optin_ajax_handler',\n 'optin': $(_this).is(':checked') ? 'on' : 'off'\n };\n $.ajax({\n url: window.ajaxurl,\n data: ctctOptinAjax,\n dataType: 'json',\n success: function success(response) {\n $(document.getElementById('ctct-admin-notice-optin_admin_notice')).remove();\n },\n error: function error(x, t, m) {\n if (window.console) {\n console.log([t, m]);\n }\n }\n });\n $('#ctct-privacy-modal').toggleClass('ctct-modal-open');\n }); // Opens the privacy modal once clicking on the checkbox to opt in via the admin notice.\n // eslint-disable-next-line no-unused-vars\n\n $('#ctct-connect-ga-optin a').on('click', function (e) {\n var ctctOptinAjax = {\n 'action': 'constant_contact_optin_ajax_handler',\n 'optin': $(_this).attr('data-allow')\n };\n $.ajax({\n url: window.ajaxurl,\n data: ctctOptinAjax,\n dataType: 'json',\n success: function success(response) {\n // eslint-disable-line no-unused-vars\n $('.ctct-connected-opt-in').hide();\n },\n error: function error(x, t, m) {\n if (window.console) {\n console.log([t, m]); // eslint-disable-line no-console\n }\n }\n });\n }); // eslint-disable-next-line no-unused-vars\n\n $('#_ctct_data_tracking').on('click', function (e) {\n $('#ctct-privacy-modal').toggleClass('ctct-modal-open');\n }); // Unchecks the value if they have closed the privacy modal without agreeing/disagreeing.\n // eslint-disable-next-line no-unused-vars\n\n $('.ctct-modal-close').on('click', function (e) {\n var $checkbox = $('#_ctct_data_tracking');\n\n if ($checkbox.is(':checked')) {\n $checkbox.attr('checked', false);\n }\n }); // Handle the agreeing or disagreeing regarding privacy modal.\n // eslint-disable-next-line no-unused-vars\n\n $('#ctct-modal-footer-privacy a').on('click', function (e) {\n var ctctPrivacyAjax = {\n 'action': 'constant_contact_privacy_ajax_handler',\n 'privacy_agree': $(_this).attr('data-agree')\n };\n $.ajax({\n url: window.ajaxurl,\n data: ctctPrivacyAjax,\n dataType: 'json',\n success: function success(response) {\n // eslint-disable-line no-unused-vars\n $('#ctct-privacy-modal').toggleClass('ctct-modal-open');\n\n if ('false' === ctctPrivacyAjax.privacy_agree) {\n var $checkbox = $('#_ctct_data_tracking');\n\n if ($checkbox.is(':checked')) {\n $checkbox.attr('checked', false);\n }\n }\n },\n error: function error(x, t, m) {\n if (window.console) {\n console.log([t, m]); // eslint-disable-line no-console\n }\n }\n });\n });\n }; // Handle saving the decision regarding the review prompt admin notice.\n\n\n that.handleReviewAJAX = function () {\n $('#ctct-admin-notice-review_request').on('click', 'a', function (e) {\n var ctctAction = 'dismissed';\n\n if ($(_this).hasClass('ctct-review')) {\n ctctAction = 'reviewed';\n }\n\n var ctctReviewAjax = {\n 'action': 'constant_contact_review_ajax_handler',\n 'ctct-review-action': ctctAction\n };\n $.ajax({\n url: window.ajaxurl,\n data: ctctReviewAjax,\n dataType: 'json',\n success: function success(resp) {\n if (window.console) {\n console.log(resp); // eslint-disable-line no-console\n }\n\n e.preventDefault();\n $('#ctct-admin-notice-review_request').hide();\n },\n error: function error(x, t, m) {\n if (window.console) {\n console.log([t, m]); // eslint-disable-line no-console\n }\n }\n });\n });\n };\n\n $(that.init);\n})(window, jQuery, window.CTCTAJAX);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tYWRtaW4vYWpheC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Fzc2V0cy9qcy9jdGN0LXBsdWdpbi1hZG1pbi9hamF4LmpzPzhlOTQiXSwic291cmNlc0NvbnRlbnQiOlsid2luZG93LkNUQ1RBSkFYID0ge307XG5cbiggZnVuY3Rpb24oIHdpbmRvdywgJCwgdGhhdCApIHtcblxuXHQvKipcblx0ICogQGNvbnN0cnVjdG9yXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdHRoYXQuaW5pdCA9ICgpID0+IHtcblxuXHRcdC8vIFRyaWdnZXIgYW55IGZpZWxkIG1vZGlmaWNhdGlvbnMgd2UgbmVlZCB0byBkby5cblx0XHR0aGF0LmhhbmRsZU9wdGluQUpBWCgpO1xuXHRcdHRoYXQuaGFuZGxlUmV2aWV3QUpBWCgpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBXZSBuZWVkIHRvIG1hbmlwdWxhdGUgb3VyIGZvcm0gYnVpbGRlciBhIGJpdC4gV2UgZG8gdGhpcyBoZXJlLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqL1xuXHR0aGF0LmhhbmRsZU9wdGluQUpBWCA9ICgpID0+IHtcblxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuXHRcdCQoICcjY3RjdF9hZG1pbl9ub3RpY2VfdHJhY2tpbmdfb3B0aW4nICkub24oICdjbGljaycsICggZSApID0+IHtcblxuXHRcdFx0dmFyIGN0Y3RPcHRpbkFqYXggPSB7XG5cdFx0XHRcdCdhY3Rpb24nOiAnY29uc3RhbnRfY29udGFjdF9vcHRpbl9hamF4X2hhbmRsZXInLFxuXHRcdFx0XHQnb3B0aW4nOiAoICQoIHRoaXMgKS5pcyggJzpjaGVja2VkJyApICkgPyAnb24nIDogJ29mZidcblx0XHRcdH07XG5cblx0XHRcdCQuYWpheCgge1xuXHRcdFx0XHR1cmw6IHdpbmRvdy5hamF4dXJsLFxuXHRcdFx0XHRkYXRhOiBjdGN0T3B0aW5BamF4LFxuXHRcdFx0XHRkYXRhVHlwZTogJ2pzb24nLFxuXHRcdFx0XHRzdWNjZXNzOiAoIHJlc3BvbnNlICkgPT4ge1xuXHRcdFx0XHRcdCQoIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAnY3RjdC1hZG1pbi1ub3RpY2Utb3B0aW5fYWRtaW5fbm90aWNlJyApICkucmVtb3ZlKCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGVycm9yOiAoIHgsIHQsIG0gKSA9PiB7XG5cdFx0XHRcdFx0aWYgKCB3aW5kb3cuY29uc29sZSApIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCBbIHQsIG0gXSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXG5cdFx0XHQkKCAnI2N0Y3QtcHJpdmFjeS1tb2RhbCcgKS50b2dnbGVDbGFzcyggJ2N0Y3QtbW9kYWwtb3BlbicgKTtcblx0XHR9ICk7XG5cblx0XHQvLyBPcGVucyB0aGUgcHJpdmFjeSBtb2RhbCBvbmNlIGNsaWNraW5nIG9uIHRoZSBjaGVja2JveCB0byBvcHQgaW4gdmlhIHRoZSBhZG1pbiBub3RpY2UuXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG5cdFx0JCggJyNjdGN0LWNvbm5lY3QtZ2Etb3B0aW4gYScgKS5vbiggJ2NsaWNrJywgKCBlICkgPT4ge1xuXHRcdFx0dmFyIGN0Y3RPcHRpbkFqYXggPSB7XG5cdFx0XHRcdCdhY3Rpb24nOiAnY29uc3RhbnRfY29udGFjdF9vcHRpbl9hamF4X2hhbmRsZXInLFxuXHRcdFx0XHQnb3B0aW4nOiAkKCB0aGlzICkuYXR0ciggJ2RhdGEtYWxsb3cnIClcblx0XHRcdH07XG5cblx0XHRcdCQuYWpheCgge1xuXHRcdFx0XHR1cmw6IHdpbmRvdy5hamF4dXJsLFxuXHRcdFx0XHRkYXRhOiBjdGN0T3B0aW5BamF4LFxuXHRcdFx0XHRkYXRhVHlwZTogJ2pzb24nLFxuXHRcdFx0XHRzdWNjZXNzOiAoIHJlc3BvbnNlICkgPT4geyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG5cdFx0XHRcdFx0JCggJy5jdGN0LWNvbm5lY3RlZC1vcHQtaW4nICkuaGlkZSgpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRlcnJvcjogKCB4LCB0LCBtICkgPT4ge1xuXHRcdFx0XHRcdGlmICggd2luZG93LmNvbnNvbGUgKSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyggWyB0LCBtIF0gKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fSApO1xuXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG5cdFx0JCggJyNfY3RjdF9kYXRhX3RyYWNraW5nJyApLm9uKCAnY2xpY2snLCAoIGUgKSA9PiB7XG5cdFx0XHQkKCAnI2N0Y3QtcHJpdmFjeS1tb2RhbCcgKS50b2dnbGVDbGFzcyggJ2N0Y3QtbW9kYWwtb3BlbicgKTtcblx0XHR9ICk7XG5cblx0XHQvLyBVbmNoZWNrcyB0aGUgdmFsdWUgaWYgdGhleSBoYXZlIGNsb3NlZCB0aGUgcHJpdmFjeSBtb2RhbCB3aXRob3V0IGFncmVlaW5nL2Rpc2FncmVlaW5nLlxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuXHRcdCQoICcuY3RjdC1tb2RhbC1jbG9zZScgKS5vbiggJ2NsaWNrJywgKCBlICkgPT4ge1xuXHRcdFx0dmFyICRjaGVja2JveCA9ICQoICcjX2N0Y3RfZGF0YV90cmFja2luZycgKTtcblx0XHRcdGlmICggJGNoZWNrYm94LmlzKCAnOmNoZWNrZWQnICkgKSB7XG5cdFx0XHRcdCRjaGVja2JveC5hdHRyKCAnY2hlY2tlZCcsIGZhbHNlICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdFx0Ly8gSGFuZGxlIHRoZSBhZ3JlZWluZyBvciBkaXNhZ3JlZWluZyByZWdhcmRpbmcgcHJpdmFjeSBtb2RhbC5cblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcblx0XHQkKCAnI2N0Y3QtbW9kYWwtZm9vdGVyLXByaXZhY3kgYScgKS5vbiggJ2NsaWNrJywgKCBlICkgPT4ge1xuXHRcdFx0dmFyIGN0Y3RQcml2YWN5QWpheCA9IHtcblx0XHRcdFx0J2FjdGlvbic6ICdjb25zdGFudF9jb250YWN0X3ByaXZhY3lfYWpheF9oYW5kbGVyJyxcblx0XHRcdFx0J3ByaXZhY3lfYWdyZWUnOiAkKCB0aGlzICkuYXR0ciggJ2RhdGEtYWdyZWUnIClcblx0XHRcdH07XG5cblx0XHRcdCQuYWpheCgge1xuXHRcdFx0XHR1cmw6IHdpbmRvdy5hamF4dXJsLFxuXHRcdFx0XHRkYXRhOiBjdGN0UHJpdmFjeUFqYXgsXG5cdFx0XHRcdGRhdGFUeXBlOiAnanNvbicsXG5cdFx0XHRcdHN1Y2Nlc3M6ICggcmVzcG9uc2UgKSA9PiB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcblx0XHRcdFx0XHQkKCAnI2N0Y3QtcHJpdmFjeS1tb2RhbCcgKS50b2dnbGVDbGFzcyggJ2N0Y3QtbW9kYWwtb3BlbicgKTtcblx0XHRcdFx0XHRpZiAoICdmYWxzZScgPT09IGN0Y3RQcml2YWN5QWpheC5wcml2YWN5X2FncmVlICkge1xuXHRcdFx0XHRcdFx0dmFyICRjaGVja2JveCA9ICQoICcjX2N0Y3RfZGF0YV90cmFja2luZycgKTtcblx0XHRcdFx0XHRcdGlmICggJGNoZWNrYm94LmlzKCAnOmNoZWNrZWQnICkgKSB7XG5cdFx0XHRcdFx0XHRcdCRjaGVja2JveC5hdHRyKCAnY2hlY2tlZCcsIGZhbHNlICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRlcnJvcjogKCB4LCB0LCBtICkgPT4ge1xuXHRcdFx0XHRcdGlmICggd2luZG93LmNvbnNvbGUgKSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyggWyB0LCBtIF0gKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fSApO1xuXHR9O1xuXG5cdC8vIEhhbmRsZSBzYXZpbmcgdGhlIGRlY2lzaW9uIHJlZ2FyZGluZyB0aGUgcmV2aWV3IHByb21wdCBhZG1pbiBub3RpY2UuXG5cdHRoYXQuaGFuZGxlUmV2aWV3QUpBWCA9ICgpID0+IHtcblx0XHQkKCAnI2N0Y3QtYWRtaW4tbm90aWNlLXJldmlld19yZXF1ZXN0JyApLm9uKCAnY2xpY2snLCAnYScsICggZSApID0+IHtcblxuXHRcdFx0dmFyIGN0Y3RBY3Rpb24gPSAnZGlzbWlzc2VkJztcblxuXHRcdFx0aWYgKCAkKCB0aGlzICkuaGFzQ2xhc3MoICdjdGN0LXJldmlldycgKSApIHtcblx0XHRcdFx0Y3RjdEFjdGlvbiA9ICdyZXZpZXdlZCc7XG5cdFx0XHR9XG5cblx0XHRcdHZhciBjdGN0UmV2aWV3QWpheCA9IHtcblx0XHRcdFx0J2FjdGlvbic6ICdjb25zdGFudF9jb250YWN0X3Jldmlld19hamF4X2hhbmRsZXInLFxuXHRcdFx0XHQnY3RjdC1yZXZpZXctYWN0aW9uJzogY3RjdEFjdGlvblxuXHRcdFx0fTtcblxuXHRcdFx0JC5hamF4KCB7XG5cdFx0XHRcdHVybDogd2luZG93LmFqYXh1cmwsXG5cdFx0XHRcdGRhdGE6IGN0Y3RSZXZpZXdBamF4LFxuXHRcdFx0XHRkYXRhVHlwZTogJ2pzb24nLFxuXHRcdFx0XHRzdWNjZXNzOiAoIHJlc3AgKSA9PiB7XG5cdFx0XHRcdFx0aWYgKCB3aW5kb3cuY29uc29sZSApIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCByZXNwICk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFx0JCggJyNjdGN0LWFkbWluLW5vdGljZS1yZXZpZXdfcmVxdWVzdCcgKS5oaWRlKCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGVycm9yOiAoIHgsIHQsIG0gKSA9PiB7XG5cdFx0XHRcdFx0aWYgKCB3aW5kb3cuY29uc29sZSApIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCBbIHQsIG0gXSApOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9ICk7XG5cdH07XG5cblx0JCggdGhhdC5pbml0ICk7XG5cbn0gKCB3aW5kb3csIGpRdWVyeSwgd2luZG93LkNUQ1RBSkFYICkgKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBOzs7Ozs7QUFNQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7O0FBTUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFYQTtBQWNBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBWEE7QUFhQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFqQkE7QUFtQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBZkE7QUFpQkE7QUFDQTtBQUNBO0FBQ0E7QUFFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-admin/ajax.js\n");
97
 
98
  /***/ }),
99
 
@@ -104,7 +104,7 @@ eval("window.CTCTAJAX = {};\n\n(function (window, $, that) {\n var _this = this
104
  /*! no static exports found */
105
  /***/ (function(module, exports) {
106
 
107
- eval("window.CTCTBuilder = {};\n\n(function (window, $, that) {\n /**\n * @constructor\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n that.init = function () {\n // If we do actually have an email field set, then remove our error.\n if ($('#cmb2-metabox-ctct_2_fields_metabox option[value=\"email\"]:selected').length) {\n $('#ctct-no-email-error').remove();\n } // Cache it all.\n\n\n that.cache(); // Bind our events.\n\n that.bindEvents(); // Bind our select dropdown events.\n\n that.selectBinds(); // Trigger any field modifications we need to do.\n\n that.modifyFields(); // Make description non-draggable, so we don't run into weird cmb2 issues.\n\n $('#ctct_0_description_metabox h2.hndle').removeClass('ui-sortable-handle, hndle'); // Inject our new labels for the up/down CMB2 buttons, so they can be properly localized.\n // Because we're using :after, we can't use .css() to do this, we need to inject a style tag.\n\n $('head').append('<style> #cmb2-metabox-ctct_2_fields_metabox a.move-up::after { content: \"' + window.ctctTexts.move_up + '\" } #cmb2-metabox-ctct_2_fields_metabox a.move-down::after { content: \"' + window.ctctTexts.move_down + '\" }</style>');\n };\n /**\n * Cache DOM elements.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n that.cache = function () {\n that.$c = {\n window: $(window),\n body: $('body')\n };\n that.isLeaveWarningBound = false;\n }; // Triggers our leave warning if we modify things in the form.\n\n\n that.bindLeaveWarning = function () {\n // Don't double-bind it.\n if (!that.isLeaveWarningBound) {\n // Bind our error that displays before leaving page.\n $(window).bind('beforeunload', function () {\n return window.ctctTexts.leavewarning;\n }); // Save our state.\n\n that.isLeaveWarningBound = true;\n }\n };\n /**\n * Removes our binding of our leave warning.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n that.unbindLeaveWarning = function () {\n $(window).unbind('beforeunload');\n };\n /**\n * Attach callbacks to events.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n that.bindEvents = function () {\n $('#post').submit(function () {\n // Make sure our email dropdown reverts from disbled, as CMB2 doesn't save those values.\n $('.ctct-email-disabled').removeClass('disabled').prop('disabled', false);\n that.unbindLeaveWarning();\n });\n $('.cmb2-wrap input, .cmb2-wrap textarea').on('input', function () {\n if ('undefined' !== typeof tinyMCE) {\n that.bindLeaveWarning();\n }\n }); // Disable email options on row change trigger.\n\n $(document).on('cmb2_shift_rows_complete', function () {\n that.modifyFields();\n that.bindLeaveWarning();\n that.removeDuplicateMappings();\n }); // If we get a row added, then do our stuff.\n\n $(document).on('cmb2_add_row', function (newRow) {\n // eslint-disable-line no-unused-vars\n // Automatically set new rows to be 'custom' field type.\n $('#custom_fields_group_repeat .postbox').last().find('.map select').val('none');\n that.modifyFields();\n that.selectBinds();\n that.removeDuplicateMappings();\n });\n that.removeDuplicateMappings();\n $('#ctct-reset-css').on('click', function (event) {\n event.preventDefault();\n var selectFields = ['#_ctct_form_description_font_size', '#_ctct_form_submit_button_font_size', '#_ctct_form_label_placement'];\n var textFields = ['#_ctct_form_padding_top', '#_ctct_form_padding_bottom', '#_ctct_form_padding_left', '#_ctct_form_padding_right', '#_ctct_input_custom_classes']; // Reset color pickers.\n\n $('.wp-picker-clear').each(function () {\n $(this).click();\n });\n\n for (var i = selectFields.length; i--;) {\n var firstOption = $(selectFields[i]).children('option').first();\n $(selectFields[i]).val(firstOption.val());\n }\n\n for (var i = textFields.length; i--;) {\n $(textFields[i]).val('');\n }\n });\n };\n /**\n * When .cmb2_select <selects> get changed, do some actions.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n that.selectBinds = function () {\n // For each fields select.\n $('#cmb2-metabox-ctct_2_fields_metabox .cmb2_select').change(function () {\n // Modify our fields.\n that.modifyFields(); // Don't allow duplicate mappings in form.\n\n that.removeDuplicateMappings(); // Bind our leave warning.\n\n that.bindLeaveWarning();\n });\n };\n /**\n * We need to manipulate our form builder a bit. We do this here.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n that.modifyFields = function () {\n // Set that we haven't found an email.\n var foundEmail = false; // Loop through all fields to modify them.\n\n $('#cmb2-metabox-ctct_2_fields_metabox #custom_fields_group_repeat .cmb-repeatable-grouping').each(function (key, value) {\n // Set some of our helper paramaters.\n var $fieldParent = $(this).find('.cmb-field-list');\n var $button = $($fieldParent).find('.cmb-remove-group-row');\n var $required = $($fieldParent).find('.required input[type=checkbox]');\n var $requiredRow = $required.closest('.cmb-row');\n var $map = $($fieldParent).find('.map select option:selected');\n var $mapName = $map.text();\n var $fieldTitle = $(this).find('h3');\n var $labelField = $(this).find('input[name*=\"_ctct_field_label\"]');\n var $descField = $(this).find('input[name*=\"_ctct_field_desc\"]'); // Set our field row to be the name of the selected option.\n\n $fieldTitle.text($mapName); // If we have a blank field label, then use the name of the field to fill it in.\n\n if (0 === $labelField.val().length) {\n $labelField.val($mapName).addClass('ctct-label-filled');\n } else {\n $labelField.addClass('ctct-label-filled');\n } // If we haven't yet found an email field, and this is our email field.\n\n\n if (!foundEmail && 'email' === $($map).val()) {\n // Set that we found an email field.\n foundEmail = true; // Make it required.\n\n $required.prop('checked', true); // Set it to be 'disabled'.\n\n $(value).find('select').addClass('disabled ctct-email-disabled').prop('disabled', true); // Hide the required row.\n\n $requiredRow.hide(); // Hide the remove row button.\n\n $button.hide();\n } else {\n // Verify its not disabled.\n $(value).find('select').removeClass('disabled ctct-email-disabled').prop('disabled', false); // If we're not an email field, reshow the required field.\n\n $requiredRow.show(); // and the remove button.\n\n $button.show();\n } // Set the placeholder text if there's something to set.\n\n\n if (window.ctct_admin_placeholders) {\n var placeholder = window.ctct_admin_placeholders[$(value).find('select').val()]; // If we have a valid placeholder, display it or try the fallback.\n\n if (placeholder && placeholder.length && $descField.length) {\n $descField.attr('placeholder', 'Example: ' + placeholder);\n } else if (window.ctct_admin_placeholders.default) {\n $descField.attr('placeholder', window.ctct_admin_placeholders.default);\n }\n }\n });\n };\n /**\n * Go through all dropdowns, and remove used options.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n that.removeDuplicateMappings = function () {\n var usedMappings = [];\n var dropdowns = '#cmb2-metabox-ctct_2_fields_metabox #custom_fields_group_repeat .cmb-repeatable-grouping select';\n var $dropdowns = $(dropdowns); // For each dropdown, build up our array of used values.\n\n $dropdowns.each(function (key, value) {\n usedMappings.push($(value).val());\n }); // Re-show all the children options we may have hidden.\n\n $dropdowns.children().show(); // For each of our mappings that we already have, remove them from all selects.\n\n usedMappings.forEach(function (value) {\n // But only do it if the value isn't one of our custom ones.\n if ('custom_text_area' !== value && 'custom' !== value) {\n // Remove all options from our dropdowns with the value.\n $(dropdowns + ' option[value=' + value + ']:not( :selected )').hide();\n }\n });\n };\n\n $(that.init);\n})(window, jQuery, window.CTCTBuilder);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tYWRtaW4vYnVpbGRlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Fzc2V0cy9qcy9jdGN0LXBsdWdpbi1hZG1pbi9idWlsZGVyLmpzPzlhZmMiXSwic291cmNlc0NvbnRlbnQiOlsid2luZG93LkNUQ1RCdWlsZGVyID0ge307XG5cbiggZnVuY3Rpb24oIHdpbmRvdywgJCwgdGhhdCApIHtcblxuXHQvKipcblx0ICogQGNvbnN0cnVjdG9yXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdHRoYXQuaW5pdCA9ICgpID0+IHtcblxuXHRcdC8vIElmIHdlIGRvIGFjdHVhbGx5IGhhdmUgYW4gZW1haWwgZmllbGQgc2V0LCB0aGVuIHJlbW92ZSBvdXIgZXJyb3IuXG5cdFx0aWYgKCAkKCAnI2NtYjItbWV0YWJveC1jdGN0XzJfZmllbGRzX21ldGFib3ggb3B0aW9uW3ZhbHVlPVwiZW1haWxcIl06c2VsZWN0ZWQnICkubGVuZ3RoICkge1xuXHRcdFx0JCggJyNjdGN0LW5vLWVtYWlsLWVycm9yJyApLnJlbW92ZSgpO1xuXHRcdH1cblxuXHRcdC8vIENhY2hlIGl0IGFsbC5cblx0XHR0aGF0LmNhY2hlKCk7XG5cblx0XHQvLyBCaW5kIG91ciBldmVudHMuXG5cdFx0dGhhdC5iaW5kRXZlbnRzKCk7XG5cblx0XHQvLyBCaW5kIG91ciBzZWxlY3QgZHJvcGRvd24gZXZlbnRzLlxuXHRcdHRoYXQuc2VsZWN0QmluZHMoKTtcblxuXHRcdC8vIFRyaWdnZXIgYW55IGZpZWxkIG1vZGlmaWNhdGlvbnMgd2UgbmVlZCB0byBkby5cblx0XHR0aGF0Lm1vZGlmeUZpZWxkcygpO1xuXG5cdFx0Ly8gTWFrZSBkZXNjcmlwdGlvbiBub24tZHJhZ2dhYmxlLCBzbyB3ZSBkb24ndCBydW4gaW50byB3ZWlyZCBjbWIyIGlzc3Vlcy5cblx0XHQkKCAnI2N0Y3RfMF9kZXNjcmlwdGlvbl9tZXRhYm94IGgyLmhuZGxlJyApLnJlbW92ZUNsYXNzKCAndWktc29ydGFibGUtaGFuZGxlLCBobmRsZScgKTtcblxuXHRcdC8vIEluamVjdCBvdXIgbmV3IGxhYmVscyBmb3IgdGhlIHVwL2Rvd24gQ01CMiBidXR0b25zLCBzbyB0aGV5IGNhbiBiZSBwcm9wZXJseSBsb2NhbGl6ZWQuXG5cdFx0Ly8gQmVjYXVzZSB3ZSdyZSB1c2luZyA6YWZ0ZXIsIHdlIGNhbid0IHVzZSAuY3NzKCkgdG8gZG8gdGhpcywgd2UgbmVlZCB0byBpbmplY3QgYSBzdHlsZSB0YWcuXG5cdFx0JCggJ2hlYWQnICkuYXBwZW5kKCAnPHN0eWxlPiAjY21iMi1tZXRhYm94LWN0Y3RfMl9maWVsZHNfbWV0YWJveCBhLm1vdmUtdXA6OmFmdGVyIHsgY29udGVudDogXCInICsgd2luZG93LmN0Y3RUZXh0cy5tb3ZlX3VwICsgJ1wiIH0gI2NtYjItbWV0YWJveC1jdGN0XzJfZmllbGRzX21ldGFib3ggYS5tb3ZlLWRvd246OmFmdGVyIHsgY29udGVudDogXCInICsgd2luZG93LmN0Y3RUZXh0cy5tb3ZlX2Rvd24gKyAnXCIgfTwvc3R5bGU+JyApO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBDYWNoZSBET00gZWxlbWVudHMuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdHRoYXQuY2FjaGUgPSAoKSA9PiB7XG5cblx0XHR0aGF0LiRjID0ge1xuXHRcdFx0d2luZG93OiAkKCB3aW5kb3cgKSxcblx0XHRcdGJvZHk6ICQoICdib2R5JyApXG5cdFx0fTtcblxuXHRcdHRoYXQuaXNMZWF2ZVdhcm5pbmdCb3VuZCA9IGZhbHNlO1xuXHR9O1xuXG5cdC8vIFRyaWdnZXJzIG91ciBsZWF2ZSB3YXJuaW5nIGlmIHdlIG1vZGlmeSB0aGluZ3MgaW4gdGhlIGZvcm0uXG5cdHRoYXQuYmluZExlYXZlV2FybmluZyA9ICgpID0+IHtcblxuXHRcdC8vIERvbid0IGRvdWJsZS1iaW5kIGl0LlxuXHRcdGlmICggISB0aGF0LmlzTGVhdmVXYXJuaW5nQm91bmQgKSB7XG5cblx0XHRcdC8vIEJpbmQgb3VyIGVycm9yIHRoYXQgZGlzcGxheXMgYmVmb3JlIGxlYXZpbmcgcGFnZS5cblx0XHRcdCQoIHdpbmRvdyApLmJpbmQoICdiZWZvcmV1bmxvYWQnLCAoKSA9PiB7XG5cdFx0XHRcdHJldHVybiB3aW5kb3cuY3RjdFRleHRzLmxlYXZld2FybmluZztcblx0XHRcdH0gKTtcblxuXHRcdFx0Ly8gU2F2ZSBvdXIgc3RhdGUuXG5cdFx0XHR0aGF0LmlzTGVhdmVXYXJuaW5nQm91bmQgPSB0cnVlO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogUmVtb3ZlcyBvdXIgYmluZGluZyBvZiBvdXIgbGVhdmUgd2FybmluZy5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0dGhhdC51bmJpbmRMZWF2ZVdhcm5pbmcgPSAoKSA9PiB7XG5cdFx0JCggd2luZG93ICkudW5iaW5kKCAnYmVmb3JldW5sb2FkJyApO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBBdHRhY2ggY2FsbGJhY2tzIHRvIGV2ZW50cy5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0dGhhdC5iaW5kRXZlbnRzID0gKCkgPT4ge1xuXG5cdFx0JCggJyNwb3N0JyApLnN1Ym1pdCggKCkgPT4ge1xuXG5cdFx0XHQvLyBNYWtlIHN1cmUgb3VyIGVtYWlsIGRyb3Bkb3duIHJldmVydHMgZnJvbSBkaXNibGVkLCBhcyBDTUIyIGRvZXNuJ3Qgc2F2ZSB0aG9zZSB2YWx1ZXMuXG5cdFx0XHQkKCAnLmN0Y3QtZW1haWwtZGlzYWJsZWQnICkucmVtb3ZlQ2xhc3MoICdkaXNhYmxlZCcgKS5wcm9wKCAnZGlzYWJsZWQnLCBmYWxzZSApO1xuXG5cdFx0XHR0aGF0LnVuYmluZExlYXZlV2FybmluZygpO1xuXHRcdH0gKTtcblxuXHRcdCQoICcuY21iMi13cmFwIGlucHV0LCAuY21iMi13cmFwIHRleHRhcmVhJyApLm9uKCAnaW5wdXQnLCAoKSA9PiB7XG5cdFx0XHRpZiAoICd1bmRlZmluZWQnICE9PSB0eXBlb2YoIHRpbnlNQ0UgKSApIHtcblx0XHRcdFx0dGhhdC5iaW5kTGVhdmVXYXJuaW5nKCk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdFx0Ly8gRGlzYWJsZSBlbWFpbCBvcHRpb25zIG9uIHJvdyBjaGFuZ2UgdHJpZ2dlci5cblx0XHQkKCBkb2N1bWVudCApLm9uKCAnY21iMl9zaGlmdF9yb3dzX2NvbXBsZXRlJywgKCkgPT4ge1xuXHRcdFx0dGhhdC5tb2RpZnlGaWVsZHMoKTtcblx0XHRcdHRoYXQuYmluZExlYXZlV2FybmluZygpO1xuXHRcdFx0dGhhdC5yZW1vdmVEdXBsaWNhdGVNYXBwaW5ncygpO1xuXHRcdH0gKTtcblxuXHRcdC8vIElmIHdlIGdldCBhIHJvdyBhZGRlZCwgdGhlbiBkbyBvdXIgc3R1ZmYuXG5cdFx0JCggZG9jdW1lbnQgKS5vbiggJ2NtYjJfYWRkX3JvdycsICggbmV3Um93ICkgPT4geyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG5cblx0XHRcdC8vIEF1dG9tYXRpY2FsbHkgc2V0IG5ldyByb3dzIHRvIGJlICdjdXN0b20nIGZpZWxkIHR5cGUuXG5cdFx0XHQkKCAnI2N1c3RvbV9maWVsZHNfZ3JvdXBfcmVwZWF0IC5wb3N0Ym94JyApLmxhc3QoKS5maW5kKCAnLm1hcCBzZWxlY3QnICkudmFsKCAnbm9uZScgKTtcblxuXHRcdFx0dGhhdC5tb2RpZnlGaWVsZHMoKTtcblx0XHRcdHRoYXQuc2VsZWN0QmluZHMoKTtcblx0XHRcdHRoYXQucmVtb3ZlRHVwbGljYXRlTWFwcGluZ3MoKTtcblx0XHR9ICk7XG5cblx0XHR0aGF0LnJlbW92ZUR1cGxpY2F0ZU1hcHBpbmdzKCk7XG5cblx0XHQkKCAnI2N0Y3QtcmVzZXQtY3NzJyApLm9uKCAnY2xpY2snLCAoIGV2ZW50ICkgPT4ge1xuXHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuXHRcdFx0dmFyIHNlbGVjdEZpZWxkcyA9IFtcblx0XHRcdFx0JyNfY3RjdF9mb3JtX2Rlc2NyaXB0aW9uX2ZvbnRfc2l6ZScsXG5cdFx0XHRcdCcjX2N0Y3RfZm9ybV9zdWJtaXRfYnV0dG9uX2ZvbnRfc2l6ZScsXG5cdFx0XHRcdCcjX2N0Y3RfZm9ybV9sYWJlbF9wbGFjZW1lbnQnXG5cdFx0XHRdO1xuXG5cdFx0XHR2YXIgdGV4dEZpZWxkcyA9IFtcblx0XHRcdFx0JyNfY3RjdF9mb3JtX3BhZGRpbmdfdG9wJyxcblx0XHRcdFx0JyNfY3RjdF9mb3JtX3BhZGRpbmdfYm90dG9tJyxcblx0XHRcdFx0JyNfY3RjdF9mb3JtX3BhZGRpbmdfbGVmdCcsXG5cdFx0XHRcdCcjX2N0Y3RfZm9ybV9wYWRkaW5nX3JpZ2h0Jyxcblx0XHRcdFx0JyNfY3RjdF9pbnB1dF9jdXN0b21fY2xhc3Nlcydcblx0XHRcdF07XG5cblx0XHRcdC8vIFJlc2V0IGNvbG9yIHBpY2tlcnMuXG5cdFx0XHQkKCAnLndwLXBpY2tlci1jbGVhcicgKS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0JCggdGhpcyApLmNsaWNrKCk7XG5cdFx0XHR9ICk7XG5cblx0XHRcdGZvciAoIHZhciBpID0gc2VsZWN0RmllbGRzLmxlbmd0aDsgaS0tOyApIHtcblx0XHRcdFx0dmFyIGZpcnN0T3B0aW9uID0gJCggc2VsZWN0RmllbGRzW2ldICkuY2hpbGRyZW4oICdvcHRpb24nICkuZmlyc3QoKTtcblx0XHRcdFx0JCggc2VsZWN0RmllbGRzW2ldICkudmFsKCBmaXJzdE9wdGlvbi52YWwoKSApO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKCB2YXIgaSA9IHRleHRGaWVsZHMubGVuZ3RoOyBpLS07ICkge1xuXHRcdFx0XHQkKCB0ZXh0RmllbGRzW2ldICkudmFsKCAnJyApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fTtcblxuXHQvKipcblx0ICogV2hlbiAuY21iMl9zZWxlY3QgPHNlbGVjdHM+IGdldCBjaGFuZ2VkLCBkbyBzb21lIGFjdGlvbnMuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdHRoYXQuc2VsZWN0QmluZHMgPSAoKSA9PiB7XG5cblx0XHQvLyBGb3IgZWFjaCBmaWVsZHMgc2VsZWN0LlxuXHRcdCQoICcjY21iMi1tZXRhYm94LWN0Y3RfMl9maWVsZHNfbWV0YWJveCAuY21iMl9zZWxlY3QnICkuY2hhbmdlKCAoKSA9PiB7XG5cblx0XHRcdC8vIE1vZGlmeSBvdXIgZmllbGRzLlxuXHRcdFx0dGhhdC5tb2RpZnlGaWVsZHMoKTtcblxuXHRcdFx0Ly8gRG9uJ3QgYWxsb3cgZHVwbGljYXRlIG1hcHBpbmdzIGluIGZvcm0uXG5cdFx0XHR0aGF0LnJlbW92ZUR1cGxpY2F0ZU1hcHBpbmdzKCk7XG5cblx0XHRcdC8vIEJpbmQgb3VyIGxlYXZlIHdhcm5pbmcuXG5cdFx0XHR0aGF0LmJpbmRMZWF2ZVdhcm5pbmcoKTtcblx0XHR9ICk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFdlIG5lZWQgdG8gbWFuaXB1bGF0ZSBvdXIgZm9ybSBidWlsZGVyIGEgYml0LiBXZSBkbyB0aGlzIGhlcmUuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdHRoYXQubW9kaWZ5RmllbGRzID0gKCkgPT4ge1xuXG5cdFx0Ly8gU2V0IHRoYXQgd2UgaGF2ZW4ndCBmb3VuZCBhbiBlbWFpbC5cblx0XHR2YXIgZm91bmRFbWFpbCA9IGZhbHNlO1xuXG5cdFx0Ly8gTG9vcCB0aHJvdWdoIGFsbCBmaWVsZHMgdG8gbW9kaWZ5IHRoZW0uXG5cdFx0JCggJyNjbWIyLW1ldGFib3gtY3RjdF8yX2ZpZWxkc19tZXRhYm94ICNjdXN0b21fZmllbGRzX2dyb3VwX3JlcGVhdCAuY21iLXJlcGVhdGFibGUtZ3JvdXBpbmcnICkuZWFjaCggZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7XG5cblx0XHRcdC8vIFNldCBzb21lIG9mIG91ciBoZWxwZXIgcGFyYW1hdGVycy5cblx0XHRcdHZhciAkZmllbGRQYXJlbnQgPSAkKCB0aGlzICkuZmluZCggJy5jbWItZmllbGQtbGlzdCcgKTtcblx0XHRcdHZhciAkYnV0dG9uICAgICAgID0gJCggJGZpZWxkUGFyZW50ICkuZmluZCggJy5jbWItcmVtb3ZlLWdyb3VwLXJvdycgKTtcblx0XHRcdHZhciAkcmVxdWlyZWQgICAgID0gJCggJGZpZWxkUGFyZW50ICkuZmluZCggJy5yZXF1aXJlZCBpbnB1dFt0eXBlPWNoZWNrYm94XScgKTtcblx0XHRcdHZhciAkcmVxdWlyZWRSb3cgID0gJHJlcXVpcmVkLmNsb3Nlc3QoICcuY21iLXJvdycgKTtcblx0XHRcdHZhciAkbWFwICAgICAgICAgID0gJCggJGZpZWxkUGFyZW50ICkuZmluZCggJy5tYXAgc2VsZWN0IG9wdGlvbjpzZWxlY3RlZCcgKTtcblx0XHRcdHZhciAkbWFwTmFtZSAgICAgID0gJG1hcC50ZXh0KCk7XG5cdFx0XHR2YXIgJGZpZWxkVGl0bGUgICA9ICQoIHRoaXMgKS5maW5kKCAnaDMnICk7XG5cdFx0XHR2YXIgJGxhYmVsRmllbGQgICA9ICQoIHRoaXMgKS5maW5kKCAnaW5wdXRbbmFtZSo9XCJfY3RjdF9maWVsZF9sYWJlbFwiXScgKTtcblx0XHRcdHZhciAkZGVzY0ZpZWxkICAgID0gJCggdGhpcyApLmZpbmQoICdpbnB1dFtuYW1lKj1cIl9jdGN0X2ZpZWxkX2Rlc2NcIl0nICk7XG5cblx0XHRcdC8vIFNldCBvdXIgZmllbGQgcm93IHRvIGJlIHRoZSBuYW1lIG9mIHRoZSBzZWxlY3RlZCBvcHRpb24uXG5cdFx0XHQkZmllbGRUaXRsZS50ZXh0KCAkbWFwTmFtZSApO1xuXG5cdFx0XHQvLyBJZiB3ZSBoYXZlIGEgYmxhbmsgZmllbGQgbGFiZWwsIHRoZW4gdXNlIHRoZSBuYW1lIG9mIHRoZSBmaWVsZCB0byBmaWxsIGl0IGluLlxuXHRcdFx0aWYgKCAwID09PSAkbGFiZWxGaWVsZC52YWwoKS5sZW5ndGggKSB7XG5cdFx0XHRcdCRsYWJlbEZpZWxkLnZhbCggJG1hcE5hbWUgKS5hZGRDbGFzcyggJ2N0Y3QtbGFiZWwtZmlsbGVkJyApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0JGxhYmVsRmllbGQuYWRkQ2xhc3MoICdjdGN0LWxhYmVsLWZpbGxlZCcgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgd2UgaGF2ZW4ndCB5ZXQgZm91bmQgYW4gZW1haWwgZmllbGQsIGFuZCB0aGlzIGlzIG91ciBlbWFpbCBmaWVsZC5cblx0XHRcdGlmICggISBmb3VuZEVtYWlsICYmICggJ2VtYWlsJyA9PT0gJCggJG1hcCApLnZhbCgpICkgKSB7XG5cblx0XHRcdFx0Ly8gU2V0IHRoYXQgd2UgZm91bmQgYW4gZW1haWwgZmllbGQuXG5cdFx0XHRcdGZvdW5kRW1haWwgPSB0cnVlO1xuXG5cdFx0XHRcdC8vIE1ha2UgaXQgcmVxdWlyZWQuXG5cdFx0XHRcdCRyZXF1aXJlZC5wcm9wKCAnY2hlY2tlZCcsIHRydWUgKTtcblxuXHRcdFx0XHQvLyBTZXQgaXQgdG8gYmUgJ2Rpc2FibGVkJy5cblx0XHRcdFx0JCggdmFsdWUgKS5maW5kKCAnc2VsZWN0JyApLmFkZENsYXNzKCAnZGlzYWJsZWQgY3RjdC1lbWFpbC1kaXNhYmxlZCcgKS5wcm9wKCAnZGlzYWJsZWQnLCB0cnVlICk7XG5cblx0XHRcdFx0Ly8gSGlkZSB0aGUgcmVxdWlyZWQgcm93LlxuXHRcdFx0XHQkcmVxdWlyZWRSb3cuaGlkZSgpO1xuXG5cdFx0XHRcdC8vIEhpZGUgdGhlIHJlbW92ZSByb3cgYnV0dG9uLlxuXHRcdFx0XHQkYnV0dG9uLmhpZGUoKTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHQvLyBWZXJpZnkgaXRzIG5vdCBkaXNhYmxlZC5cblx0XHRcdFx0JCggdmFsdWUgKS5maW5kKCAnc2VsZWN0JyApLnJlbW92ZUNsYXNzKCAnZGlzYWJsZWQgY3RjdC1lbWFpbC1kaXNhYmxlZCcgKS5wcm9wKCAnZGlzYWJsZWQnLCBmYWxzZSApO1xuXG5cdFx0XHRcdC8vIElmIHdlJ3JlIG5vdCBhbiBlbWFpbCBmaWVsZCwgcmVzaG93IHRoZSByZXF1aXJlZCBmaWVsZC5cblx0XHRcdFx0JHJlcXVpcmVkUm93LnNob3coKTtcblxuXHRcdFx0XHQvLyBhbmQgdGhlIHJlbW92ZSBidXR0b24uXG5cdFx0XHRcdCRidXR0b24uc2hvdygpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTZXQgdGhlIHBsYWNlaG9sZGVyIHRleHQgaWYgdGhlcmUncyBzb21ldGhpbmcgdG8gc2V0LlxuXHRcdFx0aWYgKCB3aW5kb3cuY3RjdF9hZG1pbl9wbGFjZWhvbGRlcnMgKSB7XG5cdFx0XHRcdHZhciBwbGFjZWhvbGRlciA9IHdpbmRvdy5jdGN0X2FkbWluX3BsYWNlaG9sZGVyc1sgJCggdmFsdWUgKS5maW5kKCAnc2VsZWN0JyApLnZhbCgpIF07XG5cblx0XHRcdFx0Ly8gSWYgd2UgaGF2ZSBhIHZhbGlkIHBsYWNlaG9sZGVyLCBkaXNwbGF5IGl0IG9yIHRyeSB0aGUgZmFsbGJhY2suXG5cdFx0XHRcdGlmICggcGxhY2Vob2xkZXIgJiYgcGxhY2Vob2xkZXIubGVuZ3RoICYmICRkZXNjRmllbGQubGVuZ3RoICkge1xuXHRcdFx0XHRcdCRkZXNjRmllbGQuYXR0ciggJ3BsYWNlaG9sZGVyJywgJ0V4YW1wbGU6ICcgKyBwbGFjZWhvbGRlciApO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCB3aW5kb3cuY3RjdF9hZG1pbl9wbGFjZWhvbGRlcnMuZGVmYXVsdCApIHtcblx0XHRcdFx0XHQkZGVzY0ZpZWxkLmF0dHIoICdwbGFjZWhvbGRlcicsIHdpbmRvdy5jdGN0X2FkbWluX3BsYWNlaG9sZGVycy5kZWZhdWx0ICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9ICk7XG5cdH07XG5cblx0LyoqXG5cdCAqIEdvIHRocm91Z2ggYWxsIGRyb3Bkb3ducywgYW5kIHJlbW92ZSB1c2VkIG9wdGlvbnMuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdHRoYXQucmVtb3ZlRHVwbGljYXRlTWFwcGluZ3MgPSAoKSA9PiB7XG5cblx0XHR2YXIgdXNlZE1hcHBpbmdzID0gW107XG5cdFx0dmFyIGRyb3Bkb3ducyAgICA9ICcjY21iMi1tZXRhYm94LWN0Y3RfMl9maWVsZHNfbWV0YWJveCAjY3VzdG9tX2ZpZWxkc19ncm91cF9yZXBlYXQgLmNtYi1yZXBlYXRhYmxlLWdyb3VwaW5nIHNlbGVjdCc7XG5cdFx0dmFyICRkcm9wZG93bnMgICA9ICQoIGRyb3Bkb3ducyApO1xuXG5cdFx0Ly8gRm9yIGVhY2ggZHJvcGRvd24sIGJ1aWxkIHVwIG91ciBhcnJheSBvZiB1c2VkIHZhbHVlcy5cblx0XHQkZHJvcGRvd25zLmVhY2goIGZ1bmN0aW9uKCBrZXksIHZhbHVlICkge1xuXHRcdFx0dXNlZE1hcHBpbmdzLnB1c2goICQoIHZhbHVlICkudmFsKCkgKTtcblx0XHR9ICk7XG5cblx0XHQvLyBSZS1zaG93IGFsbCB0aGUgY2hpbGRyZW4gb3B0aW9ucyB3ZSBtYXkgaGF2ZSBoaWRkZW4uXG5cdFx0JGRyb3Bkb3ducy5jaGlsZHJlbigpLnNob3coKTtcblxuXHRcdC8vIEZvciBlYWNoIG9mIG91ciBtYXBwaW5ncyB0aGF0IHdlIGFscmVhZHkgaGF2ZSwgcmVtb3ZlIHRoZW0gZnJvbSBhbGwgc2VsZWN0cy5cblx0XHR1c2VkTWFwcGluZ3MuZm9yRWFjaCggZnVuY3Rpb24oIHZhbHVlICkge1xuXG5cdFx0XHQvLyBCdXQgb25seSBkbyBpdCBpZiB0aGUgdmFsdWUgaXNuJ3Qgb25lIG9mIG91ciBjdXN0b20gb25lcy5cblx0XHRcdGlmICggKCAnY3VzdG9tX3RleHRfYXJlYScgIT09IHZhbHVlICkgJiYgKCAnY3VzdG9tJyAhPT0gdmFsdWUgKSApIHtcblxuXHRcdFx0XHQvLyBSZW1vdmUgYWxsIG9wdGlvbnMgZnJvbSBvdXIgZHJvcGRvd25zIHdpdGggdGhlIHZhbHVlLlxuXHRcdFx0XHQkKCBkcm9wZG93bnMgKyAnIG9wdGlvblt2YWx1ZT0nICsgdmFsdWUgKyAnXTpub3QoIDpzZWxlY3RlZCApJyApLmhpZGUoKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH07XG5cblx0JCggdGhhdC5pbml0ICk7XG5cbn0gKCB3aW5kb3csIGpRdWVyeSwgd2luZG93LkNUQ1RCdWlsZGVyICkgKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBRUE7Ozs7OztBQU1BO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTs7Ozs7Ozs7QUFNQTtBQUVBO0FBQ0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7O0FBTUE7QUFFQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBTUE7QUFDQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7QUFNQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7O0FBTUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7O0FBTUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-admin/builder.js\n");
108
 
109
  /***/ }),
110
 
@@ -115,7 +115,7 @@ eval("window.CTCTBuilder = {};\n\n(function (window, $, that) {\n /**\n * @co
115
  /*! no static exports found */
116
  /***/ (function(module, exports) {
117
 
118
- eval("window.CTCTClipboard = {};\n\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 * Cache DOM elements.\n *\n * @author Constant Contact\n * @since 1.11.0\n */\n\n\n app.cache = function () {\n app.$c = {\n window: $(window),\n copyshortcode: $('.ctct-shortcode-wrap')\n };\n };\n /**\n * Copy to clipboard click event.\n *\n * @param {object} e The clicked element.\n * @param {HTMLElement} input The input element.\n * @author Constant Contact\n * @since 1.11.0\n */\n\n\n app.copyClick = function (button, input) {\n if (!button || !input) {\n return;\n } // Select the input.\n\n\n input.select();\n input.setSelectionRange(0, 99999); // For mobile devices.\n // Copy the text inside the text field.\n\n document.execCommand(\"copy\");\n var reset = button.innerHTML;\n button.innerHTML = button.dataset.copied; // Reset button text.\n\n setTimeout(function () {\n button.innerHTML = reset;\n }, 3000);\n };\n /**\n * Attach callbacks to events.\n *\n * @author Constant Contact\n * @since 1.11.0\n */\n\n\n app.bindEvents = function () {\n // Add click event for copy buttons.\n if (app.$c.copyshortcode) {\n app.$c.copyshortcode.each(function (index, element) {\n var input = element.querySelector('input');\n var button = element.querySelector('button');\n\n if (input && button) {\n button.addEventListener('click', function (e) {\n e.preventDefault();\n app.copyClick(this, input);\n });\n }\n });\n }\n };\n\n app.init();\n})(window, jQuery, window.CTCTClipboard);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tYWRtaW4vY2xpcGJvYXJkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2pzL2N0Y3QtcGx1Z2luLWFkbWluL2NsaXBib2FyZC5qcz9jMDNjIl0sInNvdXJjZXNDb250ZW50IjpbIndpbmRvdy5DVENUQ2xpcGJvYXJkID0ge307XG5cbiggZnVuY3Rpb24oIHdpbmRvdywgJCwgYXBwICkge1xuXG5cdC8qKlxuXHQgKiBAY29uc3RydWN0b3Jcblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0IGFwcC5pbml0ID0gKCkgPT4ge1xuXHRcdGFwcC5jYWNoZSgpO1xuXHRcdGFwcC5iaW5kRXZlbnRzKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIENhY2hlIERPTSBlbGVtZW50cy5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSBORVhUXG5cdCAqL1xuXHQgYXBwLmNhY2hlID0gKCkgPT4ge1xuXHRcdGFwcC4kYyA9IHtcblx0XHRcdHdpbmRvdzogJCggd2luZG93ICksXG5cdFx0XHRjb3B5c2hvcnRjb2RlOiAkKCAnLmN0Y3Qtc2hvcnRjb2RlLXdyYXAnIClcblx0XHR9O1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBDb3B5IHRvIGNsaXBib2FyZCBjbGljayBldmVudC5cblx0ICpcblx0ICogQHBhcmFtIHtvYmplY3R9IGUgVGhlIGNsaWNrZWQgZWxlbWVudC5cblx0ICogQHBhcmFtIHtIVE1MRWxlbWVudH0gaW5wdXQgVGhlIGlucHV0IGVsZW1lbnQuXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgTkVYVFxuXHQgKi9cblx0YXBwLmNvcHlDbGljayA9IChidXR0b24sIGlucHV0KSA9PiB7XG5cblx0XHRpZighYnV0dG9uIHx8ICFpbnB1dCl7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gU2VsZWN0IHRoZSBpbnB1dC5cblx0XHRpbnB1dC5zZWxlY3QoKTtcblx0XHRpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgwLCA5OTk5OSk7IC8vIEZvciBtb2JpbGUgZGV2aWNlcy5cblx0IFxuXHRcdC8vIENvcHkgdGhlIHRleHQgaW5zaWRlIHRoZSB0ZXh0IGZpZWxkLlxuXHRcdGRvY3VtZW50LmV4ZWNDb21tYW5kKFwiY29weVwiKTtcblx0XHR2YXIgcmVzZXQgPSBidXR0b24uaW5uZXJIVE1MO1xuXHRcdGJ1dHRvbi5pbm5lckhUTUwgPSBidXR0b24uZGF0YXNldC5jb3BpZWQ7XG5cblx0XHQvLyBSZXNldCBidXR0b24gdGV4dC5cblx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XG5cdFx0XHRidXR0b24uaW5uZXJIVE1MID0gcmVzZXQ7XG5cdFx0fSwgMzAwMCk7XG5cblx0fVxuXG5cdC8qKlxuXHQgKiBBdHRhY2ggY2FsbGJhY2tzIHRvIGV2ZW50cy5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSBORVhUXG5cdCAqL1xuXHQgYXBwLmJpbmRFdmVudHMgPSAoKSA9PiB7XG5cblx0XHQvLyBBZGQgY2xpY2sgZXZlbnQgZm9yIGNvcHkgYnV0dG9ucy5cblx0XHRpZihhcHAuJGMuY29weXNob3J0Y29kZSl7XG5cdFx0XHRhcHAuJGMuY29weXNob3J0Y29kZS5lYWNoKGZ1bmN0aW9uKGluZGV4LCBlbGVtZW50KSB7XG5cdFx0XHRcdHZhciBpbnB1dCA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcblx0XHRcdFx0dmFyIGJ1dHRvbiA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcignYnV0dG9uJyk7XG5cdFx0XHRcdGlmKGlucHV0ICYmIGJ1dHRvbil7XG5cdFx0XHRcdFx0YnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oIGUgKXtcblx0XHRcdFx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0XHRcdGFwcC5jb3B5Q2xpY2soIHRoaXMsIGlucHV0KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHR9XG5cdH07XG5cblx0YXBwLmluaXQoKTtcblxufSAoIHdpbmRvdywgalF1ZXJ5LCB3aW5kb3cuQ1RDVENsaXBib2FyZCApICk7XG5cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBRUE7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBRUE7Ozs7Ozs7Ozs7QUFRQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTs7Ozs7Ozs7QUFNQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-admin/clipboard.js\n");
119
 
120
  /***/ }),
121
 
@@ -126,7 +126,7 @@ eval("window.CTCTClipboard = {};\n\n(function (window, $, app) {\n /**\n * @c
126
  /*! no static exports found */
127
  /***/ (function(module, exports) {
128
 
129
- eval("window.CTCTForms = {};\n\n(function (window, $, that) {\n /**\n * @constructor\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n that.init = function () {\n that.cache();\n that.bindEvents();\n };\n /**\n * Cache DOM elements.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n that.cache = function () {\n that.$c = {\n window: $(window),\n body: $('body'),\n disconnect: '.ctct-disconnect'\n };\n };\n /**\n * Attach callbacks to events.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n that.bindEvents = function () {\n $(that.$c.disconnect).on('click', function (e) {\n // eslint-disable-line no-unused-vars\n confirm(window.ctctTexts.disconnectconfirm);\n });\n };\n\n $(that.init);\n})(window, jQuery, window.CTCTForms);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tYWRtaW4vZm9ybXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tYWRtaW4vZm9ybXMuanM/YTEyZiJdLCJzb3VyY2VzQ29udGVudCI6WyJ3aW5kb3cuQ1RDVEZvcm1zID0ge307XG5cbiggZnVuY3Rpb24oIHdpbmRvdywgJCwgdGhhdCApIHtcblxuXHQvKipcblx0ICogQGNvbnN0cnVjdG9yXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdHRoYXQuaW5pdCA9ICgpID0+IHtcblx0XHR0aGF0LmNhY2hlKCk7XG5cdFx0dGhhdC5iaW5kRXZlbnRzKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIENhY2hlIERPTSBlbGVtZW50cy5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0dGhhdC5jYWNoZSA9ICgpID0+IHtcblx0XHR0aGF0LiRjID0ge1xuXHRcdFx0d2luZG93OiAkKCB3aW5kb3cgKSxcblx0XHRcdGJvZHk6ICQoICdib2R5JyApLFxuXHRcdFx0ZGlzY29ubmVjdDogJy5jdGN0LWRpc2Nvbm5lY3QnXG5cdFx0fTtcblx0fTtcblxuXHQvKipcblx0ICogQXR0YWNoIGNhbGxiYWNrcyB0byBldmVudHMuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdHRoYXQuYmluZEV2ZW50cyA9ICgpID0+IHtcblxuXHRcdCQoIHRoYXQuJGMuZGlzY29ubmVjdCApLm9uKCAnY2xpY2snLCAoIGUgKSA9PiB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcblx0XHRcdGNvbmZpcm0oIHdpbmRvdy5jdGN0VGV4dHMuZGlzY29ubmVjdGNvbmZpcm0gKTtcblx0XHR9ICk7XG5cdH07XG5cblx0JCggdGhhdC5pbml0ICk7XG5cbn0gKCB3aW5kb3csIGpRdWVyeSwgd2luZG93LkNUQ1RGb3JtcyApICk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBRUE7Ozs7Ozs7O0FBTUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-admin/forms.js\n");
130
 
131
  /***/ }),
132
 
@@ -149,7 +149,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _aja
149
  /*! no static exports found */
150
  /***/ (function(module, exports) {
151
 
152
- eval("window.CTCTModal = {};\n\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 * Cache DOM elements.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.cache = function () {\n app.$c = {\n window: $(window),\n modalSelector: $('.ctct-modal'),\n modalClose: $('.ctct-modal-close'),\n textareaModal: $('#ctct-custom-textarea-modal'),\n textareaLink: $('#ctct-open-textarea-info'),\n deleteLogLink: $('#deletelog')\n };\n };\n /**\n * Attach callbacks to events.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.bindEvents = function () {\n app.$c.modalClose.on('click', function () {\n app.$c.modalSelector.removeClass('ctct-modal-open');\n\n if (app.$c.modalSelector.hasClass('ctct-custom-textarea-modal')) {\n return;\n }\n\n $.ajax({\n type: 'post',\n dataType: 'json',\n url: window.ajaxurl,\n data: {\n action: 'ctct_dismiss_first_modal',\n 'ctct_is_dismissed': 'true'\n }\n });\n });\n app.$c.textareaLink.on('click', function () {\n app.$c.textareaModal.addClass('ctct-modal-open');\n });\n app.$c.deleteLogLink.on('click', function (event) {\n event.preventDefault(); // Get the link that was clicked on so we can redirect to it if the user confirms.\n\n var deleteLogLink = $(event.currentTarget).attr('href');\n $('#confirmdelete').dialog({\n resizable: false,\n height: 'auto',\n width: 400,\n modal: true,\n buttons: {\n 'Yes': function Yes() {\n // If the user confirms the action, redirect them to the deletion page.\n window.location.replace(deleteLogLink);\n },\n 'Cancel': function Cancel() {\n $('#confirmdelete').closest('.ui-dialog-content').dialog('close');\n }\n }\n });\n });\n };\n\n $(app.init);\n})(window, jQuery, window.CTCTModal);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tYWRtaW4vbW9kYWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tYWRtaW4vbW9kYWwuanM/N2RhZSJdLCJzb3VyY2VzQ29udGVudCI6WyJ3aW5kb3cuQ1RDVE1vZGFsID0ge307XG5cbiggZnVuY3Rpb24oIHdpbmRvdywgJCwgYXBwICkge1xuXG5cdC8qKlxuXHQgKiBAY29uc3RydWN0b3Jcblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLmluaXQgPSAoKSA9PiB7XG5cdFx0YXBwLmNhY2hlKCk7XG5cdFx0YXBwLmJpbmRFdmVudHMoKTtcblx0fTtcblxuXHQvKipcblx0ICogQ2FjaGUgRE9NIGVsZW1lbnRzLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqL1xuXHRhcHAuY2FjaGUgPSAoKSA9PiB7XG5cdFx0YXBwLiRjID0ge1xuXHRcdFx0d2luZG93OiAkKCB3aW5kb3cgKSxcblx0XHRcdG1vZGFsU2VsZWN0b3I6ICQoICcuY3RjdC1tb2RhbCcgKSxcblx0XHRcdG1vZGFsQ2xvc2U6ICQoICcuY3RjdC1tb2RhbC1jbG9zZScgKSxcblx0XHRcdHRleHRhcmVhTW9kYWw6ICQoICcjY3RjdC1jdXN0b20tdGV4dGFyZWEtbW9kYWwnICksXG5cdFx0XHR0ZXh0YXJlYUxpbms6ICQoICcjY3RjdC1vcGVuLXRleHRhcmVhLWluZm8nICksXG5cdFx0XHRkZWxldGVMb2dMaW5rOiAkKCAnI2RlbGV0ZWxvZycgKVxuXHRcdH07XG5cdH07XG5cblx0LyoqXG5cdCAqIEF0dGFjaCBjYWxsYmFja3MgdG8gZXZlbnRzLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqL1xuXHRhcHAuYmluZEV2ZW50cyA9ICgpID0+IHtcblxuXHRcdGFwcC4kYy5tb2RhbENsb3NlLm9uKCAnY2xpY2snLCAoKSA9PiB7XG5cblx0XHRcdGFwcC4kYy5tb2RhbFNlbGVjdG9yLnJlbW92ZUNsYXNzKCAnY3RjdC1tb2RhbC1vcGVuJyApO1xuXG5cdFx0XHRpZiAoIGFwcC4kYy5tb2RhbFNlbGVjdG9yLmhhc0NsYXNzKCAnY3RjdC1jdXN0b20tdGV4dGFyZWEtbW9kYWwnICkgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0JC5hamF4KCB7XG5cdFx0XHRcdHR5cGU6ICdwb3N0Jyxcblx0XHRcdFx0ZGF0YVR5cGU6ICdqc29uJyxcblx0XHRcdFx0dXJsOiB3aW5kb3cuYWpheHVybCxcblx0XHRcdFx0ZGF0YToge1xuXHRcdFx0XHRcdGFjdGlvbjogJ2N0Y3RfZGlzbWlzc19maXJzdF9tb2RhbCcsXG5cdFx0XHRcdFx0J2N0Y3RfaXNfZGlzbWlzc2VkJzogJ3RydWUnXG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9ICk7XG5cblx0XHRhcHAuJGMudGV4dGFyZWFMaW5rLm9uKCAnY2xpY2snLCAoKSA9PiB7XG5cdFx0XHRhcHAuJGMudGV4dGFyZWFNb2RhbC5hZGRDbGFzcyggJ2N0Y3QtbW9kYWwtb3BlbicgKTtcblx0XHR9ICk7XG5cblx0XHRhcHAuJGMuZGVsZXRlTG9nTGluay5vbiggJ2NsaWNrJywgKCBldmVudCApID0+IHtcblx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cblx0XHRcdC8vIEdldCB0aGUgbGluayB0aGF0IHdhcyBjbGlja2VkIG9uIHNvIHdlIGNhbiByZWRpcmVjdCB0byBpdCBpZiB0aGUgdXNlciBjb25maXJtcy5cblx0XHRcdHZhciBkZWxldGVMb2dMaW5rID0gJCggZXZlbnQuY3VycmVudFRhcmdldCApLmF0dHIoICdocmVmJyApO1xuXG5cdFx0XHQkKCAnI2NvbmZpcm1kZWxldGUnICkuZGlhbG9nKCB7XG5cdFx0XHRcdHJlc2l6YWJsZTogZmFsc2UsXG5cdFx0XHRcdGhlaWdodDogJ2F1dG8nLFxuXHRcdFx0XHR3aWR0aDogNDAwLFxuXHRcdFx0XHRtb2RhbDogdHJ1ZSxcblx0XHRcdFx0YnV0dG9uczoge1xuXHRcdFx0XHRcdCdZZXMnOiAoKSA9PiB7XG5cblx0XHRcdFx0XHRcdC8vIElmIHRoZSB1c2VyIGNvbmZpcm1zIHRoZSBhY3Rpb24sIHJlZGlyZWN0IHRoZW0gdG8gdGhlIGRlbGV0aW9uIHBhZ2UuXG5cdFx0XHRcdFx0XHR3aW5kb3cubG9jYXRpb24ucmVwbGFjZSggZGVsZXRlTG9nTGluayApO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0J0NhbmNlbCc6ICgpID0+IHtcblx0XHRcdFx0XHRcdCQoICcjY29uZmlybWRlbGV0ZScgKS5jbG9zZXN0KCAnLnVpLWRpYWxvZy1jb250ZW50JyApLmRpYWxvZyggJ2Nsb3NlJyApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHRcdH0gKTtcblx0fTtcblxuXHQkKCBhcHAuaW5pdCApO1xuXG59ICggd2luZG93LCBqUXVlcnksIHdpbmRvdy5DVENUTW9kYWwgKSApO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFRQTtBQUVBOzs7Ozs7OztBQU1BO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSkE7QUFTQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQUxBO0FBZ0JBO0FBQ0E7QUFDQTtBQUNBO0FBRUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-admin/modal.js\n");
153
 
154
  /***/ }),
155
 
@@ -160,7 +160,7 @@ eval("window.CTCTModal = {};\n\n(function (window, $, app) {\n /**\n * @const
160
  /*! no static exports found */
161
  /***/ (function(module, exports) {
162
 
163
- eval("window.CTCTNewsletter = {};\n\n(function (window, $, app) {\n /**\n * @constructor\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n app.init = function () {\n app.submitNewsletter();\n };\n /**\n * Handle newsletter signups on the \"Connect\" and \"About\" pages.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.submitNewsletter = function () {\n // Connect page.\n $('.ctct-body #subscribe').on('submit', function (event) {\n event.preventDefault();\n var $ctctNewsWrapper = $('#subscribe .ctct-call-to-action');\n var ctctNewsForm = $('.ctct-body #subscribe')[0];\n var ctctEmailField = $('.ctct-call-to-action input[type=\"text\"]')[0];\n var subscribeEndpoint = event.target.action;\n\n if (true === ctctEmailField.validity.valid) {\n $('<iframe>', {\n 'src': subscribeEndpoint + '?' + $(ctctNewsForm).serialize(),\n 'height': 0,\n 'width': 0,\n 'style': 'display: none;'\n }).appendTo($ctctNewsWrapper);\n $('#subbutton').val('Thanks for signing up').css({\n 'background-color': 'rgb(1, 128, 0)',\n 'color': 'rgb(255,255,255)'\n });\n $('#subscribe .ctct-call-to-action-text').css({\n 'width': '70%'\n });\n } else {\n $('#subbutton').val('Error occurred');\n }\n }); // About page.\n\n $('.ctct-section #subscribe').on('submit', function (event) {\n event.preventDefault();\n var $ctctNewsWrapper = $('.section-marketing-tips');\n var ctctNewsForm = $('.ctct-section #subscribe')[0];\n var ctctEmailField = $('.ctct-section #subscribe input[type=\"text\"]')[0];\n var subscribeEndpoint = event.target.action;\n\n if (true === ctctEmailField.validity.valid) {\n $('<iframe>', {\n 'src': subscribeEndpoint + '?' + $(ctctNewsForm).serialize(),\n 'height': 0,\n 'width': 0,\n 'style': 'display: none;'\n }).appendTo($ctctNewsWrapper);\n $('#subbutton').val('Thanks for signing up').css({\n 'background-color': 'rgb(1, 128, 0)'\n });\n } else {\n $('#subbutton').val('Error occurred');\n }\n });\n };\n\n $(app.init);\n})(window, jQuery, window.CTCTNewsletter);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tYWRtaW4vbmV3c2xldHRlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Fzc2V0cy9qcy9jdGN0LXBsdWdpbi1hZG1pbi9uZXdzbGV0dGVyLmpzP2UyODkiXSwic291cmNlc0NvbnRlbnQiOlsid2luZG93LkNUQ1ROZXdzbGV0dGVyID0ge307XG5cbiggZnVuY3Rpb24oIHdpbmRvdywgJCwgYXBwICkge1xuXG5cdC8qKlxuXHQgKiBAY29uc3RydWN0b3Jcblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLmluaXQgPSAoKSA9PiB7XG5cdFx0YXBwLnN1Ym1pdE5ld3NsZXR0ZXIoKTtcblx0fTtcblxuXHQvKipcblx0ICogSGFuZGxlIG5ld3NsZXR0ZXIgc2lnbnVwcyBvbiB0aGUgXCJDb25uZWN0XCIgYW5kIFwiQWJvdXRcIiBwYWdlcy5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLnN1Ym1pdE5ld3NsZXR0ZXIgPSAoKSA9PiB7XG5cblx0XHQvLyBDb25uZWN0IHBhZ2UuXG5cdFx0JCggJy5jdGN0LWJvZHkgI3N1YnNjcmliZScgKS5vbiggJ3N1Ym1pdCcsICggZXZlbnQgKSA9PiB7XG5cdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG5cdFx0XHR2YXIgJGN0Y3ROZXdzV3JhcHBlciAgPSAkKCAnI3N1YnNjcmliZSAuY3RjdC1jYWxsLXRvLWFjdGlvbicgKTtcblx0XHRcdHZhciBjdGN0TmV3c0Zvcm0gICAgICA9ICQoICcuY3RjdC1ib2R5ICNzdWJzY3JpYmUnIClbMF07XG5cdFx0XHR2YXIgY3RjdEVtYWlsRmllbGQgICAgPSAkKCAnLmN0Y3QtY2FsbC10by1hY3Rpb24gaW5wdXRbdHlwZT1cInRleHRcIl0nIClbMF07XG5cdFx0XHR2YXIgc3Vic2NyaWJlRW5kcG9pbnQgPSBldmVudC50YXJnZXQuYWN0aW9uO1xuXG5cdFx0XHRpZiAoIHRydWUgPT09IGN0Y3RFbWFpbEZpZWxkLnZhbGlkaXR5LnZhbGlkICkge1xuXHRcdFx0XHQkKCAnPGlmcmFtZT4nLCB7XG5cdFx0XHRcdFx0J3NyYyc6IHN1YnNjcmliZUVuZHBvaW50ICsgJz8nICsgJCggY3RjdE5ld3NGb3JtICkuc2VyaWFsaXplKCksXG5cdFx0XHRcdFx0J2hlaWdodCc6IDAsXG5cdFx0XHRcdFx0J3dpZHRoJzogMCxcblx0XHRcdFx0XHQnc3R5bGUnOiAnZGlzcGxheTogbm9uZTsnXG5cdFx0XHRcdH0gKS5hcHBlbmRUbyggJGN0Y3ROZXdzV3JhcHBlciApO1xuXG5cdFx0XHRcdCQoICcjc3ViYnV0dG9uJyApLnZhbCggJ1RoYW5rcyBmb3Igc2lnbmluZyB1cCcgKS5jc3MoIHsgJ2JhY2tncm91bmQtY29sb3InOiAncmdiKDEsIDEyOCwgMCknLCAnY29sb3InOiAncmdiKDI1NSwyNTUsMjU1KScgfSApO1xuXHRcdFx0XHQkKCAnI3N1YnNjcmliZSAuY3RjdC1jYWxsLXRvLWFjdGlvbi10ZXh0JyApLmNzcyggeyAnd2lkdGgnOiAnNzAlJyB9ICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQkKCAnI3N1YmJ1dHRvbicgKS52YWwoICdFcnJvciBvY2N1cnJlZCcgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHQvLyBBYm91dCBwYWdlLlxuXHRcdCQoICcuY3RjdC1zZWN0aW9uICNzdWJzY3JpYmUnICkub24oICdzdWJtaXQnLCAoIGV2ZW50ICkgPT4ge1xuXHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuXHRcdFx0dmFyICRjdGN0TmV3c1dyYXBwZXIgID0gJCggJy5zZWN0aW9uLW1hcmtldGluZy10aXBzJyApO1xuXHRcdFx0dmFyIGN0Y3ROZXdzRm9ybSAgICAgID0gJCggJy5jdGN0LXNlY3Rpb24gI3N1YnNjcmliZScgKVswXTtcblx0XHRcdHZhciBjdGN0RW1haWxGaWVsZCAgICA9ICQoICcuY3RjdC1zZWN0aW9uICNzdWJzY3JpYmUgaW5wdXRbdHlwZT1cInRleHRcIl0nIClbMF07XG5cdFx0XHR2YXIgc3Vic2NyaWJlRW5kcG9pbnQgPSBldmVudC50YXJnZXQuYWN0aW9uO1xuXG5cdFx0XHRpZiAoIHRydWUgPT09IGN0Y3RFbWFpbEZpZWxkLnZhbGlkaXR5LnZhbGlkICkge1xuXHRcdFx0XHQkKCAnPGlmcmFtZT4nLCB7XG5cdFx0XHRcdFx0J3NyYyc6IHN1YnNjcmliZUVuZHBvaW50ICsgJz8nICsgJCggY3RjdE5ld3NGb3JtICkuc2VyaWFsaXplKCksXG5cdFx0XHRcdFx0J2hlaWdodCc6IDAsXG5cdFx0XHRcdFx0J3dpZHRoJzogMCxcblx0XHRcdFx0XHQnc3R5bGUnOiAnZGlzcGxheTogbm9uZTsnXG5cdFx0XHRcdH0gKS5hcHBlbmRUbyggJGN0Y3ROZXdzV3JhcHBlciApO1xuXHRcdFx0XHQkKCAnI3N1YmJ1dHRvbicgKS52YWwoICdUaGFua3MgZm9yIHNpZ25pbmcgdXAnICkuY3NzKCB7ICdiYWNrZ3JvdW5kLWNvbG9yJzogJ3JnYigxLCAxMjgsIDApJyB9ICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQkKCAnI3N1YmJ1dHRvbicgKS52YWwoICdFcnJvciBvY2N1cnJlZCcgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH07XG5cblx0JCggYXBwLmluaXQgKTtcblxufSAoIHdpbmRvdywgalF1ZXJ5LCB3aW5kb3cuQ1RDVE5ld3NsZXR0ZXIgKSApO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7O0FBTUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFPQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-admin/newsletter.js\n");
164
 
165
  /***/ }),
166
 
@@ -171,7 +171,7 @@ eval("window.CTCTNewsletter = {};\n\n(function (window, $, app) {\n /**\n * @
171
  /*! no static exports found */
172
  /***/ (function(module, exports) {
173
 
174
- eval("window.CTCT_OptIns = {};\n\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 * Cache DOM elements.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.cache = function () {\n app.$c = {\n optinNoConn: $('#cmb2-metabox-ctct_1_optin_metabox #_ctct_opt_in_not_connected'),\n list: $('#cmb2-metabox-ctct_0_list_metabox [name=\"_ctct_list[]\"]'),\n title: $('#cmb2-metabox-ctct_1_optin_metabox .cmb2-id-email-optin-title'),\n optin: $('#cmb2-metabox-ctct_1_optin_metabox .cmb2-id--ctct-opt-in'),\n instruct: $('#cmb2-metabox-ctct_1_optin_metabox .cmb2-id--ctct-opt-in-instructions')\n };\n };\n /**\n * Attach callbacks to events.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.bindEvents = function () {\n // Only fire show/hide if we have the normal checkbox.\n if (app.$c.optinNoConn.length) {\n // Fire once to get our loaded state set up.\n app.toggleNoConnectionFields(); // Bind to fire when needed.\n\n app.$c.optinNoConn.change(function () {\n app.toggleNoConnectionFields();\n });\n } // Only fire show/hide if we have the normal checkbox.\n\n\n if (app.$c.list.length) {\n // Fire once to get our loaded state set up.\n app.toggleConnectionFields(); // Bind to fire when needed.\n\n app.$c.list.change(function () {\n app.toggleConnectionFields();\n });\n }\n };\n /**\n * Toggle unnecessary, unconnected optin fields if we're not showing the opt-in.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.toggleNoConnectionFields = function () {\n if (app.$c.optinNoConn.prop('checked')) {\n app.$c.instruct.slideDown();\n } else {\n app.$c.instruct.slideUp();\n }\n };\n /**\n * Toggle unnecessary, *connected* optin fields if we're not showing the opt-in.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.toggleConnectionFields = function () {\n // If checked, show them, else hide it.\n if ('' !== app.$c.list.val()) {\n app.$c.title.slideDown();\n app.$c.optin.slideDown();\n app.$c.instruct.slideDown();\n } else {\n app.$c.title.slideUp();\n app.$c.optin.slideUp();\n app.$c.instruct.slideUp();\n }\n };\n\n $(app.init);\n})(window, jQuery, window.CTCT_OptIns);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tYWRtaW4vb3B0aW5zLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2pzL2N0Y3QtcGx1Z2luLWFkbWluL29wdGlucy5qcz9jNGM5Il0sInNvdXJjZXNDb250ZW50IjpbIndpbmRvdy5DVENUX09wdElucyA9IHt9O1xuXG4oIGZ1bmN0aW9uKCB3aW5kb3csICQsIGFwcCApIHtcblxuXHQvKipcblx0ICogQGNvbnN0cnVjdG9yXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdGFwcC5pbml0ID0gKCkgPT4ge1xuXHRcdGFwcC5jYWNoZSgpO1xuXHRcdGFwcC5iaW5kRXZlbnRzKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIENhY2hlIERPTSBlbGVtZW50cy5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLmNhY2hlID0gKCkgPT4ge1xuXHRcdGFwcC4kYyA9IHtcblx0XHRcdG9wdGluTm9Db25uOiAkKCAnI2NtYjItbWV0YWJveC1jdGN0XzFfb3B0aW5fbWV0YWJveCAjX2N0Y3Rfb3B0X2luX25vdF9jb25uZWN0ZWQnICksXG5cdFx0XHRsaXN0OiAkKCAnI2NtYjItbWV0YWJveC1jdGN0XzBfbGlzdF9tZXRhYm94IFtuYW1lPVwiX2N0Y3RfbGlzdFtdXCJdJyApLFxuXHRcdFx0dGl0bGU6ICQoICcjY21iMi1tZXRhYm94LWN0Y3RfMV9vcHRpbl9tZXRhYm94IC5jbWIyLWlkLWVtYWlsLW9wdGluLXRpdGxlJyApLFxuXHRcdFx0b3B0aW46ICQoICcjY21iMi1tZXRhYm94LWN0Y3RfMV9vcHRpbl9tZXRhYm94IC5jbWIyLWlkLS1jdGN0LW9wdC1pbicgKSxcblx0XHRcdGluc3RydWN0OiAkKCAnI2NtYjItbWV0YWJveC1jdGN0XzFfb3B0aW5fbWV0YWJveCAuY21iMi1pZC0tY3RjdC1vcHQtaW4taW5zdHJ1Y3Rpb25zJyApXG5cdFx0fTtcblx0fTtcblxuXHQvKipcblx0ICogQXR0YWNoIGNhbGxiYWNrcyB0byBldmVudHMuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdGFwcC5iaW5kRXZlbnRzID0gKCkgPT4ge1xuXG5cdFx0Ly8gT25seSBmaXJlIHNob3cvaGlkZSBpZiB3ZSBoYXZlIHRoZSBub3JtYWwgY2hlY2tib3guXG5cdFx0aWYgKCBhcHAuJGMub3B0aW5Ob0Nvbm4ubGVuZ3RoICkge1xuXG5cdFx0XHQvLyBGaXJlIG9uY2UgdG8gZ2V0IG91ciBsb2FkZWQgc3RhdGUgc2V0IHVwLlxuXHRcdFx0YXBwLnRvZ2dsZU5vQ29ubmVjdGlvbkZpZWxkcygpO1xuXG5cdFx0XHQvLyBCaW5kIHRvIGZpcmUgd2hlbiBuZWVkZWQuXG5cdFx0XHRhcHAuJGMub3B0aW5Ob0Nvbm4uY2hhbmdlKCAoKSA9PiB7XG5cdFx0XHRcdGFwcC50b2dnbGVOb0Nvbm5lY3Rpb25GaWVsZHMoKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHQvLyBPbmx5IGZpcmUgc2hvdy9oaWRlIGlmIHdlIGhhdmUgdGhlIG5vcm1hbCBjaGVja2JveC5cblx0XHRpZiAoIGFwcC4kYy5saXN0Lmxlbmd0aCApIHtcblxuXHRcdFx0Ly8gRmlyZSBvbmNlIHRvIGdldCBvdXIgbG9hZGVkIHN0YXRlIHNldCB1cC5cblx0XHRcdGFwcC50b2dnbGVDb25uZWN0aW9uRmllbGRzKCk7XG5cblx0XHRcdC8vIEJpbmQgdG8gZmlyZSB3aGVuIG5lZWRlZC5cblx0XHRcdGFwcC4kYy5saXN0LmNoYW5nZSggKCkgPT4ge1xuXHRcdFx0XHRhcHAudG9nZ2xlQ29ubmVjdGlvbkZpZWxkcygpO1xuXHRcdFx0fSApO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogVG9nZ2xlIHVubmVjZXNzYXJ5LCB1bmNvbm5lY3RlZCBvcHRpbiBmaWVsZHMgaWYgd2UncmUgbm90IHNob3dpbmcgdGhlIG9wdC1pbi5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLnRvZ2dsZU5vQ29ubmVjdGlvbkZpZWxkcyA9ICgpID0+IHtcblxuXHRcdGlmICggYXBwLiRjLm9wdGluTm9Db25uLnByb3AoICdjaGVja2VkJyApICkge1xuXHRcdFx0YXBwLiRjLmluc3RydWN0LnNsaWRlRG93bigpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhcHAuJGMuaW5zdHJ1Y3Quc2xpZGVVcCgpO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogIFRvZ2dsZSB1bm5lY2Vzc2FyeSwgKmNvbm5lY3RlZCogb3B0aW4gZmllbGRzIGlmIHdlJ3JlIG5vdCBzaG93aW5nIHRoZSBvcHQtaW4uXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdGFwcC50b2dnbGVDb25uZWN0aW9uRmllbGRzID0gKCkgPT4ge1xuXG5cdFx0Ly8gSWYgY2hlY2tlZCwgc2hvdyB0aGVtLCBlbHNlIGhpZGUgaXQuXG5cdFx0aWYgKCAnJyAhPT0gYXBwLiRjLmxpc3QudmFsKCkgKSB7XG5cdFx0XHRhcHAuJGMudGl0bGUuc2xpZGVEb3duKCk7XG5cdFx0XHRhcHAuJGMub3B0aW4uc2xpZGVEb3duKCk7XG5cdFx0XHRhcHAuJGMuaW5zdHJ1Y3Quc2xpZGVEb3duKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGFwcC4kYy50aXRsZS5zbGlkZVVwKCk7XG5cdFx0XHRhcHAuJGMub3B0aW4uc2xpZGVVcCgpO1xuXHRcdFx0YXBwLiRjLmluc3RydWN0LnNsaWRlVXAoKTtcblx0XHR9XG5cdH07XG5cblx0JCggYXBwLmluaXQgKTtcblxufSAoIHdpbmRvdywgalF1ZXJ5LCB3aW5kb3cuQ1RDVF9PcHRJbnMgKSApO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBT0E7QUFFQTs7Ozs7Ozs7QUFNQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7QUFNQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7OztBQU1BO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-admin/optins.js\n");
175
 
176
  /***/ }),
177
 
93
  /*! no static exports found */
94
  /***/ (function(module, exports) {
95
 
96
+ eval("window.CTCTAJAX = {};\n\n(function (window, $, that) {\n var _this = this;\n\n /**\n * @constructor\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n that.init = function () {\n // Trigger any field modifications we need to do.\n that.handleOptinAJAX();\n that.handleReviewAJAX();\n };\n /**\n * We need to manipulate our form builder a bit. We do this here.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n that.handleOptinAJAX = function () {\n // eslint-disable-next-line no-unused-vars\n $('#ctct_admin_notice_tracking_optin').on('click', function (e) {\n var ctctOptinAjax = {\n 'action': 'constant_contact_optin_ajax_handler',\n 'optin': $(_this).is(':checked') ? 'on' : 'off'\n };\n $.ajax({\n url: window.ajaxurl,\n data: ctctOptinAjax,\n dataType: 'json',\n success: function success(response) {\n $(document.getElementById('ctct-admin-notice-optin_admin_notice')).remove();\n },\n error: function error(x, t, m) {\n if (window.console) {\n console.log([t, m]);\n }\n }\n });\n $('#ctct-privacy-modal').toggleClass('ctct-modal-open');\n }); // Opens the privacy modal once clicking on the checkbox to opt in via the admin notice.\n // eslint-disable-next-line no-unused-vars\n\n $('#ctct-connect-ga-optin a').on('click', function (e) {\n var ctctOptinAjax = {\n 'action': 'constant_contact_optin_ajax_handler',\n 'optin': $(_this).attr('data-allow')\n };\n $.ajax({\n url: window.ajaxurl,\n data: ctctOptinAjax,\n dataType: 'json',\n success: function success(response) {\n // eslint-disable-line no-unused-vars\n $('.ctct-connected-opt-in').hide();\n },\n error: function error(x, t, m) {\n if (window.console) {\n console.log([t, m]); // eslint-disable-line no-console\n }\n }\n });\n }); // eslint-disable-next-line no-unused-vars\n\n $('#_ctct_data_tracking').on('click', function (e) {\n $('#ctct-privacy-modal').toggleClass('ctct-modal-open');\n }); // Unchecks the value if they have closed the privacy modal without agreeing/disagreeing.\n // eslint-disable-next-line no-unused-vars\n\n $('.ctct-modal-close').on('click', function (e) {\n var $checkbox = $('#_ctct_data_tracking');\n\n if ($checkbox.is(':checked')) {\n $checkbox.attr('checked', false);\n }\n }); // Handle the agreeing or disagreeing regarding privacy modal.\n // eslint-disable-next-line no-unused-vars\n\n $('#ctct-modal-footer-privacy a').on('click', function (e) {\n var ctctPrivacyAjax = {\n 'action': 'constant_contact_privacy_ajax_handler',\n 'privacy_agree': $(_this).attr('data-agree')\n };\n $.ajax({\n url: window.ajaxurl,\n data: ctctPrivacyAjax,\n dataType: 'json',\n success: function success(response) {\n // eslint-disable-line no-unused-vars\n $('#ctct-privacy-modal').toggleClass('ctct-modal-open');\n\n if ('false' === ctctPrivacyAjax.privacy_agree) {\n var $checkbox = $('#_ctct_data_tracking');\n\n if ($checkbox.is(':checked')) {\n $checkbox.attr('checked', false);\n }\n }\n },\n error: function error(x, t, m) {\n if (window.console) {\n console.log([t, m]); // eslint-disable-line no-console\n }\n }\n });\n });\n }; // Handle saving the decision regarding the review prompt admin notice.\n\n\n that.handleReviewAJAX = function () {\n $('#ctct-admin-notice-review_request').on('click', 'a', function (e) {\n var ctctAction = 'dismissed';\n\n if ($(_this).hasClass('ctct-review')) {\n ctctAction = 'reviewed';\n }\n\n var ctctReviewAjax = {\n 'action': 'constant_contact_review_ajax_handler',\n 'ctct-review-action': ctctAction\n };\n $.ajax({\n url: window.ajaxurl,\n data: ctctReviewAjax,\n dataType: 'json',\n success: function success(resp) {\n if (window.console) {\n console.log(resp); // eslint-disable-line no-console\n }\n\n e.preventDefault();\n $('#ctct-admin-notice-review_request').hide();\n },\n error: function error(x, t, m) {\n if (window.console) {\n console.log([t, m]); // eslint-disable-line no-console\n }\n }\n });\n });\n };\n\n $(that.init);\n})(window, jQuery, window.CTCTAJAX);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tYWRtaW4vYWpheC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Fzc2V0cy9qcy9jdGN0LXBsdWdpbi1hZG1pbi9hamF4LmpzPzhlOTQiXSwic291cmNlc0NvbnRlbnQiOlsid2luZG93LkNUQ1RBSkFYID0ge307XG5cbiggZnVuY3Rpb24oIHdpbmRvdywgJCwgdGhhdCApIHtcblxuXHQvKipcblx0ICogQGNvbnN0cnVjdG9yXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdHRoYXQuaW5pdCA9ICgpID0+IHtcblxuXHRcdC8vIFRyaWdnZXIgYW55IGZpZWxkIG1vZGlmaWNhdGlvbnMgd2UgbmVlZCB0byBkby5cblx0XHR0aGF0LmhhbmRsZU9wdGluQUpBWCgpO1xuXHRcdHRoYXQuaGFuZGxlUmV2aWV3QUpBWCgpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBXZSBuZWVkIHRvIG1hbmlwdWxhdGUgb3VyIGZvcm0gYnVpbGRlciBhIGJpdC4gV2UgZG8gdGhpcyBoZXJlLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqL1xuXHR0aGF0LmhhbmRsZU9wdGluQUpBWCA9ICgpID0+IHtcblxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuXHRcdCQoICcjY3RjdF9hZG1pbl9ub3RpY2VfdHJhY2tpbmdfb3B0aW4nICkub24oICdjbGljaycsICggZSApID0+IHtcblxuXHRcdFx0dmFyIGN0Y3RPcHRpbkFqYXggPSB7XG5cdFx0XHRcdCdhY3Rpb24nOiAnY29uc3RhbnRfY29udGFjdF9vcHRpbl9hamF4X2hhbmRsZXInLFxuXHRcdFx0XHQnb3B0aW4nOiAoICQoIHRoaXMgKS5pcyggJzpjaGVja2VkJyApICkgPyAnb24nIDogJ29mZidcblx0XHRcdH07XG5cblx0XHRcdCQuYWpheCgge1xuXHRcdFx0XHR1cmw6IHdpbmRvdy5hamF4dXJsLFxuXHRcdFx0XHRkYXRhOiBjdGN0T3B0aW5BamF4LFxuXHRcdFx0XHRkYXRhVHlwZTogJ2pzb24nLFxuXHRcdFx0XHRzdWNjZXNzOiAoIHJlc3BvbnNlICkgPT4ge1xuXHRcdFx0XHRcdCQoIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAnY3RjdC1hZG1pbi1ub3RpY2Utb3B0aW5fYWRtaW5fbm90aWNlJyApICkucmVtb3ZlKCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGVycm9yOiAoIHgsIHQsIG0gKSA9PiB7XG5cdFx0XHRcdFx0aWYgKCB3aW5kb3cuY29uc29sZSApIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCBbIHQsIG0gXSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXG5cdFx0XHQkKCAnI2N0Y3QtcHJpdmFjeS1tb2RhbCcgKS50b2dnbGVDbGFzcyggJ2N0Y3QtbW9kYWwtb3BlbicgKTtcblx0XHR9ICk7XG5cblx0XHQvLyBPcGVucyB0aGUgcHJpdmFjeSBtb2RhbCBvbmNlIGNsaWNraW5nIG9uIHRoZSBjaGVja2JveCB0byBvcHQgaW4gdmlhIHRoZSBhZG1pbiBub3RpY2UuXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG5cdFx0JCggJyNjdGN0LWNvbm5lY3QtZ2Etb3B0aW4gYScgKS5vbiggJ2NsaWNrJywgKCBlICkgPT4ge1xuXHRcdFx0dmFyIGN0Y3RPcHRpbkFqYXggPSB7XG5cdFx0XHRcdCdhY3Rpb24nOiAnY29uc3RhbnRfY29udGFjdF9vcHRpbl9hamF4X2hhbmRsZXInLFxuXHRcdFx0XHQnb3B0aW4nOiAkKCB0aGlzICkuYXR0ciggJ2RhdGEtYWxsb3cnIClcblx0XHRcdH07XG5cblx0XHRcdCQuYWpheCgge1xuXHRcdFx0XHR1cmw6IHdpbmRvdy5hamF4dXJsLFxuXHRcdFx0XHRkYXRhOiBjdGN0T3B0aW5BamF4LFxuXHRcdFx0XHRkYXRhVHlwZTogJ2pzb24nLFxuXHRcdFx0XHRzdWNjZXNzOiAoIHJlc3BvbnNlICkgPT4geyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG5cdFx0XHRcdFx0JCggJy5jdGN0LWNvbm5lY3RlZC1vcHQtaW4nICkuaGlkZSgpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRlcnJvcjogKCB4LCB0LCBtICkgPT4ge1xuXHRcdFx0XHRcdGlmICggd2luZG93LmNvbnNvbGUgKSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyggWyB0LCBtIF0gKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fSApO1xuXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG5cdFx0JCggJyNfY3RjdF9kYXRhX3RyYWNraW5nJyApLm9uKCAnY2xpY2snLCAoIGUgKSA9PiB7XG5cdFx0XHQkKCAnI2N0Y3QtcHJpdmFjeS1tb2RhbCcgKS50b2dnbGVDbGFzcyggJ2N0Y3QtbW9kYWwtb3BlbicgKTtcblx0XHR9ICk7XG5cblx0XHQvLyBVbmNoZWNrcyB0aGUgdmFsdWUgaWYgdGhleSBoYXZlIGNsb3NlZCB0aGUgcHJpdmFjeSBtb2RhbCB3aXRob3V0IGFncmVlaW5nL2Rpc2FncmVlaW5nLlxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuXHRcdCQoICcuY3RjdC1tb2RhbC1jbG9zZScgKS5vbiggJ2NsaWNrJywgKCBlICkgPT4ge1xuXHRcdFx0dmFyICRjaGVja2JveCA9ICQoICcjX2N0Y3RfZGF0YV90cmFja2luZycgKTtcblx0XHRcdGlmICggJGNoZWNrYm94LmlzKCAnOmNoZWNrZWQnICkgKSB7XG5cdFx0XHRcdCRjaGVja2JveC5hdHRyKCAnY2hlY2tlZCcsIGZhbHNlICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdFx0Ly8gSGFuZGxlIHRoZSBhZ3JlZWluZyBvciBkaXNhZ3JlZWluZyByZWdhcmRpbmcgcHJpdmFjeSBtb2RhbC5cblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcblx0XHQkKCAnI2N0Y3QtbW9kYWwtZm9vdGVyLXByaXZhY3kgYScgKS5vbiggJ2NsaWNrJywgKCBlICkgPT4ge1xuXHRcdFx0dmFyIGN0Y3RQcml2YWN5QWpheCA9IHtcblx0XHRcdFx0J2FjdGlvbic6ICdjb25zdGFudF9jb250YWN0X3ByaXZhY3lfYWpheF9oYW5kbGVyJyxcblx0XHRcdFx0J3ByaXZhY3lfYWdyZWUnOiAkKCB0aGlzICkuYXR0ciggJ2RhdGEtYWdyZWUnIClcblx0XHRcdH07XG5cblx0XHRcdCQuYWpheCgge1xuXHRcdFx0XHR1cmw6IHdpbmRvdy5hamF4dXJsLFxuXHRcdFx0XHRkYXRhOiBjdGN0UHJpdmFjeUFqYXgsXG5cdFx0XHRcdGRhdGFUeXBlOiAnanNvbicsXG5cdFx0XHRcdHN1Y2Nlc3M6ICggcmVzcG9uc2UgKSA9PiB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcblx0XHRcdFx0XHQkKCAnI2N0Y3QtcHJpdmFjeS1tb2RhbCcgKS50b2dnbGVDbGFzcyggJ2N0Y3QtbW9kYWwtb3BlbicgKTtcblx0XHRcdFx0XHRpZiAoICdmYWxzZScgPT09IGN0Y3RQcml2YWN5QWpheC5wcml2YWN5X2FncmVlICkge1xuXHRcdFx0XHRcdFx0dmFyICRjaGVja2JveCA9ICQoICcjX2N0Y3RfZGF0YV90cmFja2luZycgKTtcblx0XHRcdFx0XHRcdGlmICggJGNoZWNrYm94LmlzKCAnOmNoZWNrZWQnICkgKSB7XG5cdFx0XHRcdFx0XHRcdCRjaGVja2JveC5hdHRyKCAnY2hlY2tlZCcsIGZhbHNlICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRlcnJvcjogKCB4LCB0LCBtICkgPT4ge1xuXHRcdFx0XHRcdGlmICggd2luZG93LmNvbnNvbGUgKSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyggWyB0LCBtIF0gKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fSApO1xuXHR9O1xuXG5cdC8vIEhhbmRsZSBzYXZpbmcgdGhlIGRlY2lzaW9uIHJlZ2FyZGluZyB0aGUgcmV2aWV3IHByb21wdCBhZG1pbiBub3RpY2UuXG5cdHRoYXQuaGFuZGxlUmV2aWV3QUpBWCA9ICgpID0+IHtcblx0XHQkKCAnI2N0Y3QtYWRtaW4tbm90aWNlLXJldmlld19yZXF1ZXN0JyApLm9uKCAnY2xpY2snLCAnYScsICggZSApID0+IHtcblxuXHRcdFx0dmFyIGN0Y3RBY3Rpb24gPSAnZGlzbWlzc2VkJztcblxuXHRcdFx0aWYgKCAkKCB0aGlzICkuaGFzQ2xhc3MoICdjdGN0LXJldmlldycgKSApIHtcblx0XHRcdFx0Y3RjdEFjdGlvbiA9ICdyZXZpZXdlZCc7XG5cdFx0XHR9XG5cblx0XHRcdHZhciBjdGN0UmV2aWV3QWpheCA9IHtcblx0XHRcdFx0J2FjdGlvbic6ICdjb25zdGFudF9jb250YWN0X3Jldmlld19hamF4X2hhbmRsZXInLFxuXHRcdFx0XHQnY3RjdC1yZXZpZXctYWN0aW9uJzogY3RjdEFjdGlvblxuXHRcdFx0fTtcblxuXHRcdFx0JC5hamF4KCB7XG5cdFx0XHRcdHVybDogd2luZG93LmFqYXh1cmwsXG5cdFx0XHRcdGRhdGE6IGN0Y3RSZXZpZXdBamF4LFxuXHRcdFx0XHRkYXRhVHlwZTogJ2pzb24nLFxuXHRcdFx0XHRzdWNjZXNzOiAoIHJlc3AgKSA9PiB7XG5cdFx0XHRcdFx0aWYgKCB3aW5kb3cuY29uc29sZSApIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCByZXNwICk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFx0JCggJyNjdGN0LWFkbWluLW5vdGljZS1yZXZpZXdfcmVxdWVzdCcgKS5oaWRlKCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGVycm9yOiAoIHgsIHQsIG0gKSA9PiB7XG5cdFx0XHRcdFx0aWYgKCB3aW5kb3cuY29uc29sZSApIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCBbIHQsIG0gXSApOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9ICk7XG5cdH07XG5cblx0JCggdGhhdC5pbml0ICk7XG5cbn0gKCB3aW5kb3csIGpRdWVyeSwgd2luZG93LkNUQ1RBSkFYICkgKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFYQTtBQWNBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBWEE7QUFhQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFqQkE7QUFtQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBZkE7QUFpQkE7QUFDQTtBQUNBO0FBQ0E7QUFFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-admin/ajax.js\n");
97
 
98
  /***/ }),
99
 
104
  /*! no static exports found */
105
  /***/ (function(module, exports) {
106
 
107
+ eval("window.CTCTBuilder = {};\n\n(function (window, $, that) {\n /**\n * @constructor\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n that.init = function () {\n // If we do actually have an email field set, then remove our error.\n if ($('#cmb2-metabox-ctct_2_fields_metabox option[value=\"email\"]:selected').length) {\n $('#ctct-no-email-error').remove();\n } // Cache it all.\n\n\n that.cache(); // Bind our events.\n\n that.bindEvents(); // Bind our select dropdown events.\n\n that.selectBinds(); // Trigger any field modifications we need to do.\n\n that.modifyFields(); // Make description non-draggable, so we don't run into weird cmb2 issues.\n\n $('#ctct_0_description_metabox h2.hndle').removeClass('ui-sortable-handle, hndle'); // Inject our new labels for the up/down CMB2 buttons, so they can be properly localized.\n // Because we're using :after, we can't use .css() to do this, we need to inject a style tag.\n\n $('head').append('<style> #cmb2-metabox-ctct_2_fields_metabox a.move-up::after { content: \"' + window.ctctTexts.move_up + '\" } #cmb2-metabox-ctct_2_fields_metabox a.move-down::after { content: \"' + window.ctctTexts.move_down + '\" }</style>');\n };\n /**\n * Cache DOM elements.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n that.cache = function () {\n that.$c = {\n window: $(window),\n body: $('body')\n };\n that.isLeaveWarningBound = false;\n }; // Triggers our leave warning if we modify things in the form.\n\n\n that.bindLeaveWarning = function () {\n // Don't double-bind it.\n if (!that.isLeaveWarningBound) {\n // Bind our error that displays before leaving page.\n $(window).bind('beforeunload', function () {\n return window.ctctTexts.leavewarning;\n }); // Save our state.\n\n that.isLeaveWarningBound = true;\n }\n };\n /**\n * Removes our binding of our leave warning.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n that.unbindLeaveWarning = function () {\n $(window).unbind('beforeunload');\n };\n /**\n * Attach callbacks to events.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n that.bindEvents = function () {\n $('#post').submit(function () {\n // Make sure our email dropdown reverts from disbled, as CMB2 doesn't save those values.\n $('.ctct-email-disabled').removeClass('disabled').prop('disabled', false);\n that.unbindLeaveWarning();\n });\n $('.cmb2-wrap input, .cmb2-wrap textarea').on('input', function () {\n if ('undefined' !== typeof tinyMCE) {\n that.bindLeaveWarning();\n }\n }); // Disable email options on row change trigger.\n\n $(document).on('cmb2_shift_rows_complete', function () {\n that.modifyFields();\n that.bindLeaveWarning();\n that.removeDuplicateMappings();\n }); // If we get a row added, then do our stuff.\n\n $(document).on('cmb2_add_row', function (newRow) {\n // eslint-disable-line no-unused-vars\n // Automatically set new rows to be 'custom' field type.\n $('#custom_fields_group_repeat .postbox').last().find('.map select').val('none');\n that.modifyFields();\n that.selectBinds();\n that.removeDuplicateMappings();\n });\n that.removeDuplicateMappings();\n $('#ctct-reset-css').on('click', function (event) {\n event.preventDefault();\n var selectFields = ['#_ctct_form_description_font_size', '#_ctct_form_submit_button_font_size', '#_ctct_form_label_placement'];\n var textFields = ['#_ctct_form_padding_top', '#_ctct_form_padding_bottom', '#_ctct_form_padding_left', '#_ctct_form_padding_right', '#_ctct_input_custom_classes']; // Reset color pickers.\n\n $('.wp-picker-clear').each(function () {\n $(this).click();\n });\n\n for (var i = selectFields.length; i--;) {\n var firstOption = $(selectFields[i]).children('option').first();\n $(selectFields[i]).val(firstOption.val());\n }\n\n for (var i = textFields.length; i--;) {\n $(textFields[i]).val('');\n }\n });\n };\n /**\n * When .cmb2_select <selects> get changed, do some actions.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n that.selectBinds = function () {\n // For each fields select.\n $('#cmb2-metabox-ctct_2_fields_metabox .cmb2_select').change(function () {\n // Modify our fields.\n that.modifyFields(); // Don't allow duplicate mappings in form.\n\n that.removeDuplicateMappings(); // Bind our leave warning.\n\n that.bindLeaveWarning();\n });\n };\n /**\n * We need to manipulate our form builder a bit. We do this here.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n that.modifyFields = function () {\n // Set that we haven't found an email.\n var foundEmail = false; // Loop through all fields to modify them.\n\n $('#cmb2-metabox-ctct_2_fields_metabox #custom_fields_group_repeat .cmb-repeatable-grouping').each(function (key, value) {\n // Set some of our helper paramaters.\n var $fieldParent = $(this).find('.cmb-field-list');\n var $button = $($fieldParent).find('.cmb-remove-group-row');\n var $required = $($fieldParent).find('.required input[type=checkbox]');\n var $requiredRow = $required.closest('.cmb-row');\n var $map = $($fieldParent).find('.map select option:selected');\n var $mapName = $map.text();\n var $fieldTitle = $(this).find('h3');\n var $labelField = $(this).find('input[name*=\"_ctct_field_label\"]');\n var $descField = $(this).find('input[name*=\"_ctct_field_desc\"]'); // Set our field row to be the name of the selected option.\n\n $fieldTitle.text($mapName); // If we have a blank field label, then use the name of the field to fill it in.\n\n if (0 === $labelField.val().length) {\n $labelField.val($mapName).addClass('ctct-label-filled');\n } else {\n $labelField.addClass('ctct-label-filled');\n } // If we haven't yet found an email field, and this is our email field.\n\n\n if (!foundEmail && 'email' === $($map).val()) {\n // Set that we found an email field.\n foundEmail = true; // Make it required.\n\n $required.prop('checked', true); // Set it to be 'disabled'.\n\n $(value).find('select').addClass('disabled ctct-email-disabled').prop('disabled', true); // Hide the required row.\n\n $requiredRow.hide(); // Hide the remove row button.\n\n $button.hide();\n } else {\n // Verify its not disabled.\n $(value).find('select').removeClass('disabled ctct-email-disabled').prop('disabled', false); // If we're not an email field, reshow the required field.\n\n $requiredRow.show(); // and the remove button.\n\n $button.show();\n } // Set the placeholder text if there's something to set.\n\n\n if (window.ctct_admin_placeholders) {\n var placeholder = window.ctct_admin_placeholders[$(value).find('select').val()]; // If we have a valid placeholder, display it or try the fallback.\n\n if (placeholder && placeholder.length && $descField.length) {\n $descField.attr('placeholder', 'Example: ' + placeholder);\n } else if (window.ctct_admin_placeholders.default) {\n $descField.attr('placeholder', window.ctct_admin_placeholders.default);\n }\n }\n });\n };\n /**\n * Go through all dropdowns, and remove used options.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n that.removeDuplicateMappings = function () {\n var usedMappings = [];\n var dropdowns = '#cmb2-metabox-ctct_2_fields_metabox #custom_fields_group_repeat .cmb-repeatable-grouping select';\n var $dropdowns = $(dropdowns); // For each dropdown, build up our array of used values.\n\n $dropdowns.each(function (key, value) {\n usedMappings.push($(value).val());\n }); // Re-show all the children options we may have hidden.\n\n $dropdowns.children().show(); // For each of our mappings that we already have, remove them from all selects.\n\n usedMappings.forEach(function (value) {\n // But only do it if the value isn't one of our custom ones.\n if ('custom_text_area' !== value && 'custom' !== value) {\n // Remove all options from our dropdowns with the value.\n $(dropdowns + ' option[value=' + value + ']:not( :selected )').hide();\n }\n });\n };\n\n $(that.init);\n})(window, jQuery, window.CTCTBuilder);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tYWRtaW4vYnVpbGRlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Fzc2V0cy9qcy9jdGN0LXBsdWdpbi1hZG1pbi9idWlsZGVyLmpzPzlhZmMiXSwic291cmNlc0NvbnRlbnQiOlsid2luZG93LkNUQ1RCdWlsZGVyID0ge307XG5cbiggZnVuY3Rpb24oIHdpbmRvdywgJCwgdGhhdCApIHtcblxuXHQvKipcblx0ICogQGNvbnN0cnVjdG9yXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdHRoYXQuaW5pdCA9ICgpID0+IHtcblxuXHRcdC8vIElmIHdlIGRvIGFjdHVhbGx5IGhhdmUgYW4gZW1haWwgZmllbGQgc2V0LCB0aGVuIHJlbW92ZSBvdXIgZXJyb3IuXG5cdFx0aWYgKCAkKCAnI2NtYjItbWV0YWJveC1jdGN0XzJfZmllbGRzX21ldGFib3ggb3B0aW9uW3ZhbHVlPVwiZW1haWxcIl06c2VsZWN0ZWQnICkubGVuZ3RoICkge1xuXHRcdFx0JCggJyNjdGN0LW5vLWVtYWlsLWVycm9yJyApLnJlbW92ZSgpO1xuXHRcdH1cblxuXHRcdC8vIENhY2hlIGl0IGFsbC5cblx0XHR0aGF0LmNhY2hlKCk7XG5cblx0XHQvLyBCaW5kIG91ciBldmVudHMuXG5cdFx0dGhhdC5iaW5kRXZlbnRzKCk7XG5cblx0XHQvLyBCaW5kIG91ciBzZWxlY3QgZHJvcGRvd24gZXZlbnRzLlxuXHRcdHRoYXQuc2VsZWN0QmluZHMoKTtcblxuXHRcdC8vIFRyaWdnZXIgYW55IGZpZWxkIG1vZGlmaWNhdGlvbnMgd2UgbmVlZCB0byBkby5cblx0XHR0aGF0Lm1vZGlmeUZpZWxkcygpO1xuXG5cdFx0Ly8gTWFrZSBkZXNjcmlwdGlvbiBub24tZHJhZ2dhYmxlLCBzbyB3ZSBkb24ndCBydW4gaW50byB3ZWlyZCBjbWIyIGlzc3Vlcy5cblx0XHQkKCAnI2N0Y3RfMF9kZXNjcmlwdGlvbl9tZXRhYm94IGgyLmhuZGxlJyApLnJlbW92ZUNsYXNzKCAndWktc29ydGFibGUtaGFuZGxlLCBobmRsZScgKTtcblxuXHRcdC8vIEluamVjdCBvdXIgbmV3IGxhYmVscyBmb3IgdGhlIHVwL2Rvd24gQ01CMiBidXR0b25zLCBzbyB0aGV5IGNhbiBiZSBwcm9wZXJseSBsb2NhbGl6ZWQuXG5cdFx0Ly8gQmVjYXVzZSB3ZSdyZSB1c2luZyA6YWZ0ZXIsIHdlIGNhbid0IHVzZSAuY3NzKCkgdG8gZG8gdGhpcywgd2UgbmVlZCB0byBpbmplY3QgYSBzdHlsZSB0YWcuXG5cdFx0JCggJ2hlYWQnICkuYXBwZW5kKCAnPHN0eWxlPiAjY21iMi1tZXRhYm94LWN0Y3RfMl9maWVsZHNfbWV0YWJveCBhLm1vdmUtdXA6OmFmdGVyIHsgY29udGVudDogXCInICsgd2luZG93LmN0Y3RUZXh0cy5tb3ZlX3VwICsgJ1wiIH0gI2NtYjItbWV0YWJveC1jdGN0XzJfZmllbGRzX21ldGFib3ggYS5tb3ZlLWRvd246OmFmdGVyIHsgY29udGVudDogXCInICsgd2luZG93LmN0Y3RUZXh0cy5tb3ZlX2Rvd24gKyAnXCIgfTwvc3R5bGU+JyApO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBDYWNoZSBET00gZWxlbWVudHMuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdHRoYXQuY2FjaGUgPSAoKSA9PiB7XG5cblx0XHR0aGF0LiRjID0ge1xuXHRcdFx0d2luZG93OiAkKCB3aW5kb3cgKSxcblx0XHRcdGJvZHk6ICQoICdib2R5JyApXG5cdFx0fTtcblxuXHRcdHRoYXQuaXNMZWF2ZVdhcm5pbmdCb3VuZCA9IGZhbHNlO1xuXHR9O1xuXG5cdC8vIFRyaWdnZXJzIG91ciBsZWF2ZSB3YXJuaW5nIGlmIHdlIG1vZGlmeSB0aGluZ3MgaW4gdGhlIGZvcm0uXG5cdHRoYXQuYmluZExlYXZlV2FybmluZyA9ICgpID0+IHtcblxuXHRcdC8vIERvbid0IGRvdWJsZS1iaW5kIGl0LlxuXHRcdGlmICggISB0aGF0LmlzTGVhdmVXYXJuaW5nQm91bmQgKSB7XG5cblx0XHRcdC8vIEJpbmQgb3VyIGVycm9yIHRoYXQgZGlzcGxheXMgYmVmb3JlIGxlYXZpbmcgcGFnZS5cblx0XHRcdCQoIHdpbmRvdyApLmJpbmQoICdiZWZvcmV1bmxvYWQnLCAoKSA9PiB7XG5cdFx0XHRcdHJldHVybiB3aW5kb3cuY3RjdFRleHRzLmxlYXZld2FybmluZztcblx0XHRcdH0gKTtcblxuXHRcdFx0Ly8gU2F2ZSBvdXIgc3RhdGUuXG5cdFx0XHR0aGF0LmlzTGVhdmVXYXJuaW5nQm91bmQgPSB0cnVlO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogUmVtb3ZlcyBvdXIgYmluZGluZyBvZiBvdXIgbGVhdmUgd2FybmluZy5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0dGhhdC51bmJpbmRMZWF2ZVdhcm5pbmcgPSAoKSA9PiB7XG5cdFx0JCggd2luZG93ICkudW5iaW5kKCAnYmVmb3JldW5sb2FkJyApO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBBdHRhY2ggY2FsbGJhY2tzIHRvIGV2ZW50cy5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0dGhhdC5iaW5kRXZlbnRzID0gKCkgPT4ge1xuXG5cdFx0JCggJyNwb3N0JyApLnN1Ym1pdCggKCkgPT4ge1xuXG5cdFx0XHQvLyBNYWtlIHN1cmUgb3VyIGVtYWlsIGRyb3Bkb3duIHJldmVydHMgZnJvbSBkaXNibGVkLCBhcyBDTUIyIGRvZXNuJ3Qgc2F2ZSB0aG9zZSB2YWx1ZXMuXG5cdFx0XHQkKCAnLmN0Y3QtZW1haWwtZGlzYWJsZWQnICkucmVtb3ZlQ2xhc3MoICdkaXNhYmxlZCcgKS5wcm9wKCAnZGlzYWJsZWQnLCBmYWxzZSApO1xuXG5cdFx0XHR0aGF0LnVuYmluZExlYXZlV2FybmluZygpO1xuXHRcdH0gKTtcblxuXHRcdCQoICcuY21iMi13cmFwIGlucHV0LCAuY21iMi13cmFwIHRleHRhcmVhJyApLm9uKCAnaW5wdXQnLCAoKSA9PiB7XG5cdFx0XHRpZiAoICd1bmRlZmluZWQnICE9PSB0eXBlb2YoIHRpbnlNQ0UgKSApIHtcblx0XHRcdFx0dGhhdC5iaW5kTGVhdmVXYXJuaW5nKCk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdFx0Ly8gRGlzYWJsZSBlbWFpbCBvcHRpb25zIG9uIHJvdyBjaGFuZ2UgdHJpZ2dlci5cblx0XHQkKCBkb2N1bWVudCApLm9uKCAnY21iMl9zaGlmdF9yb3dzX2NvbXBsZXRlJywgKCkgPT4ge1xuXHRcdFx0dGhhdC5tb2RpZnlGaWVsZHMoKTtcblx0XHRcdHRoYXQuYmluZExlYXZlV2FybmluZygpO1xuXHRcdFx0dGhhdC5yZW1vdmVEdXBsaWNhdGVNYXBwaW5ncygpO1xuXHRcdH0gKTtcblxuXHRcdC8vIElmIHdlIGdldCBhIHJvdyBhZGRlZCwgdGhlbiBkbyBvdXIgc3R1ZmYuXG5cdFx0JCggZG9jdW1lbnQgKS5vbiggJ2NtYjJfYWRkX3JvdycsICggbmV3Um93ICkgPT4geyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG5cblx0XHRcdC8vIEF1dG9tYXRpY2FsbHkgc2V0IG5ldyByb3dzIHRvIGJlICdjdXN0b20nIGZpZWxkIHR5cGUuXG5cdFx0XHQkKCAnI2N1c3RvbV9maWVsZHNfZ3JvdXBfcmVwZWF0IC5wb3N0Ym94JyApLmxhc3QoKS5maW5kKCAnLm1hcCBzZWxlY3QnICkudmFsKCAnbm9uZScgKTtcblxuXHRcdFx0dGhhdC5tb2RpZnlGaWVsZHMoKTtcblx0XHRcdHRoYXQuc2VsZWN0QmluZHMoKTtcblx0XHRcdHRoYXQucmVtb3ZlRHVwbGljYXRlTWFwcGluZ3MoKTtcblx0XHR9ICk7XG5cblx0XHR0aGF0LnJlbW92ZUR1cGxpY2F0ZU1hcHBpbmdzKCk7XG5cblx0XHQkKCAnI2N0Y3QtcmVzZXQtY3NzJyApLm9uKCAnY2xpY2snLCAoIGV2ZW50ICkgPT4ge1xuXHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuXHRcdFx0dmFyIHNlbGVjdEZpZWxkcyA9IFtcblx0XHRcdFx0JyNfY3RjdF9mb3JtX2Rlc2NyaXB0aW9uX2ZvbnRfc2l6ZScsXG5cdFx0XHRcdCcjX2N0Y3RfZm9ybV9zdWJtaXRfYnV0dG9uX2ZvbnRfc2l6ZScsXG5cdFx0XHRcdCcjX2N0Y3RfZm9ybV9sYWJlbF9wbGFjZW1lbnQnXG5cdFx0XHRdO1xuXG5cdFx0XHR2YXIgdGV4dEZpZWxkcyA9IFtcblx0XHRcdFx0JyNfY3RjdF9mb3JtX3BhZGRpbmdfdG9wJyxcblx0XHRcdFx0JyNfY3RjdF9mb3JtX3BhZGRpbmdfYm90dG9tJyxcblx0XHRcdFx0JyNfY3RjdF9mb3JtX3BhZGRpbmdfbGVmdCcsXG5cdFx0XHRcdCcjX2N0Y3RfZm9ybV9wYWRkaW5nX3JpZ2h0Jyxcblx0XHRcdFx0JyNfY3RjdF9pbnB1dF9jdXN0b21fY2xhc3Nlcydcblx0XHRcdF07XG5cblx0XHRcdC8vIFJlc2V0IGNvbG9yIHBpY2tlcnMuXG5cdFx0XHQkKCAnLndwLXBpY2tlci1jbGVhcicgKS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0JCggdGhpcyApLmNsaWNrKCk7XG5cdFx0XHR9ICk7XG5cblx0XHRcdGZvciAoIHZhciBpID0gc2VsZWN0RmllbGRzLmxlbmd0aDsgaS0tOyApIHtcblx0XHRcdFx0dmFyIGZpcnN0T3B0aW9uID0gJCggc2VsZWN0RmllbGRzW2ldICkuY2hpbGRyZW4oICdvcHRpb24nICkuZmlyc3QoKTtcblx0XHRcdFx0JCggc2VsZWN0RmllbGRzW2ldICkudmFsKCBmaXJzdE9wdGlvbi52YWwoKSApO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKCB2YXIgaSA9IHRleHRGaWVsZHMubGVuZ3RoOyBpLS07ICkge1xuXHRcdFx0XHQkKCB0ZXh0RmllbGRzW2ldICkudmFsKCAnJyApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fTtcblxuXHQvKipcblx0ICogV2hlbiAuY21iMl9zZWxlY3QgPHNlbGVjdHM+IGdldCBjaGFuZ2VkLCBkbyBzb21lIGFjdGlvbnMuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdHRoYXQuc2VsZWN0QmluZHMgPSAoKSA9PiB7XG5cblx0XHQvLyBGb3IgZWFjaCBmaWVsZHMgc2VsZWN0LlxuXHRcdCQoICcjY21iMi1tZXRhYm94LWN0Y3RfMl9maWVsZHNfbWV0YWJveCAuY21iMl9zZWxlY3QnICkuY2hhbmdlKCAoKSA9PiB7XG5cblx0XHRcdC8vIE1vZGlmeSBvdXIgZmllbGRzLlxuXHRcdFx0dGhhdC5tb2RpZnlGaWVsZHMoKTtcblxuXHRcdFx0Ly8gRG9uJ3QgYWxsb3cgZHVwbGljYXRlIG1hcHBpbmdzIGluIGZvcm0uXG5cdFx0XHR0aGF0LnJlbW92ZUR1cGxpY2F0ZU1hcHBpbmdzKCk7XG5cblx0XHRcdC8vIEJpbmQgb3VyIGxlYXZlIHdhcm5pbmcuXG5cdFx0XHR0aGF0LmJpbmRMZWF2ZVdhcm5pbmcoKTtcblx0XHR9ICk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFdlIG5lZWQgdG8gbWFuaXB1bGF0ZSBvdXIgZm9ybSBidWlsZGVyIGEgYml0LiBXZSBkbyB0aGlzIGhlcmUuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdHRoYXQubW9kaWZ5RmllbGRzID0gKCkgPT4ge1xuXG5cdFx0Ly8gU2V0IHRoYXQgd2UgaGF2ZW4ndCBmb3VuZCBhbiBlbWFpbC5cblx0XHR2YXIgZm91bmRFbWFpbCA9IGZhbHNlO1xuXG5cdFx0Ly8gTG9vcCB0aHJvdWdoIGFsbCBmaWVsZHMgdG8gbW9kaWZ5IHRoZW0uXG5cdFx0JCggJyNjbWIyLW1ldGFib3gtY3RjdF8yX2ZpZWxkc19tZXRhYm94ICNjdXN0b21fZmllbGRzX2dyb3VwX3JlcGVhdCAuY21iLXJlcGVhdGFibGUtZ3JvdXBpbmcnICkuZWFjaCggZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7XG5cblx0XHRcdC8vIFNldCBzb21lIG9mIG91ciBoZWxwZXIgcGFyYW1hdGVycy5cblx0XHRcdHZhciAkZmllbGRQYXJlbnQgPSAkKCB0aGlzICkuZmluZCggJy5jbWItZmllbGQtbGlzdCcgKTtcblx0XHRcdHZhciAkYnV0dG9uICAgICAgID0gJCggJGZpZWxkUGFyZW50ICkuZmluZCggJy5jbWItcmVtb3ZlLWdyb3VwLXJvdycgKTtcblx0XHRcdHZhciAkcmVxdWlyZWQgICAgID0gJCggJGZpZWxkUGFyZW50ICkuZmluZCggJy5yZXF1aXJlZCBpbnB1dFt0eXBlPWNoZWNrYm94XScgKTtcblx0XHRcdHZhciAkcmVxdWlyZWRSb3cgID0gJHJlcXVpcmVkLmNsb3Nlc3QoICcuY21iLXJvdycgKTtcblx0XHRcdHZhciAkbWFwICAgICAgICAgID0gJCggJGZpZWxkUGFyZW50ICkuZmluZCggJy5tYXAgc2VsZWN0IG9wdGlvbjpzZWxlY3RlZCcgKTtcblx0XHRcdHZhciAkbWFwTmFtZSAgICAgID0gJG1hcC50ZXh0KCk7XG5cdFx0XHR2YXIgJGZpZWxkVGl0bGUgICA9ICQoIHRoaXMgKS5maW5kKCAnaDMnICk7XG5cdFx0XHR2YXIgJGxhYmVsRmllbGQgICA9ICQoIHRoaXMgKS5maW5kKCAnaW5wdXRbbmFtZSo9XCJfY3RjdF9maWVsZF9sYWJlbFwiXScgKTtcblx0XHRcdHZhciAkZGVzY0ZpZWxkICAgID0gJCggdGhpcyApLmZpbmQoICdpbnB1dFtuYW1lKj1cIl9jdGN0X2ZpZWxkX2Rlc2NcIl0nICk7XG5cblx0XHRcdC8vIFNldCBvdXIgZmllbGQgcm93IHRvIGJlIHRoZSBuYW1lIG9mIHRoZSBzZWxlY3RlZCBvcHRpb24uXG5cdFx0XHQkZmllbGRUaXRsZS50ZXh0KCAkbWFwTmFtZSApO1xuXG5cdFx0XHQvLyBJZiB3ZSBoYXZlIGEgYmxhbmsgZmllbGQgbGFiZWwsIHRoZW4gdXNlIHRoZSBuYW1lIG9mIHRoZSBmaWVsZCB0byBmaWxsIGl0IGluLlxuXHRcdFx0aWYgKCAwID09PSAkbGFiZWxGaWVsZC52YWwoKS5sZW5ndGggKSB7XG5cdFx0XHRcdCRsYWJlbEZpZWxkLnZhbCggJG1hcE5hbWUgKS5hZGRDbGFzcyggJ2N0Y3QtbGFiZWwtZmlsbGVkJyApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0JGxhYmVsRmllbGQuYWRkQ2xhc3MoICdjdGN0LWxhYmVsLWZpbGxlZCcgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgd2UgaGF2ZW4ndCB5ZXQgZm91bmQgYW4gZW1haWwgZmllbGQsIGFuZCB0aGlzIGlzIG91ciBlbWFpbCBmaWVsZC5cblx0XHRcdGlmICggISBmb3VuZEVtYWlsICYmICggJ2VtYWlsJyA9PT0gJCggJG1hcCApLnZhbCgpICkgKSB7XG5cblx0XHRcdFx0Ly8gU2V0IHRoYXQgd2UgZm91bmQgYW4gZW1haWwgZmllbGQuXG5cdFx0XHRcdGZvdW5kRW1haWwgPSB0cnVlO1xuXG5cdFx0XHRcdC8vIE1ha2UgaXQgcmVxdWlyZWQuXG5cdFx0XHRcdCRyZXF1aXJlZC5wcm9wKCAnY2hlY2tlZCcsIHRydWUgKTtcblxuXHRcdFx0XHQvLyBTZXQgaXQgdG8gYmUgJ2Rpc2FibGVkJy5cblx0XHRcdFx0JCggdmFsdWUgKS5maW5kKCAnc2VsZWN0JyApLmFkZENsYXNzKCAnZGlzYWJsZWQgY3RjdC1lbWFpbC1kaXNhYmxlZCcgKS5wcm9wKCAnZGlzYWJsZWQnLCB0cnVlICk7XG5cblx0XHRcdFx0Ly8gSGlkZSB0aGUgcmVxdWlyZWQgcm93LlxuXHRcdFx0XHQkcmVxdWlyZWRSb3cuaGlkZSgpO1xuXG5cdFx0XHRcdC8vIEhpZGUgdGhlIHJlbW92ZSByb3cgYnV0dG9uLlxuXHRcdFx0XHQkYnV0dG9uLmhpZGUoKTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHQvLyBWZXJpZnkgaXRzIG5vdCBkaXNhYmxlZC5cblx0XHRcdFx0JCggdmFsdWUgKS5maW5kKCAnc2VsZWN0JyApLnJlbW92ZUNsYXNzKCAnZGlzYWJsZWQgY3RjdC1lbWFpbC1kaXNhYmxlZCcgKS5wcm9wKCAnZGlzYWJsZWQnLCBmYWxzZSApO1xuXG5cdFx0XHRcdC8vIElmIHdlJ3JlIG5vdCBhbiBlbWFpbCBmaWVsZCwgcmVzaG93IHRoZSByZXF1aXJlZCBmaWVsZC5cblx0XHRcdFx0JHJlcXVpcmVkUm93LnNob3coKTtcblxuXHRcdFx0XHQvLyBhbmQgdGhlIHJlbW92ZSBidXR0b24uXG5cdFx0XHRcdCRidXR0b24uc2hvdygpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTZXQgdGhlIHBsYWNlaG9sZGVyIHRleHQgaWYgdGhlcmUncyBzb21ldGhpbmcgdG8gc2V0LlxuXHRcdFx0aWYgKCB3aW5kb3cuY3RjdF9hZG1pbl9wbGFjZWhvbGRlcnMgKSB7XG5cdFx0XHRcdHZhciBwbGFjZWhvbGRlciA9IHdpbmRvdy5jdGN0X2FkbWluX3BsYWNlaG9sZGVyc1sgJCggdmFsdWUgKS5maW5kKCAnc2VsZWN0JyApLnZhbCgpIF07XG5cblx0XHRcdFx0Ly8gSWYgd2UgaGF2ZSBhIHZhbGlkIHBsYWNlaG9sZGVyLCBkaXNwbGF5IGl0IG9yIHRyeSB0aGUgZmFsbGJhY2suXG5cdFx0XHRcdGlmICggcGxhY2Vob2xkZXIgJiYgcGxhY2Vob2xkZXIubGVuZ3RoICYmICRkZXNjRmllbGQubGVuZ3RoICkge1xuXHRcdFx0XHRcdCRkZXNjRmllbGQuYXR0ciggJ3BsYWNlaG9sZGVyJywgJ0V4YW1wbGU6ICcgKyBwbGFjZWhvbGRlciApO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCB3aW5kb3cuY3RjdF9hZG1pbl9wbGFjZWhvbGRlcnMuZGVmYXVsdCApIHtcblx0XHRcdFx0XHQkZGVzY0ZpZWxkLmF0dHIoICdwbGFjZWhvbGRlcicsIHdpbmRvdy5jdGN0X2FkbWluX3BsYWNlaG9sZGVycy5kZWZhdWx0ICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9ICk7XG5cdH07XG5cblx0LyoqXG5cdCAqIEdvIHRocm91Z2ggYWxsIGRyb3Bkb3ducywgYW5kIHJlbW92ZSB1c2VkIG9wdGlvbnMuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdHRoYXQucmVtb3ZlRHVwbGljYXRlTWFwcGluZ3MgPSAoKSA9PiB7XG5cblx0XHR2YXIgdXNlZE1hcHBpbmdzID0gW107XG5cdFx0dmFyIGRyb3Bkb3ducyAgICA9ICcjY21iMi1tZXRhYm94LWN0Y3RfMl9maWVsZHNfbWV0YWJveCAjY3VzdG9tX2ZpZWxkc19ncm91cF9yZXBlYXQgLmNtYi1yZXBlYXRhYmxlLWdyb3VwaW5nIHNlbGVjdCc7XG5cdFx0dmFyICRkcm9wZG93bnMgICA9ICQoIGRyb3Bkb3ducyApO1xuXG5cdFx0Ly8gRm9yIGVhY2ggZHJvcGRvd24sIGJ1aWxkIHVwIG91ciBhcnJheSBvZiB1c2VkIHZhbHVlcy5cblx0XHQkZHJvcGRvd25zLmVhY2goIGZ1bmN0aW9uKCBrZXksIHZhbHVlICkge1xuXHRcdFx0dXNlZE1hcHBpbmdzLnB1c2goICQoIHZhbHVlICkudmFsKCkgKTtcblx0XHR9ICk7XG5cblx0XHQvLyBSZS1zaG93IGFsbCB0aGUgY2hpbGRyZW4gb3B0aW9ucyB3ZSBtYXkgaGF2ZSBoaWRkZW4uXG5cdFx0JGRyb3Bkb3ducy5jaGlsZHJlbigpLnNob3coKTtcblxuXHRcdC8vIEZvciBlYWNoIG9mIG91ciBtYXBwaW5ncyB0aGF0IHdlIGFscmVhZHkgaGF2ZSwgcmVtb3ZlIHRoZW0gZnJvbSBhbGwgc2VsZWN0cy5cblx0XHR1c2VkTWFwcGluZ3MuZm9yRWFjaCggZnVuY3Rpb24oIHZhbHVlICkge1xuXG5cdFx0XHQvLyBCdXQgb25seSBkbyBpdCBpZiB0aGUgdmFsdWUgaXNuJ3Qgb25lIG9mIG91ciBjdXN0b20gb25lcy5cblx0XHRcdGlmICggKCAnY3VzdG9tX3RleHRfYXJlYScgIT09IHZhbHVlICkgJiYgKCAnY3VzdG9tJyAhPT0gdmFsdWUgKSApIHtcblxuXHRcdFx0XHQvLyBSZW1vdmUgYWxsIG9wdGlvbnMgZnJvbSBvdXIgZHJvcGRvd25zIHdpdGggdGhlIHZhbHVlLlxuXHRcdFx0XHQkKCBkcm9wZG93bnMgKyAnIG9wdGlvblt2YWx1ZT0nICsgdmFsdWUgKyAnXTpub3QoIDpzZWxlY3RlZCApJyApLmhpZGUoKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH07XG5cblx0JCggdGhhdC5pbml0ICk7XG5cbn0gKCB3aW5kb3csIGpRdWVyeSwgd2luZG93LkNUQ1RCdWlsZGVyICkgKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBRUE7QUFNQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-admin/builder.js\n");
108
 
109
  /***/ }),
110
 
115
  /*! no static exports found */
116
  /***/ (function(module, exports) {
117
 
118
+ eval("window.CTCTClipboard = {};\n\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 * Cache DOM elements.\n *\n * @author Constant Contact\n * @since 1.11.0\n */\n\n\n app.cache = function () {\n app.$c = {\n window: $(window),\n copyshortcode: $('.ctct-shortcode-wrap')\n };\n };\n /**\n * Copy to clipboard click event.\n *\n * @param {object} e The clicked element.\n * @param {HTMLElement} input The input element.\n * @author Constant Contact\n * @since 1.11.0\n */\n\n\n app.copyClick = function (button, input) {\n if (!button || !input) {\n return;\n } // Select the input.\n\n\n input.select();\n input.setSelectionRange(0, 99999); // For mobile devices.\n // Copy the text inside the text field.\n\n document.execCommand(\"copy\");\n var reset = button.innerHTML;\n button.innerHTML = button.dataset.copied; // Reset button text.\n\n setTimeout(function () {\n button.innerHTML = reset;\n }, 3000);\n };\n /**\n * Attach callbacks to events.\n *\n * @author Constant Contact\n * @since 1.11.0\n */\n\n\n app.bindEvents = function () {\n // Add click event for copy buttons.\n if (app.$c.copyshortcode) {\n app.$c.copyshortcode.each(function (index, element) {\n var input = element.querySelector('input');\n var button = element.querySelector('button');\n\n if (input && button) {\n button.addEventListener('click', function (e) {\n e.preventDefault();\n app.copyClick(this, input);\n });\n }\n });\n }\n };\n\n app.init();\n})(window, jQuery, window.CTCTClipboard);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tYWRtaW4vY2xpcGJvYXJkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2pzL2N0Y3QtcGx1Z2luLWFkbWluL2NsaXBib2FyZC5qcz9jMDNjIl0sInNvdXJjZXNDb250ZW50IjpbIndpbmRvdy5DVENUQ2xpcGJvYXJkID0ge307XG5cbiggZnVuY3Rpb24oIHdpbmRvdywgJCwgYXBwICkge1xuXG5cdC8qKlxuXHQgKiBAY29uc3RydWN0b3Jcblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0IGFwcC5pbml0ID0gKCkgPT4ge1xuXHRcdGFwcC5jYWNoZSgpO1xuXHRcdGFwcC5iaW5kRXZlbnRzKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIENhY2hlIERPTSBlbGVtZW50cy5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjExLjBcblx0ICovXG5cdCBhcHAuY2FjaGUgPSAoKSA9PiB7XG5cdFx0YXBwLiRjID0ge1xuXHRcdFx0d2luZG93OiAkKCB3aW5kb3cgKSxcblx0XHRcdGNvcHlzaG9ydGNvZGU6ICQoICcuY3RjdC1zaG9ydGNvZGUtd3JhcCcgKVxuXHRcdH07XG5cdH07XG5cblx0LyoqXG5cdCAqIENvcHkgdG8gY2xpcGJvYXJkIGNsaWNrIGV2ZW50LlxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZSBUaGUgY2xpY2tlZCBlbGVtZW50LlxuXHQgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBpbnB1dCBUaGUgaW5wdXQgZWxlbWVudC5cblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjExLjBcblx0ICovXG5cdGFwcC5jb3B5Q2xpY2sgPSAoYnV0dG9uLCBpbnB1dCkgPT4ge1xuXG5cdFx0aWYoIWJ1dHRvbiB8fCAhaW5wdXQpe1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIFNlbGVjdCB0aGUgaW5wdXQuXG5cdFx0aW5wdXQuc2VsZWN0KCk7XG5cdFx0aW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgOTk5OTkpOyAvLyBGb3IgbW9iaWxlIGRldmljZXMuXG5cdCBcblx0XHQvLyBDb3B5IHRoZSB0ZXh0IGluc2lkZSB0aGUgdGV4dCBmaWVsZC5cblx0XHRkb2N1bWVudC5leGVjQ29tbWFuZChcImNvcHlcIik7XG5cdFx0dmFyIHJlc2V0ID0gYnV0dG9uLmlubmVySFRNTDtcblx0XHRidXR0b24uaW5uZXJIVE1MID0gYnV0dG9uLmRhdGFzZXQuY29waWVkO1xuXG5cdFx0Ly8gUmVzZXQgYnV0dG9uIHRleHQuXG5cdFx0c2V0VGltZW91dChmdW5jdGlvbigpe1xuXHRcdFx0YnV0dG9uLmlubmVySFRNTCA9IHJlc2V0O1xuXHRcdH0sIDMwMDApO1xuXG5cdH1cblxuXHQvKipcblx0ICogQXR0YWNoIGNhbGxiYWNrcyB0byBldmVudHMuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4xMS4wXG5cdCAqL1xuXHQgYXBwLmJpbmRFdmVudHMgPSAoKSA9PiB7XG5cblx0XHQvLyBBZGQgY2xpY2sgZXZlbnQgZm9yIGNvcHkgYnV0dG9ucy5cblx0XHRpZihhcHAuJGMuY29weXNob3J0Y29kZSl7XG5cdFx0XHRhcHAuJGMuY29weXNob3J0Y29kZS5lYWNoKGZ1bmN0aW9uKGluZGV4LCBlbGVtZW50KSB7XG5cdFx0XHRcdHZhciBpbnB1dCA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcblx0XHRcdFx0dmFyIGJ1dHRvbiA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcignYnV0dG9uJyk7XG5cdFx0XHRcdGlmKGlucHV0ICYmIGJ1dHRvbil7XG5cdFx0XHRcdFx0YnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oIGUgKXtcblx0XHRcdFx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0XHRcdGFwcC5jb3B5Q2xpY2soIHRoaXMsIGlucHV0KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHR9XG5cdH07XG5cblx0YXBwLmluaXQoKTtcblxufSAoIHdpbmRvdywgalF1ZXJ5LCB3aW5kb3cuQ1RDVENsaXBib2FyZCApICk7XG5cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-admin/clipboard.js\n");
119
 
120
  /***/ }),
121
 
126
  /*! no static exports found */
127
  /***/ (function(module, exports) {
128
 
129
+ eval("window.CTCTForms = {};\n\n(function (window, $, that) {\n /**\n * @constructor\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n that.init = function () {\n that.cache();\n that.bindEvents();\n };\n /**\n * Cache DOM elements.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n that.cache = function () {\n that.$c = {\n window: $(window),\n body: $('body'),\n disconnect: '.ctct-disconnect'\n };\n };\n /**\n * Attach callbacks to events.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n that.bindEvents = function () {\n $(that.$c.disconnect).on('click', function (e) {\n // eslint-disable-line no-unused-vars\n confirm(window.ctctTexts.disconnectconfirm);\n });\n };\n\n $(that.init);\n})(window, jQuery, window.CTCTForms);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tYWRtaW4vZm9ybXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tYWRtaW4vZm9ybXMuanM/YTEyZiJdLCJzb3VyY2VzQ29udGVudCI6WyJ3aW5kb3cuQ1RDVEZvcm1zID0ge307XG5cbiggZnVuY3Rpb24oIHdpbmRvdywgJCwgdGhhdCApIHtcblxuXHQvKipcblx0ICogQGNvbnN0cnVjdG9yXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdHRoYXQuaW5pdCA9ICgpID0+IHtcblx0XHR0aGF0LmNhY2hlKCk7XG5cdFx0dGhhdC5iaW5kRXZlbnRzKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIENhY2hlIERPTSBlbGVtZW50cy5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0dGhhdC5jYWNoZSA9ICgpID0+IHtcblx0XHR0aGF0LiRjID0ge1xuXHRcdFx0d2luZG93OiAkKCB3aW5kb3cgKSxcblx0XHRcdGJvZHk6ICQoICdib2R5JyApLFxuXHRcdFx0ZGlzY29ubmVjdDogJy5jdGN0LWRpc2Nvbm5lY3QnXG5cdFx0fTtcblx0fTtcblxuXHQvKipcblx0ICogQXR0YWNoIGNhbGxiYWNrcyB0byBldmVudHMuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdHRoYXQuYmluZEV2ZW50cyA9ICgpID0+IHtcblxuXHRcdCQoIHRoYXQuJGMuZGlzY29ubmVjdCApLm9uKCAnY2xpY2snLCAoIGUgKSA9PiB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcblx0XHRcdGNvbmZpcm0oIHdpbmRvdy5jdGN0VGV4dHMuZGlzY29ubmVjdGNvbmZpcm0gKTtcblx0XHR9ICk7XG5cdH07XG5cblx0JCggdGhhdC5pbml0ICk7XG5cbn0gKCB3aW5kb3csIGpRdWVyeSwgd2luZG93LkNUQ1RGb3JtcyApICk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-admin/forms.js\n");
130
 
131
  /***/ }),
132
 
149
  /*! no static exports found */
150
  /***/ (function(module, exports) {
151
 
152
+ eval("window.CTCTModal = {};\n\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 * Cache DOM elements.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.cache = function () {\n app.$c = {\n window: $(window),\n modalSelector: $('.ctct-modal'),\n modalClose: $('.ctct-modal-close'),\n textareaModal: $('#ctct-custom-textarea-modal'),\n textareaLink: $('#ctct-open-textarea-info'),\n deleteLogLink: $('#deletelog')\n };\n };\n /**\n * Attach callbacks to events.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.bindEvents = function () {\n app.$c.modalClose.on('click', function () {\n app.$c.modalSelector.removeClass('ctct-modal-open');\n\n if (app.$c.modalSelector.hasClass('ctct-custom-textarea-modal')) {\n return;\n }\n\n $.ajax({\n type: 'post',\n dataType: 'json',\n url: window.ajaxurl,\n data: {\n action: 'ctct_dismiss_first_modal',\n 'ctct_is_dismissed': 'true'\n }\n });\n });\n app.$c.textareaLink.on('click', function () {\n app.$c.textareaModal.addClass('ctct-modal-open');\n });\n app.$c.deleteLogLink.on('click', function (event) {\n event.preventDefault(); // Get the link that was clicked on so we can redirect to it if the user confirms.\n\n var deleteLogLink = $(event.currentTarget).attr('href');\n $('#confirmdelete').dialog({\n resizable: false,\n height: 'auto',\n width: 400,\n modal: true,\n buttons: {\n 'Yes': function Yes() {\n // If the user confirms the action, redirect them to the deletion page.\n window.location.replace(deleteLogLink);\n },\n 'Cancel': function Cancel() {\n $('#confirmdelete').closest('.ui-dialog-content').dialog('close');\n }\n }\n });\n });\n };\n\n $(app.init);\n})(window, jQuery, window.CTCTModal);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tYWRtaW4vbW9kYWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tYWRtaW4vbW9kYWwuanM/N2RhZSJdLCJzb3VyY2VzQ29udGVudCI6WyJ3aW5kb3cuQ1RDVE1vZGFsID0ge307XG5cbiggZnVuY3Rpb24oIHdpbmRvdywgJCwgYXBwICkge1xuXG5cdC8qKlxuXHQgKiBAY29uc3RydWN0b3Jcblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLmluaXQgPSAoKSA9PiB7XG5cdFx0YXBwLmNhY2hlKCk7XG5cdFx0YXBwLmJpbmRFdmVudHMoKTtcblx0fTtcblxuXHQvKipcblx0ICogQ2FjaGUgRE9NIGVsZW1lbnRzLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqL1xuXHRhcHAuY2FjaGUgPSAoKSA9PiB7XG5cdFx0YXBwLiRjID0ge1xuXHRcdFx0d2luZG93OiAkKCB3aW5kb3cgKSxcblx0XHRcdG1vZGFsU2VsZWN0b3I6ICQoICcuY3RjdC1tb2RhbCcgKSxcblx0XHRcdG1vZGFsQ2xvc2U6ICQoICcuY3RjdC1tb2RhbC1jbG9zZScgKSxcblx0XHRcdHRleHRhcmVhTW9kYWw6ICQoICcjY3RjdC1jdXN0b20tdGV4dGFyZWEtbW9kYWwnICksXG5cdFx0XHR0ZXh0YXJlYUxpbms6ICQoICcjY3RjdC1vcGVuLXRleHRhcmVhLWluZm8nICksXG5cdFx0XHRkZWxldGVMb2dMaW5rOiAkKCAnI2RlbGV0ZWxvZycgKVxuXHRcdH07XG5cdH07XG5cblx0LyoqXG5cdCAqIEF0dGFjaCBjYWxsYmFja3MgdG8gZXZlbnRzLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqL1xuXHRhcHAuYmluZEV2ZW50cyA9ICgpID0+IHtcblxuXHRcdGFwcC4kYy5tb2RhbENsb3NlLm9uKCAnY2xpY2snLCAoKSA9PiB7XG5cblx0XHRcdGFwcC4kYy5tb2RhbFNlbGVjdG9yLnJlbW92ZUNsYXNzKCAnY3RjdC1tb2RhbC1vcGVuJyApO1xuXG5cdFx0XHRpZiAoIGFwcC4kYy5tb2RhbFNlbGVjdG9yLmhhc0NsYXNzKCAnY3RjdC1jdXN0b20tdGV4dGFyZWEtbW9kYWwnICkgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0JC5hamF4KCB7XG5cdFx0XHRcdHR5cGU6ICdwb3N0Jyxcblx0XHRcdFx0ZGF0YVR5cGU6ICdqc29uJyxcblx0XHRcdFx0dXJsOiB3aW5kb3cuYWpheHVybCxcblx0XHRcdFx0ZGF0YToge1xuXHRcdFx0XHRcdGFjdGlvbjogJ2N0Y3RfZGlzbWlzc19maXJzdF9tb2RhbCcsXG5cdFx0XHRcdFx0J2N0Y3RfaXNfZGlzbWlzc2VkJzogJ3RydWUnXG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9ICk7XG5cblx0XHRhcHAuJGMudGV4dGFyZWFMaW5rLm9uKCAnY2xpY2snLCAoKSA9PiB7XG5cdFx0XHRhcHAuJGMudGV4dGFyZWFNb2RhbC5hZGRDbGFzcyggJ2N0Y3QtbW9kYWwtb3BlbicgKTtcblx0XHR9ICk7XG5cblx0XHRhcHAuJGMuZGVsZXRlTG9nTGluay5vbiggJ2NsaWNrJywgKCBldmVudCApID0+IHtcblx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cblx0XHRcdC8vIEdldCB0aGUgbGluayB0aGF0IHdhcyBjbGlja2VkIG9uIHNvIHdlIGNhbiByZWRpcmVjdCB0byBpdCBpZiB0aGUgdXNlciBjb25maXJtcy5cblx0XHRcdHZhciBkZWxldGVMb2dMaW5rID0gJCggZXZlbnQuY3VycmVudFRhcmdldCApLmF0dHIoICdocmVmJyApO1xuXG5cdFx0XHQkKCAnI2NvbmZpcm1kZWxldGUnICkuZGlhbG9nKCB7XG5cdFx0XHRcdHJlc2l6YWJsZTogZmFsc2UsXG5cdFx0XHRcdGhlaWdodDogJ2F1dG8nLFxuXHRcdFx0XHR3aWR0aDogNDAwLFxuXHRcdFx0XHRtb2RhbDogdHJ1ZSxcblx0XHRcdFx0YnV0dG9uczoge1xuXHRcdFx0XHRcdCdZZXMnOiAoKSA9PiB7XG5cblx0XHRcdFx0XHRcdC8vIElmIHRoZSB1c2VyIGNvbmZpcm1zIHRoZSBhY3Rpb24sIHJlZGlyZWN0IHRoZW0gdG8gdGhlIGRlbGV0aW9uIHBhZ2UuXG5cdFx0XHRcdFx0XHR3aW5kb3cubG9jYXRpb24ucmVwbGFjZSggZGVsZXRlTG9nTGluayApO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0J0NhbmNlbCc6ICgpID0+IHtcblx0XHRcdFx0XHRcdCQoICcjY29uZmlybWRlbGV0ZScgKS5jbG9zZXN0KCAnLnVpLWRpYWxvZy1jb250ZW50JyApLmRpYWxvZyggJ2Nsb3NlJyApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHRcdH0gKTtcblx0fTtcblxuXHQkKCBhcHAuaW5pdCApO1xuXG59ICggd2luZG93LCBqUXVlcnksIHdpbmRvdy5DVENUTW9kYWwgKSApO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFRQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUpBO0FBU0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFMQTtBQWdCQTtBQUNBO0FBQ0E7QUFDQTtBQUVBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-admin/modal.js\n");
153
 
154
  /***/ }),
155
 
160
  /*! no static exports found */
161
  /***/ (function(module, exports) {
162
 
163
+ eval("window.CTCTNewsletter = {};\n\n(function (window, $, app) {\n /**\n * @constructor\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n app.init = function () {\n app.submitNewsletter();\n };\n /**\n * Handle newsletter signups on the \"Connect\" and \"About\" pages.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.submitNewsletter = function () {\n // Connect page.\n $('.ctct-body #subscribe').on('submit', function (event) {\n event.preventDefault();\n var $ctctNewsWrapper = $('#subscribe .ctct-call-to-action');\n var ctctNewsForm = $('.ctct-body #subscribe')[0];\n var ctctEmailField = $('.ctct-call-to-action input[type=\"text\"]')[0];\n var subscribeEndpoint = event.target.action;\n\n if (true === ctctEmailField.validity.valid) {\n $('<iframe>', {\n 'src': subscribeEndpoint + '?' + $(ctctNewsForm).serialize(),\n 'height': 0,\n 'width': 0,\n 'style': 'display: none;'\n }).appendTo($ctctNewsWrapper);\n $('#subbutton').val('Thanks for signing up').css({\n 'background-color': 'rgb(1, 128, 0)',\n 'color': 'rgb(255,255,255)'\n });\n $('#subscribe .ctct-call-to-action-text').css({\n 'width': '70%'\n });\n } else {\n $('#subbutton').val('Error occurred');\n }\n }); // About page.\n\n $('.ctct-section #subscribe').on('submit', function (event) {\n event.preventDefault();\n var $ctctNewsWrapper = $('.section-marketing-tips');\n var ctctNewsForm = $('.ctct-section #subscribe')[0];\n var ctctEmailField = $('.ctct-section #subscribe input[type=\"text\"]')[0];\n var subscribeEndpoint = event.target.action;\n\n if (true === ctctEmailField.validity.valid) {\n $('<iframe>', {\n 'src': subscribeEndpoint + '?' + $(ctctNewsForm).serialize(),\n 'height': 0,\n 'width': 0,\n 'style': 'display: none;'\n }).appendTo($ctctNewsWrapper);\n $('#subbutton').val('Thanks for signing up').css({\n 'background-color': 'rgb(1, 128, 0)'\n });\n } else {\n $('#subbutton').val('Error occurred');\n }\n });\n };\n\n $(app.init);\n})(window, jQuery, window.CTCTNewsletter);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tYWRtaW4vbmV3c2xldHRlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Fzc2V0cy9qcy9jdGN0LXBsdWdpbi1hZG1pbi9uZXdzbGV0dGVyLmpzP2UyODkiXSwic291cmNlc0NvbnRlbnQiOlsid2luZG93LkNUQ1ROZXdzbGV0dGVyID0ge307XG5cbiggZnVuY3Rpb24oIHdpbmRvdywgJCwgYXBwICkge1xuXG5cdC8qKlxuXHQgKiBAY29uc3RydWN0b3Jcblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLmluaXQgPSAoKSA9PiB7XG5cdFx0YXBwLnN1Ym1pdE5ld3NsZXR0ZXIoKTtcblx0fTtcblxuXHQvKipcblx0ICogSGFuZGxlIG5ld3NsZXR0ZXIgc2lnbnVwcyBvbiB0aGUgXCJDb25uZWN0XCIgYW5kIFwiQWJvdXRcIiBwYWdlcy5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLnN1Ym1pdE5ld3NsZXR0ZXIgPSAoKSA9PiB7XG5cblx0XHQvLyBDb25uZWN0IHBhZ2UuXG5cdFx0JCggJy5jdGN0LWJvZHkgI3N1YnNjcmliZScgKS5vbiggJ3N1Ym1pdCcsICggZXZlbnQgKSA9PiB7XG5cdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG5cdFx0XHR2YXIgJGN0Y3ROZXdzV3JhcHBlciAgPSAkKCAnI3N1YnNjcmliZSAuY3RjdC1jYWxsLXRvLWFjdGlvbicgKTtcblx0XHRcdHZhciBjdGN0TmV3c0Zvcm0gICAgICA9ICQoICcuY3RjdC1ib2R5ICNzdWJzY3JpYmUnIClbMF07XG5cdFx0XHR2YXIgY3RjdEVtYWlsRmllbGQgICAgPSAkKCAnLmN0Y3QtY2FsbC10by1hY3Rpb24gaW5wdXRbdHlwZT1cInRleHRcIl0nIClbMF07XG5cdFx0XHR2YXIgc3Vic2NyaWJlRW5kcG9pbnQgPSBldmVudC50YXJnZXQuYWN0aW9uO1xuXG5cdFx0XHRpZiAoIHRydWUgPT09IGN0Y3RFbWFpbEZpZWxkLnZhbGlkaXR5LnZhbGlkICkge1xuXHRcdFx0XHQkKCAnPGlmcmFtZT4nLCB7XG5cdFx0XHRcdFx0J3NyYyc6IHN1YnNjcmliZUVuZHBvaW50ICsgJz8nICsgJCggY3RjdE5ld3NGb3JtICkuc2VyaWFsaXplKCksXG5cdFx0XHRcdFx0J2hlaWdodCc6IDAsXG5cdFx0XHRcdFx0J3dpZHRoJzogMCxcblx0XHRcdFx0XHQnc3R5bGUnOiAnZGlzcGxheTogbm9uZTsnXG5cdFx0XHRcdH0gKS5hcHBlbmRUbyggJGN0Y3ROZXdzV3JhcHBlciApO1xuXG5cdFx0XHRcdCQoICcjc3ViYnV0dG9uJyApLnZhbCggJ1RoYW5rcyBmb3Igc2lnbmluZyB1cCcgKS5jc3MoIHsgJ2JhY2tncm91bmQtY29sb3InOiAncmdiKDEsIDEyOCwgMCknLCAnY29sb3InOiAncmdiKDI1NSwyNTUsMjU1KScgfSApO1xuXHRcdFx0XHQkKCAnI3N1YnNjcmliZSAuY3RjdC1jYWxsLXRvLWFjdGlvbi10ZXh0JyApLmNzcyggeyAnd2lkdGgnOiAnNzAlJyB9ICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQkKCAnI3N1YmJ1dHRvbicgKS52YWwoICdFcnJvciBvY2N1cnJlZCcgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHQvLyBBYm91dCBwYWdlLlxuXHRcdCQoICcuY3RjdC1zZWN0aW9uICNzdWJzY3JpYmUnICkub24oICdzdWJtaXQnLCAoIGV2ZW50ICkgPT4ge1xuXHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuXHRcdFx0dmFyICRjdGN0TmV3c1dyYXBwZXIgID0gJCggJy5zZWN0aW9uLW1hcmtldGluZy10aXBzJyApO1xuXHRcdFx0dmFyIGN0Y3ROZXdzRm9ybSAgICAgID0gJCggJy5jdGN0LXNlY3Rpb24gI3N1YnNjcmliZScgKVswXTtcblx0XHRcdHZhciBjdGN0RW1haWxGaWVsZCAgICA9ICQoICcuY3RjdC1zZWN0aW9uICNzdWJzY3JpYmUgaW5wdXRbdHlwZT1cInRleHRcIl0nIClbMF07XG5cdFx0XHR2YXIgc3Vic2NyaWJlRW5kcG9pbnQgPSBldmVudC50YXJnZXQuYWN0aW9uO1xuXG5cdFx0XHRpZiAoIHRydWUgPT09IGN0Y3RFbWFpbEZpZWxkLnZhbGlkaXR5LnZhbGlkICkge1xuXHRcdFx0XHQkKCAnPGlmcmFtZT4nLCB7XG5cdFx0XHRcdFx0J3NyYyc6IHN1YnNjcmliZUVuZHBvaW50ICsgJz8nICsgJCggY3RjdE5ld3NGb3JtICkuc2VyaWFsaXplKCksXG5cdFx0XHRcdFx0J2hlaWdodCc6IDAsXG5cdFx0XHRcdFx0J3dpZHRoJzogMCxcblx0XHRcdFx0XHQnc3R5bGUnOiAnZGlzcGxheTogbm9uZTsnXG5cdFx0XHRcdH0gKS5hcHBlbmRUbyggJGN0Y3ROZXdzV3JhcHBlciApO1xuXHRcdFx0XHQkKCAnI3N1YmJ1dHRvbicgKS52YWwoICdUaGFua3MgZm9yIHNpZ25pbmcgdXAnICkuY3NzKCB7ICdiYWNrZ3JvdW5kLWNvbG9yJzogJ3JnYigxLCAxMjgsIDApJyB9ICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQkKCAnI3N1YmJ1dHRvbicgKS52YWwoICdFcnJvciBvY2N1cnJlZCcgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH07XG5cblx0JCggYXBwLmluaXQgKTtcblxufSAoIHdpbmRvdywgalF1ZXJ5LCB3aW5kb3cuQ1RDVE5ld3NsZXR0ZXIgKSApO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFPQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-admin/newsletter.js\n");
164
 
165
  /***/ }),
166
 
171
  /*! no static exports found */
172
  /***/ (function(module, exports) {
173
 
174
+ eval("window.CTCT_OptIns = {};\n\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 * Cache DOM elements.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.cache = function () {\n app.$c = {\n optinNoConn: $('#cmb2-metabox-ctct_1_optin_metabox #_ctct_opt_in_not_connected'),\n list: $('#cmb2-metabox-ctct_0_list_metabox [name=\"_ctct_list[]\"]'),\n title: $('#cmb2-metabox-ctct_1_optin_metabox .cmb2-id-email-optin-title'),\n optin: $('#cmb2-metabox-ctct_1_optin_metabox .cmb2-id--ctct-opt-in'),\n instruct: $('#cmb2-metabox-ctct_1_optin_metabox .cmb2-id--ctct-opt-in-instructions')\n };\n };\n /**\n * Attach callbacks to events.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.bindEvents = function () {\n // Only fire show/hide if we have the normal checkbox.\n if (app.$c.optinNoConn.length) {\n // Fire once to get our loaded state set up.\n app.toggleNoConnectionFields(); // Bind to fire when needed.\n\n app.$c.optinNoConn.change(function () {\n app.toggleNoConnectionFields();\n });\n } // Only fire show/hide if we have the normal checkbox.\n\n\n if (app.$c.list.length) {\n // Fire once to get our loaded state set up.\n app.toggleConnectionFields(); // Bind to fire when needed.\n\n app.$c.list.change(function () {\n app.toggleConnectionFields();\n });\n }\n };\n /**\n * Toggle unnecessary, unconnected optin fields if we're not showing the opt-in.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.toggleNoConnectionFields = function () {\n if (app.$c.optinNoConn.prop('checked')) {\n app.$c.instruct.slideDown();\n } else {\n app.$c.instruct.slideUp();\n }\n };\n /**\n * Toggle unnecessary, *connected* optin fields if we're not showing the opt-in.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.toggleConnectionFields = function () {\n // If checked, show them, else hide it.\n if ('' !== app.$c.list.val()) {\n app.$c.title.slideDown();\n app.$c.optin.slideDown();\n app.$c.instruct.slideDown();\n } else {\n app.$c.title.slideUp();\n app.$c.optin.slideUp();\n app.$c.instruct.slideUp();\n }\n };\n\n $(app.init);\n})(window, jQuery, window.CTCT_OptIns);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tYWRtaW4vb3B0aW5zLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2pzL2N0Y3QtcGx1Z2luLWFkbWluL29wdGlucy5qcz9jNGM5Il0sInNvdXJjZXNDb250ZW50IjpbIndpbmRvdy5DVENUX09wdElucyA9IHt9O1xuXG4oIGZ1bmN0aW9uKCB3aW5kb3csICQsIGFwcCApIHtcblxuXHQvKipcblx0ICogQGNvbnN0cnVjdG9yXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdGFwcC5pbml0ID0gKCkgPT4ge1xuXHRcdGFwcC5jYWNoZSgpO1xuXHRcdGFwcC5iaW5kRXZlbnRzKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIENhY2hlIERPTSBlbGVtZW50cy5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLmNhY2hlID0gKCkgPT4ge1xuXHRcdGFwcC4kYyA9IHtcblx0XHRcdG9wdGluTm9Db25uOiAkKCAnI2NtYjItbWV0YWJveC1jdGN0XzFfb3B0aW5fbWV0YWJveCAjX2N0Y3Rfb3B0X2luX25vdF9jb25uZWN0ZWQnICksXG5cdFx0XHRsaXN0OiAkKCAnI2NtYjItbWV0YWJveC1jdGN0XzBfbGlzdF9tZXRhYm94IFtuYW1lPVwiX2N0Y3RfbGlzdFtdXCJdJyApLFxuXHRcdFx0dGl0bGU6ICQoICcjY21iMi1tZXRhYm94LWN0Y3RfMV9vcHRpbl9tZXRhYm94IC5jbWIyLWlkLWVtYWlsLW9wdGluLXRpdGxlJyApLFxuXHRcdFx0b3B0aW46ICQoICcjY21iMi1tZXRhYm94LWN0Y3RfMV9vcHRpbl9tZXRhYm94IC5jbWIyLWlkLS1jdGN0LW9wdC1pbicgKSxcblx0XHRcdGluc3RydWN0OiAkKCAnI2NtYjItbWV0YWJveC1jdGN0XzFfb3B0aW5fbWV0YWJveCAuY21iMi1pZC0tY3RjdC1vcHQtaW4taW5zdHJ1Y3Rpb25zJyApXG5cdFx0fTtcblx0fTtcblxuXHQvKipcblx0ICogQXR0YWNoIGNhbGxiYWNrcyB0byBldmVudHMuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdGFwcC5iaW5kRXZlbnRzID0gKCkgPT4ge1xuXG5cdFx0Ly8gT25seSBmaXJlIHNob3cvaGlkZSBpZiB3ZSBoYXZlIHRoZSBub3JtYWwgY2hlY2tib3guXG5cdFx0aWYgKCBhcHAuJGMub3B0aW5Ob0Nvbm4ubGVuZ3RoICkge1xuXG5cdFx0XHQvLyBGaXJlIG9uY2UgdG8gZ2V0IG91ciBsb2FkZWQgc3RhdGUgc2V0IHVwLlxuXHRcdFx0YXBwLnRvZ2dsZU5vQ29ubmVjdGlvbkZpZWxkcygpO1xuXG5cdFx0XHQvLyBCaW5kIHRvIGZpcmUgd2hlbiBuZWVkZWQuXG5cdFx0XHRhcHAuJGMub3B0aW5Ob0Nvbm4uY2hhbmdlKCAoKSA9PiB7XG5cdFx0XHRcdGFwcC50b2dnbGVOb0Nvbm5lY3Rpb25GaWVsZHMoKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHQvLyBPbmx5IGZpcmUgc2hvdy9oaWRlIGlmIHdlIGhhdmUgdGhlIG5vcm1hbCBjaGVja2JveC5cblx0XHRpZiAoIGFwcC4kYy5saXN0Lmxlbmd0aCApIHtcblxuXHRcdFx0Ly8gRmlyZSBvbmNlIHRvIGdldCBvdXIgbG9hZGVkIHN0YXRlIHNldCB1cC5cblx0XHRcdGFwcC50b2dnbGVDb25uZWN0aW9uRmllbGRzKCk7XG5cblx0XHRcdC8vIEJpbmQgdG8gZmlyZSB3aGVuIG5lZWRlZC5cblx0XHRcdGFwcC4kYy5saXN0LmNoYW5nZSggKCkgPT4ge1xuXHRcdFx0XHRhcHAudG9nZ2xlQ29ubmVjdGlvbkZpZWxkcygpO1xuXHRcdFx0fSApO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogVG9nZ2xlIHVubmVjZXNzYXJ5LCB1bmNvbm5lY3RlZCBvcHRpbiBmaWVsZHMgaWYgd2UncmUgbm90IHNob3dpbmcgdGhlIG9wdC1pbi5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLnRvZ2dsZU5vQ29ubmVjdGlvbkZpZWxkcyA9ICgpID0+IHtcblxuXHRcdGlmICggYXBwLiRjLm9wdGluTm9Db25uLnByb3AoICdjaGVja2VkJyApICkge1xuXHRcdFx0YXBwLiRjLmluc3RydWN0LnNsaWRlRG93bigpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhcHAuJGMuaW5zdHJ1Y3Quc2xpZGVVcCgpO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogIFRvZ2dsZSB1bm5lY2Vzc2FyeSwgKmNvbm5lY3RlZCogb3B0aW4gZmllbGRzIGlmIHdlJ3JlIG5vdCBzaG93aW5nIHRoZSBvcHQtaW4uXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdGFwcC50b2dnbGVDb25uZWN0aW9uRmllbGRzID0gKCkgPT4ge1xuXG5cdFx0Ly8gSWYgY2hlY2tlZCwgc2hvdyB0aGVtLCBlbHNlIGhpZGUgaXQuXG5cdFx0aWYgKCAnJyAhPT0gYXBwLiRjLmxpc3QudmFsKCkgKSB7XG5cdFx0XHRhcHAuJGMudGl0bGUuc2xpZGVEb3duKCk7XG5cdFx0XHRhcHAuJGMub3B0aW4uc2xpZGVEb3duKCk7XG5cdFx0XHRhcHAuJGMuaW5zdHJ1Y3Quc2xpZGVEb3duKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGFwcC4kYy50aXRsZS5zbGlkZVVwKCk7XG5cdFx0XHRhcHAuJGMub3B0aW4uc2xpZGVVcCgpO1xuXHRcdFx0YXBwLiRjLmluc3RydWN0LnNsaWRlVXAoKTtcblx0XHR9XG5cdH07XG5cblx0JCggYXBwLmluaXQgKTtcblxufSAoIHdpbmRvdywgalF1ZXJ5LCB3aW5kb3cuQ1RDVF9PcHRJbnMgKSApO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBT0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-admin/optins.js\n");
175
 
176
  /***/ }),
177
 
assets/js/ctct-plugin-frontend.js CHANGED
@@ -105,7 +105,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uti
105
  /*! no static exports found */
106
  /***/ (function(module, exports) {
107
 
108
- eval("/**\n * General-purpose utility stuff for CC plugin.\n */\n(function (global, $) {\n /**\n * Temporarily prevent the submit button from being clicked.\n */\n $(document).ready(function () {\n $('.ctct-submitted').on('click', function () {\n setTimeout(function () {\n disableSendButton();\n setTimeout(enableSendButton, 3000);\n }, 100);\n });\n });\n /**\n * Disable form submit button.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @return {mixed} jQuery if attribute is set, undefined if not.\n */\n\n function disableSendButton() {\n return $('.ctct-submitted').attr('disabled', 'disabled');\n }\n /**\n * Re-enable form submit buttons.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @return {mixed} jQuery if attribute is set, undefined if not.\n */\n\n\n function enableSendButton() {\n return $('.ctct-submitted').attr('disabled', null);\n }\n})(window, jQuery);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tZnJvbnRlbmQvdXRpbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Fzc2V0cy9qcy9jdGN0LXBsdWdpbi1mcm9udGVuZC91dGlsLmpzPzQ1NWIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmFsLXB1cnBvc2UgdXRpbGl0eSBzdHVmZiBmb3IgQ0MgcGx1Z2luLlxuICovXG4oIGZ1bmN0aW9uKCBnbG9iYWwsICQgKSB7XG5cblx0LyoqXG5cdCAqIFRlbXBvcmFyaWx5IHByZXZlbnQgdGhlIHN1Ym1pdCBidXR0b24gZnJvbSBiZWluZyBjbGlja2VkLlxuXHQgKi9cblx0JCggZG9jdW1lbnQgKS5yZWFkeSggKCkgPT4ge1xuXG5cdFx0JCggJy5jdGN0LXN1Ym1pdHRlZCcgKS5vbiggJ2NsaWNrJywgKCkgPT4ge1xuXHRcdFx0c2V0VGltZW91dCggKCkgPT4ge1xuXHRcdFx0XHRkaXNhYmxlU2VuZEJ1dHRvbigpO1xuXHRcdFx0XHRzZXRUaW1lb3V0KCBlbmFibGVTZW5kQnV0dG9uLCAzMDAwICk7XG5cdFx0XHR9LCAxMDAgKTtcblx0XHR9ICk7XG5cdH0gKTtcblxuXHQvKipcblx0ICogRGlzYWJsZSBmb3JtIHN1Ym1pdCBidXR0b24uXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICpcblx0ICogQHJldHVybiB7bWl4ZWR9IGpRdWVyeSBpZiBhdHRyaWJ1dGUgaXMgc2V0LCB1bmRlZmluZWQgaWYgbm90LlxuXHQgKi9cblx0ZnVuY3Rpb24gZGlzYWJsZVNlbmRCdXR0b24oKSB7XG5cdFx0cmV0dXJuICQoICcuY3RjdC1zdWJtaXR0ZWQnICkuYXR0ciggJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyApO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlLWVuYWJsZSBmb3JtIHN1Ym1pdCBidXR0b25zLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEByZXR1cm4ge21peGVkfSBqUXVlcnkgaWYgYXR0cmlidXRlIGlzIHNldCwgdW5kZWZpbmVkIGlmIG5vdC5cblx0ICovXG5cdGZ1bmN0aW9uIGVuYWJsZVNlbmRCdXR0b24oKSB7XG5cdFx0cmV0dXJuICQoICcuY3RjdC1zdWJtaXR0ZWQnICkuYXR0ciggJ2Rpc2FibGVkJywgbnVsbCApO1xuXHR9XG5cbn0gKCB3aW5kb3csIGpRdWVyeSApICk7XG4iXSwibWFwcGluZ3MiOiJBQUFBOzs7QUFHQTtBQUVBOzs7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBRUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-frontend/util.js\n");
109
 
110
  /***/ }),
111
 
@@ -116,7 +116,7 @@ eval("/**\n * General-purpose utility stuff for CC plugin.\n */\n(function (glob
116
  /*! no static exports found */
117
  /***/ (function(module, exports) {
118
 
119
- eval("/**\n * Front-end form validation.\n *\n * @since 1.0.0\n */\nwindow.CTCTSupport = {};\n\n(function (window, $, app) {\n var _this = this;\n\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 app.removePlaceholder();\n };\n /**\n * Remove placeholder text values.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.removePlaceholder = function () {\n $('.ctct-form-field input, textarea').focus(function () {\n $(_this).data('placeholder', $(_this).attr('placeholder')).attr('placeholder', '');\n }).blur(function () {\n $(_this).attr('placeholder', $(_this).data('placeholder'));\n });\n };\n /**\n * Cache DOM elements.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.cache = function () {\n app.$c = {\n $forms: []\n }; // Cache each form on the page.\n\n $('.ctct-form-wrapper').each(function (i, formWrapper) {\n app.$c.$forms.push($(formWrapper).find('form'));\n }); // For each form, cache its common elements.\n\n $.each(app.$c.$forms, function (i, form) {\n var $form = $(form);\n app.$c.$forms[i].$honeypot = $form.find('.ctct_usage_field');\n app.$c.$forms[i].$submitButton = $form.find('input[type=submit]');\n app.$c.$forms[i].$recaptcha = $form.find('.g-recaptcha');\n });\n app.timeout = null;\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\n\n app.setAllInputsValid = function () {\n $(app.$c.$form + ' .ctct-invalid').removeClass('ctct-invalid');\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\n\n app.processError = function (error) {\n // If we have an id property set.\n if ('undefined' !== typeof error.id) {\n $('#' + error.id).addClass('ctct-invalid');\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} e The change or keyup event triggering this callback.\n * @param {object} $honeyPot The jQuery object for the actual input field being checked.\n * @param {object} $submitButton The jQuery object for the submit button in the same form as the honeypot field.\n */\n\n\n app.checkHoneypot = function (e, $honeyPot, $submitButton) {\n // If there is text in the honeypot, disable the submit button\n if (0 < $honeyPot.val().length) {\n $submitButton.attr('disabled', 'disabled');\n } else {\n $submitButton.attr('disabled', false);\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 jQuery 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\n\n app.validateSubmission = function ($form) {\n if ('on' !== $form.attr('data-doajax')) {\n return false;\n } // Ensure all required fields in this form are valid.\n\n\n $.each($form.find('[required]'), function (i, field) {\n if (false === field.checkValidity()) {\n return false;\n }\n });\n return true;\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 jQuery 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 */\n\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.parents('.ctct-form-wrapper');\n $wrapper.find('p.ctct-message').remove();\n var $p = $('<p />', {\n 'class': 'ctct-message ' + classes,\n 'text': message,\n 'role': role\n }).prepend($('<button />', {\n 'class': 'button button-secondary ctct-dismiss ctct-dismiss-ajax-notice',\n 'html': '&#10005;',\n 'aria-label': 'Dismiss Notification'\n }));\n $p.insertBefore($form).fadeIn(200);\n $wrapper.find('.ctct-dismiss-ajax-notice').on('click', function () {\n $(this).parents('.ctct-message').remove();\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 jQuery object for the form being submitted.\n */\n\n\n app.submitForm = function ($form) {\n $form.find('.ctct-submitted').prop('disabled', true);\n var ajaxData = {\n 'action': 'ctct_process_form',\n 'data': $form.serialize()\n };\n $.post(window.ajaxurl, ajaxData, function (response) {\n $form.find('.ctct-submitted').prop('disabled', false);\n\n if ('undefined' === typeof response.status) {\n return false;\n } // Here we'll want to disable the submit button and add some error classes.\n\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\n return false;\n } // If we're here, the submission was a success; show message and reset form fields.\n\n\n app.showMessage($form, response.message, 'ctct-success', 'status');\n $form[0].reset();\n });\n };\n /**\n * Handle the form submission.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} e The submit event.\n * @param {object} $form jQuery object for the current form being handled.\n * @return {boolean} False if unable to validate the form.\n */\n\n\n app.handleSubmission = function (e, $form) {\n if (!app.validateSubmission($form)) {\n return false;\n }\n\n e.preventDefault();\n clearTimeout(app.timeout);\n app.timeout = setTimeout(app.submitForm, 500, $form);\n };\n /**\n * Set up event bindings and callbacks.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.bindEvents = function () {\n // eslint-disable-next-line no-unused-vars\n $.each(app.$c.$forms, function (i, form) {\n // Attach submission handler to each form's Submit button.\n app.$c.$forms[i].on('click', 'input[type=submit]', function (e) {\n app.handleSubmission(e, app.$c.$forms[i]);\n }); // Ensure each form's honeypot is checked.\n\n app.$c.$forms[i].$honeypot.on('change keyup', function (e) {\n app.checkHoneypot(e, app.$c.$forms[i].$honeypot, app.$c.$forms[i].$submitButton);\n }); // Disable the submit button by default until the captcha is passed (if captcha exists).\n\n if (0 < app.$c.$forms[i].$recaptcha.length) {\n app.$c.$forms[i].$submitButton.attr('disabled', 'disabled');\n }\n });\n };\n\n $(app.init);\n})(window, jQuery, window.CTCTSupport);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tZnJvbnRlbmQvdmFsaWRhdGlvbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Fzc2V0cy9qcy9jdGN0LXBsdWdpbi1mcm9udGVuZC92YWxpZGF0aW9uLmpzPzMzOTkiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGcm9udC1lbmQgZm9ybSB2YWxpZGF0aW9uLlxuICpcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5cbiB3aW5kb3cuQ1RDVFN1cHBvcnQgPSB7fTtcblxuKCBmdW5jdGlvbiggd2luZG93LCAkLCBhcHAgKSB7XG5cblx0LyoqXG5cdCAqIEBjb25zdHJ1Y3RvclxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqL1xuXHRhcHAuaW5pdCA9ICgpID0+IHtcblx0XHRhcHAuY2FjaGUoKTtcblx0XHRhcHAuYmluZEV2ZW50cygpO1xuXHRcdGFwcC5yZW1vdmVQbGFjZWhvbGRlcigpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBSZW1vdmUgcGxhY2Vob2xkZXIgdGV4dCB2YWx1ZXMuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdGFwcC5yZW1vdmVQbGFjZWhvbGRlciA9ICgpID0+IHtcblx0XHQkKCAnLmN0Y3QtZm9ybS1maWVsZCBpbnB1dCwgdGV4dGFyZWEnICkuZm9jdXMoICgpID0+IHtcblx0XHRcdCQoIHRoaXMgKS5kYXRhKCAncGxhY2Vob2xkZXInLCAkKCB0aGlzICkuYXR0ciggJ3BsYWNlaG9sZGVyJyApICkuYXR0ciggJ3BsYWNlaG9sZGVyJywgJycgKTtcblx0XHR9ICkuYmx1ciggKCkgPT4ge1xuXHRcdFx0JCggdGhpcyApLmF0dHIoICdwbGFjZWhvbGRlcicsICQoIHRoaXMgKS5kYXRhKCAncGxhY2Vob2xkZXInICkgKTtcblx0XHR9ICk7XG5cdH07XG5cblx0LyoqXG5cdCAqIENhY2hlIERPTSBlbGVtZW50cy5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLmNhY2hlID0gKCkgPT4ge1xuXG5cdFx0YXBwLiRjID0ge1xuXHRcdFx0JGZvcm1zOiBbXVxuXHRcdH07XG5cblx0XHQvLyBDYWNoZSBlYWNoIGZvcm0gb24gdGhlIHBhZ2UuXG5cdFx0JCggJy5jdGN0LWZvcm0td3JhcHBlcicgKS5lYWNoKCBmdW5jdGlvbiggaSwgZm9ybVdyYXBwZXIgKSB7XG5cdFx0XHRhcHAuJGMuJGZvcm1zLnB1c2goICQoIGZvcm1XcmFwcGVyICkuZmluZCggJ2Zvcm0nICkgKTtcblx0XHR9ICk7XG5cblx0XHQvLyBGb3IgZWFjaCBmb3JtLCBjYWNoZSBpdHMgY29tbW9uIGVsZW1lbnRzLlxuXHRcdCQuZWFjaCggYXBwLiRjLiRmb3JtcywgZnVuY3Rpb24oIGksIGZvcm0gKSB7XG5cblx0XHRcdHZhciAkZm9ybSA9ICQoIGZvcm0gKTtcblxuXHRcdFx0YXBwLiRjLiRmb3Jtc1sgaSBdLiRob25leXBvdCAgICAgPSAkZm9ybS5maW5kKCAnLmN0Y3RfdXNhZ2VfZmllbGQnICk7XG5cdFx0XHRhcHAuJGMuJGZvcm1zWyBpIF0uJHN1Ym1pdEJ1dHRvbiA9ICRmb3JtLmZpbmQoICdpbnB1dFt0eXBlPXN1Ym1pdF0nICk7XG5cdFx0XHRhcHAuJGMuJGZvcm1zWyBpIF0uJHJlY2FwdGNoYSAgICA9ICRmb3JtLmZpbmQoICcuZy1yZWNhcHRjaGEnICk7XG5cdFx0fSApO1xuXG5cdFx0YXBwLnRpbWVvdXQgPSBudWxsO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBSZW1vdmUgdGhlIGN0Y3QtaW52YWxpZCBjbGFzcyBmcm9tIGVsZW1lbnRzIHRoYXQgaGF2ZSBpdC5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLnNldEFsbElucHV0c1ZhbGlkID0gKCkgPT4ge1xuXHRcdCQoIGFwcC4kYy4kZm9ybSArICcgLmN0Y3QtaW52YWxpZCcgKS5yZW1vdmVDbGFzcyggJ2N0Y3QtaW52YWxpZCcgKTtcblx0fTtcblxuXHQvKipcblx0ICogQWRkcyAuY3RjdC1pbnZhbGlkIEhUTUwgY2xhc3MgdG8gaW5wdXRzIHdob3NlIHZhbHVlcyBhcmUgaW52YWxpZC5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZXJyb3IgQUpBWCByZXNwb25zZSBlcnJvciBvYmplY3QuXG5cdCAqL1xuXHRhcHAucHJvY2Vzc0Vycm9yID0gKCBlcnJvciApID0+IHtcblxuXHRcdC8vIElmIHdlIGhhdmUgYW4gaWQgcHJvcGVydHkgc2V0LlxuXHRcdGlmICggJ3VuZGVmaW5lZCcgIT09IHR5cGVvZiggZXJyb3IuaWQgKSApIHtcblx0XHRcdCQoICcjJyArIGVycm9yLmlkICkuYWRkQ2xhc3MoICdjdGN0LWludmFsaWQnICk7XG5cdFx0fVxuXHR9O1xuXG5cdC8qKlxuXHQgKiBDaGVjayB0aGUgdmFsdWUgb2YgdGhlIGhpZGRlbiBob25leXBvdCBmaWVsZDsgZGlzYWJsZSBmb3JtIHN1Ym1pc3Npb24gYnV0dG9uIGlmIGFueXRoaW5nIGluIGl0LlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBlIFRoZSBjaGFuZ2Ugb3Iga2V5dXAgZXZlbnQgdHJpZ2dlcmluZyB0aGlzIGNhbGxiYWNrLlxuXHQgKiBAcGFyYW0ge29iamVjdH0gJGhvbmV5UG90IFRoZSBqUXVlcnkgb2JqZWN0IGZvciB0aGUgYWN0dWFsIGlucHV0IGZpZWxkIGJlaW5nIGNoZWNrZWQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSAkc3VibWl0QnV0dG9uIFRoZSBqUXVlcnkgb2JqZWN0IGZvciB0aGUgc3VibWl0IGJ1dHRvbiBpbiB0aGUgc2FtZSBmb3JtIGFzIHRoZSBob25leXBvdCBmaWVsZC5cblx0ICovXG5cdGFwcC5jaGVja0hvbmV5cG90ID0gKCBlLCAkaG9uZXlQb3QsICRzdWJtaXRCdXR0b24gKSA9PiB7XG5cblx0XHQvLyBJZiB0aGVyZSBpcyB0ZXh0IGluIHRoZSBob25leXBvdCwgZGlzYWJsZSB0aGUgc3VibWl0IGJ1dHRvblxuXHRcdGlmICggMCA8ICRob25leVBvdC52YWwoKS5sZW5ndGggKSB7XG5cdFx0XHQkc3VibWl0QnV0dG9uLmF0dHIoICdkaXNhYmxlZCcsICdkaXNhYmxlZCcgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JHN1Ym1pdEJ1dHRvbi5hdHRyKCAnZGlzYWJsZWQnLCBmYWxzZSApO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogRW5zdXJlcyB0aGF0IHdlIHNob3VsZCB1c2UgQUpBWCB0byBwcm9jZXNzIHRoZSBzcGVjaWZpZWQgZm9ybSwgYW5kIHRoYXQgYWxsIHJlcXVpcmVkIGZpZWxkcyBhcmUgbm90IGVtcHR5LlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSAkZm9ybSBqUXVlcnkgb2JqZWN0IGZvciB0aGUgZm9ybSBiZWluZyB2YWxpZGF0ZWQuXG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59IEZhbHNlIGlmIEFKQVggcHJvY2Vzc2luZyBpcyBkaXNhYmxlZCBmb3IgdGhpcyBmb3JtIG9yIGlmIGEgcmVxdWlyZWQgZmllbGQgaXMgZW1wdHkuXG5cdCAqL1xuXHRhcHAudmFsaWRhdGVTdWJtaXNzaW9uID0gKCAkZm9ybSApID0+IHtcblxuXHRcdGlmICggJ29uJyAhPT0gJGZvcm0uYXR0ciggJ2RhdGEtZG9hamF4JyApICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIEVuc3VyZSBhbGwgcmVxdWlyZWQgZmllbGRzIGluIHRoaXMgZm9ybSBhcmUgdmFsaWQuXG5cdFx0JC5lYWNoKCAkZm9ybS5maW5kKCAnW3JlcXVpcmVkXScgKSwgZnVuY3Rpb24oIGksIGZpZWxkICkge1xuXG5cdFx0XHRpZiAoIGZhbHNlID09PSBmaWVsZC5jaGVja1ZhbGlkaXR5KCkgKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fTtcblxuXHQvKipcblx0ICogUHJlcGVuZHMgZm9ybSB3aXRoIGEgbWVzc2FnZSB0aGF0IGZhZGVzIG91dCBpbiA1IHNlY29uZHMuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICpcblx0ICogQHBhcmFtIHtvYmplY3R9ICRmb3JtIGpRdWVyeSBvYmplY3QgZm9yIHRoZSBmb3JtIGEgbWVzc2FnZSBpcyBiZWluZyBkaXNwbGF5ZWQgZm9yLlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSBjb250ZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NlcyBPcHRpb25hbC4gSFRNTCBjbGFzc2VzIHRvIGFkZCB0byB0aGUgbWVzc2FnZSB3cmFwcGVyLlxuXHQgKi9cblx0YXBwLnNob3dNZXNzYWdlID0gKCAkZm9ybSwgbWVzc2FnZSwgY2xhc3NlcyA9ICcnLCByb2xlID0gJ2xvZycgKSA9PiB7XG5cblx0XHRjb25zdCAkd3JhcHBlciA9ICRmb3JtLnBhcmVudHMoICcuY3RjdC1mb3JtLXdyYXBwZXInICk7XG5cblx0XHQkd3JhcHBlci5maW5kKCAncC5jdGN0LW1lc3NhZ2UnICkucmVtb3ZlKCk7XG5cblx0XHR2YXIgJHAgPSAkKCAnPHAgLz4nLCB7XG5cdFx0XHQnY2xhc3MnOiAnY3RjdC1tZXNzYWdlICcgKyBjbGFzc2VzLFxuXHRcdFx0J3RleHQnOiBtZXNzYWdlLFxuXHRcdFx0J3JvbGUnOiByb2xlXG5cdFx0fSApLnByZXBlbmQoICQoICc8YnV0dG9uIC8+Jywge1xuXHRcdFx0J2NsYXNzJzogJ2J1dHRvbiBidXR0b24tc2Vjb25kYXJ5IGN0Y3QtZGlzbWlzcyBjdGN0LWRpc21pc3MtYWpheC1ub3RpY2UnLFxuXHRcdFx0J2h0bWwnOiAnJiMxMDAwNTsnLFxuXHRcdFx0J2FyaWEtbGFiZWwnOiAnRGlzbWlzcyBOb3RpZmljYXRpb24nXG5cdFx0fSApICk7XG5cblx0XHQkcC5pbnNlcnRCZWZvcmUoICRmb3JtICkuZmFkZUluKCAyMDAgKTtcblxuXHRcdCR3cmFwcGVyLmZpbmQoICcuY3RjdC1kaXNtaXNzLWFqYXgtbm90aWNlJyApLm9uKCAnY2xpY2snLCBmdW5jdGlvbigpIHtcblx0XHRcdCQoIHRoaXMgKS5wYXJlbnRzKCAnLmN0Y3QtbWVzc2FnZScgKS5yZW1vdmUoKTtcblx0XHR9ICk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFN1Ym1pdHMgdGhlIGFjdHVhbCBmb3JtIHZpYSBBSkFYLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSAkZm9ybSBqUXVlcnkgb2JqZWN0IGZvciB0aGUgZm9ybSBiZWluZyBzdWJtaXR0ZWQuXG5cdCAqL1xuXHRhcHAuc3VibWl0Rm9ybSA9ICggJGZvcm0gKSA9PiB7XG5cblx0XHQkZm9ybS5maW5kKCAnLmN0Y3Qtc3VibWl0dGVkJyApLnByb3AoICdkaXNhYmxlZCcsIHRydWUgKTtcblxuXHRcdHZhciBhamF4RGF0YSA9IHtcblx0XHRcdCdhY3Rpb24nOiAnY3RjdF9wcm9jZXNzX2Zvcm0nLFxuXHRcdFx0J2RhdGEnOiAkZm9ybS5zZXJpYWxpemUoKVxuXHRcdH07XG5cblx0XHQkLnBvc3QoIHdpbmRvdy5hamF4dXJsLCBhamF4RGF0YSwgKCByZXNwb25zZSApID0+IHtcblxuXHRcdFx0JGZvcm0uZmluZCggJy5jdGN0LXN1Ym1pdHRlZCcgKS5wcm9wKCAnZGlzYWJsZWQnLCBmYWxzZSApO1xuXG5cdFx0XHRpZiAoICd1bmRlZmluZWQnID09PSB0eXBlb2YoIHJlc3BvbnNlLnN0YXR1cyApICkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEhlcmUgd2UnbGwgd2FudCB0byBkaXNhYmxlIHRoZSBzdWJtaXQgYnV0dG9uIGFuZCBhZGQgc29tZSBlcnJvciBjbGFzc2VzLlxuXHRcdFx0aWYgKCAnc3VjY2VzcycgIT09IHJlc3BvbnNlLnN0YXR1cyApIHtcblxuXHRcdFx0XHRpZiAoICd1bmRlZmluZWQnICE9PSB0eXBlb2YoIHJlc3BvbnNlLmVycm9ycyApICkge1xuXHRcdFx0XHRcdGFwcC5zZXRBbGxJbnB1dHNWYWxpZCgpO1xuXHRcdFx0XHRcdHJlc3BvbnNlLmVycm9ycy5mb3JFYWNoKCBhcHAucHJvY2Vzc0Vycm9yICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YXBwLnNob3dNZXNzYWdlKCAkZm9ybSwgcmVzcG9uc2UubWVzc2FnZSwgJ2N0Y3QtZXJyb3InLCAnYWxlcnQnICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIHdlJ3JlIGhlcmUsIHRoZSBzdWJtaXNzaW9uIHdhcyBhIHN1Y2Nlc3M7IHNob3cgbWVzc2FnZSBhbmQgcmVzZXQgZm9ybSBmaWVsZHMuXG5cdFx0XHRhcHAuc2hvd01lc3NhZ2UoICRmb3JtLCByZXNwb25zZS5tZXNzYWdlLCAnY3RjdC1zdWNjZXNzJywgJ3N0YXR1cycgKTtcblx0XHRcdCRmb3JtWzBdLnJlc2V0KCk7XG5cdFx0fSApO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBIYW5kbGUgdGhlIGZvcm0gc3VibWlzc2lvbi5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZSBUaGUgc3VibWl0IGV2ZW50LlxuXHQgKiBAcGFyYW0ge29iamVjdH0gJGZvcm0galF1ZXJ5IG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgZm9ybSBiZWluZyBoYW5kbGVkLlxuXHQgKiBAcmV0dXJuIHtib29sZWFufSBGYWxzZSBpZiB1bmFibGUgdG8gdmFsaWRhdGUgdGhlIGZvcm0uXG5cdCAqL1xuXHRhcHAuaGFuZGxlU3VibWlzc2lvbiA9ICggZSwgJGZvcm0gKSA9PiB7XG5cblx0XHRpZiAoICEgYXBwLnZhbGlkYXRlU3VibWlzc2lvbiggJGZvcm0gKSApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cblx0XHRjbGVhclRpbWVvdXQoIGFwcC50aW1lb3V0ICk7XG5cblx0XHRhcHAudGltZW91dCA9IHNldFRpbWVvdXQoIGFwcC5zdWJtaXRGb3JtLCA1MDAsICRmb3JtICk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFNldCB1cCBldmVudCBiaW5kaW5ncyBhbmQgY2FsbGJhY2tzLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqL1xuXHRhcHAuYmluZEV2ZW50cyA9ICgpID0+IHtcblxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuXHRcdCQuZWFjaCggYXBwLiRjLiRmb3JtcywgZnVuY3Rpb24oIGksIGZvcm0gKSB7XG5cblx0XHRcdC8vIEF0dGFjaCBzdWJtaXNzaW9uIGhhbmRsZXIgdG8gZWFjaCBmb3JtJ3MgU3VibWl0IGJ1dHRvbi5cblx0XHRcdGFwcC4kYy4kZm9ybXNbIGkgXS5vbiggJ2NsaWNrJywgJ2lucHV0W3R5cGU9c3VibWl0XScsICggZSApID0+IHtcblx0XHRcdFx0YXBwLmhhbmRsZVN1Ym1pc3Npb24oIGUsIGFwcC4kYy4kZm9ybXNbIGkgXSApO1xuXHRcdFx0fSApO1xuXG5cdFx0XHQvLyBFbnN1cmUgZWFjaCBmb3JtJ3MgaG9uZXlwb3QgaXMgY2hlY2tlZC5cblx0XHRcdGFwcC4kYy4kZm9ybXNbIGkgXS4kaG9uZXlwb3Qub24oICdjaGFuZ2Uga2V5dXAnLCAoIGUgKSA9PiB7XG5cblx0XHRcdFx0YXBwLmNoZWNrSG9uZXlwb3QoXG5cdFx0XHRcdFx0ZSxcblx0XHRcdFx0XHRhcHAuJGMuJGZvcm1zWyBpIF0uJGhvbmV5cG90LFxuXHRcdFx0XHRcdGFwcC4kYy4kZm9ybXNbIGkgXS4kc3VibWl0QnV0dG9uXG5cdFx0XHRcdCk7XG5cdFx0XHR9ICk7XG5cblx0XHRcdC8vIERpc2FibGUgdGhlIHN1Ym1pdCBidXR0b24gYnkgZGVmYXVsdCB1bnRpbCB0aGUgY2FwdGNoYSBpcyBwYXNzZWQgKGlmIGNhcHRjaGEgZXhpc3RzKS5cblx0XHRcdGlmICggMCA8IGFwcC4kYy4kZm9ybXNbIGkgXS4kcmVjYXB0Y2hhLmxlbmd0aCApIHtcblx0XHRcdFx0YXBwLiRjLiRmb3Jtc1sgaSBdLiRzdWJtaXRCdXR0b24uYXR0ciggJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyApO1xuXHRcdFx0fVxuXG5cdFx0fSApO1xuXHR9O1xuXG5cdCQoIGFwcC5pbml0ICk7XG5cbn0gKCB3aW5kb3csIGpRdWVyeSwgd2luZG93LkNUQ1RTdXBwb3J0ICkgKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBOzs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7QUFNQTtBQUVBO0FBQ0E7QUFEQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7Ozs7QUFRQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7Ozs7O0FBVUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7Ozs7OztBQVNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7Ozs7Ozs7Ozs7OztBQVVBO0FBQUE7QUFBQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBSEE7QUFNQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7Ozs7QUFRQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRkE7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7Ozs7O0FBVUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBRUE7Ozs7Ozs7O0FBTUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-frontend/validation.js\n");
120
 
121
  /***/ }),
122
 
105
  /*! no static exports found */
106
  /***/ (function(module, exports) {
107
 
108
+ eval("/**\n * General-purpose utility stuff for CC plugin.\n */\n(function (global, $) {\n /**\n * Temporarily prevent the submit button from being clicked.\n */\n $(document).ready(function () {\n $('.ctct-submitted').on('click', function () {\n setTimeout(function () {\n disableSendButton();\n setTimeout(enableSendButton, 3000);\n }, 100);\n });\n });\n /**\n * Disable form submit button.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @return {mixed} jQuery if attribute is set, undefined if not.\n */\n\n function disableSendButton() {\n return $('.ctct-submitted').attr('disabled', 'disabled');\n }\n /**\n * Re-enable form submit buttons.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @return {mixed} jQuery if attribute is set, undefined if not.\n */\n\n\n function enableSendButton() {\n return $('.ctct-submitted').attr('disabled', null);\n }\n})(window, jQuery);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tZnJvbnRlbmQvdXRpbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Fzc2V0cy9qcy9jdGN0LXBsdWdpbi1mcm9udGVuZC91dGlsLmpzPzQ1NWIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmFsLXB1cnBvc2UgdXRpbGl0eSBzdHVmZiBmb3IgQ0MgcGx1Z2luLlxuICovXG4oIGZ1bmN0aW9uKCBnbG9iYWwsICQgKSB7XG5cblx0LyoqXG5cdCAqIFRlbXBvcmFyaWx5IHByZXZlbnQgdGhlIHN1Ym1pdCBidXR0b24gZnJvbSBiZWluZyBjbGlja2VkLlxuXHQgKi9cblx0JCggZG9jdW1lbnQgKS5yZWFkeSggKCkgPT4ge1xuXG5cdFx0JCggJy5jdGN0LXN1Ym1pdHRlZCcgKS5vbiggJ2NsaWNrJywgKCkgPT4ge1xuXHRcdFx0c2V0VGltZW91dCggKCkgPT4ge1xuXHRcdFx0XHRkaXNhYmxlU2VuZEJ1dHRvbigpO1xuXHRcdFx0XHRzZXRUaW1lb3V0KCBlbmFibGVTZW5kQnV0dG9uLCAzMDAwICk7XG5cdFx0XHR9LCAxMDAgKTtcblx0XHR9ICk7XG5cdH0gKTtcblxuXHQvKipcblx0ICogRGlzYWJsZSBmb3JtIHN1Ym1pdCBidXR0b24uXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICpcblx0ICogQHJldHVybiB7bWl4ZWR9IGpRdWVyeSBpZiBhdHRyaWJ1dGUgaXMgc2V0LCB1bmRlZmluZWQgaWYgbm90LlxuXHQgKi9cblx0ZnVuY3Rpb24gZGlzYWJsZVNlbmRCdXR0b24oKSB7XG5cdFx0cmV0dXJuICQoICcuY3RjdC1zdWJtaXR0ZWQnICkuYXR0ciggJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyApO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlLWVuYWJsZSBmb3JtIHN1Ym1pdCBidXR0b25zLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEByZXR1cm4ge21peGVkfSBqUXVlcnkgaWYgYXR0cmlidXRlIGlzIHNldCwgdW5kZWZpbmVkIGlmIG5vdC5cblx0ICovXG5cdGZ1bmN0aW9uIGVuYWJsZVNlbmRCdXR0b24oKSB7XG5cdFx0cmV0dXJuICQoICcuY3RjdC1zdWJtaXR0ZWQnICkuYXR0ciggJ2Rpc2FibGVkJywgbnVsbCApO1xuXHR9XG5cbn0gKCB3aW5kb3csIGpRdWVyeSApICk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBRUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-frontend/util.js\n");
109
 
110
  /***/ }),
111
 
116
  /*! no static exports found */
117
  /***/ (function(module, exports) {
118
 
119
+ eval("/**\n * Front-end form validation.\n *\n * @since 1.0.0\n */\nwindow.CTCTSupport = {};\n\n(function (window, $, app) {\n var _this = this;\n\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 app.removePlaceholder();\n };\n /**\n * Remove placeholder text values.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.removePlaceholder = function () {\n $('.ctct-form-field input, textarea').focus(function () {\n $(_this).data('placeholder', $(_this).attr('placeholder')).attr('placeholder', '');\n }).blur(function () {\n $(_this).attr('placeholder', $(_this).data('placeholder'));\n });\n };\n /**\n * Cache DOM elements.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.cache = function () {\n app.$c = {\n $forms: []\n }; // Cache each form on the page.\n\n $('.ctct-form-wrapper').each(function (i, formWrapper) {\n app.$c.$forms.push($(formWrapper).find('form'));\n }); // For each form, cache its common elements.\n\n $.each(app.$c.$forms, function (i, form) {\n var $form = $(form);\n app.$c.$forms[i].$honeypot = $form.find('.ctct_usage_field');\n app.$c.$forms[i].$submitButton = $form.find('input[type=submit]');\n app.$c.$forms[i].$recaptcha = $form.find('.g-recaptcha');\n });\n app.timeout = null;\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\n\n app.setAllInputsValid = function () {\n $(app.$c.$form + ' .ctct-invalid').removeClass('ctct-invalid');\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\n\n app.processError = function (error) {\n // If we have an id property set.\n if ('undefined' !== typeof error.id) {\n $('#' + error.id).addClass('ctct-invalid');\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} e The change or keyup event triggering this callback.\n * @param {object} $honeyPot The jQuery object for the actual input field being checked.\n * @param {object} $submitButton The jQuery object for the submit button in the same form as the honeypot field.\n */\n\n\n app.checkHoneypot = function (e, $honeyPot, $submitButton) {\n // If there is text in the honeypot, disable the submit button\n if (0 < $honeyPot.val().length) {\n $submitButton.attr('disabled', 'disabled');\n } else {\n $submitButton.attr('disabled', false);\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 jQuery 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\n\n app.validateSubmission = function ($form) {\n if ('on' !== $form.attr('data-doajax')) {\n return false;\n } // Ensure all required fields in this form are valid.\n\n\n $.each($form.find('[required]'), function (i, field) {\n if (false === field.checkValidity()) {\n return false;\n }\n });\n return true;\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 jQuery 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 */\n\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.parents('.ctct-form-wrapper');\n $wrapper.find('p.ctct-message').remove();\n var $p = $('<p />', {\n 'class': 'ctct-message ' + classes,\n 'text': message,\n 'role': role\n }).prepend($('<button />', {\n 'class': 'button button-secondary ctct-dismiss ctct-dismiss-ajax-notice',\n 'html': '&#10005;',\n 'aria-label': 'Dismiss Notification'\n }));\n $p.insertBefore($form).fadeIn(200);\n $wrapper.find('.ctct-dismiss-ajax-notice').on('click', function () {\n $(this).parents('.ctct-message').remove();\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 jQuery object for the form being submitted.\n */\n\n\n app.submitForm = function ($form) {\n $form.find('.ctct-submitted').prop('disabled', true);\n var ajaxData = {\n 'action': 'ctct_process_form',\n 'data': $form.serialize()\n };\n $.post(window.ajaxurl, ajaxData, function (response) {\n $form.find('.ctct-submitted').prop('disabled', false);\n\n if ('undefined' === typeof response.status) {\n return false;\n } // Here we'll want to disable the submit button and add some error classes.\n\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\n return false;\n }\n\n $form.hide(); // If we're here, the submission was a success; show message and reset form fields.\n\n app.showMessage($form, response.message, 'ctct-success', 'status');\n $form[0].reset();\n });\n };\n /**\n * Handle the form submission.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} e The submit event.\n * @param {object} $form jQuery object for the current form being handled.\n * @return {boolean} False if unable to validate the form.\n */\n\n\n app.handleSubmission = function (e, $form) {\n if (!app.validateSubmission($form)) {\n return false;\n }\n\n clearTimeout(app.timeout);\n\n if ($form[0].checkValidity()) {\n e.preventDefault();\n app.timeout = setTimeout(app.submitForm, 500, $form);\n }\n };\n /**\n * Set up event bindings and callbacks.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.bindEvents = function () {\n // eslint-disable-next-line no-unused-vars\n $.each(app.$c.$forms, function (i, form) {\n // Attach submission handler to each form's Submit button.\n app.$c.$forms[i].on('click', 'input[type=submit]', function (e) {\n app.handleSubmission(e, app.$c.$forms[i]);\n }); // Ensure each form's honeypot is checked.\n\n app.$c.$forms[i].$honeypot.on('change keyup', function (e) {\n app.checkHoneypot(e, app.$c.$forms[i].$honeypot, app.$c.$forms[i].$submitButton);\n }); // Disable the submit button by default until the captcha is passed (if captcha exists).\n\n if (0 < app.$c.$forms[i].$recaptcha.length) {\n app.$c.$forms[i].$submitButton.attr('disabled', 'disabled');\n }\n });\n };\n\n $(app.init);\n})(window, jQuery, window.CTCTSupport);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tZnJvbnRlbmQvdmFsaWRhdGlvbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Fzc2V0cy9qcy9jdGN0LXBsdWdpbi1mcm9udGVuZC92YWxpZGF0aW9uLmpzPzMzOTkiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGcm9udC1lbmQgZm9ybSB2YWxpZGF0aW9uLlxuICpcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5cbiB3aW5kb3cuQ1RDVFN1cHBvcnQgPSB7fTtcblxuKCBmdW5jdGlvbiggd2luZG93LCAkLCBhcHAgKSB7XG5cblx0LyoqXG5cdCAqIEBjb25zdHJ1Y3RvclxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqL1xuXHRhcHAuaW5pdCA9ICgpID0+IHtcblx0XHRhcHAuY2FjaGUoKTtcblx0XHRhcHAuYmluZEV2ZW50cygpO1xuXHRcdGFwcC5yZW1vdmVQbGFjZWhvbGRlcigpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBSZW1vdmUgcGxhY2Vob2xkZXIgdGV4dCB2YWx1ZXMuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdGFwcC5yZW1vdmVQbGFjZWhvbGRlciA9ICgpID0+IHtcblx0XHQkKCAnLmN0Y3QtZm9ybS1maWVsZCBpbnB1dCwgdGV4dGFyZWEnICkuZm9jdXMoICgpID0+IHtcblx0XHRcdCQoIHRoaXMgKS5kYXRhKCAncGxhY2Vob2xkZXInLCAkKCB0aGlzICkuYXR0ciggJ3BsYWNlaG9sZGVyJyApICkuYXR0ciggJ3BsYWNlaG9sZGVyJywgJycgKTtcblx0XHR9ICkuYmx1ciggKCkgPT4ge1xuXHRcdFx0JCggdGhpcyApLmF0dHIoICdwbGFjZWhvbGRlcicsICQoIHRoaXMgKS5kYXRhKCAncGxhY2Vob2xkZXInICkgKTtcblx0XHR9ICk7XG5cdH07XG5cblx0LyoqXG5cdCAqIENhY2hlIERPTSBlbGVtZW50cy5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLmNhY2hlID0gKCkgPT4ge1xuXG5cdFx0YXBwLiRjID0ge1xuXHRcdFx0JGZvcm1zOiBbXVxuXHRcdH07XG5cblx0XHQvLyBDYWNoZSBlYWNoIGZvcm0gb24gdGhlIHBhZ2UuXG5cdFx0JCggJy5jdGN0LWZvcm0td3JhcHBlcicgKS5lYWNoKCBmdW5jdGlvbiggaSwgZm9ybVdyYXBwZXIgKSB7XG5cdFx0XHRhcHAuJGMuJGZvcm1zLnB1c2goICQoIGZvcm1XcmFwcGVyICkuZmluZCggJ2Zvcm0nICkgKTtcblx0XHR9ICk7XG5cblx0XHQvLyBGb3IgZWFjaCBmb3JtLCBjYWNoZSBpdHMgY29tbW9uIGVsZW1lbnRzLlxuXHRcdCQuZWFjaCggYXBwLiRjLiRmb3JtcywgZnVuY3Rpb24oIGksIGZvcm0gKSB7XG5cblx0XHRcdHZhciAkZm9ybSA9ICQoIGZvcm0gKTtcblxuXHRcdFx0YXBwLiRjLiRmb3Jtc1sgaSBdLiRob25leXBvdCAgICAgPSAkZm9ybS5maW5kKCAnLmN0Y3RfdXNhZ2VfZmllbGQnICk7XG5cdFx0XHRhcHAuJGMuJGZvcm1zWyBpIF0uJHN1Ym1pdEJ1dHRvbiA9ICRmb3JtLmZpbmQoICdpbnB1dFt0eXBlPXN1Ym1pdF0nICk7XG5cdFx0XHRhcHAuJGMuJGZvcm1zWyBpIF0uJHJlY2FwdGNoYSAgICA9ICRmb3JtLmZpbmQoICcuZy1yZWNhcHRjaGEnICk7XG5cdFx0fSApO1xuXG5cdFx0YXBwLnRpbWVvdXQgPSBudWxsO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBSZW1vdmUgdGhlIGN0Y3QtaW52YWxpZCBjbGFzcyBmcm9tIGVsZW1lbnRzIHRoYXQgaGF2ZSBpdC5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLnNldEFsbElucHV0c1ZhbGlkID0gKCkgPT4ge1xuXHRcdCQoIGFwcC4kYy4kZm9ybSArICcgLmN0Y3QtaW52YWxpZCcgKS5yZW1vdmVDbGFzcyggJ2N0Y3QtaW52YWxpZCcgKTtcblx0fTtcblxuXHQvKipcblx0ICogQWRkcyAuY3RjdC1pbnZhbGlkIEhUTUwgY2xhc3MgdG8gaW5wdXRzIHdob3NlIHZhbHVlcyBhcmUgaW52YWxpZC5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZXJyb3IgQUpBWCByZXNwb25zZSBlcnJvciBvYmplY3QuXG5cdCAqL1xuXHRhcHAucHJvY2Vzc0Vycm9yID0gKCBlcnJvciApID0+IHtcblxuXHRcdC8vIElmIHdlIGhhdmUgYW4gaWQgcHJvcGVydHkgc2V0LlxuXHRcdGlmICggJ3VuZGVmaW5lZCcgIT09IHR5cGVvZiggZXJyb3IuaWQgKSApIHtcblx0XHRcdCQoICcjJyArIGVycm9yLmlkICkuYWRkQ2xhc3MoICdjdGN0LWludmFsaWQnICk7XG5cdFx0fVxuXHR9O1xuXG5cdC8qKlxuXHQgKiBDaGVjayB0aGUgdmFsdWUgb2YgdGhlIGhpZGRlbiBob25leXBvdCBmaWVsZDsgZGlzYWJsZSBmb3JtIHN1Ym1pc3Npb24gYnV0dG9uIGlmIGFueXRoaW5nIGluIGl0LlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBlIFRoZSBjaGFuZ2Ugb3Iga2V5dXAgZXZlbnQgdHJpZ2dlcmluZyB0aGlzIGNhbGxiYWNrLlxuXHQgKiBAcGFyYW0ge29iamVjdH0gJGhvbmV5UG90IFRoZSBqUXVlcnkgb2JqZWN0IGZvciB0aGUgYWN0dWFsIGlucHV0IGZpZWxkIGJlaW5nIGNoZWNrZWQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSAkc3VibWl0QnV0dG9uIFRoZSBqUXVlcnkgb2JqZWN0IGZvciB0aGUgc3VibWl0IGJ1dHRvbiBpbiB0aGUgc2FtZSBmb3JtIGFzIHRoZSBob25leXBvdCBmaWVsZC5cblx0ICovXG5cdGFwcC5jaGVja0hvbmV5cG90ID0gKCBlLCAkaG9uZXlQb3QsICRzdWJtaXRCdXR0b24gKSA9PiB7XG5cblx0XHQvLyBJZiB0aGVyZSBpcyB0ZXh0IGluIHRoZSBob25leXBvdCwgZGlzYWJsZSB0aGUgc3VibWl0IGJ1dHRvblxuXHRcdGlmICggMCA8ICRob25leVBvdC52YWwoKS5sZW5ndGggKSB7XG5cdFx0XHQkc3VibWl0QnV0dG9uLmF0dHIoICdkaXNhYmxlZCcsICdkaXNhYmxlZCcgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JHN1Ym1pdEJ1dHRvbi5hdHRyKCAnZGlzYWJsZWQnLCBmYWxzZSApO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogRW5zdXJlcyB0aGF0IHdlIHNob3VsZCB1c2UgQUpBWCB0byBwcm9jZXNzIHRoZSBzcGVjaWZpZWQgZm9ybSwgYW5kIHRoYXQgYWxsIHJlcXVpcmVkIGZpZWxkcyBhcmUgbm90IGVtcHR5LlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSAkZm9ybSBqUXVlcnkgb2JqZWN0IGZvciB0aGUgZm9ybSBiZWluZyB2YWxpZGF0ZWQuXG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59IEZhbHNlIGlmIEFKQVggcHJvY2Vzc2luZyBpcyBkaXNhYmxlZCBmb3IgdGhpcyBmb3JtIG9yIGlmIGEgcmVxdWlyZWQgZmllbGQgaXMgZW1wdHkuXG5cdCAqL1xuXHRhcHAudmFsaWRhdGVTdWJtaXNzaW9uID0gKCAkZm9ybSApID0+IHtcblxuXHRcdGlmICggJ29uJyAhPT0gJGZvcm0uYXR0ciggJ2RhdGEtZG9hamF4JyApICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIEVuc3VyZSBhbGwgcmVxdWlyZWQgZmllbGRzIGluIHRoaXMgZm9ybSBhcmUgdmFsaWQuXG5cdFx0JC5lYWNoKCAkZm9ybS5maW5kKCAnW3JlcXVpcmVkXScgKSwgZnVuY3Rpb24oIGksIGZpZWxkICkge1xuXG5cdFx0XHRpZiAoIGZhbHNlID09PSBmaWVsZC5jaGVja1ZhbGlkaXR5KCkgKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fTtcblxuXHQvKipcblx0ICogUHJlcGVuZHMgZm9ybSB3aXRoIGEgbWVzc2FnZSB0aGF0IGZhZGVzIG91dCBpbiA1IHNlY29uZHMuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICpcblx0ICogQHBhcmFtIHtvYmplY3R9ICRmb3JtIGpRdWVyeSBvYmplY3QgZm9yIHRoZSBmb3JtIGEgbWVzc2FnZSBpcyBiZWluZyBkaXNwbGF5ZWQgZm9yLlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSBjb250ZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NlcyBPcHRpb25hbC4gSFRNTCBjbGFzc2VzIHRvIGFkZCB0byB0aGUgbWVzc2FnZSB3cmFwcGVyLlxuXHQgKi9cblx0YXBwLnNob3dNZXNzYWdlID0gKCAkZm9ybSwgbWVzc2FnZSwgY2xhc3NlcyA9ICcnLCByb2xlID0gJ2xvZycgKSA9PiB7XG5cblx0XHRjb25zdCAkd3JhcHBlciA9ICRmb3JtLnBhcmVudHMoICcuY3RjdC1mb3JtLXdyYXBwZXInICk7XG5cblx0XHQkd3JhcHBlci5maW5kKCAncC5jdGN0LW1lc3NhZ2UnICkucmVtb3ZlKCk7XG5cblx0XHR2YXIgJHAgPSAkKCAnPHAgLz4nLCB7XG5cdFx0XHQnY2xhc3MnOiAnY3RjdC1tZXNzYWdlICcgKyBjbGFzc2VzLFxuXHRcdFx0J3RleHQnOiBtZXNzYWdlLFxuXHRcdFx0J3JvbGUnOiByb2xlXG5cdFx0fSApLnByZXBlbmQoICQoICc8YnV0dG9uIC8+Jywge1xuXHRcdFx0J2NsYXNzJzogJ2J1dHRvbiBidXR0b24tc2Vjb25kYXJ5IGN0Y3QtZGlzbWlzcyBjdGN0LWRpc21pc3MtYWpheC1ub3RpY2UnLFxuXHRcdFx0J2h0bWwnOiAnJiMxMDAwNTsnLFxuXHRcdFx0J2FyaWEtbGFiZWwnOiAnRGlzbWlzcyBOb3RpZmljYXRpb24nXG5cdFx0fSApICk7XG5cblx0XHQkcC5pbnNlcnRCZWZvcmUoICRmb3JtICkuZmFkZUluKCAyMDAgKTtcblxuXHRcdCR3cmFwcGVyLmZpbmQoICcuY3RjdC1kaXNtaXNzLWFqYXgtbm90aWNlJyApLm9uKCAnY2xpY2snLCBmdW5jdGlvbigpIHtcblx0XHRcdCQoIHRoaXMgKS5wYXJlbnRzKCAnLmN0Y3QtbWVzc2FnZScgKS5yZW1vdmUoKTtcblx0XHR9ICk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFN1Ym1pdHMgdGhlIGFjdHVhbCBmb3JtIHZpYSBBSkFYLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSAkZm9ybSBqUXVlcnkgb2JqZWN0IGZvciB0aGUgZm9ybSBiZWluZyBzdWJtaXR0ZWQuXG5cdCAqL1xuXHRhcHAuc3VibWl0Rm9ybSA9ICggJGZvcm0gKSA9PiB7XG5cblx0XHQkZm9ybS5maW5kKCAnLmN0Y3Qtc3VibWl0dGVkJyApLnByb3AoICdkaXNhYmxlZCcsIHRydWUgKTtcblxuXHRcdHZhciBhamF4RGF0YSA9IHtcblx0XHRcdCdhY3Rpb24nOiAnY3RjdF9wcm9jZXNzX2Zvcm0nLFxuXHRcdFx0J2RhdGEnOiAkZm9ybS5zZXJpYWxpemUoKVxuXHRcdH07XG5cblx0XHQkLnBvc3QoIHdpbmRvdy5hamF4dXJsLCBhamF4RGF0YSwgKCByZXNwb25zZSApID0+IHtcblxuXHRcdFx0JGZvcm0uZmluZCggJy5jdGN0LXN1Ym1pdHRlZCcgKS5wcm9wKCAnZGlzYWJsZWQnLCBmYWxzZSApO1xuXG5cdFx0XHRpZiAoICd1bmRlZmluZWQnID09PSB0eXBlb2YoIHJlc3BvbnNlLnN0YXR1cyApICkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEhlcmUgd2UnbGwgd2FudCB0byBkaXNhYmxlIHRoZSBzdWJtaXQgYnV0dG9uIGFuZCBhZGQgc29tZSBlcnJvciBjbGFzc2VzLlxuXHRcdFx0aWYgKCAnc3VjY2VzcycgIT09IHJlc3BvbnNlLnN0YXR1cyApIHtcblxuXHRcdFx0XHRpZiAoICd1bmRlZmluZWQnICE9PSB0eXBlb2YoIHJlc3BvbnNlLmVycm9ycyApICkge1xuXHRcdFx0XHRcdGFwcC5zZXRBbGxJbnB1dHNWYWxpZCgpO1xuXHRcdFx0XHRcdHJlc3BvbnNlLmVycm9ycy5mb3JFYWNoKCBhcHAucHJvY2Vzc0Vycm9yICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YXBwLnNob3dNZXNzYWdlKCAkZm9ybSwgcmVzcG9uc2UubWVzc2FnZSwgJ2N0Y3QtZXJyb3InLCAnYWxlcnQnICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHQkZm9ybS5oaWRlKCk7XG5cdFx0XHQvLyBJZiB3ZSdyZSBoZXJlLCB0aGUgc3VibWlzc2lvbiB3YXMgYSBzdWNjZXNzOyBzaG93IG1lc3NhZ2UgYW5kIHJlc2V0IGZvcm0gZmllbGRzLlxuXHRcdFx0YXBwLnNob3dNZXNzYWdlKCAkZm9ybSwgcmVzcG9uc2UubWVzc2FnZSwgJ2N0Y3Qtc3VjY2VzcycsICdzdGF0dXMnICk7XG5cdFx0XHQkZm9ybVswXS5yZXNldCgpO1xuXHRcdH0gKTtcblx0fTtcblxuXHQvKipcblx0ICogSGFuZGxlIHRoZSBmb3JtIHN1Ym1pc3Npb24uXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICpcblx0ICogQHBhcmFtIHtvYmplY3R9IGUgVGhlIHN1Ym1pdCBldmVudC5cblx0ICogQHBhcmFtIHtvYmplY3R9ICRmb3JtIGpRdWVyeSBvYmplY3QgZm9yIHRoZSBjdXJyZW50IGZvcm0gYmVpbmcgaGFuZGxlZC5cblx0ICogQHJldHVybiB7Ym9vbGVhbn0gRmFsc2UgaWYgdW5hYmxlIHRvIHZhbGlkYXRlIHRoZSBmb3JtLlxuXHQgKi9cblx0YXBwLmhhbmRsZVN1Ym1pc3Npb24gPSAoIGUsICRmb3JtICkgPT4ge1xuXG5cblx0XHRpZiAoICEgYXBwLnZhbGlkYXRlU3VibWlzc2lvbiggJGZvcm0gKSApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRjbGVhclRpbWVvdXQoIGFwcC50aW1lb3V0ICk7XG5cblx0XHRpZigkZm9ybVswXS5jaGVja1ZhbGlkaXR5KCkpe1xuXHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0YXBwLnRpbWVvdXQgPSBzZXRUaW1lb3V0KCBhcHAuc3VibWl0Rm9ybSwgNTAwLCAkZm9ybSApO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogU2V0IHVwIGV2ZW50IGJpbmRpbmdzIGFuZCBjYWxsYmFja3MuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdGFwcC5iaW5kRXZlbnRzID0gKCkgPT4ge1xuXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG5cdFx0JC5lYWNoKCBhcHAuJGMuJGZvcm1zLCBmdW5jdGlvbiggaSwgZm9ybSApIHtcblxuXHRcdFx0Ly8gQXR0YWNoIHN1Ym1pc3Npb24gaGFuZGxlciB0byBlYWNoIGZvcm0ncyBTdWJtaXQgYnV0dG9uLlxuXHRcdFx0YXBwLiRjLiRmb3Jtc1sgaSBdLm9uKCAnY2xpY2snLCAnaW5wdXRbdHlwZT1zdWJtaXRdJywgKCBlICkgPT4ge1xuXHRcdFx0XHRhcHAuaGFuZGxlU3VibWlzc2lvbiggZSwgYXBwLiRjLiRmb3Jtc1sgaSBdICk7XG5cdFx0XHR9ICk7XG5cblx0XHRcdC8vIEVuc3VyZSBlYWNoIGZvcm0ncyBob25leXBvdCBpcyBjaGVja2VkLlxuXHRcdFx0YXBwLiRjLiRmb3Jtc1sgaSBdLiRob25leXBvdC5vbiggJ2NoYW5nZSBrZXl1cCcsICggZSApID0+IHtcblxuXHRcdFx0XHRhcHAuY2hlY2tIb25leXBvdChcblx0XHRcdFx0XHRlLFxuXHRcdFx0XHRcdGFwcC4kYy4kZm9ybXNbIGkgXS4kaG9uZXlwb3QsXG5cdFx0XHRcdFx0YXBwLiRjLiRmb3Jtc1sgaSBdLiRzdWJtaXRCdXR0b25cblx0XHRcdFx0KTtcblx0XHRcdH0gKTtcblxuXHRcdFx0Ly8gRGlzYWJsZSB0aGUgc3VibWl0IGJ1dHRvbiBieSBkZWZhdWx0IHVudGlsIHRoZSBjYXB0Y2hhIGlzIHBhc3NlZCAoaWYgY2FwdGNoYSBleGlzdHMpLlxuXHRcdFx0aWYgKCAwIDwgYXBwLiRjLiRmb3Jtc1sgaSBdLiRyZWNhcHRjaGEubGVuZ3RoICkge1xuXHRcdFx0XHRhcHAuJGMuJGZvcm1zWyBpIF0uJHN1Ym1pdEJ1dHRvbi5hdHRyKCAnZGlzYWJsZWQnLCAnZGlzYWJsZWQnICk7XG5cdFx0XHR9XG5cblx0XHR9ICk7XG5cdH07XG5cblx0JCggYXBwLmluaXQgKTtcblxufSAoIHdpbmRvdywgalF1ZXJ5LCB3aW5kb3cuQ1RDVFN1cHBvcnQgKSApO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBREE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUhBO0FBTUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUZBO0FBS0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-frontend/validation.js\n");
120
 
121
  /***/ }),
122
 
assets/js/ctct-plugin-frontend.min.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(t){var e={};function n(o){if(e[o])return e[o].exports;var c=e[o]={i:o,l:!1,exports:{}};return t[o].call(c.exports,c,c.exports,n),c.l=!0,c.exports}n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var c in t)n.d(o,c,function(e){return t[e]}.bind(null,c));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/",n(n.s=10)}([,,,,,,,,,,function(t,e,n){t.exports=n(11)},function(t,e,n){"use strict";n.r(e);n(12),n(13)},function(t,e){!function(t,e){function n(){return e(".ctct-submitted").attr("disabled",null)}e(document).ready((function(){e(".ctct-submitted").on("click",(function(){setTimeout((function(){e(".ctct-submitted").attr("disabled","disabled"),setTimeout(n,3e3)}),100)}))}))}(window,jQuery)},function(t,e){window.CTCTSupport={},function(t,e,n){var o=this;n.init=function(){n.cache(),n.bindEvents(),n.removePlaceholder()},n.removePlaceholder=function(){e(".ctct-form-field input, textarea").focus((function(){e(o).data("placeholder",e(o).attr("placeholder")).attr("placeholder","")})).blur((function(){e(o).attr("placeholder",e(o).data("placeholder"))}))},n.cache=function(){n.$c={$forms:[]},e(".ctct-form-wrapper").each((function(t,o){n.$c.$forms.push(e(o).find("form"))})),e.each(n.$c.$forms,(function(t,o){var c=e(o);n.$c.$forms[t].$honeypot=c.find(".ctct_usage_field"),n.$c.$forms[t].$submitButton=c.find("input[type=submit]"),n.$c.$forms[t].$recaptcha=c.find(".g-recaptcha")})),n.timeout=null},n.setAllInputsValid=function(){e(n.$c.$form+" .ctct-invalid").removeClass("ctct-invalid")},n.processError=function(t){void 0!==t.id&&e("#"+t.id).addClass("ctct-invalid")},n.checkHoneypot=function(t,e,n){0<e.val().length?n.attr("disabled","disabled"):n.attr("disabled",!1)},n.validateSubmission=function(t){return"on"===t.attr("data-doajax")&&(e.each(t.find("[required]"),(function(t,e){if(!1===e.checkValidity())return!1})),!0)},n.showMessage=function(t,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",c=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"log",i=t.parents(".ctct-form-wrapper");i.find("p.ctct-message").remove();var r=e("<p />",{class:"ctct-message "+o,text:n,role:c}).prepend(e("<button />",{class:"button button-secondary ctct-dismiss ctct-dismiss-ajax-notice",html:"&#10005;","aria-label":"Dismiss Notification"}));r.insertBefore(t).fadeIn(200),i.find(".ctct-dismiss-ajax-notice").on("click",(function(){e(this).parents(".ctct-message").remove()}))},n.submitForm=function(o){o.find(".ctct-submitted").prop("disabled",!0);var c={action:"ctct_process_form",data:o.serialize()};e.post(t.ajaxurl,c,(function(t){return o.find(".ctct-submitted").prop("disabled",!1),void 0!==t.status&&("success"!==t.status?(void 0!==t.errors?(n.setAllInputsValid(),t.errors.forEach(n.processError)):n.showMessage(o,t.message,"ctct-error","alert"),!1):(n.showMessage(o,t.message,"ctct-success","status"),void o[0].reset()))}))},n.handleSubmission=function(t,e){if(!n.validateSubmission(e))return!1;clearTimeout(n.timeout),n.timeout=setTimeout(n.submitForm,500,e)},n.bindEvents=function(){e.each(n.$c.$forms,(function(t,e){n.$c.$forms[t].on("click","input[type=submit]",(function(e){n.handleSubmission(e,n.$c.$forms[t])})),n.$c.$forms[t].$honeypot.on("change keyup",(function(e){n.checkHoneypot(e,n.$c.$forms[t].$honeypot,n.$c.$forms[t].$submitButton)})),0<n.$c.$forms[t].$recaptcha.length&&n.$c.$forms[t].$submitButton.attr("disabled","disabled")}))},e(n.init)}(window,jQuery,window.CTCTSupport)}]);
2
  //# sourceMappingURL=ctct-plugin-frontend.min.js.map
1
+ !function(t){var e={};function n(o){if(e[o])return e[o].exports;var i=e[o]={i:o,l:!1,exports:{}};return t[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(o,i,function(e){return t[e]}.bind(null,i));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/",n(n.s=10)}([,,,,,,,,,,function(t,e,n){t.exports=n(11)},function(t,e,n){"use strict";n.r(e);n(12),n(13)},function(t,e){!function(t,e){function n(){return e(".ctct-submitted").attr("disabled",null)}e(document).ready((function(){e(".ctct-submitted").on("click",(function(){setTimeout((function(){e(".ctct-submitted").attr("disabled","disabled"),setTimeout(n,3e3)}),100)}))}))}(window,jQuery)},function(t,e){window.CTCTSupport={},function(t,e,n){var o=this;n.init=function(){n.cache(),n.bindEvents(),n.removePlaceholder()},n.removePlaceholder=function(){e(".ctct-form-field input, textarea").focus((function(){e(o).data("placeholder",e(o).attr("placeholder")).attr("placeholder","")})).blur((function(){e(o).attr("placeholder",e(o).data("placeholder"))}))},n.cache=function(){n.$c={$forms:[]},e(".ctct-form-wrapper").each((function(t,o){n.$c.$forms.push(e(o).find("form"))})),e.each(n.$c.$forms,(function(t,o){var i=e(o);n.$c.$forms[t].$honeypot=i.find(".ctct_usage_field"),n.$c.$forms[t].$submitButton=i.find("input[type=submit]"),n.$c.$forms[t].$recaptcha=i.find(".g-recaptcha")})),n.timeout=null},n.setAllInputsValid=function(){e(n.$c.$form+" .ctct-invalid").removeClass("ctct-invalid")},n.processError=function(t){void 0!==t.id&&e("#"+t.id).addClass("ctct-invalid")},n.checkHoneypot=function(t,e,n){0<e.val().length?n.attr("disabled","disabled"):n.attr("disabled",!1)},n.validateSubmission=function(t){return"on"===t.attr("data-doajax")&&(e.each(t.find("[required]"),(function(t,e){if(!1===e.checkValidity())return!1})),!0)},n.showMessage=function(t,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"log",c=t.parents(".ctct-form-wrapper");c.find("p.ctct-message").remove();var r=e("<p />",{class:"ctct-message "+o,text:n,role:i}).prepend(e("<button />",{class:"button button-secondary ctct-dismiss ctct-dismiss-ajax-notice",html:"&#10005;","aria-label":"Dismiss Notification"}));r.insertBefore(t).fadeIn(200),c.find(".ctct-dismiss-ajax-notice").on("click",(function(){e(this).parents(".ctct-message").remove()}))},n.submitForm=function(o){o.find(".ctct-submitted").prop("disabled",!0);var i={action:"ctct_process_form",data:o.serialize()};e.post(t.ajaxurl,i,(function(t){return o.find(".ctct-submitted").prop("disabled",!1),void 0!==t.status&&("success"!==t.status?(void 0!==t.errors?(n.setAllInputsValid(),t.errors.forEach(n.processError)):n.showMessage(o,t.message,"ctct-error","alert"),!1):(o.hide(),n.showMessage(o,t.message,"ctct-success","status"),void o[0].reset()))}))},n.handleSubmission=function(t,e){if(!n.validateSubmission(e))return!1;clearTimeout(n.timeout),e[0].checkValidity()&&(t.preventDefault(),n.timeout=setTimeout(n.submitForm,500,e))},n.bindEvents=function(){e.each(n.$c.$forms,(function(t,e){n.$c.$forms[t].on("click","input[type=submit]",(function(e){n.handleSubmission(e,n.$c.$forms[t])})),n.$c.$forms[t].$honeypot.on("change keyup",(function(e){n.checkHoneypot(e,n.$c.$forms[t].$honeypot,n.$c.$forms[t].$submitButton)})),0<n.$c.$forms[t].$recaptcha.length&&n.$c.$forms[t].$submitButton.attr("disabled","disabled")}))},e(n.init)}(window,jQuery,window.CTCTSupport)}]);
2
  //# sourceMappingURL=ctct-plugin-frontend.min.js.map
assets/js/ctct-plugin-frontend.min.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/js/ctct-plugin-frontend/index.js","webpack:///./assets/js/ctct-plugin-frontend/util.js","webpack:///./assets/js/ctct-plugin-frontend/validation.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","global","$","enableSendButton","attr","document","ready","on","setTimeout","window","jQuery","CTCTSupport","app","init","cache","bindEvents","removePlaceholder","focus","data","blur","$c","$forms","each","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","role","$wrapper","parents","remove","$p","prepend","insertBefore","fadeIn","this","submitForm","prop","ajaxData","serialize","post","ajaxurl","response","status","errors","forEach","reset","handleSubmission","clearTimeout"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,4EAIjBlC,EAAoBA,EAAoBmC,EAAI,I,0EClFrD,oB,eCGE,SAAUC,EAAQC,GAmCnB,SAASC,IACR,OAAOD,EAAG,mBAAoBE,KAAM,WAAY,MA/BjDF,EAAGG,UAAWC,OAAO,WAEpBJ,EAAG,mBAAoBK,GAAI,SAAS,WACnCC,YAAY,WAgBNN,EAAG,mBAAoBE,KAAM,WAAY,YAd9CI,WAAYL,EAAkB,OAC5B,WAXJ,CAuCEM,OAAQC,S,cCpCXD,OAAOE,YAAc,GAEpB,SAAUF,EAAQP,EAAGU,GAAM,WAQ5BA,EAAIC,KAAO,WACVD,EAAIE,QACJF,EAAIG,aACJH,EAAII,qBASLJ,EAAII,kBAAoB,WACvBd,EAAG,oCAAqCe,OAAO,WAC9Cf,EAAG,GAAOgB,KAAM,cAAehB,EAAG,GAAOE,KAAM,gBAAkBA,KAAM,cAAe,OACnFe,MAAM,WACTjB,EAAG,GAAOE,KAAM,cAAeF,EAAG,GAAOgB,KAAM,oBAUjDN,EAAIE,MAAQ,WAEXF,EAAIQ,GAAK,CACRC,OAAQ,IAITnB,EAAG,sBAAuBoB,MAAM,SAAUrD,EAAGsD,GAC5CX,EAAIQ,GAAGC,OAAOG,KAAMtB,EAAGqB,GAAcE,KAAM,YAI5CvB,EAAEoB,KAAMV,EAAIQ,GAAGC,QAAQ,SAAUpD,EAAGyD,GAEnC,IAAIC,EAAQzB,EAAGwB,GAEfd,EAAIQ,GAAGC,OAAQpD,GAAI2D,UAAgBD,EAAMF,KAAM,qBAC/Cb,EAAIQ,GAAGC,OAAQpD,GAAI4D,cAAgBF,EAAMF,KAAM,sBAC/Cb,EAAIQ,GAAGC,OAAQpD,GAAI6D,WAAgBH,EAAMF,KAAM,mBAGhDb,EAAImB,QAAU,MASfnB,EAAIoB,kBAAoB,WACvB9B,EAAGU,EAAIQ,GAAGO,MAAQ,kBAAmBM,YAAa,iBAWnDrB,EAAIsB,aAAe,SAAEC,QAGf,IAAwBA,EAAMC,IAClClC,EAAG,IAAMiC,EAAMC,IAAKC,SAAU,iBAchCzB,EAAI0B,cAAgB,SAAEC,EAAGC,EAAWX,GAG9B,EAAIW,EAAUC,MAAMC,OACxBb,EAAczB,KAAM,WAAY,YAEhCyB,EAAczB,KAAM,YAAY,IAalCQ,EAAI+B,mBAAqB,SAAEhB,GAE1B,MAAK,OAASA,EAAMvB,KAAM,iBAK1BF,EAAEoB,KAAMK,EAAMF,KAAM,eAAgB,SAAUxD,EAAG2E,GAEhD,IAAK,IAAUA,EAAMC,gBACpB,OAAO,MAIF,IAaRjC,EAAIkC,YAAc,SAAEnB,EAAOoB,GAAyC,IAAhCC,EAAgC,uDAAtB,GAAIC,EAAkB,uDAAX,MAElDC,EAAWvB,EAAMwB,QAAS,sBAEhCD,EAASzB,KAAM,kBAAmB2B,SAElC,IAAIC,EAAKnD,EAAG,QAAS,CACpB,MAAS,gBAAkB8C,EAC3B,KAAQD,EACR,KAAQE,IACLK,QAASpD,EAAG,aAAc,CAC7B,MAAS,gEACT,KAAQ,WACR,aAAc,0BAGfmD,EAAGE,aAAc5B,GAAQ6B,OAAQ,KAEjCN,EAASzB,KAAM,6BAA8BlB,GAAI,SAAS,WACzDL,EAAGuD,MAAON,QAAS,iBAAkBC,aAYvCxC,EAAI8C,WAAa,SAAE/B,GAElBA,EAAMF,KAAM,mBAAoBkC,KAAM,YAAY,GAElD,IAAIC,EAAW,CACd,OAAU,oBACV,KAAQjC,EAAMkC,aAGf3D,EAAE4D,KAAMrD,EAAOsD,QAASH,GAAU,SAAEI,GAInC,OAFArC,EAAMF,KAAM,mBAAoBkC,KAAM,YAAY,QAE7C,IAAwBK,EAASC,SAKjC,YAAcD,EAASC,aAEtB,IAAwBD,EAASE,QACrCtD,EAAIoB,oBACJgC,EAASE,OAAOC,QAASvD,EAAIsB,eAE7BtB,EAAIkC,YAAanB,EAAOqC,EAASjB,QAAS,aAAc,UAGlD,IAIRnC,EAAIkC,YAAanB,EAAOqC,EAASjB,QAAS,eAAgB,eAC1DpB,EAAM,GAAGyC,cAcXxD,EAAIyD,iBAAmB,SAAE9B,EAAGZ,GAE3B,IAAOf,EAAI+B,mBAAoBhB,GAC9B,OAAO,EAGR2C,aAAc1D,EAAImB,SAElBnB,EAAImB,QAAUvB,WAAYI,EAAI8C,WAAY,IAAK/B,IAShDf,EAAIG,WAAa,WAGhBb,EAAEoB,KAAMV,EAAIQ,GAAGC,QAAQ,SAAUpD,EAAGyD,GAGnCd,EAAIQ,GAAGC,OAAQpD,GAAIsC,GAAI,QAAS,sBAAsB,SAAEgC,GACvD3B,EAAIyD,iBAAkB9B,EAAG3B,EAAIQ,GAAGC,OAAQpD,OAIzC2C,EAAIQ,GAAGC,OAAQpD,GAAI2D,UAAUrB,GAAI,gBAAgB,SAAEgC,GAElD3B,EAAI0B,cACHC,EACA3B,EAAIQ,GAAGC,OAAQpD,GAAI2D,UACnBhB,EAAIQ,GAAGC,OAAQpD,GAAI4D,kBAKhB,EAAIjB,EAAIQ,GAAGC,OAAQpD,GAAI6D,WAAWY,QACtC9B,EAAIQ,GAAGC,OAAQpD,GAAI4D,cAAczB,KAAM,WAAY,gBAMtDF,EAAGU,EAAIC,MAtQN,CAwQEJ,OAAQC,OAAQD,OAAOE","file":"ctct-plugin-frontend.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n","import './util';\nimport './validation';\n","/**\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 = $( '<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( $( '<button />', {\n\t\t\t'class': 'button button-secondary ctct-dismiss ctct-dismiss-ajax-notice',\n\t\t\t'html': '&#10005;',\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\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\t\tif ( ! app.validateSubmission( $form ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tclearTimeout( app.timeout );\n\n\t\tapp.timeout = setTimeout( app.submitForm, 500, $form );\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"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/js/ctct-plugin-frontend/index.js","webpack:///./assets/js/ctct-plugin-frontend/util.js","webpack:///./assets/js/ctct-plugin-frontend/validation.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","global","$","enableSendButton","attr","document","ready","on","setTimeout","window","jQuery","CTCTSupport","app","init","cache","bindEvents","removePlaceholder","focus","data","blur","$c","$forms","each","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","role","$wrapper","parents","remove","$p","prepend","insertBefore","fadeIn","this","submitForm","prop","ajaxData","serialize","post","ajaxurl","response","status","errors","forEach","hide","reset","handleSubmission","clearTimeout","preventDefault"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,4EAIjBlC,EAAoBA,EAAoBmC,EAAI,I,0EClFrD,oB,eCGE,SAAUC,EAAQC,GAmCnB,SAASC,IACR,OAAOD,EAAG,mBAAoBE,KAAM,WAAY,MA/BjDF,EAAGG,UAAWC,OAAO,WAEpBJ,EAAG,mBAAoBK,GAAI,SAAS,WACnCC,YAAY,WAgBNN,EAAG,mBAAoBE,KAAM,WAAY,YAd9CI,WAAYL,EAAkB,OAC5B,WAXJ,CAuCEM,OAAQC,S,cCpCXD,OAAOE,YAAc,GAEpB,SAAUF,EAAQP,EAAGU,GAAM,WAQ5BA,EAAIC,KAAO,WACVD,EAAIE,QACJF,EAAIG,aACJH,EAAII,qBASLJ,EAAII,kBAAoB,WACvBd,EAAG,oCAAqCe,OAAO,WAC9Cf,EAAG,GAAOgB,KAAM,cAAehB,EAAG,GAAOE,KAAM,gBAAkBA,KAAM,cAAe,OACnFe,MAAM,WACTjB,EAAG,GAAOE,KAAM,cAAeF,EAAG,GAAOgB,KAAM,oBAUjDN,EAAIE,MAAQ,WAEXF,EAAIQ,GAAK,CACRC,OAAQ,IAITnB,EAAG,sBAAuBoB,MAAM,SAAUrD,EAAGsD,GAC5CX,EAAIQ,GAAGC,OAAOG,KAAMtB,EAAGqB,GAAcE,KAAM,YAI5CvB,EAAEoB,KAAMV,EAAIQ,GAAGC,QAAQ,SAAUpD,EAAGyD,GAEnC,IAAIC,EAAQzB,EAAGwB,GAEfd,EAAIQ,GAAGC,OAAQpD,GAAI2D,UAAgBD,EAAMF,KAAM,qBAC/Cb,EAAIQ,GAAGC,OAAQpD,GAAI4D,cAAgBF,EAAMF,KAAM,sBAC/Cb,EAAIQ,GAAGC,OAAQpD,GAAI6D,WAAgBH,EAAMF,KAAM,mBAGhDb,EAAImB,QAAU,MASfnB,EAAIoB,kBAAoB,WACvB9B,EAAGU,EAAIQ,GAAGO,MAAQ,kBAAmBM,YAAa,iBAWnDrB,EAAIsB,aAAe,SAAEC,QAGf,IAAwBA,EAAMC,IAClClC,EAAG,IAAMiC,EAAMC,IAAKC,SAAU,iBAchCzB,EAAI0B,cAAgB,SAAEC,EAAGC,EAAWX,GAG9B,EAAIW,EAAUC,MAAMC,OACxBb,EAAczB,KAAM,WAAY,YAEhCyB,EAAczB,KAAM,YAAY,IAalCQ,EAAI+B,mBAAqB,SAAEhB,GAE1B,MAAK,OAASA,EAAMvB,KAAM,iBAK1BF,EAAEoB,KAAMK,EAAMF,KAAM,eAAgB,SAAUxD,EAAG2E,GAEhD,IAAK,IAAUA,EAAMC,gBACpB,OAAO,MAIF,IAaRjC,EAAIkC,YAAc,SAAEnB,EAAOoB,GAAyC,IAAhCC,EAAgC,uDAAtB,GAAIC,EAAkB,uDAAX,MAElDC,EAAWvB,EAAMwB,QAAS,sBAEhCD,EAASzB,KAAM,kBAAmB2B,SAElC,IAAIC,EAAKnD,EAAG,QAAS,CACpB,MAAS,gBAAkB8C,EAC3B,KAAQD,EACR,KAAQE,IACLK,QAASpD,EAAG,aAAc,CAC7B,MAAS,gEACT,KAAQ,WACR,aAAc,0BAGfmD,EAAGE,aAAc5B,GAAQ6B,OAAQ,KAEjCN,EAASzB,KAAM,6BAA8BlB,GAAI,SAAS,WACzDL,EAAGuD,MAAON,QAAS,iBAAkBC,aAYvCxC,EAAI8C,WAAa,SAAE/B,GAElBA,EAAMF,KAAM,mBAAoBkC,KAAM,YAAY,GAElD,IAAIC,EAAW,CACd,OAAU,oBACV,KAAQjC,EAAMkC,aAGf3D,EAAE4D,KAAMrD,EAAOsD,QAASH,GAAU,SAAEI,GAInC,OAFArC,EAAMF,KAAM,mBAAoBkC,KAAM,YAAY,QAE7C,IAAwBK,EAASC,SAKjC,YAAcD,EAASC,aAEtB,IAAwBD,EAASE,QACrCtD,EAAIoB,oBACJgC,EAASE,OAAOC,QAASvD,EAAIsB,eAE7BtB,EAAIkC,YAAanB,EAAOqC,EAASjB,QAAS,aAAc,UAGlD,IAERpB,EAAMyC,OAENxD,EAAIkC,YAAanB,EAAOqC,EAASjB,QAAS,eAAgB,eAC1DpB,EAAM,GAAG0C,cAcXzD,EAAI0D,iBAAmB,SAAE/B,EAAGZ,GAG3B,IAAOf,EAAI+B,mBAAoBhB,GAC9B,OAAO,EAGR4C,aAAc3D,EAAImB,SAEfJ,EAAM,GAAGkB,kBACXN,EAAEiC,iBACF5D,EAAImB,QAAUvB,WAAYI,EAAI8C,WAAY,IAAK/B,KAUjDf,EAAIG,WAAa,WAGhBb,EAAEoB,KAAMV,EAAIQ,GAAGC,QAAQ,SAAUpD,EAAGyD,GAGnCd,EAAIQ,GAAGC,OAAQpD,GAAIsC,GAAI,QAAS,sBAAsB,SAAEgC,GACvD3B,EAAI0D,iBAAkB/B,EAAG3B,EAAIQ,GAAGC,OAAQpD,OAIzC2C,EAAIQ,GAAGC,OAAQpD,GAAI2D,UAAUrB,GAAI,gBAAgB,SAAEgC,GAElD3B,EAAI0B,cACHC,EACA3B,EAAIQ,GAAGC,OAAQpD,GAAI2D,UACnBhB,EAAIQ,GAAGC,OAAQpD,GAAI4D,kBAKhB,EAAIjB,EAAIQ,GAAGC,OAAQpD,GAAI6D,WAAWY,QACtC9B,EAAIQ,GAAGC,OAAQpD,GAAI4D,cAAczB,KAAM,WAAY,gBAMtDF,EAAGU,EAAIC,MA1QN,CA4QEJ,OAAQC,OAAQD,OAAOE","file":"ctct-plugin-frontend.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n","import './util';\nimport './validation';\n","/**\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 = $( '<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( $( '<button />', {\n\t\t\t'class': 'button button-secondary ctct-dismiss ctct-dismiss-ajax-notice',\n\t\t\t'html': '&#10005;',\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"],"sourceRoot":""}
assets/js/ctct-plugin-frontend/validation.js CHANGED
@@ -206,7 +206,7 @@
206
 
207
  return false;
208
  }
209
-
210
  // If we're here, the submission was a success; show message and reset form fields.
211
  app.showMessage( $form, response.message, 'ctct-success', 'status' );
212
  $form[0].reset();
@@ -225,13 +225,17 @@
225
  */
226
  app.handleSubmission = ( e, $form ) => {
227
 
 
228
  if ( ! app.validateSubmission( $form ) ) {
229
  return false;
230
  }
231
 
232
  clearTimeout( app.timeout );
233
 
234
- app.timeout = setTimeout( app.submitForm, 500, $form );
 
 
 
235
  };
236
 
237
  /**
206
 
207
  return false;
208
  }
209
+ $form.hide();
210
  // If we're here, the submission was a success; show message and reset form fields.
211
  app.showMessage( $form, response.message, 'ctct-success', 'status' );
212
  $form[0].reset();
225
  */
226
  app.handleSubmission = ( e, $form ) => {
227
 
228
+
229
  if ( ! app.validateSubmission( $form ) ) {
230
  return false;
231
  }
232
 
233
  clearTimeout( app.timeout );
234
 
235
+ if($form[0].checkValidity()){
236
+ e.preventDefault();
237
+ app.timeout = setTimeout( app.submitForm, 500, $form );
238
+ }
239
  };
240
 
241
  /**
assets/js/ctct-plugin-gutenberg.js CHANGED
@@ -94,7 +94,7 @@
94
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
95
 
96
  "use strict";
97
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _components_single_form_select__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/single-form-select */ \"./assets/js/ctct-plugin-gutenberg/components/single-form-select.js\");\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\n\n/**\n * Register the block.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (registerBlockType('constant-contact/single-contact-form', {\n title: __('Constant Contact: Single Form', 'constant-contact'),\n icon: 'index-card',\n category: 'layout',\n attributes: {\n selectedForm: {\n type: 'string'\n },\n displayTitle: {\n type: 'boolean'\n }\n },\n edit: _components_single_form_select__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n save: function save() {\n return null;\n } // PHP will be used to render the block on the frontend.\n\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tZ3V0ZW5iZXJnL2Jsb2Nrcy9jb250YWN0LWZvcm0uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tZ3V0ZW5iZXJnL2Jsb2Nrcy9jb250YWN0LWZvcm0uanM/NGI1NCJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3Qge1xuXHRyZWdpc3RlckJsb2NrVHlwZSxcbn0gPSB3cC5ibG9ja3M7XG5cbmltcG9ydCBTaW5nbGVGb3JtU2VsZWN0IGZyb20gJy4uL2NvbXBvbmVudHMvc2luZ2xlLWZvcm0tc2VsZWN0JztcblxuLyoqXG4gKiBSZWdpc3RlciB0aGUgYmxvY2suXG4gKi9cbmV4cG9ydCBkZWZhdWx0IHJlZ2lzdGVyQmxvY2tUeXBlKCAnY29uc3RhbnQtY29udGFjdC9zaW5nbGUtY29udGFjdC1mb3JtJywge1xuXHR0aXRsZTogX18oICdDb25zdGFudCBDb250YWN0OiBTaW5nbGUgRm9ybScsICdjb25zdGFudC1jb250YWN0JyApLFxuXHRpY29uOiAnaW5kZXgtY2FyZCcsXG5cdGNhdGVnb3J5OiAnbGF5b3V0Jyxcblx0YXR0cmlidXRlczoge1xuXHRcdHNlbGVjdGVkRm9ybToge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0fSxcblx0XHRkaXNwbGF5VGl0bGU6IHtcblx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHR9XG5cdH0sXG5cdGVkaXQ6IFNpbmdsZUZvcm1TZWxlY3QsXG5cdHNhdmU6ICgpID0+IG51bGwgLy8gUEhQIHdpbGwgYmUgdXNlZCB0byByZW5kZXIgdGhlIGJsb2NrIG9uIHRoZSBmcm9udGVuZC5cbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFFQTtBQUdBO0FBRUE7Ozs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQURBO0FBSkE7QUFRQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBZEEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-gutenberg/blocks/contact-form.js\n");
98
 
99
  /***/ }),
100
 
@@ -106,7 +106,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _com
106
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
107
 
108
  "use strict";
109
- eval("__webpack_require__.r(__webpack_exports__);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar _wp = wp,\n SelectControl = _wp.components.SelectControl,\n apiFetch = _wp.apiFetch,\n Component = _wp.element.Component,\n __ = _wp.i18n.__;\n\nvar SingleFormSelect =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SingleFormSelect, _Component);\n\n /**\n * Constructor\n * @param props\n */\n function SingleFormSelect(props) {\n var _this;\n\n _classCallCheck(this, SingleFormSelect);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SingleFormSelect).call(this, props)); // Set the initial state of the component.\n\n _this.state = {\n forms: [{\n label: __(\"Select a form\", \"constant-contact\"),\n value: 0\n }],\n displayTitle: [{\n label: __(\"Display Title\", \"constant-contact\"),\n value: true\n }, {\n label: __(\"Hide Title\", \"constant-contact\"),\n value: false\n }]\n };\n return _this;\n }\n /**\n * After the component mounts, retrieve the forms and add them to the local component state.\n */\n\n\n _createClass(SingleFormSelect, [{\n key: \"componentDidMount\",\n value: function () {\n var _componentDidMount = _asyncToGenerator(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee() {\n var results, forms;\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n _context.next = 3;\n return apiFetch({\n path: \"/?rest_route=/wp/v2/ctct_forms\"\n });\n\n case 3:\n results = _context.sent;\n forms = results.map(function (result) {\n return {\n label: result.title.rendered,\n value: result.id\n };\n });\n this.setState({\n forms: [].concat(_toConsumableArray(this.state.forms), _toConsumableArray(forms))\n });\n _context.next = 11;\n break;\n\n case 8:\n _context.prev = 8;\n _context.t0 = _context[\"catch\"](0);\n console.error(\"ERROR: \", _context.t0.message);\n\n case 11:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[0, 8]]);\n }));\n\n function componentDidMount() {\n return _componentDidMount.apply(this, arguments);\n }\n\n return componentDidMount;\n }()\n /**\n * Render the Gutenberg block in the admin area.\n */\n\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n // Destructure the selectedFrom from props.\n var _this$props$attribute = this.props.attributes,\n selectedForm = _this$props$attribute.selectedForm,\n displayTitle = _this$props$attribute.displayTitle;\n return (\n /*#__PURE__*/\n React.createElement(\"div\", {\n className: \"ctct-block-container\"\n },\n /*#__PURE__*/\n React.createElement(\"div\", {\n className: \"ctct-block-container--header\"\n },\n /*#__PURE__*/\n React.createElement(\"img\", {\n alt: \"Constant Contact Forms\",\n src: \"https://images.ctfassets.net/t21gix3kzulv/78gf1S3CjPrnl9rURf6Q8w/3c20fb510dd4d4653feddf86ece35e1a/ctct_ripple_logo_horizontal_white_orange.svg\"\n })),\n /*#__PURE__*/\n React.createElement(\"div\", {\n className: \"ctct-block-container--selection\"\n },\n /*#__PURE__*/\n React.createElement(\"small\", null, __(\"Display Form Title\", \"constant-contact\")),\n /*#__PURE__*/\n React.createElement(\"div\", {\n className: \"ctct-block-container--component\"\n },\n /*#__PURE__*/\n React.createElement(SelectControl, {\n value: displayTitle,\n options: this.state.displayTitle,\n onChange: function onChange(value) {\n return _this2.props.setAttributes({\n displayTitle: value\n });\n }\n }))),\n /*#__PURE__*/\n React.createElement(\"div\", {\n className: \"ctct-block-container--selection\"\n },\n /*#__PURE__*/\n React.createElement(\"small\", null, __(\"Choose the form to display with the dropdown below.\", \"constant-contact\")),\n /*#__PURE__*/\n React.createElement(\"div\", {\n className: \"ctct-block-container--component\"\n },\n /*#__PURE__*/\n React.createElement(SelectControl, {\n value: selectedForm,\n options: this.state.forms,\n onChange: function onChange(value) {\n return _this2.props.setAttributes({\n selectedForm: value\n });\n }\n }))))\n );\n }\n }]);\n\n return SingleFormSelect;\n}(Component);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SingleFormSelect);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tZ3V0ZW5iZXJnL2NvbXBvbmVudHMvc2luZ2xlLWZvcm0tc2VsZWN0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2pzL2N0Y3QtcGx1Z2luLWd1dGVuYmVyZy9jb21wb25lbnRzL3NpbmdsZS1mb3JtLXNlbGVjdC5qcz9hNzkzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHtcbiAgY29tcG9uZW50czogeyBTZWxlY3RDb250cm9sIH0sXG4gIGFwaUZldGNoLFxuICBlbGVtZW50OiB7IENvbXBvbmVudCB9LFxuICBpMThuOiB7IF9fIH0sXG59ID0gd3A7XG5cbmNsYXNzIFNpbmdsZUZvcm1TZWxlY3QgZXh0ZW5kcyBDb21wb25lbnQge1xuICAvKipcbiAgICogQ29uc3RydWN0b3JcbiAgICogQHBhcmFtIHByb3BzXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIC8vIFNldCB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBmb3JtczogW3sgbGFiZWw6IF9fKFwiU2VsZWN0IGEgZm9ybVwiLCBcImNvbnN0YW50LWNvbnRhY3RcIiksIHZhbHVlOiAwIH1dLFxuICAgICAgZGlzcGxheVRpdGxlOiBbXG4gICAgICAgIHsgbGFiZWw6IF9fKFwiRGlzcGxheSBUaXRsZVwiLCBcImNvbnN0YW50LWNvbnRhY3RcIiksIHZhbHVlOiB0cnVlIH0sXG4gICAgICAgIHsgbGFiZWw6IF9fKFwiSGlkZSBUaXRsZVwiLCBcImNvbnN0YW50LWNvbnRhY3RcIiksIHZhbHVlOiBmYWxzZSB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIHRoZSBjb21wb25lbnQgbW91bnRzLCByZXRyaWV2ZSB0aGUgZm9ybXMgYW5kIGFkZCB0aGVtIHRvIHRoZSBsb2NhbCBjb21wb25lbnQgc3RhdGUuXG4gICAqL1xuICBhc3luYyBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IGFwaUZldGNoKHsgcGF0aDogXCIvP3Jlc3Rfcm91dGU9L3dwL3YyL2N0Y3RfZm9ybXNcIiB9KTtcbiAgICAgIGNvbnN0IGZvcm1zID0gcmVzdWx0cy5tYXAoKHJlc3VsdCkgPT4gKHsgbGFiZWw6IHJlc3VsdC50aXRsZS5yZW5kZXJlZCwgdmFsdWU6IHJlc3VsdC5pZCB9KSk7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgZm9ybXM6IFsuLi50aGlzLnN0YXRlLmZvcm1zLCAuLi5mb3Jtc10gfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihcIkVSUk9SOiBcIiwgZS5tZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIHRoZSBHdXRlbmJlcmcgYmxvY2sgaW4gdGhlIGFkbWluIGFyZWEuXG4gICAqL1xuICByZW5kZXIoKSB7XG4gICAgLy8gRGVzdHJ1Y3R1cmUgdGhlIHNlbGVjdGVkRnJvbSBmcm9tIHByb3BzLlxuICAgIGxldCB7IHNlbGVjdGVkRm9ybSwgZGlzcGxheVRpdGxlIH0gPSB0aGlzLnByb3BzLmF0dHJpYnV0ZXM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjdGN0LWJsb2NrLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImN0Y3QtYmxvY2stY29udGFpbmVyLS1oZWFkZXJcIj5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBhbHQ9XCJDb25zdGFudCBDb250YWN0IEZvcm1zXCJcbiAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vaW1hZ2VzLmN0ZmFzc2V0cy5uZXQvdDIxZ2l4M2t6dWx2Lzc4Z2YxUzNDalBybmw5clVSZjZROHcvM2MyMGZiNTEwZGQ0ZDQ2NTNmZWRkZjg2ZWNlMzVlMWEvY3RjdF9yaXBwbGVfbG9nb19ob3Jpem9udGFsX3doaXRlX29yYW5nZS5zdmdcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImN0Y3QtYmxvY2stY29udGFpbmVyLS1zZWxlY3Rpb25cIj5cbiAgICAgICAgICA8c21hbGw+e19fKFwiRGlzcGxheSBGb3JtIFRpdGxlXCIsIFwiY29uc3RhbnQtY29udGFjdFwiKX08L3NtYWxsPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY3RjdC1ibG9jay1jb250YWluZXItLWNvbXBvbmVudFwiPlxuICAgICAgICAgICAgPFNlbGVjdENvbnRyb2wgdmFsdWU9e2Rpc3BsYXlUaXRsZX0gb3B0aW9ucz17dGhpcy5zdGF0ZS5kaXNwbGF5VGl0bGV9IG9uQ2hhbmdlPXsodmFsdWUpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7IGRpc3BsYXlUaXRsZTogdmFsdWUgfSl9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImN0Y3QtYmxvY2stY29udGFpbmVyLS1zZWxlY3Rpb25cIj5cbiAgICAgICAgICA8c21hbGw+e19fKFwiQ2hvb3NlIHRoZSBmb3JtIHRvIGRpc3BsYXkgd2l0aCB0aGUgZHJvcGRvd24gYmVsb3cuXCIsIFwiY29uc3RhbnQtY29udGFjdFwiKX08L3NtYWxsPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY3RjdC1ibG9jay1jb250YWluZXItLWNvbXBvbmVudFwiPlxuICAgICAgICAgICAgPFNlbGVjdENvbnRyb2wgdmFsdWU9e3NlbGVjdGVkRm9ybX0gb3B0aW9ucz17dGhpcy5zdGF0ZS5mb3Jtc30gb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHsgc2VsZWN0ZWRGb3JtOiB2YWx1ZSB9KX0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNpbmdsZUZvcm1TZWxlY3Q7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLQTtBQUpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7QUFDQTs7OztBQUlBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBSkE7QUFKQTtBQVdBO0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUtBO0FBQUE7QUFBQTtBQUNBOztBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBOzs7Ozs7O0FBRUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0FBR0E7Ozs7OztBQUdBO0FBQUE7QUFDQTtBQUFBO0FBREE7QUFBQTtBQUFBO0FBSUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUZBO0FBT0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFWQTtBQWFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBakJBO0FBc0JBOzs7O0FBNURBO0FBQ0E7QUE4REEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-gutenberg/components/single-form-select.js\n");
110
 
111
  /***/ }),
112
 
94
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
95
 
96
  "use strict";
97
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _components_single_form_select__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/single-form-select */ \"./assets/js/ctct-plugin-gutenberg/components/single-form-select.js\");\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\n\n/**\n * Register the block.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (registerBlockType('constant-contact/single-contact-form', {\n title: __('Constant Contact: Single Form', 'constant-contact'),\n icon: 'index-card',\n category: 'layout',\n attributes: {\n selectedForm: {\n type: 'string'\n },\n displayTitle: {\n type: 'boolean'\n }\n },\n edit: _components_single_form_select__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n save: function save() {\n return null;\n } // PHP will be used to render the block on the frontend.\n\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tZ3V0ZW5iZXJnL2Jsb2Nrcy9jb250YWN0LWZvcm0uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tZ3V0ZW5iZXJnL2Jsb2Nrcy9jb250YWN0LWZvcm0uanM/NGI1NCJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3Qge1xuXHRyZWdpc3RlckJsb2NrVHlwZSxcbn0gPSB3cC5ibG9ja3M7XG5cbmltcG9ydCBTaW5nbGVGb3JtU2VsZWN0IGZyb20gJy4uL2NvbXBvbmVudHMvc2luZ2xlLWZvcm0tc2VsZWN0JztcblxuLyoqXG4gKiBSZWdpc3RlciB0aGUgYmxvY2suXG4gKi9cbmV4cG9ydCBkZWZhdWx0IHJlZ2lzdGVyQmxvY2tUeXBlKCAnY29uc3RhbnQtY29udGFjdC9zaW5nbGUtY29udGFjdC1mb3JtJywge1xuXHR0aXRsZTogX18oICdDb25zdGFudCBDb250YWN0OiBTaW5nbGUgRm9ybScsICdjb25zdGFudC1jb250YWN0JyApLFxuXHRpY29uOiAnaW5kZXgtY2FyZCcsXG5cdGNhdGVnb3J5OiAnbGF5b3V0Jyxcblx0YXR0cmlidXRlczoge1xuXHRcdHNlbGVjdGVkRm9ybToge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0fSxcblx0XHRkaXNwbGF5VGl0bGU6IHtcblx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHR9XG5cdH0sXG5cdGVkaXQ6IFNpbmdsZUZvcm1TZWxlY3QsXG5cdHNhdmU6ICgpID0+IG51bGwgLy8gUEhQIHdpbGwgYmUgdXNlZCB0byByZW5kZXIgdGhlIGJsb2NrIG9uIHRoZSBmcm9udGVuZC5cbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUlBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQURBO0FBSkE7QUFRQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBZEEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-gutenberg/blocks/contact-form.js\n");
98
 
99
  /***/ }),
100
 
106
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
107
 
108
  "use strict";
109
+ eval("__webpack_require__.r(__webpack_exports__);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar _wp = wp,\n SelectControl = _wp.components.SelectControl,\n apiFetch = _wp.apiFetch,\n Component = _wp.element.Component,\n __ = _wp.i18n.__;\n\nvar SingleFormSelect = /*#__PURE__*/function (_Component) {\n _inherits(SingleFormSelect, _Component);\n\n var _super = _createSuper(SingleFormSelect);\n\n /**\n * Constructor\n * @param props\n */\n function SingleFormSelect(props) {\n var _this;\n\n _classCallCheck(this, SingleFormSelect);\n\n _this = _super.call(this, props); // Set the initial state of the component.\n\n _this.state = {\n forms: [{\n label: __(\"Select a form\", \"constant-contact\"),\n value: 0\n }],\n displayTitle: [{\n label: __(\"Display Title\", \"constant-contact\"),\n value: true\n }, {\n label: __(\"Hide Title\", \"constant-contact\"),\n value: false\n }]\n };\n return _this;\n }\n /**\n * After the component mounts, retrieve the forms and add them to the local component state.\n */\n\n\n _createClass(SingleFormSelect, [{\n key: \"componentDidMount\",\n value: function () {\n var _componentDidMount = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n var results, forms;\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n _context.next = 3;\n return apiFetch({\n path: \"/?rest_route=/wp/v2/ctct_forms\"\n });\n\n case 3:\n results = _context.sent;\n forms = results.map(function (result) {\n return {\n label: result.title.rendered,\n value: result.id\n };\n });\n this.setState({\n forms: [].concat(_toConsumableArray(this.state.forms), _toConsumableArray(forms))\n });\n _context.next = 11;\n break;\n\n case 8:\n _context.prev = 8;\n _context.t0 = _context[\"catch\"](0);\n console.error(\"ERROR: \", _context.t0.message);\n\n case 11:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[0, 8]]);\n }));\n\n function componentDidMount() {\n return _componentDidMount.apply(this, arguments);\n }\n\n return componentDidMount;\n }()\n /**\n * Render the Gutenberg block in the admin area.\n */\n\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n // Destructure the selectedFrom from props.\n var _this$props$attribute = this.props.attributes,\n selectedForm = _this$props$attribute.selectedForm,\n displayTitle = _this$props$attribute.displayTitle;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"ctct-block-container\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"ctct-block-container--header\"\n }, /*#__PURE__*/React.createElement(\"img\", {\n alt: \"Constant Contact Forms\",\n src: \"https://images.ctfassets.net/t21gix3kzulv/78gf1S3CjPrnl9rURf6Q8w/3c20fb510dd4d4653feddf86ece35e1a/ctct_ripple_logo_horizontal_white_orange.svg\"\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: \"ctct-block-container--selection\"\n }, /*#__PURE__*/React.createElement(\"small\", null, __(\"Display Form Title\", \"constant-contact\")), /*#__PURE__*/React.createElement(\"div\", {\n className: \"ctct-block-container--component\"\n }, /*#__PURE__*/React.createElement(SelectControl, {\n value: displayTitle,\n options: this.state.displayTitle,\n onChange: function onChange(value) {\n return _this2.props.setAttributes({\n displayTitle: value\n });\n }\n }))), /*#__PURE__*/React.createElement(\"div\", {\n className: \"ctct-block-container--selection\"\n }, /*#__PURE__*/React.createElement(\"small\", null, __(\"Choose the form to display with the dropdown below.\", \"constant-contact\")), /*#__PURE__*/React.createElement(\"div\", {\n className: \"ctct-block-container--component\"\n }, /*#__PURE__*/React.createElement(SelectControl, {\n value: selectedForm,\n options: this.state.forms,\n onChange: function onChange(value) {\n return _this2.props.setAttributes({\n selectedForm: value\n });\n }\n }))));\n }\n }]);\n\n return SingleFormSelect;\n}(Component);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SingleFormSelect);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tZ3V0ZW5iZXJnL2NvbXBvbmVudHMvc2luZ2xlLWZvcm0tc2VsZWN0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2pzL2N0Y3QtcGx1Z2luLWd1dGVuYmVyZy9jb21wb25lbnRzL3NpbmdsZS1mb3JtLXNlbGVjdC5qcz9hNzkzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHtcbiAgY29tcG9uZW50czogeyBTZWxlY3RDb250cm9sIH0sXG4gIGFwaUZldGNoLFxuICBlbGVtZW50OiB7IENvbXBvbmVudCB9LFxuICBpMThuOiB7IF9fIH0sXG59ID0gd3A7XG5cbmNsYXNzIFNpbmdsZUZvcm1TZWxlY3QgZXh0ZW5kcyBDb21wb25lbnQge1xuICAvKipcbiAgICogQ29uc3RydWN0b3JcbiAgICogQHBhcmFtIHByb3BzXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIC8vIFNldCB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBmb3JtczogW3sgbGFiZWw6IF9fKFwiU2VsZWN0IGEgZm9ybVwiLCBcImNvbnN0YW50LWNvbnRhY3RcIiksIHZhbHVlOiAwIH1dLFxuICAgICAgZGlzcGxheVRpdGxlOiBbXG4gICAgICAgIHsgbGFiZWw6IF9fKFwiRGlzcGxheSBUaXRsZVwiLCBcImNvbnN0YW50LWNvbnRhY3RcIiksIHZhbHVlOiB0cnVlIH0sXG4gICAgICAgIHsgbGFiZWw6IF9fKFwiSGlkZSBUaXRsZVwiLCBcImNvbnN0YW50LWNvbnRhY3RcIiksIHZhbHVlOiBmYWxzZSB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIHRoZSBjb21wb25lbnQgbW91bnRzLCByZXRyaWV2ZSB0aGUgZm9ybXMgYW5kIGFkZCB0aGVtIHRvIHRoZSBsb2NhbCBjb21wb25lbnQgc3RhdGUuXG4gICAqL1xuICBhc3luYyBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IGFwaUZldGNoKHsgcGF0aDogXCIvP3Jlc3Rfcm91dGU9L3dwL3YyL2N0Y3RfZm9ybXNcIiB9KTtcbiAgICAgIGNvbnN0IGZvcm1zID0gcmVzdWx0cy5tYXAoKHJlc3VsdCkgPT4gKHsgbGFiZWw6IHJlc3VsdC50aXRsZS5yZW5kZXJlZCwgdmFsdWU6IHJlc3VsdC5pZCB9KSk7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgZm9ybXM6IFsuLi50aGlzLnN0YXRlLmZvcm1zLCAuLi5mb3Jtc10gfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihcIkVSUk9SOiBcIiwgZS5tZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIHRoZSBHdXRlbmJlcmcgYmxvY2sgaW4gdGhlIGFkbWluIGFyZWEuXG4gICAqL1xuICByZW5kZXIoKSB7XG4gICAgLy8gRGVzdHJ1Y3R1cmUgdGhlIHNlbGVjdGVkRnJvbSBmcm9tIHByb3BzLlxuICAgIGxldCB7IHNlbGVjdGVkRm9ybSwgZGlzcGxheVRpdGxlIH0gPSB0aGlzLnByb3BzLmF0dHJpYnV0ZXM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjdGN0LWJsb2NrLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImN0Y3QtYmxvY2stY29udGFpbmVyLS1oZWFkZXJcIj5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBhbHQ9XCJDb25zdGFudCBDb250YWN0IEZvcm1zXCJcbiAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vaW1hZ2VzLmN0ZmFzc2V0cy5uZXQvdDIxZ2l4M2t6dWx2Lzc4Z2YxUzNDalBybmw5clVSZjZROHcvM2MyMGZiNTEwZGQ0ZDQ2NTNmZWRkZjg2ZWNlMzVlMWEvY3RjdF9yaXBwbGVfbG9nb19ob3Jpem9udGFsX3doaXRlX29yYW5nZS5zdmdcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImN0Y3QtYmxvY2stY29udGFpbmVyLS1zZWxlY3Rpb25cIj5cbiAgICAgICAgICA8c21hbGw+e19fKFwiRGlzcGxheSBGb3JtIFRpdGxlXCIsIFwiY29uc3RhbnQtY29udGFjdFwiKX08L3NtYWxsPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY3RjdC1ibG9jay1jb250YWluZXItLWNvbXBvbmVudFwiPlxuICAgICAgICAgICAgPFNlbGVjdENvbnRyb2wgdmFsdWU9e2Rpc3BsYXlUaXRsZX0gb3B0aW9ucz17dGhpcy5zdGF0ZS5kaXNwbGF5VGl0bGV9IG9uQ2hhbmdlPXsodmFsdWUpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7IGRpc3BsYXlUaXRsZTogdmFsdWUgfSl9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImN0Y3QtYmxvY2stY29udGFpbmVyLS1zZWxlY3Rpb25cIj5cbiAgICAgICAgICA8c21hbGw+e19fKFwiQ2hvb3NlIHRoZSBmb3JtIHRvIGRpc3BsYXkgd2l0aCB0aGUgZHJvcGRvd24gYmVsb3cuXCIsIFwiY29uc3RhbnQtY29udGFjdFwiKX08L3NtYWxsPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY3RjdC1ibG9jay1jb250YWluZXItLWNvbXBvbmVudFwiPlxuICAgICAgICAgICAgPFNlbGVjdENvbnRyb2wgdmFsdWU9e3NlbGVjdGVkRm9ybX0gb3B0aW9ucz17dGhpcy5zdGF0ZS5mb3Jtc30gb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHsgc2VsZWN0ZWRGb3JtOiB2YWx1ZSB9KX0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNpbmdsZUZvcm1TZWxlY3Q7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQU1BOzs7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFKQTtBQUpBO0FBV0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUNBO0FBSEE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUpBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQU1BO0FBQ0E7QUFQQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7O0FBU0E7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFGQTtBQUtBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUtBOzs7O0FBNURBO0FBQ0E7QUE4REEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-gutenberg/components/single-form-select.js\n");
110
 
111
  /***/ }),
112
 
assets/js/ctct-plugin-recaptcha-v2.js CHANGED
@@ -105,7 +105,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _rec
105
  /*! no static exports found */
106
  /***/ (function(module, exports) {
107
 
108
- eval("/**\n * Enable submit button.\n *\n * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>\n * @since 1.8.3\n *\n * @param {Object} submitBtn Submit DOM element.\n */\nvar ctctEnableBtn = function ctctEnableBtn(submitBtn) {\n jQuery(submitBtn).attr(\"disabled\", false);\n};\n\nwindow.ctctEnableBtn = ctctEnableBtn;\n/**\n * Disable submit button.\n *\n * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>\n * @since 1.8.3\n *\n * @param {Object} submitBtn Submit DOM element.\n */\n\nvar ctctDisableBtn = function ctctDisableBtn(submitBtn) {\n jQuery(submitBtn).attr(\"disabled\", \"disabled\");\n};\n\nwindow.ctctDisableBtn = ctctDisableBtn;\n\nvar renderReCaptcha = function renderReCaptcha() {\n jQuery('.g-recaptcha').each(function (index, el) {\n var submitBtn = jQuery(el).siblings('.ctct-form-field-submit').find('.ctct-submit');\n grecaptcha.render(el, {\n 'sitekey': jQuery(el).attr('data-sitekey'),\n 'size': jQuery(el).attr('data-size'),\n 'tabindex': jQuery(el).attr('data-tabindex'),\n 'callback': function callback() {\n window.ctctEnableBtn(submitBtn);\n },\n 'expired-callback': function expiredCallback() {\n window.ctctDisableBtn(submitBtn);\n },\n 'isolated': true\n });\n });\n};\n\nwindow.renderReCaptcha = renderReCaptcha;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tcmVjYXB0Y2hhLXYyL3JlY2FwdGNoYS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Fzc2V0cy9qcy9jdGN0LXBsdWdpbi1yZWNhcHRjaGEtdjIvcmVjYXB0Y2hhLmpzPzlhNDQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFbmFibGUgc3VibWl0IGJ1dHRvbi5cbiAqXG4gKiBAYXV0aG9yIFJlYmVrYWggVmFuIEVwcHMgPHJlYmVrYWgudmFuZXBwc0B3ZWJkZXZzdHVkaW9zLmNvbT5cbiAqIEBzaW5jZSAgMS44LjNcbiAqXG4gKiBAcGFyYW0gIHtPYmplY3R9IHN1Ym1pdEJ0biBTdWJtaXQgRE9NIGVsZW1lbnQuXG4gKi9cbnZhciBjdGN0RW5hYmxlQnRuID0gZnVuY3Rpb24oIHN1Ym1pdEJ0biApIHtcbiAgICBqUXVlcnkoIHN1Ym1pdEJ0biApLmF0dHIoIFwiZGlzYWJsZWRcIiwgZmFsc2UgKTtcbn1cbndpbmRvdy5jdGN0RW5hYmxlQnRuID0gY3RjdEVuYWJsZUJ0bjtcblxuLyoqXG4gKiBEaXNhYmxlIHN1Ym1pdCBidXR0b24uXG4gKlxuICogQGF1dGhvciBSZWJla2FoIFZhbiBFcHBzIDxyZWJla2FoLnZhbmVwcHNAd2ViZGV2c3R1ZGlvcy5jb20+XG4gKiBAc2luY2UgIDEuOC4zXG4gKlxuICogQHBhcmFtICB7T2JqZWN0fSBzdWJtaXRCdG4gU3VibWl0IERPTSBlbGVtZW50LlxuICovXG52YXIgY3RjdERpc2FibGVCdG4gPSBmdW5jdGlvbiggc3VibWl0QnRuICkge1xuICAgIGpRdWVyeSggc3VibWl0QnRuICkuYXR0ciggXCJkaXNhYmxlZFwiLCBcImRpc2FibGVkXCIgKTtcbn1cbndpbmRvdy5jdGN0RGlzYWJsZUJ0biA9IGN0Y3REaXNhYmxlQnRuO1xuXG52YXIgcmVuZGVyUmVDYXB0Y2hhID0gZnVuY3Rpb24oKSB7XG4gICAgalF1ZXJ5KCAnLmctcmVjYXB0Y2hhJyApLmVhY2goIGZ1bmN0aW9uKCBpbmRleCwgZWwgKSB7XG4gICAgICAgIGNvbnN0IHN1Ym1pdEJ0biA9IGpRdWVyeSggZWwgKS5zaWJsaW5ncyggJy5jdGN0LWZvcm0tZmllbGQtc3VibWl0JyApLmZpbmQoICcuY3RjdC1zdWJtaXQnICk7XG5cbiAgICAgICAgZ3JlY2FwdGNoYS5yZW5kZXIoIGVsLCB7XG4gICAgICAgICAgICAnc2l0ZWtleSc6IGpRdWVyeSggZWwgKS5hdHRyKCAnZGF0YS1zaXRla2V5JyApLFxuICAgICAgICAgICAgJ3NpemUnOiBqUXVlcnkoIGVsICkuYXR0ciggJ2RhdGEtc2l6ZScgKSxcbiAgICAgICAgICAgICd0YWJpbmRleCc6IGpRdWVyeSggZWwgKS5hdHRyKCAnZGF0YS10YWJpbmRleCcgKSxcbiAgICAgICAgICAgICdjYWxsYmFjayc6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5jdGN0RW5hYmxlQnRuKCBzdWJtaXRCdG4gKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnZXhwaXJlZC1jYWxsYmFjayc6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5jdGN0RGlzYWJsZUJ0biggc3VibWl0QnRuICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ2lzb2xhdGVkJzogdHJ1ZSxcbiAgICAgICAgfSApO1xuICAgIH0gKTtcbn07XG53aW5kb3cucmVuZGVyUmVDYXB0Y2hhID0gcmVuZGVyUmVDYXB0Y2hhO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFWQTtBQVlBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-recaptcha-v2/recaptcha.js\n");
109
 
110
  /***/ }),
111
 
105
  /*! no static exports found */
106
  /***/ (function(module, exports) {
107
 
108
+ eval("/**\n * Enable submit button.\n *\n * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>\n * @since 1.8.3\n *\n * @param {Object} submitBtn Submit DOM element.\n */\nvar ctctEnableBtn = function ctctEnableBtn(submitBtn) {\n jQuery(submitBtn).attr(\"disabled\", false);\n};\n\nwindow.ctctEnableBtn = ctctEnableBtn;\n/**\n * Disable submit button.\n *\n * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>\n * @since 1.8.3\n *\n * @param {Object} submitBtn Submit DOM element.\n */\n\nvar ctctDisableBtn = function ctctDisableBtn(submitBtn) {\n jQuery(submitBtn).attr(\"disabled\", \"disabled\");\n};\n\nwindow.ctctDisableBtn = ctctDisableBtn;\n\nvar renderReCaptcha = function renderReCaptcha() {\n jQuery('.g-recaptcha').each(function (index, el) {\n var submitBtn = jQuery(el).siblings('.ctct-form-field-submit').find('.ctct-submit');\n grecaptcha.render(el, {\n 'sitekey': jQuery(el).attr('data-sitekey'),\n 'size': jQuery(el).attr('data-size'),\n 'tabindex': jQuery(el).attr('data-tabindex'),\n 'callback': function callback() {\n window.ctctEnableBtn(submitBtn);\n },\n 'expired-callback': function expiredCallback() {\n window.ctctDisableBtn(submitBtn);\n },\n 'isolated': true\n });\n });\n};\n\nwindow.renderReCaptcha = renderReCaptcha;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tcmVjYXB0Y2hhLXYyL3JlY2FwdGNoYS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Fzc2V0cy9qcy9jdGN0LXBsdWdpbi1yZWNhcHRjaGEtdjIvcmVjYXB0Y2hhLmpzPzlhNDQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFbmFibGUgc3VibWl0IGJ1dHRvbi5cbiAqXG4gKiBAYXV0aG9yIFJlYmVrYWggVmFuIEVwcHMgPHJlYmVrYWgudmFuZXBwc0B3ZWJkZXZzdHVkaW9zLmNvbT5cbiAqIEBzaW5jZSAgMS44LjNcbiAqXG4gKiBAcGFyYW0gIHtPYmplY3R9IHN1Ym1pdEJ0biBTdWJtaXQgRE9NIGVsZW1lbnQuXG4gKi9cbnZhciBjdGN0RW5hYmxlQnRuID0gZnVuY3Rpb24oIHN1Ym1pdEJ0biApIHtcbiAgICBqUXVlcnkoIHN1Ym1pdEJ0biApLmF0dHIoIFwiZGlzYWJsZWRcIiwgZmFsc2UgKTtcbn1cbndpbmRvdy5jdGN0RW5hYmxlQnRuID0gY3RjdEVuYWJsZUJ0bjtcblxuLyoqXG4gKiBEaXNhYmxlIHN1Ym1pdCBidXR0b24uXG4gKlxuICogQGF1dGhvciBSZWJla2FoIFZhbiBFcHBzIDxyZWJla2FoLnZhbmVwcHNAd2ViZGV2c3R1ZGlvcy5jb20+XG4gKiBAc2luY2UgIDEuOC4zXG4gKlxuICogQHBhcmFtICB7T2JqZWN0fSBzdWJtaXRCdG4gU3VibWl0IERPTSBlbGVtZW50LlxuICovXG52YXIgY3RjdERpc2FibGVCdG4gPSBmdW5jdGlvbiggc3VibWl0QnRuICkge1xuICAgIGpRdWVyeSggc3VibWl0QnRuICkuYXR0ciggXCJkaXNhYmxlZFwiLCBcImRpc2FibGVkXCIgKTtcbn1cbndpbmRvdy5jdGN0RGlzYWJsZUJ0biA9IGN0Y3REaXNhYmxlQnRuO1xuXG52YXIgcmVuZGVyUmVDYXB0Y2hhID0gZnVuY3Rpb24oKSB7XG4gICAgalF1ZXJ5KCAnLmctcmVjYXB0Y2hhJyApLmVhY2goIGZ1bmN0aW9uKCBpbmRleCwgZWwgKSB7XG4gICAgICAgIGNvbnN0IHN1Ym1pdEJ0biA9IGpRdWVyeSggZWwgKS5zaWJsaW5ncyggJy5jdGN0LWZvcm0tZmllbGQtc3VibWl0JyApLmZpbmQoICcuY3RjdC1zdWJtaXQnICk7XG5cbiAgICAgICAgZ3JlY2FwdGNoYS5yZW5kZXIoIGVsLCB7XG4gICAgICAgICAgICAnc2l0ZWtleSc6IGpRdWVyeSggZWwgKS5hdHRyKCAnZGF0YS1zaXRla2V5JyApLFxuICAgICAgICAgICAgJ3NpemUnOiBqUXVlcnkoIGVsICkuYXR0ciggJ2RhdGEtc2l6ZScgKSxcbiAgICAgICAgICAgICd0YWJpbmRleCc6IGpRdWVyeSggZWwgKS5hdHRyKCAnZGF0YS10YWJpbmRleCcgKSxcbiAgICAgICAgICAgICdjYWxsYmFjayc6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5jdGN0RW5hYmxlQnRuKCBzdWJtaXRCdG4gKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnZXhwaXJlZC1jYWxsYmFjayc6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5jdGN0RGlzYWJsZUJ0biggc3VibWl0QnRuICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ2lzb2xhdGVkJzogdHJ1ZSxcbiAgICAgICAgfSApO1xuICAgIH0gKTtcbn07XG53aW5kb3cucmVuZGVyUmVDYXB0Y2hhID0gcmVuZGVyUmVDYXB0Y2hhO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFWQTtBQVlBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-recaptcha-v2/recaptcha.js\n");
109
 
110
  /***/ }),
111
 
assets/sass/_inputs.scss CHANGED
@@ -83,17 +83,6 @@
83
  top: -9999px !important;
84
  }
85
 
86
- .ctct_usage {
87
- border: 0 none;
88
- clip: rect( 0, 0, 0, 0 );
89
- height: 1px;
90
- margin: -1px;
91
- overflow: hidden;
92
- padding: 0;
93
- position: absolute;
94
- width: 1px;
95
- }
96
-
97
  .no-recaptcha .ctct-submitted:disabled {
98
  background-image: url( ../images/oval.min.svg );
99
  background-position: center;
@@ -105,5 +94,5 @@
105
 
106
  .has-recaptcha .ctct-submitted:disabled {
107
  cursor: not-allowed;
108
- }
109
  }
83
  top: -9999px !important;
84
  }
85
 
 
 
 
 
 
 
 
 
 
 
 
86
  .no-recaptcha .ctct-submitted:disabled {
87
  background-image: url( ../images/oval.min.svg );
88
  background-position: center;
94
 
95
  .has-recaptcha .ctct-submitted:disabled {
96
  cursor: not-allowed;
97
+ }
98
  }
constant-contact-forms.php CHANGED
@@ -12,7 +12,7 @@
12
  * Plugin Name: Constant Contact Forms for WordPress
13
  * Plugin URI: https://www.constantcontact.com
14
  * Description: Be a better marketer. All it takes is Constant Contact email marketing.
15
- * Version: 1.12.0
16
  * Author: Constant Contact
17
  * Author URI: https://www.constantcontact.com/index?pn=miwordpress
18
  * License: GPLv3
@@ -72,7 +72,7 @@ class Constant_Contact {
72
  * @since 1.0.0
73
  * @var string
74
  */
75
- const VERSION = '1.12.0';
76
 
77
  /**
78
  * URL of plugin directory.
12
  * Plugin Name: Constant Contact Forms for WordPress
13
  * Plugin URI: https://www.constantcontact.com
14
  * Description: Be a better marketer. All it takes is Constant Contact email marketing.
15
+ * Version: 1.13.0
16
  * Author: Constant Contact
17
  * Author URI: https://www.constantcontact.com/index?pn=miwordpress
18
  * License: GPLv3
72
  * @since 1.0.0
73
  * @var string
74
  */
75
+ const VERSION = '1.13.0';
76
 
77
  /**
78
  * URL of plugin directory.
includes/class-admin-pages.php CHANGED
@@ -255,7 +255,7 @@ class ConstantContact_Admin_Pages {
255
  <div class="ctct-try-us-cta">
256
  <?php if ( $new_link ) { ?>
257
  <div class="item">
258
- <a href="<?php echo esc_url_raw( $new_link ); ?>" target="_blank" class="button button-orange" title="<?php esc_attr_e( 'Try us Free', 'constant-contact-forms' ); ?>"><?php esc_attr_e( 'Try us Free', 'constant-contact-forms' ); ?></a>
259
  </div>
260
  <?php } ?>
261
  <?php if ( $auth_link ) { ?>
255
  <div class="ctct-try-us-cta">
256
  <?php if ( $new_link ) { ?>
257
  <div class="item">
258
+ <a href="<?php echo esc_url_raw( $new_link ); ?>" target="_blank" rel="noopener noreferrer" class="button button-orange" title="<?php esc_attr_e( 'Try us Free', 'constant-contact-forms' ); ?>"><?php esc_attr_e( 'Try us Free', 'constant-contact-forms' ); ?></a>
259
  </div>
260
  <?php } ?>
261
  <?php if ( $auth_link ) { ?>
includes/class-admin.php CHANGED
@@ -515,9 +515,9 @@ class ConstantContact_Admin {
515
  $site_link = apply_filters( 'constant_contact_social_base_url', 'https://constantcontact.com/' );
516
 
517
  $social_share = esc_html__( 'Spread the word!', 'constant-contact-forms' );
518
- $add_links[] = '<a title="' . $social_share . '" href="https://www.facebook.com/sharer/sharer.php?u=' . rawurlencode( $site_link ) . '" target="_blank" class="dashicons-before dashicons-facebook"></a>';
519
- $add_links[] = '<a title="' . $social_share . '" href="https://twitter.com/home?status=' . $twitter_cta . ' ' . $site_link . '" target="_blank" class="dashicons-before dashicons-twitter"></a>';
520
- $add_links[] = '<a title="' . $social_share . '" href="https://plus.google.com/share?url=' . rawurlencode( $site_link ) . '" target="_blank" class="dashicons-before dashicons-googleplus"></a>';
521
 
522
  /**
523
  * Filters the final custom social links.
@@ -542,7 +542,7 @@ class ConstantContact_Admin {
542
  */
543
  public function get_admin_link( $text, $link_slug ) {
544
 
545
- static $link_template = '<a title="%1$s" href="%2$s" target="_blank">%1$s</a>';
546
  static $link_args = [
547
  'post_type' => 'ctct_forms',
548
  'page' => '',
515
  $site_link = apply_filters( 'constant_contact_social_base_url', 'https://constantcontact.com/' );
516
 
517
  $social_share = esc_html__( 'Spread the word!', 'constant-contact-forms' );
518
+ $add_links[] = '<a title="' . $social_share . '" href="https://www.facebook.com/sharer/sharer.php?u=' . rawurlencode( $site_link ) . '" target="_blank" rel="noopener noreferrer" class="dashicons-before dashicons-facebook"></a>';
519
+ $add_links[] = '<a title="' . $social_share . '" href="https://twitter.com/home?status=' . $twitter_cta . ' ' . $site_link . '" target="_blank" rel="noopener noreferrer" class="dashicons-before dashicons-twitter"></a>';
520
+ $add_links[] = '<a title="' . $social_share . '" href="https://plus.google.com/share?url=' . rawurlencode( $site_link ) . '" target="_blank" rel="noopener noreferrer" class="dashicons-before dashicons-googleplus"></a>';
521
 
522
  /**
523
  * Filters the final custom social links.
542
  */
543
  public function get_admin_link( $text, $link_slug ) {
544
 
545
+ static $link_template = '<a title="%1$s" href="%2$s" target="_blank" rel="noopener noreferrer">%1$s</a>';
546
  static $link_args = [
547
  'post_type' => 'ctct_forms',
548
  'page' => '',
includes/class-api.php CHANGED
@@ -132,14 +132,14 @@ class ConstantContact_API {
132
  $errors = $ex->getErrors();
133
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
134
  $this->log_errors( $our_errors );
135
- constant_contact_set_has_exceptions();
136
  } catch ( Exception $ex ) {
137
  $error = new stdClass();
138
  $error->error_key = get_class( $ex );
139
  $error->error_message = $ex->getMessage();
140
 
141
  add_filter( 'constant_contact_force_logging', '__return_true' );
142
- constant_contact_set_has_exceptions();
143
 
144
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
145
  $our_errors[] = $extra . ' - ' . $error->error_key . ' - ' . $error->error_message;
@@ -177,14 +177,14 @@ class ConstantContact_API {
177
  $errors = $ex->getErrors();
178
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
179
  $this->log_errors( $our_errors );
180
- constant_contact_set_has_exceptions();
181
  } catch ( Exception $ex ) {
182
  $error = new stdClass();
183
  $error->error_key = get_class( $ex );
184
  $error->error_message = $ex->getMessage();
185
 
186
  add_filter( 'constant_contact_force_logging', '__return_true' );
187
- constant_contact_set_has_exceptions();
188
 
189
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
190
  $our_errors[] = $extra . ' - ' . $error->error_key . ' - ' . $error->error_message;
@@ -230,14 +230,14 @@ class ConstantContact_API {
230
  $errors = $ex->getErrors();
231
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
232
  $this->log_errors( $our_errors );
233
- constant_contact_set_has_exceptions();
234
  } catch ( Exception $ex ) {
235
  $error = new stdClass();
236
  $error->error_key = get_class( $ex );
237
  $error->error_message = $ex->getMessage();
238
 
239
  add_filter( 'constant_contact_force_logging', '__return_true' );
240
- constant_contact_set_has_exceptions();
241
 
242
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
243
  $our_errors[] = $extra . ' - ' . $error->error_key . ' - ' . $error->error_message;
@@ -281,14 +281,14 @@ class ConstantContact_API {
281
  $errors = $ex->getErrors();
282
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
283
  $this->log_errors( $our_errors );
284
- constant_contact_set_has_exceptions();
285
  } catch ( Exception $ex ) {
286
  $error = new stdClass();
287
  $error->error_key = get_class( $ex );
288
  $error->error_message = $ex->getMessage();
289
 
290
  add_filter( 'constant_contact_force_logging', '__return_true' );
291
- constant_contact_set_has_exceptions();
292
 
293
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
294
  $our_errors[] = $extra . ' - ' . $error->error_key . ' - ' . $error->error_message;
@@ -324,14 +324,14 @@ class ConstantContact_API {
324
  $errors = $ex->getErrors();
325
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
326
  $this->log_errors( $our_errors );
327
- constant_contact_set_has_exceptions();
328
  } catch ( Exception $ex ) {
329
  $error = new stdClass();
330
  $error->error_key = get_class( $ex );
331
  $error->error_message = $ex->getMessage();
332
 
333
  add_filter( 'constant_contact_force_logging', '__return_true' );
334
- constant_contact_set_has_exceptions();
335
 
336
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
337
  $our_errors[] = $extra . ' - ' . $error->error_key . ' - ' . $error->error_message;
@@ -365,14 +365,14 @@ class ConstantContact_API {
365
  $errors = $ex->getErrors();
366
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
367
  $this->log_errors( $our_errors );
368
- constant_contact_set_has_exceptions();
369
  } catch ( Exception $ex ) {
370
  $error = new stdClass();
371
  $error->error_key = get_class( $ex );
372
  $error->error_message = $ex->getMessage();
373
 
374
  add_filter( 'constant_contact_force_logging', '__return_true' );
375
- constant_contact_set_has_exceptions();
376
 
377
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
378
  $our_errors[] = $extra . ' - ' . $error->error_key . ' - ' . $error->error_message;
@@ -418,14 +418,14 @@ class ConstantContact_API {
418
  $errors = $ex->getErrors();
419
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
420
  $this->log_errors( $our_errors );
421
- constant_contact_set_has_exceptions();
422
  } catch ( Exception $ex ) {
423
  $error = new stdClass();
424
  $error->error_key = get_class( $ex );
425
  $error->error_message = $ex->getMessage();
426
 
427
  add_filter( 'constant_contact_force_logging', '__return_true' );
428
- constant_contact_set_has_exceptions();
429
 
430
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
431
  $our_errors[] = $extra . ' - ' . $error->error_key . ' - ' . $error->error_message;
@@ -459,14 +459,14 @@ class ConstantContact_API {
459
  $errors = $ex->getErrors();
460
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
461
  $this->log_errors( $our_errors );
462
- constant_contact_set_has_exceptions();
463
  } catch ( Exception $ex ) {
464
  $error = new stdClass();
465
  $error->error_key = get_class( $ex );
466
  $error->error_message = $ex->getMessage();
467
 
468
  add_filter( 'constant_contact_force_logging', '__return_true' );
469
- constant_contact_set_has_exceptions();
470
 
471
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
472
  $our_errors[] = $extra . ' - ' . $error->error_key . ' - ' . $error->error_message;
@@ -528,18 +528,14 @@ class ConstantContact_API {
528
  $errors = $ex->getErrors();
529
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
530
  $this->log_errors( $our_errors );
531
- if ( 400 !== $ex->getCode() || false !== strpos( $ex->getMessage(), 'Bad request' ) ) {
532
- constant_contact_set_has_exceptions();
533
- }
534
  } catch ( Exception $ex ) {
535
  $error = new stdClass();
536
  $error->error_key = get_class( $ex );
537
  $error->error_message = $ex->getMessage();
538
 
539
  add_filter( 'constant_contact_force_logging', '__return_true' );
540
- if ( 400 !== $ex->getCode() || false !== strpos( $ex->getMessage(), 'Bad request' ) ) {
541
- constant_contact_set_has_exceptions();
542
- }
543
 
544
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
545
  $our_errors[] = $extra . ' - ' . $error->error_key . ' - ' . $error->error_message;
@@ -547,6 +543,7 @@ class ConstantContact_API {
547
  }
548
 
549
  $new_contact = $this->clear_email( $new_contact );
 
550
  constant_contact_maybe_log_it( 'API', 'Submitted contact data', $new_contact );
551
 
552
  return $return_contact;
@@ -575,6 +572,25 @@ class ConstantContact_API {
575
  return $clean;
576
  }
577
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
578
  /**
579
  * Helper method to create contact.
580
  *
@@ -602,14 +618,14 @@ class ConstantContact_API {
602
  $errors = $ex->getErrors();
603
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
604
  $this->log_errors( $our_errors );
605
- constant_contact_set_has_exceptions();
606
  } catch ( Exception $ex ) {
607
  $error = new stdClass();
608
  $error->error_key = get_class( $ex );
609
  $error->error_message = $ex->getMessage();
610
 
611
  add_filter( 'constant_contact_force_logging', '__return_true' );
612
- constant_contact_set_has_exceptions();
613
 
614
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
615
  $our_errors[] = $extra . ' - ' . $error->error_key . ' - ' . $error->error_message;
@@ -617,7 +633,7 @@ class ConstantContact_API {
617
  }
618
 
619
  /*
620
- * See: http://developer.constantcontact.com/docs/contacts-api/contacts-index.html#opt_in
621
  */
622
  return $this->cc()->contactService->addContact(
623
  $api_token,
@@ -661,14 +677,14 @@ class ConstantContact_API {
661
  $errors = $ex->getErrors();
662
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
663
  $this->log_errors( $our_errors );
664
- constant_contact_set_has_exceptions();
665
  } catch ( Exception $ex ) {
666
  $error = new stdClass();
667
  $error->error_key = get_class( $ex );
668
  $error->error_message = $ex->getMessage();
669
 
670
  add_filter( 'constant_contact_force_logging', '__return_true' );
671
- constant_contact_set_has_exceptions();
672
 
673
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
674
  $our_errors[] = $extra . ' - ' . $error->error_key . ' - ' . $error->error_message;
@@ -676,7 +692,7 @@ class ConstantContact_API {
676
  }
677
 
678
  /*
679
- * See: http://developer.constantcontact.com/docs/contacts-api/contacts-index.html#opt_in array( 'action_by' => 'ACTION_BY_VISITOR' )
680
  */
681
  return $this->cc()->contactService->updateContact(
682
  $api_token,
@@ -827,7 +843,7 @@ class ConstantContact_API {
827
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
828
  $errors[] = $extra . $e->getErrors();
829
  $this->log_errors( $errors );
830
- constant_contact_set_has_exceptions();
831
  break;
832
  }
833
 
132
  $errors = $ex->getErrors();
133
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
134
  $this->log_errors( $our_errors );
135
+ constant_contact_forms_maybe_set_exception_notice( $ex );
136
  } catch ( Exception $ex ) {
137
  $error = new stdClass();
138
  $error->error_key = get_class( $ex );
139
  $error->error_message = $ex->getMessage();
140
 
141
  add_filter( 'constant_contact_force_logging', '__return_true' );
142
+ constant_contact_forms_maybe_set_exception_notice( $ex );
143
 
144
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
145
  $our_errors[] = $extra . ' - ' . $error->error_key . ' - ' . $error->error_message;
177
  $errors = $ex->getErrors();
178
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
179
  $this->log_errors( $our_errors );
180
+ constant_contact_forms_maybe_set_exception_notice( $ex );
181
  } catch ( Exception $ex ) {
182
  $error = new stdClass();
183
  $error->error_key = get_class( $ex );
184
  $error->error_message = $ex->getMessage();
185
 
186
  add_filter( 'constant_contact_force_logging', '__return_true' );
187
+ constant_contact_forms_maybe_set_exception_notice( $ex );
188
 
189
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
190
  $our_errors[] = $extra . ' - ' . $error->error_key . ' - ' . $error->error_message;
230
  $errors = $ex->getErrors();
231
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
232
  $this->log_errors( $our_errors );
233
+ constant_contact_forms_maybe_set_exception_notice( $ex );
234
  } catch ( Exception $ex ) {
235
  $error = new stdClass();
236
  $error->error_key = get_class( $ex );
237
  $error->error_message = $ex->getMessage();
238
 
239
  add_filter( 'constant_contact_force_logging', '__return_true' );
240
+ constant_contact_forms_maybe_set_exception_notice( $ex );
241
 
242
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
243
  $our_errors[] = $extra . ' - ' . $error->error_key . ' - ' . $error->error_message;
281
  $errors = $ex->getErrors();
282
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
283
  $this->log_errors( $our_errors );
284
+ constant_contact_forms_maybe_set_exception_notice( $ex );
285
  } catch ( Exception $ex ) {
286
  $error = new stdClass();
287
  $error->error_key = get_class( $ex );
288
  $error->error_message = $ex->getMessage();
289
 
290
  add_filter( 'constant_contact_force_logging', '__return_true' );
291
+ constant_contact_forms_maybe_set_exception_notice( $ex );
292
 
293
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
294
  $our_errors[] = $extra . ' - ' . $error->error_key . ' - ' . $error->error_message;
324
  $errors = $ex->getErrors();
325
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
326
  $this->log_errors( $our_errors );
327
+ constant_contact_forms_maybe_set_exception_notice( $ex );
328
  } catch ( Exception $ex ) {
329
  $error = new stdClass();
330
  $error->error_key = get_class( $ex );
331
  $error->error_message = $ex->getMessage();
332
 
333
  add_filter( 'constant_contact_force_logging', '__return_true' );
334
+ constant_contact_forms_maybe_set_exception_notice( $ex );
335
 
336
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
337
  $our_errors[] = $extra . ' - ' . $error->error_key . ' - ' . $error->error_message;
365
  $errors = $ex->getErrors();
366
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
367
  $this->log_errors( $our_errors );
368
+ constant_contact_forms_maybe_set_exception_notice( $ex );
369
  } catch ( Exception $ex ) {
370
  $error = new stdClass();
371
  $error->error_key = get_class( $ex );
372
  $error->error_message = $ex->getMessage();
373
 
374
  add_filter( 'constant_contact_force_logging', '__return_true' );
375
+ constant_contact_forms_maybe_set_exception_notice( $ex );
376
 
377
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
378
  $our_errors[] = $extra . ' - ' . $error->error_key . ' - ' . $error->error_message;
418
  $errors = $ex->getErrors();
419
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
420
  $this->log_errors( $our_errors );
421
+ constant_contact_forms_maybe_set_exception_notice( $ex );
422
  } catch ( Exception $ex ) {
423
  $error = new stdClass();
424
  $error->error_key = get_class( $ex );
425
  $error->error_message = $ex->getMessage();
426
 
427
  add_filter( 'constant_contact_force_logging', '__return_true' );
428
+ constant_contact_forms_maybe_set_exception_notice( $ex );
429
 
430
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
431
  $our_errors[] = $extra . ' - ' . $error->error_key . ' - ' . $error->error_message;
459
  $errors = $ex->getErrors();
460
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
461
  $this->log_errors( $our_errors );
462
+ constant_contact_forms_maybe_set_exception_notice( $ex );
463
  } catch ( Exception $ex ) {
464
  $error = new stdClass();
465
  $error->error_key = get_class( $ex );
466
  $error->error_message = $ex->getMessage();
467
 
468
  add_filter( 'constant_contact_force_logging', '__return_true' );
469
+ constant_contact_forms_maybe_set_exception_notice( $ex );
470
 
471
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
472
  $our_errors[] = $extra . ' - ' . $error->error_key . ' - ' . $error->error_message;
528
  $errors = $ex->getErrors();
529
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
530
  $this->log_errors( $our_errors );
531
+ constant_contact_forms_maybe_set_exception_notice( $ex );
 
 
532
  } catch ( Exception $ex ) {
533
  $error = new stdClass();
534
  $error->error_key = get_class( $ex );
535
  $error->error_message = $ex->getMessage();
536
 
537
  add_filter( 'constant_contact_force_logging', '__return_true' );
538
+ constant_contact_forms_maybe_set_exception_notice( $ex );
 
 
539
 
540
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
541
  $our_errors[] = $extra . ' - ' . $error->error_key . ' - ' . $error->error_message;
543
  }
544
 
545
  $new_contact = $this->clear_email( $new_contact );
546
+ $new_contact = $this->clear_phone( $new_contact );
547
  constant_contact_maybe_log_it( 'API', 'Submitted contact data', $new_contact );
548
 
549
  return $return_contact;
572
  return $clean;
573
  }
574
 
575
+ /**
576
+ * Obfuscate phone numbers.
577
+ *
578
+ * @author Scott Anderson <scott.anderson@webdevstudios.com>
579
+ * @since 1.13.0
580
+ *
581
+ * @param array $contact Contact data.
582
+ * @return array
583
+ */
584
+ private function clear_phone ( array $contact ) {
585
+ $clean = $contact;
586
+ foreach ( $contact as $contact_key => $contact_value ) {
587
+ if ( is_array( $contact_value ) && ! empty( $contact_value['key'] ) && $contact_value['key'] === 'phone_number' ) {
588
+ $clean[ $contact_key ]['val'] = '***-***-****';
589
+ }
590
+ }
591
+ return $clean;
592
+ }
593
+
594
  /**
595
  * Helper method to create contact.
596
  *
618
  $errors = $ex->getErrors();
619
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
620
  $this->log_errors( $our_errors );
621
+ constant_contact_forms_maybe_set_exception_notice( $ex );
622
  } catch ( Exception $ex ) {
623
  $error = new stdClass();
624
  $error->error_key = get_class( $ex );
625
  $error->error_message = $ex->getMessage();
626
 
627
  add_filter( 'constant_contact_force_logging', '__return_true' );
628
+ constant_contact_forms_maybe_set_exception_notice( $ex );
629
 
630
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
631
  $our_errors[] = $extra . ' - ' . $error->error_key . ' - ' . $error->error_message;
633
  }
634
 
635
  /*
636
+ * See: http://v2.developer.constantcontact.com/docs/contacts-api/contacts-index.html#opt_in
637
  */
638
  return $this->cc()->contactService->addContact(
639
  $api_token,
677
  $errors = $ex->getErrors();
678
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
679
  $this->log_errors( $our_errors );
680
+ constant_contact_forms_maybe_set_exception_notice( $ex );
681
  } catch ( Exception $ex ) {
682
  $error = new stdClass();
683
  $error->error_key = get_class( $ex );
684
  $error->error_message = $ex->getMessage();
685
 
686
  add_filter( 'constant_contact_force_logging', '__return_true' );
687
+ constant_contact_forms_maybe_set_exception_notice( $ex );
688
 
689
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
690
  $our_errors[] = $extra . ' - ' . $error->error_key . ' - ' . $error->error_message;
692
  }
693
 
694
  /*
695
+ * See: http://v2.developer.constantcontact.com/docs/contacts-api/contacts-index.html#opt_in array( 'action_by' => 'ACTION_BY_VISITOR' )
696
  */
697
  return $this->cc()->contactService->updateContact(
698
  $api_token,
843
  $extra = constant_contact_location_and_line( __METHOD__, __LINE__ );
844
  $errors[] = $extra . $e->getErrors();
845
  $this->log_errors( $errors );
846
+ constant_contact_forms_maybe_set_exception_notice( $e );
847
  break;
848
  }
849
 
includes/class-builder-fields.php CHANGED
@@ -307,7 +307,6 @@ class ConstantContact_Builder_Fields {
307
  'id' => $this->prefix . 'redirect_uri',
308
  'type' => 'text',
309
  'description' => sprintf(
310
- /* Translators: 1: basic field info, 2: warning about invalid values, 3: recommended field value */
311
  '%1$s</br><strong>%2$s</strong><br/>%3$s',
312
  esc_html__( 'Leave blank to keep users on the current page.', 'constant-contact-forms' ),
313
  esc_html__( 'NOTE: This URL must be within the current site and may not be a direct link to a media file (e.g., a PDF document). Providing a Redirect URL that is outside the current site or is a media file will cause issues with Constant Constact functionality, including contacts not being added to lists successfully.', 'constant-contact-forms' ),
@@ -546,7 +545,7 @@ class ConstantContact_Builder_Fields {
546
  'constant-contact-forms'
547
  ),
548
  sprintf(
549
- '<a href="%s" target="_blank">%s</a>',
550
  'https://knowledgebase.constantcontact.com/articles/KnowledgeBase/18260-WordPress-Constant-Contact-Forms-Options',
551
  esc_html__( 'Learn more', 'constant-contact-forms' )
552
  )
307
  'id' => $this->prefix . 'redirect_uri',
308
  'type' => 'text',
309
  'description' => sprintf(
 
310
  '%1$s</br><strong>%2$s</strong><br/>%3$s',
311
  esc_html__( 'Leave blank to keep users on the current page.', 'constant-contact-forms' ),
312
  esc_html__( 'NOTE: This URL must be within the current site and may not be a direct link to a media file (e.g., a PDF document). Providing a Redirect URL that is outside the current site or is a media file will cause issues with Constant Constact functionality, including contacts not being added to lists successfully.', 'constant-contact-forms' ),
545
  'constant-contact-forms'
546
  ),
547
  sprintf(
548
+ '<a href="%s" target="_blank" rel="noopener noreferrer">%s</a>',
549
  'https://knowledgebase.constantcontact.com/articles/KnowledgeBase/18260-WordPress-Constant-Contact-Forms-Options',
550
  esc_html__( 'Learn more', 'constant-contact-forms' )
551
  )
includes/class-builder.php CHANGED
@@ -325,7 +325,7 @@ class ConstantContact_Builder {
325
  <p>
326
  <?php esc_attr_e( 'Import everything into Constant Contact so I can see what email marketing can do for me.', 'constant-contact-forms' ); ?>
327
  </p>
328
- <a href="<?php echo esc_url_raw( add_query_arg( [ 'rmc' => 'wp_fmodal_try' ], constant_contact()->api->get_signup_link() ) ); ?>" target="_blank" class="button button-orange" title="<?php esc_attr_e( 'Try Us Free', 'constant-contact-forms' ); ?>"><?php esc_html_e( 'Try Us Free', 'constant-contact-forms' ); ?></a><br/>
329
 
330
  <?php // Empty alt tag OK; decorative image. ?>
331
  <img
@@ -346,7 +346,7 @@ class ConstantContact_Builder {
346
  <p>
347
  <?php esc_attr_e( 'Automatically add collected information to contacts in my Constant Contact account.', 'constant-contact-forms' ); ?>
348
  </p>
349
- <a href="<?php echo esc_url_raw( add_query_arg( [ 'rmc' => 'wp_fmodal_connect' ], constant_contact()->api->get_connect_link() ) ); ?>" target="_blank" class="button button-blue" title="<?php esc_attr_e( 'Connect Plugin', 'constant-contact-forms' ); ?>">
350
  <?php esc_attr_e( 'Connect Plugin', 'constant-contact-forms' ); ?>
351
  </a><br/>
352
  <p class="small"><small><?php esc_attr_e( 'By connecting, you authorize this plugin to access your account.', 'constant-contact-forms' ); ?></small></p>
325
  <p>
326
  <?php esc_attr_e( 'Import everything into Constant Contact so I can see what email marketing can do for me.', 'constant-contact-forms' ); ?>
327
  </p>
328
+ <a href="<?php echo esc_url_raw( add_query_arg( [ 'rmc' => 'wp_fmodal_try' ], constant_contact()->api->get_signup_link() ) ); ?>" target="_blank" rel="noopener noreferrer" class="button button-orange" title="<?php esc_attr_e( 'Try Us Free', 'constant-contact-forms' ); ?>"><?php esc_html_e( 'Try Us Free', 'constant-contact-forms' ); ?></a><br/>
329
 
330
  <?php // Empty alt tag OK; decorative image. ?>
331
  <img
346
  <p>
347
  <?php esc_attr_e( 'Automatically add collected information to contacts in my Constant Contact account.', 'constant-contact-forms' ); ?>
348
  </p>
349
+ <a href="<?php echo esc_url_raw( add_query_arg( [ 'rmc' => 'wp_fmodal_connect' ], constant_contact()->api->get_connect_link() ) ); ?>" target="_blank" rel="noopener noreferrer" class="button button-blue" title="<?php esc_attr_e( 'Connect Plugin', 'constant-contact-forms' ); ?>">
350
  <?php esc_attr_e( 'Connect Plugin', 'constant-contact-forms' ); ?>
351
  </a><br/>
352
  <p class="small"><small><?php esc_attr_e( 'By connecting, you authorize this plugin to access your account.', 'constant-contact-forms' ); ?></small></p>
includes/class-display.php CHANGED
@@ -535,12 +535,17 @@ class ConstantContact_Display {
535
  * Display a honeypot spam field.
536
  *
537
  * @since 1.2.2
 
 
538
  *
539
  * @return string
540
  */
541
  public function build_honeypot_field() {
542
  return sprintf(
543
- '<div class="ctct_usage"><label for="ctct_usage_field">%s</label><input type="text" value="" id="ctct_usage_field" name="ctct_usage_field" class="ctct_usage_field" tabindex="-1" /></div>', esc_html__( 'Constant Contact Use. Please leave this field blank.', 'constant-contact-forms' )
 
 
 
544
  );
545
  }
546
 
@@ -1083,7 +1088,7 @@ class ConstantContact_Display {
1083
  $placeholder = "placeholder=\"{$label}\"";
1084
  }
1085
 
1086
- /* translators: 1: Required text, 2: Field type, 3: Field name, 4: Inline styles, 5: Field value, 6: Max length, 7: Placeholder, 8: Field class(es), 9: Field ID., 10: Tel Regex Pattern. */
1087
  $field = '<input %1$s type="%2$s" name="%3$s" %4$s value="%5$s" %6$s %7$s %8$s %9$s %10$s />';
1088
  $markup .= sprintf(
1089
  $field,
@@ -1133,7 +1138,6 @@ class ConstantContact_Display {
1133
  */
1134
  public function input_hidden( $name = '', $value = '' ) {
1135
  return sprintf(
1136
- /* translators: 1: Field name, 2: Field value. */
1137
  '<input type="hidden" name="%1$s" value="%2$s" />',
1138
  sanitize_text_field( $name ),
1139
  sanitize_text_field( $value )
@@ -1894,7 +1898,7 @@ class ConstantContact_Display {
1894
  ),
1895
  $this->plugin->api->get_disclosure_info(),
1896
  sprintf(
1897
- '<a href="%s" target="_blank">%s</a>',
1898
  esc_url( 'https://www.constantcontact.com/legal/service-provider' ),
1899
  esc_html__( 'Emails are serviced by Constant Contact', 'constant-contact-forms' )
1900
  )
535
  * Display a honeypot spam field.
536
  *
537
  * @since 1.2.2
538
+ * @since 1.13.0 Moved visually hidden .ctct_usage styles inline to prevent honeypot field from
539
+ * being displayed when the "Disable Constant Contact CSS" option is checked.
540
  *
541
  * @return string
542
  */
543
  public function build_honeypot_field() {
544
  return sprintf(
545
+ '<div ' .
546
+ 'class="ctct_usage"' .
547
+ 'style="border: 0 none; clip: rect( 0, 0, 0, 0 ); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px;"' .
548
+ '><label for="ctct_usage_field">%s</label><input type="text" value="" id="ctct_usage_field" name="ctct_usage_field" class="ctct_usage_field" tabindex="-1" /></div>', esc_html__( 'Constant Contact Use. Please leave this field blank.', 'constant-contact-forms' )
549
  );
550
  }
551
 
1088
  $placeholder = "placeholder=\"{$label}\"";
1089
  }
1090
 
1091
+ /* 1: Required text, 2: Field type, 3: Field name, 4: Inline styles, 5: Field value, 6: Max length, 7: Placeholder, 8: Field class(es), 9: Field ID., 10: Tel Regex Pattern. */
1092
  $field = '<input %1$s type="%2$s" name="%3$s" %4$s value="%5$s" %6$s %7$s %8$s %9$s %10$s />';
1093
  $markup .= sprintf(
1094
  $field,
1138
  */
1139
  public function input_hidden( $name = '', $value = '' ) {
1140
  return sprintf(
 
1141
  '<input type="hidden" name="%1$s" value="%2$s" />',
1142
  sanitize_text_field( $name ),
1143
  sanitize_text_field( $value )
1898
  ),
1899
  $this->plugin->api->get_disclosure_info(),
1900
  sprintf(
1901
+ '<a href="%s" target="_blank" rel="noopener noreferrer">%s</a>',
1902
  esc_url( 'https://www.constantcontact.com/legal/service-provider' ),
1903
  esc_html__( 'Emails are serviced by Constant Contact', 'constant-contact-forms' )
1904
  )
includes/class-logging.php CHANGED
@@ -462,6 +462,47 @@ class ConstantContact_Logging {
462
  rmdir( $dir );
463
  }
464
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
465
  /**
466
  * Initialize Logging directories and files.
467
  *
462
  rmdir( $dir );
463
  }
464
 
465
+ /**
466
+ * Helper function to mask API Keys present in error messages returned by API.
467
+ * The last 3 characters will be revealed, but the others will be dropped/masked.
468
+ *
469
+ * Example input: Server error response [url] https://api.constantcontact.com/v2/lists?api_key=1234567890abcdefghijklmn [status code] 596 ...
470
+ * Example output: Server error response [url] https://api.constantcontact.com/v2/lists?api_key=**********lmn [status code] 596 ...
471
+ *
472
+ * @since 1.13.0
473
+ *
474
+ * @param string $message Text that may contain the api_key value.
475
+ *
476
+ * @return string $message with masked api_key value.
477
+ */
478
+ public function mask_api_key( $message ) {
479
+ if ( empty( $message ) ) {
480
+ return $message;
481
+ }
482
+
483
+ if ( strpos( $message, 'api_key' ) === false ) {
484
+ return $message;
485
+ }
486
+
487
+ $key_pattern = '/(?<=api_key=)([^\s]+)/m';
488
+ preg_match( $key_pattern, $message, $matches );
489
+ $key = ! empty( $matches[0] ) ? $matches[0] : false;
490
+
491
+ if ( ! empty( $key ) ) {
492
+ $key_length = strlen( $key );
493
+ $message = preg_replace(
494
+ $key_pattern,
495
+ str_repeat( '*', 10 ) . // We won't reveal the actual key length.
496
+ $key[ $key_length - 3 ] .
497
+ $key[ $key_length - 2 ] .
498
+ $key[ $key_length - 1 ],
499
+ $message
500
+ );
501
+ }
502
+
503
+ return $message;
504
+ }
505
+
506
  /**
507
  * Initialize Logging directories and files.
508
  *
includes/class-notification-content.php CHANGED
@@ -160,7 +160,7 @@ class ConstantContact_Notification_Content {
160
  ?>
161
  </div>
162
  <p>
163
- <a class="button button-secondary ctct-review" target="_blank" href="https://wordpress.org/support/plugin/constant-contact-forms/reviews/"><?php esc_html_e( 'Leave a review', 'constant-contact-forms' ); ?></a>
164
  <a class="button button-secondary ctct-review-dismiss" href="#"><?php esc_html_e( 'Dismiss', 'constant-contact-forms' ); ?></a>
165
  </p>
166
  </div>
@@ -182,7 +182,7 @@ class ConstantContact_Notification_Content {
182
  esc_html__( 'Constant Contact Forms has experienced issues that may need addressed and functionality may be missing. Please enable the "Support" checkbox under the Support tab in %1$sConstant Contact settings%2$s and start a %3$sforum support thread%4$s. Our support team will aid with further steps.', 'constant-contact-forms' ),
183
  sprintf( '<a href="%s">', esc_url( admin_url( 'edit.php?post_type=ctct_forms&page=ctct_options_settings_support' ) ) ),
184
  '</a>',
185
- sprintf( '<a href="%s" target="_blank">', esc_url( 'https://wordpress.org/support/topic/constant-contact-forms-has-experienced-issues-that-need-addressed-admin-notice/' ) ),
186
  '</a>'
187
  );
188
  }
@@ -221,7 +221,6 @@ class ConstantContact_Notification_Content {
221
  */
222
  protected static function display_deleted_form_reference_markup( $form_id, array $references ) {
223
  printf(
224
- /* Translators: 1: label for form ID, 2: form ID, 3: references to specified form. */
225
  '%1$s #%2$d: ',
226
  esc_html__( 'Form', 'constant-contact-forms' ),
227
  esc_html( $form_id )
160
  ?>
161
  </div>
162
  <p>
163
+ <a class="button button-secondary ctct-review" target="_blank" rel="noopener noreferrer" href="https://wordpress.org/support/plugin/constant-contact-forms/reviews/"><?php esc_html_e( 'Leave a review', 'constant-contact-forms' ); ?></a>
164
  <a class="button button-secondary ctct-review-dismiss" href="#"><?php esc_html_e( 'Dismiss', 'constant-contact-forms' ); ?></a>
165
  </p>
166
  </div>
182
  esc_html__( 'Constant Contact Forms has experienced issues that may need addressed and functionality may be missing. Please enable the "Support" checkbox under the Support tab in %1$sConstant Contact settings%2$s and start a %3$sforum support thread%4$s. Our support team will aid with further steps.', 'constant-contact-forms' ),
183
  sprintf( '<a href="%s">', esc_url( admin_url( 'edit.php?post_type=ctct_forms&page=ctct_options_settings_support' ) ) ),
184
  '</a>',
185
+ sprintf( '<a href="%s" target="_blank" rel="noopener noreferrer">', esc_url( 'https://wordpress.org/support/topic/constant-contact-forms-has-experienced-issues-that-need-addressed-admin-notice/' ) ),
186
  '</a>'
187
  );
188
  }
221
  */
222
  protected static function display_deleted_form_reference_markup( $form_id, array $references ) {
223
  printf(
 
224
  '%1$s #%2$d: ',
225
  esc_html__( 'Form', 'constant-contact-forms' ),
226
  esc_html( $form_id )
includes/class-process-form.php CHANGED
@@ -12,7 +12,7 @@
12
 
13
  use \ReCaptcha\ReCaptcha;
14
  use \ReCaptcha\RequestMethod\CurlPost;
15
-
16
  /**
17
  * Powers our form processing, validation, and value cleanup.
18
  *
@@ -147,6 +147,12 @@ class ConstantContact_Process_Form {
147
  'errors' => isset( $response['errors'] ) ? $response['errors'] : '',
148
  'values' => isset( $response['values'] ) ? $response['values'] : '',
149
  ];
 
 
 
 
 
 
150
 
151
  default:
152
  $message = $default_error;
@@ -370,33 +376,48 @@ class ConstantContact_Process_Form {
370
  'values' => $return['values'],
371
  ];
372
  }
373
-
374
- if ( ! isset( $data['ctct-opt-in'] ) ) {
375
- constant_contact()->mail->submit_form_values( $return['values'] );
376
- } else {
377
-
378
- // No need to check for opt in status because we would have returned early by now if false.
379
- $maybe_bypass = constant_contact_get_option( '_ctct_bypass_cron', '' );
380
-
381
- if ( constant_contact()->api->is_connected() && 'on' === $maybe_bypass ) {
382
- constant_contact()->mail->submit_form_values( $return['values'] ); // Emails but doesn't schedule cron.
383
- $api_result = constant_contact()->mail->opt_in_user( $this->clean_values( $return['values'] ) );
384
-
385
- // Send email if API request fails.
386
- if ( false === $api_result ) {
387
- $clean_values = constant_contact()->process_form->clean_values( $return['values'] );
388
- $pretty_values = constant_contact()->process_form->pretty_values( $clean_values );
389
- $email_values = constant_contact()->mail->format_values_for_email( $pretty_values, $orig_form_id );
390
-
391
- constant_contact()->mail->mail( constant_contact()->mail->get_email( $orig_form_id ), $email_values, [
392
- 'form_id' => $orig_form_id,
393
- 'submitted_email' => constant_contact()->mail->get_user_email_from_submission( $clean_values ),
394
- 'custom-reason' => __( 'An error occurred while attempting Constant Contact API request.', 'constant-contact-forms' ),
395
- ], true );
396
- }
397
  } else {
398
- constant_contact()->mail->submit_form_values( $return['values'], true );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
399
  }
 
 
 
 
 
 
 
400
  }
401
 
402
  $return['status'] = 'success';
@@ -740,6 +761,12 @@ class ConstantContact_Process_Form {
740
  'errors' => isset( $processed['errors'] ) ? $processed['errors'] : '',
741
  'values' => isset( $processed['values'] ) ? $processed['values'] : '',
742
  ];
 
 
 
 
 
 
743
 
744
  default:
745
  $message = '';
12
 
13
  use \ReCaptcha\ReCaptcha;
14
  use \ReCaptcha\RequestMethod\CurlPost;
15
+ use Ctct\Exceptions\CtctException;
16
  /**
17
  * Powers our form processing, validation, and value cleanup.
18
  *
147
  'errors' => isset( $response['errors'] ) ? $response['errors'] : '',
148
  'values' => isset( $response['values'] ) ? $response['values'] : '',
149
  ];
150
+ case 'api_error':
151
+ return [
152
+ 'status' => 'error',
153
+ 'message' => $response['message'],
154
+ 'values' => isset( $response['values'] ) ? $response['values'] : '',
155
+ ];
156
 
157
  default:
158
  $message = $default_error;
376
  'values' => $return['values'],
377
  ];
378
  }
379
+ try {
380
+ if ( ! isset( $data['ctct-opt-in'] ) ) {
381
+ constant_contact()->mail->submit_form_values( $return['values'] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
382
  } else {
383
+ // No need to check for opt in status because we would have returned early by now if false.
384
+ $maybe_bypass = constant_contact_get_option( '_ctct_bypass_cron', '' );
385
+
386
+ if ( constant_contact()->api->is_connected() && 'on' === $maybe_bypass ) {
387
+ constant_contact()->mail->submit_form_values( $return['values'] ); // Emails but doesn't schedule cron.
388
+
389
+ $api_result = constant_contact()->mail->opt_in_user( $this->clean_values( $return['values'] ) );
390
+
391
+ // Send email if API request fails.
392
+ if ( false === $api_result ) {
393
+ $clean_values = constant_contact()->process_form->clean_values( $return['values'] );
394
+ $pretty_values = constant_contact()->process_form->pretty_values( $clean_values );
395
+ $email_values = constant_contact()->mail->format_values_for_email( $pretty_values, $orig_form_id );
396
+
397
+ $test = constant_contact()->mail->mail( constant_contact()->mail->get_email( $orig_form_id ), $email_values, [
398
+ 'form_id' => $orig_form_id,
399
+ 'submitted_email' => constant_contact()->mail->get_user_email_from_submission( $clean_values ),
400
+ 'custom-reason' => __( 'An error occurred while attempting Constant Contact API request.', 'constant-contact-forms' ),
401
+ ], true );
402
+
403
+ // Also return API error.
404
+ return [
405
+ 'status' => 'api_error',
406
+ 'values' => $return['values'],
407
+ 'message'=> __( 'An error occurred while attempting Constant Contact API request. Please check your details and try again.', 'constant-contact-forms' ),
408
+ ];
409
+ }
410
+ } else {
411
+ constant_contact()->mail->submit_form_values( $return['values'], true );
412
+ }
413
  }
414
+
415
+ } catch (CtctException $exception) {
416
+ return [
417
+ 'status' => 'api_error',
418
+ 'values' => $return['values'],
419
+ 'message'=> $exception->getMessage(),
420
+ ];
421
  }
422
 
423
  $return['status'] = 'success';
761
  'errors' => isset( $processed['errors'] ) ? $processed['errors'] : '',
762
  'values' => isset( $processed['values'] ) ? $processed['values'] : '',
763
  ];
764
+ case 'api_error':
765
+ return [
766
+ 'status' => 'error',
767
+ 'message' => $processed['message'] ? esc_html( $processed['message'] ) :esc_html__( 'We had trouble processing your submission. Please review your entries and try again.', 'constant-contact-forms' ),
768
+ 'values' => isset( $processed['values'] ) ? $processed['values'] : '',
769
+ ];
770
 
771
  default:
772
  $message = '';
includes/class-settings.php CHANGED
@@ -344,12 +344,10 @@ class ConstantContact_Settings {
344
  $cmb = new_cmb2_box( $this->get_cmb_args( 'general' ) );
345
 
346
  $before_analytics = sprintf(
347
- /* translators: 1: Opening heading tag, 2: opt-in section heading, 3: closing heading tag */
348
- '%1$s%2$s%3$s',
349
- '<h2>',
350
- esc_html__( 'General Settings', 'constant-contact-forms' ),
351
- '</h2>'
352
  );
 
353
  $cmb->add_field( [
354
  'name' => esc_html__( 'Google Analytics&trade; tracking opt-in.', 'constant-contact-forms' ),
355
  'id' => '_ctct_data_tracking',
@@ -384,11 +382,8 @@ class ConstantContact_Settings {
384
  if ( $lists && is_array( $lists ) ) {
385
 
386
  $before_optin = sprintf(
387
- /* translators: 1: horizontal rule and opening heading tag, 2: opt-in section heading, 3: closing heading tag */
388
- '%1$s%2$s%3$s',
389
- '<hr/><h2>',
390
- esc_html__( 'Advanced Opt-in', 'constant-contact-forms' ),
391
- '</h2>'
392
  );
393
 
394
  $cmb->add_field( [
@@ -448,11 +443,8 @@ class ConstantContact_Settings {
448
  }
449
 
450
  $before_global_css = sprintf(
451
- /* translators: 1: horizontal rule and opening heading tag, 2: global css section heading, 3: closing heading tag */
452
- '%1$s%2$s%3$s',
453
- '<hr><h2>',
454
- esc_html__( 'Global Form CSS Settings', 'constant-contact-forms' ),
455
- '</h2>'
456
  );
457
 
458
  $cmb->add_field( [
@@ -498,7 +490,7 @@ class ConstantContact_Settings {
498
  'id' => '_ctct_alternative_legal_text',
499
  'type' => 'textarea',
500
  ] );
501
-
502
  }
503
 
504
  /**
@@ -511,17 +503,26 @@ class ConstantContact_Settings {
511
  $cmb = new_cmb2_box( $this->get_cmb_args( 'spam' ) );
512
 
513
  $before_recaptcha = sprintf(
514
- /* translators: 1: opening heading tag, 2: reCaptcha section heading, 3: closing heading tag, 4: opening div tag, 5: text before 'learn more' link, 6: open 'learn more' link tag, 7: 'learn more' link text, 8: closing 'learn more' link and div tags */
515
- '%1$s%2$s%3$s%4$s%5$s%6$s%7$s%8$s',
516
- '<h2>',
517
- esc_html__( 'Google reCAPTCHA', 'constant-contact-forms' ),
518
- '</h2>',
519
- '<div class="description">',
520
- esc_html__( 'Learn more and get an ', 'constant-contact-forms' ),
521
- '<a href="https://www.google.com/recaptcha/intro/" target="_blank">',
522
- esc_html__( 'API site key', 'constant-contact-forms' ),
523
- '</a></div>'
 
 
 
 
 
 
 
524
  );
 
 
525
 
526
  $cmb->add_field( [
527
  'name' => esc_html__( 'Version', 'constant-contact-forms' ),
@@ -556,14 +557,9 @@ class ConstantContact_Settings {
556
  ] );
557
 
558
  $before_message = sprintf(
559
- /* translators: 1: horizontal rule and opening heading tag, 2: spam section heading, 3: closing heading tag, 4: opening div tag for description, 5: spam section description, 6: closing div tag */
560
- '%1$s%2$s%3$s%4$s%5$s%6$s',
561
- '<hr/><h2>',
562
  esc_html__( 'Suspected Bot Error Message', 'constant-contact-forms' ),
563
- '</h2>',
564
- '<div class="description">',
565
- esc_html__( 'This message displays when the plugin detects spam data. Note that this message may be overriden on a per-post basis.', 'constant-contact-forms' ),
566
- '</div>'
567
  );
568
 
569
  $cmb->add_field(
@@ -587,11 +583,8 @@ class ConstantContact_Settings {
587
  $cmb = new_cmb2_box( $this->get_cmb_args( 'support' ) );
588
 
589
  $before_debugging = sprintf(
590
- /* translators: 1: opening heading tag, 2: support section heading, 3: closing heading tag */
591
- '%1$s%2$s%3$s',
592
- '<h2>',
593
- esc_html__( 'Support', 'constant-contact-forms' ),
594
- '</h2>'
595
  );
596
  $cmb->add_field( [
597
  'name' => esc_html__( 'Enable logging for debugging purposes.', 'constant-contact-forms' ),
@@ -1081,7 +1074,7 @@ class ConstantContact_Settings {
1081
  * @return array
1082
  */
1083
  private function get_optin_list_options() {
1084
- $lists = constant_contact_get_option( '_ctct_optin_list', '' );
1085
 
1086
  $formatted_lists = [];
1087
  foreach ( $lists as $list_id ) {
344
  $cmb = new_cmb2_box( $this->get_cmb_args( 'general' ) );
345
 
346
  $before_analytics = sprintf(
347
+ '<h2>%s</h2>',
348
+ esc_html__( 'General Settings', 'constant-contact-forms' )
 
 
 
349
  );
350
+
351
  $cmb->add_field( [
352
  'name' => esc_html__( 'Google Analytics&trade; tracking opt-in.', 'constant-contact-forms' ),
353
  'id' => '_ctct_data_tracking',
382
  if ( $lists && is_array( $lists ) ) {
383
 
384
  $before_optin = sprintf(
385
+ '<hr><h2>%s</h2>',
386
+ esc_html__( 'Advanced Opt-in', 'constant-contact-forms' )
 
 
 
387
  );
388
 
389
  $cmb->add_field( [
443
  }
444
 
445
  $before_global_css = sprintf(
446
+ '<hr><h2>%s</h2>',
447
+ esc_html__( 'Global Form CSS Settings', 'constant-contact-forms' )
 
 
 
448
  );
449
 
450
  $cmb->add_field( [
490
  'id' => '_ctct_alternative_legal_text',
491
  'type' => 'textarea',
492
  ] );
493
+
494
  }
495
 
496
  /**
503
  $cmb = new_cmb2_box( $this->get_cmb_args( 'spam' ) );
504
 
505
  $before_recaptcha = sprintf(
506
+ '<h2>%s</h2>',
507
+ esc_html__( 'Google reCAPTCHA', 'constant-contact-forms' )
508
+ );
509
+
510
+ $before_recaptcha .= '<div class="description">';
511
+
512
+ $before_recaptcha .= sprintf(
513
+ wp_kses(
514
+ /* translators: %s: recaptcha documentation URL */
515
+ __( 'Learn more and get an <a href="%s" target="_blank">API site key</a>', 'constant-contact-forms' ),
516
+ [
517
+ 'a' => [
518
+ 'href' => []
519
+ ]
520
+ ]
521
+ ),
522
+ esc_url( 'https://www.google.com/recaptcha/intro/' )
523
  );
524
+
525
+ $before_recaptcha .= '</div>';
526
 
527
  $cmb->add_field( [
528
  'name' => esc_html__( 'Version', 'constant-contact-forms' ),
557
  ] );
558
 
559
  $before_message = sprintf(
560
+ '<hr/><h2>%s</h2><div class="description">%s</div>',
 
 
561
  esc_html__( 'Suspected Bot Error Message', 'constant-contact-forms' ),
562
+ esc_html__( 'This message displays when `the plugin detects spam data. Note that this message may be overriden on a per-post basis.', 'constant-contact-forms' )
 
 
 
563
  );
564
 
565
  $cmb->add_field(
583
  $cmb = new_cmb2_box( $this->get_cmb_args( 'support' ) );
584
 
585
  $before_debugging = sprintf(
586
+ '<h2>%1$s</h2>',
587
+ esc_html__( 'Support', 'constant-contact-forms' )
 
 
 
588
  );
589
  $cmb->add_field( [
590
  'name' => esc_html__( 'Enable logging for debugging purposes.', 'constant-contact-forms' ),
1074
  * @return array
1075
  */
1076
  private function get_optin_list_options() {
1077
+ $lists = constant_contact_get_option( '_ctct_optin_list', [] );
1078
 
1079
  $formatted_lists = [];
1080
  foreach ( $lists as $list_id ) {
includes/helper-functions.php CHANGED
@@ -429,6 +429,9 @@ function constant_contact_maybe_log_it( $log_name, $error, $extra_data = '' ) {
429
  if ( $extra_data ) {
430
  $extra = [ 'Extra information', [ $extra_data ] ];
431
  }
 
 
 
432
  $logger->addInfo( $error, $extra );
433
  }
434
 
@@ -832,3 +835,31 @@ add_action( 'untrashed_post', 'constant_contact_remove_form_references_on_restor
832
  function constant_contact_maybe_display_deleted_forms_notice() {
833
  return ! empty( get_option( ConstantContact_Notifications::$deleted_forms, [] ) );
834
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
429
  if ( $extra_data ) {
430
  $extra = [ 'Extra information', [ $extra_data ] ];
431
  }
432
+
433
+ $error = constant_contact()->logging->mask_api_key( $error );
434
+
435
  $logger->addInfo( $error, $extra );
436
  }
437
 
835
  function constant_contact_maybe_display_deleted_forms_notice() {
836
  return ! empty( get_option( ConstantContact_Notifications::$deleted_forms, [] ) );
837
  }
838
+
839
+ /**
840
+ * Maybe set exception notice for admin notification.
841
+ *
842
+ * @since 1.13.0
843
+ *
844
+ * @param Exception $e
845
+ */
846
+ function constant_contact_forms_maybe_set_exception_notice( $e ) {
847
+
848
+ // Do not notify if the exception code is 400 or the message contains "Bad Request".
849
+ if (
850
+ ( 400 === $e->getCode() ) ||
851
+ ( false !== stripos( $e->getMessage(), 'Bad Request' ) )
852
+ ) {
853
+ return;
854
+ }
855
+
856
+ // Do not notify if the exception code is 503 or the message contains "Service Unavailable".
857
+ if (
858
+ ( 503 === $e->getCode() ) ||
859
+ ( false !== stripos( $e->getMessage(), 'Service Unavailable' ) )
860
+ ) {
861
+ return;
862
+ }
863
+
864
+ constant_contact_set_has_exceptions();
865
+ }
languages/constant-contact-forms.pot CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2021 Constant Contact Forms
2
  # This file is distributed under the same license as the Constant Contact Forms package.
3
  msgid ""
4
  msgstr ""
@@ -178,7 +178,7 @@ msgstr ""
178
  msgid "License"
179
  msgstr ""
180
 
181
- #: includes/class-admin.php:333, includes/class-settings.php:903
182
  msgid "Settings updated."
183
  msgstr ""
184
 
@@ -186,7 +186,7 @@ msgstr ""
186
  msgid "Description"
187
  msgstr ""
188
 
189
- #: includes/class-admin.php:371, includes/class-builder-fields.php:714
190
  msgid "Shortcode"
191
  msgstr ""
192
 
@@ -230,15 +230,15 @@ msgstr ""
230
  msgid "move down"
231
  msgstr ""
232
 
233
- #: includes/class-api.php:688
234
  msgid "Contact type not returned"
235
  msgstr ""
236
 
237
- #: includes/class-api.php:711
238
  msgid "Not a valid contact to set properties to."
239
  msgstr ""
240
 
241
- #: includes/class-api.php:891
242
  msgid "Your API access token is invalid. Reconnect to Constant Contact to receive a new token."
243
  msgstr ""
244
 
@@ -258,8 +258,7 @@ msgstr ""
258
  msgid "Hide"
259
  msgstr ""
260
 
261
- #. translators: 1: label for form ID, 2: form ID, 3: references to specified form.
262
- #: includes/class-beaver-builder.php:66, includes/class-notification-content.php:226
263
  msgid "Form"
264
  msgstr ""
265
 
@@ -411,270 +410,269 @@ msgstr ""
411
  msgid "Redirect URL"
412
  msgstr ""
413
 
414
- #. translators: 1: basic field info, 2: warning about invalid values, 3: recommended field value
415
- #: includes/class-builder-fields.php:312
416
  msgid "Leave blank to keep users on the current page."
417
  msgstr ""
418
 
419
- #: includes/class-builder-fields.php:313
420
  msgid "NOTE: This URL must be within the current site and may not be a direct link to a media file (e.g., a PDF document). Providing a Redirect URL that is outside the current site or is a media file will cause issues with Constant Constact functionality, including contacts not being added to lists successfully."
421
  msgstr ""
422
 
423
- #: includes/class-builder-fields.php:314
424
  msgid "It is recommended to leave this field blank or provide a URL to a page that contains any external or media links within the page content."
425
  msgstr ""
426
 
427
- #: includes/class-builder-fields.php:320
428
  msgid "No page refresh"
429
  msgstr ""
430
 
431
- #: includes/class-builder-fields.php:323
432
  msgid "Enable form submission without a page refresh. This option overrides the Redirect URL choice above."
433
  msgstr ""
434
 
435
- #: includes/class-builder-fields.php:328
436
  msgid "Disable Google reCAPTCHA for this form?"
437
  msgstr ""
438
 
439
- #: includes/class-builder-fields.php:331
440
  msgid "Checking will disable Google's reCAPTCHA output for this form. Only valid if using Google reCAPTCHA version 2"
441
  msgstr ""
442
 
443
- #: includes/class-builder-fields.php:336
444
  msgid "Spam notice"
445
  msgstr ""
446
 
447
- #: includes/class-builder-fields.php:343
448
  msgid "Spam Error Message"
449
  msgstr ""
450
 
451
- #: includes/class-builder-fields.php:346
452
  msgid "Set the spam error message displayed for this form."
453
  msgstr ""
454
 
455
- #: includes/class-builder-fields.php:362
456
  msgid "Form Design"
457
  msgstr ""
458
 
459
- #: includes/class-builder-fields.php:369, includes/class-builder-fields.php:431
460
  msgid "Background Color"
461
  msgstr ""
462
 
463
- #: includes/class-builder-fields.php:372
464
  msgid "Applies to the whole form."
465
  msgstr ""
466
 
467
- #: includes/class-builder-fields.php:379
468
  msgid "Form Fonts"
469
  msgstr ""
470
 
471
- #: includes/class-builder-fields.php:385, includes/class-builder-fields.php:413
472
  msgid "Font Size"
473
  msgstr ""
474
 
475
- #: includes/class-builder-fields.php:390
476
  msgid "Only applies to the form description."
477
  msgstr ""
478
 
479
- #: includes/class-builder-fields.php:397, includes/class-builder-fields.php:421
480
  msgid "Font Color"
481
  msgstr ""
482
 
483
- #: includes/class-builder-fields.php:400
484
  msgid "Applies to the form description, input labels, and disclosure text."
485
  msgstr ""
486
 
487
- #: includes/class-builder-fields.php:407
488
  msgid "Form Submit Button"
489
  msgstr ""
490
 
491
- #: includes/class-builder-fields.php:424
492
  msgid "Choose a color for the submit button text."
493
  msgstr ""
494
 
495
- #: includes/class-builder-fields.php:434
496
  msgid "Choose a color for the submit button background."
497
  msgstr ""
498
 
499
- #: includes/class-builder-fields.php:449
500
  msgid "Input Design"
501
  msgstr ""
502
 
503
- #: includes/class-builder-fields.php:456
504
  msgid "Form Padding"
505
  msgstr ""
506
 
507
- #: includes/class-builder-fields.php:459
508
  msgid "Enter padding values in number of pixels. Padding will be applied to four sides of the form."
509
  msgstr ""
510
 
511
- #: includes/class-builder-fields.php:465, includes/class-builder-fields.php:520, includes/class-settings.php:476
512
  msgid "Top"
513
  msgstr ""
514
 
515
- #: includes/class-builder-fields.php:475, includes/class-builder-fields.php:523, includes/class-settings.php:478
516
  msgid "Right"
517
  msgstr ""
518
 
519
- #: includes/class-builder-fields.php:485, includes/class-builder-fields.php:522, includes/class-settings.php:479
520
  msgid "Bottom"
521
  msgstr ""
522
 
523
- #: includes/class-builder-fields.php:495, includes/class-builder-fields.php:521, includes/class-settings.php:477
524
  msgid "Left"
525
  msgstr ""
526
 
527
- #: includes/class-builder-fields.php:505
528
  msgid "Custom Classes"
529
  msgstr ""
530
 
531
- #: includes/class-builder-fields.php:508
532
  msgid "Set custom CSS class(es) for inputs. Separate multiple classes with spaces."
533
  msgstr ""
534
 
535
- #: includes/class-builder-fields.php:515, includes/class-settings.php:470
536
  msgid "Label Placement"
537
  msgstr ""
538
 
539
- #: includes/class-builder-fields.php:518
540
  msgid "Global"
541
  msgstr ""
542
 
543
- #: includes/class-builder-fields.php:524, includes/class-settings.php:480
544
  msgid "Hidden"
545
  msgstr ""
546
 
547
- #: includes/class-builder-fields.php:526
548
  msgid "Set the position for labels for inputs."
549
  msgstr ""
550
 
551
- #: includes/class-builder-fields.php:544
552
  msgid "Enabling this option will require users to check a box to be added to your list."
553
  msgstr ""
554
 
555
- #: includes/class-builder-fields.php:551
556
  msgid "Learn more"
557
  msgstr ""
558
 
559
- #: includes/class-builder-fields.php:556
560
  msgid "Email opt-in"
561
  msgstr ""
562
 
563
- #: includes/class-builder-fields.php:576
564
  msgid "Enable email subscriber opt-in"
565
  msgstr ""
566
 
567
- #: includes/class-builder-fields.php:578
568
  msgid "Adds an opt-in to the bottom of your form."
569
  msgstr ""
570
 
571
- #: includes/class-builder-fields.php:597
572
  msgid "Add a checkbox so subscribers can opt-in to your email list."
573
  msgstr ""
574
 
575
- #: includes/class-builder-fields.php:599
576
  msgid "(For use with Contact Us form)"
577
  msgstr ""
578
 
579
- #: includes/class-builder-fields.php:602
580
  msgid "Opt-in checkbox"
581
  msgstr ""
582
 
583
- #: includes/class-builder-fields.php:619
584
  msgid "Your Business Name"
585
  msgstr ""
586
 
587
- #: includes/class-builder-fields.php:622, includes/class-settings.php:423
588
  msgid "Opt-in Affirmation"
589
  msgstr ""
590
 
591
  #. translators: placeholder has a business name from Constant Contact.
592
- #: includes/class-builder-fields.php:626
593
  msgid "Example: Yes, I would like to receive emails from %s. (You can unsubscribe anytime)"
594
  msgstr ""
595
 
596
- #: includes/class-builder-fields.php:639
597
  msgid "Form Fields"
598
  msgstr ""
599
 
600
- #: includes/class-builder-fields.php:647
601
  msgid "Add Fields"
602
  msgstr ""
603
 
604
- #: includes/class-builder-fields.php:654
605
  msgid "Create a field for each piece of information you want to collect. Good basics include email address, first name, and last name."
606
  msgstr ""
607
 
608
- #: includes/class-builder-fields.php:664
609
  msgid "Field {#}"
610
  msgstr ""
611
 
612
- #: includes/class-builder-fields.php:665
613
  msgid "Add Another Field"
614
  msgstr ""
615
 
616
- #: includes/class-builder-fields.php:666
617
  msgid "Remove Field"
618
  msgstr ""
619
 
620
- #: includes/class-builder-fields.php:672
621
  msgid "Select a Field"
622
  msgstr ""
623
 
624
- #: includes/class-builder-fields.php:682
625
  msgid "Field Label"
626
  msgstr ""
627
 
628
- #: includes/class-builder-fields.php:689
629
  msgid "Field Description"
630
  msgstr ""
631
 
632
- #: includes/class-builder-fields.php:693
633
  msgid "Ex: Enter email address"
634
  msgstr ""
635
 
636
- #: includes/class-builder-fields.php:698
637
  msgid "Required"
638
  msgstr ""
639
 
640
- #: includes/class-builder-fields.php:722
641
  msgid "Shortcode to use"
642
  msgstr ""
643
 
644
  #. translators: Placeholders here represent `<em>` and `<strong>` HTML tags.
645
- #: includes/class-builder-fields.php:727
646
  msgid "Shortcode to embed — %1$s%2$sYou can copy and paste this in a post to display your form.%3$s%4$s"
647
  msgstr ""
648
 
649
- #: includes/class-builder-fields.php:749
650
  msgid "Email settings"
651
  msgstr ""
652
 
653
- #: includes/class-builder-fields.php:756
654
  msgid "Email destination"
655
  msgstr ""
656
 
657
- #: includes/class-builder-fields.php:757
658
  msgid "Who should receive email notifications for this form. Separate multiple emails by a comma. Leave blank to default to admin email."
659
  msgstr ""
660
 
661
- #: includes/class-builder-fields.php:763
662
  msgid "Disable email notifications for this form?"
663
  msgstr ""
664
 
665
- #: includes/class-builder-fields.php:764
666
  msgid "Check this option to disable emails for this Constant Contact Forms form."
667
  msgstr ""
668
 
669
- #: includes/class-builder-fields.php:780
670
  msgid "Reset Styles"
671
  msgstr ""
672
 
673
- #: includes/class-builder-fields.php:791, includes/class-builder-fields.php:809
674
  msgid "Reset"
675
  msgstr ""
676
 
677
- #: includes/class-builder-fields.php:792
678
  msgid "Reset the styles for this Form."
679
  msgstr ""
680
 
@@ -924,7 +922,7 @@ msgstr ""
924
  msgid "New Form"
925
  msgstr ""
926
 
927
- #: includes/class-cpts.php:72, includes/class-display.php:860
928
  msgid "Edit Form"
929
  msgstr ""
930
 
@@ -1156,116 +1154,116 @@ msgstr ""
1156
  msgid "Select list(s) to subscribe to"
1157
  msgstr ""
1158
 
1159
- #: includes/class-display.php:543
1160
  msgid "Constant Contact Use. Please leave this field blank."
1161
  msgstr ""
1162
 
1163
- #: includes/class-display.php:700
1164
  msgid " Error: Please fill out this field."
1165
  msgstr ""
1166
 
1167
- #: includes/class-display.php:698, includes/class-display.php:1817
1168
  msgid "Error: Please correct your entry."
1169
  msgstr ""
1170
 
1171
- #: includes/class-display.php:1077
1172
  msgid "numbers, dashes, pluses, periods, and parentheses"
1173
  msgstr ""
1174
 
1175
- #: includes/class-display.php:1275
1176
  msgid "Send"
1177
  msgstr ""
1178
 
1179
- #: includes/class-display.php:1387
1180
  msgid "Street Address"
1181
  msgstr ""
1182
 
1183
- #: includes/class-display.php:1388
1184
  msgid "Address Line 2"
1185
  msgstr ""
1186
 
1187
- #: includes/class-display.php:1389
1188
  msgid "City"
1189
  msgstr ""
1190
 
1191
- #: includes/class-display.php:1390
1192
  msgid "State"
1193
  msgstr ""
1194
 
1195
- #: includes/class-display.php:1391
1196
  msgid "ZIP Code"
1197
  msgstr ""
1198
 
1199
- #: includes/class-display.php:1581
1200
  msgid "Month"
1201
  msgstr ""
1202
 
1203
- #: includes/class-display.php:1582
1204
  msgid "Day"
1205
  msgstr ""
1206
 
1207
- #: includes/class-display.php:1583
1208
  msgid "Year"
1209
  msgstr ""
1210
 
1211
- #: includes/class-display.php:1699
1212
  msgid "January"
1213
  msgstr ""
1214
 
1215
- #: includes/class-display.php:1700
1216
  msgid "February"
1217
  msgstr ""
1218
 
1219
- #: includes/class-display.php:1701
1220
  msgid "March"
1221
  msgstr ""
1222
 
1223
- #: includes/class-display.php:1702
1224
  msgid "April"
1225
  msgstr ""
1226
 
1227
- #: includes/class-display.php:1703
1228
  msgid "May"
1229
  msgstr ""
1230
 
1231
- #: includes/class-display.php:1704
1232
  msgid "June"
1233
  msgstr ""
1234
 
1235
- #: includes/class-display.php:1705
1236
  msgid "July "
1237
  msgstr ""
1238
 
1239
- #: includes/class-display.php:1706
1240
  msgid "August"
1241
  msgstr ""
1242
 
1243
- #: includes/class-display.php:1707
1244
  msgid "September"
1245
  msgstr ""
1246
 
1247
- #: includes/class-display.php:1708
1248
  msgid "October"
1249
  msgstr ""
1250
 
1251
- #: includes/class-display.php:1709
1252
  msgid "November"
1253
  msgstr ""
1254
 
1255
- #: includes/class-display.php:1710
1256
  msgid "December"
1257
  msgstr ""
1258
 
1259
- #: includes/class-display.php:1804
1260
  msgid "Limit 500 Characters"
1261
  msgstr ""
1262
 
1263
  #. translators: placeholder will hold company info for site owner.
1264
- #: includes/class-display.php:1892
1265
  msgid "By submitting this form, you are consenting to receive marketing emails from: %1$s. You can revoke your consent to receive emails at any time by using the SafeUnsubscribe&reg; link, found at the bottom of every email. %2$s"
1266
  msgstr ""
1267
 
1268
- #: includes/class-display.php:1899
1269
  msgid "Emails are serviced by Constant Contact"
1270
  msgstr ""
1271
 
@@ -1400,7 +1398,7 @@ msgstr ""
1400
  msgid "You currently have a large number of lists in your Constant Contact account. You may experience some issues with syncing them."
1401
  msgstr ""
1402
 
1403
- #: includes/class-notification-content.php:111, includes/class-notification-content.php:148, includes/class-optin.php:129, includes/class-settings.php:983
1404
  msgctxt "img alt text"
1405
  msgid "Constant Contact logo"
1406
  msgstr ""
@@ -1432,11 +1430,11 @@ msgstr ""
1432
  msgid "References to one or more deleted Constant Contact forms are still present on your site. Please review the list below and update or remove the references to avoid issues on your site:"
1433
  msgstr ""
1434
 
1435
- #: includes/class-notification-content.php:249
1436
  msgid "Widget titled"
1437
  msgstr ""
1438
 
1439
- #: includes/class-notification-content.php:251
1440
  msgid "in"
1441
  msgstr ""
1442
 
@@ -1444,59 +1442,63 @@ msgstr ""
1444
  msgid "Dismiss this notice."
1445
  msgstr ""
1446
 
1447
- #: includes/class-optin.php:137, includes/class-settings.php:989
1448
  msgid "Agree"
1449
  msgstr ""
1450
 
1451
- #: includes/class-optin.php:138, includes/class-settings.php:990
1452
  msgid "Disagree"
1453
  msgstr ""
1454
 
1455
- #: includes/class-process-form.php:117, includes/class-process-form.php:693
1456
  msgid "There was an error sending your form."
1457
  msgstr ""
1458
 
1459
- #: includes/class-process-form.php:129, includes/class-process-form.php:714
1460
  msgid "Your information has been submitted."
1461
  msgstr ""
1462
 
1463
- #: includes/class-process-form.php:146, includes/class-process-form.php:739
1464
  msgid "We had trouble processing your submission. Please review your entries and try again."
1465
  msgstr ""
1466
 
1467
- #: includes/class-process-form.php:193
1468
  msgid "No Constant Contact Forms form ID provided"
1469
  msgstr ""
1470
 
1471
- #: includes/class-process-form.php:200
1472
  msgid "No form verify value provided"
1473
  msgstr ""
1474
 
1475
- #: includes/class-process-form.php:215
1476
  msgid "Please properly fill out all required fields"
1477
  msgstr ""
1478
 
1479
- #: includes/class-process-form.php:268
1480
  msgid "Failed reCAPTCHA check"
1481
  msgstr ""
1482
 
1483
- #: includes/class-process-form.php:301, includes/class-process-form.php:317
1484
  msgid "We had trouble processing your submission. Make sure you haven't changed the required form ID and try again."
1485
  msgstr ""
1486
 
1487
- #: includes/class-process-form.php:309
1488
  msgid "We had trouble processing your submission. Make sure you haven't changed the required Form ID and try again."
1489
  msgstr ""
1490
 
1491
- #: includes/class-process-form.php:359
1492
  msgid "Please select at least one list to subscribe to."
1493
  msgstr ""
1494
 
1495
- #: includes/class-process-form.php:394
1496
  msgid "An error occurred while attempting Constant Contact API request."
1497
  msgstr ""
1498
 
1499
- #: includes/class-process-form.php:807
 
 
 
 
1500
  msgid "We do no think you are human"
1501
  msgstr ""
1502
 
@@ -1508,172 +1510,169 @@ msgstr ""
1508
  msgid "Spam Control"
1509
  msgstr ""
1510
 
1511
- #: includes/class-settings.php:66, includes/class-settings.php:593
1512
  msgid "Support"
1513
  msgstr ""
1514
 
1515
- #: includes/class-settings.php:350
1516
  msgid "General Settings"
1517
  msgstr ""
1518
 
1519
- #: includes/class-settings.php:354
1520
  msgid "Google Analytics&trade; tracking opt-in."
1521
  msgstr ""
1522
 
1523
- #: includes/class-settings.php:357
1524
  msgid "Allow Constant Contact to use Google Analytics&trade; to track your usage across the Constant Contact Forms plugin.<br/> NOTE &mdash; Your website and users will not be tracked. See our <a href=\"https://www.endurance.com/privacy\"> Privacy Statement</a> information about what is and is not tracked."
1525
  msgstr ""
1526
 
1527
- #: includes/class-settings.php:364
1528
  msgid "Disable E-mail Notifications"
1529
  msgstr ""
1530
 
1531
  #. translators: Placeholder is for a <br /> HTML tag.
1532
- #: includes/class-settings.php:367
1533
  msgid "This option will disable e-mail notifications for forms with a selected list and successfully submit to Constant Contact.%s Notifications are sent to the email address listed under Wordpress \"General Settings\"."
1534
  msgstr ""
1535
 
1536
- #: includes/class-settings.php:375
1537
  msgid "Bypass Constant Contact cron scheduling"
1538
  msgstr ""
1539
 
1540
- #: includes/class-settings.php:376
1541
  msgid "This option will send form entries to Constant Contact right away instead of holding for one minute delay."
1542
  msgstr ""
1543
 
1544
- #: includes/class-settings.php:390
1545
  msgid "Advanced Opt-in"
1546
  msgstr ""
1547
 
1548
- #: includes/class-settings.php:395
1549
  msgid "Opt-in Location"
1550
  msgstr ""
1551
 
1552
- #: includes/class-settings.php:402, includes/class-settings.php:409
1553
  msgid "Select a list"
1554
  msgstr ""
1555
 
1556
- #: includes/class-settings.php:405
1557
  msgid "Add subscribers to"
1558
  msgstr ""
1559
 
1560
- #: includes/class-settings.php:413
1561
  msgid "Business Name"
1562
  msgstr ""
1563
 
1564
  #. translators: placeholder will hold site owner's business name.
1565
- #: includes/class-settings.php:427
1566
  msgid "Yes, I would like to receive emails from %s. Sign me up!"
1567
  msgstr ""
1568
 
1569
- #: includes/class-settings.php:432
1570
  msgid "Disclosure Name"
1571
  msgstr ""
1572
 
1573
- #: includes/class-settings.php:440
1574
  msgid "Disclosure Address"
1575
  msgstr ""
1576
 
1577
- #: includes/class-settings.php:454
1578
  msgid "Global Form CSS Settings"
1579
  msgstr ""
1580
 
1581
- #: includes/class-settings.php:459
1582
  msgid "CSS Classes"
1583
  msgstr ""
1584
 
1585
- #: includes/class-settings.php:462
1586
  msgid "Provide custom classes for the form separated by a single space."
1587
  msgstr ""
1588
 
1589
- #: includes/class-settings.php:482
1590
  msgid "Choose the position for the labels of the form elements."
1591
  msgstr ""
1592
 
1593
- #: includes/class-settings.php:489
1594
  msgid "Disable Constant Contact CSS"
1595
  msgstr ""
1596
 
1597
- #: includes/class-settings.php:490
1598
  msgid "Disables Constant Contact stylesheets from loading on the frontend. Note you may need to clear server and client cache to see changes go into effect."
1599
  msgstr ""
1600
 
1601
- #: includes/class-settings.php:496
1602
  msgid "Alternative Disclaimer Text"
1603
  msgstr ""
1604
 
1605
- #: includes/class-settings.php:497
1606
  msgid "Override default sign-up disclaimer text. (Supports HTML)"
1607
  msgstr ""
1608
 
1609
- #: includes/class-settings.php:517
1610
  msgid "Google reCAPTCHA"
1611
  msgstr ""
1612
 
1613
- #: includes/class-settings.php:520
1614
- msgid "Learn more and get an "
 
1615
  msgstr ""
1616
 
1617
- #: includes/class-settings.php:522
1618
- msgid "API site key"
1619
- msgstr ""
1620
-
1621
- #: includes/class-settings.php:527
1622
  msgid "Version"
1623
  msgstr ""
1624
 
1625
- #: includes/class-settings.php:533
1626
  msgid "Version 2"
1627
  msgstr ""
1628
 
1629
- #: includes/class-settings.php:534
1630
  msgid "Version 3"
1631
  msgstr ""
1632
 
1633
- #: includes/class-settings.php:539
1634
  msgid "Site Key"
1635
  msgstr ""
1636
 
1637
- #: includes/class-settings.php:549
1638
  msgid "Secret Key"
1639
  msgstr ""
1640
 
1641
- #: includes/class-settings.php:562
1642
  msgid "Suspected Bot Error Message"
1643
  msgstr ""
1644
 
1645
- #: includes/class-settings.php:565
1646
- msgid "This message displays when the plugin detects spam data. Note that this message may be overriden on a per-post basis."
1647
  msgstr ""
1648
 
1649
- #: includes/class-settings.php:571
1650
  msgid "Error Message"
1651
  msgstr ""
1652
 
1653
- #: includes/class-settings.php:597
1654
  msgid "Enable logging for debugging purposes."
1655
  msgstr ""
1656
 
1657
- #: includes/class-settings.php:598
1658
  msgid "This option will turn on some logging functionality that can be used to deduce sources of issues with the use of Constant Contact Forms plugin."
1659
  msgstr ""
1660
 
1661
- #: includes/class-settings.php:615
1662
  msgid "Add a checkbox to the comment field in your posts"
1663
  msgstr ""
1664
 
1665
- #: includes/class-settings.php:616
1666
  msgid "Add a checkbox to the main WordPress login page"
1667
  msgstr ""
1668
 
1669
- #: includes/class-settings.php:620
1670
  msgid "Add a checkbox to the WordPress user registration page"
1671
  msgstr ""
1672
 
1673
- #: includes/class-settings.php:697
1674
  msgid "Sign up to our newsletter."
1675
  msgstr ""
1676
 
1677
- #: includes/class-settings.php:1072
1678
  msgid "We do not think you are human"
1679
  msgstr ""
1
+ # Copyright (C) 2022 Constant Contact Forms
2
  # This file is distributed under the same license as the Constant Contact Forms package.
3
  msgid ""
4
  msgstr ""
178
  msgid "License"
179
  msgstr ""
180
 
181
+ #: includes/class-admin.php:333, includes/class-settings.php:896
182
  msgid "Settings updated."
183
  msgstr ""
184
 
186
  msgid "Description"
187
  msgstr ""
188
 
189
+ #: includes/class-admin.php:371, includes/class-builder-fields.php:713
190
  msgid "Shortcode"
191
  msgstr ""
192
 
230
  msgid "move down"
231
  msgstr ""
232
 
233
+ #: includes/class-api.php:704
234
  msgid "Contact type not returned"
235
  msgstr ""
236
 
237
+ #: includes/class-api.php:727
238
  msgid "Not a valid contact to set properties to."
239
  msgstr ""
240
 
241
+ #: includes/class-api.php:907
242
  msgid "Your API access token is invalid. Reconnect to Constant Contact to receive a new token."
243
  msgstr ""
244
 
258
  msgid "Hide"
259
  msgstr ""
260
 
261
+ #: includes/class-beaver-builder.php:66, includes/class-notification-content.php:225
 
262
  msgid "Form"
263
  msgstr ""
264
 
410
  msgid "Redirect URL"
411
  msgstr ""
412
 
413
+ #: includes/class-builder-fields.php:311
 
414
  msgid "Leave blank to keep users on the current page."
415
  msgstr ""
416
 
417
+ #: includes/class-builder-fields.php:312
418
  msgid "NOTE: This URL must be within the current site and may not be a direct link to a media file (e.g., a PDF document). Providing a Redirect URL that is outside the current site or is a media file will cause issues with Constant Constact functionality, including contacts not being added to lists successfully."
419
  msgstr ""
420
 
421
+ #: includes/class-builder-fields.php:313
422
  msgid "It is recommended to leave this field blank or provide a URL to a page that contains any external or media links within the page content."
423
  msgstr ""
424
 
425
+ #: includes/class-builder-fields.php:319
426
  msgid "No page refresh"
427
  msgstr ""
428
 
429
+ #: includes/class-builder-fields.php:322
430
  msgid "Enable form submission without a page refresh. This option overrides the Redirect URL choice above."
431
  msgstr ""
432
 
433
+ #: includes/class-builder-fields.php:327
434
  msgid "Disable Google reCAPTCHA for this form?"
435
  msgstr ""
436
 
437
+ #: includes/class-builder-fields.php:330
438
  msgid "Checking will disable Google's reCAPTCHA output for this form. Only valid if using Google reCAPTCHA version 2"
439
  msgstr ""
440
 
441
+ #: includes/class-builder-fields.php:335
442
  msgid "Spam notice"
443
  msgstr ""
444
 
445
+ #: includes/class-builder-fields.php:342
446
  msgid "Spam Error Message"
447
  msgstr ""
448
 
449
+ #: includes/class-builder-fields.php:345
450
  msgid "Set the spam error message displayed for this form."
451
  msgstr ""
452
 
453
+ #: includes/class-builder-fields.php:361
454
  msgid "Form Design"
455
  msgstr ""
456
 
457
+ #: includes/class-builder-fields.php:368, includes/class-builder-fields.php:430
458
  msgid "Background Color"
459
  msgstr ""
460
 
461
+ #: includes/class-builder-fields.php:371
462
  msgid "Applies to the whole form."
463
  msgstr ""
464
 
465
+ #: includes/class-builder-fields.php:378
466
  msgid "Form Fonts"
467
  msgstr ""
468
 
469
+ #: includes/class-builder-fields.php:384, includes/class-builder-fields.php:412
470
  msgid "Font Size"
471
  msgstr ""
472
 
473
+ #: includes/class-builder-fields.php:389
474
  msgid "Only applies to the form description."
475
  msgstr ""
476
 
477
+ #: includes/class-builder-fields.php:396, includes/class-builder-fields.php:420
478
  msgid "Font Color"
479
  msgstr ""
480
 
481
+ #: includes/class-builder-fields.php:399
482
  msgid "Applies to the form description, input labels, and disclosure text."
483
  msgstr ""
484
 
485
+ #: includes/class-builder-fields.php:406
486
  msgid "Form Submit Button"
487
  msgstr ""
488
 
489
+ #: includes/class-builder-fields.php:423
490
  msgid "Choose a color for the submit button text."
491
  msgstr ""
492
 
493
+ #: includes/class-builder-fields.php:433
494
  msgid "Choose a color for the submit button background."
495
  msgstr ""
496
 
497
+ #: includes/class-builder-fields.php:448
498
  msgid "Input Design"
499
  msgstr ""
500
 
501
+ #: includes/class-builder-fields.php:455
502
  msgid "Form Padding"
503
  msgstr ""
504
 
505
+ #: includes/class-builder-fields.php:458
506
  msgid "Enter padding values in number of pixels. Padding will be applied to four sides of the form."
507
  msgstr ""
508
 
509
+ #: includes/class-builder-fields.php:464, includes/class-builder-fields.php:519, includes/class-settings.php:468
510
  msgid "Top"
511
  msgstr ""
512
 
513
+ #: includes/class-builder-fields.php:474, includes/class-builder-fields.php:522, includes/class-settings.php:470
514
  msgid "Right"
515
  msgstr ""
516
 
517
+ #: includes/class-builder-fields.php:484, includes/class-builder-fields.php:521, includes/class-settings.php:471
518
  msgid "Bottom"
519
  msgstr ""
520
 
521
+ #: includes/class-builder-fields.php:494, includes/class-builder-fields.php:520, includes/class-settings.php:469
522
  msgid "Left"
523
  msgstr ""
524
 
525
+ #: includes/class-builder-fields.php:504
526
  msgid "Custom Classes"
527
  msgstr ""
528
 
529
+ #: includes/class-builder-fields.php:507
530
  msgid "Set custom CSS class(es) for inputs. Separate multiple classes with spaces."
531
  msgstr ""
532
 
533
+ #: includes/class-builder-fields.php:514, includes/class-settings.php:462
534
  msgid "Label Placement"
535
  msgstr ""
536
 
537
+ #: includes/class-builder-fields.php:517
538
  msgid "Global"
539
  msgstr ""
540
 
541
+ #: includes/class-builder-fields.php:523, includes/class-settings.php:472
542
  msgid "Hidden"
543
  msgstr ""
544
 
545
+ #: includes/class-builder-fields.php:525
546
  msgid "Set the position for labels for inputs."
547
  msgstr ""
548
 
549
+ #: includes/class-builder-fields.php:543
550
  msgid "Enabling this option will require users to check a box to be added to your list."
551
  msgstr ""
552
 
553
+ #: includes/class-builder-fields.php:550
554
  msgid "Learn more"
555
  msgstr ""
556
 
557
+ #: includes/class-builder-fields.php:555
558
  msgid "Email opt-in"
559
  msgstr ""
560
 
561
+ #: includes/class-builder-fields.php:575
562
  msgid "Enable email subscriber opt-in"
563
  msgstr ""
564
 
565
+ #: includes/class-builder-fields.php:577
566
  msgid "Adds an opt-in to the bottom of your form."
567
  msgstr ""
568
 
569
+ #: includes/class-builder-fields.php:596
570
  msgid "Add a checkbox so subscribers can opt-in to your email list."
571
  msgstr ""
572
 
573
+ #: includes/class-builder-fields.php:598
574
  msgid "(For use with Contact Us form)"
575
  msgstr ""
576
 
577
+ #: includes/class-builder-fields.php:601
578
  msgid "Opt-in checkbox"
579
  msgstr ""
580
 
581
+ #: includes/class-builder-fields.php:618
582
  msgid "Your Business Name"
583
  msgstr ""
584
 
585
+ #: includes/class-builder-fields.php:621, includes/class-settings.php:418
586
  msgid "Opt-in Affirmation"
587
  msgstr ""
588
 
589
  #. translators: placeholder has a business name from Constant Contact.
590
+ #: includes/class-builder-fields.php:625
591
  msgid "Example: Yes, I would like to receive emails from %s. (You can unsubscribe anytime)"
592
  msgstr ""
593
 
594
+ #: includes/class-builder-fields.php:638
595
  msgid "Form Fields"
596
  msgstr ""
597
 
598
+ #: includes/class-builder-fields.php:646
599
  msgid "Add Fields"
600
  msgstr ""
601
 
602
+ #: includes/class-builder-fields.php:653
603
  msgid "Create a field for each piece of information you want to collect. Good basics include email address, first name, and last name."
604
  msgstr ""
605
 
606
+ #: includes/class-builder-fields.php:663
607
  msgid "Field {#}"
608
  msgstr ""
609
 
610
+ #: includes/class-builder-fields.php:664
611
  msgid "Add Another Field"
612
  msgstr ""
613
 
614
+ #: includes/class-builder-fields.php:665
615
  msgid "Remove Field"
616
  msgstr ""
617
 
618
+ #: includes/class-builder-fields.php:671
619
  msgid "Select a Field"
620
  msgstr ""
621
 
622
+ #: includes/class-builder-fields.php:681
623
  msgid "Field Label"
624
  msgstr ""
625
 
626
+ #: includes/class-builder-fields.php:688
627
  msgid "Field Description"
628
  msgstr ""
629
 
630
+ #: includes/class-builder-fields.php:692
631
  msgid "Ex: Enter email address"
632
  msgstr ""
633
 
634
+ #: includes/class-builder-fields.php:697
635
  msgid "Required"
636
  msgstr ""
637
 
638
+ #: includes/class-builder-fields.php:721
639
  msgid "Shortcode to use"
640
  msgstr ""
641
 
642
  #. translators: Placeholders here represent `<em>` and `<strong>` HTML tags.
643
+ #: includes/class-builder-fields.php:726
644
  msgid "Shortcode to embed — %1$s%2$sYou can copy and paste this in a post to display your form.%3$s%4$s"
645
  msgstr ""
646
 
647
+ #: includes/class-builder-fields.php:748
648
  msgid "Email settings"
649
  msgstr ""
650
 
651
+ #: includes/class-builder-fields.php:755
652
  msgid "Email destination"
653
  msgstr ""
654
 
655
+ #: includes/class-builder-fields.php:756
656
  msgid "Who should receive email notifications for this form. Separate multiple emails by a comma. Leave blank to default to admin email."
657
  msgstr ""
658
 
659
+ #: includes/class-builder-fields.php:762
660
  msgid "Disable email notifications for this form?"
661
  msgstr ""
662
 
663
+ #: includes/class-builder-fields.php:763
664
  msgid "Check this option to disable emails for this Constant Contact Forms form."
665
  msgstr ""
666
 
667
+ #: includes/class-builder-fields.php:779
668
  msgid "Reset Styles"
669
  msgstr ""
670
 
671
+ #: includes/class-builder-fields.php:790, includes/class-builder-fields.php:808
672
  msgid "Reset"
673
  msgstr ""
674
 
675
+ #: includes/class-builder-fields.php:791
676
  msgid "Reset the styles for this Form."
677
  msgstr ""
678
 
922
  msgid "New Form"
923
  msgstr ""
924
 
925
+ #: includes/class-cpts.php:72, includes/class-display.php:865
926
  msgid "Edit Form"
927
  msgstr ""
928
 
1154
  msgid "Select list(s) to subscribe to"
1155
  msgstr ""
1156
 
1157
+ #: includes/class-display.php:548
1158
  msgid "Constant Contact Use. Please leave this field blank."
1159
  msgstr ""
1160
 
1161
+ #: includes/class-display.php:705
1162
  msgid " Error: Please fill out this field."
1163
  msgstr ""
1164
 
1165
+ #: includes/class-display.php:703, includes/class-display.php:1821
1166
  msgid "Error: Please correct your entry."
1167
  msgstr ""
1168
 
1169
+ #: includes/class-display.php:1082
1170
  msgid "numbers, dashes, pluses, periods, and parentheses"
1171
  msgstr ""
1172
 
1173
+ #: includes/class-display.php:1279
1174
  msgid "Send"
1175
  msgstr ""
1176
 
1177
+ #: includes/class-display.php:1391
1178
  msgid "Street Address"
1179
  msgstr ""
1180
 
1181
+ #: includes/class-display.php:1392
1182
  msgid "Address Line 2"
1183
  msgstr ""
1184
 
1185
+ #: includes/class-display.php:1393
1186
  msgid "City"
1187
  msgstr ""
1188
 
1189
+ #: includes/class-display.php:1394
1190
  msgid "State"
1191
  msgstr ""
1192
 
1193
+ #: includes/class-display.php:1395
1194
  msgid "ZIP Code"
1195
  msgstr ""
1196
 
1197
+ #: includes/class-display.php:1585
1198
  msgid "Month"
1199
  msgstr ""
1200
 
1201
+ #: includes/class-display.php:1586
1202
  msgid "Day"
1203
  msgstr ""
1204
 
1205
+ #: includes/class-display.php:1587
1206
  msgid "Year"
1207
  msgstr ""
1208
 
1209
+ #: includes/class-display.php:1703
1210
  msgid "January"
1211
  msgstr ""
1212
 
1213
+ #: includes/class-display.php:1704
1214
  msgid "February"
1215
  msgstr ""
1216
 
1217
+ #: includes/class-display.php:1705
1218
  msgid "March"
1219
  msgstr ""
1220
 
1221
+ #: includes/class-display.php:1706
1222
  msgid "April"
1223
  msgstr ""
1224
 
1225
+ #: includes/class-display.php:1707
1226
  msgid "May"
1227
  msgstr ""
1228
 
1229
+ #: includes/class-display.php:1708
1230
  msgid "June"
1231
  msgstr ""
1232
 
1233
+ #: includes/class-display.php:1709
1234
  msgid "July "
1235
  msgstr ""
1236
 
1237
+ #: includes/class-display.php:1710
1238
  msgid "August"
1239
  msgstr ""
1240
 
1241
+ #: includes/class-display.php:1711
1242
  msgid "September"
1243
  msgstr ""
1244
 
1245
+ #: includes/class-display.php:1712
1246
  msgid "October"
1247
  msgstr ""
1248
 
1249
+ #: includes/class-display.php:1713
1250
  msgid "November"
1251
  msgstr ""
1252
 
1253
+ #: includes/class-display.php:1714
1254
  msgid "December"
1255
  msgstr ""
1256
 
1257
+ #: includes/class-display.php:1808
1258
  msgid "Limit 500 Characters"
1259
  msgstr ""
1260
 
1261
  #. translators: placeholder will hold company info for site owner.
1262
+ #: includes/class-display.php:1896
1263
  msgid "By submitting this form, you are consenting to receive marketing emails from: %1$s. You can revoke your consent to receive emails at any time by using the SafeUnsubscribe&reg; link, found at the bottom of every email. %2$s"
1264
  msgstr ""
1265
 
1266
+ #: includes/class-display.php:1903
1267
  msgid "Emails are serviced by Constant Contact"
1268
  msgstr ""
1269
 
1398
  msgid "You currently have a large number of lists in your Constant Contact account. You may experience some issues with syncing them."
1399
  msgstr ""
1400
 
1401
+ #: includes/class-notification-content.php:111, includes/class-notification-content.php:148, includes/class-optin.php:129, includes/class-settings.php:976
1402
  msgctxt "img alt text"
1403
  msgid "Constant Contact logo"
1404
  msgstr ""
1430
  msgid "References to one or more deleted Constant Contact forms are still present on your site. Please review the list below and update or remove the references to avoid issues on your site:"
1431
  msgstr ""
1432
 
1433
+ #: includes/class-notification-content.php:248
1434
  msgid "Widget titled"
1435
  msgstr ""
1436
 
1437
+ #: includes/class-notification-content.php:250
1438
  msgid "in"
1439
  msgstr ""
1440
 
1442
  msgid "Dismiss this notice."
1443
  msgstr ""
1444
 
1445
+ #: includes/class-optin.php:137, includes/class-settings.php:982
1446
  msgid "Agree"
1447
  msgstr ""
1448
 
1449
+ #: includes/class-optin.php:138, includes/class-settings.php:983
1450
  msgid "Disagree"
1451
  msgstr ""
1452
 
1453
+ #: includes/class-process-form.php:117, includes/class-process-form.php:714
1454
  msgid "There was an error sending your form."
1455
  msgstr ""
1456
 
1457
+ #: includes/class-process-form.php:129, includes/class-process-form.php:735
1458
  msgid "Your information has been submitted."
1459
  msgstr ""
1460
 
1461
+ #: includes/class-process-form.php:146, includes/class-process-form.php:760, includes/class-process-form.php:767
1462
  msgid "We had trouble processing your submission. Please review your entries and try again."
1463
  msgstr ""
1464
 
1465
+ #: includes/class-process-form.php:199
1466
  msgid "No Constant Contact Forms form ID provided"
1467
  msgstr ""
1468
 
1469
+ #: includes/class-process-form.php:206
1470
  msgid "No form verify value provided"
1471
  msgstr ""
1472
 
1473
+ #: includes/class-process-form.php:221
1474
  msgid "Please properly fill out all required fields"
1475
  msgstr ""
1476
 
1477
+ #: includes/class-process-form.php:274
1478
  msgid "Failed reCAPTCHA check"
1479
  msgstr ""
1480
 
1481
+ #: includes/class-process-form.php:307, includes/class-process-form.php:323
1482
  msgid "We had trouble processing your submission. Make sure you haven't changed the required form ID and try again."
1483
  msgstr ""
1484
 
1485
+ #: includes/class-process-form.php:315
1486
  msgid "We had trouble processing your submission. Make sure you haven't changed the required Form ID and try again."
1487
  msgstr ""
1488
 
1489
+ #: includes/class-process-form.php:365
1490
  msgid "Please select at least one list to subscribe to."
1491
  msgstr ""
1492
 
1493
+ #: includes/class-process-form.php:400
1494
  msgid "An error occurred while attempting Constant Contact API request."
1495
  msgstr ""
1496
 
1497
+ #: includes/class-process-form.php:407
1498
+ msgid "An error occurred while attempting Constant Contact API request. Please check your details and try again."
1499
+ msgstr ""
1500
+
1501
+ #: includes/class-process-form.php:834
1502
  msgid "We do no think you are human"
1503
  msgstr ""
1504
 
1510
  msgid "Spam Control"
1511
  msgstr ""
1512
 
1513
+ #: includes/class-settings.php:66, includes/class-settings.php:587
1514
  msgid "Support"
1515
  msgstr ""
1516
 
1517
+ #: includes/class-settings.php:348
1518
  msgid "General Settings"
1519
  msgstr ""
1520
 
1521
+ #: includes/class-settings.php:352
1522
  msgid "Google Analytics&trade; tracking opt-in."
1523
  msgstr ""
1524
 
1525
+ #: includes/class-settings.php:355
1526
  msgid "Allow Constant Contact to use Google Analytics&trade; to track your usage across the Constant Contact Forms plugin.<br/> NOTE &mdash; Your website and users will not be tracked. See our <a href=\"https://www.endurance.com/privacy\"> Privacy Statement</a> information about what is and is not tracked."
1527
  msgstr ""
1528
 
1529
+ #: includes/class-settings.php:362
1530
  msgid "Disable E-mail Notifications"
1531
  msgstr ""
1532
 
1533
  #. translators: Placeholder is for a <br /> HTML tag.
1534
+ #: includes/class-settings.php:365
1535
  msgid "This option will disable e-mail notifications for forms with a selected list and successfully submit to Constant Contact.%s Notifications are sent to the email address listed under Wordpress \"General Settings\"."
1536
  msgstr ""
1537
 
1538
+ #: includes/class-settings.php:373
1539
  msgid "Bypass Constant Contact cron scheduling"
1540
  msgstr ""
1541
 
1542
+ #: includes/class-settings.php:374
1543
  msgid "This option will send form entries to Constant Contact right away instead of holding for one minute delay."
1544
  msgstr ""
1545
 
1546
+ #: includes/class-settings.php:386
1547
  msgid "Advanced Opt-in"
1548
  msgstr ""
1549
 
1550
+ #: includes/class-settings.php:390
1551
  msgid "Opt-in Location"
1552
  msgstr ""
1553
 
1554
+ #: includes/class-settings.php:397, includes/class-settings.php:404
1555
  msgid "Select a list"
1556
  msgstr ""
1557
 
1558
+ #: includes/class-settings.php:400
1559
  msgid "Add subscribers to"
1560
  msgstr ""
1561
 
1562
+ #: includes/class-settings.php:408
1563
  msgid "Business Name"
1564
  msgstr ""
1565
 
1566
  #. translators: placeholder will hold site owner's business name.
1567
+ #: includes/class-settings.php:422
1568
  msgid "Yes, I would like to receive emails from %s. Sign me up!"
1569
  msgstr ""
1570
 
1571
+ #: includes/class-settings.php:427
1572
  msgid "Disclosure Name"
1573
  msgstr ""
1574
 
1575
+ #: includes/class-settings.php:435
1576
  msgid "Disclosure Address"
1577
  msgstr ""
1578
 
1579
+ #: includes/class-settings.php:447
1580
  msgid "Global Form CSS Settings"
1581
  msgstr ""
1582
 
1583
+ #: includes/class-settings.php:451
1584
  msgid "CSS Classes"
1585
  msgstr ""
1586
 
1587
+ #: includes/class-settings.php:454
1588
  msgid "Provide custom classes for the form separated by a single space."
1589
  msgstr ""
1590
 
1591
+ #: includes/class-settings.php:474
1592
  msgid "Choose the position for the labels of the form elements."
1593
  msgstr ""
1594
 
1595
+ #: includes/class-settings.php:481
1596
  msgid "Disable Constant Contact CSS"
1597
  msgstr ""
1598
 
1599
+ #: includes/class-settings.php:482
1600
  msgid "Disables Constant Contact stylesheets from loading on the frontend. Note you may need to clear server and client cache to see changes go into effect."
1601
  msgstr ""
1602
 
1603
+ #: includes/class-settings.php:488
1604
  msgid "Alternative Disclaimer Text"
1605
  msgstr ""
1606
 
1607
+ #: includes/class-settings.php:489
1608
  msgid "Override default sign-up disclaimer text. (Supports HTML)"
1609
  msgstr ""
1610
 
1611
+ #: includes/class-settings.php:507
1612
  msgid "Google reCAPTCHA"
1613
  msgstr ""
1614
 
1615
+ #. translators: %s: recaptcha documentation URL
1616
+ #: includes/class-settings.php:515
1617
+ msgid "Learn more and get an <a href=\"%s\" target=\"_blank\">API site key</a>"
1618
  msgstr ""
1619
 
1620
+ #: includes/class-settings.php:528
 
 
 
 
1621
  msgid "Version"
1622
  msgstr ""
1623
 
1624
+ #: includes/class-settings.php:534
1625
  msgid "Version 2"
1626
  msgstr ""
1627
 
1628
+ #: includes/class-settings.php:535
1629
  msgid "Version 3"
1630
  msgstr ""
1631
 
1632
+ #: includes/class-settings.php:540
1633
  msgid "Site Key"
1634
  msgstr ""
1635
 
1636
+ #: includes/class-settings.php:550
1637
  msgid "Secret Key"
1638
  msgstr ""
1639
 
1640
+ #: includes/class-settings.php:561
1641
  msgid "Suspected Bot Error Message"
1642
  msgstr ""
1643
 
1644
+ #: includes/class-settings.php:562
1645
+ msgid "This message displays when `the plugin detects spam data. Note that this message may be overriden on a per-post basis."
1646
  msgstr ""
1647
 
1648
+ #: includes/class-settings.php:567
1649
  msgid "Error Message"
1650
  msgstr ""
1651
 
1652
+ #: includes/class-settings.php:590
1653
  msgid "Enable logging for debugging purposes."
1654
  msgstr ""
1655
 
1656
+ #: includes/class-settings.php:591
1657
  msgid "This option will turn on some logging functionality that can be used to deduce sources of issues with the use of Constant Contact Forms plugin."
1658
  msgstr ""
1659
 
1660
+ #: includes/class-settings.php:608
1661
  msgid "Add a checkbox to the comment field in your posts"
1662
  msgstr ""
1663
 
1664
+ #: includes/class-settings.php:609
1665
  msgid "Add a checkbox to the main WordPress login page"
1666
  msgstr ""
1667
 
1668
+ #: includes/class-settings.php:613
1669
  msgid "Add a checkbox to the WordPress user registration page"
1670
  msgstr ""
1671
 
1672
+ #: includes/class-settings.php:690
1673
  msgid "Sign up to our newsletter."
1674
  msgstr ""
1675
 
1676
+ #: includes/class-settings.php:1065
1677
  msgid "We do not think you are human"
1678
  msgstr ""
output.log CHANGED
@@ -23,27 +23,27 @@ php-7-build2: Pulling from webdevstudios/constant-contact-forms/php-actions_comp
23
  0426bea1cb5c: Waiting
24
  07191f3eab51: Waiting
25
  8fd13b5c155d: Waiting
26
- 93c5cc202a60: Verifying Checksum
27
  93c5cc202a60: Download complete
 
 
28
  933cf2f4a68f: Verifying Checksum
29
  933cf2f4a68f: Download complete
30
- 540db60ca938: Download complete
31
  74403c16157d: Verifying Checksum
32
  74403c16157d: Download complete
33
- 540db60ca938: Pull complete
34
  933cf2f4a68f: Pull complete
35
- 3ec3ea2589bd: Verifying Checksum
36
- 3ec3ea2589bd: Download complete
37
  93c5cc202a60: Pull complete
38
  506c26a1a3fd: Verifying Checksum
39
  506c26a1a3fd: Download complete
40
  74403c16157d: Pull complete
41
- 1884ed429bfb: Verifying Checksum
42
- 1884ed429bfb: Download complete
43
  3ec3ea2589bd: Pull complete
44
- 506c26a1a3fd: Pull complete
45
  0426bea1cb5c: Verifying Checksum
46
  0426bea1cb5c: Download complete
 
 
 
47
  07191f3eab51: Verifying Checksum
48
  07191f3eab51: Download complete
49
  8fd13b5c155d: Verifying Checksum
23
  0426bea1cb5c: Waiting
24
  07191f3eab51: Waiting
25
  8fd13b5c155d: Waiting
 
26
  93c5cc202a60: Download complete
27
+ 540db60ca938: Verifying Checksum
28
+ 540db60ca938: Download complete
29
  933cf2f4a68f: Verifying Checksum
30
  933cf2f4a68f: Download complete
31
+ 540db60ca938: Pull complete
32
  74403c16157d: Verifying Checksum
33
  74403c16157d: Download complete
 
34
  933cf2f4a68f: Pull complete
 
 
35
  93c5cc202a60: Pull complete
36
  506c26a1a3fd: Verifying Checksum
37
  506c26a1a3fd: Download complete
38
  74403c16157d: Pull complete
39
+ 3ec3ea2589bd: Verifying Checksum
40
+ 3ec3ea2589bd: Download complete
41
  3ec3ea2589bd: Pull complete
 
42
  0426bea1cb5c: Verifying Checksum
43
  0426bea1cb5c: Download complete
44
+ 1884ed429bfb: Verifying Checksum
45
+ 1884ed429bfb: Download complete
46
+ 506c26a1a3fd: Pull complete
47
  07191f3eab51: Verifying Checksum
48
  07191f3eab51: Download complete
49
  8fd13b5c155d: Verifying Checksum
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: constantcontact, webdevstudios, tw2113, znowebdev, ggwicz, ravedev, oceas, dcooney
3
  Tags: capture, contacts, constant contact, constant contact form, constant contact newsletter, constant contact official, contact forms, email, form, forms, marketing, mobile, newsletter, opt-in, plugin, signup, subscribe, subscription, widget
4
  Requires at least: 5.2.0
5
- Tested up to: 5.7.0
6
- Stable tag: 1.12.0
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
  Requires PHP: 5.6
@@ -43,19 +43,17 @@ https://www.youtube.com/watch?v=Qqb0_zcRKnM
43
 
44
  == Changelog ==
45
 
46
- = 1.12.0 =
47
- * Added: “Limit 500 Characters” description below textarea fields
48
- * Added: CSS class selector to the div wrapping the list checkboxes
49
- * Added: Force email notifications if no list is selected for a form
50
- * Added: Multi-select list options to "advanced optin" settings
51
- * Added: New setting to override default opt-in text
52
- * Added: Two new filters to override state and zipcode labels
53
- * Changed: Change <small> to <sub> for form disclaimer
54
- * Fixed: Email field browser validation when form submits via AJAX
55
- * Fixed: Erroneous placeholder attribute on submit button
56
- * Fixed: Incomplete "ctct-label-" CSS class on submit button
57
- * Updated: Addressed limits and issues regarding list management
58
- * Updated: Better ensured security
59
 
60
  == Frequently Asked Questions ==
61
 
2
  Contributors: constantcontact, webdevstudios, tw2113, znowebdev, ggwicz, ravedev, oceas, dcooney
3
  Tags: capture, contacts, constant contact, constant contact form, constant contact newsletter, constant contact official, contact forms, email, form, forms, marketing, mobile, newsletter, opt-in, plugin, signup, subscribe, subscription, widget
4
  Requires at least: 5.2.0
5
+ Tested up to: 6.0
6
+ Stable tag: 1.13.0
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
  Requires PHP: 5.6
43
 
44
  == Changelog ==
45
 
46
+ = 1.13.0 =
47
+ * Fixed: get_optin_list_options() defaults to an empty array instead of an empty string
48
+ * Fixed: Prevent "CTCT has experienced issues" notifications for "503 Service Not Available" errors
49
+ * Fixed: Fixes plugin sometimes causing errors due to trailing commas
50
+ * Changed: Move styles inline for honeypot field to ensure field is hidden when option to disable CSS output is used
51
+ * Updated: Mask API keys in error logs
52
+ * Updated: Mask phone numbers in logs
53
+ * Updated: Add noopener noreferrer to blank links
54
+ * Updated: Refactor multiple translated strings
55
+ * Updated: Added error messages on form submissions upon API faliures
56
+
 
 
57
 
58
  == Frequently Asked Questions ==
59
 
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInitbdbd43df1b21513998173793fdb8b37d::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit14807dcd9d5103e83200a4f9c6a0bf74::getLoader();
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInitbdbd43df1b21513998173793fdb8b37d
6
  {
7
  private static $loader;
8
 
@@ -22,15 +22,15 @@ class ComposerAutoloaderInitbdbd43df1b21513998173793fdb8b37d
22
  return self::$loader;
23
  }
24
 
25
- spl_autoload_register(array('ComposerAutoloaderInitbdbd43df1b21513998173793fdb8b37d', 'loadClassLoader'), true, true);
26
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
27
- spl_autoload_unregister(array('ComposerAutoloaderInitbdbd43df1b21513998173793fdb8b37d', 'loadClassLoader'));
28
 
29
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
30
  if ($useStaticLoader) {
31
  require_once __DIR__ . '/autoload_static.php';
32
 
33
- call_user_func(\Composer\Autoload\ComposerStaticInitbdbd43df1b21513998173793fdb8b37d::getInitializer($loader));
34
  } else {
35
  $map = require __DIR__ . '/autoload_namespaces.php';
36
  foreach ($map as $namespace => $path) {
@@ -51,19 +51,19 @@ class ComposerAutoloaderInitbdbd43df1b21513998173793fdb8b37d
51
  $loader->register(true);
52
 
53
  if ($useStaticLoader) {
54
- $includeFiles = Composer\Autoload\ComposerStaticInitbdbd43df1b21513998173793fdb8b37d::$files;
55
  } else {
56
  $includeFiles = require __DIR__ . '/autoload_files.php';
57
  }
58
  foreach ($includeFiles as $fileIdentifier => $file) {
59
- composerRequirebdbd43df1b21513998173793fdb8b37d($fileIdentifier, $file);
60
  }
61
 
62
  return $loader;
63
  }
64
  }
65
 
66
- function composerRequirebdbd43df1b21513998173793fdb8b37d($fileIdentifier, $file)
67
  {
68
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
69
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit14807dcd9d5103e83200a4f9c6a0bf74
6
  {
7
  private static $loader;
8
 
22
  return self::$loader;
23
  }
24
 
25
+ spl_autoload_register(array('ComposerAutoloaderInit14807dcd9d5103e83200a4f9c6a0bf74', 'loadClassLoader'), true, true);
26
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
27
+ spl_autoload_unregister(array('ComposerAutoloaderInit14807dcd9d5103e83200a4f9c6a0bf74', 'loadClassLoader'));
28
 
29
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
30
  if ($useStaticLoader) {
31
  require_once __DIR__ . '/autoload_static.php';
32
 
33
+ call_user_func(\Composer\Autoload\ComposerStaticInit14807dcd9d5103e83200a4f9c6a0bf74::getInitializer($loader));
34
  } else {
35
  $map = require __DIR__ . '/autoload_namespaces.php';
36
  foreach ($map as $namespace => $path) {
51
  $loader->register(true);
52
 
53
  if ($useStaticLoader) {
54
+ $includeFiles = Composer\Autoload\ComposerStaticInit14807dcd9d5103e83200a4f9c6a0bf74::$files;
55
  } else {
56
  $includeFiles = require __DIR__ . '/autoload_files.php';
57
  }
58
  foreach ($includeFiles as $fileIdentifier => $file) {
59
+ composerRequire14807dcd9d5103e83200a4f9c6a0bf74($fileIdentifier, $file);
60
  }
61
 
62
  return $loader;
63
  }
64
  }
65
 
66
+ function composerRequire14807dcd9d5103e83200a4f9c6a0bf74($fileIdentifier, $file)
67
  {
68
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
69
  require $file;
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInitbdbd43df1b21513998173793fdb8b37d
8
  {
9
  public static $files = array (
10
  'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php',
@@ -84,9 +84,9 @@ class ComposerStaticInitbdbd43df1b21513998173793fdb8b37d
84
  public static function getInitializer(ClassLoader $loader)
85
  {
86
  return \Closure::bind(function () use ($loader) {
87
- $loader->prefixLengthsPsr4 = ComposerStaticInitbdbd43df1b21513998173793fdb8b37d::$prefixLengthsPsr4;
88
- $loader->prefixDirsPsr4 = ComposerStaticInitbdbd43df1b21513998173793fdb8b37d::$prefixDirsPsr4;
89
- $loader->prefixesPsr0 = ComposerStaticInitbdbd43df1b21513998173793fdb8b37d::$prefixesPsr0;
90
 
91
  }, null, ClassLoader::class);
92
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit14807dcd9d5103e83200a4f9c6a0bf74
8
  {
9
  public static $files = array (
10
  'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php',
84
  public static function getInitializer(ClassLoader $loader)
85
  {
86
  return \Closure::bind(function () use ($loader) {
87
+ $loader->prefixLengthsPsr4 = ComposerStaticInit14807dcd9d5103e83200a4f9c6a0bf74::$prefixLengthsPsr4;
88
+ $loader->prefixDirsPsr4 = ComposerStaticInit14807dcd9d5103e83200a4f9c6a0bf74::$prefixDirsPsr4;
89
+ $loader->prefixesPsr0 = ComposerStaticInit14807dcd9d5103e83200a4f9c6a0bf74::$prefixesPsr0;
90
 
91
  }, null, ClassLoader::class);
92
  }